commit 7cebe8fc0046db15ba1417672b81907ab3f3778a Author: 付民康 Date: Wed Mar 12 18:41:20 2025 +0800 搜索结果列表页面开发 diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..7e3649a --- /dev/null +++ b/.editorconfig @@ -0,0 +1,16 @@ +# http://editorconfig.org +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false + +[Makefile] +indent_style = tab diff --git a/.env b/.env new file mode 100644 index 0000000..f57817e --- /dev/null +++ b/.env @@ -0,0 +1,7 @@ +VITE_APP_TITLE = '新gitcode' +VITE_TEST_REPOID = 34 + +VITE_SECRET_KEY = 'SA!nUNPZ5o!OSV&B' +VITE_SECRET_IV = 'SA!nwwwZ5o!OSV&B' +# 用户模块前缀 +VITE_PASSPORT_PREFIX = '/uc' diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..6af08f1 --- /dev/null +++ b/.env.development @@ -0,0 +1,36 @@ +# 开发环境配置 +VITE_ENV = 'development' + +# 主域名 +VITE_HOST = 'https://test.gitcode.net' + +# 接口地址 +VITE_API_HOST = 'https://test.gitcode.net' + +# devPress接口地址 +VITE_DEV_API_HOST = 'https://test.gitcode.net' + +# devPress地址 +VITE_DEV_HOST = 'https://test.gitcode.net' + +# 仓库文件上传域名 +VITE_FILE_HOST = 'https://test.gitcode.net' +# 仓库文件下载域名 +VITE_DOWNLOAD_HOST = 'https://test.gitcode.net' + +# csdn登陆绑定地址 +VITE_CSDN_URL = 'https://test.gitcode.net/oauth/login/csdn' + +# 组织社区跳转地址 +VITE_ORG_COMMUNITY = 'https://test.gitcode.net' + +# 静态资源域名 +VITE_STATIC_HOST = 'https://test.gitcode.net' + +# 主页搜索子应用 +VITE_CHILD_HOMEWEB_HOST = 'https://test.gitcode.net/child/homeweb-app/' +# 用户中心子应用 +VITE_USER_CENTER_HOST = 'https://test.gitcode.net/child/user-center/' + +# ai-copilot 子应用 +VITE_COPILOT_HOST = 'https://test.gitcode.net/child/aichat-app/' diff --git a/.env.loc b/.env.loc new file mode 100644 index 0000000..539cae6 --- /dev/null +++ b/.env.loc @@ -0,0 +1,38 @@ +# 开发环境配置 +VITE_ENV = 'loc' + +# 主域名 +VITE_HOST = 'https://test.gitcode.net' + +# 接口地址 +VITE_API_HOST = 'https://test.gitcode.net' + +# devPress接口地址 +VITE_DEV_API_HOST = 'https://test.gitcode.net' + +# devPress地址 +VITE_DEV_HOST = 'https://test.gitcode.net' + +# 仓库文件上传域名 +VITE_FILE_HOST = 'https://test.gitcode.net' + +# 仓库文件下载域名 +VITE_DOWNLOAD_HOST = 'https://test.gitcode.net' + +# csdn登陆绑定地址 +VITE_CSDN_URL = 'https://test.gitcode.net/oauth/login/csdn' + +# 组织社区跳转地址 +VITE_ORG_COMMUNITY = 'https://test.gitcode.net' + +# 静态资源域名 +VITE_STATIC_HOST = 'https://test.gitcode.net' + +# 主页搜索子应用 +VITE_CHILD_HOMEWEB_HOST = 'https://local.gitcode.net:8001/child/homeweb-app' + +# 用户中心子应用 +VITE_USER_CENTER_HOST = 'https://local.gitcode.net:8002' + +# ai-copilot 子应用 +VITE_COPILOT_HOST = 'https://local.gitcode.net:8003/child/aichat-app' diff --git a/.env.pre b/.env.pre new file mode 100644 index 0000000..6dc1e09 --- /dev/null +++ b/.env.pre @@ -0,0 +1,38 @@ +# 预发环境配置 +VITE_ENV = 'pre' + +# 主域名 +VITE_HOST = 'https://pre.gitcode.com' + +# 接口地址 +VITE_API_HOST = 'https://pre-web-api.gitcode.com' + +# devPress接口地址 +VITE_DEV_API_HOST = 'https://gitcode.com' + +# devPress地址 +VITE_DEV_HOST = 'https://gitcode.com' + +# 仓库文件上传域名 +VITE_FILE_HOST = 'https://pre.gitcode.com' + +# 仓库文件下载域名 +VITE_DOWNLOAD_HOST = 'https://raw.gitcode.com' + +# csdn登陆绑定地址 暂时无 +VITE_CSDN_URL = 'https://pre-web-api.gitcode.com/oauth/login/csdn' + +# 组织社区跳转地址 +VITE_ORG_COMMUNITY = 'https://gitcode.com' + +# 静态资源域名 +VITE_STATIC_HOST = 'https://pre.gitcode.com' + +# 主页搜索子应用 +VITE_CHILD_HOMEWEB_HOST = 'https://pre-homepage-app.gitcode.com' + +# 用户中心子应用 +VITE_USER_CENTER_HOST = 'https://pre-usercenter-app.gitcode.com' + +# ai-copilot 子应用 +VITE_COPILOT_HOST = 'https://pre-copilot-app.gitcode.com' diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..cd85191 --- /dev/null +++ b/.env.production @@ -0,0 +1,38 @@ +# 生产环境配置 +VITE_ENV = 'production' + +# 主域名 +VITE_HOST = 'https://gitcode.com' + +# 接口地址 +VITE_API_HOST = 'https://web-api.gitcode.com' + +# devPress接口地址 +VITE_DEV_API_HOST = 'https://gitcode.com' + +# devPress地址 +VITE_DEV_HOST = 'https://gitcode.com' + +# 仓库文件上传域名 +VITE_FILE_HOST = 'https://gitcode.com' + +# 仓库文件下载域名 +VITE_DOWNLOAD_HOST = 'https://raw.gitcode.com' + +# csdn登陆绑定地址 暂时无 +VITE_CSDN_URL = 'https://web-api.gitcode.com/oauth/login/csdn' + +# 组织社区跳转地址 +VITE_ORG_COMMUNITY = 'https://gitcode.com' + +# 静态资源域名 +VITE_STATIC_HOST = 'https://cdn-static.gitcode.com' + +# 主页搜索子应用 +VITE_CHILD_HOMEWEB_HOST = 'https://homepage-app.gitcode.com' + +# 用户中心子应用 +VITE_USER_CENTER_HOST = 'https://usercenter-app.gitcode.com' + +# ai-copilot 子应用 +VITE_COPILOT_HOST = 'https://copilot-app.gitcode.com' diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..6a534d0 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,6 @@ +node_modules +build +dist +public +.vscode +vite.config.ts diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..11d6419 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,190 @@ +/* eslint-env node */ +require('@rushstack/eslint-patch/modern-module-resolution'); + +module.exports = { + root: true, + 'extends': [ + 'plugin:vue/vue3-essential', + 'eslint:recommended', + '@vue/eslint-config-typescript', + '@vue/eslint-config-prettier/skip-formatting' + ], + parserOptions: { + ecmaVersion: 'latest' + }, + rules: { + 'vue/multi-word-component-names': 'off', // 检查文件名称是否为多单词 + 'vue/singleline-html-element-content-newline': 'off', + 'vue/multiline-html-element-content-newline': 'off', + 'vue/no-v-html': 'off', + 'accessor-pairs': 2, + 'arrow-spacing': [2, { + 'before': true, + 'after': true + }], + 'block-spacing': [2, 'always'], + 'brace-style': [2, '1tbs', { + 'allowSingleLine': true + }], + 'camelcase': [0, { + 'properties': 'always' + }], + 'comma-dangle': [2, 'never'], + 'comma-spacing': [2, { + 'before': false, + 'after': true + }], + 'comma-style': [2, 'last'], + 'constructor-super': 2, + 'curly': [2, 'multi-line'], + 'dot-location': [2, 'property'], + 'eol-last': 2, + 'eqeqeq': ['error', 'always', { 'null': 'ignore' }], + 'generator-star-spacing': [2, { + 'before': true, + 'after': true + }], + 'handle-callback-err': [2, '^(err|error)$'], + 'indent': [2, 2, { + 'SwitchCase': 1 + }], + 'jsx-quotes': [2, 'prefer-single'], + 'key-spacing': [2, { + 'beforeColon': false, + 'afterColon': true + }], + 'keyword-spacing': [2, { + 'before': true, + 'after': true + }], + 'new-cap': [2, { + 'newIsCap': true, + 'capIsNew': false + }], + 'new-parens': 2, + 'no-array-constructor': 2, + 'no-caller': 2, + 'no-console': 'off', + 'no-class-assign': 2, + 'no-cond-assign': 2, + 'no-const-assign': 2, + 'no-control-regex': 0, + 'no-delete-var': 2, + 'no-dupe-args': 2, + 'no-dupe-class-members': 2, + 'no-dupe-keys': 2, + 'no-duplicate-case': 2, + 'no-empty-character-class': 2, + 'no-empty-pattern': 2, + 'no-eval': 2, + 'no-ex-assign': 2, + 'no-extend-native': 2, + 'no-extra-bind': 2, + 'no-extra-boolean-cast': 2, + 'no-extra-parens': [2, 'functions'], + 'no-fallthrough': 2, + 'no-floating-decimal': 2, + 'no-func-assign': 2, + 'no-implied-eval': 2, + 'no-inner-declarations': [2, 'functions'], + 'no-invalid-regexp': 2, + 'no-irregular-whitespace': 2, + 'no-iterator': 2, + 'no-label-var': 2, + 'no-labels': [2, { + 'allowLoop': false, + 'allowSwitch': false + }], + 'no-lone-blocks': 2, + 'no-mixed-spaces-and-tabs': 2, + 'no-multi-spaces': 2, + 'no-multi-str': 2, + 'no-multiple-empty-lines': [2, { + 'max': 1 + }], + 'no-native-reassign': 2, + 'no-negated-in-lhs': 2, + 'no-new-object': 2, + 'no-new-require': 2, + 'no-new-symbol': 2, + 'no-new-wrappers': 2, + 'no-obj-calls': 2, + 'no-octal': 2, + 'no-octal-escape': 2, + 'no-path-concat': 2, + 'no-proto': 2, + 'no-redeclare': 2, + 'no-regex-spaces': 2, + 'no-return-assign': [2, 'except-parens'], + 'no-self-assign': 2, + 'no-self-compare': 2, + 'no-sequences': 2, + 'no-shadow-restricted-names': 2, + 'no-spaced-func': 2, + 'no-sparse-arrays': 2, + 'no-this-before-super': 2, + 'no-throw-literal': 2, + 'no-trailing-spaces': 2, + 'no-undef': 2, + 'no-undef-init': 2, + 'no-unexpected-multiline': 2, + 'no-unmodified-loop-condition': 2, + 'no-unneeded-ternary': [2, { + 'defaultAssignment': false + }], + 'no-unreachable': 2, + 'no-unsafe-finally': 2, + 'no-unused-vars': [1, { + 'vars': 'all', + 'args': 'none' + }], + 'no-useless-call': 2, + 'no-useless-computed-key': 2, + 'no-useless-constructor': 2, + 'no-useless-escape': 0, + 'no-whitespace-before-property': 2, + 'no-with': 2, + 'one-var': [2, { + 'initialized': 'never' + }], + 'operator-linebreak': [2, 'after', { + 'overrides': { + '?': 'before', + ':': 'before' + } + }], + 'padded-blocks': [2, 'never'], + 'quotes': [2, 'single', { + 'avoidEscape': true, + 'allowTemplateLiterals': true + }], + 'semi': [2, 'always'], + 'semi-spacing': [2, { + 'before': false, + 'after': true + }], + 'space-before-blocks': [2, 'always'], + 'space-before-function-paren': [2, 'never'], + 'space-in-parens': [2, 'never'], + 'space-infix-ops': 2, + 'space-unary-ops': [2, { + 'words': true, + 'nonwords': false + }], + 'spaced-comment': [2, 'always', { + 'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ','] + }], + 'template-curly-spacing': [2, 'never'], + 'use-isnan': 2, + 'valid-typeof': 2, + 'wrap-iife': [2, 'any'], + 'yield-star-spacing': [2, 'both'], + 'yoda': [2, 'never'], + 'prefer-const': 2, + 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, + 'object-curly-spacing': [2, 'always', { + objectsInObjects: false + }], + 'array-bracket-spacing': [2, 'never'] + } +}; diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..33a7f8e --- /dev/null +++ b/.gitignore @@ -0,0 +1,39 @@ +# Logs +stats.html +logs +dist.zip +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local +src/views/Demo + +/cypress/videos/ +/cypress/screenshots/ +/docker/conf/default.conf + +# Editor directories and files +.vscode +!.vscode/extensions.json +!.vscode/settings.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +# 定义文件 +components.d.ts + +# 组件汇总文件,仅限开发本地浏览 +component.md diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..13fc342 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/prettierrc", + "semi": true, + "tabWidth": 2, + "singleQuote": true, + "printWidth": 120, + "trailingComma": "none" +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..b8156e2 --- /dev/null +++ b/README.md @@ -0,0 +1,62 @@ +# gitcode-v2 + +架构:基于[create-vue](https://github.com/vuejs/create-vue)构建(vite+vue3+pinia+scss) +组件库:[Vue DevUI](https://vue-devui.github.io/) + +# 规范 + +- 使用eslint,保存自动格式化 +- 页面和组件文件夹命名及引用为大驼峰(Issue,IssueItem),其他文件夹小驼峰(common) +- 代码内变量,方法名为小驼峰(issueNum) +- css类名为蛇形(submit-btn-color) +- 分支命名(关键字/模块/功能,fix/mr/bigfile-issue-create) +``` +关键字包括:feat、 hotfix、refactor等类型 +``` +- commit提交规范(feat:完成issue创建功能) +``` +feat: 新增功能 +fix: 修复 bug +docs: 仅仅修改了文档,比如 README, CHANGELOG, CONTRIBUTE等等 +style: 仅仅修改了空格、格式缩进、逗号等等,不改变代码逻辑 +refactor: 代码重构,没有加新功能或者修复 bug +perf: 优化相关,比如提升性能、体验 +test: 测试用例,包括单元测试、集成测试等 +chore: 改变构建流程、或者增加依赖库、工具等 +revert: 回滚到上一个版本 +``` + + +## Customize configuration + +See [Vite Configuration Reference](https://vitejs.dev/config/). + +## Project Setup + + +```sh +# 安装依赖 +npm install +``` + +### start + +```sh +npm run dev # 开发 +npm run prod # 生产 +``` + +### build + +```sh +npm run build:dev # 开发 +npm run build:prod # 生产 +``` + +### Lint with [ESLint](https://eslint.org/) + +```sh +npm run lint +``` + + diff --git a/env.d.ts b/env.d.ts new file mode 100644 index 0000000..2721a82 --- /dev/null +++ b/env.d.ts @@ -0,0 +1,25 @@ +// / + +declare module 'dayjs/esm/locale/zh-cn' +declare module 'dayjs/plugin/timezone' + +import type { DefineComponent } from 'vue'; +declare module 'canvas-confetti'; +declare module '*.vue' { + const component: DefineComponent<{}, {}, any>; + export default component; +} + +declare global { + interface Window { page_ref: string; } +} + +declare module '*.svg' +declare module '*.png' +declare module '*.jpg' +declare module '*.jpeg' +declare module '*.gif' +declare module '*.bmp' +declare module '*.tiff' + +declare module 'js-cookie' diff --git a/index.html b/index.html new file mode 100644 index 0000000..40b47ed --- /dev/null +++ b/index.html @@ -0,0 +1,41 @@ + + + + + + + + + + + + 可信开源代码库 + + + +
+ + + + + + + + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..847994e --- /dev/null +++ b/package-lock.json @@ -0,0 +1,9715 @@ +{ + "name": "gitcode-v2", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "gitcode-v2", + "version": "0.0.0", + "dependencies": { + "@devui-design/icons": "^1.3.0", + "@micro-zoe/micro-app": "1.0.0-rc.3", + "@sentry/vue": "^7.101.1", + "@types/crypto-js": "^4.1.1", + "@vueuse/core": "^10.2.1", + "axios": "^1.6.8", + "canvas-confetti": "^1.9.2", + "crypto-js": "^4.1.1", + "dayjs": "^1.11.9", + "devui-theme": "^0.0.7", + "dompurify": "^3.0.5", + "js-cookie": "^3.0.5", + "localforage": "^1.10.0", + "lodash": "^4.17.21", + "lottie-web": "^5.12.2", + "markdown-it": "^14.1.0", + "mitt": "^3.0.1", + "mockjs": "^1.1.0", + "normalize.css": "^8.0.1", + "overlayscrollbars": "^2.3.1", + "pinia": "^2.1.3", + "qs": "^6.11.2", + "sortablejs": "^1.15.0", + "swiper": "^10.3.1", + "vue": "^3.3.4", + "vue-devui": "^1.6.7", + "vue-router": "^4.2.2", + "yaml": "^2.4.1" + }, + "devDependencies": { + "@rushstack/eslint-patch": "^1.2.0", + "@tsconfig/node18": "^2.0.1", + "@types/canvas-confetti": "^1.6.4", + "@types/mockjs": "^1.0.7", + "@types/node": "^18.17.1", + "@types/three": "^0.155.1", + "@vitejs/plugin-basic-ssl": "^1.0.1", + "@vitejs/plugin-legacy": "^4.1.1", + "@vitejs/plugin-vue": "^4.2.3", + "@vue/eslint-config-prettier": "^7.1.0", + "@vue/eslint-config-typescript": "^11.0.3", + "@vue/tsconfig": "^0.4.0", + "autoprefixer": "^10.4.14", + "eslint": "^9.22.0", + "eslint-plugin-vue": "^9.11.0", + "npm-run-all": "^4.1.5", + "postcss": "^8.4.27", + "prettier": "^2.8.8", + "rollup-plugin-visualizer": "^5.9.2", + "sass": "^1.63.6", + "tailwindcss": "^3.3.3", + "typescript": "~5.0.4", + "unplugin-vue-components": "^0.26.0", + "vite": "^4.5.2", + "vue-tsc": "^1.6.5" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@antfu/utils": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.7.tgz", + "integrity": "sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.1.tgz", + "integrity": "sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.3.tgz", + "integrity": "sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.1", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.1", + "@babel/parser": "^7.24.1", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.1.tgz", + "integrity": "sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.1.tgz", + "integrity": "sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.24.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz", + "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", + "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", + "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.1.tgz", + "integrity": "sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz", + "integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", + "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", + "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz", + "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", + "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", + "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", + "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz", + "integrity": "sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz", + "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-remap-async-to-generator": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", + "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.1.tgz", + "integrity": "sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz", + "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.1.tgz", + "integrity": "sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz", + "integrity": "sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", + "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/template": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz", + "integrity": "sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", + "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", + "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", + "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", + "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", + "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", + "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", + "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", + "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", + "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", + "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", + "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", + "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", + "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz", + "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", + "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", + "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", + "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", + "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz", + "integrity": "sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", + "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", + "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz", + "integrity": "sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz", + "integrity": "sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", + "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz", + "integrity": "sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", + "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", + "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", + "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", + "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", + "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", + "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", + "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz", + "integrity": "sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", + "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", + "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", + "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", + "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.3.tgz", + "integrity": "sha512-fSk430k5c2ff8536JcPvPWK4tZDwehWLGlBp0wrsBUjZVdeQV6lePbwKWZaZfK2vnh/1kQX1PzAJWsnBmVgGJA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.24.1", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.24.1", + "@babel/plugin-syntax-import-attributes": "^7.24.1", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.24.1", + "@babel/plugin-transform-async-generator-functions": "^7.24.3", + "@babel/plugin-transform-async-to-generator": "^7.24.1", + "@babel/plugin-transform-block-scoped-functions": "^7.24.1", + "@babel/plugin-transform-block-scoping": "^7.24.1", + "@babel/plugin-transform-class-properties": "^7.24.1", + "@babel/plugin-transform-class-static-block": "^7.24.1", + "@babel/plugin-transform-classes": "^7.24.1", + "@babel/plugin-transform-computed-properties": "^7.24.1", + "@babel/plugin-transform-destructuring": "^7.24.1", + "@babel/plugin-transform-dotall-regex": "^7.24.1", + "@babel/plugin-transform-duplicate-keys": "^7.24.1", + "@babel/plugin-transform-dynamic-import": "^7.24.1", + "@babel/plugin-transform-exponentiation-operator": "^7.24.1", + "@babel/plugin-transform-export-namespace-from": "^7.24.1", + "@babel/plugin-transform-for-of": "^7.24.1", + "@babel/plugin-transform-function-name": "^7.24.1", + "@babel/plugin-transform-json-strings": "^7.24.1", + "@babel/plugin-transform-literals": "^7.24.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", + "@babel/plugin-transform-member-expression-literals": "^7.24.1", + "@babel/plugin-transform-modules-amd": "^7.24.1", + "@babel/plugin-transform-modules-commonjs": "^7.24.1", + "@babel/plugin-transform-modules-systemjs": "^7.24.1", + "@babel/plugin-transform-modules-umd": "^7.24.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.24.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", + "@babel/plugin-transform-numeric-separator": "^7.24.1", + "@babel/plugin-transform-object-rest-spread": "^7.24.1", + "@babel/plugin-transform-object-super": "^7.24.1", + "@babel/plugin-transform-optional-catch-binding": "^7.24.1", + "@babel/plugin-transform-optional-chaining": "^7.24.1", + "@babel/plugin-transform-parameters": "^7.24.1", + "@babel/plugin-transform-private-methods": "^7.24.1", + "@babel/plugin-transform-private-property-in-object": "^7.24.1", + "@babel/plugin-transform-property-literals": "^7.24.1", + "@babel/plugin-transform-regenerator": "^7.24.1", + "@babel/plugin-transform-reserved-words": "^7.24.1", + "@babel/plugin-transform-shorthand-properties": "^7.24.1", + "@babel/plugin-transform-spread": "^7.24.1", + "@babel/plugin-transform-sticky-regex": "^7.24.1", + "@babel/plugin-transform-template-literals": "^7.24.1", + "@babel/plugin-transform-typeof-symbol": "^7.24.1", + "@babel/plugin-transform-unicode-escapes": "^7.24.1", + "@babel/plugin-transform-unicode-property-regex": "^7.24.1", + "@babel/plugin-transform-unicode-regex": "^7.24.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.1", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "node_modules/@babel/runtime": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.1.tgz", + "integrity": "sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime/node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, + "node_modules/@babel/template": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.24.1", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@braintree/sanitize-url": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz", + "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==" + }, + "node_modules/@devui-design/icons": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@devui-design/icons/-/icons-1.3.0.tgz", + "integrity": "sha512-eg9PcDXYn1BaUCo6qP7dszFJ4uRycxASLdKzpz27AW34HbHx4kFce36Fhfr2niRjGKYllcMgYe7hgP5KYVOZ8Q==" + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://mirrors.cloud.tencent.com/npm/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.19.2", + "resolved": "https://mirrors.cloud.tencent.com/npm/@eslint/config-array/-/config-array-0.19.2.tgz", + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.1.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/@eslint/config-helpers/-/config-helpers-0.1.0.tgz", + "integrity": "sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.12.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/@eslint/core/-/core-0.12.0.tgz", + "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", + "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/espree": { + "version": "10.3.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.22.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/@eslint/js/-/js-9.22.0.tgz", + "integrity": "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://mirrors.cloud.tencent.com/npm/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.7", + "resolved": "https://mirrors.cloud.tencent.com/npm/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", + "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.12.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-0.6.2.tgz", + "integrity": "sha512-jktYRmZwmau63adUG3GKOAVCofBXkk55S/zQ94XOorAHhwqFIOFAy1rSp2N0Wp6/tGbe9V3u/ExlGZypyY17rg==" + }, + "node_modules/@floating-ui/dom": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-0.4.5.tgz", + "integrity": "sha512-b+prvQgJt8pieaKYMSJBXHxX/DYwdLsAWxKYqnO5dO2V4oo/TYBZJAUQCVNjTWWsrs6o4VDrNcP9+E70HAhJdw==", + "dependencies": { + "@floating-ui/core": "^0.6.2" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://mirrors.cloud.tencent.com/npm/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://mirrors.cloud.tencent.com/npm/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://mirrors.cloud.tencent.com/npm/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.2", + "resolved": "https://mirrors.cloud.tencent.com/npm/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@iktakahiro/markdown-it-katex": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@iktakahiro/markdown-it-katex/-/markdown-it-katex-4.0.1.tgz", + "integrity": "sha512-kGFooO7fIOgY34PSG8ZNVsUlKhhNoqhzW2kq94TNGa8COzh73PO4KsEoPOsQVG1mEAe8tg7GqG0FoVao0aMHaw==", + "dependencies": { + "katex": "^0.12.0" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@micro-zoe/micro-app": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmmirror.com/@micro-zoe/micro-app/-/micro-app-1.0.0-rc.3.tgz", + "integrity": "sha512-f6PBW8XjHESERlfHLd/2yoQRXbMoXK8C5aG8yZZBR5iV07Rkj+T7qBuZqdDnL1MW+zsuWpSgeYsZe9kpK+9e4Q==" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.9.0.tgz", + "integrity": "sha512-AAWymnpvHbGty1BmgbdfbqQDboXs6xN6h2yAacO4yKVyyUUBnpYkp+P9jjPrV9zrAGw7JVVriRtGOHPInnfjZQ==", + "dev": true + }, + "node_modules/@sentry-internal/feedback": { + "version": "7.108.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.108.0.tgz", + "integrity": "sha512-8JcgZEnk1uWrXJhsd3iRvFtEiVeaWOEhN0NZwhwQXHfvODqep6JtrkY1yCIyxbpA37aZmrPc2JhyotRERGfUjg==", + "dependencies": { + "@sentry/core": "7.108.0", + "@sentry/types": "7.108.0", + "@sentry/utils": "7.108.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@sentry-internal/replay-canvas": { + "version": "7.108.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.108.0.tgz", + "integrity": "sha512-R5tvjGqWUV5vSk0N1eBgVW7wIADinrkfDEBZ9FyKP2mXHBobsyNGt30heJDEqYmVqluRqjU2NuIRapsnnrpGnA==", + "dependencies": { + "@sentry/core": "7.108.0", + "@sentry/replay": "7.108.0", + "@sentry/types": "7.108.0", + "@sentry/utils": "7.108.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@sentry-internal/tracing": { + "version": "7.108.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.108.0.tgz", + "integrity": "sha512-zuK5XsTsb+U+hgn3SPetYDAogrXsM16U/LLoMW7+TlC6UjlHGYQvmX3o+M2vntejoU1QZS8m1bCAZSMWEypAEw==", + "dependencies": { + "@sentry/core": "7.108.0", + "@sentry/types": "7.108.0", + "@sentry/utils": "7.108.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/browser": { + "version": "7.108.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.108.0.tgz", + "integrity": "sha512-FNpzsdTvGvdHJMUelqEouUXMZU7jC+dpN7CdT6IoHVVFEkoAgrjMVUhXZoQ/dmCkdKWHmFSQhJ8Fm6V+e9Aq0A==", + "dependencies": { + "@sentry-internal/feedback": "7.108.0", + "@sentry-internal/replay-canvas": "7.108.0", + "@sentry-internal/tracing": "7.108.0", + "@sentry/core": "7.108.0", + "@sentry/replay": "7.108.0", + "@sentry/types": "7.108.0", + "@sentry/utils": "7.108.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/core": { + "version": "7.108.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.108.0.tgz", + "integrity": "sha512-I/VNZCFgLASxHZaD0EtxZRM34WG9w2gozqgrKGNMzAymwmQ3K9g/1qmBy4e6iS3YRptb7J5UhQkZQHrcwBbjWQ==", + "dependencies": { + "@sentry/types": "7.108.0", + "@sentry/utils": "7.108.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/replay": { + "version": "7.108.0", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.108.0.tgz", + "integrity": "sha512-jo8fDOzcZJclP1+4n9jUtVxTlBFT9hXwxhAMrhrt70FV/nfmCtYQMD3bzIj79nwbhUtFP6pN39JH1o7Xqt1hxQ==", + "dependencies": { + "@sentry-internal/tracing": "7.108.0", + "@sentry/core": "7.108.0", + "@sentry/types": "7.108.0", + "@sentry/utils": "7.108.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@sentry/types": { + "version": "7.108.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.108.0.tgz", + "integrity": "sha512-bKtHITmBN3kqtqE5eVvL8mY8znM05vEodENwRpcm6TSrrBjC2RnwNWVwGstYDdHpNfFuKwC8mLY9bgMJcENo8g==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/utils": { + "version": "7.108.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.108.0.tgz", + "integrity": "sha512-a45yEFD5qtgZaIFRAcFkG8C8lnDzn6t4LfLXuV4OafGAy/3ZAN3XN8wDnrruHkiUezSSANGsLg3bXaLW/JLvJw==", + "dependencies": { + "@sentry/types": "7.108.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/vue": { + "version": "7.108.0", + "resolved": "https://registry.npmjs.org/@sentry/vue/-/vue-7.108.0.tgz", + "integrity": "sha512-hnqL/LIq3i4dJVMFq0oP8OP5ybMRYcW5dhtzlJFKo3A9i0BRzC4VUUcDnm1zTT9Um1YIU19mOy0cJBGplRQB9g==", + "dependencies": { + "@sentry/browser": "7.108.0", + "@sentry/core": "7.108.0", + "@sentry/types": "7.108.0", + "@sentry/utils": "7.108.0" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "vue": "2.x || 3.x" + } + }, + "node_modules/@tsconfig/node18": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-2.0.1.tgz", + "integrity": "sha512-UqdfvuJK0SArA2CxhKWwwAWfnVSXiYe63bVpMutc27vpngCntGUZQETO24pEJ46zU6XM+7SpqYoMgcO3bM11Ew==", + "dev": true + }, + "node_modules/@tweenjs/tween.js": { + "version": "18.6.4", + "resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-18.6.4.tgz", + "integrity": "sha512-lB9lMjuqjtuJrx7/kOkqQBtllspPIN+96OvTCeJ2j5FEzinoAXTdAMFnDAQT1KVPRlnYfBrqxtqP66vDM40xxQ==", + "dev": true + }, + "node_modules/@types/canvas-confetti": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/@types/canvas-confetti/-/canvas-confetti-1.6.4.tgz", + "integrity": "sha512-fNyZ/Fdw/Y92X0vv7B+BD6ysHL4xVU5dJcgzgxLdGbn8O3PezZNIJpml44lKM0nsGur+o/6+NZbZeNTt00U1uA==", + "dev": true + }, + "node_modules/@types/codemirror": { + "version": "0.0.97", + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-0.0.97.tgz", + "integrity": "sha512-n5d7o9nWhC49DjfhsxANP7naWSeTzrjXASkUDQh7626sM4zK9XP2EVcHp1IcCf/IPV6c7ORzDUDF3Bkt231VKg==", + "dependencies": { + "@types/tern": "*" + } + }, + "node_modules/@types/crypto-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@types/crypto-js/-/crypto-js-4.2.2.tgz", + "integrity": "sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==" + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://mirrors.cloud.tencent.com/npm/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://mirrors.cloud.tencent.com/npm/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/lodash": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.0.tgz", + "integrity": "sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.12", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/mockjs": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@types/mockjs/-/mockjs-1.0.10.tgz", + "integrity": "sha512-SXgrhajHG7boLv6oU93CcmdDm0HYRiceuz6b+7z+/2lCJPTWDv0V5YiwFHT2ejE4bQqgSXQiVPQYPWv7LGsK1g==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.19.26", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.26.tgz", + "integrity": "sha512-+wiMJsIwLOYCvUqSdKTrfkS8mpTp+MPINe6+Np4TAGFWWRWiBQ5kSq9nZGCSPkzx9mvT+uEukzpX4MOSCydcvw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://mirrors.cloud.tencent.com/npm/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/stats.js": { + "version": "0.17.3", + "resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.3.tgz", + "integrity": "sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==", + "dev": true + }, + "node_modules/@types/tern": { + "version": "0.23.9", + "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.9.tgz", + "integrity": "sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/three": { + "version": "0.155.1", + "resolved": "https://registry.npmjs.org/@types/three/-/three-0.155.1.tgz", + "integrity": "sha512-uNUwnz/wWRxahjIqTtDYQ1qdE1R1py21obxfuILkT+kKrjocMwRLQQA1l8nMxfQU7VXb7CXu04ucMo8OqZt4ZA==", + "dev": true, + "dependencies": { + "@tweenjs/tween.js": "~18.6.4", + "@types/stats.js": "*", + "@types/webxr": "*", + "fflate": "~0.6.9", + "lil-gui": "~0.17.0", + "meshoptimizer": "~0.18.1" + } + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", + "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==" + }, + "node_modules/@types/webxr": { + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.14.tgz", + "integrity": "sha512-UEMMm/Xn3DtEa+gpzUrOcDj+SJS1tk5YodjwOxcqStNhCfPcwgyC5Srg2ToVKyg2Fhq16Ffpb0UWUQHqoT9AMA==", + "dev": true + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://mirrors.cloud.tencent.com/npm/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://mirrors.cloud.tencent.com/npm/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vitejs/plugin-basic-ssl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.1.0.tgz", + "integrity": "sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==", + "dev": true, + "engines": { + "node": ">=14.6.0" + }, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/@vitejs/plugin-legacy": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-4.1.1.tgz", + "integrity": "sha512-um3gbVouD2Q/g19C0qpDfHwveXDCAHzs8OC3e9g6aXpKoD1H14himgs7wkMnhAynBJy7QqUoZNAXDuqN8zLR2g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.22.9", + "@babel/preset-env": "^7.22.9", + "browserslist": "^4.21.9", + "core-js": "^3.31.1", + "magic-string": "^0.30.1", + "regenerator-runtime": "^0.13.11", + "systemjs": "^6.14.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "peerDependencies": { + "terser": "^5.4.0", + "vite": "^4.0.0" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz", + "integrity": "sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0 || ^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/language-core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.11.1.tgz", + "integrity": "sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==", + "dev": true, + "dependencies": { + "@volar/source-map": "1.11.1" + } + }, + "node_modules/@volar/source-map": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.11.1.tgz", + "integrity": "sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==", + "dev": true, + "dependencies": { + "muggle-string": "^0.3.1" + } + }, + "node_modules/@volar/typescript": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.11.1.tgz", + "integrity": "sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==", + "dev": true, + "dependencies": { + "@volar/language-core": "1.11.1", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.21.tgz", + "integrity": "sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og==", + "dependencies": { + "@babel/parser": "^7.23.9", + "@vue/shared": "3.4.21", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz", + "integrity": "sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA==", + "dependencies": { + "@vue/compiler-core": "3.4.21", + "@vue/shared": "3.4.21" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.21.tgz", + "integrity": "sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ==", + "dependencies": { + "@babel/parser": "^7.23.9", + "@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.7", + "postcss": "^8.4.35", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.21.tgz", + "integrity": "sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q==", + "dependencies": { + "@vue/compiler-dom": "3.4.21", + "@vue/shared": "3.4.21" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.1.tgz", + "integrity": "sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==" + }, + "node_modules/@vue/eslint-config-prettier": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-7.1.0.tgz", + "integrity": "sha512-Pv/lVr0bAzSIHLd9iz0KnvAr4GKyCEl+h52bc4e5yWuDVtLgFwycF7nrbWTAQAS+FU6q1geVd07lc6EWfJiWKQ==", + "dev": true, + "dependencies": { + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-prettier": "^4.0.0" + }, + "peerDependencies": { + "eslint": ">= 7.28.0", + "prettier": ">= 2.0.0" + } + }, + "node_modules/@vue/eslint-config-typescript": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.3.tgz", + "integrity": "sha512-dkt6W0PX6H/4Xuxg/BlFj5xHvksjpSlVjtkQCpaYJBIEuKj2hOVU7r+TIe+ysCwRYFz/lGqvklntRkCAibsbPw==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "^5.59.1", + "@typescript-eslint/parser": "^5.59.1", + "vue-eslint-parser": "^9.1.1" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0", + "eslint-plugin-vue": "^9.0.0", + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/eslint-config-typescript/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://mirrors.cloud.tencent.com/npm/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@vue/eslint-config-typescript/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@vue/eslint-config-typescript/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://mirrors.cloud.tencent.com/npm/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@vue/language-core": { + "version": "1.8.27", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.27.tgz", + "integrity": "sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==", + "dev": true, + "dependencies": { + "@volar/language-core": "~1.11.1", + "@volar/source-map": "~1.11.1", + "@vue/compiler-dom": "^3.3.0", + "@vue/shared": "^3.3.0", + "computeds": "^0.0.1", + "minimatch": "^9.0.3", + "muggle-string": "^0.3.1", + "path-browserify": "^1.0.1", + "vue-template-compiler": "^2.7.14" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/language-core/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@vue/language-core/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.21.tgz", + "integrity": "sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw==", + "dependencies": { + "@vue/shared": "3.4.21" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.21.tgz", + "integrity": "sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA==", + "dependencies": { + "@vue/reactivity": "3.4.21", + "@vue/shared": "3.4.21" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.21.tgz", + "integrity": "sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw==", + "dependencies": { + "@vue/runtime-core": "3.4.21", + "@vue/shared": "3.4.21", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.21.tgz", + "integrity": "sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg==", + "dependencies": { + "@vue/compiler-ssr": "3.4.21", + "@vue/shared": "3.4.21" + }, + "peerDependencies": { + "vue": "3.4.21" + } + }, + "node_modules/@vue/shared": { + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.21.tgz", + "integrity": "sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==" + }, + "node_modules/@vue/tsconfig": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.4.0.tgz", + "integrity": "sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg==", + "dev": true + }, + "node_modules/@vueuse/core": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.9.0.tgz", + "integrity": "sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg==", + "dependencies": { + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "10.9.0", + "@vueuse/shared": "10.9.0", + "vue-demi": ">=0.14.7" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.9.0.tgz", + "integrity": "sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA==", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.9.0.tgz", + "integrity": "sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==", + "dependencies": { + "vue-demi": ">=0.14.7" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://mirrors.cloud.tencent.com/npm/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://mirrors.cloud.tencent.com/npm/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/autoprefixer": { + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz", + "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.1", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz", + "integrity": "sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "peer": true + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001600", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz", + "integrity": "sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/canvas-confetti": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/canvas-confetti/-/canvas-confetti-1.9.2.tgz", + "integrity": "sha512-6Xi7aHHzKwxZsem4mCKoqP6YwUG3HamaHHAlz1hTNQPCqXhARFpSXnkC9TWlahHY5CG6hSL5XexNjxK8irVErg==", + "funding": { + "type": "donate", + "url": "https://www.paypal.me/kirilvatev" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/clipboard": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", + "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", + "dependencies": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "node_modules/clipboard-copy": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clipboard-copy/-/clipboard-copy-4.0.1.tgz", + "integrity": "sha512-wOlqdqziE/NNTUJsfSgXmBMIrYmfd5V0HCGsR8uAKHcg+h9NENWINcfRjtWGU77wDHC8B8ijV4hMTGYbrKovng==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/codemirror": { + "version": "5.63.3", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.63.3.tgz", + "integrity": "sha512-1C+LELr+5grgJYqwZKqxrcbPsHFHapVaVAloBsFBASbpLnQqLw1U8yXJ3gT5D+rhxIiSpo+kTqN+hQ+9ialIXw==" + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.0.0.tgz", + "integrity": "sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==", + "engines": { + "node": ">=18" + } + }, + "node_modules/computeds": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", + "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/core-js": { + "version": "3.36.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.36.1.tgz", + "integrity": "sha512-BTvUrwxVBezj5SZ3f10ImnX2oRByMxql3EimVqMysepbC9EeMUOpLwdy6Eoili2x6E4kf+ZUB5k/+Jv55alPfA==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.36.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz", + "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://mirrors.cloud.tencent.com/npm/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssfilter": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", + "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==" + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-collection": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz", + "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-voronoi": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.4.tgz", + "integrity": "sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==" + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dagre": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz", + "integrity": "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==", + "dependencies": { + "graphlib": "^2.1.8", + "lodash": "^4.17.15" + } + }, + "node_modules/dagre-d3": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/dagre-d3/-/dagre-d3-0.6.4.tgz", + "integrity": "sha512-e/6jXeCP7/ptlAM48clmX4xTZc5Ek6T6kagS7Oz2HrYSdqcLZFLqpAfh7ldbZRFfxCZVyh61NEPR08UQRVxJzQ==", + "dependencies": { + "d3": "^5.14", + "dagre": "^0.8.5", + "graphlib": "^2.1.8", + "lodash": "^4.17.15" + } + }, + "node_modules/dagre-d3/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/dagre-d3/node_modules/d3": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-5.16.0.tgz", + "integrity": "sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw==", + "dependencies": { + "d3-array": "1", + "d3-axis": "1", + "d3-brush": "1", + "d3-chord": "1", + "d3-collection": "1", + "d3-color": "1", + "d3-contour": "1", + "d3-dispatch": "1", + "d3-drag": "1", + "d3-dsv": "1", + "d3-ease": "1", + "d3-fetch": "1", + "d3-force": "1", + "d3-format": "1", + "d3-geo": "1", + "d3-hierarchy": "1", + "d3-interpolate": "1", + "d3-path": "1", + "d3-polygon": "1", + "d3-quadtree": "1", + "d3-random": "1", + "d3-scale": "2", + "d3-scale-chromatic": "1", + "d3-selection": "1", + "d3-shape": "1", + "d3-time": "1", + "d3-time-format": "2", + "d3-timer": "1", + "d3-transition": "1", + "d3-voronoi": "1", + "d3-zoom": "1" + } + }, + "node_modules/dagre-d3/node_modules/d3-array": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", + "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==" + }, + "node_modules/dagre-d3/node_modules/d3-axis": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.12.tgz", + "integrity": "sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==" + }, + "node_modules/dagre-d3/node_modules/d3-brush": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.1.6.tgz", + "integrity": "sha512-7RW+w7HfMCPyZLifTz/UnJmI5kdkXtpCbombUSs8xniAyo0vIbrDzDwUJB6eJOgl9u5DQOt2TQlYumxzD1SvYA==", + "dependencies": { + "d3-dispatch": "1", + "d3-drag": "1", + "d3-interpolate": "1", + "d3-selection": "1", + "d3-transition": "1" + } + }, + "node_modules/dagre-d3/node_modules/d3-chord": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.6.tgz", + "integrity": "sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA==", + "dependencies": { + "d3-array": "1", + "d3-path": "1" + } + }, + "node_modules/dagre-d3/node_modules/d3-color": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", + "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" + }, + "node_modules/dagre-d3/node_modules/d3-contour": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-1.3.2.tgz", + "integrity": "sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg==", + "dependencies": { + "d3-array": "^1.1.1" + } + }, + "node_modules/dagre-d3/node_modules/d3-dispatch": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz", + "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==" + }, + "node_modules/dagre-d3/node_modules/d3-drag": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.5.tgz", + "integrity": "sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==", + "dependencies": { + "d3-dispatch": "1", + "d3-selection": "1" + } + }, + "node_modules/dagre-d3/node_modules/d3-dsv": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.2.0.tgz", + "integrity": "sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==", + "dependencies": { + "commander": "2", + "iconv-lite": "0.4", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json", + "csv2tsv": "bin/dsv2dsv", + "dsv2dsv": "bin/dsv2dsv", + "dsv2json": "bin/dsv2json", + "json2csv": "bin/json2dsv", + "json2dsv": "bin/json2dsv", + "json2tsv": "bin/json2dsv", + "tsv2csv": "bin/dsv2dsv", + "tsv2json": "bin/dsv2json" + } + }, + "node_modules/dagre-d3/node_modules/d3-ease": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz", + "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==" + }, + "node_modules/dagre-d3/node_modules/d3-fetch": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-1.2.0.tgz", + "integrity": "sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA==", + "dependencies": { + "d3-dsv": "1" + } + }, + "node_modules/dagre-d3/node_modules/d3-force": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.2.1.tgz", + "integrity": "sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==", + "dependencies": { + "d3-collection": "1", + "d3-dispatch": "1", + "d3-quadtree": "1", + "d3-timer": "1" + } + }, + "node_modules/dagre-d3/node_modules/d3-format": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz", + "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==" + }, + "node_modules/dagre-d3/node_modules/d3-geo": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.12.1.tgz", + "integrity": "sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==", + "dependencies": { + "d3-array": "1" + } + }, + "node_modules/dagre-d3/node_modules/d3-hierarchy": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz", + "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==" + }, + "node_modules/dagre-d3/node_modules/d3-interpolate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz", + "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", + "dependencies": { + "d3-color": "1" + } + }, + "node_modules/dagre-d3/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "node_modules/dagre-d3/node_modules/d3-polygon": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.6.tgz", + "integrity": "sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ==" + }, + "node_modules/dagre-d3/node_modules/d3-quadtree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.7.tgz", + "integrity": "sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==" + }, + "node_modules/dagre-d3/node_modules/d3-random": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.1.2.tgz", + "integrity": "sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==" + }, + "node_modules/dagre-d3/node_modules/d3-scale": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-2.2.2.tgz", + "integrity": "sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==", + "dependencies": { + "d3-array": "^1.2.0", + "d3-collection": "1", + "d3-format": "1", + "d3-interpolate": "1", + "d3-time": "1", + "d3-time-format": "2" + } + }, + "node_modules/dagre-d3/node_modules/d3-scale-chromatic": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz", + "integrity": "sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==", + "dependencies": { + "d3-color": "1", + "d3-interpolate": "1" + } + }, + "node_modules/dagre-d3/node_modules/d3-selection": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.2.tgz", + "integrity": "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==" + }, + "node_modules/dagre-d3/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/dagre-d3/node_modules/d3-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz", + "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==" + }, + "node_modules/dagre-d3/node_modules/d3-time-format": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.3.0.tgz", + "integrity": "sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==", + "dependencies": { + "d3-time": "1" + } + }, + "node_modules/dagre-d3/node_modules/d3-timer": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz", + "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==" + }, + "node_modules/dagre-d3/node_modules/d3-transition": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.3.2.tgz", + "integrity": "sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==", + "dependencies": { + "d3-color": "1", + "d3-dispatch": "1", + "d3-ease": "1", + "d3-interpolate": "1", + "d3-selection": "^1.1.0", + "d3-timer": "1" + } + }, + "node_modules/dagre-d3/node_modules/d3-zoom": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.8.3.tgz", + "integrity": "sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==", + "dependencies": { + "d3-dispatch": "1", + "d3-drag": "1", + "d3-interpolate": "1", + "d3-selection": "1", + "d3-transition": "1" + } + }, + "node_modules/dagre-d3/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dayjs": { + "version": "1.11.10", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + }, + "node_modules/devui-theme": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/devui-theme/-/devui-theme-0.0.7.tgz", + "integrity": "sha512-sJWnkqOvqqVyvqaqyXn3/F+SIlNuoPUGdxG6TyDXuzZSAigWMuQsz8v8JJYTKL2Ash1q8kAKfRT01SqZmvlByA==" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff2html": { + "version": "3.4.47", + "resolved": "https://registry.npmjs.org/diff2html/-/diff2html-3.4.47.tgz", + "integrity": "sha512-2llDp8750FRUJl8n7apM0tlcqZYxbDHTw7qhzv/kGddByHRpn3Xg/sWHHIy34h492aGSpStEULydxqrITYpuoA==", + "dependencies": { + "diff": "5.1.0", + "hogan.js": "3.0.2" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "highlight.js": "11.9.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/dompurify": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.11.tgz", + "integrity": "sha512-Fan4uMuyB26gFV3ovPoEoQbxRRPfTu3CvImyZnhGq5fsIEO+gEFLp45ISFt+kQBWsK5ulDdT0oV28jS1UrwQLg==" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/echarts": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.3.3.tgz", + "integrity": "sha512-BRw2serInRwO5SIwRviZ6Xgm5Lb7irgz+sLiFMmy/HOaf4SQ+7oYqxKzRHAKp4xHQ05AuHw1xvoQWJjDQq/FGw==", + "dependencies": { + "tslib": "2.3.0", + "zrender": "5.3.2" + } + }, + "node_modules/echarts/node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.719", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.719.tgz", + "integrity": "sha512-FbWy2Q2YgdFzkFUW/W5jBjE9dj+804+98E4Pup78JBPnbdb3pv6IneY2JCPKdeKLh3AOKHQeYf+KwLr7mxGh6Q==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.2.tgz", + "integrity": "sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.5", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "9.22.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/eslint/-/eslint-9.22.0.tgz", + "integrity": "sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.2", + "@eslint/config-helpers": "^0.1.0", + "@eslint/core": "^0.12.0", + "@eslint/eslintrc": "^3.3.0", + "@eslint/js": "9.22.0", + "@eslint/plugin-kit": "^0.2.7", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.3.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-vue": { + "version": "9.24.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.24.0.tgz", + "integrity": "sha512-9SkJMvF8NGMT9aQCwFc5rj8Wo1XWSMSHk36i7ZwdI614BU7sIOR28ZjuFPKp8YGymZN12BSEbiSwa7qikp+PBw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "globals": "^13.24.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.0", + "vue-eslint-parser": "^9.4.2", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-vue/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-vue/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-vue/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-vue/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/eslint-scope": { + "version": "8.3.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/espree": { + "version": "10.3.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://mirrors.cloud.tencent.com/npm/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fflate": { + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.6.10.tgz", + "integrity": "sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==", + "dev": true + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://mirrors.cloud.tencent.com/npm/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://mirrors.cloud.tencent.com/npm/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", + "dependencies": { + "delegate": "^3.1.2" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/highlight.js": { + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz", + "integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/hogan.js": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/hogan.js/-/hogan.js-3.0.2.tgz", + "integrity": "sha512-RqGs4wavGYJWE07t35JQccByczmNUXQT0E12ZYV1VKYu5UiAU9lsos/yBAcf840+zrUQQxgVduCR5/B8nNtibg==", + "dependencies": { + "mkdirp": "0.3.0", + "nopt": "1.0.10" + }, + "bin": { + "hulk": "bin/hulk" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, + "node_modules/immutable": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://mirrors.cloud.tencent.com/npm/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "engines": { + "node": ">=14" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://mirrors.cloud.tencent.com/npm/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://mirrors.cloud.tencent.com/npm/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/katex": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.12.0.tgz", + "integrity": "sha512-y+8btoc/CK70XqcHqjxiGWBOeIL8upbS0peTPXTvgrh21n1RiWWcIpSWM+4uXq+IAgNh9YYQWdc7LVDPDAEEAg==", + "dependencies": { + "commander": "^2.19.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://mirrors.cloud.tencent.com/npm/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/khroma": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", + "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lil-gui": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/lil-gui/-/lil-gui-0.17.0.tgz", + "integrity": "sha512-MVBHmgY+uEbmJNApAaPbtvNh1RCAeMnKym82SBjtp5rODTYKWtM+MXHCifLe2H2Ti1HuBGBtK/5SyG4ShQ3pUQ==", + "dev": true + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/localforage": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "dependencies": { + "lie": "3.1.1" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lottie-web": { + "version": "5.12.2", + "resolved": "https://registry.npmjs.org/lottie-web/-/lottie-web-5.12.2.tgz", + "integrity": "sha512-uvhvYPC8kGPjXT3MyKMrL3JitEAmDMp30lVkuq/590Mw9ok6pWcFCwXJveo0t5uqYw1UREQHofD+jVpdjBv8wg==" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.8", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", + "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markdown-it-plantuml": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/markdown-it-plantuml/-/markdown-it-plantuml-1.4.1.tgz", + "integrity": "sha512-13KgnZaGYTHBp4iUmGofzZSBz+Zj6cyqfR0SXUIc9wgWTto5Xhn7NjaXYxY0z7uBeTUMlc9LMQq5uP4OM5xCHg==" + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==" + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mermaid": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-9.1.1.tgz", + "integrity": "sha512-2RVD+WkzZ4VDyO9gQvQAuQ/ux2gLigJtKDTlbwjYqOR/NwsVzTSfGm/kx648/qWJsg6Sv04tE9BWCO8s6a+pFA==", + "dependencies": { + "@braintree/sanitize-url": "^6.0.0", + "d3": "^7.0.0", + "dagre": "^0.8.5", + "dagre-d3": "^0.6.4", + "dompurify": "2.3.6", + "graphlib": "^2.1.8", + "khroma": "^2.0.0", + "moment-mini": "^2.24.0", + "stylis": "^4.0.10" + } + }, + "node_modules/mermaid/node_modules/dompurify": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.6.tgz", + "integrity": "sha512-OFP2u/3T1R5CEgWCEONuJ1a5+MFKnOYpkywpUSxv/dj1LeBT1erK+JwM7zK0ROy2BRhqVCf0LRw/kHqKuMkVGg==" + }, + "node_modules/meshoptimizer": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.18.1.tgz", + "integrity": "sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==", + "dev": true + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + }, + "node_modules/mkdirp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "integrity": "sha512-OHsdUcVAQ6pOtg5JYWpCBo9W/GySVuwvP9hueRMW7UqshC0tbfzLv8wjySTPm3tfUZ/21CE9E1pJagOA91Pxew==", + "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", + "engines": { + "node": "*" + } + }, + "node_modules/mockjs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mockjs/-/mockjs-1.1.0.tgz", + "integrity": "sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==", + "dependencies": { + "commander": "*" + }, + "bin": { + "random": "bin/random" + } + }, + "node_modules/moment-mini": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment-mini/-/moment-mini-2.29.4.tgz", + "integrity": "sha512-uhXpYwHFeiTbY9KSgPPRoo1nt8OxNVdMVoTBYHfSEKeRkIkwGpO+gERmhuhBtzfaeOyTkykSrm2+noJBgqt3Hg==" + }, + "node_modules/monaco-editor": { + "version": "0.34.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.34.0.tgz", + "integrity": "sha512-VF+S5zG8wxfinLKLrWcl4WUizMx+LeJrG4PM/M78OhcwocpV0jiyhX/pG6Q9jIOhrb/ckYi6nHnaR5OojlOZCQ==" + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/muggle-string": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.3.1.tgz", + "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==", + "dev": true + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true, + "license": "MIT" + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize.css": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize.css/-/normalize.css-8.0.1.tgz", + "integrity": "sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==" + }, + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/npm-run-all/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-all/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/overlayscrollbars": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/overlayscrollbars/-/overlayscrollbars-2.6.1.tgz", + "integrity": "sha512-V+ZAqWMYMyGBJNRDEcdRC7Ch+WT9RBx9hY8bfJSMyFObQeJoecs1Vqg7ZAzBVcpN6sCUXFAZldCbeySwmmD0RA==" + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://mirrors.cloud.tencent.com/npm/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/pinia": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz", + "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==", + "dependencies": { + "@vue/devtools-api": "^6.5.0", + "vue-demi": ">=0.14.5" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "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 + } + } + }, + "node_modules/pinia/node_modules/vue-demi": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://mirrors.cloud.tencent.com/npm/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.0.tgz", + "integrity": "sha512-trVZiI6RMOkO476zLGaBIzszOdFPnCCXHPG9kn0yuS1uz6xdVxPfZdB3vUig9pxPFDM9BRAgz/YUIVQ1/vuiUg==", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-cache/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://mirrors.cloud.tencent.com/npm/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + }, + "node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-visualizer": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.12.0.tgz", + "integrity": "sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==", + "dev": true, + "dependencies": { + "open": "^8.4.0", + "picomatch": "^2.3.1", + "source-map": "^0.7.4", + "yargs": "^17.5.1" + }, + "bin": { + "rollup-plugin-visualizer": "dist/bin/cli.js" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "rollup": "2.x || 3.x || 4.x" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sass": { + "version": "1.72.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.72.0.tgz", + "integrity": "sha512-Gpczt3WA56Ly0Mn8Sl21Vj94s1axi9hDIzDFn9Ph9x3C3p4nNyvsqJoQyVXKou6cBlfFWEgRW4rT8Tb4i3XnVA==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "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" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sortablejs": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.2.tgz", + "integrity": "sha512-FJF5jgdfvoKn1MAKSdGs33bIqLi3LmsgVTliuX6iITj834F+JRQZN90Z93yql8h0K2t0RwDPBmxwlbZfDcxNZA==" + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", + "dev": true + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.padend": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.6.tgz", + "integrity": "sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://mirrors.cloud.tencent.com/npm/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylis": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz", + "integrity": "sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==" + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/swiper": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-10.3.1.tgz", + "integrity": "sha512-24Wk3YUdZHxjc9faID97GTu6xnLNia+adMt6qMTZG/HgdSUt4fS0REsGUXJOgpTED0Amh/j+gRGQxsLayJUlBQ==", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "engines": { + "node": ">= 4.7.0" + } + }, + "node_modules/systemjs": { + "version": "6.14.3", + "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.14.3.tgz", + "integrity": "sha512-hQv45irdhXudAOr8r6SVSpJSGtogdGZUbJBRKCE5nsIS7tsxxvnIHqT4IOPWj+P+HcSzeWzHlGCGpmhPDIKe+w==", + "dev": true + }, + "node_modules/tailwindcss": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz", + "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "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.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/terser": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.0.tgz", + "integrity": "sha512-Y/SblUl5kEyEFzhMAQdsxVHh+utAxd4IuRNJzKywY/4uzSogh3G219jqbDDxYu4MXO9CzY3tSEqmZvW6AoEDJw==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "peer": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==" + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unplugin": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.10.0.tgz", + "integrity": "sha512-CuZtvvO8ua2Wl+9q2jEaqH6m3DoQ38N7pvBYQbbaeNlWGvK2l6GHiKi29aIHDPoSxdUzQ7Unevf1/ugil5X6Pg==", + "dev": true, + "dependencies": { + "acorn": "^8.11.3", + "chokidar": "^3.6.0", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.6.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/unplugin-vue-components": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-0.26.0.tgz", + "integrity": "sha512-s7IdPDlnOvPamjunVxw8kNgKNK8A5KM1YpK5j/p97jEKTjlPNrA0nZBiSfAKKlK1gWZuyWXlKL5dk3EDw874LQ==", + "dev": true, + "dependencies": { + "@antfu/utils": "^0.7.6", + "@rollup/pluginutils": "^5.0.4", + "chokidar": "^3.5.3", + "debug": "^4.3.4", + "fast-glob": "^3.3.1", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.3", + "minimatch": "^9.0.3", + "resolve": "^1.22.4", + "unplugin": "^1.4.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@babel/parser": "^7.15.8", + "@nuxt/kit": "^3.2.2", + "vue": "2 || 3" + }, + "peerDependenciesMeta": { + "@babel/parser": { + "optional": true + }, + "@nuxt/kit": { + "optional": true + } + } + }, + "node_modules/unplugin-vue-components/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/unplugin-vue-components/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://mirrors.cloud.tencent.com/npm/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vite": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.3.tgz", + "integrity": "sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "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 + } + } + }, + "node_modules/vue": { + "version": "3.4.21", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.21.tgz", + "integrity": "sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA==", + "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/shared": "3.4.21" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-devui": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/vue-devui/-/vue-devui-1.6.7.tgz", + "integrity": "sha512-wj4q0Oajhf+Ue10fZm24oFNdMBhPLKYQgPH3Ccw6dDJ4SQ7X2uPYWEiWBXOi2pFPJ0GUv59kIToqE9KUBdwdfw==", + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@devui-design/icons": "^1.3.0", + "@floating-ui/dom": "^0.4.4", + "@iktakahiro/markdown-it-katex": "^4.0.1", + "@types/codemirror": "0.0.97", + "@types/lodash-es": "^4.17.4", + "@vue/shared": "^3.2.33", + "@vueuse/core": "8.9.4", + "async-validator": "^4.0.7", + "clipboard": "^2.0.11", + "clipboard-copy": "^4.0.1", + "codemirror": "5.63.3", + "dayjs": "^1.11.3", + "devui-theme": "^0.0.1", + "diff2html": "^3.4.35", + "echarts": "5.3.3", + "fs-extra": "^10.0.0", + "highlight.js": "^11.6.0", + "katex": "^0.12.0", + "lodash": "^4.17.21", + "lodash-es": "^4.17.20", + "markdown-it": "12.2.0", + "markdown-it-plantuml": "^1.4.1", + "mermaid": "9.1.1", + "mitt": "^3.0.0", + "monaco-editor": "0.34.0", + "rxjs": "^7.8.1", + "uuid": "^9.0.1", + "vue-router": "^4.0.3", + "xss": "^1.0.14" + }, + "peerDependencies": { + "vue": "^3.3" + } + }, + "node_modules/vue-devui/node_modules/@types/web-bluetooth": { + "version": "0.0.14", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.14.tgz", + "integrity": "sha512-5d2RhCard1nQUC3aHcq/gHzWYO6K0WJmAbjO7mQJgCQKtZpgXxv1rOM6O/dBDhDYYVutk1sciOgNSe+5YyfM8A==" + }, + "node_modules/vue-devui/node_modules/@vueuse/core": { + "version": "8.9.4", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-8.9.4.tgz", + "integrity": "sha512-B/Mdj9TK1peFyWaPof+Zf/mP9XuGAngaJZBwPaXBvU3aCTZlx3ltlrFFFyMV4iGBwsjSCeUCgZrtkEj9dS2Y3Q==", + "dependencies": { + "@types/web-bluetooth": "^0.0.14", + "@vueuse/metadata": "8.9.4", + "@vueuse/shared": "8.9.4", + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.1.0", + "vue": "^2.6.0 || ^3.2.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + }, + "vue": { + "optional": true + } + } + }, + "node_modules/vue-devui/node_modules/@vueuse/core/node_modules/@vueuse/shared": { + "version": "8.9.4", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-8.9.4.tgz", + "integrity": "sha512-wt+T30c4K6dGRMVqPddexEVLa28YwxW5OFIPmzUHICjphfAuBFTTdDoyqREZNDOFJZ44ARH1WWQNCUK8koJ+Ag==", + "dependencies": { + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.1.0", + "vue": "^2.6.0 || ^3.2.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + }, + "vue": { + "optional": true + } + } + }, + "node_modules/vue-devui/node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz", + "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vue-devui/node_modules/@vueuse/metadata": { + "version": "8.9.4", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-8.9.4.tgz", + "integrity": "sha512-IwSfzH80bnJMzqhaapqJl9JRIiyQU0zsRGEgnxN6jhq7992cPUJIRfV+JHRIZXjYqbwt07E1gTEp0R0zPJ1aqw==", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/vue-devui/node_modules/devui-theme": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/devui-theme/-/devui-theme-0.0.1.tgz", + "integrity": "sha512-5nF6fChlsXKeAtvkaAF4bZ0NMiEAbzwqQ9XZQiNuM0RRFz5lW29nnbhfDCNPkmnw5ZyCVyXqYwVRBIZrwZHXrA==" + }, + "node_modules/vue-devui/node_modules/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/vue-devui/node_modules/linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/vue-devui/node_modules/markdown-it": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.2.0.tgz", + "integrity": "sha512-Wjws+uCrVQRqOoJvze4HCqkKl1AsSh95iFAeQDwnyfxM09divCBSXlDR1uTvyUP3Grzpn4Ru8GeCxYPM8vkCQg==", + "dependencies": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/vue-devui/node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" + }, + "node_modules/vue-devui/node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + }, + "node_modules/vue-eslint-parser": { + "version": "9.4.2", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.2.tgz", + "integrity": "sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/vue-eslint-parser/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-eslint-parser/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-eslint-parser/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/vue-router": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.3.0.tgz", + "integrity": "sha512-dqUcs8tUeG+ssgWhcPbjHvazML16Oga5w34uCUmsk7i0BcnskoLGwjpa15fqMr2Fa5JgVBrdL2MEgqz6XZ/6IQ==", + "dependencies": { + "@vue/devtools-api": "^6.5.1" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-template-compiler": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz", + "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "1.8.27", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-1.8.27.tgz", + "integrity": "sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==", + "dev": true, + "dependencies": { + "@volar/typescript": "~1.11.1", + "@vue/language-core": "1.8.27", + "semver": "^7.5.4" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/vue-tsc/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-tsc/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-tsc/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz", + "integrity": "sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "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" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/xss": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.15.tgz", + "integrity": "sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==", + "dependencies": { + "commander": "^2.20.3", + "cssfilter": "0.0.10" + }, + "bin": { + "xss": "bin/xss" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/xss/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yaml": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/yaml/-/yaml-2.4.1.tgz", + "integrity": "sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zrender": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.3.2.tgz", + "integrity": "sha512-8IiYdfwHj2rx0UeIGZGGU4WEVSDEdeVCaIg/fomejg1Xu6OifAL1GVzIPHg2D+MyUkbNgPWji90t0a8IDk+39w==", + "dependencies": { + "tslib": "2.3.0" + } + }, + "node_modules/zrender/node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..e496ab7 --- /dev/null +++ b/package.json @@ -0,0 +1,77 @@ +{ + "name": "gitcode-v2", + "version": "0.0.0", + "private": true, + "scripts": { + "dev": "vite --mode development", + "dev-loc": "vite --mode loc --open https://local.gitcode.net", + "pre": "vite --mode pre", + "prod": "vite --mode production", + "build:dev": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode development", + "build:test": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode test", + "build:pre": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode pre", + "build:prod": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode production", + "analysis": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode analysis", + "preview": "vite preview", + "type-check": "vue-tsc --noEmit -p tsconfig.app.json --composite false", + "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore", + "format": "prettier --write src/" + }, + "dependencies": { + "@devui-design/icons": "^1.3.0", + "@micro-zoe/micro-app": "1.0.0-rc.3", + "@sentry/vue": "^7.101.1", + "@types/crypto-js": "^4.1.1", + "@vueuse/core": "^10.2.1", + "axios": "^1.6.8", + "canvas-confetti": "^1.9.2", + "crypto-js": "^4.1.1", + "dayjs": "^1.11.9", + "devui-theme": "^0.0.7", + "dompurify": "^3.0.5", + "js-cookie": "^3.0.5", + "localforage": "^1.10.0", + "lodash": "^4.17.21", + "lottie-web": "^5.12.2", + "markdown-it": "^14.1.0", + "mitt": "^3.0.1", + "mockjs": "^1.1.0", + "normalize.css": "^8.0.1", + "overlayscrollbars": "^2.3.1", + "pinia": "^2.1.3", + "qs": "^6.11.2", + "sortablejs": "^1.15.0", + "swiper": "^10.3.1", + "vue": "^3.3.4", + "vue-devui": "^1.6.7", + "vue-router": "^4.2.2", + "yaml": "^2.4.1" + }, + "devDependencies": { + "@rushstack/eslint-patch": "^1.2.0", + "@tsconfig/node18": "^2.0.1", + "@types/canvas-confetti": "^1.6.4", + "@types/mockjs": "^1.0.7", + "@types/node": "^18.17.1", + "@types/three": "^0.155.1", + "@vitejs/plugin-basic-ssl": "^1.0.1", + "@vitejs/plugin-legacy": "^4.1.1", + "@vitejs/plugin-vue": "^4.2.3", + "@vue/eslint-config-prettier": "^7.1.0", + "@vue/eslint-config-typescript": "^11.0.3", + "@vue/tsconfig": "^0.4.0", + "autoprefixer": "^10.4.14", + "eslint": "^9.22.0", + "eslint-plugin-vue": "^9.11.0", + "npm-run-all": "^4.1.5", + "postcss": "^8.4.27", + "prettier": "^2.8.8", + "rollup-plugin-visualizer": "^5.9.2", + "sass": "^1.63.6", + "tailwindcss": "^3.3.3", + "typescript": "~5.0.4", + "unplugin-vue-components": "^0.26.0", + "vite": "^4.5.2", + "vue-tsc": "^1.6.5" + } +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..f090855 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,7 @@ +// eslint-disable-next-line no-undef +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {} + } +}; diff --git a/public/code-highlight-theme/dark.png b/public/code-highlight-theme/dark.png new file mode 100644 index 0000000..773a444 Binary files /dev/null and b/public/code-highlight-theme/dark.png differ diff --git a/public/code-highlight-theme/monokai.png b/public/code-highlight-theme/monokai.png new file mode 100644 index 0000000..6da7230 Binary files /dev/null and b/public/code-highlight-theme/monokai.png differ diff --git a/public/code-highlight-theme/none.png b/public/code-highlight-theme/none.png new file mode 100644 index 0000000..aa8b6cc Binary files /dev/null and b/public/code-highlight-theme/none.png differ diff --git a/public/code-highlight-theme/solarized_dark.png b/public/code-highlight-theme/solarized_dark.png new file mode 100644 index 0000000..90f03a0 Binary files /dev/null and b/public/code-highlight-theme/solarized_dark.png differ diff --git a/public/code-highlight-theme/solarized_light.png b/public/code-highlight-theme/solarized_light.png new file mode 100644 index 0000000..8fe2655 Binary files /dev/null and b/public/code-highlight-theme/solarized_light.png differ diff --git a/public/code-highlight-theme/white.png b/public/code-highlight-theme/white.png new file mode 100644 index 0000000..53a5f88 Binary files /dev/null and b/public/code-highlight-theme/white.png differ diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..363e6d9 Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/static/images/README.md b/public/static/images/README.md new file mode 100644 index 0000000..5a04cf1 --- /dev/null +++ b/public/static/images/README.md @@ -0,0 +1,3 @@ +# Tip + +> 此文件夹保存了lottie的图片资源,请勿删除 \ No newline at end of file diff --git a/public/static/images/img_0.png b/public/static/images/img_0.png new file mode 100644 index 0000000..3e75e7a Binary files /dev/null and b/public/static/images/img_0.png differ diff --git a/public/static/images/skin-blackwhale.png b/public/static/images/skin-blackwhale.png new file mode 100644 index 0000000..7cfb168 Binary files /dev/null and b/public/static/images/skin-blackwhale.png differ diff --git a/public/static/images/skin-building.jpg b/public/static/images/skin-building.jpg new file mode 100644 index 0000000..26ad8e4 Binary files /dev/null and b/public/static/images/skin-building.jpg differ diff --git a/public/static/images/skin-cat-title.png b/public/static/images/skin-cat-title.png new file mode 100644 index 0000000..07e90a4 Binary files /dev/null and b/public/static/images/skin-cat-title.png differ diff --git a/public/static/images/skin-colorful.jpg b/public/static/images/skin-colorful.jpg new file mode 100644 index 0000000..b7b5197 Binary files /dev/null and b/public/static/images/skin-colorful.jpg differ diff --git a/public/static/images/skin-growway.png b/public/static/images/skin-growway.png new file mode 100644 index 0000000..b5002dc Binary files /dev/null and b/public/static/images/skin-growway.png differ diff --git a/public/static/images/skin-number.png b/public/static/images/skin-number.png new file mode 100644 index 0000000..0433b89 Binary files /dev/null and b/public/static/images/skin-number.png differ diff --git a/public/static/images/skin-thespecialists.gif b/public/static/images/skin-thespecialists.gif new file mode 100644 index 0000000..62be8ca Binary files /dev/null and b/public/static/images/skin-thespecialists.gif differ diff --git a/public/static/images/skin-wave.jpg b/public/static/images/skin-wave.jpg new file mode 100644 index 0000000..494cc51 Binary files /dev/null and b/public/static/images/skin-wave.jpg differ diff --git a/public/static/js/font_4205092_xmdqsn5ibm.js b/public/static/js/font_4205092_xmdqsn5ibm.js new file mode 100644 index 0000000..94f0e50 --- /dev/null +++ b/public/static/js/font_4205092_xmdqsn5ibm.js @@ -0,0 +1 @@ +window._iconfont_svg_string_4205092='',function(h){var a=(a=document.getElementsByTagName("script"))[a.length-1],l=a.getAttribute("data-injectcss"),a=a.getAttribute("data-disable-injectsvg");if(!a){var t,v,o,i,m,z=function(a,l){l.parentNode.insertBefore(a,l)};if(l&&!h.__iconfont__svg__cssinject__){h.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(a){console&&console.log(a)}}t=function(){var a,l=document.createElement("div");l.innerHTML=h._iconfont_svg_string_4205092,(l=l.getElementsByTagName("svg")[0])&&(l.setAttribute("aria-hidden","true"),l.style.position="absolute",l.style.width=0,l.style.height=0,l.style.overflow="hidden",l=l,(a=document.body).firstChild?z(l,a.firstChild):a.appendChild(l))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(t,0):(v=function(){document.removeEventListener("DOMContentLoaded",v,!1),t()},document.addEventListener("DOMContentLoaded",v,!1)):document.attachEvent&&(o=t,i=h.document,m=!1,p(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,c())})}function c(){m||(m=!0,o())}function p(){try{i.documentElement.doScroll("left")}catch(a){return void setTimeout(p,50)}c()}}(window); \ No newline at end of file diff --git a/public/static/js/furion.js b/public/static/js/furion.js new file mode 100644 index 0000000..bbcaabf --- /dev/null +++ b/public/static/js/furion.js @@ -0,0 +1,11 @@ +// 埋点统计 +!function(x, n) { + window[n] = window[n] || {}; + window[n].config = { + appId: "B890DF389DB3442F8BD2BF08280848ED",setting: "api,jsTrack,uba,longtask,rtti",hashMode: true,smartJsErr: false, + }; + var o = document.createElement('script'); + o.src = x, o.async = !0; + var d = document.body.firstChild; + document.body.insertBefore(o, d); +}('https://res.hc-cdn.com/FurionSdk/furion-cdn.min.js', '__fr'); diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..9d9d7f6 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,228 @@ +// eslint-disable-next-line vue/name-property-casing + + + + + diff --git a/src/api/analysis/index.ts b/src/api/analysis/index.ts new file mode 100644 index 0000000..5fa5ac1 --- /dev/null +++ b/src/api/analysis/index.ts @@ -0,0 +1,60 @@ +import request from '@/utils/request'; +import type { AxiosResponse } from 'axios'; +import type { CommitCountData, RepoCountData, TrendData } from '@/api/analysis/types'; + +// 获取项目统计 +export function getRepoCount(params: { project_id: string; statistics?: boolean }): Promise> { + return request({ + url: `/api/v2/projects/${params.project_id}`, + method: 'get', + params + }); +} + +// 获取仓库趋势统计数据 +export function getTrendCount(params: { project_id: string; branch_name: string; }): Promise> { + return request({ + url: `/api/v2/projects/${params.project_id}/repository/commit_statistics`, + method: 'get', + params + }); +} + +// 获取仓库语言统计数据 +export function getLangCount(params: { project_id: string; }): Promise> { + return request({ + url: `/api/v2/projects/${params.project_id}/languages`, + method: 'get', + params + }, { + customError: true + }); +} + +// 获取仓库提交活跃度数据 +export function getCommitCount(params: { project_id: string; branch_name: string; }): Promise> { + return request({ + url: `/api/v2/projects/${params.project_id}/repository/graph`, + method: 'get', + params + }); +} + +// 获取仓库分支提交线路图 +export function getCommitNetwork(params: { project_id: string; ref_name: string; filter_ref: string; }): Promise> { + return request({ + url: `/api/v2/projects/${params.project_id}/repository/network`, + method: 'get', + params + }); +} +// 数据刷新,记录执行人 +export function postRepoStatistics(project_id: string, data: object): Promise { + return request({ + url: `/api/v2/projects/${project_id}/repository/statistics`, + method: 'post', + data + }, { + customError: true + }) +} diff --git a/src/api/analysis/types.ts b/src/api/analysis/types.ts new file mode 100644 index 0000000..6871548 --- /dev/null +++ b/src/api/analysis/types.ts @@ -0,0 +1,54 @@ +export type RepoCountData = { + tag_count: number; + branch_count: number; + release_count: number; + statistics: { + commit_count?: string; + storage_size?: string; + repository_size?: string; + lfs_objects_size?: string; + job_artifacts_size?: string; + }; +} + +export type TrendData = { + commits: Commit[]; + statistics: Statistic[]; + total: number; +} +type Commit = { + author_name: string; + date: Date; +} +type Statistic = { + id: number; + project_id: number; + branch: string; + user_name: string; + add_lines: number; + delete_lines: number; + commit_count: number; + created_at: Date; + updated_at: Date; +} + +export type CommitCountData = { + authors: number; + commit_per_day: number; + commits: CommitData[]; + duration: number; + end_date: string; + start_date: string; + total: number; +} + +export type CommitData = { + parents: Array>; + author: any; + time: number; + space: number; + refs: any; + id: string; + date: string; + message: string; +} diff --git a/src/api/branch/index.ts b/src/api/branch/index.ts new file mode 100644 index 0000000..2ee8930 --- /dev/null +++ b/src/api/branch/index.ts @@ -0,0 +1,57 @@ +import request from '@/utils/request'; +import * as types from '@/api/branch/types'; +import { reqCatch } from '@/utils/catch'; + +// 获取分支概览 +export function getBranchesOverview(params: types.commonBranchReqType): Promise { + return reqCatch(() => request({ + url: `/api/v2/internal/projects/${params.repoId}/repository/branch_overview`, + method: 'get', + params: params + }), params); +} + +// 获取分支列表 +export function getBranches(params: types.commonBranchReqType): Promise { + if (!params.view) { + params.view = 'simple'; + } + return reqCatch(() => request({ + url: `/api/v2/projects/${params.repoId}/repository/branches`, + method: 'get', + params: { + ...params, + search: params?.search?.substring(0, 100) || '' + } + }), params); +} + +// 创建分支 +export function createBranches(data: types.commonBranchReqType): Promise { + return reqCatch(() => request({ + url: `/api/v2/projects/${data.repoId}/repository/branches`, + method: 'post', + data + }), data); +} + +// 删除分支 +export function deleteBranches(data: types.commonBranchReqType): Promise { + return reqCatch(() => request({ + url: `/api/v2/projects/${data.repoId}/repository/branches`, + method: 'delete', + params: data + }), data); +} + +// 检测是否为分支 +export function checkBranches(params: types.commonBranchReqType): Promise { + const { project_id } = params; + delete params.project_id; + return reqCatch(() => request({ + url: `/api/v2/projects/${project_id}/repository/branches/check`, + method: 'get', + params + }), params); +} + diff --git a/src/api/branch/types.ts b/src/api/branch/types.ts new file mode 100644 index 0000000..00d3960 --- /dev/null +++ b/src/api/branch/types.ts @@ -0,0 +1,18 @@ +import { type errorType, type resCatch } from '@/api/types/common'; +import type { repoType } from '@/api/types/common'; + +export interface createBranchReqType extends repoType{ + branch: string, + ref: string, + description?: string; + relatedIds?: string[]; + [propName: string]: any; +} + +export interface commonBranchReqType { + [propName: string]: any; +} + +export interface commonBranchResType extends resCatch { + [propName: string]: any; +} diff --git a/src/api/cla/index.ts b/src/api/cla/index.ts new file mode 100644 index 0000000..9b15867 --- /dev/null +++ b/src/api/cla/index.ts @@ -0,0 +1,80 @@ +import request from '@/utils/request'; +import * as types from '@/api/cla/types'; +// 签署CLA +export function signCla(data: types.signClaReqType): Promise { + return request({ + url: `/api/v2/cla/sign/add`, + method: 'post', + data + }); +} +// 签署CLA详情 +export function getClaInfo(params: types.paramsObj): Promise { + return request({ + url: `/api/v2/cla/sign/info`, + method: 'get', + params + }, { + customError: true + }); +} +// 本人已签署CLA详情 +export function getClaInfoDetail(params: types.paramsObj): Promise { + return request({ + url: `/api/v2/cla/sign/detail`, + method: 'get', + params + }, { + customError: true + }); +} +// 获取组织里面用户已签署CLA详情 +export function getGroupClaInfoDetail(params: types.paramsObj): Promise { + return request({ + url: `/api/v2/cla/${params.group_id}/detail`, + method: 'get', + params + }, { + customError: true + }); +} +// 组织下的cla列表 +export function getGroupClaList(params: types.paramsObj): Promise { + return request({ + url: `/api/v2/cla/${params.group_id}/list`, + method: 'get', + params + }); +} +// 组织下的cla列表 +export function setGroupClaStatus(params: types.paramsObj): Promise { + return request({ + url: `/api/v2/cla/${params.group_id}/status`, + method: 'put', + params + }); +} +// 组织下的cla列表 +export function deleteGroupCla(params: types.paramsObj): Promise { + return request({ + url: `/api/v2/cla/${params.group_id}/del`, + method: 'delete', + params + }); +} +// 已签署CLA协议的用户列表 +export function getClaUsers(params: types.paramsObj): Promise { + return request({ + url: `/api/v2/cla/${params.group_id}/signUsers`, + method: 'get', + params: params.params + }); +} +// CLA协议历史版本列表 +export function getClaVersion(params: types.paramsObj): Promise { + return request({ + url: `/api/v2/cla/getClaHistory`, + method: 'get', + params + }); +} diff --git a/src/api/cla/types.ts b/src/api/cla/types.ts new file mode 100644 index 0000000..a894efa --- /dev/null +++ b/src/api/cla/types.ts @@ -0,0 +1,19 @@ + +export interface signClaReqType { + claId: string, + version: string, + sourceUrl: string, + userId: string, + userName: string, + realName: string, + email: string, + phone: string, + status: number, + payload: string, + sign: string, + [x:string]: any +} + +export interface paramsObj { + [x:string]: any +} diff --git a/src/api/commit/index.ts b/src/api/commit/index.ts new file mode 100644 index 0000000..2c6d392 --- /dev/null +++ b/src/api/commit/index.ts @@ -0,0 +1,142 @@ +import request from '@/utils/request'; +import * as types from '@/api/commit/types'; +import { reqCatch } from '@/utils/catch'; +// 修改检视意见 +export function editDiscussions(data: types.commonCommitReqType): Promise { + return request({ + url: `/api/v1/projects/${data.repoId}/repository/commits/${data.commitId}/discussions/${data.discussionId}`, + method: 'post', + data + }); +} + +export function editDiscussionsByNoteId(data: types.commonCommitReqType): Promise { + return request({ + url: `/api/v1/projects/${data.repoId}/repository/commits/${data.commitId}/discussions/${data.discussionId}/notes/${data.note_id}`, + method: 'put', + data + }); +} + +export function deleteDiscussionsByNoteId(data: types.commonCommitReqType): Promise { + return request({ + url: `/api/v1/projects/${data.repoId}/repository/commits/${data.commitId}/discussions/${data.discussionId}/notes/${data.note_id}`, + method: 'delete', + data + }); +} + +export function getRepoCommits(params: types.commonCommitReqType): Promise { + return request({ + url: `/api/v1/projects/${params.repoId}/repository/commits`, + method: 'get', + params + }); +} + +export function addRepoCommits(data: types.commonCommitReqType): Promise { + return request({ + url: `/api/v1/projects/${data.repoId}/repository/commits`, + method: 'post', + data + }, { + customError: true + }); +} + +export function getRepoCommitsDetail(params: types.commonCommitReqType): Promise { + return request({ + url: `/api/v1/projects/${params.repoId}/repository/commits/${params.commitId}`, + method: 'get', + params: { + auth_current_project: params.auth_current_project + } + }); +} + +export function addRepoCommitsComments(data: types.commonCommitReqType): Promise { + return request({ + url: `/api/v1/projects/${data.repoId}/repository/commits/${data.commitId}/comments`, + method: 'post', + data + }); +} +export function getRepoCommitsComments(data: types.commonCommitReqType): Promise { + return request({ + url: `/api/v1/projects/${data.repoId}/repository/commits/${data.commitId}/comments`, + method: 'get', + params: data + }); +} + +export function getRepoCommitsDiff(data: types.commonCommitReqType): Promise { + return reqCatch(() => request({ + url: `/api/v1/projects/${data.repoId}/repository/commits/${data.commitId}/diff`, + method: 'get', + params: data + }), data); +} +export function getRepoCommitsFileDiff(repoId, commitId, data: types.commonCommitReqType): Promise { + return reqCatch(() => request({ + url: `/api/v1/projects/${repoId}/repository/commits/${commitId}/file_diff`, + method: 'get', + params: data + }), data); +} +export function getRepoMergeRequests(data: types.commonCommitReqType): Promise { + return reqCatch(() => request({ + url: `/api/v1/projects/${data.repoId}/repository/commits/${data.commitId}/merge_requests`, + method: 'get', + data + }), data); +} +export function getCommitCommentDetail(data: types.commonCommitReqType): Promise { + return reqCatch(() => request({ + url: `/api/v1/projects/${data.repoId}/repository/commits/${data.commitId}/discussions/${data.discussion_id}/notes/${data.note_id}`, + method: 'get', + data + }), data); +} + +// commit revert +export function commitRevert(repoId: string, commitId: string, data: types.commonCommitReqType): Promise { + return request({ + url: `/api/v1/projects/${repoId}/repository/commits/${commitId}/revert`, + method: 'post', + data + }); +} + +// commit cherry-pick +export function commitCherryPick(repoId: string, commitId: string, data: types.commonCommitReqType): Promise { + return request({ + url: `/api/v1/projects/${repoId}/repository/commits/${commitId}/cherry_pick`, + method: 'post', + data + }); +} + +export function getCommitMsgRegexTemplate(params: types.commonCommitReqType): Promise { + return request({ + url: `/api/v2/projects/${params.repoId}/common/commitMsgRegexTemplate`, + method: 'get', + params + }); +} + +// 保存commit设置 +export function updateCommitSetting(data: types.commonCommitReqType, repoId: string): Promise { + return request({ + url: `/api/v2/projects/${repoId}/project_git_hook`, + method: 'put', + data + }); +} + +export function getCommitSetting(repoId: string): Promise { + return request({ + url: `/api/v2/projects/${repoId}/project_git_hook`, + method: 'get' + }); +} + diff --git a/src/api/commit/types.ts b/src/api/commit/types.ts new file mode 100644 index 0000000..082b959 --- /dev/null +++ b/src/api/commit/types.ts @@ -0,0 +1,9 @@ +import { type errorType } from '@/api/types/common'; + +export interface commonCommitReqType { + [propName: string]: any; +} + +export interface commonCommitResType extends errorType { + [propName: string]: any; +} diff --git a/src/api/common/index.ts b/src/api/common/index.ts new file mode 100644 index 0000000..fc85e5f --- /dev/null +++ b/src/api/common/index.ts @@ -0,0 +1,32 @@ +import request from '@/utils/request'; +import * as types from '@/api/common/types'; +import { reqCatch } from '@/utils/catch'; + +export function upload(data: types.commonReqType): Promise { + return request({ + url: `/api/v1/upload`, + method: 'post', + data + }); +} + +// 当前用户-项目权限 +export function getRepoPermission(params: { repo_id: string }) { + const { repo_id } = params; + return reqCatch(() => request({ + url: `/api/v1/projects/${repo_id}/role`, + method: 'get' + }), params); +} + +// 当前用户-组织权限 +export function getOrgPermission(params:{group_id:string}): Promise { + const { group_id } = params; + return reqCatch(() => request({ + url: `/api/v2/groups/${group_id}`, + method: 'get', + params + }, { + customError: true + })); +} diff --git a/src/api/common/types.ts b/src/api/common/types.ts new file mode 100644 index 0000000..aa4c8b2 --- /dev/null +++ b/src/api/common/types.ts @@ -0,0 +1,9 @@ +import { type errorType } from '@/api/types/common'; + +export interface commonReqType { + [propName: string]: any; +} + +export interface commonResType extends errorType { + [propName: string]: any; +} diff --git a/src/api/discussion/hook.ts b/src/api/discussion/hook.ts new file mode 100644 index 0000000..3905706 --- /dev/null +++ b/src/api/discussion/hook.ts @@ -0,0 +1,93 @@ +import { ref } from 'vue'; +import { useAccountStore } from '@/stores/user'; +import { orgInfoStore } from '@/stores/Org/index'; +import { repoInfoStore } from '@/stores/Repo/index'; +import { getSettingsValues } from '@/api/repo'; +import { getOrgDiscussionSettings } from '@/api/org'; +import { useRepoId } from '@/utils/hooks/useRepoId'; +import type { + repoAndOrgSettingDictType +} from '@/api/discussion/types'; + +/** + * 获取用户信息+是否登录 + */ +export function useDiscussGetUserInfo() { + const { isLogin = false, accountInfo: userInfo = {}} = useAccountStore(); + return { isLogin, userInfo }; +} + +/** + * 查询讨论模块是否开启,返回组织/项目id,用于讨论接口请求 + * @param source_type 1 组织,2项目 + * @param orgNamespace 组织 namespace + * 项目使用 useRepoId 获取 namespace + */ +export function useDiscussionOpen(source_type = 1, orgNamespace = '') { + const discussOpen = ref('0'); // 讨论模块是否打开:0关闭,1打开 + const id = ref(''); // 项目/组织id + const project_id = ref(''); // 项目fullpath,不带%2F + + async function getDiscussionStatus() { + if (source_type === 1) { + // 组织讨论模块状态查询 + const { orgInfo } = orgInfoStore(); + const { module_setting } = orgInfo; + + // 有 store 数据,从 store 取 + if (orgNamespace === orgInfo.name && module_setting?.group_id) { + id.value = module_setting.group_id; + discussOpen.value = module_setting.modules.find( + (e: repoAndOrgSettingDictType) => e.key === 'DISCUSSION' + )?.value || '0'; + } else { + // 无 store 数据,接口获取 + const res = await getOrgDiscussionSettings({ orgId: orgNamespace }); + if (!res.error) { + const resData = res?.data; + id.value = resData.group_id; + const discussStatus = resData.modules.find( + (e: repoAndOrgSettingDictType) => e.key === 'DISCUSSION' + ).value; // 组织讨论是否开启, '0'关闭,'1'开启 + if (discussStatus === '1') { + discussOpen.value = '1'; + return; + } + } + } + } else { + const { repoInfo } = repoInfoStore(); + const { module_setting } = repoInfo; + + // 完整路径,供上传使用 + const { repoId: fullRepoPath } = useRepoId('/'); + fullRepoPath && (project_id.value = fullRepoPath.value); + + // 有 store 数据,从 store 取 + if (module_setting?.repo_id) { + id.value = module_setting.repo_id; + discussOpen.value = module_setting.modules.find( + (e: repoAndOrgSettingDictType) => e.key === 'DISCUSSION' + )?.value || '0'; + } else { + // 无 store 数据,接口获取 + const { repoId } = useRepoId(); + const res = await getSettingsValues({ + repoId: repoId.value + }); + if (!res.error) { + const resData = res?.data?.data; + id.value = resData.repo_id; + const discussStatus = resData.modules.find( + (e: repoAndOrgSettingDictType) => e.key === 'DISCUSSION' + ).value; // 项目讨论是否开启, '0'关闭,'1'开启 + if (discussStatus === '1') { + discussOpen.value = '1'; + return; + } + } + } + } + } + return { id, discussOpen, project_id, getDiscussionStatus }; +} diff --git a/src/api/discussion/index.ts b/src/api/discussion/index.ts new file mode 100644 index 0000000..c1d8500 --- /dev/null +++ b/src/api/discussion/index.ts @@ -0,0 +1,477 @@ +import request from '@/utils/request'; +import * as types from '@/api/discussion/types'; +import { reqCatch } from '@/utils/catch'; +import type { categoryType } from '@/api/discussion/types'; + +// ---------------------------- discussion CRUD ----------------------------- // +// 新增讨论 +export function discussSave(data: types.commonDiscussionReqType): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss', + method: 'post', + data + }), data); +} + +// discussion 列表 +export function discussList(data: types.commonDiscussionReqType): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/page', + method: 'post', + data + }), data); +} + +// 删除讨论 +export function discussDelete(data: {id:string}): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss', + method: 'delete', + data + }), data); +} + +// 更新讨论 +export function discussUpdate(data: types.commonDiscussionReqType): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss', + method: 'put', + data + }), data); +} + +// ---------------------------- discussion 详情操作 ----------------------------- // + +// discuss 详情 +export function discussDetail(data: {source_id: string, source_type:number, serial_number:string}): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/detail', + method: 'post', + data + }), data); +} + +// 讨论新建-组织可 @ 成员列表 +// TODO: 暂未提供 +export function discussOrgMembers(data: types.commonDiscussionReqType): Promise { + return reqCatch(() => request({ + url: '/api/org/v1/member/list', + method: 'post', + data + }), data); +} + +// 讨论新建 - 项目可 @ 成员列表 +export function discussRepoMembers(params: { repoId: string, page?: number, per_page?: number }): Promise { + const { repoId, ...param } = params; + return reqCatch(() => request({ + url: `/api/v1/projects/${repoId}/members/all`, + method: 'get', + params: Object.assign({ page: 1, per_page: 10 }, param) + }), params); +} + +// 讨论详情,更改 discuss 关联标签 +export function discussChangeRelatedLabels(data:{discuss_id:string;label:string[]}): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/label', + method: 'post', + data + }), data); +} + +// 查询讨论关联用户列表,需要登录 +export function discussDetailRelatedUsers(params:{source_id:string}) { + const { source_id } = params; + return reqCatch(() => request({ + url: `/api/v1/discuss/relateUser/${source_id}`, + method: 'get' + }), params); +} + +// 查询讨论最近活动用户,不需要登录 +export function discussDetailRecentActiveUsers(params:{source_id:string}) { + const { source_id } = params; + return reqCatch(() => request({ + url: `/api/v1/discuss/recentActivity/${source_id}`, + method: 'get' + }), params); +} + +// discussion 讨论-总列表置顶/取消置顶 +export function discussPin(data:{id: string;is_pin: 0|1}): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/changePin', + method: 'post', + data + }), data); +} + +// discussion 分类置顶/取消置顶 +export function disussTypePin(data:{id: string;is_pin: 0|1}): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/changeCatePin', + method: 'post', + data + }), data); +} + +// 关闭/重新打开 讨论 +export function discussClose(data:{id: string;state: number}): Promise { + // 讨论的状态:0:打开;1:正常关闭;2:过期关闭;3:重复关闭 + return reqCatch(() => request({ + url: '/api/v1/discuss/changeState', + method: 'post', + data + }), data); +} + +// 讨论锁定/解锁 +export function disussionLock(data:{id: string;is_lock: 0|1}): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/changeLock', + method: 'post', + data + }), data); +} + +// 更换已创建讨论的分类 - 侧边栏操作 +export function discussChangeType(data:{id: string;category_id: string}): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/changeCate', + method: 'post', + data + }), data); +} + +// 讨论-投票 +export function discussVote(data:{discuss_id:string;option_id:string}): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/vote', + method: 'post', + data + }), data); +} + +// 讨论 - 点赞 +// targetType - 点赞的主体类型:1:讨论;2:评论;3:评论回复 +export function discussLike(data:{target_id:string; target_type:number}): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/like', + method: 'post', + data + }), data); +} + +// 讨论 - 取消点赞 +// targetType - 点赞的主体类型:1:讨论;2:评论;3:评论回复 +export function discussUnLike(data:{target_id:string; target_type:number}): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/unlike', + method: 'post', + data + }), data); +} + +// ---------------------------- discussion 评论操作 ----------------------------- // +// 评论列表 +export function commentList(data:{discuss_id: string}): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/comment/page', + method: 'post', + data + }), data); +} + +// 新增评论 +export function commentSave(data:types.commonDiscussionReqType): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/comment', + method: 'post', + data + }), data); +} + +// 编辑评论 +export function commentUpdate(data:types.commonDiscussionReqType): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/comment', + method: 'put', + data + }), data); +} + +// 删除评论 +export function commentDelete(data:{id:string}): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/comment', + method: 'delete', + data + }), data); +} + +// 标记评论或者回复为答案 +export function commentRemark(data:{id: string}): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/comment/remark', + method: 'post', + data + }), data); +} + +// 取消标记评论或者回复为答案 +export function commentUnremark(data:{id: string}): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/comment/unremark', + method: 'post', + data + }), data); +} + +// ---------------------------- discussion 评论-回复 操作 ----------------------------- // + +// 查询评论的回复列表 +export function replyList(data:{parent_id: string, page:number; size:number }): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/comment/reply/page', + method: 'post', + data + }), data); +} + +// 新增回复 +export function replySave(data:types.commonDiscussionReqType): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/comment/reply', + method: 'post', + data + }), data); +} + +// 编辑回复 +export function replyUpdate(data:types.commonDiscussionReqType): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/comment/reply', + method: 'put', + data + }), data); +} + +// 删除回复 +export function replyDelete(data:{id:string}): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/comment/reply', + method: 'delete', + data + }), data); +} + +// ---------------------------- 分类type CRUD ----------------------------- // + +// 获取讨论分类的基础类型(字典) +export function categoryBasicType(params:types.commonDiscussionReqType) { + return reqCatch(() => request({ + url: `/api/v1/discuss/category/type`, + method: 'get' + }), params); +} + +// 获取某个项目或仓库下的所有讨论分类 +export function getAllTypes(params: {id: string;source_type:number}) { + const { id, source_type } = params; + return reqCatch(() => request({ + url: `/api/v1/discuss/category/list/${id}/${source_type}`, + method: 'get' + }), params); +} + +// 获取某个项目或者仓库下的所有讨论分类和分组 +// 用于「管理内容分类」页 +export function getAllSectionAndTypes(params: {source_id: string, source_type:number}) { + const { source_id, source_type } = params; + return reqCatch(() => request({ + url: `/api/v1/discuss/category/all/${source_id}/${source_type}`, + method: 'get' + }), params); +} + +// 新增讨论分类 type +export function typeSave(data:types.commonDiscussionReqType): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/category', + method: 'post', + data + }), data); +} + +// 讨论分类 type 详情 +export function typeDetail(params: {id: string|undefined}):Promise { + const { id } = params; + return reqCatch(() => request({ + url: `/api/v1/discuss/category/detail/${id}`, + method: 'get' + }), params); +} + +// 更新 type +export function typeUpdate(data:types.commonDiscussionReqType): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/category', + method: 'put', + data + }), data); +} + +// 删除讨论分类 type +export function typeDelete(data:{id: string, transfer_id?:string}): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/category', + method: 'delete', + data + }), data); +} + +// ---------------------------- section CRUD ----------------------------- // +// 新增 section +export function sectionSave(data:types.commonDiscussionReqType): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/section', + method: 'post', + data + }), data); +} + +// section 详情 +export function sectionDetail(params: {id: string|undefined}) { + const { id } = params; + return reqCatch(() => request({ + url: `/api/v1/discuss/section/detail/${id}`, + method: 'get' + }), params); +} + +// 更新 section +export function sectionUpdate(data:types.commonDiscussionReqType): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/section', + method: 'put', + data + }), data); +} + +// 删除 section +export function sectionDelete(data:{id: string}): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/section', + method: 'delete', + data + }), data); +} + +// 根据分组 id 获取下面所有内容分类 +export function sectionOwnCategory(params: {section_id: string}) { + const { section_id } = params; + return reqCatch(() => request({ + url: `/api/v1/discuss/category/section/${section_id}`, + method: 'get' + }), params); +} + +// 查询仓库/组织下的讨论分组 +export function getAllSections(params: {source_id: string; source_type:number}) { + const { source_id, source_type } = params; + return reqCatch(() => request({ + url: `/api/v1/discuss/section/list/${source_id}/${source_type}`, + method: 'get' + }), params); +} + +// ----------------------------------- else --------------------------// + +// 组织标签列表 +// TODO: 组织还没有标签 +export function orgLabelList(params: {group_id:string}): Promise { + const { group_id } = params; + return reqCatch(() => request({ + url: `/api/v4/groups/${group_id}/labels`, + method: 'get', + params: { page: 1, per_page: 20 } + }), params); +} + +// 仓库标签列表 +export function repoLabelList(params: {project_id:string}): Promise { + const { project_id } = params; + return reqCatch(() => request({ + url: `/api/v1/projects/${project_id}/labels`, + method: 'get', + params: { page: 1, per_page: 20 } + }), params); +} + +// 当前用户-项目权限 +export function getRepoPermission(params: { repo_id: string }) { + const { repo_id } = params; + return reqCatch(() => request({ + url: `/api/v1/projects/${repo_id}/role`, + method: 'get' + }), params); +} + +// 当前用户-组织权限 +export function getOrgPermission(params:{group_id:string}): Promise { + const { group_id } = params; + return reqCatch(() => request({ + url: `/api/v2/groups/${group_id}`, + method: 'get', + params + }, { + customError: true + })); +} + +// 获取社区热心榜单 +export function getAnswerRank(params: {source_id: string, source_type:number}): Promise { + const { source_id, source_type } = params; + return reqCatch(() => request({ + url: `/api/v1/discuss/answerSort/${source_id}/${source_type}`, + method: 'get' + }), params); +} + +// ------------------------------ Dashboard 我的讨论,我参与的讨论 ---------------------------------------------------// +// 我创建的讨论列表 +export function myCreatedDiscuss(data:types.commonDiscussionReqType): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/my/page', + method: 'post', + data + }), data); +} + +// 我参与的讨论列表 +export function myJoineddDiscuss(data:types.commonDiscussionReqType): Promise { + return reqCatch(() => request({ + url: '/api/v1/discuss/join/page', + method: 'post', + data + }), data); +} + +// 获取评论原始数据 +export function getDiscussionOriginalData(id: string) { + return reqCatch(() => request({ + url: `/api/v1/discuss/comment/origin_detail/${id}`, + method: 'get', + params: {} + })); +} + +// 获取评论详情, 子评论的话, 同时获取父级评论信息 +export function getDiscussionDetail(id: string) { + return reqCatch(() => request({ + url: `/api/v1/discuss/comment/detail/${id}`, + method: 'get', + params: {} + })); +} diff --git a/src/api/discussion/types.ts b/src/api/discussion/types.ts new file mode 100644 index 0000000..c1b7548 --- /dev/null +++ b/src/api/discussion/types.ts @@ -0,0 +1,208 @@ +import { type errorType } from '@/api/types/common'; + +export interface commonDiscussionReqType { + [propName: string]: any; +} + +export interface commonDiscussionResType extends errorType { + [propName: string]: any; +} + +export interface commonDictType { + label: string; + value: string; + desc?: string; // 描述 + color?: string; + hover_color?: string; + children?: any[]; +} + +export interface commonPaginationType { + page: number; + size: number; +} + +export interface discussionListItemType { + id: string; // 讨论id + title: string; + section_id?: string; + category_id?: string; + category_type?: number; // 讨论类型,4种,1-开放讨论,2-问答,3-公告,4-投票 + category_icon?:string; + category_name?: string; + comment_total?: number; // 评论总数 + reply_total?: number; // 回复总数 + like_total?: number | null; + is_like?: boolean; // 是否已点赞: true 已点赞,false 未点赞 + is_lock?: number; // 是否锁定:0:否;1:是; + is_pin?: number; // 是否置顶:0:否;1:是; + pin_date?: string; + is_category_pin?: number; // 是否分类置顶 + pin_category_date?: string; + is_closed?: number; // 是否关闭 + closed_date?: string; + is_answered?: number; // 回答是否采纳,0:否;1:是; + label?: string[]; // labels + serial_number?: number; // 顺序号 + created_by?: string; // 创建者id + created_by_user_name?: string; + created_by_user_photo?: string; + created_date?: string; + last_modified_date?: string; + category:categoryType; // 分类信息 + source_type?:number; // 组织1,项目2 + source_id?:string; +} + +export interface RadioOption { + value: T; + label: string; +} + +export interface repoAndOrgSettingDictType { + key:string; + type:string; + value:string; +}; + +// 讨论分类 || 讨论分组 itemType +export interface discussionTypeOrSection { + id: string; + icon: string; + title: string; + desc?: string; + answerAcceptEnable?: boolean; + isGroup: boolean; + categoryType?:number; +} + +export interface categoryType { + id: string; // categoryId + category_name: string; + category_desc?: string; + category_type: number; // 讨论类型,4种,1-开放讨论,2-问答,3-公告,4-投票,不过现在有个专门的接口来查 + section_id?: string; // 所属分组 + category_icon: string; // icon +} + +export interface sectionType { + id:string; + section_name:string; + section_icon:string; +} + +export interface sectionOwnCategoryType extends sectionType { + category_list: categoryType[]; +} + +export interface sectionItemType { + unSection?: categoryType[]; + section: sectionOwnCategoryType[]; +} + +export interface discussDetailType { + id:string; + category_id:string; + category?:categoryType; + created_by?:string; + created_date?:string; + created_by_user_name?:string; + created_by_user_photo?:string; + serial_number:number; + title:string; + content:string; + md_content:string; + is_lock:number; // 是否锁定:1:是;0:否 + is_pin:number; + pin_date?:string; + is_category_pin:number; + pin_category_date?:string; + is_closed:number; // 是否关闭:1:是;0:否 + closed_date?:string; + is_answered:number; + comment_total:number; + reply_total?:number; + like_total?:number; + is_like?:boolean; + question?:questionInfoType; + options?:quesitonOptionType[]; + is_vote?:boolean; // 是否投过票 + option_id?:string; // 投过票的id + label?:string[]; // 关联的 labels + is_edit?:boolean; // 投票类型的讨论 - 更新时是否变更了投票内容(标题 + 选项) +} + +export interface commentType { + id:string; + content?:string; + md_content:string; + discuss_id?:string; + parent_id?:string; + serial_number?:number; + source_id?:string; + source_type?:number; + last_modified_date?:string; + last_modified_by?:string; + created_by?:string; + created_date?:string; + created_by_user_name?:string; + created_by_user_photo?:string; + ip?:string; + is_hide?:number; // 是否隐藏评论 + reply_total?:number; + like_total?:number; + is_like?:boolean; // true:已点赞;false:未点赞 + is_deleted?:number; + is_remark?: number; // 是否采纳为答案:1:是;0:否 + replyCover?: any; +} + +export interface questionInfoType { + created_by:string; + created_date:string; + id:string; + last_modified_by?:string; + last_modified_date?:string; + question:string; // 投票的标题 + vote_total:number; // 投票参与总人数 +} + +// 投票选项信息 +export interface quesitonOptionType { + created_by:string; + created_date:string; + id:string; // 投票选项id + last_modified_by?:string; + last_modified_date?:string; + option_order:number; // 投票选项顺序 + vote_id:string; + vote_option:string; + vote_total:number; + vote_total_percent:number; // 选项投票百分比 +} + +export interface ISidebar { + id?:string; // discuss id,详情页才显示参与者和操作按钮组 + labelDicts?:commonDictType[]; // 标签字典 + checkedLabelIds?:string[]; // 已关联 label ids + checkedLabels?:commonDictType[]; // 要渲染的已选label list + setLabels?:Function; // emit 关联标签 + categoryDicts?:commonDictType[]; + checkedCategoryId?:string; + checkedCategory?:commonDictType; + changeCategory?:Function; + participators?:any[]; +} + +export interface userInfoType { + domain_id?: string + email?: string + id?: string + mobile?: string + nickname?: string + username?: string + access_token?: string + refresh_token?: string + xauth_token?: string + [x: string]: any +} diff --git a/src/api/home/index.ts b/src/api/home/index.ts new file mode 100644 index 0000000..a612ac3 --- /dev/null +++ b/src/api/home/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import * as types from '@/api/home/types'; +import { reqCatchV2, type catchRt } from '@/utils/catch'; + +// 获取banner +export function getBanner(): Promise { + return request({ + url: `/api/v1/home_page/banner`, + method: 'get' + }); +} +// 获取活跃社区 +export function getCommunity(): Promise { + return request({ + url: `/api/v1/home_page/active_community`, + method: 'get' + }); +} +// 获取精选项目 +export function getSelectedRepo(): Promise { + return request({ + url: `/api/v1/home_page/selected_projects`, + method: 'get' + }); +} +// 获取运营广告 +export function getAdvertisement(): Promise { + return request({ + url: `/api/v1/home_page/advertisement`, + method: 'get' + }); +} +// 获取推荐项目列表 +export function getRecommendedRepos(): Promise { + return request({ + url: `/api/v1/home_page/recommended_projects`, + method: 'get' + }); +} +// 获取活跃组织列表 +export function getActiveOrganization(): Promise { + return request({ + url: `/api/v1/home_page/active_organization`, + method: 'get' + }); +} +// 活跃社区项目列表 +export function getCommunityActiveRepos(): Promise { + return request({ + url: `/api/v1/home_page/community_active_repos`, + method: 'get' + }); +} +// 活跃社区项目列表 +export function getDynamicRemarks(): Promise { + return request({ + url: `/api/v1/home_page/dynamic_remarks`, + method: 'get' + }); +} + +// 首页搜索 +export function homeSearchProject(params: {search:string}): Promise { + return request({ + url: `/api/v1/home_page/projects/search`, + method: 'get', + params + }); +} +// 首页全球精选开源组织 +export function globalFeaturedGroups(): Promise { + return request({ + url: `/api/v1/home_page/groups/global/featured`, + method: 'get' + }); +} +// 全球精选开源项目 +export function globalFeaturedProjects(params:{ + group_id:string + page:number + per_page:number +}): Promise { + return request({ + url: `/api/v1/home_page/projects/global/featured`, + method: 'get', + params + }); +} + +// 获取搜索历史记录 +export function getSearchHistory(params: object): catchRt { + return reqCatchV2(() => request({ + url: `/api/v1/search/searchHistory`, + method: 'get', + params + })); +} + +// 删除搜索历史记录 +export function delSearchHistory({ thread_id }:{thread_id:string}): catchRt { + return reqCatchV2(() => request({ + url: `/api/v1/search/searchHistory/${thread_id}`, + method: 'delete' + })); +} diff --git a/src/api/home/types.ts b/src/api/home/types.ts new file mode 100644 index 0000000..4f0eacd --- /dev/null +++ b/src/api/home/types.ts @@ -0,0 +1,30 @@ +import { type errorType } from '@/api/types/common'; + +export interface commonHomeReqType extends errorType { + [propName: string]: any; +} + +export interface commonHomeResType extends errorType { + [propName: string]: any; +} + +// 搜索项目信息 +export interface projectSearchInfo { + id: number; + description: string; + name: string; + namespace: string; + name_with_namespace: string; + path: string; + path_with_namespace: string; + web_url: string; + star_count: number; + forks_count: number; + starred: true; + created_at: string; + last_activity_at: string; + main_repository_language: string[]; + star_count_seven: number; + license?: string; + topic?: {topic_id:string, name:string}[] +} diff --git a/src/api/issue/index.ts b/src/api/issue/index.ts new file mode 100644 index 0000000..1bfbb8b --- /dev/null +++ b/src/api/issue/index.ts @@ -0,0 +1,218 @@ +import request from '@/utils/request'; +import * as types from '@/api/issue/types'; +import { reqCatch, reqCatchV2, type catchRt } from '@/utils/catch'; + +export function createIssue(data: types.createIssueReqType): Promise { + return request({ + url: `/api/v1/issue/${data.project_id}/issues`, + method: 'post', + data + }); +} +export function deleteIssue(params: types.createIssueReqType): Promise { + return request({ + url: `/api/v1/issue/${params.project_id}/issues/${params.issue_iid}`, + method: 'delete' + }); +} + +export function updateIssue(data: types.updateIssueReqType): Promise { + const { project_id, issue_iid } = data; + delete data.project_id; + delete data.issue_iid; + return request({ + url: `/api/v1/issue/${project_id}/issues/${issue_iid}`, + method: 'put', + data + }); +} + +// 关闭或打开issue +export function updateIssueStat(data: types.updateIssueStatReqType): Promise { + const { project_id, issue_iid } = data; + delete data.project_id; + delete data.issue_iid; + return request({ + url: `/api/v1/issue/${project_id}/issues/${issue_iid}/close`, + method: 'put', + data + }); +} + +export function fetchIssue(params: types.fetchIssueReqType): Promise { + return request({ + url: `/api/v1/issue/${params.project_id}/issues/${params.issue_iid}`, + method: 'get' + }); +} + +// 项目issue列表 +export function fetchIssueList(params: types.fetchIssueListReqType): Promise { + return request({ + url: `/api/v1/issue/${params.project_id}/issues`, + method: 'get', + params + }); +} + +export function createIssueDiscussions(data: types.createIssueDiscussionsReqType): Promise { + return request({ + url: `/api/v1/issue/${data.project_id}/issues/${data.issue_iid}/discussions`, + method: 'post', + data + }); +} + +export function updateIssueDiscussions(data: types.updateIssueDiscussionsReqType): Promise { + return request({ + url: `/api/v1/projects/${data.project_id}/issues/${data.issue_iid}/notes/${data.note_id}`, + method: 'put', + data + }); +} + +export function deleteIssueDiscussions(params: types.deleteIssueDiscussionsReqType): Promise { + return request({ + url: `/api/v1/projects/${params.project_id}/issues/${params.issue_iid}/notes/${params.note_id}`, + method: 'delete', + params + }); +} + +export function fetchIssueDiscussions(params: types.fetchIssueDiscussionsResType): Promise { + return request({ + url: `/api/v1/issue/${params.project_id}/issues/${params.issue_iid}/discussions`, + method: 'get', + params + }); +} +// 获取issue单条评论 +export function fetchIssueNote(params: types.fetchIssueDiscussionsResType): Promise { + return request({ + url: `/api/v1/projects/${params.project_id}/issues/${params.issue_iid}/notes/${params.note_id}`, + method: 'get' + }); +} + +// 回复issue评论 +export function freplyIssueDiscussions(data: types.createIssueReqType): Promise { + return request({ + url: `/api/v1/issue/api/v4/projects/${data.project_id}/issues/${data.issue_iid}/discussions/${data.discussion_id}/notes`, + method: 'post', + data + }); +} + +// issue参与者 +export function issueParticipants(data: types.issueParticipantsResType): Promise { + return request({ + url: `/api/v1/issue/${data.project_id}/issues/${data.issue_iid}/participants`, + method: 'get' + }); +} + +// issue 精选 +export function pinIssue(params: types.pinIssueReqType): Promise { + return request({ + url: `/api/v1/featured/${params.type}`, + method: 'post', + params + }); +} + +export function deletePinIssue(params: types.deletePinIssueReqType): Promise { + return request({ + url: `/api/v1/featured/${params.type}`, + method: 'delete', + params + }); +} + +// 精选排序 +export function sortPinIssue(data): Promise { + const { type, group_id, body } = data; + return request({ + url: `/api/v1/featured/${type}/resort?group_id=${group_id}`, + method: 'put', + data: body + }); +} + +export function pinIssueList(params: types.pinIssueListReqType): Promise { + return request({ + url: `/api/v1/featured/projects/${params.project_id}/issues`, + method: 'get' + }); +} + +// 我的issue列表 +export function myIssueList(params: types.fetchIssueListReqType): Promise { + return request({ + url: `/api/v1/issues`, + method: 'get', + params + }); +} + +// 我的issue列表数量 +export function myIssueListState(params: types.myIssueListStateReptype): Promise { + return request({ + url: `/api/v1/issues/statistics`, + method: 'get', + params + }); +} +// 组织的issue列表 +export function groupIssueList(params: types.fetchIssueListResType): Promise { + const { group_id } = params; + delete params.group_id; + return request({ + url: `/api/v1/groups/${group_id}/issues`, + method: 'get', + params + }); +} +// 获取issue关联的PR列表 +export function getIssuePRList(params: types.fetchIssueListResType): Promise { + const { project_id, issue_iid } = params; + delete params.project_id; + delete params.issue_iid; + return request({ + url: `/api/v1/issue/${project_id}/issues/${issue_iid}/linked_merge_requests`, + method: 'get', + params + }); +} +// issue关联PR +export function issueRelatePR(data: types.updateIssueReqType): Promise { + return reqCatch( + () => request({ + url: `/api/v1/issue/${data.project_id}/issues/${data.issue_id}/merge_request/${data.merge_request_id}/linked_merge_requests`, + method: 'post' + }) + , + data + ); +} +// issue取消关联PR +export function issueDeletePR(params: types.updateIssueReqType): Promise { + return reqCatch( + () => request({ + url: `/api/v1/issue/${params.project_id}/issues/${params.issue_id}/linked_merge_requests/${params.merge_request_id}`, + method: 'delete' + }) + , + params + ); +} + +// 获取issue模版列表 +export function fetchIssueTemplateList(project_id: string): Promise> { + return request({ + url: `/api/v2/projects/${project_id}/repository/template/issue`, + method: 'get', + params: {} + }).catch((e) => { + return { data: [], error_code: e }; + }); +} diff --git a/src/api/issue/types.ts b/src/api/issue/types.ts new file mode 100644 index 0000000..6bb2e83 --- /dev/null +++ b/src/api/issue/types.ts @@ -0,0 +1,322 @@ +export interface createIssueReqType { + project_id?: string; + issue_iid?: number; + title?: string; + description?: string; + updated_at?: string; + state_event?: 'reopen' | 'close'; + assignee_id?: number; + assignee_ids?: string[]; + milestone_id?: number; + labels?: ILabel[] | string[]; + due_date?: string; + confidential?: boolean; + discussion_locked?: true; + created_at?: string; + issue_category?: string; + issue_stage?: string; + issue_severity?: string; + pbi_id?: number; + proposer_id?: string[]; + [propName: string]: any; +} + +export interface createIssueResType extends IIssue { + [propName: string]: any; +} +export interface deleteIssueReqType { + project_id: string; + issue_iid: number; + [propName: string]: any; +} + +export interface deleteIssueResType { + [propName: string]: any; +} + +export interface createIssueDiscussionsResType extends IIssue { + [propName: string]: any; +} + +export interface createIssueDiscussionsReqType { + project_id: string; + issue_iid: number; + [propName: string]: any; +} + +export interface fetchIssueResType { + project_id: string; + issue_iid: number; + [propName: string]: any; +} + +export interface fetchIssueReqType extends IIssue { + [propName: string]: any; +} + +export interface fetchIssueListReqType { + project_id: string; + state?: string; + sort?: string; + scope?: string; + search?: string; + page?: number; + per_page?: number; + [propName: string]: any; +} + +export interface fetchIssueListResType extends IIssue { + [propName: string]: any; +} + +export interface myIssueListStateReptype { + state: string; + [propName: string]: any; +} + +export interface myIssueListStateRestype extends IIssue { + [propName: string]: any; +} + +export interface issueParticipantsResType { + project_id: string; + issue_iid: number; + [propName: string]: any; +} + +export interface issueParticipantsReqType extends IAuthor { + [propName: string]: any; +} + +export interface fetchIssueDiscussionsResType { + project_id: string; + issue_iid: number; + type: 'user'; + [propName: string]: any; +} + +export interface fetchIssueDiscussionsReqType extends Idiscussions { + [propName: string]: any; +} + +export interface updateIssueReqType extends createIssueReqType { + [propName: string]: any; +} + +export interface updateIssueResType extends IIssue { + [propName: string]: any; +} + +export interface updateIssueStatReqType extends createIssueReqType { + discussions?: string; + [propName: string]: any; +} + +export interface updateIssueStatResType extends IIssue { + [propName: string]: any; +} + +export interface updateIssueDiscussionsReqType { + project_id: string; + issue_iid: number; + note_id: string; + [propName: string]: any; +} + +export interface updateIssueDiscussionsResType { + [propName: string]: any; +} +export interface deleteIssueDiscussionsReqType { + project_id: string; + issue_iid: number; + note_id: string; + [propName: string]: any; +} + +export interface deleteIssueDiscussionsResType { + [propName: string]: any; +} +export interface pinIssueReqType { + type: 'project_issue'; + resource_id: number | string; + [propName: string]: any; +} + +export interface pinIssueResType { + [propName: string]: any; +} +export interface deletePinIssueReqType { + type: 'project_issue'; + group_id: string; + resource_id: string; + [propName: string]: any; +} + +export interface deletePinIssueResType { + [propName: string]: any; +} +export interface sortPinIssueReqType { + type: 'project_issue'; + group_id: string; + body: string; + [propName: string]: any; +} + +export interface sortPinIssueResType { + [propName: string]: any; +} +export interface pinIssueListReqType { + project_id: string; + [propName: string]: any; +} + +export interface pinIssueListResType { + object_id: string, + type: string, + resource_id: string, + nextResource_id: string + [propName: string]: any; +} + +// 用户 +export interface IAuthor { + id: number; + name: string; + username: string; + state: 'active' | string; + avatar_url: string; + avatar_path?: string; + email?: string; + name_cn: string; + web_url: string; + nick_name?: string; + tenant_name?: string; + avatar?: string; + nickname?: string; + is_member?: string; +} + +// 项目 +export interface IProject { + id: number; + description?: string; + name: string; + name_with_namespace: string; + path: string; + path_with_namespace: string; + develop_mode?: 'normal' | string; + created_at: string; + updated_at?: string; + archived: false; + is_kia: false; + ssh_url_to_repo: string; + http_url_to_repo: string; + web_url: string; + readme_url?: string; + product_id?: string; + product_name?: string; +} + +// issue +export interface IIssue { + id?: number; + iid?: number; + project_id?: number; + title?: string; + description?: string; + editIng?: boolean; + saveIng?: boolean; + editText?: string; + state?: 'opened' | 'closed' | 'all'; + created_at?: string; + updated_at?: string; + closed_at?: string; + closed_by?: string; + labels?: ILabel[]; + milestone?: string; + assignees?: []; + author?: IAuthor; + assignee?: string; + user_notes_count?: number; + merge_requests_count?: number; + confidential?: boolean; + discussion_locked?: boolean; + web_url?: string; + time_stats?: { + time_estimate?: string + total_time_spent?: string + human_time_estimate?: string + human_total_time_spent?: string + }; + project_path_with_namespace?: string; + project?: IProject; + root_project_id?: string; + subscribed?: boolean; + related_merge_request?: string; + linked_merge_requests?: []; + related_note_params?: null; + [propName: string]: any; +} + +// 评论 +export interface INote { + id: number | string; + type: 'DiscussionNote' | string; + body: string; + attachment?: null; + author: IAuthor; + created_at: string; + updated_at: string; + system?: boolean; + noteable_id: number; + noteable_type: 'Issue' | string; + commit_id?: string; + resolvable?: boolean; + is_reply?: boolean; + resolved_by?: null; + noteable_iid: number; + discussion_id: string; + project: string; + diff_file?: null; + diff: string; + archived: boolean; + review_categories?: null; + review_categories_cn: string; + review_categories_en: string; + review_modules?: null; + severity: 'suggestion'; + severity_cn: '建议' | string; + severity_en: 'Suggestion' | string; + file_path?: string; + line?: string; + assignee?: string; + proposer: IAuthor; +} + +// 评论 +export interface Idiscussions extends INote { + id: string | number, + individual_note?: boolean, + notes: INote[], + project_id: number, + project_full_path: string, + deleted_file?: null, + new_file?: null, + added_lines?: null, + removed_lines?: null, + issue?: null, + merge_request_version_params?: null, + amode?: null, + bmode?: null +} + +// 标签 +export interface ILabel { + color: string; + description: string; + expires_at?: string + id: number + is_expired: boolean; + name: string; + text_color: string; +} diff --git a/src/api/labels/index.ts b/src/api/labels/index.ts new file mode 100644 index 0000000..ddf524d --- /dev/null +++ b/src/api/labels/index.ts @@ -0,0 +1,47 @@ +import request from '@/utils/request'; +import { reqCatch } from '@/utils/catch'; + +import type { ProjectLabelsReqType, LabelsReqType } from './types'; + +const defaultPages = { + page: 1, + per_page: 10 +}; + +/** 获取项目labels */ +export function getProLabels(params: ProjectLabelsReqType): Promise { + const { project_id, ...conf } = params; + return reqCatch(() => request({ + url: `/api/v1/projects/${project_id}/labels`, + params: Object.assign({ ...defaultPages }, conf) + }), params); +} + +/** 新增项目label */ +export function createProjectLabels(data: LabelsReqType) { + const { project_id, ...conf } = data; + return reqCatch(() => request({ + url: `/api/v1/projects/${project_id}/labels`, + data: Object.assign({ ...conf }), + method: 'post' + }), data); +} + +/** 编辑项目标签 */ +export function editProjectLabels(data: LabelsReqType & { new_name: string }) { + const { project_id, ...conf } = data; + return reqCatch(() => request({ + url: `/api/v1/projects/${project_id}/labels`, + data: conf, + method: 'put' + }), data); +} + +/** 删除标签 */ +export function deleteProjectLabels(data: { project_id: string, name: string }) { + const { project_id, name } = data; + return reqCatch(() => request({ + url: `/api/v1/projects/${project_id}/labels?name=${name}`, + method: 'delete' + })); +} diff --git a/src/api/labels/types.ts b/src/api/labels/types.ts new file mode 100644 index 0000000..6e53565 --- /dev/null +++ b/src/api/labels/types.ts @@ -0,0 +1,19 @@ +export interface ProjectLabelsReqType { + project_id: string; + search?: string + sort?: 'asc' | 'desc' + include_expired?: boolean + most_active_ones?: boolean + view?: 'simple' | 'basic' | 'detail' + page?: number + per_page?: number +} + +export interface LabelsReqType { + project_id: string; + name: string + color: string + description: string + priority?: number // 优先级 + expires_at?: string // 过期时间 +} diff --git a/src/api/merge/index.ts b/src/api/merge/index.ts new file mode 100644 index 0000000..c26fe16 --- /dev/null +++ b/src/api/merge/index.ts @@ -0,0 +1,185 @@ +import request from '@/utils/request'; +import * as types from '@/api/merge/types'; + +const removeParamsPathId = (data: types.commonMergeReqType): types.commonMergeReqType => { + delete data.project_id; + delete data.merge_request_iid; + delete data.discussion_id; + delete data.note_id; + delete data.group_id; + delete data.note_id; + return data; +}; + +const urlPre = '/api/v1/projects/'; +const httpGet = (url: string, params: types.commonMergeReqType): Promise => request({ + url: urlPre + url, + method: 'get', + params +}); +const httpPost = (url: string, data: types.commonMergeReqType): Promise => request({ + url: urlPre + url, + method: 'post', + data +}, { customError: true }); +const httpPut = (url: string, data: types.commonMergeReqType): Promise => request({ + url: urlPre + url, + method: 'put', + data +}, { customError: true }); +const httpDel = (url: string, data: types.commonMergeReqType): Promise => request({ + url: urlPre + url, + method: 'delete', + data +}, { customError: true }); + +// 创建合并请求 +export const createMerge = data => httpPost(`${data.repoId}/merge_requests`, data); +// 修改合并请求 +export const putMerge = data => httpPut(`${data.repoId}/isource/merge_requests/${data.iid}`, data); +// 修改审核人 +export const putApprovers = data => httpPut(`${data.repoId}/merge_requests/${data.iid}/approval_approvers`, data); +// 修改检视人 +export const putReviewers = data => httpPut(`${data.repoId}/merge_requests/${data.iid}/approval_reviewers`, data); +// 详情已分配合并人列表 +export const assignees = data => httpGet(`${data.repoId}/merge_requests/${data.iid}/assignees`, data); +// 详情分配合并人(筛选项) +export const assigneeCandidates = data => httpGet(`${data.repoId}/merge_requests/assignee_candidates`, data); +// 详情获取已分配检视人 +export const approvalReviewers = data => httpGet(`${data.repoId}/merge_requests/${data.iid}/approval_reviewers`, data); +export const updateApprovalReviewers = data => httpPut(`${data.repoId}/merge_requests/${data.iid}/approval_reviewers`, data); +// 详情获取已分配检视人(筛选项) +export const approvalReviewersOption = params => httpGet(`${params.repoId}/merge_requests/approval_reviewers`, params); +// 详情获取已关联issue +export const fetchPRIssueList = params => httpGet(`${params.project_id}/merge_requests/${params.merge_request_iid}/e2e_issues`, params); +export const updateIssueList = params => httpPut(`${params.project_id}/isource/merge_requests/${params.merge_request_iid}`, params); +// 列表页 获取审视人(不关联mr) +export const fetchApprovalReviewers = params => httpGet(`${params.repoId}/merge_requests/reviewers`, params); +// 列表页 获取审视人(不关联mr) + +// 获取pr模版 +export const fetchPrTemplate = (params:{ project_id: string }) => request({ + url: `/api/v2/projects/${params.project_id}/repository/template/pr`, + method: 'get' +}); + +// 获取pr 门禁默认设置人员 +export const fetchPrSetDefaultPerson = (params: types.commonMergeReqType) => httpGet(`${params.repoId}/create_merge_requests/person_liable`, params); +// 创建时搜索门禁人员列表 +export const searchPrSetPerson = (params: types.commonMergeReqType) => httpGet(`${params.repoId}/merge_requests_create/search_person_liable`, params); + +// 获取已经设置门禁人员列表 汇总 评审人,审查人,测试人 +export const fetchPrExaminePerson = (params: types.commonMergeReqType) => httpGet(`${params.repoId}/merge_requests/${params.iid}/person_liable`, params); +// 搜索 门禁设置人员 +export const searchPrExaminePerson = (params: types.commonMergeReqType | { merge_request_iid:string; source_branch: string; target_branch: string; + search_type: string; target_project_id: string; project_id:string, approval_type: string; search: string; page: number; per_page: number; +}) => httpGet(`${params.repoId}/merge_requests/${params.iid}/search_person_liable`, params); + +// 获取门禁配置 汇总版 评审人,审查人,测试人 +export const fetchPrExaminerules = (params: types.commonMergeReqType) => httpGet(`${params.repoId}/merge_requests/${params.iid}/person_liable_rules`, params); +// 指定配置各个门禁人员配置 +export const editPrExaminePerson = (data: types.commonMergeReqType) => request({ + url: `/api/v1/projects/${data.repoId}/merge_requests/${data.iid}/person_liable`, + method: 'put', + data +}); + +// 审查门禁 +export const examineApproval = (data:types.commonMergeReqType & {action_type:'approve'|'reset'}) => request({ + url: `/api/v1/projects/${data.repoId}/merge_requests/${data.iid}/approval`, + method: 'put', + data +}); + +// 测试门禁 +export const examineTester = (data:types.commonMergeReqType & {action_type:'pass'|'reset'}) => request({ + url: `/api/v1/projects/${data.repoId}/merge_requests/${data.iid}/approval_test`, + method: 'put', + data +}); + +// 合并 +export const merge = data => httpPut(`${data.repoId}/merge_requests/${data.iid}/merge`, data); +// 关闭 +export const closeMerge = data => httpPut(`${data.repoId}/isource/merge_requests/${data.iid}`, data); +// 仓库MR创建者列表 +export const users = data => httpGet(`${data.repoId}/merge_requests/users`, data); +// 项目MR列表 +export const getMergeRequests = data => httpGet(`${data.repoId}/isource/merge_requests`, data); +export const getMergeListCount = data => httpGet(`${data.repoId}/isource/merge_requests/count`, data); +// 我的MR 列表 +export const getMyMergeRequests = (params: object) => request({ url: '/api/v1/merge_requests', method: 'get', params }); +// 组织 mr 列表 +export const getMyOrgMergeRequests = (params: object) => request({ url: `/api/v1/groups/${params.group_id}/merge_requests`, method: 'get', params }); +// 合并请求详情 @param view:[simple,basic] +export const mergeDetail = data => httpGet(`${data.repoId}/merge_requests/${data.iid}/internal`, data); +// 讨论列表 +export const mrDiscussions = data => httpGet(`${data.project_id}/merge_requests/${data.merge_request_iid}/discussions`, removeParamsPathId(data)); +// 获取评论详情 +export const getMrNote = data => httpGet(`${data.project_id}/merge_requests/${data.merge_request_iid}/notes/${data.note_id}`, removeParamsPathId(data)); + +// 创建评论 - 代码评论 - 有解决状态 +export const addMRDiscussion = data => httpPost(`${data.project_id}/merge_requests/${data.merge_request_iid}/discussions`, removeParamsPathId(data)); +// 更新 评论 +export const updateMRDiscussion = data => httpPut(`${data.project_id}/merge_requests/${data.merge_request_iid}/discussions/${data.discussion_id}`, removeParamsPathId(data)); +// 创建评论 没有 解决状态 +export const addMRDiscussionNote = data => httpPost(`${data.project_id}/merge_requests/${data.merge_request_iid}/notes`, removeParamsPathId(data)); +// 修改评论 +export const putDiscussionsNotes = data => httpPut(`${data.project_id}/merge_requests/${data.merge_request_iid}/notes/${data.note_id}`, data); +// 创建回复评论 +export const replayDiscussionsNote = data => httpPost(`${data.project_id}/merge_requests/${data.merge_request_iid}/discussions/${data.discussion_id}/notes`, data); +// export const updateReplayDiscussionsNote = data => httpPut(`${data.project_id}/merge_requests/${data.merge_request_iid}/discussions/${data.discussion_id}/notes/${data.note_id}`, data); + +// 删除 mr 评论 +export const delMRDiscussionsNote = (data) => request({ + url: `/api/v1/projects/${data.project_id}/merge_requests/${data.merge_request_iid}/notes/${data.note_id}`, + method: 'delete' +}); +// 代码评论 - 没有解决状态 +export const postNotes = data => httpPost(`${data.repoId}/merge_requests/${data.iid}/notes`, data); +// 文件提交记录 commit 记录 - 查库 +export const commits = data => httpGet(`${data.repoId}/merge_requests/${data.iid}/commits`, data); +// 检查列表 (合并门禁) +export const mergeableState = data => httpGet(`${data.repoId}/merge_requests/${data.iid}/mergeable_state`, data); +// 文件差异 查库 +export const changes = data => httpGet(`${data.repoId}/merge_requests/${data.iid}/changes`, data); +// 文件差异目录 +export const changesTrees = data => httpGet(`${data.repoId}/merge_requests/${data.iid}/changes_trees`, data); +// revert +export const revert = data => httpPost(`${data.repoId}/merge_request/${data.iid}/revert`, data); +// cherry-pick +export const cherryPick = data => httpPost(`${data.repoId}/merge_request/${data.iid}/cherry_pick`, data); +// // issue关联MR +// export const revert = data => httpPut(`${data.repoId}/isource/merge_requests/${data.iid}`, data); +// // MR详情获取关联issue +// export const e2eIssues = data => httpGet(`${data.repoId}/merge_requests/${data.iid}/e2e_issues`, data); +export const versions = data => httpGet(`${data.repoId}/merge_requests/${data.iid}/versions`, data); +// 获取评审人数 +export const getReviewers = data => httpGet(`${data.repoId}/merge_requests/${data.iid}/reviewer_rules`, data); +// discussions +export const getDis = data => httpGet(`${data.repoId}/merge_requests/${data.iid}/comments_by_line`, data); +export const postDis = data => httpPost(`${data.repoId}/merge_requests/${data.iid}/discussions`, data); +export const putDis = data => httpPut(`${data.repoId}/merge_requests/${data.iid}/discussions/${data.disId}`, data); +export const postNote = data => httpPost(`${data.repoId}/merge_requests/${data.iid}/discussions/${data.disId}/notes`, data); +export const putNote = data => httpPut(`${data.repoId}/merge_requests/${data.iid}/notes/${data.noteId}`, data); +export const delNote = data => httpDel(`${data.repoId}/merge_requests/${data.iid}/notes/${data.noteId}`, data); +export const diffLines = data => httpGet(`${data.repoId}/repository/diff_lines`, data); + +// 检视意见统计信息与门禁信息 +export const statistic = data => httpGet(`${data.repoId}/merge_requests/statistic`, data); +export const conflict_files = data => httpGet(`${data.repoId}/merge_requests/conflict_files`, data); +export const convertMrComment = data => httpPut(`${data.repoId}/merge_requests/${data.iid}/approval_reviewers`, data); +// 变基rebase +export const changeMrRebase = data => httpPut(`${data.repoId}/merge_requests/${data.iid}/rebase`, data); +// 重新打开 +export const reOpen = data => httpPut(`${data.repoId}/isource/merge_requests/${data.iid}`, data); +// MR详情审核人审核通过/拒绝/撤销按钮 +export const putApproval_review = data => request({ + url: `/api/v1/projects/${data.repoId}/merge_requests/${data.iid}/approval_review`, + method: 'put', + data +}); +// 最新一次流水线 show_job =true +export const actual_head_pipeline = (repoId, iid, data) => httpGet(`${repoId}/merge_requests/${iid}/actual_head_pipeline`, data); +export const quality = (repoId, pipeId) => httpGet(`${repoId}/pipelines/${pipeId}/quality`); +export const diverged_commits_count = (repoId, iid) => httpGet(`${repoId}/merge_requests/${iid}/diverged_commits_count`); diff --git a/src/api/merge/types.ts b/src/api/merge/types.ts new file mode 100644 index 0000000..5af39f2 --- /dev/null +++ b/src/api/merge/types.ts @@ -0,0 +1,46 @@ +import { type errorType } from '@/api/types/common'; + +export interface commonMergeReqType { + repoId: string + iid: string + [propName: string]: any; +} + +export interface commonMergeResType extends errorType { + [propName: string]: any; +} + +export interface IMergeableState { + 'merge_request_id': number, // 合并请求ID + 'state': boolean, + 'status_without_user_auth': boolean, // 无用户授权的状态 + 'conflict_passed': boolean, // 冲突通过 + 'branch_missing_passed': boolean, // 分支缺失通过 + 'non_ff_passed': boolean, // 非快进通过 + 'mr_state_passed': boolean, // 合并请求状态通过 + 'merged_by_user_passed': boolean, // 用户合并通过 + 'work_in_progress_passed': boolean, // 工作进展通过 + 'resolve_discussion_passed': boolean, // 解决讨论通过 + 'ci_state_passed': boolean, // CI状态通过 + 'merge_by_self_passed': boolean, // 自我合并通过 + 'can_force_merge': boolean, // 可以强制合并 + 'approval_reviewers_required_passed': boolean, // 需要审批的审查者通过 + 'merge_request_switch': { + 'review_mode': 'string', // 审查模式 + 'merge_method': 'string', // 合并方法 + 'only_allow_merge_if_all_discussions_are_resolved': boolean, // 只有在解决所有讨论后才允许合并 + 'disable_merge_by_self': boolean, // 禁止自我合并 + 'only_allow_merge_if_pipeline_succeeds': boolean, // 只有在管道成功后才允许合并 + 'disable_squash_merge': boolean, // 禁止压缩合并 + 'squash_merge_with_no_merge_commit': boolean, // 无合并提交的压缩合并 + 'approval_required_reviewers_count': number, // 需要审批的审查者数量 + 'approval_required_reviewers_branch': 'string', // 需要审批的审查者分支 + 'add_notes_after_merged': boolean, // 合并后添加注释 + 'mark_auto_merged_mr_as_closed': boolean, // 将自动合并的MR标记为已关闭 + 'can_force_merge': boolean, // 可以强制合并 + 'can_reopen': boolean // 可以重新开放 + }, + 'reason': {}, // description + 'can_not_reopen': boolean, // 不能重新开放 + 'check_tasks_num': number // 检查事项总数 +} diff --git a/src/api/milestone/index.ts b/src/api/milestone/index.ts new file mode 100644 index 0000000..65ffbc1 --- /dev/null +++ b/src/api/milestone/index.ts @@ -0,0 +1,11 @@ +import request from '@/utils/request'; +import * as types from '@/api/milestone/types'; + +// 里程碑详情 +export function getMilestones(params: types.commonMilestoneReqType): Promise { + return request({ + url: `/api/v1/projects/${params.project_id}/milestones/${params.milestone_id}`, + method: 'get' + }); +} + diff --git a/src/api/milestone/types.ts b/src/api/milestone/types.ts new file mode 100644 index 0000000..5f4c688 --- /dev/null +++ b/src/api/milestone/types.ts @@ -0,0 +1,28 @@ +import { type errorType } from '@/api/types/common'; + +export interface commonMilestoneReqType { + project_id:string; + milestone_id:string; + [propName: string]: any; +} + +export interface commonMilestoneResType extends errorType{ + [propName: string]: any; +} + +export interface IMilestone { + id: number, + iid: number, + project_id: number, + title: string, + description: string, + due_date?: string, + progress?: number + state: 'active' | string, + created_at: string, + updated_at?: string, + start_date?: string, + web_url: string, + issues_count: number, + merge_requests_count: number, +} diff --git a/src/api/notice/index.ts b/src/api/notice/index.ts new file mode 100644 index 0000000..ad158f3 --- /dev/null +++ b/src/api/notice/index.ts @@ -0,0 +1,59 @@ +import request from '@/utils/request'; +import type { AxiosResponse } from 'axios'; +import type { MessageListData } from '@/views/Notice/components/types'; + +// 获取用户未读消息数 +export function getUnreadCount(params: { [propName: string]: any }): Promise> { + return request({ + url: '/api/v1/internal/messages/count_unread', + method: 'get', + params + }); +} + +// 设置消息为已读 +export function setRead(data: { message_ids: number[] }): Promise> { + return request({ + url: '/api/v1/internal/messages/set_read', + method: 'put', + data + }); +} + +// 获取用户消息列表 +type MessageListQuery = { + page?: number; + pageSize?: number; + status?: string; + message_type?: string; + reason?: string; + creator_id?: number; + search?: string; + project_id?: number; + [propName: string]: any; +} +export function getMessageList(params: MessageListQuery): Promise> { + return request({ + url: '/api/v1/internal/messages', + method: 'get', + params + }); +} + +// 获取项目列表 +export function getMessageRepoList(params: { page_num?: number; page_size?: number; search?: string; }): Promise> { + return request({ + url: '/api/v1/internal/messages/projects', + method: 'get', + params + }); +} + +/** 获取邀请相关未读信息 */ +export function getMessageCount() { + return request({ + url: '/api/v1/user/notify/targetInfo', + method: 'get', + params: {} + }); +} diff --git a/src/api/org/devIndex.ts b/src/api/org/devIndex.ts new file mode 100644 index 0000000..ad0ccf0 --- /dev/null +++ b/src/api/org/devIndex.ts @@ -0,0 +1,124 @@ +import request from '@/utils/request'; +import * as types from '@/api/org/types'; +import { reqCatch, type ReqReturn } from '@/utils/catch'; + +// 获取自定义menu菜单 +export function getCustomMenuList({ namespace, onlyCustomNav = true }): Promise { + return request({ + url: `/v1/namespace_page/custom/nav?domain=${namespace}&onlyCustomNav=${onlyCustomNav}`, + method: 'get', + apiType: 'devApi' + }); +} + +// 组织主页-关注社区 +export function joinCommunity(data: types.createGroupReqType): Promise { + return request({ + url: `/api/v1/follow`, + method: 'post', + data + }); +} + +// 组织主页-取消关注社区 +export function unJoinCommunity(data: types.createGroupReqType): Promise { + return request({ + url: `/api/v1/follow`, + method: 'delete', + params: data + }); +} + +// 组织主页-获取文章 +export function getArticle(data: types.createGroupReqType): Promise { + return request({ + url: `/v1/plus/group/home/article`, + method: 'get', + params: data, + apiType: 'devApi' + }); +} + +// 组织主页-获取组织社区是否被关注 +export function getCommunityAttentionStatus(data: types.createGroupReqType): Promise { + return request({ + url: `/api/v1/follow/hasFollowed`, + method: 'get', + params: data + }); +} + +// 组织主页-社区最新活动 +export function getActivity(data: types.createGroupReqType): Promise { + return request({ + url: `/v1/plus/group/home/activityLive`, + method: 'get', + params: data, + apiType: 'devApi' + }); +} + +// 组织主页-获取技术文章数 +export function getArticleTotle(data: types.createGroupReqType): Promise { + return request({ + url: `/v1/namespace_article/tech-article-count`, + method: 'get', + params: data, + apiType: 'devApi' + }); +} + +// 组织主页-获取社区粉丝数 +export function getfansTotle(data: types.createGroupReqType): Promise { + return request({ + url: `/v1/member/user/count`, + method: 'get', + params: data, + apiType: 'devApi' + }); +} + +// 组织主页-获取技术文章数和粉丝数 +export function getArticleAndFansTotle(data: types.createGroupReqType): Promise { + return request({ + url: `/api/v2/groups/${data.orgId}/stats`, + method: 'get', + params: data + }); +} + +// 组织主页-获取运营广告 +export function getAdvertisement(data: types.createGroupReqType): Promise { + return request({ + url: `/v1/namespace_page/banner`, + method: 'get', + params: data, + apiType: 'devApi' + }); +} + +// 刷新devpress登录转态 +export function getLoginState(data: types.createGroupReqType): Promise { + return request({ + url: `/v1/check/login`, + method: 'get', + apiType: 'devApi' + }); +} + +// 退出devpress社区 +export function devLogout(data: types.createGroupReqType): Promise { + return request({ + url: `/v1/logout`, + method: 'get', + apiType: 'devApi' + }); +} +/* 组织的关注用户 */ +export function getGroupFollows(params: types.commonGroupReqType): Promise { + return reqCatch(() => request({ + url: '/api/v1/follow/getGroupFollows', + method: 'get', + params + })); +} diff --git a/src/api/org/index.ts b/src/api/org/index.ts new file mode 100644 index 0000000..5232bb3 --- /dev/null +++ b/src/api/org/index.ts @@ -0,0 +1,495 @@ +import request from '@/utils/request'; +import * as types from '@/api/org/types'; +import { reqCatch, type ReqReturn } from '@/utils/catch'; + +export function createOrg(data: types.createGroupReqType): Promise { + return request({ + url: `/api/v2/groups`, + method: 'post', + data + }); +} + +export function getOrg(params: types.commonGroupReqType): Promise { + return request({ + url: `/api/v2/groups/${params.orgId}`, + method: 'get', + params + }); +} + +// 获取/搜索组织 +export function getOrgs(params: types.commonGroupReqType): Promise> { + return reqCatch(() => request({ + url: `/api/v2/groups`, + method: 'get', + params + })); +} + +export function setOrg(data: types.createGroupReqType): Promise { + return request({ + url: `/api/v2/groups/${data.orgId}`, + method: 'put', + data + }); +} + +export function deleteOrg(data: types.createGroupReqType): Promise { + return request({ + url: `/api/v2/groups/${data.orgId}`, + method: 'delete' + }); +} + +// 查询登录用户是否关注某组织 +export function checkHasFollowed(data: types.createGroupReqType): Promise { + return request({ + url: '/api/v1/follow/hasFollowed', + method: 'get', + params: data + }); +} + +// 获取组织下所有项目 +export function getOrgProjectList(data: types.createGroupReqType): Promise { + return request({ + url: `/api/v2/groups/${data.orgId}/projects`, + method: 'get', + params: data + }); +} + +// 查询组织项目精选 +export function getOrgHandpickProjectList(data: types.createGroupReqType): Promise { + return request({ + url: `/api/v1/featured/project/${data.type}`, + method: 'get', + params: data + }); +} + +// 项目精选重排序 +export function reorderSelectedItems(data: types.createGroupReqType): Promise { + return request({ + url: `/api/v1/featured/${data.type}/resort`, + method: 'put', + data + }); +} + +// 查询组织path是否重复 +export function inquireOrgPathIsRepeat(data: types.createGroupReqType): Promise { + return request({ + url: `/api/v2/groups/path_suggestion`, + method: 'get', + params: data + }, { customError: true }); +} + +// 组织讨论设置回显 +export function getOrgDiscussionSettings(data: types.createGroupReqType): Promise { + return request({ + url: `/api/v2/groups/${data.orgId}/module/setting`, + method: 'get', + params: data + }, { + customError: true + }); +} + +// 组织讨论设置保存 +export function saveOrgDiscussionSettings(data: types.createGroupReqType): Promise { + return request({ + url: `/api/v2/groups/${data.orgId}/module/setting`, + method: 'put', + data + }); +} + +// 获取组织语言 +export function getOrgLanguages(data: types.createGroupReqType): Promise { + return request({ + url: `/api/v2/groups/${data.orgId}/languages`, + method: 'get', + params: data + }, { + customError: true + }); +} + +// 查询组织首页运营内容 +export function getOrgOperationContent(data: types.createGroupReqType): Promise { + return request({ + url: `/api/v1/devpress/group/${data.orgId}/home_operation`, + method: 'get', + params: data + }); +} + +// 判断是否绑定csdn账号 +export function isBindCsdnCount(data: types.createGroupReqType): Promise { + return request({ + url: `/api/v1/user/csdn-identity`, + method: 'get', + params: data + }); +} + +// 申请社区 +export function applicantCommunity(data: types.createGroupReqType): Promise { + return request({ + url: `/api/v1/devpress/${data.orgId}`, + method: 'post', + data + }); +} + +// 注销社区 +export function deleteCommunity(data: types.createGroupReqType): Promise { + return request({ + url: `/api/v1/devpress/${data.orgId}`, + method: 'delete' + }); +} + +// 社区基本信息 +export function getCommunityInfo(data: types.createGroupReqType): Promise { + return request({ + url: `/api/v1/devpress/${data.orgId}/info`, + method: 'get' + }); +} + +// 转移组织 +export function transferOrg(data: types.createGroupReqType): Promise { + return request({ + url: `/api/v4/groups/${data.orgId}/transfer`, + method: 'post', + data + }); +} + +// 判断用户是否能创建组织 +export function checkUserCreateOrg(data: types.createGroupReqType): Promise { + return request({ + url: `/api/v2/groups/quota`, + method: 'get', + params: data + }); +} + +export function getOrgMemberList(data: types.createGroupReqType): Promise { + return request({ + url: `/api/v1/groups/${data.orgId}/members/list`, + method: 'get' + }); +} +/** 组织邀请成员 */ +export function createInvite(data: { group_id: string, conf: Record }) { + const { group_id, conf } = data; + return reqCatch(() => request({ + url: `/api/v1/invitation/${group_id}/invite`, + method: 'post', + data: { + ...conf, + source_type: '0' + } + })); +} +export function checkInvite(data: types.createGroupReqType): Promise { + return request({ + url: `/api/v1/invitation/check`, + method: 'get', + params: data + }); +} + +export function acceptInvite(token: string) { + return request({ + url: `/api/v1/invitation/members/${token}/accept`, + method: 'put' + }); +} + +export function revokeInvite(token: string): Promise { + return request({ + url: `/api/v1/invitation/members/${token}/revoke`, + method: 'delete' + }); +} +/** 获取组织下的成员 */ +export function getOrgMembers(data: { group_id: string, page?: number, per_page?: number, query?: string }) { + return request({ + url: `/api/v1/groups/${data.group_id}/members/list`, + method: 'get', + params: data + }); +} + +/** 获取组织下的待邀请成员 */ +export function getMembersInvite(data: { group_id: string, page: number, per_page: number }) { + return reqCatch(() => request({ + url: `/api/v1/groups/${data.group_id}/members/invite`, + method: 'get', + params: data + })); +} + +/** 移除组织内的用户 */ +export function removeGroupUser(data: { group_id: string, username: string }) { + const { group_id, username } = data; + return reqCatch(() => request({ + url: `/api/v1/groups/${group_id}/members/${username}`, + method: 'delete' + })); +} + +/** 撤销组织中的成员邀请 */ +export function retractGroupInvite(data: { group_id: string, username: string }) { + const { group_id, username } = data; + return reqCatch(() => request({ + url: `/api/v1/invitation/${group_id}/0/members/${username}/revoke`, + method: 'delete' + })); +} + +/** 退出当前组织 */ +export function exitGroup(data: { group_id: string }) { + const { group_id } = data; + return reqCatch(() => request({ + url: `/api/v1/groups/${group_id}/leave`, + method: 'delete' + })); +} + +/** 设置组织中成员的权限 */ +export function setGroupUserLevel(data: { group_id: string, username: string, access_level: '30' | '50' | '10' }) { + const { group_id, username, access_level } = data; + return reqCatch(() => request({ + url: `/api/v1/groups/${group_id}/members/${username}`, + method: 'put', + data: { access_level } + })); +} + +/** 精准搜索匹配组织中的成员 */ +export function toSearchGroupMember(group_id: string, username: string) { + return reqCatch(() => request({ + url: `/api/v1/groups/${group_id}/members/${username}` + })); +} + +/* 查询path是个人还是组织 */ +export function getPathType(params: types.createGroupReqType): Promise { + return request({ + url: '/api/v2/groups/path_suggestion', + method: 'get', + params + }); +} + +/** 获取用量以及存储相关 */ +export function getOrgStock(group_id: string) { + return reqCatch(() => request({ + url: `/api/v1/namespaces/${group_id}/statistic` + })); +} + +/** 创建组织成员邀请链接 **/ +export function createGroupMemberLink(data: { namespace: string } & types.MemberInviteLinkProps) { + const { namespace, ...config } = data; + return reqCatch(() => request({ + url: `/api/v1/group/${namespace}/invite/link`, + method: 'post', + data: config + })); +} +/** 删除组织成员邀请链接 */ +export function deleteMemberInviteLink(namespace: string, inviteId: string) { + return reqCatch(() => request({ + url: `/api/v1/group/${namespace}/${inviteId}/invite/link`, + method: 'delete' + })); +} +/** 查询组织成员邀请链接列表 */ +export function getMemberInviteLinks(params: { namespace: string, page?: number, per_page?: number }) { + const { namespace, ...pager } = params; + return reqCatch(() => request({ + url: `/api/v1/${namespace}/invite/link`, + params: Object.assign({ page: 1, per_page: 10 }, pager) + })); +} +/** 修改组织成员邀请链接 **/ +export function updateGroupMemberLink(data: { namespace: string, inviteId: string } & types.MemberInviteLinkProps) { + const { namespace, inviteId, ...config } = data; + return reqCatch(() => request({ + url: `/api/v1/group/${namespace}/${inviteId}/invite/link`, + method: 'put', + data: config + })); +} +/** 接受组织邀请链接 */ +export function acceptGroupInvite(invite_code: string) { + return reqCatch(() => request({ + url: `/api/v1/${invite_code}/invite/accept` + })); +} +/** 查看组织邀请链接待接受成员列表 */ +export function getAcceptGroupMember(params: { namespace: string, page?: number, per_page?: number }) { + const { namespace, ...pager } = params; + return reqCatch(() => request({ + url: `/api/v1/${namespace}/invite/accept/member`, + params: Object.assign({ page: 1, per_page: 10 }, pager) + })); +} +/** 审核组织链接访问的成员 */ +export function checkGroupLinkMember(data: { namespace: string, id:number, access_level: string, member_expires_at?: string, audit: '0' | '2' }) { + const { namespace, id, ...conf } = data; + return reqCatch(() => request({ + url: `/api/v1/group/${namespace}/${id}/invite/audit`, + method: 'put', + data: conf + })); +} +/** 删除链接访问组织的成员 */ +export function removeGroupLinkMember(namespace: string, id: number) { + return reqCatch(() => request({ + url: `/api/v1/group/${namespace}/${id}/invite/audit`, + method: 'delete' + })); +} + +/** 模糊搜索匹配相关组织 */ +export function getFuzzyGroups(params: { name?: string, path?: string, description?: string, page?:number, per_page?:number, orderBy?: 'name' | 'path' | 'id' | 'created_at' | 'updated_at', sort: 'asc' | 'desc'}) { + const { page, per_page, ...param } = params; + return reqCatch(() => request({ + url: '/api/v2/groups/search/list', + params: { ...param, ...Object.assign({ page: 1, per_page: 10 }, { page, per_page }) } + })); +} + +// 新建CLA协议 +export function claAdd(data: types.commonGroupReqType): Promise { + return request({ + url: `/api/v2/cla/${data.orgId}/add`, + method: 'post', + data + }); +} + +// 编辑CLA协议 +export function claUpdate(data: types.commonGroupReqType): Promise { + return request({ + url: `/api/v2/cla/${data.orgId}/update`, + method: 'put', + data + }); +} + +// 获取CLA协议详情 +export function claDetail(params: types.commonGroupReqType): Promise { + return request({ + url: `/api/v2/cla/detail`, + method: 'get', + params + }); +} +/* 组织webhooks对应接口开始 */ +/** 获取项目分支webhook */ +export function getRepoWebhooks(params: { repoId: string | null; conf: Record }) { + return reqCatch( + () => + request({ + url: `/api/v2/groups/${params.repoId}/hooks`, + params: params.conf + }), + params + ); +} +/** 新增webhook配置 */ +export function createWebhook(data: { repoId: string | number | null; conf: Record }) { + return reqCatch( + () => + request( + { + url: `/api/v2/groups/${data.repoId}/hooks`, + data: data.conf, + method: 'post' + }, + { + customError: true + } + ), + data + ); +} +/** 编辑webhook */ +export function editWebhook(data: { repoId: string | null; hook_id: string; conf: Record }) { + const { repoId, hook_id, conf } = data; + return reqCatch(() => + request({ + url: `/api/v2/groups/${repoId}/hooks/${hook_id}`, + method: 'put', + data: conf + }) + ); +} +/** 获取webhook详情 */ +export function getWebhookDetail(data: { repoId: string | null; hook_id: string }) { + const { repoId, hook_id } = data; + return reqCatch(() => + request({ + url: `/api/v2/groups/${repoId}/hooks/${hook_id}` + }) + ); +} +/** 获取webhook请求日志 */ +export function getWebhookLogs(data: { repoId: string | null; hook_id: string; page?: number; per_page?: number }) { + const { repoId, hook_id, ...param } = data; + return reqCatch(() => + request({ + url: `/api/v2/groups/${repoId}/hooks/${hook_id}/logs`, + params: Object.assign({ page: 1, per_page: 10 }, param) + }) + ); +} +/** 获取项目webhook日志详情 */ +export function getWebhookLogDetail(data: { repoId: string | null; hook_id: string; id: string }) { + const { repoId, hook_id, id } = data; + return reqCatch(() => + request({ + url: `/api/v2/groups/${repoId}/hooks/${hook_id}/logs/${id}` + }) + ); +} +/** 删除webhook */ +export function deleteWebHook(data: { repoId: string | null; hook_id: string }) { + const { repoId, hook_id } = data; + return reqCatch(() => + request({ + url: `/api/v2/groups/${repoId}/hooks/${hook_id}`, + method: 'delete' + }) + ); +} +/* 组织webhooks对应接口结束 */ + +/** 获取组织默认设置 */ +export function getOrgDefaultSetting(params: { group_id: string }) { + return reqCatch(() => request({ + url: `/api/v2/groups/${params.group_id}`, + method: 'get' + })); +} + +/** 更新组织默认设置 */ +export function updateOrgDefaultSetting(data: types.commonGroupReqType) { + const { group_id } = data; + delete data.group_id; + return reqCatch(() => request({ + url: `/api/v2/groups/${group_id}/ext/setting`, + method: 'put', + data + })); +} diff --git a/src/api/org/types.ts b/src/api/org/types.ts new file mode 100644 index 0000000..bff848c --- /dev/null +++ b/src/api/org/types.ts @@ -0,0 +1,24 @@ +import { type errorType } from '@/api/types/common'; +import type { ComputedRef } from 'vue'; + +export interface createGroupReqType { + [propName: string]: any; +} + +export interface commonGroupReqType { + [propName: string]: any; + repoId?: string | number | string[]; + orgId?: string | number | string[] | ComputedRef; +} + +export interface commonGroupResType extends errorType { + [propName: string]: any; +} + +export interface MemberInviteLinkProps { + access_level: number | string, + audit_status: 0 | 1 | string, + url_expires_at?:string, + member_expires_at?:string, + remark?:string +} diff --git a/src/api/release/index.ts b/src/api/release/index.ts new file mode 100644 index 0000000..9fa1155 --- /dev/null +++ b/src/api/release/index.ts @@ -0,0 +1,34 @@ +import request from '@/utils/request'; +import * as types from '@/api/release/types'; +import { reqCatchV2, type catchRt } from '@/utils/catch'; +import type { CommonWithPageReqType } from '@/utils/types'; + +export function createRelease(data: types.createReleaseReqType): Promise { + return request({ + url: `/api/v1/projects/${data.repoId}/releases`, + method: 'post', + data + }); +} + +export function getReleases(params: types.getReleasesType): catchRt> { + return reqCatchV2(() => request({ + url: `/api/v1/projects/${params.repoId}/releases`, + method: 'get', + params + })); +} +export function getReleaseDetail(params: types.getReleaseDetailReqType): Promise { + return request({ + url: `/api/v1/projects/${params.repoId}/releases/${params.tag_name}`, + method: 'get', + params + }); +} +export function deleteRelease(data: types.commonReleaseResType): Promise { + return request({ + url: `/api/v1/projects/${data.repoId}/releases/${data.tag_name}`, + method: 'delete', + data + }); +} diff --git a/src/api/release/types.ts b/src/api/release/types.ts new file mode 100644 index 0000000..31a6dfc --- /dev/null +++ b/src/api/release/types.ts @@ -0,0 +1,102 @@ +import { releaseType; type errorType } from '@/api/types/common'; + +export interface getReleasesType extends releaseType { + /** + * 当前页码 + */ + page?: string; + /** + * 每页的项目数 + */ + per_page?: string; +} + +export interface commonReleaseResType extends errorType { + [propName: string]: any; +} + +export interface createReleaseReqType { + tag_name: string; + name: string; + description: string; + ref: string; + assets?: { + links: [ + { + name: string; + url: string + } + ] + }; + [propName: string]: any; +} +export interface getReleaseDetailReqType { + tag_name: string; + name: string; + description?: string; + [propName: string]: any; +} +interface Author { + id: number; + name: string; + username: string; + iam_id: string; + state: string; + avatar_url: string; + avatar_path: string; + email: string; + name_cn: string; + web_url: string; + nick_name: string; + tenant_name: string; +} +interface Commit { + id: string; + message: string; + parent_ids:string[]; + authored_date: string; + author_name: string; + author_email: string; + committed_date: string; + committer_name: string; + committer_email: string; + open_gpg_verified: true; + verification_status: number; + gpg_primary_key_id: string; + short_id: string; + created_at: string; + title: string; + author_avatar_url: string; + committer_avatar_url: string; + relate_url: { + related_id: string; + related_url: string + }[] +} +export interface getReleaseResType { + tag_name: string; + description: string; + name: string; + description_html: string; + created_at: string; + can_delete: true; + can_edit: true; + can_download: true; + author:Author; + commit:Commit; + assets: { + count: number; + sources: + { + format: string; + url: string + }[]; + links: + { + id: number; + name: string; + url: string; + external: true + }[]; + } +} \ No newline at end of file diff --git a/src/api/repo/index.ts b/src/api/repo/index.ts new file mode 100644 index 0000000..7c9f060 --- /dev/null +++ b/src/api/repo/index.ts @@ -0,0 +1,1544 @@ +import request from '@/utils/request'; +import * as types from '@/api/repo/types'; +import { reqCatch, reqCatchV2, type catchRt } from '@/utils/catch'; +import type { AxiosResponse } from 'axios'; +import type { CommonWithPageReqType } from '@/utils/types'; + +const fileUploadBaseURL = (import.meta as any).env.VITE_FILE_HOST; +const fileDownloadBaseURL = (import.meta as any).env.VITE_DOWNLOAD_HOST; +// 创建一个项目,创建CR仓库时,请求Headers中,x-zone和x-cell为必填参数 +export function createRepo(data: types.createRepoReqType): Promise { + return request({ + url: '/api/v2/projects', + method: 'post', + data + }); +} +// 判断是否可以创建公开项目 +export function createPublicProject(data: types.createRepoResType): Promise { + return request({ + url: `/api/v1/global/setting?key=${data.key}`, + method: 'get', + data + }); +} +// 项目是否可达 +export function repoReachable(data: types.commonRepoReqType): catchRt { + return reqCatchV2(() => + request({ + url: '/api/v2/projects/reachable', + method: 'post', + data + }) + ); +} +// 获取一个项目 +export function getRepo(params: types.commonRepoReqType, config?: object): Promise { + return reqCatch( + () => + request( + { + url: `/api/v2/projects/${params.repoId}?view=all`, + method: 'get', + params: { + statistics: params?.statistics + } + }, + config + ), + params + ); +} +// 获取项目详情 +export function getRepoDetail(params: types.commonRepoReqType): Promise { + return reqCatch( + () => + request({ + url: `/api/v2/projects/${params.repoId}`, + method: 'get' + }), + params + ); +} +// 修改一个项目 +export function editRepo(data: Partial & { repoId: string | number }): Promise { + const { repoId, ...conf } = data; + return reqCatch( + () => + request({ + url: `/api/v2/projects/${repoId}`, + method: 'put', + data: conf + }), + data + ); +} +// 删除一个项目 +export function deleteRepo(params: types.commonRepoReqType): Promise { + return reqCatch( + () => + request({ + url: `/api/v2/projects/${params.repoId}`, + method: 'delete', + params + }), + params + ); +} +// 项目转移 与接口命名保持一致 +export function transferRepo(data: { projectId: string; namespace: string }): Promise { + const { projectId, namespace } = data; + return reqCatch(() => + request({ + url: `/api/v2/projects/${projectId}/transfer`, + method: 'put', + data: { namespace } + }) + ); +} +/** 获取项目分支 */ +export function getRepoBranches(params: { + project_id: string | number; + branch_type?: 'not_protect' | ''; + per_page?: number; + view?: string; + search?: string; +}): Promise { + return reqCatch(() => + request( + { + url: `/api/v2/projects/${params.project_id}/repository/branches`, + method: 'get', + params + }, + { customError: true } + ) + ); +} +/** 获取项目保护分支 */ +export function getRepoProtectedBranches(params: { project_id: string | number }): Promise { + return reqCatch(() => + request({ + url: `/api/v2/projects/${params.project_id}/protected_branches`, + method: 'get', + params + }) + ); +} +/** 新增项目保护分支 */ +export function createProtectedBranches(data: { + project_id: string | number; + conf: Record; +}): Promise { + return reqCatch( + () => + request({ + url: `/api/v2/projects/${data.project_id}/batch/protected_branches`, + method: 'post', + data: data.conf + }), + data + ); +} +/** 编辑项目保护分支 */ +export function editProtectedBranches(data: { project_id: string | number; conf: Record }): Promise { + return reqCatch( + () => + request({ + url: `/api/v2/projects/${data.project_id}/repository/branches/protect`, + method: 'put', + data: data.conf + }), + data + ); +} +/** 删除项目保护分支 */ +export function delProtectedBranches(data: { project_id: string | number; branch_name: string }): Promise { + return reqCatch( + () => + request({ + url: `/api/v2/projects/${data.project_id}/protected_branches/${data.branch_name}`, + method: 'delete' + }), + data + ); +} +// 创建分支 +export function createBranch(data: { repoId: string | number; ref: string; branch: string }): Promise { + return request({ + url: `/api/v2/projects/${data.repoId}/repository/branches`, + method: 'post', + data + }); +} +/** 获取保护分支信息 */ +export function getProtectedBranchInfo(params: { project_id: string | number; branch_name: string }): Promise { + return reqCatch( + () => + request({ + url: `/api/v2/projects/${params.project_id}/protected_branches/${params.branch_name}` + }), + params + ); +} +export function getBranchDetail(params: { project_id: string | number; branch_name: string }): Promise { + return request({ + url: `/api/v2/projects/${params.project_id}/repository/branches/${params.branch_name}` + }); +} +/** 获取项目保护tag */ +export function getProtectedTags(params: { project_id: string | number }): Promise { + return reqCatch(() => + request({ + url: `/api/v1/projects/${params.project_id}/protected_tags`, + params: { + page: 1, + per_page: 100, + ...params + } + }) + ); +} +/** 创建项目保护tag */ +export function createProtectedTags(data: { + project_id: string | number; + name: string; + create_access_level: number | string; +}): Promise { + const { project_id, ...conf } = data; + return reqCatch( + () => + request({ + url: `/api/v1/projects/${project_id}/protected_tags`, + method: 'post', + data: conf + }), + {} + ); +} +/** 编辑项目保护tag权限 */ +export function editProjectTags(data: { + project_id: string | number; + name: string; + create_access_level: number | string; +}): Promise { + const { project_id, ...conf } = data; + return reqCatch( + () => + request({ + url: `/api/v1/projects/${project_id}/protected_tags`, + method: 'put', + data: conf + }), + {} + ); +} +/** 删除项目保护分支tag权限 */ +export function delProjectTags(data: { project_id: string | number; name: string }) { + return reqCatch( + () => + request({ + url: `/api/v1/projects/${data.project_id}/protected_tags/${data.name}`, + method: 'delete' + }), + {} + ); +} +/** 获取用户组织列表 */ +export function getGroupMembers(): Promise { + return reqCatch(() => + request({ + url: 'api/v2/groups/list', + params: { + page: 1, + per_page: 50, + develop_mode: 'normal', + maintained: true + } + }) + ); +} +/** 项目设置模块开发 */ +export function getSettingsValues(data: { repoId: string | number }): Promise { + const { repoId } = data; + return reqCatch(() => + request( + { + url: `/api/v2/projects/${repoId}/module/setting`, + method: 'get', + params: data + }, + { + customError: true + } + ) + ); +} +/** 更新项目设置模块开关 */ +export function updateSettingsValues(data: { + repoId: string | number; + modules: { key: string; value: string | number; type: string }[]; +}): Promise { + const { repoId, modules } = data; + return reqCatch(() => + request({ + url: `/api/v2/projects/${repoId}/module/setting`, + method: 'put', + data: { modules } + }) + ); +} +/** 修改项目设置模块开关 */ +export function changeSettingsValues(data: { + repoId: string | number; + modules: { key: string; value: string | number; type: string }; +}): Promise { + const { repoId, modules } = data; + return reqCatch(() => + request({ + url: `/api/v2/projects/${repoId}/module_item/setting`, + method: 'put', + data: modules + }) + ); +} +/** 项目设置仓库分支权限设置 */ +export function getRepoBranchSetting(data: { project_id: string }) { + const { project_id } = data; + return reqCatch(() => + request({ + url: `/api/v2/projects/${project_id}/policies/general` + }) + ); +} +/** 修改项目设置仓库配置 */ +export function editRepoBranchSetting(data: { project_id: string; conf: Record }) { + const { project_id, conf } = data; + return reqCatch(() => + request({ + url: `/api/v2/projects/${project_id}/policies/general`, + method: 'put', + data: conf + }) + ); +} +/* 项目webhooks相关开始 */ +/** 获取项目分支webhook */ +export function getRepoWebhooks(params: { repoId: string | null; conf: Record }) { + return reqCatch( + () => + request({ + url: `/api/v1/projects/${params.repoId}/hooks`, + params: params.conf + }), + params + ); +} +/** 新增webhook配置 */ +export function createWebhook(data: { repoId: string | number | null; conf: Record }) { + return reqCatch( + () => + request( + { + url: `/api/v1/projects/${data.repoId}/hooks`, + data: data.conf, + method: 'post' + }, + { + customError: true + } + ), + data + ); +} +/** 编辑webhook */ +export function editWebhook(data: { repoId: string | null; hook_id: string; conf: Record }) { + const { repoId, hook_id, conf } = data; + return reqCatch(() => + request({ + url: `/api/v1/projects/${repoId}/hooks/${hook_id}`, + method: 'put', + data: conf + }) + ); +} +/** 获取webhook详情 */ +export function getWebhookDetail(data: { repoId: string | null; hook_id: string }) { + const { repoId, hook_id } = data; + return reqCatch(() => + request({ + url: `/api/v1/projects/${repoId}/hooks/${hook_id}` + }) + ); +} +/** 获取webhook请求日志 */ +export function getWebhookLogs(data: { repoId: string | null; hook_id: string; page?: number; per_page?: number }) { + const { repoId, hook_id, ...param } = data; + return reqCatch(() => + request({ + url: `/api/v1/projects/${repoId}/hooks/${hook_id}/logs`, + params: Object.assign({ page: 1, per_page: 10 }, param) + }) + ); +} +/** 获取项目webhook日志详情 */ +export function getWebhookLogDetail(data: { repoId: string | null; hook_id: string; id: string }) { + const { repoId, hook_id, id } = data; + return reqCatch(() => + request({ + url: `/api/v1/projects/${repoId}/hooks/${hook_id}/logs/${id}` + }) + ); +} +/** 删除webhook */ +export function deleteWebHook(data: { repoId: string | null; hook_id: string }) { + const { repoId, hook_id } = data; + return reqCatch(() => + request({ + url: `/api/v1/projects/${repoId}/hooks/${hook_id}`, + method: 'delete' + }) + ); +} +/* 项目相关webhooks结束 */ +// 获取开发者分支权限设置 +export function repoPolicies(params: types.commonRepoReqType): Promise { + return request({ + url: `/api/v2/projects/${params.repoId}/policies/general`, + method: 'get', + params + }); +} +// 开发者分支创建权限设置、开发者Tag创建权限设置、分支名规则设置、Tag名规则设置 +export function editRepoPolicies(data: types.commonRepoReqType): Promise { + return request({ + url: `/api/v2/projects/${data.repoId}/policies/general`, + method: 'put', + data + }); +} +// 获取合并请求设置 +export function getMergeSetting(params: types.commonRepoReqType): Promise { + const { repoId } = params; + return reqCatch(() => + request({ + url: `/api/v2/projects/${repoId}/merge_requests/setting`, + method: 'get', + params + }) + ); +} + +// 合并请求设置 +export function editMergeSetting(data: { + repoId: string; + conf: Record; +}): Promise { + const { repoId, conf } = data; + return request({ + url: `/api/v2/projects/${repoId}/merge_requests/setting`, + method: 'put', + data: conf + }); +} +// 获取经过身份验证的用户的可见项目列表 +export function getRepos(params: types.commonRepoReqType): Promise { + return reqCatch( + () => + request({ + url: `/api/v1/projects`, + method: 'get', + params + }), + params + ); +} +// 取消收藏一个项目 +export function unstarRepo(data: types.commonRepoReqType): Promise> { + return request({ + url: `/api/v2/projects/${data.repoId}/unstar`, + method: 'post', + data + }); +} +// 收藏一个项目 +export function starRepo(data: types.commonRepoReqType): Promise> { + return request({ + url: `/api/v2/projects/${data.repoId}/star`, + method: 'post', + data + }); +} +// 取消归档项目 +export function unarchiveRepo(data: types.commonRepoReqType): Promise { + return reqCatch( + () => + request({ + url: `/api/v2/projects/${data.repoId}/unarchive`, + method: 'post', + data + }), + data + ); +} +// 归档项目 +export function archiveRepo(data: types.commonRepoReqType): Promise { + return reqCatch( + () => + request({ + url: `/api/v2/projects/${data.repoId}/archive`, + method: 'post', + data + }), + data + ); +} +// Fork一个项目 +export function createForkRepo(data: types.forkRepoReqType): Promise { + return request({ + url: `/api/v2/projects/${data.repoId}/fork`, + method: 'post', + data + }); +} +// 删除Fork项目 +export function deleteForkRepo(params: types.commonRepoReqType): Promise { + return reqCatch( + () => + request({ + url: `/api/v2/projects/${params.repoId}/fork`, + method: 'delete', + params + }), + params + ); +} +/** 精准搜索匹配项目中的成员 */ +export function toSearchRepoMember(repoId: string, username: string) { + return reqCatch(() => + request({ + url: `/api/v1/projects/${repoId}/members/${username}` + }) + ); +} +// 获取项目中的语言 +export function getRepoLanguages(params: types.commonRepoReqType): Promise { + return request( + { + url: `/api/v2/projects/${params.repoId}/languages`, + method: 'get', + params + }, + { + customError: true + } + ); +} +// 获取项目审计日志列表 +export function getRepoAuditLogs(params: { + repoId: string | number; + param: { + page?: number; + per_page?: number; + search?: string; + log_type?: string; + start_date?: string; + end_date?: string; + operator_id?: string; + }; +}): Promise { + const { repoId, param } = params; + return reqCatch( + () => + request({ + url: `/api/v2/projects/${repoId}/audit_logs`, + method: 'get', + params: Object.assign({ page: 1, per_page: 10 }, param) + }), + params + ); +} +// 获取项目的Fork列表 +export function getRepoForks(params: types.forkRepoReqType): Promise { + return request({ + url: `/api/v2/projects`, + method: 'get', + params + }); +} +// 获取项目的Star列表 +export function getRepoStars(params: types.commonRepoReqType): Promise { + return request({ + url: `/api/v2/projects/${params.repoId}/star`, + method: 'get', + params + }); +} +// 获取项目Star用户列表 +export function getRepoStarUsers(params: types.commonRepoReqType): Promise { + return request({ + url: `/api/v2/projects/${params.repoId}/star_users`, + method: 'get', + params + }); +} +// 检查的项目名称 +export function checkRepoName(params: types.commonRepoReqType): Promise { + return request({ + url: '/api/v2/projects/check_name', + method: 'get', + params + }); +} +// 获取仓库文件 +export function getRepoFiles(params: types.commonRepoReqType): Promise> { + return request({ + url: `/api/v2/projects/${params.repoId}/repository/files`, + method: 'get', + params + }); +} +// 编辑仓库文件 +export function editRepoFiles(data: types.commonRepoReqType): Promise { + return request({ + url: `/api/v2/projects/${data.repoId}/repository/files`, + method: 'put', + data + }); +} +// 创建仓库文件 +export function createRepoFiles(data: types.commonRepoReqType): Promise { + return request({ + url: `/api/v2/projects/${data.repoId}/repository/files`, + method: 'post', + data + }); +} +// 删除仓库文件(不能删除文件夹) +export function deleteRepoFiles(params: types.commonRepoReqType): Promise { + return request({ + url: `/api/v2/projects/${params.repoId}/repository/files`, + method: 'delete', + data: params + }); +} +// 批量删除目录和文件(支持文件夹删除) +export function batchDeleteRepoFiles(params: types.commonRepoReqType): Promise { + return request({ + url: `/api/v2/projects/${params.repoId}/repository/files_in_batch`, + method: 'post', + data: params + }); +} +// 获取文件追溯信息 +export function getFileBlame(params: types.commonRepoReqType): Promise { + return request({ + url: `/api/v2/projects/${params.repoId}/repository/blame`, + method: 'get', + params + }); +} +// 批量删除指定项目仓库的目录和文件 +export function batchDeleteFiles(data: types.commonRepoReqType): Promise { + return request({ + url: `/api/v2/projects/${data.repoId}/repository/files_in_batch`, + method: 'post', + data + }); +} +// 文件树查询(只能返回1层数组) +export function getRepoTree(params: types.commonRepoReqType): Promise { + return request({ + url: `/api/v2/projects/${params.repoId}/repository/tree`, + method: 'get', + params + }); +} +// 文件树查询(指定路径返回树形结构) +export function getRepoTreeByPath(params: types.commonRepoReqType): Promise { + return request({ + url: `/api/v2/projects/${params.repoId}/repository/upper_files_tree`, + method: 'get', + params + }); +} +// 获取仓库README文件 +export function getRepoReadme(params: types.commonRepoReqType): catchRt { + return reqCatchV2(() => + request({ + url: `/api/v2/projects/${params.repoId}/repository/readme_file`, + method: 'get', + params + }) + ); +} +// 获取仓库网络信息 +export function getRepoNetwork(params: types.commonRepoReqType): Promise { + return request({ + url: `/api/v2/projects/${params.repoId}/repository/network`, + method: 'get', + params + }); +} +// 日志树查询 +export function getRepoLogsTree(params: types.commonRepoReqType): Promise { + return request({ + url: `/api/v2/projects/${params.repoId}/repository/logs_tree`, + method: 'get', + params + }); +} +// 获取默认分支 +export function getRepoDefaultBranch(params: types.commonRepoReqType): Promise { + return reqCatch( + () => + request({ + url: `/api/v2/projects/${params.repoId}/repository/default_branch`, + method: 'get', + params + }), + params + ); +} +// 获取分支概览的分支信息 +export function getRepoBranchView(params: types.commonRepoReqType): Promise { + return reqCatch( + () => + request({ + url: `/api/v2/projects/${params.repoId}/repository/branch_overview`, + method: 'get', + params + }), + params + ); +} +// 获取项目仓库比较信息 +export function getRepoCompare(params: types.commonRepoReqType): Promise { + return reqCatch( + () => + request({ + url: `/api/v2/projects/${params.repoId}/repository/compare`, + method: 'get', + params + }), + params + ); +} +// 获取文件查看链接(浏览器打开) +export function getFileRaw(data: types.commonRepoReqType): Promise { + return Promise.resolve( + `${fileDownloadBaseURL}/${decodeURIComponent(data.repoId)}/raw/${encodeURIComponent(data.ref)}/${data.filePath}` + ); +} +// 获取文件下载链接(附件下载) +export function getBlobRaw(params: types.commonRepoReqType): Promise { + return Promise.resolve( + `${fileDownloadBaseURL}/${decodeURIComponent(params.repoId)}/blobs/${params.sha}/${params.file_name}` + ); +} +// 仓库文件上传 +export function uploadRepoFile(params: types.commonRepoReqType): Promise { + // 使用formData上传 + const formData = new FormData(); + Object.entries(params).forEach(([key, val]) => { + formData.append(key, val); + }); + + return request( + { + url: `${fileUploadBaseURL}/${decodeURIComponent(params.repoId)}/uploads/file`, + method: 'post', + data: formData, + headers: { + 'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundaryn8D9asOnAnEU4Js0' + }, + withCredentials: true + }, + { + customError: true + } + ); +} + +// 仓库 issue,mr 图片上传方法 +export function uploadRepoImage(data: { + project_id: string; + attach: string; + file_name: string; +}): Promise { + const { project_id, attach, file_name } = data; + return reqCatch( + () => + request({ + url: `${fileUploadBaseURL}/${project_id}/uploads/image_file`, + method: 'post', + data: { attach, file_name } + }), + data + ); +} +// 获取仓库下载压缩包 +export function getRepoArchive(params: types.commonRepoReqType): Promise { + return request({ + url: `/api/v2/projects/${params.repoId}/repository/archive`, + method: 'get', + params + }); +} +// 新增里程碑 +export function addRepoMilestones(data: types.commonRepoReqType): Promise { + return request({ + url: `/api/v1/projects/${data.repoId}/milestones`, + method: 'post', + data + }); +} +// 编辑里程碑 +export function editRepoMilestones(data: types.commonRepoReqType): Promise { + return request({ + url: `/api/v1/projects/${data.repoId}/milestones/${data.id}`, + method: 'put', + data + }); +} +// 删除里程碑 +export function deletedRepoMilestones(data: types.commonRepoReqType): Promise { + return request({ + url: `/api/v1/projects/${data.repoId}/milestones/${data.id}`, + method: 'delete' + }); +} +// 获取里程碑列表 +export function getRepoMilestones(params: types.commonRepoReqType): Promise { + return request({ + url: `/api/v1/projects/${params.repoId}/milestones`, + method: 'get', + params + }); +} +// 获取里程碑详情 +export function getRepoMileStoneDetail(params: { + project_id: string; + milestone_id: string; +}): Promise { + const { project_id, milestone_id } = params; + return request({ + url: `/api/v1/projects/${project_id}/milestones/${milestone_id}`, + method: 'get' + }); +} +// 获取项目动态 +export function getRepoEvents(params: types.commonRepoReqType): catchRt { + return reqCatchV2(() => + request({ + url: `/api/v1/projects/${params.repoId}/events`, + method: 'get', + params + }) + ); +} +// 获取项目贡献者 +export function getRepoContributors( + params: types.commonRepoReqType +): catchRt> { + return reqCatchV2(() => + request({ + url: `/api/v2/projects/${params.repoId}/repository/contributors`, + method: 'get', + params + }) + ); +} + +// 获取用户在项目中的权限 +export function getRepoRole(params: { repoId: string }) { + return request( + { + url: `/api/v2/projects/${params.repoId}/role`, + method: 'get' + }, + { + customError: true + } + ); +} + +// 获取项目成员 +export function getRepoMember(params: { + repoId: string; + page?: number; + per_page?: number; + query?: string; +}): Promise { + const { repoId, ...param } = params; + return request( + { + url: `/api/v1/projects/${repoId}/members/all`, + method: 'get', + params: Object.assign({ page: 1, per_page: 10 }, param) + }, + { + customError: true + } + ); +} + +/** 获取项目下等待邀请的成员列表 */ +export function getRepoInviteMember(params: { repoId: string; page?: Number; per_page?: number }): Promise { + const { repoId, ...pager } = params; + return reqCatch(() => + request({ + url: `/api/v1/projects/${repoId}/members/invite`, + params: Object.assign({ page: 1, per_page: 100 }, pager) + }) + ); +} + +/** 项目设置项目成员中邀请成员 */ +export function toInviteUser(data: { repoId: string; conf: Record }) { + const { repoId, conf } = data; + return reqCatch(() => + request({ + url: `/api/v1/invitation/${repoId}/invite`, + method: 'post', + data: { + ...conf, + source_type: '1' // 0 组织 1 项目 + } + }) + ); +} + +/** 项目设置撤销邀请 */ +export function retractRepoInvite(data: { repoId: string; username: string }) { + const { repoId, username } = data; + return reqCatch(() => + request({ + url: `/api/v1/invitation/${repoId}/1/members/${username}/revoke`, + method: 'delete' + }) + ); +} + +/** 项目设置退出项目 */ +export function exitRepo(data: { repoId: string;[x: string]: any }) { + const { repoId } = data; + return reqCatch(() => + request({ + url: `/api/v1/projects/${repoId}/leave`, + method: 'delete' + }) + ); +} + +/** 项目设置移除用户 */ +export function removeRepoUser(data: { repoId: string; username: string }) { + const { repoId, username } = data; + return reqCatch(() => + request({ + url: `/api/v1/projects/${repoId}/members/${username}`, + method: 'delete' + }) + ); +} + +/** 组织成员设置权限 */ +export function setRepoUserLevel(data: { repoId: string; username: string; access_level: '30' | '10' }) { + const { repoId, username, access_level } = data; + return reqCatch(() => + request({ + url: `/api/v1/projects/${repoId}/members/${username}`, + method: 'put', + data: { access_level } + }) + ); +} + +// 获取GitIgnore列表 +export function getGitIgnoreList(params: types.commonRepoReqType): Promise { + return request({ + url: `/api/v1/internal/templates/gitignore_keys`, + method: 'get', + params + }); +} +// 获取LICENSE列表 +export function getLicenseList(params: types.commonRepoReqType): Promise { + return request({ + url: `/api/v1/internal/templates/license_keys`, + method: 'get', + params + }); +} +// 文件详情页-文件搜索,加载repo所有文件 +export function getRepoFileList(params: types.commonRepoReqType): Promise { + return request({ + url: `/api/v2/projects/${params.repoId}/repository/file_list`, + method: 'get', + params + }); +} +// 获取项目的通知状态 +export function getRepoNotice(params: types.commonRepoReqType): catchRt { + return reqCatchV2(() => + request({ + url: `/api/v1/projects/${params.repoId}/watch`, + method: 'get', + params: { project_id: params.repoId } + }) + ); +} +// 修改项目的通知状态 +export function updateRepoNotice(data: types.commonRepoReqType): catchRt { + return reqCatchV2(() => + request({ + url: `/api/v1/projects/${data.repoId}/watch`, + method: 'put', + data + }) + ); +} +// 查询项目状态 +export function getRepoStatus(params: types.commonRepoReqType): Promise { + return request({ + url: `/api/v2/projects/${params.repoId}/fork_status`, + method: 'get', + params + }); +} +// 查询项目导入状态 +export function getRepoImportStatus(params: types.commonRepoReqType): catchRt { + return reqCatchV2(() => + request({ + url: `/api/v2/projects/${params.repoId}/import_status`, + method: 'get', + params + }) + ); +} +/** wiki列表 */ +export function getWikiList(params: types.WikiListReqType): catchRt> { + return reqCatchV2(() => + request({ + url: `/api/v1/wiki/list`, + method: 'get', + params + }) + ); +} +/** wiki创建 */ +export function createdWiki(data: types.RepoWikiReqType): catchRt { + return reqCatchV2(() => + request({ + url: `/api/v1/wiki/create`, + method: 'post', + data + }) + ); +} +/** wiki编辑 */ +export function updateWiki(data: types.RepoWikiReqType): catchRt { + return reqCatchV2(() => + request({ + url: `/api/v1/wiki/update`, + method: 'put', + data + }) + ); +} +/** wiki删除 */ +export function deleteWiki(data: { repo_path: string; file_path: string }): catchRt { + return reqCatchV2(() => + request({ + url: `/api/v1/wiki/delete`, + method: 'delete', + data + }) + ); +} +/** wiki详情 */ +export function getWikiDetail(params: { repo_path: string; file_path: string }): catchRt { + return reqCatchV2(() => + request({ + url: `/api/v1/wiki/detail`, + method: 'get', + params + }) + ); +} +/** wiki导航 */ +export function wikiPages(data: { repo_path: string }): Promise { + return request({ + url: `/api/v1/wiki/pages`, + method: 'post', + data + }); +} +/** wiki的commit历史 */ +export function wikiCommitHistory( + params: types.RepoWikiHistoryReqType +): catchRt> { + return reqCatchV2(() => + request({ + url: `/api/v1/wiki/commit_histroy`, + method: 'get', + params + }) + ); +} +/** 获取仓库下载压缩包 */ +export function getArchives(params: types.archiveType): Promise { + return request({ + url: `/api/v4/projects/${params.repoId}/repository/archive`, + method: 'get', + params + }); +} +// 项目迁移 +export function repoMigrate(data: types.commonRepoReqType): catchRt { + return reqCatchV2(() => + request({ + url: `/api/mirror/v1/project/myGithub`, + method: 'post', + data + }) + ); +} +// 迁移批量导入 +export function migrateImport(data: types.commonRepoReqType): catchRt { + return reqCatchV2(() => + request({ + url: `/api/mirror/v1/project/import`, + method: 'post', + data + }) + ); +} +// 上次的批量导入 +export function recentMigrate(params: types.commonRepoReqType): catchRt { + return reqCatchV2(() => + request({ + url: `/api/mirror/v1/project/myLastGithub`, + method: 'get', + params + }) + ); +} + +/** 创建项目成员邀请链接 **/ +export function createRepoMemberLink(data: { repoId: string } & types.MemberInviteLinkProps) { + const { repoId, ...config } = data; + return reqCatch(() => + request({ + url: `/api/v1/project/${repoId}/invite/link`, + method: 'post', + data: config + }) + ); +} +/** 删除项目成员邀请链接 */ +export function deleteMemberInviteLink(repoId: string, inviteId: string) { + return reqCatch(() => + request({ + url: `/api/v1/project/${repoId}/${inviteId}/invite/link`, + method: 'delete' + }) + ); +} +/** 查询项目成员邀请链接列表 */ +export function getMemberInviteLinks(params: { repoId: string; page?: number; per_page?: number }) { + const { repoId, ...pager } = params; + return reqCatch(() => + request({ + url: `/api/v1/${repoId}/invite/link`, + params: Object.assign({ page: 1, per_page: 10 }, pager) + }) + ); +} +/** 修改项目成员邀请链接 **/ +export function updateRepoMemberLink(data: { repoId: string; inviteId: string } & types.MemberInviteLinkProps) { + const { repoId, inviteId, ...config } = data; + return reqCatch(() => + request({ + url: `/api/v1/project/${repoId}/${inviteId}/invite/link`, + method: 'put', + data: config + }) + ); +} +/** 接受项目邀请链接 */ +export function acceptRepoInvite(invite_code: string) { + return reqCatch(() => + request({ + url: `/api/v1/${invite_code}/invite/accept` + }) + ); +} +/** 查看项目邀请链接待接受成员列表 */ +export function getAcceptRepoMember(params: { repoId: string; page?: number; per_page?: number }) { + const { repoId, ...pager } = params; + return reqCatch(() => + request({ + url: `/api/v1/${repoId}/invite/accept/member`, + params: Object.assign({ page: 1, per_page: 10 }, pager) + }) + ); +} +/** 审核链接访问的成员 */ +export function checkRepoLinkMember(data: { + repoId: string; + id: number; + access_level: string; + member_expires_at?: string; + audit: '0' | '2'; +}) { + const { repoId, id, ...conf } = data; + return reqCatch(() => + request({ + url: `/api/v1/project/${repoId}/${id}/invite/audit`, + method: 'put', + data: conf + }) + ); +} +/** 删除链接访问的成员 */ +export function removeRepoLinkMember(repoId: string, id: number) { + return reqCatch(() => + request({ + url: `/api/v1/project/${repoId}/${id}/invite/audit`, + method: 'delete' + }) + ); +} +/** 新增仓库镜像 */ +export function createRepoMirror(data: { url: string; repoId: string }) { + const { repoId, ...conf } = data; + return reqCatch(() => + request({ + url: `/api/v2/projects/${repoId}/repo_remote_mirror`, + method: 'post', + data: conf + }) + ); +} +/** 获取仓库镜象 */ +export function getRepoMirrorInfo(repoId: string) { + return reqCatch(() => + request({ + url: `/api/v2/projects/${repoId}/repo_remote_mirror` + }) + ); +} +/** 删除仓库信息 */ +export function delRepoMirrorInfo(repoId: string) { + return reqCatch(() => + request({ + url: `/api/v2/projects/${repoId}/repo_remote_mirror`, + method: 'delete' + }) + ); +} +/** 修改仓库镜像 */ +export function updateMirrorInfo(data: { repoId: string; mirroring_enabled: boolean }) { + const { repoId, ...conf } = data; + return reqCatch(() => + request({ + url: `/api/v2/projects/${repoId}/repo_remote_mirror`, + method: 'put', + data: conf + }) + ); +} +/** 邀请链接查询是否被邀请过 */ +export function checkInvited(invite_code: string) { + return reqCatch(() => + request({ + url: `/api/v1/${invite_code}/invite/accept/before` + }) + ); +} +/** 查询是否已被邀请 */ +export function checkInvitedStatus(source_id: string, username: string) { + return reqCatch(() => + request({ + url: `/api/v1/${source_id}/invite/accept/byUserName`, + params: { + username + } + }) + ); +} +/** 获取项目首页的topic数据 */ +export function getRepoTopic(repoId: string) { + return reqCatch(() => + request({ + url: `/api/v2/topics/project/${repoId}` + }) + ); +} +/** 更新topic列表 */ +export function updateRepoTopic(repoId: string, topics: string[]) { + return reqCatch(() => + request({ + url: `/api/v2/topics/project/${repoId}`, + method: 'put', + data: topics + }) + ); +} +/** 搜索topic */ +export function searchRepoTopic(search: string) { + return reqCatch(() => + request({ + url: `/api/v2/topics/search`, + params: { + search, + page: 1, + per_page: 100 + } + }) + ); +} +// 获取近28天star数量 +export function getRepoStarsChart(projectId: number): Promise { + return request({ + url: `/api/mirror/v1/project/starDailyCount`, + method: 'get', + params: { + projectId + } + }); +} +// 获取项目贡献者 +export function getRepoSearch(params: types.commonRepoReqType): catchRt { + return reqCatchV2(() => + request({ + url: `/api/v1/projects/search/page`, + method: 'get', + params + }) + ); +} + +// 获取topic详情 +export function getTopicDetail(topicId: string): catchRt { + return reqCatchV2(() => + request({ + url: `/api/v2/topics/${topicId}`, + method: 'get' + }) + ); +} + +export function getTopicDetailByName(topicName: string): catchRt { + return reqCatchV2(() => + request({ + url: `/api/v2/topics/byName/${topicName}`, + method: 'get' + }) + ); +} + +// 根据关键字搜索topic +export function getTopicSearch(params: types.commonRepoReqType): catchRt { + return reqCatchV2(() => + request({ + url: `/api/v2/topics/search`, + method: 'get', + params + }) + ); +} + +// 根据topic与语言过滤项目分页列表 +export function getTopicRepos(params: types.commonRepoReqType): catchRt { + return reqCatchV2(() => + request({ + url: `/api/v2/topics/${params.id}/projects`, + method: 'get', + params + }) + ); +} + +// 当前用户star当前topic +export function starTopic(topicId: string): catchRt { + return reqCatchV2(() => + request({ + url: `/api/v2/topics/${topicId}/user/star`, + method: 'put' + }) + ); +} + +// 当前用户star当前topic +export function unstarTopic(topicId: string): catchRt { + return reqCatchV2(() => + request({ + url: `/api/v2/topics/${topicId}/user/unStar`, + method: 'put' + }) + ); +} + +// 本地部署设置 +export function deploySetting(repoId: string, data: object): Promise { + return reqCatch(() => + request({ + url: `/api/v2/projects/${repoId}/common/setting`, + method: 'put', + data + }) + ); +} + +// 获取项目下载克隆数据 +export function getRepoClone(repoId: string): Promise { + return reqCatch(() => + request({ + url: `/api/v2/projects/${repoId}/repository/download_statistics`, + method: 'get' + }) + ); +} + +// 获取分支差异数对比 +export function getBranchDiff(project_id: string, branch: string): Promise { + return reqCatch(() => + request({ + url: `/api/v2/projects/${project_id}/repository/diverged`, + method: 'get', + params: { + branch: branch + } + }) + ); +} + +// 判断代码是否存在冲突 +export function getIsConflict(params: types.commonRepoReqType): Promise { + const { project_id, branch_name, other_project_id, other_branch_name } = params; + return reqCatch(() => + request({ + url: `/api/v2/projects/${project_id}/branches/${branch_name}/exist_conflict/${other_project_id}/${other_branch_name}`, + method: 'get' + }) + ); +} + +// 同步分支代码 +export function syncBranchCode(project_id: string, branch: string): Promise { + return reqCatch(() => + request({ + url: `/api/v2/projects/${project_id}/sync_repo`, + method: 'put', + data: { + branch: branch + } + }) + ); +} +// 获取可选择的cla列表 +export function getClaList(params: types.commonRepoReqType): catchRt { + return reqCatch(() => + request({ + url: `/api/v2/cla/projectClaList`, + method: 'get', + params + }) + ); +} + +// 判断是否可同步 +export function isEnableSyncCode(project_id: string, branch: string): Promise { + return reqCatch(() => + request({ + url: `/api/v2/projects/${project_id}/sync_repo`, + method: 'get', + params: { + branch: branch + } + }) + ); +} + +// 获取MR相关的用户列表签署cla的情况 +export function getClaSignUser(repo_id: number, merge_request_iid: string): Promise { + return reqCatch(() => + request({ + url: `/api/v2/cla/${repo_id}/merge_requests/${merge_request_iid}/cla_sign_users`, + method: 'get' + }) + ); +} + +// 仓库设置清理仓库 +export function clearRepoSetting(project_id: string): Promise { + return reqCatch(() => + request({ + url: `/api/v2/projects/${project_id}/housekeeping`, + method: 'post', + data: {} + }) + ); +} + +// 获取项目列表 +export function getRepoList(params: object): Promise { + return request({ + url: `/api/v2/projects`, + method: 'get', + params + }); +} + +// 从pr设置中获取审查及测试人信息 +export function getPrSetting(data: types.commonRepoReqType): Promise { + return reqCatch(() => + request({ + url: `/api/v2/projects/${data.repoId}/pr_review/setting`, + method: 'get' + }) + ); +} +// 预览 +export function getDiscussionPreview(params: types.DiscussionPreviewProps): Promise { + return reqCatch(() => + request({ + url: `/api/v1/discussion/preview`, + method: 'get', + params + }) + ); +} + +// 设置pr审查及测试人信息 +export function setPrSetting(data: types.commonRepoReqType): Promise { + return reqCatch(() => + request({ + url: `/api/v2/projects/${data.repoId}/pr_review/setting`, + method: 'put', + data: data.params + }) + ); +} + +// 获取设置中可选的审查及测试人列表 +export function getPrApproval(data: types.commonRepoReqType): Promise { + return reqCatch(() => + request({ + url: `/api/v2/projects/${data.repoId}/merge_requests/approval_user`, + method: 'get', + params: data.params + }) + ); +} +// 获取原始评论数据 +export const getOriginalComment = (params: types.DiscussionCommentProps): Promise => { + return reqCatch(() => + request({ + url: `/api/v1/discussion/${params.type}/${params.discussionId}`, + method: 'get', + }) + ); +} diff --git a/src/api/repo/types.ts b/src/api/repo/types.ts new file mode 100644 index 0000000..afc8aeb --- /dev/null +++ b/src/api/repo/types.ts @@ -0,0 +1,209 @@ +import { VISIBILITY } from '@/constant/enum'; +import { type forkType, type errorType, type repoType } from '@/api/types/common'; +import { type TypeAll } from '@/utils/types'; +export interface createRepoReqType { + name: string; + path: string; + import_url?:string; + description?: string; + visibility?: VISIBILITY; +} + +export interface createRepoResType extends errorType { + [propName: string]: any; +} + +export interface commonRepoReqType extends repoType { + [propName: string]: any; +} + +export interface forkRepoReqType extends forkType { + [propName: string]: any; + name?: string; + namespace?: number; + need_sync_settings?: string[]; + path?: string; + fork_from_project_id?: string; +} + +export interface commonRepoResType extends errorType { + name: string // 项目名称 + default_branch: string // 项目默认分支 + path: string // 仓库路径 + description: string // 项目描述 + ci_config_path?: string // ci配置文件路径 + issues_enabled?: boolean // 是否启用问题追踪器 + merge_requests_enabled?: boolean // 是否启用合并请求 + wiki_enabled?: boolean // 是否启用wiki + jobs_enabled?: boolean // 是否启用作业 + snippets_enabled?: boolean // 是否启用代码片段 + shared_runners_enabled?: boolean // 是否为该项目启用共享Runner + resolve_outdated_diff_discussions?: boolean // 是否在推送时自动解决合并请求差异讨论 + container_registry_enabled?: boolean // 是否为该项目启用容器注册表 + lfs_enabled?: boolean // 是否为该项目启用Git LFS + visibility: 'private' | 'internal' | 'public' // 项目可见性级别 + security?: 'secret_top' | 'secret' | 'secret_outer' | 'confidential' | 'internal' | 'open_source' // 项目安全级别 + visibility_level?: number // 项目在devclound中的可见性级别 + public_builds?: boolean // 是否执行公共构建 + request_access_enabled?: boolean // 是否允许用户请求成员访问权限 + only_allow_merge_if_pipeline_succeed?: boolean // 仅在管道后成功允许 + only_allow_merge_if_all_discussions_are_resolved?: boolean // 仅在所有讨论都已解决后允许合并 + tag_list?: string[] // 标签列表 + avatar?: string[] // 头像列表 + printing_merge_request_link_enabled?: boolean // 从命令行推送时是否显示创建/查看合并请求的链接 + merge_method?: 'ff' | 'rebase_merge' | 'merge' // 合并请求时使用的合并方法 + iright_snapshot?: string // iright应用信息 + initialize_with_readme?: boolean // 是否使用Readme.md初始化项目 + initialize_with_gitignore?: string // 选择添加.gitignore模板 + initialize_with_license?: string // 选择添加license模板 + partition?: string // 分区 + [x: string]: any +} + +export interface commonRepoBranchResType { + description: string // 分支描述 + name: string // 分支名称 + protected: boolean // 是否受到分支保护 + merged: boolean // 是否合并 + default: boolean // 是否为默认分支 + [x: string]: any +} +// 项目用户角色权限 +export interface IRole { + 'id': number, + 'username': string, + // 管理员 50,开发30, 浏览者10 + 'access_level': 50 | 30 | 10, + 'project': { + // 安全级别 + 'security_level': 40 + }, + 'committer_system_from'?: boolean +} +// 获取贡献者的返回 +export interface ContributorReqType { + additions:number; + commits:number; + deletions:number; + email:string; + name:string; +} +interface User { + id:number; + username:string; + nickname:string; + avatar:string; + skill:any[] +} +interface Ext { + liveId:string; + coverImg:string; + isRecommend:boolean; + isHot:true; +} +// 精选内容的返回 +export interface SelectedArticleReqType { + nsId:number; + mediaAid:string; + type:number; + title:string; + desc:string; + customDomain:string; + startAt:string; + endAt:string; + status:number; + ext:Ext; + user:User; +} +// 相关搜索关键词返回 +export type HotSearchKeyReqType = TypeAll<'name'|'link', string>; +// 通知类型返回 +export interface RepoNoticeReqType { + count:number; + custom_watching:any; + watch_type:string; +} + +export interface RepoWikiReqType {// wiki创建更新文件请求参数 + repo_path: string, + name: string, + file_path?: string, + commit_message: string, + content: string, + currUserId?: string +} +export interface WikiFileResType {// wiki详情返回 + name:string; + path:string; + size: number, + encoding:string; + blob_id:string; + file_type:string; + commit_history_count:string; + last_commit_id:string; + author_name:string; + committed_date:string; + content:string; +} +export interface WikiListReqType {// wikilist请求参数 + repo_path:string; + page?:number; + per_page?:number; +} +export interface WikiListResType {// wikilist返回 + author_name:string; + name:string; + avatar?:string; + committed_date:string; +} +export interface RepoWikiHistoryReqType {// wiki历史版本请求参数 + file_path:string, + repo_path: string, + page?: number, + per_page?: number, +} +export interface WikiHistoryResType {// wiki历史版本返回 + id:string; + message:string; + parent_ids:string[]; + authored_date:string; + author_name:string; + author_email:string; + committed_date:string; + committer_name:string; + committer_email:string; + open_gpg_verified: boolean; + verification_status: number; + gpg_primary_key_id:string; + short_id:string; + created_at:string; + title:string; + author_avatar_url:string; + committer_avatar_url:string; + relate_url: { + related_id:string; + related_url:string; + }[] +} +export interface archiveType extends repoType { + sha: string; + archive_format: string; +} + +export interface MemberInviteLinkProps { + access_level: number | string, + audit_status: 0 | 1 | string, + url_expires_at?:string, + member_expires_at?:string, + remark?:string +} + +export interface DiscussionPreviewProps { + discussion: string, +} + +export interface DiscussionCommentProps { + type: 1 | 2 | 3 | 4, + discussionId: string | number, +} + diff --git a/src/api/report/index.ts b/src/api/report/index.ts new file mode 100644 index 0000000..f86a91b --- /dev/null +++ b/src/api/report/index.ts @@ -0,0 +1,11 @@ +import request from '@/utils/request'; + +// 数据上报 +export function report(eventId: string, data: object, headers: object = {}): Promise { + return request({ + url: `/api/v1/report?event_id=${eventId}`, + method: 'post', + data, + headers + }); +} diff --git a/src/api/settings/index.ts b/src/api/settings/index.ts new file mode 100644 index 0000000..c4c9143 --- /dev/null +++ b/src/api/settings/index.ts @@ -0,0 +1,53 @@ +import { reqCatchV2, type catchRt } from '@/utils/catch'; +import request from '@/utils/request'; +import type { userCreateSSHKeyReqType, generalSearchReqType, getUserSSHKeyResType, sshKeyid } from './types'; +import Mock from 'mockjs'; + +// 获取镜像信息 +export function getMirrorData(params: any): Promise { + return Promise.resolve([(Mock.mock({ + 'isOpen': false, + 'dataList': [ + { + type: 0, + add: 'http:6', + success: 1, + time: 2 + }, + { + type: 1, + add: 'http:fdsjoijfsdoijdfsiojfsdiojoidsfoijfdsijo', + success: 0, + time: 2 + }] + })) + ]); +} + +// 创建用户SSHKey +export function createUserSSH(sshKey: userCreateSSHKeyReqType): catchRt { + const reqForm = new FormData(); + reqForm.append('key', sshKey.keyValue); + reqForm.append('title', sshKey.keyName); + return reqCatchV2(() => request({ + url: `/api/v1/user/keys`, + method: 'post', + data: reqForm + }, { customError: true })); +} +// 查询用户SSHKey列表 +export function getUserSSHList(searchParams: generalSearchReqType): catchRt { + return reqCatchV2(() => request({ + url: `/api/v1/user/keys`, + method: 'get', + params: searchParams + })); +} +// 删除用户SSHKey +export function deleteSSHKey(key_id:sshKeyid, title:string): catchRt { + return reqCatchV2(() => request({ + url: `/api/v1/user/keys/${key_id}`, + method: 'delete', + params: { title: title } + })); +} diff --git a/src/api/settings/types.ts b/src/api/settings/types.ts new file mode 100644 index 0000000..1637a20 --- /dev/null +++ b/src/api/settings/types.ts @@ -0,0 +1,51 @@ +import type { SSHData } from '@/components/SecretKeyItem/types'; +export interface ITransSSHKey { + keyName: string; + keyValue: string; + writable: boolean; +} +// 用户创建SSHKey请求参数 +export interface userCreateSSHKeyReqType { + keyName: string; + keyValue: string; + permissions: string; + expireTime: string; +} +// 通用列表查询参数 +export interface generalSearchReqType { + page: number; + per_page: number; + search: string; +} +// 用户SSHKey接口返回 +export interface getUserSSHKeyResType { + id: string | number; + key: string; + title: string; + created_at: string; +} +export type sshKeyid = SSHData['id']; +export interface Log { + type: string; + operator: string; + logInfo: string; + createdTime: string; +} + +export interface LogFilter { + type?: string; + operator?: string; + logInfo?: string; + range?: [Date | '', Date | '']; +} + +export interface LogSource { + (pageSize: number, pageIndex: number, logFilter: LogFilter): Promise +} + +export interface UserRepo { + organization: string; + repoName: string; + repoSize: string; + isMine: boolean; +} diff --git a/src/api/storage-apis.ts b/src/api/storage-apis.ts new file mode 100644 index 0000000..91fecca --- /dev/null +++ b/src/api/storage-apis.ts @@ -0,0 +1,35 @@ +import type { IRequestCache } from "@/utils/apiStorage"; + +const TIMEOUT = 5000; +const RETRY = 2; + +export const storageApis: IRequestCache[] = [ + { + url: '/api/v1/issues', + timeout: 5000, + retry: RETRY, + method: 'get', + excludeStatusCode: [401,403, 404] + }, + { + url: '/api/v1/merge_requests', + timeout: TIMEOUT, + retry: RETRY, + method: 'get', + excludeStatusCode: [401,403, 404] + }, + { + url: '/api/v1/projects/{projectId}/isource/merge_requests', + timeout: TIMEOUT, + retry: RETRY, + method: 'get', + excludeStatusCode: [401,403, 404] + }, + { + url: '/api/v1/issue/{projectId}/issues', + timeout: TIMEOUT, + retry: RETRY, + method: 'get', + excludeStatusCode: [401,403, 404] + } +] \ No newline at end of file diff --git a/src/api/tags/index.ts b/src/api/tags/index.ts new file mode 100644 index 0000000..d45a81b --- /dev/null +++ b/src/api/tags/index.ts @@ -0,0 +1,53 @@ +import request from '@/utils/request'; +import * as types from '@/api/tags/types'; + +export function createTag(data: types.createTagReqType): Promise { + return request({ + url: `/api/v1/projects/${data.repoId}/repository/tags`, + method: 'post', + data + }); +} + +export function getTags(params: types.getTagsReqType): Promise { + return request({ + url: `/api/v1/projects/${params.repoId}/repository/tags`, + method: 'get', + params + }); +} + +export function getTagDetail(params: types.tagDetailType): Promise { + return request({ + url: `/api/v1/projects/${params.repoId}/repository/tags/${params.tag_name}`, + method: 'get', + params + }); +} + +export function deleteTag(params: types.tagDetailType): Promise { + return request({ + url: `/api/v1/projects/${params.repoId}/repository/tags/${params.tag_name}`, + method: 'delete', + params + }); +} + +// 获取未发布版本的tag列表 +export function getUnreleasedTags(params: types.tagDetailType): Promise { + return request({ + url: `/api/v1/projects/${params.repoId}/releases/linktags`, + method: 'get', + params + }); +} + +export function createTagAuth(project_path: string): Promise { + return request({ + url: `/api/v2/projects/get_create_tag_setting`, + method: 'get', + params: { + project_path + } + }); +} diff --git a/src/api/tags/types.ts b/src/api/tags/types.ts new file mode 100644 index 0000000..ecfdef6 --- /dev/null +++ b/src/api/tags/types.ts @@ -0,0 +1,48 @@ +import { tagType, type errorType } from '@/api/types/common'; + +export interface getTagsReqType extends tagType { + /** + * 用户ID或用户名 + */ + creator?: string; + /** + * 返回按照名称(name)、更新时间(updated)或创建时间(created)字段排序 + */ + order_by?: string; + /** + * 当前页码 + */ + page?: string; + /** + * 每页的项目数 + */ + per_page?: string; + /** + * 返回与搜索条件匹配的标签列表 + */ + search?: string; + /** + * 返回排序为升序(asc)或降序(desc) + */ + sort?: string; + /** + * 仅返回标签名称 + */ + view?: string; +} + +export interface tagDetailType extends tagType { + [propName: string]: any; +} + +export interface commonTagsResType extends errorType { + [propName: string]: any; +} + +export interface createTagReqType { + tag_name: string; + ref: string; + message?: string; + release_description?: string; + [propName: string]: any; +} diff --git a/src/api/types/common.ts b/src/api/types/common.ts new file mode 100644 index 0000000..2625027 --- /dev/null +++ b/src/api/types/common.ts @@ -0,0 +1,35 @@ +export interface errorType { + error_code?: number; + error_code_name?: string; + error_message?: string; + trace_id?: string; +} + +export interface repoType { + repoId?: string; +} + +export interface orgType { + groupId: string; +} + +export interface commitType extends repoType { + commitId: string; +} + +export interface tagType extends repoType { + tag_name?: string; +} + +export interface forkType extends repoType { + forked_from_id?: string; +} + +export interface releaseType extends repoType { + tag_name?: string; +} + +export interface resCatch { + error: any; + data: any; +} diff --git a/src/api/types/login.ts b/src/api/types/login.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/api/user/index.ts b/src/api/user/index.ts new file mode 100644 index 0000000..0d7104c --- /dev/null +++ b/src/api/user/index.ts @@ -0,0 +1,697 @@ +import request from '@/utils/request'; +import { reqCatch } from '@/utils/catch'; +import { fileToBlob } from '@/utils/index'; +import type { RegisterReqType, UserProfileReqType, UserPreferenceReqType, UserRepoReqType, LoginPassword, LoginMobile, UserProfileResType, UserProfile, OrgData, FollowerData } from './types'; +import { reqCatchV2, type catchRt } from '@/utils/catch'; +import { AES, enc, mode, pad } from 'crypto-js'; +import type { AxiosResponse } from 'axios'; +import type { ProfileRepoItemResData } from '@/views/User/hooks/useRepoList'; + +/** 帐号密码登录 */ +export function toLogin(data: LoginPassword): Promise { + const key = enc.Utf8.parse((import.meta as any).env.VITE_SECRET_KEY); + const iv = enc.Utf8.parse((import.meta as any).env.VITE_SECRET_IV); + const cryptoCode = AES.encrypt(data.password, key, { + iv, + mode: mode.CBC, + padding: pad.Pkcs7 + }); + const userInfo = { + username: data.username, + password: cryptoCode.toString() + }; + return reqCatch(() => request({ + url: '/api/v1/user/oauth/login', + method: 'post', + data: userInfo, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + }), userInfo); +} +/** 验证码登录 */ +export function loginByMobile(data: Exclude): Promise { + return reqCatch(() => request({ + url: '/api/v1/user/oauth/login/mobile', + method: 'post', + data, + headers: { + 'content-type': 'application/x-www-form-urlencoded' + } + })); +} +/** 获取gitcode手机号验证码 */ +export function verifyRegisterCode(data: { mobile: string, type: 'REGISTER' | 'ATTACH_MOBILE', raw_data?: string }): Promise { + return reqCatch(() => request({ + url: '/api/v1/user/sms/send/codeByBiz', + method: 'post', + data: { + biz_enum: data.type, + mobile: data.mobile, + raw_data: data.raw_data || '' + } + })); +} +/** 获取华为手机号验证码 */ +export function verifyHwCode(data: { mobile: string }): Promise { + return reqCatch(() => request({ + url: '/api/v1/user/sendVeriCode', + method: 'post', + data + })); +} + +/** gitcode手机号验证注册 */ +export function registerByMobile(data: RegisterReqType): Promise { + return reqCatch(() => request({ + url: '/api/v1/user/register', + method: 'post', + data + })); +} + +/** + * 华为云手机号验证注册 + * @deprecated at 2023.11.02 精简注册 +*/ +export function registerBind(data: { mobile: string, user_id: string, mask: string, verificationcode: string }): Promise { + return reqCatch(() => request({ + url: '/api/v1/user/registerIAM', + method: 'post', + data + })); +} + +/** 快捷注册短信验证 */ +export function getQuickLoginMsg(data: { mobile: string, biz_enum?: string }): Promise { + return reqCatch(() => request({ + url: '/api/v1/user/sms/send/codeByBiz', + method: 'post', + data: { + mobile: data.mobile, + biz_enum: data.biz_enum || 'LOGIN' + } + })); +} + +/** 手机号快捷注册 */ +export function quickRegister(data: RegisterReqType): Promise { + return reqCatch(() => request({ + url: '/api/v1/user/quickRegister', + method: 'post', + data: data + })); +} + +/** 获取手机或者邮箱验证码 */ +export function getMobileEmailCode(mobile_email: string) { + return reqCatch(() => request({ + url: `/api/v1/user/forgetCode?mobile_email=${mobile_email}` + })); +} + +/** 登录重置密码 */ +export function resetUserPassword(data: { mobile_email: string, password: string, code: string }) { + return reqCatch(() => request({ + url: '/api/v1/user/forgetPassword', + method: 'post', + data + })); +} + +/** 退出登录 */ +export function toLogout() { + return reqCatch(() => request({ + url: '/api/v1/user/oauth/logout', + method: 'post' + })); +} + +/** 获取第三方绑定信息 */ +export function getBindUserInfo(platform: 'csdn' | 'gitee' | 'github' | 'atomgit', code: string, state: string, signup_type: string) { + return reqCatch(() => request({ + url: `/api/v1/oauth/callback/${platform}`, + params: { code, state, signup_type } + })); +} + +/** 第三方登录绑定手机号 */ +export function bindAuthMobile(data: { user_id: string, mask: string, identity_id: string, mobile: string, verificationcode: string, signup_type: string }) { + return reqCatch(() => request({ + url: '/api/v1/oauth/attach/mobile', + method: 'post', + data + })); +} + +/** 模糊查询用户信息 */ +export function fuzzyFindUserInfo(usernameOrEmail: string) { + return reqCatch(() => request({ + url: '/api/v1/findUser/fuzzy', + params: { usernameOrEmail } + })); +} + +/** 查询用户名是否已存在 */ +export function checkUsername(username: string) { + return reqCatch(() => request({ + url: '/api/v1/user/checkSameUser', + params: { username } + })); +} + +// 获取当前用户所有命名空间 +export function getNamespaces(params: any): Promise { + return reqCatch(() => request({ + url: '/api/v1/groups', + method: 'get', + params + }), params); +} + +// 获取当前用户fork的所有命名空间 +export function getForkGroups(params: any): Promise { + return reqCatch(() => request({ + url: `/api/v2/projects/${params.repoId}/fork_groups/page`, + method: 'get', + params + }), params); +} + +// 获取当前用户所有命名空间 +export function getManageableGroups(params: any): Promise { + return reqCatch(() => request({ + url: '/api/v1/user_groups/manageable_groups', + method: 'get', + params + }), params); +} + +export function postUploadAvatar(params: any): Promise { + return reqCatch(() => request({ + url: '/api/v1/obs/user/avatar', + method: 'get' + }), params); +} + +export function postUploadImage(params: any): Promise { + return reqCatch(() => request({ + url: '/api/v1/obs/image', + method: 'post', + data: params + }), params); +} + +// 封装公共文件上传方法 +export async function uploadFile(fileInfo: any, isAvatar: boolean, fileType: string = '') { + try { + if (fileInfo.length > 0) { + const file = fileInfo[0]; + const params = { + object_key: `${location.pathname}/` + file.name, + file_type: file.name.split('.')[1], + is_avatar: isAvatar + }; + let res; + if (isAvatar) { + res = await postUploadAvatar(params); + } else { + params.content_type = fileType; + res = await postUploadImage(params); + } + const blob: any = await fileToBlob(file); + let url = ''; + + let uploadParams: any = {}; + for (const key in res.data.data) { + url = key; + uploadParams = res.data.data[key]; + } + const imgRes = await fetch(url, { + method: 'put', + body: blob, + headers: { + 'Content-Type': uploadParams['Content-Type'], + 'x-obs-acl': uploadParams['x-obs-acl'], + 'Host': uploadParams['Host'] + } + }); + if (imgRes.status === 200) { + return uploadParams['cdn-img-addr']; + } else { + return ''; + } + } + } catch (err) { + return err; + } +}; + +export function findUser(data: object | null): Promise { + return request({ + url: '/api/v1/findUser/condition', + method: 'get', + params: data + }); +}; +// 更新用户基本信息 +export function updateUserProfile(data: UserProfileReqType | UserPreferenceReqType | UserRepoReqType): catchRt { + return reqCatchV2(() => request({ + url: '/api/v1/user/setting/save', + method: 'post', + data + })); +} +// 查询用户信息 +export function getUserProfile(params: { username: string, type?: string }): Promise> { + return request({ + url: '/api/v1/user/setting/profile', + method: 'get', + params + }); +} + +// 查询用户活动 +export function queryUserActivities(params: any): Promise> { + return request({ + url: '/api/v1/events', + method: 'get', + params + }, { customError: true }); +} + +// 查询用户活动-新接口 +export function queryUserActivitiesNew(params: any): Promise> { + return request({ + url: '/api/v1/events/user', + method: 'get', + params + }, { customError: true }); +} + +// 查询用户项目 +export function queryUserRepos(params: { user_id: string;[propName: string]: any; }): Promise> { + return request({ + url: `/api/v1/featured/project/profile_project?group_id=${params.username}`, + method: 'get', + params + }); +} + +// 查询用户创建的项目 +export function queryUserCreateRepos(params: { user_name: string; search?: string, [propName: string]: any; }): Promise> { + return request({ + url: `/api/v1/profile/${params.user_name}/created_projects`, + method: 'get', + params + }); +} + +// 查询用户关注的项目 +export function queryUserStarredRepos(params: { user_name: string;[propName: string]: any; }): Promise> { + return request({ + url: `/api/v1/profile/${params.user_name}/starred_projects`, + method: 'get', + params + }, { customError: true }); +} + +// 更新项目状态 +export function updateRepoStatus(params: { type: string; group_id: string; resource_id: string; }): Promise> { + return request({ + url: `/api/v1/featured/${params.type}`, + method: 'post', + params + }); +} + +// 移除对应类型项目 +export function removeRepoStatus(params: { type: string; group_id: string; resource_id: string; }): Promise> { + return request({ + url: `/api/v1/featured/${params.type}`, + method: 'delete', + params + }); +} + +// 查询用户关注数 +export function getUserFollows(params: { username: string }): Promise> { + return request({ + url: '/api/v1/follow/followingCount', + method: 'get', + params + }); +} + +// 查询用户粉丝数 +export function getUserFollowers(params: { username: string; followType: string; }): Promise> { + return request({ + url: '/api/v1/follow/followersCount', + method: 'get', + params + }); +} + +// 查询用户粉丝数和关注数 +export function getUserFollowerCounts(params: { username: string; }): Promise> { + return request({ + url: '/api/v1/follow/userBaseInfo', + method: 'get', + params + }, { customError: true }); +} + +// 查询登录用户是否关注某用户 +export function checkHasFollowed(params: { username: string; otherUsername: string; followType: number }): Promise> { + return request({ + url: '/api/v1/follow/hasFollowed', + method: 'get', + params + }); +} + +// 查询特定用户组织列表 +export function getUserOrgans(params: { user_name: string; page: number; per_page: number }): Promise> { + return request({ + url: `/api/v1/groups/${params.user_name}/list`, + method: 'get', + params + }); +} + +// 查询特定用户的贡献图 +export function queryUserContributes(params: { + username: string; + period?: string; + year?: string; +}): Promise> { + return request({ + url: `/api/v1/events/${params.username}/contributions`, + method: 'get', + params + }, { customError: true }); +} + +// 关注某用户 +export function followUser(params: { username: string; followedUsername: string; followType: number }): Promise> { + return request({ + url: '/api/v1/follow', + method: 'post', + data: params + }); +} + +// 取消关注某用户 +export function unfollowUser(params: { username: string; unfollowUsername: string; followType: number; }): Promise> { + return request({ + url: '/api/v1/follow', + method: 'delete', + params + }); +} + +// 获取用户邮箱列表 +export function getEmailList(params: { username: string; }): Promise> { + return request({ + url: '/api/v1/user/getEmailList', + method: 'get', + params + }); +} +export function getEmailListForCombobox(params: { username: string; }): Promise> { + return request({ + url: '/api/v1/user/getEmailListForCombobox', + method: 'get', + params + }); +} + +// 设置并更新邮箱 +export function setVerifyEmail(params: { objectId: string }): Promise> { + return request({ + url: '/api/v1/user/verifyEmail', + method: 'get', + data: params + }); +} + +// 删除用户设置邮箱 +export function deleteEmail(params: { email: string; }): Promise> { + return request({ + url: '/api/v1/user/deleteEmail', + method: 'delete', + params + }); +} + +// 更新主邮箱设置 +export function updateEmail(params: { username: string; email: string }): Promise> { + return request({ + url: '/api/v1/user/updateEmail', + method: 'put', + data: params + }); +} + +// 发送更新邮箱验证码接口 +export function sendEmailVeriCode(params: { username: string; email: string; }): Promise> { + return request({ + url: '/api/v1/user/sendEmailVeriCode', + method: 'post', + data: params + }); +} + +// 发送更新邮箱验证码接口 +export function verifyCodeEmail(params: { code: string; email: string; }): Promise> { + return request({ + url: '/api/v1/user/verifyCodeEmail', + method: 'put', + params: params + }); +} + +// 设置密码 +export function setPassword(params: { password: string; username: string; }): Promise> { + return request({ + url: '/api/v1/user/setPassword', + method: 'post', + data: params + }); +} + +// 修改密码 +export function updatePassword(params: { origin_password: string; password: string; username: string; }): Promise> { + return request({ + url: '/api/v1/user/updatePassword', + method: 'post', + data: params + }); +} + +// 判断是否有设置密码 +export function passwordAvailable(): Promise> { + return request({ + url: '/api/v1/user/passwordAvailable', + method: 'get' + }); +} + +// 获取当前用户加入的组织 +export function getMyGroupsList(params: any): Promise> { + return request({ + url: '/api/v1/user_groups/related_me', + method: 'get', + params + }); +} + +/** 退出组织 */ +export function leaveGroups(params: any): Promise> { + return request({ + url: `/api/v1/groups/${params.orgId}/leave`, + method: 'delete' + }); +} + +// 获取用户访问令牌列表 +export function getImpersonationTokens(params: any): Promise> { + return request({ + url: `/api/v1/user/getImpersonationTokens`, + method: 'get', + params + }); +} + +// 创建用户访问令牌 +export function addImpersonationTokens(params: any): Promise> { + return request({ + url: `/api/v1/user/${params.username}/impersonation_tokens`, + method: 'post', + data: params + }); +} +// 删除用户访问令牌 +export function deleteImpersonationTokens(params: any): Promise> { + return request({ + url: `/api/v1/user/${params.username}/impersonation_tokens/${params.id}`, + method: 'delete', + params: { name: params.name } + }); +} +// 活动会话列表 +export function getLatest(params: any): Promise> { + return request({ + url: `/api/v1/user/activity-session/latest`, + method: 'get' + }); +} +// 删除活动会话 +export function deleteOffline(params: any): Promise> { + return request({ + url: `/api/v1/user/activity-session/offline`, + method: 'put', + params + }); +} + +// 获取用户参与的项目 +export function getUserProject(params: any): Promise> { + return request({ + url: `/api/v1/user_projects/related_me`, + method: 'get', + params + }); +} + +// 获取用户粉丝列表 +export function getFollowersList(params: { username: string; pageNum: number; pageSize: number; }): Promise> { + return request({ + url: '/api/v1/follow/followers', + method: 'get', + params + }, { customError: true }); +} +// 搜索用户列表 +export function searchUserList(params: { keyword?: string; pageNum: number; pageSize: number; }): Promise> { + return request({ + url: '/api/v1/user/search', + method: 'get', + params + }, { customError: true }); +} +// 获取用户关注列表 +export function getFollowingList(params: { username: string; pageNum: number; pageSize: number; }): Promise> { + return request({ + url: '/api/v1/follow/followingList', + method: 'get', + params + }, { customError: true }); +} + +// 获取用户语言集合 +export function getUserLangData(params: { type: string; user_name: string; }): Promise> { + return request({ + url: `/api/v1/profile/${params.user_name}/project_languages`, + method: 'get', + params + }, { customError: true }); +} + +// 获取用户关注的项目动态推送 +export function getUserConcernEvents(params?: any): catchRt { + return reqCatchV2(() => request({ + url: '/api/v1/events/follower_events', + method: 'get', + params + })); +} + +// 获取用户被邀请的项目列表 +export function getUserInviteRepo(params?: any): Promise> { + return request({ + url: `/api/v1/invite/sourcePage`, + method: 'get', + params + }, { customError: true }); +} + +// 获取用户绑定的三方信息 +export function getUserIdentity(params?: any): catchRt { + return reqCatchV2(() => request({ + url: '/api/v1/user/identity/list', + method: 'get', + params + })); +} + +// 用户绑定三方平台 +export function bindUserIdentity(data?: any): catchRt { + return reqCatchV2(() => request({ + url: '/api/v1/user/identity', + method: 'post', + data + })); +} + +// 第三方平台解绑 +export function unBindUserIdentity(data?: any): catchRt { + return reqCatchV2(() => request({ + url: '/api/v1/user/identity', + method: 'delete', + data + })); +} + +// 获取当前用户的手机号 +export function getLoginMobile(params?: any): catchRt { + return reqCatchV2(() => request({ + url: '/api/v1/user/mobile', + method: 'get', + params + })); +} + +// 用户账号注销 +export function userAccountDel(params?: any): catchRt { + return reqCatchV2(() => request({ + url: '/api/v1/user/del', + method: 'delete', + params + })); +} + +// 获取第三方atomgit账号使用流水线 +export function getAtomgitIdentity(): catchRt { + return reqCatchV2(() => request({ + url: '/api/v1/user/identity/atomgit', + method: 'get' + })); +} + +// 获取登录弹窗配置 +export function getLoginConfig(): catchRt { + return reqCatchV2(() => request({ + url: '/api/v1/config/isLogin', + method: 'get' + })); +} + +// 获取登陆token +export function getUserToken(): catchRt { + return reqCatchV2(() => request({ + url: '/api/v1/user/oauth/token', + method: 'get' + }, { + customError: true + })); +} +// 获取用户信息 +export function getUserInfo(): catchRt { + return reqCatchV2(() => request({ + url: '/api/v1/user/oauth/userInfo', + method: 'get' + }, { + customError: true + })); +} diff --git a/src/api/user/types.ts b/src/api/user/types.ts new file mode 100644 index 0000000..3c55ed4 --- /dev/null +++ b/src/api/user/types.ts @@ -0,0 +1,185 @@ +export interface LoginMobile { + type: 'verifyCode' + mobile: string + code: string +} + +export interface LoginPassword { + type: 'password' + username: string + password: string +} + +export interface RegisterMobile { + type: 'register' + username: string + mobile: string + password: string + verificationcode: string + nickname: string +} + +export type LoginReqType = 'register' | 'verifyCode' | 'password' + +export interface RegisterReqType { + username: string + mobile: string + email?: string + nickname: string + password?: string + verificationcode?: string + [x: string]: any +} + +export interface LoginResType { + domain_id?: string + email?: string + id?: string + mobile?: string + nickname?: string + username?: string + access_token?: string + refresh_token?: string + xauth_token?: string +} + +export interface Profile { + setting_private: boolean; + website: string; + description: string; + location: string; + company: string; + email_private: boolean; + email?: string; + show_email?: string; + github_account: string; + bg_image: string; +} +export interface preferenceProfile { + highlight: string; + tab_space_len: number; +} +export interface repoProfile { + default_branch: string; +} +// 获取用户基本信息 +export interface UserProfileResType { + profile: Profile; + nickname: string; + avatar: string; +} +// 用户修改资料参数 +export interface UserProfileReqType { + profile: Partial; + nickname: string; + avatar: String; +} +// 用户修改偏好设置参数 +export interface UserPreferenceReqType { + profile: Partial; + type: string; +} +// 用户修改项目设置参数 +export interface UserRepoReqType { + profile: Partial; + type: string; +} + +// 用户详细信息 +export interface UserProfile { + profile: Profile; + nickname: string; + nick_name?: string; + username: string; + fans: null; + concerns: null; + avatar: string; +} + +// 组织信息 +export interface OrgData { + id: number; + path: string; + name: string; + avatar_url: null; + full_path: string; + full_name: string; + web_url: string; +} + +// 关注用户列表信息 +export interface FollowerData { + user_id?: string; + follow_id?: string; + follow_type?: number; + ip: string; + remark?: string; + is_friend?: number; + create_time?: string; + avatar?: string; + nick_name?: string; + username?: string; + description?: string; + location?: string; + groupname?: string; + website?: string; +} + +// 参数的项目接口信息 +export interface projectItems { + star_count: number; + forks_count: number; + watch_count: null | number; + import_star_count: number; + import_forks_count: number; + import_watch_count: number; + id: number; + description: string; + name: string; + name_with_namespace: string; + path: string; + path_with_namespace: null | string; + develop_mode: string; + created_at: null | string; + updated_at: null | string; + archived: boolean; + is_kia: null | string; + ssh_url_to_repo: string; + http_url_to_repo: string; + web_url: string; + readme_url: null | string; + product_id: null | string; + product_name: null | string; + license_url: null | string; + license: null | string; + namespace: string; + namespace_info: { + id: number; + name: string; + path: string; + develop_mode: string; + region: null | string; + cell: null | string; + kind: string; + full_path: string; + full_name: string; + parent_id: null | string; + visibility_level: number; + enable_file_control: boolean; + owner_id: number; + }, + mirror_project_data: null | string; + visibility: string; + open_issues_count: number; + open_merge_requests_count: number; + open_change_requests_count: number; + starred: boolean; + last_activity_at: Date; + main_repository_language: Array; + forked_from_project: null | string; + permissions: number; + member_count: number; + repository_size: number; + topic_names: null | string; + is_recommend: number; +} diff --git a/src/assets/css/devui.scss b/src/assets/css/devui.scss new file mode 100644 index 0000000..0090549 --- /dev/null +++ b/src/assets/css/devui.scss @@ -0,0 +1,318 @@ +/* devui css override */ +// d-layout +div.devui-layout__header { + flex: none; +} +div.devui-layout__content { + flex: 1; + min-height: auto; + min-width: 0; +} + +ul.devui-menu-vertical { + .devui-menu-item { + background: transparent; + align-items: center; + } + .devui-menu-item-select { + background: var(--color-CG300) !important; + border-radius: var(--border-radius); + &:after { + display: none; + } + } +} + +.devui-input-slot__suffix > span { + color: var(--devui-text); +} + +div.devui-tooltip { + z-index: var(--devui-z-index-pop-up, 1060); + background-color: var(--devui-feedback-overlay-bg, #464d6e); + border-radius: var(--devui-border-radius-feedback, 4px); +} + +/* 隐藏必选符号 */ +// .devui-form__label--required:before { +// display: none; +// content: ''; +// } + +// d-skeleton-item +.devui-skeleton-item { + &.devui-skeleton-item--square { + border-radius: var(--border-radius); + } +} + +// d-tree +.devui-tree { + &__node, + &__node-title { + color: var(--color-font) !important; + } +} + +// d-editor +.devui-code-editor { + .monaco-editor { + .line-numbers { + color: var(--color-lighter); + } + } +} +.devui-splitter { + &__collapse { + background-color: var(--color-lighter) !important; + } +} +// tab +.devui-menu-horizontal { + .devui-menu-item { + span { + font-weight: 400; + color: var(--color-light); + } + } + .devui-menu-item-select, + .devui-menu-active-parent, + .devui-menu-overflow-container:hover, + .devui-menu-item:hover { + span { + color: var(--color-light); + } + &:after { + background-color: var(--color-font) !important; + } + } +} + +.devui-icon--operable.devui-icon__container { + display: inline-flex; + align-items: center; +} + +.devui-menu-vertical { + .devui-menu-item:hover { + background-color: $devui-list-item-hover-bg; + border-radius: var(--border-radius); + } +} +// input输入框icon +.devui-input { + &__container { + i.icon { + &:before { + color: var(--color-CG500); + } + } + } +} +// date-range组件 +.devui-range-date-picker-pro { + .devui-range-date-picker-pro__range-picker-icon { + svg { + width: 14px; + height: 14px; + } + } +} +// modal +.devui-modal { + &__header { + height: 40px !important; + } +} +// textarea 文字计数颜色 +.devui-textarea__show-count { + color: var(--color-lighter) !important; +} + +.devui-progress__content .devui-progress__line { + background: var(--color-CG300, #e4e9f0); +} +// radio button +.devui-radio-button { + &.active { + background-color: var(--color-primary) !important; + border-color: var(--color-primary) !important; + color: white; + } +} +// button +button.devui-button--solid--primary { + background-color: #5e7ce0; + border: none; +} +button.devui-button--solid--danger { + background-color: var(--devui-contrast, #c7000b); + border: none; +} +button.devui-button--outline { + background-color: #fff; +} + +// 次要按钮样式 +button.devui-button--solid--secondary { + border: var(--devui-btn-common-border-color) solid 1px; + border-radius: 4px; + background: #D1D1D1; + + &:hover, + &:active, + &:focus { + border: var(--devui-btn-common-border-color) solid 1px; + color: var(--devui-text); + background: linear-gradient(0deg, rgba(188, 188, 208, 0.1) 0%, rgba(188, 188, 208, 0.1) 100%), var(--White, #FFF); + } +} + +// d-avatar +.devui-avatar { + vertical-align: middle; + display: inline-flex; + align-items: center; + margin-top: auto; + margin-bottom: auto; + img { + background-color: white; + } + &.devui-avatar-square { + img, + .devui-avatar--style { + border-radius: var(--border-radius) !important; + } + &.radius-big { + img, + .devui-avatar--style { + border-radius: 8px !important; + } + } + } +} + +.devui-result { + &__title { + color: var(--color-light); + } + &__desc { + color: var(--color-light); + } + &__extra { + color: var(--color-lighter); + } +} + +.devui-tree { + &__node { + &-content { + &--value-wrapper { + div { + white-space: nowrap; + word-break: keep-all; + text-overflow: ellipsis; + overflow: hidden; + } + } + } + } +} +.devui-tabs__nav--slider > li.active { + text-shadow: none; +} + +.devui-table { + &__tbody { + tr { + td { + border-bottom: 1px solid var(--color-border-light); + } + &:first-of-type { + td { + border-top: none; + &:first-of-type { + border-top-left-radius: var(--border-radius); + } + &:last-of-type { + border-top-right-radius: var(--border-radius); + } + } + } + &:last-of-type { + td { + border-bottom: none; + &:first-of-type { + border-bottom-left-radius: var(--border-radius); + } + &:last-of-type { + border-bottom-right-radius: var(--border-radius); + } + } + } + } + } +} +.devui-breadcrumb { + &__separator { + margin: 0 2px; + } +} +// .devui-input--error,.devui-select__selection--error,.devui-textarea--error { +// background-color: #fff; +// } +.devui-editable-select .devui-editable-select__inner { + max-height: 300px; +} + +.devui-link-hover { + &:hover { + color: var(--devui-link) !important; + } +} + +.devui-textarea__show-count { + color: var(--devui-text) !important; +} + +//.devui-form__label-span { +// color: var(--devui-text) !important; +// font-size: 16px !important; +// line-height: 22px; +// font-weight: 500; +//} + +.devui-checkbox { + padding: 3px 0; +} +.devui-radio__wrapper { + padding: 3px 0; +} +.devui-checkbox__label-text { + font-size: 16px; +} +.devui-radio.devui-radio--md span .devui-radio__label { + font-size: 16px; +} +.devui-radio-group div.devui-radio__wrapper { + height: auto; +} +.devui-radio__wrapper label.devui-radio { + display: flex; + align-items: center; +} +.button-content { + // font-weight: 600; +} +.devui-checkbox span.devui-checkbox__material { + border-color: var(--checkbox-border-color); +} +circle.devui-radio__material-outer { + stroke: var(--checkbox-border-color); +} + +.devui-table--lg tbody>tr.devui-table__row>td, +.cardlist-item-padding { + padding: 16px 20px; +} + diff --git a/src/assets/css/devui_mdpreview.scss b/src/assets/css/devui_mdpreview.scss new file mode 100644 index 0000000..31ba239 --- /dev/null +++ b/src/assets/css/devui_mdpreview.scss @@ -0,0 +1,458 @@ +// markdown +.dp-md-view { + pre { + position: relative; + code { + padding-right: 32px!important; + } + } + .md-view-copy-icon { + cursor: pointer; + position: absolute; + right: 8px; + top: 9px; + &:hover { + opacity: 0.5; + } + } +} +.g-md-container { + :deep(.md-toolbar-container) { + padding-right: 88px; + } + :deep(.dp-editor-md-preview-container.dp-md-view summary) { + cursor: pointer; + } + position: relative; + .g-md-preview-btn { + position: absolute; + top: 12px; + right: 16px; + color: var(--color-lighter); + &:hover { + :deep(.button-content) { + color: var(--color-primary) !important; + } + } + } + .g-md-upload-btn { + position: absolute; + left: 710px; + top: 10px; + cursor: pointer; + :deep(.devui-icon__container) { + display: inline-flex; + justify-content: center; + align-items: center; + } + :deep(.icon) { + color: var(--devui-icon-text, #71757f); + } + } + :deep(.devui-fullscreen) { + z-index: 999 !important; + } +} + +:deep(.dp-md-container) { + border: none; + .CodeMirror { + border-radius: 3px; + pre { + word-break: break-all; + } + } +} +.dp-editor-md-preview-container.dp-md-view { + word-break: break-all; + line-height: normal; + * { + box-sizing: border-box; + } + /* 文章正文 */ + p { + font-size: 14px; + color: var(--color-G900); + font-weight: normal; + line-height: 26px; + margin: 0; + overflow-x: auto; + overflow: hidden; + } + p:has(+ pre) { + margin-bottom: 8px; + } + span, + p span { + line-height: 1.5; + } + /* 加粗 */ + strong { + font-weight: bold; + } + /* 斜体 */ + i, + cite, + em, + var, + address, + dfn { + font-style: italic; + } + /* 上标 */ + sup { + left: 2px; + } + /* 下标 */ + sub { + margin: 0 2px; + } + /* 标题通用格式 */ + h1, + h2, + h3, + h4, + h5, + h6 { + color: var(--color-G900); + margin: 0.67em 0; + font-weight: 600; + } + h1 { + font-size: 22px; + line-height: 32px; + margin-top: 24px; + margin-bottom: 16px; + } + h2 { + font-size: 20px; + line-height: 30px; + } + + h3 { + font-size: 18px; + line-height: 28px; + } + + h4 { + font-size: 16px; + line-height: 26px; + } + + h5 { + font-size: 16px; + line-height: 24px; + } + + h6 { + font-size: 16px; + line-height: 24px; + } + + h1 code { + font-size: 28px; + } + + h2 code { + font-size: 24px; + } + + h3 code { + font-size: 22px; + } + + h4 code { + font-size: 20px; + } + + h5 code { + font-size: 18px; + } + + h6 code { + font-size: 16px; + } + + /* 列表(有序,无序) */ + ul, + ol { + margin: 0 0 8px 0; + padding: 0; + font-size: 14px; + overflow: hidden; + overflow-x: auto; + color: var(--color-CG600); + } + li { + margin: 4px 0 0 18px; + } + ol, + ol > li { + list-style-type: decimal !important; + // 表达式,修复有序列表序号展示不全的问题 + :nth-child(n+10){ + margin-left: 24px; + } + :nth-child(n+100){ + margin-left: 30px; + } + } + ul, + ul > li { + list-style-type: disc; + font-size: 14px; + margin-right: 11px; + color: var(--color-G900); + } + ol ul, + ol ul > li, + ul ul, + ul ul li { + // list-style: circle; + font-size: 14px; + list-style: none; + margin-left: 16px; + } + ul ul ul, + ul ul ul li, + ol ol, + ol ol > li, + ol ul ul, + ol ul ul > li, + ul ol, + ul ol > li { + list-style: square; + } + + /* 任务列表 */ + .task-list-item { + list-style: none; + margin: 8px 0 0 0; + } + .task-list-item label { + margin-left: 4px; + } + input[type=checkbox]+label, label+a { + vertical-align: middle; + } + input[type=checkbox]+label { + margin-left: 5px; + } + + /* 图片 */ + img { + margin: 8px 0; + max-width: 100%; + display: inline-block; + } + + /* 引用 */ + blockquote { + display: block; + padding: 16px; + margin: 0 0 24px; + border-left: 8px solid #dddfe4; + background: #eef0f4; + overflow: auto; + word-break: break-word !important; + } + + blockquote ul, + blockquote ol { + margin-bottom: 0; + padding: 0; + font-size: 14px; + line-height: 22px; + } + + blockquote ul li { + margin-bottom: 0; + } + + blockquote ol li { + margin-bottom: 0; + } + + /* 引用 - 文字 */ + blockquote p { + font-size: 14px; + line-height: 22px; + color: #555666; + font-weight: normal; + margin-bottom: 0; + } + + /* 分割线 */ + hr { + margin: 24px 0; + border: none; + border-bottom: solid #ddd 1px; + } + + /* 表格 */ + tbody { + border: 0; + } + + table tr { + border: 0; + border-top: 1px solid #ddd; + background-color: white; + } + + table { + border-collapse: collapse; + display: table; + width: 100%; + text-align: center; + margin-bottom: 24px; + } + + tbody { + border: 0; + } + + table tr:nth-child(2n) { + background-color: #f7f7f7; + } + + table tr th, + table tr td { + font-size: 14px; + color: #4f4f4f; + line-height: 22px; + border: 1px solid #ddd; + padding: 8px; + word-break: normal !important; + vertical-align: middle; + } + + table tr th code, + table tr td code { + white-space: normal; + word-break: normal !important; + } + + table tr th { + font-weight: bold; + background-color: #eff3f5; + } + + /* 目录列表 */ + dl { + margin: 24px; + } + + dl dt { + margin: 8px; + font-weight: bold; + } + dl dd { + margin: 0 0 8px 40px; + } + dl dt dd { + margin: 8px; + } + + /* pre */ + pre { + margin-bottom: 24px; + white-space: pre-wrap; + padding: 0; + } + pre code { + // color: unset; + color: var(--color-G900); + } + + /* 代码块字体 */ + code, + kbd, + pre, + samp { + font-size: 14px; + line-height: 22px; + color: var(--color-G900); + } + code { + color: #c7254e; + // background-color: #f9f2f4; + background-color: var(--color-G200); + border-radius: 4px; + padding: 6px; + // display: inline; + } + kbd { + padding: 2px 8px; + border: 1px solid rgba(63, 63, 63, 0.25); + box-shadow: 0 1px 0 rgba(63, 63, 63, 0.25); + background-color: #fff; + color: #333; + border-radius: 4px; + display: inline-block; + margin: 0 2px; + white-space: nowrap; + } + + /* 超链接 */ + a { + // color: #4ea1db; + color: var(--color-B600); + text-decoration: none; + } + + a:hover, + a:focus { + // color: #ca0c16; + color: var(--color-B600); + text-decoration: underline; + } + + a:visited { + // color: #6795b5; + color: var(--color-B600); + } + + /* abbr */ + abbr[title], + abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999; + } + + /* toc TODO: devui 尚未支持 */ + .toc { + font-size: 18px; + line-height: 24px; + margin: 0 0 24px; + padding: 0; + } + + .toc ul { + margin: 0 0 8px; + padding: 0; + } + + .toc ul ul { + padding-left: 24px; + } + + .toc ul li { + list-style-type: none; + margin: 8px 0 0 24px; + } + + /* 脚注 TODO: devui 尚未支持*/ + .footnote { + vertical-align: top; + position: relative; + top: -4px; + font-size: 12px; + } + + .footnotes ol li { + font-size: 14px; + line-height: 22px; + margin: 0 0 8px 24px; + } +} diff --git a/src/assets/css/jyh.scss b/src/assets/css/jyh.scss new file mode 100644 index 0000000..60f69ee --- /dev/null +++ b/src/assets/css/jyh.scss @@ -0,0 +1,49 @@ +/* devui css override */ +// d-layout +.jyh-form { + .devui-form__label-span { + color: #595959; + font-family: HarmonyOS Sans SC; + font-weight: regular; + font-size: 14px; + line-height: 32px; + letter-spacing: 0px; + text-align: left; + } + .devui-form__label--start { + text-align: right; + } + .devui-form__item--horizontal { + margin-bottom: 0; + } + .jyh-form-operation { + margin-left: 20px !important; + } +} + +.jyh-table { + .devui-table__cell { + color: #191919; + font-family: HarmonyOS Sans SC; + font-weight: regular; + font-size: 14px; + line-height: 22px; + letter-spacing: 0px; + text-align: left; + } + + .devui-table__cell a { + cursor: pointer; + color: #0A59F7; + font-family: HarmonyOS Sans SC; + font-weight: regular; + font-size: 14px; + line-height: 22px; + letter-spacing: 0px; + text-align: left; + } + .devui-table__row td { + padding-top: 10px !important; + padding-bottom: 10px !important; + } +} diff --git a/src/assets/css/main.scss b/src/assets/css/main.scss new file mode 100644 index 0000000..413af43 --- /dev/null +++ b/src/assets/css/main.scss @@ -0,0 +1,458 @@ +/* 引入全局css变量 */ +@import './variable.css'; +@import './devui.scss'; +@import './theme.scss'; +@import './jyh.scss'; +@import './mixins/index.scss'; +/* 引入tailwindCSS */ +@tailwind base; +@tailwind components; +@tailwind utilities; + +// 基础CSS +html, +body, +#app { + height: 100%; + -webkit-font-smoothing: antialiased; + // scorll 事件失效 overflow-y: overlay +} +html { + overflow-y: scroll; // html本身没有滚动 为了防止自定义滚动条出现时界面抖动,需要预留轨道 +} +html body { + background-color: $devui-global-bg; + font-size: var(--text-sm); + color: var(--color-font); +} +input::placeholder, +textarea::placeholder { + color: var(--color-lighter); +} +// 解决滚动条占用内容宽度 +// html { +// overflow-y: scroll; +// } + +// :root { +// overflow-y: auto; +// overflow-x: hidden; +// } + +// :root body { +// position: absolute; +// } + +// body { +// width: 100vw; +// overflow: hidden; +// } + +// 兼容火狐浏览器 +:focus-visible { + outline: none; +} + +// 自定义class +.g-border { + border: 1px solid var(--devui-line); + border-radius: var(--border-radius); + &-light { + border: 1px solid var(--color-border-light); + border-radius: var(--border-radius); + } +} +.g-card, +.g-content-card { + background-color: $devui-base-bg; + box-shadow: $devui-shadow-length-base $devui-light-shadow; + border-radius: var(--border-radius); +} +.g-main-content { + line-height: 30px; +} +.g-sub-content { + line-height: 20px; +} +.g-border-bottom { + border-bottom: solid 1px var(--color-G200); +} +.g-icon-pointer { + cursor: pointer; + &:hover { + color: var(--color-link) !important; + } +} +.g-border-radius-top-no { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.g-icon-right { + vertical-align: middle; + margin-right: 4px; +} +.g-icon-left { + vertical-align: middle; + margin-left: 8px; +} +.g-drop-menu { + width: 100px; + padding: 0 16px; +} +.g-mid-line { + width: 0.5px; + height: 16px; + background: var(--color-border-light); +} +.g-row-line { + height: 1px; + width: 100%; + background: var(--color-G300); +} +.g-max-width { + width: 90%; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.g-font-bold { + font-weight: 600; +} +.g-label-font { + .devui-form__label { + font-weight: 500; + } +} +/* 滚动条样式自定义 */ +body::-webkit-scrollbar, body>* ::-webkit-scrollbar { + width: 6px; + height: 4px; +} +body::-webkit-scrollbar-thumb, body>* ::-webkit-scrollbar-thumb { + border-radius: 8px; + background-color: var(--devui-disabled-text); + &:hover{ + background-color: var(--devui-placeholder) + } +} +body::-webkit-scrollbar-track { + background: transparent; +} +body::-webkit-scrollbar-corner { + background: transparent; +} + +.clearfix { + &:after { + content: ''; + clear: both; + visibility: hidden; + display: block; + } +} + +.space-y-20 > *:not(:last-child) { + margin-bottom: 20px; +} + +/* 分隔符 | */ +.g-delimiter { + display: inline-block; + width: 1px; + height: 20px; + background: var(--color-G300); + vertical-align: middle; +} +.g-input-border { + .devui-input__wrapper:not(.devui-input--focus) { + border-color: var(--devui-line, #d7d8da); + } + .devui-input-slot__prepend, + .devui-input-slot__append { + border-color: var(--devui-line, #d7d8da); + } +} +.devui-select__dropdown .devui-select__dropdown--empty { + padding: 4px 8px; +} +/* 输入框 去掉hover效果*/ +.devui-input__wrapper:not(.devui-input--error):not(.devui-input--disabled):not(.devui-input--focus):hover { + border-color: var(--devui-line, #d7d8da); +} + +/* 多行文本输入框 去掉hover效果*/ +.devui-textarea:not(.devui-textarea--error):not(.devui-textarea--disabled):not(.devui-textarea--focus):hover { + border-color: var(--devui-line, #d7d8da); +} + +/* 自动补全输入框 去掉hover效果*/ +.devui-auto-complete-input__wrapper:not(.devui-auto-complete--disabled):not(.devui-auto-complete-input__wrapper--error):hover { + border-color: var(--devui-line, #d7d8da); +} + +/* 可输入下拉选择框 去掉hover效果*/ +.devui-editable-select-input__wrapper:not(.devui-editable-select-input__wrapper--disabled):not(.devui-editable-select-input__wrapper--focus):hover { + border-color: var(--devui-line, #d7d8da); +} + +/* 分页 去掉hover效果*/ +.devui-pagination .devui-pagination__size:hover { + border-color: var(--devui-line, #d7d8da); +} + +/* 数字输入框 去掉hover效果*/ +.devui-input-number:hover .devui-input-number__control-buttons:not(.disabled) { + border-color: var(--devui-line, #d7d8da); +} +.devui-input-number:hover .devui-input-number__input-box:not(.disabled) { + border: 1px solid var(--devui-line, #9b9fa8); +} + +/* 下拉框 去掉hover效果*/ +.devui-select__selection:hover { + border-color: var(--devui-line, #d7d8da); +} + +/* 时间范围选择 去掉hover效果 */ +.devui-range-date-picker-pro .devui-range-date-picker-pro__range-picker:not(.devui-range-date-picker-pro--error):not(.devui-range-date-picker-pro--disabled):hover { + border-color: var(--devui-line, #d7d8da); +} + +.g-add-border { + border-color: var(--devui-line, #d7d8da); +} +.g-z-index-9 { + z-index: 9 !important; +} +.g-z-index-9999 { + z-index: 9999 !important; // 9的层级低于列表的遮罩层 +} +.g-hidden-scrollbar { + scrollbar-width: none; + scrollbar-color: transparent transparent; + -ms-overflow-style: none; + &::-webkit-scrollbar { + display: none; + } + &::-webkit-scrollbar-horizontal { + display: none; + } +} +.g-discussion-item .dp-md-container .dp-md-content-container { + min-height: 150px; +} +// modal相关 +.g-modal-footer { + display: flex; + padding: 20px; + gap: 8px; + justify-content: flex-end; +} +.row-reverse { + display: flex; + justify-content: flex-start; + flex-direction: row-reverse; +} + +.ellipsis { + white-space: nowrap; + word-break: keep-all; + text-overflow: ellipsis; + overflow: hidden; +} + +.ellipsis-pre { + white-space: pre-line; + word-break: break-all; + text-overflow: ellipsis; + overflow: hidden; +} + +.ellipsis-two-line { + word-break: break-all; + text-overflow: ellipsis; + overflow: hidden; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; +} + +.ellipsis-three-line { + word-break: break-all; + text-overflow: ellipsis; + overflow: hidden; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 3; +} + +.absolute-full { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + overflow: auto; +} + +.flex-center { + display: flex; + align-items: center; + justify-content: center; +} +.inline-center { + display: inline-flex; + align-items: center; + justify-content: center; +} +// 重置a标签的默认和hover色值 +.reset-hover { + color: unset; + &:hover { + color: unset; + } +} +@keyframes spin { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +} + +.spin { + animation: spin 2s linear infinite; + transform-origin: center center; +} + +// 重写RadioGroup样式 +.g-radio-group { + &.devui-radio-group { + background-color: var(--color-G100); + padding: 2px; + .devui-radio-button { + border: none; + line-height: 22px; + height: 28px; + color: var(--color-CG600); + &:first-child { + border-left: none !important; + } + &.active { + color: #fff; + box-shadow: 0px 2px 6px 0px rgba(37, 43, 58, 0.12); + border-radius: var(--border-radius); + font-weight: 500; + } + } + } +} +.border-none { + border: none !important; +} + +input { + background-color:transparent !important; + // appearance: none; + + &:-webkit-autofill, textarea:-webkit-autofill, select:-webkit-autofill { + -webkit-text-fill-color: inherit !important; + background-color: transparent !important; + background-image: none; + transition: background-color 36000s ease-in-out 0s; //背景色透明 生效时长 过渡效果 启用时延迟的时间 + } + &:-moz-autofill, textarea:-moz-autofill, select:-moz-autofill { + -webkit-text-fill-color: inherit !important; + background-color: transparent !important; + background-image: none; + transition: background-color 36000s ease-in-out 0s; //背景色透明 生效时长 过渡效果 启用时延迟的时间 + } +} + +@media screen and (max-width: 1536px) { + .g-padding-x { + padding: 0 32px; + } +} + +@media screen and (max-width: 768px) { + .g-padding-x { + padding: 0 16px; + } +} + + + +.g-content-card-v2 { + background-color: $devui-global-bg; + border-radius: $devui-border-radius-card; + border: 1px solid var(--gray-border-color); +} + +.g-number { + border-radius: 4px; + padding: 0 4px; + background: var(--gray-bg-color); + font-size: 12px; + line-height: 16px; + color: var(--devui-text); +} + +.font-color-t1 { + color: $devui-text; +} + +.font-color-t2 { + color: $devui-aide-text; +} + +.font-color-placeholder { + color: $devui-placeholder; +} + +.g-large-title-font { + font-size: 22px; + line-height: 22px; + font-weight: 500; +} + +.g-divide-line { + height: 1px; + width: 100%; + background: var(--devui-dividing-line); + margin: 32px 0 +} + +.g-tip-text { + font-size: var(--devui-font-size); + line-height: 20px; + color: $devui-placeholder; +} + +// 新版设计统一设置标题样式 大小颜色行高 +.unify-settingTitle-title{ + font-weight: 700; + line-height: 34px; + font-size: 24px; + color: var(--devui-text); +} + +// 项目设置页面标题 +.repo-settings-title { + @apply text-xl mb-[12px] flex items-center justify-between font-semibold; +} + +// 下拉框动效 +.arrow-down{ + transition: transform var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1)); + transform-origin: center; + transform: rotateZ(0deg) !important; +} + +.arrow-up{ + transition: transform var(--devui-animation-duration-slow, .3s) var(--devui-animation-ease-in-out-smooth, cubic-bezier(.645, .045, .355, 1)); + transform-origin: center; + transform: rotateZ(180deg) !important; +} diff --git a/src/assets/css/mixins/button.scss b/src/assets/css/mixins/button.scss new file mode 100644 index 0000000..caa1f77 --- /dev/null +++ b/src/assets/css/mixins/button.scss @@ -0,0 +1,147 @@ +// 自定义 按钮额外主题 红绿橙 + +button.devui-button { + // 实心按钮 + &--solid { + //绿色按钮 + &--success, + &--operable { + background-color: $v2-color-success; + &:hover { + background-color: $v2-color-success-hover; + } + &:active { + background-color: $v2-color-success-active; + } + &:disabled { + background-color: $v2-color-success-disable; + } + } + // 橙色按钮 + &--warning { + background-color: $v2-color-warning; + &:hover { + background-color: $v2-color-warning-hover; + } + &:active { + background-color: $v2-color-warning-active; + } + &:disabled { + background-color: $v2-color-warning-disable; + } + } + // 暗红按钮 + &--error { + background-color: $v2-color-error; + &:hover { + background-color: $v2-color-error-hover; + } + &:active { + background-color: $v2-color-error-active; + } + &:disabled { + background-color: $v2-color-error-disable; + } + } + } + //镂空按钮 + &--outline { + &--success, + &--operable { + color: $v2-color-success; + border-color: $v2-color-success; + + &:hover { + color: $v2-color-success-hover; + border-color: $v2-color-success-hover; + } + &:active { + color: $v2-color-success-active; + border-color: $v2-color-success-active; + } + &:disabled { + color: $v2-color-success-disable; + border-color: $v2-color-success-disable; + } + } + // 橙色按钮 + &--warning { + color: $v2-color-warning; + border-color: $v2-color-warning; + + &:hover { + color: $v2-color-warning-hover; + border-color: $v2-color-warning-hover; + } + &:active { + color: $v2-color-warning-active; + border-color: $v2-color-warning-active; + } + &:disabled { + color: $v2-color-warning-disable; + border-color: $v2-color-warning-disable; + } + } + // 暗红按钮 + &--error { + color: $v2-color-error; + border-color: $v2-color-error; + + &:hover { + color: $v2-color-error-hover; + border-color: $v2-color-error-hover; + } + &:active { + color: $v2-color-error-active; + border-color: $v2-color-error-active; + } + &:disabled { + color: $v2-color-error-disable; + border-color: $v2-color-error-disable; + } + } + } + //文字按钮 + &--text { + &--success, + &--operable { + color: $v2-color-success; + + &:hover { + color: $v2-color-success-hover; + } + &:active { + color: $v2-color-success-active; + } + &:disabled { + color: $v2-color-success-disable; + } + } + &--warning { + color: $v2-color-warning; + + &:hover { + color: $v2-color-warning-hover; + } + &:active { + color: $v2-color-warning-active; + } + &:disabled { + color: $v2-color-warning-disable; + } + } + &--error { + color: $v2-color-success; + + &:hover { + color: $v2-color-success-hover; + } + &:active { + color: $v2-color-success-active; + } + &:disabled { + color: $v2-color-success-disable; + } + } + } +} diff --git a/src/assets/css/mixins/card.scss b/src/assets/css/mixins/card.scss new file mode 100644 index 0000000..070f04a --- /dev/null +++ b/src/assets/css/mixins/card.scss @@ -0,0 +1,34 @@ +@import './variables.scss'; + +.v2-g-card { + position: relative; + word-wrap: break-word; + background-color: #fff; + background-clip: border-box; + border: 1px solid $card-border-color; + border-radius: $card-border-radius; + color: $card-text-color; +} + +.v2-g-card-header:first-child { + border-radius: $card-border-radius $card-border-radius 0 0; +} + +.v2-g-card-header { + margin-bottom: 0; + padding: $card-padding; + background-color: $card-border-header-bg; + border-bottom: 1px solid $card-border-color; + border-top-left-radius: $card-border-radius; + border-top-right-radius: $card-border-radius; +} + +.v2-g-card-body { + padding: $card-padding; +} + +.v2-g-card-header:only-child { + border-bottom-left-radius: $card-border-radius; + border-bottom-right-radius: $card-border-radius; + margin-bottom: -1px; +} diff --git a/src/assets/css/mixins/index.scss b/src/assets/css/mixins/index.scss new file mode 100644 index 0000000..42c0394 --- /dev/null +++ b/src/assets/css/mixins/index.scss @@ -0,0 +1,2 @@ +@import './card.scss'; +@import './button.scss'; diff --git a/src/assets/css/mixins/variables.scss b/src/assets/css/mixins/variables.scss new file mode 100644 index 0000000..6ecd27d --- /dev/null +++ b/src/assets/css/mixins/variables.scss @@ -0,0 +1,21 @@ +// 按钮 scss 变量 +$v2-color-success: #10a35c; +$v2-color-success-hover: #31a26c; +$v2-color-success-active: #31a26c; +$v2-color-success-disable: #d6ece2; + +$v2-color-warning: #ed5f22; +$v2-color-warning-hover: #f07a47; +$v2-color-warning-active: #f07a47; +$v2-color-warning-disable: #fce4da; + +$v2-color-error: #da203e; +$v2-color-error-hover: #da203e; +$v2-color-error-active: hsla(350, 74%, 44%, 1); +$v2-color-error-disable: #fce4da; + +$card-border-color: #e3e3ee; +$card-padding: 16px; +$card-border-radius: 8px; +$card-border-header-bg: #f9f9fb; +$card-text-color: #3b3e55; diff --git a/src/assets/css/theme.scss b/src/assets/css/theme.scss new file mode 100644 index 0000000..dc249c2 --- /dev/null +++ b/src/assets/css/theme.scss @@ -0,0 +1,16 @@ +/** + * 网站主题(暂定前端控制) + */ +// 亮色 +.g-theme-light { + .dp-editor-md-preview-container.dp-md-view [src$="#gh-dark-mode-only"] { + display: none; + } +} + +// 暗色 +.g-theme-dark { + .dp-editor-md-preview-container.dp-md-view [src$="#gh-light-mode-only"] { + display: none; + } +} diff --git a/src/assets/css/variable.css b/src/assets/css/variable.css new file mode 100644 index 0000000..c0efb95 --- /dev/null +++ b/src/assets/css/variable.css @@ -0,0 +1,78 @@ +:root { + --color-G100: #FBFBFB; + --color-G150: #F6F6F8; + --color-G200: #F0F1F2; + --color-G300: #E6E6E8; + --color-G400: #D1D2D4; + --color-G500: #B3B4B5; + --color-G600: #9A9B9C; + --color-G700: #7E7E80; + --color-G800: #5B5B5C; + --color-G900: #2D2D2E; + --color-G1000: #000000; + --color-CG100: #F8F9FB; + --color-CG200: #F4F7F9; + --color-CG300: #E4E9F0; + --color-CG400: #CAD0D9; + --color-CG500: #9FA7B3; + --color-CG600: #707A87; + --color-CG700: #505A69; + --color-CG800: #3B4655; + --color-CG900: #252D3B; + --color-CG950: #151A26; + --color-DP100: #FDF4F6; + --color-DP200: #FAE5EC; + --color-DP300: #F4C7D5; + --color-DP400: #EA92AD; + --color-DP500: #E05E86; + --color-DP600: #B64C6D; + --color-DP700: #963F59; + --color-DP800: #652A3C; + --color-DP900: #3E1A25; + --color-DP950: #261017; + --color-B300: #AECCFC; + --color-B400: #6FA3F7; + --color-B500: #3B82F6; + --color-B600: #2562C4; + --color-R500: #F2050D; + --color-O500: #FF6C17; + --color-Y100: #FEF6E5; + --color-Y200: #FCE7BB; + --color-Y500: #F5AB0B; + --color-GN500: #0EB07B; + --color-linear100: linear-gradient(180deg, #FCFCFC 0%, #F8F9FB 100%); + --color-linear200: linear-gradient(180deg, #F8F9FA 0%, #F0F1F2 100%); + --color-primary: var(--color-B500); + --color-primary-hover: var(--color-B400); + --color-primary-active: var(--color-B600); + --color-primary-disable: var(--color-B300); + --color-danger: var(--color-R500); + --color-success: var(--color-GN500); + --color-tip: var(--color-Y500); + --color-warning: var(--color-O500); + --color-link: var(--color-B600); + --color-font: var(--color-G900); + --color-light: var(--color-CG600); + --color-lighter: var(--color-CG500); + --color-disabled: var(--color-CG500); + --color-border: var(--color-G300); + --color-border-light: var(--color-G200); + --color-button-border: var(--color-G400); + --color-button-border-hover: var(--color-B500); + --w-normal: 1440px; + --w-sm: 1100px; + --w-xs: 720px; + --spacing-normal: 32px; + --text-xs: 12px; + --text-sm: 14px; + --text-base: 16px; + --text-lg: 18px; + --text-xl: 20px; + --text-2xl: 22px; + --border-radius: 3px; + + --gray-border-color: #E3E3EE; + --gray-bg-color: #e3e3ed; + --tab-active-bg: #F1F1F8; + --checkbox-border-color: #D1D1E0; +} diff --git a/src/assets/gitcodeColorMap.json b/src/assets/gitcodeColorMap.json new file mode 100644 index 0000000..92aec9e --- /dev/null +++ b/src/assets/gitcodeColorMap.json @@ -0,0 +1,54 @@ +{ + "devui-text": "#000000", + "devui-aide-text": "#3B3E55", + "devui-placeholder": "#9C9DB4", + "devui-disabled-text": "#BCBCD0", + "devui-light-text": "#FFFFFF", + "devui-icon-fill": "#000000", + "devui-icon-fill-weak": "#3B3E55", + "devui-icon-fill-hover": "#3B3E55", + "devui-icon-disabled-color": "#F1F1F8", + "devui-icon-bg": "#FFFFFF", + "devui-brand": "#DA203E", + "devui-shape-icon-fill": "#BCBCD0", + "devui-shape-icon-fill-hover": "#8B8CA7", + "devui-shape-icon-fill-disabled": "#D1D1E0", + "devui-dividing-line": "#F1F1F8", + "devui-line": "#F9F9FB", + "devui-disabled-line": "#F1F1F8", + "devui-form-control-line-hover": "#8B8CA7", + "devui-form-control-line-active": "#F1F1F8", + "devui-primary": "#000000", + "devui-primary-hover": "#323232", + "devui-primary-active": "#000000", + "devui-primary-disabled": "#E3E3EE", + "devui-btn-common-bg": "#FFFFFF", + "devui-btn-common-bg-hover": "#F9F9FB", + "devui-disabled-bg": "#F9F9FB", + "devui-btn-common-border-color": "#E3E3EE", + "devui-btn-common-border-color-hover": "#8B8CA7", + "devui-btn-common-border-disabled": "#E3E3EE", + "devui-gray-form-control-bg": "#F9F9FB", + "devui-gray-form-control-hover-bg": "#F1F1F8", + "devui-link": "#2951E0", + "devui-link-light": "#000000", + "devui-link-disabled": "#F1F1F8", + "devui-icon-hover-bg": "#F1F1F8", + "devui-icon-active-bg": "#E3E3EE", + "devui-list-item-active-bg": "#F1F1F8", + "devui-global-bg": "#F9F9FB", + "devui-connected-overlay-b": "#FFFFFF", + "devui-list-item-hover-bg": "#FFFFFF", + "devui-feedback-overlay-bg": "#3F425A", + "devui-danger-bg": "#FFECE8", + "devui-danger": "#DA203E", + "devui-contrast-hover": "#CB272D", + "devui-contrast-active": "#841527", + "devui-danger-text": "#A1151E", + "devui-warning-bg": "#FFF7E8", + "devui-warning": "#FF7D00", + "devui-warning-text": "#CC5120", + "devui-success-bg": "#E8FFEA", + "devui-success": "#10A35C", + "devui-success-text": "#006622" +} \ No newline at end of file diff --git a/src/assets/imgs/anim/star.png b/src/assets/imgs/anim/star.png new file mode 100644 index 0000000..6a739f7 Binary files /dev/null and b/src/assets/imgs/anim/star.png differ diff --git a/src/assets/imgs/avatar/female.png b/src/assets/imgs/avatar/female.png new file mode 100644 index 0000000..acefcb3 Binary files /dev/null and b/src/assets/imgs/avatar/female.png differ diff --git a/src/assets/imgs/avatar/male.png b/src/assets/imgs/avatar/male.png new file mode 100644 index 0000000..64139cd Binary files /dev/null and b/src/assets/imgs/avatar/male.png differ diff --git a/src/assets/imgs/avatar/org.png b/src/assets/imgs/avatar/org.png new file mode 100644 index 0000000..4a9c29b Binary files /dev/null and b/src/assets/imgs/avatar/org.png differ diff --git a/src/assets/imgs/avatar/org_02.png b/src/assets/imgs/avatar/org_02.png new file mode 100644 index 0000000..1a15311 Binary files /dev/null and b/src/assets/imgs/avatar/org_02.png differ diff --git a/src/assets/imgs/banner.png b/src/assets/imgs/banner.png new file mode 100644 index 0000000..17ca794 Binary files /dev/null and b/src/assets/imgs/banner.png differ diff --git a/src/assets/imgs/error/403@2x.png b/src/assets/imgs/error/403@2x.png new file mode 100644 index 0000000..f92f34f Binary files /dev/null and b/src/assets/imgs/error/403@2x.png differ diff --git a/src/assets/imgs/error/404@2x.png b/src/assets/imgs/error/404@2x.png new file mode 100644 index 0000000..4b2c2e9 Binary files /dev/null and b/src/assets/imgs/error/404@2x.png differ diff --git a/src/assets/imgs/error/503@2x.png b/src/assets/imgs/error/503@2x.png new file mode 100644 index 0000000..ee707dc Binary files /dev/null and b/src/assets/imgs/error/503@2x.png differ diff --git a/src/assets/imgs/home/avatar_log.svg b/src/assets/imgs/home/avatar_log.svg new file mode 100644 index 0000000..443a485 --- /dev/null +++ b/src/assets/imgs/home/avatar_log.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/imgs/home/banner-bg2.png b/src/assets/imgs/home/banner-bg2.png new file mode 100644 index 0000000..fb0e0c5 Binary files /dev/null and b/src/assets/imgs/home/banner-bg2.png differ diff --git a/src/assets/imgs/home/banner-new.png b/src/assets/imgs/home/banner-new.png new file mode 100644 index 0000000..55f881b Binary files /dev/null and b/src/assets/imgs/home/banner-new.png differ diff --git a/src/assets/imgs/home/banner-new02.png b/src/assets/imgs/home/banner-new02.png new file mode 100644 index 0000000..c92f391 Binary files /dev/null and b/src/assets/imgs/home/banner-new02.png differ diff --git a/src/assets/imgs/home/banner.png b/src/assets/imgs/home/banner.png new file mode 100644 index 0000000..1aa6a3a Binary files /dev/null and b/src/assets/imgs/home/banner.png differ diff --git a/src/assets/imgs/home/banner1.png b/src/assets/imgs/home/banner1.png new file mode 100644 index 0000000..b035abc Binary files /dev/null and b/src/assets/imgs/home/banner1.png differ diff --git a/src/assets/imgs/home/banner_bg.jpg b/src/assets/imgs/home/banner_bg.jpg new file mode 100644 index 0000000..2a589df Binary files /dev/null and b/src/assets/imgs/home/banner_bg.jpg differ diff --git a/src/assets/imgs/home/banner_cover.jpg b/src/assets/imgs/home/banner_cover.jpg new file mode 100644 index 0000000..035c94d Binary files /dev/null and b/src/assets/imgs/home/banner_cover.jpg differ diff --git a/src/assets/imgs/home/gitcode-logo.svg b/src/assets/imgs/home/gitcode-logo.svg new file mode 100644 index 0000000..6c93d03 --- /dev/null +++ b/src/assets/imgs/home/gitcode-logo.svg @@ -0,0 +1,11 @@ + + + ic/gitcode-logo + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/home/group-bg.svg b/src/assets/imgs/home/group-bg.svg new file mode 100644 index 0000000..670aa18 --- /dev/null +++ b/src/assets/imgs/home/group-bg.svg @@ -0,0 +1,26 @@ + + + 组织背景 + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/home/header_log.svg b/src/assets/imgs/home/header_log.svg new file mode 100644 index 0000000..142dbf6 --- /dev/null +++ b/src/assets/imgs/home/header_log.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/imgs/home/home_banner.png b/src/assets/imgs/home/home_banner.png new file mode 100644 index 0000000..e7f46b9 Binary files /dev/null and b/src/assets/imgs/home/home_banner.png differ diff --git a/src/assets/imgs/home/home_bg.svg b/src/assets/imgs/home/home_bg.svg new file mode 100644 index 0000000..51412a4 --- /dev/null +++ b/src/assets/imgs/home/home_bg.svg @@ -0,0 +1,71 @@ + + + 编组 30 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/home/home_bg2.jpg b/src/assets/imgs/home/home_bg2.jpg new file mode 100644 index 0000000..911b972 Binary files /dev/null and b/src/assets/imgs/home/home_bg2.jpg differ diff --git a/src/assets/imgs/home/home_bg3.png b/src/assets/imgs/home/home_bg3.png new file mode 100644 index 0000000..b36bbc0 Binary files /dev/null and b/src/assets/imgs/home/home_bg3.png differ diff --git a/src/assets/imgs/home/home_bg_1.png b/src/assets/imgs/home/home_bg_1.png new file mode 100644 index 0000000..730d481 Binary files /dev/null and b/src/assets/imgs/home/home_bg_1.png differ diff --git a/src/assets/imgs/home/home_bg_2.png b/src/assets/imgs/home/home_bg_2.png new file mode 100644 index 0000000..7b5a1c5 Binary files /dev/null and b/src/assets/imgs/home/home_bg_2.png differ diff --git a/src/assets/imgs/home/home_colorbg.png b/src/assets/imgs/home/home_colorbg.png new file mode 100644 index 0000000..0c8af4a Binary files /dev/null and b/src/assets/imgs/home/home_colorbg.png differ diff --git a/src/assets/imgs/home/home_company1.svg b/src/assets/imgs/home/home_company1.svg new file mode 100644 index 0000000..d3144df --- /dev/null +++ b/src/assets/imgs/home/home_company1.svg @@ -0,0 +1,12 @@ + + + 鲲鹏 + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/home/home_company2.svg b/src/assets/imgs/home/home_company2.svg new file mode 100644 index 0000000..f564620 --- /dev/null +++ b/src/assets/imgs/home/home_company2.svg @@ -0,0 +1,12 @@ + + + 编组 7 + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/home/home_company3.svg b/src/assets/imgs/home/home_company3.svg new file mode 100644 index 0000000..58e2b21 --- /dev/null +++ b/src/assets/imgs/home/home_company3.svg @@ -0,0 +1,18 @@ + + + 编组 8 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/home/home_company4.svg b/src/assets/imgs/home/home_company4.svg new file mode 100644 index 0000000..ffce6b7 --- /dev/null +++ b/src/assets/imgs/home/home_company4.svg @@ -0,0 +1,18 @@ + + + 编组 9 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/home/home_company5.svg b/src/assets/imgs/home/home_company5.svg new file mode 100644 index 0000000..bbff5fb --- /dev/null +++ b/src/assets/imgs/home/home_company5.svg @@ -0,0 +1,44 @@ + + + 编组 29备份 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/home/home_fill.png b/src/assets/imgs/home/home_fill.png new file mode 100644 index 0000000..d341cb7 Binary files /dev/null and b/src/assets/imgs/home/home_fill.png differ diff --git a/src/assets/imgs/home/home_group.png b/src/assets/imgs/home/home_group.png new file mode 100644 index 0000000..9859405 Binary files /dev/null and b/src/assets/imgs/home/home_group.png differ diff --git a/src/assets/imgs/home/home_group.svg b/src/assets/imgs/home/home_group.svg new file mode 100644 index 0000000..51beaf4 --- /dev/null +++ b/src/assets/imgs/home/home_group.svg @@ -0,0 +1,65 @@ + + + 组织 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/home/home_num.svg b/src/assets/imgs/home/home_num.svg new file mode 100644 index 0000000..efe7d66 --- /dev/null +++ b/src/assets/imgs/home/home_num.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/assets/imgs/home/home_project.svg b/src/assets/imgs/home/home_project.svg new file mode 100644 index 0000000..03065d5 --- /dev/null +++ b/src/assets/imgs/home/home_project.svg @@ -0,0 +1,29 @@ + + + 项目 + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/home/home_user.svg b/src/assets/imgs/home/home_user.svg new file mode 100644 index 0000000..0f46cc8 --- /dev/null +++ b/src/assets/imgs/home/home_user.svg @@ -0,0 +1,50 @@ + + + 用户 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/home/huawei_log.svg b/src/assets/imgs/home/huawei_log.svg new file mode 100644 index 0000000..5f2b6b6 --- /dev/null +++ b/src/assets/imgs/home/huawei_log.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/assets/imgs/home/mobile-banner.png b/src/assets/imgs/home/mobile-banner.png new file mode 100644 index 0000000..4081eb4 Binary files /dev/null and b/src/assets/imgs/home/mobile-banner.png differ diff --git a/src/assets/imgs/home/mobile-org-bg.png b/src/assets/imgs/home/mobile-org-bg.png new file mode 100644 index 0000000..1a7225c Binary files /dev/null and b/src/assets/imgs/home/mobile-org-bg.png differ diff --git a/src/assets/imgs/home/mobile-repo-bg.png b/src/assets/imgs/home/mobile-repo-bg.png new file mode 100644 index 0000000..d9b46c4 Binary files /dev/null and b/src/assets/imgs/home/mobile-repo-bg.png differ diff --git a/src/assets/imgs/home/organization_log_01.png b/src/assets/imgs/home/organization_log_01.png new file mode 100644 index 0000000..c31abd5 Binary files /dev/null and b/src/assets/imgs/home/organization_log_01.png differ diff --git a/src/assets/imgs/home/organization_log_02.png b/src/assets/imgs/home/organization_log_02.png new file mode 100644 index 0000000..5094425 Binary files /dev/null and b/src/assets/imgs/home/organization_log_02.png differ diff --git a/src/assets/imgs/home/organization_log_03.png b/src/assets/imgs/home/organization_log_03.png new file mode 100644 index 0000000..5852596 Binary files /dev/null and b/src/assets/imgs/home/organization_log_03.png differ diff --git a/src/assets/imgs/home/organization_log_04.png b/src/assets/imgs/home/organization_log_04.png new file mode 100644 index 0000000..d1ff801 Binary files /dev/null and b/src/assets/imgs/home/organization_log_04.png differ diff --git a/src/assets/imgs/home/repo-bg.svg b/src/assets/imgs/home/repo-bg.svg new file mode 100644 index 0000000..3f56094 --- /dev/null +++ b/src/assets/imgs/home/repo-bg.svg @@ -0,0 +1,26 @@ + + + 项目背景 + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/home/repo-header-bg.png b/src/assets/imgs/home/repo-header-bg.png new file mode 100644 index 0000000..47f8ce1 Binary files /dev/null and b/src/assets/imgs/home/repo-header-bg.png differ diff --git a/src/assets/imgs/home/repo_log.svg b/src/assets/imgs/home/repo_log.svg new file mode 100644 index 0000000..707966f --- /dev/null +++ b/src/assets/imgs/home/repo_log.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/assets/imgs/icon/acc-modal/acc-code.svg b/src/assets/imgs/icon/acc-modal/acc-code.svg new file mode 100644 index 0000000..3d88551 --- /dev/null +++ b/src/assets/imgs/icon/acc-modal/acc-code.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/imgs/icon/acc-modal/acc-group.svg b/src/assets/imgs/icon/acc-modal/acc-group.svg new file mode 100644 index 0000000..1ca961b --- /dev/null +++ b/src/assets/imgs/icon/acc-modal/acc-group.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/assets/imgs/icon/acc-modal/acc-repo.svg b/src/assets/imgs/icon/acc-modal/acc-repo.svg new file mode 100644 index 0000000..a9f66bf --- /dev/null +++ b/src/assets/imgs/icon/acc-modal/acc-repo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/imgs/icon/ic-back@2x.png b/src/assets/imgs/icon/ic-back@2x.png new file mode 100644 index 0000000..bb94348 Binary files /dev/null and b/src/assets/imgs/icon/ic-back@2x.png differ diff --git a/src/assets/imgs/icon/icon-branches.svg b/src/assets/imgs/icon/icon-branches.svg new file mode 100644 index 0000000..48b8587 --- /dev/null +++ b/src/assets/imgs/icon/icon-branches.svg @@ -0,0 +1,15 @@ + + + ic/branches + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/icon/icon-commit.svg b/src/assets/imgs/icon/icon-commit.svg new file mode 100644 index 0000000..0ae951c --- /dev/null +++ b/src/assets/imgs/icon/icon-commit.svg @@ -0,0 +1,16 @@ + + + ic/license + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/icon/icon-delete.png b/src/assets/imgs/icon/icon-delete.png new file mode 100644 index 0000000..9deef4d Binary files /dev/null and b/src/assets/imgs/icon/icon-delete.png differ diff --git a/src/assets/imgs/icon/icon-delete.svg b/src/assets/imgs/icon/icon-delete.svg new file mode 100644 index 0000000..628d0cc --- /dev/null +++ b/src/assets/imgs/icon/icon-delete.svg @@ -0,0 +1,15 @@ + + + ic/删除备份 + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/icon/icon-discuss-pin.svg b/src/assets/imgs/icon/icon-discuss-pin.svg new file mode 100644 index 0000000..a7508e3 --- /dev/null +++ b/src/assets/imgs/icon/icon-discuss-pin.svg @@ -0,0 +1,11 @@ + + + 切片 + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/icon/icon-exit.svg b/src/assets/imgs/icon/icon-exit.svg new file mode 100644 index 0000000..d0e80de --- /dev/null +++ b/src/assets/imgs/icon/icon-exit.svg @@ -0,0 +1,14 @@ + + + ic/删除备份 + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/icon/icon-file.svg b/src/assets/imgs/icon/icon-file.svg new file mode 100644 index 0000000..a958015 --- /dev/null +++ b/src/assets/imgs/icon/icon-file.svg @@ -0,0 +1,16 @@ + + + ic/file + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/icon/icon-history.png b/src/assets/imgs/icon/icon-history.png new file mode 100644 index 0000000..bca4fe2 Binary files /dev/null and b/src/assets/imgs/icon/icon-history.png differ diff --git a/src/assets/imgs/icon/icon-key.svg b/src/assets/imgs/icon/icon-key.svg new file mode 100644 index 0000000..ccea831 --- /dev/null +++ b/src/assets/imgs/icon/icon-key.svg @@ -0,0 +1,17 @@ + + + icc/calendar-c备份 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/icon/icon-language.png b/src/assets/imgs/icon/icon-language.png new file mode 100644 index 0000000..2c0823b Binary files /dev/null and b/src/assets/imgs/icon/icon-language.png differ diff --git a/src/assets/imgs/icon/icon-member.svg b/src/assets/imgs/icon/icon-member.svg new file mode 100644 index 0000000..1273c0a --- /dev/null +++ b/src/assets/imgs/icon/icon-member.svg @@ -0,0 +1,16 @@ + + + ic/file备份 + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/icon/icon-paper.svg b/src/assets/imgs/icon/icon-paper.svg new file mode 100644 index 0000000..8549004 --- /dev/null +++ b/src/assets/imgs/icon/icon-paper.svg @@ -0,0 +1,26 @@ + + + ic/folder-展开-彩备份 3 + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/icon/icon-pen.svg b/src/assets/imgs/icon/icon-pen.svg new file mode 100644 index 0000000..d69c5cb --- /dev/null +++ b/src/assets/imgs/icon/icon-pen.svg @@ -0,0 +1,25 @@ + + + ic/folder-展开-彩备份 2 + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/icon/icon-set-default.svg b/src/assets/imgs/icon/icon-set-default.svg new file mode 100644 index 0000000..5d0f786 --- /dev/null +++ b/src/assets/imgs/icon/icon-set-default.svg @@ -0,0 +1,16 @@ + + + ic/删除备份 2 + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/icon/icon-setting.svg b/src/assets/imgs/icon/icon-setting.svg new file mode 100644 index 0000000..e52def0 --- /dev/null +++ b/src/assets/imgs/icon/icon-setting.svg @@ -0,0 +1,14 @@ + + + ic/删除备份 2 + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/icon/icon-verified.svg b/src/assets/imgs/icon/icon-verified.svg new file mode 100644 index 0000000..98e5dc1 --- /dev/null +++ b/src/assets/imgs/icon/icon-verified.svg @@ -0,0 +1,18 @@ + + + ic/分支活动备份 2 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/icon/login-modal/logo-back.svg b/src/assets/imgs/icon/login-modal/logo-back.svg new file mode 100644 index 0000000..1bbc9c3 --- /dev/null +++ b/src/assets/imgs/icon/login-modal/logo-back.svg @@ -0,0 +1,13 @@ + + + ic/左备份 + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/icon/login-modal/logo-csdn.svg b/src/assets/imgs/icon/login-modal/logo-csdn.svg new file mode 100644 index 0000000..3fe0706 --- /dev/null +++ b/src/assets/imgs/icon/login-modal/logo-csdn.svg @@ -0,0 +1,7 @@ + + + ic/csdn + + + + \ No newline at end of file diff --git a/src/assets/imgs/icon/login-modal/logo-gitee.svg b/src/assets/imgs/icon/login-modal/logo-gitee.svg new file mode 100644 index 0000000..70153da --- /dev/null +++ b/src/assets/imgs/icon/login-modal/logo-gitee.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/imgs/icon/login-modal/logo-github.svg b/src/assets/imgs/icon/login-modal/logo-github.svg new file mode 100644 index 0000000..e32ed27 --- /dev/null +++ b/src/assets/imgs/icon/login-modal/logo-github.svg @@ -0,0 +1,7 @@ + + + ic/github + + + + \ No newline at end of file diff --git a/src/assets/imgs/icon/login-modal/logo-huawei.svg b/src/assets/imgs/icon/login-modal/logo-huawei.svg new file mode 100644 index 0000000..560bbf5 --- /dev/null +++ b/src/assets/imgs/icon/login-modal/logo-huawei.svg @@ -0,0 +1,7 @@ + + + ic/huawei + + + + \ No newline at end of file diff --git a/src/assets/imgs/icon/login-modal/logo-mobile.svg b/src/assets/imgs/icon/login-modal/logo-mobile.svg new file mode 100644 index 0000000..a05458a --- /dev/null +++ b/src/assets/imgs/icon/login-modal/logo-mobile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/imgs/intro/earth1.jpg b/src/assets/imgs/intro/earth1.jpg new file mode 100644 index 0000000..c8bec1e Binary files /dev/null and b/src/assets/imgs/intro/earth1.jpg differ diff --git a/src/assets/imgs/intro/user2.png b/src/assets/imgs/intro/user2.png new file mode 100644 index 0000000..a15da1b Binary files /dev/null and b/src/assets/imgs/intro/user2.png differ diff --git a/src/assets/imgs/logo.png b/src/assets/imgs/logo.png new file mode 100644 index 0000000..3b74073 Binary files /dev/null and b/src/assets/imgs/logo.png differ diff --git a/src/assets/imgs/logo/csdn-logo.svg b/src/assets/imgs/logo/csdn-logo.svg new file mode 100644 index 0000000..a32fcdb --- /dev/null +++ b/src/assets/imgs/logo/csdn-logo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/imgs/logo/gitcode-ico.png b/src/assets/imgs/logo/gitcode-ico.png new file mode 100644 index 0000000..d0e098e Binary files /dev/null and b/src/assets/imgs/logo/gitcode-ico.png differ diff --git a/src/assets/imgs/logo/gitcode-logo-new.png b/src/assets/imgs/logo/gitcode-logo-new.png new file mode 100644 index 0000000..6e21ef2 Binary files /dev/null and b/src/assets/imgs/logo/gitcode-logo-new.png differ diff --git a/src/assets/imgs/logo/gitcode-logo.png b/src/assets/imgs/logo/gitcode-logo.png new file mode 100644 index 0000000..db1f0f0 Binary files /dev/null and b/src/assets/imgs/logo/gitcode-logo.png differ diff --git a/src/assets/imgs/logo/huawei-cloud-logo.svg b/src/assets/imgs/logo/huawei-cloud-logo.svg new file mode 100644 index 0000000..95a52e3 --- /dev/null +++ b/src/assets/imgs/logo/huawei-cloud-logo.svg @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/imgs/logo/logo.png b/src/assets/imgs/logo/logo.png new file mode 100644 index 0000000..b279e75 Binary files /dev/null and b/src/assets/imgs/logo/logo.png differ diff --git a/src/assets/imgs/no-data.png b/src/assets/imgs/no-data.png new file mode 100644 index 0000000..029c3f3 Binary files /dev/null and b/src/assets/imgs/no-data.png differ diff --git a/src/assets/imgs/org/dev-left.png b/src/assets/imgs/org/dev-left.png new file mode 100644 index 0000000..faa4b72 Binary files /dev/null and b/src/assets/imgs/org/dev-left.png differ diff --git a/src/assets/imgs/org/dev-liveBroadcast.png b/src/assets/imgs/org/dev-liveBroadcast.png new file mode 100644 index 0000000..68467a6 Binary files /dev/null and b/src/assets/imgs/org/dev-liveBroadcast.png differ diff --git a/src/assets/imgs/org/dev-right.png b/src/assets/imgs/org/dev-right.png new file mode 100644 index 0000000..a2677e1 Binary files /dev/null and b/src/assets/imgs/org/dev-right.png differ diff --git a/src/assets/imgs/org/icon/icon-file.svg b/src/assets/imgs/org/icon/icon-file.svg new file mode 100644 index 0000000..6079521 --- /dev/null +++ b/src/assets/imgs/org/icon/icon-file.svg @@ -0,0 +1,14 @@ + + + ic/database备份 2 + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/org/icon/icon-stock.svg b/src/assets/imgs/org/icon/icon-stock.svg new file mode 100644 index 0000000..dcef857 --- /dev/null +++ b/src/assets/imgs/org/icon/icon-stock.svg @@ -0,0 +1,13 @@ + + + ic/database备份 4 + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/org/icon/icon-time.svg b/src/assets/imgs/org/icon/icon-time.svg new file mode 100644 index 0000000..9da0d7f --- /dev/null +++ b/src/assets/imgs/org/icon/icon-time.svg @@ -0,0 +1,11 @@ + + + ic/database备份 3 + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/org/icon_active.png b/src/assets/imgs/org/icon_active.png new file mode 100644 index 0000000..23d2a29 Binary files /dev/null and b/src/assets/imgs/org/icon_active.png differ diff --git a/src/assets/imgs/org/icon_ai.png b/src/assets/imgs/org/icon_ai.png new file mode 100644 index 0000000..3d47f39 Binary files /dev/null and b/src/assets/imgs/org/icon_ai.png differ diff --git a/src/assets/imgs/org/icon_video.png b/src/assets/imgs/org/icon_video.png new file mode 100644 index 0000000..7dc772b Binary files /dev/null and b/src/assets/imgs/org/icon_video.png differ diff --git a/src/assets/imgs/org/org-devimg.png b/src/assets/imgs/org/org-devimg.png new file mode 100644 index 0000000..9a2dce4 Binary files /dev/null and b/src/assets/imgs/org/org-devimg.png differ diff --git a/src/assets/imgs/org/org-img.png b/src/assets/imgs/org/org-img.png new file mode 100644 index 0000000..ad7f1ed Binary files /dev/null and b/src/assets/imgs/org/org-img.png differ diff --git a/src/assets/imgs/org/org-top.png b/src/assets/imgs/org/org-top.png new file mode 100644 index 0000000..15ab292 Binary files /dev/null and b/src/assets/imgs/org/org-top.png differ diff --git a/src/assets/imgs/orgSetting/activities.png b/src/assets/imgs/orgSetting/activities.png new file mode 100644 index 0000000..b8b6ad5 Binary files /dev/null and b/src/assets/imgs/orgSetting/activities.png differ diff --git a/src/assets/imgs/orgSetting/baseInfo.png b/src/assets/imgs/orgSetting/baseInfo.png new file mode 100644 index 0000000..72fce59 Binary files /dev/null and b/src/assets/imgs/orgSetting/baseInfo.png differ diff --git a/src/assets/imgs/orgSetting/content.png b/src/assets/imgs/orgSetting/content.png new file mode 100644 index 0000000..4aaa9a8 Binary files /dev/null and b/src/assets/imgs/orgSetting/content.png differ diff --git a/src/assets/imgs/orgSetting/marketing.png b/src/assets/imgs/orgSetting/marketing.png new file mode 100644 index 0000000..0a6b0c5 Binary files /dev/null and b/src/assets/imgs/orgSetting/marketing.png differ diff --git a/src/assets/imgs/repo-item.png b/src/assets/imgs/repo-item.png new file mode 100644 index 0000000..f136c3d Binary files /dev/null and b/src/assets/imgs/repo-item.png differ diff --git a/src/assets/imgs/repo/private.png b/src/assets/imgs/repo/private.png new file mode 100644 index 0000000..b40a1a8 Binary files /dev/null and b/src/assets/imgs/repo/private.png differ diff --git a/src/assets/imgs/repo/public.png b/src/assets/imgs/repo/public.png new file mode 100644 index 0000000..3c77cb8 Binary files /dev/null and b/src/assets/imgs/repo/public.png differ diff --git a/src/assets/imgs/user-banner.png b/src/assets/imgs/user-banner.png new file mode 100644 index 0000000..123884e Binary files /dev/null and b/src/assets/imgs/user-banner.png differ diff --git a/src/components/Animation/config.ts b/src/components/Animation/config.ts new file mode 100644 index 0000000..bb4e699 --- /dev/null +++ b/src/components/Animation/config.ts @@ -0,0 +1,29 @@ +import dataEmpty from './data/data-empty.json'; +import loading from './data/loading.json'; +import error403 from './data/error-403.json'; +import error404 from './data/error-404.json'; +import error503 from './data/error-503.json'; + +// lottie动画图片资源路径 +export const assetsPath = `${import.meta.env.VITE_STATIC_HOST}/static/images/`; + +export const defaultRender = 'canvas'; + +// lottie动画定义 +export const animationMap = { + dataEmpty: { + data: dataEmpty + }, + loading: { + data: loading + }, + error403: { + data: error403 + }, + error404: { + data: error404 + }, + error503: { + data: error503 + }, +}; diff --git a/src/components/Animation/data/data-empty.json b/src/components/Animation/data/data-empty.json new file mode 100644 index 0000000..2cb4cf0 --- /dev/null +++ b/src/components/Animation/data/data-empty.json @@ -0,0 +1 @@ +{"v":"5.6.5","fr":30,"ip":0,"op":90,"w":180,"h":180,"nm":"Null data","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"paper-3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[126.546,106.395,0],"to":[0,3.167,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[126.546,125.395,0],"to":[0,0,0],"ti":[0,3.167,0]},{"t":90,"s":[126.546,106.395,0]}],"ix":2},"a":{"a":0,"k":[25.011,21.668,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[16.874,20.957],[10.465,-1.941],[-7.329,-7.666],[-0.372,-0.3],[-1.248,0.018],[-5.137,4.661],[-0.621,1.063]],"o":[[-3.184,8.863],[4.227,6.606],[0.349,0.365],[2.245,1.811],[6.171,-1.932],[2.633,-2.39],[-1.536,-4.685]],"v":[[-0.997,-21.668],[-25.01,-5.749],[-5.019,19.139],[-2.885,20.375],[3.011,21.145],[19.799,13.723],[25.01,8.076]],"c":true},"ix":2},"nm":"路径 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.971377253532,0.971377253532,0.971377253532,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[25.011,21.668],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"paper-2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[133.645,15.87,0],"to":[0,1.667,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[133.645,25.87,0],"to":[0,0,0],"ti":[0,1.667,0]},{"t":90,"s":[133.645,15.87,0]}],"ix":2},"a":{"a":0,"k":[13.7,11.044,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.258,8.072],[-4.613,4.658],[-5.13,-6.533],[1.995,-1.278],[0.785,-0.526],[4.106,1.408]],"o":[[7.716,1.04],[1.424,0.942],[0.478,0.609],[1.373,2.598],[-6.798,4.563],[-3.792,-2.632]],"v":[[-13.701,-5.617],[4.795,-11.044],[13.562,-1.154],[11.286,1.678],[12.168,6.363],[-3.124,10.439]],"c":true},"ix":2},"nm":"路径 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.955876847809,0.949033250996,0.949033250996,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[13.7,11.044],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.226,0.872],[0.082,-1.019],[0.105,0.016],[-0.602,1.487]],"o":[[0.075,1.231],[-0.173,2.119],[-0.579,-0.089],[0.362,-0.891]],"v":[[1.465,-3.744],[1.453,-0.37],[-0.103,3.728],[-0.916,-1.1]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.885999971278,0.885999971278,0.885999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[25.883,13.835],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"paper","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[27.805,57.804,0],"to":[0,1.833,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[27.805,68.804,0],"to":[0,0,0],"ti":[0,1.833,0]},{"t":90,"s":[27.805,57.804,0]}],"ix":2},"a":{"a":0,"k":[18.769,14.759,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[10.759,5.252],[-0.429,9.009],[-11.256,-1.957],[0.862,-3.144],[0.318,-1.26],[5.493,-2.34]],"o":[[8.845,-6.039],[2.322,-0.347],[1.049,0.182],[3.794,1.392],[-2.75,10.922],[-6.299,0.8]],"v":[[-18.769,7.922],[-4.858,-14.65],[13.207,-12.607],[13.486,-7.618],[18.702,-3.641],[6.82,14.6]],"c":true},"ix":2},"nm":"路径 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"mm","mm":4,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":2,"k":{"a":0,"k":[0,1,1,1,1,0,0,0],"ix":9}},"s":{"a":0,"k":[0,0],"ix":5},"e":{"a":0,"k":[146,0],"ix":6},"t":1,"nm":"渐变填充 1","mn":"ADBE Vector Graphic - G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[18.77,14.759],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.451,2.019],[-0.852,-1.117],[0.123,-0.082],[0.751,2.075]],"o":[[1.209,1.189],[1.775,2.327],[-0.673,0.442],[-0.451,-1.244]],"v":[[-2.419,-4.762],[0.673,-1.303],[2.854,4.32],[-2.419,0.132]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.885999971278,0.885999971278,0.885999971278,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[34.668,7.038],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"hand-l","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":11,"s":[99]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":68,"s":[99]},{"t":69,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":11,"s":[69.394,68.275,0],"to":[0,-0.346,0],"ti":[0,0.152,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":16,"s":[69.394,70.486,0],"to":[0,-0.5,0],"ti":[0,-0.152,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":63,"s":[69.394,70.486,0],"to":[0,0.152,0],"ti":[0,-0.346,0]},{"t":68,"s":[69.394,68.275,0]}],"ix":2},"a":{"a":0,"k":[4.543,3.719,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":10,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":11,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":68,"s":[100,100,100]},{"t":69,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.134,0.572],[0.429,-1.6],[-2.134,-0.571],[-0.428,1.6]],"o":[[-2.134,-0.572],[-0.429,1.601],[2.134,0.572],[0.429,-1.6]],"v":[[0.777,-2.898],[-3.864,-1.035],[-0.777,2.898],[3.863,1.036]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.33300000359,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[4.542,3.72],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"hand-r","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":11,"s":[99]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":68,"s":[99]},{"t":69,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":11,"s":[122.395,68.276,0],"to":[0,-0.346,0],"ti":[0,0.152,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":16,"s":[122.395,70.487,0],"to":[0,-0.5,0],"ti":[0,-0.152,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":63,"s":[122.395,70.487,0],"to":[0,0.152,0],"ti":[0,-0.346,0]},{"t":68,"s":[122.395,68.276,0]}],"ix":2},"a":{"a":0,"k":[4.576,3.825,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":10,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":11,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":68,"s":[100,100,100]},{"t":69,"s":[0,0,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.075,0.756],[-0.566,-1.557],[2.075,-0.755],[0.566,1.557]],"o":[[2.076,-0.755],[0.567,1.557],[-2.076,0.756],[-0.567,-1.557]],"v":[[-1.027,-2.82],[3.758,-1.368],[1.027,2.818],[-3.758,1.368]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.33300000359,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[4.576,3.825],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"box-f","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[89.303,106.118,0],"ix":2},"a":{"a":0,"k":[81.278,48.282,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[1.492,-0.721],[0.063,-0.026],[0,0],[0.699,1.396],[0,0]],"o":[[0,0],[0.72,1.493],[-0.061,0.03],[0,0],[-1.448,0.58],[0,0],[0,0]],"v":[[21.308,-25.824],[34.445,1.389],[33.048,5.396],[32.859,5.479],[-16.505,25.243],[-20.301,23.801],[-35.165,-5.893]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.941000007181,0.948999980852,0.969000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[127.14,26.074],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-1.4,-0.887],[-0.284,-0.079],[0,0],[-0.716,1.091],[0,0]],"o":[[0,0],[-0.887,1.4],[0.249,0.156],[0,0],[1.256,0.349],[0,0],[0,0]],"v":[[-28.131,-24.935],[-45.032,1.758],[-44.103,5.898],[-43.3,6.253],[22.697,24.586],[26.008,23.341],[45.919,-6.99]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.941000007181,0.948999980852,0.969000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[46.169,27.171],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[28.236,-48.032],[-28.236,-28.101],[-28.236,48.032],[27.602,24.79]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.62400004069,0.654999976065,0.702000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[120.212,48.282],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-37.025,-47.038],[37.025,-29.093],[37.025,47.038],[-37.025,25.783]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[55.063,49.274],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"mask","parent":12,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[24.26,14.623,0],"ix":2},"a":{"a":0,"k":[16.25,3.25,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":41,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16,-3],[16,-3],[16,3],[-16,3]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":43,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16,-3],[16,-3],[16,11.313],[-16,11.313]],"c":true}]},{"t":45,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16,-3],[16,-3],[16,3],[-16,3]],"c":true}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.33300000359,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[16.25,3.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"eye-rr","parent":12,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":29,"s":[36.76,21.123,0],"to":[-0.833,0,0],"ti":[0.333,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":34,"s":[31.76,21.123,0],"to":[-0.333,0,0],"ti":[-0.5,0,0]},{"t":39,"s":[34.76,21.123,0]}],"ix":2},"a":{"a":0,"k":[1.75,1.75,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0.828],[0.826,0],[0,-0.826],[-0.826,0]],"o":[[0,-0.828],[-0.826,0],[0,0.828],[0.826,0]],"v":[[1.5,0],[0,-1.5],[-1.5,0],[0,1.5]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1.75,1.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"eye-r","parent":12,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[34.26,20.623,0],"ix":2},"a":{"a":0,"k":[6.25,6.25,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,3.311],[3.305,0],[0,-3.305],[-3.305,0]],"o":[[0,-3.311],[-3.305,0],[0,3.311],[3.305,0]],"v":[[6,0],[0,-6],[-6,0],[0,6]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[6.25,6.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"eye-ll","parent":12,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":29,"s":[16.76,21.123,0],"to":[-0.833,0,0],"ti":[0.333,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":34,"s":[11.76,21.123,0],"to":[-0.333,0,0],"ti":[-0.5,-0.167,0]},{"t":39,"s":[14.76,21.123,0]}],"ix":2},"a":{"a":0,"k":[1.75,1.75,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0.828],[0.826,0],[0,-0.826],[-0.826,0]],"o":[[0,-0.828],[-0.826,0],[0,0.828],[0.826,0]],"v":[[1.5,0],[0,-1.5],[-1.5,0],[0,1.5]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1.75,1.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"eye-l","parent":12,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[14.26,20.623,0],"ix":2},"a":{"a":0,"k":[6.25,6.25,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,3.311],[3.305,0],[0,-3.305],[-3.305,0]],"o":[[0,-3.311],[-3.305,0],[0,3.311],[3.305,0]],"v":[[6,0],[0,-6],[-6,0],[0,6]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[6.25,6.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":12,"ty":4,"nm":"cat","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":17,"s":[95.971,95.997,0],"to":[0,-3.176,0],"ti":[0,7.592,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":23,"s":[95.971,62.999,0],"to":[0,-4.359,0],"ti":[0,1.824,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":25,"s":[95.971,65.997,0],"to":[0,-5,0],"ti":[0,-1.824,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[95.971,65.997,0],"to":[0,1.824,0],"ti":[0,-4.359,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":62,"s":[95.971,62.999,0],"to":[0,7.592,0],"ti":[0,-3.176,0]},{"t":68,"s":[95.971,95.997,0]}],"ix":2},"a":{"a":0,"k":[24.23,20.44,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.247,1.26],[0.532,0.42],[2.814,-1.717],[1.461,-1.166],[4.088,0],[3.433,-1.816],[1.858,1.128],[1.037,-0.808],[0.273,-1.402],[-0.01,-1.712],[-1.885,-4.835],[-0.011,-0.027],[0,-0.54],[-23.919,0.011],[0,2.526],[0.049,0.493],[-0.038,0.089],[-0.011,2.394]],"o":[[-0.273,-1.402],[-1.042,-0.814],[-1.865,1.134],[-3.448,-1.838],[-4.061,0],[-1.455,-1.165],[-2.799,-1.702],[-0.537,0.42],[-0.248,1.26],[0.011,2.394],[0.011,0.026],[-0.054,0.546],[0,2.526],[24.032,-0.012],[0,-0.483],[0.049,-0.079],[1.885,-4.841],[0,-1.707]],"v":[[23.604,-16.672],[22.4,-19.376],[16.745,-18.053],[11.443,-14.246],[-0.052,-17.05],[-11.488,-14.278],[-16.778,-18.068],[-22.402,-19.376],[-23.605,-16.672],[-23.971,-12.125],[-21.769,-0.15],[-21.736,-0.076],[-21.822,1.561],[-0.052,20.179],[21.719,1.561],[21.648,0.097],[21.773,-0.155],[23.975,-12.13]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.33300000359,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[24.23,20.44],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"box-b","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[91.268,86.589,0],"ix":2},"a":{"a":0,"k":[65.454,46.626,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-37.398,-45.383],[37.398,-27.509],[36.652,45.383],[-37.398,27.438]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.894000004787,0.913999968884,0.941000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[93.26,45.633],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[27.919,-46.376],[-27.919,-26.445],[-27.919,46.376],[27.287,26.445]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[28.169,46.626],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/src/components/Animation/data/error-403.json b/src/components/Animation/data/error-403.json new file mode 100644 index 0000000..e9cd742 --- /dev/null +++ b/src/components/Animation/data/error-403.json @@ -0,0 +1 @@ +{"v":"5.6.5","fr":30,"ip":0,"op":270,"w":240,"h":240,"nm":"403-2","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"mask 2","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":28,"s":[180,215,0],"to":[0,-3.5,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":36,"s":[180,194,0],"to":[0,0,0],"ti":[0,-3.5,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":41,"s":[180,215,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":80,"s":[180,215,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":99,"s":[180,215,0],"to":[0,-3.5,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":107,"s":[180,194,0],"to":[0,0,0],"ti":[0,-3.5,0]},{"t":112,"s":[180,215,0]}],"ix":2},"a":{"a":0,"k":[48.25,9.25,0],"ix":1},"s":{"a":0,"k":[112.5,112.5,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-48,-9],[48,-9],[48,9],[-48,9]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[48.25,9.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"mask","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":28,"s":[180,151,0],"to":[0,3.667,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":36,"s":[180,173,0],"to":[0,0,0],"ti":[0,3.667,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":41,"s":[180,151,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":80,"s":[180,151,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":99,"s":[180,151,0],"to":[0,3.667,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":107,"s":[180,173,0],"to":[0,0,0],"ti":[0,3.667,0]},{"t":112,"s":[180,151,0]}],"ix":2},"a":{"a":0,"k":[48.25,9.25,0],"ix":1},"s":{"a":0,"k":[112.5,130,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-48,-9],[48,-9],[48,9],[-48,9]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[48.25,9.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"eye-rr","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[149.791,184.904,0],"to":[5.863,0.131,0],"ti":[-0.326,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":9,"s":[160.094,184.953,0],"to":[0.326,0,0],"ti":[-0.326,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":30,"s":[160.094,184.953,0],"to":[0.326,0,0],"ti":[5.371,-0.146,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":40,"s":[140.611,185.002,0],"to":[-0.094,-0.064,0],"ti":[0,0.146,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":58,"s":[140.563,184.953,0],"to":[-0.436,1.206,0],"ti":[-0.326,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":67,"s":[160.094,184.953,0],"to":[0.148,0,0],"ti":[0.072,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":76,"s":[140.116,184.953,0],"to":[-0.087,0,0],"ti":[0.072,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":99,"s":[140.116,184.953,0],"to":[-0.087,0,0],"ti":[0.488,1.855,0]},{"t":112,"s":[149.791,184.904,0]}],"ix":2},"a":{"a":0,"k":[-31,-6,0],"ix":1},"s":{"a":0,"k":[126,126,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[7.26,7.26],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-30.398,-6.989],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"eye-ll","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[147.398,184.807,0],"to":[5.521,-0.051,0],"ti":[-0.326,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":9,"s":[158.727,184.953,0],"to":[0.326,0,0],"ti":[-0.326,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":30,"s":[158.727,184.953,0],"to":[0.326,0,0],"ti":[0.342,-0.049,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":40,"s":[140.074,185.002,0],"to":[1.663,0.096,0],"ti":[0.342,-0.049,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":58,"s":[140.074,185.002,0],"to":[1.663,0.096,0],"ti":[-0.326,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":67,"s":[158.727,184.953,0],"to":[0.148,0,0],"ti":[0.072,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":76,"s":[138.749,184.953,0],"to":[-0.087,0,0],"ti":[0.072,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":99,"s":[138.749,184.953,0],"to":[-0.087,0,0],"ti":[0.244,2.246,0]},{"t":112,"s":[147.398,184.807,0]}],"ix":2},"a":{"a":0,"k":[-31,-6,0],"ix":1},"s":{"a":0,"k":[126,126,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[7.26,7.26],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-30.398,-6.989],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":1,"nm":"eye-r","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[207.812,183,0],"ix":2},"a":{"a":0,"k":[150,183,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":0,"k":{"i":[[10.163,0],[0,-10.163],[-10.163,0],[0,10.163]],"o":[[-10.163,0],[0,10.163],[10.163,0],[0,-10.163]],"v":[[149.902,164.5],[131.5,182.902],[149.902,201.303],[168.303,182.902]],"c":true},"ix":1},"o":{"a":0,"k":100,"ix":3},"x":{"a":0,"k":0,"ix":4},"nm":"蒙版 1"}],"sw":360,"sh":360,"sc":"#ffffff","ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":1,"nm":"eye-l","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":58,"s":[185.562,186.438,0],"to":[-1.26,-4.406,0],"ti":[1.26,4.406,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":67,"s":[178,160,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":99,"s":[178,160,0],"to":[1.26,4.406,0],"ti":[-1.26,-4.406,0]},{"t":108,"s":[185.562,186.438,0]}],"ix":2},"a":{"a":0,"k":[150,183,0],"ix":1},"s":{"a":0,"k":[32,32,100],"ix":6}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":0,"k":{"i":[[10.163,0],[0,-10.163],[-10.163,0],[0,10.163]],"o":[[-10.163,0],[0,10.163],[10.163,0],[0,-10.163]],"v":[[149.902,164.5],[131.5,182.902],[149.902,201.303],[168.303,182.902]],"c":true},"ix":1},"o":{"a":0,"k":100,"ix":3},"x":{"a":0,"k":0,"ix":4},"nm":"蒙版 1"}],"sw":360,"sh":360,"sc":"#ffffff","ip":0,"op":120,"st":0,"bm":0}]},{"id":"comp_1","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"形状图层 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[120,150,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"“tail”轮廓 2","sr":1,"ks":{"o":{"a":0,"k":90,"ix":11},"r":{"a":0,"k":-72,"ix":10},"p":{"a":0,"k":[81.144,218.686,0],"ix":2},"a":{"a":0,"k":[54.554,31.992,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[0.988235353956,0.333333333333,0.20000001496,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":11.339,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988234994926,0.333332974303,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 4","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[0.988235353956,0.333333333333,0.20000001496,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":11.339,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988234994926,0.333332974303,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 3","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[0.988235353956,0.333333333333,0.20000001496,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":11.339,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988234994926,0.333332974303,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 2","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[0.988235353956,0.333333333333,0.20000001496,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":11.339,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[0,0],[5.34,-2.218],[2.039,-1.282],[0,0],[3.979,-6.275],[-1.599,-8.31]],"o":[[0,0],[0,0],[-2.091,0.868],[-4.944,3.109],[0,0],[-5.231,8.249],[0,0]],"v":[[40.385,-3.158],[23.969,-1.413],[4.63,4.006],[-1.679,7.369],[-10.737,13.995],[-22.51,28.74],[-26.696,55.731]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":1,"s":[{"i":[[0,0],[0,0],[5.34,-2.218],[2.039,-1.282],[0,0],[3.979,-6.275],[-1.599,-8.31]],"o":[[0,0],[0,0],[-2.091,0.868],[-4.944,3.109],[0,0],[-5.231,8.249],[0,0]],"v":[[40.385,-3.158],[23.969,-1.413],[4.63,4.006],[-1.679,7.369],[-10.737,13.995],[-22.51,28.74],[-26.696,55.731]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":2,"s":[{"i":[[0,0],[0,0],[5.34,-2.218],[2.039,-1.282],[0,0],[3.979,-6.275],[-1.599,-8.31]],"o":[[0,0],[0,0],[-2.091,0.868],[-4.944,3.109],[0,0],[-5.231,8.249],[0,0]],"v":[[40.385,-3.158],[23.969,-1.413],[4.63,4.006],[-1.679,7.369],[-10.737,13.995],[-22.51,28.74],[-26.696,55.731]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":3,"s":[{"i":[[0,0],[0,0],[5.34,-2.218],[2.039,-1.282],[0,0],[3.979,-6.275],[-1.599,-8.31]],"o":[[0,0],[0,0],[-2.091,0.868],[-4.944,3.109],[0,0],[-5.231,8.249],[0,0]],"v":[[40.385,-3.158],[23.969,-1.413],[4.63,4.006],[-1.679,7.369],[-10.737,13.995],[-22.51,28.74],[-26.696,55.731]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":4,"s":[{"i":[[0,0],[0,0],[5.389,-2.096],[2.554,-1.393],[0,0],[3.122,-6.742],[-0.808,-8.304]],"o":[[0,0],[0,0],[-4.15,1.614],[-6.194,3.378],[0,0],[-5.576,12.041],[0,0]],"v":[[40.462,-2.921],[24.046,-1.176],[6.133,3.78],[-3.844,8.342],[-12.003,14.144],[-22.825,28.58],[-26.536,55.416]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":5,"s":[{"i":[[0,0],[0,0],[5.389,-2.096],[3.026,-1.99],[0,0],[3.396,-6.608],[-1.052,-7.437]],"o":[[0,0],[0,0],[-4.15,1.614],[-7.339,4.827],[0,0],[-4.203,8.178],[0,0]],"v":[[40.385,-3.158],[23.808,-1.098],[4.315,3.845],[-6.468,9.427],[-17.734,19.16],[-24.258,29.834],[-26.613,55.178]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":6,"s":[{"i":[[0,0],[0,0],[5.389,-2.096],[2.649,-1.392],[0,0],[2.241,-7.585],[-1.052,-7.437]],"o":[[0,0],[0,0],[-4.15,1.614],[-6.425,3.376],[0,0],[-3.558,12.04],[0,0]],"v":[[40.231,-3.634],[23.576,-1.812],[4.315,3.845],[-5.826,8.406],[-16.206,15.772],[-26.011,31.718],[-27.475,54.144]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":7,"s":[{"i":[[0,0],[5.699,-0.982],[5.389,-2.096],[2.631,-1.545],[0,0],[2.241,-7.585],[-1.052,-7.437]],"o":[[0,0],[-6.36,1.096],[-4.15,1.614],[-6.382,3.747],[0,0],[-3.558,12.04],[0,0]],"v":[[40.231,-3.634],[22.946,-2.133],[4.166,2.579],[-5.943,7.401],[-14.613,14.203],[-26.802,31.712],[-28.414,52.872]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":8,"s":[{"i":[[0,0],[5.753,-1.042],[5.389,-2.096],[2.717,-1.477],[0,0],[2.996,-7.32],[-0.66,-7.038]],"o":[[0,0],[-6.433,1.165],[-4.15,1.614],[-6.589,3.583],[0,0],[-3.091,7.554],[0,0]],"v":[[40.546,-3.473],[23.82,-2.679],[3.851,2.419],[-6.404,7.125],[-15.635,13.484],[-27.818,30.202],[-30.845,50.245]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":9,"s":[{"i":[[0,0],[5.759,-1.009],[5.389,-2.096],[2.87,-1.591],[0,0],[2.962,-7.334],[-0.254,-3.161]],"o":[[0,0],[-6.527,1.144],[-4.15,1.614],[-6.961,3.858],[0,0],[-3.656,9.052],[0,0]],"v":[[40.706,-3.788],[23.666,-3.155],[2.668,2.014],[-7.849,6.914],[-18.09,14.019],[-30.19,30.184],[-33.276,47.617]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10,"s":[{"i":[[0,0],[5.111,-0.301],[5.61,-1.401],[2.859,-1.223],[0,0],[3.977,-7.098],[-0.254,-3.161]],"o":[[0,0],[-6.639,0.39],[-3.614,0.903],[-6.934,2.965],[0,0],[-1.302,2.324],[0,0]],"v":[[41.574,-3.545],[22.322,-3.244],[0.071,0.493],[-9.701,3.801],[-20.984,9.965],[-35.123,23.901],[-41.282,39.967]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":11,"s":[{"i":[[0,0],[5.855,-0.689],[5.579,-1.521],[2.495,-0.921],[0,0],[5.374,-7.953],[0.975,-3.626]],"o":[[0,0],[-6.123,0.721],[-3.73,1.017],[-6.05,2.233],[0,0],[-4.988,7.381],[0,0]],"v":[[41.259,-3.705],[21.454,-3.488],[-1.504,-0.31],[-10.812,2.638],[-19.456,6.577],[-37.31,20.406],[-45.912,35.425]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":12,"s":[{"i":[[0,0],[6.185,0.154],[6.231,-1.114],[2.191,-0.494],[0,0],[4.922,-6.616],[1.444,-2.99]],"o":[[0,0],[-5.88,-0.147],[-2.157,0.386],[-5.315,1.199],[0,0],[-1.59,2.137],[0,0]],"v":[[43.161,-4.323],[22.643,-3.874],[-1.73,-1.814],[-8.39,-0.448],[-18.315,2],[-41.946,16.655],[-49.418,28.679]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":13,"s":[{"i":[[0,0],[9.867,0.118],[5.769,-0.388],[3.099,-0.551],[0,0],[7.038,-4.149],[1.444,-2.99]],"o":[[0,0],[-5.327,-0.064],[-1.946,0.131],[-7.516,1.336],[0,0],[-2.295,1.353],[0,0]],"v":[[43.791,-4.002],[22.251,-4.272],[-0.927,-3.389],[-8.851,-2.272],[-25.186,1.078],[-40.703,9.153],[-53.156,21.219]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":14,"s":[{"i":[[0,0],[9.86,0.392],[5.782,0.074],[2.795,-0.214],[0,0],[3.228,-2.123],[3.59,-4.476]],"o":[[0,0],[-5.642,-0.224],[-3.076,-0.039],[-6.779,0.52],[0,0],[-2.226,1.464],[0,0]],"v":[[44.106,-3.842],[19.963,-4.843],[-0.517,-5.362],[-9.451,-5.05],[-21.435,-3.558],[-39.775,1.492],[-56.889,12.968]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":15,"s":[{"i":[[0,0],[9.86,0.392],[5.782,0.074],[1.987,-0.104],[0,0],[3.684,-1.163],[6.354,-4.06]],"o":[[0,0],[-5.642,-0.224],[-2.077,-0.027],[-8.091,0.423],[0,0],[-2.407,0.76],[0,0]],"v":[[44.106,-3.842],[19.963,-4.843],[4.149,-5.564],[-11.069,-6.688],[-25.209,-6.275],[-41.79,-3.9],[-59.105,2.911]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":16,"s":[{"i":[[0,0],[9.86,0.392],[5.782,0.074],[1.975,0.24],[0,0],[4.957,-0.844],[7.84,-1.914]],"o":[[0,0],[-5.642,-0.224],[-2.077,-0.027],[-9.691,-1.176],[0,0],[-2.489,0.424],[0,0]],"v":[[44.106,-3.842],[24.153,-4.89],[5.183,-6.426],[-11.128,-9.297],[-25.964,-11.024],[-43.163,-10.551],[-59.74,-7.135]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":17,"s":[{"i":[[0,0],[9.86,0.392],[5.697,0.992],[1.975,0.24],[0,0],[5.974,0.665],[8.618,-0.327]],"o":[[0,0],[-5.642,-0.224],[-5.55,-0.967],[-9.691,-1.176],[0,0],[-2.509,-0.279],[0,0]],"v":[[44.106,-3.842],[24.789,-5.36],[7.091,-7.834],[-9.291,-11.734],[-24.121,-14.251],[-43.346,-17.589],[-59.817,-17.887]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":18,"s":[{"i":[[0,0],[9.86,0.392],[5.697,0.992],[1.892,0.614],[4.752,1.604],[6.514,2.33],[9.545,2.526]],"o":[[0,0],[-5.642,-0.224],[-5.55,-0.967],[-7.468,-2.424],[-5.613,-1.895],[-2.377,-0.85],[0,0]],"v":[[44.106,-3.842],[24.789,-5.36],[7.727,-8.304],[-6.836,-12.269],[-22.51,-18.192],[-39.506,-23.568],[-57.444,-28.384]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":19,"s":[{"i":[[0,0],[9.826,0.905],[5.102,1.881],[1.863,0.697],[4.336,2.917],[6.419,4.464],[3.215,3.269]],"o":[[0,0],[-6.825,-0.628],[-5.285,-1.949],[-5.81,-2.174],[-4.915,-3.306],[-2.073,-1.441],[0,0]],"v":[[44.106,-3.842],[25.502,-5.592],[10.028,-9.314],[-3.971,-14.777],[-18.985,-24.332],[-34.75,-35.628],[-48.688,-46.738]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20,"s":[{"i":[[0,0],[9.826,0.905],[5.102,1.881],[1.812,0.821],[3.938,3.309],[5.379,6.116],[3.435,5.563]],"o":[[0,0],[-6.825,-0.628],[-5.285,-1.949],[-6.91,-3.131],[-4.535,-3.811],[-1.667,-1.896],[0,0]],"v":[[44.106,-3.842],[27.874,-5.574],[11.532,-9.54],[-2.146,-15.633],[-16.524,-25.657],[-31.076,-40.502],[-43.171,-54.84]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":21,"s":[{"i":[[0,0],[9.826,0.905],[5.102,1.881],[1.673,1.077],[3.938,3.309],[4.871,6.528],[2.317,6.978]],"o":[[0,0],[-6.825,-0.628],[-5.285,-1.949],[-7.45,-4.796],[-4.535,-3.811],[-1.908,-2.557],[0,0]],"v":[[44.106,-3.842],[27.874,-5.574],[12.875,-9.451],[-0.72,-16.096],[-14.223,-26.667],[-27.89,-43.64],[-36.799,-61.116]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":22,"s":[{"i":[[0,0],[9.597,1.188],[5.102,1.881],[1.941,1.312],[3.586,3.654],[3.544,6.31],[1.048,7.521]],"o":[[0,0],[-6.797,-0.846],[-5.285,-1.949],[-6.348,-4.234],[-3.829,-3.836],[-1.499,-2.777],[0,0]],"v":[[44.106,-3.842],[29.693,-5.639],[13.235,-9.962],[-0.238,-17.041],[-12.669,-28.355],[-23.01,-46.014],[-29.371,-65.764]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":23,"s":[{"i":[[0,0],[9.367,1.471],[5.102,1.881],[2.21,1.547],[3.235,3.998],[2.217,6.092],[-0.221,8.065]],"o":[[0,0],[-6.77,-1.063],[-5.285,-1.949],[-5.245,-3.672],[-3.123,-3.86],[-1.091,-2.998],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[13.594,-10.473],[0.243,-17.986],[-11.269,-30.519],[-19.544,-49.506],[-21.944,-70.411]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":24,"s":[{"i":[[0,0],[9.367,1.471],[5.102,1.881],[2.21,1.547],[2.375,4.562],[1.2,4.582],[-2.105,6.312]],"o":[[0,0],[-6.77,-1.063],[-5.285,-1.949],[-5.245,-3.672],[-2.874,-5.518],[-0.808,-3.086],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[13.755,-10.788],[1.432,-18.372],[-10.145,-32.724],[-15.746,-49.952],[-15.364,-72.812]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":25,"s":[{"i":[[0,0],[9.367,1.471],[5.102,1.881],[2.773,2.397],[2.375,4.562],[0.493,4.023],[-3.93,7.167]],"o":[[0,0],[-6.77,-1.063],[-5.285,-1.949],[-4.844,-4.188],[-2.874,-5.518],[-0.388,-3.167],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[13.992,-10.865],[2.383,-18.681],[-8.32,-33.58],[-12.103,-50.873],[-7.601,-74.809]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":26,"s":[{"i":[[0,0],[9.367,1.471],[4.802,2.551],[2.773,2.397],[2.02,4.73],[0.332,4.338],[-7.49,7.536]],"o":[[0,0],[-6.77,-1.063],[-5.692,-3.023],[-4.844,-4.188],[-2.321,-5.435],[-0.244,-3.181],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[14.153,-11.18],[2.782,-19.074],[-6.733,-34.358],[-9.095,-51.324],[0.709,-75.932]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":27,"s":[{"i":[[0,0],[9.367,1.471],[4.802,2.551],[2.773,2.397],[2.02,4.73],[-0.375,3.78],[-9.065,6.733]],"o":[[0,0],[-6.77,-1.063],[-5.692,-3.023],[-4.844,-4.188],[-2.321,-5.435],[0.315,-3.175],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[14.313,-11.495],[3.97,-19.46],[-5.069,-34.899],[-6.254,-50.67],[6.789,-75.016]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":28,"s":[{"i":[[0,0],[9.364,1.866],[4.802,2.551],[2.236,2.904],[1.828,4.807],[-1.197,3.604],[-13.791,4.326]],"o":[[0,0],[-6.814,-1.358],[-5.692,-3.023],[-4.282,-5.562],[-2.006,-5.275],[1.183,-3.561],[0,0]],"v":[[45.173,-3.794],[31.987,-5.859],[17.277,-11.275],[5.991,-20.117],[-1.033,-35.422],[-0.874,-51.104],[20.449,-72.619]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":29,"s":[{"i":[[0,0],[9.364,1.866],[4.802,2.551],[2.236,2.904],[1.614,4.883],[-1.197,3.604],[-14.724,2.263]],"o":[[0,0],[-6.814,-1.358],[-5.692,-3.023],[-4.282,-5.562],[-1.691,-5.114],[1.183,-3.561],[0,0]],"v":[[45.648,-3.949],[31.987,-5.859],[18.382,-11.109],[6.942,-20.426],[0.156,-35.808],[2.062,-52.583],[25.81,-70.681]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":30,"s":[{"i":[[0,0],[9.364,1.866],[4.802,2.551],[1.855,3.161],[0.955,5.054],[-1.635,3.137],[-13.594,-0.733]],"o":[[0,0],[-6.814,-1.358],[-5.692,-3.023],[-4.074,-6.944],[-1.055,-5.584],[1.734,-3.328],[0,0]],"v":[[45.648,-3.949],[31.987,-5.859],[18.382,-11.109],[7.495,-20.342],[1.113,-36.908],[4.434,-52.565],[30.131,-67.091]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":31,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[0.033,5.143],[-1.635,3.137],[-12.631,-2.623]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[-0.068,-10.636],[1.734,-3.328],[0,0]],"v":[[45.648,-3.949],[31.987,-5.859],[18.067,-11.269],[8.131,-20.812],[2.141,-36.979],[6.734,-53.576],[33.751,-64.85]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":32,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.157,5.141],[-2.454,2.548],[-12.369,-5.862]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.223,-7.313],[3.715,-3.858],[0,0]],"v":[[45.648,-3.949],[32.148,-6.174],[18.311,-12.137],[8.607,-20.966],[3.33,-37.365],[8.63,-53.403],[37.911,-60.944]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":33,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.157,5.141],[-2.454,2.548],[-11.329,-7.515]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.223,-7.313],[3.715,-3.858],[0,0]],"v":[[45.648,-3.949],[32.778,-5.853],[19.018,-11.578],[9.082,-21.121],[4.358,-37.437],[11.798,-54.17],[39.629,-58.085]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":34,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.157,5.141],[-3.707,2.342],[-11.876,-8.388]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.223,-7.313],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.253,-6.007],[19.256,-11.656],[9.635,-21.038],[4.751,-37.038],[14.574,-55.335],[41.661,-55.065]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":35,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.157,5.141],[-3.707,2.342],[-9.718,-11.455]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.223,-7.313],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.253,-6.007],[19.809,-11.572],[9.95,-20.877],[5.618,-36.795],[15.918,-55.245],[42.981,-51.814]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":36,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-9.718,-11.455]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.253,-6.007],[19.809,-11.572],[10.503,-20.794],[5.618,-36.795],[16.227,-54.294],[43.599,-49.912]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":37,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-8.755,-13.346]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.992,-11.168],[11.216,-21.026],[7.122,-37.02],[17.249,-53.575],[44.674,-45.792]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":38,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-6.995,-16.02]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.992,-11.168],[11.216,-21.026],[7.122,-37.02],[17.249,-53.575],[44.502,-43.896]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":39,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-6.995,-16.02]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.992,-11.168],[11.216,-21.026],[7.122,-37.02],[17.718,-52.939],[44.02,-42.951]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":40,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-5.408,-16.799]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.992,-11.168],[11.216,-21.026],[7.122,-37.02],[17.718,-52.939],[43.776,-42.083]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":41,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-2.799,-16.858]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.992,-11.168],[11.216,-21.026],[7.122,-37.02],[17.718,-52.939],[42.986,-42.089]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":42,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-1.307,-15.503]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.992,-11.168],[11.216,-21.026],[7.122,-37.02],[18.039,-53.569],[42.986,-42.089]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":43,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-2.496,-15.116]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.992,-11.168],[11.216,-21.026],[7.122,-37.02],[18.039,-53.569],[42.986,-42.089]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":46,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-2.496,-15.116]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.991,-11.168],[11.216,-21.026],[7.122,-37.02],[18.039,-53.569],[42.986,-42.089]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":47,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-1.307,-15.503]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.991,-11.168],[11.216,-21.026],[7.122,-37.02],[18.039,-53.569],[42.986,-42.089]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":48,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-2.799,-16.858]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.991,-11.168],[11.216,-21.026],[7.122,-37.02],[17.718,-52.939],[42.986,-42.089]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":49,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-5.408,-16.799]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.991,-11.168],[11.216,-21.026],[7.122,-37.02],[17.718,-52.939],[43.776,-42.083]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":50,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-6.995,-16.02]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.991,-11.168],[11.216,-21.026],[7.122,-37.02],[17.718,-52.939],[44.02,-42.951]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":51,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-6.995,-16.02]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.991,-11.168],[11.216,-21.026],[7.122,-37.02],[17.249,-53.575],[44.502,-43.896]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":52,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-8.755,-13.346]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.991,-11.168],[11.216,-21.026],[7.122,-37.02],[17.249,-53.575],[44.674,-45.792]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":53,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-9.718,-11.455]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.253,-6.007],[19.809,-11.572],[10.503,-20.794],[5.618,-36.795],[16.227,-54.294],[43.599,-49.912]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":54,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.157,5.141],[-3.707,2.342],[-9.718,-11.455]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.223,-7.313],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.253,-6.007],[19.809,-11.572],[9.95,-20.877],[5.618,-36.795],[15.918,-55.245],[42.981,-51.814]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":55,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.157,5.141],[-3.707,2.342],[-11.876,-8.388]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.223,-7.313],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.253,-6.007],[19.256,-11.656],[9.635,-21.038],[4.751,-37.038],[14.574,-55.335],[41.661,-55.065]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":56,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.157,5.141],[-2.454,2.548],[-11.329,-7.515]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.223,-7.313],[3.715,-3.858],[0,0]],"v":[[45.648,-3.949],[32.778,-5.853],[19.018,-11.578],[9.082,-21.121],[4.358,-37.437],[11.798,-54.17],[39.629,-58.085]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":57,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.157,5.141],[-2.454,2.548],[-12.369,-5.862]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.223,-7.313],[3.715,-3.858],[0,0]],"v":[[45.648,-3.949],[32.148,-6.174],[18.311,-12.137],[8.607,-20.966],[3.33,-37.365],[8.63,-53.403],[37.911,-60.944]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":58,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[0.033,5.143],[-1.635,3.137],[-12.631,-2.623]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[-0.068,-10.636],[1.734,-3.328],[0,0]],"v":[[45.648,-3.949],[31.987,-5.859],[18.067,-11.269],[8.131,-20.812],[2.141,-36.979],[6.734,-53.576],[33.751,-64.85]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":59,"s":[{"i":[[0,0],[9.364,1.866],[4.802,2.551],[1.855,3.161],[0.955,5.054],[-1.635,3.137],[-13.594,-0.733]],"o":[[0,0],[-6.814,-1.358],[-5.692,-3.023],[-4.074,-6.944],[-1.055,-5.584],[1.734,-3.328],[0,0]],"v":[[45.648,-3.949],[31.987,-5.859],[18.382,-11.109],[7.495,-20.342],[1.113,-36.908],[4.434,-52.565],[30.131,-67.091]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[{"i":[[0,0],[9.364,1.866],[4.802,2.551],[2.236,2.904],[1.614,4.883],[-1.197,3.604],[-14.724,2.263]],"o":[[0,0],[-6.814,-1.358],[-5.692,-3.023],[-4.282,-5.562],[-1.691,-5.114],[1.183,-3.561],[0,0]],"v":[[45.648,-3.949],[31.987,-5.859],[18.382,-11.109],[6.942,-20.426],[0.156,-35.808],[2.062,-52.583],[25.81,-70.681]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":61,"s":[{"i":[[0,0],[9.364,1.866],[4.802,2.551],[2.236,2.904],[1.828,4.807],[-1.197,3.604],[-13.791,4.326]],"o":[[0,0],[-6.814,-1.358],[-5.692,-3.023],[-4.282,-5.562],[-2.006,-5.275],[1.183,-3.561],[0,0]],"v":[[45.173,-3.794],[31.987,-5.859],[17.277,-11.275],[5.991,-20.117],[-1.033,-35.422],[-0.874,-51.104],[20.449,-72.619]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":62,"s":[{"i":[[0,0],[9.367,1.471],[4.802,2.551],[2.773,2.397],[2.02,4.73],[-0.375,3.78],[-9.065,6.733]],"o":[[0,0],[-6.77,-1.063],[-5.692,-3.023],[-4.844,-4.188],[-2.321,-5.435],[0.315,-3.175],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[14.313,-11.495],[3.97,-19.46],[-5.069,-34.899],[-6.254,-50.67],[6.789,-75.016]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":63,"s":[{"i":[[0,0],[9.367,1.471],[4.802,2.551],[2.773,2.397],[2.02,4.73],[0.332,4.338],[-7.49,7.536]],"o":[[0,0],[-6.77,-1.063],[-5.692,-3.023],[-4.844,-4.188],[-2.321,-5.435],[-0.244,-3.181],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[14.153,-11.18],[2.782,-19.074],[-6.733,-34.358],[-9.095,-51.324],[0.709,-75.932]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":64,"s":[{"i":[[0,0],[9.367,1.471],[5.102,1.881],[2.773,2.397],[2.375,4.562],[0.493,4.023],[-3.93,7.167]],"o":[[0,0],[-6.77,-1.063],[-5.285,-1.949],[-4.844,-4.188],[-2.874,-5.518],[-0.388,-3.167],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[13.992,-10.865],[2.383,-18.681],[-8.32,-33.58],[-12.103,-50.873],[-7.601,-74.809]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":65,"s":[{"i":[[0,0],[9.367,1.471],[5.102,1.881],[2.21,1.547],[2.375,4.562],[1.2,4.582],[-2.105,6.312]],"o":[[0,0],[-6.77,-1.063],[-5.285,-1.949],[-5.245,-3.672],[-2.874,-5.518],[-0.808,-3.086],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[13.755,-10.788],[1.432,-18.372],[-10.145,-32.724],[-15.746,-49.952],[-15.364,-72.812]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":66,"s":[{"i":[[0,0],[9.367,1.471],[5.102,1.881],[2.21,1.547],[3.235,3.998],[2.217,6.092],[-0.221,8.065]],"o":[[0,0],[-6.77,-1.063],[-5.285,-1.949],[-5.245,-3.672],[-3.123,-3.86],[-1.091,-2.998],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[13.594,-10.473],[0.243,-17.986],[-11.269,-30.519],[-19.544,-49.506],[-21.944,-70.411]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":67,"s":[{"i":[[0,0],[9.597,1.188],[5.102,1.881],[1.941,1.312],[3.586,3.654],[3.544,6.31],[1.048,7.521]],"o":[[0,0],[-6.797,-0.846],[-5.285,-1.949],[-6.348,-4.234],[-3.829,-3.836],[-1.499,-2.777],[0,0]],"v":[[44.106,-3.842],[29.693,-5.639],[13.235,-9.962],[-0.238,-17.041],[-12.669,-28.355],[-23.01,-46.014],[-29.371,-65.764]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":68,"s":[{"i":[[0,0],[9.826,0.905],[5.102,1.881],[1.673,1.077],[3.938,3.309],[4.871,6.528],[2.317,6.978]],"o":[[0,0],[-6.825,-0.628],[-5.285,-1.949],[-7.45,-4.796],[-4.535,-3.811],[-1.908,-2.557],[0,0]],"v":[[44.106,-3.842],[27.874,-5.574],[12.875,-9.451],[-0.72,-16.096],[-14.223,-26.667],[-27.89,-43.64],[-36.799,-61.116]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":69,"s":[{"i":[[0,0],[9.826,0.905],[5.102,1.881],[1.812,0.821],[3.938,3.309],[5.379,6.116],[3.435,5.563]],"o":[[0,0],[-6.825,-0.628],[-5.285,-1.949],[-6.91,-3.131],[-4.535,-3.811],[-1.667,-1.896],[0,0]],"v":[[44.106,-3.842],[27.874,-5.574],[11.532,-9.54],[-2.146,-15.633],[-16.524,-25.657],[-31.076,-40.502],[-43.171,-54.84]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":70,"s":[{"i":[[0,0],[9.826,0.905],[5.102,1.881],[1.863,0.697],[4.336,2.917],[6.419,4.464],[3.215,3.269]],"o":[[0,0],[-6.825,-0.628],[-5.285,-1.949],[-5.81,-2.174],[-4.915,-3.306],[-2.073,-1.441],[0,0]],"v":[[44.106,-3.842],[25.502,-5.592],[10.028,-9.314],[-3.971,-14.777],[-18.985,-24.332],[-34.75,-35.628],[-48.688,-46.738]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":71,"s":[{"i":[[0,0],[9.86,0.392],[5.697,0.992],[1.892,0.614],[4.752,1.604],[6.514,2.33],[9.545,2.526]],"o":[[0,0],[-5.642,-0.224],[-5.55,-0.967],[-7.468,-2.424],[-5.613,-1.895],[-2.377,-0.85],[0,0]],"v":[[44.106,-3.842],[24.789,-5.36],[7.727,-8.304],[-6.836,-12.269],[-22.51,-18.192],[-39.506,-23.568],[-57.444,-28.384]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":72,"s":[{"i":[[0,0],[9.86,0.392],[5.697,0.992],[1.975,0.24],[0,0],[5.974,0.665],[8.618,-0.327]],"o":[[0,0],[-5.642,-0.224],[-5.55,-0.967],[-9.691,-1.176],[0,0],[-2.509,-0.279],[0,0]],"v":[[44.106,-3.842],[24.789,-5.36],[7.091,-7.834],[-9.291,-11.734],[-24.121,-14.251],[-43.346,-17.589],[-59.817,-17.887]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":73,"s":[{"i":[[0,0],[9.86,0.392],[5.782,0.074],[1.975,0.24],[0,0],[4.957,-0.844],[7.84,-1.914]],"o":[[0,0],[-5.642,-0.224],[-2.077,-0.027],[-9.691,-1.176],[0,0],[-2.489,0.424],[0,0]],"v":[[44.106,-3.842],[24.153,-4.89],[5.183,-6.426],[-11.128,-9.297],[-25.964,-11.024],[-43.163,-10.551],[-59.74,-7.135]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":74,"s":[{"i":[[0,0],[9.86,0.392],[5.782,0.074],[1.987,-0.104],[0,0],[3.684,-1.163],[6.354,-4.06]],"o":[[0,0],[-5.642,-0.224],[-2.077,-0.027],[-8.091,0.423],[0,0],[-2.407,0.76],[0,0]],"v":[[44.106,-3.842],[19.963,-4.843],[4.149,-5.564],[-11.069,-6.688],[-25.209,-6.275],[-41.79,-3.9],[-59.105,2.911]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":75,"s":[{"i":[[0,0],[9.86,0.392],[5.782,0.074],[2.795,-0.214],[0,0],[3.228,-2.123],[3.59,-4.476]],"o":[[0,0],[-5.642,-0.224],[-3.076,-0.039],[-6.779,0.52],[0,0],[-2.226,1.464],[0,0]],"v":[[44.106,-3.842],[19.963,-4.843],[-0.517,-5.362],[-9.451,-5.05],[-21.435,-3.558],[-39.775,1.492],[-56.889,12.968]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":76,"s":[{"i":[[0,0],[9.867,0.118],[5.769,-0.388],[3.099,-0.551],[0,0],[7.038,-4.149],[1.444,-2.99]],"o":[[0,0],[-5.327,-0.064],[-1.946,0.131],[-7.516,1.336],[0,0],[-2.295,1.353],[0,0]],"v":[[43.791,-4.002],[22.251,-4.272],[-0.927,-3.389],[-8.851,-2.272],[-25.186,1.078],[-40.703,9.153],[-53.156,21.219]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":77,"s":[{"i":[[0,0],[6.185,0.154],[6.231,-1.114],[2.191,-0.494],[0,0],[4.922,-6.616],[1.444,-2.99]],"o":[[0,0],[-5.88,-0.147],[-2.157,0.386],[-5.315,1.199],[0,0],[-1.59,2.137],[0,0]],"v":[[43.161,-4.323],[22.643,-3.874],[-1.73,-1.814],[-8.39,-0.448],[-18.315,2],[-41.946,16.655],[-49.418,28.679]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":78,"s":[{"i":[[0,0],[5.855,-0.689],[5.579,-1.521],[2.495,-0.921],[0,0],[5.374,-7.953],[0.975,-3.626]],"o":[[0,0],[-6.123,0.721],[-3.73,1.017],[-6.05,2.233],[0,0],[-4.988,7.381],[0,0]],"v":[[41.259,-3.705],[21.454,-3.488],[-1.504,-0.31],[-10.812,2.638],[-19.456,6.577],[-37.31,20.406],[-45.912,35.425]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":79,"s":[{"i":[[0,0],[5.111,-0.301],[5.61,-1.401],[2.859,-1.223],[0,0],[3.977,-7.098],[-0.254,-3.161]],"o":[[0,0],[-6.639,0.39],[-3.614,0.903],[-6.934,2.965],[0,0],[-1.302,2.324],[0,0]],"v":[[41.574,-3.545],[22.322,-3.244],[0.071,0.493],[-9.701,3.801],[-20.984,9.965],[-35.123,23.901],[-41.282,39.967]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":80,"s":[{"i":[[0,0],[5.759,-1.009],[5.389,-2.096],[2.87,-1.591],[0,0],[2.962,-7.334],[-0.254,-3.161]],"o":[[0,0],[-6.527,1.144],[-4.15,1.614],[-6.961,3.858],[0,0],[-3.656,9.052],[0,0]],"v":[[40.706,-3.788],[23.666,-3.155],[2.668,2.014],[-7.849,6.914],[-18.09,14.019],[-30.19,30.184],[-33.276,47.617]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":81,"s":[{"i":[[0,0],[5.753,-1.042],[5.389,-2.096],[2.717,-1.477],[0,0],[2.996,-7.32],[-0.66,-7.038]],"o":[[0,0],[-6.433,1.165],[-4.15,1.614],[-6.589,3.583],[0,0],[-3.091,7.554],[0,0]],"v":[[40.546,-3.473],[23.82,-2.679],[3.851,2.419],[-6.404,7.125],[-15.635,13.484],[-27.818,30.202],[-30.845,50.245]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":82,"s":[{"i":[[0,0],[5.699,-0.982],[5.389,-2.096],[2.631,-1.545],[0,0],[2.241,-7.585],[-1.052,-7.437]],"o":[[0,0],[-6.36,1.096],[-4.15,1.614],[-6.382,3.747],[0,0],[-3.558,12.04],[0,0]],"v":[[40.231,-3.634],[22.946,-2.133],[4.166,2.579],[-5.943,7.401],[-14.613,14.203],[-26.802,31.712],[-28.414,52.872]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":83,"s":[{"i":[[0,0],[0,0],[5.389,-2.096],[2.649,-1.392],[0,0],[2.241,-7.585],[-1.052,-7.437]],"o":[[0,0],[0,0],[-4.15,1.614],[-6.425,3.376],[0,0],[-3.558,12.04],[0,0]],"v":[[40.231,-3.634],[23.576,-1.812],[4.315,3.845],[-5.826,8.406],[-16.206,15.772],[-26.011,31.718],[-27.475,54.144]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":84,"s":[{"i":[[0,0],[0,0],[5.389,-2.096],[3.026,-1.99],[0,0],[3.396,-6.608],[-1.052,-7.437]],"o":[[0,0],[0,0],[-4.15,1.614],[-7.339,4.827],[0,0],[-4.203,8.178],[0,0]],"v":[[40.385,-3.158],[23.808,-1.098],[4.315,3.845],[-6.468,9.427],[-17.734,19.16],[-24.258,29.834],[-26.613,55.178]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":85,"s":[{"i":[[0,0],[0,0],[5.389,-2.096],[2.554,-1.393],[0,0],[3.122,-6.742],[-0.808,-8.304]],"o":[[0,0],[0,0],[-4.15,1.614],[-6.194,3.378],[0,0],[-5.576,12.041],[0,0]],"v":[[40.462,-2.921],[24.046,-1.176],[6.133,3.78],[-3.844,8.342],[-12.003,14.144],[-22.825,28.58],[-26.536,55.416]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":86,"s":[{"i":[[0,0],[0,0],[5.34,-2.218],[2.039,-1.282],[0,0],[3.979,-6.275],[-1.599,-8.31]],"o":[[0,0],[0,0],[-2.091,0.868],[-4.944,3.109],[0,0],[-5.231,8.249],[0,0]],"v":[[40.385,-3.158],[23.969,-1.413],[4.63,4.006],[-1.679,7.369],[-10.737,13.995],[-22.51,28.74],[-26.696,55.731]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":87,"s":[{"i":[[0,0],[0,0],[5.34,-2.218],[2.039,-1.282],[0,0],[3.979,-6.275],[-1.599,-8.31]],"o":[[0,0],[0,0],[-2.091,0.868],[-4.944,3.109],[0,0],[-5.231,8.249],[0,0]],"v":[[40.385,-3.158],[23.969,-1.413],[4.63,4.006],[-1.679,7.369],[-10.737,13.995],[-22.51,28.74],[-26.696,55.731]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":88,"s":[{"i":[[0,0],[0,0],[5.34,-2.218],[2.039,-1.282],[0,0],[3.979,-6.275],[-1.599,-8.31]],"o":[[0,0],[0,0],[-2.091,0.868],[-4.944,3.109],[0,0],[-5.231,8.249],[0,0]],"v":[[40.385,-3.158],[23.969,-1.413],[4.63,4.006],[-1.679,7.369],[-10.737,13.995],[-22.51,28.74],[-26.696,55.731]],"c":false}]},{"t":89,"s":[{"i":[[0,0],[0,0],[5.34,-2.218],[2.039,-1.282],[0,0],[3.979,-6.275],[-1.599,-8.31]],"o":[[0,0],[0,0],[-2.091,0.868],[-4.944,3.109],[0,0],[-5.231,8.249],[0,0]],"v":[[40.385,-3.158],[23.969,-1.413],[4.63,4.006],[-1.679,7.369],[-10.737,13.995],[-22.51,28.74],[-26.696,55.731]],"c":false}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.988235353956,0.333333333333,0.20000001496,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":11.339,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[54.554,31.992],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"“eye-l”轮廓","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[7.526,17.917,0],"ix":2},"a":{"a":0,"k":[3.368,3.368,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,1.721],[1.718,0],[0,-1.717],[-1.718,0]],"o":[[0,-1.72],[-1.718,0],[0,1.721],[1.718,0]],"v":[[3.118,0],[0,-3.118],[-3.118,0],[0,3.118]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[3.368,3.368],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"“eye-ll”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":22,"s":[-32]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":52,"s":[36]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":64,"s":[36]},{"t":90,"s":[0]}],"ix":10},"p":{"a":0,"k":[158.825,137.66,0],"ix":2},"a":{"a":0,"k":[12.723,12.722,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,6.882],[6.87,0],[0,-6.869],[-6.87,0]],"o":[[0,-6.882],[-6.87,0],[0,6.882],[6.87,0]],"v":[[12.474,-0.001],[-0.001,-12.471],[-12.474,-0.001],[-0.001,12.471]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[12.723,12.722],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"“eye-r”轮廓","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[7.526,17.917,0],"ix":2},"a":{"a":0,"k":[3.368,3.368,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,1.721],[1.718,0],[0,-1.717],[-1.718,0]],"o":[[0,-1.72],[-1.718,0],[0,1.721],[1.718,0]],"v":[[3.118,0],[0,-3.118],[-3.118,0],[0,3.118]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[3.368,3.368],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"“eye-rr”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":22,"s":[-32]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":52,"s":[36]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":64,"s":[36]},{"t":90,"s":[0]}],"ix":10},"p":{"a":0,"k":[200.403,137.66,0],"ix":2},"a":{"a":0,"k":[12.724,12.722,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,6.882],[6.87,0],[0,-6.869],[-6.87,0]],"o":[[0,-6.882],[-6.87,0],[0,6.882],[6.87,0]],"v":[[12.474,-0.001],[-0.001,-12.471],[-12.474,-0.001],[-0.001,12.471]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[12.724,12.722],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"“body”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[157.785,154.289,0],"ix":2},"a":{"a":0,"k":[71.972,25.193,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[25.834,0],[7.225,-4.571],[9.183,0],[0,-25.83],[-0.068,-1.031],[0,0],[0,0],[0,0],[0,1.048]],"o":[[-9.183,0],[-7.227,-4.571],[-25.833,0],[0,1.048],[0,0],[0,0],[0,0],[0.067,-1.031],[0,-25.83]],"v":[[24.947,-24.943],[0.001,-17.688],[-24.947,-24.943],[-71.722,21.825],[-71.62,24.943],[-21.726,24.943],[21.726,24.943],[71.621,24.943],[71.722,21.825]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.33300000359,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[71.972,25.193],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"“head”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[179.609,137.24,0],"ix":2},"a":{"a":0,"k":[50.184,42.261,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.551,3.125],[1.123,0.873],[5.869,-3.587],[3.517,-2.858],[14.978,-7.709],[3.823,2.402],[2.162,-1.683],[0.567,-2.916],[-0.051,-3.171],[-3,-7.971],[0,0],[0,-1.122],[-49.779,0.02],[0,5.256],[0.099,1.012],[-0.073,0.18],[-0.037,8.515]],"o":[[-0.575,-2.916],[-2.168,-1.69],[-3.833,2.419],[-14.955,-7.752],[-3.5,-2.852],[-5.82,-3.539],[-1.115,0.872],[-0.558,3.121],[0.034,8.516],[0,0],[-0.112,1.135],[0,5.256],[50.013,0],[0.003,-1.018],[0.101,-0.166],[2.994,-7.973],[0.039,-3.173]],"v":[[49.126,-34.698],[46.617,-40.321],[34.838,-37.551],[23.801,-29.629],[-23.92,-29.698],[-34.916,-37.586],[-46.619,-40.307],[-49.12,-34.684],[-49.883,-25.224],[-45.296,-0.294],[-45.233,-0.141],[-45.413,3.266],[-0.104,41.991],[45.197,3.266],[45.052,0.219],[45.314,-0.301],[49.895,-25.231]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.33300000359,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[50.184,42.261],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"403-眼睛","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[120,120,0],"ix":2},"a":{"a":0,"k":[120,120,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":240,"h":240,"ip":59,"op":179,"st":59,"bm":0},{"ddd":0,"ind":2,"ty":1,"nm":"黑色 纯色 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[120,120,0],"ix":2},"a":{"a":0,"k":[120,120,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"sw":240,"sh":240,"sc":"#000000","ip":59,"op":179,"st":28,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"胳膊","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[100,286,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[0.988235353956,0.333333333333,0.20000001496,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":43,"s":[{"i":[[0,0],[2.605,-0.033],[2.655,-0.151]],"o":[[-2.392,-0.259],[-3.152,0.04],[0,0]],"v":[[114.517,-84.491],[108.145,-84.592],[101.595,-84.599]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":45,"s":[{"i":[[0,0],[2.636,-0.881],[2.53,-0.276]],"o":[[-0.267,1.616],[-2.52,0.842],[0,0]],"v":[[114.517,-83.866],[111.27,-79.717],[106.22,-78.849]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":47,"s":[{"i":[[0,0],[2.23,-1.658],[2.53,-1.151]],"o":[[-0.267,1.616],[-2.246,1.67],[0,0]],"v":[[114.517,-83.866],[112.145,-78.967],[107.345,-76.849]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":49,"s":[{"i":[[0,0],[2.23,-1.658],[0.874,-2.12]],"o":[[-0.267,1.616],[-2.246,1.67],[0,0]],"v":[[114.517,-83.866],[112.145,-78.967],[108.72,-75.099]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":53,"s":[{"i":[[0,0],[1.381,-6.499],[1.487,-2.825]],"o":[[0,0],[-0.799,3.76],[-3.75,7.125]],"v":[[114.125,-84],[112.994,-72.001],[108.25,-60]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":55,"s":[{"i":[[0,0],[1.381,-6.499],[1.487,-2.825]],"o":[[0,0],[-0.799,3.76],[-3.75,7.125]],"v":[[114.125,-84],[112.994,-72.001],[108.625,-61.125]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":57,"s":[{"i":[[0,0],[1.381,-6.499],[1.487,-2.825]],"o":[[0,0],[-0.799,3.76],[-3.75,7.125]],"v":[[114.125,-84],[112.994,-72.001],[108.25,-60]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":61,"s":[{"i":[[0,0],[2.23,-1.658],[0.874,-2.12]],"o":[[-0.267,1.616],[-2.246,1.67],[0,0]],"v":[[114.517,-83.866],[112.145,-78.967],[108.72,-75.099]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":63,"s":[{"i":[[0,0],[2.23,-1.658],[2.53,-1.151]],"o":[[-0.267,1.616],[-2.246,1.67],[0,0]],"v":[[114.517,-83.866],[112.145,-78.967],[107.345,-76.849]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":65,"s":[{"i":[[0,0],[2.636,-0.881],[2.53,-0.276]],"o":[[-0.267,1.616],[-2.52,0.842],[0,0]],"v":[[114.517,-83.866],[111.27,-79.717],[106.22,-78.849]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":67,"s":[{"i":[[0,0],[2.605,-0.033],[2.655,-0.151]],"o":[[-2.392,-0.259],[-3.152,0.04],[0,0]],"v":[[114.517,-84.491],[108.145,-84.592],[101.595,-84.599]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":168,"s":[{"i":[[0,0],[2.605,-0.033],[2.655,-0.151]],"o":[[-2.392,-0.259],[-3.152,0.04],[0,0]],"v":[[114.517,-84.491],[108.145,-84.592],[101.595,-84.599]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":170,"s":[{"i":[[0,0],[2.636,-0.881],[2.53,-0.276]],"o":[[-0.267,1.616],[-2.52,0.842],[0,0]],"v":[[114.517,-83.866],[111.27,-79.717],[106.22,-78.849]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":172,"s":[{"i":[[0,0],[2.23,-1.658],[2.53,-1.151]],"o":[[-0.267,1.616],[-2.246,1.67],[0,0]],"v":[[114.517,-83.866],[112.145,-78.967],[107.345,-76.849]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":174,"s":[{"i":[[0,0],[2.23,-1.658],[0.874,-2.12]],"o":[[-0.267,1.616],[-2.246,1.67],[0,0]],"v":[[114.517,-83.866],[112.145,-78.967],[108.72,-75.099]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":178,"s":[{"i":[[0,0],[1.381,-6.499],[1.487,-2.825]],"o":[[0,0],[-0.799,3.76],[-3.75,7.125]],"v":[[114.125,-84],[112.994,-72.001],[108.25,-60]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":180,"s":[{"i":[[0,0],[1.381,-6.499],[1.487,-2.825]],"o":[[0,0],[-0.799,3.76],[-3.75,7.125]],"v":[[114.125,-84],[112.994,-72.001],[108.625,-61.125]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":182,"s":[{"i":[[0,0],[1.381,-6.499],[1.487,-2.825]],"o":[[0,0],[-0.799,3.76],[-3.75,7.125]],"v":[[114.125,-84],[112.994,-72.001],[108.25,-60]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":186,"s":[{"i":[[0,0],[2.23,-1.658],[0.874,-2.12]],"o":[[-0.267,1.616],[-2.246,1.67],[0,0]],"v":[[114.517,-83.866],[112.145,-78.967],[108.72,-75.099]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":188,"s":[{"i":[[0,0],[2.23,-1.658],[2.53,-1.151]],"o":[[-0.267,1.616],[-2.246,1.67],[0,0]],"v":[[114.517,-83.866],[112.145,-78.967],[107.345,-76.849]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":190,"s":[{"i":[[0,0],[2.636,-0.881],[2.53,-0.276]],"o":[[-0.267,1.616],[-2.52,0.842],[0,0]],"v":[[114.517,-83.866],[111.27,-79.717],[106.22,-78.849]],"c":false}]},{"t":192,"s":[{"i":[[0,0],[2.605,-0.033],[2.655,-0.151]],"o":[[-2.392,-0.259],[-3.152,0.04],[0,0]],"v":[[114.517,-84.491],[108.145,-84.592],[101.595,-84.599]],"c":false}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.988235353956,0.333333333333,0.20000001496,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":272,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"light","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[187.321,150.372,0],"ix":2},"a":{"a":0,"k":[52.928,89.878,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.866,0],[0,0],[0,-2.866],[0,0],[0,0],[0,0]],"o":[[0,0],[-2.867,0],[0,0],[0,0],[0,0],[0,-2.866]],"v":[[15.424,-5.195],[-15.423,-5.195],[-20.613,-0.005],[-20.613,5.195],[20.613,5.195],[20.613,-0.005]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.62400004069,0.654999976065,0.702000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[84.993,174.311],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.707,0],[0,-2.707],[-2.706,0],[0,2.707]],"o":[[-2.706,0],[0,2.707],[2.707,0],[0,-2.707]],"v":[[0,-4.902],[-4.9,-0.001],[0,4.902],[4.9,-0.001]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.62400004069,0.654999976065,0.702000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[85.142,95.058],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.253,1.5],[1.5,-2.253],[-2.253,-1.5],[-1.5,2.253]],"o":[[-2.253,-1.5],[-1.5,2.254],[2.253,1.5],[1.5,-2.254]],"v":[[2.716,-4.08],[-4.08,-2.717],[-2.716,4.08],[4.08,2.717]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.62400004069,0.654999976065,0.702000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[56.777,31.137],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[10.815,7.199],[7.199,-10.816],[0,0]],"o":[[-10.815,-7.2],[0,0],[7.2,-10.815]],"v":[[9.436,-12.71],[-23.183,-6.162],[15.983,19.91]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.62400004069,0.654999976065,0.702000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[23.433,20.16],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-8.605,-5.728],[-5.728,8.606]],"o":[[-5.729,8.605],[8.606,5.729],[0,0]],"v":[[-12.717,-15.842],[-7.508,10.113],[18.447,4.902]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":53,"s":[1,0.804000016755,0.211999990426,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":63,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":179,"s":[1,1,1,1]},{"t":190,"s":[1,0.804000016755,0.211999990426,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[22.155,24.711],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[24.221,73.733],[19.875,73.733],[19.875,-7.255],[-8.12,-69.388],[-24.221,-69.388],[-24.221,-73.733],[-5.31,-73.733],[24.221,-8.189]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.888489067554,0.909296631813,0.93964099884,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[63.093,102.78],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[3,5],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"矩形路径 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[0.2,0.2,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[73,168],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"矩形 1","np":3,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":272,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":0,"nm":"cat","refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[168,192,0],"ix":2},"a":{"a":0,"k":[120,150,0],"ix":1},"s":{"a":0,"k":[45,45,100],"ix":6}},"ao":0,"w":240,"h":300,"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":0,"nm":"cat","refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[168,192,0],"ix":2},"a":{"a":0,"k":[120,150,0],"ix":1},"s":{"a":0,"k":[45,45,100],"ix":6}},"ao":0,"w":240,"h":300,"ip":90,"op":180,"st":90,"bm":0},{"ddd":0,"ind":7,"ty":0,"nm":"cat","refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[168,192,0],"ix":2},"a":{"a":0,"k":[120,150,0],"ix":1},"s":{"a":0,"k":[45,45,100],"ix":6}},"ao":0,"w":240,"h":300,"ip":180,"op":270,"st":180,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"computer","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[75.275,210.225,0],"ix":2},"a":{"a":0,"k":[75.16,30.024,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.87],[2.869,0],[0,2.869],[-2.87,0]],"o":[[0,2.869],[-2.87,0],[0,-2.87],[2.869,0]],"v":[[5.196,0.001],[0,5.195],[-5.196,0.001],[0,-5.195]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[49.407,27.702],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0.634,0],[0,0],[-0.146,-0.631],[0,0],[-0.634,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[-0.145,-0.631],[0,0],[-0.634,0],[0,0],[0.145,0.633],[0,0],[0,0],[0,0],[0,0]],"v":[[73.063,27.943],[22.424,25.016],[10.043,-28.632],[8.631,-29.775],[-73.879,-29.775],[-74.764,-28.632],[-61.549,28.632],[-60.138,29.775],[20.588,29.775],[22.373,29.775],[74.91,29.775]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[75.16,30.025],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":273,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"code 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[53.5,49,0],"ix":2},"a":{"a":0,"k":[27.25,24.75,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.448,9.732],[2.932,-11.239],[6.361,-9.733],[-3.019,11.239]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[13.189,-0.021],[7.773,-6.343],[10.621,-8.728],[18.084,-0.021],[10.621,8.666],[7.773,6.281]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-13.189,-0.021],[-7.773,-6.343],[-10.621,-8.728],[-18.084,-0.021],[-10.621,8.666],[-7.773,6.281]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"mm","mm":4,"nm":"合并路径 2","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0.791999966491,0.816000007181,0.851000019148,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[0.470588237047,0.509803950787,0.556862771511,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":90,"s":[0.791999966491,0.816000007181,0.851000019148,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":180,"s":[0.791999966491,0.816000007181,0.851000019148,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":225,"s":[0.470588237047,0.509803950787,0.556862771511,1]},{"t":270,"s":[0.791999966491,0.816000007181,0.851000019148,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[27.24,30.425],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":6,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-24,-17],[24,-17],[24,17],[-24,17]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[27.25,29.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.524,0],[0,0],[0,1.511],[0,0],[-1.524,0],[0,0],[0,-1.51]],"o":[[0,1.511],[0,0],[-1.524,0],[0,0],[0,-1.51],[0,0],[1.524,0],[0,0]],"v":[[27,21.757],[24.232,24.5],[-24.232,24.5],[-27,21.757],[-27,-21.757],[-24.232,-24.5],[24.232,-24.5],[27,-21.757]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.894000004787,0.913999968884,0.941000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[27.25,24.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":273,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"mata","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[120,117.659,0],"ix":2},"a":{"a":0,"k":[109.823,93.451,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-22.438,-1.497],[-25.738,-1.497],[-25.738,1.497],[-22.438,1.497]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":12,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[25.738,-1.497],[-25.738,-1.497],[-25.738,1.497],[25.738,1.497]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":65,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[25.738,-1.497],[-25.738,-1.497],[-25.738,1.497],[25.738,1.497]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":177,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-22.438,-1.497],[-25.738,-1.497],[-25.738,1.497],[-22.438,1.497]],"c":true}]},{"t":189,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[25.738,-1.497],[-25.738,-1.497],[-25.738,1.497],[25.738,1.497]],"c":true}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[42.863,69.412],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-39.942,-3.85],[-43.24,-3.85],[-43.24,3.85],[-39.942,3.85]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":12,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[43.24,-3.85],[-43.24,-3.85],[-43.24,3.85],[43.24,3.85]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":65,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[43.24,-3.85],[-43.24,-3.85],[-43.24,3.85],[43.24,3.85]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":177,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-39.942,-3.85],[-43.24,-3.85],[-43.24,3.85],[-39.942,3.85]],"c":true}]},{"t":189,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[43.24,-3.85],[-43.24,-3.85],[-43.24,3.85],[43.24,3.85]],"c":true}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[60.365,61.925],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-91.037,37.831],[-91.037,-38.462],[-92.049,-38.462],[-92.049,37.831],[-92.049,38.462],[-91.037,38.462],[92.049,38.462],[92.049,37.831]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[110.47,122.763],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.057,1.261],[5.058,1.261],[5.058,-1.261],[-5.057,-1.261]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[187.346,166.269],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.058,1.261],[5.058,1.261],[5.058,-1.261],[-5.058,-1.261]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[157.405,166.269],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.058,1.261],[5.058,1.261],[5.058,-1.261],[-5.058,-1.261]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[127.465,166.269],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":14,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[6.07,36.055],[-6.07,36.055],[-6.07,36.57],[6.07,36.57]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":27,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[6.07,-36.57],[-6.07,-36.57],[-6.07,36.57],[6.07,36.57]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":65,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[6.07,-36.57],[-6.07,-36.57],[-6.07,36.57],[6.07,36.57]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":192,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[6.07,36.055],[-6.07,36.055],[-6.07,36.57],[6.07,36.57]],"c":true}]},{"t":205,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[6.07,-36.57],[-6.07,-36.57],[-6.07,36.57],[6.07,36.57]],"c":true}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[187.515,124.494],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":16,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[6.07,28.82],[-6.069,28.82],[-6.069,29.367],[6.07,29.367]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":29,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[6.07,-29.367],[-6.069,-29.367],[-6.069,29.367],[6.07,29.367]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":65,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[6.07,-29.367],[-6.069,-29.367],[-6.069,29.367],[6.07,29.367]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":194,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[6.07,28.82],[-6.069,28.82],[-6.069,29.367],[6.07,29.367]],"c":true}]},{"t":207,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[6.07,-29.367],[-6.069,-29.367],[-6.069,29.367],[6.07,29.367]],"c":true}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[157.371,131.697],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":18,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[6.07,33.2],[-6.07,33.2],[-6.07,33.8],[6.07,33.8]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":31,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[6.07,-33.8],[-6.07,-33.8],[-6.07,33.8],[6.07,33.8]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":65,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[6.07,-33.8],[-6.07,-33.8],[-6.07,33.8],[6.07,33.8]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":196,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[6.07,33.2],[-6.07,33.2],[-6.07,33.8],[6.07,33.8]],"c":true}]},{"t":209,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[6.07,-33.8],[-6.07,-33.8],[-6.07,33.8],[6.07,33.8]],"c":true}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[127.229,127.265],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.069,27.15],[6.069,27.15],[6.069,26.662],[-6.069,26.662]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":33,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.069,27.15],[6.069,27.15],[6.069,-27.15],[-6.069,-27.15]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":65,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.069,27.15],[6.069,27.15],[6.069,-27.15],[-6.069,-27.15]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":198,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.069,27.15],[6.069,27.15],[6.069,26.662],[-6.069,26.662]],"c":true}]},{"t":211,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.069,27.15],[6.069,27.15],[6.069,-27.15],[-6.069,-27.15]],"c":true}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[97.86,133.913],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":22,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.069,29.367],[6.069,29.367],[6.069,28.82],[-6.069,28.82]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":35,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.069,29.367],[6.069,29.367],[6.069,-29.367],[-6.069,-29.367]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":65,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.069,29.367],[6.069,29.367],[6.069,-29.367],[-6.069,-29.367]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":200,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.069,29.367],[6.069,29.367],[6.069,28.82],[-6.069,28.82]],"c":true}]},{"t":213,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.069,29.367],[6.069,29.367],[6.069,-29.367],[-6.069,-29.367]],"c":true}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[67.919,131.697],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":24,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.07,23.826],[6.07,23.826],[6.07,23.674],[-6.07,23.674]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":37,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.07,23.826],[6.07,23.826],[6.07,-23.826],[-6.07,-23.826]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":65,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.07,23.826],[6.07,23.826],[6.07,-23.826],[-6.07,-23.826]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":202,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.07,23.826],[6.07,23.826],[6.07,23.674],[-6.07,23.674]],"c":true}]},{"t":215,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.07,23.826],[6.07,23.826],[6.07,-23.826],[-6.07,-23.826]],"c":true}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[38.169,137.241],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.058,1.261],[5.057,1.261],[5.057,-1.261],[-5.058,-1.261]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[97.523,166.269],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.058,1.261],[5.057,1.261],[5.057,-1.261],[-5.058,-1.261]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[67.581,166.269],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.058,1.261],[5.058,1.261],[5.058,-1.261],[-5.058,-1.261]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[37.641,166.269],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 15","np":2,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.256],[2.256,0],[0,2.256],[-2.255,0]],"o":[[0,2.256],[-2.255,0],[0,-2.256],[2.256,0]],"v":[[4.084,0],[0,4.084],[-4.084,0],[0,-4.084]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.555,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.972999961703,0.976000019148,0.984000052658,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[109.823,6.639],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 16","np":3,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[109.573,3.165],[-109.573,3.165],[-109.573,-3.165],[109.573,-3.165]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.62400004069,0.654999976065,0.702000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[109.823,33.207],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[-1.589,-0.537],[0,0]],"v":[[51.362,13.283],[-51.362,-13.283]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.555,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.972999961703,0.976000019148,0.984000052658,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[161.862,19.923],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 18","np":3,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[1.589,-0.537],[0,0]],"v":[[-51.362,13.283],[51.362,-13.283]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.555,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.972999961703,0.976000019148,0.984000052658,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[58.461,19.923],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 19","np":3,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[109.573,3.165],[-109.573,3.165],[-109.573,-3.165],[109.573,-3.165]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.62400004069,0.654999976065,0.702000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[109.823,183.488],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 20","np":2,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[103.424,71.976],[-103.424,71.976],[-103.424,-71.976],[103.424,-71.976]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.555,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.972999961703,0.976000019148,0.984000052658,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[109.824,108.347],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 21","np":3,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":272,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/src/components/Animation/data/error-404.json b/src/components/Animation/data/error-404.json new file mode 100644 index 0000000..04d833f --- /dev/null +++ b/src/components/Animation/data/error-404.json @@ -0,0 +1 @@ +{"v":"5.6.5","fr":30,"ip":0,"op":90,"w":240,"h":240,"nm":"404","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"data","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[81.967,60.337,0],"ix":2},"a":{"a":0,"k":[33.77,40.321,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[17.72,-7.365],[24.262,-7.365],[24.262,9.507],[17.72,9.507]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":30,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[17.679,-0.49],[24.221,-0.49],[24.262,9.507],[17.72,9.507]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[17.723,5.76],[24.265,5.76],[24.262,9.507],[17.72,9.507]],"c":true}]},{"t":89,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[17.72,-7.365],[24.262,-7.365],[24.262,9.507],[17.72,9.507]],"c":true}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[9.326,-2.671],[15.868,-2.671],[15.868,9.506],[9.326,9.506]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":30,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[9.266,-7.671],[15.808,-7.671],[15.868,9.506],[9.326,9.506]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[9.272,-2.421],[15.814,-2.421],[15.868,9.506],[9.326,9.506]],"c":true}]},{"t":89,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[9.326,-2.671],[15.868,-2.671],[15.868,9.506],[9.326,9.506]],"c":true}]}],"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.933,-5.106],[7.475,-5.106],[7.475,9.506],[0.933,9.506]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":30,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.98,-2.356],[7.522,-2.356],[7.475,9.506],[0.933,9.506]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.95,2.269],[7.492,2.269],[7.475,9.506],[0.933,9.506]],"c":true}]},{"t":89,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[0.933,-5.106],[7.475,-5.106],[7.475,9.506],[0.933,9.506]],"c":true}]}],"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-7.461,0.366],[-0.919,0.366],[-0.919,9.506],[-7.461,9.506]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":30,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-7.433,-5.634],[-0.891,-5.634],[-0.919,9.506],[-7.461,9.506]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-7.376,-9.509],[-0.834,-9.509],[-0.919,9.506],[-7.461,9.506]],"c":true}]},{"t":89,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-7.461,0.366],[-0.919,0.366],[-0.919,9.506],[-7.461,9.506]],"c":true}]}],"ix":2},"nm":"路径 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.854,-3.742],[-9.312,-3.742],[-9.312,9.506],[-15.854,9.506]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":30,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.844,3.633],[-9.302,3.633],[-9.312,9.506],[-15.854,9.506]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.823,-0.867],[-9.281,-0.867],[-9.312,9.506],[-15.854,9.506]],"c":true}]},{"t":89,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.854,-3.742],[-9.312,-3.742],[-9.312,9.506],[-15.854,9.506]],"c":true}]}],"ix":2},"nm":"路径 5","mn":"ADBE Vector Shape - Group","hd":false},{"ind":5,"ty":"sh","ix":6,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-24.262,-9.507],[-17.72,-9.507],[-17.72,9.507],[-24.262,9.507]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":30,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-24.285,-1.757],[-17.743,-1.757],[-17.72,9.507],[-24.262,9.507]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-24.33,2.368],[-17.788,2.368],[-17.72,9.507],[-24.262,9.507]],"c":true}]},{"t":89,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-24.262,-9.507],[-17.72,-9.507],[-17.72,9.507],[-24.262,9.507]],"c":true}]}],"ix":2},"nm":"路径 6","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[33.77,21.637],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":10,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.596,-1.601],[6.596,-1.601],[6.596,1.601],[-6.596,1.601]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[53.403,70.846],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-18.37,-1.601],[18.37,-1.601],[18.37,1.601],[-18.37,1.601]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[25.911,70.846],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-10.143,-1.601],[10.143,-1.601],[10.143,1.601],[-10.143,1.601]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[49.857,64.531],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 4","np":4,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-8.654,-1.601],[8.654,-1.601],[8.654,1.601],[-8.654,1.601]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[28.79,64.531],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 5","np":4,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.958,-1.601],[4.958,-1.601],[4.958,1.601],[-4.958,1.601]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[12.499,64.531],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 6","np":4,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-15.605,-1.601],[15.605,-1.601],[15.605,1.601],[-15.605,1.601]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[44.395,58.23],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 7","np":4,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-9.186,-1.601],[9.186,-1.601],[9.186,1.601],[-9.186,1.601]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[16.726,58.23],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 8","np":4,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.596,-1.601],[6.596,-1.601],[6.596,1.601],[-6.596,1.601]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[53.403,51.915],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 9","np":4,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-13.81,-1.601],[13.81,-1.601],[13.81,1.601],[-13.81,1.601]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[30.501,51.915],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 10","np":4,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-3.327,-1.601],[3.327,-1.601],[3.327,1.601],[-3.327,1.601]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[10.867,51.915],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 11","np":4,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-16.03,-1.601],[16.03,-1.601],[16.03,1.601],[-16.03,1.601]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[43.97,45.615],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 12","np":4,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-8.292,-1.601],[8.292,-1.601],[8.292,1.601],[-8.292,1.601]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[15.832,45.615],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 13","np":4,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-10.143,-1.601],[10.143,-1.601],[10.143,1.601],[-10.143,1.601]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[49.857,39.299],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 14","np":4,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-8.654,-1.601],[8.654,-1.601],[8.654,1.601],[-8.654,1.601]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[28.79,39.299],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 15","np":4,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.958,-1.601],[4.958,-1.601],[4.958,1.601],[-4.958,1.601]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[12.499,39.299],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 16","np":4,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.897,0],[0,0],[0,-2.897],[0,0],[-2.897,0],[0,0],[0,2.898],[0,0]],"o":[[0,0],[-2.897,0],[0,0],[0,2.898],[0,0],[2.897,0],[0,0],[0,-2.897]],"v":[[26.557,-38.354],[-26.558,-38.354],[-31.803,-33.108],[-31.803,33.108],[-26.558,38.354],[26.557,38.354],[31.803,33.108],[31.803,-33.108]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.967,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[33.77,40.321],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.897,0],[0,0],[0,-2.897],[0,0],[-2.897,0],[0,0],[0,2.898],[0,0]],"o":[[0,0],[-2.897,0],[0,0],[0,2.898],[0,0],[2.897,0],[0,0],[0,-2.897]],"v":[[26.557,-38.354],[-26.558,-38.354],[-31.803,-33.108],[-31.803,33.108],[-26.558,38.354],[26.557,38.354],[31.803,33.108],[31.803,-33.108]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.972999961703,0.976000019148,0.984000052658,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[33.77,40.321],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 18","np":4,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"“Z”轮廓 3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":30,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":50,"s":[60]},{"t":70,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":30,"s":[181.5,130.75,0],"to":[2.25,-2.042,0],"ti":[-4.083,3.833,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":50,"s":[195,118.5,0],"to":[2.833,-4.583,0],"ti":[-1.583,3.042,0]},{"t":70,"s":[204.5,100.25,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":30,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":50,"s":[50,50,100]},{"t":70,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.693,0],[9.233,0],[9.233,-1.998],[3.625,-1.998],[9.168,-10.506],[9.168,-11.924],[1.225,-11.924],[1.225,-9.942],[6.252,-9.942],[0.693,-1.434]],"c":true},"ix":2},"nm":"Z","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.23137254902,0.274509803922,0.333333333333,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Z","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":30,"op":71,"st":30,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"“Z”轮廓 2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":15,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":35,"s":[60]},{"t":55,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":15,"s":[181.5,130.75,0],"to":[2.25,-2.042,0],"ti":[-4.083,3.833,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":35,"s":[195,118.5,0],"to":[2.833,-4.583,0],"ti":[-1.583,3.042,0]},{"t":55,"s":[204.5,100.25,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":15,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":35,"s":[50,50,100]},{"t":55,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.693,0],[9.233,0],[9.233,-1.998],[3.625,-1.998],[9.168,-10.506],[9.168,-11.924],[1.225,-11.924],[1.225,-9.942],[6.252,-9.942],[0.693,-1.434]],"c":true},"ix":2},"nm":"Z","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.23137254902,0.274509803922,0.333333333333,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Z","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":15,"op":56,"st":15,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"“Z”轮廓","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":20,"s":[60]},{"t":40,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[181.5,130.75,0],"to":[2.25,-2.042,0],"ti":[-4.083,3.833,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20,"s":[195,118.5,0],"to":[2.833,-4.583,0],"ti":[-1.583,3.042,0]},{"t":40,"s":[204.5,100.25,0]}],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[0,0,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":20,"s":[50,50,100]},{"t":40,"s":[100,100,100]}],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.693,0],[9.233,0],[9.233,-1.998],[3.625,-1.998],[9.168,-10.506],[9.168,-11.924],[1.225,-11.924],[1.225,-9.942],[6.252,-9.942],[0.693,-1.434]],"c":true},"ix":2},"nm":"Z","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.23137254902,0.274509803922,0.333333333333,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"Z","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":41,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"“head”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[179.109,159.74,0],"ix":2},"a":{"a":0,"k":[50.184,42.261,0],"ix":1},"s":{"a":0,"k":[50,50,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0.551,3.125],[1.123,0.873],[5.869,-3.587],[3.517,-2.858],[14.978,-7.709],[3.823,2.402],[2.162,-1.683],[0.567,-2.916],[-0.051,-3.171],[-3,-7.971],[0,0],[0,-1.122],[-49.779,0.02],[0,5.256],[0.099,1.012],[-0.073,0.18],[-0.037,8.515]],"o":[[-0.575,-2.916],[-2.168,-1.69],[-3.833,2.419],[-14.955,-7.752],[-3.5,-2.852],[-5.82,-3.539],[-1.115,0.872],[-0.558,3.121],[0.034,8.516],[0,0],[-0.112,1.135],[0,5.256],[50.013,0],[0.003,-1.018],[0.101,-0.166],[2.994,-7.973],[0.039,-3.173]],"v":[[49.126,-34.698],[46.617,-40.321],[34.838,-37.551],[23.801,-29.629],[-23.92,-29.698],[-34.916,-37.586],[-46.619,-40.307],[-49.12,-34.684],[-49.883,-25.224],[-45.296,-0.294],[-45.233,-0.141],[-45.413,3.266],[-0.104,41.991],[45.197,3.266],[45.052,0.219],[45.314,-0.301],[49.895,-25.231]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[0.551,3.125],[1.123,0.873],[5.869,-3.587],[3.517,-2.858],[14.978,-7.709],[3.823,2.402],[2.162,-1.683],[0.567,-2.916],[-0.051,-3.171],[-3,-7.971],[0,0],[0,-1.122],[-49.779,0.02],[0,5.256],[0.099,1.012],[-0.073,0.18],[-0.037,8.515]],"o":[[-0.575,-2.916],[-2.168,-1.69],[-3.833,2.419],[-14.955,-7.752],[-3.5,-2.852],[-5.82,-3.539],[-1.115,0.872],[-0.558,3.121],[0.034,8.516],[0,0],[-0.112,1.135],[0,5.256],[50.013,0],[0.003,-1.018],[0.101,-0.166],[2.994,-7.973],[0.039,-3.173]],"v":[[49.126,-29.698],[46.617,-35.321],[34.838,-32.551],[23.801,-24.629],[-23.92,-24.698],[-34.916,-32.586],[-46.619,-35.307],[-49.12,-29.684],[-49.883,-20.224],[-45.296,4.706],[-45.233,4.859],[-45.413,8.266],[-0.104,41.991],[45.197,8.266],[45.052,5.219],[45.314,4.699],[49.895,-20.231]],"c":true}]},{"t":90,"s":[{"i":[[0.551,3.125],[1.123,0.873],[5.869,-3.587],[3.517,-2.858],[14.978,-7.709],[3.823,2.402],[2.162,-1.683],[0.567,-2.916],[-0.051,-3.171],[-3,-7.971],[0,0],[0,-1.122],[-49.779,0.02],[0,5.256],[0.099,1.012],[-0.073,0.18],[-0.037,8.515]],"o":[[-0.575,-2.916],[-2.168,-1.69],[-3.833,2.419],[-14.955,-7.752],[-3.5,-2.852],[-5.82,-3.539],[-1.115,0.872],[-0.558,3.121],[0.034,8.516],[0,0],[-0.112,1.135],[0,5.256],[50.013,0],[0.003,-1.018],[0.101,-0.166],[2.994,-7.973],[0.039,-3.173]],"v":[[49.126,-34.698],[46.617,-40.321],[34.838,-37.551],[23.801,-29.629],[-23.92,-29.698],[-34.916,-37.586],[-46.619,-40.307],[-49.12,-34.684],[-49.883,-25.224],[-45.296,-0.294],[-45.233,-0.141],[-45.413,3.266],[-0.104,41.991],[45.197,3.266],[45.052,0.219],[45.314,-0.301],[49.895,-25.231]],"c":true}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.33300000359,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[50.184,42.261],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"“body”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[157.785,166.289,0],"ix":2},"a":{"a":0,"k":[71.972,25.193,0],"ix":1},"s":{"a":0,"k":[60,60,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[25.834,0],[7.225,-4.571],[9.183,0],[0,-25.83],[-0.068,-1.031],[0,0],[0,0],[0,0],[0,1.048]],"o":[[-9.183,0],[-7.227,-4.571],[-25.833,0],[0,1.048],[0,0],[0,0],[0,0],[0.067,-1.031],[0,-25.83]],"v":[[24.947,-24.943],[0.001,-17.688],[-24.947,-24.943],[-71.722,21.825],[-71.62,24.943],[-21.726,24.943],[21.726,24.943],[71.621,24.943],[71.722,21.825]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[{"i":[[25.834,0],[7.225,-4.571],[9.183,0],[0,-25.83],[-0.068,-1.031],[0,0],[0,0],[0,0],[0,1.048]],"o":[[-9.183,0],[-7.227,-4.571],[-25.833,0],[0,1.048],[0,0],[0,0],[0,0],[0.067,-1.031],[0,-25.83]],"v":[[24.947,-18.693],[0.001,-11.438],[-24.947,-18.693],[-71.722,21.825],[-71.62,24.943],[-21.726,24.943],[21.726,24.943],[71.621,24.943],[71.722,21.825]],"c":true}]},{"t":90,"s":[{"i":[[25.834,0],[7.225,-4.571],[9.183,0],[0,-25.83],[-0.068,-1.031],[0,0],[0,0],[0,0],[0,1.048]],"o":[[-9.183,0],[-7.227,-4.571],[-25.833,0],[0,1.048],[0,0],[0,0],[0,0],[0.067,-1.031],[0,-25.83]],"v":[[24.947,-24.943],[0.001,-17.688],[-24.947,-24.943],[-71.722,21.825],[-71.62,24.943],[-21.726,24.943],[21.726,24.943],[71.621,24.943],[71.722,21.825]],"c":true}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.33300000359,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[71.972,25.193],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"“tail”轮廓 2","sr":1,"ks":{"o":{"a":0,"k":90,"ix":11},"r":{"a":0,"k":-72,"ix":10},"p":{"a":0,"k":[113.144,201.686,0],"ix":2},"a":{"a":0,"k":[54.554,31.992,0],"ix":1},"s":{"a":0,"k":[60,60,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[0.988235353956,0.333333333333,0.20000001496,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":11.339,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988234994926,0.333332974303,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 4","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[0.988235353956,0.333333333333,0.20000001496,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":11.339,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988234994926,0.333332974303,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 3","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[0.988235353956,0.333333333333,0.20000001496,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":11.339,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988234994926,0.333332974303,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 2","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[0.988235353956,0.333333333333,0.20000001496,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":11.339,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[0,0],[5.34,-2.218],[2.039,-1.282],[0,0],[3.979,-6.275],[-1.599,-8.31]],"o":[[0,0],[0,0],[-2.091,0.868],[-4.944,3.109],[0,0],[-5.231,8.249],[0,0]],"v":[[40.385,-3.158],[23.969,-1.413],[4.63,4.006],[-1.679,7.369],[-10.737,13.995],[-22.51,28.74],[-26.696,55.731]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":1,"s":[{"i":[[0,0],[0,0],[5.34,-2.218],[2.039,-1.282],[0,0],[3.979,-6.275],[-1.599,-8.31]],"o":[[0,0],[0,0],[-2.091,0.868],[-4.944,3.109],[0,0],[-5.231,8.249],[0,0]],"v":[[40.385,-3.158],[23.969,-1.413],[4.63,4.006],[-1.679,7.369],[-10.737,13.995],[-22.51,28.74],[-26.696,55.731]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":2,"s":[{"i":[[0,0],[0,0],[5.34,-2.218],[2.039,-1.282],[0,0],[3.979,-6.275],[-1.599,-8.31]],"o":[[0,0],[0,0],[-2.091,0.868],[-4.944,3.109],[0,0],[-5.231,8.249],[0,0]],"v":[[40.385,-3.158],[23.969,-1.413],[4.63,4.006],[-1.679,7.369],[-10.737,13.995],[-22.51,28.74],[-26.696,55.731]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":3,"s":[{"i":[[0,0],[0,0],[5.34,-2.218],[2.039,-1.282],[0,0],[3.979,-6.275],[-1.599,-8.31]],"o":[[0,0],[0,0],[-2.091,0.868],[-4.944,3.109],[0,0],[-5.231,8.249],[0,0]],"v":[[40.385,-3.158],[23.969,-1.413],[4.63,4.006],[-1.679,7.369],[-10.737,13.995],[-22.51,28.74],[-26.696,55.731]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":4,"s":[{"i":[[0,0],[0,0],[5.389,-2.096],[2.554,-1.393],[0,0],[3.122,-6.742],[-0.808,-8.304]],"o":[[0,0],[0,0],[-4.15,1.614],[-6.194,3.378],[0,0],[-5.576,12.041],[0,0]],"v":[[40.462,-2.921],[24.046,-1.176],[6.133,3.78],[-3.844,8.342],[-12.003,14.144],[-22.825,28.58],[-26.536,55.416]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":5,"s":[{"i":[[0,0],[0,0],[5.389,-2.096],[3.026,-1.99],[0,0],[3.396,-6.608],[-1.052,-7.437]],"o":[[0,0],[0,0],[-4.15,1.614],[-7.339,4.827],[0,0],[-4.203,8.178],[0,0]],"v":[[40.385,-3.158],[23.808,-1.098],[4.315,3.845],[-6.468,9.427],[-17.734,19.16],[-24.258,29.834],[-26.613,55.178]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":6,"s":[{"i":[[0,0],[0,0],[5.389,-2.096],[2.649,-1.392],[0,0],[2.241,-7.585],[-1.052,-7.437]],"o":[[0,0],[0,0],[-4.15,1.614],[-6.425,3.376],[0,0],[-3.558,12.04],[0,0]],"v":[[40.231,-3.634],[23.576,-1.812],[4.315,3.845],[-5.826,8.406],[-16.206,15.772],[-26.011,31.718],[-27.475,54.144]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":7,"s":[{"i":[[0,0],[5.699,-0.982],[5.389,-2.096],[2.631,-1.545],[0,0],[2.241,-7.585],[-1.052,-7.437]],"o":[[0,0],[-6.36,1.096],[-4.15,1.614],[-6.382,3.747],[0,0],[-3.558,12.04],[0,0]],"v":[[40.231,-3.634],[22.946,-2.133],[4.166,2.579],[-5.943,7.401],[-14.613,14.203],[-26.802,31.712],[-28.414,52.872]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":8,"s":[{"i":[[0,0],[5.753,-1.042],[5.389,-2.096],[2.717,-1.477],[0,0],[2.996,-7.32],[-0.66,-7.038]],"o":[[0,0],[-6.433,1.165],[-4.15,1.614],[-6.589,3.583],[0,0],[-3.091,7.554],[0,0]],"v":[[40.546,-3.473],[23.82,-2.679],[3.851,2.419],[-6.404,7.125],[-15.635,13.484],[-27.818,30.202],[-30.845,50.245]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":9,"s":[{"i":[[0,0],[5.759,-1.009],[5.389,-2.096],[2.87,-1.591],[0,0],[2.962,-7.334],[-0.254,-3.161]],"o":[[0,0],[-6.527,1.144],[-4.15,1.614],[-6.961,3.858],[0,0],[-3.656,9.052],[0,0]],"v":[[40.706,-3.788],[23.666,-3.155],[2.668,2.014],[-7.849,6.914],[-18.09,14.019],[-30.19,30.184],[-33.276,47.617]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10,"s":[{"i":[[0,0],[5.111,-0.301],[5.61,-1.401],[2.859,-1.223],[0,0],[3.977,-7.098],[-0.254,-3.161]],"o":[[0,0],[-6.639,0.39],[-3.614,0.903],[-6.934,2.965],[0,0],[-1.302,2.324],[0,0]],"v":[[41.574,-3.545],[22.322,-3.244],[0.071,0.493],[-9.701,3.801],[-20.984,9.965],[-35.123,23.901],[-41.282,39.967]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":11,"s":[{"i":[[0,0],[5.855,-0.689],[5.579,-1.521],[2.495,-0.921],[0,0],[5.374,-7.953],[0.975,-3.626]],"o":[[0,0],[-6.123,0.721],[-3.73,1.017],[-6.05,2.233],[0,0],[-4.988,7.381],[0,0]],"v":[[41.259,-3.705],[21.454,-3.488],[-1.504,-0.31],[-10.812,2.638],[-19.456,6.577],[-37.31,20.406],[-45.912,35.425]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":12,"s":[{"i":[[0,0],[6.185,0.154],[6.231,-1.114],[2.191,-0.494],[0,0],[4.922,-6.616],[1.444,-2.99]],"o":[[0,0],[-5.88,-0.147],[-2.157,0.386],[-5.315,1.199],[0,0],[-1.59,2.137],[0,0]],"v":[[43.161,-4.323],[22.643,-3.874],[-1.73,-1.814],[-8.39,-0.448],[-18.315,2],[-41.946,16.655],[-49.418,28.679]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":13,"s":[{"i":[[0,0],[9.867,0.118],[5.769,-0.388],[3.099,-0.551],[0,0],[7.038,-4.149],[1.444,-2.99]],"o":[[0,0],[-5.327,-0.064],[-1.946,0.131],[-7.516,1.336],[0,0],[-2.295,1.353],[0,0]],"v":[[43.791,-4.002],[22.251,-4.272],[-0.927,-3.389],[-8.851,-2.272],[-25.186,1.078],[-40.703,9.153],[-53.156,21.219]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":14,"s":[{"i":[[0,0],[9.86,0.392],[5.782,0.074],[2.795,-0.214],[0,0],[3.228,-2.123],[3.59,-4.476]],"o":[[0,0],[-5.642,-0.224],[-3.076,-0.039],[-6.779,0.52],[0,0],[-2.226,1.464],[0,0]],"v":[[44.106,-3.842],[19.963,-4.843],[-0.517,-5.362],[-9.451,-5.05],[-21.435,-3.558],[-39.775,1.492],[-56.889,12.968]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":15,"s":[{"i":[[0,0],[9.86,0.392],[5.782,0.074],[1.987,-0.104],[0,0],[3.684,-1.163],[6.354,-4.06]],"o":[[0,0],[-5.642,-0.224],[-2.077,-0.027],[-8.091,0.423],[0,0],[-2.407,0.76],[0,0]],"v":[[44.106,-3.842],[19.963,-4.843],[4.149,-5.564],[-11.069,-6.688],[-25.209,-6.275],[-41.79,-3.9],[-59.105,2.911]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":16,"s":[{"i":[[0,0],[9.86,0.392],[5.782,0.074],[1.975,0.24],[0,0],[4.957,-0.844],[7.84,-1.914]],"o":[[0,0],[-5.642,-0.224],[-2.077,-0.027],[-9.691,-1.176],[0,0],[-2.489,0.424],[0,0]],"v":[[44.106,-3.842],[24.153,-4.89],[5.183,-6.426],[-11.128,-9.297],[-25.964,-11.024],[-43.163,-10.551],[-59.74,-7.135]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":17,"s":[{"i":[[0,0],[9.86,0.392],[5.697,0.992],[1.975,0.24],[0,0],[5.974,0.665],[8.618,-0.327]],"o":[[0,0],[-5.642,-0.224],[-5.55,-0.967],[-9.691,-1.176],[0,0],[-2.509,-0.279],[0,0]],"v":[[44.106,-3.842],[24.789,-5.36],[7.091,-7.834],[-9.291,-11.734],[-24.121,-14.251],[-43.346,-17.589],[-59.817,-17.887]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":18,"s":[{"i":[[0,0],[9.86,0.392],[5.697,0.992],[1.892,0.614],[4.752,1.604],[6.514,2.33],[9.545,2.526]],"o":[[0,0],[-5.642,-0.224],[-5.55,-0.967],[-7.468,-2.424],[-5.613,-1.895],[-2.377,-0.85],[0,0]],"v":[[44.106,-3.842],[24.789,-5.36],[7.727,-8.304],[-6.836,-12.269],[-22.51,-18.192],[-39.506,-23.568],[-57.444,-28.384]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":19,"s":[{"i":[[0,0],[9.826,0.905],[5.102,1.881],[1.863,0.697],[4.336,2.917],[6.419,4.464],[3.215,3.269]],"o":[[0,0],[-6.825,-0.628],[-5.285,-1.949],[-5.81,-2.174],[-4.915,-3.306],[-2.073,-1.441],[0,0]],"v":[[44.106,-3.842],[25.502,-5.592],[10.028,-9.314],[-3.971,-14.777],[-18.985,-24.332],[-34.75,-35.628],[-48.688,-46.738]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20,"s":[{"i":[[0,0],[9.826,0.905],[5.102,1.881],[1.812,0.821],[3.938,3.309],[5.379,6.116],[3.435,5.563]],"o":[[0,0],[-6.825,-0.628],[-5.285,-1.949],[-6.91,-3.131],[-4.535,-3.811],[-1.667,-1.896],[0,0]],"v":[[44.106,-3.842],[27.874,-5.574],[11.532,-9.54],[-2.146,-15.633],[-16.524,-25.657],[-31.076,-40.502],[-43.171,-54.84]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":21,"s":[{"i":[[0,0],[9.826,0.905],[5.102,1.881],[1.673,1.077],[3.938,3.309],[4.871,6.528],[2.317,6.978]],"o":[[0,0],[-6.825,-0.628],[-5.285,-1.949],[-7.45,-4.796],[-4.535,-3.811],[-1.908,-2.557],[0,0]],"v":[[44.106,-3.842],[27.874,-5.574],[12.875,-9.451],[-0.72,-16.096],[-14.223,-26.667],[-27.89,-43.64],[-36.799,-61.116]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":22,"s":[{"i":[[0,0],[9.597,1.188],[5.102,1.881],[1.941,1.312],[3.586,3.654],[3.544,6.31],[1.048,7.521]],"o":[[0,0],[-6.797,-0.846],[-5.285,-1.949],[-6.348,-4.234],[-3.829,-3.836],[-1.499,-2.777],[0,0]],"v":[[44.106,-3.842],[29.693,-5.639],[13.235,-9.962],[-0.238,-17.041],[-12.669,-28.355],[-23.01,-46.014],[-29.371,-65.764]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":23,"s":[{"i":[[0,0],[9.367,1.471],[5.102,1.881],[2.21,1.547],[3.235,3.998],[2.217,6.092],[-0.221,8.065]],"o":[[0,0],[-6.77,-1.063],[-5.285,-1.949],[-5.245,-3.672],[-3.123,-3.86],[-1.091,-2.998],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[13.594,-10.473],[0.243,-17.986],[-11.269,-30.519],[-19.544,-49.506],[-21.944,-70.411]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":24,"s":[{"i":[[0,0],[9.367,1.471],[5.102,1.881],[2.21,1.547],[2.375,4.562],[1.2,4.582],[-2.105,6.312]],"o":[[0,0],[-6.77,-1.063],[-5.285,-1.949],[-5.245,-3.672],[-2.874,-5.518],[-0.808,-3.086],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[13.755,-10.788],[1.432,-18.372],[-10.145,-32.724],[-15.746,-49.952],[-15.364,-72.812]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":25,"s":[{"i":[[0,0],[9.367,1.471],[5.102,1.881],[2.773,2.397],[2.375,4.562],[0.493,4.023],[-3.93,7.167]],"o":[[0,0],[-6.77,-1.063],[-5.285,-1.949],[-4.844,-4.188],[-2.874,-5.518],[-0.388,-3.167],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[13.992,-10.865],[2.383,-18.681],[-8.32,-33.58],[-12.103,-50.873],[-7.601,-74.809]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":26,"s":[{"i":[[0,0],[9.367,1.471],[4.802,2.551],[2.773,2.397],[2.02,4.73],[0.332,4.338],[-7.49,7.536]],"o":[[0,0],[-6.77,-1.063],[-5.692,-3.023],[-4.844,-4.188],[-2.321,-5.435],[-0.244,-3.181],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[14.153,-11.18],[2.782,-19.074],[-6.733,-34.358],[-9.095,-51.324],[0.709,-75.932]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":27,"s":[{"i":[[0,0],[9.367,1.471],[4.802,2.551],[2.773,2.397],[2.02,4.73],[-0.375,3.78],[-9.065,6.733]],"o":[[0,0],[-6.77,-1.063],[-5.692,-3.023],[-4.844,-4.188],[-2.321,-5.435],[0.315,-3.175],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[14.313,-11.495],[3.97,-19.46],[-5.069,-34.899],[-6.254,-50.67],[6.789,-75.016]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":28,"s":[{"i":[[0,0],[9.364,1.866],[4.802,2.551],[2.236,2.904],[1.828,4.807],[-1.197,3.604],[-13.791,4.326]],"o":[[0,0],[-6.814,-1.358],[-5.692,-3.023],[-4.282,-5.562],[-2.006,-5.275],[1.183,-3.561],[0,0]],"v":[[45.173,-3.794],[31.987,-5.859],[17.277,-11.275],[5.991,-20.117],[-1.033,-35.422],[-0.874,-51.104],[20.449,-72.619]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":29,"s":[{"i":[[0,0],[9.364,1.866],[4.802,2.551],[2.236,2.904],[1.614,4.883],[-1.197,3.604],[-14.724,2.263]],"o":[[0,0],[-6.814,-1.358],[-5.692,-3.023],[-4.282,-5.562],[-1.691,-5.114],[1.183,-3.561],[0,0]],"v":[[45.648,-3.949],[31.987,-5.859],[18.382,-11.109],[6.942,-20.426],[0.156,-35.808],[2.062,-52.583],[25.81,-70.681]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":30,"s":[{"i":[[0,0],[9.364,1.866],[4.802,2.551],[1.855,3.161],[0.955,5.054],[-1.635,3.137],[-13.594,-0.733]],"o":[[0,0],[-6.814,-1.358],[-5.692,-3.023],[-4.074,-6.944],[-1.055,-5.584],[1.734,-3.328],[0,0]],"v":[[45.648,-3.949],[31.987,-5.859],[18.382,-11.109],[7.495,-20.342],[1.113,-36.908],[4.434,-52.565],[30.131,-67.091]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":31,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[0.033,5.143],[-1.635,3.137],[-12.631,-2.623]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[-0.068,-10.636],[1.734,-3.328],[0,0]],"v":[[45.648,-3.949],[31.987,-5.859],[18.067,-11.269],[8.131,-20.812],[2.141,-36.979],[6.734,-53.576],[33.751,-64.85]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":32,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.157,5.141],[-2.454,2.548],[-12.369,-5.862]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.223,-7.313],[3.715,-3.858],[0,0]],"v":[[45.648,-3.949],[32.148,-6.174],[18.311,-12.137],[8.607,-20.966],[3.33,-37.365],[8.63,-53.403],[37.911,-60.944]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":33,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.157,5.141],[-2.454,2.548],[-11.329,-7.515]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.223,-7.313],[3.715,-3.858],[0,0]],"v":[[45.648,-3.949],[32.778,-5.853],[19.018,-11.578],[9.082,-21.121],[4.358,-37.437],[11.798,-54.17],[39.629,-58.085]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":34,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.157,5.141],[-3.707,2.342],[-11.876,-8.388]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.223,-7.313],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.253,-6.007],[19.256,-11.656],[9.635,-21.038],[4.751,-37.038],[14.574,-55.335],[41.661,-55.065]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":35,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.157,5.141],[-3.707,2.342],[-9.718,-11.455]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.223,-7.313],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.253,-6.007],[19.809,-11.572],[9.95,-20.877],[5.618,-36.795],[15.918,-55.245],[42.981,-51.814]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":36,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-9.718,-11.455]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.253,-6.007],[19.809,-11.572],[10.503,-20.794],[5.618,-36.795],[16.227,-54.294],[43.599,-49.912]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":37,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-8.755,-13.346]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.992,-11.168],[11.216,-21.026],[7.122,-37.02],[17.249,-53.575],[44.674,-45.792]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":38,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-6.995,-16.02]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.992,-11.168],[11.216,-21.026],[7.122,-37.02],[17.249,-53.575],[44.502,-43.896]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":39,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-6.995,-16.02]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.992,-11.168],[11.216,-21.026],[7.122,-37.02],[17.718,-52.939],[44.02,-42.951]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":40,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-5.408,-16.799]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.992,-11.168],[11.216,-21.026],[7.122,-37.02],[17.718,-52.939],[43.776,-42.083]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":41,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-2.799,-16.858]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.992,-11.168],[11.216,-21.026],[7.122,-37.02],[17.718,-52.939],[42.986,-42.089]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":42,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-1.307,-15.503]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.992,-11.168],[11.216,-21.026],[7.122,-37.02],[18.039,-53.569],[42.986,-42.089]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":43,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-2.496,-15.116]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.992,-11.168],[11.216,-21.026],[7.122,-37.02],[18.039,-53.569],[42.986,-42.089]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":46,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-2.496,-15.116]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.991,-11.168],[11.216,-21.026],[7.122,-37.02],[18.039,-53.569],[42.986,-42.089]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":47,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-1.307,-15.503]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.991,-11.168],[11.216,-21.026],[7.122,-37.02],[18.039,-53.569],[42.986,-42.089]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":48,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-2.799,-16.858]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.991,-11.168],[11.216,-21.026],[7.122,-37.02],[17.718,-52.939],[42.986,-42.089]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":49,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-5.408,-16.799]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.991,-11.168],[11.216,-21.026],[7.122,-37.02],[17.718,-52.939],[43.776,-42.083]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":50,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-6.995,-16.02]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.991,-11.168],[11.216,-21.026],[7.122,-37.02],[17.718,-52.939],[44.02,-42.951]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":51,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-6.995,-16.02]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.991,-11.168],[11.216,-21.026],[7.122,-37.02],[17.249,-53.575],[44.502,-43.896]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":52,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-8.755,-13.346]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.991,-11.168],[11.216,-21.026],[7.122,-37.02],[17.249,-53.575],[44.674,-45.792]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":53,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-9.718,-11.455]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.253,-6.007],[19.809,-11.572],[10.503,-20.794],[5.618,-36.795],[16.227,-54.294],[43.599,-49.912]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":54,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.157,5.141],[-3.707,2.342],[-9.718,-11.455]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.223,-7.313],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.253,-6.007],[19.809,-11.572],[9.95,-20.877],[5.618,-36.795],[15.918,-55.245],[42.981,-51.814]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":55,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.157,5.141],[-3.707,2.342],[-11.876,-8.388]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.223,-7.313],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.253,-6.007],[19.256,-11.656],[9.635,-21.038],[4.751,-37.038],[14.574,-55.335],[41.661,-55.065]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":56,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.157,5.141],[-2.454,2.548],[-11.329,-7.515]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.223,-7.313],[3.715,-3.858],[0,0]],"v":[[45.648,-3.949],[32.778,-5.853],[19.018,-11.578],[9.082,-21.121],[4.358,-37.437],[11.798,-54.17],[39.629,-58.085]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":57,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.157,5.141],[-2.454,2.548],[-12.369,-5.862]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.223,-7.313],[3.715,-3.858],[0,0]],"v":[[45.648,-3.949],[32.148,-6.174],[18.311,-12.137],[8.607,-20.966],[3.33,-37.365],[8.63,-53.403],[37.911,-60.944]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":58,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[0.033,5.143],[-1.635,3.137],[-12.631,-2.623]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[-0.068,-10.636],[1.734,-3.328],[0,0]],"v":[[45.648,-3.949],[31.987,-5.859],[18.067,-11.269],[8.131,-20.812],[2.141,-36.979],[6.734,-53.576],[33.751,-64.85]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":59,"s":[{"i":[[0,0],[9.364,1.866],[4.802,2.551],[1.855,3.161],[0.955,5.054],[-1.635,3.137],[-13.594,-0.733]],"o":[[0,0],[-6.814,-1.358],[-5.692,-3.023],[-4.074,-6.944],[-1.055,-5.584],[1.734,-3.328],[0,0]],"v":[[45.648,-3.949],[31.987,-5.859],[18.382,-11.109],[7.495,-20.342],[1.113,-36.908],[4.434,-52.565],[30.131,-67.091]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[{"i":[[0,0],[9.364,1.866],[4.802,2.551],[2.236,2.904],[1.614,4.883],[-1.197,3.604],[-14.724,2.263]],"o":[[0,0],[-6.814,-1.358],[-5.692,-3.023],[-4.282,-5.562],[-1.691,-5.114],[1.183,-3.561],[0,0]],"v":[[45.648,-3.949],[31.987,-5.859],[18.382,-11.109],[6.942,-20.426],[0.156,-35.808],[2.062,-52.583],[25.81,-70.681]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":61,"s":[{"i":[[0,0],[9.364,1.866],[4.802,2.551],[2.236,2.904],[1.828,4.807],[-1.197,3.604],[-13.791,4.326]],"o":[[0,0],[-6.814,-1.358],[-5.692,-3.023],[-4.282,-5.562],[-2.006,-5.275],[1.183,-3.561],[0,0]],"v":[[45.173,-3.794],[31.987,-5.859],[17.277,-11.275],[5.991,-20.117],[-1.033,-35.422],[-0.874,-51.104],[20.449,-72.619]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":62,"s":[{"i":[[0,0],[9.367,1.471],[4.802,2.551],[2.773,2.397],[2.02,4.73],[-0.375,3.78],[-9.065,6.733]],"o":[[0,0],[-6.77,-1.063],[-5.692,-3.023],[-4.844,-4.188],[-2.321,-5.435],[0.315,-3.175],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[14.313,-11.495],[3.97,-19.46],[-5.069,-34.899],[-6.254,-50.67],[6.789,-75.016]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":63,"s":[{"i":[[0,0],[9.367,1.471],[4.802,2.551],[2.773,2.397],[2.02,4.73],[0.332,4.338],[-7.49,7.536]],"o":[[0,0],[-6.77,-1.063],[-5.692,-3.023],[-4.844,-4.188],[-2.321,-5.435],[-0.244,-3.181],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[14.153,-11.18],[2.782,-19.074],[-6.733,-34.358],[-9.095,-51.324],[0.709,-75.932]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":64,"s":[{"i":[[0,0],[9.367,1.471],[5.102,1.881],[2.773,2.397],[2.375,4.562],[0.493,4.023],[-3.93,7.167]],"o":[[0,0],[-6.77,-1.063],[-5.285,-1.949],[-4.844,-4.188],[-2.874,-5.518],[-0.388,-3.167],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[13.992,-10.865],[2.383,-18.681],[-8.32,-33.58],[-12.103,-50.873],[-7.601,-74.809]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":65,"s":[{"i":[[0,0],[9.367,1.471],[5.102,1.881],[2.21,1.547],[2.375,4.562],[1.2,4.582],[-2.105,6.312]],"o":[[0,0],[-6.77,-1.063],[-5.285,-1.949],[-5.245,-3.672],[-2.874,-5.518],[-0.808,-3.086],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[13.755,-10.788],[1.432,-18.372],[-10.145,-32.724],[-15.746,-49.952],[-15.364,-72.812]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":66,"s":[{"i":[[0,0],[9.367,1.471],[5.102,1.881],[2.21,1.547],[3.235,3.998],[2.217,6.092],[-0.221,8.065]],"o":[[0,0],[-6.77,-1.063],[-5.285,-1.949],[-5.245,-3.672],[-3.123,-3.86],[-1.091,-2.998],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[13.594,-10.473],[0.243,-17.986],[-11.269,-30.519],[-19.544,-49.506],[-21.944,-70.411]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":67,"s":[{"i":[[0,0],[9.597,1.188],[5.102,1.881],[1.941,1.312],[3.586,3.654],[3.544,6.31],[1.048,7.521]],"o":[[0,0],[-6.797,-0.846],[-5.285,-1.949],[-6.348,-4.234],[-3.829,-3.836],[-1.499,-2.777],[0,0]],"v":[[44.106,-3.842],[29.693,-5.639],[13.235,-9.962],[-0.238,-17.041],[-12.669,-28.355],[-23.01,-46.014],[-29.371,-65.764]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":68,"s":[{"i":[[0,0],[9.826,0.905],[5.102,1.881],[1.673,1.077],[3.938,3.309],[4.871,6.528],[2.317,6.978]],"o":[[0,0],[-6.825,-0.628],[-5.285,-1.949],[-7.45,-4.796],[-4.535,-3.811],[-1.908,-2.557],[0,0]],"v":[[44.106,-3.842],[27.874,-5.574],[12.875,-9.451],[-0.72,-16.096],[-14.223,-26.667],[-27.89,-43.64],[-36.799,-61.116]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":69,"s":[{"i":[[0,0],[9.826,0.905],[5.102,1.881],[1.812,0.821],[3.938,3.309],[5.379,6.116],[3.435,5.563]],"o":[[0,0],[-6.825,-0.628],[-5.285,-1.949],[-6.91,-3.131],[-4.535,-3.811],[-1.667,-1.896],[0,0]],"v":[[44.106,-3.842],[27.874,-5.574],[11.532,-9.54],[-2.146,-15.633],[-16.524,-25.657],[-31.076,-40.502],[-43.171,-54.84]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":70,"s":[{"i":[[0,0],[9.826,0.905],[5.102,1.881],[1.863,0.697],[4.336,2.917],[6.419,4.464],[3.215,3.269]],"o":[[0,0],[-6.825,-0.628],[-5.285,-1.949],[-5.81,-2.174],[-4.915,-3.306],[-2.073,-1.441],[0,0]],"v":[[44.106,-3.842],[25.502,-5.592],[10.028,-9.314],[-3.971,-14.777],[-18.985,-24.332],[-34.75,-35.628],[-48.688,-46.738]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":71,"s":[{"i":[[0,0],[9.86,0.392],[5.697,0.992],[1.892,0.614],[4.752,1.604],[6.514,2.33],[9.545,2.526]],"o":[[0,0],[-5.642,-0.224],[-5.55,-0.967],[-7.468,-2.424],[-5.613,-1.895],[-2.377,-0.85],[0,0]],"v":[[44.106,-3.842],[24.789,-5.36],[7.727,-8.304],[-6.836,-12.269],[-22.51,-18.192],[-39.506,-23.568],[-57.444,-28.384]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":72,"s":[{"i":[[0,0],[9.86,0.392],[5.697,0.992],[1.975,0.24],[0,0],[5.974,0.665],[8.618,-0.327]],"o":[[0,0],[-5.642,-0.224],[-5.55,-0.967],[-9.691,-1.176],[0,0],[-2.509,-0.279],[0,0]],"v":[[44.106,-3.842],[24.789,-5.36],[7.091,-7.834],[-9.291,-11.734],[-24.121,-14.251],[-43.346,-17.589],[-59.817,-17.887]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":73,"s":[{"i":[[0,0],[9.86,0.392],[5.782,0.074],[1.975,0.24],[0,0],[4.957,-0.844],[7.84,-1.914]],"o":[[0,0],[-5.642,-0.224],[-2.077,-0.027],[-9.691,-1.176],[0,0],[-2.489,0.424],[0,0]],"v":[[44.106,-3.842],[24.153,-4.89],[5.183,-6.426],[-11.128,-9.297],[-25.964,-11.024],[-43.163,-10.551],[-59.74,-7.135]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":74,"s":[{"i":[[0,0],[9.86,0.392],[5.782,0.074],[1.987,-0.104],[0,0],[3.684,-1.163],[6.354,-4.06]],"o":[[0,0],[-5.642,-0.224],[-2.077,-0.027],[-8.091,0.423],[0,0],[-2.407,0.76],[0,0]],"v":[[44.106,-3.842],[19.963,-4.843],[4.149,-5.564],[-11.069,-6.688],[-25.209,-6.275],[-41.79,-3.9],[-59.105,2.911]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":75,"s":[{"i":[[0,0],[9.86,0.392],[5.782,0.074],[2.795,-0.214],[0,0],[3.228,-2.123],[3.59,-4.476]],"o":[[0,0],[-5.642,-0.224],[-3.076,-0.039],[-6.779,0.52],[0,0],[-2.226,1.464],[0,0]],"v":[[44.106,-3.842],[19.963,-4.843],[-0.517,-5.362],[-9.451,-5.05],[-21.435,-3.558],[-39.775,1.492],[-56.889,12.968]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":76,"s":[{"i":[[0,0],[9.867,0.118],[5.769,-0.388],[3.099,-0.551],[0,0],[7.038,-4.149],[1.444,-2.99]],"o":[[0,0],[-5.327,-0.064],[-1.946,0.131],[-7.516,1.336],[0,0],[-2.295,1.353],[0,0]],"v":[[43.791,-4.002],[22.251,-4.272],[-0.927,-3.389],[-8.851,-2.272],[-25.186,1.078],[-40.703,9.153],[-53.156,21.219]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":77,"s":[{"i":[[0,0],[6.185,0.154],[6.231,-1.114],[2.191,-0.494],[0,0],[4.922,-6.616],[1.444,-2.99]],"o":[[0,0],[-5.88,-0.147],[-2.157,0.386],[-5.315,1.199],[0,0],[-1.59,2.137],[0,0]],"v":[[43.161,-4.323],[22.643,-3.874],[-1.73,-1.814],[-8.39,-0.448],[-18.315,2],[-41.946,16.655],[-49.418,28.679]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":78,"s":[{"i":[[0,0],[5.855,-0.689],[5.579,-1.521],[2.495,-0.921],[0,0],[5.374,-7.953],[0.975,-3.626]],"o":[[0,0],[-6.123,0.721],[-3.73,1.017],[-6.05,2.233],[0,0],[-4.988,7.381],[0,0]],"v":[[41.259,-3.705],[21.454,-3.488],[-1.504,-0.31],[-10.812,2.638],[-19.456,6.577],[-37.31,20.406],[-45.912,35.425]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":79,"s":[{"i":[[0,0],[5.111,-0.301],[5.61,-1.401],[2.859,-1.223],[0,0],[3.977,-7.098],[-0.254,-3.161]],"o":[[0,0],[-6.639,0.39],[-3.614,0.903],[-6.934,2.965],[0,0],[-1.302,2.324],[0,0]],"v":[[41.574,-3.545],[22.322,-3.244],[0.071,0.493],[-9.701,3.801],[-20.984,9.965],[-35.123,23.901],[-41.282,39.967]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":80,"s":[{"i":[[0,0],[5.759,-1.009],[5.389,-2.096],[2.87,-1.591],[0,0],[2.962,-7.334],[-0.254,-3.161]],"o":[[0,0],[-6.527,1.144],[-4.15,1.614],[-6.961,3.858],[0,0],[-3.656,9.052],[0,0]],"v":[[40.706,-3.788],[23.666,-3.155],[2.668,2.014],[-7.849,6.914],[-18.09,14.019],[-30.19,30.184],[-33.276,47.617]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":81,"s":[{"i":[[0,0],[5.753,-1.042],[5.389,-2.096],[2.717,-1.477],[0,0],[2.996,-7.32],[-0.66,-7.038]],"o":[[0,0],[-6.433,1.165],[-4.15,1.614],[-6.589,3.583],[0,0],[-3.091,7.554],[0,0]],"v":[[40.546,-3.473],[23.82,-2.679],[3.851,2.419],[-6.404,7.125],[-15.635,13.484],[-27.818,30.202],[-30.845,50.245]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":82,"s":[{"i":[[0,0],[5.699,-0.982],[5.389,-2.096],[2.631,-1.545],[0,0],[2.241,-7.585],[-1.052,-7.437]],"o":[[0,0],[-6.36,1.096],[-4.15,1.614],[-6.382,3.747],[0,0],[-3.558,12.04],[0,0]],"v":[[40.231,-3.634],[22.946,-2.133],[4.166,2.579],[-5.943,7.401],[-14.613,14.203],[-26.802,31.712],[-28.414,52.872]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":83,"s":[{"i":[[0,0],[0,0],[5.389,-2.096],[2.649,-1.392],[0,0],[2.241,-7.585],[-1.052,-7.437]],"o":[[0,0],[0,0],[-4.15,1.614],[-6.425,3.376],[0,0],[-3.558,12.04],[0,0]],"v":[[40.231,-3.634],[23.576,-1.812],[4.315,3.845],[-5.826,8.406],[-16.206,15.772],[-26.011,31.718],[-27.475,54.144]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":84,"s":[{"i":[[0,0],[0,0],[5.389,-2.096],[3.026,-1.99],[0,0],[3.396,-6.608],[-1.052,-7.437]],"o":[[0,0],[0,0],[-4.15,1.614],[-7.339,4.827],[0,0],[-4.203,8.178],[0,0]],"v":[[40.385,-3.158],[23.808,-1.098],[4.315,3.845],[-6.468,9.427],[-17.734,19.16],[-24.258,29.834],[-26.613,55.178]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":85,"s":[{"i":[[0,0],[0,0],[5.389,-2.096],[2.554,-1.393],[0,0],[3.122,-6.742],[-0.808,-8.304]],"o":[[0,0],[0,0],[-4.15,1.614],[-6.194,3.378],[0,0],[-5.576,12.041],[0,0]],"v":[[40.462,-2.921],[24.046,-1.176],[6.133,3.78],[-3.844,8.342],[-12.003,14.144],[-22.825,28.58],[-26.536,55.416]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":86,"s":[{"i":[[0,0],[0,0],[5.34,-2.218],[2.039,-1.282],[0,0],[3.979,-6.275],[-1.599,-8.31]],"o":[[0,0],[0,0],[-2.091,0.868],[-4.944,3.109],[0,0],[-5.231,8.249],[0,0]],"v":[[40.385,-3.158],[23.969,-1.413],[4.63,4.006],[-1.679,7.369],[-10.737,13.995],[-22.51,28.74],[-26.696,55.731]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":87,"s":[{"i":[[0,0],[0,0],[5.34,-2.218],[2.039,-1.282],[0,0],[3.979,-6.275],[-1.599,-8.31]],"o":[[0,0],[0,0],[-2.091,0.868],[-4.944,3.109],[0,0],[-5.231,8.249],[0,0]],"v":[[40.385,-3.158],[23.969,-1.413],[4.63,4.006],[-1.679,7.369],[-10.737,13.995],[-22.51,28.74],[-26.696,55.731]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":88,"s":[{"i":[[0,0],[0,0],[5.34,-2.218],[2.039,-1.282],[0,0],[3.979,-6.275],[-1.599,-8.31]],"o":[[0,0],[0,0],[-2.091,0.868],[-4.944,3.109],[0,0],[-5.231,8.249],[0,0]],"v":[[40.385,-3.158],[23.969,-1.413],[4.63,4.006],[-1.679,7.369],[-10.737,13.995],[-22.51,28.74],[-26.696,55.731]],"c":false}]},{"t":89,"s":[{"i":[[0,0],[0,0],[5.34,-2.218],[2.039,-1.282],[0,0],[3.979,-6.275],[-1.599,-8.31]],"o":[[0,0],[0,0],[-2.091,0.868],[-4.944,3.109],[0,0],[-5.231,8.249],[0,0]],"v":[[40.385,-3.158],[23.969,-1.413],[4.63,4.006],[-1.679,7.369],[-10.737,13.995],[-22.51,28.74],[-26.696,55.731]],"c":false}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.988235353956,0.333333333333,0.20000001496,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":11.339,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[54.554,31.992],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"code","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[27,49,0],"ix":2},"a":{"a":0,"k":[27.25,24.75,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-6.448,9.732],[2.932,-11.239],[6.361,-9.733],[-3.019,11.239]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[13.189,-0.021],[7.773,-6.343],[10.621,-8.728],[18.084,-0.021],[10.621,8.666],[7.773,6.281]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-13.189,-0.021],[-7.773,-6.343],[-10.621,-8.728],[-18.084,-0.021],[-10.621,8.666],[-7.773,6.281]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0.791999966491,0.816000007181,0.851000019148,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":45,"s":[0.470588237047,0.509803950787,0.556862771511,1]},{"t":90,"s":[0.791999966491,0.816000007181,0.851000019148,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[27.24,30.425],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":7,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-24,-17],[24,-17],[24,17],[-24,17]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.972999961703,0.976000019148,0.984000052658,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[27.25,29.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.524,0],[0,0],[0,1.511],[0,0],[-1.524,0],[0,0],[0,-1.51]],"o":[[0,1.511],[0,0],[-1.524,0],[0,0],[0,-1.51],[0,0],[1.524,0],[0,0]],"v":[[27,21.757],[24.232,24.5],[-24.232,24.5],[-27,21.757],[-27,-21.757],[-24.232,-24.5],[24.232,-24.5],[27,-21.757]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.894000004787,0.913999968884,0.941000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[27.25,24.75],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":4,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"web","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[120,118.5,0],"ix":2},"a":{"a":0,"k":[120.25,76.533,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.485,1.151],[2.459,0.194],[1.574,-0.339],[-0.235,-1.187],[-1.513,0.218],[-0.461,0.06],[0.36,-0.957],[1.261,-0.524],[1.88,-0.079],[-1.224,9.141],[-0.273,0.662],[0.349,0.917],[-0.133,-0.023],[0,0],[-0.932,0.428],[-1.098,0.078],[-0.868,0.751],[-0.028,-0.128],[0,0],[-0.708,-0.038],[-0.544,0.428],[1.902,0.984],[4.662,-4.301],[-5.306,-5.135],[-2.884,-0.305],[-0.113,-0.012],[-0.059,-0.006],[-0.399,-0.005],[-0.089,0.004],[-0.808,0.158],[-2.227,3.352],[-0.304,1.001]],"o":[[-0.69,-1.639],[-2.147,-0.169],[-2.449,0.338],[0.288,1.453],[0.634,-0.092],[2.624,-0.339],[-0.699,1.863],[-1.341,0.556],[-0.001,0],[0.117,-0.869],[0.374,-0.908],[-0.047,-0.123],[0,0],[1.017,0.169],[1.06,-0.487],[1.161,-0.082],[0.1,-0.087],[0,0],[0.177,0.775],[0.777,0.042],[1.732,-1.363],[-5.147,-2.663],[-5.217,5.26],[2.206,2.135],[0.112,0.014],[0.059,0.007],[0.39,0.037],[0.089,-0.003],[0.816,-0.011],[4.165,-0.72],[0.594,-0.893],[0.362,-1.192]],"v":[[13.642,0.702],[9.154,-2.539],[3.032,-2.031],[0.118,0.848],[4.184,1.982],[7.054,1.524],[9.503,3.725],[5.656,7.449],[0.623,8.589],[-7.288,0.339],[-6.694,-1.951],[-6.993,-5.291],[-6.799,-5.516],[-6.709,-5.501],[-3.374,-5.419],[-0.062,-6.21],[3.24,-8.174],[3.528,-8.083],[3.685,-7.357],[5.543,-5.522],[7.681,-6.103],[7.195,-11.004],[-8.843,-8.705],[-8.843,9.913],[-0.966,13.544],[-0.626,13.577],[-0.449,13.596],[0.733,13.667],[0.999,13.654],[3.438,13.4],[12.462,7.191],[13.787,4.327]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[119.625,50.992],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[1.673,2.628],[1.673,-5.164],[-4.787,2.628]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0.624],[0,0],[-0.414,0.505],[0,0],[-0.845,0],[0,0],[0,-0.624],[0,0],[0,0],[0,-0.623],[0,0],[0.623,0],[0,0],[0,0],[0.623,0],[0,0],[0,0.624]],"o":[[0,0],[-0.623,0],[0,0],[0,-0.652],[0,0],[0.536,-0.654],[0,0],[0.623,0],[0,0],[0,0],[0.623,0],[0,0],[0,0.624],[0,0],[0,0],[0,0.624],[0,0],[-0.623,0],[0,0]],"v":[[1.673,7.969],[-9.427,7.969],[-10.556,6.84],[-10.556,3.316],[-9.915,1.526],[0.826,-11.567],[3.008,-12.6],[6.395,-12.6],[7.524,-11.471],[7.524,2.628],[9.427,2.628],[10.556,3.757],[10.556,6.84],[9.427,7.969],[7.524,7.969],[7.524,11.471],[6.395,12.6],[2.802,12.6],[1.673,11.471]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[147.694,51.533],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":6,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[1.673,2.628],[1.673,-5.164],[-4.787,2.628]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0.624],[0,0],[-0.414,0.505],[0,0],[-0.845,0],[0,0],[0,-0.624],[0,0],[0,0],[0,-0.623],[0,0],[0.624,0],[0,0],[0,0],[0.624,0],[0,0],[0,0.624]],"o":[[0,0],[-0.623,0],[0,0],[0,-0.652],[0,0],[0.536,-0.654],[0,0],[0.624,0],[0,0],[0,0],[0.624,0],[0,0],[0,0.624],[0,0],[0,0],[0,0.624],[0,0],[-0.624,0],[0,0]],"v":[[1.673,7.969],[-9.427,7.969],[-10.556,6.84],[-10.556,3.316],[-9.915,1.526],[0.826,-11.567],[3.008,-12.6],[6.394,-12.6],[7.523,-11.471],[7.523,2.628],[9.426,2.628],[10.556,3.757],[10.556,6.84],[9.426,7.969],[7.523,7.969],[7.523,11.471],[6.394,12.6],[2.802,12.6],[1.673,11.471]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[92.805,51.533],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":6,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.434,0],[0,0],[0,-1.471],[0,0],[0,0],[0,0]],"o":[[0,0],[-1.435,0],[0,0],[0,0],[0,0],[0,-1.471]],"v":[[13.684,-3.833],[-13.652,-3.833],[-16.301,-1.173],[-16.301,3.833],[16.301,3.833],[16.301,-1.173]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.62400004069,0.654999976065,0.702000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[120.25,147.7],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 4","np":4,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[2.557,0],[0,0],[0,-2.566],[0,0],[-2.555,0],[0,0],[0,2.566]],"o":[[0,-2.566],[0,0],[-2.555,0],[0,0],[0,2.566],[0,0],[2.557,0],[0,0]],"v":[[120,-1.33],[115.324,-6.023],[-115.325,-6.023],[-120,-1.33],[-120,1.329],[-115.325,6.023],[115.324,6.023],[120,1.329]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[120.25,145.511],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 5","np":4,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[83.561,-1.573],[-83.561,-1.573],[-83.561,1.573],[83.561,1.573]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.898000021542,0.910000011968,0.925,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[129.874,99.865],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 6","np":4,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[83.561,-1.573],[-83.561,-1.573],[-83.561,1.573],[83.561,1.573]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[129.874,85.499],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 7","np":4,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[14.784,-1.573],[-14.784,-1.573],[-14.784,1.573],[14.784,1.573]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.438999998803,0.477999997606,0.528999956916,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[61.472,128.247],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 8","np":4,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[33.769,-1.573],[-33.77,-1.573],[-33.77,1.573],[33.769,1.573]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.438999998803,0.477999997606,0.528999956916,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[116.289,128.247],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 9","np":4,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.811,-1.573],[-16.81,-1.573],[-16.81,1.573],[16.811,1.573]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.898000021542,0.910000011968,0.925,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[63.159,113.887],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 10","np":4,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-120,120],[120,120],[120,-120],[-120,-120]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-120,-120],[120,-120],[120,120],[-120,120]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-34.109,63.927],[92.323,63.927],[92.323,60.781],[-34.109,60.781]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.62400004069,0.654999976065,0.702000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[120.25,51.533],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 11","np":5,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.325,20.134],[-2.325,20.134],[-2.325,23.618],[2.325,23.618]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.325,5.55],[-2.325,5.55],[-2.325,9.034],[2.325,9.034]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.325,-9.034],[-2.325,-9.034],[-2.325,-5.55],[2.325,-5.55]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[2.325,-23.618],[-2.325,-23.618],[-2.325,-20.134],[2.325,-20.134]],"c":true},"ix":2},"nm":"路径 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.62400004069,0.654999976065,0.702000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[38.723,107.316],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 12","np":8,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.723,0],[0,0],[0,-2.723],[0,0],[-2.723,0],[0,0],[0,2.723],[0,0]],"o":[[0,0],[-2.723,0],[0,0],[0,2.723],[0,0],[2.723,0],[0,0],[0,-2.723]],"v":[[96.07,-58.5],[-96.07,-58.5],[-101,-53.57],[-101,53.57],[-96.07,58.5],[96.07,58.5],[101,53.57],[101,-53.57]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[120.25,81.033],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 13","np":4,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.325,0],[0,-1.325],[1.326,0],[0,1.326]],"o":[[1.326,0],[0,1.326],[-1.325,0],[0,-1.325]],"v":[[0,-2.4],[2.4,0],[0,2.4],[-2.4,0]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.054999998504,0.689999988032,0.481999984442,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[42.05,12.333],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 14","np":4,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.325,0],[0,-1.325],[1.326,0],[0,1.326]],"o":[[1.326,0],[0,1.326],[-1.325,0],[0,-1.325]],"v":[[0,-2.4],[2.4,0],[0,2.4],[-2.4,0]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.62400004069,0.654999976065,0.702000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[34.05,12.333],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 15","np":4,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.325,0],[0,-1.325],[1.326,0],[0,1.326]],"o":[[1.326,0],[0,1.326],[-1.325,0],[0,-1.325]],"v":[[0,-2.4],[2.4,0],[0,2.4],[-2.4,0]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.33300000359,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[26.05,12.333],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 16","np":4,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.569,-0.572],[0,-0.865],[0,0],[0.572,-0.573],[0.858,0],[0,0],[0.57,0.573],[0,0.864],[0,0],[-0.571,0.573],[-0.858,0]],"o":[[0.858,0],[0.572,0.573],[0,0],[0,0.864],[-0.569,0.573],[0,0],[-0.858,0],[-0.571,-0.573],[0,0],[0,-0.865],[0.57,-0.572],[0,0]],"v":[[99.693,-73.467],[101.903,-72.533],[102.836,-70.306],[102.836,70.307],[101.903,72.533],[99.693,73.467],[-99.694,73.467],[-101.904,72.533],[-102.836,70.307],[-102.836,-70.306],[-101.904,-72.533],[-99.694,-73.467]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":3.066,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[120.266,76.533],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.569,-0.572],[0,-0.865],[0,0],[0.572,-0.573],[0.858,0],[0,0],[0.57,0.573],[0,0.864],[0,0],[-0.571,0.573],[-0.858,0]],"o":[[0.858,0],[0.572,0.573],[0,0],[0,0.864],[-0.569,0.573],[0,0],[-0.858,0],[-0.571,-0.573],[0,0],[0,-0.865],[0.57,-0.572],[0,0]],"v":[[99.693,-73.467],[101.903,-72.533],[102.836,-70.306],[102.836,70.307],[101.903,72.533],[99.693,73.467],[-99.694,73.467],[-101.904,72.533],[-102.836,70.307],[-102.836,-70.306],[-101.904,-72.533],[-99.694,-73.467]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.972999961703,0.976000019148,0.984000052658,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[120.266,76.533],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 18","np":4,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":0,"nm":"data","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[244,98.5,0],"ix":2},"a":{"a":0,"k":[120,120,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":240,"h":240,"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"line","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[115.5,150.107,0],"ix":2},"a":{"a":0,"k":[100.5,77.107,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[0.623529411765,0.654901960784,0.701960784314,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.967,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988234994926,0.333332974303,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[0.001,-1.411],[2.829,-4.234],[4.243,-2.823],[1.415,-0.001],[4.243,2.821],[2.829,4.233],[0.001,1.41],[-2.829,4.233],[-4.243,2.821],[-1.415,-0.001],[-4.243,-2.823],[-2.829,-4.234]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[55.071,146.054],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[120,120],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":20,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":46,"s":[-2880]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":47,"s":[0]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":68,"s":[0]},{"t":90,"s":[2520]}],"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 10","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.418,0],[0,-4.408],[4.418,0],[0,4.409]],"o":[[4.418,0],[0,4.409],[-4.418,0],[0,-4.408]],"v":[[0,-7.982],[8,-0.001],[0,7.982],[-8,-0.001]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.623529434204,0.654901981354,0.701960802078,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[55,145.982],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[120,120],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 11","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[35.694,25.523],[17.884,25.523]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[59.598,25.523],[53.121,25.523]],"c":false},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[2.209,0],[0,0],[0,0]],"o":[[0,0],[0,2.209],[0,0],[0,0],[0,0]],"v":[[91.026,-30.769],[91.026,21.523],[87.026,25.523],[83.022,25.523],[68.309,25.523]],"c":false},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[47.755,25.523],[41.34,25.523]],"c":false},"ix":2},"nm":"路径 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,2.209],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[-2.209,0],[0,0],[0,0]],"v":[[13.37,25.523],[-8.746,25.523],[-14.237,30.769],[-21.654,21.59],[-26.053,25.523],[-87.026,25.523],[-91.026,21.523],[-91.026,0.424]],"c":false},"ix":2},"nm":"路径 5","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"st","c":{"a":0,"k":[0.623529434204,0.654901981354,0.701960802078,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1.967,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[105.091,120.55],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 12","np":7,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/src/components/Animation/data/error-503.json b/src/components/Animation/data/error-503.json new file mode 100644 index 0000000..d40c9e5 --- /dev/null +++ b/src/components/Animation/data/error-503.json @@ -0,0 +1 @@ +{"v":"5.6.5","fr":30,"ip":0,"op":180,"w":240,"h":240,"nm":"503","ddd":0,"assets":[{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":4,"nm":"形状图层 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[120,150,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"“tail”轮廓 2","sr":1,"ks":{"o":{"a":0,"k":90,"ix":11},"r":{"a":0,"k":-72,"ix":10},"p":{"a":0,"k":[81.144,218.686,0],"ix":2},"a":{"a":0,"k":[54.554,31.992,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[0.988235353956,0.333333333333,0.20000001496,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":11.339,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988234994926,0.333332974303,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 4","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[0.988235353956,0.333333333333,0.20000001496,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":11.339,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988234994926,0.333332974303,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 3","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[0.988235353956,0.333333333333,0.20000001496,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":11.339,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.988234994926,0.333332974303,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 2","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[0.988235353956,0.333333333333,0.20000001496,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":11.339,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[{"i":[[0,0],[0,0],[5.34,-2.218],[2.039,-1.282],[0,0],[3.979,-6.275],[-1.599,-8.31]],"o":[[0,0],[0,0],[-2.091,0.868],[-4.944,3.109],[0,0],[-5.231,8.249],[0,0]],"v":[[40.385,-3.158],[23.969,-1.413],[4.63,4.006],[-1.679,7.369],[-10.737,13.995],[-22.51,28.74],[-26.696,55.731]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":1,"s":[{"i":[[0,0],[0,0],[5.34,-2.218],[2.039,-1.282],[0,0],[3.979,-6.275],[-1.599,-8.31]],"o":[[0,0],[0,0],[-2.091,0.868],[-4.944,3.109],[0,0],[-5.231,8.249],[0,0]],"v":[[40.385,-3.158],[23.969,-1.413],[4.63,4.006],[-1.679,7.369],[-10.737,13.995],[-22.51,28.74],[-26.696,55.731]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":2,"s":[{"i":[[0,0],[0,0],[5.34,-2.218],[2.039,-1.282],[0,0],[3.979,-6.275],[-1.599,-8.31]],"o":[[0,0],[0,0],[-2.091,0.868],[-4.944,3.109],[0,0],[-5.231,8.249],[0,0]],"v":[[40.385,-3.158],[23.969,-1.413],[4.63,4.006],[-1.679,7.369],[-10.737,13.995],[-22.51,28.74],[-26.696,55.731]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":3,"s":[{"i":[[0,0],[0,0],[5.34,-2.218],[2.039,-1.282],[0,0],[3.979,-6.275],[-1.599,-8.31]],"o":[[0,0],[0,0],[-2.091,0.868],[-4.944,3.109],[0,0],[-5.231,8.249],[0,0]],"v":[[40.385,-3.158],[23.969,-1.413],[4.63,4.006],[-1.679,7.369],[-10.737,13.995],[-22.51,28.74],[-26.696,55.731]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":4,"s":[{"i":[[0,0],[0,0],[5.389,-2.096],[2.554,-1.393],[0,0],[3.122,-6.742],[-0.808,-8.304]],"o":[[0,0],[0,0],[-4.15,1.614],[-6.194,3.378],[0,0],[-5.576,12.041],[0,0]],"v":[[40.462,-2.921],[24.046,-1.176],[6.133,3.78],[-3.844,8.342],[-12.003,14.144],[-22.825,28.58],[-26.536,55.416]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":5,"s":[{"i":[[0,0],[0,0],[5.389,-2.096],[3.026,-1.99],[0,0],[3.396,-6.608],[-1.052,-7.437]],"o":[[0,0],[0,0],[-4.15,1.614],[-7.339,4.827],[0,0],[-4.203,8.178],[0,0]],"v":[[40.385,-3.158],[23.808,-1.098],[4.315,3.845],[-6.468,9.427],[-17.734,19.16],[-24.258,29.834],[-26.613,55.178]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":6,"s":[{"i":[[0,0],[0,0],[5.389,-2.096],[2.649,-1.392],[0,0],[2.241,-7.585],[-1.052,-7.437]],"o":[[0,0],[0,0],[-4.15,1.614],[-6.425,3.376],[0,0],[-3.558,12.04],[0,0]],"v":[[40.231,-3.634],[23.576,-1.812],[4.315,3.845],[-5.826,8.406],[-16.206,15.772],[-26.011,31.718],[-27.475,54.144]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":7,"s":[{"i":[[0,0],[5.699,-0.982],[5.389,-2.096],[2.631,-1.545],[0,0],[2.241,-7.585],[-1.052,-7.437]],"o":[[0,0],[-6.36,1.096],[-4.15,1.614],[-6.382,3.747],[0,0],[-3.558,12.04],[0,0]],"v":[[40.231,-3.634],[22.946,-2.133],[4.166,2.579],[-5.943,7.401],[-14.613,14.203],[-26.802,31.712],[-28.414,52.872]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":8,"s":[{"i":[[0,0],[5.753,-1.042],[5.389,-2.096],[2.717,-1.477],[0,0],[2.996,-7.32],[-0.66,-7.038]],"o":[[0,0],[-6.433,1.165],[-4.15,1.614],[-6.589,3.583],[0,0],[-3.091,7.554],[0,0]],"v":[[40.546,-3.473],[23.82,-2.679],[3.851,2.419],[-6.404,7.125],[-15.635,13.484],[-27.818,30.202],[-30.845,50.245]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":9,"s":[{"i":[[0,0],[5.759,-1.009],[5.389,-2.096],[2.87,-1.591],[0,0],[2.962,-7.334],[-0.254,-3.161]],"o":[[0,0],[-6.527,1.144],[-4.15,1.614],[-6.961,3.858],[0,0],[-3.656,9.052],[0,0]],"v":[[40.706,-3.788],[23.666,-3.155],[2.668,2.014],[-7.849,6.914],[-18.09,14.019],[-30.19,30.184],[-33.276,47.617]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10,"s":[{"i":[[0,0],[5.111,-0.301],[5.61,-1.401],[2.859,-1.223],[0,0],[3.977,-7.098],[-0.254,-3.161]],"o":[[0,0],[-6.639,0.39],[-3.614,0.903],[-6.934,2.965],[0,0],[-1.302,2.324],[0,0]],"v":[[41.574,-3.545],[22.322,-3.244],[0.071,0.493],[-9.701,3.801],[-20.984,9.965],[-35.123,23.901],[-41.282,39.967]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":11,"s":[{"i":[[0,0],[5.855,-0.689],[5.579,-1.521],[2.495,-0.921],[0,0],[5.374,-7.953],[0.975,-3.626]],"o":[[0,0],[-6.123,0.721],[-3.73,1.017],[-6.05,2.233],[0,0],[-4.988,7.381],[0,0]],"v":[[41.259,-3.705],[21.454,-3.488],[-1.504,-0.31],[-10.812,2.638],[-19.456,6.577],[-37.31,20.406],[-45.912,35.425]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":12,"s":[{"i":[[0,0],[6.185,0.154],[6.231,-1.114],[2.191,-0.494],[0,0],[4.922,-6.616],[1.444,-2.99]],"o":[[0,0],[-5.88,-0.147],[-2.157,0.386],[-5.315,1.199],[0,0],[-1.59,2.137],[0,0]],"v":[[43.161,-4.323],[22.643,-3.874],[-1.73,-1.814],[-8.39,-0.448],[-18.315,2],[-41.946,16.655],[-49.418,28.679]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":13,"s":[{"i":[[0,0],[9.867,0.118],[5.769,-0.388],[3.099,-0.551],[0,0],[7.038,-4.149],[1.444,-2.99]],"o":[[0,0],[-5.327,-0.064],[-1.946,0.131],[-7.516,1.336],[0,0],[-2.295,1.353],[0,0]],"v":[[43.791,-4.002],[22.251,-4.272],[-0.927,-3.389],[-8.851,-2.272],[-25.186,1.078],[-40.703,9.153],[-53.156,21.219]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":14,"s":[{"i":[[0,0],[9.86,0.392],[5.782,0.074],[2.795,-0.214],[0,0],[3.228,-2.123],[3.59,-4.476]],"o":[[0,0],[-5.642,-0.224],[-3.076,-0.039],[-6.779,0.52],[0,0],[-2.226,1.464],[0,0]],"v":[[44.106,-3.842],[19.963,-4.843],[-0.517,-5.362],[-9.451,-5.05],[-21.435,-3.558],[-39.775,1.492],[-56.889,12.968]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":15,"s":[{"i":[[0,0],[9.86,0.392],[5.782,0.074],[1.987,-0.104],[0,0],[3.684,-1.163],[6.354,-4.06]],"o":[[0,0],[-5.642,-0.224],[-2.077,-0.027],[-8.091,0.423],[0,0],[-2.407,0.76],[0,0]],"v":[[44.106,-3.842],[19.963,-4.843],[4.149,-5.564],[-11.069,-6.688],[-25.209,-6.275],[-41.79,-3.9],[-59.105,2.911]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":16,"s":[{"i":[[0,0],[9.86,0.392],[5.782,0.074],[1.975,0.24],[0,0],[4.957,-0.844],[7.84,-1.914]],"o":[[0,0],[-5.642,-0.224],[-2.077,-0.027],[-9.691,-1.176],[0,0],[-2.489,0.424],[0,0]],"v":[[44.106,-3.842],[24.153,-4.89],[5.183,-6.426],[-11.128,-9.297],[-25.964,-11.024],[-43.163,-10.551],[-59.74,-7.135]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":17,"s":[{"i":[[0,0],[9.86,0.392],[5.697,0.992],[1.975,0.24],[0,0],[5.974,0.665],[8.618,-0.327]],"o":[[0,0],[-5.642,-0.224],[-5.55,-0.967],[-9.691,-1.176],[0,0],[-2.509,-0.279],[0,0]],"v":[[44.106,-3.842],[24.789,-5.36],[7.091,-7.834],[-9.291,-11.734],[-24.121,-14.251],[-43.346,-17.589],[-59.817,-17.887]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":18,"s":[{"i":[[0,0],[9.86,0.392],[5.697,0.992],[1.892,0.614],[4.752,1.604],[6.514,2.33],[9.545,2.526]],"o":[[0,0],[-5.642,-0.224],[-5.55,-0.967],[-7.468,-2.424],[-5.613,-1.895],[-2.377,-0.85],[0,0]],"v":[[44.106,-3.842],[24.789,-5.36],[7.727,-8.304],[-6.836,-12.269],[-22.51,-18.192],[-39.506,-23.568],[-57.444,-28.384]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":19,"s":[{"i":[[0,0],[9.826,0.905],[5.102,1.881],[1.863,0.697],[4.336,2.917],[6.419,4.464],[3.215,3.269]],"o":[[0,0],[-6.825,-0.628],[-5.285,-1.949],[-5.81,-2.174],[-4.915,-3.306],[-2.073,-1.441],[0,0]],"v":[[44.106,-3.842],[25.502,-5.592],[10.028,-9.314],[-3.971,-14.777],[-18.985,-24.332],[-34.75,-35.628],[-48.688,-46.738]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":20,"s":[{"i":[[0,0],[9.826,0.905],[5.102,1.881],[1.812,0.821],[3.938,3.309],[5.379,6.116],[3.435,5.563]],"o":[[0,0],[-6.825,-0.628],[-5.285,-1.949],[-6.91,-3.131],[-4.535,-3.811],[-1.667,-1.896],[0,0]],"v":[[44.106,-3.842],[27.874,-5.574],[11.532,-9.54],[-2.146,-15.633],[-16.524,-25.657],[-31.076,-40.502],[-43.171,-54.84]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":21,"s":[{"i":[[0,0],[9.826,0.905],[5.102,1.881],[1.673,1.077],[3.938,3.309],[4.871,6.528],[2.317,6.978]],"o":[[0,0],[-6.825,-0.628],[-5.285,-1.949],[-7.45,-4.796],[-4.535,-3.811],[-1.908,-2.557],[0,0]],"v":[[44.106,-3.842],[27.874,-5.574],[12.875,-9.451],[-0.72,-16.096],[-14.223,-26.667],[-27.89,-43.64],[-36.799,-61.116]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":22,"s":[{"i":[[0,0],[9.597,1.188],[5.102,1.881],[1.941,1.312],[3.586,3.654],[3.544,6.31],[1.048,7.521]],"o":[[0,0],[-6.797,-0.846],[-5.285,-1.949],[-6.348,-4.234],[-3.829,-3.836],[-1.499,-2.777],[0,0]],"v":[[44.106,-3.842],[29.693,-5.639],[13.235,-9.962],[-0.238,-17.041],[-12.669,-28.355],[-23.01,-46.014],[-29.371,-65.764]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":23,"s":[{"i":[[0,0],[9.367,1.471],[5.102,1.881],[2.21,1.547],[3.235,3.998],[2.217,6.092],[-0.221,8.065]],"o":[[0,0],[-6.77,-1.063],[-5.285,-1.949],[-5.245,-3.672],[-3.123,-3.86],[-1.091,-2.998],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[13.594,-10.473],[0.243,-17.986],[-11.269,-30.519],[-19.544,-49.506],[-21.944,-70.411]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":24,"s":[{"i":[[0,0],[9.367,1.471],[5.102,1.881],[2.21,1.547],[2.375,4.562],[1.2,4.582],[-2.105,6.312]],"o":[[0,0],[-6.77,-1.063],[-5.285,-1.949],[-5.245,-3.672],[-2.874,-5.518],[-0.808,-3.086],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[13.755,-10.788],[1.432,-18.372],[-10.145,-32.724],[-15.746,-49.952],[-15.364,-72.812]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":25,"s":[{"i":[[0,0],[9.367,1.471],[5.102,1.881],[2.773,2.397],[2.375,4.562],[0.493,4.023],[-3.93,7.167]],"o":[[0,0],[-6.77,-1.063],[-5.285,-1.949],[-4.844,-4.188],[-2.874,-5.518],[-0.388,-3.167],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[13.992,-10.865],[2.383,-18.681],[-8.32,-33.58],[-12.103,-50.873],[-7.601,-74.809]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":26,"s":[{"i":[[0,0],[9.367,1.471],[4.802,2.551],[2.773,2.397],[2.02,4.73],[0.332,4.338],[-7.49,7.536]],"o":[[0,0],[-6.77,-1.063],[-5.692,-3.023],[-4.844,-4.188],[-2.321,-5.435],[-0.244,-3.181],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[14.153,-11.18],[2.782,-19.074],[-6.733,-34.358],[-9.095,-51.324],[0.709,-75.932]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":27,"s":[{"i":[[0,0],[9.367,1.471],[4.802,2.551],[2.773,2.397],[2.02,4.73],[-0.375,3.78],[-9.065,6.733]],"o":[[0,0],[-6.77,-1.063],[-5.692,-3.023],[-4.844,-4.188],[-2.321,-5.435],[0.315,-3.175],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[14.313,-11.495],[3.97,-19.46],[-5.069,-34.899],[-6.254,-50.67],[6.789,-75.016]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":28,"s":[{"i":[[0,0],[9.364,1.866],[4.802,2.551],[2.236,2.904],[1.828,4.807],[-1.197,3.604],[-13.791,4.326]],"o":[[0,0],[-6.814,-1.358],[-5.692,-3.023],[-4.282,-5.562],[-2.006,-5.275],[1.183,-3.561],[0,0]],"v":[[45.173,-3.794],[31.987,-5.859],[17.277,-11.275],[5.991,-20.117],[-1.033,-35.422],[-0.874,-51.104],[20.449,-72.619]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":29,"s":[{"i":[[0,0],[9.364,1.866],[4.802,2.551],[2.236,2.904],[1.614,4.883],[-1.197,3.604],[-14.724,2.263]],"o":[[0,0],[-6.814,-1.358],[-5.692,-3.023],[-4.282,-5.562],[-1.691,-5.114],[1.183,-3.561],[0,0]],"v":[[45.648,-3.949],[31.987,-5.859],[18.382,-11.109],[6.942,-20.426],[0.156,-35.808],[2.062,-52.583],[25.81,-70.681]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":30,"s":[{"i":[[0,0],[9.364,1.866],[4.802,2.551],[1.855,3.161],[0.955,5.054],[-1.635,3.137],[-13.594,-0.733]],"o":[[0,0],[-6.814,-1.358],[-5.692,-3.023],[-4.074,-6.944],[-1.055,-5.584],[1.734,-3.328],[0,0]],"v":[[45.648,-3.949],[31.987,-5.859],[18.382,-11.109],[7.495,-20.342],[1.113,-36.908],[4.434,-52.565],[30.131,-67.091]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":31,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[0.033,5.143],[-1.635,3.137],[-12.631,-2.623]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[-0.068,-10.636],[1.734,-3.328],[0,0]],"v":[[45.648,-3.949],[31.987,-5.859],[18.067,-11.269],[8.131,-20.812],[2.141,-36.979],[6.734,-53.576],[33.751,-64.85]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":32,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.157,5.141],[-2.454,2.548],[-12.369,-5.862]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.223,-7.313],[3.715,-3.858],[0,0]],"v":[[45.648,-3.949],[32.148,-6.174],[18.311,-12.137],[8.607,-20.966],[3.33,-37.365],[8.63,-53.403],[37.911,-60.944]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":33,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.157,5.141],[-2.454,2.548],[-11.329,-7.515]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.223,-7.313],[3.715,-3.858],[0,0]],"v":[[45.648,-3.949],[32.778,-5.853],[19.018,-11.578],[9.082,-21.121],[4.358,-37.437],[11.798,-54.17],[39.629,-58.085]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":34,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.157,5.141],[-3.707,2.342],[-11.876,-8.388]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.223,-7.313],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.253,-6.007],[19.256,-11.656],[9.635,-21.038],[4.751,-37.038],[14.574,-55.335],[41.661,-55.065]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":35,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.157,5.141],[-3.707,2.342],[-9.718,-11.455]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.223,-7.313],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.253,-6.007],[19.809,-11.572],[9.95,-20.877],[5.618,-36.795],[15.918,-55.245],[42.981,-51.814]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":36,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-9.718,-11.455]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.253,-6.007],[19.809,-11.572],[10.503,-20.794],[5.618,-36.795],[16.227,-54.294],[43.599,-49.912]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":37,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-8.755,-13.346]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.992,-11.168],[11.216,-21.026],[7.122,-37.02],[17.249,-53.575],[44.674,-45.792]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":38,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-6.995,-16.02]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.992,-11.168],[11.216,-21.026],[7.122,-37.02],[17.249,-53.575],[44.502,-43.896]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":39,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-6.995,-16.02]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.992,-11.168],[11.216,-21.026],[7.122,-37.02],[17.718,-52.939],[44.02,-42.951]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":40,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-5.408,-16.799]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.992,-11.168],[11.216,-21.026],[7.122,-37.02],[17.718,-52.939],[43.776,-42.083]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":41,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-2.799,-16.858]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.992,-11.168],[11.216,-21.026],[7.122,-37.02],[17.718,-52.939],[42.986,-42.089]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":42,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-1.307,-15.503]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.992,-11.168],[11.216,-21.026],[7.122,-37.02],[18.039,-53.569],[42.986,-42.089]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":43,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-2.496,-15.116]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.992,-11.168],[11.216,-21.026],[7.122,-37.02],[18.039,-53.569],[42.986,-42.089]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":46,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-2.496,-15.116]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.991,-11.168],[11.216,-21.026],[7.122,-37.02],[18.039,-53.569],[42.986,-42.089]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":47,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-1.307,-15.503]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.991,-11.168],[11.216,-21.026],[7.122,-37.02],[18.039,-53.569],[42.986,-42.089]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":48,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-2.799,-16.858]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.991,-11.168],[11.216,-21.026],[7.122,-37.02],[17.718,-52.939],[42.986,-42.089]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":49,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-5.408,-16.799]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.991,-11.168],[11.216,-21.026],[7.122,-37.02],[17.718,-52.939],[43.776,-42.083]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":50,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-6.995,-16.02]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.991,-11.168],[11.216,-21.026],[7.122,-37.02],[17.718,-52.939],[44.02,-42.951]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":51,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-6.995,-16.02]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.991,-11.168],[11.216,-21.026],[7.122,-37.02],[17.249,-53.575],[44.502,-43.896]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":52,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-8.755,-13.346]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.491,-6.085],[20.991,-11.168],[11.216,-21.026],[7.122,-37.02],[17.249,-53.575],[44.674,-45.792]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":53,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.221,5.138],[-3.707,2.342],[-9.718,-11.455]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.396,-9.209],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.253,-6.007],[19.809,-11.572],[10.503,-20.794],[5.618,-36.795],[16.227,-54.294],[43.599,-49.912]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":54,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.157,5.141],[-3.707,2.342],[-9.718,-11.455]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.223,-7.313],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.253,-6.007],[19.809,-11.572],[9.95,-20.877],[5.618,-36.795],[15.918,-55.245],[42.981,-51.814]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":55,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.157,5.141],[-3.707,2.342],[-11.876,-8.388]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.223,-7.313],[5.213,-3.293],[0,0]],"v":[[45.648,-3.949],[33.253,-6.007],[19.256,-11.656],[9.635,-21.038],[4.751,-37.038],[14.574,-55.335],[41.661,-55.065]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":56,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.157,5.141],[-2.454,2.548],[-11.329,-7.515]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.223,-7.313],[3.715,-3.858],[0,0]],"v":[[45.648,-3.949],[32.778,-5.853],[19.018,-11.578],[9.082,-21.121],[4.358,-37.437],[11.798,-54.17],[39.629,-58.085]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":57,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[-0.157,5.141],[-2.454,2.548],[-12.369,-5.862]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[0.223,-7.313],[3.715,-3.858],[0,0]],"v":[[45.648,-3.949],[32.148,-6.174],[18.311,-12.137],[8.607,-20.966],[3.33,-37.365],[8.63,-53.403],[37.911,-60.944]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":58,"s":[{"i":[[0,0],[9.364,1.866],[3.559,1.988],[1.418,2.069],[0.033,5.143],[-1.635,3.137],[-12.631,-2.623]],"o":[[0,0],[-6.814,-1.358],[-4.801,-2.682],[-3.456,-5.042],[-0.068,-10.636],[1.734,-3.328],[0,0]],"v":[[45.648,-3.949],[31.987,-5.859],[18.067,-11.269],[8.131,-20.812],[2.141,-36.979],[6.734,-53.576],[33.751,-64.85]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":59,"s":[{"i":[[0,0],[9.364,1.866],[4.802,2.551],[1.855,3.161],[0.955,5.054],[-1.635,3.137],[-13.594,-0.733]],"o":[[0,0],[-6.814,-1.358],[-5.692,-3.023],[-4.074,-6.944],[-1.055,-5.584],[1.734,-3.328],[0,0]],"v":[[45.648,-3.949],[31.987,-5.859],[18.382,-11.109],[7.495,-20.342],[1.113,-36.908],[4.434,-52.565],[30.131,-67.091]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[{"i":[[0,0],[9.364,1.866],[4.802,2.551],[2.236,2.904],[1.614,4.883],[-1.197,3.604],[-14.724,2.263]],"o":[[0,0],[-6.814,-1.358],[-5.692,-3.023],[-4.282,-5.562],[-1.691,-5.114],[1.183,-3.561],[0,0]],"v":[[45.648,-3.949],[31.987,-5.859],[18.382,-11.109],[6.942,-20.426],[0.156,-35.808],[2.062,-52.583],[25.81,-70.681]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":61,"s":[{"i":[[0,0],[9.364,1.866],[4.802,2.551],[2.236,2.904],[1.828,4.807],[-1.197,3.604],[-13.791,4.326]],"o":[[0,0],[-6.814,-1.358],[-5.692,-3.023],[-4.282,-5.562],[-2.006,-5.275],[1.183,-3.561],[0,0]],"v":[[45.173,-3.794],[31.987,-5.859],[17.277,-11.275],[5.991,-20.117],[-1.033,-35.422],[-0.874,-51.104],[20.449,-72.619]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":62,"s":[{"i":[[0,0],[9.367,1.471],[4.802,2.551],[2.773,2.397],[2.02,4.73],[-0.375,3.78],[-9.065,6.733]],"o":[[0,0],[-6.77,-1.063],[-5.692,-3.023],[-4.844,-4.188],[-2.321,-5.435],[0.315,-3.175],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[14.313,-11.495],[3.97,-19.46],[-5.069,-34.899],[-6.254,-50.67],[6.789,-75.016]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":63,"s":[{"i":[[0,0],[9.367,1.471],[4.802,2.551],[2.773,2.397],[2.02,4.73],[0.332,4.338],[-7.49,7.536]],"o":[[0,0],[-6.77,-1.063],[-5.692,-3.023],[-4.844,-4.188],[-2.321,-5.435],[-0.244,-3.181],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[14.153,-11.18],[2.782,-19.074],[-6.733,-34.358],[-9.095,-51.324],[0.709,-75.932]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":64,"s":[{"i":[[0,0],[9.367,1.471],[5.102,1.881],[2.773,2.397],[2.375,4.562],[0.493,4.023],[-3.93,7.167]],"o":[[0,0],[-6.77,-1.063],[-5.285,-1.949],[-4.844,-4.188],[-2.874,-5.518],[-0.388,-3.167],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[13.992,-10.865],[2.383,-18.681],[-8.32,-33.58],[-12.103,-50.873],[-7.601,-74.809]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":65,"s":[{"i":[[0,0],[9.367,1.471],[5.102,1.881],[2.21,1.547],[2.375,4.562],[1.2,4.582],[-2.105,6.312]],"o":[[0,0],[-6.77,-1.063],[-5.285,-1.949],[-5.245,-3.672],[-2.874,-5.518],[-0.808,-3.086],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[13.755,-10.788],[1.432,-18.372],[-10.145,-32.724],[-15.746,-49.952],[-15.364,-72.812]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":66,"s":[{"i":[[0,0],[9.367,1.471],[5.102,1.881],[2.21,1.547],[3.235,3.998],[2.217,6.092],[-0.221,8.065]],"o":[[0,0],[-6.77,-1.063],[-5.285,-1.949],[-5.245,-3.672],[-3.123,-3.86],[-1.091,-2.998],[0,0]],"v":[[44.106,-3.842],[31.512,-5.704],[13.594,-10.473],[0.243,-17.986],[-11.269,-30.519],[-19.544,-49.506],[-21.944,-70.411]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":67,"s":[{"i":[[0,0],[9.597,1.188],[5.102,1.881],[1.941,1.312],[3.586,3.654],[3.544,6.31],[1.048,7.521]],"o":[[0,0],[-6.797,-0.846],[-5.285,-1.949],[-6.348,-4.234],[-3.829,-3.836],[-1.499,-2.777],[0,0]],"v":[[44.106,-3.842],[29.693,-5.639],[13.235,-9.962],[-0.238,-17.041],[-12.669,-28.355],[-23.01,-46.014],[-29.371,-65.764]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":68,"s":[{"i":[[0,0],[9.826,0.905],[5.102,1.881],[1.673,1.077],[3.938,3.309],[4.871,6.528],[2.317,6.978]],"o":[[0,0],[-6.825,-0.628],[-5.285,-1.949],[-7.45,-4.796],[-4.535,-3.811],[-1.908,-2.557],[0,0]],"v":[[44.106,-3.842],[27.874,-5.574],[12.875,-9.451],[-0.72,-16.096],[-14.223,-26.667],[-27.89,-43.64],[-36.799,-61.116]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":69,"s":[{"i":[[0,0],[9.826,0.905],[5.102,1.881],[1.812,0.821],[3.938,3.309],[5.379,6.116],[3.435,5.563]],"o":[[0,0],[-6.825,-0.628],[-5.285,-1.949],[-6.91,-3.131],[-4.535,-3.811],[-1.667,-1.896],[0,0]],"v":[[44.106,-3.842],[27.874,-5.574],[11.532,-9.54],[-2.146,-15.633],[-16.524,-25.657],[-31.076,-40.502],[-43.171,-54.84]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":70,"s":[{"i":[[0,0],[9.826,0.905],[5.102,1.881],[1.863,0.697],[4.336,2.917],[6.419,4.464],[3.215,3.269]],"o":[[0,0],[-6.825,-0.628],[-5.285,-1.949],[-5.81,-2.174],[-4.915,-3.306],[-2.073,-1.441],[0,0]],"v":[[44.106,-3.842],[25.502,-5.592],[10.028,-9.314],[-3.971,-14.777],[-18.985,-24.332],[-34.75,-35.628],[-48.688,-46.738]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":71,"s":[{"i":[[0,0],[9.86,0.392],[5.697,0.992],[1.892,0.614],[4.752,1.604],[6.514,2.33],[9.545,2.526]],"o":[[0,0],[-5.642,-0.224],[-5.55,-0.967],[-7.468,-2.424],[-5.613,-1.895],[-2.377,-0.85],[0,0]],"v":[[44.106,-3.842],[24.789,-5.36],[7.727,-8.304],[-6.836,-12.269],[-22.51,-18.192],[-39.506,-23.568],[-57.444,-28.384]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":72,"s":[{"i":[[0,0],[9.86,0.392],[5.697,0.992],[1.975,0.24],[0,0],[5.974,0.665],[8.618,-0.327]],"o":[[0,0],[-5.642,-0.224],[-5.55,-0.967],[-9.691,-1.176],[0,0],[-2.509,-0.279],[0,0]],"v":[[44.106,-3.842],[24.789,-5.36],[7.091,-7.834],[-9.291,-11.734],[-24.121,-14.251],[-43.346,-17.589],[-59.817,-17.887]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":73,"s":[{"i":[[0,0],[9.86,0.392],[5.782,0.074],[1.975,0.24],[0,0],[4.957,-0.844],[7.84,-1.914]],"o":[[0,0],[-5.642,-0.224],[-2.077,-0.027],[-9.691,-1.176],[0,0],[-2.489,0.424],[0,0]],"v":[[44.106,-3.842],[24.153,-4.89],[5.183,-6.426],[-11.128,-9.297],[-25.964,-11.024],[-43.163,-10.551],[-59.74,-7.135]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":74,"s":[{"i":[[0,0],[9.86,0.392],[5.782,0.074],[1.987,-0.104],[0,0],[3.684,-1.163],[6.354,-4.06]],"o":[[0,0],[-5.642,-0.224],[-2.077,-0.027],[-8.091,0.423],[0,0],[-2.407,0.76],[0,0]],"v":[[44.106,-3.842],[19.963,-4.843],[4.149,-5.564],[-11.069,-6.688],[-25.209,-6.275],[-41.79,-3.9],[-59.105,2.911]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":75,"s":[{"i":[[0,0],[9.86,0.392],[5.782,0.074],[2.795,-0.214],[0,0],[3.228,-2.123],[3.59,-4.476]],"o":[[0,0],[-5.642,-0.224],[-3.076,-0.039],[-6.779,0.52],[0,0],[-2.226,1.464],[0,0]],"v":[[44.106,-3.842],[19.963,-4.843],[-0.517,-5.362],[-9.451,-5.05],[-21.435,-3.558],[-39.775,1.492],[-56.889,12.968]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":76,"s":[{"i":[[0,0],[9.867,0.118],[5.769,-0.388],[3.099,-0.551],[0,0],[7.038,-4.149],[1.444,-2.99]],"o":[[0,0],[-5.327,-0.064],[-1.946,0.131],[-7.516,1.336],[0,0],[-2.295,1.353],[0,0]],"v":[[43.791,-4.002],[22.251,-4.272],[-0.927,-3.389],[-8.851,-2.272],[-25.186,1.078],[-40.703,9.153],[-53.156,21.219]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":77,"s":[{"i":[[0,0],[6.185,0.154],[6.231,-1.114],[2.191,-0.494],[0,0],[4.922,-6.616],[1.444,-2.99]],"o":[[0,0],[-5.88,-0.147],[-2.157,0.386],[-5.315,1.199],[0,0],[-1.59,2.137],[0,0]],"v":[[43.161,-4.323],[22.643,-3.874],[-1.73,-1.814],[-8.39,-0.448],[-18.315,2],[-41.946,16.655],[-49.418,28.679]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":78,"s":[{"i":[[0,0],[5.855,-0.689],[5.579,-1.521],[2.495,-0.921],[0,0],[5.374,-7.953],[0.975,-3.626]],"o":[[0,0],[-6.123,0.721],[-3.73,1.017],[-6.05,2.233],[0,0],[-4.988,7.381],[0,0]],"v":[[41.259,-3.705],[21.454,-3.488],[-1.504,-0.31],[-10.812,2.638],[-19.456,6.577],[-37.31,20.406],[-45.912,35.425]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":79,"s":[{"i":[[0,0],[5.111,-0.301],[5.61,-1.401],[2.859,-1.223],[0,0],[3.977,-7.098],[-0.254,-3.161]],"o":[[0,0],[-6.639,0.39],[-3.614,0.903],[-6.934,2.965],[0,0],[-1.302,2.324],[0,0]],"v":[[41.574,-3.545],[22.322,-3.244],[0.071,0.493],[-9.701,3.801],[-20.984,9.965],[-35.123,23.901],[-41.282,39.967]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":80,"s":[{"i":[[0,0],[5.759,-1.009],[5.389,-2.096],[2.87,-1.591],[0,0],[2.962,-7.334],[-0.254,-3.161]],"o":[[0,0],[-6.527,1.144],[-4.15,1.614],[-6.961,3.858],[0,0],[-3.656,9.052],[0,0]],"v":[[40.706,-3.788],[23.666,-3.155],[2.668,2.014],[-7.849,6.914],[-18.09,14.019],[-30.19,30.184],[-33.276,47.617]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":81,"s":[{"i":[[0,0],[5.753,-1.042],[5.389,-2.096],[2.717,-1.477],[0,0],[2.996,-7.32],[-0.66,-7.038]],"o":[[0,0],[-6.433,1.165],[-4.15,1.614],[-6.589,3.583],[0,0],[-3.091,7.554],[0,0]],"v":[[40.546,-3.473],[23.82,-2.679],[3.851,2.419],[-6.404,7.125],[-15.635,13.484],[-27.818,30.202],[-30.845,50.245]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":82,"s":[{"i":[[0,0],[5.699,-0.982],[5.389,-2.096],[2.631,-1.545],[0,0],[2.241,-7.585],[-1.052,-7.437]],"o":[[0,0],[-6.36,1.096],[-4.15,1.614],[-6.382,3.747],[0,0],[-3.558,12.04],[0,0]],"v":[[40.231,-3.634],[22.946,-2.133],[4.166,2.579],[-5.943,7.401],[-14.613,14.203],[-26.802,31.712],[-28.414,52.872]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":83,"s":[{"i":[[0,0],[0,0],[5.389,-2.096],[2.649,-1.392],[0,0],[2.241,-7.585],[-1.052,-7.437]],"o":[[0,0],[0,0],[-4.15,1.614],[-6.425,3.376],[0,0],[-3.558,12.04],[0,0]],"v":[[40.231,-3.634],[23.576,-1.812],[4.315,3.845],[-5.826,8.406],[-16.206,15.772],[-26.011,31.718],[-27.475,54.144]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":84,"s":[{"i":[[0,0],[0,0],[5.389,-2.096],[3.026,-1.99],[0,0],[3.396,-6.608],[-1.052,-7.437]],"o":[[0,0],[0,0],[-4.15,1.614],[-7.339,4.827],[0,0],[-4.203,8.178],[0,0]],"v":[[40.385,-3.158],[23.808,-1.098],[4.315,3.845],[-6.468,9.427],[-17.734,19.16],[-24.258,29.834],[-26.613,55.178]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":85,"s":[{"i":[[0,0],[0,0],[5.389,-2.096],[2.554,-1.393],[0,0],[3.122,-6.742],[-0.808,-8.304]],"o":[[0,0],[0,0],[-4.15,1.614],[-6.194,3.378],[0,0],[-5.576,12.041],[0,0]],"v":[[40.462,-2.921],[24.046,-1.176],[6.133,3.78],[-3.844,8.342],[-12.003,14.144],[-22.825,28.58],[-26.536,55.416]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":86,"s":[{"i":[[0,0],[0,0],[5.34,-2.218],[2.039,-1.282],[0,0],[3.979,-6.275],[-1.599,-8.31]],"o":[[0,0],[0,0],[-2.091,0.868],[-4.944,3.109],[0,0],[-5.231,8.249],[0,0]],"v":[[40.385,-3.158],[23.969,-1.413],[4.63,4.006],[-1.679,7.369],[-10.737,13.995],[-22.51,28.74],[-26.696,55.731]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":87,"s":[{"i":[[0,0],[0,0],[5.34,-2.218],[2.039,-1.282],[0,0],[3.979,-6.275],[-1.599,-8.31]],"o":[[0,0],[0,0],[-2.091,0.868],[-4.944,3.109],[0,0],[-5.231,8.249],[0,0]],"v":[[40.385,-3.158],[23.969,-1.413],[4.63,4.006],[-1.679,7.369],[-10.737,13.995],[-22.51,28.74],[-26.696,55.731]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":88,"s":[{"i":[[0,0],[0,0],[5.34,-2.218],[2.039,-1.282],[0,0],[3.979,-6.275],[-1.599,-8.31]],"o":[[0,0],[0,0],[-2.091,0.868],[-4.944,3.109],[0,0],[-5.231,8.249],[0,0]],"v":[[40.385,-3.158],[23.969,-1.413],[4.63,4.006],[-1.679,7.369],[-10.737,13.995],[-22.51,28.74],[-26.696,55.731]],"c":false}]},{"t":89,"s":[{"i":[[0,0],[0,0],[5.34,-2.218],[2.039,-1.282],[0,0],[3.979,-6.275],[-1.599,-8.31]],"o":[[0,0],[0,0],[-2.091,0.868],[-4.944,3.109],[0,0],[-5.231,8.249],[0,0]],"v":[[40.385,-3.158],[23.969,-1.413],[4.63,4.006],[-1.679,7.369],[-10.737,13.995],[-22.51,28.74],[-26.696,55.731]],"c":false}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.988235353956,0.333333333333,0.20000001496,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":11.339,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[54.554,31.992],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"“eye-l”轮廓","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[7.526,17.917,0],"ix":2},"a":{"a":0,"k":[3.368,3.368,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,1.721],[1.718,0],[0,-1.717],[-1.718,0]],"o":[[0,-1.72],[-1.718,0],[0,1.721],[1.718,0]],"v":[[3.118,0],[0,-3.118],[-3.118,0],[0,3.118]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[3.368,3.368],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"“eye-ll”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":22,"s":[-32]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":52,"s":[36]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":64,"s":[36]},{"t":90,"s":[0]}],"ix":10},"p":{"a":0,"k":[158.825,137.66,0],"ix":2},"a":{"a":0,"k":[12.723,12.722,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,6.882],[6.87,0],[0,-6.869],[-6.87,0]],"o":[[0,-6.882],[-6.87,0],[0,6.882],[6.87,0]],"v":[[12.474,-0.001],[-0.001,-12.471],[-12.474,-0.001],[-0.001,12.471]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[12.723,12.722],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"“eye-r”轮廓","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[7.526,17.917,0],"ix":2},"a":{"a":0,"k":[3.368,3.368,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,1.721],[1.718,0],[0,-1.717],[-1.718,0]],"o":[[0,-1.72],[-1.718,0],[0,1.721],[1.718,0]],"v":[[3.118,0],[0,-3.118],[-3.118,0],[0,3.118]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[3.368,3.368],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"“eye-rr”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":22,"s":[-32]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":52,"s":[36]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":64,"s":[36]},{"t":90,"s":[0]}],"ix":10},"p":{"a":0,"k":[200.403,137.66,0],"ix":2},"a":{"a":0,"k":[12.724,12.722,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,6.882],[6.87,0],[0,-6.869],[-6.87,0]],"o":[[0,-6.882],[-6.87,0],[0,6.882],[6.87,0]],"v":[[12.474,-0.001],[-0.001,-12.471],[-12.474,-0.001],[-0.001,12.471]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[12.724,12.722],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"“body”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[157.785,154.289,0],"ix":2},"a":{"a":0,"k":[71.972,25.193,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[25.834,0],[7.225,-4.571],[9.183,0],[0,-25.83],[-0.068,-1.031],[0,0],[0,0],[0,0],[0,1.048]],"o":[[-9.183,0],[-7.227,-4.571],[-25.833,0],[0,1.048],[0,0],[0,0],[0,0],[0.067,-1.031],[0,-25.83]],"v":[[24.947,-24.943],[0.001,-17.688],[-24.947,-24.943],[-71.722,21.825],[-71.62,24.943],[-21.726,24.943],[21.726,24.943],[71.621,24.943],[71.722,21.825]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.33300000359,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[71.972,25.193],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"“head”轮廓","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[179.609,137.24,0],"ix":2},"a":{"a":0,"k":[50.184,42.261,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.551,3.125],[1.123,0.873],[5.869,-3.587],[3.517,-2.858],[14.978,-7.709],[3.823,2.402],[2.162,-1.683],[0.567,-2.916],[-0.051,-3.171],[-3,-7.971],[0,0],[0,-1.122],[-49.779,0.02],[0,5.256],[0.099,1.012],[-0.073,0.18],[-0.037,8.515]],"o":[[-0.575,-2.916],[-2.168,-1.69],[-3.833,2.419],[-14.955,-7.752],[-3.5,-2.852],[-5.82,-3.539],[-1.115,0.872],[-0.558,3.121],[0.034,8.516],[0,0],[-0.112,1.135],[0,5.256],[50.013,0],[0.003,-1.018],[0.101,-0.166],[2.994,-7.973],[0.039,-3.173]],"v":[[49.126,-34.698],[46.617,-40.321],[34.838,-37.551],[23.801,-29.629],[-23.92,-29.698],[-34.916,-37.586],[-46.619,-40.307],[-49.12,-34.684],[-49.883,-25.224],[-45.296,-0.294],[-45.233,-0.141],[-45.413,3.266],[-0.104,41.991],[45.197,3.266],[45.052,0.219],[45.314,-0.301],[49.895,-25.231]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.33300000359,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[50.184,42.261],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"胳膊","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[108.5,120,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[0.988235353956,0.333333333333,0.20000001496,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":4,"s":[{"i":[[0,0],[2.605,-0.033],[2.655,-0.151]],"o":[[-2.392,-0.259],[-3.152,0.04],[0,0]],"v":[[114.517,-84.491],[108.145,-84.592],[101.595,-84.599]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":6,"s":[{"i":[[0,0],[2.636,-0.881],[2.53,-0.276]],"o":[[-0.267,1.616],[-2.52,0.842],[0,0]],"v":[[114.517,-83.866],[111.27,-79.717],[106.22,-78.849]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":8,"s":[{"i":[[0,0],[2.23,-1.658],[2.53,-1.151]],"o":[[-0.267,1.616],[-2.246,1.67],[0,0]],"v":[[114.517,-83.866],[112.145,-78.967],[107.345,-76.849]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":10,"s":[{"i":[[0,0],[2.23,-1.658],[0.874,-2.12]],"o":[[-0.267,1.616],[-2.246,1.67],[0,0]],"v":[[114.517,-83.866],[112.145,-78.967],[108.72,-75.099]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":14,"s":[{"i":[[0,0],[1.381,-6.499],[1.487,-2.825]],"o":[[0,0],[-0.799,3.76],[-3.75,7.125]],"v":[[114.125,-84],[112.994,-72.001],[108.25,-60]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":16,"s":[{"i":[[0,0],[1.381,-6.499],[1.487,-2.825]],"o":[[0,0],[-0.799,3.76],[-3.75,7.125]],"v":[[114.125,-84],[112.994,-72.001],[108.625,-61.125]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":18,"s":[{"i":[[0,0],[1.381,-6.499],[1.487,-2.825]],"o":[[0,0],[-0.799,3.76],[-3.75,7.125]],"v":[[114.125,-84],[112.994,-72.001],[108.25,-60]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":22,"s":[{"i":[[0,0],[2.23,-1.658],[0.874,-2.12]],"o":[[-0.267,1.616],[-2.246,1.67],[0,0]],"v":[[114.517,-83.866],[112.145,-78.967],[108.72,-75.099]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":24,"s":[{"i":[[0,0],[2.23,-1.658],[2.53,-1.151]],"o":[[-0.267,1.616],[-2.246,1.67],[0,0]],"v":[[114.517,-83.866],[112.145,-78.967],[107.345,-76.849]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":26,"s":[{"i":[[0,0],[2.636,-0.881],[2.53,-0.276]],"o":[[-0.267,1.616],[-2.52,0.842],[0,0]],"v":[[114.517,-83.866],[111.27,-79.717],[106.22,-78.849]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":28,"s":[{"i":[[0,0],[2.605,-0.033],[2.655,-0.151]],"o":[[-2.392,-0.259],[-3.152,0.04],[0,0]],"v":[[114.517,-84.491],[108.145,-84.592],[101.595,-84.599]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":120,"s":[{"i":[[0,0],[2.605,-0.033],[2.655,-0.151]],"o":[[-2.392,-0.259],[-3.152,0.04],[0,0]],"v":[[114.517,-84.491],[108.145,-84.592],[101.595,-84.599]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":122,"s":[{"i":[[0,0],[2.636,-0.881],[2.53,-0.276]],"o":[[-0.267,1.616],[-2.52,0.842],[0,0]],"v":[[114.517,-83.866],[111.27,-79.717],[106.22,-78.849]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":124,"s":[{"i":[[0,0],[2.23,-1.658],[2.53,-1.151]],"o":[[-0.267,1.616],[-2.246,1.67],[0,0]],"v":[[114.517,-83.866],[112.145,-78.967],[107.345,-76.849]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":126,"s":[{"i":[[0,0],[2.23,-1.658],[0.874,-2.12]],"o":[[-0.267,1.616],[-2.246,1.67],[0,0]],"v":[[114.517,-83.866],[112.145,-78.967],[108.72,-75.099]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":130,"s":[{"i":[[0,0],[1.381,-6.499],[1.487,-2.825]],"o":[[0,0],[-0.799,3.76],[-3.75,7.125]],"v":[[114.125,-84],[112.994,-72.001],[108.25,-60]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":132,"s":[{"i":[[0,0],[1.381,-6.499],[1.487,-2.825]],"o":[[0,0],[-0.799,3.76],[-3.75,7.125]],"v":[[114.125,-84],[112.994,-72.001],[108.625,-61.125]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":134,"s":[{"i":[[0,0],[1.381,-6.499],[1.487,-2.825]],"o":[[0,0],[-0.799,3.76],[-3.75,7.125]],"v":[[114.125,-84],[112.994,-72.001],[108.25,-60]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":138,"s":[{"i":[[0,0],[2.23,-1.658],[0.874,-2.12]],"o":[[-0.267,1.616],[-2.246,1.67],[0,0]],"v":[[114.517,-83.866],[112.145,-78.967],[108.72,-75.099]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":140,"s":[{"i":[[0,0],[2.23,-1.658],[2.53,-1.151]],"o":[[-0.267,1.616],[-2.246,1.67],[0,0]],"v":[[114.517,-83.866],[112.145,-78.967],[107.345,-76.849]],"c":false}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":142,"s":[{"i":[[0,0],[2.636,-0.881],[2.53,-0.276]],"o":[[-0.267,1.616],[-2.52,0.842],[0,0]],"v":[[114.517,-83.866],[111.27,-79.717],[106.22,-78.849]],"c":false}]},{"t":144,"s":[{"i":[[0,0],[2.605,-0.033],[2.655,-0.151]],"o":[[-2.392,-0.259],[-3.152,0.04],[0,0]],"v":[[114.517,-84.491],[108.145,-84.592],[101.595,-84.599]],"c":false}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.988235353956,0.333333333333,0.20000001496,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":2,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":0,"nm":"cat","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[177,26,0],"ix":2},"a":{"a":0,"k":[120,150,0],"ix":1},"s":{"a":0,"k":[45,45,100],"ix":6}},"ao":0,"w":240,"h":300,"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":0,"nm":"cat","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[177,26,0],"ix":2},"a":{"a":0,"k":[120,150,0],"ix":1},"s":{"a":0,"k":[45,45,100],"ix":6}},"ao":0,"w":240,"h":300,"ip":90,"op":180,"st":90,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"web","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[96,140,0],"ix":2},"a":{"a":0,"k":[97.2,73.2,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[0.988234994926,0.333332974303,0.2,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.459020248114,0.484271868537,0.522556678922,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[0.988234994926,0.333332974303,0.2,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.459020248114,0.484271868537,0.522556678922,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"st","c":{"a":0,"k":[0.988234994926,0.333332974303,0.2,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":6,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.898000021542,0.910000011968,0.925,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.846,50.001],[-1.846,50.001],[-1.846,52.4],[1.846,52.4]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.846,37.201],[-1.846,37.201],[-1.846,39.6],[1.846,39.6]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.846,24.4],[-1.846,24.4],[-1.846,26.801],[1.846,26.801]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.846,11.601],[-1.846,11.601],[-1.846,14.001],[1.846,14.001]],"c":true},"ix":2},"nm":"路径 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.846,-1.2],[-1.846,-1.2],[-1.846,1.201],[1.846,1.201]],"c":true},"ix":2},"nm":"路径 5","mn":"ADBE Vector Shape - Group","hd":false},{"ind":5,"ty":"sh","ix":6,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.846,-14],[-1.846,-14],[-1.846,-11.601],[1.846,-11.601]],"c":true},"ix":2},"nm":"路径 6","mn":"ADBE Vector Shape - Group","hd":false},{"ind":6,"ty":"sh","ix":7,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.846,-26.799],[-1.846,-26.799],[-1.846,-24.4],[1.846,-24.4]],"c":true},"ix":2},"nm":"路径 7","mn":"ADBE Vector Shape - Group","hd":false},{"ind":7,"ty":"sh","ix":8,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.846,-39.6],[-1.846,-39.6],[-1.846,-37.199],[1.846,-37.199]],"c":true},"ix":2},"nm":"路径 8","mn":"ADBE Vector Shape - Group","hd":false},{"ind":8,"ty":"sh","ix":9,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[1.846,-52.4],[-1.846,-52.4],[-1.846,-50],[1.846,-50]],"c":true},"ix":2},"nm":"路径 9","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"mm","mm":4,"nm":"合并路径 2","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.459020256996,0.484271854162,0.52255666256,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[15.6,82.399],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 15","np":12,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.325,0],[0,-1.325],[1.326,0],[0,1.326]],"o":[[1.326,0],[0,1.326],[-1.325,0],[0,-1.325]],"v":[[0,-2.4],[2.4,0],[0,2.4],[-2.4,0]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.054999998504,0.689999988032,0.481999984442,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[26,10],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.325,0],[0,-1.325],[1.326,0],[0,1.326]],"o":[[1.326,0],[0,1.326],[-1.325,0],[0,-1.325]],"v":[[0,-2.4],[2.4,0],[0,2.4],[-2.4,0]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.62400004069,0.654999976065,0.702000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[18,10],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":3,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.325,0],[0,-1.325],[1.326,0],[0,1.326]],"o":[[1.326,0],[0,1.326],[-1.325,0],[0,-1.325]],"v":[[0,-2.4],[2.4,0],[0,2.4],[-2.4,0]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.33300000359,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[10,10],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":3,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":34,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[97.32,-1.084],[-39.821,-1.084],[-39.821,1.083],[97.32,1.083]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":43,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[39.82,-1.084],[-39.821,-1.084],[-39.821,1.083],[39.82,1.083]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":152,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[39.82,-1.084],[-39.821,-1.084],[-39.821,1.083],[39.82,1.083]],"c":true}]},{"t":161,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[97.32,-1.084],[-39.821,-1.084],[-39.821,1.083],[97.32,1.083]],"c":true}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.898000021542,0.910000011968,0.925,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[77.93,82.646],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 4","np":3,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":34,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-83.09,17.339],[56.521,17.339],[56.521,15.172],[-83.09,15.172]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":43,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-83.09,17.339],[-3.45,17.339],[-3.45,15.172],[-83.09,15.172]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":152,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-83.09,17.339],[-3.45,17.339],[-3.45,15.172],[-83.09,15.172]],"c":true}]},{"t":161,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-83.09,17.339],[56.521,17.339],[56.521,15.172],[-83.09,15.172]],"c":true}]}],"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.898000021542,0.910000011968,0.925,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[121.309,53.647],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[95.881,100.256],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 5","np":3,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":34,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[107.165,-1.184],[-25.751,-1.083],[-25.751,1.082],[107.165,0.981]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":43,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[25.75,-1.083],[-25.751,-1.083],[-25.751,1.082],[25.75,1.082]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":152,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[25.75,-1.083],[-25.751,-1.083],[-25.751,1.082],[25.75,1.082]],"c":true}]},{"t":161,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[107.165,-1.184],[-25.751,-1.083],[-25.751,1.082],[107.165,0.981]],"c":true}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.898000021542,0.910000011968,0.925,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[61.373,133.702],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[106.515,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 6","np":3,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":34,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-85.43,68.802],[54.334,68.905],[54.334,66.738],[-85.43,66.635]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":43,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-85.43,68.802],[-3.666,68.802],[-3.666,66.635],[-85.43,66.635]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":152,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-85.43,68.802],[-3.666,68.802],[-3.666,66.635],[-85.43,66.635]],"c":true}]},{"t":161,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-85.43,68.802],[54.334,68.905],[54.334,66.738],[-85.43,66.635]],"c":true}]}],"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.438999998803,0.477999997606,0.528999956916,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[121.2,53.2],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 7","np":3,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":43,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[11.738,-1.084],[-11.739,-1.084],[-11.739,1.083],[11.738,1.083]],"c":true}]},{"t":161,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[11.738,-1.084],[-11.739,-1.084],[-11.739,1.083],[11.738,1.083]],"c":true}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.438999998803,0.477999997606,0.528999956916,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[47.508,108.024],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 8","np":3,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":34,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[84.062,-1.183],[-26.813,-1.084],[-26.813,1.083],[84.062,0.984]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":43,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[26.812,-1.084],[-26.813,-1.084],[-26.813,1.083],[26.812,1.083]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":152,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[26.812,-1.084],[-26.813,-1.084],[-26.813,1.083],[26.812,1.083]],"c":true}]},{"t":161,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[84.062,-1.183],[-26.813,-1.084],[-26.813,1.083],[84.062,0.984]],"c":true}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.438999998803,0.477999997606,0.528999956916,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[91.031,108.024],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 9","np":3,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":43,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[13.347,-1.083],[-13.347,-1.083],[-13.347,1.084],[13.347,1.084]],"c":true}]},{"t":161,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[13.347,-1.083],[-13.347,-1.083],[-13.347,1.084],[13.347,1.084]],"c":true}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.898000021542,0.910000011968,0.925,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[35.002,95.431],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 10","np":3,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":34,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[73.997,-1.199],[-16.998,-1.083],[-16.998,1.084],[73.997,0.968]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":43,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.997,-1.083],[-16.998,-1.083],[-16.998,1.084],[16.997,1.084]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":152,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[16.997,-1.083],[-16.998,-1.083],[-16.998,1.084],[16.997,1.084]],"c":true}]},{"t":161,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[73.997,-1.199],[-16.998,-1.083],[-16.998,1.084],[73.997,0.968]],"c":true}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.62400004069,0.654999976065,0.702000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[70.246,95.133],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 11","np":3,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":34,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[47.094,-1.083],[-7.094,-1.083],[-7.094,1.084],[47.094,1.084]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":43,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[7.094,-1.083],[-7.094,-1.083],[-7.094,1.084],[7.094,1.084]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":152,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[7.094,-1.083],[-7.094,-1.083],[-7.094,1.084],[7.094,1.084]],"c":true}]},{"t":161,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[47.094,-1.083],[-7.094,-1.083],[-7.094,1.084],[47.094,1.084]],"c":true}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.898000021542,0.910000011968,0.925,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[28.749,31.184],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 12","np":3,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":34,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[89.668,-1.2],[-32.918,-1.084],[-32.918,1.084],[89.668,0.967]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":43,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.918,-1.084],[-32.918,-1.084],[-32.918,1.084],[32.918,1.084]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":152,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.918,-1.084],[-32.918,-1.084],[-32.918,1.084],[32.918,1.084]],"c":true}]},{"t":161,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[89.668,-1.2],[-32.918,-1.084],[-32.918,1.084],[89.668,0.967]],"c":true}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.438999998803,0.477999997606,0.528999956916,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[54.544,44.076],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 13","np":3,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":34,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[89.668,-1.2],[-32.918,-1.083],[-32.918,1.083],[89.668,0.967]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":43,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.918,-1.083],[-32.918,-1.083],[-32.918,1.083],[32.918,1.083]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":152,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[32.918,-1.083],[-32.918,-1.083],[-32.918,1.083],[32.918,1.083]],"c":true}]},{"t":161,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[89.668,-1.2],[-32.918,-1.083],[-32.918,1.083],[89.668,0.967]],"c":true}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.62400004069,0.654999976065,0.702000038297,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[54.544,56.969],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 14","np":3,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":34,"s":[{"i":[[3.535,0],[0,0],[0,-3.535],[0,0],[-3.535,0],[0,0],[0,3.534],[0,0]],"o":[[0,0],[-3.535,0],[0,0],[0,3.534],[0,0],[3.535,0],[0,0],[0,-3.535]],"v":[[120.6,-62.8],[-53.6,-62.8],[-60,-56.4],[-60,56.4],[-53.6,62.8],[120.6,62.8],[127,56.4],[127,-56.4]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":43,"s":[{"i":[[3.535,0],[0,0],[0,-3.535],[0,0],[-3.535,0],[0,0],[0,3.534],[0,0]],"o":[[0,0],[-3.535,0],[0,0],[0,3.534],[0,0],[3.535,0],[0,0],[0,-3.535]],"v":[[53.6,-62.8],[-53.6,-62.8],[-60,-56.4],[-60,56.4],[-53.6,62.8],[53.6,62.8],[60,56.4],[60,-56.4]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":152,"s":[{"i":[[3.535,0],[0,0],[0,-3.535],[0,0],[-3.535,0],[0,0],[0,3.534],[0,0]],"o":[[0,0],[-3.535,0],[0,0],[0,3.534],[0,0],[3.535,0],[0,0],[0,-3.535]],"v":[[53.6,-62.8],[-53.6,-62.8],[-60,-56.4],[-60,56.4],[-53.6,62.8],[53.6,62.8],[60,56.4],[60,-56.4]],"c":true}]},{"t":161,"s":[{"i":[[3.535,0],[0,0],[0,-3.535],[0,0],[-3.535,0],[0,0],[0,3.534],[0,0]],"o":[[0,0],[-3.535,0],[0,0],[0,3.534],[0,0],[3.535,0],[0,0],[0,-3.535]],"v":[[120.6,-62.8],[-53.6,-62.8],[-60,-56.4],[-60,56.4],[-53.6,62.8],[120.6,62.8],[127,56.4],[127,-56.4]],"c":true}]}],"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[63.6,80],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 16","np":3,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.877,4.519],[4.539,-2.8],[-2.813,-4.518],[-4.539,2.801]],"o":[[-2.877,-4.519],[-4.539,2.865],[2.877,4.519],[4.539,-2.864]],"v":[[8.184,-5.124],[-5.179,-8.179],[-8.247,5.123],[5.115,8.178]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.438999998803,0.477999997606,0.528999956916,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[117.921,92.604],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 17","np":4,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.481,-0.001],[0,0],[0,0],[-0.05,-0.522],[0,0],[0,0],[-1.197,-0.909],[0,0],[-0.338,-0.371],[0,0],[0,0],[0.308,-0.386],[0,0],[0,0],[-0.205,-1.538],[0,0],[0.001,-0.478],[0,0],[0,0],[0.524,-0.05],[0,0],[0,0],[1.048,-1.338],[0,0],[0.372,-0.336],[0,0],[0,0],[0.388,0.307],[0,0],[0,0],[1.729,-0.175],[0,0],[0.481,0.002],[0,0],[0,0],[0.05,0.522],[0,0],[0,0],[1.334,1.099],[0,0],[0.337,0.371],[0,0],[0,0],[-0.308,0.387],[0,0],[0,0],[0.149,1.605],[0,0],[-0.001,0.522],[0,0],[0,0],[-0.524,0.05],[0,0],[0,0],[-0.972,1.201],[0,0],[-0.373,0.336],[0,0],[0,0],[-0.388,-0.308],[0,0],[0,0],[-1.459,0.176],[0,0]],"o":[[0,0],[0,0],[0.534,0.059],[0,0],[0,0],[1.366,0.546],[0,0],[0.475,-0.295],[0,0],[0,0],[0.295,0.411],[0,0],[0,0],[0.655,1.453],[0,0],[0.475,0.119],[0,0],[0,0],[-0.059,0.533],[0,0],[0,0],[-0.582,1.549],[0,0],[0.297,0.472],[0,0],[0,0],[-0.413,0.293],[0,0],[0,0],[-1.63,0.734],[0,0],[-0.118,0.473],[0,0],[0,0],[-0.534,-0.059],[0,0],[0,0],[-1.561,-0.624],[0,0],[-0.476,0.296],[0,0],[0,0],[-0.295,-0.411],[0,0],[0,0],[-0.636,-1.527],[0,0],[-0.475,-0.118],[0,0],[0,0],[0.059,-0.532],[0,0],[0,0],[0.59,-1.383],[0,0],[-0.296,-0.474],[0,0],[0,0],[0.413,-0.294],[0,0],[0,0],[1.389,-0.574],[0,0],[0.118,-0.473]],"v":[[0.561,-20.629],[0.671,-20.622],[4.827,-20.049],[5.78,-19.025],[5.786,-18.902],[6.174,-14.932],[10.041,-12.747],[13.585,-14.32],[14.983,-14.157],[15.056,-14.066],[17.613,-10.757],[17.568,-9.385],[17.485,-9.292],[15.115,-6.389],[16.402,-1.876],[19.851,-0.574],[20.689,0.525],[20.682,0.637],[20.106,4.773],[19.078,5.723],[18.956,5.728],[15.495,6.064],[13.046,10.423],[14.48,13.557],[14.316,14.947],[14.225,15.02],[10.9,17.566],[9.523,17.52],[9.43,17.438],[6.805,15.316],[1.733,16.673],[0.543,19.794],[-0.561,20.628],[-0.671,20.62],[-4.827,20.048],[-5.78,19.023],[-5.786,18.902],[-6.113,15.566],[-10.487,12.979],[-13.585,14.383],[-14.983,14.219],[-15.056,14.129],[-17.613,10.819],[-17.568,9.448],[-17.485,9.355],[-15.236,6.598],[-16.41,1.872],[-19.851,0.572],[-20.689,-0.516],[-20.682,-0.637],[-20.106,-4.775],[-19.078,-5.723],[-18.956,-5.729],[-15.163,-6.098],[-12.817,-9.995],[-14.417,-13.493],[-14.252,-14.885],[-14.161,-14.956],[-10.836,-17.503],[-9.459,-17.458],[-9.366,-17.376],[-6.28,-14.88],[-1.988,-16.001],[-0.543,-19.794]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[117.889,92.572],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":180,"s":[-1440]}],"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 18","np":3,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.173,3.055],[-3.068,-2.1],[2.11,-3.055],[3.133,2.101]],"o":[[2.174,-3.055],[3.069,2.164],[-2.173,3.055],[-3.068,-2.1]],"v":[[-5.562,-3.851],[3.9,-5.57],[5.626,3.851],[-3.9,5.569]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[154.106,67.91],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 19","np":4,"cix":2,"bm":0,"ix":22,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.22,5.982],[-6.009,-4.137],[4.155,-5.983],[6.01,4.136]],"o":[[4.219,-5.982],[6.009,4.201],[-4.22,5.982],[-6.01,-4.138]],"v":[[-10.868,-7.542],[7.608,-10.852],[10.933,7.542],[-7.544,10.853]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.438999998803,0.477999997606,0.528999956916,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[154.106,67.909],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 20","np":4,"cix":2,"bm":0,"ix":23,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.192,-0.7],[0,0],[-1.941,-0.693],[0,0],[-0.64,-0.445],[0,0],[0.384,-0.636],[0,0],[-0.907,-1.906],[0,0],[-0.128,-0.7],[0,0],[0.704,-0.191],[0,0],[0.811,-2.178],[0,0],[0.447,-0.637],[0,0],[0.64,0.382],[0,0],[2.172,-0.946],[0,0],[0.703,-0.127],[0,0],[0.192,0.701],[0,0],[2.243,0.909],[0,0],[0.639,0.446],[0,0],[-0.383,0.636],[0,0],[0.86,2.04],[0,0],[0.128,0.7],[0,0],[-0.703,0.191],[0,0],[-0.745,1.924],[0,0],[-0.448,0.573],[0,0],[-0.639,-0.382],[0,0],[-1.791,0.82],[0,0],[-0.704,0.127]],"o":[[0.703,-0.127],[0,0],[2.006,0.141],[0,0],[0.511,-0.572],[0,0],[0.639,0.381],[0,0],[1.456,1.616],[0,0],[0.768,-0.063],[0,0],[0.128,0.701],[0,0],[-0.104,2.259],[0,0],[0.576,0.509],[0,0],[-0.383,0.636],[0,0],[-1.812,1.631],[0,0],[0.064,0.764],[0,0],[-0.703,0.127],[0,0],[-2.345,-0.153],[0,0],[-0.448,0.572],[0,0],[-0.639,-0.383],[0,0],[-1.461,-1.736],[0,0],[-0.767,0.064],[0,0],[-0.128,-0.7],[0,0],[0.187,-2.008],[0,0],[-0.575,-0.509],[0,0],[0.448,-0.636],[0,0],[1.546,-1.294],[0,0],[-0.064,-0.763],[0,0]],"v":[[-2.077,-27.877],[-0.415,-26.795],[1.773,-21.79],[7.722,-20.545],[11.732,-24.122],[13.714,-24.377],[18.381,-21.13],[18.828,-19.221],[16.902,-14.396],[20.452,-9.079],[25.413,-8.784],[27.012,-7.574],[28.034,-2.036],[26.947,-0.382],[22.591,1.505],[21.226,8.202],[24.326,11.648],[24.582,13.62],[21.321,18.267],[19.403,18.712],[15.202,17.049],[9.181,20.924],[8.919,25.268],[7.704,26.859],[2.142,27.876],[0.48,26.795],[-1.288,22.751],[-8.216,21.165],[-11.603,24.186],[-13.585,24.439],[-18.252,21.195],[-18.7,19.285],[-16.929,14.846],[-20.418,9.143],[-25.413,8.846],[-27.011,7.637],[-28.034,2.1],[-26.947,0.446],[-22.089,-1.659],[-20.696,-7.586],[-24.326,-11.584],[-24.581,-13.557],[-21.321,-18.202],[-19.339,-18.648],[-14.213,-16.62],[-9.182,-19.797],[-8.854,-25.268],[-7.639,-26.857]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":4,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[153.946,67.496],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":180,"s":[1440]}],"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 21","np":3,"cix":2,"bm":0,"ix":24,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.418,0],[0,0],[0,-4.418],[0,0],[4.419,0],[0,0],[0,4.419],[0,0]],"o":[[0,0],[4.419,0],[0,0],[0,4.419],[0,0],[-4.418,0],[0,0],[0,-4.418]],"v":[[-86.8,-70.8],[86.8,-70.8],[94.8,-62.8],[94.8,62.8],[86.8,70.8],[-86.8,70.8],[-94.8,62.8],[-94.8,-62.8]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2.4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[97.2,73.2],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 22","np":2,"cix":2,"bm":0,"ix":25,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.418,0],[0,0],[0,-4.418],[0,0],[4.419,0],[0,0],[0,4.419],[0,0]],"o":[[0,0],[4.419,0],[0,0],[0,4.419],[0,0],[-4.418,0],[0,0],[0,-4.418]],"v":[[-86.8,-70.8],[86.8,-70.8],[94.8,-62.8],[94.8,62.8],[86.8,70.8],[-86.8,70.8],[-94.8,62.8],[-94.8,-62.8]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.941000007181,0.948999980852,0.969000004787,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[97.2,73.2],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 23","np":4,"cix":2,"bm":0,"ix":26,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"comp","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[154.5,139.5,0],"ix":2},"a":{"a":0,"k":[85.75,100.75,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-18.962,1.435],[5.667,1.435],[5.667,4.567],[-18.962,4.567]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-18.962,-4.566],[18.962,-4.566],[18.962,-1.434],[-18.962,-1.434]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[46.449,186.814],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":6,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,3.015],[3.016,0],[0,-3.016],[-3.017,0]],"o":[[0,-3.016],[-3.017,0],[0,3.015],[3.016,0.03]],"v":[[5.448,-0.015],[0.001,-5.459],[-5.448,-0.015],[0.001,5.429]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[18.349,186.83],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 2","np":4,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-0.498],[0,0],[-0.498,0],[0,0],[0,0.498],[0,0],[0.499,0]],"o":[[-0.498,0],[0,0],[0,0.498],[0,0],[0.499,0],[0,0],[0,-0.498],[0,0]],"v":[[23.809,-4.625],[22.931,-3.747],[22.931,3.746],[23.809,4.624],[29.871,4.624],[30.75,3.746],[30.75,-3.747],[29.871,-4.625]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[-0.468,0],[0,0],[0,0.498],[0,0],[0.498,0],[0,0],[0,-0.498]],"o":[[0,0.498],[0,0],[0.498,0],[0,0],[0,-0.498],[0,0],[-0.468,0],[0,0]],"v":[[-30.75,3.746],[-29.872,4.624],[-23.81,4.624],[-22.931,3.746],[-22.931,-3.747],[-23.81,-4.625],[-29.872,-4.625],[-30.75,-3.747]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[-0.468,0],[0,0],[0,0.498],[0,0],[0.499,0],[0,0],[0,-0.498]],"o":[[0,0.498],[0,0],[0.499,0],[0,0],[0,-0.498],[0,0],[-0.468,0],[0,0]],"v":[[12.183,3.746],[13.061,4.624],[19.123,4.624],[20.002,3.746],[20.002,-3.747],[19.123,-4.625],[13.061,-4.625],[12.183,-3.747]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0,0],[-0.469,0],[0,0],[0,0.498],[0,0],[0.498,0],[0,0],[0,-0.498]],"o":[[0,0.498],[0,0],[0.498,0],[0,0],[0,-0.498],[0,0],[-0.469,0],[0,0]],"v":[[-9.284,3.746],[-8.405,4.624],[-2.343,4.624],[-1.464,3.746],[-1.464,-3.747],[-2.343,-4.625],[-8.405,-4.625],[-9.284,-3.747]],"c":true},"ix":2},"nm":"路径 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[0,0],[-0.498,0],[0,0],[0,0.498],[0,0],[0.469,0],[0,0],[0,-0.498]],"o":[[0,0.498],[0,0],[0.469,0],[0,0],[0,-0.498],[0,0],[-0.498,0],[0,0]],"v":[[-20.032,3.746],[-19.153,4.624],[-13.091,4.624],[-12.212,3.746],[-12.212,-3.747],[-13.091,-4.625],[-19.153,-4.625],[-20.032,-3.747]],"c":true},"ix":2},"nm":"路径 5","mn":"ADBE Vector Shape - Group","hd":false},{"ind":5,"ty":"sh","ix":6,"ks":{"a":0,"k":{"i":[[0,0],[-0.498,0],[0,0],[0,0.498],[0,0],[0.468,0],[0,0],[0,-0.498]],"o":[[0,0.498],[0,0],[0.468,0],[0,0],[0,-0.498],[0,0],[-0.498,0],[0,0]],"v":[[1.464,3.746],[2.343,4.624],[8.405,4.624],[9.284,3.746],[9.284,-3.747],[8.405,-4.625],[2.343,-4.625],[1.464,-3.747]],"c":true},"ix":2},"nm":"路径 6","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.972999961703,0.976000019148,0.984000052658,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[43.154,171.3],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 3","np":10,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.289,0],[0,0],[0,1.288],[0,0],[-1.289,0],[0,0],[0,-1.288]],"o":[[0,1.288],[0,0],[-1.289,0],[0,0],[0,-1.288],[0,0],[1.289,0],[0,0]],"v":[[33.678,5.21],[31.335,7.553],[-31.335,7.553],[-33.678,5.21],[-33.678,-5.21],[-31.335,-7.553],[31.335,-7.553],[33.678,-5.21]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.62400004069,0.654999976065,0.702000038297,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[43.154,171.3],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.289,0],[0,0],[0,1.287],[0,0],[-1.288,0],[0,0],[0,-1.287]],"o":[[0,1.287],[0,0],[-1.288,0],[0,0],[0,-1.287],[0,0],[1.289,0],[0,0]],"v":[[40.283,14.724],[37.94,17.066],[-37.94,17.066],[-40.282,14.724],[-40.282,13.816],[-37.94,11.474],[37.94,11.474],[40.283,13.816]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[1.289,0],[0,0],[0,1.288],[0,0],[-1.288,0],[0,0],[0,-1.288]],"o":[[0,1.288],[0,0],[-1.288,0],[0,0],[0,-1.288],[0,0],[1.289,0],[0,0]],"v":[[40.283,5.21],[37.94,7.552],[-37.94,7.552],[-40.282,5.21],[-40.282,4.303],[-37.94,1.961],[37.94,1.961],[40.283,4.303]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[1.289,0],[0,0],[0,1.288],[0,0],[-1.288,0],[0,0],[0,-1.288]],"o":[[0,1.288],[0,0],[-1.288,0],[0,0],[0,-1.288],[0,0],[1.289,0],[0,0]],"v":[[40.283,-4.303],[37.94,-1.962],[-37.94,-1.962],[-40.282,-4.303],[-40.282,-5.211],[-37.94,-7.552],[37.94,-7.552],[40.283,-5.211]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0,0],[1.289,0],[0,0],[0,1.288],[0,0],[-1.288,0],[0,0],[0,-1.288]],"o":[[0,1.288],[0,0],[-1.288,0],[0,0],[0,-1.288],[0,0],[1.289,0],[0,0]],"v":[[40.283,-13.816],[37.94,-11.474],[-37.94,-11.474],[-40.282,-13.816],[-40.282,-14.723],[-37.94,-17.065],[37.94,-17.065],[40.283,-14.723]],"c":true},"ix":2},"nm":"路径 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[125.257,178.004],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 5","np":8,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[3.221,0],[0,0],[0,3.043],[0,0],[-3.221,0],[0,0],[0,-3.043]],"o":[[0,3.043],[0,0],[-3.221,0],[0,0],[0,-3.043],[0,0],[3.221,0],[0,0]],"v":[[85.5,15.467],[79.643,21],[-79.643,21],[-85.5,15.467],[-85.5,-15.467],[-79.643,-21],[79.643,-21],[85.5,-15.467]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[85.75,180.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 6","np":4,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-18.962,1.434],[5.667,1.434],[5.667,4.566],[-18.962,4.566]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-18.962,-4.567],[18.962,-4.567],[18.962,-1.435],[-18.962,-1.435]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[46.449,134.594],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 7","np":6,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,3.015],[3.016,0],[0,-3.016],[-3.017,0]],"o":[[0,-3.016],[-3.017,0],[0,3.015],[3.016,0]],"v":[[5.448,0],[0.001,-5.444],[-5.448,0],[0.001,5.444]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[18.349,134.594],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 8","np":4,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-0.498],[0,0],[-0.498,0],[0,0],[0,0.498],[0,0],[0.499,0]],"o":[[-0.498,0],[0,0],[0,0.498],[0,0],[0.499,0],[0,0],[0,-0.498],[0,0]],"v":[[23.809,-4.61],[22.931,-3.732],[22.931,3.761],[23.809,4.639],[29.871,4.639],[30.75,3.761],[30.75,-3.732],[29.871,-4.61]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[-0.468,0],[0,0],[0,0.498],[0,0],[0.498,0],[0,0],[0,-0.498]],"o":[[0,0.498],[0,0],[0.498,0],[0,0],[0,-0.498],[0,0],[-0.468,0],[0,0]],"v":[[-30.75,3.732],[-29.872,4.61],[-23.81,4.61],[-22.931,3.732],[-22.931,-3.761],[-23.81,-4.639],[-29.872,-4.639],[-30.75,-3.761]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[-0.468,0],[0,0],[0,0.498],[0,0],[0.499,0],[0,0],[0,-0.498]],"o":[[0,0.498],[0,0],[0.499,0],[0,0],[0,-0.498],[0,0],[-0.468,0],[0,0]],"v":[[12.183,3.732],[13.061,4.61],[19.123,4.61],[20.002,3.732],[20.002,-3.761],[19.123,-4.639],[13.061,-4.639],[12.183,-3.761]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0,0],[-0.469,0],[0,0],[0,0.498],[0,0],[0.498,0],[0,0],[0,-0.498]],"o":[[0,0.498],[0,0],[0.498,0],[0,0],[0,-0.498],[0,0],[-0.469,0],[0,0]],"v":[[-9.284,3.732],[-8.405,4.61],[-2.343,4.61],[-1.464,3.732],[-1.464,-3.761],[-2.343,-4.639],[-8.405,-4.639],[-9.284,-3.761]],"c":true},"ix":2},"nm":"路径 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[0,0],[-0.498,0],[0,0],[0,0.498],[0,0],[0.469,0],[0,0],[0,-0.498]],"o":[[0,0.498],[0,0],[0.469,0],[0,0],[0,-0.498],[0,0],[-0.498,0],[0,0]],"v":[[-20.032,3.732],[-19.153,4.61],[-13.091,4.61],[-12.212,3.732],[-12.212,-3.761],[-13.091,-4.639],[-19.153,-4.639],[-20.032,-3.761]],"c":true},"ix":2},"nm":"路径 5","mn":"ADBE Vector Shape - Group","hd":false},{"ind":5,"ty":"sh","ix":6,"ks":{"a":0,"k":{"i":[[0,0],[-0.498,0],[0,0],[0,0.498],[0,0],[0.468,0],[0,0],[0,-0.498]],"o":[[0,0.498],[0,0],[0.468,0],[0,0],[0,-0.498],[0,0],[-0.498,0],[0,0]],"v":[[1.464,3.732],[2.343,4.61],[8.405,4.61],[9.284,3.732],[9.284,-3.761],[8.405,-4.639],[2.343,-4.639],[1.464,-3.761]],"c":true},"ix":2},"nm":"路径 6","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.972999961703,0.976000019148,0.984000052658,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[43.154,119.065],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 9","np":10,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.289,0],[0,0],[0,1.288],[0,0],[-1.289,0],[0,0],[0,-1.288]],"o":[[0,1.288],[0,0],[-1.289,0],[0,0],[0,-1.288],[0,0],[1.289,0],[0,0]],"v":[[33.678,5.21],[31.335,7.553],[-31.335,7.553],[-33.678,5.21],[-33.678,-5.211],[-31.335,-7.553],[31.335,-7.553],[33.678,-5.211]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.62400004069,0.654999976065,0.702000038297,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[43.154,119.05],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.289,0],[0,0],[0,1.287],[0,0],[-1.288,0],[0,0],[0,-1.287]],"o":[[0,1.287],[0,0],[-1.288,0],[0,0],[0,-1.287],[0,0],[1.289,0],[0,0]],"v":[[40.283,14.724],[37.94,17.066],[-37.94,17.066],[-40.282,14.724],[-40.282,13.816],[-37.94,11.474],[37.94,11.474],[40.283,13.816]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[1.289,0],[0,0],[0,1.288],[0,0],[-1.288,0],[0,0],[0,-1.288]],"o":[[0,1.288],[0,0],[-1.288,0],[0,0],[0,-1.288],[0,0],[1.289,0],[0,0]],"v":[[40.283,5.21],[37.94,7.552],[-37.94,7.552],[-40.282,5.21],[-40.282,4.303],[-37.94,1.961],[37.94,1.961],[40.283,4.303]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[1.289,0],[0,0],[0,1.288],[0,0],[-1.288,0],[0,0],[0,-1.288]],"o":[[0,1.288],[0,0],[-1.288,0],[0,0],[0,-1.288],[0,0],[1.289,0],[0,0]],"v":[[40.283,-4.303],[37.94,-1.962],[-37.94,-1.962],[-40.282,-4.303],[-40.282,-5.211],[-37.94,-7.552],[37.94,-7.552],[40.283,-5.211]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0,0],[1.289,0],[0,0],[0,1.288],[0,0],[-1.288,0],[0,0],[0,-1.288]],"o":[[0,1.288],[0,0],[-1.288,0],[0,0],[0,-1.288],[0,0],[1.289,0],[0,0]],"v":[[40.283,-13.816],[37.94,-11.474],[-37.94,-11.474],[-40.282,-13.816],[-40.282,-14.723],[-37.94,-17.065],[37.94,-17.065],[40.283,-14.723]],"c":true},"ix":2},"nm":"路径 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[125.257,125.783],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 11","np":8,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-3.045],[0,0],[3.222,0],[0,0],[0,3.045],[0,0],[-3.221,0]],"o":[[3.222,0],[0,0],[0,3.045],[0,0],[-3.221,0],[0,0],[0,-3.045],[0,0]],"v":[[79.643,-21],[85.5,-15.463],[85.5,15.463],[79.643,21],[-79.643,21],[-85.5,15.463],[-85.5,-15.463],[-79.643,-21]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[85.75,127.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 12","np":4,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-18.962,1.435],[5.667,1.435],[5.667,4.567],[-18.962,4.567]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-18.962,-4.566],[18.962,-4.566],[18.962,-1.434],[-18.962,-1.434]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[46.449,82.373],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 13","np":6,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,3.015],[3.016,0],[0,-3.015],[-3.017,0]],"o":[[0,-3.015],[-3.017,0],[0,3.015],[3.016,0]],"v":[[5.448,0.001],[0.001,-5.445],[-5.448,0.001],[0.001,5.445]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[18.349,82.373],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 14","np":4,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-0.497],[0,0],[-0.498,0],[0,0],[0,0.498],[0,0],[0.499,0]],"o":[[-0.498,0],[0,0],[0,0.498],[0,0],[0.499,0],[0,0],[0,-0.497],[0,0]],"v":[[23.809,-4.625],[22.931,-3.747],[22.931,3.747],[23.809,4.625],[29.871,4.625],[30.75,3.747],[30.75,-3.747],[29.871,-4.625]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[-0.468,0],[0,0],[0,0.498],[0,0],[0.498,0],[0,0],[0,-0.497]],"o":[[0,0.498],[0,0],[0.498,0],[0,0],[0,-0.497],[0,0],[-0.468,0],[0,0]],"v":[[-30.75,3.747],[-29.872,4.625],[-23.81,4.625],[-22.931,3.747],[-22.931,-3.747],[-23.81,-4.625],[-29.872,-4.625],[-30.75,-3.747]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[-0.468,0],[0,0],[0,0.498],[0,0],[0.499,0],[0,0],[0,-0.497]],"o":[[0,0.498],[0,0],[0.499,0],[0,0],[0,-0.497],[0,0],[-0.468,0],[0,0]],"v":[[12.183,3.747],[13.061,4.625],[19.123,4.625],[20.002,3.747],[20.002,-3.747],[19.123,-4.625],[13.061,-4.625],[12.183,-3.747]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0,0],[-0.469,0],[0,0],[0,0.498],[0,0],[0.498,0],[0,0],[0,-0.497]],"o":[[0,0.498],[0,0],[0.498,0],[0,0],[0,-0.497],[0,0],[-0.469,0],[0,0]],"v":[[-9.284,3.747],[-8.405,4.625],[-2.343,4.625],[-1.464,3.747],[-1.464,-3.747],[-2.343,-4.625],[-8.405,-4.625],[-9.284,-3.747]],"c":true},"ix":2},"nm":"路径 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[0,0],[-0.498,0],[0,0],[0,0.498],[0,0],[0.469,0],[0,0],[0,-0.497]],"o":[[0,0.498],[0,0],[0.469,0],[0,0],[0,-0.497],[0,0],[-0.498,0],[0,0]],"v":[[-20.032,3.747],[-19.153,4.625],[-13.091,4.625],[-12.212,3.747],[-12.212,-3.747],[-13.091,-4.625],[-19.153,-4.625],[-20.032,-3.747]],"c":true},"ix":2},"nm":"路径 5","mn":"ADBE Vector Shape - Group","hd":false},{"ind":5,"ty":"sh","ix":6,"ks":{"a":0,"k":{"i":[[0,0],[-0.498,0],[0,0],[0,0.498],[0,0],[0.468,0],[0,0],[0,-0.497]],"o":[[0,0.498],[0,0],[0.468,0],[0,0],[0,-0.497],[0,0],[-0.498,0],[0,0]],"v":[[1.464,3.747],[2.343,4.625],[8.405,4.625],[9.284,3.747],[9.284,-3.747],[8.405,-4.625],[2.343,-4.625],[1.464,-3.747]],"c":true},"ix":2},"nm":"路径 6","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.972999961703,0.976000019148,0.984000052658,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[43.154,66.83],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 15","np":10,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.289,0],[0,0],[0,1.288],[0,0],[-1.289,0],[0,0],[0,-1.287]],"o":[[0,1.288],[0,0],[-1.289,0],[0,0],[0,-1.287],[0,0],[1.289,0],[0,0]],"v":[[33.678,5.21],[31.335,7.553],[-31.335,7.553],[-33.678,5.21],[-33.678,-5.21],[-31.335,-7.552],[31.335,-7.552],[33.678,-5.21]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.62400004069,0.654999976065,0.702000038297,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[43.154,66.83],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 16","np":2,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.289,0],[0,0],[0,1.288],[0,0],[-1.288,0],[0,0],[0,-1.287]],"o":[[0,1.288],[0,0],[-1.288,0],[0,0],[0,-1.287],[0,0],[1.289,0],[0,0]],"v":[[40.283,14.709],[37.94,17.051],[-37.94,17.051],[-40.282,14.709],[-40.282,13.801],[-37.94,11.46],[37.94,11.46],[40.283,13.801]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[1.289,0],[0,0],[0,1.288],[0,0],[-1.288,0],[0,0],[0,-1.288]],"o":[[0,1.288],[0,0],[-1.288,0],[0,0],[0,-1.288],[0,0],[1.289,0],[0,0]],"v":[[40.283,5.195],[37.94,7.537],[-37.94,7.537],[-40.282,5.195],[-40.282,4.288],[-37.94,1.946],[37.94,1.946],[40.283,4.288]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[1.289,0],[0,0],[0,1.289],[0,0],[-1.288,0],[0,0],[0,-1.288]],"o":[[0,1.289],[0,0],[-1.288,0],[0,0],[0,-1.288],[0,0],[1.289,0],[0,0]],"v":[[40.283,-4.289],[37.94,-1.947],[-37.94,-1.947],[-40.282,-4.289],[-40.282,-5.196],[-37.94,-7.538],[37.94,-7.538],[40.283,-5.196]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0,0],[1.289,0],[0,0],[0,1.288],[0,0],[-1.288,0],[0,0],[0,-1.289]],"o":[[0,1.288],[0,0],[-1.288,0],[0,0],[0,-1.289],[0,0],[1.289,0],[0,0]],"v":[[40.283,-13.802],[37.94,-11.46],[-37.94,-11.46],[-40.282,-13.802],[-40.282,-14.709],[-37.94,-17.051],[37.94,-17.051],[40.283,-14.709]],"c":true},"ix":2},"nm":"路径 4","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[125.257,73.548],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 17","np":8,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[3.221,0],[0,0],[0,3.043],[0,0],[-3.221,0],[0,0],[0,-3.044]],"o":[[0,3.043],[0,0],[-3.221,0],[0,0],[0,-3.044],[0,0],[3.221,0],[0,0]],"v":[[85.5,15.467],[79.643,21],[-79.643,21],[-85.5,15.467],[-85.5,-15.466],[-79.643,-21],[79.643,-21],[85.5,-15.466]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[85.75,74.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 18","np":4,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.757,0],[0,0],[0,0.779],[0,0],[-0.756,0],[0,0],[0,-0.778]],"o":[[0,0.779],[0,0],[-0.756,0],[0,0],[0,-0.778],[0,0],[0.757,0],[0,0]],"v":[[56.5,10.592],[55.133,12],[51.964,12],[50.597,10.592],[50.597,-10.592],[51.964,-12],[55.133,-12],[56.5,-10.592]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,0],[0.756,0],[0,0],[0,0.779],[0,0],[-0.756,0],[0,0],[0,-0.778]],"o":[[0,0.779],[0,0],[-0.756,0],[0,0],[0,-0.778],[0,0],[0.756,0],[0,0]],"v":[[44.606,10.592],[43.24,12],[40.07,12],[38.704,10.592],[38.704,-10.592],[40.07,-12],[43.24,-12],[44.606,-10.592]],"c":true},"ix":2},"nm":"路径 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[0.756,0],[0,0],[0,0.779],[0,0],[-0.757,0],[0,0],[0,-0.778]],"o":[[0,0.779],[0,0],[-0.757,0],[0,0],[0,-0.778],[0,0],[0.756,0],[0,0]],"v":[[32.714,10.592],[31.347,12],[28.178,12],[26.811,10.592],[26.811,-10.592],[28.178,-12],[31.347,-12],[32.714,-10.592]],"c":true},"ix":2},"nm":"路径 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[0,0],[0.756,0],[0,0],[0,0.779],[0,0],[-0.756,0],[0,0],[0,-0.778]],"o":[[0,0.779],[0,0],[-0.756,0],[0,0],[0,-0.778],[0,0],[0.756,0],[0,0]],"v":[[20.82,10.592],[19.454,12],[16.284,12],[14.917,10.592],[14.917,-10.592],[16.284,-12],[19.454,-12],[20.82,-10.592]],"c":true},"ix":2},"nm":"路径 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[0,0],[0.756,0],[0,0],[0,0.779],[0,0],[-0.756,0],[0,0],[0,-0.778]],"o":[[0,0.779],[0,0],[-0.756,0],[0,0],[0,-0.778],[0,0],[0.756,0],[0,0]],"v":[[8.898,10.592],[7.531,12],[4.361,12],[2.995,10.592],[2.995,-10.592],[4.361,-12],[7.531,-12],[8.898,-10.592]],"c":true},"ix":2},"nm":"路径 5","mn":"ADBE Vector Shape - Group","hd":false},{"ind":5,"ty":"sh","ix":6,"ks":{"a":0,"k":{"i":[[0,0],[0.756,0],[0,0],[0,0.779],[0,0],[-0.756,0],[0,0],[0,-0.778]],"o":[[0,0.779],[0,0],[-0.756,0],[0,0],[0,-0.778],[0,0],[0.756,0],[0,0]],"v":[[-2.995,10.592],[-4.361,12],[-7.531,12],[-8.898,10.592],[-8.898,-10.592],[-7.531,-12],[-4.361,-12],[-2.995,-10.592]],"c":true},"ix":2},"nm":"路径 6","mn":"ADBE Vector Shape - Group","hd":false},{"ind":6,"ty":"sh","ix":7,"ks":{"a":0,"k":{"i":[[0,0],[0.756,0],[0,0],[0,0.779],[0,0],[-0.756,0],[0,0],[0,-0.778]],"o":[[0,0.779],[0,0],[-0.756,0],[0,0],[0,-0.778],[0,0],[0.756,0],[0,0]],"v":[[-14.888,10.592],[-16.255,12],[-19.425,12],[-20.792,10.592],[-20.792,-10.592],[-19.425,-12],[-16.255,-12],[-14.888,-10.592]],"c":true},"ix":2},"nm":"路径 7","mn":"ADBE Vector Shape - Group","hd":false},{"ind":7,"ty":"sh","ix":8,"ks":{"a":0,"k":{"i":[[0,0],[0.756,0],[0,0],[0,0.779],[0,0],[-0.756,0],[0,0],[0,-0.778]],"o":[[0,0.779],[0,0],[-0.756,0],[0,0],[0,-0.778],[0,0],[0.756,0],[0,0]],"v":[[-26.782,10.592],[-28.148,12],[-31.318,12],[-32.685,10.592],[-32.685,-10.592],[-31.318,-12],[-28.148,-12],[-26.782,-10.592]],"c":true},"ix":2},"nm":"路径 8","mn":"ADBE Vector Shape - Group","hd":false},{"ind":8,"ty":"sh","ix":9,"ks":{"a":0,"k":{"i":[[0,0],[0.756,0],[0,0],[0,0.779],[0,0],[-0.756,0],[0,0],[0,-0.778]],"o":[[0,0.779],[0,0],[-0.756,0],[0,0],[0,-0.778],[0,0],[0.756,0],[0,0]],"v":[[-38.704,10.592],[-40.07,12],[-43.24,12],[-44.607,10.592],[-44.607,-10.592],[-43.24,-12],[-40.07,-12],[-38.704,-10.592]],"c":true},"ix":2},"nm":"路径 9","mn":"ADBE Vector Shape - Group","hd":false},{"ind":9,"ty":"sh","ix":10,"ks":{"a":0,"k":{"i":[[0,0],[0.756,0],[0,0],[0,0.779],[0,0],[-0.756,0],[0,0],[0,-0.778]],"o":[[0,0.779],[0,0],[-0.756,0],[0,0],[0,-0.778],[0,0],[0.756,0],[0,0]],"v":[[-50.597,10.592],[-51.964,12],[-55.133,12],[-56.5,10.592],[-56.5,-10.592],[-55.133,-12],[-51.964,-12],[-50.597,-10.592]],"c":true},"ix":2},"nm":"路径 10","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"合并路径 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[64.75,21.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 19","np":14,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.58,0],[0,3.614],[-2.134,1.148],[-0.168,-0.326],[0.322,-0.17],[0,-1.941],[-2.836,0],[0,2.863],[1.7,0.907],[-0.169,0.34],[-0.337,-0.17],[0,-2.451]],"o":[[-3.58,0],[0,-2.437],[0.322,-0.17],[0.169,0.34],[-1.7,0.907],[0,2.863],[2.836,0],[0,-1.941],[-0.322,-0.17],[0.168,-0.326],[2.149,1.134],[-0.014,3.628]],"v":[[0,6.271],[-6.5,-0.29],[-3.032,-6.1],[-2.12,-5.816],[-2.4,-4.896],[-5.152,-0.29],[0,4.911],[5.152,-0.29],[2.4,-4.896],[2.12,-5.816],[3.032,-6.1],[6.5,-0.29]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[0.227450981736,1,0.470588237047,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[0.564705908298,1,0.701960802078,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":18,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":130,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":132,"s":[0.564705908298,1,0.701960802078,1]},{"t":134,"s":[0.227450981736,1,0.470588237047,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[146.75,21.98],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":14,"s":[100,100]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":16,"s":[80,80]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":18,"s":[100,100]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":130,"s":[100,100]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":132,"s":[80,80]},{"t":134,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 20","np":4,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.365,0],[0,0.368],[0,0],[-0.365,0],[0,-0.368],[0,0]],"o":[[-0.379,0],[0,0],[0,-0.383],[0.379,0],[0,0],[0,0.382]],"v":[[0,4.159],[-0.674,3.479],[-0.674,-3.479],[0,-4.159],[0.674,-3.479],[0.674,3.479]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[0.227450981736,1,0.470588237047,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[0.564212501049,1,0.701363921165,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":18,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":130,"s":[1,1,1,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":132,"s":[0.564212501049,1,0.701363921165,1]},{"t":134,"s":[0.227450981736,1,0.470588237047,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[146.75,18.409],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":14,"s":[100,100]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":16,"s":[80,80]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":18,"s":[100,100]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":130,"s":[100,100]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":132,"s":[80,80]},{"t":134,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 21","np":4,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.522,0],[0,-5.523],[5.522,0],[0,5.523]],"o":[[5.522,0],[0,5.523],[-5.522,0],[0,-5.523]],"v":[[0,-10],[10,0],[0,10],[-10,0]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":14,"s":[0.62400004069,0.654999976065,0.702000038297,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":16,"s":[0.447843343019,0.476409614086,0.519719839096,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":18,"s":[0.62400004069,0.654999976065,0.702000038297,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":130,"s":[0.62400004069,0.654999976065,0.702000038297,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":132,"s":[0.447843343019,0.476409614086,0.519719839096,1]},{"t":134,"s":[0.62400004069,0.654999976065,0.702000038297,1]}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[146.75,21.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 22","np":4,"cix":2,"bm":0,"ix":22,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-3.032,0],[0,0],[0,-3.067],[0,0],[0.024,-0.211],[0.021,-0.114],[0.004,-0.022],[0.665,-0.735],[1.602,0],[0,0],[0,0],[0.959,1.061],[0.197,1.017],[0.005,0.022],[0.014,0.116],[0,0.217]],"o":[[0,-3.038],[0,0],[3.002,0],[0,0],[0,0.217],[-0.014,0.122],[-0.005,0.022],[-0.199,1.026],[-1.001,1.108],[0,0],[0,0],[-1.52,-0.057],[-0.665,-0.735],[-0.005,-0.031],[-0.02,-0.114],[-0.024,-0.217],[0,0]],"v":[[-85.5,-15.455],[-80.019,-21],[80.019,-21],[85.5,-15.455],[85.5,15.455],[85.463,16.097],[85.412,16.448],[85.399,16.514],[84.062,19.192],[80.019,21],[-80.019,21],[-80.224,20.996],[-84.062,19.192],[-85.398,16.523],[-85.412,16.448],[-85.463,16.103],[-85.5,15.455]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.791999966491,0.816000007181,0.851000019148,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[85.75,21.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 23","np":4,"cix":2,"bm":0,"ix":23,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[3.032,0],[0,0],[0,3.034],[0,0],[-3.032,0],[0,0],[0,-3.033]],"o":[[0,3.004],[0,0],[-3.003,0],[0,0],[0,-3.004],[0,0],[3.002,0],[0,0]],"v":[[85.5,15.283],[80.019,20.766],[-80.019,20.766],[-85.5,15.283],[-85.5,-15.283],[-80.019,-20.766],[80.019,-20.766],[85.5,-15.283]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.910000011968,0.317999985639,0.180000005984,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[85.75,21.017],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 24","np":4,"cix":2,"bm":0,"ix":24,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-63.917,-70.803],[63.917,-70.803],[63.917,70.803],[-63.917,70.803]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.894000004787,0.913999968884,0.941000007181,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[85.75,109.923],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 25","np":2,"cix":2,"bm":0,"ix":25,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":180,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/src/components/Animation/data/loading.json b/src/components/Animation/data/loading.json new file mode 100644 index 0000000..65f9ac9 --- /dev/null +++ b/src/components/Animation/data/loading.json @@ -0,0 +1 @@ +{"v":"5.6.5","fr":30,"ip":0,"op":90,"w":360,"h":360,"nm":"loadding","ddd":0,"assets":[{"id":"image_0","w":360,"h":360,"u":"images/","p":"img_0.png","e":0}],"layers":[{"ddd":0,"ind":2,"ty":4,"nm":"mask","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[180,156,0],"to":[0,2.333,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":15,"s":[180,170,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":30,"s":[180,156,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":45,"s":[180,170,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":60,"s":[180,156,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":75,"s":[180,170,0],"to":[0,0,0],"ti":[0,2.333,0]},{"t":90,"s":[180,156,0]}],"ix":2},"a":{"a":0,"k":[48.25,9.25,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-48,-9],[48,-9],[48,9],[-48,9]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.33300000359,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[48.25,9.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"eye-rr","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[148.375,173.625,0],"ix":2},"a":{"a":0,"k":[-31,-6,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[7.26,7.26],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-30.398,-6.989],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":1,"nm":"eye-r","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":89,"s":[1080]}],"ix":10},"p":{"a":0,"k":[210.5,183.5,0],"ix":2},"a":{"a":0,"k":[150,183,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":0,"k":{"i":[[10.163,0],[0,-10.163],[-10.163,0],[0,10.163]],"o":[[-10.163,0],[0,10.163],[10.163,0],[0,-10.163]],"v":[[149.902,164.5],[131.5,182.902],[149.902,201.303],[168.303,182.902]],"c":true},"ix":1},"o":{"a":0,"k":100,"ix":3},"x":{"a":0,"k":0,"ix":4},"nm":"蒙版 1"}],"sw":360,"sh":360,"sc":"#ffffff","ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"eye-ll","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[148.375,173.625,0],"ix":2},"a":{"a":0,"k":[-31,-6,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[7.26,7.26],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[1,1,1,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-30.398,-6.989],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":1,"nm":"eye-l","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":90,"s":[1080]}],"ix":10},"p":{"a":0,"k":[150.5,183.5,0],"ix":2},"a":{"a":0,"k":[150,183,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":0,"k":{"i":[[10.163,0],[0,-10.163],[-10.163,0],[0,10.163]],"o":[[-10.163,0],[0,10.163],[10.163,0],[0,-10.163]],"v":[[149.902,164.5],[131.5,182.902],[149.902,201.303],[168.303,182.902]],"c":true},"ix":1},"o":{"a":0,"k":100,"ix":3},"x":{"a":0,"k":0,"ix":4},"nm":"蒙版 1"}],"sw":360,"sh":360,"sc":"#ffffff","ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"cat","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[180,180,0],"ix":2},"a":{"a":0,"k":[72.5,61,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.742,3.784],[1.596,1.262],[8.454,-5.156],[4.387,-3.501],[12.276,0],[10.309,-5.456],[5.582,3.39],[3.113,-2.428],[0.823,-4.21],[-0.032,-5.14],[-5.662,-14.523],[-0.032,-0.079],[0,-1.624],[-71.84,0.035],[0,7.584],[0.145,1.482],[-0.113,0.268],[-0.032,7.19]],"o":[[-0.822,-4.21],[-3.13,-2.444],[-5.598,3.406],[-10.358,-5.519],[-12.196,0],[-4.372,-3.5],[-8.404,-5.109],[-1.614,1.262],[-0.742,3.784],[0.032,7.191],[0.033,0.079],[-0.161,1.64],[0,7.584],[72.177,-0.035],[0,-1.451],[0.145,-0.237],[5.662,-14.539],[0,-5.125]],"v":[[70.894,-50.074],[67.281,-58.194],[50.292,-54.22],[34.37,-42.788],[-0.153,-51.208],[-34.499,-42.883],[-50.39,-54.267],[-67.28,-58.194],[-70.894,-50.074],[-71.991,-36.418],[-65.377,-0.451],[-65.28,-0.23],[-65.538,4.689],[-0.153,60.604],[65.232,4.689],[65.021,0.29],[65.393,-0.466],[72.007,-36.433]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.987999949736,0.33300000359,0.2,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[72.273,60.889],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"组 1","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":90,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":2,"nm":"loading.psd","cl":"psd","refId":"image_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":90,"s":[1080]}],"ix":10},"p":{"a":0,"k":[180,180,0],"ix":2},"a":{"a":0,"k":[180,180,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":90,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/src/components/Animation/index.vue b/src/components/Animation/index.vue new file mode 100644 index 0000000..4414242 --- /dev/null +++ b/src/components/Animation/index.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/components/AssociatedEmail/README.md b/src/components/AssociatedEmail/README.md new file mode 100644 index 0000000..5c9639c --- /dev/null +++ b/src/components/AssociatedEmail/README.md @@ -0,0 +1,50 @@ +# AssociatedEmail + +### 说明 +- AssociatedEmail组件为关联邮箱组件,demo如下 +``` js +// tempalte + + +// script +const handleEmailStar = (props:object) => { + +}; +const handleEmailDeleted = (props:object) => { + +}; +``` +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| id? | 卡片唯一id | string | | | +| email | 邮箱 | string | | | +| isMail? | 是否是主邮箱 | boolean | | false | +| isVerify? | 是否校验 | boolean | | false | +| hideDeleted? | 隐藏删除按钮 | boolean | | false | +| hideStar? | 隐藏Star按钮 | boolean | | false | + + +### Emits + +| 方法 | 说明 | 返回值 | +|-----------------|------------------------------------|---------------------| +| handleStar | 点击Star按钮触发 | props(当前卡片对象信息) | +| handleDeleted | 点击删除按钮触发 | props(当前卡片对象信息) | + + +### Slots + +| 名称 | 说明 | +|---------------------|---------------------------------------------| +| header | 邮箱区域插槽 | +| main | 主邮箱区域插槽 | +| content | 描述内容区域插槽 | +| right | 右侧按钮区域插槽 | diff --git a/src/components/AssociatedEmail/index.vue b/src/components/AssociatedEmail/index.vue new file mode 100644 index 0000000..e426d6a --- /dev/null +++ b/src/components/AssociatedEmail/index.vue @@ -0,0 +1,123 @@ + + + + + diff --git a/src/components/BranchAdd/index.vue b/src/components/BranchAdd/index.vue new file mode 100644 index 0000000..02355b0 --- /dev/null +++ b/src/components/BranchAdd/index.vue @@ -0,0 +1,373 @@ + + + + + + + diff --git a/src/components/BranchCompare/README.md b/src/components/BranchCompare/README.md new file mode 100644 index 0000000..c00a843 --- /dev/null +++ b/src/components/BranchCompare/README.md @@ -0,0 +1,37 @@ +TS接口文档可以查看同文件夹下的types.ts + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|---------------|---------------|-------------------------------|-----------|-------------------| +| data | 源分支和目标分支的数据 | BranchCompareData | — | {} | +| repoList | 仓库下拉数据项 | {label: string; value: string | number}[] | — | [] | +| branchList | 对应仓库下分支的下拉数据项 | {label: string; value: string | number}[] | — | [] | +| repoIcon? | 仓库对应图标 | string | — | 'version-history' | +| branchIcon? | 分支对应图标 | string | — | 'branch-merge' | +| repoIconSize? | 仓库图标尺寸 | string | — | '16px' | +| branchIconSize? | 分支图标尺寸 | string | — | '16px' | + +### Emits + +注意:以下事件都是组件内部对应的按钮点击触发,如果用插槽自定义对应区域的内容的话,事件自行监听即可 + +| 方法 | 说明 | 返回值 | +|-----------|------|-----------------------| +| repoChange | 仓库变化 | string | number | +| branchChange | 分支变化 | { sourceId: string | number; targetId: string | number } | + +### Slots + +| 名称 | 说明 | +| ------------- | -------------------------- | +| source-header | 源分支头部插槽 | +| repo-option | 仓库下拉option插槽 | +| source-option | 源分支下拉option插槽 | +| switch | 中间切换按钮插槽 | +| target-header | 目标分支头部插槽 | +| target-option | 源分支下拉option插槽 | +| repo-prefix | 仓库输入框部分前缀图标插槽 | +| branch-prefix | 分支输入框部分前缀图标插槽 | +| source-tip | 源分支底部信息插槽 | +| target-tip | 目标分支底部信息插槽 | diff --git a/src/components/BranchCompare/index.vue b/src/components/BranchCompare/index.vue new file mode 100644 index 0000000..f3d59f5 --- /dev/null +++ b/src/components/BranchCompare/index.vue @@ -0,0 +1,309 @@ + + + + + + + + diff --git a/src/components/BranchCompare/types.ts b/src/components/BranchCompare/types.ts new file mode 100644 index 0000000..d3faa76 --- /dev/null +++ b/src/components/BranchCompare/types.ts @@ -0,0 +1,6 @@ +export type BranchCompareData = { + repoId: string | number; + sourceId: string | number; + targetId: string | number; + [propName: string]: any; +} diff --git a/src/components/BranchCompareFork/README.md b/src/components/BranchCompareFork/README.md new file mode 100644 index 0000000..c00a843 --- /dev/null +++ b/src/components/BranchCompareFork/README.md @@ -0,0 +1,37 @@ +TS接口文档可以查看同文件夹下的types.ts + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|---------------|---------------|-------------------------------|-----------|-------------------| +| data | 源分支和目标分支的数据 | BranchCompareData | — | {} | +| repoList | 仓库下拉数据项 | {label: string; value: string | number}[] | — | [] | +| branchList | 对应仓库下分支的下拉数据项 | {label: string; value: string | number}[] | — | [] | +| repoIcon? | 仓库对应图标 | string | — | 'version-history' | +| branchIcon? | 分支对应图标 | string | — | 'branch-merge' | +| repoIconSize? | 仓库图标尺寸 | string | — | '16px' | +| branchIconSize? | 分支图标尺寸 | string | — | '16px' | + +### Emits + +注意:以下事件都是组件内部对应的按钮点击触发,如果用插槽自定义对应区域的内容的话,事件自行监听即可 + +| 方法 | 说明 | 返回值 | +|-----------|------|-----------------------| +| repoChange | 仓库变化 | string | number | +| branchChange | 分支变化 | { sourceId: string | number; targetId: string | number } | + +### Slots + +| 名称 | 说明 | +| ------------- | -------------------------- | +| source-header | 源分支头部插槽 | +| repo-option | 仓库下拉option插槽 | +| source-option | 源分支下拉option插槽 | +| switch | 中间切换按钮插槽 | +| target-header | 目标分支头部插槽 | +| target-option | 源分支下拉option插槽 | +| repo-prefix | 仓库输入框部分前缀图标插槽 | +| branch-prefix | 分支输入框部分前缀图标插槽 | +| source-tip | 源分支底部信息插槽 | +| target-tip | 目标分支底部信息插槽 | diff --git a/src/components/BranchCompareFork/index.vue b/src/components/BranchCompareFork/index.vue new file mode 100644 index 0000000..c7c35bd --- /dev/null +++ b/src/components/BranchCompareFork/index.vue @@ -0,0 +1,300 @@ + + + + + diff --git a/src/components/BranchCompareFork/types.ts b/src/components/BranchCompareFork/types.ts new file mode 100644 index 0000000..c582b1a --- /dev/null +++ b/src/components/BranchCompareFork/types.ts @@ -0,0 +1,7 @@ +export type BranchCompareData = { + repoId: string | number; + targetRepoId: string | number; + sourceId: string | number; + targetId: string | number; + [propName: string]: any; +} diff --git a/src/components/BranchContrastStatistics/README.md b/src/components/BranchContrastStatistics/README.md new file mode 100644 index 0000000..0041658 --- /dev/null +++ b/src/components/BranchContrastStatistics/README.md @@ -0,0 +1,33 @@ +# BranchContrastStatistics + +### 说明 +- 分支对比统计组件,demo如下 +``` js +// tempalte + +``` +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| commitNum? | 提交次数 | number | -- | 0 | +| changeNum | 文件改动数 | number | -- | 0 | +| userNum? | 贡献者数 | number | -- | 0 | + + +### Emits + +| 方法 | 说明 | 返回值 | +|-----------------|------------------------------------|---------------------| + + + +### Slots + +| 名称 | 说明 | +|---------------------|---------------------------------------------| + diff --git a/src/components/BranchContrastStatistics/index.vue b/src/components/BranchContrastStatistics/index.vue new file mode 100644 index 0000000..d12d191 --- /dev/null +++ b/src/components/BranchContrastStatistics/index.vue @@ -0,0 +1,50 @@ + + + + + diff --git a/src/components/BranchItem/README.md b/src/components/BranchItem/README.md new file mode 100644 index 0000000..7a752cd --- /dev/null +++ b/src/components/BranchItem/README.md @@ -0,0 +1,61 @@ +# BranchItem + +### 说明 +- 分支列表里面的分支卡片信息 + +``` js +import { mock } from 'mockjs'; + +// 数据定义为 @/components/BranchItem/type.ts +const branch = ref({ + name: mock('@word'), + behindCount: mock('@natural(0, 500)'), + aheadCount: mock('@natural(0, 500)'), + + repo: { + name: mock('@word'), + namespace: mock('@first') + }, + + lastCommit: { + id: mock('@id'), + message: mock('@paragraph'), + username: mock('@first'), + createTime: mock('@datetime') + } +}); + +// 此处使用v-bind统一prop,可以分开传入,如 + +``` + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| name | 分支名称 | string | - | - | +| behindCount | 落后默认分支commit个数 | number | - | - | +| aheadCount | 领先默认分支commit个数 | number | - | - | +| repo | 分支所属的仓库信息 | Repo | - | - | +| lastCommit | 分支下的最后一次commit | Commit | - | - | + +#### Repo +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| name | 仓库名称 | string | - | - | +| namespace | 仓库所属命名空间(用户或组织的namespace) | string | - | - | + +#### Commit +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| id | commit的hash Id | string | - | - | +| message | 提交描述 | string | - | - | +| username | commit提交人 | string | - | - | +| createTime | 提交时间 | string | - | - | + +### Emits +| 方法 | 说明 | 返回值 | +|-----------------|------------------------------------|---------------------| +| onView | 查看分支统计 | props整体数据 | +| onEdit | 编辑分支事件 | props整体数据 | +| onDelete | 删除分支事件 | props整体数据 | diff --git a/src/components/BranchItem/index.vue b/src/components/BranchItem/index.vue new file mode 100644 index 0000000..0fe3a0f --- /dev/null +++ b/src/components/BranchItem/index.vue @@ -0,0 +1,355 @@ + + + + + diff --git a/src/components/BranchItem/type.ts b/src/components/BranchItem/type.ts new file mode 100644 index 0000000..be10379 --- /dev/null +++ b/src/components/BranchItem/type.ts @@ -0,0 +1,44 @@ +export interface Commit { + id: string, + message: string, + author_name: string, + created_at: string, + open_gpg_verified: boolean; // 是否需要验证 + gpg_primary_key_id: string; // 密钥id + verification_status: number; // 验证状态 + name: string; // 名称 +} + +export interface MergerRequest { + id: string, + iid: string, + merge_request_type: string, + project_id: string, + state: string, + title: string, + updated_at: string, + web_url: string +} + +export interface Repo { + name: string, // 仓库名 + namespace: string, // 用户名 +} + +export interface Branch { + name: string, + description?: string; + behindCount: number, + aheadCount: number, + defaultBranch: string, + repo: Repo, + lastCommit: Commit, + mergeRequestBasic: MergerRequest, + + isDefault: boolean, + isProtected: boolean, + canDelete: boolean, + canProtect: boolean, + + moreOpts: Array, +} diff --git a/src/components/BranchSelect/index.vue b/src/components/BranchSelect/index.vue new file mode 100644 index 0000000..8bdcee8 --- /dev/null +++ b/src/components/BranchSelect/index.vue @@ -0,0 +1,118 @@ + + + + + diff --git a/src/components/BranchTagSelector/README.md b/src/components/BranchTagSelector/README.md new file mode 100644 index 0000000..ec634e4 --- /dev/null +++ b/src/components/BranchTagSelector/README.md @@ -0,0 +1,49 @@ +# BranchTagSelector + +### 说明 +- 组件有包含 分支/Tag 组合组件(./index.vue),以及单独的类型选择(./SingleSelector.vue) + +``` html +import BranchTagSelector from '@/components/BranchTagSelector/index.vue'; +import { useRepoId } from '@/utils/hools/useRepoId'; + +const currentBranch = computed(() => route.params.branchName); +const repoId = useRepoId(); + + +``` + +``` html +import BranchSelector from '@/components/BranchTagSelector/SingleSelector.vue'; + + +``` + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| repoId | 项目id(使用utls/hook中的repoId) | string | - | - | +| modelValue | 输入框展示的值(分支、tag或commitId) | string | - | - | + + +### Emits + +| 方法 | 说明 | 返回值 | +|-----------------|------------------------------------|---------------------| +| onClick | 组件的分支或着tag的点击事件(type用于区别点击的是分支还是tag,value为对应的值) | { type, value } | +| onTabChange | branch/tag切换 | type | +| update:modelValue | v-model数据双向绑定 | 当前的branch、tag等 | + + +### Slots + +| 名称 | 说明 | +|---------------------|---------------------------------------------| +| footer | 底部区域 | + diff --git a/src/components/BranchTagSelector/SingleSelector.vue b/src/components/BranchTagSelector/SingleSelector.vue new file mode 100644 index 0000000..af39515 --- /dev/null +++ b/src/components/BranchTagSelector/SingleSelector.vue @@ -0,0 +1,154 @@ + + + diff --git a/src/components/BranchTagSelector/index.vue b/src/components/BranchTagSelector/index.vue new file mode 100644 index 0000000..92d4b73 --- /dev/null +++ b/src/components/BranchTagSelector/index.vue @@ -0,0 +1,377 @@ + + + + + diff --git a/src/components/Card/README.md b/src/components/Card/README.md new file mode 100644 index 0000000..004828e --- /dev/null +++ b/src/components/Card/README.md @@ -0,0 +1,28 @@ +# Demo + +### 说明 +- 全局卡片组件 +- 已全局声明 + +``` js + +
+
+ +
+
+``` + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| simple | 简单模式-无padding | boolean | - | false | + + +### Slots + +| 名称 | 说明 | +|---------------------|---------------------------------------------| +| default | 中间显示区域 | + diff --git a/src/components/Card/index.vue b/src/components/Card/index.vue new file mode 100644 index 0000000..f558fac --- /dev/null +++ b/src/components/Card/index.vue @@ -0,0 +1,16 @@ + + + + + diff --git a/src/components/CherryPick/index.vue b/src/components/CherryPick/index.vue new file mode 100644 index 0000000..0fb7dda --- /dev/null +++ b/src/components/CherryPick/index.vue @@ -0,0 +1,314 @@ + + + + + diff --git a/src/components/CodeComparisonMenu/README.md b/src/components/CodeComparisonMenu/README.md new file mode 100644 index 0000000..a8e6b8f --- /dev/null +++ b/src/components/CodeComparisonMenu/README.md @@ -0,0 +1,73 @@ +# CodeComparisonMenu + +### 说明 +- CodeComparisonMenu组件为代码对比功能菜单组件,demo如下 +``` js +// tempalte + + +// script +const selectedChangeCode = (value:string) => { + +}; +const handleExpandCode = (props:object) => { + +}; +const handleSettingCode = (props:object) => { + +}; +const handleSearchCode = (props:object) => { + +}; +const changeSearchCode = (props:object) => { + +}; +``` +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| id? | 卡片唯一id | string | -- | -- | +| selected? | 下拉框选择值 | string | -- | -- | +| options | 下拉框options,例:[{name:'option_01',value:'1'}] | array | -- | [] | +| total? | 变更文件总数 | number | 0 | -- | +| addNum? | 增加数 | number | -- | 0 | +| reduceNum? | 减少数 | number | -- | 0 | +| searchWord? | 搜索值 | string | -- | -- | +| hideSelect? | 隐藏下拉框 | boolean | -- | false | +| hideSearch? | 隐藏搜索 | boolean | -- | false | +| hideExpand? | 隐藏展开全部 | boolean | -- | false | +| hideSetting? | 隐藏设置 | boolean | -- | false | + + +### Emits + +| 方法 | 说明 | 返回值 | +|-----------------|------------------------------------|---------------------| +| selectedChange | 下拉框选择后触发 | value:下拉框选择值 | +| handleExpand | 点击展开全部触发 | props(当前组件props对象) | +| handleSetting | 点击设置触发 | props(当前组件props对象) | +| handleSearch | 搜索框enter触发 | value:搜索框输入值 | +| changeSearch | 搜索框实时输入触发 | value:搜索框输入值 | + + +### Slots + +| 名称 | 说明 | +|---------------------|---------------------------------------------| +| left | 左侧布局区域插槽 | +| info | 查看文件文案区域插槽 | +| search | 搜索区域插槽 | +| right | 右侧按钮区域插槽 | diff --git a/src/components/CodeComparisonMenu/index.vue b/src/components/CodeComparisonMenu/index.vue new file mode 100644 index 0000000..58a8ba3 --- /dev/null +++ b/src/components/CodeComparisonMenu/index.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/components/Commit/README.md b/src/components/Commit/README.md new file mode 100644 index 0000000..468462c --- /dev/null +++ b/src/components/Commit/README.md @@ -0,0 +1,33 @@ +# Commit组件 + +### 说明 +``` js +// template + + +// script +const commitObj = { + avatar: 'https://devui.design/components/assets/image1.png', + name: '曾恒瑶', + repoName: 'test', + title: 'Merge pull request #905 from HwangTaehyun/masterMerge pull request #905 from HwangTaehyun/masterMerge pull request #905 from HwangTaehyun/masterMerge pull request #905 from HwangTaehyun/masterMerge pull request #905 from HwangTaehyun/master', + desc: 'Merge pull request #905 from HwangTaehyun/masterMerge pull request #905 from HwangTaehyun/masterMerge pull request #905 from HwangTaehyun/masterMerge pull request #905 from HwangTaehyun/masterMerge pull request #905 from Hwa', + tip: 'Add Github Contributor Stats under Tools', + id: '49bfc90a', + createdTime: '2021-10-2', + num: 84 +}; +``` +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|----------------|-------------------------|-------------------------------|-----------|-------| +| id | commit提交id | string | — | — | +| avatar | 头像src | string | — | — | +| name | 用户名 | string | — | — | +| repoName | commit所属仓库名 | string | — | — | +| title | 标题 | string | — | — | +| createdTime | 创建时间 | string | — | — | +| num? | 提交次数 | number | — | 1 | +| desc? | 描述 | string | — | — | +| tip? | 底部提示文案 | string | — | — | diff --git a/src/components/Commit/index.vue b/src/components/Commit/index.vue new file mode 100644 index 0000000..5869243 --- /dev/null +++ b/src/components/Commit/index.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/src/components/CommitItem/GpgTag.vue b/src/components/CommitItem/GpgTag.vue new file mode 100644 index 0000000..2c62a8d --- /dev/null +++ b/src/components/CommitItem/GpgTag.vue @@ -0,0 +1,102 @@ + + + + + \ No newline at end of file diff --git a/src/components/CommitItem/README.md b/src/components/CommitItem/README.md new file mode 100644 index 0000000..ba90a71 --- /dev/null +++ b/src/components/CommitItem/README.md @@ -0,0 +1,22 @@ +# CommitItem + +### 说明 +- Commit信息卡片,用于分支详情页-commit记录等 + +``` js +import CommitItem from '@/components/CommitItem/index.vue'; + + +``` + +### Props +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| id | commit id | string | - | - | +| message | commit描述信息 | string | - | - | +| repoId | commit对应的仓库id | string | - | - | +| namespace | commit对应的用户命名空间 | string | - | - | +| statusText | commit状态描述 | string | - | - | +| createTime | 创建时间 | string | - | - | +| userAvatar | 用户头像src | string | - | - | +| username | 用户名称 | string | - | - | diff --git a/src/components/CommitItem/index.vue b/src/components/CommitItem/index.vue new file mode 100644 index 0000000..b362761 --- /dev/null +++ b/src/components/CommitItem/index.vue @@ -0,0 +1,234 @@ + + + + + diff --git a/src/components/CommitItem/type.ts b/src/components/CommitItem/type.ts new file mode 100644 index 0000000..ca28202 --- /dev/null +++ b/src/components/CommitItem/type.ts @@ -0,0 +1,18 @@ +export interface Commit { + id: string; + message?: string; + repoId?: string; + namespace: string; + statusText?: string; + createTime: string; + userAvatar?: string; + username?: string; + author_user_name: string; + title?: string; + open_gpg_verified: boolean; // 是否需要验证 + gpg_primary_key_id: string; // 密钥id + verification_status: number; // 验证状态 + branch?: string; + [propName: string]: any; + name: string; // 名称 +} diff --git a/src/components/CommitList/README.md b/src/components/CommitList/README.md new file mode 100644 index 0000000..e6ef5e8 --- /dev/null +++ b/src/components/CommitList/README.md @@ -0,0 +1,23 @@ +# CommitList + +### 说明 +- Commit列表组件,传入Commit实例对象 +- @TODO 目前时间列表组件在交互样式上,与原型有点差别。已与HW沟通,待高保真定稿再联合修改 + +``` js + +``` + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| list | Commit对象数据数组 | Array | - | - | +| loadMore? | 是否显示加载更多按钮。开启loadMore才可监听onMore事件 | boolean | - | false | +| loadMoreText? | 加载更多按钮上的文字,需开启loadMore才生效 | string | - | '点击加载更多' | + +### Emits + +| 方法 | 说明 | 返回值 | +|-----------------|------------------------------------|---------------------| +| onMore | 点击加载更多按钮 | | \ No newline at end of file diff --git a/src/components/CommitList/index.vue b/src/components/CommitList/index.vue new file mode 100644 index 0000000..d05fe96 --- /dev/null +++ b/src/components/CommitList/index.vue @@ -0,0 +1,76 @@ + + + + + diff --git a/src/components/ContentLayout/README.md b/src/components/ContentLayout/README.md new file mode 100644 index 0000000..74af017 --- /dev/null +++ b/src/components/ContentLayout/README.md @@ -0,0 +1,30 @@ +# ContentLayout 布局组件 + +### 说明 + +1. 用于页面主体布局,在对应插槽位放置完成布局。横向分单板块或双板块 + +```js + +
default
+ +
+``` + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +| ---------------- | ----------------- | ------- | ------ | ------ | +| defaultClassName | 主体 class 类名 | string | | - | +| rightClassName | 右边 class 类名 | string | | - | +| gap | flex间距 | string | | - | +| rightConfig | 不同布局下右侧栏目的宽度 | object | | - | + +### Slots + +| 名称 | 说明 | +| ------- | ----------------- | +| default | 默认插槽 | +| right | 右边 sidebar 插槽 | diff --git a/src/components/ContentLayout/index.vue b/src/components/ContentLayout/index.vue new file mode 100644 index 0000000..41d0b25 --- /dev/null +++ b/src/components/ContentLayout/index.vue @@ -0,0 +1,76 @@ + + + + diff --git a/src/components/ConversationItem/README.md b/src/components/ConversationItem/README.md new file mode 100644 index 0000000..714bcd4 --- /dev/null +++ b/src/components/ConversationItem/README.md @@ -0,0 +1,49 @@ +# ConversationItem + +### 说明 +- ConversationItem组件为会话组件,demo如下 +``` js +// tempalte + + +// script +const handleDeletedConversation = (id:string) => { + +}; +``` +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| id | 卡片唯一id | string | | | +| ip | ip地址 | string | | | +| desc? | 描述 | string | | | +| tagText? | 标签文档(不传则不显示) | string | | | +| device? | 设备信息 | string | | | +| time | 登录时间 | string | | | +| hideDeleted? | 隐藏删除按钮 | boolean | | false | + + +### Emits + +| 方法 | 说明 | 返回值 | +|-----------------|------------------------------------|---------------------| +| handleDeleted | 点击删除按钮触发 | id(当前卡片唯一标识) | + + +### Slots + +| 名称 | 说明 | +|---------------------|---------------------------------------------| +| icon | 左侧icon区域插槽 | +| header | ip信息显示区域插槽 | +| content | 描述内容区域插槽 | +| right | 右侧按钮区域插槽 | diff --git a/src/components/ConversationItem/index.vue b/src/components/ConversationItem/index.vue new file mode 100644 index 0000000..b60db3c --- /dev/null +++ b/src/components/ConversationItem/index.vue @@ -0,0 +1,142 @@ + + + + + diff --git a/src/components/Copy/README.md b/src/components/Copy/README.md new file mode 100644 index 0000000..c1780ec --- /dev/null +++ b/src/components/Copy/README.md @@ -0,0 +1,15 @@ +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|-----------------------------|---------|-----------|-------| +| content | 需要被复制的内容,复制优先级比插槽内容要高 | string | — | '' | +| always? | 是否一直显示复制按钮 | boolean | — | false | +| showText? | 是否显示文案,插槽内容的显示优先级比content要高 | boolean | — | true | +| size? | 图标的size | string | — | '20px' | + +### Slots + +| 参数 | 说明 | +|----------|-------------| +| default | 文本插槽 | +| icon | 复制按钮位置对应的插槽 | diff --git a/src/components/Copy/index.vue b/src/components/Copy/index.vue new file mode 100644 index 0000000..6b9e399 --- /dev/null +++ b/src/components/Copy/index.vue @@ -0,0 +1,107 @@ + + + + + + + diff --git a/src/components/CreateFormBox/README.md b/src/components/CreateFormBox/README.md new file mode 100644 index 0000000..04ec50f --- /dev/null +++ b/src/components/CreateFormBox/README.md @@ -0,0 +1,9 @@ +# CreateFormBox + +### 说明 +- 新建页面外框布局组件 + +``` js + +``` + diff --git a/src/components/CreateFormBox/index.vue b/src/components/CreateFormBox/index.vue new file mode 100644 index 0000000..1959996 --- /dev/null +++ b/src/components/CreateFormBox/index.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/components/CustomHeader/README.md b/src/components/CustomHeader/README.md new file mode 100644 index 0000000..ae09414 --- /dev/null +++ b/src/components/CustomHeader/README.md @@ -0,0 +1,22 @@ +# CustomHeader + +### 说明 +- 自定义header组件 + +``` js + +``` + +### Props +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|------------|--------|---------|----------|------| +| title? | 标题 | string | - | '标题' | +| count? | 计数 | number | - | 0 | +| showCount? | 是否显示计数 | boolean | - | true | + +### Slots + +| 名称 | 说明 | +|--------------------|--------| +| header-left | 组件左边插槽 | +| actions | 组件右边插槽 | diff --git a/src/components/CustomHeader/index.vue b/src/components/CustomHeader/index.vue new file mode 100644 index 0000000..1330be6 --- /dev/null +++ b/src/components/CustomHeader/index.vue @@ -0,0 +1,56 @@ + + + + + + + diff --git a/src/components/CustomList/README.md b/src/components/CustomList/README.md new file mode 100644 index 0000000..b4be606 --- /dev/null +++ b/src/components/CustomList/README.md @@ -0,0 +1,25 @@ +# CustomHeader + +### 说明 +- 自定义header组件 + +``` js + +``` + +### Props +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|--------|------------------------------------------------------------|----------|------| +| title? | 标题 | string | - | '' | +| data | 数据 | { name: string; extra: string; [propName: string]: any }[] | - | [] | +| showCount? | 是否显示计数 | boolean | - | true | +| showHeader? | 是否显示头部 | boolean | - | true | + +### Slots + +| 名称 | 说明 | +|------------|--------------| +| actions | 组件头部操作区域插槽 | +| item | 组件单元数据插槽 | +| item-name | 组件单元数据名称区域插槽 | +| item-extra | 组件单元数据尾部区域插槽 | diff --git a/src/components/CustomList/index.vue b/src/components/CustomList/index.vue new file mode 100644 index 0000000..d102295 --- /dev/null +++ b/src/components/CustomList/index.vue @@ -0,0 +1,105 @@ + + + + + + + diff --git a/src/components/CustomTab/README.md b/src/components/CustomTab/README.md new file mode 100644 index 0000000..324cba7 --- /dev/null +++ b/src/components/CustomTab/README.md @@ -0,0 +1,17 @@ +### 自定义 icon tabbar + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +| ---------------- | ---------------- | ------- | ------------------------------------------- | ------- | +| defaultValue | 默认 tabkey | string | — | '' | +| type | 选项卡组的类型 | string | 'tabs';'pills';'options';'wrapped';'slider' | 'pills' | +| tabPosition | 选项卡所在的位置 | string | 'top' ;'right' ;'bottom' ;'left' | '' | | +| hiddenDashedLine | 隐藏高亮的下划线 | boolean | — | - | +| list | tabbar 数据 | array | — | [] | + +### Emits + +| 方法 | 类型 | 说明 | 返回值 | +| ----------------- | ----------------------- | --------------------------------------------- | ------ | +| active-tab-change | function(string/number) | 选项卡切换的回调函数,返回当前激活选项卡的 id | - | diff --git a/src/components/CustomTab/index.vue b/src/components/CustomTab/index.vue new file mode 100644 index 0000000..0fdd158 --- /dev/null +++ b/src/components/CustomTab/index.vue @@ -0,0 +1,87 @@ + + + + + + + diff --git a/src/components/CustomTable/README.md b/src/components/CustomTable/README.md new file mode 100644 index 0000000..2312747 --- /dev/null +++ b/src/components/CustomTable/README.md @@ -0,0 +1,58 @@ +### 自定义table + + +``` vue + + + +``` + diff --git a/src/components/CustomTable/index.vue b/src/components/CustomTable/index.vue new file mode 100644 index 0000000..11cf059 --- /dev/null +++ b/src/components/CustomTable/index.vue @@ -0,0 +1,223 @@ + + + + diff --git a/src/components/CustomTag/README.md b/src/components/CustomTag/README.md new file mode 100644 index 0000000..6d1e984 --- /dev/null +++ b/src/components/CustomTag/README.md @@ -0,0 +1,8 @@ +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|----------------|-------|--------|-----------|---| +| title | tag内容 | string | — | '' | +| color? | 文本颜色 | string | — | '' | +| borderColor? | 边框颜色 | string | — | '' | +| bgColor? | 背景颜色 | string | — | '' | diff --git a/src/components/CustomTag/index.vue b/src/components/CustomTag/index.vue new file mode 100644 index 0000000..7f5e943 --- /dev/null +++ b/src/components/CustomTag/index.vue @@ -0,0 +1,60 @@ + + + + + + + diff --git a/src/components/DataPanel/README.md b/src/components/DataPanel/README.md new file mode 100644 index 0000000..4c0acdb --- /dev/null +++ b/src/components/DataPanel/README.md @@ -0,0 +1,37 @@ +# DataPanel + +### 说明 +- 已全局声明 +- 在EmptyData上进行了二次封装,通过empty和loading字段自适应展示数据 +- loading使用d-skeleton方案,可以通过$slots.loading自定义。或者不传入loading,自己加v-loading="loading" +- empty使用EmptyData方案,可以通过$slots.empty自定义 + +``` ts + + + + +const dataList = ref([]); +const loading = ref(false); +``` + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| loading? | 是否加载中。默认启动v-loading效果,如果传入$slots.loading则v-loading失效 | boolean | - | false | +| empty? | 是否数据为空,为空默认展示d-result | boolean | - | false | +| emptyText? | 数据为空的标题 | string | - | '暂无数据' | +| emptyDetail? | 数据为空标题下方的描述 | string | - | '暂无数据' | +| skeleton? | loading状态下显示骨架屏,比animation优先级更高 | boolean | - | false | +| animation? | loading状态下显示定制的loading | boolean | - | false | +| card? | 是否使用g-card组件样式 | boolean | - | true | + +### Slots + +| 名称 | 说明 | +|---------------------|---------------------------------------------| +| default | 数据自定义区域 | +| empty? | 数据为空的定义 | +| loading? | loading效果,如骨架屏。默认使用v-loading,传入loading slot则v-loading失效 | + diff --git a/src/components/DataPanel/index.vue b/src/components/DataPanel/index.vue new file mode 100644 index 0000000..d8323fd --- /dev/null +++ b/src/components/DataPanel/index.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/src/components/Demo/README.md b/src/components/Demo/README.md new file mode 100644 index 0000000..29cb4c8 --- /dev/null +++ b/src/components/Demo/README.md @@ -0,0 +1,29 @@ +# Demo + +### 说明 +- xxxxxx(描述组件,并提供基础demo.建议demo使用最常见的用法即可) + +``` html + +``` + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| id | 实体key | string | - | - | + + +### Emits + +| 方法 | 说明 | 返回值 | +|-----------------|------------------------------------|---------------------| +| onDelete | 删除 | id | + + +### Slots + +| 名称 | 说明 | +|---------------------|---------------------------------------------| +| default | 中间显示区域 | + diff --git a/src/components/Demo/index.vue b/src/components/Demo/index.vue new file mode 100644 index 0000000..3e9657a --- /dev/null +++ b/src/components/Demo/index.vue @@ -0,0 +1,21 @@ + + + + + diff --git a/src/components/Discussion/Dashboard/DashboardDiscussionListItem.vue b/src/components/Discussion/Dashboard/DashboardDiscussionListItem.vue new file mode 100644 index 0000000..8bd5a8e --- /dev/null +++ b/src/components/Discussion/Dashboard/DashboardDiscussionListItem.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/src/components/Discussion/Module/Create/index.vue b/src/components/Discussion/Module/Create/index.vue new file mode 100644 index 0000000..1672dc2 --- /dev/null +++ b/src/components/Discussion/Module/Create/index.vue @@ -0,0 +1,444 @@ + + + + + diff --git a/src/components/Discussion/Module/Detail/components/CommentItem/components/ReplyItem.vue b/src/components/Discussion/Module/Detail/components/CommentItem/components/ReplyItem.vue new file mode 100644 index 0000000..730c755 --- /dev/null +++ b/src/components/Discussion/Module/Detail/components/CommentItem/components/ReplyItem.vue @@ -0,0 +1,266 @@ + + + + + diff --git a/src/components/Discussion/Module/Detail/components/CommentItem/index.vue b/src/components/Discussion/Module/Detail/components/CommentItem/index.vue new file mode 100644 index 0000000..3f795c0 --- /dev/null +++ b/src/components/Discussion/Module/Detail/components/CommentItem/index.vue @@ -0,0 +1,676 @@ + + + + + diff --git a/src/components/Discussion/Module/Detail/components/ContentToolbar/index.vue b/src/components/Discussion/Module/Detail/components/ContentToolbar/index.vue new file mode 100644 index 0000000..5745d36 --- /dev/null +++ b/src/components/Discussion/Module/Detail/components/ContentToolbar/index.vue @@ -0,0 +1,99 @@ + + + + + + diff --git a/src/components/Discussion/Module/Detail/components/DetailContent/components/AnswerDisplay/index.vue b/src/components/Discussion/Module/Detail/components/DetailContent/components/AnswerDisplay/index.vue new file mode 100644 index 0000000..0a86858 --- /dev/null +++ b/src/components/Discussion/Module/Detail/components/DetailContent/components/AnswerDisplay/index.vue @@ -0,0 +1,125 @@ + + + + + + diff --git a/src/components/Discussion/Module/Detail/components/DetailContent/components/PollDisplay/index.vue b/src/components/Discussion/Module/Detail/components/DetailContent/components/PollDisplay/index.vue new file mode 100644 index 0000000..0072be0 --- /dev/null +++ b/src/components/Discussion/Module/Detail/components/DetailContent/components/PollDisplay/index.vue @@ -0,0 +1,209 @@ + + + + + + diff --git a/src/components/Discussion/Module/Detail/components/DetailContent/components/PollResult/index.vue b/src/components/Discussion/Module/Detail/components/DetailContent/components/PollResult/index.vue new file mode 100644 index 0000000..4635bf8 --- /dev/null +++ b/src/components/Discussion/Module/Detail/components/DetailContent/components/PollResult/index.vue @@ -0,0 +1,90 @@ + + + + + + diff --git a/src/components/Discussion/Module/Detail/components/DetailContent/index.vue b/src/components/Discussion/Module/Detail/components/DetailContent/index.vue new file mode 100644 index 0000000..c0a845e --- /dev/null +++ b/src/components/Discussion/Module/Detail/components/DetailContent/index.vue @@ -0,0 +1,382 @@ + + + + + diff --git a/src/components/Discussion/Module/Detail/components/DetailHead/index.vue b/src/components/Discussion/Module/Detail/components/DetailHead/index.vue new file mode 100644 index 0000000..d1c1f71 --- /dev/null +++ b/src/components/Discussion/Module/Detail/components/DetailHead/index.vue @@ -0,0 +1,256 @@ + + + + + diff --git a/src/components/Discussion/Module/Detail/components/NewComment/index.vue b/src/components/Discussion/Module/Detail/components/NewComment/index.vue new file mode 100644 index 0000000..bce81e9 --- /dev/null +++ b/src/components/Discussion/Module/Detail/components/NewComment/index.vue @@ -0,0 +1,214 @@ + + + + + diff --git a/src/components/Discussion/Module/Detail/index.vue b/src/components/Discussion/Module/Detail/index.vue new file mode 100644 index 0000000..00d4d85 --- /dev/null +++ b/src/components/Discussion/Module/Detail/index.vue @@ -0,0 +1,337 @@ + + + + + diff --git a/src/components/Discussion/Module/List/components/DiscussListItem.vue b/src/components/Discussion/Module/List/components/DiscussListItem.vue new file mode 100644 index 0000000..32c3452 --- /dev/null +++ b/src/components/Discussion/Module/List/components/DiscussListItem.vue @@ -0,0 +1,197 @@ + + + + + diff --git a/src/components/Discussion/Module/List/index.vue b/src/components/Discussion/Module/List/index.vue new file mode 100644 index 0000000..ab9daab --- /dev/null +++ b/src/components/Discussion/Module/List/index.vue @@ -0,0 +1,954 @@ + + + + + + + diff --git a/src/components/Discussion/Module/List/orgDiscussion.vue b/src/components/Discussion/Module/List/orgDiscussion.vue new file mode 100644 index 0000000..197aee4 --- /dev/null +++ b/src/components/Discussion/Module/List/orgDiscussion.vue @@ -0,0 +1,990 @@ + + + + + + + diff --git a/src/components/Discussion/Module/SectionCreate/index.vue b/src/components/Discussion/Module/SectionCreate/index.vue new file mode 100644 index 0000000..fba3e4b --- /dev/null +++ b/src/components/Discussion/Module/SectionCreate/index.vue @@ -0,0 +1,244 @@ + + + + + diff --git a/src/components/Discussion/Module/Select/index.vue b/src/components/Discussion/Module/Select/index.vue new file mode 100644 index 0000000..8c616e1 --- /dev/null +++ b/src/components/Discussion/Module/Select/index.vue @@ -0,0 +1,154 @@ + + + + + diff --git a/src/components/Discussion/Module/TypeCreate/index.vue b/src/components/Discussion/Module/TypeCreate/index.vue new file mode 100644 index 0000000..5b9887b --- /dev/null +++ b/src/components/Discussion/Module/TypeCreate/index.vue @@ -0,0 +1,301 @@ + + + + + diff --git a/src/components/Discussion/Module/TypeManage/index.vue b/src/components/Discussion/Module/TypeManage/index.vue new file mode 100644 index 0000000..879c2f2 --- /dev/null +++ b/src/components/Discussion/Module/TypeManage/index.vue @@ -0,0 +1,310 @@ + + + + + diff --git a/src/components/Discussion/Module/components/DiscussionEmojiTitle.vue b/src/components/Discussion/Module/components/DiscussionEmojiTitle.vue new file mode 100644 index 0000000..98d0678 --- /dev/null +++ b/src/components/Discussion/Module/components/DiscussionEmojiTitle.vue @@ -0,0 +1,119 @@ + + + + + diff --git a/src/components/Discussion/Module/components/DiscussionLikeBtn.vue b/src/components/Discussion/Module/components/DiscussionLikeBtn.vue new file mode 100644 index 0000000..a9acfd8 --- /dev/null +++ b/src/components/Discussion/Module/components/DiscussionLikeBtn.vue @@ -0,0 +1,111 @@ + + + + + diff --git a/src/components/Discussion/Module/components/DiscussionPollForm.vue b/src/components/Discussion/Module/components/DiscussionPollForm.vue new file mode 100644 index 0000000..8761862 --- /dev/null +++ b/src/components/Discussion/Module/components/DiscussionPollForm.vue @@ -0,0 +1,175 @@ + + + + + diff --git a/src/components/Discussion/Module/components/DiscussionTypeItem.vue b/src/components/Discussion/Module/components/DiscussionTypeItem.vue new file mode 100644 index 0000000..31d3a5c --- /dev/null +++ b/src/components/Discussion/Module/components/DiscussionTypeItem.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/components/Discussion/Module/components/Sidebar/components/DiscussFilterLabel.vue b/src/components/Discussion/Module/components/Sidebar/components/DiscussFilterLabel.vue new file mode 100644 index 0000000..b1716df --- /dev/null +++ b/src/components/Discussion/Module/components/Sidebar/components/DiscussFilterLabel.vue @@ -0,0 +1,84 @@ + + + + diff --git a/src/components/Discussion/Module/components/Sidebar/components/DiscussFilterType.vue b/src/components/Discussion/Module/components/Sidebar/components/DiscussFilterType.vue new file mode 100644 index 0000000..da021dd --- /dev/null +++ b/src/components/Discussion/Module/components/Sidebar/components/DiscussFilterType.vue @@ -0,0 +1,47 @@ + + + + diff --git a/src/components/Discussion/Module/components/Sidebar/index.vue b/src/components/Discussion/Module/components/Sidebar/index.vue new file mode 100644 index 0000000..209693d --- /dev/null +++ b/src/components/Discussion/Module/components/Sidebar/index.vue @@ -0,0 +1,410 @@ + + + + + diff --git a/src/components/EmptyData/index.vue b/src/components/EmptyData/index.vue new file mode 100644 index 0000000..12a8218 --- /dev/null +++ b/src/components/EmptyData/index.vue @@ -0,0 +1,35 @@ + + + + diff --git a/src/components/Error/config.ts b/src/components/Error/config.ts new file mode 100644 index 0000000..f12cbae --- /dev/null +++ b/src/components/Error/config.ts @@ -0,0 +1,35 @@ +import icon403 from '@/assets/imgs/error/403@2x.png'; +import icon404 from '@/assets/imgs/error/404@2x.png'; +import icon503 from '@/assets/imgs/error/503@2x.png'; + +const defaultErrorCode = 404; +const errorConfig = { + 403: { + animation: 'error403', + avatar: icon403, + title: '抱歉,你无权访问', + desc: '', + operationList: [ + { text: '返回首页', href: '/', variant: 'solid', color: 'primary' } + ] + }, + 404: { + animation: 'error404', + avatar: icon404, + title: '抱歉,你访问的页面找不到了', + desc: '请返回首页继续浏览', + operationList: [ + { text: '返回首页', href: '/', variant: 'solid', color: 'primary' } + ] + }, + 503: { + animation: 'error503', + avatar: icon503, + title: '抱歉,服务器维护中', + desc: '服务器暂时维护中,请等待' + } +}; + +export const getErrorConfig = (errorCode: string|number) => { + return errorConfig[errorCode] || errorConfig[defaultErrorCode]; +}; diff --git a/src/components/Error/index.vue b/src/components/Error/index.vue new file mode 100644 index 0000000..69cc2a4 --- /dev/null +++ b/src/components/Error/index.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/src/components/EventAdapter/index.vue b/src/components/EventAdapter/index.vue new file mode 100644 index 0000000..59c899d --- /dev/null +++ b/src/components/EventAdapter/index.vue @@ -0,0 +1,166 @@ + + + + diff --git a/src/components/FileIcon/README.md b/src/components/FileIcon/README.md new file mode 100644 index 0000000..9987a63 --- /dev/null +++ b/src/components/FileIcon/README.md @@ -0,0 +1,9 @@ +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|------------|-----------------------------------------------|---------|-------------------------------- |---------| +| type | icon的类型,可以传入映射对象对应的key值,也可以直接传入可被组件识别的icon name | string | — | "folder" | +| title? | 文件名称 | string | — | "标题" | +| showTitle? | 是否显示文案 | boolean | — | true | +| size? | icon的尺寸 | string | — | "18px" | +| link? | 需要跳转的路由地址 | string | — | — | diff --git a/src/components/FileIcon/index.vue b/src/components/FileIcon/index.vue new file mode 100644 index 0000000..5b84a99 --- /dev/null +++ b/src/components/FileIcon/index.vue @@ -0,0 +1,109 @@ + + + + + diff --git a/src/components/FileSearch/Modal.vue b/src/components/FileSearch/Modal.vue new file mode 100644 index 0000000..0842afa --- /dev/null +++ b/src/components/FileSearch/Modal.vue @@ -0,0 +1,140 @@ + + + + + diff --git a/src/components/FileSearch/index.vue b/src/components/FileSearch/index.vue new file mode 100644 index 0000000..1abc6a5 --- /dev/null +++ b/src/components/FileSearch/index.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/src/components/FileTree/index.vue b/src/components/FileTree/index.vue new file mode 100644 index 0000000..ece15dd --- /dev/null +++ b/src/components/FileTree/index.vue @@ -0,0 +1,82 @@ + + + diff --git a/src/components/FilterDropDown/CustomOption.vue b/src/components/FilterDropDown/CustomOption.vue new file mode 100644 index 0000000..2edd0bb --- /dev/null +++ b/src/components/FilterDropDown/CustomOption.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/src/components/FilterDropDown/README.md b/src/components/FilterDropDown/README.md new file mode 100644 index 0000000..efc1b3c --- /dev/null +++ b/src/components/FilterDropDown/README.md @@ -0,0 +1,4 @@ +### 筛选组件 +- 分支筛选,分支tag切换; +- label筛选 +- 人员筛选 diff --git a/src/components/FilterDropDown/index.vue b/src/components/FilterDropDown/index.vue new file mode 100644 index 0000000..f3dbb36 --- /dev/null +++ b/src/components/FilterDropDown/index.vue @@ -0,0 +1,270 @@ + + + + + + + diff --git a/src/components/FilterDropDown/types.ts b/src/components/FilterDropDown/types.ts new file mode 100644 index 0000000..b29d407 --- /dev/null +++ b/src/components/FilterDropDown/types.ts @@ -0,0 +1,8 @@ +export type IOption ={ + value: string | number // 必填,选项唯一标识 + name: string // 可选,选项显示内容 + disabled?: boolean // 可选,禁用单个选项 + selected?: boolean // option 是否选中 + label?: string // 标签 + [propName:string]:any +} diff --git a/src/components/FoldEllipsis/index.vue b/src/components/FoldEllipsis/index.vue new file mode 100644 index 0000000..6c6a06c --- /dev/null +++ b/src/components/FoldEllipsis/index.vue @@ -0,0 +1,79 @@ + + + + diff --git a/src/components/Footer/index.vue b/src/components/Footer/index.vue new file mode 100644 index 0000000..8c7cdcd --- /dev/null +++ b/src/components/Footer/index.vue @@ -0,0 +1,101 @@ + + + + + diff --git a/src/components/Form/index.ts b/src/components/Form/index.ts new file mode 100644 index 0000000..5916dc7 --- /dev/null +++ b/src/components/Form/index.ts @@ -0,0 +1,4 @@ +import CustomForm from './index.vue'; +export type * from './types'; +/* 基础类型暂时只支持input, 复合类型请使用render传递组件 */ +export default CustomForm; diff --git a/src/components/Form/index.vue b/src/components/Form/index.vue new file mode 100644 index 0000000..56d9a28 --- /dev/null +++ b/src/components/Form/index.vue @@ -0,0 +1,298 @@ + + + + + diff --git a/src/components/Form/inputButton.vue b/src/components/Form/inputButton.vue new file mode 100644 index 0000000..be6b4d4 --- /dev/null +++ b/src/components/Form/inputButton.vue @@ -0,0 +1,152 @@ + + + + + diff --git a/src/components/Form/inputSelect.vue b/src/components/Form/inputSelect.vue new file mode 100644 index 0000000..d235f04 --- /dev/null +++ b/src/components/Form/inputSelect.vue @@ -0,0 +1,42 @@ + + + + + diff --git a/src/components/Form/types.ts b/src/components/Form/types.ts new file mode 100644 index 0000000..9779565 --- /dev/null +++ b/src/components/Form/types.ts @@ -0,0 +1,55 @@ +import type { Component } from 'vue'; + +export type FormListType = { + type: 'input' | 'inputButton' | 'inputSelect' + help?: string + extra?: string +} | { + type: 'render' + render: Component +} + +export type FormListProps = FormListType & { + key: string + label: string + defaultValue?: any + rules?: any[] + width?: number | string + props?: Record, + required?: boolean + [x: string]: any +} + +export interface GFormProps { + DataList: FormListProps[], + rules?: Record, + required?: boolean, + disabled?: boolean, + showFeedback?:boolean, + MessageType?: 'popover' | 'text' | 'none' + layout?: 'horizontal' | 'vertical' + showLabel?: boolean + size?: 'lg' | 'md' | 'sm' + labelSize?: 'lg' | 'md' | 'sm' + labelAlign?: 'start' | 'center' | 'end' +} + +export interface FormInputButtonProps { + modelValue?: any + 'onUpdate:modelValue'?: Function + placeholder: string + prop?: any + text?: string + countdown?: boolean + second?: number + hasMobile?: false + [x: string]: any +} + +export interface FormItemSelectProps { + modelValue?: any + 'onUpdate:modelValue'?: Function + placeholder: string + prop?: any + [x: string]: any +} diff --git a/src/components/FormLabel/FormLabel.vue b/src/components/FormLabel/FormLabel.vue new file mode 100644 index 0000000..3d8552d --- /dev/null +++ b/src/components/FormLabel/FormLabel.vue @@ -0,0 +1,16 @@ + + + + + diff --git a/src/components/FormLabel/FormWeakText.vue b/src/components/FormLabel/FormWeakText.vue new file mode 100644 index 0000000..3cc9dca --- /dev/null +++ b/src/components/FormLabel/FormWeakText.vue @@ -0,0 +1,16 @@ + + + + + diff --git a/src/components/GAvatar/README.md b/src/components/GAvatar/README.md new file mode 100644 index 0000000..52b59d0 --- /dev/null +++ b/src/components/GAvatar/README.md @@ -0,0 +1,13 @@ +### 说明 + +基于 `d-avatar`封装,`src` 加载失败或为空时时,取 `name`首字符大写进行展示; + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +| -------- | ------------------------------------------------------ | ------- | ------ | -------- | +| src | 头像地址,必传 | string | | '' | +| name | 必传; 传入字符串,src load-error 时,取首字母制作头像 | string | | 'Avatar' | +| width | 宽度,可选 | number | | 40 | +| height | 高度,可选 | number | | 40 | +| is_round | 是否显示为圆形 | boolean | | true | diff --git a/src/components/GAvatar/index.vue b/src/components/GAvatar/index.vue new file mode 100644 index 0000000..d9bc7c6 --- /dev/null +++ b/src/components/GAvatar/index.vue @@ -0,0 +1,53 @@ + + + + diff --git a/src/components/GLink/README.md b/src/components/GLink/README.md new file mode 100644 index 0000000..3bf5685 --- /dev/null +++ b/src/components/GLink/README.md @@ -0,0 +1,31 @@ +# GLink组件 + +### 说明 +1. GLink组件组合了router-link和a标签,通过传入to或者href参数,自适应生成链接 +2. GLink组件已全局声明(使用期无需再次引用) + +``` js +点击跳转 +点击跳转 +点击触发事件 +``` + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| to? | 同router-link标签的to参数 | object | - | - | +| href? | 同a标签的href参数 | string | - | - | +| target? | 同a标签的target参数,router-link也支持 | string | - | - | +| disabled? | 禁用 | boolean | - | false | + +### Slots + +| 名称 | 说明 | +|---------------------|---------------------------------------------| +| default | 链接点击的 | + +## 注意事项 +1. 同时传入to相比href,优先级更高 +2. href参数默认值为“javascript:void(0)” + diff --git a/src/components/GLink/index.vue b/src/components/GLink/index.vue new file mode 100644 index 0000000..fde3d83 --- /dev/null +++ b/src/components/GLink/index.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/src/components/GLink/type.ts b/src/components/GLink/type.ts new file mode 100644 index 0000000..cf31991 --- /dev/null +++ b/src/components/GLink/type.ts @@ -0,0 +1,12 @@ +export interface RouterLinkTo { + name: string, + params?: object, + query?: object +} + +export interface GLink { + to?: RouterLinkTo, + href?: string, + target?: string, + disabled?: boolean +} diff --git a/src/components/GText/README.md b/src/components/GText/README.md new file mode 100644 index 0000000..f476f26 --- /dev/null +++ b/src/components/GText/README.md @@ -0,0 +1,11 @@ +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|---------------------------|----------------------------------------------------------------------------|-----------|-----------------------------------------------------------| +| config? | 配置参数,是否启用省略,文本显示多少行以后进行省略 | { ellipse?: boolean; line?: number; tooltip?: boolean; showAll?: boolean } | — | { ellipse: true, line: 1, tooltip: true, showAll: false } | + +### Slots + +| 参数 | 说明 | +|----------|-------------| +| default | 文本插槽 | diff --git a/src/components/GText/index.vue b/src/components/GText/index.vue new file mode 100644 index 0000000..8c61f2b --- /dev/null +++ b/src/components/GText/index.vue @@ -0,0 +1,127 @@ + + + + + + + diff --git a/src/components/GuardiansLs/index.vue b/src/components/GuardiansLs/index.vue new file mode 100644 index 0000000..940b374 --- /dev/null +++ b/src/components/GuardiansLs/index.vue @@ -0,0 +1,71 @@ + + + + diff --git a/src/components/Header/Create.vue b/src/components/Header/Create.vue new file mode 100644 index 0000000..cda9ba6 --- /dev/null +++ b/src/components/Header/Create.vue @@ -0,0 +1,64 @@ + + + + diff --git a/src/components/Header/Entrance.vue b/src/components/Header/Entrance.vue new file mode 100644 index 0000000..997d555 --- /dev/null +++ b/src/components/Header/Entrance.vue @@ -0,0 +1,176 @@ + + + + + diff --git a/src/components/Header/EntranceMenu.vue b/src/components/Header/EntranceMenu.vue new file mode 100644 index 0000000..3a6e60b --- /dev/null +++ b/src/components/Header/EntranceMenu.vue @@ -0,0 +1,118 @@ + + + + + diff --git a/src/components/Header/Notice.vue b/src/components/Header/Notice.vue new file mode 100644 index 0000000..b755686 --- /dev/null +++ b/src/components/Header/Notice.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/src/components/Header/README.md b/src/components/Header/README.md new file mode 100644 index 0000000..59e40ec --- /dev/null +++ b/src/components/Header/README.md @@ -0,0 +1,25 @@ +# Header + +### 说明 +- 全局通用Header组件 + +``` js +
+ +
+ + +
+``` + + +### Slots + +| 名称 | 说明 | +|---------------------|---------------------------------------------| +| info | 第二行左侧,常用语显示用户信息等 | +| menu | 第二行右侧,常用于定义路由Tab等 | diff --git a/src/components/Header/Search.vue b/src/components/Header/Search.vue new file mode 100644 index 0000000..0f24b12 --- /dev/null +++ b/src/components/Header/Search.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/src/components/Header/SearchOld.vue b/src/components/Header/SearchOld.vue new file mode 100644 index 0000000..e53d5a7 --- /dev/null +++ b/src/components/Header/SearchOld.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/src/components/Header/UserAvatar.vue b/src/components/Header/UserAvatar.vue new file mode 100644 index 0000000..2bc355f --- /dev/null +++ b/src/components/Header/UserAvatar.vue @@ -0,0 +1,195 @@ + + + + + + + diff --git a/src/components/Header/index.vue b/src/components/Header/index.vue new file mode 100644 index 0000000..f923023 --- /dev/null +++ b/src/components/Header/index.vue @@ -0,0 +1,257 @@ + + + + + diff --git a/src/components/Header/searchAiHistory.vue b/src/components/Header/searchAiHistory.vue new file mode 100644 index 0000000..a73baf7 --- /dev/null +++ b/src/components/Header/searchAiHistory.vue @@ -0,0 +1,18 @@ + + + + + diff --git a/src/components/Icon/README.md b/src/components/Icon/README.md new file mode 100644 index 0000000..e106b60 --- /dev/null +++ b/src/components/Icon/README.md @@ -0,0 +1,22 @@ +# Demo + +### 说明 +- 图标组件,基于iconfont +- 已全局引用 + +```ts +// iconfont图标 + +// devui组件库图标 + +``` + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| name | 图标名(Symbol格式) | string | - | - | +| size | 图标字体大小 | string | - | - | +| color | 图标颜色 | string | - | - | +| rotate | 图标旋转角度 | string | - | - | + diff --git a/src/components/Icon/index.vue b/src/components/Icon/index.vue new file mode 100644 index 0000000..2168d35 --- /dev/null +++ b/src/components/Icon/index.vue @@ -0,0 +1,73 @@ + + + + + diff --git a/src/components/InfoCard/README.md b/src/components/InfoCard/README.md new file mode 100644 index 0000000..ae8224c --- /dev/null +++ b/src/components/InfoCard/README.md @@ -0,0 +1,51 @@ +# InfoCard + +### 说明 +- 适用于组织、个人的信息卡片 +- 卡片地步的信息,会自适应展示User和Repo信息 + +``` js +import InfoCard from '@/components/InfoCard/index.vue'; + +const info = ref({ + name: mock('@first'), + namespace: mock('@first'), + description: mock('@paragraph'), + maxLines: 2, + + avatar: '/src/assets/imgs/avatar/male.png', + isRound: mock('@boolean'), + avatarSize: 80, + + tenant: 'CSDN', + location: mock('@city'), +}); + + + 点击关注 + +``` + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| name | title部分 | string | - | - | +| namespace | @后面的namespace | string | - | - | +| description | 描述 | string | - | - | +| maxLines? | 描述的最大行数 | number | - | 3 | +| avatar | 图片url | string | - | - | +| avatarSize? | 左侧头像尺寸 | number | - | 80 | +| isRound? | 头像是否为圆形(同d-avatar)| boolean | - | true | +| hideFooter? | 是否展示footer | boolean | - | false | +| tenant? | 用户信息卡片的公司名称 | string | - | - | +| location? | 地址信息 | string | - | - | +| projectCount? | 组织卡片的项目个数 | number | - | - | +| memberCount? | 成员个数 | number | - | - | + +### Slots + +| 名称 | 说明 | +|---------------------|---------------------------------------------| +| default | 定制右侧的交互 | +| footer | 底部信息插槽。需要确保hideFooter未设置为true | diff --git a/src/components/InfoCard/index.vue b/src/components/InfoCard/index.vue new file mode 100644 index 0000000..ca23031 --- /dev/null +++ b/src/components/InfoCard/index.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/src/components/InfoLeft/README.md b/src/components/InfoLeft/README.md new file mode 100644 index 0000000..5b55ca7 --- /dev/null +++ b/src/components/InfoLeft/README.md @@ -0,0 +1,33 @@ +# infoLeft组件 + +### 说明 +- 通用的头部信息显示组件,demo如下 + +``` js +import InfoLeft from '@/components/InfoLeft/index.vue'; + +const imgUrl = ''; +const infoText = ''; +const infoSubText = ''; +const clickFun = ()=>{ + +} + + +``` + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| imgUrl | 图片路径 | string | - | - | +| infoText | 主标题 | string | - | - | +| infoSubText | 副标题 | string | - | - | + +### Emits + +注意:以下事件都是组件内部对应的按钮点击触发,如果用插槽自定义对应区域的内容的话,事件自行监听即可 + +| 方法 | 说明 | 返回值 | +|-----------|--------|-----------------------| +| click | 关注按钮点击事件 | 无 | \ No newline at end of file diff --git a/src/components/InfoLeft/index.vue b/src/components/InfoLeft/index.vue new file mode 100644 index 0000000..285c730 --- /dev/null +++ b/src/components/InfoLeft/index.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/src/components/InvitationList/README.md b/src/components/InvitationList/README.md new file mode 100644 index 0000000..2e4fef0 --- /dev/null +++ b/src/components/InvitationList/README.md @@ -0,0 +1,31 @@ +TS接口文档可以查看同文件夹下的types.ts + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|----------------|-------------------------|-------------------------------|-----------|-------| +| data | 邀请列表数据 | Array | — | [] | +| statusOptions? | 用户身份下拉数据项 | {label: string; value: string | number}[] | — | [] | +| isHandling? | 是否处于事务处理中,设为true会禁用右边操作 | boolean | — | false | + +### Emits + +注意:以下事件都是组件内部对应的按钮点击触发,如果用插槽自定义对应区域的内容的话,事件自行监听即可 + +| 方法 | 说明 | 返回值 | +|-----------|--------|-----------------------| +| statusChange | 人员身份变化 | { data: InvitationItemData; index: number } | +| edit | 编辑 | { data: InvitationItemData; index: number } | +| delete | 删除 | { data: InvitationItemData; index: number } | + +### Slots + +| 名称 | 说明 | +|--------------|----------------------| +| header | 组件标题、tag和复制功能按钮所在的区域 | +| title | 组件标题区域插槽 | +| tags | 组件标签区域插槽 | +| info-action | 组件复制功能区域插槽 | +| bottom | 组件左下角区域插槽 | +| status | 组件成员身份选择区域插槽 | +| actions | 组件右边动作区域插槽 | diff --git a/src/components/InvitationList/index.vue b/src/components/InvitationList/index.vue new file mode 100644 index 0000000..40878eb --- /dev/null +++ b/src/components/InvitationList/index.vue @@ -0,0 +1,184 @@ + + + + + + + diff --git a/src/components/InvitationList/types.ts b/src/components/InvitationList/types.ts new file mode 100644 index 0000000..f42980d --- /dev/null +++ b/src/components/InvitationList/types.ts @@ -0,0 +1,16 @@ +export type InvitationItemData = { + // 邀请名称 + title: string; + // 是否需要审核 + needReview: boolean; + // 有效期 + beginDate: string; + endDate: string; + // 链接地址 + link?: string; + // id + id: string | number; + // 身份 + status: string | number; + [propName: string]: any; +} diff --git a/src/components/IssueCommentItem/README.md b/src/components/IssueCommentItem/README.md new file mode 100644 index 0000000..d38c5b2 --- /dev/null +++ b/src/components/IssueCommentItem/README.md @@ -0,0 +1,30 @@ +TS接口文档可以查看同文件夹下的types.ts + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|----------------|-------------------------|-------------------------------|-----------|-------| +| data | 用户信息和部分评论信息的数据 | IssueUserInfoData | — | {} | +| canEdit? | 能否编辑 | boolean | — | false | + +### Emits + +注意:以下事件都是组件内部对应的按钮点击触发,如果用插槽自定义对应区域的内容的话,事件自行监听即可 + +| 方法 | 说明 | 返回值 | +|------|----|-----------------------| +| edit | 编辑 | IssueUserInfoData | + +### Slots + +| 名称 | 说明 | +|--------------|-------------------------------| +| default | 内容区域部分的插槽 | +| footer | panel外footer区域的插槽 | +| header | 头部左边区域部分的插槽 | +| works | 身份tag区域的插槽 | +| extra-works | 额外的身份tag区域的插槽 | +| extra-tags | 组件额外标签区域插槽,在只对当前组件标签进行拓展时可以使用 | +| actions | 操作区域插槽 | +| more-actions | 下拉菜单区域插槽 | +| dropdown | 下拉菜单内部插槽 | diff --git a/src/components/IssueCommentItem/index.vue b/src/components/IssueCommentItem/index.vue new file mode 100644 index 0000000..cbca071 --- /dev/null +++ b/src/components/IssueCommentItem/index.vue @@ -0,0 +1,121 @@ + + + + + + + diff --git a/src/components/IssueCommentItem/types.ts b/src/components/IssueCommentItem/types.ts new file mode 100644 index 0000000..7c9184c --- /dev/null +++ b/src/components/IssueCommentItem/types.ts @@ -0,0 +1,7 @@ +export type IssueUserInfoData = { + name: string; + createdTime: string; + hasEdited?: boolean; + isCreator: boolean; + isDeveloper: boolean; +} diff --git a/src/components/IssueDescription/README.md b/src/components/IssueDescription/README.md new file mode 100644 index 0000000..7d4b549 --- /dev/null +++ b/src/components/IssueDescription/README.md @@ -0,0 +1,56 @@ +# IssueDescription + +### 说明 +- IssueDescription组件为issue详情顶部描述组件,demo如下 +``` js +// tempalte + + + +// script +const issueDescData = { + title: '3516DV300开关机压测出现系统挂死3516DV300开关机压测出现系统挂死3516DV300开关机压测出现系统挂死3516DV300开关机', + userName: '李雷', + createdTime: '2023-07-24', + statusIcon: 'icon-infomation', + statusIconColor: '', + statusText: '已关闭' +}; +``` +### Props(使用中) + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| id | 位置标识 | string | | 1 | +| title | 标题 | string | | | +| createdTime | 创建时间 | string | | | +| statusIcon? | 用户名之前icon | string | | icon-right | +| statusIconColor? | 用户名之前icon颜色 | string | | | +| statusText? | 状态文案(已关闭 \| 已合并 ) | string | | ‘已关闭‘ | +| indexLabel? | 标题后缀index(不传则不显示) | string | | | +| statusBgColor? | 状态区域背景色 | string | | #0EB07B | +| closedTime? | 关闭时间 | string | | | +| canEdit? | 是否编辑模式 | boolean | | false | + +### Emits + +| 方法 | 说明 | 返回值 | +|---------------------|---------------------------------------------|---------------------------------------------| +| handleSave | input按enter键或失去焦点时触发 |title,id| + + + +### Slots + +| 名称 | 说明 | +|---------------------|---------------------------------------------| +| status | 状态区域插槽 | +| content | 内容区域插槽 | +| handle-more | 标题底部更多信息配置插槽 | diff --git a/src/components/IssueDescription/index.vue b/src/components/IssueDescription/index.vue new file mode 100644 index 0000000..fa57013 --- /dev/null +++ b/src/components/IssueDescription/index.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/src/components/IssueItem/README.md b/src/components/IssueItem/README.md new file mode 100644 index 0000000..a823c63 --- /dev/null +++ b/src/components/IssueItem/README.md @@ -0,0 +1,124 @@ +# IssueItem + +### 说明 +- IssueItem组件为issue卡片或列表展示时使用 + +``` js +// tempalte + + + +// script +const IssueItemData = [ + { + checked: true, + isOpen: true, + title: 'Import Bug Fix', + tags: ['线上故障', '功能优化', '线上故障', '功能优化', '线上故障', '功能优化', '线上故障', '功能优化', '线上故障', '功能优化', '线上故障', '功能优化'], + index: 1, + userName: '李轩杨', + createdTime: '2023-07-22', + milestoneName: '里程碑名称', + midNum: 1, + commentsNum: 23, + updateTime: '2023-07-23', + statusIcon: 'icon-infomation', + statusIconColor: 'red', + avatarArr: [ + { + imgSrc: 'https://avatars.githubusercontent.com/u/48074435?v=4' + }, + { + imgSrc: 'https://avatars.githubusercontent.com/u/40119767?v=4' + }, + { + imgSrc: 'https://avatars.githubusercontent.com/u/48074435?v=4' + } + ] + }, + { + checked: false, + isOpen: false, + title: 'Import Bug Fix', + tags: ['线上故障', '功能优化', '线上故障', '功能优化', '线上故障', '功能优化', '线上故障', '功能优化', '线上故障', '功能优化', '线上故障', '功能优化'], + index: 1, + userName: '李轩杨', + createdTime: '2023-07-22', + milestoneName: '里程碑名称', + midNum: 1, + commentsNum: 23, + updateTime: '2023-07-23' + } +]; +const updateCheckedKey = ref(0); +const updateChecked = (checked:boolean, item:object, index:number) => { + + IssueItemData[index].checked = checked; + + updateCheckedKey.value += 1; +}; + +const handleComments = (item:object, index:number) => { + +}; + +const handleAvatar = (item:object, index:number) => { + +}; +``` + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +| ------------ | ------------ | --------------------------------- | ------ | ------ | +| data | 列表数据 | array(row参数见下表props(data)) | | [] | +| hideChecked? | 隐藏checkbox | boolean | | false | + +### Props(data) + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| checked? | 是否选中 | boolean | | false | +| isOpen? | 是否开启 | boolean | | false | +| title | 标题 | string | | | +| tags | 标签数组 | array | | | +| indexLabel? | index自定义名称 | string \| number | | | +| userName | 用户名 | string | | | +| createdTime | 创建时间 | string | | | +| milestoneName | 里程碑名称 | string | | | +| midNum? | 中间布局数值 | string \| number | | | +| commentsNum | 评论数 | string \| number | | | +| updateTime | 更新时间 | string | | | +| statusIcon? | 状态颜色 | string | | | +| statusIconColor? | 状态icon | string | | | +| avatarArr? | 右侧头像列表 | array | 例如:[{imgSrc:'xxx'}] | | + +### Emits + +| 方法 | 说明 | 返回值 | +|-----------------|------------------------------------|---------------------| +| updateChecked | 点击checkbox触发 | checked, item, index(分别为:是否选中,当前行对象,index索引) | +| handleComments | 点击评论数触发 | item, index(分别为:当前行对象,index索引) | +| handleMidNum | 点击中间数字触发 | item, index(分别为:当前行对象,index索引) | +| handleAvatar | 点击头像区域触发 | item, index(分别为:当前行对象,index索引) | +| handleTitle | 点击标题触发 | item, index(分别为:当前行对象,index索引) | + + +### Slots + +| 名称 | 说明 | +|---------------------|---------------------------------------------| +| checkbox | checkbox区域插槽 | +| tags | 标签区域插槽 | +| status | 索引前icon区域插槽 | +| midNum | 中间列区域插槽 | +| right | 右侧区域插槽 | +| avatar | 头像列表区域插槽 | + diff --git a/src/components/IssueItem/index.vue b/src/components/IssueItem/index.vue new file mode 100644 index 0000000..baa6ba8 --- /dev/null +++ b/src/components/IssueItem/index.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/src/components/IssueItem/types.ts b/src/components/IssueItem/types.ts new file mode 100644 index 0000000..4d837f5 --- /dev/null +++ b/src/components/IssueItem/types.ts @@ -0,0 +1,20 @@ + +type avatarObj = { + imgSrc: string +} +export type IssueItemRow = { + checked: boolean, + isOpen?: boolean, + title?: string + tags: Array, + indexLabel?: string | number, + userName: string + createdTime: string + milestoneName: string + midNum?:string | number + commentsNum: string | number + updateTime: string + statusIcon?: string + statusIconColor?: string + avatarArr?: Array +} diff --git a/src/components/IssueListBox/README.md b/src/components/IssueListBox/README.md new file mode 100644 index 0000000..8811165 --- /dev/null +++ b/src/components/IssueListBox/README.md @@ -0,0 +1,25 @@ +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|----------------|---------|-----------------------|-----------|-------| +| data | 列表数据 | Record[] | — | [] | +| showCheckbox? | 是否显示勾选框 | boolean | — | true | +| size? | 左上角图标尺寸 | string | — | '18px' | +| statusItems? | 各状态数据列表 | { icon?: string; count?: number; title: string; size?: string; color?: string; }[] | — | [] | + +### Emits + +注意:以下事件都是组件内部对应的按钮点击触发,如果用插槽自定义对应区域的内容的话,事件自行监听即可 + +| 方法 | 说明 | 返回值 | +|------|-------------|-----------------------| +| change | 当勾选项发生变化时抛出 | Record[] | + +### Slots + +| 名称 | 说明 | +|--------------|------------------| +| default | 列表内容插槽,不会覆盖勾选框 | +| header-left | 头部左边区域部分的插槽 | +| header-right | 头部右边区域部分的插槽 | +| content | 完整内容区域插槽,可以覆盖勾选框 | diff --git a/src/components/IssueListBox/index.vue b/src/components/IssueListBox/index.vue new file mode 100644 index 0000000..aa76797 --- /dev/null +++ b/src/components/IssueListBox/index.vue @@ -0,0 +1,191 @@ + + + + + + + diff --git a/src/components/IssueTop/README.md b/src/components/IssueTop/README.md new file mode 100644 index 0000000..c7cca52 --- /dev/null +++ b/src/components/IssueTop/README.md @@ -0,0 +1,47 @@ +# IssueTop + +### 说明 +- IssueTop组件为issue置顶组件,demo如下 +``` js +// tempalte + + +// script +const handleIssueTopClose = () => { + +}; +``` +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| title | 标题 | string | | | +| createdTime | 创建时间 | string | | | +| userName | 用户名 | string | | | +| hideClose? | 隐藏关闭按钮 | boolean | | false | +| indexLabel? | index名称自定义 | string | | | +| isOpen? | 是否是开启 | boolean | | true | + + +### Emits + +| 方法 | 说明 | 返回值 | +|-----------------|------------------------------------|---------------------| +| handleClose | 点击关闭触发 | props(当前卡片对象信息) | + + +### Slots + +| 名称 | 说明 | +|---------------------|---------------------------------------------| +| header | 标题行区域插槽 | +| content | 用户名,创建时间区域插槽 | +| status | 开启/关闭状态区域插槽 | diff --git a/src/components/IssueTop/index.vue b/src/components/IssueTop/index.vue new file mode 100644 index 0000000..a3a037f --- /dev/null +++ b/src/components/IssueTop/index.vue @@ -0,0 +1,100 @@ + + + + + diff --git a/src/components/LabelCard/index.vue b/src/components/LabelCard/index.vue new file mode 100644 index 0000000..8392aab --- /dev/null +++ b/src/components/LabelCard/index.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/src/components/LabelTag/README.md b/src/components/LabelTag/README.md new file mode 100644 index 0000000..57a9299 --- /dev/null +++ b/src/components/LabelTag/README.md @@ -0,0 +1,29 @@ +# Demo + +### 说明 +- 项目labelTag组件 (将传入的颜色计算出backgroundColor以及borderColor) +- 如果传入了bgColor 则为纯色tag 优先级高 + +``` js +import GLabelTag from '@/components/LabelTag/index.vue' + +``` + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| name | 标签内容 | string | 必传 | labelTag | +| color | 文本颜色 | string(十六进制颜色值) | 必传 | #f66f6a | +| bgOpacity | 背景透明度 | number(0~1) | | 0.1 | +| borderOpacity | border透明度 | number(0~1) | | 0.4 | +| bgColor | 纯色label的background | string(cssProperty颜色) | | | +| theme | 混入的主题 | 'light' | 'dark' | | light | + +### Slots + +| 名称 | 说明 | +|---------------------|---------------------------------------------| +| prefix | 文本之前 | +| append | 文本之后 | + diff --git a/src/components/LabelTag/index.vue b/src/components/LabelTag/index.vue new file mode 100644 index 0000000..4b306d8 --- /dev/null +++ b/src/components/LabelTag/index.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/src/components/LoadingMore/index.vue b/src/components/LoadingMore/index.vue new file mode 100644 index 0000000..4abc1f3 --- /dev/null +++ b/src/components/LoadingMore/index.vue @@ -0,0 +1,19 @@ + + diff --git a/src/components/LoginModal/auth.vue b/src/components/LoginModal/auth.vue new file mode 100644 index 0000000..c4a6e8b --- /dev/null +++ b/src/components/LoginModal/auth.vue @@ -0,0 +1,177 @@ + + + + + diff --git a/src/components/LoginModal/bind.vue b/src/components/LoginModal/bind.vue new file mode 100644 index 0000000..bccc7e0 --- /dev/null +++ b/src/components/LoginModal/bind.vue @@ -0,0 +1,235 @@ + + + + + diff --git a/src/components/LoginModal/form.ts b/src/components/LoginModal/form.ts new file mode 100644 index 0000000..ee00ef2 --- /dev/null +++ b/src/components/LoginModal/form.ts @@ -0,0 +1,109 @@ +import { passwordRegExp, usernameRegExp, mobileRegExp, emailRegExp, verifyCodeRegExp4, verifyCodeRegExp6 } from '@/utils/regex'; + +const getRegexRule = (rule: any, value: string, cb: Function, regex: RegExp) => { + if (regex.test(value)) { + return cb(); + } else { + return cb(new Error(rule?.message)); + } +}; + +export const FormRules = { + mobile: [ + { + message: '请输入有效的手机号码', + trigger: 'change', + validator: (rule: any, value: string, cb: Function) => { + getRegexRule(rule, value, cb, mobileRegExp); + } + } + ], + code: [ + { + message: '请输入4位有效的短信验证码', + trigger: 'change', + validator: (rule: any, value: string, cb: Function) => { + getRegexRule(rule, value, cb, verifyCodeRegExp4); + } + } + ], + codes: [ + { + message: '请输入6位有效的短信验证码', + trigger: 'change', + validator: (rule: any, value: string, cb: Function) => { + getRegexRule(rule, value, cb, verifyCodeRegExp6); + } + } + ], + username: [ + { + trigger: 'change', + validator: (_rule: any, value: string, cb: Function) => { + const errors = []; + if (!usernameRegExp.test(value)) { + errors.push('只允许字母、数字或者下划线(_)、中划线(-),3到20个字符,必须以字母开头,不能以特殊字符结尾'); + } + if (!emailRegExp.test(value)) { + errors.push('或者有效的邮箱地址'); + } + if (errors.length !== 2) { + return cb(); + } else { + return cb(new Error(errors.join(''))); + } + } + } + ], + name: [ + { + message: '只允许字母、数字或者下划线(_)、中划线(-),3到20个字符,必须以字母开头,不能以特殊字符结尾', + trigger: 'change', + validator: (rule: any, value: string, cb: Function) => { + getRegexRule(rule, value, cb, usernameRegExp); + } + } + ], + password: [ + { + message: '请确保密码的长度范围在8~30之间', + trigger: 'change', + validator: (_rule: any, value: string, cb: Function) => { + if (value.length < 8 || value.length > 30) { + return cb(new Error()); + } else { + return cb(); + } + } + }, + { + message: '密码最少包含一个大写字母、一个小写字母、一个数字', + trigger: 'change', + validator: (rule: any, value: string, cb: Function) => { + getRegexRule(rule, value, cb, passwordRegExp); + } + } + ], + mobile_email: [ + { + trigger: 'change', + validator: (_rule: any, value: string, cb: Function) => { + if (mobileRegExp.test(value) || emailRegExp.test(value)) { + return cb(); + } else { + return cb(new Error('请填写有效的手机号或者邮箱')); + } + } + } + ] +}; + +export const isMobileEmail = (val: string) => { + if (mobileRegExp.test(val)) { + return '手机'; + } + if (emailRegExp.test(val)) { + return '邮箱'; + } + return '手机/邮箱'; +}; diff --git a/src/components/LoginModal/index.ts b/src/components/LoginModal/index.ts new file mode 100644 index 0000000..c7ada39 --- /dev/null +++ b/src/components/LoginModal/index.ts @@ -0,0 +1,4 @@ +import GLoginModal from './index.vue'; + +export type * from './types'; +export default GLoginModal; diff --git a/src/components/LoginModal/index.vue b/src/components/LoginModal/index.vue new file mode 100644 index 0000000..0082375 --- /dev/null +++ b/src/components/LoginModal/index.vue @@ -0,0 +1,1008 @@ + + + + + diff --git a/src/components/LoginModal/types.ts b/src/components/LoginModal/types.ts new file mode 100644 index 0000000..37169c9 --- /dev/null +++ b/src/components/LoginModal/types.ts @@ -0,0 +1,32 @@ +export type GLoginModalProps = { + modelValue?: any + 'onUpdate:modelValue'?: Function + title?: string + showClose?: boolean + draggable?: boolean + showOverlay?: boolean + escapable?: boolean + lockScroll?: boolean + appendToBody?: boolean + defaultType: 'login' | 'register' | 'forget' + triggerType?: string +} + +export interface GLogoProps { + src: any + alt: 'csdn' | 'gitee' | 'github' | 'mobile', + describe?: string +} + +export interface GAlertProps { + type: 'success' | 'warning' | 'error' + text: string + color: string + name: 'icon-right-o' | 'con-warning-o' | 'icon-error-o' | '' +} + +export interface GTitleProps { + title: string + showBack: boolean + icon: any +} diff --git a/src/components/LoginModal/widget/agreement.vue b/src/components/LoginModal/widget/agreement.vue new file mode 100644 index 0000000..1f60fac --- /dev/null +++ b/src/components/LoginModal/widget/agreement.vue @@ -0,0 +1,25 @@ + + + diff --git a/src/components/LoginModal/widget/agreements.vue b/src/components/LoginModal/widget/agreements.vue new file mode 100644 index 0000000..0110813 --- /dev/null +++ b/src/components/LoginModal/widget/agreements.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/src/components/LoginModal/widget/alert.vue b/src/components/LoginModal/widget/alert.vue new file mode 100644 index 0000000..5fb3f48 --- /dev/null +++ b/src/components/LoginModal/widget/alert.vue @@ -0,0 +1,39 @@ + + + diff --git a/src/components/LoginModal/widget/args.vue b/src/components/LoginModal/widget/args.vue new file mode 100644 index 0000000..5a56968 --- /dev/null +++ b/src/components/LoginModal/widget/args.vue @@ -0,0 +1,33 @@ + + + diff --git a/src/components/LoginModal/widget/auth.vue b/src/components/LoginModal/widget/auth.vue new file mode 100644 index 0000000..80ef553 --- /dev/null +++ b/src/components/LoginModal/widget/auth.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/src/components/LoginModal/widget/link.vue b/src/components/LoginModal/widget/link.vue new file mode 100644 index 0000000..521e892 --- /dev/null +++ b/src/components/LoginModal/widget/link.vue @@ -0,0 +1,156 @@ + + + + + diff --git a/src/components/LoginModal/widget/notice.vue b/src/components/LoginModal/widget/notice.vue new file mode 100644 index 0000000..e39105e --- /dev/null +++ b/src/components/LoginModal/widget/notice.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/components/LoginModal/widget/title.vue b/src/components/LoginModal/widget/title.vue new file mode 100644 index 0000000..95cadd8 --- /dev/null +++ b/src/components/LoginModal/widget/title.vue @@ -0,0 +1,17 @@ + + + + diff --git a/src/components/MdEditor/README.md b/src/components/MdEditor/README.md new file mode 100644 index 0000000..4be5a36 --- /dev/null +++ b/src/components/MdEditor/README.md @@ -0,0 +1,10 @@ +# md单栏显示组件 + +### 说明 +``` js +// template + + +``` +### Props ++ 更多透传参数可参考markdown组件api文档添加:[eidtor-md 文档](https://vue-devui.github.io/components/editor-md/) diff --git a/src/components/MdEditor/index.vue b/src/components/MdEditor/index.vue new file mode 100644 index 0000000..6612b78 --- /dev/null +++ b/src/components/MdEditor/index.vue @@ -0,0 +1,418 @@ + + + + + diff --git a/src/components/MdRender/README.md b/src/components/MdRender/README.md new file mode 100644 index 0000000..a9b7c48 --- /dev/null +++ b/src/components/MdRender/README.md @@ -0,0 +1,64 @@ +# markdown渲染组件 + +### 说明 +``` js +// template + +interface Plugin {// 标准插件 + plugin(md:any, params:any):any; + opts?:object; +} +interface CustomPlugin {// 自定义插件 + pluginName:string; + opts?:object; +} +``` + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| v-model | markdown内容 | string | 必传 | | +| custom-plugins | 自定义组件(已封装好的) | CustomPlugin[] | 可选 | | +| plugins | 和devui的渲染组件一样,引入三方组件 | Plugin[] | 可选 | | +| code-copy | 代码是否显示复制按钮 | boolean | 可选 | true | +| html-parse | 和devui的custom-parse一样 | Function | 可选 | | ++ 更多透传参数可参考markdown组件api文档添加:[eidtor-md 文档](https://vue-devui.github.io/components/editor-md/#%E7%BA%AF%E6%B8%B2%E6%9F%93%E6%A8%A1%E5%BC%8F) + +### 已编写的自定义插件 +1. extractHeadPlugin:提取内容标题的token +```js + +interface tokenHead { // 标题 token 流 + level:number; + anchor:string; + content:string; +} +interface extractHeadPluginParams {//插件的参数定义 + callback(headings:tokenHead[], tokens:any):any;// 获取标题的回调 +} +// 栗子 +[{ + pluginName: 'extractHeadPlugin',// 插件名字(固定名称) + opts: { + callback: (tokenArr)=>console.log(tokenArr) //打印捕获的token流 + } +}] +``` +2. linkCovertPlugin:markdown渲染链接处理 +```js +interface LinkPluginParams {// 自定义路径解析参数 + repoPath:string; // 仓库路径 如:/cases/tdengine + linkUrlCovert?(strRaw:string):string;// a标签链接自定义 + imageSrcCovert?(strRaw:string):string;// 图片src自定义 +} +// 栗子 +[{ + pluginName: 'linkCovertPlugin',// 插件名字(固定名称) + opts: { + repoPath: `/lishaohui/wikis`,// 仓库路径 + linkUrlCovert:(x)=>x+'y',//a标签的link路径从x(markdown原文中的路径)替换成xy + imageSrcCovert:(x)=>x+'y',//图片的src路径从x(markdown原文中的路径)替换成xy + } +}] +``` diff --git a/src/components/MdRender/index.vue b/src/components/MdRender/index.vue new file mode 100644 index 0000000..d0423a7 --- /dev/null +++ b/src/components/MdRender/index.vue @@ -0,0 +1,194 @@ + + + + + + diff --git a/src/components/MdRender/mdPlugins.ts b/src/components/MdRender/mdPlugins.ts new file mode 100644 index 0000000..4e776cd --- /dev/null +++ b/src/components/MdRender/mdPlugins.ts @@ -0,0 +1,183 @@ +// more about plugin,refer https://github.com/markdown-it/markdown-it/blob/master/docs/architecture.md +import getRepoId from '@/utils/getRepoId'; +export interface tokenHead { // token 流 + level:number; + anchor:string; + content:string; +} +export interface Plugin {// 标准插件 + plugin(md:any, params:any):any; + opts?:object | any; +} +export interface CustomPlugin {// 自定义插件 + pluginName:string; + opts?:object | any; +} +interface extractHeadPluginParams {// 获取标题的参数 + callback(headings:tokenHead[], tokens:any):any; +} +interface LinkPluginParams {// 自定义路径解析参数 + repoPath:string; + linkUrlCovert?(strRaw:string):string; + imageSrcCovert?(strRaw:string):string; +} +const makeSafe = function(label:string) { // 构造id标记 + return label.replace(/[^\w\s]/gi, '').split(' ').join('_'); +}; + +/** + * 对url路径进行特殊处理 + * @param path 路径 + * @param namespace 项目命名空间 + */ +const pathTransformer = function(path: string) { + let newPath = path.replace(/(?'; + } else { + return ''; + } + }; + // 过滤捕获token流中的标题 + function filterTokens(tokens:any[]) { + const headings:tokenHead[] = []; + for (let i = 0; i < tokens.length; i++) { + if (tokens[i].type !== 'heading_close') { + continue; + } + const token = tokens[i]; + const heading = tokens[i - 1]; + if (heading.type === 'inline') { + headings.push({ + level: +token.tag.substr(1, 1), + anchor: makeSafe(heading.content) + '_' + heading.map[0], + content: heading.content + }); + } + } + params?.callback && params.callback(headings, tokens); + } + md.core.ruler.push('grab_state', function(state:any) { + filterTokens(state.tokens); + }); +}; +// markdown渲染链接处理 +const baseURL = (import.meta as any).env.VITE_DOWNLOAD_HOST;// 图片访问的域名 +export function linkCovertPlugin(md:any, params:LinkPluginParams):any { + // 内部a标签链接处理 + md.renderer.rules.link_open = function(tokens:any, idx:number, options:any, env:any, self:any) { + const attrs = tokens[idx]['attrs']; + for (let i = 0; i < attrs.length; ++i) { + if (attrs[i][0] === 'href' && !isSpecialPath(attrs[i][1])) { + if (pathIsRelative(attrs[i][1])) { + attrs[i][1] = typeof params.linkUrlCovert === 'function' ? params.linkUrlCovert(attrs[i][1]) : `${params.repoPath}/wiki/${attrs[i][1]}${/(\.[^.\/]+)$/.test(attrs[i][1]) ? '' : '.md'}`; + } + attrs[i][1] = pathTransformer(attrs[i][1]); + } + } + return self.renderToken(tokens, idx, options); + }; + // 处理内部图片链接处理 + md.renderer.rules.image = function(tokens:any, idx:number, options:any, env:any, self:any) { + const attrs = tokens[idx]['attrs']; + for (let i = 0; i < attrs.length; ++i) { + if (attrs[i][0] === 'src') { + if (pathIsRelative(attrs[i][1])) { + attrs[i][1] = typeof params.imageSrcCovert === 'function' ? params.imageSrcCovert(attrs[i][1]) : `${baseURL}${params.repoPath}.wiki/files/main/${attrs[i][1]}`; + } + attrs[i][1] = pathTransformer(attrs[i][1]); + } + } + return self.renderToken(tokens, idx, options); + }; +} +// 通过此方法获取自带的插件 +export function useDefinePlugin(name:string, opts?:object):Plugin|null { + const customPluginMap = new Map([ + ['extractHeadPlugin', extractHeadPlugin], + ['linkCovertPlugin', linkCovertPlugin] + ]); + return customPluginMap.get(name) ? { plugin: customPluginMap.get(name) as Plugin['plugin'], opts } : null; +} +// 转换img标签的src路径 +export function imgPlugin(modelValue: string, customPlugins?:CustomPlugin[]) { + try { + if (!modelValue) modelValue = ''; + const plu = customPlugins?.find((item:any) => item?.pluginName === 'linkCovertPlugin'); + const repFun = (reUrl:string) => `${baseURL}${plu?.opts?.repoPath}.wiki/files/main/${reUrl}`; + const regex = //g; // 用于匹配标签及其src属性,兼容标签中换行 + // 将内容里的原img标签替换为处理过的img标签 + const res = modelValue.replace(regex, function(subString, p1, p2) { + let tagStr = subString; + let fileLink = p2; + if (pathIsRelative(p2) && !isSpecialPath(p2)) { // 相对路径补全 + fileLink = plu?.opts?.imageSrcCovert(p2) || repFun(p2); + } + fileLink = pathTransformer(fileLink); + tagStr = subString.replace(p2, fileLink); // 将原链接替换为转变后的链接 + return tagStr; + }); + return res; + } catch (error) { + console.error(error); + return modelValue; + } +} + +// 转换a标签的href路径 +export function hrefPlugin(modelValue: string, customPlugins?:CustomPlugin[]) { + try { + if (!modelValue) modelValue = ''; + const regex = /\/g; // 用于匹配标签中的href属性的正则表达式 + const plu = customPlugins?.find((item:any) => item?.pluginName === 'linkCovertPlugin'); + const repFun = (reUrl:string) => `${plu?.opts?.repoPath}/wiki/${reUrl}${/(\.[^.\/]+)$/.test(reUrl) ? '' : '.md'}` + // 将内容里的原a标签替换为处理过的a标签 + const res = modelValue.replace(regex, function(subString, p1) { + let tagStr = subString; + let fileLink = p1; + if (pathIsRelative(p1) && !isSpecialPath(p1)) { // 相对路径补全 + fileLink = plu?.opts?.linkUrlCovert(p1) || repFun(p1) + } + fileLink = pathTransformer(fileLink); + tagStr = subString.replace(p1, fileLink); // 将原链接替换为转变后的链接 + return tagStr; + }); + return res; + } catch (error) { + console.error(error); + return modelValue; + } +} diff --git a/src/components/MemberAvatarList/README.md b/src/components/MemberAvatarList/README.md new file mode 100644 index 0000000..178574a --- /dev/null +++ b/src/components/MemberAvatarList/README.md @@ -0,0 +1,68 @@ +# MemberAvatarList组件 + +### 说明 +- 通用的用户头像列表组件,demo如下 + +``` js +// template + +// script +const userAvatarList2: Array = [ + { + avatar: 'https://avatars.githubusercontent.com/u/40119767?v=4', + name: '曾恒瑶' + }, + { + avatar: 'https://avatars.githubusercontent.com/u/40119767?v=4', + name: '曾恒瑶' + }, + { + avatar: 'https://avatars.githubusercontent.com/u/40119767?v=4', + name: '曾恒瑶' + } +]; +``` +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +| -------------- | -------------------- | ------- | ----------------- | ------ | +| data | 头像列表 | array | 见下表 | [] | +| title | 标题 | string | — | — | +| toMore | 查看全部路由path | string | — | — | +| isRound | 是否圆形 | boolean | false则为圆角矩形 | true | +| showHover | 展示hover | boolean | — | false | +| hideNum | 隐藏标签数字 | boolean | — | false | +| hideBottomMore | 隐藏底部查看全部按钮 | boolean | — | false | +| hideRightMore | 隐藏右上角全部按钮 | boolean | — | false | +| type-icon | 标题前的类型图标 | string | — | — | +| more-icon | 更多按钮图标 | string | — | — | +| count | 成员数 | number | | 0 | + +### Props(data) + +注意:有头像src优先会显示,没有src则显示name,若设置了customText则优先显示自定义的文案 + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|----------------|-------------------------|-------------------------------|-----------|-------| +| avatar | 头像src | string | — | — | +| name | 用户名 | string | — | — | +| customText | 自定义文案 | string | — | — | + + +### Emits + +注意:以下事件都是组件内部对应的按钮点击触发,如果用插槽自定义对应区域的内容的话,事件自行监听即可 + +| 方法 | 说明 | 返回值 | +|-----------|--------|-----------------------| +| handleMore | 点击更多触发 | | + +### Slots + +| 名称 | 说明 | +|--------------------|-------------------------------| +| title | | +| content | | +| more | | +| bottomMore | | + diff --git a/src/components/MemberAvatarList/index.vue b/src/components/MemberAvatarList/index.vue new file mode 100644 index 0000000..a254126 --- /dev/null +++ b/src/components/MemberAvatarList/index.vue @@ -0,0 +1,168 @@ + + + + diff --git a/src/components/MemberItemMini/index.vue b/src/components/MemberItemMini/index.vue new file mode 100644 index 0000000..3e7b569 --- /dev/null +++ b/src/components/MemberItemMini/index.vue @@ -0,0 +1,69 @@ + + + + diff --git a/src/components/MemberItems/README.md b/src/components/MemberItems/README.md new file mode 100644 index 0000000..965aa90 --- /dev/null +++ b/src/components/MemberItems/README.md @@ -0,0 +1,38 @@ +TS接口文档可以查看同文件夹下的types.ts, demo可以访问/demo777进行查看 + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|----------------|-------------------------|-------------------------------|-----------|-------| +| data | 人员列表数据 | Array | — | [] | +| size? | 头像尺寸 | number | — | 48 | +| round? | 是否为圆形头像 | boolean | — | true | +| statusOptions? | 用户身份下拉数据项 | {label: string; value: string | number}[] | — | [] | +| isHandling? | 是否处于事务处理中,设为true会禁用右边操作 | boolean | — | false | +| isManager? | 当前用户是否为管理员 | boolean | — | false | +| showTags? | 是否显示身份标签 | boolean | — | true | + +### Emits + +注意:以下事件都是组件内部对应的按钮点击触发,如果用插槽自定义对应区域的内容的话,事件自行监听即可 + +| 方法 | 说明 | 返回值 | +|-----------|--------|-----------------------| +| cancelInvited | 取消邀请 | { data: MemberItemData; index: number } | +| exitProject | 退出项目 | { data: MemberItemData; index: number } | +| removeMember | 移除成员 | { data: MemberItemData; index: number } | +| applyPass | 通过申请 | { data: MemberItemData; index: number } | +| applyRefuse | 拒绝申请 | { data: MemberItemData; index: number } | +| statusChange | 成员身份变化 | { data: MemberItemData; index: number } | + +### Slots + +| 名称 | 说明 | +|--------------------|-------------------------------| +| avatar | 组件头像区域插槽 | +| name | 组件名称区域插槽 | +| tags | 组件标签区域插槽 | +| extra-tags | 组件额外标签区域插槽,在只对当前组件标签进行拓展时可以使用 | +| status | 组件成员身份选择区域插槽 | +| action | 组件动作区域插槽 | +| extra-action | 组件额外动作区域插槽,在只对当前组件标签进行拓展时可以使用 | diff --git a/src/components/MemberItems/index.vue b/src/components/MemberItems/index.vue new file mode 100644 index 0000000..1cb7b04 --- /dev/null +++ b/src/components/MemberItems/index.vue @@ -0,0 +1,343 @@ + + + + + + + diff --git a/src/components/MemberItems/types.ts b/src/components/MemberItems/types.ts new file mode 100644 index 0000000..805821a --- /dev/null +++ b/src/components/MemberItems/types.ts @@ -0,0 +1,28 @@ +// 传入的成员列表数据 +export type MemberItemData = { + // 头像图片 + imageSrc?: null | string; + // 用户昵称 + nickname: string; + // 个人中心访问路径 + path: string; + // 用户名 + userName: string; + // 是否为本人 + isSelf?: boolean; + // 是否为管理员 + isManager?: boolean; + // 是否为被邀请人员 + isToBeInvited?: boolean; + // 用户身份 + status: string | number; + // 是否为申请中 + isApplying?: boolean; + // 是否允许退出项目 个人项目本人不允许退出 组织项目最后一个管理员不允许退出 + allowedExit?: boolean; + // 禁用option修改权限 + disabledOption?: boolean; + // 权限下拉列表 用于组织成员设置管理员权限 + statusOptions?: { name: string, value: string }[] + [propName: string]: any; +} diff --git a/src/components/MergeCheck/README.md b/src/components/MergeCheck/README.md new file mode 100644 index 0000000..e480c83 --- /dev/null +++ b/src/components/MergeCheck/README.md @@ -0,0 +1,87 @@ +TS接口文档可以查看同文件夹下的types.ts, demo可以访问/demo777进行查看 + +```vue + + +``` +```javascript +const mergeDatas: MergeCheckData[] = [ + { + checking: true + }, + { + verifyData: { + success: true, + totalPass: 4, + needPass: 2, + hasPassed: 2, + refused: 1 + } + }, + { + verifyData: { + success: false, + totalPass: 5, + needPass: 3, + hasPassed: 2, + refused: 2 + } + }, + { + reviewData: { + success: false, + totalPass: 5, + needPass: 3, + hasPassed: 2 + } + }, + { + reviewData: { + success: true, + totalPass: 5, + needPass: 3, + hasPassed: 4 + } + }, + { + reviewData: { + success: true + } + }, + { + reviewData: { + success: false + } + } +]; +``` + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|----------------|----------------------------|----------------|-----------|------| +| data | 审核数据 | MergeCheckData | — | {} | +| link? | 对应设置页面地址 | string | — | '' | +| isLast? | 是否为最后一个,如果是,则会设置组件的底边框和下圆角 | boolean | — | true | +| isLast? | 是否为第一个,如果是,则会设置组件的顶边框和上圆角 | boolean | — | true | + +### Emits + +注意:以下事件都是组件内部对应的按钮点击触发,如果用插槽自定义对应区域的内容的话,事件自行监听即可 + +| 方法 | 说明 | 返回值 | +|--------------|-------|-----------------------| + +### Slots + +| 名称 | 说明 | +|------------------|------------------| +| header | 组件头部区域插槽 | +| icon | 组件头部区域icon插槽 | +| content | 组件内容区域插槽 | +| message | 组件内容消息区域插槽 | +| results | 组件内容审核结果区域插槽 | diff --git a/src/components/MergeCheck/index.vue b/src/components/MergeCheck/index.vue new file mode 100644 index 0000000..d34cb57 --- /dev/null +++ b/src/components/MergeCheck/index.vue @@ -0,0 +1,191 @@ + + + + + + + diff --git a/src/components/MergeCheck/types.ts b/src/components/MergeCheck/types.ts new file mode 100644 index 0000000..eda2c74 --- /dev/null +++ b/src/components/MergeCheck/types.ts @@ -0,0 +1,6 @@ +export type checkConfigType = { + title: string, + icon: string, + subTitle?: string + className?: string, +} diff --git a/src/components/MilestoneItem/README.md b/src/components/MilestoneItem/README.md new file mode 100644 index 0000000..24145de --- /dev/null +++ b/src/components/MilestoneItem/README.md @@ -0,0 +1,90 @@ +# MilestoneItem组件 + +### 说明 +1. MilestoneItem组件使用场景为里程碑列表 + - 时间、进度条、编辑行、描述都可插槽使用,具体见下表 +2. MilestoneItem使用demo + +``` js + + + +const milestoneItemData = [{ + title: '1.x', + desc: '完成第一个版本发布的相关功能,包括环境搭建、功能测试及 bug 修复等', + endTime: '2023-07-10', + updateTime: '2023-07-10', + finishPercent: 40, + openNum: 132, + closeNum: 88, + canEdit: true +}, +{ + title: '1.x', + desc: '完成第一个版本发布的相关功能,包括环境搭建、功能测试及 bug 修复等', + endTime: '2023-07-10', + updateTime: '2023-07-10', + finishPercent: 40, + openNum: 132, + closeNum: 88, + canEdit: false +} +]; + +const handleEdit = (item:object, index:number) => { + +}; +const handleClose = (item:object, index:number) => { + +}; +const handleDeleted = (item:object, index:number) => { + +}; +``` + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|----------|---------------------|----------|------------|------------| +| data | 里程碑列表(见下表Props(data)) | array | | | +| processColor | 进度条颜色 | string | | | + +### Props(data) + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +| ------------- | ---------------- | ------- | ------ | ------------ | +| title | 里程碑列表 | string | | | +| desc | 进度条颜色 | string | | | +| endTime | 截止时间 | string | | 暂无截止时间 | +| updateTime | 更新时间 | string | | 暂无更新时间 | +| finishPercent | 完成百分比 | number | | 0 | +| openNum | 开启数 | number | | 0 | +| closeNum | 关闭数 | number | | 0 | +| issuesText | issues自定义文案 | string | | issues | +| canEdit | 是否编辑模式 | boolean | | false | +| typeIcon? | 标题前icon | boolean | | false | +| hideTypeIcon? | 是否隐藏标题前icon | boolean | | false | + + +### Slots + +| 名称 | 说明 | +|---------------|---------------------------------------------------------| +| body | body内容插槽,可覆盖盒子中所有内容 | +| handle | 编辑区域插槽 | +| desc | 描述区域插槽 | +| time | 时间区域插槽 | +| right | 右侧进度条区域插槽 | + +### Event + +| 名称 | 说明 | +| ------------- | ------------------------------------------- | +| handleEdit | 点击编辑按钮触发,返回item对象和index | +| handleClose | 点击关闭里程碑按钮触发,返回item对象和index | +| handleDeleted | 点击删除按钮触发,返回item对象和index | \ No newline at end of file diff --git a/src/components/MilestoneItem/index.vue b/src/components/MilestoneItem/index.vue new file mode 100644 index 0000000..feeec68 --- /dev/null +++ b/src/components/MilestoneItem/index.vue @@ -0,0 +1,206 @@ + + + + + diff --git a/src/components/MoreList/index.vue b/src/components/MoreList/index.vue new file mode 100644 index 0000000..c98dff6 --- /dev/null +++ b/src/components/MoreList/index.vue @@ -0,0 +1,70 @@ + + + + + diff --git a/src/components/NavSidebar/README.md b/src/components/NavSidebar/README.md new file mode 100644 index 0000000..1bb9a58 --- /dev/null +++ b/src/components/NavSidebar/README.md @@ -0,0 +1,12 @@ +# NavSidebar + +### 说明 +- 布局中使用的侧边栏菜单 + + +### Slots + +| 名称 | 说明 | +|---------------------|---------------------------------------------| +| sidebarInfo | sidebar顶部信息 | + diff --git a/src/components/NavSidebar/attachMenu.ts b/src/components/NavSidebar/attachMenu.ts new file mode 100644 index 0000000..c57f5b6 --- /dev/null +++ b/src/components/NavSidebar/attachMenu.ts @@ -0,0 +1,81 @@ +export const attachOrgSettingMenu = [ + { + icon: 'icon-manage', + label: '管理', + id: '', + children: [ + { children: [], icon: '', label: '内容管理', id: '/organization/setting/content' }, + { children: [], icon: '', label: '专栏管理', id: '/organization/setting/column' }, + { children: [], icon: '', label: '静态页面管理', id: '/organization/setting/static-page' }, + { children: [], icon: '', label: '收录管理', id: '/organization/setting/included' }, + { children: [], icon: '', label: '直播与活动', id: '/organization/setting/live' }, + { children: [], icon: '', label: '文档中心', id: '/organization/setting/docs' }, + { children: [], icon: '', label: '评论管理', id: '/organization/setting/comment-manage' }, + { children: [], icon: '', label: '分类管理', id: '/organization/setting/category' } + ] + }, { + icon: 'icon-operate', + label: '运营', + id: '', + children: [ + { children: [], icon: '', label: 'Banner位', id: '/organization/setting/rotation' }, + { children: [], icon: '', label: '自定义导航', id: '/organization/setting/navigation' }, + { children: [], icon: '', label: '产品推荐', id: '/organization/setting/market' }, + { children: [], icon: '', label: '运营活动', id: '/organization/setting/rotation-right' }, + { children: [], icon: '', label: '热门标签', id: '/organization/setting/hot-tags' }, + { children: [], icon: '', label: '悬浮窗设置', id: '/organization/setting/float-window' }, + { children: [], icon: '', label: '模块配置', id: '/organization/setting/module-config' }, + { children: [], icon: '', label: '服务商信息', id: '/organization/setting/facilitator-config' } + ] + }, { + icon: 'icon-growth', + label: '成长体系', + id: '', + children: [ + { children: [], icon: '', label: '功能设置', id: '/organization/setting/growth' }, + { children: [], icon: '', label: '任务中心', id: '/organization/setting/growth-task' }, + { children: [], icon: '', label: '成长等级', id: '/organization/setting/growth-level' } + ] + }, { + icon: 'icon-marketing', + label: '营销组件', + id: '', + children: [ + { children: [], icon: '', label: '加入社区', id: '/organization/setting/join' }, + { children: [], icon: '', label: '触达消息', id: '/organization/setting/push-msg' }, + { children: [], icon: '', label: '留资表单', id: '/organization/setting/retained-capital' }, + { children: [], icon: '', label: '抽奖工具', id: '/organization/setting/draw' }, + { children: [], icon: '', label: '自定义弹窗', id: '/organization/setting/custom' }, + { children: [], icon: '', label: '文章内容设置', id: '/organization/setting/content-setting' } + ] + }, { + icon: 'icon-edu', + label: '课程', + id: '', + children: [ + { children: [], icon: '', label: '课程管理', id: '/organization/setting/edu-course' }, + { children: [], icon: '', label: '课程数据', id: '/organization/setting/data-edu' } + ] + }, { + icon: 'icon-data', + label: '数据', + id: '', + children: [ + { children: [], icon: '', label: '概览', id: '/organization/setting/data-board' }, + { children: [], icon: '', label: '内容分析', id: '/organization/setting/data-content' }, + { children: [], icon: '', label: '渠道来源', id: '/organization/setting/data-source' }, + { children: [], icon: '', label: '用户分析', id: '/organization/setting/data-user' }, + { children: [], icon: '', label: '作者分析', id: '/organization/setting/data-author' } + ] + }, { + icon: 'icon-set', + label: '设置', + id: '', + children: [ + { children: [], icon: '', label: '社区信息', id: '/organization/setting/general' }, + { children: [], icon: '', label: '成员管理', id: '/organization/setting/people' }, + { children: [], icon: '', label: '页面设置', id: '/organization/setting/exterior' }, + { children: [], icon: '', label: '域名设置', id: '/organization/setting/domain' } + ] + } +]; diff --git a/src/components/NavSidebar/index.vue b/src/components/NavSidebar/index.vue new file mode 100644 index 0000000..544d57b --- /dev/null +++ b/src/components/NavSidebar/index.vue @@ -0,0 +1,269 @@ + + + + + diff --git a/src/components/NavSidebar/types.ts b/src/components/NavSidebar/types.ts new file mode 100644 index 0000000..ff6a186 --- /dev/null +++ b/src/components/NavSidebar/types.ts @@ -0,0 +1,15 @@ +export interface itemProps { + id: string; // 标识符,这里为路由别名 + label: string; // 标题 + number?: number; // 显示数量 + icon?: string; // 图标 + children?: itemProps[], // 子item + menuType?: string // 菜单分类 +} +export interface propsType { + defaultActiveId?: string; + tabList: itemProps[]; +} +export interface listType { + [index: number]: itemProps; +} diff --git a/src/components/NavTabs/NewNavTabs.vue b/src/components/NavTabs/NewNavTabs.vue new file mode 100644 index 0000000..d4f6702 --- /dev/null +++ b/src/components/NavTabs/NewNavTabs.vue @@ -0,0 +1,299 @@ + + + + + diff --git a/src/components/NavTabs/index.vue b/src/components/NavTabs/index.vue new file mode 100644 index 0000000..7638c7b --- /dev/null +++ b/src/components/NavTabs/index.vue @@ -0,0 +1,349 @@ + + + + + + diff --git a/src/components/NavTabs/types.ts b/src/components/NavTabs/types.ts new file mode 100644 index 0000000..f9cd9e2 --- /dev/null +++ b/src/components/NavTabs/types.ts @@ -0,0 +1,13 @@ +export interface itemProps { + find(arg0: (curr: any) => boolean): unknown; + id: string; // 标识符,这里为路由别名 + label: string; // 标题 + num?: number; // 显示数量 +} +export interface propsType { + defaultActiveId?: string; // 默认激活tabId + tabList: itemProps[]; // tab列表设置 +} +export interface listType { + [index: number]: itemProps; +} diff --git a/src/components/Number/README.md b/src/components/Number/README.md new file mode 100644 index 0000000..e6db5a7 --- /dev/null +++ b/src/components/Number/README.md @@ -0,0 +1,27 @@ +# Number + +### 说明 +- 将数字转换为k或者m的缩写,方便阅读,默认保留2位小数。 +- 支持bit单位运算 + +``` js +// 结果:1.02K + + +// 结果:1.03K + + +// 文档提交计算,结果:1KB + + +// 结果:1.001K + +``` + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| number | 数字 | string \| number | - | - | +| fixed | 有效的小数位个数 | number | | 2 | +| byte | 文件体积等计算,1024为基数 | boolean | | false | diff --git a/src/components/Number/index.vue b/src/components/Number/index.vue new file mode 100644 index 0000000..0e4d447 --- /dev/null +++ b/src/components/Number/index.vue @@ -0,0 +1,44 @@ + + + diff --git a/src/components/OptionLink/README.md b/src/components/OptionLink/README.md new file mode 100644 index 0000000..c8e6348 --- /dev/null +++ b/src/components/OptionLink/README.md @@ -0,0 +1,20 @@ +# OptionLink + +### 说明 +- 基于Link和d-option的封装 +- 已全局声明,直接使用(同Link) + +``` html + + xxxxxx + +``` + +### Props +同Link + +### Emits +同Link + +### Slots +同Link diff --git a/src/components/OptionLink/index.vue b/src/components/OptionLink/index.vue new file mode 100644 index 0000000..00fefdd --- /dev/null +++ b/src/components/OptionLink/index.vue @@ -0,0 +1,41 @@ + + + + + diff --git a/src/components/PageLayout/README.md b/src/components/PageLayout/README.md new file mode 100644 index 0000000..37e60a6 --- /dev/null +++ b/src/components/PageLayout/README.md @@ -0,0 +1,36 @@ +# PageLayout 布局组件 + +### 说明 + +1. 用于页面主体布局,在对应插槽位放置完成布局。独占一行或居中布局;横向分三板块 +2. 可设置 aside-left 吸顶 + +```js + + +
default
+ +
+``` + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +| ---------------- | ----------------- | ------- | ------ | ------ | +| fluid | 主体部分独占一行 | boolean | | false | +| stickyAsideLeft | 左边 sidebar 吸顶 | boolean | | false | +| leftClassName | 左边 class 类名 | string | | - | +| defaultClassName | 主体 class 类名 | string | | - | +| rightClassName | 右边 class 类名 | string | | - | + +### Slots + +| 名称 | 说明 | +| ------- | ----------------- | +| default | 默认插槽 | +| left | 左边 sidebar 插槽 | +| right | 右边 sidebar 插槽 | diff --git a/src/components/PageLayout/index.vue b/src/components/PageLayout/index.vue new file mode 100644 index 0000000..130d45d --- /dev/null +++ b/src/components/PageLayout/index.vue @@ -0,0 +1,116 @@ + + + + diff --git a/src/components/Panel/README.md b/src/components/Panel/README.md new file mode 100644 index 0000000..91bf0f0 --- /dev/null +++ b/src/components/Panel/README.md @@ -0,0 +1,29 @@ +# Panel组件 + +### 说明 +1. Panel组件对应了所有带边框的块状元素,通过slot插槽,可以插入 +2. Panel组件已经默认全局引入,使用前无需再次声明 + +``` js + + 这是Panel常见的用法,body内容直接写在标签里面 + + + +``` + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|----------|---------------------|----------|------------|------------| +| blank | body区域使用padding | boolean | | true | + +### Slots + +| 名称 | 说明 | +|---------------|---------------------------------------------------------| +| default | body内容插槽。传入blank:false时,body插槽padding将设为0 | +| header | 头部内容插槽,默认居左。header类插槽全部不启用时,header将被隐藏 | +| headerCenter | 头部内容居中的插槽 | +| headerRight | 头部内容居右的插槽 | +| footer | 底部插槽,居左对齐。不传入则不会显示footer | \ No newline at end of file diff --git a/src/components/Panel/index.vue b/src/components/Panel/index.vue new file mode 100644 index 0000000..f5b9d5c --- /dev/null +++ b/src/components/Panel/index.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/src/components/ReleaseCard/README.md b/src/components/ReleaseCard/README.md new file mode 100644 index 0000000..d4595d1 --- /dev/null +++ b/src/components/ReleaseCard/README.md @@ -0,0 +1,73 @@ +TS接口文档可以查看同文件夹下的types.ts, demo可以访问/demo777进行查看 + +```vue + + + +// script +const releaseData: ReleaseCardData = { + title: '4.1.0', + version: '4.1.0', + userInfo: { + nickname: 'username', + imgSrc: '', + path: '/sasad' + }, + createdTime: '2023-07-08', + tag: '3.3.3', + commit: '233de2', + validated: true, + attachments: [ + { + filename: 'openharmony-4.1.0-android-sdk.zip', + size: '189 MB', + updatedTime: '2023-03-05', + link: 'https://github.com/mrdoob/three.js/archive/refs/tags/r154.tar.gz' + }, + { + filename: '下载Source Code(tar.gz)', + type: 'zip', + updatedTime: '2023-03-05', + link: 'https://github.com/mrdoob/three.js/archive/refs/tags/r154.tar.gz' + } + ] +}; +``` + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|----------------|----------|-----------------|-----------|-------| +| data | release数据 | ReleaseCardData | — | {} | +| simple? | 是否开启简易显示 | boolean | — | false | + +### Emits + +注意:以下事件都是组件内部对应的按钮点击触发,如果用插槽自定义对应区域的内容的话,事件自行监听即可 + +| 方法 | 说明 | 返回值 | +|--------------|-------|-----------------------| +| compare | 对比tag | ReleaseCardData | +| edit | 编辑 | ReleaseCardData | +| delete | 删除 | ReleaseCardData | + +### Slots + +| 名称 | 说明 | +|---------------------|------------------| +| header | 组件头部区域插槽 | +| title | 组件标题区域插槽 | +| avatar | 组件头部头像区域插槽 | +| created-time | 组件头部时间区域插槽 | +| tag | 组件头部标签区域插槽 | +| commit | 组件头部commit信息区域插槽 | +| actions | 组件操作区域插槽 | +| detail | 组件详细信息区域插槽 | +| attachments-header | 组件附件信息头部区域插槽 | +| attachments-content | 组件附件信息内容区域插槽 | +| attachment | 组件附件行区域插槽 | +| attachment-name | 组件附件行名称区域插槽 | +| attachment-size | 组件附件行文件大小区域插槽 | +| attachment-time | 组件附件行文件更新时间区域插槽 | diff --git a/src/components/ReleaseCard/index.vue b/src/components/ReleaseCard/index.vue new file mode 100644 index 0000000..bd03c5c --- /dev/null +++ b/src/components/ReleaseCard/index.vue @@ -0,0 +1,320 @@ + + + + + + + diff --git a/src/components/ReleaseCard/releaseCard.vue b/src/components/ReleaseCard/releaseCard.vue new file mode 100644 index 0000000..23255e5 --- /dev/null +++ b/src/components/ReleaseCard/releaseCard.vue @@ -0,0 +1,292 @@ + + + + + + + diff --git a/src/components/ReleaseCard/types.ts b/src/components/ReleaseCard/types.ts new file mode 100644 index 0000000..514f0a0 --- /dev/null +++ b/src/components/ReleaseCard/types.ts @@ -0,0 +1,24 @@ +export type ReleaseCardData = { + version: string; + title: string; + userInfo: { + nickname?: string; + name?: string; + imgSrc: string; + path?: string; + }; + createdTime: string; + tag: string; + commit: string; + validated?: boolean; + attachments?: { + filename: string; + type?: string; + size?: number; + updatedTime: string; + id?: number | string; + link: string; + isSource:boolean; + }[]; + [propName: string]: any; +} diff --git a/src/components/Repo/ActivityCard.vue b/src/components/Repo/ActivityCard.vue new file mode 100644 index 0000000..501389d --- /dev/null +++ b/src/components/Repo/ActivityCard.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/src/components/Repo/ContributeCard.vue b/src/components/Repo/ContributeCard.vue new file mode 100644 index 0000000..2f977ad --- /dev/null +++ b/src/components/Repo/ContributeCard.vue @@ -0,0 +1,72 @@ + + + + + diff --git a/src/components/Repo/DownloadChart.vue b/src/components/Repo/DownloadChart.vue new file mode 100644 index 0000000..f318514 --- /dev/null +++ b/src/components/Repo/DownloadChart.vue @@ -0,0 +1,122 @@ + + + diff --git a/src/components/Repo/ForkButton.vue b/src/components/Repo/ForkButton.vue new file mode 100644 index 0000000..774f813 --- /dev/null +++ b/src/components/Repo/ForkButton.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/src/components/Repo/MarkdownCard.vue b/src/components/Repo/MarkdownCard.vue new file mode 100644 index 0000000..50f3b51 --- /dev/null +++ b/src/components/Repo/MarkdownCard.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/src/components/Repo/NoticeStatus.vue b/src/components/Repo/NoticeStatus.vue new file mode 100644 index 0000000..1566b0b --- /dev/null +++ b/src/components/Repo/NoticeStatus.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/src/components/Repo/ReleaseCard.vue b/src/components/Repo/ReleaseCard.vue new file mode 100644 index 0000000..4f80a2b --- /dev/null +++ b/src/components/Repo/ReleaseCard.vue @@ -0,0 +1,62 @@ + + + diff --git a/src/components/Repo/RepoHeaderInfo/CloneRepo.vue b/src/components/Repo/RepoHeaderInfo/CloneRepo.vue new file mode 100644 index 0000000..217c2f7 --- /dev/null +++ b/src/components/Repo/RepoHeaderInfo/CloneRepo.vue @@ -0,0 +1,209 @@ + + + + + diff --git a/src/components/Repo/RepoHeaderInfo/RepoAction.vue b/src/components/Repo/RepoHeaderInfo/RepoAction.vue new file mode 100644 index 0000000..24e9ad6 --- /dev/null +++ b/src/components/Repo/RepoHeaderInfo/RepoAction.vue @@ -0,0 +1,110 @@ + + + diff --git a/src/components/Repo/RepoHeaderInfo/RepoData.vue b/src/components/Repo/RepoHeaderInfo/RepoData.vue new file mode 100644 index 0000000..3b78f0c --- /dev/null +++ b/src/components/Repo/RepoHeaderInfo/RepoData.vue @@ -0,0 +1,268 @@ + + + diff --git a/src/components/Repo/RepoHeaderInfo/RepoTopic.vue b/src/components/Repo/RepoHeaderInfo/RepoTopic.vue new file mode 100644 index 0000000..46a73ec --- /dev/null +++ b/src/components/Repo/RepoHeaderInfo/RepoTopic.vue @@ -0,0 +1,60 @@ + + + diff --git a/src/components/Repo/RepoHeaderInfo/SyncFork.vue b/src/components/Repo/RepoHeaderInfo/SyncFork.vue new file mode 100644 index 0000000..abdf921 --- /dev/null +++ b/src/components/Repo/RepoHeaderInfo/SyncFork.vue @@ -0,0 +1,286 @@ + + + + + diff --git a/src/components/Repo/RepoHeaderInfo/index.vue b/src/components/Repo/RepoHeaderInfo/index.vue new file mode 100644 index 0000000..75f8379 --- /dev/null +++ b/src/components/Repo/RepoHeaderInfo/index.vue @@ -0,0 +1,242 @@ + + + diff --git a/src/components/Repo/RepoIntro.vue b/src/components/Repo/RepoIntro.vue new file mode 100644 index 0000000..0b06ddd --- /dev/null +++ b/src/components/Repo/RepoIntro.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/src/components/Repo/StarStatus.vue b/src/components/Repo/StarStatus.vue new file mode 100644 index 0000000..036f4fc --- /dev/null +++ b/src/components/Repo/StarStatus.vue @@ -0,0 +1,115 @@ + + + + + diff --git a/src/components/Repo/eventAdapter.vue b/src/components/Repo/eventAdapter.vue new file mode 100644 index 0000000..8e76857 --- /dev/null +++ b/src/components/Repo/eventAdapter.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/RepoFileList/README.md b/src/components/RepoFileList/README.md new file mode 100644 index 0000000..f958136 --- /dev/null +++ b/src/components/RepoFileList/README.md @@ -0,0 +1,25 @@ +TS接口文档可以查看同文件夹下的types.ts, demo可以访问/demo777进行查看 + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-------------|-----------|---------------------------|-------------------------------- |------------| +| data | 项目文件列表数据 | Array | — | [] | +| columns | 项目文件列表字段 | Array | — | 具体参考组件内的代码 | +| showHeader? | 是否显示表头 | boolean | — | false | +| headerBg? | 是否显示表头背景色 | boolean | — | false | + +### Emits + +| 方法 | 说明 | 返回值 | +|-----------|--------|-----------------------| +| rowClick | 行点击触发 | data: RepoFileListRow | +| fileClick | 文件点击触发 | data: RepoFileListRow | + +### Slots + +| 名称 | 说明 | +|--------------------|--------------| +| header | 组件头部插槽,不在表格内 | +| th:${column.field} | 对应列表头的插槽 | +| td:${column.field} | 对应列表格内容的插槽 | diff --git a/src/components/RepoFileList/index.vue b/src/components/RepoFileList/index.vue new file mode 100644 index 0000000..07a5c30 --- /dev/null +++ b/src/components/RepoFileList/index.vue @@ -0,0 +1,121 @@ + + + + + diff --git a/src/components/RepoFileList/types.ts b/src/components/RepoFileList/types.ts new file mode 100644 index 0000000..92d4a7a --- /dev/null +++ b/src/components/RepoFileList/types.ts @@ -0,0 +1,30 @@ +export type RepoFileListColumn = { + // 标题 + title: string; + // column key值 + field: string; + // column是否为文件列,为true则使用FileIcon组件,自定义插槽的时候不受此影响 + isFile?: boolean; + // 是否为时间列,为true则使用组件内自带的时间转换,自定义插槽的时候不受此影响 + isTime?: boolean; + // 列宽, 不填的时候自适应 + width?: number; + // 最大宽度 + maxWidth?: number; +} + +export type RepoFileListRow = { + // 文件类型,用于显示对应文件的icon + filetype: string; + // 文件名称 + filename: string; + // 文件对应的路由地址 + fileLink?: string; + // 最后一次提交内容 + commit: string; + // commit对应的路由地址 + commitLink?: string; + // 最后一次更新时间 + updateTime: string; + [propName: string]: any +} diff --git a/src/components/RepoItem/README.md b/src/components/RepoItem/README.md new file mode 100644 index 0000000..28670a6 --- /dev/null +++ b/src/components/RepoItem/README.md @@ -0,0 +1,83 @@ +# RepoItem组件 + +### 说明 +- 通用的项目卡片,demo如下 + +``` js +// template + +// script +const iconHandleList = toRef([ + { icon: '', value: 'C', iconColor: 'red',type: 'language', label: '语言', to: '' }, + { icon: 'gt-star', value: 2100, label: '关注', to: '' }, + { icon: 'gt-fork', value: 975, label: 'Fork', to: '' }, + { icon: 'gt-date', value: '2023-07-20', type:'updateTime', label: '', to: '' } +]); +const item = ref({ + id: '1', + imgSrc: '', + title: 'kernel_liteos_a', + desc: 'LiteOS kernel for embedded devices with rich resources', + isStar: false, + tag: 'Public', + web_url:'' + }); + +``` + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|----------------|-------------------------|-------------------------------|-----------|-------| +| title | 标题 | string | — | — | +| tag? | 标签 | string | — | — | +| desc? | 描述 | string | — | — | +| imgSrc? | 头像src | string | — | — | +| id | 唯一标识id | string | — | — | +| iconHandleList? | icon操作列表 | array | 见下表 | [] | +| isStar? | 是否satr | boolean | — | false | +| hideStar? | 是否显示身份标签 | boolean | — | true | +| hideTag? | 隐藏tag | boolean | — | false | +| hideDesc? | 隐藏描述 | boolean | — | false | +| hideRight? | 隐藏右侧图表区域 | boolean | — | true | +| web_url? | 点击标题跳转url | string | — | — | +| keywords? | 关键词高亮 | string | — | — | +| hasShadow? | 是否为卡片投影样式 | boolean | — | false(默认为底部边框) | + +#### Props(iconHandleList) + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +| ---------- | --------- | ---------------- | ------------------------------------------------------------ | ------ | +| icon? | 图标name | string | — | — | +| value | 显示名称 | string \| number | — | — | +| label? | hover文案 | string | — | — | +| to? | 跳转路径 | string | — | — | +| type? | 字段类型 | string | 语言type需传language,则显示特定样式;时间需传:createdTime \| updateTime,则会转格式如:1天以前 | string | +| iconColor? | icon颜色 | string | — | — | + + + +### Emits + +注意:以下事件都是组件内部对应的按钮点击触发,如果用插槽自定义对应区域的内容的话,事件自行监听即可 + +| 方法 | 说明 | 返回值 | +|-----------|--------|-----------------------| +| handleStar | 点击star | data: {id:'',isStar:true} | + +### Slots + +| 名称 | 说明 | +|--------------------|-------------------------------| +| right | 组件右侧图表区域 | + diff --git a/src/components/RepoItem/datahandle.ts b/src/components/RepoItem/datahandle.ts new file mode 100644 index 0000000..c68fbe0 --- /dev/null +++ b/src/components/RepoItem/datahandle.ts @@ -0,0 +1,33 @@ +import type { RepoItemResData, TagItem } from './types'; +import { useTimeFormat } from '@/utils/hooks/useTimeFormat'; +import { repoTypeOption } from '@/constant'; +const { formatTimeFromNow } = useTimeFormat(); +export const dataHandler = (data: RepoItemResData[], mapper?: Function) => { + return data.map((item, index) => { // 项目详情处理 + const iconHandleList = []; const lang: any[] = []; const langColor: any[] = []; + item.main_repository_language?.forEach((v, i) => v && [lang, langColor][i % 2].push(v)); + if (lang.length) iconHandleList.push({ icon: 'icon-dot-status', value: lang[0], type: 'language', iconColor: langColor[0], label: '', to: '' }); + iconHandleList.push({ icon: 'gt-star', value: item.star_count, label: '', to: '', iconColor: '#707A87' }); + // 传了fork数量即显示,fork数量可能为0 + if (item.forks_count || item.forks_count === 0) iconHandleList.push({ icon: 'gt-fork', value: item.forks_count, label: '', to: '', iconColor: '#707A87' }); + if (item?.license?.key) iconHandleList.push({ icon: 'gt-license', value: item.license?.key, label: '', to: '', iconColor: '#707A87' }); + iconHandleList.push({ icon: 'gt-date', value: formatTimeFromNow(item.last_activity_at), label: '', to: '', iconColor: '#707A87' }); + const tagList: TagItem[] = []; + if (item.visibility && item.visibility !== 'public') tagList.push({ name: repoTypeOption.find(e => e.value === item.visibility)?.name || '', color: 'rgb(148, 163, 184)' }); + // if (item.is_recommend) tagList.push({ name: '官方镜像', color: '#fff', borderColor: 'var(--color-GN500)', bgColor: 'var(--color-GN500)' }); + const def = mapper ? mapper({ ...item, iconHandleList, tagList }) : {}; + return { + ...item, + imgSrc: '', + title: item.name || '', + desc: item.description || '暂无简介', + isStar: item.starred || false, + tagList, + topicNames: item.topic_names, + to: `/${item.path_with_namespace}`, + namePath: item.name_with_namespace?.split('/'), + iconHandleList, + ...def + }; + }); +}; diff --git a/src/components/RepoItem/index.vue b/src/components/RepoItem/index.vue new file mode 100644 index 0000000..12d3300 --- /dev/null +++ b/src/components/RepoItem/index.vue @@ -0,0 +1,363 @@ + + + + + + diff --git a/src/components/RepoItem/types.ts b/src/components/RepoItem/types.ts new file mode 100644 index 0000000..fb1a9cc --- /dev/null +++ b/src/components/RepoItem/types.ts @@ -0,0 +1,42 @@ +export type RepoItemResData = { + id: number; + name: string; + namespace: string; + path: string; + develop_mode: string; + tagList: TagItem[]; + visibility: string; + star_count: number; + forks_count: number; + open_issues_count: number; + open_merge_requests_count: number; + open_change_requests_count: number; + starred: boolean; + name_with_namespace: string; + web_url: string; + topic_names: string[]; + last_activity_at: Date; + main_repository_language: null[]; + forked_from_project: null; + permissions: null; + archived: boolean; + member_count: number; + description: null; + repository_size: number; + [propName: string]: any; +} +export interface iconHandleItem { + icon: string; + value: string | number; + label: string; + to?: string; + iconColor?: string; + type?: string; +} +export interface TagItem { + name:string; + color?:string; + bgColor?:string; + borderColor?:string; + [propName:string]:any; +} diff --git a/src/components/RepoNavTabs/index.vue b/src/components/RepoNavTabs/index.vue new file mode 100644 index 0000000..450eb95 --- /dev/null +++ b/src/components/RepoNavTabs/index.vue @@ -0,0 +1,77 @@ + + + + + diff --git a/src/components/RepoNavTabs/types.ts b/src/components/RepoNavTabs/types.ts new file mode 100644 index 0000000..e07224c --- /dev/null +++ b/src/components/RepoNavTabs/types.ts @@ -0,0 +1,12 @@ +export interface itemProps { + id: string; // 标识符,这里为路由别名 + label: string; // 标题 + number?: number; // 显示数量 +} +export interface propsType { + defaultActiveId?: string; // 默认激活tabId + tabList: itemProps[]; // tab列表设置 +} +export interface listType { + [index: number]: itemProps; +} diff --git a/src/components/Revert/index.vue b/src/components/Revert/index.vue new file mode 100644 index 0000000..3d57a19 --- /dev/null +++ b/src/components/Revert/index.vue @@ -0,0 +1,303 @@ + + + + + diff --git a/src/components/RichLabel/README.md b/src/components/RichLabel/README.md new file mode 100644 index 0000000..06fb053 --- /dev/null +++ b/src/components/RichLabel/README.md @@ -0,0 +1,39 @@ +# RichLabel + +### 说明 +- 带icon、文字和数字的label标签 +- 全局引入 + +``` js +labels + +// 使用group,相邻的RichLabel会组合 +labels +labels +``` + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| icon? | devui的icon名,出现在左侧 | string | - | - | +| number? | 右侧数字 | string \| number | - | - | +| clickable? | 是否展示点击的样式 | boolean | - | false | +| black? | 主体颜色是否为黑色 | boolean | - | false | +| group? | 相邻的label是否自动粘合。 ** 该属性不稳定,如果粘合异常,可以使用span等标签将待粘合的RichLabel组合在一起 ** | boolean | - | false | + + +### Emits + +| 方法 | 说明 | 返回值 | +|-----------------|------------------------------------|---------------------| +| click | 原生的label点击事件 | | + + +### Slots + +| 名称 | 说明 | +|---------------------|---------------------------------------------| +| default | 组件中间部分显示的文字 | +| icon | 左侧icon展示定制 | +| number | 右侧数字部分定制 | diff --git a/src/components/RichLabel/RichLabels.vue b/src/components/RichLabel/RichLabels.vue new file mode 100644 index 0000000..2ac7ca4 --- /dev/null +++ b/src/components/RichLabel/RichLabels.vue @@ -0,0 +1,174 @@ + + + + + + + diff --git a/src/components/RichLabel/index.vue b/src/components/RichLabel/index.vue new file mode 100644 index 0000000..8e72349 --- /dev/null +++ b/src/components/RichLabel/index.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/src/components/RichLabel/types.ts b/src/components/RichLabel/types.ts new file mode 100644 index 0000000..fa425ae --- /dev/null +++ b/src/components/RichLabel/types.ts @@ -0,0 +1,14 @@ +export interface IProps { + icon?: string; + id?: string; + number?: number | string; + clickable?: boolean; + active?: boolean; + text?: string; + activeConfig?: { + [styleName: string]: string; + }; + path?: string; + routeName?: string; + group?: boolean; +} diff --git a/src/components/ScrollContainer/index.vue b/src/components/ScrollContainer/index.vue new file mode 100644 index 0000000..a0c0062 --- /dev/null +++ b/src/components/ScrollContainer/index.vue @@ -0,0 +1,68 @@ + + + diff --git a/src/components/SearchBar/README.md b/src/components/SearchBar/README.md new file mode 100644 index 0000000..3b3ea26 --- /dev/null +++ b/src/components/SearchBar/README.md @@ -0,0 +1,65 @@ +# SearchBar + +### 说明 +- 基于d-select、RichBar等组件,组合而成的SearchBar + +``` js +import SearchBar from '@/components/SearchBar/index.vue'; + + + + + + +const typeOptions = ref([{ name: '全部', value: '' }, { name: '类1', value: 'class1' }]); +const searchOptions = ref([{ name: '全部', value: 'all' }, { name: '类1', value: 'class1' }]); + +const filterFunc = (query: string): void => { + // query为搜索框输入的文字,自动触发。d-select已自动debounce + // 直接更新searchOptions数据 +}; + +const handleSearch = ({ type, query }): void => { + // type对应左侧类型,query对应搜索框的搜索条件 +}; +``` + +### Props + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +|-----------|------------------------|----------------------------|----------|-----------| +| searchOptions? | 搜索框搜索词关联的下拉框数据 | Array