diff --git a/404.html b/404.html new file mode 100644 index 0000000..e528bc0 --- /dev/null +++ b/404.html @@ -0,0 +1 @@ +FastAPI Best Architecture
Skip to content

404

页面未找到

但是,如果你不改变方向,并且一直寻找,最终可能会到达你要去的地方。

MIT License

\ No newline at end of file diff --git a/assets/404.html-DqLEnaFk.js b/assets/404.html-DqLEnaFk.js new file mode 100644 index 0000000..13b5eae --- /dev/null +++ b/assets/404.html-DqLEnaFk.js @@ -0,0 +1 @@ +import{_ as t,c as a,b as o,o as c}from"./app-Dq-B72KW.js";const n={};function s(m,e){return c(),a("div",null,e[0]||(e[0]=[o("p",null,"404 Not Found",-1)]))}const d=t(n,[["render",s],["__file","404.html.vue"]]),i=JSON.parse(`{"path":"/404.html","title":"","lang":"zh-CN","frontmatter":{"layout":"NotFound","head":[["script",{"id":"check-dark-mode"},";(function () {const um= localStorage.getItem('vuepress-theme-appearance') || 'auto';const sm = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;if (um === 'dark' || (um !== 'light' && sm)) {document.documentElement.classList.add('dark');}})();"],["script",{"id":"check-mac-os"},"document.documentElement.classList.toggle('mac', /Mac|iPhone|iPod|iPad/i.test(navigator.platform))"]]},"headers":[],"readingTime":{"minutes":0.01,"words":3},"git":{},"filePathRelative":null}`);export{d as comp,i as data}; diff --git a/assets/Docker.html-CoYzz7N2.js b/assets/Docker.html-CoYzz7N2.js new file mode 100644 index 0000000..d593876 --- /dev/null +++ b/assets/Docker.html-CoYzz7N2.js @@ -0,0 +1,285 @@ +import{_ as t,c as d,a,b as i,e as n,d as e,w as p,r as h,o as k}from"./app-Dq-B72KW.js";const r={},c={class:"hint-container caution"},v={class:"vp-steps"};function o(u,s){const l=h("RouteLink");return k(),d("div",null,[s[7]||(s[7]=a('

注意

默认端口冲突:8000,3306,6379,5672

建议在部署前关闭本地服务:mysql,redis,rabbitmq...

本机部署

警告

部署 意味着你的所有代码已经准备就绪,可以用于生产,而本机部署则是为了能够快捷的提供本地 API 服务,所以,此教程仅提供 API 本机部署教程

后端

  1. env

    进入 deploy/backend/docker-compose 目录,创建环境变量文件 .env

    touch .env.server ../../../backend/.env

    将初始化环境变量配置拷贝到环境变量文件中

    cp .env.server ../../../backend/.env
  2. 按需修改配置文件 backend/core/conf.py.env

  3. 执行一键启动命令

    相关信息

    命令执行期间遇到镜像拉取问题请自行 Google

    docker-compose up -d --build
  4. 等待命令执行完成

  5. 打开浏览器访问:http://127.0.0.1:8000/api/v1/docs

前端

',6)),i("div",c,[s[2]||(s[2]=i("p",{class:"hint-container-title"},"警告",-1)),i("p",null,[s[1]||(s[1]=n("此教程不提供前端本机部署方案,对于前后端本地开发或联调,你不应该进行部署,请转至文档:")),e(l,{to:"/guide/summary/quick-start.html#%E6%9C%AC%E5%9C%B0%E5%BC%80%E5%8F%91"},{default:p(()=>s[0]||(s[0]=[n("本地开发")])),_:1})])]),s[8]||(s[8]=a('

服务器部署

提示

此教程以 https 为例,如果你没有相关经验,请自行 Google 进行了解

后端

',3)),i("div",v,[i("ol",null,[i("li",null,[s[5]||(s[5]=i("p",null,"拉取代码到服务器",-1)),i("p",null,[s[4]||(s[4]=n("将代码拉取到服务器通常采用 ssh 方式(更安全),但是你也可以选择使用 https 方式,具体方式请根据个人自行决定,如果使用 ssh 方式拉取代码, 请自行 Google 拉取教程,如果使用 https 方式,你可以查看 ")),e(l,{to:"/guide/introduction/quick-start.html#%E5%90%8E%E7%AB%AF"},{default:p(()=>s[3]||(s[3]=[n("后端步骤2")])),_:1})])]),s[6]||(s[6]=a(`
  • env

    进入 deploy/backend/docker-compose 目录,创建环境变量文件 .env

    touch .env.server ../../../backend/.env

    将初始化环境变量配置拷贝到环境变量文件中

    cp .env.server ../../../backend/.env
  • 按需修改配置文件 backend/core/conf.py.env

    建议修改 .env 中的 ENVIRONMENTpro

  • 更新脚本文件

    仓库内的 docker-compose.yml 文件默认为后端独立部署,如果你没有前端需求,而只需调用后端 API,请查看 本机部署

    详情
    version: "3.10"
    +
    +networks:
    +  fba_network:
    +    name: fba_network
    +    driver: bridge
    +    ipam:
    +      driver: default
    +      config:
    +        - subnet: 172.10.10.0/24
    +
    +volumes:
    +  fba_mysql:
    +    name: fba_mysql
    +  fba_redis:
    +    name: fba_redis
    +  fba_static:
    +    name: fba_static
    +  fba_rabbitmq:
    +    name: fba_rabbitmq
    +
    +services:
    +  fba_server:
    +    build:
    +      context: ../../../
    +      dockerfile: backend/backend.dockerfile
    +    image: fba_server:latest
    +    container_name: fba_server
    +    restart: always
    +    depends_on:
    +      - fba_mysql
    +      - fba_redis
    +      - fba_celery
    +    volumes:
    +      - fba_static:/fba/backend/app/static
    +    networks:
    +      - fba_network
    +    command:
    +      - bash
    +      - -c
    +      - |
    +        wait-for-it -s fba_mysql:3306 -s fba_redis:6379 -t 300
    +        mkdir -p /var/log/supervisor/
    +        supervisord -c /fba/deploy/backend/supervisor.conf
    +        supervisorctl restart fastapi_server
    +
    +  fba_mysql:
    +    image: mysql:8.0.29
    +    ports:
    +      - "\${DOCKER_MYSQL_MAP_PORT:-3306}:3306"
    +    container_name: fba_mysql
    +    restart: always
    +    environment:
    +      MYSQL_DATABASE: fba
    +      MYSQL_ROOT_PASSWORD: 123456
    +      TZ: Asia/Shanghai
    +    volumes:
    +      - fba_mysql:/var/lib/mysql
    +    networks:
    +      - fba_network
    +    command:
    +      --default-authentication-plugin=mysql_native_password
    +      --character-set-server=utf8mb4
    +      --collation-server=utf8mb4_general_ci
    +      --lower_case_table_names=1
    +
    +  fba_redis:
    +    image: redis:6.2.7
    +    ports:
    +      - "\${DOCKER_REDIS_MAP_PORT:-6379}:6379"
    +    container_name: fba_redis
    +    restart: always
    +    environment:
    +      - TZ=Asia/Shanghai
    +    volumes:
    +      - fba_redis:/var/lib/redis
    +    networks:
    +      - fba_network
    +
    +  # 后端专用,这与 fba_ui 冲突,如果你选择使用 fba_ui,
    +  # 你应该注释或删除 fba_nginx 容器脚本,并使用 fba_ui 容器
    +  fba_nginx:
    +    image: nginx
    +    ports:
    +      - "8000:80"
    +    container_name: fba_nginx
    +    restart: always
    +    depends_on:
    +      - fba_server
    +    volumes:
    +      - ../nginx.conf:/etc/nginx/nginx.conf:ro
    +      - fba_static:/www/fba_server/backend/static
    +    networks:
    +      - fba_network
    +
    +  # 如果服务器内存小于 4GB,CPU 小于四个内核
    +  # 建议进入 fba_ui 项目单独构建这个容器(参考下方前端部署教程)
    +  # 如果你不选择单独构建,务必在执行下面步骤前根据前端部署教程更新前端配置文件
    +  # 如果你选择单独构建,务必注释或删除此容器脚本
    +  fba_ui:
    +    build:
    +      context: /root/fastapi_best_architecture_ui  # 根据 fba_ui 项目存放目录修改此路径
    +      dockerfile: Dockerfile
    +    image: fba_ui:latest
    +    ports:
    +      - "80:80"
    +      - "443:443"
    +    container_name: fba_ui
    +    restart: always
    +    depends_on:
    +      - fba_server
    +    command:
    +      - nginx
    +      - -g
    +      - daemon off;
    +    volumes:
    +      # nginx https conf
    +      # 通过 docker 进行部署时,需要打开此配置项并确保<挂载到容器内的证书文件路径>配置
    +      # 与 nginx conf 中的 ssl 证书文件路径配置一致,如果你直接将 ssl 证书文件 cp
    +      # 到了 docker 容器内,则无需挂载证书文件,直接将它们注释或删除即可
    +      # local_ssl_pem_path:你在服务器存放 ssl pem 证书文件的路径,自行修改
    +      # local_ssl_key_path: 你在服务器存放 ssl key 证书文件的路径,自行修改
    +      # /etc/ssl/xxx.pem:挂载到容器内 ssl pem 证书文件的路径,自行修改
    +      # /etc/ssl/xxx.key:挂载到容器内 ssl key 证书文件的路径,自行修改
    +      - local_ssl_pem_path:/etc/ssl/xxx.pem
    +      - local_ssl_key_path:/etc/ssl/xxx.key
    +      - fba_static:/www/fba_server/backend/static
    +    networks:
    +      - fba_network
    +
    +  fba_rabbitmq:
    +    hostname: fba_rabbitmq
    +    image: rabbitmq:3.12.7
    +    ports:
    +      - "15672:15672"
    +      - "5672:5672"
    +    container_name: fba_rabbitmq
    +    restart: always
    +    environment:
    +      - RABBITMQ_DEFAULT_USER=guest
    +      - RABBITMQ_DEFAULT_PASS=guest
    +    volumes:
    +      - fba_rabbitmq:/var/lib/rabbitmq
    +    networks:
    +      - fba_network
    +
    +  fba_celery:
    +    build:
    +      context: ../../../
    +      dockerfile: backend/celery.dockerfile
    +    image: fba_celery:latest
    +    ports:
    +      - "8555:8555"
    +    container_name: fba_celery
    +    restart: always
    +    depends_on:
    +      - fba_rabbitmq
    +    networks:
    +      - fba_network
    +    command:
    +      - bash
    +      - -c
    +      - |
    +        wait-for-it -s fba_rabbitmq:5672 -t 300
    +        mkdir -p /var/log/supervisor/
    +        supervisord -c /fba/deploy/backend/supervisor.conf
    +        supervisorctl restart celery_worker
    +        supervisorctl restart celery_beat
    +        supervisorctl restart celery_flower
  • 执行一键启动命令

    相关信息

    命令执行期间遇到镜像拉取问题请自行 Google

    docker-compose up -d --build
  • 等待命令执行完成

  • `,5))])]),s[9]||(s[9]=a(`

    前端

    警告

    我们提供此前端部署教程的目的是为你提供前端 Docker 部署解决方案,请记住我们的声明,此前端项目仅作为效果演示,而不是用于生产!

    1. 拉取代码到服务器

    2. env

      修改 .env.production 中的 VITE_API_BASE_URL 为域名地址

    3. 更新 nginx

      进入 deploy 目录,编辑 nginx.conf 文件

      详情
      # For more information on configuration, see:
      +#   * Official English Documentation: http://nginx.org/en/docs/
      +#   * Official Russian Documentation: http://nginx.org/ru/docs/
      +
      +worker_processes auto;
      +error_log /var/log/nginx/error.log;
      +pid /run/nginx.pid;
      +
      +# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
      +include /usr/share/nginx/modules/*.conf;
      +
      +events {
      +worker_connections 1024;
      +}
      +
      +http {
      +
      +    include /etc/nginx/mime.types;
      +    default_type application/octet-stream;
      +
      +    sendfile on;
      +    client_max_body_size 5M;
      +    client_body_buffer_size 5M;
      +
      +    gzip on;
      +    gzip_comp_level 2;
      +    gzip_types text/plain text/css text/javascript application/javascript application/x-javascript application/xml application/x-httpd-php image/jpeg image/gif image/png;
      +    gzip_vary on;
      +
      +    keepalive_timeout 300;
      +
      +    server {
      +        listen       80 default_server;
      +        listen       [::]:80 default_server;
      +        server_name  127.0.0.1;
      +
      +        listen 443 ssl;
      +        # docker ssl 证书文件路径配置应该与 docker-compose 中的保持一致
      +        # /etc/ssl/xxx.pem:挂载到容器内 ssl pem 证书文件的路径,自行修改
      +        # /etc/ssl/xxx.key:挂载到容器内 ssl key 证书文件的路径,自行修改
      +        ssl_certificate /etc/ssl/xxx.pem;
      +        ssl_certificate_key /etc/ssl/xxx.key;
      +        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
      +        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      +        ssl_prefer_server_ciphers on;
      +        
      +        # xxx.com 应该与 .env.production 中的配置保持一致
      +        server_name xxx.com;
      +
      +        client_max_body_size   10m;
      +
      +        root /www/fba_ui;
      +
      +        location / {
      +                try_files $uri $uri/ /index.html;
      +        }
      +
      +        location /api/v1/ {
      +                proxy_pass http://fba_server:8001;
      +
      +                proxy_set_header Host $http_host;
      +                proxy_set_header X-Real-IP $remote_addr;
      +                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      +                proxy_set_header X-Forwarded-Proto $scheme;
      +                proxy_connect_timeout 300s;
      +                proxy_send_timeout 300s;
      +                proxy_read_timeout 300s;
      +        }
      +
      +        location /static/ {
      +                alias /www/fba_server/backend/static;
      +        }
      +    }
      +
      +    server {
      +        listen 80;
      +        # xxx.com 应该与 .env.production 中的配置保持一致
      +        server_name xxx.com;
      +        rewrite ^(.*)$ https://$host$1 permanent;
      +    }
      +}
    4. 更新脚本文件

      注意

      如果已通过后端 docker-compose 构建前端项目,此步骤和后面的剩余步骤直接跳过即可

      详情
      networks:
      +  fba_network:
      +    external: true
      +
      +volumes:
      +  fba_static:
      +    external: true
      +
      +services:
      +  fba_ui:
      +    build:
      +      context: ../
      +      dockerfile: Dockerfile
      +    image: fba_ui:latest
      +    ports:
      +      - "80:80"
      +      - "443:443"
      +    container_name: fba_ui
      +    restart: always
      +    command:
      +      - nginx
      +      - -g
      +      - daemon off;
      +    volumes:
      +       # nginx https conf
      +       # 通过 docker 进行部署时,需要打开此配置项并确保<挂载到容器内的证书文件路径>配置
      +       # 与 nginx conf 中的 ssl 证书文件路径配置一致,如果你直接将 ssl 证书文件 cp
      +       # 到了 docker 容器内,则无需挂载证书文件,直接将它们注释或删除即可
      +       # local_ssl_pem_path:你在服务器存放 ssl pem 证书文件的路径,自行修改
      +       # local_ssl_key_path: 你在服务器存放 ssl key 证书文件的路径,自行修改
      +       # /etc/ssl/xxx.pem:挂载到容器内 ssl pem 证书文件的路径,自行修改
      +       # /etc/ssl/xxx.key:挂载到容器内 ssl key 证书文件的路径,自行修改
      +      - local_ssl_pem_path:/etc/ssl/xxx.pem
      +      - local_ssl_key_path:/etc/ssl/xxx.key
      +      - fba_static:/www/fba_server/backend/static
      +    networks:
      +      - fba_network
    5. 构建并启动容器

      创建网络

      docker network create fba_network

      构建

      docker-compose build fba_ui

      启动

      docker-compose run fba_ui

    注意事项

    注意

    请不要频繁使用 docker-compose up -d --build 命令,每次执行,此命令都会构建容器,并将原容器自动进行本地备份保留,这会导致硬盘空间迅速递减

    清理未使用的镜像

    docker image prune

    清理未使用的容器

    docker container prune

    清理所有未使用的镜像、容器、网络和构建缓存

    docker system prune

    清理所有悬空的镜像和卷

    docker system prune -a --volumes
    `,13))])}const m=t(r,[["render",o],["__file","Docker.html.vue"]]),y=JSON.parse(`{"path":"/guide/deploy/Docker.html","title":"Docker 部署","lang":"zh-CN","frontmatter":{"title":"Docker 部署","createTime":"2024/09/12 20:40:22","head":[["script",{"id":"check-dark-mode"},";(function () {const um= localStorage.getItem('vuepress-theme-appearance') || 'auto';const sm = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;if (um === 'dark' || (um !== 'light' && sm)) {document.documentElement.classList.add('dark');}})();"],["script",{"id":"check-mac-os"},"document.documentElement.classList.toggle('mac', /Mac|iPhone|iPod|iPad/i.test(navigator.platform))"]]},"headers":[{"level":2,"title":"本机部署","slug":"本机部署","link":"#本机部署","children":[{"level":3,"title":"后端","slug":"后端","link":"#后端","children":[]},{"level":3,"title":"前端","slug":"前端","link":"#前端","children":[]}]},{"level":2,"title":"服务器部署","slug":"服务器部署","link":"#服务器部署","children":[{"level":3,"title":"后端","slug":"后端-1","link":"#后端-1","children":[]},{"level":3,"title":"前端","slug":"前端-1","link":"#前端-1","children":[]}]},{"level":2,"title":"注意事项","slug":"注意事项","link":"#注意事项","children":[]}],"readingTime":{"minutes":6.39,"words":1918},"git":{"createdTime":1726501588000,"updatedTime":1726995109000,"contributors":[{"name":"Wu Clan","email":"jianhengwu0407@gmail.com","commits":3}]},"filePathRelative":"guide/deploy/Docker.md","categoryList":[{"id":"a0c391","sort":10000,"name":"guide"},{"id":"1d3515","sort":10001,"name":"deploy"}]}`);export{m as comp,y as data}; diff --git a/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 b/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 new file mode 100644 index 0000000..0acaaff Binary files /dev/null and b/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 differ diff --git a/assets/KaTeX_AMS-Regular-DMm9YOAa.woff b/assets/KaTeX_AMS-Regular-DMm9YOAa.woff new file mode 100644 index 0000000..b804d7b Binary files /dev/null and b/assets/KaTeX_AMS-Regular-DMm9YOAa.woff differ diff --git a/assets/KaTeX_AMS-Regular-DRggAlZN.ttf b/assets/KaTeX_AMS-Regular-DRggAlZN.ttf new file mode 100644 index 0000000..c6f9a5e Binary files /dev/null and b/assets/KaTeX_AMS-Regular-DRggAlZN.ttf differ diff --git a/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf b/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf new file mode 100644 index 0000000..9ff4a5e Binary files /dev/null and b/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf differ diff --git a/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff b/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff new file mode 100644 index 0000000..9759710 Binary files /dev/null and b/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff differ diff --git a/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 b/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 new file mode 100644 index 0000000..f390922 Binary files /dev/null and b/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 differ diff --git a/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff b/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff new file mode 100644 index 0000000..9bdd534 Binary files /dev/null and b/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff differ diff --git a/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 b/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 new file mode 100644 index 0000000..75344a1 Binary files /dev/null and b/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 differ diff --git a/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf b/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf new file mode 100644 index 0000000..f522294 Binary files /dev/null and b/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf differ diff --git a/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf b/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf new file mode 100644 index 0000000..4e98259 Binary files /dev/null and b/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf differ diff --git a/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff b/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff new file mode 100644 index 0000000..e7730f6 Binary files /dev/null and b/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff differ diff --git a/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 b/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 new file mode 100644 index 0000000..395f28b Binary files /dev/null and b/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 differ diff --git a/assets/KaTeX_Fraktur-Regular-CB_wures.ttf b/assets/KaTeX_Fraktur-Regular-CB_wures.ttf new file mode 100644 index 0000000..b8461b2 Binary files /dev/null and b/assets/KaTeX_Fraktur-Regular-CB_wures.ttf differ diff --git a/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 b/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 new file mode 100644 index 0000000..735f694 Binary files /dev/null and b/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 differ diff --git a/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff b/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff new file mode 100644 index 0000000..acab069 Binary files /dev/null and b/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff differ diff --git a/assets/KaTeX_Main-Bold-Cx986IdX.woff2 b/assets/KaTeX_Main-Bold-Cx986IdX.woff2 new file mode 100644 index 0000000..ab2ad21 Binary files /dev/null and b/assets/KaTeX_Main-Bold-Cx986IdX.woff2 differ diff --git a/assets/KaTeX_Main-Bold-Jm3AIy58.woff b/assets/KaTeX_Main-Bold-Jm3AIy58.woff new file mode 100644 index 0000000..f38136a Binary files /dev/null and b/assets/KaTeX_Main-Bold-Jm3AIy58.woff differ diff --git a/assets/KaTeX_Main-Bold-waoOVXN0.ttf b/assets/KaTeX_Main-Bold-waoOVXN0.ttf new file mode 100644 index 0000000..4060e62 Binary files /dev/null and b/assets/KaTeX_Main-Bold-waoOVXN0.ttf differ diff --git a/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 b/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 new file mode 100644 index 0000000..5931794 Binary files /dev/null and b/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 differ diff --git a/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf b/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf new file mode 100644 index 0000000..dc00797 Binary files /dev/null and b/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf differ diff --git a/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff b/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff new file mode 100644 index 0000000..67807b0 Binary files /dev/null and b/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff differ diff --git a/assets/KaTeX_Main-Italic-3WenGoN9.ttf b/assets/KaTeX_Main-Italic-3WenGoN9.ttf new file mode 100644 index 0000000..0e9b0f3 Binary files /dev/null and b/assets/KaTeX_Main-Italic-3WenGoN9.ttf differ diff --git a/assets/KaTeX_Main-Italic-BMLOBm91.woff b/assets/KaTeX_Main-Italic-BMLOBm91.woff new file mode 100644 index 0000000..6f43b59 Binary files /dev/null and b/assets/KaTeX_Main-Italic-BMLOBm91.woff differ diff --git a/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 b/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 new file mode 100644 index 0000000..b50920e Binary files /dev/null and b/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 differ diff --git a/assets/KaTeX_Main-Regular-B22Nviop.woff2 b/assets/KaTeX_Main-Regular-B22Nviop.woff2 new file mode 100644 index 0000000..eb24a7b Binary files /dev/null and b/assets/KaTeX_Main-Regular-B22Nviop.woff2 differ diff --git a/assets/KaTeX_Main-Regular-Dr94JaBh.woff b/assets/KaTeX_Main-Regular-Dr94JaBh.woff new file mode 100644 index 0000000..21f5812 Binary files /dev/null and b/assets/KaTeX_Main-Regular-Dr94JaBh.woff differ diff --git a/assets/KaTeX_Main-Regular-ypZvNtVU.ttf b/assets/KaTeX_Main-Regular-ypZvNtVU.ttf new file mode 100644 index 0000000..dd45e1e Binary files /dev/null and b/assets/KaTeX_Main-Regular-ypZvNtVU.ttf differ diff --git a/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf b/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf new file mode 100644 index 0000000..728ce7a Binary files /dev/null and b/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf differ diff --git a/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 b/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 new file mode 100644 index 0000000..2965702 Binary files /dev/null and b/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 differ diff --git a/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff b/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff new file mode 100644 index 0000000..0ae390d Binary files /dev/null and b/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff differ diff --git a/assets/KaTeX_Math-Italic-DA0__PXp.woff b/assets/KaTeX_Math-Italic-DA0__PXp.woff new file mode 100644 index 0000000..eb5159d Binary files /dev/null and b/assets/KaTeX_Math-Italic-DA0__PXp.woff differ diff --git a/assets/KaTeX_Math-Italic-flOr_0UB.ttf b/assets/KaTeX_Math-Italic-flOr_0UB.ttf new file mode 100644 index 0000000..70d559b Binary files /dev/null and b/assets/KaTeX_Math-Italic-flOr_0UB.ttf differ diff --git a/assets/KaTeX_Math-Italic-t53AETM-.woff2 b/assets/KaTeX_Math-Italic-t53AETM-.woff2 new file mode 100644 index 0000000..215c143 Binary files /dev/null and b/assets/KaTeX_Math-Italic-t53AETM-.woff2 differ diff --git a/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf b/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf new file mode 100644 index 0000000..2f65a8a Binary files /dev/null and b/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf differ diff --git a/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 b/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 new file mode 100644 index 0000000..cfaa3bd Binary files /dev/null and b/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 differ diff --git a/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff b/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff new file mode 100644 index 0000000..8d47c02 Binary files /dev/null and b/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff differ diff --git a/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 b/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 new file mode 100644 index 0000000..349c06d Binary files /dev/null and b/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 differ diff --git a/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff b/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff new file mode 100644 index 0000000..7e02df9 Binary files /dev/null and b/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff differ diff --git a/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf b/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf new file mode 100644 index 0000000..d5850df Binary files /dev/null and b/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf differ diff --git a/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf b/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf new file mode 100644 index 0000000..537279f Binary files /dev/null and b/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf differ diff --git a/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff b/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff new file mode 100644 index 0000000..31b8482 Binary files /dev/null and b/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff differ diff --git a/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 b/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 new file mode 100644 index 0000000..a90eea8 Binary files /dev/null and b/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 differ diff --git a/assets/KaTeX_Script-Regular-C5JkGWo-.ttf b/assets/KaTeX_Script-Regular-C5JkGWo-.ttf new file mode 100644 index 0000000..fd679bf Binary files /dev/null and b/assets/KaTeX_Script-Regular-C5JkGWo-.ttf differ diff --git a/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 b/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 new file mode 100644 index 0000000..b3048fc Binary files /dev/null and b/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 differ diff --git a/assets/KaTeX_Script-Regular-D5yQViql.woff b/assets/KaTeX_Script-Regular-D5yQViql.woff new file mode 100644 index 0000000..0e7da82 Binary files /dev/null and b/assets/KaTeX_Script-Regular-D5yQViql.woff differ diff --git a/assets/KaTeX_Size1-Regular-C195tn64.woff b/assets/KaTeX_Size1-Regular-C195tn64.woff new file mode 100644 index 0000000..7f292d9 Binary files /dev/null and b/assets/KaTeX_Size1-Regular-C195tn64.woff differ diff --git a/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf b/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf new file mode 100644 index 0000000..871fd7d Binary files /dev/null and b/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf differ diff --git a/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 b/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 new file mode 100644 index 0000000..c5a8462 Binary files /dev/null and b/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 differ diff --git a/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf b/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf new file mode 100644 index 0000000..7a212ca Binary files /dev/null and b/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf differ diff --git a/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 b/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 new file mode 100644 index 0000000..e1bccfe Binary files /dev/null and b/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 differ diff --git a/assets/KaTeX_Size2-Regular-oD1tc_U0.woff b/assets/KaTeX_Size2-Regular-oD1tc_U0.woff new file mode 100644 index 0000000..d241d9b Binary files /dev/null and b/assets/KaTeX_Size2-Regular-oD1tc_U0.woff differ diff --git a/assets/KaTeX_Size3-Regular-CTq5MqoE.woff b/assets/KaTeX_Size3-Regular-CTq5MqoE.woff new file mode 100644 index 0000000..e6e9b65 Binary files /dev/null and b/assets/KaTeX_Size3-Regular-CTq5MqoE.woff differ diff --git a/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf b/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf new file mode 100644 index 0000000..00bff34 Binary files /dev/null and b/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf differ diff --git a/assets/KaTeX_Size4-Regular-BF-4gkZK.woff b/assets/KaTeX_Size4-Regular-BF-4gkZK.woff new file mode 100644 index 0000000..e1ec545 Binary files /dev/null and b/assets/KaTeX_Size4-Regular-BF-4gkZK.woff differ diff --git a/assets/KaTeX_Size4-Regular-DWFBv043.ttf b/assets/KaTeX_Size4-Regular-DWFBv043.ttf new file mode 100644 index 0000000..74f0892 Binary files /dev/null and b/assets/KaTeX_Size4-Regular-DWFBv043.ttf differ diff --git a/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 b/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 new file mode 100644 index 0000000..680c130 Binary files /dev/null and b/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 differ diff --git a/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff b/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff new file mode 100644 index 0000000..2432419 Binary files /dev/null and b/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff differ diff --git a/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 b/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 new file mode 100644 index 0000000..771f1af Binary files /dev/null and b/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 differ diff --git a/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf b/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf new file mode 100644 index 0000000..c83252c Binary files /dev/null and b/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf differ diff --git a/assets/SearchBox-C8-f80vO.js b/assets/SearchBox-C8-f80vO.js new file mode 100644 index 0000000..6eac397 --- /dev/null +++ b/assets/SearchBox-C8-f80vO.js @@ -0,0 +1,7 @@ +var dt=Object.defineProperty;var ht=(o,e,t)=>e in o?dt(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var we=(o,e,t)=>ht(o,typeof e!="symbol"?e+"":e,t);import{f as J,g as de,t as ze,u as ft,n as pt,h as Oe,i as vt,_ as be,o as B,c as W,b as x,j as mt,k as gt,l as bt,m as yt,s as xe,p as je,q as wt,v as xt,x as _e,y as te,z as ae,A as _t,B as St,C as Et,D as It,E as kt,F as Pe,G as Tt,H as Nt,d as Se,I as Ft,J as Ot,K as Ve,L as Be,e as ne,M as se,N as Ct,T as Rt,O as Mt}from"./app-Dq-B72KW.js";class Z{constructor(e,t=!0,n=[],s=5e3){this.ctx=e,this.iframes=t,this.exclude=n,this.iframesTimeout=s}static matches(e,t){const n=typeof t=="string"?[t]:t,s=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(s){let r=!1;return n.every(i=>s.call(e,i)?(r=!0,!1):!0),r}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(n=>{const s=t.filter(r=>r.contains(n)).length>0;t.indexOf(n)===-1&&!s&&t.push(n)}),t}getIframeContents(e,t,n=()=>{}){let s;try{const r=e.contentWindow;if(s=r.document,!r||!s)throw new Error("iframe inaccessible")}catch{n()}s&&t(s)}isIframeBlank(e){const t="about:blank",n=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&n!==t&&n}observeIframeLoad(e,t,n){let s=!1,r=null;const i=()=>{if(!s){s=!0,clearTimeout(r);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,n))}catch{n()}}};e.addEventListener("load",i),r=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,n){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch{n()}}waitForIframes(e,t){let n=0;this.forEachIframe(e,()=>!0,s=>{n++,this.waitForIframes(s.querySelector("html"),()=>{--n||t()})},s=>{s||t()})}forEachIframe(e,t,n,s=()=>{}){let r=e.querySelectorAll("iframe"),i=r.length,a=0;r=Array.prototype.slice.call(r);const c=()=>{--i<=0&&s(a)};i||c(),r.forEach(l=>{Z.matches(l,this.exclude)?c():this.onIframeReady(l,h=>{t(l)&&(a++,n(h)),c()},c)})}createIterator(e,t,n){return document.createNodeIterator(e,t,n,!1)}createInstanceOnIframe(e){return new Z(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,n){const s=e.compareDocumentPosition(n),r=Node.DOCUMENT_POSITION_PRECEDING;if(s&r)if(t!==null){const i=t.compareDocumentPosition(n),a=Node.DOCUMENT_POSITION_FOLLOWING;if(i&a)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let n;return t===null?n=e.nextNode():n=e.nextNode()&&e.nextNode(),{prevNode:t,node:n}}checkIframeFilter(e,t,n,s){let r=!1,i=!1;return s.forEach((a,c)=>{a.val===n&&(r=c,i=a.handled)}),this.compareNodeIframe(e,t,n)?(r===!1&&!i?s.push({val:n,handled:!0}):r!==!1&&!i&&(s[r].handled=!0),!0):(r===!1&&s.push({val:n,handled:!1}),!1)}handleOpenIframes(e,t,n,s){e.forEach(r=>{r.handled||this.getIframeContents(r.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,n,s)})})}iterateThroughNodes(e,t,n,s,r){const i=this.createIterator(t,e,s);let a=[],c=[],l,h,f=()=>({prevNode:h,node:l}=this.getIteratorNode(i),l);for(;f();)this.iframes&&this.forEachIframe(t,p=>this.checkIframeFilter(l,h,p,a),p=>{this.createInstanceOnIframe(p).forEachNode(e,g=>c.push(g),s)}),c.push(l);c.forEach(p=>{n(p)}),this.iframes&&this.handleOpenIframes(a,e,n,s),r()}forEachNode(e,t,n,s=()=>{}){const r=this.getContexts();let i=r.length;i||s(),r.forEach(a=>{const c=()=>{this.iterateThroughNodes(e,a,t,n,()=>{--i<=0&&s()})};this.iframes?this.waitForIframes(a,c):c()})}}let At=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new Z(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const n=this.opt.log;this.opt.debug&&typeof n=="object"&&typeof n[t]=="function"&&n[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i",s=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let r in t)if(t.hasOwnProperty(r)){const i=t[r],a=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(r):this.escapeStr(r),c=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);a!==""&&c!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(a)}|${this.escapeStr(c)})`,`gm${n}`),s+`(${this.processSynomyms(a)}|${this.processSynomyms(c)})`+s))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,n,s)=>{let r=s.charAt(n+1);return/[(|)\\]/.test(r)||r===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",n=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let s=[];return e.split("").forEach(r=>{n.every(i=>{if(i.indexOf(r)!==-1){if(s.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),s.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let n=this.opt.accuracy,s=typeof n=="string"?n:n.value,r=typeof n=="string"?[]:n.limiters,i="";switch(r.forEach(a=>{i+=`|${this.escapeStr(a)}`}),s){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(n=>{this.opt.separateWordSearch?n.split(" ").forEach(s=>{s.trim()&&t.indexOf(s)===-1&&t.push(s)}):n.trim()&&t.indexOf(n)===-1&&t.push(n)}),{keywords:t.sort((n,s)=>s.length-n.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let n=0;return e.sort((s,r)=>s.start-r.start).forEach(s=>{let{start:r,end:i,valid:a}=this.callNoMatchOnInvalidRanges(s,n);a&&(s.start=r,s.length=i-r,t.push(s),n=i)}),t}callNoMatchOnInvalidRanges(e,t){let n,s,r=!1;return e&&typeof e.start<"u"?(n=parseInt(e.start,10),s=n+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&s-t>0&&s-n>0?r=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:n,end:s,valid:r}}checkWhitespaceRanges(e,t,n){let s,r=!0,i=n.length,a=t-i,c=parseInt(e.start,10)-a;return c=c>i?i:c,s=c+parseInt(e.length,10),s>i&&(s=i,this.log(`End range automatically set to the max value of ${i}`)),c<0||s-c<0||c>i||s>i?(r=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):n.substring(c,s).replace(/\s+/g,"")===""&&(r=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:c,end:s,valid:r}}getTextNodes(e){let t="",n=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,s=>{n.push({start:t.length,end:(t+=s.textContent).length,node:s})},s=>this.matchesExclude(s.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:n})})}matchesExclude(e){return Z.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,n){const s=this.opt.element?this.opt.element:"mark",r=e.splitText(t),i=r.splitText(n-t);let a=document.createElement(s);return a.setAttribute("data-markjs","true"),this.opt.className&&a.setAttribute("class",this.opt.className),a.textContent=r.textContent,r.parentNode.replaceChild(a,r),i}wrapRangeInMappedTextNode(e,t,n,s,r){e.nodes.every((i,a)=>{const c=e.nodes[a+1];if(typeof c>"u"||c.start>t){if(!s(i.node))return!1;const l=t-i.start,h=(n>i.end?i.end:n)-i.start,f=e.value.substr(0,i.start),p=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,l,h),e.value=f+p,e.nodes.forEach((g,b)=>{b>=a&&(e.nodes[b].start>0&&b!==a&&(e.nodes[b].start-=h),e.nodes[b].end-=h)}),n-=h,r(i.node.previousSibling,i.start),n>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,n,s,r){const i=t===0?0:t+1;this.getTextNodes(a=>{a.nodes.forEach(c=>{c=c.node;let l;for(;(l=e.exec(c.textContent))!==null&&l[i]!=="";){if(!n(l[i],c))continue;let h=l.index;if(i!==0)for(let f=1;f{let c;for(;(c=e.exec(a.value))!==null&&c[i]!=="";){let l=c.index;if(i!==0)for(let f=1;fn(c[i],f),(f,p)=>{e.lastIndex=p,s(f)})}r()})}wrapRangeFromIndex(e,t,n,s){this.getTextNodes(r=>{const i=r.value.length;e.forEach((a,c)=>{let{start:l,end:h,valid:f}=this.checkWhitespaceRanges(a,i,r.value);f&&this.wrapRangeInMappedTextNode(r,l,h,p=>t(p,a,r.value.substring(l,h),c),p=>{n(p,a)})}),s()})}unwrapMatches(e){const t=e.parentNode;let n=document.createDocumentFragment();for(;e.firstChild;)n.appendChild(e.removeChild(e.firstChild));t.replaceChild(n,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let n=0,s="wrapMatches";const r=i=>{n++,this.opt.each(i)};this.opt.acrossElements&&(s="wrapMatchesAcrossElements"),this[s](e,this.opt.ignoreGroups,(i,a)=>this.opt.filter(a,i,n),r,()=>{n===0&&this.opt.noMatch(e),this.opt.done(n)})}mark(e,t){this.opt=t;let n=0,s="wrapMatches";const{keywords:r,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),a=this.opt.caseSensitive?"":"i",c=l=>{let h=new RegExp(this.createRegExp(l),`gm${a}`),f=0;this.log(`Searching with expression "${h}"`),this[s](h,1,(p,g)=>this.opt.filter(g,l,n,f),p=>{f++,n++,this.opt.each(p)},()=>{f===0&&this.opt.noMatch(l),r[i-1]===l?this.opt.done(n):c(r[r.indexOf(l)+1])})};this.opt.acrossElements&&(s="wrapMatchesAcrossElements"),i===0?this.opt.done(n):c(r[0])}markRanges(e,t){this.opt=t;let n=0,s=this.checkRanges(e);s&&s.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(s)),this.wrapRangeFromIndex(s,(r,i,a,c)=>this.opt.filter(r,i,a,c),(r,i)=>{n++,this.opt.each(r,i)},()=>{this.opt.done(n)})):this.opt.done(n)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,n=>{this.unwrapMatches(n)},n=>{const s=Z.matches(n,t),r=this.matchesExclude(n);return!s||r?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function Lt(o){const e=new At(o);return this.mark=(t,n)=>(e.mark(t,n),this),this.markRegExp=(t,n)=>(e.markRegExp(t,n),this),this.markRanges=(t,n)=>(e.markRanges(t,n),this),this.unmark=t=>(e.unmark(t),this),this}/*! +* tabbable 6.2.0 +* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE +*/var Ze=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],fe=Ze.join(","),Xe=typeof Element>"u",U=Xe?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,pe=!Xe&&Element.prototype.getRootNode?function(o){var e;return o==null||(e=o.getRootNode)===null||e===void 0?void 0:e.call(o)}:function(o){return o==null?void 0:o.ownerDocument},ve=function o(e,t){var n;t===void 0&&(t=!0);var s=e==null||(n=e.getAttribute)===null||n===void 0?void 0:n.call(e,"inert"),r=s===""||s==="true",i=r||t&&e&&o(e.parentNode);return i},Dt=function(e){var t,n=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return n===""||n==="true"},et=function(e,t,n){if(ve(e))return[];var s=Array.prototype.slice.apply(e.querySelectorAll(fe));return t&&U.call(e,fe)&&s.unshift(e),s=s.filter(n),s},tt=function o(e,t,n){for(var s=[],r=Array.from(e);r.length;){var i=r.shift();if(!ve(i,!1))if(i.tagName==="SLOT"){var a=i.assignedElements(),c=a.length?a:i.children,l=o(c,!0,n);n.flatten?s.push.apply(s,l):s.push({scopeParent:i,candidates:l})}else{var h=U.call(i,fe);h&&n.filter(i)&&(t||!e.includes(i))&&s.push(i);var f=i.shadowRoot||typeof n.getShadowRoot=="function"&&n.getShadowRoot(i),p=!ve(f,!1)&&(!n.shadowRootFilter||n.shadowRootFilter(i));if(f&&p){var g=o(f===!0?i.children:f.children,!0,n);n.flatten?s.push.apply(s,g):s.push({scopeParent:i,candidates:g})}else r.unshift.apply(r,i.children)}}return s},nt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},K=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||Dt(e))&&!nt(e)?0:e.tabIndex},zt=function(e,t){var n=K(e);return n<0&&t&&!nt(e)?0:n},jt=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},st=function(e){return e.tagName==="INPUT"},Pt=function(e){return st(e)&&e.type==="hidden"},Vt=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(n){return n.tagName==="SUMMARY"});return t},Bt=function(e,t){for(var n=0;nsummary:first-of-type"),i=r?e.parentElement:e;if(U.call(i,"details:not([open]) *"))return!0;if(!n||n==="full"||n==="legacy-full"){if(typeof s=="function"){for(var a=e;e;){var c=e.parentElement,l=pe(e);if(c&&!c.shadowRoot&&s(c)===!0)return We(e);e.assignedSlot?e=e.assignedSlot:!c&&l!==e.ownerDocument?e=l.host:e=c}e=a}if(Kt(e))return!e.getClientRects().length;if(n!=="legacy-full")return!0}else if(n==="non-zero-area")return We(e);return!1},qt=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var n=0;n=0)},Ht=function o(e){var t=[],n=[];return e.forEach(function(s,r){var i=!!s.scopeParent,a=i?s.scopeParent:s,c=zt(a,i),l=i?o(s.candidates):a;c===0?i?t.push.apply(t,l):t.push(a):n.push({documentOrder:r,tabIndex:c,item:s,isScope:i,content:l})}),n.sort(jt).reduce(function(s,r){return r.isScope?s.push.apply(s,r.content):s.push(r.content),s},[]).concat(t)},Qt=function(e,t){t=t||{};var n;return t.getShadowRoot?n=tt([e],t.includeContainer,{filter:Ce.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:Gt}):n=et(e,t.includeContainer,Ce.bind(null,t)),Ht(n)},Yt=function(e,t){t=t||{};var n;return t.getShadowRoot?n=tt([e],t.includeContainer,{filter:me.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):n=et(e,t.includeContainer,me.bind(null,t)),n},Q=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return U.call(e,fe)===!1?!1:Ce(t,e)},Zt=Ze.concat("iframe").join(","),Ee=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return U.call(e,Zt)===!1?!1:me(t,e)};/*! +* focus-trap 7.6.0 +* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE +*/function Xt(o,e,t){return(e=tn(e))in o?Object.defineProperty(o,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):o[e]=t,o}function $e(o,e){var t=Object.keys(o);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(o);e&&(n=n.filter(function(s){return Object.getOwnPropertyDescriptor(o,s).enumerable})),t.push.apply(t,n)}return t}function Je(o){for(var e=1;e0){var n=e[e.length-1];n!==t&&n.pause()}var s=e.indexOf(t);s===-1||e.splice(s,1),e.push(t)},deactivateTrap:function(e,t){var n=e.indexOf(t);n!==-1&&e.splice(n,1),e.length>0&&e[e.length-1].unpause()}},nn=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},sn=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},re=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},rn=function(e){return re(e)&&!e.shiftKey},on=function(e){return re(e)&&e.shiftKey},Ue=function(e){return setTimeout(e,0)},qe=function(e,t){var n=-1;return e.every(function(s,r){return t(s)?(n=r,!1):!0}),n},ie=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),s=1;s1?m-1:0),w=1;w=0)u=n.activeElement;else{var d=i.tabbableGroups[0],m=d&&d.firstTabbableNode;u=m||h("fallbackFocus")}if(!u)throw new Error("Your focus-trap needs to have at least one focusable element");return u},p=function(){if(i.containerGroups=i.containers.map(function(u){var d=Qt(u,r.tabbableOptions),m=Yt(u,r.tabbableOptions),v=d.length>0?d[0]:void 0,w=d.length>0?d[d.length-1]:void 0,S=m.find(function(F){return Q(F)}),T=m.slice().reverse().find(function(F){return Q(F)}),N=!!d.find(function(F){return K(F)>0});return{container:u,tabbableNodes:d,focusableNodes:m,posTabIndexesFound:N,firstTabbableNode:v,lastTabbableNode:w,firstDomTabbableNode:S,lastDomTabbableNode:T,nextTabbableNode:function(C){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,L=d.indexOf(C);return L<0?A?m.slice(m.indexOf(C)+1).find(function(V){return Q(V)}):m.slice(0,m.indexOf(C)).reverse().find(function(V){return Q(V)}):d[L+(A?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(u){return u.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(u){return u.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},g=function(u){var d=u.activeElement;if(d)return d.shadowRoot&&d.shadowRoot.activeElement!==null?g(d.shadowRoot):d},b=function(u){if(u!==!1&&u!==g(document)){if(!u||!u.focus){b(f());return}u.focus({preventScroll:!!r.preventScroll}),i.mostRecentlyFocusedNode=u,nn(u)&&u.select()}},y=function(u){var d=h("setReturnFocus",u);return d||(d===!1?!1:u)},_=function(u){var d=u.target,m=u.event,v=u.isBackward,w=v===void 0?!1:v;d=d||ce(m),p();var S=null;if(i.tabbableGroups.length>0){var T=l(d,m),N=T>=0?i.containerGroups[T]:void 0;if(T<0)w?S=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:S=i.tabbableGroups[0].firstTabbableNode;else if(w){var F=qe(i.tabbableGroups,function(ee){var ye=ee.firstTabbableNode;return d===ye});if(F<0&&(N.container===d||Ee(d,r.tabbableOptions)&&!Q(d,r.tabbableOptions)&&!N.nextTabbableNode(d,!1))&&(F=T),F>=0){var C=F===0?i.tabbableGroups.length-1:F-1,A=i.tabbableGroups[C];S=K(d)>=0?A.lastTabbableNode:A.lastDomTabbableNode}else re(m)||(S=N.nextTabbableNode(d,!1))}else{var L=qe(i.tabbableGroups,function(ee){var ye=ee.lastTabbableNode;return d===ye});if(L<0&&(N.container===d||Ee(d,r.tabbableOptions)&&!Q(d,r.tabbableOptions)&&!N.nextTabbableNode(d))&&(L=T),L>=0){var V=L===i.tabbableGroups.length-1?0:L+1,oe=i.tabbableGroups[V];S=K(d)>=0?oe.firstTabbableNode:oe.firstDomTabbableNode}else re(m)||(S=N.nextTabbableNode(d))}}else S=h("fallbackFocus");return S},E=function(u){var d=ce(u);if(!(l(d,u)>=0)){if(ie(r.clickOutsideDeactivates,u)){a.deactivate({returnFocus:r.returnFocusOnDeactivate});return}ie(r.allowOutsideClick,u)||u.preventDefault()}},I=function(u){var d=ce(u),m=l(d,u)>=0;if(m||d instanceof Document)m&&(i.mostRecentlyFocusedNode=d);else{u.stopImmediatePropagation();var v,w=!0;if(i.mostRecentlyFocusedNode)if(K(i.mostRecentlyFocusedNode)>0){var S=l(i.mostRecentlyFocusedNode),T=i.containerGroups[S].tabbableNodes;if(T.length>0){var N=T.findIndex(function(F){return F===i.mostRecentlyFocusedNode});N>=0&&(r.isKeyForward(i.recentNavEvent)?N+1=0&&(v=T[N-1],w=!1))}}else i.containerGroups.some(function(F){return F.tabbableNodes.some(function(C){return K(C)>0})})||(w=!1);else w=!1;w&&(v=_({target:i.mostRecentlyFocusedNode,isBackward:r.isKeyBackward(i.recentNavEvent)})),b(v||i.mostRecentlyFocusedNode||f())}i.recentNavEvent=void 0},M=function(u){var d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=u;var m=_({event:u,isBackward:d});m&&(re(u)&&u.preventDefault(),b(m))},j=function(u){(r.isKeyForward(u)||r.isKeyBackward(u))&&M(u,r.isKeyBackward(u))},D=function(u){sn(u)&&ie(r.escapeDeactivates,u)!==!1&&(u.preventDefault(),a.deactivate())},z=function(u){var d=ce(u);l(d,u)>=0||ie(r.clickOutsideDeactivates,u)||ie(r.allowOutsideClick,u)||(u.preventDefault(),u.stopImmediatePropagation())},O=function(){if(i.active)return Ke.activateTrap(s,a),i.delayInitialFocusTimer=r.delayInitialFocus?Ue(function(){b(f())}):b(f()),n.addEventListener("focusin",I,!0),n.addEventListener("mousedown",E,{capture:!0,passive:!1}),n.addEventListener("touchstart",E,{capture:!0,passive:!1}),n.addEventListener("click",z,{capture:!0,passive:!1}),n.addEventListener("keydown",j,{capture:!0,passive:!1}),n.addEventListener("keydown",D),a},q=function(){if(i.active)return n.removeEventListener("focusin",I,!0),n.removeEventListener("mousedown",E,!0),n.removeEventListener("touchstart",E,!0),n.removeEventListener("click",z,!0),n.removeEventListener("keydown",j,!0),n.removeEventListener("keydown",D),a},G=function(u){var d=u.some(function(m){var v=Array.from(m.removedNodes);return v.some(function(w){return w===i.mostRecentlyFocusedNode})});d&&b(f())},H=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(G):void 0,P=function(){H&&(H.disconnect(),i.active&&!i.paused&&i.containers.map(function(u){H.observe(u,{subtree:!0,childList:!0})}))};return a={get active(){return i.active},get paused(){return i.paused},activate:function(u){if(i.active)return this;var d=c(u,"onActivate"),m=c(u,"onPostActivate"),v=c(u,"checkCanFocusTrap");v||p(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=n.activeElement,d==null||d();var w=function(){v&&p(),O(),P(),m==null||m()};return v?(v(i.containers.concat()).then(w,w),this):(w(),this)},deactivate:function(u){if(!i.active)return this;var d=Je({onDeactivate:r.onDeactivate,onPostDeactivate:r.onPostDeactivate,checkCanReturnFocus:r.checkCanReturnFocus},u);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,q(),i.active=!1,i.paused=!1,P(),Ke.deactivateTrap(s,a);var m=c(d,"onDeactivate"),v=c(d,"onPostDeactivate"),w=c(d,"checkCanReturnFocus"),S=c(d,"returnFocus","returnFocusOnDeactivate");m==null||m();var T=function(){Ue(function(){S&&b(y(i.nodeFocusedBeforeActivation)),v==null||v()})};return S&&w?(w(y(i.nodeFocusedBeforeActivation)).then(T,T),this):(T(),this)},pause:function(u){if(i.paused||!i.active)return this;var d=c(u,"onPause"),m=c(u,"onPostPause");return i.paused=!0,d==null||d(),q(),P(),m==null||m(),this},unpause:function(u){if(!i.paused||!i.active)return this;var d=c(u,"onUnpause"),m=c(u,"onPostUnpause");return i.paused=!1,d==null||d(),p(),O(),P(),m==null||m(),this},updateContainerElements:function(u){var d=[].concat(u).filter(Boolean);return i.containers=d.map(function(m){return typeof m=="string"?n.querySelector(m):m}),i.active&&p(),P(),this}},a.updateContainerElements(e),a};function ln(o,e={}){let t;const{immediate:n,...s}=e,r=J(!1),i=J(!1),a=p=>t&&t.activate(p),c=p=>t&&t.deactivate(p),l=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)},f=de(()=>{const p=ze(o);return(Array.isArray(p)?p:[p]).map(g=>{const b=ze(g);return typeof b=="string"?b:ft(b)}).filter(pt)});return Oe(f,p=>{p.length&&(t=cn(p,{...s,onActivate(){r.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){r.value=!1,e.onDeactivate&&e.onDeactivate()}}),n&&a())},{flush:"post"}),vt(()=>c()),{hasFocus:r,isPaused:i,activate:a,deactivate:c,pause:l,unpause:h}}function he(o,e,t,n){function s(r){return r instanceof t?r:new t(function(i){i(r)})}return new(t||(t=Promise))(function(r,i){function a(h){try{l(n.next(h))}catch(f){i(f)}}function c(h){try{l(n.throw(h))}catch(f){i(f)}}function l(h){h.done?r(h.value):s(h.value).then(a,c)}l((n=n.apply(o,[])).next())})}const un="ENTRIES",it="KEYS",rt="VALUES",R="";class Ie{constructor(e,t){const n=e._tree,s=Array.from(n.keys());this.set=e,this._type=t,this._path=s.length>0?[{node:n,keys:s}]:[]}next(){const e=this.dive();return this.backtrack(),e}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:e,keys:t}=Y(this._path);if(Y(t)===R)return{done:!1,value:this.result()};const n=e.get(Y(t));return this._path.push({node:n,keys:Array.from(n.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const e=Y(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:e})=>Y(e)).filter(e=>e!==R).join("")}value(){return Y(this._path).node.get(R)}result(){switch(this._type){case rt:return this.value();case it:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const Y=o=>o[o.length-1],dn=(o,e,t)=>{const n=new Map;if(e===void 0)return n;const s=e.length+1,r=s+t,i=new Uint8Array(r*s).fill(t+1);for(let a=0;a{const c=r*i;e:for(const l of o.keys())if(l===R){const h=s[c-1];h<=t&&n.set(a,[o.get(l),h])}else{let h=r;for(let f=0;ft)continue e}ot(o.get(l),e,t,n,s,h,i,a+l)}};class ${constructor(e=new Map,t=""){this._size=void 0,this._tree=e,this._prefix=t}atPrefix(e){if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");const[t,n]=ge(this._tree,e.slice(this._prefix.length));if(t===void 0){const[s,r]=Le(n);for(const i of s.keys())if(i!==R&&i.startsWith(r)){const a=new Map;return a.set(i.slice(r.length),s.get(i)),new $(a,e)}}return new $(t,e)}clear(){this._size=void 0,this._tree.clear()}delete(e){return this._size=void 0,hn(this._tree,e)}entries(){return new Ie(this,un)}forEach(e){for(const[t,n]of this)e(t,n,this)}fuzzyGet(e,t){return dn(this._tree,e,t)}get(e){const t=Re(this._tree,e);return t!==void 0?t.get(R):void 0}has(e){const t=Re(this._tree,e);return t!==void 0&&t.has(R)}keys(){return new Ie(this,it)}set(e,t){if(typeof e!="string")throw new Error("key must be a string");return this._size=void 0,ke(this._tree,e).set(R,t),this}get size(){if(this._size)return this._size;this._size=0;const e=this.entries();for(;!e.next().done;)this._size+=1;return this._size}update(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const n=ke(this._tree,e);return n.set(R,t(n.get(R))),this}fetch(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const n=ke(this._tree,e);let s=n.get(R);return s===void 0&&n.set(R,s=t()),s}values(){return new Ie(this,rt)}[Symbol.iterator](){return this.entries()}static from(e){const t=new $;for(const[n,s]of e)t.set(n,s);return t}static fromObject(e){return $.from(Object.entries(e))}}const ge=(o,e,t=[])=>{if(e.length===0||o==null)return[o,t];for(const n of o.keys())if(n!==R&&e.startsWith(n))return t.push([o,n]),ge(o.get(n),e.slice(n.length),t);return t.push([o,e]),ge(void 0,"",t)},Re=(o,e)=>{if(e.length===0||o==null)return o;for(const t of o.keys())if(t!==R&&e.startsWith(t))return Re(o.get(t),e.slice(t.length))},ke=(o,e)=>{const t=e.length;e:for(let n=0;o&&n{const[t,n]=ge(o,e);if(t!==void 0){if(t.delete(R),t.size===0)at(n);else if(t.size===1){const[s,r]=t.entries().next().value;ct(n,s,r)}}},at=o=>{if(o.length===0)return;const[e,t]=Le(o);if(e.delete(t),e.size===0)at(o.slice(0,-1));else if(e.size===1){const[n,s]=e.entries().next().value;n!==R&&ct(o.slice(0,-1),n,s)}},ct=(o,e,t)=>{if(o.length===0)return;const[n,s]=Le(o);n.set(s+e,t),n.delete(s)},Le=o=>o[o.length-1],De="or",lt="and",fn="and_not";class X{constructor(e){if((e==null?void 0:e.fields)==null)throw new Error('MiniSearch: option "fields" must be provided');const t=e.autoVacuum==null||e.autoVacuum===!0?Fe:e.autoVacuum;this._options=Object.assign(Object.assign(Object.assign({},Ne),e),{autoVacuum:t,searchOptions:Object.assign(Object.assign({},Ge),e.searchOptions||{}),autoSuggestOptions:Object.assign(Object.assign({},bn),e.autoSuggestOptions||{})}),this._index=new $,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=Ae,this.addFields(this._options.fields)}add(e){const{extractField:t,tokenize:n,processTerm:s,fields:r,idField:i}=this._options,a=t(e,i);if(a==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);if(this._idToShortId.has(a))throw new Error(`MiniSearch: duplicate ID ${a}`);const c=this.addDocumentId(a);this.saveStoredFields(c,e);for(const l of r){const h=t(e,l);if(h==null)continue;const f=n(h.toString(),l),p=this._fieldIds[l],g=new Set(f).size;this.addFieldLength(c,p,this._documentCount-1,g);for(const b of f){const y=s(b,l);if(Array.isArray(y))for(const _ of y)this.addTerm(p,c,_);else y&&this.addTerm(p,c,y)}}}addAll(e){for(const t of e)this.add(t)}addAllAsync(e,t={}){const{chunkSize:n=10}=t,s={chunk:[],promise:Promise.resolve()},{chunk:r,promise:i}=e.reduce(({chunk:a,promise:c},l,h)=>(a.push(l),(h+1)%n===0?{chunk:[],promise:c.then(()=>new Promise(f=>setTimeout(f,0))).then(()=>this.addAll(a))}:{chunk:a,promise:c}),s);return i.then(()=>this.addAll(r))}remove(e){const{tokenize:t,processTerm:n,extractField:s,fields:r,idField:i}=this._options,a=s(e,i);if(a==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);const c=this._idToShortId.get(a);if(c==null)throw new Error(`MiniSearch: cannot remove document with ID ${a}: it is not in the index`);for(const l of r){const h=s(e,l);if(h==null)continue;const f=t(h.toString(),l),p=this._fieldIds[l],g=new Set(f).size;this.removeFieldLength(c,p,this._documentCount,g);for(const b of f){const y=n(b,l);if(Array.isArray(y))for(const _ of y)this.removeTerm(p,c,_);else y&&this.removeTerm(p,c,y)}}this._storedFields.delete(c),this._documentIds.delete(c),this._idToShortId.delete(a),this._fieldLength.delete(c),this._documentCount-=1}removeAll(e){if(e)for(const t of e)this.remove(t);else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new $,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}}discard(e){const t=this._idToShortId.get(e);if(t==null)throw new Error(`MiniSearch: cannot discard document with ID ${e}: it is not in the index`);this._idToShortId.delete(e),this._documentIds.delete(t),this._storedFields.delete(t),(this._fieldLength.get(t)||[]).forEach((n,s)=>{this.removeFieldLength(t,s,this._documentCount,n)}),this._fieldLength.delete(t),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()}maybeAutoVacuum(){if(this._options.autoVacuum===!1)return;const{minDirtFactor:e,minDirtCount:t,batchSize:n,batchWait:s}=this._options.autoVacuum;this.conditionalVacuum({batchSize:n,batchWait:s},{minDirtCount:t,minDirtFactor:e})}discardAll(e){const t=this._options.autoVacuum;try{this._options.autoVacuum=!1;for(const n of e)this.discard(n)}finally{this._options.autoVacuum=t}this.maybeAutoVacuum()}replace(e){const{idField:t,extractField:n}=this._options,s=n(e,t);this.discard(s),this.add(e)}vacuum(e={}){return this.conditionalVacuum(e)}conditionalVacuum(e,t){return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(()=>{const n=this._enqueuedVacuumConditions;return this._enqueuedVacuumConditions=Ae,this.performVacuuming(e,n)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)}performVacuuming(e,t){return he(this,void 0,void 0,function*(){const n=this._dirtCount;if(this.vacuumConditionsMet(t)){const s=e.batchSize||Me.batchSize,r=e.batchWait||Me.batchWait;let i=1;for(const[a,c]of this._index){for(const[l,h]of c)for(const[f]of h)this._documentIds.has(f)||(h.size<=1?c.delete(l):h.delete(f));this._index.get(a).size===0&&this._index.delete(a),i%s===0&&(yield new Promise(l=>setTimeout(l,r))),i+=1}this._dirtCount-=n}yield null,this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null})}vacuumConditionsMet(e){if(e==null)return!0;let{minDirtCount:t,minDirtFactor:n}=e;return t=t||Fe.minDirtCount,n=n||Fe.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=n}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}has(e){return this._idToShortId.has(e)}getStoredFields(e){const t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)}search(e,t={}){const n=this.executeQuery(e,t),s=[];for(const[r,{score:i,terms:a,match:c}]of n){const l=a.length||1,h={id:this._documentIds.get(r),score:i*l,terms:Object.keys(c),queryTerms:a,match:c};Object.assign(h,this._storedFields.get(r)),(t.filter==null||t.filter(h))&&s.push(h)}return e===X.wildcard&&t.boostDocument==null&&this._options.searchOptions.boostDocument==null||s.sort(Qe),s}autoSuggest(e,t={}){t=Object.assign(Object.assign({},this._options.autoSuggestOptions),t);const n=new Map;for(const{score:r,terms:i}of this.search(e,t)){const a=i.join(" "),c=n.get(a);c!=null?(c.score+=r,c.count+=1):n.set(a,{score:r,terms:i,count:1})}const s=[];for(const[r,{score:i,terms:a,count:c}]of n)s.push({suggestion:r,terms:a,score:i/c});return s.sort(Qe),s}get documentCount(){return this._documentCount}get termCount(){return this._index.size}static loadJSON(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)}static loadJSONAsync(e,t){return he(this,void 0,void 0,function*(){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJSAsync(JSON.parse(e),t)})}static getDefault(e){if(Ne.hasOwnProperty(e))return Te(Ne,e);throw new Error(`MiniSearch: unknown option "${e}"`)}static loadJS(e,t){const{index:n,documentIds:s,fieldLength:r,storedFields:i,serializationVersion:a}=e,c=this.instantiateMiniSearch(e,t);c._documentIds=le(s),c._fieldLength=le(r),c._storedFields=le(i);for(const[l,h]of c._documentIds)c._idToShortId.set(h,l);for(const[l,h]of n){const f=new Map;for(const p of Object.keys(h)){let g=h[p];a===1&&(g=g.ds),f.set(parseInt(p,10),le(g))}c._index.set(l,f)}return c}static loadJSAsync(e,t){return he(this,void 0,void 0,function*(){const{index:n,documentIds:s,fieldLength:r,storedFields:i,serializationVersion:a}=e,c=this.instantiateMiniSearch(e,t);c._documentIds=yield ue(s),c._fieldLength=yield ue(r),c._storedFields=yield ue(i);for(const[h,f]of c._documentIds)c._idToShortId.set(f,h);let l=0;for(const[h,f]of n){const p=new Map;for(const g of Object.keys(f)){let b=f[g];a===1&&(b=b.ds),p.set(parseInt(g,10),yield ue(b))}++l%1e3===0&&(yield ut(0)),c._index.set(h,p)}return c})}static instantiateMiniSearch(e,t){const{documentCount:n,nextId:s,fieldIds:r,averageFieldLength:i,dirtCount:a,serializationVersion:c}=e;if(c!==1&&c!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");const l=new X(t);return l._documentCount=n,l._nextId=s,l._idToShortId=new Map,l._fieldIds=r,l._avgFieldLength=i,l._dirtCount=a||0,l._index=new $,l}executeQuery(e,t={}){if(e===X.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){const p=Object.assign(Object.assign(Object.assign({},t),e),{queries:void 0}),g=e.queries.map(b=>this.executeQuery(b,p));return this.combineResults(g,p.combineWith)}const{tokenize:n,processTerm:s,searchOptions:r}=this._options,i=Object.assign(Object.assign({tokenize:n,processTerm:s},r),t),{tokenize:a,processTerm:c}=i,f=a(e).flatMap(p=>c(p)).filter(p=>!!p).map(gn(i)).map(p=>this.executeQuerySpec(p,i));return this.combineResults(f,i.combineWith)}executeQuerySpec(e,t){const n=Object.assign(Object.assign({},this._options.searchOptions),t),s=(n.fields||this._options.fields).reduce((y,_)=>Object.assign(Object.assign({},y),{[_]:Te(n.boost,_)||1}),{}),{boostDocument:r,weights:i,maxFuzzy:a,bm25:c}=n,{fuzzy:l,prefix:h}=Object.assign(Object.assign({},Ge.weights),i),f=this._index.get(e.term),p=this.termResults(e.term,e.term,1,e.termBoost,f,s,r,c);let g,b;if(e.prefix&&(g=this._index.atPrefix(e.term)),e.fuzzy){const y=e.fuzzy===!0?.2:e.fuzzy,_=y<1?Math.min(a,Math.round(e.term.length*y)):y;_&&(b=this._index.fuzzyGet(e.term,_))}if(g)for(const[y,_]of g){const E=y.length-e.term.length;if(!E)continue;b==null||b.delete(y);const I=h*y.length/(y.length+.3*E);this.termResults(e.term,y,I,e.termBoost,_,s,r,c,p)}if(b)for(const y of b.keys()){const[_,E]=b.get(y);if(!E)continue;const I=l*y.length/(y.length+E);this.termResults(e.term,y,I,e.termBoost,_,s,r,c,p)}return p}executeWildcardQuery(e){const t=new Map,n=Object.assign(Object.assign({},this._options.searchOptions),e);for(const[s,r]of this._documentIds){const i=n.boostDocument?n.boostDocument(r,"",this._storedFields.get(s)):1;t.set(s,{score:i,terms:[],match:{}})}return t}combineResults(e,t=De){if(e.length===0)return new Map;const n=t.toLowerCase(),s=pn[n];if(!s)throw new Error(`Invalid combination operator: ${t}`);return e.reduce(s)||new Map}toJSON(){const e=[];for(const[t,n]of this._index){const s={};for(const[r,i]of n)s[r]=Object.fromEntries(i);e.push([t,s])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:e,serializationVersion:2}}termResults(e,t,n,s,r,i,a,c,l=new Map){if(r==null)return l;for(const h of Object.keys(i)){const f=i[h],p=this._fieldIds[h],g=r.get(p);if(g==null)continue;let b=g.size;const y=this._avgFieldLength[p];for(const _ of g.keys()){if(!this._documentIds.has(_)){this.removeTerm(p,_,t),b-=1;continue}const E=a?a(this._documentIds.get(_),t,this._storedFields.get(_)):1;if(!E)continue;const I=g.get(_),M=this._fieldLength.get(_)[p],j=mn(I,b,this._documentCount,M,y,c),D=n*s*f*E*j,z=l.get(_);if(z){z.score+=D,yn(z.terms,e);const O=Te(z.match,t);O?O.push(h):z.match[t]=[h]}else l.set(_,{score:D,terms:[e],match:{[t]:[h]}})}}return l}addTerm(e,t,n){const s=this._index.fetch(n,Ye);let r=s.get(e);if(r==null)r=new Map,r.set(t,1),s.set(e,r);else{const i=r.get(t);r.set(t,(i||0)+1)}}removeTerm(e,t,n){if(!this._index.has(n)){this.warnDocumentChanged(t,e,n);return}const s=this._index.fetch(n,Ye),r=s.get(e);r==null||r.get(t)==null?this.warnDocumentChanged(t,e,n):r.get(t)<=1?r.size<=1?s.delete(e):r.delete(t):r.set(t,r.get(t)-1),this._index.get(n).size===0&&this._index.delete(n)}warnDocumentChanged(e,t,n){for(const s of Object.keys(this._fieldIds))if(this._fieldIds[s]===t){this._options.logger("warn",`MiniSearch: document with ID ${this._documentIds.get(e)} has changed before removal: term "${n}" was not present in field "${s}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}}addDocumentId(e){const t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t}addFields(e){for(let t=0;tObject.prototype.hasOwnProperty.call(o,e)?o[e]:void 0,pn={[De]:(o,e)=>{for(const t of e.keys()){const n=o.get(t);if(n==null)o.set(t,e.get(t));else{const{score:s,terms:r,match:i}=e.get(t);n.score=n.score+s,n.match=Object.assign(n.match,i),He(n.terms,r)}}return o},[lt]:(o,e)=>{const t=new Map;for(const n of e.keys()){const s=o.get(n);if(s==null)continue;const{score:r,terms:i,match:a}=e.get(n);He(s.terms,i),t.set(n,{score:s.score+r,terms:s.terms,match:Object.assign(s.match,a)})}return t},[fn]:(o,e)=>{for(const t of e.keys())o.delete(t);return o}},vn={k:1.2,b:.7,d:.5},mn=(o,e,t,n,s,r)=>{const{k:i,b:a,d:c}=r;return Math.log(1+(t-e+.5)/(e+.5))*(c+o*(i+1)/(o+i*(1-a+a*n/s)))},gn=o=>(e,t,n)=>{const s=typeof o.fuzzy=="function"?o.fuzzy(e,t,n):o.fuzzy||!1,r=typeof o.prefix=="function"?o.prefix(e,t,n):o.prefix===!0,i=typeof o.boostTerm=="function"?o.boostTerm(e,t,n):1;return{term:e,fuzzy:s,prefix:r,termBoost:i}},Ne={idField:"id",extractField:(o,e)=>o[e],tokenize:o=>o.split(wn),processTerm:o=>o.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(o,e)=>{typeof(console==null?void 0:console[o])=="function"&&console[o](e)},autoVacuum:!0},Ge={combineWith:De,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:vn},bn={combineWith:lt,prefix:(o,e,t)=>e===t.length-1},Me={batchSize:1e3,batchWait:10},Ae={minDirtFactor:.1,minDirtCount:20},Fe=Object.assign(Object.assign({},Me),Ae),yn=(o,e)=>{o.includes(e)||o.push(e)},He=(o,e)=>{for(const t of e)o.includes(t)||o.push(t)},Qe=({score:o},{score:e})=>e-o,Ye=()=>new Map,le=o=>{const e=new Map;for(const t of Object.keys(o))e.set(parseInt(t,10),o[t]);return e},ue=o=>he(void 0,void 0,void 0,function*(){const e=new Map;let t=0;for(const n of Object.keys(o))e.set(parseInt(n,10),o[n]),++t%1e3===0&&(yield ut(0));return e}),ut=o=>new Promise(e=>setTimeout(e,o)),wn=/[\n\r\p{Z}\p{P}]+/u;var xn=class{constructor(o=10){we(this,"max");we(this,"cache");this.max=o,this.cache=new Map}get(o){const e=this.cache.get(o);return e!==void 0&&(this.cache.delete(o),this.cache.set(o,e)),e}set(o,e){this.cache.has(o)?this.cache.delete(o):this.cache.size===this.max&&this.cache.delete(this.first()),this.cache.set(o,e)}first(){return this.cache.keys().next().value}clear(){this.cache.clear()}};const _n={},Sn={width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"};function En(o,e){return B(),W("svg",Sn,e[0]||(e[0]=[x("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[x("circle",{cx:"11",cy:"11",r:"8"}),x("path",{d:"m21 21l-4.35-4.35"})],-1)]))}const In=be(_n,[["render",En],["__file","SearchIcon.vue"]]),kn={},Tn={width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"};function Nn(o,e){return B(),W("svg",Tn,e[0]||(e[0]=[x("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 5H9l-7 7l7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2Zm-2 4l-6 6m0-6l6 6"},null,-1)]))}const Fn=be(kn,[["render",Nn],["__file","ClearIcon.vue"]]),On={},Cn={width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"};function Rn(o,e){return B(),W("svg",Cn,e[0]||(e[0]=[x("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 12H5m7 7l-7-7l7-7"},null,-1)]))}const Mn=be(On,[["render",Rn],["__file","BackIcon.vue"]]),An=mt({__name:"SearchBox",props:{locales:{},options:{}},emits:["close"],setup(o,{expose:e,emit:t}){e();const n=o,s=t,r=gt(),i=bt(yt(n.locales)),a=xe(),c=xe(),l=kt(),{activate:h}=ln(a,{immediate:!0}),f=je(async()=>{var v,w,S,T,N;return Pe(X.loadJSON((S=await((w=(v=l.value)[r.value])==null?void 0:w.call(v)))==null?void 0:S.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1}},...(T=n.options.miniSearch)==null?void 0:T.searchOptions,...(N=n.options.miniSearch)==null?void 0:N.options}))}),p=de(()=>{var v;return((v=n.options)==null?void 0:v.disableQueryPersistence)===!0}),g=p.value?J(""):wt("vuepress-plume:mini-search-filter",""),b=de(()=>i.value.buttonText||i.value.placeholder||"Search"),y=xe([]),_=J(!1);Oe(g,()=>{_.value=!1});const E=je(async()=>{if(c.value)return Pe(new Lt(c.value))},null),I=new xn(16);xt(()=>[f.value,g.value],async([v,w],S,T)=>{(S==null?void 0:S[0])!==v&&I.clear();let N=!1;if(T(()=>{N=!0}),!v)return;y.value=v.search(w).slice(0,16).map(C=>{var A;return C.titles=((A=C.titles)==null?void 0:A.filter(Boolean))||[],C}),_.value=!0;const F=new Set;y.value=y.value.map(C=>{const[A,L]=C.id.split("#"),V=I.get(A),oe=(V==null?void 0:V.get(L))??"";for(const ee in C.match)F.add(ee);return{...C,text:oe}}),await te(),!N&&await new Promise(C=>{var A;(A=E.value)==null||A.unmark({done:()=>{var L;(L=E.value)==null||L.markRegExp(d(F),{done:C})}})})},{debounce:200,immediate:!0});const M=J(),j=de(()=>{var v;return((v=g.value)==null?void 0:v.length)<=0});function D(v=!0){var w,S;(w=M.value)==null||w.focus(),v&&((S=M.value)==null||S.select())}_e(()=>{D()});function z(v){v.pointerType==="mouse"&&D()}const O=J(-1),q=J(!1);Oe(y,v=>{O.value=v.length?0:-1,G()});function G(){te(()=>{const v=document.querySelector(".result.selected");v&&v.scrollIntoView({block:"nearest"})})}ae("ArrowUp",v=>{v.preventDefault(),O.value--,O.value<0&&(O.value=y.value.length-1),q.value=!0,G()}),ae("ArrowDown",v=>{v.preventDefault(),O.value++,O.value>=y.value.length&&(O.value=0),q.value=!0,G()});const H=_t();ae("Enter",v=>{if(v.isComposing||v.target instanceof HTMLButtonElement&&v.target.type!=="submit")return;const w=y.value[O.value];if(v.target instanceof HTMLInputElement&&!w){v.preventDefault();return}w&&(H.go(w.id),s("close"))}),ae("Escape",()=>{s("close")}),_e(()=>{window.history.pushState(null,"",null)}),St("popstate",v=>{v.preventDefault(),s("close")});const P=Et(typeof document<"u"?document.body:null);_e(()=>{te(()=>{P.value=!0,te().then(()=>h())})}),It(()=>{P.value=!1});function k(){g.value="",te().then(()=>D(!1))}function u(v){return v.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function d(v){return new RegExp([...v].sort((w,S)=>S.length-w.length).map(w=>`(${u(w)})`).join("|"),"gi")}const m={props:n,emit:s,routeLocale:r,locale:i,el:a,resultsEl:c,searchIndexData:l,activate:h,searchIndex:f,disableQueryPersistence:p,filterText:g,buttonText:b,results:y,enableNoResults:_,mark:E,cache:I,searchInput:M,disableReset:j,focusSearchInput:D,onSearchBarClick:z,selectedIndex:O,disableMouseOver:q,scrollToSelectedResult:G,router:H,isLocked:P,resetSearch:k,escapeRegExp:u,formMarkRegex:d,SearchIcon:In,ClearIcon:Fn,BackIcon:Mn};return Object.defineProperty(m,"__isScriptSetup",{enumerable:!1,value:!0}),m}}),Ln=["aria-owns"],Dn={class:"shell"},zn=["title"],jn={class:"search-actions before"},Pn=["title"],Vn=["placeholder"],Bn={class:"search-actions"},Wn=["disabled","title"],$n=["id","role","aria-labelledby"],Jn=["aria-selected"],Kn=["href","aria-label","onMouseenter","onFocusin"],Un={class:"titles"},qn=["innerHTML"],Gn={class:"title main"},Hn=["innerHTML"],Qn={key:0,class:"no-results"},Yn={class:"search-keyboard-shortcuts"},Zn=["aria-label"],Xn=["aria-label"],es=["aria-label"],ts=["aria-label"];function ns(o,e,t,n,s,r){var i,a,c,l,h,f,p,g,b,y,_;return B(),Tt(Rt,{to:"body"},[x("div",{ref:"el",role:"button","aria-owns":(i=n.results)!=null&&i.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"mini-search-label",class:"VPLocalSearchBox"},[x("div",{class:"backdrop",onClick:e[0]||(e[0]=E=>o.$emit("close"))}),x("div",Dn,[x("form",{class:"search-bar",onPointerup:e[3]||(e[3]=E=>n.onSearchBarClick(E)),onSubmit:e[4]||(e[4]=Nt(()=>{},["prevent"]))},[x("label",{id:"localsearch-label",title:n.buttonText,for:"localsearch-input"},[Se(n.SearchIcon,{class:"search-icon"})],8,zn),x("div",jn,[x("button",{class:"back-button",title:n.locale.backButtonTitle,onClick:e[1]||(e[1]=E=>o.$emit("close"))},[Se(n.BackIcon)],8,Pn)]),Ft(x("input",{id:"localsearch-input",ref:"searchInput","onUpdate:modelValue":e[2]||(e[2]=E=>n.filterText=E),placeholder:n.buttonText,"aria-labelledby":"localsearch-label",class:"search-input"},null,8,Vn),[[Ot,n.filterText]]),x("div",Bn,[x("button",{class:"clear-button",type:"reset",disabled:n.disableReset,title:n.locale.resetButtonTitle,onClick:n.resetSearch},[Se(n.ClearIcon)],8,Wn)])],32),x("ul",{id:(a=n.results)!=null&&a.length?"localsearch-list":void 0,ref:"resultsEl",role:(c=n.results)!=null&&c.length?"listbox":void 0,"aria-labelledby":(l=n.results)!=null&&l.length?"localsearch-label":void 0,class:"results",onMousemove:e[6]||(e[6]=E=>n.disableMouseOver=!1)},[(B(!0),W(Be,null,Ve(n.results,(E,I)=>(B(),W("li",{key:E.id,role:"option","aria-selected":n.selectedIndex===I?"true":"false"},[x("a",{href:E.id,class:Mt(["result",{selected:n.selectedIndex===I}]),"aria-label":[...E.titles,E.title].join(" > "),onMouseenter:M=>!n.disableMouseOver&&(n.selectedIndex=I),onFocusin:M=>n.selectedIndex=I,onClick:e[5]||(e[5]=M=>o.$emit("close"))},[x("div",null,[x("div",Un,[e[8]||(e[8]=x("span",{class:"title-icon"},"#",-1)),(B(!0),W(Be,null,Ve(E.titles,(M,j)=>(B(),W("span",{key:j,class:"title"},[x("span",{class:"text",innerHTML:M},null,8,qn),e[7]||(e[7]=x("svg",{width:"18",height:"18",viewBox:"0 0 24 24"},[x("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"m9 18l6-6l-6-6"})],-1))]))),128)),x("span",Gn,[x("span",{class:"text",innerHTML:E.title},null,8,Hn)])])])],42,Kn)],8,Jn))),128)),n.filterText&&!n.results.length&&n.enableNoResults?(B(),W("li",Qn,[ne(se(n.locale.noResultsText)+' "',1),x("strong",null,se(n.filterText),1),e[9]||(e[9]=ne('" '))])):Ct("",!0)],40,$n),x("div",Yn,[x("span",null,[x("kbd",{"aria-label":((h=n.locale.footer)==null?void 0:h.navigateUpKeyAriaLabel)??""},e[10]||(e[10]=[x("svg",{width:"14",height:"14",viewBox:"0 0 24 24"},[x("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 19V5m-7 7l7-7l7 7"})],-1)]),8,Zn),x("kbd",{"aria-label":((f=n.locale.footer)==null?void 0:f.navigateDownKeyAriaLabel)??""},e[11]||(e[11]=[x("svg",{width:"14",height:"14",viewBox:"0 0 24 24"},[x("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 5v14m7-7l-7 7l-7-7"})],-1)]),8,Xn),ne(" "+se(((p=n.locale.footer)==null?void 0:p.navigateText)??""),1)]),x("span",null,[x("kbd",{"aria-label":((g=n.locale.footer)==null?void 0:g.selectKeyAriaLabel)??""},e[12]||(e[12]=[x("svg",{width:"14",height:"14",viewBox:"0 0 24 24"},[x("g",{fill:"none",stroke:"currentcolor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[x("path",{d:"m9 10l-5 5l5 5"}),x("path",{d:"M20 4v7a4 4 0 0 1-4 4H4"})])],-1)]),8,es),ne(" "+se(((b=n.locale.footer)==null?void 0:b.selectText)??""),1)]),x("span",null,[x("kbd",{"aria-label":((y=n.locale.footer)==null?void 0:y.closeKeyAriaLabel)??""},"esc",8,ts),ne(" "+se(((_=n.locale.footer)==null?void 0:_.closeText)??""),1)])])])],8,Ln)])}const os=be(An,[["render",ns],["__scopeId","data-v-b4513e47"],["__file","SearchBox.vue"]]);export{os as default}; diff --git a/assets/app-Dq-B72KW.js b/assets/app-Dq-B72KW.js new file mode 100644 index 0000000..545b622 --- /dev/null +++ b/assets/app-Dq-B72KW.js @@ -0,0 +1,48 @@ +/** +* @vue/shared v3.5.8 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function Li(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Le={},Qn=[],It=()=>{},zd=()=>!1,Wr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Ci=e=>e.startsWith("onUpdate:"),He=Object.assign,Ti=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Gd=Object.prototype.hasOwnProperty,ke=(e,t)=>Gd.call(e,t),fe=Array.isArray,Xn=e=>qo(e)==="[object Map]",Vc=e=>qo(e)==="[object Set]",de=e=>typeof e=="function",Ie=e=>typeof e=="string",vn=e=>typeof e=="symbol",Te=e=>e!==null&&typeof e=="object",Mc=e=>(Te(e)||de(e))&&de(e.then)&&de(e.catch),$c=Object.prototype.toString,qo=e=>$c.call(e),Ud=e=>qo(e).slice(8,-1),Rc=e=>qo(e)==="[object Object]",Ei=e=>Ie(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Zn=Li(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Ko=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},qd=/-(\w)/g,ht=Ko(e=>e.replace(qd,(t,n)=>n?n.toUpperCase():"")),Kd=/\B([A-Z])/g,gn=Ko(e=>e.replace(Kd,"-$1").toLowerCase()),zr=Ko(e=>e.charAt(0).toUpperCase()+e.slice(1)),So=Ko(e=>e?`on${zr(e)}`:""),dn=(e,t)=>!Object.is(e,t),xo=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},zs=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Yd=e=>{const t=Ie(e)?Number(e):NaN;return isNaN(t)?e:t};let Pa;const Bc=()=>Pa||(Pa=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ne(e){if(fe(e)){const t={};for(let n=0;n{if(n){const r=n.split(Qd);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function ne(e){let t="";if(Ie(e))t=e;else if(fe(e))for(let n=0;n!!(e&&e.__v_isRef===!0),U=e=>Ie(e)?e:e==null?"":fe(e)||Te(e)&&(e.toString===$c||!de(e.toString))?jc(e)?U(e.value):JSON.stringify(e,Hc,2):String(e),Hc=(e,t)=>jc(t)?Hc(e,t.value):Xn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,o],s)=>(n[fs(r,s)+" =>"]=o,n),{})}:Vc(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>fs(n))}:vn(t)?fs(t):Te(t)&&!fe(t)&&!Rc(t)?String(t):t,fs=(e,t="")=>{var n;return vn(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.8 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let et;class nh{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=et,!t&&et&&(this.index=(et.scopes||(et.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;let e;for(;wr;){let t=wr;for(wr=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function Uc(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function qc(e,t=!1){let n,r=e.depsTail,o=r;for(;o;){const s=o.prevDep;o.version===-1?(o===r&&(r=s),Vi(o,t),rh(o)):n=o,o.dep.activeLink=o.prevActiveLink,o.prevActiveLink=void 0,o=s}e.deps=n,e.depsTail=r}function Gs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Kc(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Kc(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Ar))return;e.globalVersion=Ar;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!Gs(e)){e.flags&=-3;return}const n=xe,r=Pt;xe=e,Pt=!0;try{Uc(e);const o=e.fn(e._value);(t.version===0||dn(o,e._value))&&(e._value=o,t.version++)}catch(o){throw t.version++,o}finally{xe=n,Pt=r,qc(e,!0),e.flags&=-3}}function Vi(e,t=!1){const{dep:n,prevSub:r,nextSub:o}=e;if(r&&(r.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r),!n.subs)if(n.computed){n.computed.flags&=-5;for(let s=n.computed.deps;s;s=s.nextDep)Vi(s,!0)}else n.map&&!t&&(n.map.delete(n.key),n.map.size||Or.delete(n.target))}function rh(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Pt=!0;const Yc=[];function mn(){Yc.push(Pt),Pt=!1}function _n(){const e=Yc.pop();Pt=e===void 0?!0:e}function Sa(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=xe;xe=void 0;try{t()}finally{xe=n}}}let Ar=0;class oh{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Yo{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.target=void 0,this.map=void 0,this.key=void 0}track(t){if(!xe||!Pt||xe===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==xe)n=this.activeLink=new oh(xe,this),xe.deps?(n.prevDep=xe.depsTail,xe.depsTail.nextDep=n,xe.depsTail=n):xe.deps=xe.depsTail=n,xe.flags&4&&Jc(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=xe.depsTail,n.nextDep=void 0,xe.depsTail.nextDep=n,xe.depsTail=n,xe.deps===n&&(xe.deps=r)}return n}trigger(t){this.version++,Ar++,this.notify(t)}notify(t){Oi();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Ii()}}}function Jc(e){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)Jc(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}const Or=new WeakMap,En=Symbol(""),Us=Symbol(""),Ir=Symbol("");function Qe(e,t,n){if(Pt&&xe){let r=Or.get(e);r||Or.set(e,r=new Map);let o=r.get(n);o||(r.set(n,o=new Yo),o.target=e,o.map=r,o.key=n),o.track()}}function Gt(e,t,n,r,o,s){const i=Or.get(e);if(!i){Ar++;return}const a=l=>{l&&l.trigger()};if(Oi(),t==="clear")i.forEach(a);else{const l=fe(e),c=l&&Ei(n);if(l&&n==="length"){const u=Number(r);i.forEach((f,d)=>{(d==="length"||d===Ir||!vn(d)&&d>=u)&&a(f)})}else switch(n!==void 0&&a(i.get(n)),c&&a(i.get(Ir)),t){case"add":l?c&&a(i.get("length")):(a(i.get(En)),Xn(e)&&a(i.get(Us)));break;case"delete":l||(a(i.get(En)),Xn(e)&&a(i.get(Us)));break;case"set":Xn(e)&&a(i.get(En));break}}Ii()}function sh(e,t){var n;return(n=Or.get(e))==null?void 0:n.get(t)}function Fn(e){const t=me(e);return t===e?t:(Qe(t,"iterate",Ir),kt(e)?t:t.map(Ke))}function Jo(e){return Qe(e=me(e),"iterate",Ir),e}const ih={__proto__:null,[Symbol.iterator](){return hs(this,Symbol.iterator,Ke)},concat(...e){return Fn(this).concat(...e.map(t=>fe(t)?Fn(t):t))},entries(){return hs(this,"entries",e=>(e[1]=Ke(e[1]),e))},every(e,t){return Nt(this,"every",e,t,void 0,arguments)},filter(e,t){return Nt(this,"filter",e,t,n=>n.map(Ke),arguments)},find(e,t){return Nt(this,"find",e,t,Ke,arguments)},findIndex(e,t){return Nt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Nt(this,"findLast",e,t,Ke,arguments)},findLastIndex(e,t){return Nt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Nt(this,"forEach",e,t,void 0,arguments)},includes(...e){return ps(this,"includes",e)},indexOf(...e){return ps(this,"indexOf",e)},join(e){return Fn(this).join(e)},lastIndexOf(...e){return ps(this,"lastIndexOf",e)},map(e,t){return Nt(this,"map",e,t,void 0,arguments)},pop(){return pr(this,"pop")},push(...e){return pr(this,"push",e)},reduce(e,...t){return xa(this,"reduce",e,t)},reduceRight(e,...t){return xa(this,"reduceRight",e,t)},shift(){return pr(this,"shift")},some(e,t){return Nt(this,"some",e,t,void 0,arguments)},splice(...e){return pr(this,"splice",e)},toReversed(){return Fn(this).toReversed()},toSorted(e){return Fn(this).toSorted(e)},toSpliced(...e){return Fn(this).toSpliced(...e)},unshift(...e){return pr(this,"unshift",e)},values(){return hs(this,"values",Ke)}};function hs(e,t,n){const r=Jo(e),o=r[t]();return r!==e&&!kt(e)&&(o._next=o.next,o.next=()=>{const s=o._next();return s.value&&(s.value=n(s.value)),s}),o}const ah=Array.prototype;function Nt(e,t,n,r,o,s){const i=Jo(e),a=i!==e&&!kt(e),l=i[t];if(l!==ah[t]){const f=l.apply(e,s);return a?Ke(f):f}let c=n;i!==e&&(a?c=function(f,d){return n.call(this,Ke(f),d,e)}:n.length>2&&(c=function(f,d){return n.call(this,f,d,e)}));const u=l.call(i,c,r);return a&&o?o(u):u}function xa(e,t,n,r){const o=Jo(e);let s=n;return o!==e&&(kt(e)?n.length>3&&(s=function(i,a,l){return n.call(this,i,a,l,e)}):s=function(i,a,l){return n.call(this,i,Ke(a),l,e)}),o[t](s,...r)}function ps(e,t,n){const r=me(e);Qe(r,"iterate",Ir);const o=r[t](...n);return(o===-1||o===!1)&&Ni(n[0])?(n[0]=me(n[0]),r[t](...n)):o}function pr(e,t,n=[]){mn(),Oi();const r=me(e)[t].apply(e,n);return Ii(),_n(),r}const lh=Li("__proto__,__v_isRef,__isVue"),Qc=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(vn));function ch(e){vn(e)||(e=String(e));const t=me(this);return Qe(t,"has",e),t.hasOwnProperty(e)}class Xc{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){const o=this._isReadonly,s=this._isShallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return s;if(n==="__v_raw")return r===(o?s?wh:nu:s?tu:eu).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=fe(t);if(!o){let l;if(i&&(l=ih[n]))return l;if(n==="hasOwnProperty")return ch}const a=Reflect.get(t,n,Me(t)?t:r);return(vn(n)?Qc.has(n):lh(n))||(o||Qe(t,"get",n),s)?a:Me(a)?i&&Ei(n)?a:a.value:Te(a)?o?Nn(a):Gr(a):a}}class Zc extends Xc{constructor(t=!1){super(!1,t)}set(t,n,r,o){let s=t[n];if(!this._isShallow){const l=Mn(s);if(!kt(r)&&!Mn(r)&&(s=me(s),r=me(r)),!fe(t)&&Me(s)&&!Me(r))return l?!1:(s.value=r,!0)}const i=fe(t)&&Ei(n)?Number(n)e,Qo=e=>Reflect.getPrototypeOf(e);function no(e,t,n=!1,r=!1){e=e.__v_raw;const o=me(e),s=me(t);n||(dn(t,s)&&Qe(o,"get",t),Qe(o,"get",s));const{has:i}=Qo(o),a=r?Mi:n?Bi:Ke;if(i.call(o,t))return a(e.get(t));if(i.call(o,s))return a(e.get(s));e!==o&&e.get(t)}function ro(e,t=!1){const n=this.__v_raw,r=me(n),o=me(e);return t||(dn(e,o)&&Qe(r,"has",e),Qe(r,"has",o)),e===o?n.has(e):n.has(e)||n.has(o)}function oo(e,t=!1){return e=e.__v_raw,!t&&Qe(me(e),"iterate",En),Reflect.get(e,"size",e)}function La(e,t=!1){!t&&!kt(e)&&!Mn(e)&&(e=me(e));const n=me(this);return Qo(n).has.call(n,e)||(n.add(e),Gt(n,"add",e,e)),this}function Ca(e,t,n=!1){!n&&!kt(t)&&!Mn(t)&&(t=me(t));const r=me(this),{has:o,get:s}=Qo(r);let i=o.call(r,e);i||(e=me(e),i=o.call(r,e));const a=s.call(r,e);return r.set(e,t),i?dn(t,a)&&Gt(r,"set",e,t):Gt(r,"add",e,t),this}function Ta(e){const t=me(this),{has:n,get:r}=Qo(t);let o=n.call(t,e);o||(e=me(e),o=n.call(t,e)),r&&r.call(t,e);const s=t.delete(e);return o&&Gt(t,"delete",e,void 0),s}function Ea(){const e=me(this),t=e.size!==0,n=e.clear();return t&&Gt(e,"clear",void 0,void 0),n}function so(e,t){return function(r,o){const s=this,i=s.__v_raw,a=me(i),l=t?Mi:e?Bi:Ke;return!e&&Qe(a,"iterate",En),i.forEach((c,u)=>r.call(o,l(c),l(u),s))}}function io(e,t,n){return function(...r){const o=this.__v_raw,s=me(o),i=Xn(s),a=e==="entries"||e===Symbol.iterator&&i,l=e==="keys"&&i,c=o[e](...r),u=n?Mi:t?Bi:Ke;return!t&&Qe(s,"iterate",l?Us:En),{next(){const{value:f,done:d}=c.next();return d?{value:f,done:d}:{value:a?[u(f[0]),u(f[1])]:u(f),done:d}},[Symbol.iterator](){return this}}}}function Zt(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function ph(){const e={get(s){return no(this,s)},get size(){return oo(this)},has:ro,add:La,set:Ca,delete:Ta,clear:Ea,forEach:so(!1,!1)},t={get(s){return no(this,s,!1,!0)},get size(){return oo(this)},has:ro,add(s){return La.call(this,s,!0)},set(s,i){return Ca.call(this,s,i,!0)},delete:Ta,clear:Ea,forEach:so(!1,!0)},n={get(s){return no(this,s,!0)},get size(){return oo(this,!0)},has(s){return ro.call(this,s,!0)},add:Zt("add"),set:Zt("set"),delete:Zt("delete"),clear:Zt("clear"),forEach:so(!0,!1)},r={get(s){return no(this,s,!0,!0)},get size(){return oo(this,!0)},has(s){return ro.call(this,s,!0)},add:Zt("add"),set:Zt("set"),delete:Zt("delete"),clear:Zt("clear"),forEach:so(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(s=>{e[s]=io(s,!1,!1),n[s]=io(s,!0,!1),t[s]=io(s,!1,!0),r[s]=io(s,!0,!0)}),[e,n,t,r]}const[vh,gh,mh,_h]=ph();function $i(e,t){const n=t?e?_h:mh:e?gh:vh;return(r,o,s)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?r:Reflect.get(ke(n,o)&&o in r?n:r,o,s)}const bh={get:$i(!1,!1)},yh={get:$i(!1,!0)},kh={get:$i(!0,!1)};const eu=new WeakMap,tu=new WeakMap,nu=new WeakMap,wh=new WeakMap;function Ph(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Sh(e){return e.__v_skip||!Object.isExtensible(e)?0:Ph(Ud(e))}function Gr(e){return Mn(e)?e:Ri(e,!1,fh,bh,eu)}function ru(e){return Ri(e,!1,hh,yh,tu)}function Nn(e){return Ri(e,!0,dh,kh,nu)}function Ri(e,t,n,r,o){if(!Te(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const s=o.get(e);if(s)return s;const i=Sh(e);if(i===0)return e;const a=new Proxy(e,i===2?r:n);return o.set(e,a),a}function An(e){return Mn(e)?An(e.__v_raw):!!(e&&e.__v_isReactive)}function Mn(e){return!!(e&&e.__v_isReadonly)}function kt(e){return!!(e&&e.__v_isShallow)}function Ni(e){return e?!!e.__v_raw:!1}function me(e){const t=e&&e.__v_raw;return t?me(t):e}function xh(e){return!ke(e,"__v_skip")&&Object.isExtensible(e)&&Nc(e,"__v_skip",!0),e}const Ke=e=>Te(e)?Gr(e):e,Bi=e=>Te(e)?Nn(e):e;function Me(e){return e?e.__v_isRef===!0:!1}function q(e){return ou(e,!1)}function Xe(e){return ou(e,!0)}function ou(e,t){return Me(e)?e:new Lh(e,t)}class Lh{constructor(t,n){this.dep=new Yo,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:me(t),this._value=n?t:Ke(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||kt(t)||Mn(t);t=r?t:me(t),dn(t,n)&&(this._rawValue=t,this._value=r?t:Ke(t),this.dep.trigger())}}function Ut(e){return Me(e)?e.value:e}function it(e){return de(e)?e():Ut(e)}const Ch={get:(e,t,n)=>t==="__v_raw"?e:Ut(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Me(o)&&!Me(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function su(e){return An(e)?e:new Proxy(e,Ch)}class Th{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new Yo,{get:r,set:o}=t(n.track.bind(n),n.trigger.bind(n));this._get=r,this._set=o}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Di(e){return new Th(e)}function Eh(e){const t=fe(e)?new Array(e.length):{};for(const n in e)t[n]=iu(e,n);return t}class Ah{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return sh(me(this._object),this._key)}}class Oh{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function hn(e,t,n){return Me(e)?e:de(e)?new Oh(e):Te(e)&&arguments.length>1?iu(e,t,n):q(e)}function iu(e,t,n){const r=e[t];return Me(r)?r:new Ah(e,t,n)}class Ih{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Yo(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Ar-1,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&xe!==this)return Gc(this),!0}get value(){const t=this.dep.track();return Kc(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Vh(e,t,n=!1){let r,o;return de(e)?r=e:(r=e.get,o=e.set),new Ih(r,o,n)}const ao={},$o=new WeakMap;let Cn;function Mh(e,t=!1,n=Cn){if(n){let r=$o.get(n);r||$o.set(n,r=[]),r.push(e)}}function $h(e,t,n=Le){const{immediate:r,deep:o,once:s,scheduler:i,augmentJob:a,call:l}=n,c=x=>o?x:kt(x)||o===!1||o===0?Wt(x,1):Wt(x);let u,f,d,h,v=!1,m=!1;if(Me(e)?(f=()=>e.value,v=kt(e)):An(e)?(f=()=>c(e),v=!0):fe(e)?(m=!0,v=e.some(x=>An(x)||kt(x)),f=()=>e.map(x=>{if(Me(x))return x.value;if(An(x))return c(x);if(de(x))return l?l(x,2):x()})):de(e)?t?f=l?()=>l(e,2):e:f=()=>{if(d){mn();try{d()}finally{_n()}}const x=Cn;Cn=u;try{return l?l(e,3,[h]):e(h)}finally{Cn=x}}:f=It,t&&o){const x=f,B=o===!0?1/0:o;f=()=>Wt(x(),B)}const w=Ai(),S=()=>{u.stop(),w&&Ti(w.effects,u)};if(s&&t){const x=t;t=(...B)=>{x(...B),S()}}let T=m?new Array(e.length).fill(ao):ao;const k=x=>{if(!(!(u.flags&1)||!u.dirty&&!x))if(t){const B=u.run();if(o||v||(m?B.some((N,z)=>dn(N,T[z])):dn(B,T))){d&&d();const N=Cn;Cn=u;try{const z=[B,T===ao?void 0:m&&T[0]===ao?[]:T,h];l?l(t,3,z):t(...z),T=B}finally{Cn=N}}}else u.run()};return a&&a(k),u=new Wc(f),u.scheduler=i?()=>i(k,!1):k,h=x=>Mh(x,!1,u),d=u.onStop=()=>{const x=$o.get(u);if(x){if(l)l(x,4);else for(const B of x)B();$o.delete(u)}},t?r?k(!0):T=u.run():i?i(k.bind(null,!0),!0):u.run(),S.pause=u.pause.bind(u),S.resume=u.resume.bind(u),S.stop=S,S}function Wt(e,t=1/0,n){if(t<=0||!Te(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,Me(e))Wt(e.value,t,n);else if(fe(e))for(let r=0;r{Wt(r,t,n)});else if(Rc(e)){for(const r in e)Wt(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Wt(e[r],t,n)}return e}/** +* @vue/runtime-core v3.5.8 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Ur(e,t,n,r){try{return r?e(...r):e()}catch(o){qr(o,t,n)}}function xt(e,t,n,r){if(de(e)){const o=Ur(e,t,n,r);return o&&Mc(o)&&o.catch(s=>{qr(s,t,n)}),o}if(fe(e)){const o=[];for(let s=0;s>>1,o=tt[r],s=Mr(o);s=Mr(n)?tt.push(e):tt.splice(Nh(t),0,e),e.flags|=1,lu()}}function lu(){!Vr&&!qs&&(qs=!0,ji=au.then(cu))}function Bh(e){fe(e)?er.push(...e):rn&&e.id===-1?rn.splice(Gn+1,0,e):e.flags&1||(er.push(e),e.flags|=1),lu()}function Aa(e,t,n=Vr?Et+1:0){for(;nMr(n)-Mr(r));if(er.length=0,rn){rn.push(...t);return}for(rn=t,Gn=0;Gne.id==null?e.flags&2?-1:1/0:e.id;function cu(e){qs=!1,Vr=!0;try{for(Et=0;Et{r._d&&za(-1);const s=No(t);let i;try{i=e(...o)}finally{No(s),r._d&&za(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function Fi(e,t){if(Ge===null)return e;const n=ts(Ge),r=e.dirs||(e.dirs=[]);for(let o=0;oe.__isTeleport,Pr=e=>e&&(e.disabled||e.disabled===""),Dh=e=>e&&(e.defer||e.defer===""),Oa=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Ia=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Ks=(e,t)=>{const n=e&&e.to;return Ie(n)?t?t(n):null:n},jh={name:"Teleport",__isTeleport:!0,process(e,t,n,r,o,s,i,a,l,c){const{mc:u,pc:f,pbc:d,o:{insert:h,querySelector:v,createText:m,createComment:w}}=c,S=Pr(t.props);let{shapeFlag:T,children:k,dynamicChildren:x}=t;if(e==null){const B=t.el=m(""),N=t.anchor=m("");h(B,n,r),h(N,n,r);const z=(F,E)=>{T&16&&(o&&o.isCE&&(o.ce._teleportTarget=F),u(k,F,E,o,s,i,a,l))},Q=()=>{const F=t.target=Ks(t.props,v),E=hu(F,t,m,h);F&&(i!=="svg"&&Oa(F)?i="svg":i!=="mathml"&&Ia(F)&&(i="mathml"),S||(z(F,E),Lo(t)))};S&&(z(n,N),Lo(t)),Dh(t.props)?st(Q,s):Q()}else{t.el=e.el,t.targetStart=e.targetStart;const B=t.anchor=e.anchor,N=t.target=e.target,z=t.targetAnchor=e.targetAnchor,Q=Pr(e.props),F=Q?n:N,E=Q?B:z;if(i==="svg"||Oa(N)?i="svg":(i==="mathml"||Ia(N))&&(i="mathml"),x?(d(e.dynamicChildren,x,F,o,s,i,a),Ki(e,t,!0)):l||f(e,t,F,E,o,s,i,a,!1),S)Q?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):lo(t,n,B,c,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const K=t.target=Ks(t.props,v);K&&lo(t,K,null,c,0)}else Q&&lo(t,N,z,c,1);Lo(t)}},remove(e,t,n,{um:r,o:{remove:o}},s){const{shapeFlag:i,children:a,anchor:l,targetStart:c,targetAnchor:u,target:f,props:d}=e;if(f&&(o(c),o(u)),s&&o(l),i&16){const h=s||!Pr(d);for(let v=0;v{e.isMounted=!0}),Gi(()=>{e.isUnmounting=!0}),e}const mt=[Function,Array],pu={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:mt,onEnter:mt,onAfterEnter:mt,onEnterCancelled:mt,onBeforeLeave:mt,onLeave:mt,onAfterLeave:mt,onLeaveCancelled:mt,onBeforeAppear:mt,onAppear:mt,onAfterAppear:mt,onAppearCancelled:mt},vu=e=>{const t=e.subTree;return t.component?vu(t.component):t},Wh={name:"BaseTransition",props:pu,setup(e,{slots:t}){const n=cr(),r=Fh();return()=>{const o=t.default&&_u(t.default(),!0);if(!o||!o.length)return;const s=gu(o),i=me(e),{mode:a}=i;if(r.isLeaving)return vs(s);const l=Va(s);if(!l)return vs(s);let c=Ys(l,i,r,n,d=>c=d);l.type!==Ye&&$r(l,c);const u=n.subTree,f=u&&Va(u);if(f&&f.type!==Ye&&!Tn(l,f)&&vu(n).type!==Ye){const d=Ys(f,i,r,n);if($r(f,d),a==="out-in"&&l.type!==Ye)return r.isLeaving=!0,d.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete d.afterLeave},vs(s);a==="in-out"&&l.type!==Ye&&(d.delayLeave=(h,v,m)=>{const w=mu(r,f);w[String(f.key)]=f,h[on]=()=>{v(),h[on]=void 0,delete c.delayedLeave},c.delayedLeave=m})}return s}}};function gu(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==Ye){t=n;break}}return t}const zh=Wh;function mu(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Ys(e,t,n,r,o){const{appear:s,mode:i,persisted:a=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:u,onEnterCancelled:f,onBeforeLeave:d,onLeave:h,onAfterLeave:v,onLeaveCancelled:m,onBeforeAppear:w,onAppear:S,onAfterAppear:T,onAppearCancelled:k}=t,x=String(e.key),B=mu(n,e),N=(F,E)=>{F&&xt(F,r,9,E)},z=(F,E)=>{const K=E[1];N(F,E),fe(F)?F.every(M=>M.length<=1)&&K():F.length<=1&&K()},Q={mode:i,persisted:a,beforeEnter(F){let E=l;if(!n.isMounted)if(s)E=w||l;else return;F[on]&&F[on](!0);const K=B[x];K&&Tn(e,K)&&K.el[on]&&K.el[on](),N(E,[F])},enter(F){let E=c,K=u,M=f;if(!n.isMounted)if(s)E=S||c,K=T||u,M=k||f;else return;let ae=!1;const be=F[co]=Oe=>{ae||(ae=!0,Oe?N(M,[F]):N(K,[F]),Q.delayedLeave&&Q.delayedLeave(),F[co]=void 0)};E?z(E,[F,be]):be()},leave(F,E){const K=String(e.key);if(F[co]&&F[co](!0),n.isUnmounting)return E();N(d,[F]);let M=!1;const ae=F[on]=be=>{M||(M=!0,E(),be?N(m,[F]):N(v,[F]),F[on]=void 0,B[K]===e&&delete B[K])};B[K]=e,h?z(h,[F,ae]):ae()},clone(F){const E=Ys(F,t,n,r,o);return o&&o(E),E}};return Q}function vs(e){if(Kr(e))return e=pn(e),e.children=null,e}function Va(e){if(!Kr(e))return du(e.type)&&e.children?gu(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&de(n.default))return n.default()}}function $r(e,t){e.shapeFlag&6&&e.component?(e.transition=t,$r(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function _u(e,t=!1,n){let r=[],o=0;for(let s=0;s1)for(let s=0;sBo(v,t&&(fe(t)?t[m]:t),n,r,o));return}if(On(r)&&!o)return;const s=r.shapeFlag&4?ts(r.component):r.el,i=o?null:s,{i:a,r:l}=e,c=t&&t.r,u=a.refs===Le?a.refs={}:a.refs,f=a.setupState,d=me(f),h=f===Le?()=>!1:v=>ke(d,v);if(c!=null&&c!==l&&(Ie(c)?(u[c]=null,h(c)&&(f[c]=null)):Me(c)&&(c.value=null)),de(l))Ur(l,a,12,[i,u]);else{const v=Ie(l),m=Me(l);if(v||m){const w=()=>{if(e.f){const S=v?h(l)?f[l]:u[l]:l.value;o?fe(S)&&Ti(S,s):fe(S)?S.includes(s)||S.push(s):v?(u[l]=[s],h(l)&&(f[l]=u[l])):(l.value=[s],e.k&&(u[e.k]=l.value))}else v?(u[l]=i,h(l)&&(f[l]=i)):m&&(l.value=i,e.k&&(u[e.k]=i))};i?(w.id=-1,st(w,n)):w()}}}let Ma=!1;const Wn=()=>{Ma||(console.error("Hydration completed but contains mismatches."),Ma=!0)},Gh=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",Uh=e=>e.namespaceURI.includes("MathML"),uo=e=>{if(e.nodeType===1){if(Gh(e))return"svg";if(Uh(e))return"mathml"}},Jn=e=>e.nodeType===8;function qh(e){const{mt:t,p:n,o:{patchProp:r,createText:o,nextSibling:s,parentNode:i,remove:a,insert:l,createComment:c}}=e,u=(k,x)=>{if(!x.hasChildNodes()){n(null,k,x),Ro(),x._vnode=k;return}f(x.firstChild,k,null,null,null),Ro(),x._vnode=k},f=(k,x,B,N,z,Q=!1)=>{Q=Q||!!x.dynamicChildren;const F=Jn(k)&&k.data==="[",E=()=>m(k,x,B,N,z,F),{type:K,ref:M,shapeFlag:ae,patchFlag:be}=x;let Oe=k.nodeType;x.el=k,be===-2&&(Q=!1,x.dynamicChildren=null);let le=null;switch(K){case Vn:Oe!==3?x.children===""?(l(x.el=o(""),i(k),k),le=k):le=E():(k.data!==x.children&&(Wn(),k.data=x.children),le=s(k));break;case Ye:T(k)?(le=s(k),S(x.el=k.content.firstChild,k,B)):Oe!==8||F?le=E():le=s(k);break;case xr:if(F&&(k=s(k),Oe=k.nodeType),Oe===1||Oe===3){le=k;const ve=!x.children.length;for(let oe=0;oe{Q=Q||!!x.dynamicChildren;const{type:F,props:E,patchFlag:K,shapeFlag:M,dirs:ae,transition:be}=x,Oe=F==="input"||F==="option";if(Oe||K!==-1){ae&&At(x,null,B,"created");let le=!1;if(T(k)){le=Ru(N,be)&&B&&B.vnode.props&&B.vnode.props.appear;const oe=k.content.firstChild;le&&be.beforeEnter(oe),S(oe,k,B),x.el=k=oe}if(M&16&&!(E&&(E.innerHTML||E.textContent))){let oe=h(k.firstChild,x,k,B,N,z,Q);for(;oe;){fo(k,1)||Wn();const Be=oe;oe=oe.nextSibling,a(Be)}}else if(M&8){let oe=x.children;oe[0]===` +`&&(k.tagName==="PRE"||k.tagName==="TEXTAREA")&&(oe=oe.slice(1)),k.textContent!==oe&&(fo(k,0)||Wn(),k.textContent=x.children)}if(E){if(Oe||!Q||K&48){const oe=k.tagName.includes("-");for(const Be in E)(Oe&&(Be.endsWith("value")||Be==="indeterminate")||Wr(Be)&&!Zn(Be)||Be[0]==="."||oe)&&r(k,Be,null,E[Be],void 0,B)}else if(E.onClick)r(k,"onClick",null,E.onClick,void 0,B);else if(K&4&&An(E.style))for(const oe in E.style)E.style[oe]}let ve;(ve=E&&E.onVnodeBeforeMount)&&_t(ve,B,x),ae&&At(x,null,B,"beforeMount"),((ve=E&&E.onVnodeMounted)||ae||le)&&Fu(()=>{ve&&_t(ve,B,x),le&&be.enter(k),ae&&At(x,null,B,"mounted")},N)}return k.nextSibling},h=(k,x,B,N,z,Q,F)=>{F=F||!!x.dynamicChildren;const E=x.children,K=E.length;for(let M=0;M{const{slotScopeIds:F}=x;F&&(z=z?z.concat(F):F);const E=i(k),K=h(s(k),x,E,B,N,z,Q);return K&&Jn(K)&&K.data==="]"?s(x.anchor=K):(Wn(),l(x.anchor=c("]"),E,K),K)},m=(k,x,B,N,z,Q)=>{if(fo(k.parentElement,1)||Wn(),x.el=null,Q){const K=w(k);for(;;){const M=s(k);if(M&&M!==K)a(M);else break}}const F=s(k),E=i(k);return a(k),n(null,x,E,F,B,N,uo(E),z),F},w=(k,x="[",B="]")=>{let N=0;for(;k;)if(k=s(k),k&&Jn(k)&&(k.data===x&&N++,k.data===B)){if(N===0)return s(k);N--}return k},S=(k,x,B)=>{const N=x.parentNode;N&&N.replaceChild(k,x);let z=B;for(;z;)z.vnode.el===x&&(z.vnode.el=z.subTree.el=k),z=z.parent},T=k=>k.nodeType===1&&k.tagName==="TEMPLATE";return[u,f]}const $a="data-allow-mismatch",Kh={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function fo(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute($a);)e=e.parentElement;const n=e&&e.getAttribute($a);if(n==null)return!1;if(n==="")return!0;{const r=n.split(",");return t===0&&r.includes("children")?!0:n.split(",").includes(Kh[t])}}function Yh(e,t){if(Jn(e)&&e.data==="["){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1){if(t(r)===!1)break}else if(Jn(r))if(r.data==="]"){if(--n===0)break}else r.data==="["&&n++;r=r.nextSibling}}else t(e)}const On=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function zi(e){de(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,hydrate:s,timeout:i,suspensible:a=!0,onError:l}=e;let c=null,u,f=0;const d=()=>(f++,c=null,h()),h=()=>{let v;return c||(v=c=t().catch(m=>{if(m=m instanceof Error?m:new Error(String(m)),l)return new Promise((w,S)=>{l(m,()=>w(d()),()=>S(m),f+1)});throw m}).then(m=>v!==c&&c?c:(m&&(m.__esModule||m[Symbol.toStringTag]==="Module")&&(m=m.default),u=m,m)))};return R({name:"AsyncComponentWrapper",__asyncLoader:h,__asyncHydrate(v,m,w){const S=s?()=>{const T=s(w,k=>Yh(v,k));T&&(m.bum||(m.bum=[])).push(T)}:w;u?S():h().then(()=>!m.isUnmounted&&S())},get __asyncResolved(){return u},setup(){const v=ze;if(Wi(v),u)return()=>gs(u,v);const m=k=>{c=null,qr(k,v,13,!r)};if(a&&v.suspense||Jr)return h().then(k=>()=>gs(k,v)).catch(k=>(m(k),()=>r?$(r,{error:k}):null));const w=q(!1),S=q(),T=q(!!o);return o&&setTimeout(()=>{T.value=!1},o),i!=null&&setTimeout(()=>{if(!w.value&&!S.value){const k=new Error(`Async component timed out after ${i}ms.`);m(k),S.value=k}},i),h().then(()=>{w.value=!0,v.parent&&Kr(v.parent.vnode)&&v.parent.update()}).catch(k=>{m(k),S.value=k}),()=>{if(w.value&&u)return gs(u,v);if(S.value&&r)return $(r,{error:S.value});if(n&&!T.value)return $(n)}}})}function gs(e,t){const{ref:n,props:r,children:o,ce:s}=t.vnode,i=$(e,r,o);return i.ref=n,i.ce=s,delete t.vnode.ce,i}const Kr=e=>e.type.__isKeepAlive;function Jh(e,t){bu(e,"a",t)}function Qh(e,t){bu(e,"da",t)}function bu(e,t,n=ze){const r=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(Xo(t,r,n),n){let o=n.parent;for(;o&&o.parent;)Kr(o.parent.vnode)&&Xh(r,t,n,o),o=o.parent}}function Xh(e,t,n,r){const o=Xo(t,e,r,!0);Jt(()=>{Ti(r[t],o)},n)}function Xo(e,t,n=ze,r=!1){if(n){const o=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...i)=>{mn();const a=Yr(n),l=xt(t,n,e,i);return a(),_n(),l});return r?o.unshift(s):o.push(s),s}}const Yt=e=>(t,n=ze)=>{(!Jr||e==="sp")&&Xo(e,(...r)=>t(...r),n)},Zh=Yt("bm"),Ee=Yt("m"),ep=Yt("bu"),yu=Yt("u"),Gi=Yt("bum"),Jt=Yt("um"),tp=Yt("sp"),np=Yt("rtg"),rp=Yt("rtc");function op(e,t=ze){Xo("ec",e,t)}const ku="components";function pt(e,t){return Pu(ku,e,!0,t)||e}const wu=Symbol.for("v-ndc");function In(e){return Ie(e)?Pu(ku,e,!1)||e:e||wu}function Pu(e,t,n=!0,r=!1){const o=Ge||ze;if(o){const s=o.type;{const a=Wp(s,!1);if(a&&(a===t||a===ht(t)||a===zr(ht(t))))return s}const i=Ra(o[e]||s[e],t)||Ra(o.appContext[e],t);return!i&&r?s:i}}function Ra(e,t){return e&&(e[t]||e[ht(t)]||e[zr(ht(t))])}function _e(e,t,n,r){let o;const s=n,i=fe(e);if(i||Ie(e)){const a=i&&An(e);let l=!1;a&&(l=!kt(e),e=Jo(e)),o=new Array(e.length);for(let c=0,u=e.length;ct(a,l,void 0,s));else{const a=Object.keys(e);o=new Array(a.length);for(let l=0,c=a.length;ljo(t)?!(t.type===Ye||t.type===re&&!Su(t.children)):!0)?e:null}function sp(e,t){const n={};for(const r in e)n[/[A-Z]/.test(r)?`on:${r}`:So(r)]=e[r];return n}const Js=e=>e?Gu(e)?ts(e):Js(e.parent):null,Sr=He(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Js(e.parent),$root:e=>Js(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Ui(e),$forceUpdate:e=>e.f||(e.f=()=>{Hi(e.update)}),$nextTick:e=>e.n||(e.n=at.bind(e.proxy)),$watch:e=>Cp.bind(e)}),ms=(e,t)=>e!==Le&&!e.__isScriptSetup&&ke(e,t),ip={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:o,props:s,accessCache:i,type:a,appContext:l}=e;let c;if(t[0]!=="$"){const h=i[t];if(h!==void 0)switch(h){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return s[t]}else{if(ms(r,t))return i[t]=1,r[t];if(o!==Le&&ke(o,t))return i[t]=2,o[t];if((c=e.propsOptions[0])&&ke(c,t))return i[t]=3,s[t];if(n!==Le&&ke(n,t))return i[t]=4,n[t];Qs&&(i[t]=0)}}const u=Sr[t];let f,d;if(u)return t==="$attrs"&&Qe(e.attrs,"get",""),u(e);if((f=a.__cssModules)&&(f=f[t]))return f;if(n!==Le&&ke(n,t))return i[t]=4,n[t];if(d=l.config.globalProperties,ke(d,t))return d[t]},set({_:e},t,n){const{data:r,setupState:o,ctx:s}=e;return ms(o,t)?(o[t]=n,!0):r!==Le&&ke(r,t)?(r[t]=n,!0):ke(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(s[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:s}},i){let a;return!!n[i]||e!==Le&&ke(e,i)||ms(t,i)||(a=s[0])&&ke(a,i)||ke(r,i)||ke(Sr,i)||ke(o.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:ke(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function ap(){return lp().slots}function lp(){const e=cr();return e.setupContext||(e.setupContext=qu(e))}function Na(e){return fe(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Qs=!0;function cp(e){const t=Ui(e),n=e.proxy,r=e.ctx;Qs=!1,t.beforeCreate&&Ba(t.beforeCreate,e,"bc");const{data:o,computed:s,methods:i,watch:a,provide:l,inject:c,created:u,beforeMount:f,mounted:d,beforeUpdate:h,updated:v,activated:m,deactivated:w,beforeDestroy:S,beforeUnmount:T,destroyed:k,unmounted:x,render:B,renderTracked:N,renderTriggered:z,errorCaptured:Q,serverPrefetch:F,expose:E,inheritAttrs:K,components:M,directives:ae,filters:be}=t;if(c&&up(c,r,null),i)for(const ve in i){const oe=i[ve];de(oe)&&(r[ve]=oe.bind(n))}if(o){const ve=o.call(n,n);Te(ve)&&(e.data=Gr(ve))}if(Qs=!0,s)for(const ve in s){const oe=s[ve],Be=de(oe)?oe.bind(n,n):de(oe.get)?oe.get.bind(n,n):It,Xt=!de(oe)&&de(oe.set)?oe.set.bind(n):It,Ct=P({get:Be,set:Xt});Object.defineProperty(r,ve,{enumerable:!0,configurable:!0,get:()=>Ct.value,set:ot=>Ct.value=ot})}if(a)for(const ve in a)xu(a[ve],r,n,ve);if(l){const ve=de(l)?l.call(n):l;Reflect.ownKeys(ve).forEach(oe=>{qt(oe,ve[oe])})}u&&Ba(u,e,"c");function le(ve,oe){fe(oe)?oe.forEach(Be=>ve(Be.bind(n))):oe&&ve(oe.bind(n))}if(le(Zh,f),le(Ee,d),le(ep,h),le(yu,v),le(Jh,m),le(Qh,w),le(op,Q),le(rp,N),le(np,z),le(Gi,T),le(Jt,x),le(tp,F),fe(E))if(E.length){const ve=e.exposed||(e.exposed={});E.forEach(oe=>{Object.defineProperty(ve,oe,{get:()=>n[oe],set:Be=>n[oe]=Be})})}else e.exposed||(e.exposed={});B&&e.render===It&&(e.render=B),K!=null&&(e.inheritAttrs=K),M&&(e.components=M),ae&&(e.directives=ae),F&&Wi(e)}function up(e,t,n=It){fe(e)&&(e=Xs(e));for(const r in e){const o=e[r];let s;Te(o)?"default"in o?s=$e(o.from||r,o.default,!0):s=$e(o.from||r):s=$e(o),Me(s)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>s.value,set:i=>s.value=i}):t[r]=s}}function Ba(e,t,n){xt(fe(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function xu(e,t,n,r){let o=r.includes(".")?Du(n,r):()=>n[r];if(Ie(e)){const s=t[e];de(s)&&pe(o,s)}else if(de(e))pe(o,e.bind(n));else if(Te(e))if(fe(e))e.forEach(s=>xu(s,t,n,r));else{const s=de(e.handler)?e.handler.bind(n):t[e.handler];de(s)&&pe(o,s,e)}}function Ui(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:s,config:{optionMergeStrategies:i}}=e.appContext,a=s.get(t);let l;return a?l=a:!o.length&&!n&&!r?l=t:(l={},o.length&&o.forEach(c=>Do(l,c,i,!0)),Do(l,t,i)),Te(t)&&s.set(t,l),l}function Do(e,t,n,r=!1){const{mixins:o,extends:s}=t;s&&Do(e,s,n,!0),o&&o.forEach(i=>Do(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const a=fp[i]||n&&n[i];e[i]=a?a(e[i],t[i]):t[i]}return e}const fp={data:Da,props:ja,emits:ja,methods:yr,computed:yr,beforeCreate:Ze,created:Ze,beforeMount:Ze,mounted:Ze,beforeUpdate:Ze,updated:Ze,beforeDestroy:Ze,beforeUnmount:Ze,destroyed:Ze,unmounted:Ze,activated:Ze,deactivated:Ze,errorCaptured:Ze,serverPrefetch:Ze,components:yr,directives:yr,watch:hp,provide:Da,inject:dp};function Da(e,t){return t?e?function(){return He(de(e)?e.call(this,this):e,de(t)?t.call(this,this):t)}:t:e}function dp(e,t){return yr(Xs(e),Xs(t))}function Xs(e){if(fe(e)){const t={};for(let n=0;n1)return n&&de(t)?t.call(r&&r.proxy):t}}const Cu={},Tu=()=>Object.create(Cu),Eu=e=>Object.getPrototypeOf(e)===Cu;function gp(e,t,n,r=!1){const o={},s=Tu();e.propsDefaults=Object.create(null),Au(e,t,o,s);for(const i in e.propsOptions[0])i in o||(o[i]=void 0);n?e.props=r?o:ru(o):e.type.props?e.props=o:e.props=s,e.attrs=s}function mp(e,t,n,r){const{props:o,attrs:s,vnode:{patchFlag:i}}=e,a=me(o),[l]=e.propsOptions;let c=!1;if((r||i>0)&&!(i&16)){if(i&8){const u=e.vnode.dynamicProps;for(let f=0;f{l=!0;const[d,h]=Ou(f,t,!0);He(i,d),h&&a.push(...h)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!s&&!l)return Te(e)&&r.set(e,Qn),Qn;if(fe(s))for(let u=0;ue[0]==="_"||e==="$stable",qi=e=>fe(e)?e.map(bt):[bt(e)],bp=(e,t,n)=>{if(t._n)return t;const r=C((...o)=>qi(t(...o)),n);return r._c=!1,r},Vu=(e,t,n)=>{const r=e._ctx;for(const o in e){if(Iu(o))continue;const s=e[o];if(de(s))t[o]=bp(o,s,r);else if(s!=null){const i=qi(s);t[o]=()=>i}}},Mu=(e,t)=>{const n=qi(t);e.slots.default=()=>n},$u=(e,t,n)=>{for(const r in t)(n||r!=="_")&&(e[r]=t[r])},yp=(e,t,n)=>{const r=e.slots=Tu();if(e.vnode.shapeFlag&32){const o=t._;o?($u(r,t,n),n&&Nc(r,"_",o,!0)):Vu(t,r)}else t&&Mu(e,t)},kp=(e,t,n)=>{const{vnode:r,slots:o}=e;let s=!0,i=Le;if(r.shapeFlag&32){const a=t._;a?n&&a===1?s=!1:$u(o,t,n):(s=!t.$stable,Vu(t,o)),i=t}else t&&(Mu(e,t),i={default:1});if(s)for(const a in o)!Iu(a)&&i[a]==null&&delete o[a]},st=Fu;function wp(e){return Pp(e,qh)}function Pp(e,t){const n=Bc();n.__VUE__=!0;const{insert:r,remove:o,patchProp:s,createElement:i,createText:a,createComment:l,setText:c,setElementText:u,parentNode:f,nextSibling:d,setScopeId:h=It,insertStaticContent:v}=e,m=(g,y,A,D=null,I=null,W=null,X=void 0,J=null,Y=!!y.dynamicChildren)=>{if(g===y)return;g&&!Tn(g,y)&&(D=V(g),ot(g,I,W,!0),g=null),y.patchFlag===-2&&(Y=!1,y.dynamicChildren=null);const{type:G,ref:ue,shapeFlag:ee}=y;switch(G){case Vn:w(g,y,A,D);break;case Ye:S(g,y,A,D);break;case xr:g==null&&T(y,A,D,X);break;case re:M(g,y,A,D,I,W,X,J,Y);break;default:ee&1?B(g,y,A,D,I,W,X,J,Y):ee&6?ae(g,y,A,D,I,W,X,J,Y):(ee&64||ee&128)&&G.process(g,y,A,D,I,W,X,J,Y,se)}ue!=null&&I&&Bo(ue,g&&g.ref,W,y||g,!y)},w=(g,y,A,D)=>{if(g==null)r(y.el=a(y.children),A,D);else{const I=y.el=g.el;y.children!==g.children&&c(I,y.children)}},S=(g,y,A,D)=>{g==null?r(y.el=l(y.children||""),A,D):y.el=g.el},T=(g,y,A,D)=>{[g.el,g.anchor]=v(g.children,y,A,D,g.el,g.anchor)},k=({el:g,anchor:y},A,D)=>{let I;for(;g&&g!==y;)I=d(g),r(g,A,D),g=I;r(y,A,D)},x=({el:g,anchor:y})=>{let A;for(;g&&g!==y;)A=d(g),o(g),g=A;o(y)},B=(g,y,A,D,I,W,X,J,Y)=>{y.type==="svg"?X="svg":y.type==="math"&&(X="mathml"),g==null?N(y,A,D,I,W,X,J,Y):F(g,y,I,W,X,J,Y)},N=(g,y,A,D,I,W,X,J)=>{let Y,G;const{props:ue,shapeFlag:ee,transition:ce,dirs:he}=g;if(Y=g.el=i(g.type,W,ue&&ue.is,ue),ee&8?u(Y,g.children):ee&16&&Q(g.children,Y,null,D,I,_s(g,W),X,J),he&&At(g,null,D,"created"),z(Y,g,g.scopeId,X,D),ue){for(const Ce in ue)Ce!=="value"&&!Zn(Ce)&&s(Y,Ce,null,ue[Ce],W,D);"value"in ue&&s(Y,"value",null,ue.value,W),(G=ue.onVnodeBeforeMount)&&_t(G,D,g)}he&&At(g,null,D,"beforeMount");const ge=Ru(I,ce);ge&&ce.beforeEnter(Y),r(Y,y,A),((G=ue&&ue.onVnodeMounted)||ge||he)&&st(()=>{G&&_t(G,D,g),ge&&ce.enter(Y),he&&At(g,null,D,"mounted")},I)},z=(g,y,A,D,I)=>{if(A&&h(g,A),D)for(let W=0;W{for(let G=Y;G{const J=y.el=g.el;let{patchFlag:Y,dynamicChildren:G,dirs:ue}=y;Y|=g.patchFlag&16;const ee=g.props||Le,ce=y.props||Le;let he;if(A&&Pn(A,!1),(he=ce.onVnodeBeforeUpdate)&&_t(he,A,y,g),ue&&At(y,g,A,"beforeUpdate"),A&&Pn(A,!0),(ee.innerHTML&&ce.innerHTML==null||ee.textContent&&ce.textContent==null)&&u(J,""),G?E(g.dynamicChildren,G,J,A,D,_s(y,I),W):X||oe(g,y,J,null,A,D,_s(y,I),W,!1),Y>0){if(Y&16)K(J,ee,ce,A,I);else if(Y&2&&ee.class!==ce.class&&s(J,"class",null,ce.class,I),Y&4&&s(J,"style",ee.style,ce.style,I),Y&8){const ge=y.dynamicProps;for(let Ce=0;Ce{he&&_t(he,A,y,g),ue&&At(y,g,A,"updated")},D)},E=(g,y,A,D,I,W,X)=>{for(let J=0;J{if(y!==A){if(y!==Le)for(const W in y)!Zn(W)&&!(W in A)&&s(g,W,y[W],null,I,D);for(const W in A){if(Zn(W))continue;const X=A[W],J=y[W];X!==J&&W!=="value"&&s(g,W,J,X,I,D)}"value"in A&&s(g,"value",y.value,A.value,I)}},M=(g,y,A,D,I,W,X,J,Y)=>{const G=y.el=g?g.el:a(""),ue=y.anchor=g?g.anchor:a("");let{patchFlag:ee,dynamicChildren:ce,slotScopeIds:he}=y;he&&(J=J?J.concat(he):he),g==null?(r(G,A,D),r(ue,A,D),Q(y.children||[],A,ue,I,W,X,J,Y)):ee>0&&ee&64&&ce&&g.dynamicChildren?(E(g.dynamicChildren,ce,A,I,W,X,J),(y.key!=null||I&&y===I.subTree)&&Ki(g,y,!0)):oe(g,y,A,ue,I,W,X,J,Y)},ae=(g,y,A,D,I,W,X,J,Y)=>{y.slotScopeIds=J,g==null?y.shapeFlag&512?I.ctx.activate(y,A,D,X,Y):be(y,A,D,I,W,X,Y):Oe(g,y,Y)},be=(g,y,A,D,I,W,X)=>{const J=g.component=Dp(g,D,I);if(Kr(g)&&(J.ctx.renderer=se),jp(J,!1,X),J.asyncDep){if(I&&I.registerDep(J,le,X),!g.el){const Y=J.subTree=$(Ye);S(null,Y,y,A)}}else le(J,g,y,A,I,W,X)},Oe=(g,y,A)=>{const D=y.component=g.component;if(Ip(g,y,A))if(D.asyncDep&&!D.asyncResolved){ve(D,y,A);return}else D.next=y,D.update();else y.el=g.el,D.vnode=y},le=(g,y,A,D,I,W,X)=>{const J=()=>{if(g.isMounted){let{next:ee,bu:ce,u:he,parent:ge,vnode:Ce}=g;{const ut=Nu(g);if(ut){ee&&(ee.el=Ce.el,ve(g,ee,X)),ut.asyncDep.then(()=>{g.isUnmounted||J()});return}}let we=ee,ct;Pn(g,!1),ee?(ee.el=Ce.el,ve(g,ee,X)):ee=Ce,ce&&xo(ce),(ct=ee.props&&ee.props.onVnodeBeforeUpdate)&&_t(ct,ge,ee,Ce),Pn(g,!0);const qe=bs(g),wt=g.subTree;g.subTree=qe,m(wt,qe,f(wt.el),V(wt),g,I,W),ee.el=qe.el,we===null&&Vp(g,qe.el),he&&st(he,I),(ct=ee.props&&ee.props.onVnodeUpdated)&&st(()=>_t(ct,ge,ee,Ce),I)}else{let ee;const{el:ce,props:he}=y,{bm:ge,m:Ce,parent:we,root:ct,type:qe}=g,wt=On(y);if(Pn(g,!1),ge&&xo(ge),!wt&&(ee=he&&he.onVnodeBeforeMount)&&_t(ee,we,y),Pn(g,!0),ce&&Ae){const ut=()=>{g.subTree=bs(g),Ae(ce,g.subTree,g,I,null)};wt&&qe.__asyncHydrate?qe.__asyncHydrate(ce,g,ut):ut()}else{ct.ce&&ct.ce._injectChildStyle(qe);const ut=g.subTree=bs(g);m(null,ut,A,D,g,I,W),y.el=ut.el}if(Ce&&st(Ce,I),!wt&&(ee=he&&he.onVnodeMounted)){const ut=y;st(()=>_t(ee,we,ut),I)}(y.shapeFlag&256||we&&On(we.vnode)&&we.vnode.shapeFlag&256)&&g.a&&st(g.a,I),g.isMounted=!0,y=A=D=null}};g.scope.on();const Y=g.effect=new Wc(J);g.scope.off();const G=g.update=Y.run.bind(Y),ue=g.job=Y.runIfDirty.bind(Y);ue.i=g,ue.id=g.uid,Y.scheduler=()=>Hi(ue),Pn(g,!0),G()},ve=(g,y,A)=>{y.component=g;const D=g.vnode.props;g.vnode=y,g.next=null,mp(g,y.props,D,A),kp(g,y.children,A),mn(),Aa(g),_n()},oe=(g,y,A,D,I,W,X,J,Y=!1)=>{const G=g&&g.children,ue=g?g.shapeFlag:0,ee=y.children,{patchFlag:ce,shapeFlag:he}=y;if(ce>0){if(ce&128){Xt(G,ee,A,D,I,W,X,J,Y);return}else if(ce&256){Be(G,ee,A,D,I,W,X,J,Y);return}}he&8?(ue&16&>(G,I,W),ee!==G&&u(A,ee)):ue&16?he&16?Xt(G,ee,A,D,I,W,X,J,Y):gt(G,I,W,!0):(ue&8&&u(A,""),he&16&&Q(ee,A,D,I,W,X,J,Y))},Be=(g,y,A,D,I,W,X,J,Y)=>{g=g||Qn,y=y||Qn;const G=g.length,ue=y.length,ee=Math.min(G,ue);let ce;for(ce=0;ceue?gt(g,I,W,!0,!1,ee):Q(y,A,D,I,W,X,J,Y,ee)},Xt=(g,y,A,D,I,W,X,J,Y)=>{let G=0;const ue=y.length;let ee=g.length-1,ce=ue-1;for(;G<=ee&&G<=ce;){const he=g[G],ge=y[G]=Y?sn(y[G]):bt(y[G]);if(Tn(he,ge))m(he,ge,A,null,I,W,X,J,Y);else break;G++}for(;G<=ee&&G<=ce;){const he=g[ee],ge=y[ce]=Y?sn(y[ce]):bt(y[ce]);if(Tn(he,ge))m(he,ge,A,null,I,W,X,J,Y);else break;ee--,ce--}if(G>ee){if(G<=ce){const he=ce+1,ge=hece)for(;G<=ee;)ot(g[G],I,W,!0),G++;else{const he=G,ge=G,Ce=new Map;for(G=ge;G<=ce;G++){const ft=y[G]=Y?sn(y[G]):bt(y[G]);ft.key!=null&&Ce.set(ft.key,G)}let we,ct=0;const qe=ce-ge+1;let wt=!1,ut=0;const hr=new Array(qe);for(G=0;G=qe){ot(ft,I,W,!0);continue}let Tt;if(ft.key!=null)Tt=Ce.get(ft.key);else for(we=ge;we<=ce;we++)if(hr[we-ge]===0&&Tn(ft,y[we])){Tt=we;break}Tt===void 0?ot(ft,I,W,!0):(hr[Tt-ge]=G+1,Tt>=ut?ut=Tt:wt=!0,m(ft,y[Tt],A,null,I,W,X,J,Y),ct++)}const ka=wt?Sp(hr):Qn;for(we=ka.length-1,G=qe-1;G>=0;G--){const ft=ge+G,Tt=y[ft],wa=ft+1{const{el:W,type:X,transition:J,children:Y,shapeFlag:G}=g;if(G&6){Ct(g.component.subTree,y,A,D);return}if(G&128){g.suspense.move(y,A,D);return}if(G&64){X.move(g,y,A,se);return}if(X===re){r(W,y,A);for(let ee=0;eeJ.enter(W),I);else{const{leave:ee,delayLeave:ce,afterLeave:he}=J,ge=()=>r(W,y,A),Ce=()=>{ee(W,()=>{ge(),he&&he()})};ce?ce(W,ge,Ce):Ce()}else r(W,y,A)},ot=(g,y,A,D=!1,I=!1)=>{const{type:W,props:X,ref:J,children:Y,dynamicChildren:G,shapeFlag:ue,patchFlag:ee,dirs:ce,cacheIndex:he}=g;if(ee===-2&&(I=!1),J!=null&&Bo(J,null,A,g,!0),he!=null&&(y.renderCache[he]=void 0),ue&256){y.ctx.deactivate(g);return}const ge=ue&1&&ce,Ce=!On(g);let we;if(Ce&&(we=X&&X.onVnodeBeforeUnmount)&&_t(we,y,g),ue&6)to(g.component,A,D);else{if(ue&128){g.suspense.unmount(A,D);return}ge&&At(g,null,y,"beforeUnmount"),ue&64?g.type.remove(g,y,A,se,D):G&&!G.hasOnce&&(W!==re||ee>0&&ee&64)?gt(G,y,A,!1,!0):(W===re&&ee&384||!I&&ue&16)&>(Y,y,A),D&&jn(g)}(Ce&&(we=X&&X.onVnodeUnmounted)||ge)&&st(()=>{we&&_t(we,y,g),ge&&At(g,null,y,"unmounted")},A)},jn=g=>{const{type:y,el:A,anchor:D,transition:I}=g;if(y===re){Hn(A,D);return}if(y===xr){x(g);return}const W=()=>{o(A),I&&!I.persisted&&I.afterLeave&&I.afterLeave()};if(g.shapeFlag&1&&I&&!I.persisted){const{leave:X,delayLeave:J}=I,Y=()=>X(A,W);J?J(g.el,W,Y):Y()}else W()},Hn=(g,y)=>{let A;for(;g!==y;)A=d(g),o(g),g=A;o(y)},to=(g,y,A)=>{const{bum:D,scope:I,job:W,subTree:X,um:J,m:Y,a:G}=g;Fa(Y),Fa(G),D&&xo(D),I.stop(),W&&(W.flags|=8,ot(X,g,y,A)),J&&st(J,y),st(()=>{g.isUnmounted=!0},y),y&&y.pendingBranch&&!y.isUnmounted&&g.asyncDep&&!g.asyncResolved&&g.suspenseId===y.pendingId&&(y.deps--,y.deps===0&&y.resolve())},gt=(g,y,A,D=!1,I=!1,W=0)=>{for(let X=W;X{if(g.shapeFlag&6)return V(g.component.subTree);if(g.shapeFlag&128)return g.suspense.next();const y=d(g.anchor||g.el),A=y&&y[fu];return A?d(A):y};let te=!1;const Z=(g,y,A)=>{g==null?y._vnode&&ot(y._vnode,null,null,!0):m(y._vnode||null,g,y,null,null,null,A),y._vnode=g,te||(te=!0,Aa(),Ro(),te=!1)},se={p:m,um:ot,m:Ct,r:jn,mt:be,mc:Q,pc:oe,pbc:E,n:V,o:e};let ye,Ae;return t&&([ye,Ae]=t(se)),{render:Z,hydrate:ye,createApp:vp(Z,ye)}}function _s({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Pn({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Ru(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Ki(e,t,n=!1){const r=e.children,o=t.children;if(fe(r)&&fe(o))for(let s=0;s>1,e[n[a]]0&&(t[r]=n[s-1]),n[s]=r)}}for(s=n.length,i=n[s-1];s-- >0;)n[s]=i,i=t[i];return n}function Nu(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Nu(t)}function Fa(e){if(e)for(let t=0;t$e(xp);function lr(e,t){return Zo(e,null,t)}function Bu(e,t){return Zo(e,null,{flush:"post"})}function pe(e,t,n){return Zo(e,t,n)}function Zo(e,t,n=Le){const{immediate:r,deep:o,flush:s,once:i}=n,a=He({},n);let l;if(Jr)if(s==="sync"){const d=Lp();l=d.__watcherHandles||(d.__watcherHandles=[])}else if(!t||r)a.once=!0;else{const d=()=>{};return d.stop=It,d.resume=It,d.pause=It,d}const c=ze;a.call=(d,h,v)=>xt(d,c,h,v);let u=!1;s==="post"?a.scheduler=d=>{st(d,c&&c.suspense)}:s!=="sync"&&(u=!0,a.scheduler=(d,h)=>{h?d():Hi(d)}),a.augmentJob=d=>{t&&(d.flags|=4),u&&(d.flags|=2,c&&(d.id=c.uid,d.i=c))};const f=$h(e,t,a);return l&&l.push(f),f}function Cp(e,t,n){const r=this.proxy,o=Ie(e)?e.includes(".")?Du(r,e):()=>r[e]:e.bind(r,r);let s;de(t)?s=t:(s=t.handler,n=t);const i=Yr(this),a=Zo(o,s.bind(r),n);return i(),a}function Du(e,t){const n=t.split(".");return()=>{let r=e;for(let o=0;ot==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${ht(t)}Modifiers`]||e[`${gn(t)}Modifiers`];function Ep(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||Le;let o=n;const s=t.startsWith("update:"),i=s&&Tp(r,t.slice(7));i&&(i.trim&&(o=n.map(u=>Ie(u)?u.trim():u)),i.number&&(o=n.map(zs)));let a,l=r[a=So(t)]||r[a=So(ht(t))];!l&&s&&(l=r[a=So(gn(t))]),l&&xt(l,e,6,o);const c=r[a+"Once"];if(c){if(!e.emitted)e.emitted={};else if(e.emitted[a])return;e.emitted[a]=!0,xt(c,e,6,o)}}function ju(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(o!==void 0)return o;const s=e.emits;let i={},a=!1;if(!de(e)){const l=c=>{const u=ju(c,t,!0);u&&(a=!0,He(i,u))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!s&&!a?(Te(e)&&r.set(e,null),null):(fe(s)?s.forEach(l=>i[l]=null):He(i,s),Te(e)&&r.set(e,i),i)}function es(e,t){return!e||!Wr(t)?!1:(t=t.slice(2).replace(/Once$/,""),ke(e,t[0].toLowerCase()+t.slice(1))||ke(e,gn(t))||ke(e,t))}function bs(e){const{type:t,vnode:n,proxy:r,withProxy:o,propsOptions:[s],slots:i,attrs:a,emit:l,render:c,renderCache:u,props:f,data:d,setupState:h,ctx:v,inheritAttrs:m}=e,w=No(e);let S,T;try{if(n.shapeFlag&4){const x=o||r,B=x;S=bt(c.call(B,x,u,f,h,d,v)),T=a}else{const x=t;S=bt(x.length>1?x(f,{attrs:a,slots:i,emit:l}):x(f,null)),T=t.props?a:Ap(a)}}catch(x){Lr.length=0,qr(x,e,1),S=$(Ye)}let k=S;if(T&&m!==!1){const x=Object.keys(T),{shapeFlag:B}=k;x.length&&B&7&&(s&&x.some(Ci)&&(T=Op(T,s)),k=pn(k,T,!1,!0))}return n.dirs&&(k=pn(k,null,!1,!0),k.dirs=k.dirs?k.dirs.concat(n.dirs):n.dirs),n.transition&&$r(k,n.transition),S=k,No(w),S}const Ap=e=>{let t;for(const n in e)(n==="class"||n==="style"||Wr(n))&&((t||(t={}))[n]=e[n]);return t},Op=(e,t)=>{const n={};for(const r in e)(!Ci(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Ip(e,t,n){const{props:r,children:o,component:s}=e,{props:i,children:a,patchFlag:l}=t,c=s.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return r?Wa(r,i,c):!!i;if(l&8){const u=t.dynamicProps;for(let f=0;fe.__isSuspense;function Fu(e,t){t&&t.pendingBranch?fe(e)?t.effects.push(...e):t.effects.push(e):Bh(e)}const re=Symbol.for("v-fgt"),Vn=Symbol.for("v-txt"),Ye=Symbol.for("v-cmt"),xr=Symbol.for("v-stc"),Lr=[];let dt=null;function p(e=!1){Lr.push(dt=e?null:[])}function Mp(){Lr.pop(),dt=Lr[Lr.length-1]||null}let Rr=1;function za(e){Rr+=e,e<0&&dt&&(dt.hasOnce=!0)}function Wu(e){return e.dynamicChildren=Rr>0?dt||Qn:null,Mp(),Rr>0&&dt&&dt.push(e),e}function b(e,t,n,r,o,s){return Wu(_(e,t,n,r,o,s,!0))}function j(e,t,n,r,o){return Wu($(e,t,n,r,o,!0))}function jo(e){return e?e.__v_isVNode===!0:!1}function Tn(e,t){return e.type===t.type&&e.key===t.key}const zu=({key:e})=>e??null,Co=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Ie(e)||Me(e)||de(e)?{i:Ge,r:e,k:t,f:!!n}:e:null);function _(e,t=null,n=null,r=0,o=null,s=e===re?0:1,i=!1,a=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&zu(t),ref:t&&Co(t),scopeId:uu,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:s,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Ge};return a?(Yi(l,n),s&128&&e.normalize(l)):n&&(l.shapeFlag|=Ie(n)?8:16),Rr>0&&!i&&dt&&(l.patchFlag>0||s&6)&&l.patchFlag!==32&&dt.push(l),l}const $=$p;function $p(e,t=null,n=null,r=0,o=null,s=!1){if((!e||e===wu)&&(e=Ye),jo(e)){const a=pn(e,t,!0);return n&&Yi(a,n),Rr>0&&!s&&dt&&(a.shapeFlag&6?dt[dt.indexOf(e)]=a:dt.push(a)),a.patchFlag=-2,a}if(zp(e)&&(e=e.__vccOpts),t){t=Rp(t);let{class:a,style:l}=t;a&&!Ie(a)&&(t.class=ne(a)),Te(l)&&(Ni(l)&&!fe(l)&&(l=He({},l)),t.style=Ne(l))}const i=Ie(e)?1:Hu(e)?128:du(e)?64:Te(e)?4:de(e)?2:0;return _(e,t,n,r,o,i,s,!0)}function Rp(e){return e?Ni(e)||Eu(e)?He({},e):e:null}function pn(e,t,n=!1,r=!1){const{props:o,ref:s,patchFlag:i,children:a,transition:l}=e,c=t?cn(o||{},t):o,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:c,key:c&&zu(c),ref:t&&t.ref?n&&s?fe(s)?s.concat(Co(t)):[s,Co(t)]:Co(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:a,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==re?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&pn(e.ssContent),ssFallback:e.ssFallback&&pn(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&r&&$r(u,l.clone(u)),u}function Re(e=" ",t=0){return $(Vn,null,e,t)}function oS(e,t){const n=$(xr,null,e);return n.staticCount=t,n}function O(e="",t=!1){return t?(p(),j(Ye,null,e)):$(Ye,null,e)}function bt(e){return e==null||typeof e=="boolean"?$(Ye):fe(e)?$(re,null,e.slice()):typeof e=="object"?sn(e):$(Vn,null,String(e))}function sn(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:pn(e)}function Yi(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(fe(t))n=16;else if(typeof t=="object")if(r&65){const o=t.default;o&&(o._c&&(o._d=!1),Yi(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!Eu(t)?t._ctx=Ge:o===3&&Ge&&(Ge.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else de(t)?(t={default:t,_ctx:Ge},n=32):(t=String(t),r&64?(n=16,t=[Re(t)]):n=8);e.children=t,e.shapeFlag|=n}function cn(...e){const t={};for(let n=0;nze||Ge;let Ho,ei;{const e=Bc(),t=(n,r)=>{let o;return(o=e[n])||(o=e[n]=[]),o.push(r),s=>{o.length>1?o.forEach(i=>i(s)):o[0](s)}};Ho=t("__VUE_INSTANCE_SETTERS__",n=>ze=n),ei=t("__VUE_SSR_SETTERS__",n=>Jr=n)}const Yr=e=>{const t=ze;return Ho(e),e.scope.on(),()=>{e.scope.off(),Ho(t)}},Ga=()=>{ze&&ze.scope.off(),Ho(null)};function Gu(e){return e.vnode.shapeFlag&4}let Jr=!1;function jp(e,t=!1,n=!1){t&&ei(t);const{props:r,children:o}=e.vnode,s=Gu(e);gp(e,r,s,t),yp(e,o,n);const i=s?Hp(e,t):void 0;return t&&ei(!1),i}function Hp(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,ip);const{setup:r}=n;if(r){const o=e.setupContext=r.length>1?qu(e):null,s=Yr(e);mn();const i=Ur(r,e,0,[e.props,o]);if(_n(),s(),Mc(i)){if(On(e)||Wi(e),i.then(Ga,Ga),t)return i.then(a=>{Ua(e,a,t)}).catch(a=>{qr(a,e,0)});e.asyncDep=i}else Ua(e,i,t)}else Uu(e,t)}function Ua(e,t,n){de(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Te(t)&&(e.setupState=su(t)),Uu(e,n)}let qa;function Uu(e,t,n){const r=e.type;if(!e.render){if(!t&&qa&&!r.render){const o=r.template||Ui(e).template;if(o){const{isCustomElement:s,compilerOptions:i}=e.appContext.config,{delimiters:a,compilerOptions:l}=r,c=He(He({isCustomElement:s,delimiters:a},i),l);r.render=qa(o,c)}}e.render=r.render||It}{const o=Yr(e);mn();try{cp(e)}finally{_n(),o()}}}const Fp={get(e,t){return Qe(e,"get",""),e[t]}};function qu(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Fp),slots:e.slots,emit:e.emit,expose:t}}function ts(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(su(xh(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Sr)return Sr[n](e)},has(t,n){return n in t||n in Sr}})):e.proxy}function Wp(e,t=!0){return de(e)?e.displayName||e.name:e.name||t&&e.__name}function zp(e){return de(e)&&"__vccOpts"in e}const P=(e,t)=>Vh(e,t,Jr);function Se(e,t,n){const r=arguments.length;return r===2?Te(t)&&!fe(t)?jo(t)?$(e,null,[t]):$(e,t):$(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&jo(n)&&(n=[n]),$(e,t,n))}const Gp="3.5.8";/** +* @vue/runtime-dom v3.5.8 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let ti;const Ka=typeof window<"u"&&window.trustedTypes;if(Ka)try{ti=Ka.createPolicy("vue",{createHTML:e=>e})}catch{}const Ku=ti?e=>ti.createHTML(e):e=>e,Up="http://www.w3.org/2000/svg",qp="http://www.w3.org/1998/Math/MathML",Ht=typeof document<"u"?document:null,Ya=Ht&&Ht.createElement("template"),Kp={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t==="svg"?Ht.createElementNS(Up,e):t==="mathml"?Ht.createElementNS(qp,e):n?Ht.createElement(e,{is:n}):Ht.createElement(e);return e==="select"&&r&&r.multiple!=null&&o.setAttribute("multiple",r.multiple),o},createText:e=>Ht.createTextNode(e),createComment:e=>Ht.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ht.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,s){const i=n?n.previousSibling:t.lastChild;if(o&&(o===s||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===s||!(o=o.nextSibling)););else{Ya.innerHTML=Ku(r==="svg"?`${e}`:r==="mathml"?`${e}`:e);const a=Ya.content;if(r==="svg"||r==="mathml"){const l=a.firstChild;for(;l.firstChild;)a.appendChild(l.firstChild);a.removeChild(l)}t.insertBefore(a,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},en="transition",vr="animation",Nr=Symbol("_vtc"),Yu={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Yp=He({},pu,Yu),Jp=e=>(e.displayName="Transition",e.props=Yp,e),bn=Jp((e,{slots:t})=>Se(zh,Qp(e),t)),Sn=(e,t=[])=>{fe(e)?e.forEach(n=>n(...t)):e&&e(...t)},Ja=e=>e?fe(e)?e.some(t=>t.length>1):e.length>1:!1;function Qp(e){const t={};for(const M in e)M in Yu||(t[M]=e[M]);if(e.css===!1)return t;const{name:n="v",type:r,duration:o,enterFromClass:s=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:a=`${n}-enter-to`,appearFromClass:l=s,appearActiveClass:c=i,appearToClass:u=a,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:h=`${n}-leave-to`}=e,v=Xp(o),m=v&&v[0],w=v&&v[1],{onBeforeEnter:S,onEnter:T,onEnterCancelled:k,onLeave:x,onLeaveCancelled:B,onBeforeAppear:N=S,onAppear:z=T,onAppearCancelled:Q=k}=t,F=(M,ae,be)=>{xn(M,ae?u:a),xn(M,ae?c:i),be&&be()},E=(M,ae)=>{M._isLeaving=!1,xn(M,f),xn(M,h),xn(M,d),ae&&ae()},K=M=>(ae,be)=>{const Oe=M?z:T,le=()=>F(ae,M,be);Sn(Oe,[ae,le]),Qa(()=>{xn(ae,M?l:s),tn(ae,M?u:a),Ja(Oe)||Xa(ae,r,m,le)})};return He(t,{onBeforeEnter(M){Sn(S,[M]),tn(M,s),tn(M,i)},onBeforeAppear(M){Sn(N,[M]),tn(M,l),tn(M,c)},onEnter:K(!1),onAppear:K(!0),onLeave(M,ae){M._isLeaving=!0;const be=()=>E(M,ae);tn(M,f),tn(M,d),tv(),Qa(()=>{M._isLeaving&&(xn(M,f),tn(M,h),Ja(x)||Xa(M,r,w,be))}),Sn(x,[M,be])},onEnterCancelled(M){F(M,!1),Sn(k,[M])},onAppearCancelled(M){F(M,!0),Sn(Q,[M])},onLeaveCancelled(M){E(M),Sn(B,[M])}})}function Xp(e){if(e==null)return null;if(Te(e))return[ys(e.enter),ys(e.leave)];{const t=ys(e);return[t,t]}}function ys(e){return Yd(e)}function tn(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Nr]||(e[Nr]=new Set)).add(t)}function xn(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[Nr];n&&(n.delete(t),n.size||(e[Nr]=void 0))}function Qa(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Zp=0;function Xa(e,t,n,r){const o=e._endId=++Zp,s=()=>{o===e._endId&&r()};if(n!=null)return setTimeout(s,n);const{type:i,timeout:a,propCount:l}=ev(e,t);if(!i)return r();const c=i+"end";let u=0;const f=()=>{e.removeEventListener(c,d),s()},d=h=>{h.target===e&&++u>=l&&f()};setTimeout(()=>{u(n[v]||"").split(", "),o=r(`${en}Delay`),s=r(`${en}Duration`),i=Za(o,s),a=r(`${vr}Delay`),l=r(`${vr}Duration`),c=Za(a,l);let u=null,f=0,d=0;t===en?i>0&&(u=en,f=i,d=s.length):t===vr?c>0&&(u=vr,f=c,d=l.length):(f=Math.max(i,c),u=f>0?i>c?en:vr:null,d=u?u===en?s.length:l.length:0);const h=u===en&&/\b(transform|all)(,|$)/.test(r(`${en}Property`).toString());return{type:u,timeout:f,propCount:d,hasTransform:h}}function Za(e,t){for(;e.lengthel(n)+el(e[r])))}function el(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function tv(){return document.body.offsetHeight}function nv(e,t,n){const r=e[Nr];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Fo=Symbol("_vod"),Ju=Symbol("_vsh"),Qu={beforeMount(e,{value:t},{transition:n}){e[Fo]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):gr(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),gr(e,!0),r.enter(e)):r.leave(e,()=>{gr(e,!1)}):gr(e,t))},beforeUnmount(e,{value:t}){gr(e,t)}};function gr(e,t){e.style.display=t?e[Fo]:"none",e[Ju]=!t}const rv=Symbol(""),ov=/(^|;)\s*display\s*:/;function sv(e,t,n){const r=e.style,o=Ie(n);let s=!1;if(n&&!o){if(t)if(Ie(t))for(const i of t.split(";")){const a=i.slice(0,i.indexOf(":")).trim();n[a]==null&&To(r,a,"")}else for(const i in t)n[i]==null&&To(r,i,"");for(const i in n)i==="display"&&(s=!0),To(r,i,n[i])}else if(o){if(t!==n){const i=r[rv];i&&(n+=";"+i),r.cssText=n,s=ov.test(n)}}else t&&e.removeAttribute("style");Fo in e&&(e[Fo]=s?r.display:"",e[Ju]&&(r.display="none"))}const tl=/\s*!important$/;function To(e,t,n){if(fe(n))n.forEach(r=>To(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=iv(e,t);tl.test(n)?e.setProperty(gn(r),n.replace(tl,""),"important"):e[r]=n}}const nl=["Webkit","Moz","ms"],ks={};function iv(e,t){const n=ks[t];if(n)return n;let r=ht(t);if(r!=="filter"&&r in e)return ks[t]=r;r=zr(r);for(let o=0;ows||(fv.then(()=>ws=0),ws=Date.now());function hv(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;xt(pv(r,n.value),t,5,[r])};return n.value=e,n.attached=dv(),n}function pv(e,t){if(fe(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>o=>!o._stopped&&r&&r(o))}else return t}const al=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,vv=(e,t,n,r,o,s)=>{const i=o==="svg";t==="class"?nv(e,r,i):t==="style"?sv(e,n,r):Wr(t)?Ci(t)||cv(e,t,n,r,s):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):gv(e,t,r,i))?(av(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&ol(e,t,r,i,s,t!=="value")):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),ol(e,t,r,i))};function gv(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&al(t)&&de(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return al(t)&&Ie(n)?!1:!!(t in e||e._isVueCE&&(/[A-Z]/.test(t)||!Ie(n)))}const ll=e=>{const t=e.props["onUpdate:modelValue"]||!1;return fe(t)?n=>xo(t,n):t};function mv(e){e.target.composing=!0}function cl(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Ps=Symbol("_assign"),_v={created(e,{modifiers:{lazy:t,trim:n,number:r}},o){e[Ps]=ll(o);const s=r||o.props&&o.props.type==="number";Un(e,t?"change":"input",i=>{if(i.target.composing)return;let a=e.value;n&&(a=a.trim()),s&&(a=zs(a)),e[Ps](a)}),n&&Un(e,"change",()=>{e.value=e.value.trim()}),t||(Un(e,"compositionstart",mv),Un(e,"compositionend",cl),Un(e,"change",cl))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:o,number:s}},i){if(e[Ps]=ll(i),e.composing)return;const a=(s||e.type==="number")&&!/^0\d/.test(e.value)?zs(e.value):e.value,l=t??"";a!==l&&(document.activeElement===e&&e.type!=="range"&&(r&&t===n||o&&e.value.trim()===l)||(e.value=l))}},bv=["ctrl","shift","alt","meta"],yv={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>bv.some(n=>e[`${n}Key`]&&!t.includes(n))},Xu=(e,t)=>{const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=(o,...s)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=o=>{if(!("key"in o))return;const s=gn(o.key);if(t.some(i=>i===s||kv[i]===s))return e(o)})},wv=He({patchProp:vv},Kp);let Ss,ul=!1;function Pv(){return Ss=ul?Ss:wp(wv),ul=!0,Ss}const Sv=(...e)=>{const t=Pv().createApp(...e),{mount:n}=t;return t.mount=r=>{const o=Lv(r);if(o)return n(o,!0,xv(o))},t};function xv(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Lv(e){return Ie(e)?document.querySelector(e):e}var ef=e=>/^[a-z][a-z0-9+.-]*:/.test(e)||e.startsWith("//"),Cv=/.md((\?|#).*)?$/,Tv=(e,t="/")=>ef(e)||e.startsWith("/")&&!e.startsWith(t)&&!Cv.test(e),Vt=e=>/^(https?:)?\/\//.test(e),fl=e=>{if(!e||e.endsWith("/"))return e;let t=e.replace(/(^|\/)README.md$/i,"$1index.html");return t.endsWith(".md")?t=t.substring(0,t.length-3)+".html":t.endsWith(".html")||(t=t+".html"),t.endsWith("/index.html")&&(t=t.substring(0,t.length-10)),t},Ev="http://.",Av=(e,t)=>{if(!e.startsWith("/")&&t){const n=t.slice(0,t.lastIndexOf("/"));return fl(new URL(`${n}/${e}`,Ev).pathname)}return fl(e)},Ov=(e,t)=>{const n=Object.keys(e).sort((r,o)=>{const s=o.split("/").length-r.split("/").length;return s!==0?s:o.length-r.length});for(const r of n)if(t.startsWith(r))return r;return"/"},Iv=/(#|\?)/,tf=e=>{const[t,...n]=e.split(Iv);return{pathname:t,hashAndQueries:n.join("")}},Vv=["link","meta","script","style","noscript","template"],Mv=["title","base"],$v=([e,t,n])=>Mv.includes(e)?e:Vv.includes(e)?e==="meta"&&t.name?`${e}.${t.name}`:e==="template"&&t.id?`${e}.${t.id}`:JSON.stringify([e,Object.entries(t).map(([r,o])=>typeof o=="boolean"?o?[r,""]:null:[r,o]).filter(r=>r!=null).sort(([r],[o])=>r.localeCompare(o)),n]):null,Rv=e=>{const t=new Set,n=[];return e.forEach(r=>{const o=$v(r);o&&!t.has(o)&&(t.add(o),n.push(r))}),n},nf=e=>e[0]==="/"?e:`/${e}`,Nv=e=>e[e.length-1]==="/"||e.endsWith(".html")?e:`${e}/`,rf=e=>e[e.length-1]==="/"?e.slice(0,-1):e,Ji=e=>e[0]==="/"?e.slice(1):e,Bv=e=>typeof e=="function",$n=e=>Object.prototype.toString.call(e)==="[object Object]",St=e=>typeof e=="string";const Dv="modulepreload",jv=function(e){return"/fastapi_best_architecture_docs/"+e},dl={},We=function(t,n,r){let o=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const i=document.querySelector("meta[property=csp-nonce]"),a=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute("nonce"));o=Promise.allSettled(n.map(l=>{if(l=jv(l),l in dl)return;dl[l]=!0;const c=l.endsWith(".css"),u=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${u}`))return;const f=document.createElement("link");if(f.rel=c?"stylesheet":Dv,c||(f.as="script"),f.crossOrigin="",f.href=l,a&&f.setAttribute("nonce",a),document.head.appendChild(f),c)return new Promise((d,h)=>{f.addEventListener("load",d),f.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${l}`)))})}))}function s(i){const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i}return o.then(i=>{for(const a of i||[])a.status==="rejected"&&s(a.reason);return t().catch(s)})},Hv=JSON.parse("{}"),Fv=Object.fromEntries([["/",{loader:()=>We(()=>import("./index.html-v7VFQ1Lm.js"),[]),meta:{title:""}}],["/friends.html",{loader:()=>We(()=>import("./friends.html-CEhuWUjK.js"),[]),meta:{title:"友情链接"}}],["/guide/",{loader:()=>We(()=>import("./index.html-CuxAfAH8.js"),[]),meta:{title:"FastAPI Best Architecture"}}],["/guide/deploy/Docker.html",{loader:()=>We(()=>import("./Docker.html-CoYzz7N2.js"),[]),meta:{title:"Docker 部署"}}],["/guide/deploy/legacy.html",{loader:()=>We(()=>import("./legacy.html-D3iaIAvq.js"),[]),meta:{title:"传统部署"}}],["/guide/reference/code-generation.html",{loader:()=>We(()=>import("./code-generation.html-B9Z-gSQZ.js"),[]),meta:{title:"代码生成"}}],["/guide/reference/cors.html",{loader:()=>We(()=>import("./cors.html-C_C6117q.js"),[]),meta:{title:"跨域"}}],["/guide/reference/login.html",{loader:()=>We(()=>import("./login.html-D7zvq3Z9.js"),[]),meta:{title:"登录"}}],["/guide/reference/oauth2.html",{loader:()=>We(()=>import("./oauth2.html-Cr1VrgFc.js"),[]),meta:{title:"OAuth 2.0"}}],["/guide/reference/permission.html",{loader:()=>We(()=>import("./permission.html-BPGI40vO.js"),[]),meta:{title:"权限"}}],["/guide/reference/transaction.html",{loader:()=>We(()=>import("./transaction.html-CDIB-Ys1.js"),[]),meta:{title:"事务"}}],["/guide/summary/fsm.html",{loader:()=>We(()=>import("./fsm.html-aRCUu-uF.js"),[]),meta:{title:"精简版本"}}],["/guide/summary/quick-start.html",{loader:()=>We(()=>import("./quick-start.html-CDJ4FvQx.js"),[]),meta:{title:"快速开始"}}],["/guide/summary/why.html",{loader:()=>We(()=>import("./why.html-B9fyLO2y.js"),[]),meta:{title:"为什么选择我们?"}}],["/404.html",{loader:()=>We(()=>import("./404.html-DqLEnaFk.js"),[]),meta:{title:""}}]]);/*! + * vue-router v4.4.5 + * (c) 2024 Eduardo San Martin Morote + * @license MIT + */const qn=typeof document<"u";function of(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Wv(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&of(e.default)}const Pe=Object.assign;function xs(e,t){const n={};for(const r in t){const o=t[r];n[r]=Lt(o)?o.map(e):e(o)}return n}const Cr=()=>{},Lt=Array.isArray,sf=/#/g,zv=/&/g,Gv=/\//g,Uv=/=/g,qv=/\?/g,af=/\+/g,Kv=/%5B/g,Yv=/%5D/g,lf=/%5E/g,Jv=/%60/g,cf=/%7B/g,Qv=/%7C/g,uf=/%7D/g,Xv=/%20/g;function Qi(e){return encodeURI(""+e).replace(Qv,"|").replace(Kv,"[").replace(Yv,"]")}function Zv(e){return Qi(e).replace(cf,"{").replace(uf,"}").replace(lf,"^")}function ni(e){return Qi(e).replace(af,"%2B").replace(Xv,"+").replace(sf,"%23").replace(zv,"%26").replace(Jv,"`").replace(cf,"{").replace(uf,"}").replace(lf,"^")}function eg(e){return ni(e).replace(Uv,"%3D")}function tg(e){return Qi(e).replace(sf,"%23").replace(qv,"%3F")}function ng(e){return e==null?"":tg(e).replace(Gv,"%2F")}function Br(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const rg=/\/$/,og=e=>e.replace(rg,"");function Ls(e,t,n="/"){let r,o={},s="",i="";const a=t.indexOf("#");let l=t.indexOf("?");return a=0&&(l=-1),l>-1&&(r=t.slice(0,l),s=t.slice(l+1,a>-1?a:t.length),o=e(s)),a>-1&&(r=r||t.slice(0,a),i=t.slice(a,t.length)),r=lg(r??t,n),{fullPath:r+(s&&"?")+s+i,path:r,query:o,hash:Br(i)}}function sg(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function hl(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function ig(e,t,n){const r=t.matched.length-1,o=n.matched.length-1;return r>-1&&r===o&&rr(t.matched[r],n.matched[o])&&ff(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function rr(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function ff(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!ag(e[n],t[n]))return!1;return!0}function ag(e,t){return Lt(e)?pl(e,t):Lt(t)?pl(t,e):e===t}function pl(e,t){return Lt(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function lg(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/"),o=r[r.length-1];(o===".."||o===".")&&r.push("");let s=n.length-1,i,a;for(i=0;i1&&s--;else break;return n.slice(0,s).join("/")+"/"+r.slice(i).join("/")}const jt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var Dr;(function(e){e.pop="pop",e.push="push"})(Dr||(Dr={}));var Tr;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Tr||(Tr={}));function cg(e){if(!e)if(qn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),og(e)}const ug=/^[^#]+#/;function fg(e,t){return e.replace(ug,"#")+t}function dg(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const ns=()=>({left:window.scrollX,top:window.scrollY});function hg(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),o=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=dg(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function vl(e,t){return(history.state?history.state.position-t:-1)+e}const ri=new Map;function pg(e,t){ri.set(e,t)}function vg(e){const t=ri.get(e);return ri.delete(e),t}let gg=()=>location.protocol+"//"+location.host;function df(e,t){const{pathname:n,search:r,hash:o}=t,s=e.indexOf("#");if(s>-1){let a=o.includes(e.slice(s))?e.slice(s).length:1,l=o.slice(a);return l[0]!=="/"&&(l="/"+l),hl(l,"")}return hl(n,e)+r+o}function mg(e,t,n,r){let o=[],s=[],i=null;const a=({state:d})=>{const h=df(e,location),v=n.value,m=t.value;let w=0;if(d){if(n.value=h,t.value=d,i&&i===v){i=null;return}w=m?d.position-m.position:0}else r(h);o.forEach(S=>{S(n.value,v,{delta:w,type:Dr.pop,direction:w?w>0?Tr.forward:Tr.back:Tr.unknown})})};function l(){i=n.value}function c(d){o.push(d);const h=()=>{const v=o.indexOf(d);v>-1&&o.splice(v,1)};return s.push(h),h}function u(){const{history:d}=window;d.state&&d.replaceState(Pe({},d.state,{scroll:ns()}),"")}function f(){for(const d of s)d();s=[],window.removeEventListener("popstate",a),window.removeEventListener("beforeunload",u)}return window.addEventListener("popstate",a),window.addEventListener("beforeunload",u,{passive:!0}),{pauseListeners:l,listen:c,destroy:f}}function gl(e,t,n,r=!1,o=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:o?ns():null}}function _g(e){const{history:t,location:n}=window,r={value:df(e,n)},o={value:t.state};o.value||s(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function s(l,c,u){const f=e.indexOf("#"),d=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+l:gg()+e+l;try{t[u?"replaceState":"pushState"](c,"",d),o.value=c}catch(h){console.error(h),n[u?"replace":"assign"](d)}}function i(l,c){const u=Pe({},t.state,gl(o.value.back,l,o.value.forward,!0),c,{position:o.value.position});s(l,u,!0),r.value=l}function a(l,c){const u=Pe({},o.value,t.state,{forward:l,scroll:ns()});s(u.current,u,!0);const f=Pe({},gl(r.value,l,null),{position:u.position+1},c);s(l,f,!1),r.value=l}return{location:r,state:o,push:a,replace:i}}function bg(e){e=cg(e);const t=_g(e),n=mg(e,t.state,t.location,t.replace);function r(s,i=!0){i||n.pauseListeners(),history.go(s)}const o=Pe({location:"",base:e,go:r,createHref:fg.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}function yg(e){return typeof e=="string"||e&&typeof e=="object"}function hf(e){return typeof e=="string"||typeof e=="symbol"}const pf=Symbol("");var ml;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(ml||(ml={}));function or(e,t){return Pe(new Error,{type:e,[pf]:!0},t)}function Bt(e,t){return e instanceof Error&&pf in e&&(t==null||!!(e.type&t))}const _l="[^/]+?",kg={sensitive:!1,strict:!1,start:!0,end:!0},wg=/[.+*?^${}()[\]/\\]/g;function Pg(e,t){const n=Pe({},kg,t),r=[];let o=n.start?"^":"";const s=[];for(const c of e){const u=c.length?[]:[90];n.strict&&!c.length&&(o+="/");for(let f=0;ft.length?t.length===1&&t[0]===80?1:-1:0}function vf(e,t){let n=0;const r=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const xg={type:0,value:""},Lg=/[a-zA-Z0-9_]/;function Cg(e){if(!e)return[[]];if(e==="/")return[[xg]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(h){throw new Error(`ERR (${n})/"${c}": ${h}`)}let n=0,r=n;const o=[];let s;function i(){s&&o.push(s),s=[]}let a=0,l,c="",u="";function f(){c&&(n===0?s.push({type:0,value:c}):n===1||n===2||n===3?(s.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${c}) must be alone in its segment. eg: '/:ids+.`),s.push({type:1,value:c,regexp:u,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),c="")}function d(){c+=l}for(;a{i(k)}:Cr}function i(f){if(hf(f)){const d=r.get(f);d&&(r.delete(f),n.splice(n.indexOf(d),1),d.children.forEach(i),d.alias.forEach(i))}else{const d=n.indexOf(f);d>-1&&(n.splice(d,1),f.record.name&&r.delete(f.record.name),f.children.forEach(i),f.alias.forEach(i))}}function a(){return n}function l(f){const d=Ig(f,n);n.splice(d,0,f),f.record.name&&!wl(f)&&r.set(f.record.name,f)}function c(f,d){let h,v={},m,w;if("name"in f&&f.name){if(h=r.get(f.name),!h)throw or(1,{location:f});w=h.record.name,v=Pe(yl(d.params,h.keys.filter(k=>!k.optional).concat(h.parent?h.parent.keys.filter(k=>k.optional):[]).map(k=>k.name)),f.params&&yl(f.params,h.keys.map(k=>k.name))),m=h.stringify(v)}else if(f.path!=null)m=f.path,h=n.find(k=>k.re.test(m)),h&&(v=h.parse(m),w=h.record.name);else{if(h=d.name?r.get(d.name):n.find(k=>k.re.test(d.path)),!h)throw or(1,{location:f,currentLocation:d});w=h.record.name,v=Pe({},d.params,f.params),m=h.stringify(v)}const S=[];let T=h;for(;T;)S.unshift(T.record),T=T.parent;return{name:w,path:m,params:v,matched:S,meta:Og(S)}}e.forEach(f=>s(f));function u(){n.length=0,r.clear()}return{addRoute:s,resolve:c,removeRoute:i,clearRoutes:u,getRoutes:a,getRecordMatcher:o}}function yl(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function kl(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Ag(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Ag(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="object"?n[r]:n;return t}function wl(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Og(e){return e.reduce((t,n)=>Pe(t,n.meta),{})}function Pl(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function Ig(e,t){let n=0,r=t.length;for(;n!==r;){const s=n+r>>1;vf(e,t[s])<0?r=s:n=s+1}const o=Vg(e);return o&&(r=t.lastIndexOf(o,r-1)),r}function Vg(e){let t=e;for(;t=t.parent;)if(gf(t)&&vf(e,t)===0)return t}function gf({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Mg(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;os&&ni(s)):[r&&ni(r)]).forEach(s=>{s!==void 0&&(t+=(t.length?"&":"")+n,s!=null&&(t+="="+s))})}return t}function $g(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=Lt(r)?r.map(o=>o==null?null:""+o):r==null?r:""+r)}return t}const Rg=Symbol(""),xl=Symbol(""),rs=Symbol(""),Xi=Symbol(""),oi=Symbol("");function mr(){let e=[];function t(r){return e.push(r),()=>{const o=e.indexOf(r);o>-1&&e.splice(o,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function an(e,t,n,r,o,s=i=>i()){const i=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise((a,l)=>{const c=d=>{d===!1?l(or(4,{from:n,to:t})):d instanceof Error?l(d):yg(d)?l(or(2,{from:t,to:d})):(i&&r.enterCallbacks[o]===i&&typeof d=="function"&&i.push(d),a())},u=s(()=>e.call(r&&r.instances[o],t,n,c));let f=Promise.resolve(u);e.length<3&&(f=f.then(c)),f.catch(d=>l(d))})}function Cs(e,t,n,r,o=s=>s()){const s=[];for(const i of e)for(const a in i.components){let l=i.components[a];if(!(t!=="beforeRouteEnter"&&!i.instances[a]))if(of(l)){const u=(l.__vccOpts||l)[t];u&&s.push(an(u,n,r,i,a,o))}else{let c=l();s.push(()=>c.then(u=>{if(!u)throw new Error(`Couldn't resolve component "${a}" at "${i.path}"`);const f=Wv(u)?u.default:u;i.mods[a]=u,i.components[a]=f;const h=(f.__vccOpts||f)[t];return h&&an(h,n,r,i,a,o)()}))}}return s}function Ll(e){const t=$e(rs),n=$e(Xi),r=P(()=>{const l=Ut(e.to);return t.resolve(l)}),o=P(()=>{const{matched:l}=r.value,{length:c}=l,u=l[c-1],f=n.matched;if(!u||!f.length)return-1;const d=f.findIndex(rr.bind(null,u));if(d>-1)return d;const h=Cl(l[c-2]);return c>1&&Cl(u)===h&&f[f.length-1].path!==h?f.findIndex(rr.bind(null,l[c-2])):d}),s=P(()=>o.value>-1&&jg(n.params,r.value.params)),i=P(()=>o.value>-1&&o.value===n.matched.length-1&&ff(n.params,r.value.params));function a(l={}){return Dg(l)?t[Ut(e.replace)?"replace":"push"](Ut(e.to)).catch(Cr):Promise.resolve()}return{route:r,href:P(()=>r.value.href),isActive:s,isExactActive:i,navigate:a}}const Ng=R({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Ll,setup(e,{slots:t}){const n=Gr(Ll(e)),{options:r}=$e(rs),o=P(()=>({[Tl(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Tl(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const s=t.default&&t.default(n);return e.custom?s:Se("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},s)}}}),Bg=Ng;function Dg(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function jg(e,t){for(const n in t){const r=t[n],o=e[n];if(typeof r=="string"){if(r!==o)return!1}else if(!Lt(o)||o.length!==r.length||r.some((s,i)=>s!==o[i]))return!1}return!0}function Cl(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Tl=(e,t,n)=>e??t??n,Hg=R({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=$e(oi),o=P(()=>e.route||r.value),s=$e(xl,0),i=P(()=>{let c=Ut(s);const{matched:u}=o.value;let f;for(;(f=u[c])&&!f.components;)c++;return c}),a=P(()=>o.value.matched[i.value]);qt(xl,P(()=>i.value+1)),qt(Rg,a),qt(oi,o);const l=q();return pe(()=>[l.value,a.value,e.name],([c,u,f],[d,h,v])=>{u&&(u.instances[f]=c,h&&h!==u&&c&&c===d&&(u.leaveGuards.size||(u.leaveGuards=h.leaveGuards),u.updateGuards.size||(u.updateGuards=h.updateGuards))),c&&u&&(!h||!rr(u,h)||!d)&&(u.enterCallbacks[f]||[]).forEach(m=>m(c))},{flush:"post"}),()=>{const c=o.value,u=e.name,f=a.value,d=f&&f.components[u];if(!d)return El(n.default,{Component:d,route:c});const h=f.props[u],v=h?h===!0?c.params:typeof h=="function"?h(c):h:null,w=Se(d,Pe({},v,t,{onVnodeUnmounted:S=>{S.component.isUnmounted&&(f.instances[u]=null)},ref:l}));return El(n.default,{Component:w,route:c})||w}}});function El(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Fg=Hg;function Wg(e){const t=Eg(e.routes,e),n=e.parseQuery||Mg,r=e.stringifyQuery||Sl,o=e.history,s=mr(),i=mr(),a=mr(),l=Xe(jt);let c=jt;qn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=xs.bind(null,V=>""+V),f=xs.bind(null,ng),d=xs.bind(null,Br);function h(V,te){let Z,se;return hf(V)?(Z=t.getRecordMatcher(V),se=te):se=V,t.addRoute(se,Z)}function v(V){const te=t.getRecordMatcher(V);te&&t.removeRoute(te)}function m(){return t.getRoutes().map(V=>V.record)}function w(V){return!!t.getRecordMatcher(V)}function S(V,te){if(te=Pe({},te||l.value),typeof V=="string"){const y=Ls(n,V,te.path),A=t.resolve({path:y.path},te),D=o.createHref(y.fullPath);return Pe(y,A,{params:d(A.params),hash:Br(y.hash),redirectedFrom:void 0,href:D})}let Z;if(V.path!=null)Z=Pe({},V,{path:Ls(n,V.path,te.path).path});else{const y=Pe({},V.params);for(const A in y)y[A]==null&&delete y[A];Z=Pe({},V,{params:f(y)}),te.params=f(te.params)}const se=t.resolve(Z,te),ye=V.hash||"";se.params=u(d(se.params));const Ae=sg(r,Pe({},V,{hash:Zv(ye),path:se.path})),g=o.createHref(Ae);return Pe({fullPath:Ae,hash:ye,query:r===Sl?$g(V.query):V.query||{}},se,{redirectedFrom:void 0,href:g})}function T(V){return typeof V=="string"?Ls(n,V,l.value.path):Pe({},V)}function k(V,te){if(c!==V)return or(8,{from:te,to:V})}function x(V){return z(V)}function B(V){return x(Pe(T(V),{replace:!0}))}function N(V){const te=V.matched[V.matched.length-1];if(te&&te.redirect){const{redirect:Z}=te;let se=typeof Z=="function"?Z(V):Z;return typeof se=="string"&&(se=se.includes("?")||se.includes("#")?se=T(se):{path:se},se.params={}),Pe({query:V.query,hash:V.hash,params:se.path!=null?{}:V.params},se)}}function z(V,te){const Z=c=S(V),se=l.value,ye=V.state,Ae=V.force,g=V.replace===!0,y=N(Z);if(y)return z(Pe(T(y),{state:typeof y=="object"?Pe({},ye,y.state):ye,force:Ae,replace:g}),te||Z);const A=Z;A.redirectedFrom=te;let D;return!Ae&&ig(r,se,Z)&&(D=or(16,{to:A,from:se}),Ct(se,se,!0,!1)),(D?Promise.resolve(D):E(A,se)).catch(I=>Bt(I)?Bt(I,2)?I:Xt(I):oe(I,A,se)).then(I=>{if(I){if(Bt(I,2))return z(Pe({replace:g},T(I.to),{state:typeof I.to=="object"?Pe({},ye,I.to.state):ye,force:Ae}),te||A)}else I=M(A,se,!0,g,ye);return K(A,se,I),I})}function Q(V,te){const Z=k(V,te);return Z?Promise.reject(Z):Promise.resolve()}function F(V){const te=Hn.values().next().value;return te&&typeof te.runWithContext=="function"?te.runWithContext(V):V()}function E(V,te){let Z;const[se,ye,Ae]=zg(V,te);Z=Cs(se.reverse(),"beforeRouteLeave",V,te);for(const y of se)y.leaveGuards.forEach(A=>{Z.push(an(A,V,te))});const g=Q.bind(null,V,te);return Z.push(g),gt(Z).then(()=>{Z=[];for(const y of s.list())Z.push(an(y,V,te));return Z.push(g),gt(Z)}).then(()=>{Z=Cs(ye,"beforeRouteUpdate",V,te);for(const y of ye)y.updateGuards.forEach(A=>{Z.push(an(A,V,te))});return Z.push(g),gt(Z)}).then(()=>{Z=[];for(const y of Ae)if(y.beforeEnter)if(Lt(y.beforeEnter))for(const A of y.beforeEnter)Z.push(an(A,V,te));else Z.push(an(y.beforeEnter,V,te));return Z.push(g),gt(Z)}).then(()=>(V.matched.forEach(y=>y.enterCallbacks={}),Z=Cs(Ae,"beforeRouteEnter",V,te,F),Z.push(g),gt(Z))).then(()=>{Z=[];for(const y of i.list())Z.push(an(y,V,te));return Z.push(g),gt(Z)}).catch(y=>Bt(y,8)?y:Promise.reject(y))}function K(V,te,Z){a.list().forEach(se=>F(()=>se(V,te,Z)))}function M(V,te,Z,se,ye){const Ae=k(V,te);if(Ae)return Ae;const g=te===jt,y=qn?history.state:{};Z&&(se||g?o.replace(V.fullPath,Pe({scroll:g&&y&&y.scroll},ye)):o.push(V.fullPath,ye)),l.value=V,Ct(V,te,Z,g),Xt()}let ae;function be(){ae||(ae=o.listen((V,te,Z)=>{if(!to.listening)return;const se=S(V),ye=N(se);if(ye){z(Pe(ye,{replace:!0}),se).catch(Cr);return}c=se;const Ae=l.value;qn&&pg(vl(Ae.fullPath,Z.delta),ns()),E(se,Ae).catch(g=>Bt(g,12)?g:Bt(g,2)?(z(g.to,se).then(y=>{Bt(y,20)&&!Z.delta&&Z.type===Dr.pop&&o.go(-1,!1)}).catch(Cr),Promise.reject()):(Z.delta&&o.go(-Z.delta,!1),oe(g,se,Ae))).then(g=>{g=g||M(se,Ae,!1),g&&(Z.delta&&!Bt(g,8)?o.go(-Z.delta,!1):Z.type===Dr.pop&&Bt(g,20)&&o.go(-1,!1)),K(se,Ae,g)}).catch(Cr)}))}let Oe=mr(),le=mr(),ve;function oe(V,te,Z){Xt(V);const se=le.list();return se.length?se.forEach(ye=>ye(V,te,Z)):console.error(V),Promise.reject(V)}function Be(){return ve&&l.value!==jt?Promise.resolve():new Promise((V,te)=>{Oe.add([V,te])})}function Xt(V){return ve||(ve=!V,be(),Oe.list().forEach(([te,Z])=>V?Z(V):te()),Oe.reset()),V}function Ct(V,te,Z,se){const{scrollBehavior:ye}=e;if(!qn||!ye)return Promise.resolve();const Ae=!Z&&vg(vl(V.fullPath,0))||(se||!Z)&&history.state&&history.state.scroll||null;return at().then(()=>ye(V,te,Ae)).then(g=>g&&hg(g)).catch(g=>oe(g,V,te))}const ot=V=>o.go(V);let jn;const Hn=new Set,to={currentRoute:l,listening:!0,addRoute:h,removeRoute:v,clearRoutes:t.clearRoutes,hasRoute:w,getRoutes:m,resolve:S,options:e,push:x,replace:B,go:ot,back:()=>ot(-1),forward:()=>ot(1),beforeEach:s.add,beforeResolve:i.add,afterEach:a.add,onError:le.add,isReady:Be,install(V){const te=this;V.component("RouterLink",Bg),V.component("RouterView",Fg),V.config.globalProperties.$router=te,Object.defineProperty(V.config.globalProperties,"$route",{enumerable:!0,get:()=>Ut(l)}),qn&&!jn&&l.value===jt&&(jn=!0,x(o.location).catch(ye=>{}));const Z={};for(const ye in jt)Object.defineProperty(Z,ye,{get:()=>l.value[ye],enumerable:!0});V.provide(rs,te),V.provide(Xi,ru(Z)),V.provide(oi,l);const se=V.unmount;Hn.add(V),V.unmount=function(){Hn.delete(V),Hn.size<1&&(c=jt,ae&&ae(),ae=null,l.value=jt,jn=!1,ve=!1),se()}}};function gt(V){return V.reduce((te,Z)=>te.then(()=>F(Z)),Promise.resolve())}return to}function zg(e,t){const n=[],r=[],o=[],s=Math.max(t.matched.length,e.matched.length);for(let i=0;irr(c,a))?r.push(a):n.push(a));const l=e.matched[i];l&&(t.matched.find(c=>rr(c,l))||o.push(l))}return[n,r,o]}function ur(){return $e(rs)}function lt(e){return $e(Xi)}var Zi=Symbol(""),Qt=()=>{const e=$e(Zi);if(!e)throw new Error("useClientData() is called without provider.");return e},mf=()=>Qt().pageComponent,ea=()=>Qt().pageData,Qr=()=>Qt().pageFrontmatter,Gg=()=>Qt().pageHead,fr=()=>Qt().pageLang,Ug=()=>Qt().pageLayout,yn=()=>Qt().routeLocale,_f=()=>Qt().routePath,bf=()=>Qt().siteLocaleData,qg=Symbol(""),si=Xe(Hv),nr=Xe(Fv),yf=(e,t)=>{const n=Av(e,t);if(nr.value[n])return n;const r=encodeURI(n);if(nr.value[r])return r;const o=si.value[n]||si.value[r];return o||n},sr=(e,t)=>{const{pathname:n,hashAndQueries:r}=tf(e),o=yf(n,t),s=o+r;return nr.value[o]?{...nr.value[o],path:s,notFound:!1}:{...nr.value["/404.html"],path:s,notFound:!0}},kn=(e,t)=>{const{pathname:n,hashAndQueries:r}=tf(e);return yf(n,t)+r},Kg=e=>{if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget){const t=e.currentTarget.getAttribute("target");if(t!=null&&t.match(/\b_blank\b/i))return}return e.preventDefault(),!0}},Yg=R({name:"RouteLink",props:{to:{type:String,required:!0},active:Boolean,activeClass:{type:String,default:"route-link-active"}},slots:Object,setup(e,{slots:t}){const n=ur(),r=lt(),o=P(()=>e.to.startsWith("#")||e.to.startsWith("?")?e.to:`/fastapi_best_architecture_docs/${kn(e.to,r.path).substring(1)}`);return()=>{var s;return Se("a",{class:["route-link",{[e.activeClass]:e.active}],href:o.value,onClick:(i={})=>{Kg(i)&&n.push(e.to).catch()}},(s=t.default)==null?void 0:s.call(t))}}}),Jg=R({name:"ClientOnly",setup(e,t){const n=q(!1);return Ee(()=>{n.value=!0}),()=>{var r,o;return n.value?(o=(r=t.slots).default)==null?void 0:o.call(r):null}}}),kf=R({name:"Content",props:{path:{type:String,required:!1,default:""}},setup(e){const t=mf(),n=P(()=>{if(!e.path)return t.value;const r=sr(e.path);return zi(()=>r.loader().then(({comp:o})=>o))});return()=>Se(n.value)}}),Qg="Layout",Xg="en-US",Ln=Gr({resolveLayouts:e=>e.reduce((t,n)=>({...t,...n.layouts}),{}),resolvePageHead:(e,t,n)=>{const r=St(t.description)?t.description:n.description,o=[...Array.isArray(t.head)?t.head:[],...n.head,["title",{},e],["meta",{name:"description",content:r}]];return Rv(o)},resolvePageHeadTitle:(e,t)=>[e.title,t.title].filter(n=>!!n).join(" | "),resolvePageLang:(e,t)=>e.lang||t.lang||Xg,resolvePageLayout:(e,t)=>{const n=St(e.frontmatter.layout)?e.frontmatter.layout:Qg;if(!t[n])throw new Error(`[vuepress] Cannot resolve layout: ${n}`);return t[n]},resolveRouteLocale:(e,t)=>Ov(e,decodeURI(t)),resolveSiteLocaleData:({base:e,locales:t,...n},r)=>{var o;return{...n,...t[r],head:[...((o=t[r])==null?void 0:o.head)??[],...n.head??[]]}}}),$t=(e={})=>e,nt=e=>Vt(e)?e:`/fastapi_best_architecture_docs/${Ji(e)}`,Zg={};const em=Object.freeze(Object.defineProperty({__proto__:null,default:Zg},Symbol.toStringTag,{value:"Module"}));var Eo=[];function tm(e){Eo.push(e),Jt(()=>{Eo=Eo.filter(t=>t!==e)})}function Ts(e){Eo.forEach(t=>t(e))}var nm=R({name:"Content",props:{path:{type:String,required:!1,default:""}},setup(e){const t=mf(),n=P(()=>{if(!e.path)return t.value;const r=sr(e.path);return zi(()=>r.loader().then(({comp:o})=>o))});return()=>Se(n.value,{onVnodeMounted:()=>Ts({mounted:!0}),onVnodeUpdated:()=>Ts({updated:!0}),onVnodeBeforeUnmount:()=>Ts({beforeUnmount:!0})})}}),rm=$t({enhance({app:e}){e._context.components.Content&&delete e._context.components.Content,e.component("Content",nm)}});const om=Object.freeze(Object.defineProperty({__proto__:null,default:rm},Symbol.toStringTag,{value:"Module"}));function wn(e){return Ai()?(Fc(e),!0):!1}function De(e){return typeof e=="function"?e():Ut(e)}const Xr=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const sm=e=>e!=null,im=Object.prototype.toString,am=e=>im.call(e)==="[object Object]",un=()=>{},lm=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),ii=cm();function cm(){var e,t;return Xr&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function wf(e,t){function n(...r){return new Promise((o,s)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(o).catch(s)})}return n}const Pf=e=>e();function Sf(e,t={}){let n,r,o=un;const s=a=>{clearTimeout(a),o(),o=un};return a=>{const l=De(e),c=De(t.maxWait);return n&&s(n),l<=0||c!==void 0&&c<=0?(r&&(s(r),r=null),Promise.resolve(a())):new Promise((u,f)=>{o=t.rejectOnCancel?f:u,c&&!r&&(r=setTimeout(()=>{n&&s(n),r=null,u(a())},c)),n=setTimeout(()=>{r&&s(r),r=null,u(a())},l)})}}function um(e=Pf){const t=q(!0);function n(){t.value=!1}function r(){t.value=!0}const o=(...s)=>{t.value&&e(...s)};return{isActive:Nn(t),pause:n,resume:r,eventFilter:o}}function fm(e){let t;function n(){return t||(t=e()),t}return n.reset=async()=>{const r=t;t=void 0,r&&await r},n}function dm(e){return cr()}function xf(...e){if(e.length!==1)return hn(...e);const t=e[0];return typeof t=="function"?Nn(Di(()=>({get:t,set:un}))):q(t)}function hm(e,t=200,n={}){return wf(Sf(t,n),e)}function Lf(e,t,n={}){const{eventFilter:r=Pf,...o}=n;return pe(e,wf(r,t),o)}function pm(e,t,n={}){const{eventFilter:r,...o}=n,{eventFilter:s,pause:i,resume:a,isActive:l}=um(r);return{stop:Lf(e,t,{...o,eventFilter:s}),pause:i,resume:a,isActive:l}}function os(e,t=!0,n){dm()?Ee(e,n):t?e():at(e)}function vm(e,t,n={}){const{immediate:r=!0}=n,o=q(!1);let s=null;function i(){s&&(clearTimeout(s),s=null)}function a(){o.value=!1,i()}function l(...c){i(),o.value=!0,s=setTimeout(()=>{o.value=!1,s=null,e(...c)},De(t))}return r&&(o.value=!0,Xr&&l()),wn(a),{isPending:Nn(o),start:l,stop:a}}function sS(e,t,n={}){const{debounce:r=0,maxWait:o=void 0,...s}=n;return Lf(e,t,{...s,eventFilter:Sf(r,{maxWait:o})})}function iS(e,t,n){let r;Me(n)?r={evaluating:n}:r={};const{lazy:o=!1,evaluating:s=void 0,shallow:i=!0,onError:a=un}=r,l=q(!o),c=i?Xe(t):q(t);let u=0;return lr(async f=>{if(!l.value)return;u++;const d=u;let h=!1;s&&Promise.resolve().then(()=>{s.value=!0});try{const v=await e(m=>{f(()=>{s&&(s.value=!1),h||m()})});d===u&&(c.value=v)}catch(v){a(v)}finally{s&&d===u&&(s.value=!1),h=!0}}),o?P(()=>(l.value=!0,c.value)):c}const rt=Xr?window:void 0,gm=Xr?window.document:void 0,Cf=Xr?window.navigator:void 0;function Je(e){var t;const n=De(e);return(t=n==null?void 0:n.$el)!=null?t:n}function je(...e){let t,n,r,o;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,o]=e,t=rt):[t,n,r,o]=e,!t)return un;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const s=[],i=()=>{s.forEach(u=>u()),s.length=0},a=(u,f,d,h)=>(u.addEventListener(f,d,h),()=>u.removeEventListener(f,d,h)),l=pe(()=>[Je(t),De(o)],([u,f])=>{if(i(),!u)return;const d=am(f)?{...f}:f;s.push(...n.flatMap(h=>r.map(v=>a(u,h,v,d))))},{immediate:!0,flush:"post"}),c=()=>{l(),i()};return wn(c),c}let Al=!1;function Tf(e,t,n={}){const{window:r=rt,ignore:o=[],capture:s=!0,detectIframe:i=!1}=n;if(!r)return un;ii&&!Al&&(Al=!0,Array.from(r.document.body.children).forEach(h=>h.addEventListener("click",un)),r.document.documentElement.addEventListener("click",un));let a=!0;const l=h=>De(o).some(v=>{if(typeof v=="string")return Array.from(r.document.querySelectorAll(v)).some(m=>m===h.target||h.composedPath().includes(m));{const m=Je(v);return m&&(h.target===m||h.composedPath().includes(m))}}),c=h=>{const v=Je(e);if(!(!v||v===h.target||h.composedPath().includes(v))){if(h.detail===0&&(a=!l(h)),!a){a=!0;return}t(h)}};let u=!1;const f=[je(r,"click",h=>{u||(u=!0,setTimeout(()=>{u=!1},0),c(h))},{passive:!0,capture:s}),je(r,"pointerdown",h=>{const v=Je(e);a=!l(h)&&!!(v&&!h.composedPath().includes(v))},{passive:!0}),i&&je(r,"blur",h=>{setTimeout(()=>{var v;const m=Je(e);((v=r.document.activeElement)==null?void 0:v.tagName)==="IFRAME"&&!(m!=null&&m.contains(r.document.activeElement))&&t(h)},0)})].filter(Boolean);return()=>f.forEach(h=>h())}function mm(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Ol(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:o=rt,eventName:s="keydown",passive:i=!1,dedupe:a=!1}=r,l=mm(t);return je(o,s,u=>{u.repeat&&De(a)||l(u)&&n(u)},i)}function _m(){const e=q(!1),t=cr();return t&&Ee(()=>{e.value=!0},t),e}function dr(e){const t=_m();return P(()=>(t.value,!!e()))}function bm(e,t,n={}){const{window:r=rt,...o}=n;let s;const i=dr(()=>r&&"MutationObserver"in r),a=()=>{s&&(s.disconnect(),s=void 0)},l=P(()=>{const d=De(e),h=(Array.isArray(d)?d:[d]).map(Je).filter(sm);return new Set(h)}),c=pe(()=>l.value,d=>{a(),i.value&&d.size&&(s=new MutationObserver(t),d.forEach(h=>s.observe(h,o)))},{immediate:!0,flush:"post"}),u=()=>s==null?void 0:s.takeRecords(),f=()=>{c(),a()};return wn(f),{isSupported:i,stop:f,takeRecords:u}}function Kt(e,t={}){const{window:n=rt}=t,r=dr(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let o;const s=q(!1),i=c=>{s.value=c.matches},a=()=>{o&&("removeEventListener"in o?o.removeEventListener("change",i):o.removeListener(i))},l=lr(()=>{r.value&&(a(),o=n.matchMedia(De(e)),"addEventListener"in o?o.addEventListener("change",i):o.addListener(i),s.value=o.matches)});return wn(()=>{l(),a(),o=void 0}),s}function Il(e,t={}){const{controls:n=!1,navigator:r=Cf}=t,o=dr(()=>r&&"permissions"in r),s=Xe(),i=typeof e=="string"?{name:e}:e,a=Xe(),l=()=>{var u,f;a.value=(f=(u=s.value)==null?void 0:u.state)!=null?f:"prompt"};je(s,"change",l);const c=fm(async()=>{if(o.value){if(!s.value)try{s.value=await r.permissions.query(i)}catch{s.value=void 0}finally{l()}if(n)return me(s.value)}});return c(),n?{state:a,isSupported:o,query:c}:a}function ym(e={}){const{navigator:t=Cf,read:n=!1,source:r,copiedDuring:o=1500,legacy:s=!1}=e,i=dr(()=>t&&"clipboard"in t),a=Il("clipboard-read"),l=Il("clipboard-write"),c=P(()=>i.value||s),u=q(""),f=q(!1),d=vm(()=>f.value=!1,o);function h(){i.value&&S(a.value)?t.clipboard.readText().then(T=>{u.value=T}):u.value=w()}c.value&&n&&je(["copy","cut"],h);async function v(T=De(r)){c.value&&T!=null&&(i.value&&S(l.value)?await t.clipboard.writeText(T):m(T),u.value=T,f.value=!0,d.start())}function m(T){const k=document.createElement("textarea");k.value=T??"",k.style.position="absolute",k.style.opacity="0",document.body.appendChild(k),k.select(),document.execCommand("copy"),k.remove()}function w(){var T,k,x;return(x=(k=(T=document==null?void 0:document.getSelection)==null?void 0:T.call(document))==null?void 0:k.toString())!=null?x:""}function S(T){return T==="granted"||T==="prompt"}return{isSupported:c,text:u,copied:f,copy:v}}const ho=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},po="__vueuse_ssr_handlers__",km=wm();function wm(){return po in ho||(ho[po]=ho[po]||{}),ho[po]}function Ef(e,t){return km[e]||t}function Af(e){return Kt("(prefers-color-scheme: dark)",e)}function Pm(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Sm={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Vl="vueuse-storage";function Of(e,t,n,r={}){var o;const{flush:s="pre",deep:i=!0,listenToStorageChanges:a=!0,writeDefaults:l=!0,mergeDefaults:c=!1,shallow:u,window:f=rt,eventFilter:d,onError:h=E=>{console.error(E)},initOnMounted:v}=r,m=(u?Xe:q)(typeof t=="function"?t():t);if(!n)try{n=Ef("getDefaultStorage",()=>{var E;return(E=rt)==null?void 0:E.localStorage})()}catch(E){h(E)}if(!n)return m;const w=De(t),S=Pm(w),T=(o=r.serializer)!=null?o:Sm[S],{pause:k,resume:x}=pm(m,()=>N(m.value),{flush:s,deep:i,eventFilter:d});f&&a&&os(()=>{n instanceof Storage?je(f,"storage",Q):je(f,Vl,F),v&&Q()}),v||Q();function B(E,K){if(f){const M={key:e,oldValue:E,newValue:K,storageArea:n};f.dispatchEvent(n instanceof Storage?new StorageEvent("storage",M):new CustomEvent(Vl,{detail:M}))}}function N(E){try{const K=n.getItem(e);if(E==null)B(K,null),n.removeItem(e);else{const M=T.write(E);K!==M&&(n.setItem(e,M),B(K,M))}}catch(K){h(K)}}function z(E){const K=E?E.newValue:n.getItem(e);if(K==null)return l&&w!=null&&n.setItem(e,T.write(w)),w;if(!E&&c){const M=T.read(K);return typeof c=="function"?c(M,w):S==="object"&&!Array.isArray(M)?{...w,...M}:M}else return typeof K!="string"?K:T.read(K)}function Q(E){if(!(E&&E.storageArea!==n)){if(E&&E.key==null){m.value=w;return}if(!(E&&E.key!==e)){k();try{(E==null?void 0:E.newValue)!==T.write(m.value)&&(m.value=z(E))}catch(K){h(K)}finally{E?at(x):x()}}}}function F(E){Q(E.detail)}return m}const xm="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function Lm(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:o=rt,storage:s,storageKey:i="vueuse-color-scheme",listenToStorageChanges:a=!0,storageRef:l,emitAuto:c,disableTransition:u=!0}=e,f={auto:"",light:"light",dark:"dark",...e.modes||{}},d=Af({window:o}),h=P(()=>d.value?"dark":"light"),v=l||(i==null?xf(r):Of(i,r,s,{window:o,listenToStorageChanges:a})),m=P(()=>v.value==="auto"?h.value:v.value),w=Ef("updateHTMLAttrs",(x,B,N)=>{const z=typeof x=="string"?o==null?void 0:o.document.querySelector(x):Je(x);if(!z)return;const Q=new Set,F=new Set;let E=null;if(B==="class"){const M=N.split(/\s/g);Object.values(f).flatMap(ae=>(ae||"").split(/\s/g)).filter(Boolean).forEach(ae=>{M.includes(ae)?Q.add(ae):F.add(ae)})}else E={key:B,value:N};if(Q.size===0&&F.size===0&&E===null)return;let K;u&&(K=o.document.createElement("style"),K.appendChild(document.createTextNode(xm)),o.document.head.appendChild(K));for(const M of Q)z.classList.add(M);for(const M of F)z.classList.remove(M);E&&z.setAttribute(E.key,E.value),u&&(o.getComputedStyle(K).opacity,document.head.removeChild(K))});function S(x){var B;w(t,n,(B=f[x])!=null?B:x)}function T(x){e.onChanged?e.onChanged(x,S):S(x)}pe(m,T,{flush:"post",immediate:!0}),os(()=>T(m.value));const k=P({get(){return c?v.value:m.value},set(x){v.value=x}});try{return Object.assign(k,{store:v,system:h,state:m})}catch{return k}}function Cm(e,t,n={}){const{window:r=rt,initialValue:o,observe:s=!1}=n,i=q(o),a=P(()=>{var c;return Je(t)||((c=r==null?void 0:r.document)==null?void 0:c.documentElement)});function l(){var c;const u=De(e),f=De(a);if(f&&r&&u){const d=(c=r.getComputedStyle(f).getPropertyValue(u))==null?void 0:c.trim();i.value=d||o}}return s&&bm(a,l,{attributeFilter:["style","class"],window:r}),pe([a,()=>De(e)],(c,u)=>{u[0]&&u[1]&&u[0].style.removeProperty(u[1]),l()},{immediate:!0}),pe(i,c=>{var u;const f=De(e);(u=a.value)!=null&&u.style&&f&&(c==null?a.value.style.removeProperty(f):a.value.style.setProperty(f,c))}),i}function Tm(e={}){const{valueDark:t="dark",valueLight:n="",window:r=rt}=e,o=Lm({...e,onChanged:(a,l)=>{var c;e.onChanged?(c=e.onChanged)==null||c.call(e,a==="dark",l,a):l(a)},modes:{dark:t,light:n}}),s=P(()=>o.system?o.system.value:Af({window:r}).value?"dark":"light");return P({get(){return o.value==="dark"},set(a){const l=a?"dark":"light";s.value===l?o.value="auto":o.value=l}})}function Em(e,t,n={}){const{window:r=rt,...o}=n;let s;const i=dr(()=>r&&"ResizeObserver"in r),a=()=>{s&&(s.disconnect(),s=void 0)},l=P(()=>{const f=De(e);return Array.isArray(f)?f.map(d=>Je(d)):[Je(f)]}),c=pe(l,f=>{if(a(),i.value&&r){s=new ResizeObserver(t);for(const d of f)d&&s.observe(d,o)}},{immediate:!0,flush:"post"}),u=()=>{a(),c()};return wn(u),{isSupported:i,stop:u}}function Am(e,t={width:0,height:0},n={}){const{window:r=rt,box:o="content-box"}=n,s=P(()=>{var f,d;return(d=(f=Je(e))==null?void 0:f.namespaceURI)==null?void 0:d.includes("svg")}),i=q(t.width),a=q(t.height),{stop:l}=Em(e,([f])=>{const d=o==="border-box"?f.borderBoxSize:o==="content-box"?f.contentBoxSize:f.devicePixelContentBoxSize;if(r&&s.value){const h=Je(e);if(h){const v=h.getBoundingClientRect();i.value=v.width,a.value=v.height}}else if(d){const h=Array.isArray(d)?d:[d];i.value=h.reduce((v,{inlineSize:m})=>v+m,0),a.value=h.reduce((v,{blockSize:m})=>v+m,0)}else i.value=f.contentRect.width,a.value=f.contentRect.height},n);os(()=>{const f=Je(e);f&&(i.value="offsetWidth"in f?f.offsetWidth:t.width,a.value="offsetHeight"in f?f.offsetHeight:t.height)});const c=pe(()=>Je(e),f=>{i.value=f?t.width:0,a.value=f?t.height:0});function u(){l(),c()}return{width:i,height:a,stop:u}}const Ml=["fullscreenchange","webkitfullscreenchange","webkitendfullscreen","mozfullscreenchange","MSFullscreenChange"];function Om(e,t={}){const{document:n=gm,autoExit:r=!1}=t,o=P(()=>{var S;return(S=Je(e))!=null?S:n==null?void 0:n.querySelector("html")}),s=q(!1),i=P(()=>["requestFullscreen","webkitRequestFullscreen","webkitEnterFullscreen","webkitEnterFullScreen","webkitRequestFullScreen","mozRequestFullScreen","msRequestFullscreen"].find(S=>n&&S in n||o.value&&S in o.value)),a=P(()=>["exitFullscreen","webkitExitFullscreen","webkitExitFullScreen","webkitCancelFullScreen","mozCancelFullScreen","msExitFullscreen"].find(S=>n&&S in n||o.value&&S in o.value)),l=P(()=>["fullScreen","webkitIsFullScreen","webkitDisplayingFullscreen","mozFullScreen","msFullscreenElement"].find(S=>n&&S in n||o.value&&S in o.value)),c=["fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement"].find(S=>n&&S in n),u=dr(()=>o.value&&n&&i.value!==void 0&&a.value!==void 0&&l.value!==void 0),f=()=>c?(n==null?void 0:n[c])===o.value:!1,d=()=>{if(l.value){if(n&&n[l.value]!=null)return n[l.value];{const S=o.value;if((S==null?void 0:S[l.value])!=null)return!!S[l.value]}}return!1};async function h(){if(!(!u.value||!s.value)){if(a.value)if((n==null?void 0:n[a.value])!=null)await n[a.value]();else{const S=o.value;(S==null?void 0:S[a.value])!=null&&await S[a.value]()}s.value=!1}}async function v(){if(!u.value||s.value)return;d()&&await h();const S=o.value;i.value&&(S==null?void 0:S[i.value])!=null&&(await S[i.value](),s.value=!0)}async function m(){await(s.value?h():v())}const w=()=>{const S=d();(!S||S&&f())&&(s.value=S)};return je(n,Ml,w,!1),je(()=>Je(o),Ml,w,!1),r&&wn(h),{isSupported:u,isFullscreen:s,enter:v,exit:h,toggle:m}}function Es(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function If(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const As=new WeakMap;function ta(e,t=!1){const n=q(t);let r=null,o="";pe(xf(e),a=>{const l=Es(De(a));if(l){const c=l;if(As.get(c)||As.set(c,c.style.overflow),c.style.overflow!=="hidden"&&(o=c.style.overflow),c.style.overflow==="hidden")return n.value=!0;if(n.value)return c.style.overflow="hidden"}},{immediate:!0});const s=()=>{const a=Es(De(e));!a||n.value||(ii&&(r=je(a,"touchmove",l=>{Im(l)},{passive:!1})),a.style.overflow="hidden",n.value=!0)},i=()=>{const a=Es(De(e));!a||!n.value||(ii&&(r==null||r()),a.style.overflow=o,As.delete(a),n.value=!1)};return wn(i),P({get(){return n.value},set(a){a?s():i()}})}function Vm(e,t,n={}){const{window:r=rt}=n;return Of(e,t,r==null?void 0:r.sessionStorage,n)}function na(e={}){const{window:t=rt,behavior:n="auto"}=e;if(!t)return{x:q(0),y:q(0)};const r=q(t.scrollX),o=q(t.scrollY),s=P({get(){return r.value},set(a){scrollTo({left:a,behavior:n})}}),i=P({get(){return o.value},set(a){scrollTo({top:a,behavior:n})}});return je(t,"scroll",()=>{r.value=t.scrollX,o.value=t.scrollY},{capture:!1,passive:!0}),{x:s,y:i}}function Mm(e={}){const{window:t=rt,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:o=!0,includeScrollbar:s=!0,type:i="inner"}=e,a=q(n),l=q(r),c=()=>{t&&(i==="outer"?(a.value=t.outerWidth,l.value=t.outerHeight):s?(a.value=t.innerWidth,l.value=t.innerHeight):(a.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};if(c(),os(c),je("resize",c,{passive:!0}),o){const u=Kt("(orientation: portrait)");pe(u,()=>c())}return{width:a,height:l}}const $l=async(e,t)=>{const{path:n,query:r}=e.currentRoute.value,{scrollBehavior:o}=e.options;e.options.scrollBehavior=void 0,await e.replace({path:n,query:r,hash:t}),e.options.scrollBehavior=o},$m=({headerLinkSelector:e,headerAnchorSelector:t,delay:n,offset:r=5})=>{const o=ur();je("scroll",hm(()=>{var v,m;const i=Math.max(window.scrollY,document.documentElement.scrollTop,document.body.scrollTop);if(Math.abs(i-0)f.some(S=>S.hash===w.hash));for(let w=0;w=(((v=S.parentElement)==null?void 0:v.offsetTop)??0)-r,x=!T||i<(((m=T.parentElement)==null?void 0:m.offsetTop)??0)-r;if(!(k&&x))continue;const N=decodeURIComponent(o.currentRoute.value.hash),z=decodeURIComponent(S.hash);if(N===z)return;if(u){for(let Q=w+1;Q{const t=yn();return P(()=>e[t.value]??{})},Mf=e=>new Promise(t=>{setTimeout(t,e)}),Fm=e=>typeof e<"u",{isArray:ai}=Array,Wm=(e,t)=>St(e)&&e.startsWith(t),zm=e=>Wm(e,"/");/** + * NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT + */const Rl=(e,t)=>{e.classList.add(t)},Nl=(e,t)=>{e.classList.remove(t)},Gm=e=>{var t;(t=e==null?void 0:e.parentNode)==null||t.removeChild(e)},Os=(e,t,n)=>en?n:e,Bl=e=>(-1+e)*100,Um=(()=>{const e=[],t=()=>{const n=e.shift();n&&n(t)};return n=>{e.push(n),e.length===1&&t()}})(),qm=e=>e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(t,n)=>n.toUpperCase()),vo=(()=>{const e=["Webkit","O","Moz","ms"],t={},n=s=>{const{style:i}=document.body;if(s in i)return s;const a=s.charAt(0).toUpperCase()+s.slice(1);let l=e.length;for(;l--;){const c=`${e[l]}${a}`;if(c in i)return c}return s},r=s=>{const i=qm(s);return t[i]??(t[i]=n(i))},o=(s,i,a)=>{s.style[r(i)]=a};return(s,i)=>{for(const a in i){const l=i[a];Object.hasOwn(i,a)&&Fm(l)&&o(s,a,l)}}})(),Dt={minimum:.08,easing:"ease",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,barSelector:'[role="bar"]',parent:"body",template:'
    '},Ve={percent:null,isRendered:()=>!!document.getElementById("nprogress"),set:e=>{const{speed:t,easing:n}=Dt,r=Ve.isStarted(),o=Os(e,Dt.minimum,1);Ve.percent=o===1?null:o;const s=Ve.render(!r),i=s.querySelector(Dt.barSelector);return s.offsetWidth,Um(a=>{vo(i,{transform:`translate3d(${Bl(o)}%,0,0)`,transition:`all ${t}ms ${n}`}),o===1?(vo(s,{transition:"none",opacity:"1"}),s.offsetWidth,setTimeout(()=>{vo(s,{transition:`all ${t}ms linear`,opacity:"0"}),setTimeout(()=>{Ve.remove(),a()},t)},t)):setTimeout(()=>{a()},t)}),Ve},isStarted:()=>typeof Ve.percent=="number",start:()=>{Ve.percent||Ve.set(0);const e=()=>{setTimeout(()=>{Ve.percent&&(Ve.trickle(),e())},Dt.trickleSpeed)};return e(),Ve},done:e=>!e&&!Ve.percent?Ve:Ve.increase(.3+.5*Math.random()).set(1),increase:e=>{let{percent:t}=Ve;return t?(t=Os(t+(typeof e=="number"?e:(1-t)*Os(Math.random()*t,.1,.95)),0,.994),Ve.set(t)):Ve.start()},trickle:()=>Ve.increase(Math.random()*Dt.trickleRate),render:e=>{if(Ve.isRendered())return document.getElementById("nprogress");Rl(document.documentElement,"nprogress-busy");const t=document.createElement("div");t.id="nprogress",t.innerHTML=Dt.template;const n=t.querySelector(Dt.barSelector),r=document.querySelector(Dt.parent),o=e?"-100":Bl(Ve.percent??0);return vo(n,{transition:"all 0 linear",transform:`translate3d(${o}%,0,0)`}),r&&(r!==document.body&&Rl(r,"nprogress-custom-parent"),r.appendChild(t)),t},remove:()=>{Nl(document.documentElement,"nprogress-busy"),Nl(document.querySelector(Dt.parent),"nprogress-custom-parent"),Gm(document.getElementById("nprogress"))}},Km=()=>{Ee(()=>{const e=ur(),t=new Set;t.add(e.currentRoute.value.path),e.beforeEach(n=>{t.has(n.path)||Ve.start()}),e.afterEach(n=>{t.add(n.path),Ve.done()})})},Ym=$t({setup(){Km()}}),Jm=Object.freeze(Object.defineProperty({__proto__:null,default:Ym},Symbol.toStringTag,{value:"Module"})),Qm=q({}),$f=Symbol(""),Xm=()=>$e($f),Zm=e=>{e.provide($f,Qm)},e_='
    ',t_=e=>St(e)?Array.from(document.querySelectorAll(e)):e.map(t=>Array.from(document.querySelectorAll(t))).flat(),Rf=e=>new Promise((t,n)=>{e.complete?t({type:"image",element:e,src:e.src,width:e.naturalWidth,height:e.naturalHeight,alt:e.alt,msrc:e.src}):(e.onload=()=>{t(Rf(e))},e.onerror=()=>{n()})}),n_=(e,{download:t=!0,fullscreen:n=!0}={})=>{e.on("uiRegister",()=>{if(e.ui.registerElement({name:"bulletsIndicator",className:"photo-swipe-bullets-indicator",appendTo:"wrapper",onInit:r=>{const o=[];let s=-1;for(let i=0;i{e.goTo(o.indexOf(l.target))},o.push(a),r.appendChild(a)}e.on("change",()=>{s>=0&&o[s].classList.remove("active"),o[e.currIndex].classList.add("active"),s=e.currIndex})}}),n){const{isSupported:r,toggle:o}=Om();r.value&&e.ui.registerElement({name:"fullscreen",order:7,isButton:!0,html:'',onClick:()=>{o()}})}t&&e.ui.registerElement({name:"download",order:8,isButton:!0,tagName:"a",html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-download"},onInit:r=>{r.setAttribute("download",""),r.setAttribute("target","_blank"),r.setAttribute("rel","noopener"),e.on("change",()=>{r.setAttribute("href",e.currSlide.data.src)})}})})},r_=(e,{scrollToClose:t=!0,download:n=!0,fullscreen:r=!0,...o})=>We(async()=>{const{default:s}=await import("./photoswipe.esm-GXRgw7eJ.js");return{default:s}},[]).then(({default:s})=>{let i=null;const a=e.map(l=>({html:e_,element:l,msrc:l.src}));return e.forEach((l,c)=>{const u=()=>{i==null||i.destroy(),i=new s({preloaderDelay:0,showHideAnimationType:"zoom",...o,dataSource:a,index:c,...t?{closeOnVerticalDrag:!0,wheelToZoom:!1}:{}}),n_(i,{download:n,fullscreen:r}),i.addFilter("thumbEl",()=>l),i.addFilter("placeholderSrc",()=>l.src),i.init()};l.getAttribute("photo-swipe")||(l.style.cursor="zoom-in",l.addEventListener("click",()=>{u()}),l.addEventListener("keypress",({key:f})=>{f==="Enter"&&u()}),l.setAttribute("photo-swipe","")),Rf(l).then(f=>{a.splice(c,1,f),i==null||i.refreshSlideContent(c)})}),t?je("wheel",()=>{i==null||i.close()}):()=>{}}),o_=({selector:e,locales:t,delay:n=500,download:r=!0,fullscreen:o=!0,scrollToClose:s=!0})=>{const i=Xm(),a=Vf(t),l=ea(),c=Qr();let u=null;const f=()=>{const{photoSwipe:d}=c.value;d!==!1&&at().then(()=>Mf(n)).then(async()=>{const h=St(d)?d:e;u=await r_(t_(h),{...i.value,...a.value,download:r,fullscreen:o,scrollToClose:s})})};Ee(()=>{f(),pe(()=>[l.value.path,i.value],()=>{u==null||u(),f()})}),Jt(()=>{u==null||u()})};var s_={"/":{closeTitle:"关闭",downloadTitle:"下载图片",fullscreenTitle:"切换全屏",zoomTitle:"缩放",arrowPrevTitle:"上一个 (左箭头)",arrowNextTitle:"下一个 (右箭头)"}};const i_=".plume-content > img, .plume-content :not(a) > img",a_=s_,l_=300,c_=!0,u_=!0,f_=!0,d_=$t({enhance:({app:e})=>{Zm(e)},setup:()=>{o_({selector:i_,delay:l_,locales:a_,download:c_,fullscreen:u_,scrollToClose:f_})}}),h_=Object.freeze(Object.defineProperty({__proto__:null,default:d_},Symbol.toStringTag,{value:"Module"})),p_={"/":()=>We(()=>import("./searchBox-default-CcMwYGlg.js"),[])};var v_=Xe(p_);function aS(){return v_}var Dl={"/":{placeholder:"Search",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}};function g_(e){const t=hn(e),n=yn();return P(()=>t.value[n.value]??Dl[n.value]??Dl["/"])}const m_=R({__name:"SearchButton",props:{locales:{}},setup(e,{expose:t}){t();const n=e,r=g_(hn(n.locales)),o={props:n,locale:r};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}}),H=(e,t)=>{const n=e.__vccOpts||e;for(const[r,o]of t)n[r]=o;return n},__=["aria-label"],b_={class:"mini-search-button-container"},y_={class:"mini-search-button-placeholder"};function k_(e,t,n,r,o,s){return p(),b("button",{type:"button",class:"mini-search mini-search-button","aria-label":r.locale.placeholder},[_("span",b_,[t[0]||(t[0]=_("svg",{class:"mini-search-search-icon",width:"20",height:"20",viewBox:"0 0 20 20","aria-label":"search icon"},[_("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none","fill-rule":"evenodd","stroke-linecap":"round","stroke-linejoin":"round"})],-1)),_("span",y_,U(r.locale.placeholder),1)]),t[1]||(t[1]=_("span",{class:"mini-search-button-keys"},[_("kbd",{class:"mini-search-button-key"}),_("kbd",{class:"mini-search-button-key"},"K")],-1))],8,__)}const w_=H(m_,[["render",k_],["__file","SearchButton.vue"]]),P_=R({__name:"Search",props:{locales:{},options:{}},setup(e,{expose:t}){t();const n=zi(()=>We(()=>import("./SearchBox-C8-f80vO.js"),[])),r=q(!1);Ol("k",i=>{(i.ctrlKey||i.metaKey)&&(i.preventDefault(),r.value=!0)}),Ol("/",i=>{o(i)||(i.preventDefault(),r.value=!0)});function o(i){const a=i.target,l=a.tagName;return a.isContentEditable||l==="INPUT"||l==="SELECT"||l==="TEXTAREA"}const s={SearchBox:n,showSearch:r,isEditingContent:o,SearchButton:w_};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}}),S_={class:"search-wrapper"},x_={id:"local-search"};function L_(e,t,n,r,o,s){return p(),b("div",S_,[r.showSearch?(p(),j(r.SearchBox,{key:0,locales:n.locales,options:n.options,onClose:t[0]||(t[0]=i=>r.showSearch=!1)},null,8,["locales","options"])):O("",!0),_("div",x_,[$(r.SearchButton,{locales:n.locales,onClick:t[1]||(t[1]=i=>r.showSearch=!0)},null,8,["locales"])])])}const C_=H(P_,[["render",L_],["__scopeId","data-v-81ae8c66"],["__file","Search.vue"]]);var T_={"/":{placeholder:"搜索文档",resetButtonTitle:"重置搜索",backButtonTitle:"关闭",noResultsText:"无搜索结果:",footer:{selectText:"选择",selectKeyAriaLabel:"输入",navigateText:"切换",navigateUpKeyAriaLabel:"向上",navigateDownKeyAriaLabel:"向下",closeText:"关闭",closeKeyAriaLabel:"退出"}}},E_={},A_=T_,O_=E_,I_=$t({enhance({app:e}){e.component("SearchBox",t=>Se(C_,{locales:A_,options:O_,...t}))}});const V_=Object.freeze(Object.defineProperty({__proto__:null,default:I_},Symbol.toStringTag,{value:"Module"}));var M_=/language-(?:shellscript|shell|bash|sh|zsh)/,$_=[".vp-copy-ignore",".diff.remove"];function R_({selector:e='div[class*="language-"] > button.copy',duration:t=2e3}={}){const n=new WeakMap,{copy:r}=ym({legacy:!0});je("click",o=>{const s=o.target;if(s.matches(e)){const i=s.parentElement,a=s.nextElementSibling;if(!i||!a)return;const l=M_.test(i.className),c=a.cloneNode(!0);c.querySelectorAll($_.join(",")).forEach(f=>f.remove());let u=c.textContent||"";l&&(u=u.replace(/^ *(\$|>) /gm,"").trim()),r(u).then(()=>{if(t<=0)return;s.classList.add("copied"),clearTimeout(n.get(s));const f=setTimeout(()=>{s.classList.remove("copied"),s.blur(),n.delete(s)},t);n.set(s,f)})}})}function N_({selector:e='div[class*="language-"] > .collapsed-lines'}={}){je("click",t=>{const n=t.target;if(n.matches(e)){const r=n.parentElement;r!=null&&r.classList.toggle("collapsed")&&r.scrollIntoView({block:"center",behavior:"instant"})}})}const B_={setup(){R_({selector:'div[class*="language-"] > button.copy',duration:2e3}),N_()}},D_=Object.freeze(Object.defineProperty({__proto__:null,default:B_},Symbol.toStringTag,{value:"Module"})),j_=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));function H_(e){return Ai()?(Fc(e),!0):!1}function ra(e){return typeof e=="function"?e():Ut(e)}const F_=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const W_=Object.prototype.toString,z_=e=>W_.call(e)==="[object Object]",G_=()=>{};function U_(e,t){function n(...r){return new Promise((o,s)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(o).catch(s)})}return n}const Nf=e=>e();function q_(e=Nf){const t=q(!0);function n(){t.value=!1}function r(){t.value=!0}const o=(...s)=>{t.value&&e(...s)};return{isActive:Nn(t),pause:n,resume:r,eventFilter:o}}function K_(e){return cr()}function Y_(e,t,n={}){const{eventFilter:r=Nf,...o}=n;return pe(e,U_(r,t),o)}function J_(e,t,n={}){const{eventFilter:r,...o}=n,{eventFilter:s,pause:i,resume:a,isActive:l}=q_(r);return{stop:Y_(e,t,{...o,eventFilter:s}),pause:i,resume:a,isActive:l}}function Q_(e,t=!0,n){K_()?Ee(e,n):t?e():at(e)}function X_(e){var t;const n=ra(e);return(t=n==null?void 0:n.$el)!=null?t:n}const li=F_?window:void 0;function ci(...e){let t,n,r,o;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,o]=e,t=li):[t,n,r,o]=e,!t)return G_;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const s=[],i=()=>{s.forEach(u=>u()),s.length=0},a=(u,f,d,h)=>(u.addEventListener(f,d,h),()=>u.removeEventListener(f,d,h)),l=pe(()=>[X_(t),ra(o)],([u,f])=>{if(i(),!u)return;const d=z_(f)?{...f}:f;s.push(...n.flatMap(h=>r.map(v=>a(u,h,v,d))))},{immediate:!0,flush:"post"}),c=()=>{l(),i()};return H_(c),c}const go=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},mo="__vueuse_ssr_handlers__",Z_=e0();function e0(){return mo in go||(go[mo]=go[mo]||{}),go[mo]}function t0(e,t){return Z_[e]||t}function n0(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const r0={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},jl="vueuse-storage";function Bf(e,t,n,r={}){var o;const{flush:s="pre",deep:i=!0,listenToStorageChanges:a=!0,writeDefaults:l=!0,mergeDefaults:c=!1,shallow:u,window:f=li,eventFilter:d,onError:h=E=>{console.error(E)},initOnMounted:v}=r,m=(u?Xe:q)(typeof t=="function"?t():t);if(!n)try{n=t0("getDefaultStorage",()=>{var E;return(E=li)==null?void 0:E.localStorage})()}catch(E){h(E)}if(!n)return m;const w=ra(t),S=n0(w),T=(o=r.serializer)!=null?o:r0[S],{pause:k,resume:x}=J_(m,()=>N(m.value),{flush:s,deep:i,eventFilter:d});f&&a&&Q_(()=>{ci(f,"storage",Q),ci(f,jl,F),v&&Q()}),v||Q();function B(E,K){f&&f.dispatchEvent(new CustomEvent(jl,{detail:{key:e,oldValue:E,newValue:K,storageArea:n}}))}function N(E){try{const K=n.getItem(e);if(E==null)B(K,null),n.removeItem(e);else{const M=T.write(E);K!==M&&(n.setItem(e,M),B(K,M))}}catch(K){h(K)}}function z(E){const K=E?E.newValue:n.getItem(e);if(K==null)return l&&w!=null&&n.setItem(e,T.write(w)),w;if(!E&&c){const M=T.read(K);return typeof c=="function"?c(M,w):S==="object"&&!Array.isArray(M)?{...w,...M}:M}else return typeof K!="string"?K:T.read(K)}function Q(E){if(!(E&&E.storageArea!==n)){if(E&&E.key==null){m.value=w;return}if(!(E&&E.key!==e)){k();try{(E==null?void 0:E.newValue)!==T.write(m.value)&&(m.value=z(E))}catch(K){h(K)}finally{E?at(x):x()}}}}function F(E){Q(E.detail)}return m}const _o=Bf("VUEPRESS_CODE_TAB_STORE",{});var o0=R({name:"CodeTabs",props:{active:{type:Number,default:0},data:{type:Array,required:!0},id:{type:String,required:!0},tabId:{type:String,default:""}},slots:Object,setup(e,{slots:t}){const n=q(e.active),r=Xe([]),o=()=>{e.tabId&&(_o.value[e.tabId]=e.data[n.value].id)},s=(c=n.value)=>{n.value=c{n.value=c>0?c-1:r.value.length-1,r.value[n.value].focus()},a=(c,u)=>{c.key===" "||c.key==="Enter"?(c.preventDefault(),n.value=u):c.key==="ArrowRight"?(c.preventDefault(),s()):c.key==="ArrowLeft"&&(c.preventDefault(),i()),e.tabId&&(_o.value[e.tabId]=e.data[n.value].id)},l=()=>{if(e.tabId){const c=e.data.findIndex(({id:u})=>_o.value[e.tabId]===u);if(c!==-1)return c}return e.active};return Ee(()=>{n.value=l(),pe(()=>_o.value[e.tabId],(c,u)=>{if(e.tabId&&c!==u){const f=e.data.findIndex(({id:d})=>d===c);f!==-1&&(n.value=f)}})}),()=>e.data.length?Se("div",{class:"vp-code-tabs"},[Se("div",{class:"vp-code-tabs-nav",role:"tablist"},e.data.map(({id:c},u)=>{const f=u===n.value;return Se("button",{type:"button",ref:d=>{d&&(r.value[u]=d)},class:["vp-code-tab-nav",{active:f}],role:"tab","aria-controls":`codetab-${e.id}-${u}`,"aria-selected":f,onClick:()=>{n.value=u,o()},onKeydown:d=>a(d,u)},t[`title${u}`]({value:c,isActive:f}))})),e.data.map(({id:c},u)=>{const f=u===n.value;return Se("div",{class:["vp-code-tab",{active:f}],id:`codetab-${e.id}-${u}`,role:"tabpanel","aria-expanded":f},[Se("div",{class:"vp-code-tab-title"},t[`title${u}`]({value:c,isActive:f})),t[`tab${u}`]({value:c,isActive:f})])})]):null}});const Hl=(e,t)=>{var r;const n=(r=(t==null?void 0:t._instance)||cr())==null?void 0:r.appContext.components;return n?e in n||ht(e)in n||zr(ht(e))in n:!1},Df=({active:e=!1},{slots:t})=>{var n;return Se("div",{class:["code-group-item",{active:e}],"aria-selected":e},(n=t.default)==null?void 0:n.call(t))};Df.displayName="CodeGroupItem";const s0=R({name:"CodeGroup",slots:Object,setup(e,{slots:t}){const n=q(-1),r=Xe([]),o=(a=n.value)=>{n.value=a{n.value=a>0?a-1:r.value.length-1,r.value[n.value].focus()},i=(a,l)=>{a.key===" "||a.key==="Enter"?(a.preventDefault(),n.value=l):a.key==="ArrowRight"?(a.preventDefault(),o(l)):a.key==="ArrowLeft"&&(a.preventDefault(),s(l))};return()=>{var l;const a=(((l=t.default)==null?void 0:l.call(t))||[]).filter(c=>c.type.name==="CodeGroupItem").map(c=>(c.props===null&&(c.props={}),c));return a.length===0?null:(n.value<0||n.value>a.length-1?(n.value=a.findIndex(c=>"active"in c.props),n.value===-1&&(n.value=0)):a.forEach((c,u)=>{c.props.active=u===n.value}),Se("div",{class:"code-group"},[Se("div",{class:"code-group-nav"},a.map((c,u)=>{const f=u===n.value;return Se("button",{type:"button",ref:d=>{d&&(r.value[u]=d)},class:["code-group-nav-tab",{active:f}],"aria-pressed":f,"aria-expanded":f,onClick:()=>{n.value=u},onKeydown:d=>i(d,u)},c.props.title)})),a]))}}}),i0=()=>{ci("beforeprint",()=>{document.querySelectorAll("details").forEach(e=>{e.open=!0})})},Is=Bf("VUEPRESS_TAB_STORE",{});var a0=R({name:"Tabs",props:{active:{type:Number,default:0},data:{type:Array,required:!0},id:{type:String,required:!0},tabId:{type:String,default:""}},slots:Object,setup(e,{slots:t}){const n=q(e.active),r=Xe([]),o=()=>{e.tabId&&(Is.value[e.tabId]=e.data[n.value].id)},s=(c=n.value)=>{n.value=c{n.value=c>0?c-1:r.value.length-1,r.value[n.value].focus()},a=(c,u)=>{c.key===" "||c.key==="Enter"?(c.preventDefault(),n.value=u):c.key==="ArrowRight"?(c.preventDefault(),s()):c.key==="ArrowLeft"&&(c.preventDefault(),i()),o()},l=()=>{if(e.tabId){const c=e.data.findIndex(({id:u})=>Is.value[e.tabId]===u);if(c!==-1)return c}return e.active};return Ee(()=>{n.value=l(),pe(()=>Is.value[e.tabId],(c,u)=>{if(e.tabId&&c!==u){const f=e.data.findIndex(({id:d})=>d===c);f!==-1&&(n.value=f)}})}),()=>e.data.length?Se("div",{class:"vp-tabs"},[Se("div",{class:"vp-tabs-nav",role:"tablist"},e.data.map(({id:c},u)=>{const f=u===n.value;return Se("button",{type:"button",ref:d=>{d&&(r.value[u]=d)},class:["vp-tab-nav",{active:f}],role:"tab","aria-controls":`tab-${e.id}-${u}`,"aria-selected":f,onClick:()=>{n.value=u,o()},onKeydown:d=>a(d,u)},t[`title${u}`]({value:c,isActive:f}))})),e.data.map(({id:c},u)=>{const f=u===n.value;return Se("div",{class:["vp-tab",{active:f}],id:`tab-${e.id}-${u}`,role:"tabpanel","aria-expanded":f},[Se("div",{class:"vp-tab-title"},t[`title${u}`]({value:c,isActive:f})),t[`tab${u}`]({value:c,isActive:f})])})]):null}});const l0=$t({enhance:({app:e})=>{e.component("CodeTabs",o0),Hl("CodeGroup",e)||e.component("CodeGroup",s0),Hl("CodeGroupItem",e)||e.component("CodeGroupItem",Df),e.component("Tabs",a0)},setup:()=>{i0()}}),c0=Object.freeze(Object.defineProperty({__proto__:null,default:l0},Symbol.toStringTag,{value:"Module"}));function u0(e,t=0){const n=Xe(),r=P(()=>it(e.width)||"100%"),o=q("auto"),s=a=>{const l=it(e.height),c=f0(it(e.ratio));return l||`${Number(a)/c+it(t)}px`},i=()=>{n.value&&(o.value=s(n.value.offsetWidth))};return Ee(()=>{i(),Me(t)&&pe(t,i),je("orientationchange",i),je("resize",i)}),{el:n,width:r,height:o,resize:i}}function f0(e){if(typeof e=="string"){const[t,n]=e.split(":"),r=Number(t)/Number(n);if(!Number.isNaN(r))return r}return typeof e=="number"?e:16/9}const d0="accelerometer; autoplay; clipboard-write; encrypted-media; fullscreen; gyroscope; picture-in-picture",h0=R({__name:"Bilibili",props:{src:{},title:{},width:{},height:{},ratio:{}},setup(e,{expose:t}){t();const n=e,r=Eh(n),{el:o,width:s,height:i,resize:a}=u0(r);function l(){a()}const c={props:n,IFRAME_ALLOW:d0,options:r,el:o,width:s,height:i,resize:a,onLoad:l};return Object.defineProperty(c,"__isScriptSetup",{enumerable:!1,value:!0}),c}}),p0=["src","title"];function v0(e,t,n,r,o,s){const i=pt("ClientOnly");return p(),j(i,null,{default:C(()=>[_("iframe",{ref:"el",class:"video_bilibili_iframe",src:n.src,title:n.title||"Bilibili",style:Ne({width:r.width,height:r.height}),allow:r.IFRAME_ALLOW,onLoad:r.onLoad},null,44,p0)]),_:1})}const g0=H(h0,[["render",v0],["__file","Bilibili.vue"]]),m0=R({__name:"Plot",props:{mask:{},color:{},trigger:{}},setup(e,{expose:t}){t();const n=e,r=Qr(),o=P(()=>{const f={};return{trigger:n.trigger||r.value.plotTrigger||f.trigger||"hover",color:n.color||f.color,mask:n.mask||f.mask}}),s=P(()=>{const f=o.value;if(!f.color&&!f.mask)return{};const d={};return f.color&&(typeof f.color=="string"?d["--vp-c-plot-light"]=f.color:(d["--vp-c-plot-light"]=f.color.light,d["--vp-c-plot-dark"]=f.color.dark)),f.mask&&(typeof f.mask=="string"?d["--vp-c-bg-plot-light"]=f.mask:(d["--vp-c-bg-plot-light"]=f.mask.light,d["--vp-c-bg-plot-dark"]=f.mask.dark)),d}),i=Kt("(max-width: 768px)"),a=q(!1),l=Xe();Tf(l,()=>{(o.value.trigger==="click"||i.value)&&(a.value=!1)});function c(){(n.trigger==="click"||i.value)&&(a.value=!a.value)}const u={props:n,matter:r,options:o,styles:s,isMobile:i,active:a,el:l,onClick:c};return Object.defineProperty(u,"__isScriptSetup",{enumerable:!1,value:!0}),u}});function _0(e,t,n,r,o,s){return p(),b("span",{ref:"el",class:ne(["vp-plot",{hover:r.options.trigger!=="click",active:r.active}]),style:Ne(r.styles),onClick:r.onClick},[L(e.$slots,"default")],6)}const b0=H(m0,[["render",_0],["__file","Plot.vue"]]),y0=R({__name:"FileTreeItem",props:{type:{},expanded:{type:Boolean},empty:{type:Boolean}},setup(e,{expose:t}){t();const n=e,r=q(!!n.expanded),o=q();Ee(()=>{var i;!o.value||n.type!=="folder"||(i=o.value.querySelector(".tree-node.folder"))==null||i.addEventListener("click",()=>{r.value=!r.value})});const s={props:n,active:r,el:o};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}}),k0={key:0};function w0(e,t,n,r,o,s){return p(),b("li",{ref:"el",class:ne(["file-tree-item",{expanded:r.active}])},[L(e.$slots,"default"),r.props.type==="folder"&&r.props.empty?(p(),b("ul",k0,t[0]||(t[0]=[_("li",{class:"file-tree-item"},[_("span",{class:"tree-node file"},[_("span",{class:"name"},"…")])],-1)]))):O("",!0)],2)}const P0=H(y0,[["render",w0],["__file","FileTreeItem.vue"]]),S0=$t({enhance({router:e,app:t}){t.component("VideoBilibili",g0),t.component("Plot",b0),t.component("FileTreeItem",P0)}}),x0=Object.freeze(Object.defineProperty({__proto__:null,default:S0},Symbol.toStringTag,{value:"Module"}));/*! + * watermark-js-plus v1.5.6 + * (c) 2022-2024 Michael Sun + * Released under the MIT License. + */function L0(e,t){t===void 0&&(t={});var n=t.insertAt;if(!(typeof document>"u")){var r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css",n==="top"&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var C0="@keyframes watermark{0%{background-position:0 0}25%{background-position:100% 100%}50%{background-position:0 0}75%{background-position:100% -100%}to{background-position:0 0}}";L0(C0);var ui=function(e,t){return ui=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,r){n.__proto__=r}||function(n,r){for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(n[o]=r[o])},ui(e,t)};function T0(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");ui(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var ln=function(){return ln=Object.assign||function(t){for(var n,r=1,o=arguments.length;r0&&s[s.length-1])&&(c[0]===6||c[0]===2)){n=0;continue}if(c[0]===3&&(!s||c[1]>s[0]&&c[1]n&&(r.push(o.substring(0,o.length-1)),o="",i--)}return r.push(o),r},O0=function(e,t){return Ft(void 0,void 0,void 0,function(){var n,r,o,s,i,a,l,c,u;return Ot(this,function(f){switch(f.label){case 0:return n=Fl("svg",{xmlns:"http://www.w3.org/2000/svg"}),r=document.createElement("div"),r.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),r.style.cssText=` + text-align: center; + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; + font: `.concat(e.font,`; + color: `).concat(t.fontColor,`; +`),r.innerHTML="
    ".concat(t.content,"
    "),document.body.appendChild(r),[4,I0(r)];case 1:return f.sent(),o=(u=r.querySelector(".rich-text-content"))===null||u===void 0?void 0:u.getBoundingClientRect(),s=o==null?void 0:o.width,i=o==null?void 0:o.height,document.body.removeChild(r),a=t.richTextWidth||s||t.width,l=t.richTextHeight||i||t.height,n.setAttribute("width",a.toString()),n.setAttribute("height",l.toString()),c=Fl("foreignObject",{width:a.toString(),height:l.toString()}),c.appendChild(r),n.appendChild(c),[2,{element:n,width:a,height:l}]}})})};function I0(e){return Ft(this,void 0,void 0,function(){var t,n,r,o,s;return Ot(this,function(i){switch(i.label){case 0:t=e.querySelectorAll("img"),n=function(a){var l,c,u,f,d;return Ot(this,function(h){switch(h.label){case 0:if(l=a.getAttribute("src"),!l)return[3,6];h.label=1;case 1:return h.trys.push([1,5,,6]),[4,fetch(l)];case 2:return c=h.sent(),[4,c.blob()];case 3:return u=h.sent(),[4,new Promise(function(v,m){var w=new FileReader;w.onloadend=function(){return v(w.result)},w.onerror=m,w.readAsDataURL(u)})];case 4:return f=h.sent(),E0(f)&&a.setAttribute("src",f),[3,6];case 5:return d=h.sent(),console.error("Error converting ".concat(l," to base64:"),d),[3,6];case 6:return[2]}})},r=0,o=Array.from(t),i.label=1;case 1:return r/g,"<$1$2/>").replace(/\n/g,"").replace(/\t/g,"").replace(/#/g,"%23");return"data:image/svg+xml;charset=utf-8,".concat(t)},Ue=function(e,t){return yt(e)?t:e},Wl=function(e,t,n){t===void 0&&(t=void 0),n===void 0&&(n=void 0);var r=new Image;return r.setAttribute("crossOrigin","Anonymous"),!yt(t)&&(r.width=t),!yt(n)&&(r.height=n),r.src=e,new Promise(function(o){r.onload=function(){o(r)}})},M0=function(e,t,n){return Array.from({length:e},function(){return new Array(t).fill(n)})},zl={width:300,height:300,rotate:45,layout:"default",auxiliaryLine:!1,translatePlacement:"middle",contentType:"text",content:"hello watermark-js-plus",textType:"fill",imageWidth:0,imageHeight:0,lineHeight:30,zIndex:2147483647,backgroundPosition:"0 0",backgroundRepeat:"repeat",fontSize:"20px",fontFamily:"sans-serif",fontStyle:"",fontVariant:"",fontColor:"#000",fontWeight:"normal",filter:"none",letterSpacing:"0px",wordSpacing:"0px",globalAlpha:.5,mode:"default",mutationObserve:!0,monitorProtection:!1,movable:!1,parent:"body",onSuccess:function(){},onBeforeDestroy:function(){},onDestroyed:function(){},onObserveError:function(){}},$0=function(e,t,n){var r=e.getContext("2d");if(r===null)throw new Error("get context error");r.font="".concat(t.fontStyle," ").concat(t.fontVariant," ").concat(t.fontWeight," ").concat(t.fontSize," ").concat(t.fontFamily),r.filter=t.filter,r.letterSpacing=t.letterSpacing,r.wordSpacing=t.wordSpacing,t!=null&&t.rotate&&(t.rotate=(360-t.rotate%360)*(Math.PI/180)),yt(n.textRowMaxWidth)&&(t.textRowMaxWidth=t.width);var o={image:{rect:{width:t.imageWidth,height:t.imageHeight},position:{x:0,y:0}},textLine:{data:[],yOffsetValue:0},advancedStyleParams:{linear:{x0:0,x1:0},radial:{x0:0,y0:0,r0:0,x1:0,y1:0,r1:0},conic:{x:0,y:0,startAngle:0},pattern:{}}};switch(t.contentType){case"text":o.textLine.data=[t.content];break;case"multi-line-text":o.textLine.data=A0(r,t.content,t.textRowMaxWidth);break}var s=t.width/2,i=t.height/2,a="middle",l="center";switch(!yt(n==null?void 0:n.translateX)&&!yt(n==null?void 0:n.translateY)?(s=n==null?void 0:n.translateX,i=n==null?void 0:n.translateY,a="top",l="left"):(o.advancedStyleParams.linear.x0=-t.width/2,o.advancedStyleParams.linear.x1=t.width/2,o.advancedStyleParams.radial.r0=0,o.advancedStyleParams.radial.r1=t.width/2),n.translatePlacement){case"top":s=t.width/2,i=0,a="top",o.advancedStyleParams.linear.x0=-t.width/2,o.advancedStyleParams.linear.x1=t.width/2,o.advancedStyleParams.radial.y0=o.textLine.data.length*t.lineHeight/2,o.advancedStyleParams.radial.y1=o.textLine.data.length*t.lineHeight/2,o.advancedStyleParams.conic.y=o.textLine.data.length*t.lineHeight/2;break;case"top-start":s=0,i=0,a="top",l="start",o.advancedStyleParams.linear.x0=0,o.advancedStyleParams.linear.x1=t.width,o.advancedStyleParams.radial.x0=t.width/2,o.advancedStyleParams.radial.y0=o.textLine.data.length*t.lineHeight/2,o.advancedStyleParams.radial.x1=t.width/2,o.advancedStyleParams.radial.y1=o.textLine.data.length*t.lineHeight/2,o.advancedStyleParams.conic.x=t.width/2,o.advancedStyleParams.conic.y=o.textLine.data.length*t.lineHeight/2;break;case"top-end":s=t.width,i=0,a="top",l="end",o.advancedStyleParams.linear.x0=0,o.advancedStyleParams.linear.x1=-t.width,o.advancedStyleParams.radial.x0=-t.width/2,o.advancedStyleParams.radial.y0=o.textLine.data.length*t.lineHeight/2,o.advancedStyleParams.radial.x1=-t.width/2,o.advancedStyleParams.radial.y1=o.textLine.data.length*t.lineHeight/2,o.advancedStyleParams.conic.x=-t.width/2,o.advancedStyleParams.conic.y=o.textLine.data.length*t.lineHeight/2;break;case"bottom":s=t.width/2,i=t.height,a="bottom",o.advancedStyleParams.linear.x0=-t.width/2,o.advancedStyleParams.linear.x1=t.width/2,o.advancedStyleParams.radial.y0=-o.textLine.data.length*t.lineHeight/2,o.advancedStyleParams.radial.y1=-o.textLine.data.length*t.lineHeight/2,o.advancedStyleParams.conic.x=0,o.advancedStyleParams.conic.y=-o.textLine.data.length*t.lineHeight/2;break;case"bottom-start":s=0,i=t.height,a="bottom",l="start",o.advancedStyleParams.linear.x0=0,o.advancedStyleParams.linear.x1=t.width,o.advancedStyleParams.radial.x0=t.width/2,o.advancedStyleParams.radial.y0=-o.textLine.data.length*t.lineHeight/2,o.advancedStyleParams.radial.x1=t.width/2,o.advancedStyleParams.radial.y1=-o.textLine.data.length*t.lineHeight/2,o.advancedStyleParams.conic.x=t.width/2,o.advancedStyleParams.conic.y=-o.textLine.data.length*t.lineHeight/2;break;case"bottom-end":s=t.width,i=t.height,a="bottom",l="end",o.advancedStyleParams.linear.x0=0,o.advancedStyleParams.linear.x1=-t.width,o.advancedStyleParams.radial.x0=-t.width/2,o.advancedStyleParams.radial.y0=-o.textLine.data.length*t.lineHeight/2,o.advancedStyleParams.radial.x1=-t.width/2,o.advancedStyleParams.radial.y1=-o.textLine.data.length*t.lineHeight/2,o.advancedStyleParams.conic.x=-t.width/2,o.advancedStyleParams.conic.y=-o.textLine.data.length*t.lineHeight/2;break;case"left":s=0,i=t.height/2,l="start",o.advancedStyleParams.linear.x0=0,o.advancedStyleParams.linear.x1=t.width,o.advancedStyleParams.radial.x0=t.width/2,o.advancedStyleParams.radial.x1=t.width/2,o.advancedStyleParams.conic.x=t.width/2,o.advancedStyleParams.conic.y=0;break;case"right":s=t.width,i=t.height/2,l="end",o.advancedStyleParams.linear.x0=0,o.advancedStyleParams.linear.x1=-t.width,o.advancedStyleParams.radial.x0=-t.width/2,o.advancedStyleParams.radial.x1=-t.width/2,o.advancedStyleParams.conic.x=-t.width/2,o.advancedStyleParams.conic.y=0;break}if(t.translateX=s,t.translateY=i,yt(n==null?void 0:n.textBaseline)&&(t.textBaseline=a),yt(n==null?void 0:n.textAlign)&&(t.textAlign=l),["text","multi-line-text"].includes(t.contentType))switch(t.textBaseline){case"middle":o.textLine.yOffsetValue=(o.textLine.data.length-1)*t.lineHeight/2;break;case"bottom":case"alphabetic":case"ideographic":o.textLine.yOffsetValue=(o.textLine.data.length-1)*t.lineHeight+(t.lineHeight-parseInt(t.fontSize))/2;break;case"top":case"hanging":o.textLine.yOffsetValue=-t.lineHeight/2+parseInt(t.fontSize)/2;break}return o},Gl=function(e){typeof window>"u"||e&&(Object.defineProperty(window,"MutationObserver",{writable:!1,configurable:!1}),Object.defineProperty(window,"requestAnimationFrame",{writable:!1,configurable:!1}))},Wo=function(){function e(t,n){this.props=t,this.options=n,this.canvas=e.createCanvas(this.options.width,this.options.height),this.recommendOptions=$0(this.canvas,this.options,this.props)}return e.createCanvas=function(t,n){var r,o=window.devicePixelRatio||1,s=document.createElement("canvas");return s.width=t*o,s.height=n*o,s.style.width="".concat(t,"px"),s.style.height="".concat(n,"px"),(r=s.getContext("2d"))===null||r===void 0||r.setTransform(o,0,0,o,0,0),s},e.clearCanvas=function(t){var n=t.getContext("2d");if(n===null)throw new Error("get context error");n.restore(),n.resetTransform(),n.clearRect(0,0,t.width,t.height);var r=window.devicePixelRatio||1;n.setTransform(r,0,0,r,0,0)},e.prototype.getCanvas=function(){return this.canvas},e.prototype.clear=function(){e.clearCanvas(this.canvas)},e.prototype.draw=function(){var t=this,n=this.canvas.getContext("2d");if(n===null)throw new Error("get context error");return this.options.auxiliaryLine&&(n.beginPath(),n.rect(0,0,this.options.width,this.options.height),n.lineWidth=1,n.strokeStyle="#000",n.stroke(),n.closePath(),n.beginPath(),n.rect(this.options.translateX,this.options.translateY,1,1),n.lineWidth=1,n.strokeStyle="#f00",n.stroke(),n.closePath()),this.setStyle(n),n.save(),n.translate(this.options.translateX,this.options.translateY),n.rotate(this.options.rotate),new Promise(function(r){switch(t.options.contentType){case"text":t.drawText(n,r);break;case"image":t.drawImage(n,r);break;case"multi-line-text":t.drawMultiLineText(n,r);break;case"rich-text":t.drawRichText(n,r);break}})},e.prototype.setStyle=function(t){var n,r="fillStyle";this.options.textType==="stroke"&&(r="strokeStyle");var o=this.options.fontColor;if(!((n=this.options)===null||n===void 0)&&n.advancedStyle)switch(this.options.advancedStyle.type){case"linear":o=this.createLinearGradient(t);break;case"radial":o=this.createRadialGradient(t);break;case"conic":o=this.createConicGradient(t);break;case"pattern":o=this.createPattern(t);break}t[r]&&o&&(t[r]=o),this.options.textAlign&&(t.textAlign=this.options.textAlign),this.options.textBaseline&&(t.textBaseline=this.options.textBaseline),t.globalAlpha=this.options.globalAlpha,this.options.shadowStyle&&(t.shadowBlur=Ue(this.options.shadowStyle.shadowBlur,0),t.shadowColor=Ue(this.options.shadowStyle.shadowColor,"#00000000"),t.shadowOffsetX=Ue(this.options.shadowStyle.shadowOffsetX,0),t.shadowOffsetY=Ue(this.options.shadowStyle.shadowOffsetY,0)),Hf(this.options.extraDrawFunc)&&this.options.extraDrawFunc(t)},e.prototype.createLinearGradient=function(t){var n,r,o,s,i,a,l,c,u,f,d,h,v,m,w,S=t.createLinearGradient(Ue((o=(r=(n=this.options.advancedStyle)===null||n===void 0?void 0:n.params)===null||r===void 0?void 0:r.linear)===null||o===void 0?void 0:o.x0,this.recommendOptions.advancedStyleParams.linear.x0),Ue((a=(i=(s=this.options.advancedStyle)===null||s===void 0?void 0:s.params)===null||i===void 0?void 0:i.linear)===null||a===void 0?void 0:a.y0,0),Ue((u=(c=(l=this.options.advancedStyle)===null||l===void 0?void 0:l.params)===null||c===void 0?void 0:c.linear)===null||u===void 0?void 0:u.x1,this.recommendOptions.advancedStyleParams.linear.x1),Ue((h=(d=(f=this.options.advancedStyle)===null||f===void 0?void 0:f.params)===null||d===void 0?void 0:d.linear)===null||h===void 0?void 0:h.y1,0));return(w=(m=(v=this.options)===null||v===void 0?void 0:v.advancedStyle)===null||m===void 0?void 0:m.colorStops)===null||w===void 0||w.forEach(function(T){S.addColorStop(T.offset,T.color)}),S},e.prototype.createConicGradient=function(t){var n,r,o,s,i,a,l,c,u,f,d,h,v,m,w,S=t.createConicGradient(Ue((s=(o=(r=(n=this.options)===null||n===void 0?void 0:n.advancedStyle)===null||r===void 0?void 0:r.params)===null||o===void 0?void 0:o.conic)===null||s===void 0?void 0:s.startAngle,0),Ue((c=(l=(a=(i=this.options)===null||i===void 0?void 0:i.advancedStyle)===null||a===void 0?void 0:a.params)===null||l===void 0?void 0:l.conic)===null||c===void 0?void 0:c.x,this.recommendOptions.advancedStyleParams.conic.x),Ue((h=(d=(f=(u=this.options)===null||u===void 0?void 0:u.advancedStyle)===null||f===void 0?void 0:f.params)===null||d===void 0?void 0:d.conic)===null||h===void 0?void 0:h.y,this.recommendOptions.advancedStyleParams.conic.y));return(w=(m=(v=this.options)===null||v===void 0?void 0:v.advancedStyle)===null||m===void 0?void 0:m.colorStops)===null||w===void 0||w.forEach(function(T){S.addColorStop(T.offset,T.color)}),S},e.prototype.createRadialGradient=function(t){var n,r,o,s,i,a,l,c,u,f,d,h,v,m,w,S,T,k,x,B,N,z,Q,F,E,K,M,ae=t.createRadialGradient(Ue((s=(o=(r=(n=this.options)===null||n===void 0?void 0:n.advancedStyle)===null||r===void 0?void 0:r.params)===null||o===void 0?void 0:o.radial)===null||s===void 0?void 0:s.x0,this.recommendOptions.advancedStyleParams.radial.x0),Ue((c=(l=(a=(i=this.options)===null||i===void 0?void 0:i.advancedStyle)===null||a===void 0?void 0:a.params)===null||l===void 0?void 0:l.radial)===null||c===void 0?void 0:c.y0,this.recommendOptions.advancedStyleParams.radial.y0),Ue((h=(d=(f=(u=this.options)===null||u===void 0?void 0:u.advancedStyle)===null||f===void 0?void 0:f.params)===null||d===void 0?void 0:d.radial)===null||h===void 0?void 0:h.r0,this.recommendOptions.advancedStyleParams.radial.r0),Ue((S=(w=(m=(v=this.options)===null||v===void 0?void 0:v.advancedStyle)===null||m===void 0?void 0:m.params)===null||w===void 0?void 0:w.radial)===null||S===void 0?void 0:S.x1,this.recommendOptions.advancedStyleParams.radial.x1),Ue((B=(x=(k=(T=this.options)===null||T===void 0?void 0:T.advancedStyle)===null||k===void 0?void 0:k.params)===null||x===void 0?void 0:x.radial)===null||B===void 0?void 0:B.y1,this.recommendOptions.advancedStyleParams.radial.y1),Ue((F=(Q=(z=(N=this.options)===null||N===void 0?void 0:N.advancedStyle)===null||z===void 0?void 0:z.params)===null||Q===void 0?void 0:Q.radial)===null||F===void 0?void 0:F.r1,this.recommendOptions.advancedStyleParams.radial.r1));return(M=(K=(E=this.options)===null||E===void 0?void 0:E.advancedStyle)===null||K===void 0?void 0:K.colorStops)===null||M===void 0||M.forEach(function(be){ae.addColorStop(be.offset,be.color)}),ae},e.prototype.createPattern=function(t){var n,r,o,s,i,a,l,c;return t.createPattern((s=(o=(r=(n=this.options)===null||n===void 0?void 0:n.advancedStyle)===null||r===void 0?void 0:r.params)===null||o===void 0?void 0:o.pattern)===null||s===void 0?void 0:s.image,((c=(l=(a=(i=this.options)===null||i===void 0?void 0:i.advancedStyle)===null||a===void 0?void 0:a.params)===null||l===void 0?void 0:l.pattern)===null||c===void 0?void 0:c.repetition)||"")},e.prototype.setText=function(t,n){var r="fillText";this.options.textType==="stroke"&&(r="strokeText"),t[r]&&t[r](n.text,n.x,n.y,n.maxWidth)},e.prototype.drawText=function(t,n){this.setText(t,{text:this.options.content,x:0,y:0-this.recommendOptions.textLine.yOffsetValue,maxWidth:this.options.textRowMaxWidth||this.options.width}),n(t.canvas)},e.prototype.drawImage=function(t,n){var r=this;Wl(this.options.image).then(function(o){var s=r.getImageRect(o),i=s.width,a=s.height,l=r.getDrawImagePosition(i,a);t.drawImage(o,l.x,l.y,i,a),n(t.canvas)})},e.prototype.drawMultiLineText=function(t,n){var r=this,o=this.recommendOptions.textLine.data,s=this.recommendOptions.textLine.yOffsetValue;o.forEach(function(i,a){r.setText(t,{text:i,x:0,y:r.options.lineHeight*a-s,maxWidth:r.options.textRowMaxWidth||r.options.width})}),n(t.canvas)},e.prototype.drawRichText=function(t,n){return Ft(this,void 0,void 0,function(){var r,o=this;return Ot(this,function(s){switch(s.label){case 0:return[4,O0(t,this.options)];case 1:return r=s.sent(),Wl(V0(r.element),r.width,r.height).then(function(i){var a=o.getDrawImagePosition(i.width,i.height);t.drawImage(i,a.x,a.y,i.width,i.height),n(t.canvas)}),[2]}})})},e.prototype.getImageRect=function(t){var n={width:this.options.imageWidth||0,height:this.options.imageHeight||0};switch(!0){case(n.width!==0&&n.height===0):n.height=n.width*t.height/t.width;break;case(n.width===0&&n.height!==0):n.width=n.height*t.width/t.height;break;case(n.width===0&&n.height===0):n.width=t.width,n.height=t.height;break}return n},e.prototype.getDrawImagePosition=function(t,n){var r,o,s={x:-t/2,y:-n/2};switch(this.options.translatePlacement){case"top":s.x=-t/2,s.y=0;break;case"top-start":s.x=0,s.y=0;break;case"top-end":s.x=-t,s.y=0;break;case"bottom":s.x=-t/2,s.y=-n;break;case"bottom-start":s.x=0,s.y=-n;break;case"bottom-end":s.x=-t,s.y=-n;break;case"left":s.x=0,s.y=-n/2;break;case"right":s.x=-t,s.y=-n/2;break}return!yt((r=this.props)===null||r===void 0?void 0:r.translateX)&&(s.x=0),!yt((o=this.props)===null||o===void 0?void 0:o.translateY)&&(s.y=0),s},e}(),R0=function(){function e(t,n){var r,o,s,i;this.options=t,this.partialWidth=this.options.width,this.partialHeight=this.options.height,this.rows=((r=this.options.gridLayoutOptions)===null||r===void 0?void 0:r.rows)||1,this.cols=((o=this.options.gridLayoutOptions)===null||o===void 0?void 0:o.cols)||1,this.matrix=((s=this.options.gridLayoutOptions)===null||s===void 0?void 0:s.matrix)||M0(this.rows,this.cols,1),this.gap=((i=this.options.gridLayoutOptions)===null||i===void 0?void 0:i.gap)||[0,0],this.partialCanvas=n}return e.prototype.draw=function(){var t,n,r,o,s,i,a,l,c=Wo.createCanvas(((t=this.options.gridLayoutOptions)===null||t===void 0?void 0:t.width)||this.partialWidth*this.cols+this.gap[0]*this.cols,((n=this.options.gridLayoutOptions)===null||n===void 0?void 0:n.height)||this.partialHeight*this.rows+this.gap[1]*this.rows),u=c.getContext("2d");!((r=this.options.gridLayoutOptions)===null||r===void 0)&&r.backgroundImage&&(u==null||u.drawImage((o=this.options.gridLayoutOptions)===null||o===void 0?void 0:o.backgroundImage,0,0,(s=this.options.gridLayoutOptions)===null||s===void 0?void 0:s.width,(i=this.options.gridLayoutOptions)===null||i===void 0?void 0:i.height));for(var f=0;f0}},e.prototype.checkParentElementType=function(){return["html","body"].includes(this.parentElement.tagName.toLocaleLowerCase())?"root":"custom"},e.prototype.checkWatermarkElement=function(){return Ft(this,void 0,void 0,function(){return Ot(this,function(t){switch(t.label){case 0:return this.parentElement.contains(this.watermarkDom)?[3,2]:(this.remove(),[4,this.create()]);case 1:t.sent(),t.label=2;case 2:return this.bindCheckWatermarkElementEvent(),[2]}})})},e.prototype.bindMutationObserve=function(){var t=this;this.watermarkDom&&(this.bindCheckWatermarkElementEvent(),this.observer=new MutationObserver(function(n){return Ft(t,void 0,void 0,function(){return Ot(this,function(r){switch(r.label){case 0:return n.length>0?(this.remove(),[4,this.create()]):[3,2];case 1:r.sent(),r.label=2;case 2:return[2]}})})}),this.observer.observe(this.watermarkDom,{attributes:!0,childList:!0,subtree:!0,characterData:!0}),this.parentObserve=new MutationObserver(function(n){return Ft(t,void 0,void 0,function(){var r,o,s,i;return Ot(this,function(a){switch(a.label){case 0:r=0,o=n,a.label=1;case 1:return r{const r=_f(),o=bf();Ee(()=>{const s=new Ff,i=a=>{var c;const l={content:o.value.title,fontColor:"#76747f",globalAlpha:a.mode==="blind"?.005:.165,...a};(c=l.image)!=null&&c.startsWith("/")&&(l.image=nt(l.image)),it(t)&&s.changeOptions(l)};pe([t,r],()=>at(()=>{t.value?Mf(n).then(()=>{i(it(e))}):s.destroy()}),{immediate:!0}),Me(e)&&pe(e,i)})},Wf=Symbol(""),Ao=q({}),j0=e=>{Me(e)?pe(e,t=>{Ao.value=t},{immediate:!0}):Bv(e)?pe(e,t=>{Ao.value=t}):Ao.value=e},H0=e=>{const t=$e(Wf),n=Qr();return P(()=>{const{watermark:r}=n.value;return{...it(e),...t.value,...$n(r)?r:{}}})},F0=e=>{e.provide(Wf,Ao)};var W0={};const z0=$t({enhance({app:e}){F0(e)},setup(){const e=Qr(),t=H0(P(()=>{const{watermark:r}=e.value;return $n(r)?{}:W0})),n=P(()=>{const{watermark:r}=e.value;return!!(r??!0)});D0(t,n,300)}}),G0=Object.freeze(Object.defineProperty({__proto__:null,default:z0},Symbol.toStringTag,{value:"Module"})),U0={locales:{"/":{selectLanguageName:"简体中文",selectLanguageText:"选择语言",appearanceText:"外观",lightModeSwitchTitle:"切换为浅色主题",darkModeSwitchTitle:"切换为深色主题",outlineLabel:"此页内容",returnToTopLabel:"返回顶部",editLinkText:"在 GitHub 上编辑此页面",contributorsText:"贡献者",prevPageLabel:"上一页",nextPageLabel:"下一页",lastUpdated:{text:"Releases"},notFound:{code:"404",title:"页面未找到",quote:"但是,如果你不改变方向,并且一直寻找,最终可能会到达你要去的地方。",linkText:"返回首页"},encryptButtonText:"确认",encryptPlaceholder:"请输入密码",encryptGlobalText:"本站只允许密码访问",encryptPageText:"本页面只允许密码访问",footer:{message:"MIT License",copyright:"Copyright © 2024-present FastAPI Practices"},logo:"https://fastapi.tiangolo.com/img/favicon.png",docsRepo:"https://github.com/fastapi-practices/fastapi_best_architecture_docs",docsBranch:"master",docsDir:"docs",social:[{icon:"github",link:"https://github.com/fastapi-practices/fastapi_best_architecture"}],navbarSocialInclude:["github"],navbar:[{text:"演示",items:[{text:"Arco Design Pro 版本",link:"https://fba.xwboy.top/"}]},{text:"Beta",items:[{text:"贡献",link:"https://github.com/fastapi-practices/fastapi_best_architecture/tree/master/backend#readme"}]},{text:"技术支持",icon:"fluent-emoji-high-contrast:unicorn",link:"https://github.com/fastapi-practices/fastapi_best_architecture/issues"},{text:"赞助",icon:"ci:coffee",link:"https://wu-clan.github.io/sponsor/"},{text:"互动",icon:"mage:we-chat",link:"https://wu-clan.github.io/homepage/"},{text:"友情链接",icon:"fa-solid:user-friends",link:"/friends"}]}},appearance:!0,blog:!1,navbarSocialInclude:["github"],aside:!0,outline:[2,3],editLink:!0,contributors:!0,prevPage:!0,nextPage:!0,footer:{message:"MIT License",copyright:"Copyright © 2024-present FastAPI Practices"},logo:"https://fastapi.tiangolo.com/img/favicon.png",docsRepo:"https://github.com/fastapi-practices/fastapi_best_architecture_docs",docsBranch:"master",docsDir:"docs",social:[{icon:"github",link:"https://github.com/fastapi-practices/fastapi_best_architecture"}],editLinkText:"在 GitHub 上编辑此页面",lastUpdated:{text:"Releases"}},q0={"ci:coffee":"vpi-22auzsne","mage:we-chat":"vpi-6bm9k4ht","fa-solid:user-friends":"vpi-nfubvipg","fluent-emoji-high-contrast:unicorn":"vpi-ppms4pwd"};var zf=/#.*$/,K0=/(index|README)?\.(md|html)$/,Mt=typeof document<"u";function fi(e){return Array.isArray(e)?e:[e]}function ir(e,t,n=!1){if(t===void 0)return!1;if(e=Ul(`/${e.replace(/^\//,"")}`),n)return new RegExp(t).test(e);if(Ul(t)!==e)return!1;const r=t.match(zf);return r?(Mt?location.hash:"")===r[0]:!0}function Ul(e){return decodeURI(e).replace(zf,"").replace(K0,"")}function Y0(e,t){let n,r=!1;return()=>{n&&clearTimeout(n),r?n=setTimeout(e,t):(e(),r=!0,setTimeout(()=>{r=!1},t))}}function J0(e){return!Vt(e)||/github\.com/.test(e)?"GitHub":/bitbucket\.org/.test(e)?"Bitbucket":/gitlab\.com/.test(e)?"GitLab":/gitee\.com/.test(e)?"Gitee":null}var Q0={GitHub:":repo/edit/:branch/:path",GitLab:":repo/-/edit/:branch/:path",Gitee:":repo/edit/:branch/:path",Bitbucket:":repo/src/:branch/:path?mode=edit&spa=0&at=:branch&fileviewer=file-view-default"};function X0({docsRepo:e,editLinkPattern:t}){if(t)return t;const n=J0(e);return n!==null?Q0[n]:null}function Z0({docsRepo:e,docsBranch:t,docsDir:n,filePathRelative:r,editLinkPattern:o}){if(!r)return null;const s=X0({docsRepo:e,editLinkPattern:o});return s?s.replace(/:repo/,Vt(e)?e:`https://github.com/${e}`).replace(/:branch/,t).replace(/:path/,Ji(`${rf(n)}/${r}`)):null}function zo(e){const{notFound:t,meta:n,path:r}=sr(e);return t?{text:r,link:r}:{text:n.title||r,link:r,icon:n.icon}}function fn(e="",t=""){return zm(t)||ef(t)?t:nf(`${e}/${t}`.replace(/\/+/g,"/"))}function Gf(e,t=""){return Nv(fn(e,t))}const e1=[],t1={"/":{"/guide/":[{text:"简介",collapsed:!1,prefix:"summary/",items:[{text:"为什么选择我们?",link:"why"},{text:"快速开始",link:"quick-start"},{text:"精简版",link:"fsm"}]},{text:"参考",collapsed:!1,prefix:"reference/",items:[{text:"登录",link:"login"},{text:"OAuth 2.0",link:"oauth2"},{text:"跨域",link:"cors"},{text:"权限",link:"permission"},{text:"事务",link:"transaction"},{text:"代码生成",link:"code-generation"}]},{text:"部署",collapsed:!1,prefix:"deploy/",items:[{text:"Docker",link:"Docker"},{text:"传统",link:"legacy"}]}]},__auto__:{}};var n1={};const zn="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),Vs=Array.from({length:64},(e,t)=>t),bo=e=>Array(e).fill(-1),nn=[...bo(46),0,1,...Vs.slice(54,64),...bo(7),...Vs.slice(2,28),...bo(6),...Vs.slice(28,54),...bo(5)],ql=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],Kl=[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946,1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055,3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504,976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462],Uf=[1332899944,1700884034,1701343084,1684370003,1668446532,1869963892],di=(e,t)=>{if(t<=0||t>e.length)throw Error(`Illegal len: ${t}`);let n=0,r,o;const s=[];for(;n>2&63]),r=(r&3)<<4,n>=t){s.push(zn[r&63]);break}if(o=e[n++]&255,r|=o>>4&15,s.push(zn[r&63]),r=(o&15)<<2,n>=t){s.push(zn[r&63]);break}o=e[n++]&255,r|=o>>6&3,s.push(zn[r&63]),s.push(zn[o&63])}return s.join("")},r1=(e,t)=>{const n=e.length;let r=0,o=0,s,i,a,l,c,u;const f=[];for(;r>>0,c|=(i&48)>>4,f.push(String.fromCharCode(c)),++o>=t||r>=n)||(u=e.charCodeAt(r++),a=u>>0,c|=(a&60)>>2,f.push(String.fromCharCode(c)),++o>=t||r>=n)));)u=e.charCodeAt(r++),l=u>>0,c|=l,f.push(String.fromCharCode(c)),++o;return f.map(d=>d.charCodeAt(0))},o1=(e,t)=>{let n=null;for(typeof e=="number"&&(n=e,e=()=>null);n!==null||(n=e())!==null;)n<128?t(n&127):n<2048?(t(n>>6&31|192),t(n&63|128)):n<65536?(t(n>>12&15|224),t(n>>6&63|128),t(n&63|128)):(t(n>>18&7|240),t(n>>12&63|128),t(n>>6&63|128),t(n&63|128)),n=null},s1=(e,t)=>{let n,r=null;for(;(n=r!==null?r:e())!==null;){if(n>=55296&&n<=57343&&(r=e())!==null&&r>=56320&&r<=57343){t((n-55296)*1024+r-56320+65536),r=null;continue}t(n)}r!==null&&t(r)},i1=(e,t)=>{s1(e,function(n){o1(n,t)})},Go=typeof process=="object"&&n1.NEXT_RUNTIME==="edge"?setTimeout:typeof setImmediate=="function"?setImmediate:typeof process=="object"&&typeof process.nextTick=="function"?process.nextTick:setTimeout,a1=e=>{const t=[];let n=0;return i1(()=>n>=e.length?null:e.charCodeAt(n++),r=>{t.push(r)}),t},jr=(e,t,n,r)=>{let o,s=e[t],i=e[t+1];return s^=n[0],o=r[s>>>24],o+=r[256|s>>16&255],o^=r[512|s>>8&255],o+=r[768|s&255],i^=o^n[1],o=r[i>>>24],o+=r[256|i>>16&255],o^=r[512|i>>8&255],o+=r[768|i&255],s^=o^n[2],o=r[s>>>24],o+=r[256|s>>16&255],o^=r[512|s>>8&255],o+=r[768|s&255],i^=o^n[3],o=r[i>>>24],o+=r[256|i>>16&255],o^=r[512|i>>8&255],o+=r[768|i&255],s^=o^n[4],o=r[s>>>24],o+=r[256|s>>16&255],o^=r[512|s>>8&255],o+=r[768|s&255],i^=o^n[5],o=r[i>>>24],o+=r[256|i>>16&255],o^=r[512|i>>8&255],o+=r[768|i&255],s^=o^n[6],o=r[s>>>24],o+=r[256|s>>16&255],o^=r[512|s>>8&255],o+=r[768|s&255],i^=o^n[7],o=r[i>>>24],o+=r[256|i>>16&255],o^=r[512|i>>8&255],o+=r[768|i&255],s^=o^n[8],o=r[s>>>24],o+=r[256|s>>16&255],o^=r[512|s>>8&255],o+=r[768|s&255],i^=o^n[9],o=r[i>>>24],o+=r[256|i>>16&255],o^=r[512|i>>8&255],o+=r[768|i&255],s^=o^n[10],o=r[s>>>24],o+=r[256|s>>16&255],o^=r[512|s>>8&255],o+=r[768|s&255],i^=o^n[11],o=r[i>>>24],o+=r[256|i>>16&255],o^=r[512|i>>8&255],o+=r[768|i&255],s^=o^n[12],o=r[s>>>24],o+=r[256|s>>16&255],o^=r[512|s>>8&255],o+=r[768|s&255],i^=o^n[13],o=r[i>>>24],o+=r[256|i>>16&255],o^=r[512|i>>8&255],o+=r[768|i&255],s^=o^n[14],o=r[s>>>24],o+=r[256|s>>16&255],o^=r[512|s>>8&255],o+=r[768|s&255],i^=o^n[15],o=r[i>>>24],o+=r[256|i>>16&255],o^=r[512|i>>8&255],o+=r[768|i&255],s^=o^n[16],e[t]=i^n[17],e[t+1]=s,e},Kn=(e,t)=>{let n=0;for(let r=0;r<4;++r)n=n<<8|e[t]&255,t=(t+1)%e.length;return{key:n,offp:t}},Yl=(e,t,n)=>{const r=t.length,o=n.length;let s=0,i=[0,0],a;for(let l=0;l{const o=n.length,s=r.length;let i=0,a=[0,0],l;for(let c=0;c{const s=Uf.slice(),i=s.length;if(n<4||n>31){const d=new Error(`Illegal number of rounds (4-31): ${n}`);if(r===!1)return Promise.reject(d);throw d}if(t.length!==16){const d=new Error(`Illegal salt length: ${t.length} != 16`);if(r===!1)return Promise.reject(d);throw d}n=1<>>0;let a,l,c=0,u;Int32Array?(a=new Int32Array(ql),l=new Int32Array(Kl)):(a=ql.slice(),l=Kl.slice()),l1(t,e,a,l);const f=()=>{if(c100)););}else{for(c=0;c<64;c++)for(u=0;u>1;u++)jr(s,u<<1,a,l);const d=[];for(c=0;c>24&255)>>>0),d.push((s[c]>>16&255)>>>0),d.push((s[c]>>8&255)>>>0),d.push((s[c]&255)>>>0);return r===!1?Promise.resolve(d):d}if(r===!1)return new Promise(d=>Go(()=>{f().then(d)}))};if(r===!1)return f();{let d;for(;;)if(typeof(d=f())<"u")return d||[]}},c1=e=>{try{let t;typeof window<"u"?t=window.crypto??window.msCrypto:t=globalThis.crypto;const n=new Uint32Array(e);return t==null||t.getRandomValues(n),Array.from(n)}catch{throw Error("WebCryptoAPI is not available")}},hi=(e=10)=>{if(typeof e!="number")throw Error("Illegal arguments: "+typeof e);e<4?e=4:e>31&&(e=31);const t=[];return t.push("$2a$"),e<10&&t.push("0"),t.push(e.toString()),t.push("$"),t.push(di(c1(16),16)),t.join("")},u1=(e=10)=>{if(typeof e!="number")throw Error("illegal arguments: "+typeof e);return new Promise((t,n)=>Go(()=>{try{t(hi(e))}catch(r){n(r)}}))};function Ql(e,t,n,r){if(typeof e!="string"||typeof t!="string"){const h=new Error("Invalid string / salt: Not a string");if(n===!1)return Promise.reject(h);throw h}let o,s;if(t.charAt(0)!=="$"||t.charAt(1)!=="2"){const h=new Error("Invalid salt version: "+t.substring(0,2));if(n===!1)return Promise.reject(h);throw h}if(t.charAt(2)==="$")o="\0",s=3;else{if(o=t.charAt(2),o!=="a"&&o!=="b"&&o!=="y"||t.charAt(3)!=="$"){const h=Error("Invalid salt revision: "+t.substring(2,4));if(n===!1)return Promise.reject(h);throw h}s=4}if(t.charAt(s+2)>"$"){const h=new Error("Missing salt rounds");if(n===!1)return Promise.reject(h);throw h}const i=parseInt(t.substring(s,s+1),10)*10,a=parseInt(t.substring(s+1,s+2),10),l=i+a,c=t.substring(s+3,s+25);e+=o>="a"?"\0":"";const u=a1(e),f=r1(c,16),d=h=>{const v=[];return v.push("$2"),o>="a"&&v.push(o),v.push("$"),l<10&&v.push("0"),v.push(l.toString()),v.push("$"),v.push(di(f,f.length)),v.push(di(h,Uf.length*4-1)),v.join("")};return n===!1?Jl(u,f,l,!1).then(h=>d(h)):d(Jl(u,f,l,!0))}const f1=function(e,t,n){return typeof e=="string"&&typeof t=="number"?u1(t).then(r=>Ql(e,r,!1)):typeof e=="string"&&typeof t=="string"?Ql(e,t,!1):Promise.reject(new Error(`Illegal arguments: ${typeof e}, ${typeof t}`))},d1=(e,t,n)=>new Promise((r,o)=>{if(typeof e!="string"||typeof t!="string"){Go(()=>o(new Error(`Illegal arguments: ${typeof e}, ${typeof t}`)));return}if(t.length!==60){Go(()=>o(!1));return}f1(e,t.substring(0,29)).then(s=>r(s===t)).catch(s=>o(s))}),h1=[!1,":","",[],{}],p1={};var v1={"/":{home:"首页",blog:"博客",tag:"标签",archive:"归档",category:"分类"},"/en/":{home:"Home",blog:"Blog",tag:"Tags",archive:"Archives",category:"Categories"}},qf=Symbol(""),g1=q(U0);function oa(){return g1}function m1(){const e=$e(qf);if(!e)throw new Error("useThemeLocaleData() is called without provider.");return e}function _1(e,t){const{locales:n,...r}=e;return{...r,...n==null?void 0:n[t]}}function b1(e){const t=oa(),n=e._context.provides[Zi],r=P(()=>_1(t.value,n.routeLocale.value));e.provide(qf,r),Object.defineProperties(e.config.globalProperties,{$theme:{get(){return t.value}},$themeLocale:{get(){return r.value}}})}var Kf=Symbol("");function y1(e){const t=oa(),n=t.value.transition,r=typeof n=="object"?n.appearance===!1:n===!1,o=t.value.appearance,s=o==="force-dark"?q(!0):o?Tm({storageKey:"vuepress-theme-appearance",disableTransition:r,initialValue:()=>typeof o=="string"?o:"auto",...typeof o=="object"?o:{}}):q(!1);e.provide(Kf,s),Object.defineProperty(e.config.globalProperties,"$isDark",{get:()=>s})}function ss(){const e=$e(Kf);if(!e)throw new Error("useDarkMode() is called without provider.");return e}function ie(){const e=m1(),t=ea(),n=Qr(),r=bf(),o=ss(),s=fr();return{theme:e,page:t,frontmatter:n,lang:s,site:r,isDark:o}}var k1=q(q0),w1=()=>k1,Ms=null,_r=null,P1={wait:()=>Ms,pending:()=>{Ms=new Promise(e=>_r=e)},resolve:()=>{_r==null||_r(),Ms=null,_r=null}},Yf=()=>P1;function S1(e){const t=e.options.scrollBehavior;e.options.scrollBehavior=async(...n)=>(await Yf().wait(),t(...n)),e.beforeEach(()=>{Mt&&document.documentElement.classList.remove("smooth")}),e.afterEach(()=>at(()=>{Mt&&document.documentElement.classList.add("smooth")}))}var Jf=q(e1);function Qf(){return Jf}function Zr(){const e=fr();return P(()=>Jf.value.filter(t=>t.lang===e.value))}function Bn(){const{page:e}=ie(),t=Qf(),n=P(()=>t.value.some(o=>o.path===e.value.path)),r=P(()=>{const o=e.value.type;return o==="blog"||o==="blog-archives"||o==="blog-tags"||o==="blog-categories"});return{isBlogPost:n,isBlogLayout:r}}function sa({removeCurrent:e=!0}={}){const t=oa(),{page:n}=ie(),r=yn(),{isBlogPost:o}=Bn(),s=P(()=>{var c,u;const l=r.value;return{label:(u=(c=t.value.locales)==null?void 0:c[l])==null?void 0:u.selectLanguageName,link:l}}),i=l=>{const u=(n.value.filePathRelative?`/${n.value.filePathRelative}`:n.value.path).slice(r.value.length),f=fn(l,u),{notFound:d,path:h}=sr(f);if(!d)return h;const v=t.value.blog;if(o.value&&v!==!1)return nt((v==null?void 0:v.link)||fn(l,"blog/"));const m=nt(t.value.home||"/"),w=sr(nt(l));return w.notFound?m:w.path};return{localeLinks:P(()=>Object.entries(t.value.locales||{}).flatMap(([l,c])=>e&&s.value.label===c.selectLanguageName?[]:{text:c.selectLanguageName,link:i(l)})),currentLang:s}}var ia=q(),Xf=!1,$s=0;function x1(e){const t=q(!1);if(Mt){Xf||L1(),$s++;const n=pe(ia,r=>{var o,s,i;r===e.el.value||(o=e.el.value)!=null&&o.contains(r)?(t.value=!0,(s=e.onFocus)==null||s.call(e)):(t.value=!1,(i=e.onBlur)==null||i.call(e))});Jt(()=>{n(),$s--,$s||C1()})}return Nn(t)}function L1(){document.addEventListener("focusin",Zf),Xf=!0,ia.value=document.activeElement}function C1(){document.removeEventListener("focusin",Zf)}function Zf(){ia.value=document.activeElement}function ed(){const{theme:e}=ie();return P(()=>td(e.value.navbar||[]))}function td(e,t=""){const n=[];return e.forEach(r=>{if(typeof r=="string")n.push(zo(fn(t,r)));else{const{items:o,prefix:s,...i}=r,a={...i};"link"in a&&(a.link=fn(t,a.link)),o!=null&&o.length&&(a.items=td(o,fn(t,s))),n.push(a)}}),n}function T1(){const e=q(!1);function t(){e.value=!0,window.addEventListener("resize",o)}function n(){e.value=!1,window.removeEventListener("resize",o)}function r(){e.value?n():t()}function o(){window.outerWidth>=768&&n()}const s=lt();return pe(()=>s.path,n),{isScreenOpen:e,openScreen:t,closeScreen:n,toggleScreen:r}}var E1=q(A1(h1));function nd(){return E1}function A1([e,t,n,r,o]){return{global:e,separator:t,matches:r,admins:n.split(t),ruleList:Object.keys(o).map(s=>({key:s,match:r[s],rules:o[s].split(t)}))}}var rd=Symbol(""),zt=Vm("2a0a3d6afb2fdf1f",()=>({s:[hi(10),hi(10)],g:"",p:{}}));function Xl(e){const[t,n]=zt.value.s;return t+e+n}function Rs(e){const[t,n]=zt.value.s;return!e.startsWith(t)||!e.endsWith(n)?"":e.slice(t.length,e.length-n.length)}var yo=new Map;async function Zl(e,t,n=":"){const r=[e,t].join(n);if(yo.has(r))return yo.get(r);try{const o=await d1(e,t);return yo.set(r,o),o}catch{return yo.set(r,!1),!1}}var Ns=new Map;function O1(e){if(Ns.has(e))return Ns.get(e);const t=new RegExp(e);return Ns.set(e,t),t}function pi(e,t,n){const r=n||"";if(e[0]==="^"){const o=O1(e);return o.test(t)||r&&o.test(r)}return e.endsWith(".md")?r&&r.endsWith(e):t.startsWith(e)||r.startsWith(e)}function I1(){const{page:e}=ie(),t=lt(),n=nd(),r=P(()=>{const a=t.path,l=e.value.filePathRelative;return n.value.ruleList.length?n.value.matches.some(c=>pi(c,a,l)):!1}),o=P(()=>{if(!n.value.global)return!0;const a=Rs(zt.value.g);return!!a&&n.value.admins.includes(a)}),s=P(()=>{const a=t.path,l=e.value.filePathRelative;return n.value.ruleList.length?n.value.ruleList.filter(c=>pi(c.match,a,l)):[]}),i=P(()=>{if(!r.value)return!0;const a=Rs(zt.value.p.__GLOBAL__||"");if(a&&n.value.admins.includes(a))return!0;for(const{key:l,rules:c}of s.value)if(lm(zt.value.p,l)){const u=Rs(zt.value.p[l]);if(u&&c.includes(u))return!0}return!1});qt(rd,{hasPageEncrypt:r,isGlobalDecrypted:o,isPageDecrypted:i,hashList:s})}function is(){const e=$e(rd);if(!e)throw new Error("useEncrypt() is called without setup");return e}function V1(){const e=nd(),{page:t}=ie(),n=lt(),{hashList:r}=is();async function o(i){if(!i)return!1;for(const a of e.value.admins)if(await Zl(i,a,e.value.separator))return zt.value.g=Xl(a),!0;return!1}async function s(i){if(!i)return!1;const a=n.path,l=t.value.filePathRelative;let c=!1;for(const{match:u,key:f,rules:d}of r.value)if(pi(u,a,l)){for(const h of d)if(await Zl(i,h,e.value.separator)){c=!0,zt.value.p={...zt.value.p,[f]:Xl(h)};break}if(c)break}return c||(c=await o(i)),c}return{compareGlobal:o,comparePage:s}}var{__auto__:M1,...$1}=t1,od=q($1),Oo=q(M1),sd=Symbol("");function R1(){const{page:e,frontmatter:t}=ie(),n=yn(),r=P(()=>t.value.pageLayout!=="home"&&t.value.pageLayout!=="friends"&&t.value.sidebar!==!1&&t.value.layout!=="NotFound"),o=P(()=>r.value?N1(typeof t.value.sidebar=="string"?t.value.sidebar:e.value.path,n.value):[]);qt(sd,o)}function id(){const e=$e(sd);if(!e)throw new Error("useSidebarData() is called without provider.");return e}function N1(e,t){const n=od.value[t];if(n==="auto")return Yn(Oo.value[t]);if(ai(n))return Yn(n,t);if($n(n)){e=decodeURIComponent(e);const r=Object.keys(n).sort((s,i)=>i.split("/").length-s.split("/").length).find(s=>e.startsWith(`${t}${Ji(s)}`))||"",o=r?n[r]:void 0;if(o==="auto")return Yn(r?Oo.value[r]:[],t);if(ai(o))return Yn(o,r);if($n(o)){const s=Gf(r,o.prefix);return Yn(o.items==="auto"?Oo.value[s]:o.items,s)}}return[]}function Yn(e,t=""){const n=[];return e.forEach(r=>{if(St(r))n.push(zo(fn(t,r)));else{const{link:o,items:s,prefix:i,dir:a,...l}=r,c={...l};if(o){c.link=fn(t,o);const f=zo(c.link);c.icon=f.icon}const u=Gf(t,i||a);s==="auto"?c.items=Oo.value[u]:c.items=s!=null&&s.length?Yn(s,u):void 0,n.push(c)}}),n}function B1(e){const t=[];let n=0;for(const r in e){const o=e[r];if(o.items){n=t.push(o);continue}t[n]||t.push({items:[]}),t[n].items.push(o)}return t}function vi(e,t){return Array.isArray(t)?t.some(n=>vi(e,n)):ir(e,t.link?kn(t.link):void 0)?!0:t.items?vi(e,t.items):!1}var D1=vi;function Rt(){const{theme:e,frontmatter:t,page:n}=ie(),r=yn(),o=Kt("(min-width: 960px)"),{isPageDecrypted:s}=is(),i=q(!1),a=P(()=>{const S=od.value[r.value];return!S||S==="auto"||ai(S)?r.value:Object.keys(S).sort((T,k)=>k.split("/").length-T.split("/").length).find(T=>n.value.path.startsWith(nf(T)))||""}),l=id(),c=P(()=>t.value.sidebar!==!1&&l.value.length>0&&t.value.pageLayout!=="home"),u=P(()=>t.value.pageLayout==="home"||t.value.home||t.value.pageLayout==="friends"||t.value.friends||!s.value?!1:t.value.aside!=null?!!t.value.aside:e.value.aside!==!1),f=P(()=>u.value?t.value.aside==null?e.value.aside==="left":t.value.aside==="left":!1),d=P(()=>c.value&&o.value),h=P(()=>c.value?B1(l.value):[]),v=()=>{i.value=!0},m=()=>{i.value=!1};return{isOpen:i,sidebar:l,sidebarKey:a,sidebarGroups:h,hasSidebar:c,hasAside:u,leftAside:f,isSidebarEnabled:d,open:v,close:m,toggle:()=>{i.value?m():v()}}}function j1(e,t){let n;lr(()=>{n=e.value?document.activeElement:void 0}),Ee(()=>{window.addEventListener("keyup",r)}),Jt(()=>{window.removeEventListener("keyup",r)});function r(o){o.key==="Escape"&&e.value&&(t(),n==null||n.focus())}}function H1(e){const{page:t}=ie(),n=lt(),r=q(!1),o=P(()=>e.value.collapsed!=null),s=P(()=>!!e.value.link),i=q(!1),a=()=>{i.value=ir(t.value.path,e.value.link?kn(e.value.link):void 0)};pe([()=>t.value.path,e,()=>n.hash],a),Ee(a);const l=P(()=>i.value?!0:e.value.items?D1(t.value.path,e.value.items):!1),c=P(()=>!!(e.value.items&&e.value.items.length));return lr(()=>{r.value=!!(o.value&&e.value.collapsed)}),pe(()=>[t.value.path,i.value,l.value],()=>{(i.value||l.value)&&(r.value=!1)},{immediate:!0,flush:"post"}),{collapsed:r,collapsible:o,isLink:s,isActiveLink:i,hasActiveLink:l,hasChildren:c,toggle:()=>{o.value&&(r.value=!r.value)}}}function F1(){const{hasSidebar:e}=Rt(),t=Kt("(min-width: 960px)"),n=Kt("(min-width: 1280px)");return{isAsideEnabled:P(()=>!n.value&&!t.value?!1:e.value?n.value:t.value)}}var gi=[],ad=Symbol("");function W1(){const{frontmatter:e,theme:t}=ie(),n=q([]);return tm(()=>{n.value=z1(e.value.outline??t.value.outline)}),qt(ad,n),n}function aa(){const e=$e(ad);if(!e)throw new Error("useHeaders() is called without provider.");return e}function z1(e){const t=Array.from(document.querySelectorAll(".vp-doc :where(h1,h2,h3,h4,h5,h6)")).filter(n=>n.id&&n.hasChildNodes()).map(n=>{const r=Number(n.tagName[1]);return{element:n,title:G1(n),link:`#${n.id}`,level:r}});return U1(t,e)}function G1(e){const t=e.firstChild,n=t==null?void 0:t.firstChild;let r="";for(const s of Array.from((n==null?void 0:n.childNodes)??[]))if(s.nodeType===1){if(s.classList.contains("vp-badge")||s.classList.contains("ignore-header"))continue;r+=s.textContent}else s.nodeType===3&&(r+=s.textContent);let o=t==null?void 0:t.nextSibling;for(;o;)(o.nodeType===1||o.nodeType===3)&&(r+=o.textContent),o=o.nextSibling;return r.trim()}function U1(e,t){if(t===!1)return[];const n=t||2,[r,o]=typeof n=="number"?[n,n]:n==="deep"?[2,6]:n;e=e.filter(i=>i.level>=r&&i.level<=o),gi.length=0;for(const{element:i,link:a}of e)gi.push({element:i,link:a});const s=[];e:for(let i=0;i=0;l--){const c=e[l];if(c.level{if(!n.value)return;const a=window.scrollY,l=window.innerHeight,c=document.body.offsetHeight,u=Math.abs(a+l-c)<1,f=gi.map(({element:h,link:v})=>({link:v,top:K1(h)})).filter(({top:h})=>!Number.isNaN(h)).sort((h,v)=>h.top-v.top);if(!f.length){s(null);return}if(a<1){s(null);return}if(u){s(f[f.length-1].link);return}let d=null;for(const{link:h,top:v}of f){if(v>a+144)break;d=h}s(d)};function s(a){r&&r.classList.remove("active"),a==null?r=null:r=e.value.querySelector(`a[href="${decodeURIComponent(a)}"]`);const l=r;l?(l.classList.add("active"),t.value.style.top=`${l.offsetTop+39}px`,t.value.style.opacity="1"):(t.value.style.top="33px",t.value.style.opacity="0")}const i=Y0(o,100);Ee(()=>{requestAnimationFrame(o),window.addEventListener("scroll",i)}),yu(()=>{s(location.hash)}),Jt(()=>{window.removeEventListener("scroll",i)})}function K1(e){let t=0;for(;e!==document.body;){if(e===null)return Number.NaN;t+=e.offsetTop,e=e.offsetParent}return t}function Y1(){const e=lt(),{frontmatter:t,theme:n}=ie(),{sidebar:r}=Rt(),o=Qf(),s=fr(),{isBlogPost:i}=Bn(),a=P(()=>{if(n.value.prevPage===!1)return null;const c=ec(t.value.prev);return c!==!1?c:i.value?nc(o.value.filter(u=>u.lang===s.value),e.path,-1):tc(mi(r.value),e.path,-1)}),l=P(()=>{if(n.value.nextPage===!1)return null;const c=ec(t.value.next);return c!==!1?c:i.value?nc(o.value.filter(u=>u.lang===s.value),e.path,1):tc(mi(r.value),e.path,1)});return{prev:a,next:l}}function ec(e){return e===!1?null:St(e)?zo(e):$n(e)?e:!1}function mi(e,t=[]){for(const n of e)n.link&&t.push({link:n.link,text:n.text||n.dir||""}),Array.isArray(n.items)&&n.items.length&&mi(n.items,t);return t}function tc(e,t,n){const r=e.findIndex(o=>kn(o.link)===t);if(r!==-1){const o=e[r+n];if(o!=null&&o.link)return{link:o.link,text:o.text}}return null}function nc(e,t,n){const r=e.findIndex(o=>o.path===t);if(r!==-1){const o=e[r+n];return o!=null&&o.path?{link:o.path,text:o.title}:null}return null}function ld(){const{theme:e,page:t,frontmatter:n}=ie();return P(()=>{if(!(n.value.editLink??e.value.editLink??!0))return null;const{docsRepo:o,docsBranch:s="main",docsDir:i="",editLinkText:a}=e.value;if(!o)return null;const l=Z0({docsRepo:o,docsBranch:s,docsDir:i,filePathRelative:t.value.filePathRelative,editLinkPattern:n.value.editLinkPattern??e.value.editLinkPattern});return l?{text:a??"Edit this page",link:l}:null})}function J1(){const{theme:e,page:t,frontmatter:n}=ie(),r=fr(),o=P(()=>{var l;return(l=t.value.git)!=null&&l.updatedTime?new Date(t.value.git.updatedTime):null}),s=P(()=>{var l;return(l=o.value)==null?void 0:l.toISOString()}),i=q(""),a=P(()=>{var l;if(e.value.lastUpdated!==!1)return((l=e.value.lastUpdated)==null?void 0:l.text)||e.value.lastUpdatedText||"Last updated"});return Ee(()=>{lr(()=>{var l,c,u;n.value.lastUpdated===!1||e.value.lastUpdated===!1||(i.value=o.value?new Intl.DateTimeFormat((c=(l=e.value.lastUpdated)==null?void 0:l.formatOptions)!=null&&c.forceLocale?r.value:void 0,((u=e.value.lastUpdated)==null?void 0:u.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(o.value):"")})}),{datetime:i,isoDatetime:s,lastUpdatedText:a}}function Q1(){const{theme:e,page:t,frontmatter:n}=ie();return P(()=>{var i;const r=n.value.contributors??e.value.contributors??!0;if(r===!1)return[];const o=r===!0?[]:fi(r),s=(((i=t.value.git)==null?void 0:i.contributors)??[]).map(({name:a})=>a);return Array.from(new Set([...s,...o]))})}var ko={r:{value:200,offset:36},g:{value:200,offset:36},b:{value:200,offset:36}},Bs={r:{value:32,offset:36},g:{value:32,offset:36},b:{value:32,offset:36}};function X1(e,t,n){const r=ss();let o=null,s=0,i;const a=P(()=>{const h=r.value?Bs:ko;if(!n.value)return h;const v=n.value;if(typeof v=="string"||typeof v=="number"){if(r.value)return Bs;const m=rc(v);return m.length!==3?ko:oc(m)}if(typeof v=="object"){if("r"in v)return r.value?Bs:sc({...ko,...v});const m=r.value?"dark":"light";if(m in v){const w=v[m];if(typeof w=="string"||typeof w=="number"){const S=rc(w);return S.length!==3?ko:oc(S)}return sc({...h,...v})}}return h});Ee(()=>{e.value&&t.value&&(o=e.value.getContext("2d"),i&&window.cancelAnimationFrame(i),l())}),Jt(()=>{i&&window.cancelAnimationFrame(i)});function l(){for(let h=0;h<=35;h++)for(let v=0;v<=35;v++)c(h,v,u(h,v,s),f(h,v,s),d(h,v,s));s=s+.02,i=window.requestAnimationFrame(l)}function c(h,v,m,w,S){o&&(o.fillStyle=`rgb(${m},${w},${S})`,o.fillRect(h,v,1,1))}function u(h,v,m){const w=a.value.r;return Math.floor(w.value+w.offset*Math.cos((h*h-v*v)/300+m))}function f(h,v,m){const w=a.value.g;return Math.floor(w.value+w.offset*Math.sin((h*h*Math.cos(m/4)+v*v*Math.sin(m/3))/300))}function d(h,v,m){const w=a.value.b;return Math.floor(w.value+w.offset*Math.sin(5*Math.sin(m/9)+((h-100)*(h-100)+(v-100)*(v-100))/1100))}}function rc(e){return typeof e=="number"||Number(e)===Number.parseInt(e)?[e,e,e].map(t=>Number(t)):e.includes(",")?e.replace(/\s/g,"").split(",").map(t=>Number(t)):[]}function oc([e,t,n]){return{r:Ds(e),g:Ds(t),b:Ds(n)}}function Ds(e){const t=256-e;return{value:e,offset:t>64?64:t}}function sc(e){return Object.keys(e).forEach(t=>{const n=e[t];n.value=Number(n.value),n.offset=Number(n.offset)}),e}var ic=v1;function Z1(e,t){var n;return((n=ic[e])==null?void 0:n[t])||ic["/"][t]}function Dn(){const{theme:e}=ie(),t=yn();function n(c,u){return{link:(t.value+u).replace(/\/+/g,"/"),text:Z1(t.value,c)}}const r=P(()=>e.value.blog||{}),o=P(()=>n("home","/")),s=P(()=>r.value.postList!==!1?n("blog",r.value.link||"blog/"):o.value),i=P(()=>r.value.tags!==!1?n("tag",r.value.tagsLink||"blog/tags/"):void 0),a=P(()=>r.value.archives!==!1?n("archive",r.value.archivesLink||"blog/archives/"):void 0),l=P(()=>r.value.categories!==!1?n("category",r.value.categoriesLink||"blog/categories/"):void 0);return{home:o,blog:s,tags:i,archive:a,categories:l}}var js=new WeakMap;function cd(e,t,n={}){const{mode:r="replace",route:o=lt(),router:s=ur(),transform:i=f=>f}=n;js.has(s)||js.set(s,new Map);const a=js.get(s);let l=o.query[e];wn(()=>{l=void 0});let c;const u=Di((f,d)=>(c=d,{get(){return f(),i(l!==void 0?l:it(t))},set(h){l!==h&&(l=h,a.set(e,h),d(),at(()=>{if(a.size===0)return;const v=Object.fromEntries(a.entries());a.clear();const{query:m,hash:w,path:S}=o;s[it(r)]({path:S,query:{...m,...v},hash:w})}))}}));return pe(()=>o.query[e],f=>{l=f,c()},{flush:"sync"}),u}var ac=10;function eb(e){const{theme:t}=ie(),n=Zr(),r=P(()=>t.value.blog||{}),o=Kt("(max-width: 960px)"),s=P(()=>{const v=n.value.filter(w=>w.sticky===!0||typeof w.sticky=="number"),m=n.value.filter(w=>w.sticky===void 0||w.sticky===!1);return[...v.sort((w,S)=>S.sticky===!0&&w.sticky===!0?0:S.sticky>w.sticky?1:-1),...m]}),i=cd("p",1,{mode:"push",transform(v){const m=Number(v);return!Number.isNaN(m)&&m>0?m:1}}),a=P(()=>{var m;if(r.value.pagination===!1)return 0;const v=((m=r.value.pagination)==null?void 0:m.perPage)||ac;return Math.ceil(s.value.length/v)}),l=P(()=>i.value>=a.value),c=P(()=>i.value<=1),u=P(()=>r.value.pagination!==!1&&a.value>1),f=P(()=>{var m;if(r.value.pagination===!1)return s.value;const v=((m=r.value.pagination)==null?void 0:m.perPage)||ac;return s.value.length<=v?s.value:s.value.slice((i.value-1)*v,i.value*v)}),d=P(()=>{let v=[];const m=a.value,w=i.value,S=o.value?4:5;if(m<=0)return v;if(m<=10)v=Array.from({length:m},(T,k)=>({value:k+1}));else{let T=1,k=!1;for(;T<=m;)w<=S&&T<=S||w>=m-(S-1)&&T>=m-(S-1)?(k=!1,v.push({value:T})):T<=2||T>=m-1?(k=!1,v.push({value:T})):(w>S+1||w{i.value!==v&&(i.value=v,setTimeout(()=>{var w;let m=0;e.value&&(m=((w=document.querySelector(".vp-blog"))==null?void 0:w.getBoundingClientRect().top)||0,m+=window.scrollY-64),window.scrollTo({top:m,behavior:"instant"})},0))}}}var tb=q(p1),la=()=>tb;function ud(){const e=Zr(),t=la(),n=P(()=>{const i={};return e.value.forEach(a=>{a.tags&&fi(a.tags).forEach(l=>{i[l]?i[l]+=1:i[l]=1})}),Object.keys(i).map(a=>({name:a,count:i[a]>99?"99+":i[a],className:`vp-tag-${t.value[a]}`}))}),r=cd("tag"),o=P(()=>r.value?e.value.filter(i=>i.tags?fi(i.tags).includes(r.value):!1).map(i=>({title:i.title,path:i.path,createTime:i.createTime.split(" ")[0].replace(/\//g,"-")})):[]);return{tags:n,currentTag:r,postList:o,handleTagClick:i=>{r.value=i}}}function fd(){const e=Zr();return{categories:P(()=>{const n=[];return e.value.forEach(r=>{const o=r.categoryList;if(!o||o.length===0)n.push({type:"post",title:r.title,path:r.path});else{let s=n,i=0;for(;if.type==="category"&&f.id===a);if(u)s=u.items;else{const f=[];s.push({type:"category",title:l,id:a,sort:c,items:f}),s=f}i++}s.push({type:"post",title:r.title,path:r.path})}}),dd(n)})}}function dd(e){for(const t of e)t.type==="category"&&t.items.length&&(t.items=dd(t.items));return e.sort((t,n)=>t.type==="category"&&n.type==="category"?t.sorte.value.blog||{}),s=Dn(),i=P(()=>o.value.archives!==!1||o.value.tags!==!1||o.value.categories!==!1),a=P(()=>{var u,f;return{link:(u=s.tags.value)==null?void 0:u.link,text:(f=s.tags.value)==null?void 0:f.text,total:n.value.length}}),l=P(()=>{var u,f;return{link:(u=s.archive.value)==null?void 0:u.link,text:(f=s.archive.value)==null?void 0:f.text,total:t.value.length}}),c=P(()=>{var u,f;return{link:(u=s.categories.value)==null?void 0:u.link,text:(f=s.categories.value)==null?void 0:f.text,total:pd(r.value)}});return{hasBlogExtract:i,tags:a,archives:l,categories:c}}function pd(e){let t=0;for(const n of e)n.type==="category"&&(t+=1,n.items.length&&(t+=pd(n.items)));return t}function nb(){const e=Zr();return{archives:P(()=>{const n=[];return e.value.forEach(r=>{var a;const o=((a=r.createTime)==null?void 0:a.split(" ")[0])||"",s=o.split("/")[0];let i=n.find(l=>l.label===s);i||(i={label:s,list:[]},n.push(i)),i.list.push({title:r.title,path:r.path,createTime:o.slice(s.length+1).replace(/\//g,"-")})}),n})}}var rb=/\.md(?:(?:#|\?).*)?$/;function vd(e,t){const n=lt(),{page:r}=ie(),o=P(()=>{const i=it(e),a=it(t);return i&&Tv(i)||a==="_blank"}),s=P(()=>{const i=it(e);if(!i)return;if(o.value)return i;const a=i.startsWith("./")&&rb.test(i)?`/${r.value.filePathRelative}`:n.path;return kn(i,a)});return{isExternal:o,link:s}}function ob(){const{frontmatter:e}=ie();j0(P(()=>({parent:typeof e.value.watermark=="object"&&e.value.watermark.fullPage===!1?".vp-doc":"body"})))}const sb=R({__name:"VPHomeBox",props:{type:{},full:{type:Boolean},backgroundImage:{},backgroundAttachment:{},onlyOnce:{type:Boolean},containerClass:{}},setup(e,{expose:t}){t();const n=e,r=ss(),o=P(()=>{if(!n.backgroundImage)return null;const a=typeof n.backgroundImage=="string"?n.backgroundImage:n.backgroundImage[r.value?"dark":"light"]??n.backgroundImage.light;return{"background-image":`url(${Vt(a)?n.backgroundImage:nt(a)})`,"background-size":"cover","background-position":"center","background-repeat":"no-repeat","background-attachment":n.backgroundAttachment||""}}),s=P(()=>ne(n.containerClass||"")),i={props:n,isDark:r,styles:o,containerClass:s};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}});function ib(e,t,n,r,o,s){return p(),b("div",{class:ne(["vp-home-box",{full:r.props.full}]),style:Ne(r.styles)},[L(e.$slots,"before"),_("div",{class:ne(["container",r.containerClass])},[L(e.$slots,"default")],2),L(e.$slots,"after")],6)}const ar=H(sb,[["render",ib],["__file","VPHomeBox.vue"]]),gd=Object.freeze({left:0,top:0,width:16,height:16}),md=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),ca=Object.freeze({...gd,...md});Object.freeze({...ca,body:"",hidden:!1});({...gd});const _d=Object.freeze({width:null,height:null}),bd=Object.freeze({..._d,...md});function ab(e,t){const n={...e};for(const r in t){const o=t[r],s=typeof o;r in _d?(o===null||o&&(s==="string"||s==="number"))&&(n[r]=o):s===typeof n[r]&&(n[r]=r==="rotate"?o%4:o)}return n}const lb=/[\s,]+/;function cb(e,t){t.split(lb).forEach(n=>{switch(n.trim()){case"horizontal":e.hFlip=!0;break;case"vertical":e.vFlip=!0;break}})}function ub(e,t=0){const n=e.replace(/^-?[0-9.]*/,"");function r(o){for(;o<0;)o+=4;return o%4}if(n===""){const o=parseInt(e);return isNaN(o)?0:r(o)}else if(n!==e){let o=0;switch(n){case"%":o=25;break;case"deg":o=90}if(o){let s=parseFloat(e.slice(0,e.length-n.length));return isNaN(s)?0:(s=s/o,s%1===0?r(s):0)}}return t}const fb=/(-?[0-9.]*[0-9]+[0-9.]*)/g,db=/^-?[0-9.]*[0-9]+[0-9.]*$/g;function lc(e,t,n){if(t===1)return e;if(n=n||100,typeof e=="number")return Math.ceil(e*t*n)/n;if(typeof e!="string")return e;const r=e.split(fb);if(r===null||!r.length)return e;const o=[];let s=r.shift(),i=db.test(s);for(;;){if(i){const a=parseFloat(s);isNaN(a)?o.push(s):o.push(Math.ceil(a*t*n)/n)}else o.push(s);if(s=r.shift(),s===void 0)return o.join("");i=!i}}function hb(e,t="defs"){let n="";const r=e.indexOf("<"+t);for(;r>=0;){const o=e.indexOf(">",r),s=e.indexOf("",s);if(i===-1)break;n+=e.slice(o+1,s).trim(),e=e.slice(0,r).trim()+e.slice(i+1)}return{defs:n,content:e}}function pb(e,t){return e?""+e+""+t:t}function vb(e,t,n){const r=hb(e);return pb(r.defs,t+r.content+n)}const gb=e=>e==="unset"||e==="undefined"||e==="none";function mb(e,t){const n={...ca,...e},r={...bd,...t},o={left:n.left,top:n.top,width:n.width,height:n.height};let s=n.body;[n,r].forEach(m=>{const w=[],S=m.hFlip,T=m.vFlip;let k=m.rotate;S?T?k+=2:(w.push("translate("+(o.width+o.left).toString()+" "+(0-o.top).toString()+")"),w.push("scale(-1 1)"),o.top=o.left=0):T&&(w.push("translate("+(0-o.left).toString()+" "+(o.height+o.top).toString()+")"),w.push("scale(1 -1)"),o.top=o.left=0);let x;switch(k<0&&(k-=Math.floor(k/4)*4),k=k%4,k){case 1:x=o.height/2+o.top,w.unshift("rotate(90 "+x.toString()+" "+x.toString()+")");break;case 2:w.unshift("rotate(180 "+(o.width/2+o.left).toString()+" "+(o.height/2+o.top).toString()+")");break;case 3:x=o.width/2+o.left,w.unshift("rotate(-90 "+x.toString()+" "+x.toString()+")");break}k%2===1&&(o.left!==o.top&&(x=o.left,o.left=o.top,o.top=x),o.width!==o.height&&(x=o.width,o.width=o.height,o.height=x)),w.length&&(s=vb(s,'',""))});const i=r.width,a=r.height,l=o.width,c=o.height;let u,f;i===null?(f=a===null?"1em":a==="auto"?c:a,u=lc(f,l/c)):(u=i==="auto"?l:i,f=a===null?lc(u,c/l):a==="auto"?c:a);const d={},h=(m,w)=>{gb(w)||(d[m]=w.toString())};h("width",u),h("height",f);const v=[o.left,o.top,l,c];return d.viewBox=v.join(" "),{attributes:d,viewBox:v,body:s}}const _b=/\sid="(\S+)"/g,bb="IconifyId"+Date.now().toString(16)+(Math.random()*16777216|0).toString(16);let yb=0;function kb(e,t=bb){const n=[];let r;for(;r=_b.exec(e);)n.push(r[1]);if(!n.length)return e;const o="suffix"+(Math.random()*16777216|Date.now()).toString(16);return n.forEach(s=>{const i=typeof t=="function"?t(s):t+(yb++).toString(),a=s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");e=e.replace(new RegExp('([#;"])('+a+')([")]|\\.[a-z])',"g"),"$1"+i+o+"$3")}),e=e.replace(new RegExp(o,"g"),""),e}function wb(e,t){let n=e.indexOf("xlink:")===-1?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(const r in t)n+=" "+r+'="'+t[r]+'"';return'"+e+""}function Pb(e){return e.replace(/"/g,"'").replace(/%/g,"%25").replace(/#/g,"%23").replace(//g,"%3E").replace(/\s+/g," ")}function Sb(e){return"data:image/svg+xml,"+Pb(e)}function xb(e){return'url("'+Sb(e)+'")'}const cc={...bd,inline:!1},Lb={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink","aria-hidden":!0,role:"img"},Cb={display:"inline-block"},_i={backgroundColor:"currentColor"},yd={backgroundColor:"transparent"},uc={Image:"var(--svg)",Repeat:"no-repeat",Size:"100% 100%"},fc={webkitMask:_i,mask:_i,background:yd};for(const e in fc){const t=fc[e];for(const n in uc)t[e+n]=uc[n]}const Io={};["horizontal","vertical"].forEach(e=>{const t=e.slice(0,1)+"Flip";Io[e+"-flip"]=t,Io[e.slice(0,1)+"-flip"]=t,Io[e+"Flip"]=t});function dc(e){return e+(e.match(/^[-0-9.]+$/)?"px":"")}const Tb=(e,t)=>{const n=ab(cc,t),r={...Lb},o=t.mode||"svg",s={},i=t.style,a=typeof i=="object"&&!(i instanceof Array)?i:{};for(let m in t){const w=t[m];if(w!==void 0)switch(m){case"icon":case"style":case"onLoad":case"mode":break;case"inline":case"hFlip":case"vFlip":n[m]=w===!0||w==="true"||w===1;break;case"flip":typeof w=="string"&&cb(n,w);break;case"color":s.color=w;break;case"rotate":typeof w=="string"?n[m]=ub(w):typeof w=="number"&&(n[m]=w);break;case"ariaHidden":case"aria-hidden":w!==!0&&w!=="true"&&delete r["aria-hidden"];break;default:{const S=Io[m];S?(w===!0||w==="true"||w===1)&&(n[S]=!0):cc[m]===void 0&&(r[m]=w)}}}const l=mb(e,n),c=l.attributes;if(n.inline&&(s.verticalAlign="-0.125em"),o==="svg"){r.style={...s,...a},Object.assign(r,c);let m=0,w=t.id;return typeof w=="string"&&(w=w.replace(/-/g,"_")),r.innerHTML=kb(l.body,w?()=>w+"ID"+m++:"iconifyVue"),Se("svg",r)}const{body:u,width:f,height:d}=e,h=o==="mask"||(o==="bg"?!1:u.indexOf("currentColor")!==-1),v=wb(u,{...c,width:f+"",height:d+""});return r.style={...s,"--svg":xb(v),width:dc(c.width),height:dc(c.height),...Cb,...h?_i:yd,...a},Se("span",r)},Eb=Object.create(null),Ab=R({inheritAttrs:!1,render(){const e=this.$attrs,t=e.icon,n=typeof t=="string"?Eb[t]:typeof t=="object"?t:null;return n===null||typeof n!="object"||typeof n.body!="string"?this.$slots.default?this.$slots.default():null:Tb({...ca,...n},e)}}),Er=/^[a-z0-9]+(-[a-z0-9]+)*$/,as=(e,t,n,r="")=>{const o=e.split(":");if(e.slice(0,1)==="@"){if(o.length<2||o.length>3)return null;r=o.shift().slice(1)}if(o.length>3||!o.length)return null;if(o.length>1){const a=o.pop(),l=o.pop(),c={provider:o.length>0?o[0]:r,prefix:l,name:a};return t&&!Vo(c)?null:c}const s=o[0],i=s.split("-");if(i.length>1){const a={provider:r,prefix:i.shift(),name:i.join("-")};return t&&!Vo(a)?null:a}if(n&&r===""){const a={provider:r,prefix:"",name:s};return t&&!Vo(a,n)?null:a}return null},Vo=(e,t)=>e?!!((e.provider===""||e.provider.match(Er))&&(t&&e.prefix===""||e.prefix.match(Er))&&e.name.match(Er)):!1,kd=Object.freeze({left:0,top:0,width:16,height:16}),Uo=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),ua=Object.freeze({...kd,...Uo}),bi=Object.freeze({...ua,body:"",hidden:!1});function Ob(e,t){const n={};!e.hFlip!=!t.hFlip&&(n.hFlip=!0),!e.vFlip!=!t.vFlip&&(n.vFlip=!0);const r=((e.rotate||0)+(t.rotate||0))%4;return r&&(n.rotate=r),n}function hc(e,t){const n=Ob(e,t);for(const r in bi)r in Uo?r in e&&!(r in n)&&(n[r]=Uo[r]):r in t?n[r]=t[r]:r in e&&(n[r]=e[r]);return n}function Ib(e,t){const n=e.icons,r=e.aliases||Object.create(null),o=Object.create(null);function s(i){if(n[i])return o[i]=[];if(!(i in o)){o[i]=null;const a=r[i]&&r[i].parent,l=a&&s(a);l&&(o[i]=[a].concat(l))}return o[i]}return Object.keys(n).concat(Object.keys(r)).forEach(s),o}function Vb(e,t,n){const r=e.icons,o=e.aliases||Object.create(null);let s={};function i(a){s=hc(r[a]||o[a],s)}return i(t),n.forEach(i),hc(e,s)}function wd(e,t){const n=[];if(typeof e!="object"||typeof e.icons!="object")return n;e.not_found instanceof Array&&e.not_found.forEach(o=>{t(o,null),n.push(o)});const r=Ib(e);for(const o in r){const s=r[o];s&&(t(o,Vb(e,o,s)),n.push(o))}return n}const Mb={provider:"",aliases:{},not_found:{},...kd};function Hs(e,t){for(const n in t)if(n in e&&typeof e[n]!=typeof t[n])return!1;return!0}function Pd(e){if(typeof e!="object"||e===null)return null;const t=e;if(typeof t.prefix!="string"||!e.icons||typeof e.icons!="object"||!Hs(e,Mb))return null;const n=t.icons;for(const o in n){const s=n[o];if(!o.match(Er)||typeof s.body!="string"||!Hs(s,bi))return null}const r=t.aliases||Object.create(null);for(const o in r){const s=r[o],i=s.parent;if(!o.match(Er)||typeof i!="string"||!n[i]&&!r[i]||!Hs(s,bi))return null}return t}const pc=Object.create(null);function $b(e,t){return{provider:e,prefix:t,icons:Object.create(null),missing:new Set}}function Rn(e,t){const n=pc[e]||(pc[e]=Object.create(null));return n[t]||(n[t]=$b(e,t))}function fa(e,t){return Pd(t)?wd(t,(n,r)=>{r?e.icons[n]=r:e.missing.add(n)}):[]}function Rb(e,t,n){try{if(typeof n.body=="string")return e.icons[t]={...n},!0}catch{}return!1}let Hr=!1;function Sd(e){return typeof e=="boolean"&&(Hr=e),Hr}function Nb(e){const t=typeof e=="string"?as(e,!0,Hr):e;if(t){const n=Rn(t.provider,t.prefix),r=t.name;return n.icons[r]||(n.missing.has(r)?null:void 0)}}function Bb(e,t){const n=as(e,!0,Hr);if(!n)return!1;const r=Rn(n.provider,n.prefix);return Rb(r,n.name,t)}function Db(e,t){if(typeof e!="object")return!1;if(typeof t!="string"&&(t=e.provider||""),Hr&&!t&&!e.prefix){let o=!1;return Pd(e)&&(e.prefix="",wd(e,(s,i)=>{i&&Bb(s,i)&&(o=!0)})),o}const n=e.prefix;if(!Vo({provider:t,prefix:n,name:"a"}))return!1;const r=Rn(t,n);return!!fa(r,e)}const jb=Object.freeze({width:null,height:null}),Hb=Object.freeze({...jb,...Uo});""+Date.now().toString(16)+(Math.random()*16777216|0).toString(16);const yi=Object.create(null);function Fb(e,t){yi[e]=t}function ki(e){return yi[e]||yi[""]}function da(e){let t;if(typeof e.resources=="string")t=[e.resources];else if(t=e.resources,!(t instanceof Array)||!t.length)return null;return{resources:t,path:e.path||"/",maxURL:e.maxURL||500,rotate:e.rotate||750,timeout:e.timeout||5e3,random:e.random===!0,index:e.index||0,dataAfterTimeout:e.dataAfterTimeout!==!1}}const ha=Object.create(null),br=["https://api.simplesvg.com","https://api.unisvg.com"],Mo=[];for(;br.length>0;)br.length===1||Math.random()>.5?Mo.push(br.shift()):Mo.push(br.pop());ha[""]=da({resources:["https://api.iconify.design"].concat(Mo)});function Wb(e,t){const n=da(t);return n===null?!1:(ha[e]=n,!0)}function pa(e){return ha[e]}const zb=()=>{let e;try{if(e=fetch,typeof e=="function")return e}catch{}};let vc=zb();function Gb(e,t){const n=pa(e);if(!n)return 0;let r;if(!n.maxURL)r=0;else{let o=0;n.resources.forEach(i=>{o=Math.max(o,i.length)});const s=t+".json?icons=";r=n.maxURL-o-n.path.length-s.length}return r}function Ub(e){return e===404}const qb=(e,t,n)=>{const r=[],o=Gb(e,t),s="icons";let i={type:s,provider:e,prefix:t,icons:[]},a=0;return n.forEach((l,c)=>{a+=l.length+1,a>=o&&c>0&&(r.push(i),i={type:s,provider:e,prefix:t,icons:[]},a=l.length),i.icons.push(l)}),r.push(i),r};function Kb(e){if(typeof e=="string"){const t=pa(e);if(t)return t.path}return"/"}const Yb=(e,t,n)=>{if(!vc){n("abort",424);return}let r=Kb(t.provider);switch(t.type){case"icons":{const s=t.prefix,a=t.icons.join(","),l=new URLSearchParams({icons:a});r+=s+".json?"+l.toString();break}case"custom":{const s=t.uri;r+=s.slice(0,1)==="/"?s.slice(1):s;break}default:n("abort",400);return}let o=503;vc(e+r).then(s=>{const i=s.status;if(i!==200){setTimeout(()=>{n(Ub(i)?"abort":"next",i)});return}return o=501,s.json()}).then(s=>{if(typeof s!="object"||s===null){setTimeout(()=>{s===404?n("abort",s):n("next",o)});return}setTimeout(()=>{n("success",s)})}).catch(()=>{n("next",o)})},Jb={prepare:qb,send:Yb};function Qb(e){const t={loaded:[],missing:[],pending:[]},n=Object.create(null);e.sort((o,s)=>o.provider!==s.provider?o.provider.localeCompare(s.provider):o.prefix!==s.prefix?o.prefix.localeCompare(s.prefix):o.name.localeCompare(s.name));let r={provider:"",prefix:"",name:""};return e.forEach(o=>{if(r.name===o.name&&r.prefix===o.prefix&&r.provider===o.provider)return;r=o;const s=o.provider,i=o.prefix,a=o.name,l=n[s]||(n[s]=Object.create(null)),c=l[i]||(l[i]=Rn(s,i));let u;a in c.icons?u=t.loaded:i===""||c.missing.has(a)?u=t.missing:u=t.pending;const f={provider:s,prefix:i,name:a};u.push(f)}),t}function xd(e,t){e.forEach(n=>{const r=n.loaderCallbacks;r&&(n.loaderCallbacks=r.filter(o=>o.id!==t))})}function Xb(e){e.pendingCallbacksFlag||(e.pendingCallbacksFlag=!0,setTimeout(()=>{e.pendingCallbacksFlag=!1;const t=e.loaderCallbacks?e.loaderCallbacks.slice(0):[];if(!t.length)return;let n=!1;const r=e.provider,o=e.prefix;t.forEach(s=>{const i=s.icons,a=i.pending.length;i.pending=i.pending.filter(l=>{if(l.prefix!==o)return!0;const c=l.name;if(e.icons[c])i.loaded.push({provider:r,prefix:o,name:c});else if(e.missing.has(c))i.missing.push({provider:r,prefix:o,name:c});else return n=!0,!0;return!1}),i.pending.length!==a&&(n||xd([e],s.id),s.callback(i.loaded.slice(0),i.missing.slice(0),i.pending.slice(0),s.abort))})}))}let Zb=0;function ey(e,t,n){const r=Zb++,o=xd.bind(null,n,r);if(!t.pending.length)return o;const s={id:r,icons:t,callback:e,abort:o};return n.forEach(i=>{(i.loaderCallbacks||(i.loaderCallbacks=[])).push(s)}),o}function ty(e,t=!0,n=!1){const r=[];return e.forEach(o=>{const s=typeof o=="string"?as(o,t,n):o;s&&r.push(s)}),r}var ny={resources:[],index:0,timeout:2e3,rotate:750,random:!1,dataAfterTimeout:!1};function ry(e,t,n,r){const o=e.resources.length,s=e.random?Math.floor(Math.random()*o):e.index;let i;if(e.random){let N=e.resources.slice(0);for(i=[];N.length>1;){const z=Math.floor(Math.random()*N.length);i.push(N[z]),N=N.slice(0,z).concat(N.slice(z+1))}i=i.concat(N)}else i=e.resources.slice(s).concat(e.resources.slice(0,s));const a=Date.now();let l="pending",c=0,u,f=null,d=[],h=[];typeof r=="function"&&h.push(r);function v(){f&&(clearTimeout(f),f=null)}function m(){l==="pending"&&(l="aborted"),v(),d.forEach(N=>{N.status==="pending"&&(N.status="aborted")}),d=[]}function w(N,z){z&&(h=[]),typeof N=="function"&&h.push(N)}function S(){return{startTime:a,payload:t,status:l,queriesSent:c,queriesPending:d.length,subscribe:w,abort:m}}function T(){l="failed",h.forEach(N=>{N(void 0,u)})}function k(){d.forEach(N=>{N.status==="pending"&&(N.status="aborted")}),d=[]}function x(N,z,Q){const F=z!=="success";switch(d=d.filter(E=>E!==N),l){case"pending":break;case"failed":if(F||!e.dataAfterTimeout)return;break;default:return}if(z==="abort"){u=Q,T();return}if(F){u=Q,d.length||(i.length?B():T());return}if(v(),k(),!e.random){const E=e.resources.indexOf(N.resource);E!==-1&&E!==e.index&&(e.index=E)}l="completed",h.forEach(E=>{E(Q)})}function B(){if(l!=="pending")return;v();const N=i.shift();if(N===void 0){if(d.length){f=setTimeout(()=>{v(),l==="pending"&&(k(),T())},e.timeout);return}T();return}const z={status:"pending",resource:N,callback:(Q,F)=>{x(z,Q,F)}};d.push(z),c++,f=setTimeout(B,e.rotate),n(N,t,z.callback)}return setTimeout(B),S}function Ld(e){const t={...ny,...e};let n=[];function r(){n=n.filter(a=>a().status==="pending")}function o(a,l,c){const u=ry(t,a,l,(f,d)=>{r(),c&&c(f,d)});return n.push(u),u}function s(a){return n.find(l=>a(l))||null}return{query:o,find:s,setIndex:a=>{t.index=a},getIndex:()=>t.index,cleanup:r}}function gc(){}const Fs=Object.create(null);function oy(e){if(!Fs[e]){const t=pa(e);if(!t)return;const n=Ld(t),r={config:t,redundancy:n};Fs[e]=r}return Fs[e]}function sy(e,t,n){let r,o;if(typeof e=="string"){const s=ki(e);if(!s)return n(void 0,424),gc;o=s.send;const i=oy(e);i&&(r=i.redundancy)}else{const s=da(e);if(s){r=Ld(s);const i=e.resources?e.resources[0]:"",a=ki(i);a&&(o=a.send)}}return!r||!o?(n(void 0,424),gc):r.query(t,o,n)().abort}const mc="iconify2",Fr="iconify",Cd=Fr+"-count",_c=Fr+"-version",Td=36e5,iy=168,ay=50;function wi(e,t){try{return e.getItem(t)}catch{}}function va(e,t,n){try{return e.setItem(t,n),!0}catch{}}function bc(e,t){try{e.removeItem(t)}catch{}}function Pi(e,t){return va(e,Cd,t.toString())}function Si(e){return parseInt(wi(e,Cd))||0}const ls={local:!0,session:!0},Ed={local:new Set,session:new Set};let ga=!1;function ly(e){ga=e}let wo=typeof window>"u"?{}:window;function Ad(e){const t=e+"Storage";try{if(wo&&wo[t]&&typeof wo[t].length=="number")return wo[t]}catch{}ls[e]=!1}function Od(e,t){const n=Ad(e);if(!n)return;const r=wi(n,_c);if(r!==mc){if(r){const a=Si(n);for(let l=0;l{const l=Fr+a.toString(),c=wi(n,l);if(typeof c=="string"){try{const u=JSON.parse(c);if(typeof u=="object"&&typeof u.cached=="number"&&u.cached>o&&typeof u.provider=="string"&&typeof u.data=="object"&&typeof u.data.prefix=="string"&&t(u,a))return!0}catch{}bc(n,l)}};let i=Si(n);for(let a=i-1;a>=0;a--)s(a)||(a===i-1?(i--,Pi(n,i)):Ed[e].add(a))}function Id(){if(!ga){ly(!0);for(const e in ls)Od(e,t=>{const n=t.data,r=t.provider,o=n.prefix,s=Rn(r,o);if(!fa(s,n).length)return!1;const i=n.lastModified||-1;return s.lastModifiedCached=s.lastModifiedCached?Math.min(s.lastModifiedCached,i):i,!0})}}function cy(e,t){const n=e.lastModifiedCached;if(n&&n>=t)return n===t;if(e.lastModifiedCached=t,n)for(const r in ls)Od(r,o=>{const s=o.data;return o.provider!==e.provider||s.prefix!==e.prefix||s.lastModified===t});return!0}function uy(e,t){ga||Id();function n(r){let o;if(!ls[r]||!(o=Ad(r)))return;const s=Ed[r];let i;if(s.size)s.delete(i=Array.from(s).shift());else if(i=Si(o),i>=ay||!Pi(o,i+1))return;const a={cached:Math.floor(Date.now()/Td),provider:e.provider,data:t};return va(o,Fr+i.toString(),JSON.stringify(a))}t.lastModified&&!cy(e,t.lastModified)||Object.keys(t.icons).length&&(t.not_found&&(t=Object.assign({},t),delete t.not_found),n("local")||n("session"))}function yc(){}function fy(e){e.iconsLoaderFlag||(e.iconsLoaderFlag=!0,setTimeout(()=>{e.iconsLoaderFlag=!1,Xb(e)}))}function dy(e,t){e.iconsToLoad?e.iconsToLoad=e.iconsToLoad.concat(t).sort():e.iconsToLoad=t,e.iconsQueueFlag||(e.iconsQueueFlag=!0,setTimeout(()=>{e.iconsQueueFlag=!1;const{provider:n,prefix:r}=e,o=e.iconsToLoad;delete e.iconsToLoad;let s;if(!o||!(s=ki(n)))return;s.prepare(n,r,o).forEach(a=>{sy(n,a,l=>{if(typeof l!="object")a.icons.forEach(c=>{e.missing.add(c)});else try{const c=fa(e,l);if(!c.length)return;const u=e.pendingIcons;u&&c.forEach(f=>{u.delete(f)}),uy(e,l)}catch(c){console.error(c)}fy(e)})})}))}const hy=(e,t)=>{const n=ty(e,!0,Sd()),r=Qb(n);if(!r.pending.length){let l=!0;return t&&setTimeout(()=>{l&&t(r.loaded,r.missing,r.pending,yc)}),()=>{l=!1}}const o=Object.create(null),s=[];let i,a;return r.pending.forEach(l=>{const{provider:c,prefix:u}=l;if(u===a&&c===i)return;i=c,a=u,s.push(Rn(c,u));const f=o[c]||(o[c]=Object.create(null));f[u]||(f[u]=[])}),r.pending.forEach(l=>{const{provider:c,prefix:u,name:f}=l,d=Rn(c,u),h=d.pendingIcons||(d.pendingIcons=new Set);h.has(f)||(h.add(f),o[c][u].push(f))}),s.forEach(l=>{const{provider:c,prefix:u}=l;o[c][u].length&&dy(l,o[c][u])}),t?ey(t,r,s):yc},py=e=>new Promise((t,n)=>{const r=typeof e=="string"?as(e,!0):e;if(!r){n(e);return}hy([r||e],o=>{if(o.length&&r){const s=Nb(r);if(s){t({...ua,...s});return}}n(e)})});({...Hb});const kc={backgroundColor:"currentColor"},vy={backgroundColor:"transparent"},wc={Image:"var(--svg)",Repeat:"no-repeat",Size:"100% 100%"},Pc={webkitMask:kc,mask:kc,background:vy};for(const e in Pc){const t=Pc[e];for(const n in wc)t[e+n]=wc[n]}const Ws={};["horizontal","vertical"].forEach(e=>{const t=e.slice(0,1)+"Flip";Ws[e+"-flip"]=t,Ws[e.slice(0,1)+"-flip"]=t,Ws[e+"Flip"]=t});Sd(!0);Fb("",Jb);if(typeof document<"u"&&typeof window<"u"){Id();const e=window;if(e.IconifyPreload!==void 0){const t=e.IconifyPreload,n="Invalid IconifyPreload syntax.";typeof t=="object"&&t!==null&&(t instanceof Array?t:[t]).forEach(r=>{try{(typeof r!="object"||r===null||r instanceof Array||typeof r.icons!="object"||typeof r.prefix!="string"||!Db(r))&&console.error(n)}catch{console.error(n)}})}if(e.IconifyProviders!==void 0){const t=e.IconifyProviders;if(typeof t=="object"&&t!==null)for(let n in t){const r="IconifyProviders["+n+"] is invalid.";try{const o=t[n];if(typeof o!="object"||!o||o.resources===void 0)continue;Wb(n,o)||console.error(r)}catch{console.error(r)}}}}({...ua});const gy=R({__name:"VPIconify",props:{name:{default:""},size:{default:""},color:{default:""}},setup(e,{expose:t}){t();const n=e,r=q(null),o=q(!1);async function s(){if(!r.value)try{o.value=!1,r.value=await py(n.name)}finally{o.value=!0}}pe(()=>n.name,s,{immediate:!0});const i=P(()=>{const u=n.size||"1em";return String(Number(u))===u?`${u}px`:u}),a=P(()=>n.color||"currentColor"),l=P(()=>({icon:r.value,color:n.color,height:i.value})),c={props:n,icon:r,loaded:o,loadIconComponent:s,size:i,color:a,bind:l,get OfflineIcon(){return Ab}};return Object.defineProperty(c,"__isScriptSetup",{enumerable:!1,value:!0}),c}});function my(e,t,n,r,o,s){const i=pt("ClientOnly");return p(),j(i,null,{default:C(()=>[r.loaded?r.icon?(p(),j(r.OfflineIcon,cn({key:1,class:"vp-icon iconify"},r.bind),null,16)):O("",!0):(p(),b("span",{key:0,class:"vp-icon iconify",style:Ne({color:r.color,width:r.size,height:r.size})},null,4))]),_:1})}const _y=H(gy,[["render",my],["__file","VPIconify.vue"]]),by=R({__name:"VPIcon",props:{name:{},size:{},color:{}},setup(e,{expose:t}){t();const n=e,r=w1(),o=P(()=>typeof n.name=="string"&&(Vt(n.name)||n.name[0]==="/")?"link":typeof n.name=="object"&&n.name.svg?"svg":typeof n.name=="string"&&r.value[n.name]?"local":"remote"),s=P(()=>o.value==="svg"?n.name.svg:""),i=P(()=>{if(o.value==="link"){const f=n.name;return Vt(f)?f:nt(f)}return""}),a=P(()=>{if(o.value==="local"){const f=n.name;return r.value[f]||""}return""}),l=P(()=>{const f=n.size;if(f)return String(Number(f))===f?`${f}px`:f}),c=P(()=>({"background-color":n.color,width:l.value,height:l.value})),u={props:n,iconsData:r,type:o,svg:s,link:i,className:a,size:l,style:c,VPIconify:_y};return Object.defineProperty(u,"__isScriptSetup",{enumerable:!1,value:!0}),u}}),yy={key:0,class:"vp-icon-img"},ky=["src"],wy=["innerHTML"];function Py(e,t,n,r,o,s){return r.type==="link"?(p(),b("span",yy,[_("img",{src:r.link,alt:"",style:Ne({height:r.size})},null,12,ky)])):r.type==="svg"?(p(),b("span",{key:1,class:"vp-icon",style:Ne(r.style),innerHTML:r.svg},null,12,wy)):r.type==="local"&&r.className?(p(),b("span",{key:2,class:ne(["vp-icon",[r.className]]),style:Ne(r.style)},null,6)):(p(),j(r.VPIconify,{key:3,name:n.name,size:r.size,color:n.color},null,8,["name","size","color"]))}const vt=H(by,[["render",Py],["__scopeId","data-v-e1a362a3"],["__file","VPIcon.vue"]]),Sy=R({__name:"VPCard",props:{title:{},icon:{}},setup(e,{expose:t}){t();const n=e,r=P(()=>{var s;if(((s=n.icon)==null?void 0:s[0])==="{")try{return JSON.parse(r)}catch{}return n.icon}),o={props:n,icon:r,VPIcon:vt};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}}),xy={class:"vp-card-wrapper"},Ly={key:0,class:"title"},Cy=["innerHTML"],Ty={class:"body"};function Ey(e,t,n,r,o,s){return p(),b("article",xy,[L(e.$slots,"title",{},()=>[n.title||r.icon?(p(),b("p",Ly,[r.icon?(p(),j(r.VPIcon,{key:0,name:r.icon},null,8,["name"])):O("",!0),n.title?(p(),b("span",{key:1,innerHTML:n.title},null,8,Cy)):O("",!0)])):O("",!0)],!0),_("div",Ty,[L(e.$slots,"default",{},void 0,!0)])])}const Sc=H(Sy,[["render",Ey],["__scopeId","data-v-9831334c"],["__file","VPCard.vue"]]),Ay=R({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(e,{expose:t}){t();const n=e,r=ur(),o=P(()=>n.tag??(n.href?"a":"span")),{link:s,isExternal:i}=vd(hn(n,"href"),hn(n,"target"));function a(c){i.value||(c.preventDefault(),s.value&&r.push(s.value))}const l={props:n,router:r,tag:o,link:s,isExternal:i,linkTo:a,get withBase(){return nt}};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}}),Oy={key:0,class:"vpi-external-link icon"};function Iy(e,t,n,r,o,s){return p(),j(In(r.tag),{class:ne(["vp-link",{link:r.link}]),href:r.withBase(r.link||""),target:n.target??(r.isExternal?"_blank":void 0),rel:n.rel??(r.isExternal?"noreferrer":void 0),onClick:t[0]||(t[0]=i=>r.linkTo(i))},{default:C(()=>[L(e.$slots,"default",{},void 0,!0),r.isExternal&&!n.noIcon?(p(),b("span",Oy)):O("",!0)]),_:3},8,["class","href","target","rel"])}const Fe=H(Ay,[["render",Iy],["__scopeId","data-v-039bb95e"],["__file","VPLink.vue"]]),Vy=R({__name:"VPLinkCard",props:{href:{},title:{},icon:{},description:{}},setup(e,{expose:t}){t();const n={VPLink:Fe,VPIcon:vt};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),My={class:"vp-link-card"},$y={class:"body"},Ry=["innerHTML"],Ny=["innerHTML"];function By(e,t,n,r,o,s){return p(),b("div",My,[_("span",$y,[$(r.VPLink,{href:n.href,"no-icon":"",class:"link"},{default:C(()=>[L(e.$slots,"title",{},()=>[n.icon?(p(),j(r.VPIcon,{key:0,name:n.icon},null,8,["name"])):O("",!0),n.title?(p(),b("span",{key:1,innerHTML:n.title},null,8,Ry)):O("",!0)],!0)]),_:3},8,["href"]),L(e.$slots,"default",{},()=>[n.description?(p(),b("p",{key:0,innerHTML:n.description},null,8,Ny)):O("",!0)],!0)]),t[0]||(t[0]=_("span",{class:"vpi-arrow-right"},null,-1))])}const xc=H(Vy,[["render",By],["__scopeId","data-v-6f7c0885"],["__file","VPLinkCard.vue"]]),Dy=R({__name:"VPBadge",props:{text:{default:void 0},type:{default:"tip"}},setup(e,{expose:t}){t();const n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});function jy(e,t,n,r,o,s){return p(),b("span",{class:ne(["vp-badge",n.type])},[L(e.$slots,"default",{},()=>[Re(U(n.text),1)],!0)],2)}const Lc=H(Dy,[["render",jy],["__scopeId","data-v-39861a27"],["__file","VPBadge.vue"]]),Hy=R({__name:"VPCardGrid",props:{cols:{}},setup(e,{expose:t}){t();const n=e,r=Kt("(min-width: 768px)"),o=Kt("(min-width: 960px)"),s=q(1);function i(){const c={sm:1,md:2,lg:2};if(!n.cols)return c;if(typeof n.cols=="number"||typeof n.cols=="string"){const u=Number(n.cols);return{sm:u,md:u,lg:u}}return{...c,...it(n.cols)}}function a(){const c=i();return o.value?c.lg:r.value?c.md:c.sm}pe(()=>[r.value,o.value,n.cols],()=>{s.value=a()}),Ee(()=>{s.value=a()});const l={props:n,md:r,lg:o,repeat:s,resolveCols:i,getRepeat:a};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}});function Fy(e,t,n,r,o,s){return p(),b("div",{class:ne(["vp-card-grid",[`cols-${r.repeat}`]]),style:Ne({gridTemplateColumns:`repeat(${r.repeat}, 1fr)`})},[L(e.$slots,"default",{},void 0,!0)],6)}const Cc=H(Hy,[["render",Fy],["__scopeId","data-v-82050933"],["__file","VPCardGrid.vue"]]),Wy=R({__name:"VPImageCard",props:{image:{},title:{},description:{},href:{},author:{},date:{}},setup(e,{expose:t}){t();const n=e,r=fr(),o=P(()=>{if(n.title)return n.title;const l=(n.image||"").split("/");return l[l.length-1]}),s=P(()=>{if(!n.date)return"";const a=n.date instanceof Date?n.date:new Date(n.date);return new Intl.DateTimeFormat(r.value,{year:"numeric",month:"short",day:"numeric"}).format(a)}),i={props:n,lang:r,title:o,date:s};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),zy={class:"vp-image-card"},Gy={class:"image-container"},Uy=["src","alt"],qy={class:"image-info"},Ky={class:"title"},Yy=["href"],Jy={key:1},Qy={key:0,class:"copyright"},Xy={key:0},Zy={key:1},e2={key:2},t2={key:1,class:"description"};function n2(e,t,n,r,o,s){return p(),b("div",zy,[_("div",Gy,[_("img",{src:n.image,alt:r.title,loading:"lazy"},null,8,Uy),_("div",qy,[_("h3",Ky,[n.href?(p(),b("a",{key:0,href:n.href,target:"_blank",rel:"noopener noreferrer"},U(r.title),9,Yy)):(p(),b("span",Jy,U(r.title),1))]),n.author||r.date?(p(),b("p",Qy,[n.author?(p(),b("span",Xy,U(n.author),1)):O("",!0),n.author&&r.date?(p(),b("span",Zy," | ")):O("",!0),r.date?(p(),b("span",e2,U(r.date),1)):O("",!0)])):O("",!0),n.description?(p(),b("p",t2,U(n.description),1)):O("",!0)])])])}const Tc=H(Wy,[["render",n2],["__scopeId","data-v-be2fd4d3"],["__file","VPImageCard.vue"]]),r2=R({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(e,{expose:t}){t();const n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),o2={key:0,class:"vp-backdrop"};function s2(e,t,n,r,o,s){return p(),j(bn,{name:"fade"},{default:C(()=>[n.show?(p(),b("div",o2)):O("",!0)]),_:1})}const i2=H(r2,[["render",s2],["__scopeId","data-v-aaa8c6ad"],["__file","VPBackdrop.vue"]]),a2=R({__name:"VPTransitionDrop",props:{delay:{default:0},duration:{default:.25},appear:{type:Boolean}},setup(e,{expose:t}){t();const n=e,{theme:r}=ie(),o=P(()=>{const u=r.value.transition;return typeof u=="object"?u.postList!==!1:u!==!1});let s="";function i(u){const f=u;f.style.transform="translateY(-20px)",f.style.opacity="0"}function a(u){var d;const f=u;if(!s){const h=typeof window<"u"?(d=window.getComputedStyle)==null?void 0:d.call(window,f).transition:"";s=h&&!h.includes("all")?`${h||""}, `:" "}f.style.transition=`${s}transform ${n.duration}s ease-in-out ${n.delay}s, opacity ${n.duration}s ease-in-out ${n.delay}s`}function l(u){const f=u;f.style.transform="translateY(0)",f.style.opacity="1",f.style.transition=s}const c={props:n,theme:r,enabledTransition:o,get _transition(){return s},set _transition(u){s=u},beforeAppear:i,setStyle:a,unsetStyle:l};return Object.defineProperty(c,"__isScriptSetup",{enumerable:!1,value:!0}),c}});function l2(e,t,n,r,o,s){return r.enabledTransition?(p(),j(bn,{key:0,name:"drop",mode:"out-in",appear:n.appear,onAppear:r.setStyle,onBeforeAppear:r.beforeAppear,onAfterAppear:r.unsetStyle,onEnter:r.setStyle,onAfterEnter:r.unsetStyle,onBeforeLeave:r.setStyle},{default:C(()=>[L(e.$slots,"default")]),_:3},8,["appear"])):L(e.$slots,"default",{key:1})}const c2=H(a2,[["render",l2],["__file","VPTransitionDrop.vue"]]),u2=R({__name:"VPPostItem",props:{post:{}},setup(e,{expose:t}){t();const n=e,r=la(),{categories:o,tags:s}=Dn(),i=P(()=>typeof n.post.sticky=="boolean"?n.post.sticky:typeof n.post.sticky=="number"?n.post.sticky>=0:!1),a=P(()=>n.post.categoryList??[]),l=P(()=>(n.post.tags??[]).slice(0,4).map(f=>({name:f,className:`vp-tag-${r.value[f]}`}))),c=P(()=>{var f;return(f=n.post.createTime)==null?void 0:f.split(" ")[0].replace(/\//g,"-")}),u={props:n,colors:r,categoriesLink:o,tagsLink:s,sticky:i,categoryList:a,tags:l,createTime:c,VPLink:Fe};return Object.defineProperty(u,"__isScriptSetup",{enumerable:!1,value:!0}),u}}),f2={class:"vp-blog-post-item"},d2={key:0,class:"sticky"},h2={key:1,class:"icon-lock vpi-lock"},p2={class:"post-meta"},v2={key:0,class:"category-list"},g2={key:0},m2={key:1,class:"tag-list"},_2={key:2,class:"create-time"},b2=["innerHTML"];function y2(e,t,n,r,o,s){return p(),b("div",f2,[_("h3",null,[r.sticky?(p(),b("div",d2," TOP ")):O("",!0),n.post.encrypt?(p(),b("span",h2)):O("",!0),$(r.VPLink,{href:n.post.path},{default:C(()=>[Re(U(n.post.title),1)]),_:1},8,["href"])]),_("div",p2,[r.categoryList.length?(p(),b("div",v2,[t[0]||(t[0]=_("span",{class:"icon vpi-folder"},null,-1)),(p(!0),b(re,null,_e(r.categoryList,(i,a)=>(p(),b(re,{key:a},[$(r.VPLink,{href:r.categoriesLink?`${r.categoriesLink.link}?id=${i.id}`:void 0},{default:C(()=>[Re(U(i.name),1)]),_:2},1032,["href"]),a!==r.categoryList.length-1?(p(),b("span",g2,"/")):O("",!0)],64))),128))])):O("",!0),r.tags.length?(p(),b("div",m2,[t[1]||(t[1]=_("span",{class:"icon vpi-tag"},null,-1)),(p(!0),b(re,null,_e(r.tags,i=>(p(),j(r.VPLink,{key:i.name,class:ne(["tag",i.className]),href:r.tagsLink?`${r.tagsLink.link}?tag=${i.name}`:void 0},{default:C(()=>[Re(U(i.name),1)]),_:2},1032,["class","href"]))),128))])):O("",!0),r.createTime?(p(),b("div",_2,[t[2]||(t[2]=_("span",{class:"icon vpi-clock"},null,-1)),_("span",null,U(r.createTime),1)])):O("",!0)]),n.post.excerpt?(p(),b("div",{key:0,class:"vp-doc excerpt",innerHTML:n.post.excerpt},null,8,b2)):O("",!0)])}const k2=H(u2,[["render",y2],["__scopeId","data-v-fe54072f"],["__file","VPPostItem.vue"]]),w2=R({__name:"VPPagination",props:{page:{},totalPage:{},isFirstPage:{type:Boolean},isLastPage:{type:Boolean},pageRange:{}},emits:["change"],setup(e,{expose:t,emit:n}){t();const r=n,{theme:o}=ie(),s={emit:r,theme:o};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}}),P2={class:"vp-blog-pagination"},S2=["disabled"],x2={class:"page-range"},L2=["disabled","onClick"],C2=["disabled"];function T2(e,t,n,r,o,s){return p(),b("div",P2,[_("button",{type:"button",class:"btn prev",disabled:n.isFirstPage,onClick:t[0]||(t[0]=()=>r.emit("change",n.page-1))},U(r.theme.prevPageLabel||"Prev"),9,S2),_("div",x2,[(p(!0),b(re,null,_e(n.pageRange,({value:i,more:a})=>(p(),b("button",{key:i,class:ne(["btn",{more:a,active:i===n.page}]),disabled:a,type:"button",onClick:()=>!a&&r.emit("change",i)},U(a?"...":i),11,L2))),128))]),_("button",{type:"button",class:"btn next",disabled:n.isLastPage,onClick:t[1]||(t[1]=()=>r.emit("change",n.page+1))},U(r.theme.nextPageLabel||"Next"),9,C2)])}const E2=H(w2,[["render",T2],["__scopeId","data-v-e2840405"],["__file","VPPagination.vue"]]),A2=R({__name:"VPPostList",props:{homeBlog:{type:Boolean}},setup(e,{expose:t}){t();const n=e,{postList:r,page:o,totalPage:s,pageRange:i,isLastPage:a,isFirstPage:l,isPaginationEnabled:c,changePage:u}=eb(P(()=>!!n.homeBlog)),f={props:n,postList:r,page:o,totalPage:s,pageRange:i,isLastPage:a,isFirstPage:l,isPaginationEnabled:c,changePage:u,VPTransitionDrop:c2,VPPostItem:k2,VPPagination:E2};return Object.defineProperty(f,"__isScriptSetup",{enumerable:!1,value:!0}),f}}),O2={class:"vp-blog-post-list"};function I2(e,t,n,r,o,s){return p(),b("div",O2,[L(e.$slots,"blog-post-list-before",{},void 0,!0),(p(!0),b(re,null,_e(r.postList,(i,a)=>(p(),j(r.VPTransitionDrop,{key:i.path,appear:"",delay:a*.025},{default:C(()=>[(p(),j(r.VPPostItem,{key:i.path,post:i},null,8,["post"]))]),_:2},1032,["delay"]))),128)),L(e.$slots,"blog-post-list-after",{},void 0,!0),r.isPaginationEnabled?(p(),j(r.VPPagination,{key:0,page:r.page,"total-page":r.totalPage,"page-range":r.pageRange,"is-last-page":r.isLastPage,"is-first-page":r.isFirstPage,onChange:r.changePage},null,8,["page","total-page","page-range","is-last-page","is-first-page","onChange"])):O("",!0),L(e.$slots,"blog-post-list-pagination-after",{},void 0,!0)])}const V2=H(A2,[["render",I2],["__scopeId","data-v-88abbe07"],["__file","VPPostList.vue"]]),M2=R({__name:"VPShortPostList",props:{postList:{}},setup(e,{expose:t}){t();const n={VPLink:Fe};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),$2={class:"vp-blog-short-post-list"},R2={class:"post-title"},N2={class:"post-time"};function B2(e,t,n,r,o,s){return p(),b("ul",$2,[(p(!0),b(re,null,_e(n.postList,i=>(p(),b("li",{key:i.path},[_("p",R2,[$(r.VPLink,{class:"post-link",href:i.path},{default:C(()=>[Re(U(i.title),1)]),_:2},1032,["href"])]),_("span",N2,U(i.createTime),1)]))),128))])}const Vd=H(M2,[["render",B2],["__scopeId","data-v-ff8d6363"],["__file","VPShortPostList.vue"]]),D2=R({__name:"VPBlogArchives",setup(e,{expose:t}){t();const{archive:n}=Dn(),{archives:r}=nb(),o={archiveLink:n,archives:r,VPShortPostList:Vd};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}}),j2={class:"vp-blog-archives"},H2={class:"archives-title"},F2={key:0,class:"archives"},W2={class:"archive-title"};function z2(e,t,n,r,o,s){var i;return p(),b("div",j2,[L(e.$slots,"blog-archives-before",{},void 0,!0),_("h2",H2,[t[0]||(t[0]=_("span",{class:"vpi-archive icon"},null,-1)),_("span",null,U(((i=r.archiveLink)==null?void 0:i.text)??"Archives"),1)]),r.archives.length?(p(),b("div",F2,[(p(!0),b(re,null,_e(r.archives,a=>(p(),b("div",{key:a.label,class:"archive"},[_("h3",W2,U(a.label),1),$(r.VPShortPostList,{"post-list":a.list},null,8,["post-list"])]))),128))])):O("",!0),L(e.$slots,"blog-archives-after",{},void 0,!0)])}const G2=H(D2,[["render",z2],["__scopeId","data-v-5ebdb825"],["__file","VPBlogArchives.vue"]]),U2=R({__name:"VPBlogNav",props:{isLocal:{type:Boolean}},setup(e,{expose:t}){t();const n=e,r=lt(),{hasBlogExtract:o,tags:s,archives:i,categories:a}=hd(),l={props:n,route:r,hasBlogExtract:o,tags:s,archives:i,categories:a,VPLink:Fe};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}}),q2={class:"text"},K2={class:"total"},Y2={class:"text"},J2={class:"total"},Q2={class:"text"},X2={class:"total"};function Z2(e,t,n,r,o,s){return r.hasBlogExtract?(p(),b("div",{key:0,class:ne(["vp-blog-nav",{local:r.props.isLocal}])},[$(r.VPLink,{class:ne(["nav-link",{active:r.route.path===r.tags.link}]),href:r.tags.link},{default:C(()=>[t[0]||(t[0]=_("span",{class:"icon icon-logo vpi-tag"},null,-1)),_("span",q2,U(r.tags.text),1),_("span",K2,U(r.tags.total),1),t[1]||(t[1]=_("span",{class:"icon vpi-chevron-right"},null,-1))]),_:1},8,["class","href"]),$(r.VPLink,{class:ne(["nav-link",{active:r.route.path===r.categories.link}]),href:r.categories.link},{default:C(()=>[t[2]||(t[2]=_("span",{class:"icon icon-logo vpi-category"},null,-1)),_("span",Y2,U(r.categories.text),1),_("span",J2,U(r.categories.total),1),t[3]||(t[3]=_("span",{class:"icon vpi-chevron-right"},null,-1))]),_:1},8,["class","href"]),$(r.VPLink,{class:ne(["nav-link",{active:r.route.path===r.archives.link}]),href:r.archives.link},{default:C(()=>[t[4]||(t[4]=_("span",{class:"icon icon-logo vpi-archive"},null,-1)),_("span",Q2,U(r.archives.text),1),_("span",X2,U(r.archives.total),1),t[5]||(t[5]=_("span",{class:"icon vpi-chevron-right"},null,-1))]),_:1},8,["class","href"])],2)):O("",!0)}const Md=H(U2,[["render",Z2],["__scopeId","data-v-dfa4b1d4"],["__file","VPBlogNav.vue"]]),e3=R({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(e,{expose:t}){t();const n=e,r=P(()=>typeof n.icon=="object"?n.icon.svg:``),o={props:n,svg:r};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}}),t3=["href","aria-label","innerHTML"];function n3(e,t,n,r,o,s){return p(),b("a",{class:"vp-social-link",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:r.svg},null,8,t3)}const r3=H(e3,[["render",n3],["__scopeId","data-v-4f551255"],["__file","VPSocialLink.vue"]]),o3=R({__name:"VPSocialLinks",props:{links:{}},setup(e,{expose:t}){t();const n={VPSocialLink:r3};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),s3={class:"vp-social-links"};function i3(e,t,n,r,o,s){return p(),b("div",s3,[(p(!0),b(re,null,_e(n.links,({link:i,icon:a})=>(p(),j(r.VPSocialLink,{key:i,icon:a,link:i},null,8,["icon","link"]))),128))])}const eo=H(o3,[["render",i3],["__scopeId","data-v-64e26b6f"],["__file","VPSocialLinks.vue"]]),a3=R({__name:"VPBlogProfile",setup(e,{expose:t}){t();const{theme:n}=ie(),r=P(()=>n.value.profile),o=P(()=>{var a,l;const i=((a=r.value)==null?void 0:a.avatar)??((l=r.value)==null?void 0:l.url);return i?Vt(i)?i:nt(i):""}),s={theme:n,profile:r,imageUrl:o,VPSocialLinks:eo};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}}),l3={key:0,class:"vp-blog-profile"},c3=["src","alt"],u3={class:"profile-info"},f3=["innerHTML"],d3={key:1,class:"profile-location"},h3=["innerHTML"],p3={key:2,class:"profile-organization"},v3=["innerHTML"],g3={key:1,class:"profile-social"};function m3(e,t,n,r,o,s){return r.profile?(p(),b("div",l3,[r.imageUrl?(p(),b("p",{key:0,class:ne({circle:!!r.profile.circle})},[_("img",{src:r.imageUrl,alt:r.profile.name},null,8,c3)],2)):O("",!0),_("div",u3,[_("h3",null,U(r.profile.name),1),r.profile.description?(p(),b("p",{key:0,innerHTML:r.profile.description},null,8,f3)):O("",!0),r.profile.location?(p(),b("div",d3,[t[0]||(t[0]=_("span",{class:"vpi-location"},null,-1)),r.profile.location?(p(),b("p",{key:0,innerHTML:r.profile.location},null,8,h3)):O("",!0)])):O("",!0),r.profile.organization?(p(),b("div",p3,[t[1]||(t[1]=_("span",{class:"vpi-organization"},null,-1)),r.profile.organization?(p(),b("p",{key:0,innerHTML:r.profile.organization},null,8,v3)):O("",!0)])):O("",!0)]),r.theme.social?(p(),b("div",g3,[$(r.VPSocialLinks,{links:r.theme.social},null,8,["links"])])):O("",!0)])):O("",!0)}const _3=H(a3,[["render",m3],["__scopeId","data-v-83363bd8"],["__file","VPBlogProfile.vue"]]),b3=R({__name:"VPBlogAside",setup(e,{expose:t}){t();const{theme:n}=ie(),r={theme:n,VPBlogNav:Md,VPBlogProfile:_3};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),y3={key:0,class:"vp-blog-aside"};function k3(e,t,n,r,o,s){return r.theme.profile?(p(),b("div",y3,[L(e.$slots,"blog-aside-top",{},void 0,!0),$(r.VPBlogProfile),$(r.VPBlogNav),L(e.$slots,"blog-aside-bottom",{},void 0,!0)])):O("",!0)}const w3=H(b3,[["render",k3],["__scopeId","data-v-e971faab"],["__file","VPBlogAside.vue"]]),P3=R({__name:"VPBlogExtract",setup(e,{expose:t}){t();const{theme:n}=ie(),r=lt(),o=P(()=>n.value.profile),s=P(()=>{var w,S;const m=((w=o.value)==null?void 0:w.avatar)??((S=o.value)==null?void 0:S.url);return m?Vt(m)?m:nt(m):""}),{hasBlogExtract:i,tags:a,archives:l,categories:c}=hd(),u=q(!1),f=q(!1),d=ta(Mt?document.body:null);pe(()=>r.path,()=>{u.value=!1}),pe(u,async()=>{u.value?setTimeout(()=>{f.value=!0},200):f.value=!1}),pe([()=>u.value],()=>{u.value?d.value=!0:d.value=!1},{immediate:!0,flush:"post"});const h=P(()=>o.value||i.value),v={theme:n,route:r,profile:o,imageUrl:s,hasBlogExtract:i,tags:a,archives:l,categories:c,open:u,lazyOpen:f,isLocked:d,showBlogExtract:h,VPLink:Fe};return Object.defineProperty(v,"__isScriptSetup",{enumerable:!1,value:!0}),v}}),S3={key:0,class:"profile"},x3={key:0,class:"avatar"},L3=["src","alt"],C3={class:"desc"},T3={class:"profile-info"},E3={key:0,class:"profile-location"},A3=["innerHTML"],O3={key:1,class:"profile-organization"},I3=["innerHTML"];function V3(e,t,n,r,o,s){return r.showBlogExtract?(p(),b(re,{key:0},[_("div",{class:"vp-blog-extract",onClick:t[0]||(t[0]=i=>r.open=!r.open)},t[2]||(t[2]=[_("span",{class:"vpi-blog-ext icon"},null,-1)])),$(bn,{name:"fade"},{default:C(()=>[Fi(_("div",{class:"blog-modal",onClick:t[1]||(t[1]=Xu(i=>r.open=!1,["self"]))},[_("div",{class:ne(["blog-modal-container",{open:r.lazyOpen}])},[L(e.$slots,"blog-extract-before",{},void 0,!0),r.profile?(p(),b("div",S3,[r.imageUrl?(p(),b("p",x3,[_("img",{src:r.imageUrl,alt:r.profile.name},null,8,L3)])):O("",!0),_("div",null,[_("h3",null,U(r.profile.name),1),_("p",C3,U(r.profile.description),1),_("div",T3,[r.profile.location?(p(),b("div",E3,[t[3]||(t[3]=_("span",{class:"vpi-location"},null,-1)),r.profile.location?(p(),b("p",{key:0,innerHTML:r.profile.location},null,8,A3)):O("",!0)])):O("",!0),r.profile.organization?(p(),b("div",O3,[t[4]||(t[4]=_("span",{class:"vpi-organization"},null,-1)),r.profile.organization?(p(),b("p",{key:0,innerHTML:r.profile.organization},null,8,I3)):O("",!0)])):O("",!0)])])])):O("",!0),r.hasBlogExtract?(p(),b("div",{key:1,class:ne(["blog-nav",{"no-profile":!r.profile}])},[$(r.VPLink,{class:"nav-link",href:r.tags.link,"no-icon":""},{default:C(()=>[t[5]||(t[5]=_("span",{class:"vpi-tag icon"},null,-1)),_("span",null,U(r.tags.text),1)]),_:1},8,["href"]),$(r.VPLink,{class:"nav-link",href:r.categories.link,"no-icon":""},{default:C(()=>[t[6]||(t[6]=_("span",{class:"vpi-category icon"},null,-1)),_("span",null,U(r.categories.text),1)]),_:1},8,["href"]),$(r.VPLink,{class:"nav-link",href:r.archives.link,"no-icon":""},{default:C(()=>[t[7]||(t[7]=_("span",{class:"vpi-archive icon"},null,-1)),_("span",null,U(r.archives.text),1)]),_:1},8,["href"])],2)):O("",!0),L(e.$slots,"blog-extract-after",{},void 0,!0)],2)],512),[[Qu,r.open]])]),_:3})],64)):O("",!0)}const M3=H(P3,[["render",V3],["__scopeId","data-v-435193cb"],["__file","VPBlogExtract.vue"]]),$3=R({__name:"VPBlogTags",setup(e,{expose:t}){t();const{tags:n}=Dn(),{tags:r,currentTag:o,postList:s,handleTagClick:i}=ud(),a={tagsLink:n,tags:r,currentTag:o,postList:s,handleTagClick:i,VPShortPostList:Vd};return Object.defineProperty(a,"__isScriptSetup",{enumerable:!1,value:!0}),a}}),R3={class:"tags-nav"},N3={class:"tags-title"},B3={class:"tags"},D3=["onClick"],j3={class:"tag-name"},H3={class:"tag-count"},F3={key:0,class:"tags-container"},W3={class:"tag-title"};function z3(e,t,n,r,o,s){var i;return p(),b("div",{class:ne(["vp-blog-tags",{"has-list":r.postList.length>0}])},[L(e.$slots,"blog-tags-before",{},void 0,!0),_("div",R3,[_("h2",N3,[t[0]||(t[0]=_("span",{class:"vpi-tag icon"},null,-1)),_("span",null,U(((i=r.tagsLink)==null?void 0:i.text)??"Tags"),1)]),L(e.$slots,"blog-tags-title-after",{},void 0,!0),_("div",B3,[(p(!0),b(re,null,_e(r.tags,a=>(p(),b("p",{key:a.name,class:ne(["tag",{active:a.name===r.currentTag,[a.className]:!0}]),onClick:l=>r.handleTagClick(a.name)},[_("span",j3,U(a.name),1),_("span",H3,U(a.count),1)],10,D3))),128))])]),L(e.$slots,"blog-tags-content-before",{},void 0,!0),r.currentTag?(p(),b("div",F3,[_("h3",W3,U(r.currentTag),1),r.postList.length?(p(),j(r.VPShortPostList,{key:0,"post-list":r.postList},null,8,["post-list"])):O("",!0)])):O("",!0),L(e.$slots,"blog-tags-after",{},void 0,!0)],2)}const G3=H($3,[["render",z3],["__scopeId","data-v-093dd774"],["__file","VPBlogTags.vue"]]),U3=R({__name:"VPCategoriesGroup",props:{item:{}},setup(e,{expose:t}){t();const n=e,r=lt(),o=q(null),s=q(!0),i=q(!1);pe(()=>[r.query,n.item],()=>{const u=r.query.id;u?s.value=a(n.item,u):s.value=!0,i.value=u?n.item.id===u:!1},{immediate:!0});function a(u,f){return u.id===f||u.items.filter(d=>d.type==="category").some(d=>a(d,f))}function l(){s.value=!s.value}Ee(()=>{o.value&&i.value&&o.value.scrollIntoView({block:"center"})});const c={props:n,route:r,el:o,active:s,isActive:i,hasActive:a,toggle:l,VPCategories:$d};return Object.defineProperty(c,"__isScriptSetup",{enumerable:!1,value:!0}),c}});function q3(e,t,n,r,o,s){return p(),b("div",{ref:"el",class:ne(["vp-category-group",{active:r.active}])},[_("p",{class:"folder",onClick:r.toggle},[_("span",{class:ne(["icon",[r.active?"vpi-folder-open":"vpi-folder"]])},null,2),_("span",null,U(n.item.title),1)]),n.item.items.length?(p(),j(r.VPCategories,{key:0,class:"group",items:n.item.items},null,8,["items"])):O("",!0)],2)}const K3=H(U3,[["render",q3],["__scopeId","data-v-f59560e3"],["__file","VPCategoriesGroup.vue"]]),Y3=R({__name:"VPCategories",props:{items:{}},setup(e,{expose:t}){t();const n={VPLink:Fe,VPCategoriesGroup:K3};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),J3={class:"vp-categories"},Q3={key:0,class:"post"};function X3(e,t,n,r,o,s){return p(),b("ul",J3,[(p(!0),b(re,null,_e(n.items,i=>(p(),b("li",{key:i.path||i.id,class:"vp-categories-item"},[i.type==="post"?(p(),b("p",Q3,[t[0]||(t[0]=_("span",{class:"vpi-post"},null,-1)),$(r.VPLink,{href:i.path,text:i.title},null,8,["href","text"])])):(p(),j(r.VPCategoriesGroup,{key:1,item:i},null,8,["item"]))]))),128))])}const $d=H(Y3,[["render",X3],["__scopeId","data-v-db15e3be"],["__file","VPCategories.vue"]]),Z3=R({__name:"VPBlogCategories",setup(e,{expose:t}){t();const{categories:n}=Dn(),{categories:r}=fd(),o={categoriesLink:n,categories:r,VPCategories:$d};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}}),ek={class:"vp-blog-categories"},tk={class:"categories-title"},nk={class:"content"};function rk(e,t,n,r,o,s){var i;return p(),b("div",ek,[L(e.$slots,"blog-categories-before",{},void 0,!0),_("h2",tk,[t[0]||(t[0]=_("span",{class:"vpi-category icon"},null,-1)),_("span",null,U(((i=r.categoriesLink)==null?void 0:i.text)??"Categories"),1)]),L(e.$slots,"blog-categories-content-before",{},void 0,!0),_("div",nk,[$(r.VPCategories,{items:r.categories},null,8,["items"])]),L(e.$slots,"blog-categories-after",{},void 0,!0)])}const ok=H(Z3,[["render",rk],["__scopeId","data-v-9f0d2c06"],["__file","VPBlogCategories.vue"]]),sk=R({__name:"VPTransitionFadeSlideY",setup(e,{expose:t}){t();const{theme:n}=ie(),{resolve:r,pending:o}=Yf(),s=P(()=>{const a=n.value.transition;return typeof a=="object"?a.page!==!1:a!==!1}),i={theme:n,onBeforeEnter:r,onBeforeLeave:o,enabledTransition:s};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}});function ik(e,t,n,r,o,s){return r.enabledTransition?(p(),j(bn,{key:0,name:"fade-slide-y",mode:"out-in",onAfterEnter:r.onBeforeEnter,onBeforeLeave:r.onBeforeLeave},{default:C(()=>[L(e.$slots,"default")]),_:3},8,["onAfterEnter","onBeforeLeave"])):L(e.$slots,"default",{key:1})}const ma=H(sk,[["render",ik],["__file","VPTransitionFadeSlideY.vue"]]),ak=R({__name:"VPBlog",props:{homeBlog:{type:Boolean},type:{},onlyOnce:{type:Boolean}},setup(e,{expose:t}){t();const{theme:n,page:r}=ie(),o={theme:n,page:r,VPPostList:V2,VPBlogArchives:G2,VPBlogAside:w3,VPBlogExtract:M3,VPBlogTags:G3,VPBlogCategories:ok,VPBlogNav:Md,VPTransitionFadeSlideY:ma};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}});function lk(e,t,n,r,o,s){return p(),b("div",{class:ne(["vp-blog",{"home-blog":n.homeBlog}])},[L(e.$slots,"blog-top",{},void 0,!0),_("div",{class:ne(["blog-container",{"no-profile":!r.theme.profile}])},[r.theme.profile?O("",!0):(p(),j(r.VPBlogNav,{key:0,"is-local":""})),$(r.VPTransitionFadeSlideY,null,{default:C(()=>[r.page.type==="blog-archives"?(p(),j(r.VPBlogArchives,{key:0},{"blog-archives-before":C(()=>[L(e.$slots,"blog-archives-before",{},void 0,!0)]),"blog-archives-after":C(()=>[L(e.$slots,"blog-archives-after",{},void 0,!0)]),_:3})):r.page.type==="blog-tags"?(p(),j(r.VPBlogTags,{key:1},{"blog-tags-before":C(()=>[L(e.$slots,"blog-tags-before",{},void 0,!0)]),"blog-tags-after":C(()=>[L(e.$slots,"blog-tags-after",{},void 0,!0)]),"blog-tags-title-after":C(()=>[L(e.$slots,"blog-tags-title-after",{},void 0,!0)]),"blog-tags-content-before":C(()=>[L(e.$slots,"blog-tags-content-before",{},void 0,!0)]),_:3})):r.page.type==="blog-categories"?(p(),j(r.VPBlogCategories,{key:2},{"blog-categories-before":C(()=>[L(e.$slots,"blog-categories-before",{},void 0,!0)]),"blog-categories-after":C(()=>[L(e.$slots,"blog-categories-after",{},void 0,!0)]),"blog-categories-content-before":C(()=>[L(e.$slots,"blog-categories-content-before",{},void 0,!0)]),_:3})):(p(),j(r.VPPostList,{key:3,"home-blog":n.homeBlog},{"blog-post-list-before":C(()=>[L(e.$slots,"blog-post-list-before",{},void 0,!0)]),"blog-post-list-after":C(()=>[L(e.$slots,"blog-post-list-after",{},void 0,!0)]),"blog-post-list-pagination-after":C(()=>[L(e.$slots,"blog-post-list-pagination-after",{},void 0,!0)]),_:3},8,["home-blog"]))]),_:3}),$(r.VPBlogAside,null,{"blog-aside-top":C(()=>[L(e.$slots,"blog-aside-top",{},void 0,!0)]),"blog-aside-bottom":C(()=>[L(e.$slots,"blog-aside-bottom",{},void 0,!0)]),_:3}),$(r.VPBlogExtract,null,{"blog-extract-before":C(()=>[L(e.$slots,"blog-extract-before",{},void 0,!0)]),"blog-extract-after":C(()=>[L(e.$slots,"blog-extract-after",{},void 0,!0)]),_:3})],2),L(e.$slots,"blog-bottom",{},void 0,!0)],2)}const Rd=H(ak,[["render",lk],["__scopeId","data-v-97bed15c"],["__file","VPBlog.vue"]]),ck=R({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(e,{expose:t}){t();function n({target:o}){const s=`#${o.href.split("#")[1]}`,i=document.querySelector(decodeURIComponent(s));i==null||i.focus({preventScroll:!0})}const r={handleClick:n};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),uk=["href"];function fk(e,t,n,r,o,s){const i=pt("VPDocOutlineItem",!0);return p(),b("ul",{class:ne(n.root?"root":"nested")},[(p(!0),b(re,null,_e(n.headers,({children:a,link:l,title:c})=>(p(),b("li",{key:l},[_("a",{class:"outline-link",href:l,onClick:r.handleClick},U(c),9,uk),a!=null&&a.length?(p(),j(i,{key:0,headers:a},null,8,["headers"])):O("",!0)]))),128))],2)}const Nd=H(ck,[["render",fk],["__scopeId","data-v-b57d05fd"],["__file","VPDocOutlineItem.vue"]]),dk=R({__name:"VPDocAsideOutline",setup(e,{expose:t}){t();const{theme:n}=ie(),r=aa(),o=P(()=>r.value.length>0),s=q(),i=q();q1(s,i);function a(){window.print()}const l={theme:n,headers:r,hasOutline:o,container:s,marker:i,handlePrint:a,VPDocOutlineItem:Nd};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}}),hk={class:"content"},pk={ref:"marker",class:"outline-marker"},vk={id:"doc-outline-aria-label","aria-level":"2",class:"outline-title",role:"heading"};function gk(e,t,n,r,o,s){return p(),b("nav",{ref:"container","aria-labelledby":"doc-outline-aria-label",class:ne(["vp-doc-aside-outline",{"has-outline":r.hasOutline}]),role:"navigation"},[_("div",hk,[_("div",pk,null,512),_("div",vk,[_("span",null,U(r.theme.outlineLabel||"On this page"),1),_("span",{class:"vpi-print icon",onClick:r.handlePrint})]),$(r.VPDocOutlineItem,{headers:r.headers,root:!0},null,8,["headers"])])],2)}const mk=H(dk,[["render",gk],["__scopeId","data-v-6c10763c"],["__file","VPDocAsideOutline.vue"]]),_k=R({__name:"VPDocAside",setup(e,{expose:t}){t();const n={VPDocAsideOutline:mk};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),bk={class:"vp-doc-aside"};function yk(e,t,n,r,o,s){return p(),b("div",bk,[L(e.$slots,"aside-top",{},void 0,!0),L(e.$slots,"aside-outline-before",{},void 0,!0),$(r.VPDocAsideOutline),L(e.$slots,"aside-outline-after",{},void 0,!0),t[0]||(t[0]=_("div",{class:"spacer"},null,-1)),L(e.$slots,"aside-bottom",{},void 0,!0)])}const kk=H(_k,[["render",yk],["__scopeId","data-v-f5ed774d"],["__file","VPDocAside.vue"]]),wk=R({__name:"VPDocFooter",setup(e,{expose:t}){t();const{theme:n,frontmatter:r}=ie(),o=ld(),{datetime:s,isoDatetime:i,lastUpdatedText:a}=J1(),l=Q1(),{prev:c,next:u}=Y1(),f=P(()=>!!(n.value.editLink&&r.value.editLink!==!1&&o.value)),d=P(()=>!!(n.value.lastUpdated&&r.value.lastUpdated!==!1&&s.value)),h=P(()=>!!l.value.length),v=P(()=>{var w,S;return f.value||d.value||h.value||((w=c.value)==null?void 0:w.link)||((S=u.value)==null?void 0:S.link)}),m={theme:n,frontmatter:r,editLink:o,lastUpdated:s,isoDatetime:i,lastUpdatedText:a,contributors:l,prev:c,next:u,hasEditLink:f,hasLastUpdated:d,hasContributors:h,showFooter:v,VPLink:Fe};return Object.defineProperty(m,"__isScriptSetup",{enumerable:!1,value:!0}),m}}),Pk={key:0,class:"vp-doc-footer"},Sk={key:0,class:"edit-info"},xk={key:0,class:"edit-link"},Lk={key:1,class:"last-updated"},Ck={class:"last-updated-text"},Tk=["datetime"],Ek={key:1,class:"contributors"},Ak={class:"contributors-label"},Ok={class:"contributors-info"},Ik={class:"contributor"},Vk={key:2,class:"prev-next"},Mk={class:"pager"},$k=["innerHTML"],Rk=["innerHTML"],Nk={class:"pager"},Bk=["innerHTML"],Dk=["innerHTML"];function jk(e,t,n,r,o,s){var i,a,l,c,u;return r.showFooter?(p(),b("footer",Pk,[L(e.$slots,"doc-footer-before",{},void 0,!0),r.hasEditLink||r.hasLastUpdated?(p(),b("div",Sk,[r.hasEditLink&&r.editLink?(p(),b("div",xk,[$(r.VPLink,{class:"edit-link-button",href:r.editLink.link,"no-icon":!0},{default:C(()=>[t[0]||(t[0]=_("span",{class:"vpi-square-pen edit-link-icon","aria-label":"edit icon"},null,-1)),Re(" "+U(r.editLink.text),1)]),_:1},8,["href"])])):O("",!0),r.hasLastUpdated?(p(),b("div",Lk,[_("p",Ck,[Re(U(r.lastUpdatedText)+": ",1),_("time",{datetime:r.isoDatetime,class:"last-updated-time"},U(r.lastUpdated),9,Tk)])])):O("",!0)])):O("",!0),r.hasContributors&&((i=r.contributors)!=null&&i.length)?(p(),b("div",Ek,[_("span",Ak,U(r.theme.contributorsText||"Contributors")+": ",1),_("span",Ok,[(p(!0),b(re,null,_e(r.contributors,(f,d)=>(p(),b(re,{key:f},[_("span",Ik,U(f),1),d!==r.contributors.length-1?(p(),b(re,{key:0},[Re(", ")],64)):O("",!0)],64))),128))])])):O("",!0),(a=r.prev)!=null&&a.link||(l=r.next)!=null&&l.link?(p(),b("nav",Vk,[_("div",Mk,[(c=r.prev)!=null&&c.link?(p(),j(r.VPLink,{key:0,class:"pager-link prev",href:r.prev.link},{default:C(()=>[_("span",{class:"desc",innerHTML:r.theme.prevPageLabel||"Previous page"},null,8,$k),_("span",{class:"title",innerHTML:r.prev.text},null,8,Rk)]),_:1},8,["href"])):O("",!0)]),_("div",Nk,[(u=r.next)!=null&&u.link?(p(),j(r.VPLink,{key:0,class:"pager-link next",href:r.next.link},{default:C(()=>[_("span",{class:"desc",innerHTML:r.theme.nextPageLabel||"Next page"},null,8,Bk),_("span",{class:"title",innerHTML:r.next.text},null,8,Dk)]),_:1},8,["href"])):O("",!0)])])):O("",!0)])):O("",!0)}const Hk=H(wk,[["render",jk],["__scopeId","data-v-92e4a8f2"],["__file","VPDocFooter.vue"]]),Fk=R({__name:"VPEncryptForm",props:{global:{type:Boolean},info:{}},setup(e,{expose:t}){t();const n=e,{theme:r}=ie(),{compareGlobal:o,comparePage:s}=V1(),i=q(""),a=q(0),l=q(!1);async function c(){if(l.value)return;const f=n.global?o:s;l.value=!0;const d=await f(i.value);l.value=!1,d?(a.value=0,i.value=""):a.value=1}const u={props:n,theme:r,compareGlobal:o,comparePage:s,password:i,errorCode:a,unlocking:l,onSubmit:c};return Object.defineProperty(u,"__isScriptSetup",{enumerable:!1,value:!0}),u}}),Wk={class:"vp-encrypt-form"},zk=["innerHTML"],Gk={class:"encrypt-input-wrapper"},Uk=["placeholder"],qk={key:0},Kk={key:1,class:"vpi-loading"};function Yk(e,t,n,r,o,s){return p(),b("div",Wk,[_("p",{class:"encrypt-text",innerHTML:n.info??"Only Password can access this site"},null,8,zk),_("p",Gk,[t[2]||(t[2]=_("span",{class:"vpi-lock icon-lock"},null,-1)),Fi(_("input",{"onUpdate:modelValue":t[0]||(t[0]=i=>r.password=i),class:ne(["encrypt-input",{error:r.errorCode===1}]),type:"password",placeholder:r.theme.encryptPlaceholder??"Enter Password",onKeyup:Zu(r.onSubmit,["enter"]),onInput:t[1]||(t[1]=i=>r.password&&(r.errorCode=0))},null,42,Uk),[[_v,r.password]])]),_("button",{class:ne(["encrypt-button",{unlocking:r.unlocking}]),onClick:r.onSubmit},[r.unlocking?(p(),b("span",Kk)):(p(),b("span",qk,U(r.theme.encryptButtonText??"Confirm"),1))],2)])}const Bd=H(Fk,[["render",Yk],["__scopeId","data-v-ccb8d8ab"],["__file","VPEncryptForm.vue"]]),Jk=R({__name:"VPEncryptPage",setup(e,{expose:t}){t();const{theme:n}=ie(),r={theme:n,VPEncryptForm:Bd};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),Qk={class:"vp-page-encrypt"};function Xk(e,t,n,r,o,s){const i=pt("ClientOnly");return p(),j(i,null,{default:C(()=>[_("div",Qk,[t[0]||(t[0]=_("div",{class:"logo"},[_("span",{class:"vpi-lock icon-lock-head"})],-1)),$(r.VPEncryptForm,{info:r.theme.encryptPageText},null,8,["info"])])]),_:1})}const Zk=H(Jk,[["render",Xk],["__scopeId","data-v-af0d71e3"],["__file","VPEncryptPage.vue"]]),e5=()=>{const e=ea();return P(()=>e.value.readingTime??null)},t5=(e,t)=>{const{minutes:n,words:r}=e,{less1Minute:o,word:s,time:i}=t;return{time:n<1?o:i.replace("$time",Math.round(n).toString()),words:s.replace("$word",r.toString())}};var Ec={"/":{word:"$word字",less1Minute:"小于1分钟",time:"约$time分钟"}};const Ac={words:"",time:""},xi=typeof Ec>"u"?null:Ec,n5=()=>xi?Vf(xi):P(()=>null),r5=()=>{if(typeof xi>"u")return P(()=>Ac);const e=e5(),t=n5();return P(()=>e.value&&t.value?t5(e.value,t.value):Ac)},o5=R({__name:"VPDocMeta",setup(e,{expose:t}){t();const{page:n,frontmatter:r}=ie(),o=la(),s=r5(),{tags:i}=Dn(),{isBlogPost:a}=Bn(),l=P(()=>r.value.createTime?r.value.createTime.split(" ")[0].replace(/\//g,"-"):""),c=P(()=>r.value.tags?r.value.tags.slice(0,4).map(d=>({name:d,className:`vp-tag-${o.value[d]}`})):[]),u=P(()=>s.value.time||c.value.length||l.value),f={page:n,matter:r,colors:o,readingTime:s,tagsLink:i,isBlogPost:a,createTime:l,tags:c,hasMeta:u,VPLink:Fe};return Object.defineProperty(f,"__isScriptSetup",{enumerable:!1,value:!0}),f}}),s5={key:0,class:"vp-doc-meta"},i5={key:0,class:"reading-time"},a5={key:1},l5={key:2,class:"create-time"};function c5(e,t,n,r,o,s){return p(),b(re,null,[_("h1",{class:ne(["vp-doc-title page-title",{padding:!r.hasMeta}])},U(r.page.title),3),r.hasMeta?(p(),b("div",s5,[r.readingTime.time&&r.matter.readingTime!==!1?(p(),b("p",i5,[t[0]||(t[0]=_("span",{class:"vpi-books icon"},null,-1)),_("span",null,U(r.readingTime.words),1),_("span",null,U(r.readingTime.time),1)])):O("",!0),r.tags.length>0?(p(),b("p",a5,[t[1]||(t[1]=_("span",{class:"vpi-tag icon"},null,-1)),(p(!0),b(re,null,_e(r.tags,i=>{var a;return p(),j(r.VPLink,{key:i.name,class:ne(["tag",i.className]),href:(a=r.tagsLink)!=null&&a.link&&r.isBlogPost?`${r.tagsLink.link}?tag=${i.name}`:void 0},{default:C(()=>[Re(U(i.name),1)]),_:2},1032,["class","href"])}),128))])):O("",!0),r.createTime?(p(),b("p",l5,[t[2]||(t[2]=_("span",{class:"vpi-clock icon"},null,-1)),_("span",null,U(r.createTime),1)])):O("",!0)])):O("",!0)],64)}const u5=H(o5,[["render",c5],["__scopeId","data-v-6fc51474"],["__file","VPDocMeta.vue"]]),f5=R({__name:"VPDocBreadcrumbs",setup(e,{expose:t}){t();const{page:n}=ie(),{isBlogPost:r}=Bn(),{home:o,blog:s,categories:i}=Dn(),a=id(),l=P(()=>r.value&&n.value.categoryList?n.value.categoryList.length>0:a.value.length>0),c=P(()=>{if(!l.value)return[];const d=[{text:o.value.text,link:o.value.link}];if(r.value){d.push({text:s.value.text,link:s.value.link});const h=n.value.categoryList??[];for(const v of h)d.push({text:v.name,link:i.value?`${i.value.link}?id=${v.id}`:void 0})}else a.value.length>0&&d.push(...u(a.value)||[]);return d.push({text:n.value.title,link:n.value.path,current:!0}),d});function u(d,h=[]){for(const v of d){if(v.link===n.value.path)return h;if(v.items){const m=u(v.items,[...h,{text:v.text,link:v.link}]);if(m)return m}}return null}const f={page:n,isBlogPost:r,home:o,blog:s,categories:i,sidebar:a,hasBreadcrumb:l,breadcrumbList:c,resolveSidebar:u,VPLink:Fe};return Object.defineProperty(f,"__isScriptSetup",{enumerable:!1,value:!0}),f}}),d5={key:0,class:"vp-breadcrumb"},h5={vocab:"https://schema.org/",typeof:"BreadcrumbList"},p5={key:0,class:"vpi-chevron-right"},v5=["content"];function g5(e,t,n,r,o,s){return r.hasBreadcrumb?(p(),b("nav",d5,[_("ol",h5,[(p(!0),b(re,null,_e(r.breadcrumbList,({text:i,link:a,current:l},c)=>(p(),b("li",{key:a,property:"itemListElement",typeof:"ListItem"},[$(r.VPLink,{href:a,class:ne(["breadcrumb",{current:l}]),property:"item",typeof:"WebPage"},{default:C(()=>[Re(U(i),1)]),_:2},1032,["href","class"]),c!==r.breadcrumbList.length-1?(p(),b("span",p5)):O("",!0),_("meta",{property:"position",content:`${c+1}`},null,8,v5)]))),128))])])):O("",!0)}const m5=H(f5,[["render",g5],["__scopeId","data-v-b0fd825a"],["__file","VPDocBreadcrumbs.vue"]]),_5=R({__name:"VPDoc",setup(e,{expose:t}){t();const{page:n,theme:r,frontmatter:o,isDark:s}=ie(),i=lt(),{hasSidebar:a,hasAside:l,leftAside:c}=Rt(),{isBlogPost:u}=Bn(),f=aa(),{isPageDecrypted:d}=is(),h=P(()=>n.value.frontmatter.comments!==!1&&d.value),v=P(()=>l.value?u.value?f.value.length>0:!0:!1),m=P(()=>i.path.replace(/[./]+/g,"_").replace(/_html$/,"")),w=P(()=>r.value.externalLinkIcon&&o.value.externalLinkIcon!==!1),S=q();pe(()=>i.hash,k=>at(()=>{if(!S.value)return;const x=S.value.querySelector(`.outline-link[href="${k}"]`);if(!x||!k){S.value.scrollTop=0;return}const{top:B,height:N}=S.value.getBoundingClientRect(),{top:z,height:Q}=x.getBoundingClientRect();(zB+N)&&x.scrollIntoView({block:"center"})}),{immediate:!0});const T={page:n,theme:r,frontmatter:o,isDark:s,route:i,hasSidebar:a,hasAside:l,leftAside:c,isBlogPost:u,headers:f,isPageDecrypted:d,hasComments:h,enableAside:v,pageName:m,enabledExternalLinkIcon:w,asideEl:S,VPTransitionFadeSlideY:ma,VPDocAside:kk,VPDocFooter:Hk,VPEncryptPage:Zk,VPDocMeta:u5,VPDocBreadcrumbs:m5};return Object.defineProperty(T,"__isScriptSetup",{enumerable:!1,value:!0}),T}}),b5={class:"container"},y5={ref:"asideEl",class:"aside-container"},k5={class:"aside-content"},w5={class:"content"},P5={class:"content-container"},S5={class:"main"};function x5(e,t,n,r,o,s){const i=pt("Content"),a=pt("PageComment");return p(),j(r.VPTransitionFadeSlideY,null,{default:C(()=>[(p(),b("div",{key:r.page.path,class:ne(["vp-doc-container",{"has-sidebar":r.hasSidebar,"has-aside":r.enableAside,"is-blog":r.isBlogPost,"with-encrypt":!r.isPageDecrypted}])},[L(e.$slots,"doc-top",{},void 0,!0),_("div",b5,[r.enableAside?(p(),b("div",{key:0,class:ne(["aside",{"left-aside":r.leftAside}])},[t[0]||(t[0]=_("div",{class:"aside-curtain"},null,-1)),_("div",y5,[_("div",k5,[$(r.VPDocAside,null,{"aside-top":C(()=>[L(e.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":C(()=>[L(e.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":C(()=>[L(e.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":C(()=>[L(e.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":C(()=>[L(e.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":C(()=>[L(e.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])],512)],2)):O("",!0),_("div",w5,[_("div",P5,[L(e.$slots,"doc-before",{},void 0,!0),_("main",S5,[$(r.VPDocBreadcrumbs),$(r.VPDocMeta),r.isPageDecrypted?(p(),j(i,{key:1,class:ne(["vp-doc plume-content",[r.pageName,r.enabledExternalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])):(p(),j(r.VPEncryptPage,{key:0}))]),r.isPageDecrypted?(p(),j(r.VPDocFooter,{key:0},{"doc-footer-before":C(()=>[L(e.$slots,"doc-footer-before",{},void 0,!0)]),_:3})):O("",!0),r.hasComments?(p(),j(a,{key:1,darkmode:r.isDark},null,8,["darkmode"])):O("",!0),L(e.$slots,"doc-after",{},void 0,!0)])])])],2))]),_:3})}const L5=H(_5,[["render",x5],["__scopeId","data-v-2ba0562c"],["__file","VPDoc.vue"]]),C5={},T5={class:"vp-page"};function E5(e,t){const n=pt("Content");return p(),b("div",T5,[L(e.$slots,"page-top"),$(n,{class:"plume-content"}),L(e.$slots,"page-bottom")])}const A5=H(C5,[["render",E5],["__file","VPPage.vue"]]),O5=R({__name:"VPButton",props:{tag:{default:void 0},size:{default:"medium"},theme:{default:"brand"},text:{},href:{default:void 0},target:{default:void 0},rel:{default:void 0}},setup(e,{expose:t}){t();const n=e,r=ur(),o=P(()=>n.tag||n.href?"a":"button"),{link:s,isExternal:i}=vd(hn(n,"href"),hn(n,"target"));function a(c){i.value||(c.preventDefault(),s.value&&r.push(s.value))}const l={props:n,router:r,component:o,link:s,isExternal:i,linkTo:a,get withBase(){return nt}};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}});function I5(e,t,n,r,o,s){return p(),j(In(r.component),{class:ne(["vp-button",[n.size,n.theme]]),href:r.withBase(r.link||""),target:n.target??(r.isExternal?"_blank":void 0),rel:n.rel??(r.isExternal?"noreferrer":void 0),onClick:t[0]||(t[0]=i=>r.linkTo(i))},{default:C(()=>[Re(U(n.text),1)]),_:1},8,["class","href","target","rel"])}const Dd=H(O5,[["render",I5],["__scopeId","data-v-41677cd7"],["__file","VPButton.vue"]]),Oc="https://api.pengzhanbo.cn/wallpaper/bing",V5=R({__name:"VPHomeBanner",props:{type:{},banner:{},bannerMask:{},hero:{},onlyOnce:{type:Boolean},full:{type:Boolean}},setup(e,{expose:t}){t();const n=e,{isDark:r,frontmatter:o}=ie(),s=P(()=>{const d=n.bannerMask??o.value.bannerMask;return typeof d!="object"?d||0:(r.value?d.dark:d.light)||0}),i=P(()=>{const d=n.banner??o.value.banner;return{"background-image":`url(${d?Vt(d)?d:nt(d):Oc})`}}),a=P(()=>{var d,h;return((d=n.hero)==null?void 0:d.name)??((h=o.value.hero)==null?void 0:h.name)??"Plume"}),l=P(()=>{var d,h;return((d=n.hero)==null?void 0:d.tagline)??((h=o.value.hero)==null?void 0:h.tagline)??"A VuePress Theme"}),c=P(()=>{var d,h;return((d=n.hero)==null?void 0:d.text)??((h=o.value.hero)==null?void 0:h.text)}),u=P(()=>{var d,h;return((d=n.hero)==null?void 0:d.actions)??((h=o.value.hero)==null?void 0:h.actions)??[]}),f={props:n,DEFAULT_BANNER:Oc,isDark:r,matter:o,mask:s,bannerStyle:i,name:a,tagline:l,text:c,actions:u,VPButton:Dd};return Object.defineProperty(f,"__isScriptSetup",{enumerable:!1,value:!0}),f}}),M5={class:"container"},$5={class:"content"},R5={key:0,class:"hero-name"},N5={key:1,class:"hero-tagline"},B5={key:2,class:"hero-text"},D5={key:3,class:"actions"};function j5(e,t,n,r,o,s){return p(),b("div",{class:"vp-home-banner",style:Ne(r.bannerStyle)},[_("div",{class:"banner-mask",style:Ne({opacity:r.mask})},null,4),_("div",M5,[_("div",$5,[r.name?(p(),b("h2",R5,U(r.name),1)):O("",!0),r.tagline?(p(),b("p",N5,[t[0]||(t[0]=_("span",{class:"line"},null,-1)),t[1]||(t[1]=Re()),_("span",null,U(r.tagline),1)])):O("",!0),r.text?(p(),b("p",B5,U(r.text),1)):O("",!0),r.actions.length?(p(),b("div",D5,[(p(!0),b(re,null,_e(r.actions,i=>(p(),b("div",{key:i.link,class:"action"},[$(r.VPButton,{tag:"a",size:"medium",theme:i.theme,text:i.text,href:i.link},null,8,["theme","text","href"])]))),128))])):O("",!0)])])],4)}const H5=H(V5,[["render",j5],["__scopeId","data-v-94b967d3"],["__file","VPHomeBanner.vue"]]),F5=R({__name:"VPHomeHero",props:{type:{},hero:{},full:{type:Boolean},background:{},tintPlate:{},filter:{},backgroundImage:{},backgroundAttachment:{},onlyOnce:{type:Boolean}},setup(e,{expose:t}){t();const n=e,{isDark:r,frontmatter:o}=ie(),s=P(()=>{if(n.background==="tint-plate")return null;const f=(n.backgroundImage?typeof n.backgroundImage=="string"?n.backgroundImage:n.backgroundImage[r.value?"dark":"light"]??n.backgroundImage.light:"")||n.background;return f?{"background-image":`url(${Vt(f)?f:nt(f)})`,"background-attachment":n.backgroundAttachment||"","--vp-hero-bg-filter":n.filter}:null}),i=P(()=>n.hero??o.value.hero??{}),a=P(()=>i.value.actions??[]),l=q();X1(l,P(()=>n.background==="tint-plate"),P(()=>n.tintPlate));const c={props:n,isDark:r,matter:o,heroBackground:s,hero:i,actions:a,canvas:l,VPButton:Dd};return Object.defineProperty(c,"__isScriptSetup",{enumerable:!1,value:!0}),c}}),W5={key:1,class:"bg-filter"},z5={ref:"canvas",width:"32",height:"32"},G5={class:"container"},U5={class:"content"},q5=["innerHTML"],K5=["innerHTML"],Y5=["innerHTML"],J5={key:3,class:"actions"},Q5={class:"action"};function X5(e,t,n,r,o,s){return p(),b("div",{class:ne(["vp-home-hero",{full:r.props.full,once:r.props.onlyOnce}])},[r.heroBackground?(p(),b("div",{key:0,class:"home-hero-bg",style:Ne(r.heroBackground)},null,4)):O("",!0),n.background==="tint-plate"?(p(),b("div",W5,[_("canvas",z5,null,512)])):O("",!0),_("div",G5,[_("div",U5,[r.hero.name?(p(),b("h1",{key:0,class:"hero-name",innerHTML:r.hero.name},null,8,q5)):O("",!0),r.hero.tagline?(p(),b("p",{key:1,class:"hero-tagline",innerHTML:r.hero.tagline},null,8,K5)):O("",!0),r.hero.text?(p(),b("p",{key:2,class:"hero-text",innerHTML:r.hero.text},null,8,Y5)):O("",!0),r.actions.length?(p(),b("div",J5,[_("div",Q5,[(p(!0),b(re,null,_e(r.actions,i=>(p(),j(r.VPButton,{key:i.link,tag:"a",size:"medium",theme:i.theme,text:i.text,href:i.link},null,8,["theme","text","href"]))),128))])])):O("",!0)])])],2)}const Z5=H(F5,[["render",X5],["__scopeId","data-v-769c67cd"],["__file","VPHomeHero.vue"]]),e4={inheritAttrs:!1},t4=R({...e4,__name:"VPImage",props:{image:{},alt:{}},setup(e,{expose:t}){t();const n={get withBase(){return nt}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),n4=["src","alt"];function r4(e,t,n,r,o,s){const i=pt("VPImage",!0);return n.image?(p(),b(re,{key:0},[typeof n.image=="string"||"src"in n.image?(p(),b("img",cn({key:0,class:"vp-image"},typeof n.image=="string"?e.$attrs:{...n.image,...e.$attrs},{src:r.withBase(typeof n.image=="string"?n.image:n.image.src),alt:n.alt??(typeof n.image=="string"?"":n.image.alt||"")}),null,16,n4)):(p(),b(re,{key:1},[$(i,cn({class:"dark",image:n.image.dark,alt:n.image.alt},e.$attrs),null,16,["image","alt"]),$(i,cn({class:"light",image:n.image.light,alt:n.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):O("",!0)}const cs=H(t4,[["render",r4],["__scopeId","data-v-49934f0e"],["__file","VPImage.vue"]]),o4=R({__name:"VPHomeFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(e,{expose:t}){t();const n={VPLink:Fe,VPImage:cs};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),s4={class:"box"},i4={key:0,class:"icon"},a4=["innerHTML"],l4=["innerHTML"],c4=["innerHTML"],u4={key:4,class:"link-text"},f4={class:"link-text-value"};function d4(e,t,n,r,o,s){return p(),j(r.VPLink,{class:"vp-home-feature",href:n.link,rel:n.rel,target:n.target,"no-icon":!0,tag:n.link?"a":"div"},{default:C(()=>[_("article",s4,[typeof n.icon=="object"&&n.icon.wrap?(p(),b("div",i4,[$(r.VPImage,{image:n.icon,alt:n.icon.alt,height:n.icon.height||48,width:n.icon.width||48},null,8,["image","alt","height","width"])])):typeof n.icon=="object"?(p(),j(r.VPImage,{key:1,image:n.icon,alt:n.icon.alt,height:n.icon.height||48,width:n.icon.width||48},null,8,["image","alt","height","width"])):n.icon?(p(),b("div",{key:2,class:"icon",innerHTML:n.icon},null,8,a4)):O("",!0),_("h2",{class:"title",innerHTML:n.title},null,8,l4),n.details?(p(),b("p",{key:3,class:"details",innerHTML:n.details},null,8,c4)):O("",!0),n.linkText?(p(),b("div",u4,[_("p",f4,[Re(U(n.linkText)+" ",1),t[0]||(t[0]=_("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):O("",!0)])]),_:1},8,["href","rel","target","tag"])}const h4=H(o4,[["render",d4],["__scopeId","data-v-6860bc0e"],["__file","VPHomeFeature.vue"]]),p4=R({__name:"VPHomeFeatures",props:{type:{},title:{},description:{},features:{},full:{type:Boolean},backgroundImage:{},backgroundAttachment:{},onlyOnce:{type:Boolean}},setup(e,{expose:t}){t();const n=e,r=P(()=>{var i;const s=(i=n.features)==null?void 0:i.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return}),o={props:n,grid:r,VPHomeFeature:h4,VPHomeBox:ar};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}}),v4=["innerHTML"],g4=["innerHTML"],m4={class:"items"};function _4(e,t,n,r,o,s){return n.features?(p(),j(r.VPHomeBox,{key:0,class:"vp-home-features",type:n.type,"background-image":n.backgroundImage,"background-attachment":n.backgroundAttachment,full:n.full},{default:C(()=>[n.title?(p(),b("h2",{key:0,class:"title",innerHTML:n.title},null,8,v4)):O("",!0),n.description?(p(),b("p",{key:1,class:"description",innerHTML:n.description},null,8,g4)):O("",!0),_("div",m4,[(p(!0),b(re,null,_e(n.features,i=>(p(),b("div",{key:i.title,class:ne(["item",[r.grid]])},[$(r.VPHomeFeature,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])]),_:1},8,["type","background-image","background-attachment","full"])):O("",!0)}const b4=H(p4,[["render",_4],["__scopeId","data-v-0a927c33"],["__file","VPHomeFeatures.vue"]]),y4=R({__name:"VPHomeTextImage",props:{type:{},image:{},width:{},title:{},description:{},list:{},full:{type:Boolean},backgroundImage:{},backgroundAttachment:{},onlyOnce:{type:Boolean}},setup(e,{expose:t}){t();const n=e,r=P(()=>{const s=n.width;return typeof s=="number"?`${s}px`:s}),o={props:n,maxWidth:r,VPImage:cs,VPHomeBox:ar};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}}),k4={class:"content-image"},w4={class:"content-text vp-doc"},P4={key:0,class:"title"},S4=["innerHTML"],x4={key:2,class:"list"},L4=["innerHTML"],C4=["innerHTML"],T4=["innerHTML"];function E4(e,t,n,r,o,s){return p(),j(r.VPHomeBox,{class:"vp-home-text-image",type:n.type,"background-image":n.backgroundImage,"background-attachment":n.backgroundAttachment,full:n.full,"container-class":{reverse:n.type==="text-image"}},{default:C(()=>[_("div",k4,[$(r.VPImage,{image:n.image,style:Ne({maxWidth:r.maxWidth})},null,8,["image","style"])]),_("div",w4,[_("section",null,[n.title?(p(),b("h2",P4,U(n.title),1)):O("",!0),n.description?(p(),b("p",{key:1,class:"description",innerHTML:n.description},null,8,S4)):O("",!0),n.list&&n.list.length?(p(),b("ul",x4,[(p(!0),b(re,null,_e(n.list,(i,a)=>(p(),b("li",{key:a},[typeof i=="object"?(p(),b(re,{key:0},[i.title?(p(),b("h3",{key:0,innerHTML:i.title},null,8,L4)):O("",!0),i.description?(p(),b("p",{key:1,innerHTML:i.description},null,8,C4)):O("",!0)],64)):(p(),b("p",{key:1,innerHTML:i},null,8,T4))]))),128))])):O("",!0)])])]),_:1},8,["type","background-image","background-attachment","full","container-class"])}const Ic=H(y4,[["render",E4],["__scopeId","data-v-5a1d14c5"],["__file","VPHomeTextImage.vue"]]),A4=R({__name:"VPHomeProfile",props:{type:{},name:{},description:{},avatar:{},circle:{type:Boolean},full:{type:Boolean},backgroundImage:{},backgroundAttachment:{},onlyOnce:{type:Boolean}},setup(e,{expose:t}){t();const n=e,{theme:r}=ie(),o=P(()=>r.value.profile),s=P(()=>{var a,l,c,u,f;return{name:n.name||((a=o.value)==null?void 0:a.name),description:n.description||((l=o.value)==null?void 0:l.description),avatar:n.avatar||((c=o.value)==null?void 0:c.avatar)||((u=o.value)==null?void 0:u.url),circle:n.circle||((f=o.value)==null?void 0:f.circle)}}),i={props:n,theme:r,rawProfile:o,profile:s,VPImage:cs,VPHomeBox:ar};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),O4=["innerHTML"],I4=["innerHTML"];function V4(e,t,n,r,o,s){return p(),j(r.VPHomeBox,{class:"vp-home-profile",type:n.type,"background-image":n.backgroundImage,"background-attachment":n.backgroundAttachment,full:n.full},{default:C(()=>[r.profile.avatar?(p(),j(r.VPImage,{key:0,image:r.profile.avatar,class:ne({circle:r.profile.circle})},null,8,["image","class"])):O("",!0),r.profile.name?(p(),b("h3",{key:1,innerHTML:r.profile.name},null,8,O4)):O("",!0),r.profile.description?(p(),b("p",{key:2,innerHTML:r.profile.description},null,8,I4)):O("",!0)]),_:1},8,["type","background-image","background-attachment","full"])}const M4=H(A4,[["render",V4],["__scopeId","data-v-22204ed3"],["__file","VPHomeProfile.vue"]]),$4=R({__name:"VPHomeCustom",props:{type:{},full:{type:Boolean},backgroundImage:{},backgroundAttachment:{},onlyOnce:{type:Boolean}},setup(e,{expose:t}){t();const r={props:e,get Content(){return kf},VPHomeBox:ar};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}});function R4(e,t,n,r,o,s){return p(),j(r.VPHomeBox,cn({class:"vp-home-custom"},r.props),{default:C(()=>[$(r.Content,{class:"vp-doc"})]),_:1},16)}const N4=H($4,[["render",R4],["__file","VPHomeCustom.vue"]]),B4=R({__name:"VPHome",setup(e,{expose:t}){t();const n=ap();function r(){return Se(Rd,{homeBlog:!0},{"blog-top":()=>{var d;return(d=n["blog-top"])==null?void 0:d.call(n)},"blog-bottom":()=>{var d;return(d=n["blog-bottom"])==null?void 0:d.call(n)},"blog-post-list-before":()=>{var d;return(d=n["blog-post-list-before"])==null?void 0:d.call(n)},"blog-post-list-after":()=>{var d;return(d=n["blog-post-list-after"])==null?void 0:d.call(n)},"blog-post-list-pagination-after":()=>{var d;return(d=n["blog-post-list-pagination-after"])==null?void 0:d.call(n)}})}const o={banner:H5,hero:Z5,features:b4,"text-image":Ic,"image-text":Ic,profile:M4,blog:r,custom:N4},s={name:"Theme Plume",tagline:"VuePress Next Theme",text:"一个简约的,功能丰富的 vuepress 文档&博客 主题"},{frontmatter:i}=ie(),a=P(()=>{const d=i.value.config;return d&&d.length?d:i.value.banner?[{type:"banner",banner:i.value.banner,bannerMask:i.value.bannerMask,hero:i.value.hero??s}]:[{type:"hero",full:!0,background:"tint-plate",hero:i.value.hero??s}]}),l=P(()=>a.value.length===1);function c(d){return o[d]??pt(d)}let u=null;pe(()=>l.value,d=>at(()=>{typeof document<"u"&&(u??(u=document.querySelector(".vp-layout")),u==null||u.classList.toggle("footer-no-border",d))}),{immediate:!0}),Jt(()=>{u==null||u.classList.remove("footer-no-border")});const f={slots:n,VPHomeBlog:r,components:o,DEFAULT_HERO:s,matter:i,config:a,onlyOnce:l,resolveComponentName:c,get el(){return u},set el(d){u=d}};return Object.defineProperty(f,"__isScriptSetup",{enumerable:!1,value:!0}),f}}),D4={class:"vp-home"};function j4(e,t,n,r,o,s){return p(),b("div",D4,[(p(!0),b(re,null,_e(r.config,(i,a)=>(p(),b("div",{key:i.type+a,class:ne({layout:a>0&&i.type!=="features"&&i.type!=="custom"})},[(p(),j(In(r.resolveComponentName(i.type)),cn({ref_for:!0},i,{"only-once":r.onlyOnce}),null,16,["only-once"]))],2))),128))])}const H4=H(B4,[["render",j4],["__scopeId","data-v-07dc6312"],["__file","VPHome.vue"]]),F4=R({__name:"VPFriendsItem",props:{friend:{}},setup(e,{expose:t}){t();const n=e,r=ss();function o(a,l){if(!l)return{};const c=$n(l)?r.value?l.dark:l.light:l;return c?{[a]:c}:{}}const s=P(()=>({...o("--vp-friends-text-color",n.friend.color),...o("--vp-friends-bg-color",n.friend.backgroundColor),...o("--vp-friends-name-color",n.friend.nameColor)})),i={props:n,isDark:r,getStyle:o,friendStyle:s,VPLink:Fe,VPSocialLinks:eo};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),W4={class:"content"},z4={key:0};function G4(e,t,n,r,o,s){return p(),b("div",{class:ne(["vp-friend",{"only-title":!n.friend.desc&&(!n.friend.socials||!n.friend.socials.length),"no-desc":!n.friend.desc}]),style:Ne(r.friendStyle)},[$(r.VPLink,{class:"avatar-link",href:n.friend.link,"no-icon":""},{default:C(()=>[_("div",{class:"avatar",style:Ne({backgroundImage:`url(${n.friend.avatar})`})},null,4)]),_:1},8,["href"]),_("div",W4,[$(r.VPLink,{class:"title",href:n.friend.link,"no-icon":""},{default:C(()=>[Re(U(n.friend.name),1)]),_:1},8,["href"]),n.friend.desc?(p(),b("p",z4,U(n.friend.desc),1)):O("",!0),n.friend.socials?(p(),j(r.VPSocialLinks,{key:1,links:n.friend.socials},null,8,["links"])):O("",!0)])],6)}const jd=H(F4,[["render",G4],["__scopeId","data-v-35027db0"],["__file","VPFriendsItem.vue"]]),U4=R({__name:"VPFriendsGroup",props:{group:{}},setup(e,{expose:t}){t();const n={VPFriendsItem:jd};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),q4={class:"vp-friends-group"},K4={class:"title"},Y4={key:0,class:"description"},J4={key:1,class:"friends-list"};function Q4(e,t,n,r,o,s){var i;return p(),b("div",q4,[_("h3",K4,U(n.group.title||"My Friends"),1),n.group.desc?(p(),b("p",Y4,U(n.group.desc),1)):O("",!0),(i=n.group.list)!=null&&i.length?(p(),b("section",J4,[(p(!0),b(re,null,_e(n.group.list,(a,l)=>(p(),j(r.VPFriendsItem,{key:a.name+l,friend:a},null,8,["friend"]))),128))])):O("",!0)])}const X4=H(U4,[["render",Q4],["__scopeId","data-v-dd077b51"],["__file","VPFriendsGroup.vue"]]),Z4=R({__name:"VPFriends",setup(e,{expose:t}){t();const n=ld(),{frontmatter:r}=ie(),o=P(()=>r.value.list||[]),s=P(()=>r.value.groups||[]),i={editLink:n,matter:r,list:o,groups:s,VPLink:Fe,VPFriendsItem:jd,VPFriendsGroup:X4};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),e6={class:"vp-friends"},t6={class:"title"},n6={key:0,class:"description"},r6={key:1,class:"friends-list"},o6={key:2,class:"edit-link"};function s6(e,t,n,r,o,s){return p(),b("div",e6,[_("h2",t6,U(r.matter.title||"My Friends"),1),r.matter.description?(p(),b("p",n6,U(r.matter.description),1)):O("",!0),r.list.length?(p(),b("section",r6,[(p(!0),b(re,null,_e(r.list,(i,a)=>(p(),j(r.VPFriendsItem,{key:i.name+a,friend:i},null,8,["friend"]))),128))])):O("",!0),(p(!0),b(re,null,_e(r.groups,(i,a)=>(p(),j(r.VPFriendsGroup,{key:a,group:i},null,8,["group"]))),128)),r.editLink?(p(),b("div",o6,[$(r.VPLink,{class:"edit-link-button",href:r.editLink.link,"no-icon":!0},{default:C(()=>[t[0]||(t[0]=_("span",{class:"vpi-square-pen edit-link-icon","aria-label":"edit icon"},null,-1)),Re(" "+U(r.editLink.text),1)]),_:1},8,["href"])])):O("",!0)])}const i6=H(Z4,[["render",s6],["__scopeId","data-v-dd991179"],["__file","VPFriends.vue"]]),a6=R({__name:"VPContent",props:{isNotFound:{type:Boolean}},setup(e,{expose:t}){t();const n=e,{hasSidebar:r}=Rt(),{frontmatter:o}=ie(),{isBlogLayout:s}=Bn();pe([s,()=>o.value.pageLayout],()=>at(()=>Mt&&document.documentElement.classList.toggle("bg-gray",s.value)),{immediate:!0});const i={props:n,hasSidebar:r,frontmatter:o,isBlogLayout:s,VPBlog:Rd,VPDoc:L5,VPPage:A5,VPHome:H4,VPFriends:i6};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}});function l6(e,t,n,r,o,s){return p(),b("div",{id:"VPContent","vp-content":"",class:ne(["vp-content",{"has-sidebar":r.hasSidebar&&!r.props.isNotFound,"is-home":r.frontmatter.pageLayout==="home"}])},[r.isBlogLayout?(p(),j(r.VPBlog,{key:0},{"blog-top":C(()=>[L(e.$slots,"blog-top",{},void 0,!0)]),"blog-bottom":C(()=>[L(e.$slots,"blog-bottom",{},void 0,!0)]),"blog-archives-before":C(()=>[L(e.$slots,"blog-archives-before",{},void 0,!0)]),"blog-archives-after":C(()=>[L(e.$slots,"blog-archives-after",{},void 0,!0)]),"blog-tags-before":C(()=>[L(e.$slots,"blog-tags-before",{},void 0,!0)]),"blog-tags-after":C(()=>[L(e.$slots,"blog-tags-after",{},void 0,!0)]),"blog-tags-title-after":C(()=>[L(e.$slots,"blog-tags-title-after",{},void 0,!0)]),"blog-tags-content-before":C(()=>[L(e.$slots,"blog-tags-content-before",{},void 0,!0)]),"blog-categories-before":C(()=>[L(e.$slots,"blog-categories-before",{},void 0,!0)]),"blog-categories-after":C(()=>[L(e.$slots,"blog-categories-after",{},void 0,!0)]),"blog-categories-content-before":C(()=>[L(e.$slots,"blog-categories-content-before",{},void 0,!0)]),"blog-post-list-before":C(()=>[L(e.$slots,"blog-post-list-before",{},void 0,!0)]),"blog-post-list-after":C(()=>[L(e.$slots,"blog-post-list-after",{},void 0,!0)]),"blog-post-list-pagination-after":C(()=>[L(e.$slots,"blog-post-list-pagination-after",{},void 0,!0)]),"blog-aside-top":C(()=>[L(e.$slots,"blog-aside-top",{},void 0,!0)]),"blog-aside-bottom":C(()=>[L(e.$slots,"blog-aside-bottom",{},void 0,!0)]),"blog-extract-before":C(()=>[L(e.$slots,"blog-extract-before",{},void 0,!0)]),"blog-extract-after":C(()=>[L(e.$slots,"blog-extract-after",{},void 0,!0)]),_:3})):r.frontmatter.pageLayout==="page"?(p(),j(r.VPPage,{key:1},{"page-top":C(()=>[L(e.$slots,"page-top",{},void 0,!0)]),"page-bottom":C(()=>[L(e.$slots,"page-bottom",{},void 0,!0)]),_:3})):r.frontmatter.pageLayout==="friends"?(p(),j(r.VPFriends,{key:2})):r.frontmatter.pageLayout==="home"?(p(),j(r.VPHome,{key:3},{"blog-top":C(()=>[L(e.$slots,"blog-top",{},void 0,!0)]),"blog-bottom":C(()=>[L(e.$slots,"blog-bottom",{},void 0,!0)]),"blog-post-list-before":C(()=>[L(e.$slots,"blog-post-list-before",{},void 0,!0)]),"blog-post-list-after":C(()=>[L(e.$slots,"blog-post-list-after",{},void 0,!0)]),"blog-post-list-pagination-after":C(()=>[L(e.$slots,"blog-post-list-pagination-after",{},void 0,!0)]),_:3})):r.frontmatter.pageLayout&&r.frontmatter.pageLayout!=="doc"?(p(),j(In(r.frontmatter.pageLayout),{key:4})):(p(),j(r.VPDoc,{key:5},{"doc-top":C(()=>[L(e.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":C(()=>[L(e.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":C(()=>[L(e.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":C(()=>[L(e.$slots,"doc-before",{},void 0,!0)]),"doc-after":C(()=>[L(e.$slots,"doc-after",{},void 0,!0)]),"aside-top":C(()=>[L(e.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":C(()=>[L(e.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":C(()=>[L(e.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":C(()=>[L(e.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":C(()=>[L(e.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":C(()=>[L(e.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2)}const c6=H(a6,[["render",l6],["__scopeId","data-v-9c5bd14c"],["__file","VPContent.vue"]]),u6=R({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(e,{expose:t}){t();const n=e,{theme:r}=ie(),o=q(!1),s=q(0),i=q(),a=q();pe(()=>n.headers,()=>{o.value=!1}),Tf(i,()=>{o.value=!1},{ignore:[a]});function l(){o.value=!o.value,s.value=window.innerHeight+Math.min(window.scrollY-n.navHeight,0)}function c(d){d.target.classList.contains("outline-link")&&(i.value&&(i.value.style.transition="none"),at(()=>{o.value=!1}))}function u(){o.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}const f={props:n,theme:r,open:o,vh:s,items:i,btn:a,toggle:l,onItemClick:c,scrollToTop:u,VPDocOutlineItem:Nd};return Object.defineProperty(f,"__isScriptSetup",{enumerable:!1,value:!0}),f}}),f6={class:"header"},d6={class:"outline"};function h6(e,t,n,r,o,s){return p(),b("div",{class:"vp-local-nav-outline-dropdown",style:Ne({"--vp-vh":`${r.vh}px`})},[n.headers.length>0?(p(),b("button",{key:0,ref:"btn",class:ne({open:r.open}),onClick:r.toggle},[Re(U(r.theme.outlineLabel||"On this page")+" ",1),t[0]||(t[0]=_("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(p(),b("button",{key:1,onClick:r.scrollToTop},U(r.theme.returnToTopLabel||"Return to top"),1)),$(bn,{name:"flyout"},{default:C(()=>[r.open?(p(),b("div",{key:0,ref:"items",class:"items",onClick:r.onItemClick},[_("div",f6,[_("a",{class:"top-link",href:"#",onClick:r.scrollToTop},U(r.theme.returnToTopLabel||"Return to top"),1)]),_("div",d6,[$(r.VPDocOutlineItem,{headers:n.headers},null,8,["headers"])])],512)):O("",!0)]),_:1})],4)}const p6=H(u6,[["render",h6],["__scopeId","data-v-b58e40ac"],["__file","VPLocalNavOutlineDropdown.vue"]]),v6=R({__name:"VPLocalNav",props:{open:{type:Boolean},showOutline:{type:Boolean}},emits:["openMenu"],setup(e,{expose:t}){t();const n=e,{theme:r}=ie(),{isBlogPost:o}=Bn(),{hasSidebar:s}=Rt(),{y:i}=na(),a=q(0),l=aa(),c=P(()=>l.value.length===0&&!s.value);Ee(()=>{a.value=Number.parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))});const u=P(()=>({"vp-local-nav":!0,fixed:c.value,"reached-top":i.value>=a.value,"is-blog":o,"with-outline":!n.showOutline})),f=P(()=>(s.value||o.value)&&(!c.value||i.value>=a.value)),d={props:n,theme:r,isBlogPost:o,hasSidebar:s,y:i,navHeight:a,headers:l,empty:c,classes:u,showLocalNav:f,VPLocalNavOutlineDropdown:p6};return Object.defineProperty(d,"__isScriptSetup",{enumerable:!1,value:!0}),d}}),g6=["disabled","aria-expanded"],m6={class:"menu-text"};function _6(e,t,n,r,o,s){return r.showLocalNav?(p(),b("div",{key:0,class:ne(r.classes)},[_("button",{class:ne(["menu",{hidden:r.isBlogPost}]),disabled:r.isBlogPost,"aria-expanded":n.open,"aria-controls":"SidebarNav",onClick:t[0]||(t[0]=i=>e.$emit("openMenu"))},[t[1]||(t[1]=_("span",{class:"vpi-align-left menu-icon"},null,-1)),_("span",m6,U(r.theme.sidebarMenuLabel||"Menu"),1)],10,g6),n.showOutline?(p(),j(r.VPLocalNavOutlineDropdown,{key:0,headers:r.headers,"nav-height":r.navHeight},null,8,["headers","nav-height"])):O("",!0)],2)):O("",!0)}const b6=H(v6,[["render",_6],["__scopeId","data-v-b10d7129"],["__file","VPLocalNav.vue"]]),y6={},k6={class:"vp-switch",type:"button",role:"switch"},w6={class:"check"},P6={key:0,class:"icon"};function S6(e,t){return p(),b("button",k6,[_("span",w6,[e.$slots.default?(p(),b("span",P6,[L(e.$slots,"default",{},void 0,!0)])):O("",!0)])])}const x6=H(y6,[["render",S6],["__scopeId","data-v-0169aaa3"],["__file","VPSwitch.vue"]]),L6=R({__name:"VPSwitchAppearance",setup(e,{expose:t}){t();const n=q(!1),{theme:r,isDark:o}=ie(),s=$e("toggle-appearance",()=>{o.value=!o.value}),i=q("");Bu(()=>{i.value=o.value?r.value.lightModeSwitchTitle||"Switch to light theme":r.value.darkModeSwitchTitle||"Switch to dark theme"});const a={checked:n,theme:r,isDark:o,toggleAppearance:s,switchTitle:i,VPSwitch:x6};return Object.defineProperty(a,"__isScriptSetup",{enumerable:!1,value:!0}),a}});function C6(e,t,n,r,o,s){return p(),j(r.VPSwitch,{class:"vp-switch-appearance",title:r.switchTitle,"aria-checked":r.checked,onClick:r.toggleAppearance},{default:C(()=>t[0]||(t[0]=[_("span",{class:"vpi-sun sun"},null,-1),_("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"])}const _a=H(L6,[["render",C6],["__scopeId","data-v-2d192b87"],["__file","VPSwitchAppearance.vue"]]),T6=R({__name:"VPNavBarAppearance",setup(e,{expose:t}){t();const{theme:n}=ie(),r={theme:n,VPSwitchAppearance:_a};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),E6={key:0,class:"vp-navbar-appearance"};function A6(e,t,n,r,o,s){return r.theme.appearance&&r.theme.appearance!=="force-dark"?(p(),b("div",E6,[$(r.VPSwitchAppearance)])):O("",!0)}const O6=H(T6,[["render",A6],["__scopeId","data-v-d933a746"],["__file","VPNavBarAppearance.vue"]]),I6=R({__name:"VPMenuLink",props:{item:{}},setup(e,{expose:t}){t();const{page:n}=ie(),r={page:n,VPLink:Fe,VPIcon:vt,get resolveRouteFullPath(){return kn},get isActive(){return ir}};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),V6={class:"vp-menu-link"},M6=["textContent"];function $6(e,t,n,r,o,s){return p(),b("div",V6,[$(r.VPLink,{class:ne({active:r.isActive(r.page.path,n.item.activeMatch||r.resolveRouteFullPath(n.item.link),!!n.item.activeMatch)}),href:n.item.link},{default:C(()=>[n.item.icon?(p(),j(r.VPIcon,{key:0,name:n.item.icon},null,8,["name"])):O("",!0),_("i",{textContent:U(n.item.text)},null,8,M6)]),_:1},8,["class","href"])])}const us=H(I6,[["render",$6],["__scopeId","data-v-c60562fd"],["__file","VPMenuLink.vue"]]),R6=R({__name:"VPMenuGroup",props:{text:{},icon:{},items:{}},setup(e,{expose:t}){t();const n={VPIcon:vt,VPMenuLink:us};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),N6={class:"vp-menu-group"},B6={key:0,class:"title"},D6=["textContent"];function j6(e,t,n,r,o,s){return p(),b("div",N6,[n.text?(p(),b("p",B6,[n.icon?(p(),j(r.VPIcon,{key:0,name:n.icon},null,8,["name"])):O("",!0),_("span",{textContent:U(n.text)},null,8,D6)])):O("",!0),(p(!0),b(re,null,_e(n.items,i=>(p(),b(re,null,["link"in i?(p(),j(r.VPMenuLink,{key:i==null?void 0:i.link,item:i},null,8,["item"])):O("",!0)],64))),256))])}const H6=H(R6,[["render",j6],["__scopeId","data-v-7be621bf"],["__file","VPMenuGroup.vue"]]),F6=R({__name:"VPMenu",props:{items:{}},setup(e,{expose:t}){t();const n={VPMenuGroup:H6,VPMenuLink:us};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),W6={class:"vp-menu"},z6={key:0,class:"items"};function G6(e,t,n,r,o,s){return p(),b("div",W6,[n.items?(p(),b("div",z6,[(p(!0),b(re,null,_e(n.items,i=>(p(),b(re,{key:i.text},["link"in i?(p(),j(r.VPMenuLink,{key:0,item:i},null,8,["item"])):(p(),j(r.VPMenuGroup,{key:1,text:i.text,items:i.items,icon:i.icon},null,8,["text","items","icon"]))],64))),128))])):O("",!0),L(e.$slots,"default",{},void 0,!0)])}const U6=H(F6,[["render",G6],["__scopeId","data-v-c90f6b44"],["__file","VPMenu.vue"]]),q6=R({__name:"VPFlyout",props:{prefixIcon:{},icon:{},button:{},label:{},items:{}},setup(e,{expose:t}){t();const n=q(!1),r=q();x1({el:r,onBlur:o});function o(){n.value=!1}const s={open:n,el:r,onBlur:o,VPIcon:vt,VPMenu:U6};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}}),K6=["aria-expanded","aria-label"],Y6={key:0,class:"text"},J6=["innerHTML"],Q6={key:1,class:"vpi-more-horizontal icon"},X6={class:"menu"};function Z6(e,t,n,r,o,s){return p(),b("div",{ref:"el",class:"vp-flyout",onMouseenter:t[1]||(t[1]=i=>r.open=!0),onMouseleave:t[2]||(t[2]=i=>r.open=!1)},[_("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":r.open,"aria-label":n.label,onClick:t[0]||(t[0]=i=>r.open=!r.open)},[n.button||n.icon?(p(),b("span",Y6,[n.prefixIcon?(p(),j(r.VPIcon,{key:0,name:n.prefixIcon},null,8,["name"])):O("",!0),n.icon?(p(),b("span",{key:1,class:ne(["option-icon",[n.icon]])},null,2)):O("",!0),n.button?(p(),b("span",{key:2,innerHTML:n.button},null,8,J6)):O("",!0),t[3]||(t[3]=_("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(p(),b("span",Q6))],8,K6),_("div",X6,[$(r.VPMenu,{items:n.items},{default:C(()=>[L(e.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544)}const ba=H(q6,[["render",Z6],["__scopeId","data-v-e8e53aac"],["__file","VPFlyout.vue"]]),e8=R({__name:"VPNavBarExtra",setup(e,{expose:t}){t();const{theme:n}=ie(),{localeLinks:r,currentLang:o}=sa(),s=P(()=>{var c;const l=n.value.navbarSocialInclude??[];return l.length?(c=n.value.social)==null?void 0:c.filter(({icon:u})=>typeof u=="string"&&l.includes(u)):n.value.social}),i=P(()=>{var l;return r.value.length&&o.value.label||n.value.appearance||((l=s.value)==null?void 0:l.length)}),a={theme:n,localeLinks:r,currentLang:o,social:s,hasExtraContent:i,VPFlyout:ba,VPMenuLink:us,VPSocialLinks:eo,VPSwitchAppearance:_a};return Object.defineProperty(a,"__isScriptSetup",{enumerable:!1,value:!0}),a}}),t8={key:0,class:"group translations"},n8={class:"trans-title"},r8={key:1,class:"group"},o8={class:"item appearance"},s8={class:"label"},i8={class:"appearance-action"},a8={key:2,class:"group"},l8={class:"item social-links"};function c8(e,t,n,r,o,s){return r.hasExtraContent?(p(),j(r.VPFlyout,{key:0,class:"vp-navbar-extra",label:"extra navigation"},{default:C(()=>[r.localeLinks.length&&r.currentLang.label?(p(),b("div",t8,[_("p",n8,U(r.currentLang.label),1),(p(!0),b(re,null,_e(r.localeLinks,i=>(p(),j(r.VPMenuLink,{key:i.link,item:i},null,8,["item"]))),128))])):O("",!0),r.theme.appearance&&r.theme.appearance!=="force-dark"?(p(),b("div",r8,[_("div",o8,[_("p",s8,U(r.theme.appearanceText||"Appearance"),1),_("div",i8,[$(r.VPSwitchAppearance)])])])):O("",!0),r.social?(p(),b("div",a8,[_("div",l8,[$(r.VPSocialLinks,{class:"social-links-list",links:r.social},null,8,["links"])])])):O("",!0)]),_:1})):O("",!0)}const u8=H(e8,[["render",c8],["__scopeId","data-v-c623ec0f"],["__file","VPNavBarExtra.vue"]]),f8=R({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(e,{expose:t}){t();const n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),d8=["aria-expanded"];function h8(e,t,n,r,o,s){return p(),b("button",{type:"button",class:ne(["vp-navbar-hamburger",{active:n.active}]),"aria-label":"mobile navigation","aria-expanded":n.active,"aria-controls":"nav-screen",onClick:t[0]||(t[0]=i=>e.$emit("click"))},t[1]||(t[1]=[_("span",{class:"container"},[_("span",{class:"top"}),_("span",{class:"middle"}),_("span",{class:"bottom"})],-1)]),10,d8)}const p8=H(f8,[["render",h8],["__scopeId","data-v-4d0fdb4a"],["__file","VPNavBarHamburger.vue"]]),v8=R({__name:"VPNavBarMenuGroup",props:{item:{}},setup(e,{expose:t}){t();const n=e,{page:r}=ie();function o(a){return"link"in a?ir(r.value.path,kn(a.link),!!n.item.activeMatch):a.items.some(o)}const s=P(()=>o(n.item)),i={props:n,page:r,isChildActive:o,childrenActive:s,VPFlyout:ba,get isActive(){return ir}};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}});function g8(e,t,n,r,o,s){return p(),j(r.VPFlyout,{class:ne(["vp-navbar-menu-group",{active:r.isActive(r.page.path,n.item.activeMatch,!!n.item.activeMatch)||r.childrenActive}]),button:n.item.text,items:n.item.items,"prefix-icon":n.item.icon},null,8,["class","button","items","prefix-icon"])}const m8=H(v8,[["render",g8],["__file","VPNavBarMenuGroup.vue"]]),_8=R({__name:"VPNavBarMenuLink",props:{item:{}},setup(e,{expose:t}){t();const{page:n}=ie(),r={page:n,get resolveRouteFullPath(){return kn},VPLink:Fe,VPIcon:vt,get isActive(){return ir}};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),b8=["innerHTML"];function y8(e,t,n,r,o,s){return p(),j(r.VPLink,{class:ne(["navbar-menu-link",{active:r.isActive(r.page.path,n.item.activeMatch||r.resolveRouteFullPath(n.item.link),!!n.item.activeMatch)}]),href:n.item.link,"no-icon":n.item.noIcon,target:n.item.target,rel:n.item.rel,tabindex:"0"},{default:C(()=>[n.item.icon?(p(),j(r.VPIcon,{key:0,name:n.item.icon},null,8,["name"])):O("",!0),_("span",{innerHTML:n.item.text},null,8,b8)]),_:1},8,["class","href","no-icon","target","rel"])}const k8=H(_8,[["render",y8],["__scopeId","data-v-081f03fe"],["__file","VPNavBarMenuLink.vue"]]),w8=R({__name:"VPNavBarMenu",setup(e,{expose:t}){t();const r={navbar:ed(),VPNavBarMenuGroup:m8,VPNavBarMenuLink:k8};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),P8={key:0,"aria-labelledby":"main-nav-aria-label",class:"vp-navbar-menu"};function S8(e,t,n,r,o,s){return r.navbar.length?(p(),b("nav",P8,[t[0]||(t[0]=_("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),(p(!0),b(re,null,_e(r.navbar,i=>(p(),b(re,{key:i.text},["link"in i?(p(),j(r.VPNavBarMenuLink,{key:0,item:i},null,8,["item"])):(p(),j(r.VPNavBarMenuGroup,{key:1,item:i},null,8,["item"]))],64))),128))])):O("",!0)}const x8=H(w8,[["render",S8],["__scopeId","data-v-888c0fa0"],["__file","VPNavBarMenu.vue"]]),L8={},C8={class:"vp-navbar-search"};function T8(e,t){const n=pt("DocSearch");return p(),b("div",C8,[$(n)])}const E8=H(L8,[["render",T8],["__file","VPNavBarSearch.vue"]]),A8=R({__name:"VPNavBarSocialLinks",setup(e,{expose:t}){t();const{theme:n}=ie(),r=P(()=>{var i;const s=n.value.navbarSocialInclude??[];return s.length?(i=n.value.social)==null?void 0:i.filter(({icon:a})=>typeof a=="string"&&s.includes(a)):n.value.social}),o={theme:n,social:r,VPSocialLinks:eo};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}});function O8(e,t,n,r,o,s){return r.social?(p(),j(r.VPSocialLinks,{key:0,class:"vp-navbar-social-links",links:r.social},null,8,["links"])):O("",!0)}const I8=H(A8,[["render",O8],["__scopeId","data-v-f7999e32"],["__file","VPNavBarSocialLinks.vue"]]),V8=R({__name:"VPNavBarTitle",setup(e,{expose:t}){t();const{theme:n,site:r}=ie(),{hasSidebar:o}=Rt(),s=yn(),i={theme:n,site:r,hasSidebar:o,routeLocale:s,VPLink:Fe,VPImage:cs};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}});function M8(e,t,n,r,o,s){return p(),b("div",{class:ne(["vp-navbar-title",{"has-sidebar":r.hasSidebar}])},[$(r.VPLink,{class:"title",href:r.theme.home??r.routeLocale},{default:C(()=>[L(e.$slots,"nav-bar-title-before",{},void 0,!0),r.theme.logo?(p(),j(r.VPImage,{key:0,class:"logo",image:{light:r.theme.logo,dark:r.theme.logoDark||r.theme.logo}},null,8,["image"])):O("",!0),_("span",null,U(r.site.title),1),L(e.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3},8,["href"])],2)}const $8=H(V8,[["render",M8],["__scopeId","data-v-f71c6d93"],["__file","VPNavBarTitle.vue"]]),R8=R({__name:"VPNavBarTranslations",setup(e,{expose:t}){t();const{theme:n}=ie(),{currentLang:r,localeLinks:o}=sa(),s={theme:n,currentLang:r,localeLinks:o,VPFlyout:ba,VPMenuLink:us};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}}),N8={class:"items"},B8={class:"title"};function D8(e,t,n,r,o,s){return r.localeLinks.length&&r.currentLang.label?(p(),j(r.VPFlyout,{key:0,class:"vp-navbar-translations",icon:"vpi-languages",label:r.theme.selectLanguageText||"Change Language"},{default:C(()=>[_("div",N8,[_("p",B8,U(r.currentLang.label),1),(p(!0),b(re,null,_e(r.localeLinks,i=>(p(),j(r.VPMenuLink,{key:i.link,item:i},null,8,["item"]))),128))])]),_:1},8,["label"])):O("",!0)}const j8=H(R8,[["render",D8],["__scopeId","data-v-3b5cd21d"],["__file","VPNavBarTranslations.vue"]]),H8=R({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggleScreen"],setup(e,{expose:t}){t();const n=e,{frontmatter:r}=ie(),{y:o}=na(),{hasSidebar:s}=Rt(),i=q({});Bu(()=>{i.value={"has-sidebar":s.value,home:r.value.pageLayout==="home",top:o.value===0,"screen-open":n.isScreenOpen}});const a={props:n,frontmatter:r,y:o,hasSidebar:s,classes:i,VPNavBarAppearance:O6,VPNavBarExtra:u8,VPNavBarHamburger:p8,VPNavBarMenu:x8,VPNavBarSearch:E8,VPNavBarSocialLinks:I8,VPNavBarTitle:$8,VPNavBarTranslations:j8};return Object.defineProperty(a,"__isScriptSetup",{enumerable:!1,value:!0}),a}}),F8={class:"wrapper"},W8={class:"container"},z8={class:"title"},G8={class:"content"},U8={class:"content-body"};function q8(e,t,n,r,o,s){return p(),b("div",{class:ne(["vp-navbar",r.classes])},[_("div",F8,[_("div",W8,[_("div",z8,[$(r.VPNavBarTitle,null,{"nav-bar-title-before":C(()=>[L(e.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":C(()=>[L(e.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),_("div",G8,[_("div",U8,[L(e.$slots,"nav-bar-content-before",{},void 0,!0),$(r.VPNavBarSearch,{class:"search"}),$(r.VPNavBarMenu,{class:"menu"}),$(r.VPNavBarTranslations,{class:"translations"}),$(r.VPNavBarAppearance,{class:"appearance"}),$(r.VPNavBarSocialLinks,{class:"social-links"}),$(r.VPNavBarExtra,{class:"extra"}),L(e.$slots,"nav-bar-content-after",{},void 0,!0),$(r.VPNavBarHamburger,{class:"hamburger",active:n.isScreenOpen,onClick:t[0]||(t[0]=i=>e.$emit("toggleScreen"))},null,8,["active"])])])])]),t[1]||(t[1]=_("div",{class:"divider"},[_("div",{class:"divider-line"})],-1))],2)}const K8=H(H8,[["render",q8],["__scopeId","data-v-32055f74"],["__file","VPNavBar.vue"]]),Y8=R({__name:"VPNavScreenAppearance",setup(e,{expose:t}){t();const{theme:n}=ie(),r={theme:n,VPSwitchAppearance:_a};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),J8={key:0,class:"vp-nav-screen-appearance"},Q8={class:"text"};function X8(e,t,n,r,o,s){return r.theme.appearance&&r.theme.appearance!=="force-dark"?(p(),b("div",J8,[_("p",Q8,U(r.theme.appearanceText??"Appearance"),1),$(r.VPSwitchAppearance)])):O("",!0)}const Z8=H(Y8,[["render",X8],["__scopeId","data-v-fadca7e0"],["__file","VPNavScreenAppearance.vue"]]),ew=R({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(e,{expose:t}){t();const r={closeScreen:$e("close-screen"),VPLink:Fe,VPIcon:vt};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),tw=["innerHTML"];function nw(e,t,n,r,o,s){return p(),j(r.VPLink,{class:"vp-nav-screen-menu-group-link",href:n.item.link,target:n.item.target,rel:n.item.rel,"no-icon":n.item.noIcon,onClick:r.closeScreen},{default:C(()=>[n.item.icon?(p(),j(r.VPIcon,{key:0,name:n.item.icon},null,8,["name"])):O("",!0),_("span",{innerHTML:n.item.text},null,8,tw)]),_:1},8,["href","target","rel","no-icon","onClick"])}const Hd=H(ew,[["render",nw],["__scopeId","data-v-0661b3de"],["__file","VPNavScreenMenuGroupLink.vue"]]),rw=R({__name:"VPNavScreenMenuGroupSection",props:{icon:{},text:{},items:{}},setup(e,{expose:t}){t();const n={VPIcon:vt,VPNavScreenMenuGroupLink:Hd};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),ow={class:"vp-nav-screen-menu-group-section"},sw={key:0,class:"title"};function iw(e,t,n,r,o,s){return p(),b("div",ow,[n.text?(p(),b("p",sw,[n.icon?(p(),j(r.VPIcon,{key:0,name:n.icon},null,8,["name"])):O("",!0),Re(" "+U(n.text),1)])):O("",!0),(p(!0),b(re,null,_e(n.items,i=>(p(),j(r.VPNavScreenMenuGroupLink,{key:i.text,item:i},null,8,["item"]))),128))])}const aw=H(rw,[["render",iw],["__scopeId","data-v-3d0d4b07"],["__file","VPNavScreenMenuGroupSection.vue"]]),lw=R({__name:"VPNavScreenMenuGroup",props:{text:{},icon:{},items:{}},setup(e,{expose:t}){t();const n=e,r=q(!1),o=P(()=>`nav-screen-menu-group-${n.text.replace(" ","-").toLowerCase()}`);function s(){r.value=!r.value}const i={props:n,isOpen:r,groupId:o,toggle:s,VPIcon:vt,VPNavScreenMenuGroupLink:Hd,VPNavScreenMenuGroupSection:aw};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),cw=["aria-controls","aria-expanded"],uw={class:"button-text"},fw=["innerHTML"],dw=["id"],hw={key:1,class:"group"};function pw(e,t,n,r,o,s){return p(),b("div",{class:ne(["vp-nav-screen-menu-group",{open:r.isOpen}])},[_("button",{class:"button","aria-controls":r.groupId,"aria-expanded":r.isOpen,onClick:r.toggle},[_("span",uw,[n.icon?(p(),j(r.VPIcon,{key:0,name:n.icon},null,8,["name"])):O("",!0),_("span",{innerHTML:n.text},null,8,fw)]),t[0]||(t[0]=_("span",{class:"vpi-plus button-icon"},null,-1))],8,cw),_("div",{id:r.groupId,class:"items"},[(p(!0),b(re,null,_e(n.items,i=>(p(),b(re,{key:i.text},["link"in i?(p(),b("div",{key:i.text,class:"item"},[$(r.VPNavScreenMenuGroupLink,{item:i},null,8,["item"])])):(p(),b("div",hw,[$(r.VPNavScreenMenuGroupSection,{text:i.text,items:i.items,icon:i.icon},null,8,["text","items","icon"])]))],64))),128))],8,dw)],2)}const vw=H(lw,[["render",pw],["__scopeId","data-v-877dc61b"],["__file","VPNavScreenMenuGroup.vue"]]),gw=R({__name:"VPNavScreenMenuLink",props:{item:{}},setup(e,{expose:t}){t();const r={closeScreen:$e("close-screen"),VPLink:Fe,VPIcon:vt};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),mw=["innerHTML"];function _w(e,t,n,r,o,s){return p(),j(r.VPLink,{class:"vp-nav-screen-menu-link",href:n.item.link,target:n.item.target,rel:n.item.rel,"no-icon":n.item.noIcon,onClick:r.closeScreen},{default:C(()=>[n.item.icon?(p(),j(r.VPIcon,{key:0,name:n.item.icon},null,8,["name"])):O("",!0),_("span",{innerHTML:n.item.text},null,8,mw)]),_:1},8,["href","target","rel","no-icon","onClick"])}const bw=H(gw,[["render",_w],["__scopeId","data-v-e6226695"],["__file","VPNavScreenMenuLink.vue"]]),yw=R({__name:"VPNavScreenMenu",setup(e,{expose:t}){t();const r={navbar:ed(),VPNavScreenMenuGroup:vw,VPNavScreenMenuLink:bw};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),kw={key:0,class:"vp-nav-screen-menu"};function ww(e,t,n,r,o,s){return r.navbar.length?(p(),b("nav",kw,[(p(!0),b(re,null,_e(r.navbar,i=>(p(),b(re,{key:i.text},["link"in i?(p(),j(r.VPNavScreenMenuLink,{key:0,item:i},null,8,["item"])):(p(),j(r.VPNavScreenMenuGroup,{key:1,text:i.text||"",items:i.items,icon:i.icon},null,8,["text","items","icon"]))],64))),128))])):O("",!0)}const Pw=H(yw,[["render",ww],["__file","VPNavScreenMenu.vue"]]),Sw=R({__name:"VPNavScreenSocialLinks",setup(e,{expose:t}){t();const{theme:n}=ie(),r={theme:n,VPSocialLinks:eo};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}});function xw(e,t,n,r,o,s){return r.theme.social?(p(),j(r.VPSocialLinks,{key:0,class:"vp-nav-screen-social-links",links:r.theme.social},null,8,["links"])):O("",!0)}const Lw=H(Sw,[["render",xw],["__file","VPNavScreenSocialLinks.vue"]]),Cw=R({__name:"VPNavScreenTranslations",setup(e,{expose:t}){t();const{localeLinks:n,currentLang:r}=sa(),o=q(!1);function s(){o.value=!o.value}const i={localeLinks:n,currentLang:r,isOpen:o,toggle:s,VPLink:Fe};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),Tw={class:"list"};function Ew(e,t,n,r,o,s){return r.localeLinks.length&&r.currentLang.label?(p(),b("div",{key:0,class:ne(["vp-nav-screen-translations",{open:r.isOpen}])},[_("button",{class:"title",onClick:r.toggle},[t[0]||(t[0]=_("span",{class:"vpi-languages icon lang"},null,-1)),Re(" "+U(r.currentLang.label)+" ",1),t[1]||(t[1]=_("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),_("ul",Tw,[(p(!0),b(re,null,_e(r.localeLinks,i=>(p(),b("li",{key:i.link,class:"item"},[$(r.VPLink,{class:"link",href:i.link},{default:C(()=>[Re(U(i.text),1)]),_:2},1032,["href"])]))),128))])],2)):O("",!0)}const Aw=H(Cw,[["render",Ew],["__scopeId","data-v-9415c1d3"],["__file","VPNavScreenTranslations.vue"]]),Ow=R({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(e,{expose:t}){t();const r={isLocked:ta(Mt?document.body:null),VPNavScreenAppearance:Z8,VPNavScreenMenu:Pw,VPNavScreenSocialLinks:Lw,VPNavScreenTranslates:Aw};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),Iw={key:0,id:"navScreen",class:"vp-nav-screen"},Vw={class:"container"};function Mw(e,t,n,r,o,s){return p(),j(bn,{name:"fade",onEnter:t[0]||(t[0]=i=>r.isLocked=!0),onAfterLeave:t[1]||(t[1]=i=>r.isLocked=!1)},{default:C(()=>[n.open?(p(),b("div",Iw,[_("div",Vw,[L(e.$slots,"nav-screen-content-before",{},void 0,!0),$(r.VPNavScreenMenu,{class:"menu"}),$(r.VPNavScreenTranslates,{class:"translations"}),$(r.VPNavScreenAppearance,{class:"appearance"}),$(r.VPNavScreenSocialLinks,{class:"social-links"}),L(e.$slots,"nav-screen-content-after",{},void 0,!0)])])):O("",!0)]),_:3})}const $w=H(Ow,[["render",Mw],["__scopeId","data-v-a90157be"],["__file","VPNavScreen.vue"]]),Rw=R({__name:"VPNav",setup(e,{expose:t}){t();const{page:n,frontmatter:r}=ie(),{isScreenOpen:o,closeScreen:s,toggleScreen:i}=T1(),a=["blog","friends","blog-archives","blog-tags","blog-categories"],l=P(()=>a.includes(n.value.type)),c=P(()=>r.value.navbar!==!1);qt("close-screen",s),lr(()=>{Mt&&document.documentElement.classList.toggle("hide-nav",!c.value)});const u={page:n,frontmatter:r,isScreenOpen:o,closeScreen:s,toggleScreen:i,fixedInclude:a,fixed:l,hasNavbar:c,VPNavbar:K8,VPNavScreen:$w};return Object.defineProperty(u,"__isScriptSetup",{enumerable:!1,value:!0}),u}});function Nw(e,t,n,r,o,s){return p(),b("div",{class:ne(["vp-nav",{fixed:r.fixed}])},[$(r.VPNavbar,{"is-screen-open":r.isScreenOpen,onToggleScreen:r.toggleScreen},{"nav-bar-title-before":C(()=>[L(e.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":C(()=>[L(e.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":C(()=>[L(e.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":C(()=>[L(e.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),$(r.VPNavScreen,{open:r.isScreenOpen},{"nav-screen-content-before":C(()=>[L(e.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":C(()=>[L(e.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])],2)}const Fd=H(Rw,[["render",Nw],["__scopeId","data-v-1c6a66a8"],["__file","VPNav.vue"]]),Bw=R({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(e,{expose:t}){t();const n=e,{collapsed:r,collapsible:o,isLink:s,isActiveLink:i,hasActiveLink:a,hasChildren:l,toggle:c}=H1(P(()=>n.item)),u=P(()=>l.value?"section":"div"),f=P(()=>s.value?"a":"div"),d=P(()=>l.value?n.depth+2===7?"p":`h${n.depth+2}`:"p"),h=P(()=>s.value?void 0:"button"),v=P(()=>[[`level-${n.depth}`],{collapsible:o.value},{collapsed:r.value},{"is-link":s.value},{"is-active":i.value},{"has-active":a.value}]);function m(T){"key"in T&&T.key!=="Enter"||n.item.link||c()}function w(){n.item.link&&c()}const S={props:n,collapsed:r,collapsible:o,isLink:s,isActiveLink:i,hasActiveLink:a,hasChildren:l,toggle:c,sectionTag:u,linkTag:f,textTag:d,itemRole:h,classes:v,onItemInteraction:m,onCaretClick:w,VPLink:Fe,VPIcon:vt};return Object.defineProperty(S,"__isScriptSetup",{enumerable:!1,value:!0}),S}}),Dw=["role","tabindex"],jw={key:1,class:"items"};function Hw(e,t,n,r,o,s){const i=pt("VPSidebarItem",!0);return p(),j(In(r.sectionTag),{class:ne(["vp-sidebar-item sidebar-item",r.classes])},{default:C(()=>[n.item.text?(p(),b("div",cn({key:0,class:"item",role:r.itemRole,tabindex:n.item.items&&0},sp(n.item.items?{click:r.onItemInteraction,keydown:r.onItemInteraction}:{},!0)),[t[1]||(t[1]=_("div",{class:"indicator"},null,-1)),n.item.icon?(p(),j(r.VPIcon,{key:0,name:n.item.icon},null,8,["name"])):O("",!0),n.item.link?(p(),j(r.VPLink,{key:1,tag:r.linkTag,class:"link",href:n.item.link},{default:C(()=>[(p(),j(In(r.textTag),{class:"text",innerHTML:n.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href"])):(p(),j(In(r.textTag),{key:2,class:"text",innerHTML:n.item.text},null,8,["innerHTML"])),n.item.collapsed!=null?(p(),b("div",{key:3,class:"caret",role:"button","aria-label":"toggle section",tabindex:"0",onClick:r.onCaretClick,onKeydown:Zu(r.onCaretClick,["enter"])},t[0]||(t[0]=[_("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):O("",!0)],16,Dw)):O("",!0),n.item.items&&n.item.items.length?(p(),b("div",jw,[n.depth<5?(p(!0),b(re,{key:0},_e(n.item.items,a=>(p(),j(i,{key:a.text,item:a,depth:n.depth+1},null,8,["item","depth"]))),128)):O("",!0)])):O("",!0)]),_:1},8,["class"])}const Fw=H(Bw,[["render",Hw],["__scopeId","data-v-1195cdfd"],["__file","VPSidebarItem.vue"]]),Ww=R({__name:"VPSidebarGroup",props:{items:{}},setup(e,{expose:t}){t();const n=q(!0);let r=null;Ee(()=>{r=setTimeout(()=>{r=null,n.value=!1},300)}),Gi(()=>{r!=null&&(clearTimeout(r),r=null)});const o={disableTransition:n,get timer(){return r},set timer(s){r=s},VPSidebarItem:Fw};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}});function zw(e,t,n,r,o,s){return p(!0),b(re,null,_e(n.items,i=>(p(),b("div",{key:i.text,class:ne(["group",{"no-transition":r.disableTransition}])},[$(r.VPSidebarItem,{item:i,depth:0},null,8,["item"])],2))),128)}const Gw=H(Ww,[["render",zw],["__scopeId","data-v-6166e355"],["__file","VPSidebarGroup.vue"]]),Uw=R({__name:"VPSidebar",props:{open:{type:Boolean}},setup(e,{expose:t}){t();const n=e,{sidebarGroups:r,hasSidebar:o,sidebarKey:s}=Rt(),i=_f(),a=q(null),l=ta(Mt?document.body:null);pe([()=>n.open,a],()=>{var u;n.open?(l.value=!0,(u=a.value)==null||u.focus()):l.value=!1},{immediate:!0,flush:"post"}),Ee(()=>{const u=document.querySelector(`.vp-sidebar .vp-link[href*="${i.value}"]`);if(!u||!a.value)return;const{top:f,height:d}=a.value.getBoundingClientRect(),{top:h,height:v}=u.getBoundingClientRect();(hf+d)&&u.scrollIntoView({block:"center"})});const c={props:n,sidebarGroups:r,hasSidebar:o,sidebarKey:s,routePath:i,navEl:a,isLocked:l,VPSidebarGroup:Gw,VPTransitionFadeSlideY:ma};return Object.defineProperty(c,"__isScriptSetup",{enumerable:!1,value:!0}),c}});function qw(e,t,n,r,o,s){return p(),j(bn,{name:"fade-slide-x",mode:"out-in"},{default:C(()=>[r.hasSidebar?(p(),b("aside",{key:0,ref:"navEl",class:ne(["vp-sidebar",{open:n.open}]),onClick:t[0]||(t[0]=Xu(()=>{},["stop"]))},[t[2]||(t[2]=_("div",{class:"curtain"},null,-1)),$(r.VPTransitionFadeSlideY,null,{default:C(()=>[(p(),b("nav",{id:"SidebarNav",key:r.sidebarKey,class:"nav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},[t[1]||(t[1]=_("span",{id:"sidebar-aria-label",class:"visually-hidden"}," Sidebar Navigation ",-1)),L(e.$slots,"sidebar-nav-before",{},void 0,!0),$(r.VPSidebarGroup,{items:r.sidebarGroups},null,8,["items"]),L(e.$slots,"sidebar-nav-after",{},void 0,!0)]))]),_:3})],2)):O("",!0)]),_:3})}const Kw=H(Uw,[["render",qw],["__scopeId","data-v-f57067a4"],["__file","VPSidebar.vue"]]),Yw=R({__name:"VPSkipLink",setup(e,{expose:t}){t();const n=lt(),r=q();pe(()=>n.path,()=>r.value.focus());function o({target:i}){const a=document.getElementById(decodeURIComponent(i.hash).slice(1));if(a){const l=()=>{a.removeAttribute("tabindex"),a.removeEventListener("blur",l)};a.setAttribute("tabindex","-1"),a.addEventListener("blur",l),a.focus(),window.scrollTo(0,0)}}const s={route:n,backToTop:r,focusOnTargetAnchor:o};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}}),Jw={ref:"backToTop",tabindex:"-1"};function Qw(e,t,n,r,o,s){return p(),b(re,null,[_("span",Jw,null,512),_("a",{href:"#VPContent",class:"vp-skip-link visually-hidden",onClick:r.focusOnTargetAnchor}," Skip to content ")],64)}const Wd=H(Yw,[["render",Qw],["__scopeId","data-v-ed157a22"],["__file","VPSkipLink.vue"]]),Xw=R({__name:"VPFooter",setup(e,{expose:t}){t();const{theme:n}=ie(),{hasSidebar:r}=Rt(),o=Cm("--vp-footer-height",Mt?document.body:null),s=q(null);Ee(()=>{n.value.footer&&s.value&&(o.value=`${s.value.offsetHeight}px`)});const i={theme:n,hasSidebar:r,footerHeight:o,footer:s};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),Zw={class:"container"},eP=["innerHTML"],tP=["innerHTML"];function nP(e,t,n,r,o,s){return r.theme.footer?(p(),b("footer",{key:0,ref:"footer",class:ne(["vp-footer",{"has-sidebar":r.hasSidebar}])},[_("div",Zw,[r.theme.footer.message?(p(),b("p",{key:0,class:"message",innerHTML:r.theme.footer.message},null,8,eP)):O("",!0),r.theme.footer.copyright?(p(),b("p",{key:1,class:"copyright",innerHTML:r.theme.footer.copyright},null,8,tP)):O("",!0)])],2)):O("",!0)}const ya=H(Xw,[["render",nP],["__scopeId","data-v-7fd6cbc3"],["__file","VPFooter.vue"]]),rP=R({__name:"VPBackToTop",setup(e,{expose:t}){t();const n=Xe(),{height:r}=Am(n),{height:o}=Mm();Ee(()=>{n.value=document.body});const{page:s}=ie(),{y:i}=na(),a=q(!1),l=P(()=>i.value/(r.value-o.value)*100),c=P(()=>`${Math.min(Math.round(l.value),100)||0}%`),u=P(()=>`calc(${Math.PI*l.value}% - ${4*Math.PI}px) calc(${Math.PI*100}% - ${4*Math.PI}px)`),f=P(()=>s.value.frontmatter.backToTop===!1||s.value.frontmatter.pageLayout==="home"&&s.value.frontmatter.config&&s.value.frontmatter.config.length<=1),d=P(()=>r.valueo.value/2);let h=null;function v(){h&&clearTimeout(h),h=setTimeout(()=>{a.value=!1},1e3)}pe(i,()=>{a.value=!0,v()});function m(){window.scrollTo({top:0,behavior:"smooth"})}const w={body:n,bodyHeight:r,windowHeight:o,page:s,y:i,isScrolling:a,progress:l,percent:c,stroke:u,mustHidden:f,show:d,get timer(){return h},set timer(S){h=S},resetScrolling:v,handleClick:m};return Object.defineProperty(w,"__isScriptSetup",{enumerable:!1,value:!0}),w}}),oP={"aria-hidden":"true"};function sP(e,t,n,r,o,s){return p(),j(bn,{name:"fade"},{default:C(()=>[Fi(_("button",{type:"button",class:"vp-back-to-top","aria-label":"back to top",onClick:r.handleClick},[_("span",{class:ne(["percent",{show:r.isScrolling}])},U(r.percent),3),_("span",{class:ne(["icon vpi-back-to-top",{show:!r.isScrolling}])},null,2),(p(),b("svg",oP,[_("circle",{cx:"50%",cy:"50%",style:Ne({"stroke-dasharray":r.stroke})},null,4)]))],512),[[Qu,!r.mustHidden&&(r.show||r.isScrolling)]])]),_:1})}const iP=H(rP,[["render",sP],["__scopeId","data-v-d069047c"],["__file","VPBackToTop.vue"]]),aP=R({__name:"VPEncryptGlobal",setup(e,{expose:t}){t();const{theme:n,site:r}=ie(),o=P(()=>n.value.profile),s=P(()=>{var a;return((a=o.value)==null?void 0:a.name)||r.value.title}),i={theme:n,site:r,profile:o,title:s,VPFooter:ya,VPEncryptForm:Bd};return Object.defineProperty(i,"__isScriptSetup",{enumerable:!1,value:!0}),i}}),lP={class:"vp-global-encrypt"},cP={class:"global-encrypt-container"},uP={key:0,class:"profile"},fP=["src","alt"],dP={key:1};function hP(e,t,n,r,o,s){const i=pt("ClientOnly");return p(),b(re,null,[$(i,null,{default:C(()=>[_("div",lP,[_("div",cP,[r.profile||r.title?(p(),b("div",uP,[r.profile?(p(),b("p",{key:0,class:ne(["avatar",{circle:r.profile.circle}])},[_("img",{src:r.profile.avatar??r.profile.url,alt:r.profile.name},null,8,fP)],2)):O("",!0),r.title?(p(),b("h3",dP,U(r.title),1)):O("",!0)])):O("",!0),$(r.VPEncryptForm,{global:"",info:r.theme.encryptGlobalText},null,8,["info"])])])]),_:1}),$(r.VPFooter)],64)}const pP=H(aP,[["render",hP],["__scopeId","data-v-0b9a7573"],["__file","VPEncryptGlobal.vue"]]),vP=R({__name:"Layout",setup(e,{expose:t}){t();const{isOpen:n,open:r,close:o}=Rt(),{frontmatter:s}=ie(),{isGlobalDecrypted:i,isPageDecrypted:a}=is(),l=lt();pe(()=>l.path,o),j1(n,o);const c={isSidebarOpen:n,openSidebar:r,closeSidebar:o,frontmatter:s,isGlobalDecrypted:i,isPageDecrypted:a,route:l,VPBackdrop:i2,VPContent:c6,VPLocalNav:b6,VPNav:Fd,VPSidebar:Kw,VPSkipLink:Wd,VPFooter:ya,VPBackToTop:iP,VPEncryptGlobal:pP};return Object.defineProperty(c,"__isScriptSetup",{enumerable:!1,value:!0}),c}});function gP(e,t,n,r,o,s){const i=pt("Content");return r.frontmatter.pageLayout!==!1&&r.frontmatter.pageLayout!=="custom"?(p(),b("div",{key:0,class:ne(["theme-plume vp-layout",r.frontmatter.pageClass])},[r.isGlobalDecrypted?(p(),b(re,{key:1},[L(e.$slots,"layout-top",{},void 0,!0),$(r.VPSkipLink),$(r.VPBackdrop,{show:r.isSidebarOpen,onClick:r.closeSidebar},null,8,["show","onClick"]),$(r.VPNav,null,{"nav-bar-title-before":C(()=>[L(e.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":C(()=>[L(e.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":C(()=>[L(e.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":C(()=>[L(e.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":C(()=>[L(e.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":C(()=>[L(e.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),$(r.VPLocalNav,{open:r.isSidebarOpen,"show-outline":r.isPageDecrypted,onOpenMenu:r.openSidebar},null,8,["open","show-outline","onOpenMenu"]),$(r.VPSidebar,{open:r.isSidebarOpen},{"sidebar-nav-before":C(()=>[L(e.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":C(()=>[L(e.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),L(e.$slots,"custom-content",{},()=>[$(r.VPContent,null,{"page-top":C(()=>[L(e.$slots,"page-top",{},void 0,!0)]),"page-bottom":C(()=>[L(e.$slots,"page-bottom",{},void 0,!0)]),"doc-footer-before":C(()=>[L(e.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":C(()=>[L(e.$slots,"doc-before",{},void 0,!0)]),"doc-after":C(()=>[L(e.$slots,"doc-after",{},void 0,!0)]),"doc-top":C(()=>[L(e.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":C(()=>[L(e.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":C(()=>[L(e.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":C(()=>[L(e.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":C(()=>[L(e.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":C(()=>[L(e.$slots,"aside-outline-after",{},void 0,!0)]),"blog-top":C(()=>[L(e.$slots,"blog-top",{},void 0,!0)]),"blog-bottom":C(()=>[L(e.$slots,"blog-bottom",{},void 0,!0)]),"blog-archives-before":C(()=>[L(e.$slots,"blog-archives-before",{},void 0,!0)]),"blog-archives-after":C(()=>[L(e.$slots,"blog-archives-after",{},void 0,!0)]),"blog-tags-before":C(()=>[L(e.$slots,"blog-tags-before",{},void 0,!0)]),"blog-tags-after":C(()=>[L(e.$slots,"blog-tags-after",{},void 0,!0)]),"blog-tags-title-after":C(()=>[L(e.$slots,"blog-tags-title-after",{},void 0,!0)]),"blog-tags-content-before":C(()=>[L(e.$slots,"blog-tags-content-before",{},void 0,!0)]),"blog-categories-before":C(()=>[L(e.$slots,"blog-categories-before",{},void 0,!0)]),"blog-categories-after":C(()=>[L(e.$slots,"blog-categories-after",{},void 0,!0)]),"blog-categories-content-before":C(()=>[L(e.$slots,"blog-categories-content-before",{},void 0,!0)]),"blog-post-list-before":C(()=>[L(e.$slots,"blog-post-list-before",{},void 0,!0)]),"blog-post-list-after":C(()=>[L(e.$slots,"blog-post-list-after",{},void 0,!0)]),"blog-post-list-pagination-after":C(()=>[L(e.$slots,"blog-post-list-pagination-after",{},void 0,!0)]),"blog-aside-top":C(()=>[L(e.$slots,"blog-aside-top",{},void 0,!0)]),"blog-aside-bottom":C(()=>[L(e.$slots,"blog-aside-bottom",{},void 0,!0)]),"blog-extract-before":C(()=>[L(e.$slots,"blog-extract-before",{},void 0,!0)]),"blog-extract-after":C(()=>[L(e.$slots,"blog-extract-after",{},void 0,!0)]),_:3})],!0),$(r.VPBackToTop),$(r.VPFooter),L(e.$slots,"layout-bottom",{},void 0,!0)],64)):(p(),j(r.VPEncryptGlobal,{key:0}))],2)):(p(),j(i,{key:1}))}const mP=H(vP,[["render",gP],["__scopeId","data-v-8f792576"],["__file","Layout.vue"]]),_P=R({__name:"NotFound",setup(e,{expose:t}){t();const n=yn(),{theme:r}=ie(),o={root:n,theme:r,get withBase(){return nt},VPNav:Fd,VPSkipLink:Wd,VPFooter:ya};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}}),bP={"vp-not-found":"",class:"theme-plume vp-layout"},yP={id:"VPContent",class:"vp-content"},kP={class:"vp-not-found"},wP={class:"code"},PP={class:"title"},SP={class:"quote"},xP={class:"action"},LP=["href","aria-label"];function CP(e,t,n,r,o,s){return p(),b("div",bP,[L(e.$slots,"layout-top",{},void 0,!0),$(r.VPSkipLink),$(r.VPNav,null,{"nav-bar-title-before":C(()=>[L(e.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":C(()=>[L(e.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":C(()=>[L(e.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":C(()=>[L(e.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":C(()=>[L(e.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":C(()=>[L(e.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),_("div",yP,[L(e.$slots,"not-found",{},()=>{var i,a,l,c,u;return[_("div",kP,[_("p",wP,U(((i=r.theme.notFound)==null?void 0:i.code)??"404"),1),_("h1",PP,U(((a=r.theme.notFound)==null?void 0:a.title)??"PAGE NOT FOUND"),1),t[0]||(t[0]=_("div",{class:"divider"},null,-1)),_("blockquote",SP,U(((l=r.theme.notFound)==null?void 0:l.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),_("div",xP,[_("a",{class:"link",href:r.withBase(r.root),"aria-label":((c=r.theme.notFound)==null?void 0:c.linkLabel)??"go to home"},U(((u=r.theme.notFound)==null?void 0:u.linkText)??"Take me home"),9,LP)])])]},!0)]),$(r.VPFooter),L(e.$slots,"layout-bottom",{},void 0,!0)])}const TP=H(_P,[["render",CP],["__scopeId","data-v-d69c20a1"],["__file","NotFound.vue"]]);function EP(e){e.component("Badge",Lc),e.component("VPBadge",Lc),e.component("VPCard",Sc),e.component("Card",Sc),e.component("VPCardGrid",Cc),e.component("CardGrid",Cc),e.component("VPLinkCard",xc),e.component("LinkCard",xc),e.component("VPImageCard",Tc),e.component("ImageCard",Tc),e.component("DocSearch",()=>{const t=e.component("Docsearch")||e.component("SearchBox");return t?Se(t):null}),e.component("PageComment",t=>{const n=e.component("CommentService");return n?Se(n,t):null}),e.component("Icon",vt),e.component("VPIcon",vt),e.component("HomeBox",ar),e.component("VPHomeBox",ar)}var AP=$t({enhance({app:e,router:t}){b1(e),y1(e),S1(t),EP(e)},setup(){R1(),W1(),I1(),ob()},layouts:{Layout:mP,NotFound:TP}});const OP=Object.freeze(Object.defineProperty({__proto__:null,default:AP},Symbol.toStringTag,{value:"Module"}));function IP(e){const t=P(()=>{const s=it(e),[i="",a=""]=s.split("/");return{owner:i,name:a}}),n=q(null),r=q(!1);async function o(){const{owner:s,name:i}=t.value;if(!s||!i)return;r.value=!1;const a=await fetch(`https://api.pengzhanbo.cn/github/repo/${s}/${i}`).then(l=>l.json());n.value=a,r.value=!0}return pe(t,o,{immediate:!0}),{data:n,loaded:r}}const VP=R({__name:"RepoCard",props:{repo:{}},setup(e,{expose:t}){t();const n=e,{loaded:r,data:o}=IP(hn(n,"repo")),s={props:n,loaded:r,data:o};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}}),MP={key:0,class:"vp-repo-card"},$P={class:"repo-name"},RP={class:"repo-link"},NP=["href"],BP={class:"repo-visibility"},DP={class:"repo-desc"},jP={class:"repo-info"},HP={key:0},FP={key:1};function WP(e,t,n,r,o,s){return r.loaded&&r.data?(p(),b("div",MP,[_("p",$P,[t[0]||(t[0]=_("span",{class:"vpi-github-repo"},null,-1)),_("span",RP,[_("a",{href:r.data.url,target:"_blank",rel:"noopener noreferrer"},U(r.data.ownerType==="Organization"?r.data.fullName:r.data.name),9,NP)]),_("span",BP,U(r.data.visibility+(r.data.template?" Template":"")),1)]),_("p",DP,U(r.data.description),1),_("div",jP,[r.data.language?(p(),b("p",HP,[_("span",{class:"repo-language",style:Ne({"background-color":r.data.languageColor})},null,4),_("span",null,U(r.data.language),1)])):O("",!0),_("p",null,[t[1]||(t[1]=_("span",{class:"vpi-github-star"},null,-1)),_("span",null,U(r.data.stars),1)]),_("p",null,[t[2]||(t[2]=_("span",{class:"vpi-github-fork"},null,-1)),_("span",null,U(r.data.forks),1)]),r.data.license?(p(),b("p",FP,[t[3]||(t[3]=_("span",{class:"vpi-github-license"},null,-1)),_("span",null,U(r.data.license.name),1)])):O("",!0)])])):O("",!0)}const zP=H(VP,[["render",WP],["__scopeId","data-v-a8b1d456"],["__file","RepoCard.vue"]]),GP=$t({enhance({app:e}){e.component("RepoCard",zP)}}),UP=Object.freeze(Object.defineProperty({__proto__:null,default:GP},Symbol.toStringTag,{value:"Module"})),Po=[em,om,Hm,Jm,h_,V_,D_,j_,c0,x0,G0,OP,UP].map(e=>e.default).filter(Boolean),qP=JSON.parse('{"base":"/fastapi_best_architecture_docs/","lang":"zh-CN","title":"FastAPI Best Architecture","description":"","head":[["link",{"rel":"icon","href":"https://fastapi.tiangolo.com/img/favicon.png"}]],"locales":{}}');var kr=Xe(qP),KP=bg,YP=()=>{const e=Wg({history:KP(rf("/fastapi_best_architecture_docs/")),routes:[{name:"vuepress-route",path:"/:catchAll(.*)",components:{}}],scrollBehavior:(t,n,r)=>r||(t.hash?{el:t.hash}:{top:0})});return e.beforeResolve(async(t,n)=>{if(t.path!==n.path||n===jt){const r=sr(t.fullPath);if(r.path!==t.fullPath)return r.path;const o=await r.loader();t.meta={...r.meta,_pageChunk:o}}else t.path===n.path&&(t.meta=n.meta)}),e},JP=e=>{e.component("ClientOnly",Jg),e.component("Content",kf),e.component("RouteLink",Yg)},QP=(e,t,n)=>{const r=P(()=>t.currentRoute.value.path),o=Di((w,S)=>({get(){return w(),t.currentRoute.value.meta._pageChunk},set(T){t.currentRoute.value.meta._pageChunk=T,S()}})),s=P(()=>Ln.resolveLayouts(n)),i=P(()=>Ln.resolveRouteLocale(kr.value.locales,r.value)),a=P(()=>Ln.resolveSiteLocaleData(kr.value,i.value)),l=P(()=>o.value.comp),c=P(()=>o.value.data),u=P(()=>c.value.frontmatter),f=P(()=>Ln.resolvePageHeadTitle(c.value,a.value)),d=P(()=>Ln.resolvePageHead(f.value,u.value,a.value)),h=P(()=>Ln.resolvePageLang(c.value,a.value)),v=P(()=>Ln.resolvePageLayout(c.value,s.value)),m={layouts:s,pageData:c,pageComponent:l,pageFrontmatter:u,pageHead:d,pageHeadTitle:f,pageLang:h,pageLayout:v,redirects:si,routeLocale:i,routePath:r,routes:nr,siteData:kr,siteLocaleData:a};return e.provide(Zi,m),Object.defineProperties(e.config.globalProperties,{$frontmatter:{get:()=>u.value},$head:{get:()=>d.value},$headTitle:{get:()=>f.value},$lang:{get:()=>h.value},$page:{get:()=>c.value},$routeLocale:{get:()=>i.value},$site:{get:()=>kr.value},$siteLocale:{get:()=>a.value},$withBase:{get:()=>nt}}),m},XP=()=>{const e=Gg(),t=fr();let n=[];const r=()=>{e.value.forEach(i=>{const a=ZP(i);a&&n.push(a)})},o=()=>{const i=[];return e.value.forEach(a=>{const l=eS(a);l&&i.push(l)}),i},s=()=>{document.documentElement.lang=t.value;const i=o();n.forEach((a,l)=>{const c=i.findIndex(u=>a.isEqualNode(u));c===-1?(a.remove(),delete n[l]):i.splice(c,1)}),i.forEach(a=>document.head.appendChild(a)),n=[...n.filter(a=>!!a),...i]};qt(qg,s),Ee(()=>{r(),pe(e,s,{immediate:!1})})},ZP=([e,t,n=""])=>{const r=Object.entries(t).map(([a,l])=>St(l)?`[${a}=${JSON.stringify(l)}]`:l===!0?`[${a}]`:"").join(""),o=`head > ${e}${r}`;return Array.from(document.querySelectorAll(o)).find(a=>a.innerText===n)||null},eS=([e,t,n])=>{if(!St(e))return null;const r=document.createElement(e);return $n(t)&&Object.entries(t).forEach(([o,s])=>{St(s)?r.setAttribute(o,s):s===!0&&r.setAttribute(o,"")}),St(n)&&r.appendChild(document.createTextNode(n)),r},tS=Sv,nS=async()=>{var n;const e=tS({name:"Vuepress",setup(){var s;XP();for(const i of Po)(s=i.setup)==null||s.call(i);const r=Po.flatMap(({rootComponents:i=[]})=>i.map(a=>Se(a))),o=Ug();return()=>[Se(o.value),r]}}),t=YP();JP(e),QP(e,t,Po);for(const r of Po)await((n=r.enhance)==null?void 0:n.call(r,{app:e,router:t,siteData:kr}));return e.use(t),{app:e,router:t}};nS().then(({app:e,router:t})=>{t.isReady().then(()=>{e.mount("#app")})});export{ur as A,je as B,ta as C,Gi as D,aS as E,xh as F,j as G,Xu as H,Fi as I,_v as J,_e as K,re as L,U as M,O as N,ne as O,rS as T,H as _,oS as a,_ as b,b as c,nS as createVueApp,$ as d,Re as e,q as f,P as g,pe as h,wn as i,R as j,yn as k,g_ as l,hn as m,sm as n,p as o,iS as p,Vm as q,pt as r,Xe as s,De as t,Je as u,sS as v,C as w,Ee as x,at as y,Ol as z}; diff --git a/assets/code-generation.html-B9Z-gSQZ.js b/assets/code-generation.html-B9Z-gSQZ.js new file mode 100644 index 0000000..63f7e84 --- /dev/null +++ b/assets/code-generation.html-B9Z-gSQZ.js @@ -0,0 +1 @@ +import{_ as a,c as o,b as e,o as n}from"./app-Dq-B72KW.js";const c={};function i(r,t){return n(),o("div",null,t[0]||(t[0]=[e("h2",{id:"todo",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#todo"},[e("span",null,"TODO")])],-1)]))}const m=a(c,[["render",i],["__file","code-generation.html.vue"]]),s=JSON.parse(`{"path":"/guide/reference/code-generation.html","title":"代码生成","lang":"zh-CN","frontmatter":{"title":"代码生成","createTime":"2024/09/22 16:02:06","head":[["script",{"id":"check-dark-mode"},";(function () {const um= localStorage.getItem('vuepress-theme-appearance') || 'auto';const sm = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;if (um === 'dark' || (um !== 'light' && sm)) {document.documentElement.classList.add('dark');}})();"],["script",{"id":"check-mac-os"},"document.documentElement.classList.toggle('mac', /Mac|iPhone|iPod|iPad/i.test(navigator.platform))"]]},"headers":[{"level":2,"title":"TODO","slug":"todo","link":"#todo","children":[]}],"readingTime":{"minutes":0.04,"words":11},"git":{"createdTime":1726995109000,"updatedTime":1726995109000,"contributors":[{"name":"Wu Clan","email":"jianhengwu0407@gmail.com","commits":1}]},"filePathRelative":"guide/reference/code-generation.md","categoryList":[{"id":"a0c391","sort":10000,"name":"guide"},{"id":"011963","sort":10002,"name":"reference"}]}`);export{m as comp,s as data}; diff --git a/assets/cors.html-C_C6117q.js b/assets/cors.html-C_C6117q.js new file mode 100644 index 0000000..0fd41ed --- /dev/null +++ b/assets/cors.html-C_C6117q.js @@ -0,0 +1,7 @@ +import{_ as i,c as a,a as e,o as t}from"./app-Dq-B72KW.js";const n={};function l(h,s){return t(),a("div",null,s[0]||(s[0]=[e(`

    当进行前后端项目联调或服务器部署时,你通常会遇到跨域问题,不过没关系,你只需修改后端配置,就可以轻松解决 CORS 相关问题

    本地

    进入 core/conf.py 文件,修改 CORS_ALLOWED_ORIGINS 配置即可

    CORS_ALLOWED_ORIGINS: list[str] = [
    +        'http://localhost:5173',  # 前端访问地址,末尾不要带 '/'
    +    ]

    服务器

    进入 core/conf.py 文件,修改 CORS_ALLOWED_ORIGINS 配置即可

    1. 非 https 部署

      CORS_ALLOWED_ORIGINS: list[str] = [
      +        'http://服务器ip:端口号',  # 前端访问地址,末尾不要带 '/'
      +    ]
    2. https 部署

      CORS_ALLOWED_ORIGINS: list[str] = [
      +        'https://域名',  # 前端访问地址,末尾不要带 '/'
      +    ]
    `,7)]))}const d=i(n,[["render",l],["__file","cors.html.vue"]]),k=JSON.parse(`{"path":"/guide/reference/cors.html","title":"跨域","lang":"zh-CN","frontmatter":{"title":"跨域","createTime":"2024/09/22 16:08:05","head":[["script",{"id":"check-dark-mode"},";(function () {const um= localStorage.getItem('vuepress-theme-appearance') || 'auto';const sm = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;if (um === 'dark' || (um !== 'light' && sm)) {document.documentElement.classList.add('dark');}})();"],["script",{"id":"check-mac-os"},"document.documentElement.classList.toggle('mac', /Mac|iPhone|iPod|iPad/i.test(navigator.platform))"]]},"headers":[{"level":2,"title":"本地","slug":"本地","link":"#本地","children":[]},{"level":2,"title":"服务器","slug":"服务器","link":"#服务器","children":[]}],"readingTime":{"minutes":0.56,"words":169},"git":{"createdTime":1726995109000,"updatedTime":1726995109000,"contributors":[{"name":"Wu Clan","email":"jianhengwu0407@gmail.com","commits":1}]},"filePathRelative":"guide/reference/cors.md","categoryList":[{"id":"a0c391","sort":10000,"name":"guide"},{"id":"011963","sort":10002,"name":"reference"}]}`);export{d as comp,k as data}; diff --git a/assets/friends.html-CEhuWUjK.js b/assets/friends.html-CEhuWUjK.js new file mode 100644 index 0000000..7081b73 --- /dev/null +++ b/assets/friends.html-CEhuWUjK.js @@ -0,0 +1 @@ +import{_ as t,c as e,o as a}from"./app-Dq-B72KW.js";const i={};function s(c,n){return a(),e("div")}const r=t(i,[["render",s],["__file","friends.html.vue"]]),m=JSON.parse(`{"path":"/friends.html","title":"友情链接","lang":"zh-CN","frontmatter":{"createTime":"2024/09/16 21:50:25","pageLayout":"friends","title":"友情链接","description":"如果您的网站与 FastAPI Best Architecture 相关,或者也属于开源项目(无知识星球付费内容,无授权相关内容),欢迎与我们联系","groups":[{"title":"FastAPI 相关","list":[{"name":"kinit-fast-task","link":"https://gitee.com/ktianc/kinit-fast-task","avatar":"https://k-typora.oss-cn-beijing.aliyuncs.com/kinit/logo.png","desc":"Kinit Fast Task 为 FastAPI 项目脚手架,高性能,高效率,易扩展,长期维护,积极更新!"}]},{"title":"其他","list":null}],"head":[["script",{"id":"check-dark-mode"},";(function () {const um= localStorage.getItem('vuepress-theme-appearance') || 'auto';const sm = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;if (um === 'dark' || (um !== 'light' && sm)) {document.documentElement.classList.add('dark');}})();"],["script",{"id":"check-mac-os"},"document.documentElement.classList.toggle('mac', /Mac|iPhone|iPod|iPad/i.test(navigator.platform))"]]},"headers":[],"readingTime":{"minutes":0.37,"words":110},"git":{"createdTime":1726501588000,"updatedTime":1726501588000,"contributors":[{"name":"Wu Clan","email":"jianhengwu0407@gmail.com","commits":1}]},"filePathRelative":"friends.md","categoryList":[]}`);export{r as comp,m as data}; diff --git a/assets/fsm.html-aRCUu-uF.js b/assets/fsm.html-aRCUu-uF.js new file mode 100644 index 0000000..904a3c9 --- /dev/null +++ b/assets/fsm.html-aRCUu-uF.js @@ -0,0 +1 @@ +import{_ as a,c as m,b as e,o as s}from"./app-Dq-B72KW.js";const o={};function i(c,t){return s(),m("div",null,t[0]||(t[0]=[e("h1",{id:"todo",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#todo"},[e("span",null,"TODO")])],-1)]))}const d=a(o,[["render",i],["__file","fsm.html.vue"]]),n=JSON.parse(`{"path":"/guide/summary/fsm.html","title":"精简版本","lang":"zh-CN","frontmatter":{"title":"精简版本","createTime":"2024/09/14 21:24:29","head":[["script",{"id":"check-dark-mode"},";(function () {const um= localStorage.getItem('vuepress-theme-appearance') || 'auto';const sm = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;if (um === 'dark' || (um !== 'light' && sm)) {document.documentElement.classList.add('dark');}})();"],["script",{"id":"check-mac-os"},"document.documentElement.classList.toggle('mac', /Mac|iPhone|iPod|iPad/i.test(navigator.platform))"]]},"headers":[],"readingTime":{"minutes":0.04,"words":11},"git":{"createdTime":1726501588000,"updatedTime":1726501588000,"contributors":[{"name":"Wu Clan","email":"jianhengwu0407@gmail.com","commits":1}]},"filePathRelative":"guide/summary/fsm.md","categoryList":[{"id":"a0c391","sort":10000,"name":"guide"},{"id":"d6bf05","sort":10003,"name":"summary"}]}`);export{d as comp,n as data}; diff --git a/assets/index.html-CuxAfAH8.js b/assets/index.html-CuxAfAH8.js new file mode 100644 index 0000000..16d65d8 --- /dev/null +++ b/assets/index.html-CuxAfAH8.js @@ -0,0 +1 @@ +import{_ as p,c as r,a as d,b as e,d as t,w as l,e as i,r as c,o}from"./app-Dq-B72KW.js";const m={},k={class:"vp-file-tree"};function b(f,s){const a=c("FileTreeItem"),n=c("RepoCard");return o(),r("div",null,[s[24]||(s[24]=d('

    提示

    此仓库作为模板库公开,任何人或企业均可免费使用!

    🔥持续更新维护中🔥

    Alt

    伪三层架构

    mvc 架构作为常规设计模式,在 python web 中也很常见,但是三层架构更令人着迷

    在 python web 开发中,三层架构的概念并没有通用标准,所以这里我们称之为伪三层架构

    但请注意,我们并没有传统的多应用程序结构(django、springBoot...),如果您不喜欢这种模式,可以使用模板对其进行随意改造!

    工作流程javafastapi_best_architecture
    视图controllerapi
    数据传输dtoschema
    业务逻辑service + implservice
    数据访问dao / mappercrud
    模型model / entitymodel

    特征

    内置功能

    项目结构

    ',13)),e("div",k,[e("ul",null,[t(a,{type:"folder",expanded:!1,empty:!1},{default:l(()=>[s[21]||(s[21]=e("span",{class:"tree-node folder"},[e("span",{class:"vp-fti-folder"}),e("span",{class:"name"},"backend/"),e("span",{class:"comment"},"后端")],-1)),e("ul",null,[t(a,{type:"folder",expanded:!1,empty:!0},{default:l(()=>s[0]||(s[0]=[e("span",{class:"tree-node folder"},[e("span",{class:"vp-fti-folder"}),e("span",{class:"name"},"alembic/"),e("span",{class:"comment"},"数据库迁移")],-1)])),_:1}),t(a,{type:"folder",expanded:!1,empty:!1},{default:l(()=>[s[10]||(s[10]=e("span",{class:"tree-node folder"},[e("span",{class:"vp-fti-folder"}),e("span",{class:"name"},"app/"),e("span",{class:"comment"},"应用")],-1)),e("ul",null,[t(a,{type:"folder",expanded:!0,empty:!1},{default:l(()=>[s[7]||(s[7]=e("span",{class:"tree-node folder"},[e("span",{class:"vp-fti-folder"}),e("span",{class:"name"},"admin"),e("span",{class:"comment"},"系统后台")],-1)),e("ul",null,[t(a,{type:"folder",expanded:!1,empty:!0},{default:l(()=>s[1]||(s[1]=[e("span",{class:"tree-node folder"},[e("span",{class:"vp-fti-folder"}),e("span",{class:"name"},"api/"),e("span",{class:"comment"},"接口")],-1)])),_:1}),t(a,{type:"folder",expanded:!1,empty:!0},{default:l(()=>s[2]||(s[2]=[e("span",{class:"tree-node folder"},[e("span",{class:"vp-fti-folder"}),e("span",{class:"name"},"crud/"),e("span",{class:"comment"}," CRUD")],-1)])),_:1}),t(a,{type:"folder",expanded:!1,empty:!0},{default:l(()=>s[3]||(s[3]=[e("span",{class:"tree-node folder"},[e("span",{class:"vp-fti-folder"}),e("span",{class:"name"},"model/"),e("span",{class:"comment"},"模型")],-1)])),_:1}),t(a,{type:"folder",expanded:!1,empty:!0},{default:l(()=>s[4]||(s[4]=[e("span",{class:"tree-node folder"},[e("span",{class:"vp-fti-folder"}),e("span",{class:"name"},"schema/"),e("span",{class:"comment"},"数据传输")],-1)])),_:1}),t(a,{type:"folder",expanded:!1,empty:!0},{default:l(()=>s[5]||(s[5]=[e("span",{class:"tree-node folder"},[e("span",{class:"vp-fti-folder"}),e("span",{class:"name"},"service/"),e("span",{class:"comment"},"服务")],-1)])),_:1}),t(a,{type:"folder",expanded:!1,empty:!0},{default:l(()=>s[6]||(s[6]=[e("span",{class:"tree-node folder"},[e("span",{class:"vp-fti-folder"}),e("span",{class:"name"},"tests/"),e("span",{class:"comment"},"测试")],-1)])),_:1})])]),_:1}),t(a,{type:"folder",expanded:!1,empty:!0},{default:l(()=>s[8]||(s[8]=[e("span",{class:"tree-node folder"},[e("span",{class:"vp-fti-folder"}),e("span",{class:"name"},"generator/"),e("span",{class:"comment"},"代码生成")],-1)])),_:1}),t(a,{type:"folder",expanded:!1,empty:!0},{default:l(()=>s[9]||(s[9]=[e("span",{class:"tree-node folder"},[e("span",{class:"vp-fti-folder"}),e("span",{class:"name"},"task/"),e("span",{class:"comment"},"任务")],-1)])),_:1})])]),_:1}),t(a,{type:"folder",expanded:!1,empty:!0},{default:l(()=>s[11]||(s[11]=[e("span",{class:"tree-node folder"},[e("span",{class:"vp-fti-folder"}),e("span",{class:"name"},"common/"),e("span",{class:"comment"},"公共资源")],-1)])),_:1}),t(a,{type:"folder",expanded:!1,empty:!0},{default:l(()=>s[12]||(s[12]=[e("span",{class:"tree-node folder"},[e("span",{class:"vp-fti-folder"}),e("span",{class:"name"},"core/"),e("span",{class:"comment"},"核心配置")],-1)])),_:1}),t(a,{type:"folder",expanded:!1,empty:!0},{default:l(()=>s[13]||(s[13]=[e("span",{class:"tree-node folder"},[e("span",{class:"vp-fti-folder"}),e("span",{class:"name"},"database/"),e("span",{class:"comment"},"数据库连接")],-1)])),_:1}),t(a,{type:"folder",expanded:!1,empty:!0},{default:l(()=>s[14]||(s[14]=[e("span",{class:"tree-node folder"},[e("span",{class:"vp-fti-folder"}),e("span",{class:"name"},"log/"),e("span",{class:"comment"},"日志")],-1)])),_:1}),t(a,{type:"folder",expanded:!1,empty:!0},{default:l(()=>s[15]||(s[15]=[e("span",{class:"tree-node folder"},[e("span",{class:"vp-fti-folder"}),e("span",{class:"name"},"middleware/"),e("span",{class:"comment"},"中间件")],-1)])),_:1}),t(a,{type:"folder",expanded:!1,empty:!0},{default:l(()=>s[16]||(s[16]=[e("span",{class:"tree-node folder"},[e("span",{class:"vp-fti-folder"}),e("span",{class:"name"},"scripts/"),e("span",{class:"comment"},"脚本")],-1)])),_:1}),t(a,{type:"folder",expanded:!1,empty:!0},{default:l(()=>s[17]||(s[17]=[e("span",{class:"tree-node folder"},[e("span",{class:"vp-fti-folder"}),e("span",{class:"name"},"sql/"),e("span",{class:"comment"},"SQL文件")],-1)])),_:1}),t(a,{type:"folder",expanded:!1,empty:!0},{default:l(()=>s[18]||(s[18]=[e("span",{class:"tree-node folder"},[e("span",{class:"vp-fti-folder"}),e("span",{class:"name"},"static/"),e("span",{class:"comment"},"静态文件")],-1)])),_:1}),t(a,{type:"folder",expanded:!1,empty:!0},{default:l(()=>s[19]||(s[19]=[e("span",{class:"tree-node folder"},[e("span",{class:"vp-fti-folder"}),e("span",{class:"name"},"templates/"),e("span",{class:"comment"},"模版文件")],-1)])),_:1}),t(a,{type:"folder",expanded:!1,empty:!0},{default:l(()=>s[20]||(s[20]=[e("span",{class:"tree-node folder"},[e("span",{class:"vp-fti-folder"}),e("span",{class:"name"},"utils/"),e("span",{class:"comment"},"工具包")],-1)])),_:1})])]),_:1}),t(a,{type:"folder",expanded:!1,empty:!0},{default:l(()=>s[22]||(s[22]=[e("span",{class:"tree-node folder"},[e("span",{class:"vp-fti-folder"}),e("span",{class:"name"},"deploy/"),e("span",{class:"comment"},"服务器部署")],-1)])),_:1}),t(a,{type:"file",expanded:!1,empty:!0},{default:l(()=>s[23]||(s[23]=[e("span",{class:"tree-node file"},[e("span",{class:"name"},"...")],-1)])),_:1})])]),s[25]||(s[25]=d('

    贡献者

    许可证

    本项目由 MIT 许可证的条款进行许可

    Stargazers over time

    相关

    ',6)),t(n,{repo:"fastapi-practices/sqlalchemy-crud-plus"}),s[26]||(s[26]=e("div",{class:"hint-container tip"},[e("p",{class:"hint-container-title"},"特别鸣谢"),e("p",null,[i("本文档由 "),e("a",{href:"https://github.com/pengzhanbo/vuepress-theme-plume",target:"_blank",rel:"noopener noreferrer"},"vuepress-theme-plume"),i(" 驱动,感谢 "),e("a",{href:"https://github.com/pengzhanbo",target:"_blank",rel:"noopener noreferrer"},"pengzhanbo"),i(" 对此开源项目的杰出贡献")])],-1))])}const u=p(m,[["render",b],["__file","index.html.vue"]]),x=JSON.parse(`{"path":"/guide/","title":"FastAPI Best Architecture","lang":"zh-CN","frontmatter":{"title":"FastAPI Best Architecture","createTime":"2024/09/12 20:40:22","head":[["script",{"id":"check-dark-mode"},";(function () {const um= localStorage.getItem('vuepress-theme-appearance') || 'auto';const sm = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;if (um === 'dark' || (um !== 'light' && sm)) {document.documentElement.classList.add('dark');}})();"],["script",{"id":"check-mac-os"},"document.documentElement.classList.toggle('mac', /Mac|iPhone|iPod|iPad/i.test(navigator.platform))"]]},"headers":[{"level":2,"title":"伪三层架构","slug":"伪三层架构","link":"#伪三层架构","children":[]},{"level":2,"title":"特征","slug":"特征","link":"#特征","children":[]},{"level":2,"title":"内置功能","slug":"内置功能","link":"#内置功能","children":[]},{"level":2,"title":"项目结构","slug":"项目结构","link":"#项目结构","children":[]},{"level":2,"title":"贡献者","slug":"贡献者","link":"#贡献者","children":[]},{"level":2,"title":"许可证","slug":"许可证","link":"#许可证","children":[]},{"level":2,"title":"相关","slug":"相关","link":"#相关","children":[]}],"readingTime":{"minutes":2.46,"words":737},"git":{"createdTime":1726501588000,"updatedTime":1726501588000,"contributors":[{"name":"Wu Clan","email":"jianhengwu0407@gmail.com","commits":1}]},"filePathRelative":"guide/README.md","categoryList":[{"id":"a0c391","sort":10000,"name":"guide"}]}`);export{u as comp,x as data}; diff --git a/assets/index.html-v7VFQ1Lm.js b/assets/index.html-v7VFQ1Lm.js new file mode 100644 index 0000000..1de15be --- /dev/null +++ b/assets/index.html-v7VFQ1Lm.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a}from"./app-Dq-B72KW.js";const i={};function c(o,n){return a(),t("div")}const l=e(i,[["render",c],["__file","index.html.vue"]]),r=JSON.parse(`{"path":"/","title":"","lang":"zh-CN","frontmatter":{"watermark":false,"config":[{"type":"hero","full":true,"background":"tint-plate","hero":{"name":"FastAPI Best Architecture","tagline":"企业级中后台解决方案","text":"基于 FastAPI 框架,前后端分离,遵循「伪三层架构」设计,支持 Python 3.10+ 版本","actions":[{"theme":"brand","text":"快速开始 ->","link":"/guide/"},{"theme":"alt","text":"在线预览","link":"https://fba.xwboy.top"}]}},{"type":"features","features":[{"title":"最新技术栈","icon":"🚀","details":"基于 FastAPI、SQLAlchemy 2.0、Pydantic-v2、Celery、等最新技术栈"},{"title":"自研架构","icon":"🧠","details":"独特的「伪三层架构」,让所有开发者轻松驾驭"},{"title":"全局异步","icon":"🔄","details":"基于 async/await + asgiref 实现全局异步处理,告别协程阻塞问题"},{"title":"代码生成","icon":"⚙️","details":"提供后端代码自动生成,告别繁琐基础代码结构 cv"},{"title":"权限管理","icon":"🛠️","details":"提供 Casbin、Role-Menu 两种 RBAC 权限方案。开关控制选择"},{"title":"JWT","icon":"🔏","details":"带有缓存和白名单的 JWT 中间件自动认证"},{"title":"Docker","icon":"🐳","details":"提供 Docker compose 一键部署方案"},{"title":"时区时间","icon":"⌛","details":"通过配置一键应用全局时区时间,告别时间处理烦恼"},{"title":"日志","icon":"📝","details":"内置十分强大的日志系统,全方位 Trace ID 助你一步锁定问题"}]}],"pageLayout":"home","head":[["script",{"id":"check-dark-mode"},";(function () {const um= localStorage.getItem('vuepress-theme-appearance') || 'auto';const sm = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;if (um === 'dark' || (um !== 'light' && sm)) {document.documentElement.classList.add('dark');}})();"],["script",{"id":"check-mac-os"},"document.documentElement.classList.toggle('mac', /Mac|iPhone|iPod|iPad/i.test(navigator.platform))"]]},"headers":[],"readingTime":{"minutes":0.99,"words":297},"git":{"createdTime":1726501588000,"updatedTime":1726501588000,"contributors":[{"name":"Wu Clan","email":"jianhengwu0407@gmail.com","commits":1}]},"filePathRelative":"README.md","categoryList":[]}`);export{l as comp,r as data}; diff --git a/assets/inter-italic-cyrillic-By2_1cv3.woff2 b/assets/inter-italic-cyrillic-By2_1cv3.woff2 new file mode 100644 index 0000000..def40a4 Binary files /dev/null and b/assets/inter-italic-cyrillic-By2_1cv3.woff2 differ diff --git a/assets/inter-italic-cyrillic-ext-r48I6akx.woff2 b/assets/inter-italic-cyrillic-ext-r48I6akx.woff2 new file mode 100644 index 0000000..b6b603d Binary files /dev/null and b/assets/inter-italic-cyrillic-ext-r48I6akx.woff2 differ diff --git a/assets/inter-italic-greek-DJ8dCoTZ.woff2 b/assets/inter-italic-greek-DJ8dCoTZ.woff2 new file mode 100644 index 0000000..a3c16ca Binary files /dev/null and b/assets/inter-italic-greek-DJ8dCoTZ.woff2 differ diff --git a/assets/inter-italic-greek-ext-1u6EdAuj.woff2 b/assets/inter-italic-greek-ext-1u6EdAuj.woff2 new file mode 100644 index 0000000..e070c3d Binary files /dev/null and b/assets/inter-italic-greek-ext-1u6EdAuj.woff2 differ diff --git a/assets/inter-italic-latin-C2AdPX0b.woff2 b/assets/inter-italic-latin-C2AdPX0b.woff2 new file mode 100644 index 0000000..790d62d Binary files /dev/null and b/assets/inter-italic-latin-C2AdPX0b.woff2 differ diff --git a/assets/inter-italic-latin-ext-CN1xVJS-.woff2 b/assets/inter-italic-latin-ext-CN1xVJS-.woff2 new file mode 100644 index 0000000..2210a89 Binary files /dev/null and b/assets/inter-italic-latin-ext-CN1xVJS-.woff2 differ diff --git a/assets/inter-italic-vietnamese-BSbpV94h.woff2 b/assets/inter-italic-vietnamese-BSbpV94h.woff2 new file mode 100644 index 0000000..1eec077 Binary files /dev/null and b/assets/inter-italic-vietnamese-BSbpV94h.woff2 differ diff --git a/assets/inter-roman-cyrillic-C5lxZ8CY.woff2 b/assets/inter-roman-cyrillic-C5lxZ8CY.woff2 new file mode 100644 index 0000000..e3886dd Binary files /dev/null and b/assets/inter-roman-cyrillic-C5lxZ8CY.woff2 differ diff --git a/assets/inter-roman-cyrillic-ext-BBPuwvHQ.woff2 b/assets/inter-roman-cyrillic-ext-BBPuwvHQ.woff2 new file mode 100644 index 0000000..2cfe615 Binary files /dev/null and b/assets/inter-roman-cyrillic-ext-BBPuwvHQ.woff2 differ diff --git a/assets/inter-roman-greek-BBVDIX6e.woff2 b/assets/inter-roman-greek-BBVDIX6e.woff2 new file mode 100644 index 0000000..2bed1e8 Binary files /dev/null and b/assets/inter-roman-greek-BBVDIX6e.woff2 differ diff --git a/assets/inter-roman-greek-ext-CqjqNYQ-.woff2 b/assets/inter-roman-greek-ext-CqjqNYQ-.woff2 new file mode 100644 index 0000000..36d6748 Binary files /dev/null and b/assets/inter-roman-greek-ext-CqjqNYQ-.woff2 differ diff --git a/assets/inter-roman-latin-Di8DUHzh.woff2 b/assets/inter-roman-latin-Di8DUHzh.woff2 new file mode 100644 index 0000000..07d3c53 Binary files /dev/null and b/assets/inter-roman-latin-Di8DUHzh.woff2 differ diff --git a/assets/inter-roman-latin-ext-4ZJIpNVo.woff2 b/assets/inter-roman-latin-ext-4ZJIpNVo.woff2 new file mode 100644 index 0000000..9a8d1e2 Binary files /dev/null and b/assets/inter-roman-latin-ext-4ZJIpNVo.woff2 differ diff --git a/assets/inter-roman-vietnamese-BjW4sHH5.woff2 b/assets/inter-roman-vietnamese-BjW4sHH5.woff2 new file mode 100644 index 0000000..57bdc22 Binary files /dev/null and b/assets/inter-roman-vietnamese-BjW4sHH5.woff2 differ diff --git a/assets/legacy.html-D3iaIAvq.js b/assets/legacy.html-D3iaIAvq.js new file mode 100644 index 0000000..fcb354c --- /dev/null +++ b/assets/legacy.html-D3iaIAvq.js @@ -0,0 +1 @@ +import{_ as a,c as i,b as e,e as c,o as n}from"./app-Dq-B72KW.js";const o={};function s(l,t){return n(),i("div",null,t[0]||(t[0]=[e("div",{class:"hint-container important"},[e("p",{class:"hint-container-title"},"重要"),e("p",null,"由于传统部署方案涉及修改的地方较多且较为复杂,目前暂不提供此部署方案,如果你不是一个服务部署专家,这可能存在很多坑")],-1),e("div",{class:"hint-container tip"},[e("p",{class:"hint-container-title"},"提示"),e("p",null,"由于 FastAPI Best Architecture 线上服务器资源有限,当前使用【传统 + Docker】的方案进行部署,尽可能避免内存溢出导致的服务中断, 我们后期会提供 BiliBili 免费教程(敬请期待)"),e("p",null,[c("但是抱歉,我们不提供一对一免费协助,它将是一个"),e("mark",null,"付费咨询")])],-1)]))}const m=a(o,[["render",s],["__file","legacy.html.vue"]]),d=JSON.parse(`{"path":"/guide/deploy/legacy.html","title":"传统部署","lang":"zh-CN","frontmatter":{"title":"传统部署","createTime":"2024/09/12 20:40:22","head":[["script",{"id":"check-dark-mode"},";(function () {const um= localStorage.getItem('vuepress-theme-appearance') || 'auto';const sm = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;if (um === 'dark' || (um !== 'light' && sm)) {document.documentElement.classList.add('dark');}})();"],["script",{"id":"check-mac-os"},"document.documentElement.classList.toggle('mac', /Mac|iPhone|iPod|iPad/i.test(navigator.platform))"]]},"headers":[],"readingTime":{"minutes":0.5,"words":151},"git":{"createdTime":1726501588000,"updatedTime":1726990857000,"contributors":[{"name":"Wu Clan","email":"jianhengwu0407@gmail.com","commits":2}]},"filePathRelative":"guide/deploy/legacy.md","categoryList":[{"id":"a0c391","sort":10000,"name":"guide"},{"id":"1d3515","sort":10001,"name":"deploy"}]}`);export{m as comp,d as data}; diff --git a/assets/login.html-D7zvq3Z9.js b/assets/login.html-D7zvq3Z9.js new file mode 100644 index 0000000..ebf11d7 --- /dev/null +++ b/assets/login.html-D7zvq3Z9.js @@ -0,0 +1 @@ +import{_ as a,c as o,b as e,o as i}from"./app-Dq-B72KW.js";const n={};function c(r,t){return i(),o("div",null,t[0]||(t[0]=[e("h2",{id:"todo",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#todo"},[e("span",null,"TODO")])],-1)]))}const m=a(n,[["render",c],["__file","login.html.vue"]]),s=JSON.parse(`{"path":"/guide/reference/login.html","title":"登录","lang":"zh-CN","frontmatter":{"title":"登录","createTime":"2024/09/16 22:46:47","head":[["script",{"id":"check-dark-mode"},";(function () {const um= localStorage.getItem('vuepress-theme-appearance') || 'auto';const sm = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;if (um === 'dark' || (um !== 'light' && sm)) {document.documentElement.classList.add('dark');}})();"],["script",{"id":"check-mac-os"},"document.documentElement.classList.toggle('mac', /Mac|iPhone|iPod|iPad/i.test(navigator.platform))"]]},"headers":[{"level":2,"title":"TODO","slug":"todo","link":"#todo","children":[]}],"readingTime":{"minutes":0.03,"words":9},"git":{"createdTime":1726501588000,"updatedTime":1726984104000,"contributors":[{"name":"Wu Clan","email":"jianhengwu0407@gmail.com","commits":2}]},"filePathRelative":"guide/reference/login.md","categoryList":[{"id":"a0c391","sort":10000,"name":"guide"},{"id":"011963","sort":10002,"name":"reference"}]}`);export{m as comp,s as data}; diff --git a/assets/oauth2.html-Cr1VrgFc.js b/assets/oauth2.html-Cr1VrgFc.js new file mode 100644 index 0000000..e045de0 --- /dev/null +++ b/assets/oauth2.html-Cr1VrgFc.js @@ -0,0 +1 @@ +import{_ as a,c as o,b as e,o as c}from"./app-Dq-B72KW.js";const i={};function r(n,t){return c(),o("div",null,t[0]||(t[0]=[e("h2",{id:"todo",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#todo"},[e("span",null,"TODO")])],-1)]))}const m=a(i,[["render",r],["__file","oauth2.html.vue"]]),s=JSON.parse(`{"path":"/guide/reference/oauth2.html","title":"OAuth 2.0","lang":"zh-CN","frontmatter":{"title":"OAuth 2.0","createTime":"2024/09/22 16:11:18","head":[["script",{"id":"check-dark-mode"},";(function () {const um= localStorage.getItem('vuepress-theme-appearance') || 'auto';const sm = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;if (um === 'dark' || (um !== 'light' && sm)) {document.documentElement.classList.add('dark');}})();"],["script",{"id":"check-mac-os"},"document.documentElement.classList.toggle('mac', /Mac|iPhone|iPod|iPad/i.test(navigator.platform))"]]},"headers":[{"level":2,"title":"TODO","slug":"todo","link":"#todo","children":[]}],"readingTime":{"minutes":0.03,"words":9},"git":{"createdTime":1726995109000,"updatedTime":1726995109000,"contributors":[{"name":"Wu Clan","email":"jianhengwu0407@gmail.com","commits":1}]},"filePathRelative":"guide/reference/oauth2.md","categoryList":[{"id":"a0c391","sort":10000,"name":"guide"},{"id":"011963","sort":10002,"name":"reference"}]}`);export{m as comp,s as data}; diff --git a/assets/permission.html-BPGI40vO.js b/assets/permission.html-BPGI40vO.js new file mode 100644 index 0000000..ca7231b --- /dev/null +++ b/assets/permission.html-BPGI40vO.js @@ -0,0 +1 @@ +import{_ as a,c as i,a as r,o as t}from"./app-Dq-B72KW.js";const n={};function s(c,e){return t(),i("div",null,e[0]||(e[0]=[r('

    JWT

    TODO

    RBAC

    RBAC 提供了两种解决方案,第一种【角色菜单】可能更加常见,它可以设置按钮级别的控制规则,另外一种是【Casbin】,它非常灵活,可以通过模型定义多种 控制规则(我认为它很好,性能也很出色),这种设计在 Go 语言中应用更加广泛, 我们在最初架构设计时,参考了 go-admin,gin-vue-admin... 等优秀 的开源项目,同时引入了 Casbin,它在众多 python web 开源项目中可能是极为罕见的,并且,它的学习成本相对较高,如果你对此感兴趣,可以通过 Casbin 官网 进行学习,另外,这两个视频教程 ( 半小时彻底弄懂Casbin基础模型Casbin的代码使用、api调用、自定义比较方法 ) 可能起到画龙点睛之笔

    角色菜单

    TODO

    Casbin

    TODO

    ',8)]))}const d=a(n,[["render",s],["__file","permission.html.vue"]]),l=JSON.parse(`{"path":"/guide/reference/permission.html","title":"权限","lang":"zh-CN","frontmatter":{"title":"权限","createTime":"2024/09/16 22:48:13","head":[["script",{"id":"check-dark-mode"},";(function () {const um= localStorage.getItem('vuepress-theme-appearance') || 'auto';const sm = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;if (um === 'dark' || (um !== 'light' && sm)) {document.documentElement.classList.add('dark');}})();"],["script",{"id":"check-mac-os"},"document.documentElement.classList.toggle('mac', /Mac|iPhone|iPod|iPad/i.test(navigator.platform))"]]},"headers":[{"level":2,"title":"JWT","slug":"jwt","link":"#jwt","children":[]},{"level":2,"title":"RBAC","slug":"rbac","link":"#rbac","children":[{"level":3,"title":"角色菜单","slug":"角色菜单","link":"#角色菜单","children":[]},{"level":3,"title":"Casbin","slug":"casbin","link":"#casbin","children":[]}]}],"readingTime":{"minutes":0.84,"words":251},"git":{"createdTime":1726501588000,"updatedTime":1726984104000,"contributors":[{"name":"Wu Clan","email":"jianhengwu0407@gmail.com","commits":2}]},"filePathRelative":"guide/reference/permission.md","categoryList":[{"id":"a0c391","sort":10000,"name":"guide"},{"id":"011963","sort":10002,"name":"reference"}]}`);export{d as comp,l as data}; diff --git a/assets/photoswipe.esm-GXRgw7eJ.js b/assets/photoswipe.esm-GXRgw7eJ.js new file mode 100644 index 0000000..2fd7cfd --- /dev/null +++ b/assets/photoswipe.esm-GXRgw7eJ.js @@ -0,0 +1,4 @@ +/*! + * PhotoSwipe 5.4.4 - https://photoswipe.com + * (c) 2024 Dmytro Semenov + */function f(r,t,i){const e=document.createElement(t);return r&&(e.className=r),i&&i.appendChild(e),e}function p(r,t){return r.x=t.x,r.y=t.y,t.id!==void 0&&(r.id=t.id),r}function M(r){r.x=Math.round(r.x),r.y=Math.round(r.y)}function A(r,t){const i=Math.abs(r.x-t.x),e=Math.abs(r.y-t.y);return Math.sqrt(i*i+e*e)}function x(r,t){return r.x===t.x&&r.y===t.y}function I(r,t,i){return Math.min(Math.max(r,t),i)}function b(r,t,i){let e=`translate3d(${r}px,${t||0}px,0)`;return i!==void 0&&(e+=` scale3d(${i},${i},1)`),e}function y(r,t,i,e){r.style.transform=b(t,i,e)}const $="cubic-bezier(.4,0,.22,1)";function R(r,t,i,e){r.style.transition=t?`${t} ${i}ms ${e||$}`:"none"}function L(r,t,i){r.style.width=typeof t=="number"?`${t}px`:t,r.style.height=typeof i=="number"?`${i}px`:i}function U(r){R(r)}function q(r){return"decode"in r?r.decode().catch(()=>{}):r.complete?Promise.resolve(r):new Promise((t,i)=>{r.onload=()=>t(r),r.onerror=i})}const _={IDLE:"idle",LOADING:"loading",LOADED:"loaded",ERROR:"error"};function G(r){return"button"in r&&r.button===1||r.ctrlKey||r.metaKey||r.altKey||r.shiftKey}function K(r,t,i=document){let e=[];if(r instanceof Element)e=[r];else if(r instanceof NodeList||Array.isArray(r))e=Array.from(r);else{const s=typeof r=="string"?r:t;s&&(e=Array.from(i.querySelectorAll(s)))}return e}function C(){return!!(navigator.vendor&&navigator.vendor.match(/apple/i))}let F=!1;try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>{F=!0}}))}catch{}class X{constructor(){this._pool=[]}add(t,i,e,s){this._toggleListener(t,i,e,s)}remove(t,i,e,s){this._toggleListener(t,i,e,s,!0)}removeAll(){this._pool.forEach(t=>{this._toggleListener(t.target,t.type,t.listener,t.passive,!0,!0)}),this._pool=[]}_toggleListener(t,i,e,s,n,o){if(!t)return;const a=n?"removeEventListener":"addEventListener";i.split(" ").forEach(l=>{if(l){o||(n?this._pool=this._pool.filter(d=>d.type!==l||d.listener!==e||d.target!==t):this._pool.push({target:t,type:l,listener:e,passive:s}));const c=F?{passive:s||!1}:!1;t[a](l,e,c)}})}}function B(r,t){if(r.getViewportSizeFn){const i=r.getViewportSizeFn(r,t);if(i)return i}return{x:document.documentElement.clientWidth,y:window.innerHeight}}function S(r,t,i,e,s){let n=0;if(t.paddingFn)n=t.paddingFn(i,e,s)[r];else if(t.padding)n=t.padding[r];else{const o="padding"+r[0].toUpperCase()+r.slice(1);t[o]&&(n=t[o])}return Number(n)||0}function N(r,t,i,e){return{x:t.x-S("left",r,t,i,e)-S("right",r,t,i,e),y:t.y-S("top",r,t,i,e)-S("bottom",r,t,i,e)}}class Y{constructor(t){this.slide=t,this.currZoomLevel=1,this.center={x:0,y:0},this.max={x:0,y:0},this.min={x:0,y:0}}update(t){this.currZoomLevel=t,this.slide.width?(this._updateAxis("x"),this._updateAxis("y"),this.slide.pswp.dispatch("calcBounds",{slide:this.slide})):this.reset()}_updateAxis(t){const{pswp:i}=this.slide,e=this.slide[t==="x"?"width":"height"]*this.currZoomLevel,n=S(t==="x"?"left":"top",i.options,i.viewportSize,this.slide.data,this.slide.index),o=this.slide.panAreaSize[t];this.center[t]=Math.round((o-e)/2)+n,this.max[t]=e>o?Math.round(o-e)+n:this.center[t],this.min[t]=e>o?n:this.center[t]}reset(){this.center.x=0,this.center.y=0,this.max.x=0,this.max.y=0,this.min.x=0,this.min.y=0}correctPan(t,i){return I(i,this.max[t],this.min[t])}}const T=4e3;class H{constructor(t,i,e,s){this.pswp=s,this.options=t,this.itemData=i,this.index=e,this.panAreaSize=null,this.elementSize=null,this.fit=1,this.fill=1,this.vFill=1,this.initial=1,this.secondary=1,this.max=1,this.min=1}update(t,i,e){const s={x:t,y:i};this.elementSize=s,this.panAreaSize=e;const n=e.x/s.x,o=e.y/s.y;this.fit=Math.min(1,no?n:o),this.vFill=Math.min(1,o),this.initial=this._getInitial(),this.secondary=this._getSecondary(),this.max=Math.max(this.initial,this.secondary,this._getMax()),this.min=Math.min(this.fit,this.initial,this.secondary),this.pswp&&this.pswp.dispatch("zoomLevelsUpdate",{zoomLevels:this,slideData:this.itemData})}_parseZoomLevelOption(t){const i=t+"ZoomLevel",e=this.options[i];if(e)return typeof e=="function"?e(this):e==="fill"?this.fill:e==="fit"?this.fit:Number(e)}_getSecondary(){let t=this._parseZoomLevelOption("secondary");return t||(t=Math.min(1,this.fit*3),this.elementSize&&t*this.elementSize.x>T&&(t=T/this.elementSize.x),t)}_getInitial(){return this._parseZoomLevelOption("initial")||this.fit}_getMax(){return this._parseZoomLevelOption("max")||Math.max(1,this.fit*4)}}class j{constructor(t,i,e){this.data=t,this.index=i,this.pswp=e,this.isActive=i===e.currIndex,this.currentResolution=0,this.panAreaSize={x:0,y:0},this.pan={x:0,y:0},this.isFirstSlide=this.isActive&&!e.opener.isOpen,this.zoomLevels=new H(e.options,t,i,e),this.pswp.dispatch("gettingData",{slide:this,data:this.data,index:i}),this.content=this.pswp.contentLoader.getContentBySlide(this),this.container=f("pswp__zoom-wrap","div"),this.holderElement=null,this.currZoomLevel=1,this.width=this.content.width,this.height=this.content.height,this.heavyAppended=!1,this.bounds=new Y(this),this.prevDisplayedWidth=-1,this.prevDisplayedHeight=-1,this.pswp.dispatch("slideInit",{slide:this})}setIsActive(t){t&&!this.isActive?this.activate():!t&&this.isActive&&this.deactivate()}append(t){this.holderElement=t,this.container.style.transformOrigin="0 0",this.data&&(this.calculateSize(),this.load(),this.updateContentSize(),this.appendHeavy(),this.holderElement.appendChild(this.container),this.zoomAndPanToInitial(),this.pswp.dispatch("firstZoomPan",{slide:this}),this.applyCurrentZoomPan(),this.pswp.dispatch("afterSetContent",{slide:this}),this.isActive&&this.activate())}load(){this.content.load(!1),this.pswp.dispatch("slideLoad",{slide:this})}appendHeavy(){const{pswp:t}=this;this.heavyAppended||!t.opener.isOpen||t.mainScroll.isShifted()||!this.isActive&&!!0||this.pswp.dispatch("appendHeavy",{slide:this}).defaultPrevented||(this.heavyAppended=!0,this.content.append(),this.pswp.dispatch("appendHeavyContent",{slide:this}))}activate(){this.isActive=!0,this.appendHeavy(),this.content.activate(),this.pswp.dispatch("slideActivate",{slide:this})}deactivate(){this.isActive=!1,this.content.deactivate(),this.currZoomLevel!==this.zoomLevels.initial&&this.calculateSize(),this.currentResolution=0,this.zoomAndPanToInitial(),this.applyCurrentZoomPan(),this.updateContentSize(),this.pswp.dispatch("slideDeactivate",{slide:this})}destroy(){this.content.hasSlide=!1,this.content.remove(),this.container.remove(),this.pswp.dispatch("slideDestroy",{slide:this})}resize(){this.currZoomLevel===this.zoomLevels.initial||!this.isActive?(this.calculateSize(),this.currentResolution=0,this.zoomAndPanToInitial(),this.applyCurrentZoomPan(),this.updateContentSize()):(this.calculateSize(),this.bounds.update(this.currZoomLevel),this.panTo(this.pan.x,this.pan.y))}updateContentSize(t){const i=this.currentResolution||this.zoomLevels.initial;if(!i)return;const e=Math.round(this.width*i)||this.pswp.viewportSize.x,s=Math.round(this.height*i)||this.pswp.viewportSize.y;!this.sizeChanged(e,s)&&!t||this.content.setDisplayedSize(e,s)}sizeChanged(t,i){return t!==this.prevDisplayedWidth||i!==this.prevDisplayedHeight?(this.prevDisplayedWidth=t,this.prevDisplayedHeight=i,!0):!1}getPlaceholderElement(){var t;return(t=this.content.placeholder)===null||t===void 0?void 0:t.element}zoomTo(t,i,e,s){const{pswp:n}=this;if(!this.isZoomable()||n.mainScroll.isShifted())return;n.dispatch("beforeZoomTo",{destZoomLevel:t,centerPoint:i,transitionDuration:e}),n.animations.stopAllPan();const o=this.currZoomLevel;s||(t=I(t,this.zoomLevels.min,this.zoomLevels.max)),this.setZoomLevel(t),this.pan.x=this.calculateZoomToPanOffset("x",i,o),this.pan.y=this.calculateZoomToPanOffset("y",i,o),M(this.pan);const a=()=>{this._setResolution(t),this.applyCurrentZoomPan()};e?n.animations.startTransition({isPan:!0,name:"zoomTo",target:this.container,transform:this.getCurrentTransform(),onComplete:a,duration:e,easing:n.options.easing}):a()}toggleZoom(t){this.zoomTo(this.currZoomLevel===this.zoomLevels.initial?this.zoomLevels.secondary:this.zoomLevels.initial,t,this.pswp.options.zoomAnimationDuration)}setZoomLevel(t){this.currZoomLevel=t,this.bounds.update(this.currZoomLevel)}calculateZoomToPanOffset(t,i,e){if(this.bounds.max[t]-this.bounds.min[t]===0)return this.bounds.center[t];i||(i=this.pswp.getViewportCenterPoint()),e||(e=this.zoomLevels.initial);const n=this.currZoomLevel/e;return this.bounds.correctPan(t,(this.pan[t]-i[t])*n+i[t])}panTo(t,i){this.pan.x=this.bounds.correctPan("x",t),this.pan.y=this.bounds.correctPan("y",i),this.applyCurrentZoomPan()}isPannable(){return!!this.width&&this.currZoomLevel>this.zoomLevels.fit}isZoomable(){return!!this.width&&this.content.isZoomable()}applyCurrentZoomPan(){this._applyZoomTransform(this.pan.x,this.pan.y,this.currZoomLevel),this===this.pswp.currSlide&&this.pswp.dispatch("zoomPanUpdate",{slide:this})}zoomAndPanToInitial(){this.currZoomLevel=this.zoomLevels.initial,this.bounds.update(this.currZoomLevel),p(this.pan,this.bounds.center),this.pswp.dispatch("initialZoomPan",{slide:this})}_applyZoomTransform(t,i,e){e/=this.currentResolution||this.zoomLevels.initial,y(this.container,t,i,e)}calculateSize(){const{pswp:t}=this;p(this.panAreaSize,N(t.options,t.viewportSize,this.data,this.index)),this.zoomLevels.update(this.width,this.height,this.panAreaSize),t.dispatch("calcSlideSize",{slide:this})}getCurrentTransform(){const t=this.currZoomLevel/(this.currentResolution||this.zoomLevels.initial);return b(this.pan.x,this.pan.y,t)}_setResolution(t){t!==this.currentResolution&&(this.currentResolution=t,this.updateContentSize(),this.pswp.dispatch("resolutionChanged"))}}const Q=.35,J=.6,z=.4,E=.5;function tt(r,t){return r*t/(1-t)}class it{constructor(t){this.gestures=t,this.pswp=t.pswp,this.startPan={x:0,y:0}}start(){this.pswp.currSlide&&p(this.startPan,this.pswp.currSlide.pan),this.pswp.animations.stopAll()}change(){const{p1:t,prevP1:i,dragAxis:e}=this.gestures,{currSlide:s}=this.pswp;if(e==="y"&&this.pswp.options.closeOnVerticalDrag&&s&&s.currZoomLevel<=s.zoomLevels.fit&&!this.gestures.isMultitouch){const n=s.pan.y+(t.y-i.y);if(!this.pswp.dispatch("verticalDrag",{panY:n}).defaultPrevented){this._setPanWithFriction("y",n,J);const o=1-Math.abs(this._getVerticalDragRatio(s.pan.y));this.pswp.applyBgOpacity(o),s.applyCurrentZoomPan()}}else this._panOrMoveMainScroll("x")||(this._panOrMoveMainScroll("y"),s&&(M(s.pan),s.applyCurrentZoomPan()))}end(){const{velocity:t}=this.gestures,{mainScroll:i,currSlide:e}=this.pswp;let s=0;if(this.pswp.animations.stopAll(),i.isShifted()){const o=(i.x-i.getCurrSlideX())/this.pswp.viewportSize.x;t.x<-E&&o<0||t.x<.1&&o<-.5?(s=1,t.x=Math.min(t.x,0)):(t.x>E&&o>0||t.x>-.1&&o>.5)&&(s=-1,t.x=Math.max(t.x,0)),i.moveIndexBy(s,!0,t.x)}e&&e.currZoomLevel>e.zoomLevels.max||this.gestures.isMultitouch?this.gestures.zoomLevels.correctZoomPan(!0):(this._finishPanGestureForAxis("x"),this._finishPanGestureForAxis("y"))}_finishPanGestureForAxis(t){const{velocity:i}=this.gestures,{currSlide:e}=this.pswp;if(!e)return;const{pan:s,bounds:n}=e,o=s[t],a=this.pswp.bgOpacity<1&&t==="y",l=o+tt(i[t],.995);if(a){const v=this._getVerticalDragRatio(o),w=this._getVerticalDragRatio(l);if(v<0&&w<-z||v>0&&w>z){this.pswp.close();return}}const c=n.correctPan(t,l);if(o===c)return;const d=c===l?1:.82,u=this.pswp.bgOpacity,m=c-o;this.pswp.animations.startSpring({name:"panGesture"+t,isPan:!0,start:o,end:c,velocity:i[t],dampingRatio:d,onUpdate:v=>{if(a&&this.pswp.bgOpacity<1){const w=1-(c-v)/m;this.pswp.applyBgOpacity(I(u+(1-u)*w,0,1))}s[t]=Math.floor(v),e.applyCurrentZoomPan()}})}_panOrMoveMainScroll(t){const{p1:i,dragAxis:e,prevP1:s,isMultitouch:n}=this.gestures,{currSlide:o,mainScroll:a}=this.pswp,h=i[t]-s[t],l=a.x+h;if(!h||!o)return!1;if(t==="x"&&!o.isPannable()&&!n)return a.moveTo(l,!0),!0;const{bounds:c}=o,d=o.pan[t]+h;if(this.pswp.options.allowPanToNext&&e==="x"&&t==="x"&&!n){const u=a.getCurrSlideX(),m=a.x-u,v=h>0,w=!v;if(d>c.min[t]&&v){if(c.min[t]<=this.startPan[t])return a.moveTo(l,!0),!0;this._setPanWithFriction(t,d)}else if(d0)return a.moveTo(Math.max(l,u),!0),!0;if(m<0)return a.moveTo(Math.min(l,u),!0),!0}else this._setPanWithFriction(t,d)}else t==="y"?!a.isShifted()&&c.min.y!==c.max.y&&this._setPanWithFriction(t,d):this._setPanWithFriction(t,d);return!1}_getVerticalDragRatio(t){var i,e;return(t-((i=(e=this.pswp.currSlide)===null||e===void 0?void 0:e.bounds.center.y)!==null&&i!==void 0?i:0))/(this.pswp.viewportSize.y/3)}_setPanWithFriction(t,i,e){const{currSlide:s}=this.pswp;if(!s)return;const{pan:n,bounds:o}=s;if(o.correctPan(t,i)!==i||e){const h=Math.round(i-n[t]);n[t]+=h*(e||Q)}else n[t]=i}}const et=.05,st=.15;function O(r,t,i){return r.x=(t.x+i.x)/2,r.y=(t.y+i.y)/2,r}class nt{constructor(t){this.gestures=t,this._startPan={x:0,y:0},this._startZoomPoint={x:0,y:0},this._zoomPoint={x:0,y:0},this._wasOverFitZoomLevel=!1,this._startZoomLevel=1}start(){const{currSlide:t}=this.gestures.pswp;t&&(this._startZoomLevel=t.currZoomLevel,p(this._startPan,t.pan)),this.gestures.pswp.animations.stopAllPan(),this._wasOverFitZoomLevel=!1}change(){const{p1:t,startP1:i,p2:e,startP2:s,pswp:n}=this.gestures,{currSlide:o}=n;if(!o)return;const a=o.zoomLevels.min,h=o.zoomLevels.max;if(!o.isZoomable()||n.mainScroll.isShifted())return;O(this._startZoomPoint,i,s),O(this._zoomPoint,t,e);let l=1/A(i,s)*A(t,e)*this._startZoomLevel;if(l>o.zoomLevels.initial+o.zoomLevels.initial/15&&(this._wasOverFitZoomLevel=!0),lh&&(l=h+(l-h)*et);o.pan.x=this._calculatePanForZoomLevel("x",l),o.pan.y=this._calculatePanForZoomLevel("y",l),o.setZoomLevel(l),o.applyCurrentZoomPan()}end(){const{pswp:t}=this.gestures,{currSlide:i}=t;(!i||i.currZoomLevele.zoomLevels.max?n=e.zoomLevels.max:(o=!1,n=s);const a=i.bgOpacity,h=i.bgOpacity<1,l=p({x:0,y:0},e.pan);let c=p({x:0,y:0},l);t&&(this._zoomPoint.x=0,this._zoomPoint.y=0,this._startZoomPoint.x=0,this._startZoomPoint.y=0,this._startZoomLevel=s,p(this._startPan,l)),o&&(c={x:this._calculatePanForZoomLevel("x",n),y:this._calculatePanForZoomLevel("y",n)}),e.setZoomLevel(n),c={x:e.bounds.correctPan("x",c.x),y:e.bounds.correctPan("y",c.y)},e.setZoomLevel(s);const d=!x(c,l);if(!d&&!o&&!h){e._setResolution(n),e.applyCurrentZoomPan();return}i.animations.stopAllPan(),i.animations.startSpring({isPan:!0,start:0,end:1e3,velocity:0,dampingRatio:1,naturalFrequency:40,onUpdate:u=>{if(u/=1e3,d||o){if(d&&(e.pan.x=l.x+(c.x-l.x)*u,e.pan.y=l.y+(c.y-l.y)*u),o){const m=s+(n-s)*u;e.setZoomLevel(m)}e.applyCurrentZoomPan()}h&&i.bgOpacity<1&&i.applyBgOpacity(I(a+(1-a)*u,0,1))},onComplete:()=>{e._setResolution(n),e.applyCurrentZoomPan()}})}}function Z(r){return!!r.target.closest(".pswp__container")}class ot{constructor(t){this.gestures=t}click(t,i){const e=i.target.classList,s=e.contains("pswp__img"),n=e.contains("pswp__item")||e.contains("pswp__zoom-wrap");s?this._doClickOrTapAction("imageClick",t,i):n&&this._doClickOrTapAction("bgClick",t,i)}tap(t,i){Z(i)&&this._doClickOrTapAction("tap",t,i)}doubleTap(t,i){Z(i)&&this._doClickOrTapAction("doubleTap",t,i)}_doClickOrTapAction(t,i,e){var s;const{pswp:n}=this.gestures,{currSlide:o}=n,a=t+"Action",h=n.options[a];if(!n.dispatch(a,{point:i,originalEvent:e}).defaultPrevented){if(typeof h=="function"){h.call(n,i,e);return}switch(h){case"close":case"next":n[h]();break;case"zoom":o==null||o.toggleZoom(i);break;case"zoom-or-close":o!=null&&o.isZoomable()&&o.zoomLevels.secondary!==o.zoomLevels.initial?o.toggleZoom(i):n.options.clickToCloseNonZoomable&&n.close();break;case"toggle-controls":(s=this.gestures.pswp.element)===null||s===void 0||s.classList.toggle("pswp--ui-visible");break}}}}const rt=10,at=300,ht=25;class lt{constructor(t){this.pswp=t,this.dragAxis=null,this.p1={x:0,y:0},this.p2={x:0,y:0},this.prevP1={x:0,y:0},this.prevP2={x:0,y:0},this.startP1={x:0,y:0},this.startP2={x:0,y:0},this.velocity={x:0,y:0},this._lastStartP1={x:0,y:0},this._intervalP1={x:0,y:0},this._numActivePoints=0,this._ongoingPointers=[],this._touchEventEnabled="ontouchstart"in window,this._pointerEventEnabled=!!window.PointerEvent,this.supportsTouch=this._touchEventEnabled||this._pointerEventEnabled&&navigator.maxTouchPoints>1,this._numActivePoints=0,this._intervalTime=0,this._velocityCalculated=!1,this.isMultitouch=!1,this.isDragging=!1,this.isZooming=!1,this.raf=null,this._tapTimer=null,this.supportsTouch||(t.options.allowPanToNext=!1),this.drag=new it(this),this.zoomLevels=new nt(this),this.tapHandler=new ot(this),t.on("bindEvents",()=>{t.events.add(t.scrollWrap,"click",this._onClick.bind(this)),this._pointerEventEnabled?this._bindEvents("pointer","down","up","cancel"):this._touchEventEnabled?(this._bindEvents("touch","start","end","cancel"),t.scrollWrap&&(t.scrollWrap.ontouchmove=()=>{},t.scrollWrap.ontouchend=()=>{})):this._bindEvents("mouse","down","up")})}_bindEvents(t,i,e,s){const{pswp:n}=this,{events:o}=n,a=s?t+s:"";o.add(n.scrollWrap,t+i,this.onPointerDown.bind(this)),o.add(window,t+"move",this.onPointerMove.bind(this)),o.add(window,t+e,this.onPointerUp.bind(this)),a&&o.add(n.scrollWrap,a,this.onPointerUp.bind(this))}onPointerDown(t){const i=t.type==="mousedown"||t.pointerType==="mouse";if(i&&t.button>0)return;const{pswp:e}=this;if(!e.opener.isOpen){t.preventDefault();return}e.dispatch("pointerDown",{originalEvent:t}).defaultPrevented||(i&&(e.mouseDetected(),this._preventPointerEventBehaviour(t,"down")),e.animations.stopAll(),this._updatePoints(t,"down"),this._numActivePoints===1&&(this.dragAxis=null,p(this.startP1,this.p1)),this._numActivePoints>1?(this._clearTapTimer(),this.isMultitouch=!0):this.isMultitouch=!1)}onPointerMove(t){this._preventPointerEventBehaviour(t,"move"),this._numActivePoints&&(this._updatePoints(t,"move"),!this.pswp.dispatch("pointerMove",{originalEvent:t}).defaultPrevented&&(this._numActivePoints===1&&!this.isDragging?(this.dragAxis||this._calculateDragDirection(),this.dragAxis&&!this.isDragging&&(this.isZooming&&(this.isZooming=!1,this.zoomLevels.end()),this.isDragging=!0,this._clearTapTimer(),this._updateStartPoints(),this._intervalTime=Date.now(),this._velocityCalculated=!1,p(this._intervalP1,this.p1),this.velocity.x=0,this.velocity.y=0,this.drag.start(),this._rafStopLoop(),this._rafRenderLoop())):this._numActivePoints>1&&!this.isZooming&&(this._finishDrag(),this.isZooming=!0,this._updateStartPoints(),this.zoomLevels.start(),this._rafStopLoop(),this._rafRenderLoop())))}_finishDrag(){this.isDragging&&(this.isDragging=!1,this._velocityCalculated||this._updateVelocity(!0),this.drag.end(),this.dragAxis=null)}onPointerUp(t){this._numActivePoints&&(this._updatePoints(t,"up"),!this.pswp.dispatch("pointerUp",{originalEvent:t}).defaultPrevented&&(this._numActivePoints===0&&(this._rafStopLoop(),this.isDragging?this._finishDrag():!this.isZooming&&!this.isMultitouch&&this._finishTap(t)),this._numActivePoints<2&&this.isZooming&&(this.isZooming=!1,this.zoomLevels.end(),this._numActivePoints===1&&(this.dragAxis=null,this._updateStartPoints()))))}_rafRenderLoop(){(this.isDragging||this.isZooming)&&(this._updateVelocity(),this.isDragging?x(this.p1,this.prevP1)||this.drag.change():(!x(this.p1,this.prevP1)||!x(this.p2,this.prevP2))&&this.zoomLevels.change(),this._updatePrevPoints(),this.raf=requestAnimationFrame(this._rafRenderLoop.bind(this)))}_updateVelocity(t){const i=Date.now(),e=i-this._intervalTime;e<50&&!t||(this.velocity.x=this._getVelocity("x",e),this.velocity.y=this._getVelocity("y",e),this._intervalTime=i,p(this._intervalP1,this.p1),this._velocityCalculated=!0)}_finishTap(t){const{mainScroll:i}=this.pswp;if(i.isShifted()){i.moveIndexBy(0,!0);return}if(t.type.indexOf("cancel")>0)return;if(t.type==="mouseup"||t.pointerType==="mouse"){this.tapHandler.click(this.startP1,t);return}const e=this.pswp.options.doubleTapAction?at:0;this._tapTimer?(this._clearTapTimer(),A(this._lastStartP1,this.startP1){this.tapHandler.tap(this.startP1,t),this._clearTapTimer()},e))}_clearTapTimer(){this._tapTimer&&(clearTimeout(this._tapTimer),this._tapTimer=null)}_getVelocity(t,i){const e=this.p1[t]-this._intervalP1[t];return Math.abs(e)>1&&i>5?e/i:0}_rafStopLoop(){this.raf&&(cancelAnimationFrame(this.raf),this.raf=null)}_preventPointerEventBehaviour(t,i){this.pswp.applyFilters("preventPointerEvent",!0,t,i)&&t.preventDefault()}_updatePoints(t,i){if(this._pointerEventEnabled){const e=t,s=this._ongoingPointers.findIndex(n=>n.id===e.pointerId);i==="up"&&s>-1?this._ongoingPointers.splice(s,1):i==="down"&&s===-1?this._ongoingPointers.push(this._convertEventPosToPoint(e,{x:0,y:0})):s>-1&&this._convertEventPosToPoint(e,this._ongoingPointers[s]),this._numActivePoints=this._ongoingPointers.length,this._numActivePoints>0&&p(this.p1,this._ongoingPointers[0]),this._numActivePoints>1&&p(this.p2,this._ongoingPointers[1])}else{const e=t;this._numActivePoints=0,e.type.indexOf("touch")>-1?e.touches&&e.touches.length>0&&(this._convertEventPosToPoint(e.touches[0],this.p1),this._numActivePoints++,e.touches.length>1&&(this._convertEventPosToPoint(e.touches[1],this.p2),this._numActivePoints++)):(this._convertEventPosToPoint(t,this.p1),i==="up"?this._numActivePoints=0:this._numActivePoints++)}}_updatePrevPoints(){p(this.prevP1,this.p1),p(this.prevP2,this.p2)}_updateStartPoints(){p(this.startP1,this.p1),p(this.startP2,this.p2),this._updatePrevPoints()}_calculateDragDirection(){if(this.pswp.mainScroll.isShifted())this.dragAxis="x";else{const t=Math.abs(this.p1.x-this.startP1.x)-Math.abs(this.p1.y-this.startP1.y);if(t!==0){const i=t>0?"x":"y";Math.abs(this.p1[i]-this.startP1[i])>=rt&&(this.dragAxis=i)}}}_convertEventPosToPoint(t,i){return i.x=t.pageX-this.pswp.offset.x,i.y=t.pageY-this.pswp.offset.y,"pointerId"in t?i.id=t.pointerId:t.identifier!==void 0&&(i.id=t.identifier),i}_onClick(t){this.pswp.mainScroll.isShifted()&&(t.preventDefault(),t.stopPropagation())}}const ct=.35;class dt{constructor(t){this.pswp=t,this.x=0,this.slideWidth=0,this._currPositionIndex=0,this._prevPositionIndex=0,this._containerShiftIndex=-1,this.itemHolders=[]}resize(t){const{pswp:i}=this,e=Math.round(i.viewportSize.x+i.viewportSize.x*i.options.spacing),s=e!==this.slideWidth;s&&(this.slideWidth=e,this.moveTo(this.getCurrSlideX())),this.itemHolders.forEach((n,o)=>{s&&y(n.el,(o+this._containerShiftIndex)*this.slideWidth),t&&n.slide&&n.slide.resize()})}resetPosition(){this._currPositionIndex=0,this._prevPositionIndex=0,this.slideWidth=0,this._containerShiftIndex=-1}appendHolders(){this.itemHolders=[];for(let t=0;t<3;t++){const i=f("pswp__item","div",this.pswp.container);i.setAttribute("role","group"),i.setAttribute("aria-roledescription","slide"),i.setAttribute("aria-hidden","true"),i.style.display=t===1?"block":"none",this.itemHolders.push({el:i})}}canBeSwiped(){return this.pswp.getNumItems()>1}moveIndexBy(t,i,e){const{pswp:s}=this;let n=s.potentialIndex+t;const o=s.getNumItems();if(s.canLoop()){n=s.getLoopedIndex(n);const h=(t+o)%o;h<=o/2?t=h:t=h-o}else n<0?n=0:n>=o&&(n=o-1),t=n-s.potentialIndex;s.potentialIndex=n,this._currPositionIndex-=t,s.animations.stopMainScroll();const a=this.getCurrSlideX();if(!i)this.moveTo(a),this.updateCurrItem();else{s.animations.startSpring({isMainScroll:!0,start:this.x,end:a,velocity:e||0,naturalFrequency:30,dampingRatio:1,onUpdate:l=>{this.moveTo(l)},onComplete:()=>{this.updateCurrItem(),s.appendHeavy()}});let h=s.potentialIndex-s.currIndex;if(s.canLoop()){const l=(h+o)%o;l<=o/2?h=l:h=l-o}Math.abs(h)>1&&this.updateCurrItem()}return!!t}getCurrSlideX(){return this.slideWidth*this._currPositionIndex}isShifted(){return this.x!==this.getCurrSlideX()}updateCurrItem(){var t;const{pswp:i}=this,e=this._prevPositionIndex-this._currPositionIndex;if(!e)return;this._prevPositionIndex=this._currPositionIndex,i.currIndex=i.potentialIndex;let s=Math.abs(e),n;s>=3&&(this._containerShiftIndex+=e+(e>0?-3:3),s=3,this.itemHolders.forEach(o=>{var a;(a=o.slide)===null||a===void 0||a.destroy(),o.slide=void 0}));for(let o=0;o0?(n=this.itemHolders.shift(),n&&(this.itemHolders[2]=n,this._containerShiftIndex++,y(n.el,(this._containerShiftIndex+2)*this.slideWidth),i.setContent(n,i.currIndex-s+o+2))):(n=this.itemHolders.pop(),n&&(this.itemHolders.unshift(n),this._containerShiftIndex--,y(n.el,this._containerShiftIndex*this.slideWidth),i.setContent(n,i.currIndex+s-o-2)));Math.abs(this._containerShiftIndex)>50&&!this.isShifted()&&(this.resetPosition(),this.resize()),i.animations.stopAllPan(),this.itemHolders.forEach((o,a)=>{o.slide&&o.slide.setIsActive(a===1)}),i.currSlide=(t=this.itemHolders[1])===null||t===void 0?void 0:t.slide,i.contentLoader.updateLazy(e),i.currSlide&&i.currSlide.applyCurrentZoomPan(),i.dispatch("change")}moveTo(t,i){if(!this.pswp.canLoop()&&i){let e=(this.slideWidth*this._currPositionIndex-t)/this.slideWidth;e+=this.pswp.currIndex;const s=Math.round(t-this.x);(e<0&&s>0||e>=this.pswp.getNumItems()-1&&s<0)&&(t=this.x+s*ct)}this.x=t,this.pswp.container&&y(this.pswp.container,t),this.pswp.dispatch("moveMainScroll",{x:t,dragging:i??!1})}}const pt={Escape:27,z:90,ArrowLeft:37,ArrowUp:38,ArrowRight:39,ArrowDown:40,Tab:9},g=(r,t)=>t?r:pt[r];class ut{constructor(t){this.pswp=t,this._wasFocused=!1,t.on("bindEvents",()=>{t.options.trapFocus&&(t.options.initialPointerPos||this._focusRoot(),t.events.add(document,"focusin",this._onFocusIn.bind(this))),t.events.add(document,"keydown",this._onKeyDown.bind(this))});const i=document.activeElement;t.on("destroy",()=>{t.options.returnFocus&&i&&this._wasFocused&&i.focus()})}_focusRoot(){!this._wasFocused&&this.pswp.element&&(this.pswp.element.focus(),this._wasFocused=!0)}_onKeyDown(t){const{pswp:i}=this;if(i.dispatch("keydown",{originalEvent:t}).defaultPrevented||G(t))return;let e,s,n=!1;const o="key"in t;switch(o?t.key:t.keyCode){case g("Escape",o):i.options.escKey&&(e="close");break;case g("z",o):e="toggleZoom";break;case g("ArrowLeft",o):s="x";break;case g("ArrowUp",o):s="y";break;case g("ArrowRight",o):s="x",n=!0;break;case g("ArrowDown",o):n=!0,s="y";break;case g("Tab",o):this._focusRoot();break}if(s){t.preventDefault();const{currSlide:a}=i;i.options.arrowKeys&&s==="x"&&i.getNumItems()>1?e=n?"next":"prev":a&&a.currZoomLevel>a.zoomLevels.fit&&(a.pan[s]+=n?-80:80,a.panTo(a.pan.x,a.pan.y))}e&&(t.preventDefault(),i[e]())}_onFocusIn(t){const{template:i}=this.pswp;i&&document!==t.target&&i!==t.target&&!i.contains(t.target)&&i.focus()}}const mt="cubic-bezier(.4,0,.22,1)";class ft{constructor(t){var i;this.props=t;const{target:e,onComplete:s,transform:n,onFinish:o=()=>{},duration:a=333,easing:h=mt}=t;this.onFinish=o;const l=n?"transform":"opacity",c=(i=t[l])!==null&&i!==void 0?i:"";this._target=e,this._onComplete=s,this._finished=!1,this._onTransitionEnd=this._onTransitionEnd.bind(this),this._helperTimeout=setTimeout(()=>{R(e,l,a,h),this._helperTimeout=setTimeout(()=>{e.addEventListener("transitionend",this._onTransitionEnd,!1),e.addEventListener("transitioncancel",this._onTransitionEnd,!1),this._helperTimeout=setTimeout(()=>{this._finalizeAnimation()},a+500),e.style[l]=c},30)},0)}_onTransitionEnd(t){t.target===this._target&&this._finalizeAnimation()}_finalizeAnimation(){this._finished||(this._finished=!0,this.onFinish(),this._onComplete&&this._onComplete())}destroy(){this._helperTimeout&&clearTimeout(this._helperTimeout),U(this._target),this._target.removeEventListener("transitionend",this._onTransitionEnd,!1),this._target.removeEventListener("transitioncancel",this._onTransitionEnd,!1),this._finished||this._finalizeAnimation()}}const _t=12,vt=.75;class gt{constructor(t,i,e){this.velocity=t*1e3,this._dampingRatio=i||vt,this._naturalFrequency=e||_t,this._dampedFrequency=this._naturalFrequency,this._dampingRatio<1&&(this._dampedFrequency*=Math.sqrt(1-this._dampingRatio*this._dampingRatio))}easeFrame(t,i){let e=0,s;i/=1e3;const n=Math.E**(-this._dampingRatio*this._naturalFrequency*i);if(this._dampingRatio===1)s=this.velocity+this._naturalFrequency*t,e=(t+s*i)*n,this.velocity=e*-this._naturalFrequency+s*n;else if(this._dampingRatio<1){s=1/this._dampedFrequency*(this._dampingRatio*this._naturalFrequency*t+this.velocity);const o=Math.cos(this._dampedFrequency*i),a=Math.sin(this._dampedFrequency*i);e=n*(t*o+s*a),this.velocity=e*-this._naturalFrequency*this._dampingRatio+n*(-this._dampedFrequency*t*a+this._dampedFrequency*s*o)}return e}}class yt{constructor(t){this.props=t,this._raf=0;const{start:i,end:e,velocity:s,onUpdate:n,onComplete:o,onFinish:a=()=>{},dampingRatio:h,naturalFrequency:l}=t;this.onFinish=a;const c=new gt(s,h,l);let d=Date.now(),u=i-e;const m=()=>{this._raf&&(u=c.easeFrame(u,Date.now()-d),Math.abs(u)<1&&Math.abs(c.velocity)<50?(n(e),o&&o(),this.onFinish()):(d=Date.now(),n(u+e),this._raf=requestAnimationFrame(m)))};this._raf=requestAnimationFrame(m)}destroy(){this._raf>=0&&cancelAnimationFrame(this._raf),this._raf=0}}class wt{constructor(){this.activeAnimations=[]}startSpring(t){this._start(t,!0)}startTransition(t){this._start(t)}_start(t,i){const e=i?new yt(t):new ft(t);return this.activeAnimations.push(e),e.onFinish=()=>this.stop(e),e}stop(t){t.destroy();const i=this.activeAnimations.indexOf(t);i>-1&&this.activeAnimations.splice(i,1)}stopAll(){this.activeAnimations.forEach(t=>{t.destroy()}),this.activeAnimations=[]}stopAllPan(){this.activeAnimations=this.activeAnimations.filter(t=>t.props.isPan?(t.destroy(),!1):!0)}stopMainScroll(){this.activeAnimations=this.activeAnimations.filter(t=>t.props.isMainScroll?(t.destroy(),!1):!0)}isPanRunning(){return this.activeAnimations.some(t=>t.props.isPan)}}class Pt{constructor(t){this.pswp=t,t.events.add(t.element,"wheel",this._onWheel.bind(this))}_onWheel(t){t.preventDefault();const{currSlide:i}=this.pswp;let{deltaX:e,deltaY:s}=t;if(i&&!this.pswp.dispatch("wheel",{originalEvent:t}).defaultPrevented)if(t.ctrlKey||this.pswp.options.wheelToZoom){if(i.isZoomable()){let n=-s;t.deltaMode===1?n*=.05:n*=t.deltaMode?1:.002,n=2**n;const o=i.currZoomLevel*n;i.zoomTo(o,{x:t.clientX,y:t.clientY})}}else i.isPannable()&&(t.deltaMode===1&&(e*=18,s*=18),i.panTo(i.pan.x-e,i.pan.y-s))}}function St(r){if(typeof r=="string")return r;if(!r||!r.isCustomSVG)return"";const t=r;let i='",i}class xt{constructor(t,i){var e;const s=i.name||i.className;let n=i.html;if(t.options[s]===!1)return;typeof t.options[s+"SVG"]=="string"&&(n=t.options[s+"SVG"]),t.dispatch("uiElementCreate",{data:i});let o="";i.isButton?(o+="pswp__button ",o+=i.className||`pswp__button--${i.name}`):o+=i.className||`pswp__${i.name}`;let a=i.isButton?i.tagName||"button":i.tagName||"div";a=a.toLowerCase();const h=f(o,a);if(i.isButton){a==="button"&&(h.type="button");let{title:d}=i;const{ariaLabel:u}=i;typeof t.options[s+"Title"]=="string"&&(d=t.options[s+"Title"]),d&&(h.title=d);const m=u||d;m&&h.setAttribute("aria-label",m)}h.innerHTML=St(n),i.onInit&&i.onInit(h,t),i.onClick&&(h.onclick=d=>{typeof i.onClick=="string"?t[i.onClick]():typeof i.onClick=="function"&&i.onClick(d,h,t)});const l=i.appendTo||"bar";let c=t.element;l==="bar"?(t.topBar||(t.topBar=f("pswp__top-bar pswp__hide-on-close","div",t.scrollWrap)),c=t.topBar):(h.classList.add("pswp__hide-on-close"),l==="wrapper"&&(c=t.scrollWrap)),(e=c)===null||e===void 0||e.appendChild(t.applyFilters("uiElement",h,i))}}function k(r,t,i){r.classList.add("pswp__button--arrow"),r.setAttribute("aria-controls","pswp__items"),t.on("change",()=>{t.options.loop||(i?r.disabled=!(t.currIndex0))})}const bt={name:"arrowPrev",className:"pswp__button--arrow--prev",title:"Previous",order:10,isButton:!0,appendTo:"wrapper",html:{isCustomSVG:!0,size:60,inner:'',outlineID:"pswp__icn-arrow"},onClick:"prev",onInit:k},It={name:"arrowNext",className:"pswp__button--arrow--next",title:"Next",order:11,isButton:!0,appendTo:"wrapper",html:{isCustomSVG:!0,size:60,inner:'',outlineID:"pswp__icn-arrow"},onClick:"next",onInit:(r,t)=>{k(r,t,!0)}},At={name:"close",title:"Close",order:20,isButton:!0,html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-close"},onClick:"close"},Lt={name:"zoom",title:"Zoom",order:10,isButton:!0,html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-zoom"},onClick:"toggleZoom"},Ct={name:"preloader",appendTo:"bar",order:7,html:{isCustomSVG:!0,inner:'',outlineID:"pswp__icn-loading"},onInit:(r,t)=>{let i,e=null;const s=(a,h)=>{r.classList.toggle("pswp__preloader--"+a,h)},n=a=>{i!==a&&(i=a,s("active",a))},o=()=>{var a;if(!((a=t.currSlide)!==null&&a!==void 0&&a.content.isLoading())){n(!1),e&&(clearTimeout(e),e=null);return}e||(e=setTimeout(()=>{var h;n(!!(!((h=t.currSlide)===null||h===void 0)&&h.content.isLoading())),e=null},t.options.preloaderDelay))};t.on("change",o),t.on("loadComplete",a=>{t.currSlide===a.slide&&o()}),t.ui&&(t.ui.updatePreloaderVisibility=o)}},Tt={name:"counter",order:5,onInit:(r,t)=>{t.on("change",()=>{r.innerText=t.currIndex+1+t.options.indexIndicatorSep+t.getNumItems()})}};function D(r,t){r.classList.toggle("pswp--zoomed-in",t)}class zt{constructor(t){this.pswp=t,this.isRegistered=!1,this.uiElementsData=[],this.items=[],this.updatePreloaderVisibility=()=>{},this._lastUpdatedZoomLevel=void 0}init(){const{pswp:t}=this;this.isRegistered=!1,this.uiElementsData=[At,bt,It,Lt,Ct,Tt],t.dispatch("uiRegister"),this.uiElementsData.sort((i,e)=>(i.order||0)-(e.order||0)),this.items=[],this.isRegistered=!0,this.uiElementsData.forEach(i=>{this.registerElement(i)}),t.on("change",()=>{var i;(i=t.element)===null||i===void 0||i.classList.toggle("pswp--one-slide",t.getNumItems()===1)}),t.on("zoomPanUpdate",()=>this._onZoomPanUpdate())}registerElement(t){this.isRegistered?this.items.push(new xt(this.pswp,t)):this.uiElementsData.push(t)}_onZoomPanUpdate(){const{template:t,currSlide:i,options:e}=this.pswp;if(this.pswp.opener.isClosing||!t||!i)return;let{currZoomLevel:s}=i;if(this.pswp.opener.isOpen||(s=i.zoomLevels.initial),s===this._lastUpdatedZoomLevel)return;this._lastUpdatedZoomLevel=s;const n=i.zoomLevels.initial-i.zoomLevels.secondary;if(Math.abs(n)<.01||!i.isZoomable()){D(t,!1),t.classList.remove("pswp--zoom-allowed");return}t.classList.add("pswp--zoom-allowed");const o=s===i.zoomLevels.initial?i.zoomLevels.secondary:i.zoomLevels.initial;D(t,o<=s),(e.imageClickAction==="zoom"||e.imageClickAction==="zoom-or-close")&&t.classList.add("pswp--click-to-zoom")}}function Et(r){const t=r.getBoundingClientRect();return{x:t.left,y:t.top,w:t.width}}function Ot(r,t,i){const e=r.getBoundingClientRect(),s=e.width/t,n=e.height/i,o=s>n?s:n,a=(e.width-t*o)/2,h=(e.height-i*o)/2,l={x:e.left+a,y:e.top+h,w:t*o};return l.innerRect={w:e.width,h:e.height,x:a,y:h},l}function Zt(r,t,i){const e=i.dispatch("thumbBounds",{index:r,itemData:t,instance:i});if(e.thumbBounds)return e.thumbBounds;const{element:s}=t;let n,o;if(s&&i.options.thumbSelector!==!1){const a=i.options.thumbSelector||"img";o=s.matches(a)?s:s.querySelector(a)}return o=i.applyFilters("thumbEl",o,t,r),o&&(t.thumbCropped?n=Ot(o,t.width||t.w||0,t.height||t.h||0):n=Et(o)),i.applyFilters("thumbBounds",n,t,r)}class Dt{constructor(t,i){this.type=t,this.defaultPrevented=!1,i&&Object.assign(this,i)}preventDefault(){this.defaultPrevented=!0}}class Mt{constructor(){this._listeners={},this._filters={},this.pswp=void 0,this.options=void 0}addFilter(t,i,e=100){var s,n,o;this._filters[t]||(this._filters[t]=[]),(s=this._filters[t])===null||s===void 0||s.push({fn:i,priority:e}),(n=this._filters[t])===null||n===void 0||n.sort((a,h)=>a.priority-h.priority),(o=this.pswp)===null||o===void 0||o.addFilter(t,i,e)}removeFilter(t,i){this._filters[t]&&(this._filters[t]=this._filters[t].filter(e=>e.fn!==i)),this.pswp&&this.pswp.removeFilter(t,i)}applyFilters(t,...i){var e;return(e=this._filters[t])===null||e===void 0||e.forEach(s=>{i[0]=s.fn.apply(this,i)}),i[0]}on(t,i){var e,s;this._listeners[t]||(this._listeners[t]=[]),(e=this._listeners[t])===null||e===void 0||e.push(i),(s=this.pswp)===null||s===void 0||s.on(t,i)}off(t,i){var e;this._listeners[t]&&(this._listeners[t]=this._listeners[t].filter(s=>i!==s)),(e=this.pswp)===null||e===void 0||e.off(t,i)}dispatch(t,i){var e;if(this.pswp)return this.pswp.dispatch(t,i);const s=new Dt(t,i);return(e=this._listeners[t])===null||e===void 0||e.forEach(n=>{n.call(this,s)}),s}}class Rt{constructor(t,i){if(this.element=f("pswp__img pswp__img--placeholder",t?"img":"div",i),t){const e=this.element;e.decoding="async",e.alt="",e.src=t,e.setAttribute("role","presentation")}this.element.setAttribute("aria-hidden","true")}setDisplayedSize(t,i){this.element&&(this.element.tagName==="IMG"?(L(this.element,250,"auto"),this.element.style.transformOrigin="0 0",this.element.style.transform=b(0,0,t/250)):L(this.element,t,i))}destroy(){var t;(t=this.element)!==null&&t!==void 0&&t.parentNode&&this.element.remove(),this.element=null}}class Ft{constructor(t,i,e){this.instance=i,this.data=t,this.index=e,this.element=void 0,this.placeholder=void 0,this.slide=void 0,this.displayedImageWidth=0,this.displayedImageHeight=0,this.width=Number(this.data.w)||Number(this.data.width)||0,this.height=Number(this.data.h)||Number(this.data.height)||0,this.isAttached=!1,this.hasSlide=!1,this.isDecoding=!1,this.state=_.IDLE,this.data.type?this.type=this.data.type:this.data.src?this.type="image":this.type="html",this.instance.dispatch("contentInit",{content:this})}removePlaceholder(){this.placeholder&&!this.keepPlaceholder()&&setTimeout(()=>{this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0)},1e3)}load(t,i){if(this.slide&&this.usePlaceholder())if(this.placeholder){const e=this.placeholder.element;e&&!e.parentElement&&this.slide.container.prepend(e)}else{const e=this.instance.applyFilters("placeholderSrc",this.data.msrc&&this.slide.isFirstSlide?this.data.msrc:!1,this);this.placeholder=new Rt(e,this.slide.container)}this.element&&!i||this.instance.dispatch("contentLoad",{content:this,isLazy:t}).defaultPrevented||(this.isImageContent()?(this.element=f("pswp__img","img"),this.displayedImageWidth&&this.loadImage(t)):(this.element=f("pswp__content","div"),this.element.innerHTML=this.data.html||""),i&&this.slide&&this.slide.updateContentSize(!0))}loadImage(t){var i,e;if(!this.isImageContent()||!this.element||this.instance.dispatch("contentLoadImage",{content:this,isLazy:t}).defaultPrevented)return;const s=this.element;this.updateSrcsetSizes(),this.data.srcset&&(s.srcset=this.data.srcset),s.src=(i=this.data.src)!==null&&i!==void 0?i:"",s.alt=(e=this.data.alt)!==null&&e!==void 0?e:"",this.state=_.LOADING,s.complete?this.onLoaded():(s.onload=()=>{this.onLoaded()},s.onerror=()=>{this.onError()})}setSlide(t){this.slide=t,this.hasSlide=!0,this.instance=t.pswp}onLoaded(){this.state=_.LOADED,this.slide&&this.element&&(this.instance.dispatch("loadComplete",{slide:this.slide,content:this}),this.slide.isActive&&this.slide.heavyAppended&&!this.element.parentNode&&(this.append(),this.slide.updateContentSize(!0)),(this.state===_.LOADED||this.state===_.ERROR)&&this.removePlaceholder())}onError(){this.state=_.ERROR,this.slide&&(this.displayError(),this.instance.dispatch("loadComplete",{slide:this.slide,isError:!0,content:this}),this.instance.dispatch("loadError",{slide:this.slide,content:this}))}isLoading(){return this.instance.applyFilters("isContentLoading",this.state===_.LOADING,this)}isError(){return this.state===_.ERROR}isImageContent(){return this.type==="image"}setDisplayedSize(t,i){if(this.element&&(this.placeholder&&this.placeholder.setDisplayedSize(t,i),!this.instance.dispatch("contentResize",{content:this,width:t,height:i}).defaultPrevented&&(L(this.element,t,i),this.isImageContent()&&!this.isError()))){const e=!this.displayedImageWidth&&t;this.displayedImageWidth=t,this.displayedImageHeight=i,e?this.loadImage(!1):this.updateSrcsetSizes(),this.slide&&this.instance.dispatch("imageSizeChange",{slide:this.slide,width:t,height:i,content:this})}}isZoomable(){return this.instance.applyFilters("isContentZoomable",this.isImageContent()&&this.state!==_.ERROR,this)}updateSrcsetSizes(){if(!this.isImageContent()||!this.element||!this.data.srcset)return;const t=this.element,i=this.instance.applyFilters("srcsetSizesWidth",this.displayedImageWidth,this);(!t.dataset.largestUsedSize||i>parseInt(t.dataset.largestUsedSize,10))&&(t.sizes=i+"px",t.dataset.largestUsedSize=String(i))}usePlaceholder(){return this.instance.applyFilters("useContentPlaceholder",this.isImageContent(),this)}lazyLoad(){this.instance.dispatch("contentLazyLoad",{content:this}).defaultPrevented||this.load(!0)}keepPlaceholder(){return this.instance.applyFilters("isKeepingPlaceholder",this.isLoading(),this)}destroy(){this.hasSlide=!1,this.slide=void 0,!this.instance.dispatch("contentDestroy",{content:this}).defaultPrevented&&(this.remove(),this.placeholder&&(this.placeholder.destroy(),this.placeholder=void 0),this.isImageContent()&&this.element&&(this.element.onload=null,this.element.onerror=null,this.element=void 0))}displayError(){if(this.slide){var t,i;let e=f("pswp__error-msg","div");e.innerText=(t=(i=this.instance.options)===null||i===void 0?void 0:i.errorMsg)!==null&&t!==void 0?t:"",e=this.instance.applyFilters("contentErrorElement",e,this),this.element=f("pswp__content pswp__error-msg-container","div"),this.element.appendChild(e),this.slide.container.innerText="",this.slide.container.appendChild(this.element),this.slide.updateContentSize(!0),this.removePlaceholder()}}append(){if(this.isAttached||!this.element)return;if(this.isAttached=!0,this.state===_.ERROR){this.displayError();return}if(this.instance.dispatch("contentAppend",{content:this}).defaultPrevented)return;const t="decode"in this.element;this.isImageContent()?t&&this.slide&&(!this.slide.isActive||C())?(this.isDecoding=!0,this.element.decode().catch(()=>{}).finally(()=>{this.isDecoding=!1,this.appendImage()})):this.appendImage():this.slide&&!this.element.parentNode&&this.slide.container.appendChild(this.element)}activate(){this.instance.dispatch("contentActivate",{content:this}).defaultPrevented||!this.slide||(this.isImageContent()&&this.isDecoding&&!C()?this.appendImage():this.isError()&&this.load(!1,!0),this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","false"))}deactivate(){this.instance.dispatch("contentDeactivate",{content:this}),this.slide&&this.slide.holderElement&&this.slide.holderElement.setAttribute("aria-hidden","true")}remove(){this.isAttached=!1,!this.instance.dispatch("contentRemove",{content:this}).defaultPrevented&&(this.element&&this.element.parentNode&&this.element.remove(),this.placeholder&&this.placeholder.element&&this.placeholder.element.remove())}appendImage(){this.isAttached&&(this.instance.dispatch("contentAppendImage",{content:this}).defaultPrevented||(this.slide&&this.element&&!this.element.parentNode&&this.slide.container.appendChild(this.element),(this.state===_.LOADED||this.state===_.ERROR)&&this.removePlaceholder()))}}const Bt=5;function W(r,t,i){const e=t.createContentFromData(r,i);let s;const{options:n}=t;if(n){s=new H(n,r,-1);let o;t.pswp?o=t.pswp.viewportSize:o=B(n,t);const a=N(n,o,r,i);s.update(e.width,e.height,a)}return e.lazyLoad(),s&&e.setDisplayedSize(Math.ceil(e.width*s.initial),Math.ceil(e.height*s.initial)),e}function Nt(r,t){const i=t.getItemData(r);if(!t.dispatch("lazyLoadSlide",{index:r,itemData:i}).defaultPrevented)return W(i,t,r)}class Ht{constructor(t){this.pswp=t,this.limit=Math.max(t.options.preload[0]+t.options.preload[1]+1,Bt),this._cachedItems=[]}updateLazy(t){const{pswp:i}=this;if(i.dispatch("lazyLoad").defaultPrevented)return;const{preload:e}=i.options,s=t===void 0?!0:t>=0;let n;for(n=0;n<=e[1];n++)this.loadSlideByIndex(i.currIndex+(s?n:-n));for(n=1;n<=e[0];n++)this.loadSlideByIndex(i.currIndex+(s?-n:n))}loadSlideByIndex(t){const i=this.pswp.getLoopedIndex(t);let e=this.getContentByIndex(i);e||(e=Nt(i,this.pswp),e&&this.addToCache(e))}getContentBySlide(t){let i=this.getContentByIndex(t.index);return i||(i=this.pswp.createContentFromData(t.data,t.index),this.addToCache(i)),i.setSlide(t),i}addToCache(t){if(this.removeByIndex(t.index),this._cachedItems.push(t),this._cachedItems.length>this.limit){const i=this._cachedItems.findIndex(e=>!e.isAttached&&!e.hasSlide);i!==-1&&this._cachedItems.splice(i,1)[0].destroy()}}removeByIndex(t){const i=this._cachedItems.findIndex(e=>e.index===t);i!==-1&&this._cachedItems.splice(i,1)}getContentByIndex(t){return this._cachedItems.find(i=>i.index===t)}destroy(){this._cachedItems.forEach(t=>t.destroy()),this._cachedItems=[]}}class kt extends Mt{getNumItems(){var t;let i=0;const e=(t=this.options)===null||t===void 0?void 0:t.dataSource;e&&"length"in e?i=e.length:e&&"gallery"in e&&(e.items||(e.items=this._getGalleryDOMElements(e.gallery)),e.items&&(i=e.items.length));const s=this.dispatch("numItems",{dataSource:e,numItems:i});return this.applyFilters("numItems",s.numItems,e)}createContentFromData(t,i){return new Ft(t,this,i)}getItemData(t){var i;const e=(i=this.options)===null||i===void 0?void 0:i.dataSource;let s={};Array.isArray(e)?s=e[t]:e&&"gallery"in e&&(e.items||(e.items=this._getGalleryDOMElements(e.gallery)),s=e.items[t]);let n=s;n instanceof Element&&(n=this._domElementToItemData(n));const o=this.dispatch("itemData",{itemData:n||{},index:t});return this.applyFilters("itemData",o.itemData,t)}_getGalleryDOMElements(t){var i,e;return(i=this.options)!==null&&i!==void 0&&i.children||(e=this.options)!==null&&e!==void 0&&e.childSelector?K(this.options.children,this.options.childSelector,t)||[]:[t]}_domElementToItemData(t){const i={element:t},e=t.tagName==="A"?t:t.querySelector("a");if(e){i.src=e.dataset.pswpSrc||e.href,e.dataset.pswpSrcset&&(i.srcset=e.dataset.pswpSrcset),i.width=e.dataset.pswpWidth?parseInt(e.dataset.pswpWidth,10):0,i.height=e.dataset.pswpHeight?parseInt(e.dataset.pswpHeight,10):0,i.w=i.width,i.h=i.height,e.dataset.pswpType&&(i.type=e.dataset.pswpType);const n=t.querySelector("img");if(n){var s;i.msrc=n.currentSrc||n.src,i.alt=(s=n.getAttribute("alt"))!==null&&s!==void 0?s:""}(e.dataset.pswpCropped||e.dataset.cropped)&&(i.thumbCropped=!0)}return this.applyFilters("domItemData",i,t,e)}lazyLoadData(t,i){return W(t,this,i)}}const P=.003;class Wt{constructor(t){this.pswp=t,this.isClosed=!0,this.isOpen=!1,this.isClosing=!1,this.isOpening=!1,this._duration=void 0,this._useAnimation=!1,this._croppedZoom=!1,this._animateRootOpacity=!1,this._animateBgOpacity=!1,this._placeholder=void 0,this._opacityElement=void 0,this._cropContainer1=void 0,this._cropContainer2=void 0,this._thumbBounds=void 0,this._prepareOpen=this._prepareOpen.bind(this),t.on("firstZoomPan",this._prepareOpen)}open(){this._prepareOpen(),this._start()}close(){if(this.isClosed||this.isClosing||this.isOpening)return;const t=this.pswp.currSlide;this.isOpen=!1,this.isOpening=!1,this.isClosing=!0,this._duration=this.pswp.options.hideAnimationDuration,t&&t.currZoomLevel*t.width>=this.pswp.options.maxWidthToAnimate&&(this._duration=0),this._applyStartProps(),setTimeout(()=>{this._start()},this._croppedZoom?30:0)}_prepareOpen(){if(this.pswp.off("firstZoomPan",this._prepareOpen),!this.isOpening){const t=this.pswp.currSlide;this.isOpening=!0,this.isClosing=!1,this._duration=this.pswp.options.showAnimationDuration,t&&t.zoomLevels.initial*t.width>=this.pswp.options.maxWidthToAnimate&&(this._duration=0),this._applyStartProps()}}_applyStartProps(){const{pswp:t}=this,i=this.pswp.currSlide,{options:e}=t;if(e.showHideAnimationType==="fade"?(e.showHideOpacity=!0,this._thumbBounds=void 0):e.showHideAnimationType==="none"?(e.showHideOpacity=!1,this._duration=0,this._thumbBounds=void 0):this.isOpening&&t._initialThumbBounds?this._thumbBounds=t._initialThumbBounds:this._thumbBounds=this.pswp.getThumbBounds(),this._placeholder=i==null?void 0:i.getPlaceholderElement(),t.animations.stopAll(),this._useAnimation=!!(this._duration&&this._duration>50),this._animateZoom=!!this._thumbBounds&&(i==null?void 0:i.content.usePlaceholder())&&(!this.isClosing||!t.mainScroll.isShifted()),!this._animateZoom)this._animateRootOpacity=!0,this.isOpening&&i&&(i.zoomAndPanToInitial(),i.applyCurrentZoomPan());else{var s;this._animateRootOpacity=(s=e.showHideOpacity)!==null&&s!==void 0?s:!1}if(this._animateBgOpacity=!this._animateRootOpacity&&this.pswp.options.bgOpacity>P,this._opacityElement=this._animateRootOpacity?t.element:t.bg,!this._useAnimation){this._duration=0,this._animateZoom=!1,this._animateBgOpacity=!1,this._animateRootOpacity=!0,this.isOpening&&(t.element&&(t.element.style.opacity=String(P)),t.applyBgOpacity(1));return}if(this._animateZoom&&this._thumbBounds&&this._thumbBounds.innerRect){var n;this._croppedZoom=!0,this._cropContainer1=this.pswp.container,this._cropContainer2=(n=this.pswp.currSlide)===null||n===void 0?void 0:n.holderElement,t.container&&(t.container.style.overflow="hidden",t.container.style.width=t.viewportSize.x+"px")}else this._croppedZoom=!1;this.isOpening?(this._animateRootOpacity?(t.element&&(t.element.style.opacity=String(P)),t.applyBgOpacity(1)):(this._animateBgOpacity&&t.bg&&(t.bg.style.opacity=String(P)),t.element&&(t.element.style.opacity="1")),this._animateZoom&&(this._setClosedStateZoomPan(),this._placeholder&&(this._placeholder.style.willChange="transform",this._placeholder.style.opacity=String(P)))):this.isClosing&&(t.mainScroll.itemHolders[0]&&(t.mainScroll.itemHolders[0].el.style.display="none"),t.mainScroll.itemHolders[2]&&(t.mainScroll.itemHolders[2].el.style.display="none"),this._croppedZoom&&t.mainScroll.x!==0&&(t.mainScroll.resetPosition(),t.mainScroll.resize()))}_start(){this.isOpening&&this._useAnimation&&this._placeholder&&this._placeholder.tagName==="IMG"?new Promise(t=>{let i=!1,e=!0;q(this._placeholder).finally(()=>{i=!0,e||t(!0)}),setTimeout(()=>{e=!1,i&&t(!0)},50),setTimeout(t,250)}).finally(()=>this._initiate()):this._initiate()}_initiate(){var t,i;(t=this.pswp.element)===null||t===void 0||t.style.setProperty("--pswp-transition-duration",this._duration+"ms"),this.pswp.dispatch(this.isOpening?"openingAnimationStart":"closingAnimationStart"),this.pswp.dispatch("initialZoom"+(this.isOpening?"In":"Out")),(i=this.pswp.element)===null||i===void 0||i.classList.toggle("pswp--ui-visible",this.isOpening),this.isOpening?(this._placeholder&&(this._placeholder.style.opacity="1"),this._animateToOpenState()):this.isClosing&&this._animateToClosedState(),this._useAnimation||this._onAnimationComplete()}_onAnimationComplete(){const{pswp:t}=this;if(this.isOpen=this.isOpening,this.isClosed=this.isClosing,this.isOpening=!1,this.isClosing=!1,t.dispatch(this.isOpen?"openingAnimationEnd":"closingAnimationEnd"),t.dispatch("initialZoom"+(this.isOpen?"InEnd":"OutEnd")),this.isClosed)t.destroy();else if(this.isOpen){var i;this._animateZoom&&t.container&&(t.container.style.overflow="visible",t.container.style.width="100%"),(i=t.currSlide)===null||i===void 0||i.applyCurrentZoomPan()}}_animateToOpenState(){const{pswp:t}=this;this._animateZoom&&(this._croppedZoom&&this._cropContainer1&&this._cropContainer2&&(this._animateTo(this._cropContainer1,"transform","translate3d(0,0,0)"),this._animateTo(this._cropContainer2,"transform","none")),t.currSlide&&(t.currSlide.zoomAndPanToInitial(),this._animateTo(t.currSlide.container,"transform",t.currSlide.getCurrentTransform()))),this._animateBgOpacity&&t.bg&&this._animateTo(t.bg,"opacity",String(t.options.bgOpacity)),this._animateRootOpacity&&t.element&&this._animateTo(t.element,"opacity","1")}_animateToClosedState(){const{pswp:t}=this;this._animateZoom&&this._setClosedStateZoomPan(!0),this._animateBgOpacity&&t.bgOpacity>.01&&t.bg&&this._animateTo(t.bg,"opacity","0"),this._animateRootOpacity&&t.element&&this._animateTo(t.element,"opacity","0")}_setClosedStateZoomPan(t){if(!this._thumbBounds)return;const{pswp:i}=this,{innerRect:e}=this._thumbBounds,{currSlide:s,viewportSize:n}=i;if(this._croppedZoom&&e&&this._cropContainer1&&this._cropContainer2){const o=-n.x+(this._thumbBounds.x-e.x)+e.w,a=-n.y+(this._thumbBounds.y-e.y)+e.h,h=n.x-e.w,l=n.y-e.h;t?(this._animateTo(this._cropContainer1,"transform",b(o,a)),this._animateTo(this._cropContainer2,"transform",b(h,l))):(y(this._cropContainer1,o,a),y(this._cropContainer2,h,l))}s&&(p(s.pan,e||this._thumbBounds),s.currZoomLevel=this._thumbBounds.w/s.width,t?this._animateTo(s.container,"transform",s.getCurrentTransform()):s.applyCurrentZoomPan())}_animateTo(t,i,e){if(!this._duration){t.style[i]=e;return}const{animations:s}=this.pswp,n={duration:this._duration,easing:this.pswp.options.easing,onComplete:()=>{s.activeAnimations.length||this._onAnimationComplete()},target:t};n[i]=e,s.startTransition(n)}}const Vt={allowPanToNext:!0,spacing:.1,loop:!0,pinchToClose:!0,closeOnVerticalDrag:!0,hideAnimationDuration:333,showAnimationDuration:333,zoomAnimationDuration:333,escKey:!0,arrowKeys:!0,trapFocus:!0,returnFocus:!0,maxWidthToAnimate:4e3,clickToCloseNonZoomable:!0,imageClickAction:"zoom-or-close",bgClickAction:"close",tapAction:"toggle-controls",doubleTapAction:"zoom",indexIndicatorSep:" / ",preloaderDelay:2e3,bgOpacity:.8,index:0,errorMsg:"The image cannot be loaded",preload:[1,2],easing:"cubic-bezier(.4,0,.22,1)"};class $t extends kt{constructor(t){super(),this.options=this._prepareOptions(t||{}),this.offset={x:0,y:0},this._prevViewportSize={x:0,y:0},this.viewportSize={x:0,y:0},this.bgOpacity=1,this.currIndex=0,this.potentialIndex=0,this.isOpen=!1,this.isDestroying=!1,this.hasMouse=!1,this._initialItemData={},this._initialThumbBounds=void 0,this.topBar=void 0,this.element=void 0,this.template=void 0,this.container=void 0,this.scrollWrap=void 0,this.currSlide=void 0,this.events=new X,this.animations=new wt,this.mainScroll=new dt(this),this.gestures=new lt(this),this.opener=new Wt(this),this.keyboard=new ut(this),this.contentLoader=new Ht(this)}init(){if(this.isOpen||this.isDestroying)return!1;this.isOpen=!0,this.dispatch("init"),this.dispatch("beforeOpen"),this._createMainStructure();let t="pswp--open";return this.gestures.supportsTouch&&(t+=" pswp--touch"),this.options.mainClass&&(t+=" "+this.options.mainClass),this.element&&(this.element.className+=" "+t),this.currIndex=this.options.index||0,this.potentialIndex=this.currIndex,this.dispatch("firstUpdate"),this.scrollWheel=new Pt(this),(Number.isNaN(this.currIndex)||this.currIndex<0||this.currIndex>=this.getNumItems())&&(this.currIndex=0),this.gestures.supportsTouch||this.mouseDetected(),this.updateSize(),this.offset.y=window.pageYOffset,this._initialItemData=this.getItemData(this.currIndex),this.dispatch("gettingData",{index:this.currIndex,data:this._initialItemData,slide:void 0}),this._initialThumbBounds=this.getThumbBounds(),this.dispatch("initialLayout"),this.on("openingAnimationEnd",()=>{const{itemHolders:i}=this.mainScroll;i[0]&&(i[0].el.style.display="block",this.setContent(i[0],this.currIndex-1)),i[2]&&(i[2].el.style.display="block",this.setContent(i[2],this.currIndex+1)),this.appendHeavy(),this.contentLoader.updateLazy(),this.events.add(window,"resize",this._handlePageResize.bind(this)),this.events.add(window,"scroll",this._updatePageScrollOffset.bind(this)),this.dispatch("bindEvents")}),this.mainScroll.itemHolders[1]&&this.setContent(this.mainScroll.itemHolders[1],this.currIndex),this.dispatch("change"),this.opener.open(),this.dispatch("afterInit"),!0}getLoopedIndex(t){const i=this.getNumItems();return this.options.loop&&(t>i-1&&(t-=i),t<0&&(t+=i)),I(t,0,i-1)}appendHeavy(){this.mainScroll.itemHolders.forEach(t=>{var i;(i=t.slide)===null||i===void 0||i.appendHeavy()})}goTo(t){this.mainScroll.moveIndexBy(this.getLoopedIndex(t)-this.potentialIndex)}next(){this.goTo(this.potentialIndex+1)}prev(){this.goTo(this.potentialIndex-1)}zoomTo(...t){var i;(i=this.currSlide)===null||i===void 0||i.zoomTo(...t)}toggleZoom(){var t;(t=this.currSlide)===null||t===void 0||t.toggleZoom()}close(){!this.opener.isOpen||this.isDestroying||(this.isDestroying=!0,this.dispatch("close"),this.events.removeAll(),this.opener.close())}destroy(){var t;if(!this.isDestroying){this.options.showHideAnimationType="none",this.close();return}this.dispatch("destroy"),this._listeners={},this.scrollWrap&&(this.scrollWrap.ontouchmove=null,this.scrollWrap.ontouchend=null),(t=this.element)===null||t===void 0||t.remove(),this.mainScroll.itemHolders.forEach(i=>{var e;(e=i.slide)===null||e===void 0||e.destroy()}),this.contentLoader.destroy(),this.events.removeAll()}refreshSlideContent(t){this.contentLoader.removeByIndex(t),this.mainScroll.itemHolders.forEach((i,e)=>{var s,n;let o=((s=(n=this.currSlide)===null||n===void 0?void 0:n.index)!==null&&s!==void 0?s:0)-1+e;if(this.canLoop()&&(o=this.getLoopedIndex(o)),o===t&&(this.setContent(i,t,!0),e===1)){var a;this.currSlide=i.slide,(a=i.slide)===null||a===void 0||a.setIsActive(!0)}}),this.dispatch("change")}setContent(t,i,e){if(this.canLoop()&&(i=this.getLoopedIndex(i)),t.slide){if(t.slide.index===i&&!e)return;t.slide.destroy(),t.slide=void 0}if(!this.canLoop()&&(i<0||i>=this.getNumItems()))return;const s=this.getItemData(i);t.slide=new j(s,i,this),i===this.currIndex&&(this.currSlide=t.slide),t.slide.append(t.el)}getViewportCenterPoint(){return{x:this.viewportSize.x/2,y:this.viewportSize.y/2}}updateSize(t){if(this.isDestroying)return;const i=B(this.options,this);!t&&x(i,this._prevViewportSize)||(p(this._prevViewportSize,i),this.dispatch("beforeResize"),p(this.viewportSize,this._prevViewportSize),this._updatePageScrollOffset(),this.dispatch("viewportSize"),this.mainScroll.resize(this.opener.isOpen),!this.hasMouse&&window.matchMedia("(any-hover: hover)").matches&&this.mouseDetected(),this.dispatch("resize"))}applyBgOpacity(t){this.bgOpacity=Math.max(t,0),this.bg&&(this.bg.style.opacity=String(this.bgOpacity*this.options.bgOpacity))}mouseDetected(){if(!this.hasMouse){var t;this.hasMouse=!0,(t=this.element)===null||t===void 0||t.classList.add("pswp--has_mouse")}}_handlePageResize(){this.updateSize(),/iPhone|iPad|iPod/i.test(window.navigator.userAgent)&&setTimeout(()=>{this.updateSize()},500)}_updatePageScrollOffset(){this.setScrollOffset(0,window.pageYOffset)}setScrollOffset(t,i){this.offset.x=t,this.offset.y=i,this.dispatch("updateScrollOffset")}_createMainStructure(){this.element=f("pswp","div"),this.element.setAttribute("tabindex","-1"),this.element.setAttribute("role","dialog"),this.template=this.element,this.bg=f("pswp__bg","div",this.element),this.scrollWrap=f("pswp__scroll-wrap","section",this.element),this.container=f("pswp__container","div",this.scrollWrap),this.scrollWrap.setAttribute("aria-roledescription","carousel"),this.container.setAttribute("aria-live","off"),this.container.setAttribute("id","pswp__items"),this.mainScroll.appendHolders(),this.ui=new zt(this),this.ui.init(),(this.options.appendToEl||document.body).appendChild(this.element)}getThumbBounds(){return Zt(this.currIndex,this.currSlide?this.currSlide.data:this._initialItemData,this)}canLoop(){return this.options.loop&&this.getNumItems()>2}_prepareOptions(t){return window.matchMedia("(prefers-reduced-motion), (update: slow)").matches&&(t.showHideAnimationType="none",t.zoomAnimationDuration=0),{...Vt,...t}}}export{$t as default}; diff --git a/assets/quick-start.html-CDJ4FvQx.js b/assets/quick-start.html-CDJ4FvQx.js new file mode 100644 index 0000000..ce4fc8b --- /dev/null +++ b/assets/quick-start.html-CDJ4FvQx.js @@ -0,0 +1 @@ +import{_ as i,c as s,a,o as t}from"./app-Dq-B72KW.js";const l="/fastapi_best_architecture_docs/images/use_this_template.png",n={};function d(p,e){return t(),s("div",null,e[0]||(e[0]=[a('

    重要

    请一字不落的认真对待此文档,并严格按照本文档的顺序启动项目,否则你有很大几率在启动过程中遇到各种问题

    本地开发

    后端

    1. 准备本地环境

      • Python 3.10+
      • Mysql 8.0+
      • Redis 推荐最新稳定版
    2. 准备 Git 仓库

      相关信息

      提供两种方案,选择其中一种即可

      1. 拉取源代码仓库

        此方式需要你删除拉取项目后根目录下的 .git 文件夹,之后上传到你指定的仓库即可,具体请自行查阅你要上传平台的行为准则

        git clone https://github.com/fastapi-practices/fastapi_best_architecture.git
      2. 拉取模板仓库

        此项目支持创建模板仓库,意味着,你可以直接创建一个非 fork(独立无绑定的关系)的个人账户仓库,如果所示,进入此项目 GitHub 首页, 使用 use this template 按钮创建即可,创建完成之后,使用 git clone 命令拉取你自己的仓库即可

        use_this_template

    3. 安装依赖包

      拉取项目到本地后,进入项目 backend 目录,执行以下命令

      pip install -r requirements.txt
    4. 创建一个数据库:fba,选择 utf8mb4 编码

    5. 启动 Redis

    6. env

      backend 目录中,创建环境变量文件

      touch .env

      将初始化环境变量配置拷贝到环境变量文件中

      cp .env.example .env
    7. 按需修改配置文件 core/conf.py.env

      相关信息

      默认情况下,首次启动不需要修改

    8. 数据库迁移 alembic

      生成迁移文件

      alembic revision --autogenerate

      执行迁移

      alembic upgrade head
    9. 启动 celery worker, beat 和 flower (可选)

      Celery 应用程序

      celery -A app.task.celery worker -l info

      定时任务

      celery -A app.task.celery beat -l info

      web 监控

      celery -A app.task.celery flower --port=8555 --basic-auth=admin:123456
    10. 初始化测试数据

      使用 backend/sql/init_test_data.sql 文件初始化测试数据

    11. 启动 fastapi 服务

      此项目采用 fastapi CLI 应用启动服务,当前,为了方便本地调试,你仍然可以选择使用 pycharm 右键运行 main.py 文件

      帮助

      fastapi --help

      开发模式

      fastapi dev main.py
    12. 打开浏览器访问:http://127.0.0.1:8000/api/v1/docs

    前端

    1. 准备本地环境

      • Nodejs 14.0+
    2. 安装和启动

      警告

      目前它仅作为效果演示,而不是用于生产!

      如果你不想前端依赖安装问题带来困扰,请务必使用 yarn v1.x 版本

      你可以跳转 fastapi_best_architecture_ui 查看详情

    开发流程

    相关信息

    仅供参考,实际以个人为准

    1. 定义数据库模型(model)

    2. 定义数据验证模型(schema)

    3. 定义视图(api)和路由(router)

    4. 编写业务(service)

    5. 编写数据库操作(crud)

    单元测试

    相关信息

    通过 pytest 运行单元测试,项目内仅提供了非常简易的 demo,并不是完整单元测试,如需要,请自行编写

    1. 创建测试数据库 fba_test,选择 utf8mb4 编码

    2. 使用 backend/sql/create_tables.sql 文件创建数据库表

    3. 使用 backend/sql/init_pytest_data.sql 文件初始化用于单元测试的测试数据

    4. 进入 backend 目录,执行单元测试命令

      pytest -vs --disable-warnings
    ',12)]))}const c=i(n,[["render",d],["__file","quick-start.html.vue"]]),h=JSON.parse(`{"path":"/guide/summary/quick-start.html","title":"快速开始","lang":"zh-CN","frontmatter":{"title":"快速开始","createTime":"2024/09/12 20:40:22","head":[["script",{"id":"check-dark-mode"},";(function () {const um= localStorage.getItem('vuepress-theme-appearance') || 'auto';const sm = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;if (um === 'dark' || (um !== 'light' && sm)) {document.documentElement.classList.add('dark');}})();"],["script",{"id":"check-mac-os"},"document.documentElement.classList.toggle('mac', /Mac|iPhone|iPod|iPad/i.test(navigator.platform))"]]},"headers":[{"level":2,"title":"本地开发","slug":"本地开发","link":"#本地开发","children":[{"level":3,"title":"后端","slug":"后端","link":"#后端","children":[]},{"level":3,"title":"前端","slug":"前端","link":"#前端","children":[]}]},{"level":2,"title":"开发流程","slug":"开发流程","link":"#开发流程","children":[]},{"level":2,"title":"单元测试","slug":"单元测试","link":"#单元测试","children":[]}],"readingTime":{"minutes":2.66,"words":799},"git":{"createdTime":1726501588000,"updatedTime":1726990857000,"contributors":[{"name":"Wu Clan","email":"jianhengwu0407@gmail.com","commits":2}]},"filePathRelative":"guide/summary/quick-start.md","categoryList":[{"id":"a0c391","sort":10000,"name":"guide"},{"id":"d6bf05","sort":10003,"name":"summary"}]}`);export{c as comp,h as data}; diff --git a/assets/searchBox-default-CcMwYGlg.js b/assets/searchBox-default-CcMwYGlg.js new file mode 100644 index 0000000..98e1f3c --- /dev/null +++ b/assets/searchBox-default-CcMwYGlg.js @@ -0,0 +1 @@ +const e='{"documentCount":34,"nextId":34,"documentIds":{"0":"/guide/#伪三层架构","1":"/guide/deploy/Docker.html#本机部署","2":"/guide/#特征","3":"/guide/deploy/Docker.html#后端","4":"/guide/reference/code-generation.html#todo","5":"/guide/#内置功能","6":"/guide/reference/cors.html#本地","7":"/guide/deploy/Docker.html#前端","8":"/guide/#项目结构","9":"/guide/reference/cors.html#服务器","10":"/guide/reference/login.html#todo","11":"/guide/deploy/Docker.html#服务器部署","12":"/guide/reference/oauth2.html#todo","13":"/guide/#贡献者","14":"/guide/reference/permission.html#jwt","15":"/guide/deploy/Docker.html#后端-1","16":"/guide/reference/transaction.html#todo","17":"/guide/#许可证","18":"/guide/reference/permission.html#rbac","19":"/guide/summary/fsm.html#todo","20":"/guide/deploy/Docker.html#前端-1","21":"/guide/#相关","22":"/guide/reference/permission.html#角色菜单","23":"/guide/summary/quick-start.html#本地开发","24":"/guide/deploy/Docker.html#注意事项","25":"/guide/summary/why.html#承诺","26":"/guide/reference/permission.html#casbin","27":"/guide/summary/quick-start.html#后端","28":"/guide/summary/why.html#架构","29":"/guide/summary/quick-start.html#前端","30":"/guide/summary/why.html#框架历程","31":"/guide/summary/quick-start.html#开发流程","32":"/guide/summary/why.html#质量与规范","33":"/guide/summary/quick-start.html#单元测试"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,39],"1":[1,1,11],"2":[1,1,39],"3":[1,2,35],"4":[1,1,1],"5":[1,1,37],"6":[1,1,19],"7":[1,2,7],"8":[1,1,46],"9":[1,1,23],"10":[1,1,1],"11":[1,1,9],"12":[1,1,1],"13":[1,1,1],"14":[1,1,2],"15":[1,2,215],"16":[1,1,1],"17":[1,1,4],"18":[1,1,43],"19":[1,1,1],"20":[1,2,229],"21":[1,1,10],"22":[1,2,2],"23":[1,1,1],"24":[1,1,25],"25":[1,1,11],"26":[1,2,2],"27":[1,2,137],"28":[1,1,6],"29":[1,2,21],"30":[1,1,2],"31":[1,1,16],"32":[1,1,2],"33":[1,1,31]},"averageFieldLength":[1,1.2352941176470589,30.294117647058822],"storedFields":{"0":{"title":"伪三层架构","titles":[null]},"1":{"title":"本机部署","titles":[null]},"2":{"title":"特征","titles":[null]},"3":{"title":"后端","titles":[null,"本机部署"]},"4":{"title":"TODO","titles":[null]},"5":{"title":"内置功能","titles":[null]},"6":{"title":"本地","titles":[null]},"7":{"title":"前端","titles":[null,"本机部署"]},"8":{"title":"项目结构","titles":[null]},"9":{"title":"服务器","titles":[null]},"10":{"title":"TODO","titles":[null]},"11":{"title":"服务器部署","titles":[null]},"12":{"title":"TODO","titles":[null]},"13":{"title":"贡献者","titles":[null]},"14":{"title":"JWT","titles":[null]},"15":{"title":"后端","titles":[null,"服务器部署"]},"16":{"title":"TODO","titles":[null]},"17":{"title":"许可证","titles":[null]},"18":{"title":"RBAC","titles":[null]},"19":{"title":"TODO","titles":[]},"20":{"title":"前端","titles":[null,"服务器部署"]},"21":{"title":"相关","titles":[null]},"22":{"title":"角色菜单","titles":[null,"RBAC"]},"23":{"title":"本地开发","titles":[null]},"24":{"title":"注意事项","titles":[null]},"25":{"title":"承诺","titles":[null]},"26":{"title":"Casbin","titles":[null,"RBAC"]},"27":{"title":"后端","titles":[null,"本地开发"]},"28":{"title":"架构","titles":[null]},"29":{"title":"前端","titles":[null,"本地开发"]},"30":{"title":"框架历程","titles":[null]},"31":{"title":"开发流程","titles":[null]},"32":{"title":"质量与规范","titles":[null]},"33":{"title":"单元测试","titles":[null]}},"dirtCount":0,"index":[["如需要",{"2":{"33":1}}],["如果所示",{"2":{"27":1}}],["如果已通过后端",{"2":{"20":1}}],["如果服务器内存小于",{"2":{"15":1}}],["如果你不想前端依赖安装问题带来困扰",{"2":{"29":1}}],["如果你不选择单独构建",{"2":{"15":1}}],["如果你对此感兴趣",{"2":{"18":1}}],["如果你直接将",{"2":{"15":1,"20":1}}],["如果你选择单独构建",{"2":{"15":1}}],["如果你选择使用",{"2":{"15":1}}],["如果你没有前端需求",{"2":{"15":1}}],["如果你没有相关经验",{"2":{"11":1}}],["如果使用",{"2":{"15":2}}],["如果您不喜欢这种模式",{"2":{"0":1}}],["运行单元测试",{"2":{"33":1}}],["质量与规范",{"0":{"32":1}}],["定义视图",{"2":{"31":1}}],["定义数据验证模型",{"2":{"31":1}}],["定义数据库模型",{"2":{"31":1}}],["定时任务",{"2":{"5":1,"27":1}}],["实际以个人为准",{"2":{"31":1}}],["仅供参考",{"2":{"31":1}}],["框架历程",{"0":{"30":1}}],["查看详情",{"2":{"29":1}}],["版本",{"2":{"29":1}}],["yarn",{"2":{"29":1}}],["yml",{"2":{"15":1}}],["目前它仅作为效果演示",{"2":{"29":1}}],["目录中",{"2":{"27":1}}],["目录",{"2":{"3":1,"15":1,"20":1,"27":1,"33":1}}],["安装和启动",{"2":{"29":1}}],["安装依赖包",{"2":{"27":1}}],["独一无二",{"2":{"28":1}}],["独立无绑定的关系",{"2":{"27":1}}],["架构",{"0":{"28":1}}],["架构作为常规设计模式",{"2":{"0":1}}],["帮助",{"2":{"27":1}}],["右键运行",{"2":{"27":1}}],["当前",{"2":{"27":1}}],["初始化测试数据",{"2":{"27":1}}],["监控",{"2":{"27":1}}],["生成迁移文件",{"2":{"27":1}}],["首次启动不需要修改",{"2":{"27":1}}],["首页",{"2":{"27":1}}],["默认情况下",{"2":{"27":1}}],["编写数据库操作",{"2":{"31":1}}],["编写业务",{"2":{"31":1}}],["编码",{"2":{"27":1,"33":1}}],["编辑",{"2":{"20":1}}],["选择",{"2":{"27":1,"33":1}}],["选择其中一种即可",{"2":{"27":1}}],["执行单元测试命令",{"2":{"33":1}}],["执行迁移",{"2":{"27":1}}],["执行以下命令",{"2":{"27":1}}],["执行一键启动命令",{"2":{"3":1,"15":1}}],["使用",{"2":{"27":3,"33":2}}],["意味着",{"2":{"27":1}}],["意味着你的所有代码已经准备就绪",{"2":{"1":1}}],["具体请自行查阅你要上传平台的行为准则",{"2":{"27":1}}],["具体方式请根据个人自行决定",{"2":{"15":1}}],["之后上传到你指定的仓库即可",{"2":{"27":1}}],["仓库",{"2":{"27":1}}],["仓库内的",{"2":{"15":1}}],["准备",{"2":{"27":1}}],["准备本地环境",{"2":{"27":1,"29":1}}],["推荐最新稳定版",{"2":{"27":1}}],["无任何强制收费行为",{"2":{"25":1}}],["协议",{"2":{"25":1}}],["永久免授权",{"2":{"25":1}}],["永久免费",{"2":{"25":1}}],["永久",{"2":{"25":1}}],["承诺",{"0":{"25":1}}],["网络和构建缓存",{"2":{"24":1}}],["清理所有悬空的镜像和卷",{"2":{"24":1}}],["清理所有未使用的镜像",{"2":{"24":1}}],["清理未使用的容器",{"2":{"24":1}}],["清理未使用的镜像",{"2":{"24":1}}],["每次执行",{"2":{"24":1}}],["命令拉取你自己的仓库即可",{"2":{"27":1}}],["命令",{"2":{"24":1}}],["命令执行期间遇到镜像拉取问题请自行",{"2":{"3":1,"15":1}}],["对此开源项目的杰出贡献",{"2":{"21":1}}],["对于前后端本地开发或联调",{"2":{"7":1}}],["感谢",{"2":{"21":1}}],["驱动",{"2":{"21":1}}],["特别鸣谢",{"2":{"21":1}}],["特征",{"0":{"2":1}}],["相关",{"0":{"21":1}}],["相关信息",{"2":{"3":1,"15":1,"27":2,"31":1,"33":1}}],["启动",{"2":{"20":1,"27":3}}],["创建测试数据库",{"2":{"33":1}}],["创建一个数据库",{"2":{"27":1}}],["创建完成之后",{"2":{"27":1}}],["创建网络",{"2":{"20":1}}],["创建环境变量文件",{"2":{"3":1,"15":1,"27":1}}],["构建",{"2":{"20":1}}],["构建并启动容器",{"2":{"20":1}}],["构建前端项目",{"2":{"20":1}}],["注意事项",{"0":{"24":1}}],["注意",{"2":{"20":1,"24":1}}],["^",{"2":{"20":1}}],["应该与",{"2":{"20":2}}],["应用启动服务",{"2":{"27":1}}],["应用程序",{"2":{"27":1}}],["应用",{"2":{"8":1}}],["keepalive",{"2":{"20":1}}],["key",{"2":{"15":6,"20":10}}],["此项目采用",{"2":{"27":1}}],["此项目支持创建模板仓库",{"2":{"27":1}}],["此方式需要你删除拉取项目后根目录下的",{"2":{"27":1}}],["此命令都会构建容器",{"2":{"24":1}}],["此步骤和后面的剩余步骤直接跳过即可",{"2":{"20":1}}],["此前端项目仅作为效果演示",{"2":{"20":1}}],["此教程以",{"2":{"11":1}}],["此教程不提供前端本机部署方案",{"2":{"7":1}}],["此教程仅提供",{"2":{"1":1}}],["半小时彻底弄懂casbin基础模型",{"2":{"18":1}}],["另外",{"2":{"18":1}}],["另外一种是",{"2":{"18":1}}],["官网",{"2":{"18":1}}],["并不是完整单元测试",{"2":{"33":1}}],["并将原容器自动进行本地备份保留",{"2":{"24":1}}],["并且",{"2":{"18":1}}],["并使用",{"2":{"15":1}}],["开发流程",{"0":{"31":1}}],["开发人员可轻松驾驭的独特架构",{"2":{"28":1}}],["开发模式",{"2":{"27":1}}],["开发中",{"2":{"0":1}}],["开源项目中可能是极为罕见的",{"2":{"18":1}}],["同时引入了",{"2":{"18":1}}],["的个人账户仓库",{"2":{"27":1}}],["的开源项目",{"2":{"18":1}}],["的全局异步设计",{"2":{"2":1}}],["等优秀",{"2":{"18":1}}],["等待命令执行完成",{"2":{"3":1,"15":1}}],["语言中应用更加广泛",{"2":{"18":1}}],["语法",{"2":{"2":1}}],["这会导致硬盘空间迅速递减",{"2":{"24":1}}],["这两个视频教程",{"2":{"18":1}}],["这种设计在",{"2":{"18":1}}],["这与",{"2":{"15":1}}],["性能也很出色",{"2":{"18":1}}],["我们唯一的收入来源仅为赞助",{"2":{"25":1}}],["我们提供此前端部署教程的目的是为你提供前端",{"2":{"20":1}}],["我们在最初架构设计时",{"2":{"18":1}}],["我们并没有传统的多应用程序结构",{"2":{"0":1}}],["我认为它很好",{"2":{"18":1}}],["控制规则",{"2":{"18":1}}],["它们将全部用于基础设施建设",{"2":{"25":1}}],["它的学习成本相对较高",{"2":{"18":1}}],["它在众多",{"2":{"18":1}}],["它非常灵活",{"2":{"18":1}}],["它可以设置按钮级别的控制规则",{"2":{"18":1}}],["可选",{"2":{"27":1}}],["可能起到画龙点睛之笔",{"2":{"18":1}}],["可能更加常见",{"2":{"18":1}}],["可以通过",{"2":{"18":1}}],["可以通过模型定义多种",{"2":{"18":1}}],["可以用于生产",{"2":{"1":1}}],["可以使用模板对其进行随意改造",{"2":{"0":1}}],["第一种",{"2":{"18":1}}],["提供两种方案",{"2":{"27":1}}],["提供了两种解决方案",{"2":{"18":1}}],["提示",{"2":{"11":1}}],["许可证的条款进行许可",{"2":{"17":1}}],["许可证",{"0":{"17":1}}],["help",{"2":{"27":1}}],["head",{"2":{"27":1}}],["header",{"2":{"20":4}}],["host",{"2":{"20":2}}],["hostname",{"2":{"15":1}}],["html",{"2":{"20":1}}],["httpd",{"2":{"20":1}}],["https",{"2":{"9":3,"11":1,"15":3,"20":2,"27":1}}],["http",{"2":{"3":1,"6":1,"9":1,"20":4,"27":1}}],["high",{"2":{"20":1}}],["挂载到容器内",{"2":{"15":2,"20":4}}],["挂载到容器内的证书文件路径>配置",{"2":{"15":1,"20":1}}],["xml",{"2":{"20":1}}],["x",{"2":{"20":6,"29":1}}],["xxx",{"2":{"15":4,"20":12}}],["x3c",{"2":{"15":1,"20":1}}],["自主命名",{"2":{"28":1}}],["自主研发",{"2":{"28":1}}],["自定义比较方法",{"2":{"18":1}}],["自行修改",{"2":{"15":4,"20":6}}],["自动生成在线交互式",{"2":{"5":1}}],["自动化任务",{"2":{"5":1}}],["直接将它们注释或删除即可",{"2":{"15":1,"20":1}}],["则无需挂载证书文件",{"2":{"15":1,"20":1}}],["到了",{"2":{"15":1,"20":1}}],["证书文件路径配置应该与",{"2":{"20":1}}],["证书文件路径配置一致",{"2":{"15":1,"20":1}}],["证书文件的路径",{"2":{"15":4,"20":6}}],["证书文件",{"2":{"15":1,"20":1}}],["与",{"2":{"15":1,"20":1}}],["需要打开此配置项并确保",{"2":{"15":1,"20":1}}],["通过",{"2":{"15":1,"20":1,"33":1}}],["443",{"2":{"15":2,"20":3}}],["4gb",{"2":{"15":1}}],["根据",{"2":{"15":1}}],["务必注释或删除此容器脚本",{"2":{"15":1}}],["务必在执行下面步骤前根据前端部署教程更新前端配置文件",{"2":{"15":1}}],["参考了",{"2":{"18":1}}],["参考下方前端部署教程",{"2":{"15":1}}],["参数风格",{"2":{"2":1}}],["项目内仅提供了非常简易的",{"2":{"33":1}}],["项目存放目录修改此路径",{"2":{"15":1}}],["项目单独构建这个容器",{"2":{"15":1}}],["项目结构",{"0":{"8":1}}],["建议进入",{"2":{"15":1}}],["建议修改",{"2":{"15":1}}],["小于四个内核",{"2":{"15":1}}],["小组",{"2":{"5":1}}],["example",{"2":{"27":1}}],["external",{"2":{"20":2}}],["ecdh",{"2":{"20":1}}],["ecdhe",{"2":{"20":2}}],["events",{"2":{"20":1}}],["error",{"2":{"20":2}}],["etc",{"2":{"15":5,"20":9}}],["en",{"2":{"20":1}}],["english",{"2":{"20":1}}],["environment",{"2":{"15":4}}],["env",{"2":{"3":7,"15":8,"20":4,"27":5}}],["entity",{"2":{"0":1}}],["容器内",{"2":{"15":1,"20":1}}],["容器",{"2":{"15":1,"24":1}}],["容器脚本",{"2":{"15":1}}],["冲突",{"2":{"15":1}}],["7",{"2":{"15":2}}],["6",{"2":{"15":1}}],["6379",{"2":{"15":3}}],["$host$1",{"2":{"20":1}}],["$http",{"2":{"20":1}}],["$scheme",{"2":{"20":1}}],["$proxy",{"2":{"20":1}}],["$remote",{"2":{"20":1}}],["$uri",{"2":{"20":2}}],["$",{"2":{"15":2,"20":1}}],["8555",{"2":{"15":2}}],["8001",{"2":{"20":1}}],["8000",{"2":{"3":1,"15":1,"27":1}}],["80",{"2":{"15":3,"20":5}}],["8",{"2":{"15":1,"27":1}}],["warnings",{"2":{"33":1}}],["wait",{"2":{"15":2}}],["worker",{"2":{"15":1,"20":2,"27":2}}],["www",{"2":{"15":2,"20":3}}],["web",{"2":{"0":2,"18":1,"27":1}}],["|",{"2":{"15":2}}],["octet",{"2":{"20":1}}],["org",{"2":{"20":2}}],["origins",{"2":{"6":2,"9":3}}],["official",{"2":{"20":2}}],["off",{"2":{"15":1,"20":1}}],["on",{"2":{"15":4,"20":5}}],["ip",{"2":{"20":1}}],["ipam",{"2":{"15":1}}],["init",{"2":{"27":1,"33":1}}],["info",{"2":{"27":2}}],["information",{"2":{"20":1}}],["install",{"2":{"27":1}}],["index",{"2":{"20":1}}],["include",{"2":{"20":2}}],["it",{"2":{"15":2}}],["image",{"2":{"15":7,"20":4,"24":1}}],["impl",{"2":{"0":1}}],["nodejs",{"2":{"29":1}}],["null",{"2":{"20":1}}],["nginx",{"2":{"15":10,"20":12}}],["native",{"2":{"15":1}}],["names=1",{"2":{"15":1}}],["name",{"2":{"15":12,"20":4}}],["network",{"2":{"15":9,"20":4}}],["networks",{"2":{"15":8,"20":2}}],["files",{"2":{"20":1}}],["flower",{"2":{"15":1,"27":2}}],["fork",{"2":{"27":1}}],["forwarded",{"2":{"20":3}}],["for",{"2":{"15":2,"20":3}}],["fba",{"2":{"15":62,"20":14,"27":1,"33":1}}],["fastapi",{"2":{"0":1,"2":1,"15":2,"27":6,"29":1}}],["300s",{"2":{"20":3}}],["300",{"2":{"15":2,"20":1}}],["3306",{"2":{"15":3}}],["3",{"2":{"15":2,"27":1}}],["详情",{"2":{"15":1,"20":2}}],["而不是用于生产",{"2":{"20":1,"29":1}}],["而只需调用后端",{"2":{"15":1}}],["而本机部署则是为了能够快捷的提供本地",{"2":{"1":1}}],["更新",{"2":{"20":1}}],["更新脚本文件",{"2":{"15":1,"20":1}}],["更安全",{"2":{"15":1}}],["为了方便本地调试",{"2":{"27":1}}],["为域名地址",{"2":{"20":1}}],["为",{"2":{"15":1}}],["为例",{"2":{"11":1}}],["你仍然可以选择使用",{"2":{"27":1}}],["你可以跳转",{"2":{"29":1}}],["你可以直接创建一个非",{"2":{"27":1}}],["你可以查看",{"2":{"15":1}}],["你在服务器存放",{"2":{"15":2,"20":2}}],["你应该注释或删除",{"2":{"15":1}}],["你不应该进行部署",{"2":{"7":1}}],["拉取项目到本地后",{"2":{"27":1}}],["拉取模板仓库",{"2":{"27":1}}],["拉取源代码仓库",{"2":{"27":1}}],["拉取教程",{"2":{"15":1}}],["拉取代码到服务器",{"2":{"15":1,"20":1}}],["方式拉取代码",{"2":{"15":1}}],["方式",{"2":{"15":3}}],["将代码拉取到服务器通常采用",{"2":{"15":1}}],["将初始化环境变量配置拷贝到环境变量文件中",{"2":{"3":1,"15":1,"27":1}}],["贡献者",{"0":{"13":1}}],["进行学习",{"2":{"18":1}}],["进行部署时",{"2":{"15":1,"20":1}}],["进行了解",{"2":{"11":1}}],["进入项目",{"2":{"27":1}}],["进入此项目",{"2":{"27":1}}],["进入",{"2":{"3":1,"6":1,"9":1,"15":1,"20":1,"33":1}}],["请务必使用",{"2":{"29":1}}],["请不要频繁使用",{"2":{"24":1}}],["请记住我们的声明",{"2":{"20":1}}],["请查看",{"2":{"15":1}}],["请自行编写",{"2":{"33":1}}],["请自行",{"2":{"11":1,"15":1}}],["请转至文档",{"2":{"7":1}}],["域名",{"2":{"9":1,"25":1}}],["端口号",{"2":{"9":1}}],["非",{"2":{"9":1}}],["工具包",{"2":{"8":1}}],["工作流程",{"2":{"0":1}}],["utf8mb4",{"2":{"27":1,"33":1}}],["utils",{"2":{"8":1}}],["use",{"2":{"27":1}}],["user=guest",{"2":{"15":1}}],["usr",{"2":{"20":2}}],["url",{"2":{"20":1}}],["ui",{"2":{"15":9,"20":6,"29":1}}],["upgrade",{"2":{"27":1}}],["up",{"2":{"3":1,"15":1,"24":1}}],["模版文件",{"2":{"8":1}}],["模型",{"2":{"0":1,"8":1}}],["静态文件",{"2":{"8":1}}],["脚本",{"2":{"8":1}}],["日志",{"2":{"8":1}}],["核心配置",{"2":{"8":1}}],["公共资源",{"2":{"8":1}}],["公司",{"2":{"5":1}}],["任务",{"2":{"8":1}}],["gcm",{"2":{"20":1}}],["github",{"2":{"27":2}}],["git",{"2":{"27":5}}],["gif",{"2":{"20":1}}],["gin",{"2":{"18":1}}],["gzip",{"2":{"20":4}}],["go",{"2":{"18":2}}],["google",{"2":{"3":1,"11":1,"15":2}}],["g",{"2":{"15":1,"20":1}}],["general",{"2":{"15":1}}],["generator",{"2":{"8":1}}],["测试",{"2":{"8":1}}],["txt",{"2":{"27":1}}],["this",{"2":{"27":1}}],["theme",{"2":{"21":1}}],["true",{"2":{"20":2}}],["try",{"2":{"20":1}}],["tlsv1",{"2":{"20":3}}],["timeout",{"2":{"20":4}}],["type",{"2":{"20":1}}],["types",{"2":{"20":2}}],["tables",{"2":{"33":1}}],["table",{"2":{"15":1}}],["task",{"2":{"8":1,"27":3}}],["tz=asia",{"2":{"15":1}}],["tz",{"2":{"15":1}}],["t",{"2":{"15":2}}],["test",{"2":{"27":1,"33":1}}],["tests",{"2":{"8":1}}],["template",{"2":{"27":1}}],["templates",{"2":{"8":1}}],["text",{"2":{"20":3}}],["todo",{"0":{"4":1,"10":1,"12":1,"16":1,"19":1},"2":{"14":1,"22":1,"26":1,"30":1,"32":1}}],["touch",{"2":{"3":1,"15":1,"27":1}}],["接口",{"2":{"8":1}}],["接口文档",{"2":{"5":2}}],["前端",{"0":{"7":1,"20":1,"29":1}}],["前端访问地址",{"2":{"6":1,"9":2}}],["末尾不要带",{"2":{"6":1,"9":2}}],["5m",{"2":{"20":2}}],["5672",{"2":{"15":3}}],["5173",{"2":{"6":1}}],["593",{"2":{"2":1}}],["l",{"2":{"27":2}}],["level",{"2":{"20":1}}],["lib",{"2":{"15":3}}],["listen",{"2":{"20":4}}],["list",{"2":{"6":1,"9":2}}],["latest",{"2":{"15":3,"20":1}}],["location",{"2":{"20":3}}],["local",{"2":{"15":4,"20":4}}],["localhost",{"2":{"6":1}}],["load",{"2":{"20":1}}],["lower",{"2":{"15":1}}],["log",{"2":{"8":1,"15":2,"20":3}}],["=",{"2":{"6":1,"9":2}}],["配置即可",{"2":{"6":1,"9":1}}],["配置系统菜单",{"2":{"5":1}}],["配置系统组织机构",{"2":{"5":1}}],["修改",{"2":{"6":1,"9":1,"20":1}}],["文件初始化用于单元测试的测试数据",{"2":{"33":1}}],["文件初始化测试数据",{"2":{"27":1}}],["文件创建数据库表",{"2":{"33":1}}],["文件夹",{"2":{"27":1}}],["文件默认为后端独立部署",{"2":{"15":1}}],["文件",{"2":{"6":1,"9":1,"20":1,"27":1}}],["本文档由",{"2":{"21":1}}],["本项目由",{"2":{"17":1}}],["本地开发",{"0":{"23":1},"1":{"27":1,"29":1},"2":{"7":1}}],["本地",{"0":{"6":1}}],["本机部署教程",{"2":{"1":1}}],["本机部署",{"0":{"1":1},"1":{"3":1,"7":1},"2":{"15":1}}],["支持函数调用",{"2":{"5":1}}],["支持预览",{"2":{"5":1}}],["登录日志",{"2":{"5":1}}],["登录认证",{"2":{"5":1}}],["图形验证码后台认证登录",{"2":{"5":1}}],["系统正常和异常操作的日志记录与查询",{"2":{"5":1}}],["系统用户角色管理",{"2":{"5":1}}],["操作日志",{"2":{"5":1}}],["写入及下载",{"2":{"5":1}}],["代码生成",{"2":{"5":1,"8":1}}],["维护系统内部常用固定数据或参数",{"2":{"5":1}}],["字典管理",{"2":{"5":1}}],["角色路由权限分配",{"2":{"5":1}}],["角色管理",{"2":{"5":1}}],["角色菜单权限分配",{"2":{"5":1}}],["角色菜单",{"0":{"22":1},"2":{"2":1,"18":1}}],["按钮创建即可",{"2":{"27":1}}],["按钮权限标识",{"2":{"5":1}}],["按需修改配置文件",{"2":{"3":1,"15":1,"27":1}}],["用户正常和异常登录的日志记录与查询",{"2":{"5":1}}],["用户菜单",{"2":{"5":1}}],["用户管理",{"2":{"5":1}}],["菜单管理",{"2":{"5":1}}],["部门",{"2":{"5":1}}],["部门管理",{"2":{"5":1}}],["部署解决方案",{"2":{"20":1}}],["部署",{"2":{"1":1,"2":1,"9":2}}],["权限分配",{"2":{"5":1}}],["内置功能",{"0":{"5":1}}],["14",{"2":{"29":1}}],["15672",{"2":{"15":2}}],["12",{"2":{"15":1}}],["123456",{"2":{"15":1,"27":1}}],["127",{"2":{"3":1,"20":1,"27":1}}],["172",{"2":{"15":1}}],["10+",{"2":{"27":1}}],["10m",{"2":{"20":1}}],["1024",{"2":{"20":1}}],["10",{"2":{"15":3}}],["1",{"2":{"3":1,"20":2,"27":1}}],["打开浏览器访问",{"2":{"3":1,"27":1}}],["buffer",{"2":{"20":1}}],["build",{"2":{"3":1,"15":4,"20":2,"24":1}}],["body",{"2":{"20":3}}],["beat",{"2":{"15":1,"27":2}}],["best",{"2":{"0":1,"15":1,"27":1,"29":1}}],["basic",{"2":{"27":1}}],["base",{"2":{"20":1}}],["bash",{"2":{"15":2}}],["backend",{"2":{"3":4,"8":1,"15":12,"20":2,"27":3,"33":3}}],["bridge",{"2":{"15":1}}],["后端专用",{"2":{"15":1}}],["后端步骤2",{"2":{"15":1}}],["后端代码自动生成",{"2":{"5":1}}],["后端",{"0":{"3":1,"15":1,"27":1},"2":{"8":1}}],["单元测试",{"0":{"33":1},"2":{"2":1}}],["中的配置保持一致",{"2":{"20":2}}],["中的保持一致",{"2":{"20":1}}],["中的",{"2":{"15":2,"20":2}}],["中间件",{"2":{"8":1}}],["中间件白名单认证",{"2":{"2":1}}],["中也很常见",{"2":{"0":1}}],["jpeg",{"2":{"20":1}}],["jwt",{"0":{"14":1},"2":{"2":1}}],["javascript",{"2":{"20":3}}],["java",{"2":{"0":1}}],["异步任务",{"2":{"2":1,"5":1}}],["访问控制模型",{"2":{"2":2}}],["r",{"2":{"27":1}}],["rc4",{"2":{"20":1}}],["rsa",{"2":{"20":1}}],["run",{"2":{"20":2}}],["ru",{"2":{"20":1}}],["russian",{"2":{"20":1}}],["router",{"2":{"31":1}}],["ro",{"2":{"15":1}}],["root",{"2":{"15":2,"20":1}}],["rabbitmq",{"2":{"15":12}}],["revision",{"2":{"27":1}}],["requirements",{"2":{"27":1}}],["rewrite",{"2":{"20":1}}],["read",{"2":{"20":1}}],["readme",{"2":{"20":1}}],["real",{"2":{"20":1}}],["restart",{"2":{"15":11,"20":1}}],["restful",{"2":{"2":1}}],["redis",{"2":{"15":10,"27":2}}],["rbac",{"0":{"18":1},"1":{"22":1,"26":1},"2":{"2":2,"18":1}}],["不同分支",{"2":{"2":1}}],["vs",{"2":{"33":1}}],["vite",{"2":{"20":1}}],["vuepress",{"2":{"21":1}}],["vue",{"2":{"18":1}}],["vary",{"2":{"20":1}}],["var",{"2":{"15":5,"20":1}}],["volumes",{"2":{"15":7,"20":2,"24":1}}],["version",{"2":{"15":1}}],["v2",{"2":{"2":1}}],["v1",{"2":{"2":1,"3":1,"20":1,"27":1,"29":1}}],["和路由",{"2":{"31":1}}],["和",{"2":{"2":1,"3":1,"15":1,"27":2}}],["0+",{"2":{"27":1,"29":1}}],["0",{"2":{"2":1,"3":2,"15":2,"20":2,"27":2}}],["29",{"2":{"15":1}}],["24",{"2":{"15":1}}],["2",{"2":{"2":1,"15":1,"20":2}}],["规范",{"2":{"2":1}}],["遵循",{"2":{"2":1}}],["pip",{"2":{"27":1}}],["pid",{"2":{"20":2}}],["practices",{"2":{"27":1}}],["prune",{"2":{"24":4}}],["prefer",{"2":{"20":1}}],["proto",{"2":{"20":1}}],["protocols",{"2":{"20":1}}],["proxy",{"2":{"20":8}}],["processes",{"2":{"20":1}}],["production",{"2":{"20":3}}],["pro",{"2":{"15":1}}],["png",{"2":{"20":1}}],["php",{"2":{"20":1}}],["plume",{"2":{"21":1}}],["plugin=mysql",{"2":{"15":1}}],["plain",{"2":{"20":1}}],["pass",{"2":{"20":1}}],["pass=guest",{"2":{"15":1}}],["password",{"2":{"15":2}}],["path",{"2":{"15":4,"20":4}}],["pengzhanbo",{"2":{"21":1}}],["permanent",{"2":{"20":1}}],["pem",{"2":{"15":6,"20":9}}],["pep",{"2":{"2":1}}],["port=8555",{"2":{"27":1}}],["port",{"2":{"15":2}}],["ports",{"2":{"15":6,"20":1}}],["p",{"2":{"15":2}}],["pycharm",{"2":{"27":1}}],["py",{"2":{"3":1,"6":1,"9":1,"15":1,"27":3}}],["pytest",{"2":{"2":1,"33":3}}],["python",{"2":{"0":2,"18":1,"27":1}}],["pydantic",{"2":{"2":1}}],["全局自定义时区时间",{"2":{"2":1}}],["全局",{"2":{"2":2}}],["所以",{"2":{"1":1}}],["所以这里我们称之为伪三层架构",{"2":{"0":1}}],["服务器ip",{"2":{"9":1}}],["服务器",{"0":{"9":1},"2":{"25":1}}],["服务器部署",{"0":{"11":1},"1":{"15":1,"20":1},"2":{"8":1}}],["服务器硬件设备信息与状态",{"2":{"5":1}}],["服务监控",{"2":{"5":1}}],["服务",{"2":{"1":1,"8":1,"27":1}}],["警告",{"2":{"1":1,"7":1,"20":1,"29":1}}],["cli",{"2":{"27":1}}],["client",{"2":{"20":3}}],["clone",{"2":{"27":2}}],["create",{"2":{"20":1,"33":1}}],["crud",{"2":{"0":1,"8":2,"31":1}}],["certificate",{"2":{"20":2}}],["celery",{"2":{"2":1,"15":8,"27":8}}],["css",{"2":{"20":1}}],["case",{"2":{"15":1}}],["casbin的代码使用",{"2":{"18":1}}],["casbin",{"0":{"26":1},"2":{"2":1,"18":3}}],["ciphers",{"2":{"20":2}}],["ci",{"2":{"15":1}}],["character",{"2":{"15":1}}],["c",{"2":{"15":4}}],["cpu",{"2":{"15":1}}],["cp",{"2":{"3":1,"15":2,"20":1,"27":1}}],["collation",{"2":{"15":1}}],["com",{"2":{"20":4,"27":1}}],["comp",{"2":{"20":1}}],["compose",{"2":{"2":1,"3":2,"15":3,"20":4,"24":1}}],["command",{"2":{"15":4,"20":1}}],["common",{"2":{"8":1}}],["cors",{"2":{"6":2,"9":3}}],["core",{"2":{"3":1,"6":1,"8":1,"9":1,"15":1,"27":1}}],["connect",{"2":{"20":1}}],["connections",{"2":{"20":1}}],["container",{"2":{"15":7,"20":1,"24":1}}],["context",{"2":{"15":3,"20":1}}],["controller",{"2":{"0":1}}],["configuration",{"2":{"20":1}}],["config",{"2":{"15":1}}],["conf",{"2":{"3":1,"6":1,"9":1,"15":7,"20":4,"27":1}}],["md5",{"2":{"20":1}}],["main",{"2":{"27":2}}],["max",{"2":{"20":2}}],["map",{"2":{"15":2}}],["mapper",{"2":{"0":1}}],["modules",{"2":{"20":2}}],["model",{"2":{"0":2,"8":1,"31":1}}],["more",{"2":{"20":1}}],["mime",{"2":{"20":1}}],["mit",{"2":{"17":1,"25":1}}],["middleware",{"2":{"8":1}}],["mkdir",{"2":{"15":2}}],["mysql",{"2":{"15":12,"27":1}}],["mvc",{"2":{"0":1}}],["数据库连接",{"2":{"8":1}}],["数据库迁移",{"2":{"8":1,"27":1}}],["数据访问",{"2":{"0":1}}],["数据传输",{"2":{"0":1,"8":1}}],["+",{"2":{"0":1,"2":1}}],["业务逻辑",{"2":{"0":1}}],["system",{"2":{"24":2}}],["size",{"2":{"20":3}}],["sha256",{"2":{"20":1}}],["share",{"2":{"20":2}}],["shanghai",{"2":{"15":2}}],["ssl",{"2":{"15":14,"20":27}}],["ssh",{"2":{"15":2}}],["send",{"2":{"20":1}}],["sendfile",{"2":{"20":1}}],["see",{"2":{"20":2}}],["set",{"2":{"15":1,"20":4}}],["server=utf8mb4",{"2":{"15":2}}],["server",{"2":{"3":2,"15":10,"20":11}}],["services",{"2":{"15":1,"20":1}}],["service",{"2":{"0":2,"8":1,"31":1}}],["supervisorctl",{"2":{"15":4}}],["supervisord",{"2":{"15":2}}],["supervisor",{"2":{"15":4}}],["subnet",{"2":{"15":1}}],["s",{"2":{"15":3}}],["static",{"2":{"8":1,"15":8,"20":5}}],["stream",{"2":{"20":1}}],["str",{"2":{"6":1,"9":2}}],["sql文件",{"2":{"8":1}}],["sql",{"2":{"8":1,"27":2,"33":4}}],["sqlalchemy",{"2":{"2":1}}],["scripts",{"2":{"8":1}}],["schema",{"2":{"0":1,"8":1,"31":1}}],["springboot",{"2":{"0":1}}],["disable",{"2":{"33":1}}],["dynamic",{"2":{"20":2}}],["demo",{"2":{"33":1}}],["dev",{"2":{"27":1}}],["depends",{"2":{"15":4}}],["deploy",{"2":{"3":1,"8":1,"15":3,"20":1}}],["default",{"2":{"15":4,"20":3}}],["driver",{"2":{"15":2}}],["data",{"2":{"27":1,"33":1}}],["database",{"2":{"8":1,"15":1}}],["daemon",{"2":{"15":1,"20":1}}],["dao",{"2":{"0":1}}],["doc",{"2":{"20":1}}],["documentation",{"2":{"20":2}}],["docs",{"2":{"3":1,"20":2,"27":1}}],["dockerfile",{"2":{"15":6,"20":2}}],["docker",{"2":{"2":2,"3":2,"15":7,"20":9,"24":5}}],["d",{"2":{"3":1,"15":1,"24":1}}],["dto",{"2":{"0":1}}],["django",{"2":{"0":1}}],["a",{"2":{"24":1,"27":3}}],["add",{"2":{"20":1}}],["addr",{"2":{"20":1}}],["adh",{"2":{"20":1}}],["admin",{"2":{"18":2}}],["admin系统后台",{"2":{"8":1}}],["anull",{"2":{"20":1}}],["annotated",{"2":{"2":1}}],["aes",{"2":{"20":1}}],["aes128",{"2":{"20":1}}],["auth=admin",{"2":{"27":1}}],["authentication",{"2":{"15":1}}],["autogenerate",{"2":{"27":1}}],["auto",{"2":{"20":1}}],["application",{"2":{"20":5}}],["app",{"2":{"8":1,"15":1,"27":3}}],["api调用",{"2":{"18":1}}],["api",{"2":{"0":1,"1":2,"2":1,"3":1,"5":1,"8":1,"15":1,"20":2,"27":1,"31":1}}],["alias",{"2":{"20":1}}],["always",{"2":{"15":7,"20":1}}],["alembic",{"2":{"8":1,"27":3}}],["allowed",{"2":{"6":2,"9":3}}],["asia",{"2":{"15":1}}],["asgiref",{"2":{"2":1}}],["async",{"2":{"2":1}}],["await",{"2":{"2":1}}],["architecture",{"2":{"0":1,"15":1,"27":1,"29":1}}],["视图",{"2":{"0":1}}],["但是你也可以选择使用",{"2":{"15":1}}],["但是三层架构更令人着迷",{"2":{"0":1}}],["但请注意",{"2":{"0":1}}],["三层架构的概念并没有通用标准",{"2":{"0":1}}],["在",{"2":{"0":2,"27":1}}],["伪三层架构",{"0":{"0":1},"2":{"28":1}}]],"serializationVersion":2}';export{e as default}; diff --git a/assets/style-a4_d6O-d.css b/assets/style-a4_d6O-d.css new file mode 100644 index 0000000..a5d13e2 --- /dev/null +++ b/assets/style-a4_d6O-d.css @@ -0,0 +1 @@ +@charset "UTF-8";@font-face{font-family:Inter;font-style:normal;font-weight:100 900;src:url(/fastapi_best_architecture_docs/assets/inter-roman-cyrillic-ext-BBPuwvHQ.woff2) format("woff2");font-display:swap;unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;src:url(/fastapi_best_architecture_docs/assets/inter-roman-cyrillic-C5lxZ8CY.woff2) format("woff2");font-display:swap;unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;src:url(/fastapi_best_architecture_docs/assets/inter-roman-greek-ext-CqjqNYQ-.woff2) format("woff2");font-display:swap;unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;src:url(/fastapi_best_architecture_docs/assets/inter-roman-greek-BBVDIX6e.woff2) format("woff2");font-display:swap;unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;src:url(/fastapi_best_architecture_docs/assets/inter-roman-vietnamese-BjW4sHH5.woff2) format("woff2");font-display:swap;unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;src:url(/fastapi_best_architecture_docs/assets/inter-roman-latin-ext-4ZJIpNVo.woff2) format("woff2");font-display:swap;unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;src:url(/fastapi_best_architecture_docs/assets/inter-roman-latin-Di8DUHzh.woff2) format("woff2");font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;src:url(/fastapi_best_architecture_docs/assets/inter-italic-cyrillic-ext-r48I6akx.woff2) format("woff2");font-display:swap;unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;src:url(/fastapi_best_architecture_docs/assets/inter-italic-cyrillic-By2_1cv3.woff2) format("woff2");font-display:swap;unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;src:url(/fastapi_best_architecture_docs/assets/inter-italic-greek-ext-1u6EdAuj.woff2) format("woff2");font-display:swap;unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;src:url(/fastapi_best_architecture_docs/assets/inter-italic-greek-DJ8dCoTZ.woff2) format("woff2");font-display:swap;unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;src:url(/fastapi_best_architecture_docs/assets/inter-italic-vietnamese-BSbpV94h.woff2) format("woff2");font-display:swap;unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;src:url(/fastapi_best_architecture_docs/assets/inter-italic-latin-ext-CN1xVJS-.woff2) format("woff2");font-display:swap;unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;src:url(/fastapi_best_architecture_docs/assets/inter-italic-latin-C2AdPX0b.woff2) format("woff2");font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Chinese Quotes;src:local("PingFang SC Regular"),local("PingFang SC"),local("SimHei"),local("Source Han Sans SC");unicode-range:U+2018,U+2019,U+201C,U+201D}:root{--nprogress-c: var(--vp-c-accent);--nprogress-z-index: 1031}#nprogress{pointer-events:none}#nprogress .bar{position:fixed;top:0;left:0;z-index:var(--nprogress-z-index);width:100%;height:2px;background:var(--nprogress-c)}/*! PhotoSwipe main CSS by Dmytro Semenov | photoswipe.com */.pswp{--pswp-bg: #000;--pswp-placeholder-bg: #222;--pswp-root-z-index: 100000;--pswp-preloader-color: rgba(79, 79, 79, .4);--pswp-preloader-color-secondary: rgba(255, 255, 255, .9);--pswp-icon-color: #fff;--pswp-icon-color-secondary: #4f4f4f;--pswp-icon-stroke-color: #4f4f4f;--pswp-icon-stroke-width: 2px;--pswp-error-text-color: var(--pswp-icon-color)}.pswp{position:fixed;top:0;left:0;width:100%;height:100%;z-index:var(--pswp-root-z-index);display:none;touch-action:none;outline:0;opacity:.003;contain:layout style size;-webkit-tap-highlight-color:rgba(0,0,0,0)}.pswp:focus{outline:0}.pswp *{box-sizing:border-box}.pswp img{max-width:none}.pswp--open{display:block}.pswp,.pswp__bg{transform:translateZ(0);will-change:opacity}.pswp__bg{opacity:.005;background:var(--pswp-bg)}.pswp,.pswp__scroll-wrap{overflow:hidden}.pswp__scroll-wrap,.pswp__bg,.pswp__container,.pswp__item,.pswp__content,.pswp__img,.pswp__zoom-wrap{position:absolute;top:0;left:0;width:100%;height:100%}.pswp__img,.pswp__zoom-wrap{width:auto;height:auto}.pswp--click-to-zoom.pswp--zoom-allowed .pswp__img{cursor:zoom-in}.pswp--click-to-zoom.pswp--zoomed-in .pswp__img{cursor:move;cursor:grab}.pswp--click-to-zoom.pswp--zoomed-in .pswp__img:active{cursor:grabbing}.pswp--no-mouse-drag.pswp--zoomed-in .pswp__img,.pswp--no-mouse-drag.pswp--zoomed-in .pswp__img:active,.pswp__img{cursor:zoom-out}.pswp__container,.pswp__img,.pswp__button,.pswp__counter{-webkit-user-select:none;-moz-user-select:none;user-select:none}.pswp__item{z-index:1;overflow:hidden}.pswp__hidden{display:none!important}.pswp__content{pointer-events:none}.pswp__content>*{pointer-events:auto}.pswp__error-msg-container{display:grid}.pswp__error-msg{margin:auto;font-size:1em;line-height:1;color:var(--pswp-error-text-color)}.pswp .pswp__hide-on-close{opacity:.005;will-change:opacity;transition:opacity var(--pswp-transition-duration) cubic-bezier(.4,0,.22,1);z-index:10;pointer-events:none}.pswp--ui-visible .pswp__hide-on-close{opacity:1;pointer-events:auto}.pswp__button{position:relative;display:block;width:50px;height:60px;padding:0;margin:0;overflow:hidden;cursor:pointer;background:none;border:0;box-shadow:none;opacity:.85;-webkit-appearance:none;-webkit-touch-callout:none}.pswp__button:hover,.pswp__button:active,.pswp__button:focus{transition:none;padding:0;background:none;border:0;box-shadow:none;opacity:1}.pswp__button:disabled{opacity:.3;cursor:auto}.pswp__icn{fill:var(--pswp-icon-color);color:var(--pswp-icon-color-secondary)}.pswp__icn{position:absolute;top:14px;left:9px;width:32px;height:32px;overflow:hidden;pointer-events:none}.pswp__icn-shadow{stroke:var(--pswp-icon-stroke-color);stroke-width:var(--pswp-icon-stroke-width);fill:none}.pswp__icn:focus{outline:0}div.pswp__img--placeholder,.pswp__img--with-bg{background:var(--pswp-placeholder-bg)}.pswp__top-bar{position:absolute;left:0;top:0;width:100%;height:60px;display:flex;flex-direction:row;justify-content:flex-end;z-index:10;pointer-events:none!important}.pswp__top-bar>*{pointer-events:auto;will-change:opacity}.pswp__button--close{margin-right:6px}.pswp__button--arrow{position:absolute;width:75px;height:100px;top:50%;margin-top:-50px}.pswp__button--arrow:disabled{display:none;cursor:default}.pswp__button--arrow .pswp__icn{top:50%;margin-top:-30px;width:60px;height:60px;background:none;border-radius:0}.pswp--one-slide .pswp__button--arrow{display:none}.pswp--touch .pswp__button--arrow{visibility:hidden}.pswp--has_mouse .pswp__button--arrow{visibility:visible}.pswp__button--arrow--prev{right:auto;left:0}.pswp__button--arrow--next{right:0}.pswp__button--arrow--next .pswp__icn{left:auto;right:14px;transform:scaleX(-1)}.pswp__button--zoom{display:none}.pswp--zoom-allowed .pswp__button--zoom{display:block}.pswp--zoomed-in .pswp__zoom-icn-bar-v{display:none}.pswp__preloader{position:relative;overflow:hidden;width:50px;height:60px;margin-right:auto}.pswp__preloader .pswp__icn{opacity:0;transition:opacity .2s linear;animation:pswp-clockwise .6s linear infinite}.pswp__preloader--active .pswp__icn{opacity:.85}@keyframes pswp-clockwise{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.pswp__counter{height:30px;margin-top:15px;margin-inline-start:20px;font-size:14px;line-height:30px;color:var(--pswp-icon-color);text-shadow:1px 1px 3px var(--pswp-icon-color-secondary);opacity:.85}.pswp--one-slide .pswp__counter{display:none}.photo-swipe-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}.photo-swipe-bullets-indicator{position:absolute;bottom:30px;left:50%;display:flex;flex-direction:row;align-items:center;transform:translate(-50%)}.photo-swipe-bullet{width:12px;height:6px;margin:0 5px;border-radius:3px;background:var(--photo-swipe-c-bullet);transition:width .3s,color .3s}.photo-swipe-bullet.active{width:30px;background:var(--photo-swipe-c-bullet-active)}:root{--photo-swipe-c-bullet: var(--vp-c-bg-elv);--photo-swipe-c-bullet-active: var(--vp-c-accent)}.mini-search-button{display:flex;align-items:center;justify-content:center;width:48px;height:55px;padding:0;margin:0;background:transparent;transition:border-color .25s,background-color .25s}.mini-search-button:hover{background:transparent}.mini-search-button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.mini-search-button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.mini-search-button{justify-content:flex-start;width:100%;height:40px;padding:0 10px 0 12px;background-color:var(--vp-c-bg-alt);border:1px solid transparent;border-radius:8px}.mini-search-button:hover{background:var(--vp-c-bg-alt);border-color:var(--vp-c-brand-1)}}.mini-search-button .mini-search-button-container{display:flex;align-items:center}.mini-search-button .mini-search-search-icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentcolor;transition:color .3s}.mini-search-button:hover .mini-search-search-icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.mini-search-button .mini-search-search-icon{top:1px;width:14px;height:14px;margin-right:8px;color:var(--vp-c-text-2)}}.mini-search-button .mini-search-button-placeholder{display:none;padding:0 16px 0 0;margin-top:2px;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .3s}.mini-search-button:hover .mini-search-button-placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.mini-search-button .mini-search-button-placeholder{display:inline-block}}.mini-search-button .mini-search-button-keys{display:none;min-width:auto;direction:ltr}@media (min-width: 768px){.mini-search-button .mini-search-button-keys{display:flex;align-items:center}}.mini-search-button .mini-search-button-key{display:block;width:auto;min-width:0;height:22px;padding-left:6px;margin:2px 0 0;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;line-height:22px;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;transition:color .3s,border-color .3s}.mini-search-button .mini-search-button-key+.mini-search-button-key{padding-right:6px;padding-left:2px;border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0}.mini-search-button .mini-search-button-key:first-child{font-size:0!important}.mini-search-button .mini-search-button-key:first-child:after{font-size:12px;color:var(--mini-search-muted-color);letter-spacing:normal;content:"Ctrl"}.mac .mini-search-button .mini-search-button-key:first-child:after{content:"⌘"}.mini-search-button .mini-search-button-key:first-child>*{display:none}.search-wrapper[data-v-81ae8c66]{display:flex;align-items:center}@media (min-width: 768px){.search-wrapper[data-v-81ae8c66]{flex-grow:1}}html.dark{--box-shadow: #0f0e0d;--card-shadow: rgba(0, 0, 0, .3);--black: #fff;--grey-dark: #999;--grey-light: #666;--white: #000;--grey-darker: #bbb;--grey-lighter: #333;--grey14: #111}:root{--vp-bg: var(--c-bg, #fff);--vp-bgl: var(--c-bg-light, #f3f4f5);--vp-bglt: var(--c-bg-lighter, #eeeeee);--vp-c: var(--c-text, #2c3e50);--vp-cl: var(--c-text-light, #3a5169);--vp-clt: var(--c-text-lighter, #4e6e8e);--vp-brc: var(--c-border, #eaecef);--vp-brcd: var(--c-border-dark, #dfe2e5);--vp-tc: var(--c-brand, #3eaf7c);--vp-tcl: var(--c-brand-light, #4abf8a);--vp-ct: var(--t-color, .3s ease);--vp-tt: var(--t-transform, .3s ease);--box-shadow: #f0f1f2;--card-shadow: rgba(0, 0, 0, .15);--black: #000;--grey-dark: #666;--grey-light: #999;--white: #fff;--grey-darker: #333;--grey-lighter: #bbb;--grey14: #eee}:root{--code-tabs-c-text: var(--code-c-text);--code-tabs-c-bg: var(--code-highlight-bg-color);--code-tabs-c-hover: var(--code-c-bg)}.vp-code-tabs-nav{overflow-x:auto;margin:.875rem 0 -.875rem;padding:0;border-radius:6px 6px 0 0;background:var(--code-tabs-c-bg, #3a404c);list-style:none;white-space:nowrap;transition:background var(--vp-ct)}@media print{.vp-code-tabs-nav{display:none}}@media (max-width: 419px){.vp-code-tabs-nav{margin-inline:-1.5rem;border-radius:0}}.vp-code-tab-nav{border-width:0;position:relative;min-width:3rem;margin:0;padding:6px 12px;border-radius:6px 6px 0 0;background:transparent;color:var(--code-tabs-c-text, #eee);font-weight:600;font-size:.875em;line-height:1.4;cursor:pointer;transition:background var(--vp-ct),color var(--vp-ct)}.vp-code-tab-nav:hover{background:var(--code-tabs-c-hover, #434a57)}.vp-code-tab-nav:before,.vp-code-tab-nav:after{content:" ";position:absolute;bottom:0;z-index:1;width:6px;height:6px}.vp-code-tab-nav:before{right:100%}.vp-code-tab-nav:after{left:100%}.vp-code-tab-nav.active{background:var(--code-c-bg, #282c34)}.vp-code-tab-nav.active:before{background:radial-gradient(12px at left top,transparent 50%,var(--code-c-bg, #282c34) 50%)}.vp-code-tab-nav.active:after{background:radial-gradient(12px at right top,transparent 50%,var(--code-c-bg, #282c34) 50%)}.vp-code-tab-nav:first-child:before{display:none}html[dir=rtl] .vp-code-tab-nav:first-child:before{display:block}html[dir=rtl] .vp-code-tab-nav:first-child:after{display:none}.vp-code-tab{display:none}@media print{.vp-code-tab{display:block}}.vp-code-tab.active{display:block}.vp-code-tab div[class*=language-].line-numbers-mode:after{border-top-left-radius:0!important}.vp-code-tab div[class*=language-] pre{border-top-left-radius:0!important;border-top-right-radius:0!important}@media (max-width: 419px){.vp-code-tab div[class*=language-] pre{margin:.875rem -1.5rem;border-radius:0!important}}@media print{.vp-code-tab div[class*=language-] code{white-space:pre-wrap}}.vp-code-tab-title{display:none;font-weight:500}@media print{.vp-code-tab-title{display:block}}.code-group-nav{display:flex;margin:.875rem 0 -.875rem;padding:0;border-radius:6px 6px 0 0;background:var(--code-tabs-c-bg, #3a404c);list-style:none;transition:background var(--vp-ct)}@media (max-width: 419px){.code-group-nav{margin-inline:-1.5rem;border-radius:0}}.code-group-nav-tab{border-width:0;position:relative;min-width:3rem;margin:0;padding:6px 10px;border-radius:6px 6px 0 0;background:transparent;color:var(--code-tabs-c-text, #eee);font-weight:600;font-size:.875em;line-height:1.4;cursor:pointer;transition:background var(--vp-ct),color var(--vp-ct)}.code-group-nav-tab:hover{background:var(--code-tabs-c-hover, #434a57)}.code-group-nav-tab:before,.code-group-nav-tab:after{content:" ";position:absolute;bottom:0;z-index:1;width:6px;height:6px}.code-group-nav-tab:before{right:100%}.code-group-nav-tab:after{left:100%}.code-group-nav-tab.active{background:var(--code-c-bg, #282c34)}.code-group-nav-tab.active:before{background:radial-gradient(12px at left top,transparent 50%,var(--code-c-bg, #282c34) 50%)}.code-group-nav-tab.active:after{background:radial-gradient(12px at right top,transparent 50%,var(--code-c-bg, #282c34) 50%)}.code-group-nav-tab:first-child:before{display:none}html[dir=rtl] .code-group-nav-tab:first-child:before{display:block}html[dir=rtl] .code-group-nav-tab:first-child:after{display:none}.code-group-item{display:none}.code-group-item.active{display:block}.code-group-item div[class*=language-]{border-top-left-radius:0;border-top-right-radius:0}.vp-card{display:inline-flex;align-items:center;max-width:400px;margin:1rem .5rem;padding:1rem;border-radius:.5rem;background:var(--vp-bg);color:inherit;box-shadow:2px 2px 10px 0 var(--card-shadow);transition:background var(--vp-ct),box-shadow var(--vp-ct)}.vp-card:hover{background:var(--vp-bgl);text-decoration:none!important}.vp-card hr{margin:.25em 0}.vp-card-logo{width:3em;height:3em;margin-inline-end:1em;border-radius:50%}.vp-card-content{flex:1}.vp-card-title{font-weight:500;font-size:1.1em}.vp-card-desc{color:#888;font-size:.9em;line-height:1.5;transition:color var(--vp-ct)}.vp-card-container{display:flex;flex-wrap:wrap;place-content:stretch center;align-items:stretch}.vp-card-container .vp-card{flex-basis:calc(50% - 3rem);max-width:unset;margin:.5rem}@media (max-width: 959px){.vp-card-container .vp-card{flex-basis:100%}}@media (max-width: 719px){.vp-card-container .vp-card{font-size:.95rem}}@media (max-width: 419px){.vp-card-container .vp-card{font-size:.9rem}}.footnote-item{margin-top:calc(0rem - var(--navbar-height, 3.6rem));padding-top:calc(var(--navbar-height, 3.6rem) + .5rem)}.footnote-item>p{margin-bottom:0}.footnote-ref{position:relative}.footnote-anchor{position:absolute;top:calc(-.5rem - var(--navbar-height, 3.6rem))}:root{--important-title-color: #230555;--important-bg-color: #f4eefe;--important-border-color: #a371f7;--important-code-bg-color: rgb(163 113 247 / 10%);--info-title-color: #193c47;--info-bg-color: #eef9fd;--info-border-color: #4cb3d4;--info-code-bg-color: rgb(76 179 212 / 10%);--note-title-color: #474748;--note-bg-color: #fdfdfe;--note-border-color: #ccc;--note-code-bg-color: rgb(212 213 216 / 20%);--tip-title-color: #003100;--tip-bg-color: #e6f6e6;--tip-border-color: #009400;--tip-code-bg-color: rgb(0 148 0 / 15%);--warning-title-color: #4d3800;--warning-bg-color: #fff8e6;--warning-border-color: #e6a700;--warning-code-bg-color: rgb(230 167 0 / 15%);--caution-title-color: #4b1113;--caution-bg-color: #ffebec;--caution-border-color: #e13238;--caution-code-bg-color: rgb(225 50 56 / 15%);--detail-bg-color: #eee;--detail-text-color: inherit;--detail-code-bg-color: rgb(127 127 127 / 15%)}html.dark{--important-title-color: #f4eefe;--important-bg-color: #230555;--info-title-color: #eef9fd;--info-bg-color: #193c47;--note-title-color: #fdfdfe;--note-bg-color: #474748;--tip-title-color: #e6f6e6;--tip-bg-color: #003100;--warning-title-color: #fff8e6;--warning-bg-color: #4d3800;--caution-title-color: #ffebec;--caution-bg-color: #4b1113;--detail-bg-color: #333;--detail-text-color: #a8a8a8}.hint-container{position:relative;transition:background var(--vp-ct),border-color var(--vp-ct),color var(--vp-ct)}@media print{.hint-container{page-break-inside:avoid}}.hint-container .hint-container-title{position:relative;font-weight:600;line-height:1.25}.hint-container.important,.hint-container.info,.hint-container.note,.hint-container.tip,.hint-container.warning,.hint-container.caution{margin:1rem 0;padding:.25rem 1rem;border-inline-start-width:.3rem;border-inline-start-style:solid;border-radius:.5rem;color:inherit}@media (max-width: 419px){.hint-container.important,.hint-container.info,.hint-container.note,.hint-container.tip,.hint-container.warning,.hint-container.caution{margin-inline:-.75rem}}.hint-container.important .hint-container-title,.hint-container.info .hint-container-title,.hint-container.note .hint-container-title,.hint-container.tip .hint-container-title,.hint-container.warning .hint-container-title,.hint-container.caution .hint-container-title{padding-inline-start:1.75rem}@media print{.hint-container.important .hint-container-title,.hint-container.info .hint-container-title,.hint-container.note .hint-container-title,.hint-container.tip .hint-container-title,.hint-container.warning .hint-container-title,.hint-container.caution .hint-container-title{padding-inline-start:0}}.hint-container.important .hint-container-title:before,.hint-container.info .hint-container-title:before,.hint-container.note .hint-container-title:before,.hint-container.tip .hint-container-title:before,.hint-container.warning .hint-container-title:before,.hint-container.caution .hint-container-title:before{content:" ";position:absolute;inset-inline-start:0;top:calc(50% - .6125em);width:1.25em;height:1.25em;background-position:left;background-repeat:no-repeat}@media print{.hint-container.important .hint-container-title:before,.hint-container.info .hint-container-title:before,.hint-container.note .hint-container-title:before,.hint-container.tip .hint-container-title:before,.hint-container.warning .hint-container-title:before,.hint-container.caution .hint-container-title:before{display:none}}.hint-container.important p,.hint-container.info p,.hint-container.note p,.hint-container.tip p,.hint-container.warning p,.hint-container.caution p{line-height:1.5}.hint-container.important a,.hint-container.info a,.hint-container.note a,.hint-container.tip a,.hint-container.warning a,.hint-container.caution a{color:var(--vp-tc)}.hint-container.important{border-color:var(--important-border-color);background:var(--important-bg-color)}.hint-container.important>.hint-container-title{color:var(--important-title-color)}.hint-container.important>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M512 981.333a84.992 84.992 0 0 1-84.907-84.906h169.814A84.992 84.992 0 0 1 512 981.333zm384-128H128v-42.666l85.333-85.334v-256A298.325 298.325 0 0 1 448 177.92V128a64 64 0 0 1 128 0v49.92a298.325 298.325 0 0 1 234.667 291.413v256L896 810.667v42.666zm-426.667-256v85.334h85.334v-85.334h-85.334zm0-256V512h85.334V341.333h-85.334z' fill='%23a371f7'/%3E%3C/svg%3E")}.hint-container.important :not(pre)>code{background:var(--important-code-bg-color)}.hint-container.info{border-color:var(--info-border-color);background:var(--info-bg-color)}.hint-container.info>.hint-container-title{color:var(--info-title-color)}.hint-container.info>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z' fill='%234cb3d4'/%3E%3C/svg%3E")}.hint-container.info :not(pre)>code{background:var(--info-code-bg-color)}.hint-container.note{border-color:var(--note-border-color);background:var(--note-bg-color)}.hint-container.note>.hint-container-title{color:var(--note-title-color)}.hint-container.note>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm-1-11v6h2v-6h-2zm0-4v2h2V7h-2z' fill='%23ccc'/%3E%3C/svg%3E")}.hint-container.note :not(pre)>code{background:var(--note-code-bg-color)}.hint-container.tip{border-color:var(--tip-border-color);background:var(--tip-bg-color)}.hint-container.tip>.hint-container-title{color:var(--tip-title-color)}.hint-container.tip>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23009400' d='M7.941 18c-.297-1.273-1.637-2.314-2.187-3a8 8 0 1 1 12.49.002c-.55.685-1.888 1.726-2.185 2.998H7.94zM16 20v1a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-1h8zm-3-9.995V6l-4.5 6.005H11v4l4.5-6H13z'/%3E%3C/svg%3E")}.hint-container.tip :not(pre)>code{background:var(--tip-code-bg-color)}.hint-container.warning{border-color:var(--warning-border-color);background:var(--warning-bg-color)}.hint-container.warning>.hint-container-title{color:var(--warning-title-color)}.hint-container.warning>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1024 1024'%3E%3Cpath d='M576.286 752.57v-95.425q0-7.031-4.771-11.802t-11.3-4.772h-96.43q-6.528 0-11.3 4.772t-4.77 11.802v95.424q0 7.031 4.77 11.803t11.3 4.77h96.43q6.528 0 11.3-4.77t4.77-11.803zm-1.005-187.836 9.04-230.524q0-6.027-5.022-9.543-6.529-5.524-12.053-5.524H456.754q-5.524 0-12.053 5.524-5.022 3.516-5.022 10.547l8.538 229.52q0 5.023 5.022 8.287t12.053 3.265h92.913q7.032 0 11.803-3.265t5.273-8.287zM568.25 95.65l385.714 707.142q17.578 31.641-1.004 63.282-8.538 14.564-23.354 23.102t-31.892 8.538H126.286q-17.076 0-31.892-8.538T71.04 866.074q-18.582-31.641-1.004-63.282L455.75 95.65q8.538-15.57 23.605-24.61T512 62t32.645 9.04 23.605 24.61z' fill='%23e6a700'/%3E%3C/svg%3E")}.hint-container.warning :not(pre)>code{background:var(--warning-code-bg-color)}.hint-container.caution{border-color:var(--caution-border-color);background:var(--caution-bg-color)}.hint-container.caution>.hint-container-title{color:var(--caution-title-color)}.hint-container.caution>.hint-container-title:before{background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2c5.523 0 10 4.477 10 10v3.764a2 2 0 0 1-1.106 1.789L18 19v1a3 3 0 0 1-2.824 2.995L14.95 23a2.5 2.5 0 0 0 .044-.33L15 22.5V22a2 2 0 0 0-1.85-1.995L13 20h-2a2 2 0 0 0-1.995 1.85L9 22v.5c0 .171.017.339.05.5H9a3 3 0 0 1-3-3v-1l-2.894-1.447A2 2 0 0 1 2 15.763V12C2 6.477 6.477 2 12 2zm-4 9a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm8 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4z' fill='%23e13238'/%3E%3C/svg%3E")}.hint-container.caution :not(pre)>code{background:var(--caution-code-bg-color)}.hint-container.details{position:relative;display:block;margin:1rem 0;padding:1.5rem;border-radius:.5rem;background:var(--detail-bg-color);color:var(--detail-text-color);transition:background var(--vp-tt),color var(--vp-tt)}@media (max-width: 419px){.hint-container.details{margin-inline:-.75rem}}.hint-container.details h4{margin-top:0}.hint-container.details figure:last-child,.hint-container.details p:last-child{margin-bottom:0;padding-bottom:0}.hint-container.details a{color:var(--vp-tc)}.hint-container.details :not(pre)>code{background:var(--detail-code-bg-color)}.hint-container.details summary{position:relative;margin:-1.5rem;padding-block:1.5rem;padding-inline:4rem 1.5rem;list-style:none;cursor:pointer}.hint-container.details summary::-webkit-details-marker{display:none}.hint-container.details summary::marker{color:transparent;font-size:0}.hint-container.details summary:before,.hint-container.details summary:after{content:" ";position:absolute;inset-inline-start:1.5rem;top:calc(50% - .75rem);width:1.5rem;height:1.5rem}.hint-container.details summary:before{border-radius:50%;background:#ccc;transition:background var(--vp-ct),transform var(--vp-tt)}html.dark .hint-container.details summary:before{background:#555}.hint-container.details summary:after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgb(0,0,0,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E");line-height:normal;transition:transform var(--vp-tt);transform:rotate(90deg)}html.dark .hint-container.details summary:after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgb(255,255,255,0.5)' d='M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z'/%3E%3C/svg%3E")}.hint-container.details[open]>summary{margin-bottom:.5em}.hint-container.details[open]>summary:after{transform:rotate(180deg)}@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/fastapi_best_architecture_docs/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(/fastapi_best_architecture_docs/assets/KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(/fastapi_best_architecture_docs/assets/KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/fastapi_best_architecture_docs/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(/fastapi_best_architecture_docs/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(/fastapi_best_architecture_docs/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/fastapi_best_architecture_docs/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(/fastapi_best_architecture_docs/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(/fastapi_best_architecture_docs/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/fastapi_best_architecture_docs/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(/fastapi_best_architecture_docs/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(/fastapi_best_architecture_docs/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/fastapi_best_architecture_docs/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(/fastapi_best_architecture_docs/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(/fastapi_best_architecture_docs/assets/KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/fastapi_best_architecture_docs/assets/KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(/fastapi_best_architecture_docs/assets/KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(/fastapi_best_architecture_docs/assets/KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/fastapi_best_architecture_docs/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(/fastapi_best_architecture_docs/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(/fastapi_best_architecture_docs/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/fastapi_best_architecture_docs/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(/fastapi_best_architecture_docs/assets/KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(/fastapi_best_architecture_docs/assets/KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/fastapi_best_architecture_docs/assets/KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(/fastapi_best_architecture_docs/assets/KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(/fastapi_best_architecture_docs/assets/KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/fastapi_best_architecture_docs/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(/fastapi_best_architecture_docs/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(/fastapi_best_architecture_docs/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/fastapi_best_architecture_docs/assets/KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(/fastapi_best_architecture_docs/assets/KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(/fastapi_best_architecture_docs/assets/KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/fastapi_best_architecture_docs/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(/fastapi_best_architecture_docs/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(/fastapi_best_architecture_docs/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/fastapi_best_architecture_docs/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(/fastapi_best_architecture_docs/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(/fastapi_best_architecture_docs/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/fastapi_best_architecture_docs/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(/fastapi_best_architecture_docs/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(/fastapi_best_architecture_docs/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/fastapi_best_architecture_docs/assets/KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(/fastapi_best_architecture_docs/assets/KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(/fastapi_best_architecture_docs/assets/KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/fastapi_best_architecture_docs/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(/fastapi_best_architecture_docs/assets/KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(/fastapi_best_architecture_docs/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/fastapi_best_architecture_docs/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(/fastapi_best_architecture_docs/assets/KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(/fastapi_best_architecture_docs/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmfttwI4mBo1EG15fxJhUiCLbiiyCf/ZA6MFAhg3pGIZGdGIVjtPn6UcMk9A/UUr9PhoNsCENw1APAq0gpH73e+M+0ueyHbabc3vkbcdtzcf/fiy+NxQEjf9ud/ELBHAXJ0nk4z+MXH2Ev/kWyV4k7SkvpPc9Qr38F6RPWnM9cN6DJ0AdD1BhtgABtmoRoFCvPsBAumNm6soZG2Gk5GyVTo2sJncSyp0jQTYoR6WDvTwaaEcHsxHfvuWhHA3a6bN7twRKtcGok6NsCi7jYRrM2jExsUFMxMQYuJbMhuWNOumEJy9hi29Dmg5zMp/A5+hhPG19j1vBrq8JTLr8ki5VLPmG/PynJHVul440bxg5xuymHUFPBshC+nA9I1FmwbRBTNHAcik3Oae0cxKoI3MOriM42UrPe51nsaGxJ+WfXubAsP84aabUlQSJ1IiE0iPETLUU4CATgfXSCSpuRFRmCGbO+wSpAnzaeaCYW1VNEysRtuXCEL1kUFUbbtMv3Tilt/1c11jt3Q5bbMa84cpWipp8Elw3MZhOHsOlwwVUQM3lAR35JiFQbaYCRnMF2lxAWoOg2gyoIV4PouX8HytNIfLhqpJtXB4vjiViUI8IJ7bkC4ikkQvKksnOTKICwnqWSZ9YS5f0WCxmpgjbIq7EJcM4aI2nmhLNY2JIUgOjXZFWBHb+x5oh6cwb0Tv1ackHdKi0I9OO2wE9aogIOn540CCCziyhN+IaejtgAONKznHlHyutPrHGwCx9S6B8kfS4Mfi4Eyv7OU730bT1SCBjt834cXsf43zVjPUqqJjgrjeGnBxSG4aYAKFuVbeCfkDIjAqMb6yLNIbCuvXhMH2/+k2vkNpkORhR59N1CkzoOENvneIosjYmuTxlhUzaGEJQ/iWqx4dmwpmKjrwTiTGTCVozNAYqk/zXOndWxuWSmJkQpJw3pK5KX6QrLt5LATMqpmPAQhkhK6PUjzHUn7E0gHE0kPE0iKkolgkUx9SZmVAdDgpffdyJKg3k7VmzYGCwVXGz/tXmkOIp+vcWs+EMuhhvN0h9uhfzWJziBQmCREGSIFmQIkgVpAnSBRmC//6hkLZwaVhwxlrJSOdqlFtOYxlau9F2QN5Y98xmIAsiM1HVp2VFX+DHHGg6Ecjh3vmqtidX3qHI2qycTk/iwxSt5UzTmEP92ZBnEWTk4Mx8Mpl78ZDokxg/KWb+Q0QkvdKVmq3TMW+RXEgrsziSAfNXFMhDc60N5N9jQzjfO0kBKpUZl0ZmwJ41j/B9Hz6wmRaJB84niNmQrzp9eSlQCDDzazGDdVi3P36VZQ+Jy4f9UBNp+3zTjqI4abaFAm+GShVaXlsGdF3FYzZcDI6cori4kMxUECl9IjJZpzkvitAoxKue+90pDMvcKRxLl53TmOKCmV/xRolNKSqqUxc6LStOETmFOiLZZptlZepcKiAzteG8PEdpnQpbOMNcMsR4RR2Bs0cKFEvSmIjAFcnarqwUL4lDhHmnVkwu1IwshbiCcgvOheZuYyOteufZZwlcTlLgnZ3o/WcYdzZHW/WGaqaVfmTZ1aWCceJjkbZqsfbkOtcFlUZM/jy+hXHDbaUobWqqXaeWobbLO99yG5N3U4wxco0rQGGcOLASFMXeJoham8M+/x6O2WywK2l4HGbq1CoUyC/IZikQhdq3SiuNrvAEj0AVu9x2x3lp/xWzahaxidezFVtdcb5uEnzyl0ZmYiuKI0exvCd4Xc9CV1KB0db00z92wDPde0kukbvZIWN6jUWFTmPIC/Y4UPCm8UfDTFZpZNon1qLFTkBhxzB+FjQRA2Q/YRJT8pQigslMaUpFyAG8TMlXigiqmAZX4xgijKjRlGpLE0GdplRfCaJo0JQaSxNBk6ZmMzcya0FmrcisDdn0Q3HI2sWSppYigmlM1XT/kLQZSNpMJG0WkjYbSZuDpM1F0uYhFc1HxU4m1QJjDK6iL0S5uSj5rgXc3RejEigtcRBtqYPQsiTskmO5vosV+q4VGIKbOkDg0jtRrq+Em1YloaTFar3EGr1EUC8R0kus1Uus00usL97ABr2BjXoDm/QGNhuWtMVBKOwg/i78lT7hBsAvDmwHc/ao3vmUbBmhjeYySZNWvGkfZAgISDSaDo1SVpzGDsAEkF8B+gEapViUoZgUWXcRIGFZNm6gWbAKk0bp0k1MHG9fLYtV4iS2SmLEQFARzRcnf9PUS0LVn05/J9MiRRBU3v2IrvW974v4N00L7ZMk0wXP1409CHo/an8zTRHD3eSJ6m8D4YMkZNl3M79sqeuAsr/m3f+8/yl7A50aiAEJgeBeMWzu7ui9UfUBCe2TIqZIoOd/3/udRBOQidQZUERzb2/VwZN1H/Sju82ew2H2Wfr6qvfVf3hqwDvAIpkQVFy4B9Pe9e4/XvPeceu7h3dvO56iJPf0+A6cqA2ip18ER+iFgggiuOkvj24bby0N9j2UHIkgqIt+sVgfodC4YghLSMjSZbH0VR/6dMDrYJeKHilKTemt6v6kvzvn3/RrdWtr0GoN/xL+Sex/cPYLUpepx9cz/D46UPU5KXgAQa+NDps1v6J3xP1i2HtaDB0M9aX2deA7SYff//+gUCovMmIK/qfsFcOk+4Y5ZN97XlG6zebqtMbKgeRFi51vnxTQYBUik2rS/Cn6PC8ADR8FGxsRPB82dzfND90gIcshOcYUkfjherBz53odpm6TP8txlwOZ71xmfHHOvq053qFF/MRlS3jP0ELudrf2OeN8DHvp6ZceLe8qKYvWz/7yp0u4dKPfli3CYq0O13Ih71mylJ80tOi10On8wi+F4+LWgDPeJ30msSQt9/vkmHq9/Lvo2b461mP801v3W4xTcs6CbvF9UDdrSt+A8OUbpSh55qAUFXWznBBfdeJ8a4d7ugT5tvxUza3h9m4H7ptTqiG4z0g5dc0X29OcGlhpGFMpQo9ytTS+NViZpNdvU4kWx+LKxNY10kQ1yqGXrhe4/1nvP7E+nd5A92TtaRplbHSqoIdOqtRWti+fkB5/n1+/VvCmz12pG1kpQWsfi1ftlBobm0bpngs16CHkbIwdLnParxtTV3QYRlfJ0KFskH7pdN/YDn+yRuSd7sNH3aO0DYPggk6uWuXrfOc+fa3VTxFVvKaNxHsiHmsXyCLIE5yuOeN3/Jdf8HBL/5M6shjyhxHx9BjB1O0+4NLOnjLLSxwO7ukN4jMbOIcD879KLSi6Pk61Oqm2377n8079PXEEQ7cy7OKEC9nbpet118fxweTafpt69x/Bt8UqGzNQt7aelpc44dn5cqhwf71+qKp/Zf/+a0zcizOUWpl/iBcSXip0pplkatCchoH5c5aUM8I7/dWxAej8WicPL1URFZ9BDJelUwEwTkGqUhgSlydVes95YdXvhh9Gfz/aeFWvgVb4tuLbcv4+wLdutVZv/cUonwBD/6eDlE0aSiKK/uoH3+J1wDE/jMVqY2ysGufN84oIXB0sPzy8ollX/LegY74DgJXJR57sn+VGza0x3DnuIgABFM15LmajjjsNlYj+JEZGbuRYcAMOWxFkPN2w6Wd46xo4gVWQR/X4lyI/R6K/YK0110GzudPRW7Y+UOBGTfNNzHeYT0fiH0taunBpq9HEW8OKSaBGj21L0MqenEmNRWBAWDWAk4CpNoEZJ2tTaPFgbQYj8HxtFilErs3BTRwT8uO1NXQaWfIotchmPkAF5mMBAliEmZiOGVgCG9LgRzpscMAOOwowlT3JhusdazXGSC/hxR3UlmWVwWHpOIKheqONvjyhSiTHIkVUco5bnji8m//zL7PKaT1Vl5I6UE609f+gkr6MZKVyKc7zJRmCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC) format("woff2"),url(/fastapi_best_architecture_docs/assets/KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(/fastapi_best_architecture_docs/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/fastapi_best_architecture_docs/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(/fastapi_best_architecture_docs/assets/KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(/fastapi_best_architecture_docs/assets/KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/fastapi_best_architecture_docs/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(/fastapi_best_architecture_docs/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(/fastapi_best_architecture_docs/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.11"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.katex{font-size:1.05em;direction:ltr}.katex-display{overflow:auto hidden;padding-top:.2em;padding-bottom:.2em;-webkit-overflow-scrolling:touch}.katex-display::-webkit-scrollbar{height:3px}.katex-display .katex{font-size:1.21em}.katex-error{color:red}:root{--tab-bg-color: var(--vp-bg);--tab-nav-text-color: var(--vp-c);--tab-nav-bg-color: #e0e0e0;--tab-nav-hover-color: #eee}html.dark{--tab-nav-bg-color: #34343f;--tab-nav-hover-color: #2d2d38}.vp-tabs{margin:1.5rem 0;border:2px solid var(--vp-brc);border-radius:8px}@media (max-width: 419px){.theme-default-content>.vp-tabs{margin-inline:-1.5rem;border-radius:0}}.vp-tabs-nav{overflow-x:auto;margin:0;padding:0;border-radius:8px 8px 0 0;background:var(--tab-nav-bg-color);list-style:none;white-space:nowrap;transition:background var(--vp-ct)}@media print{.vp-tabs-nav{display:none}}@media (max-width: 419px){.vp-tabs-nav{border-radius:0}}.vp-tab-nav{border-width:0;position:relative;min-width:4rem;margin:0;padding:.5em 1em;border-radius:8px 8px 0 0;background:transparent;color:var(--tab-nav-text-color);font-weight:600;font-size:.875em;line-height:1.75;cursor:pointer;transition:background var(--vp-ct),color var(--vp-ct)}.vp-tab-nav:hover{background:var(--tab-nav-hover-color)}.vp-tab-nav:before,.vp-tab-nav:after{content:" ";position:absolute;bottom:0;z-index:1;width:8px;height:8px}.vp-tab-nav:before{right:100%}.vp-tab-nav:after{left:100%}.vp-tab-nav.active{background:var(--tab-bg-color)}.vp-tab-nav.active:before{background:radial-gradient(16px at left top,transparent 50%,var(--tab-bg-color) 50%)}.vp-tab-nav.active:after{background:radial-gradient(16px at right top,transparent 50%,var(--tab-bg-color) 50%)}.vp-tab-nav:first-child:before{display:none}.vp-tab{display:none;padding:1rem .75rem;background:var(--tab-bg-color);transition:background var(--vp-ct)}@media print{.vp-tab{display:block;padding:.5rem}}.vp-tab.active{display:block}.vp-tab:nth-child(n+2) .vp-tab-title{border-top:none}.vp-tab-title{display:none;padding:.25rem 0;border-top:1px solid var(--vp-brc);font-weight:500}@media print{.vp-tab-title{display:block}}.task-list-container{padding-inline-start:0;list-style-position:inside}.task-list-container .task-list-container{padding-inline-start:1.5em}.task-list-item{list-style:none}.task-list-item-checkbox{position:relative;vertical-align:text-bottom;height:1em;margin-inline-end:1.5em;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.task-list-item-checkbox:after{content:" ";position:absolute;top:0;display:inline-block;box-sizing:border-box;width:1em;height:1em;padding-inline-start:0;border:1px solid #ddd;border-radius:2px;background:#fff;text-align:center;visibility:visible;transition:background var(--vp-ct),border-color var(--vp-ct)}@media print{.task-list-item-checkbox:after{border-color:var(--vp-c)}}html.dark .task-list-item-checkbox:after{border-color:#666;background:#333}.task-list-item-checkbox:checked:after{content:"";border-color:var(--vp-tc);background:var(--vp-tc)}@media print{.task-list-item-checkbox:checked:after{border-color:var(--vp-c);background:transparent}}html.dark .task-list-item-checkbox:checked:after{border-color:var(--vp-tc);background:var(--vp-tc)}.task-list-item-checkbox:checked:before{content:"";position:absolute;inset-inline-start:.4em;top:.1em;z-index:1;width:.2em;height:.5em;border:solid var(--white);border-width:0 .15em .15em 0;transform:rotate(45deg)}@media print{.task-list-item-checkbox:checked:before{border-color:var(--vp-c)}}.video_bilibili_iframe{width:100%;margin:16px auto;border:none;border-radius:5px}.vp-plot{padding-right:2px;padding-left:2px;color:transparent;background-color:var(--vp-c-bg-plot-light, #000);transition:color ease .25s,background-color ease .25s}.dark .vp-plot{background-color:var(--vp-c-bg-plot-dark, #fff)}.vp-plot.hover:hover,.vp-plot.active{color:var(--vp-c-plot-light, #fff)}.dark .vp-plot.hover:hover,.dark .vp-plot.active{color:var(--vp-c-plot-dark, #000)}.vp-file-tree{width:-moz-fit-content;width:fit-content;max-width:100%;padding:16px;font-size:14px;background-color:var(--vp-c-bg-safe);border:solid 1px var(--vp-c-divider);border-radius:8px;transition:border var(--t-color),background-color var(--t-color)}.vp-file-tree ul{padding:0!important;margin:0!important;list-style:none!important}.file-tree-item{margin-left:14px}.vp-file-tree .file-tree-item{margin-top:0}.file-tree-item .tree-node{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:flex-start;margin:4px 0}.file-tree-item .tree-node .name{font-family:var(--vp-font-family-mono)}.file-tree-item .tree-node.folder{position:relative}.file-tree-item .tree-node.folder>.name{color:var(--vp-c-text-1);cursor:pointer;transition:color var(--t-color)}.file-tree-item .tree-node.folder>.name:hover{color:var(--vp-c-brand-1)}.file-tree-item .tree-node.folder:before{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M5.536 21.886a1 1 0 0 0 1.033-.064l13-9a1 1 0 0 0 0-1.644l-13-9A1 1 0 0 0 5 3v18a1 1 0 0 0 .536.886'/%3E%3C/svg%3E");position:absolute;top:7px;left:-14px;display:block;width:10px;height:10px;color:var(--vp-c-text-3);content:"";background-color:currentcolor;-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;transition:color var(--t-color)}.file-tree-item .tree-node.file .name.focus{font-weight:700;color:var(--vp-c-brand-1);transition:color var(--t-color)}.file-tree-item .tree-node .comment{margin-left:20px;overflow:hidden;color:var(--vp-c-text-3);transition:color var(--t-color)}.file-tree-item .tree-node [class*=vp-fti-]{display:inline-block;width:.9em;height:.9em;color:var(--vp-c-text-2);background-color:currentcolor;-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%}.file-tree-item .tree-node.folder [class*=vp-fti-]{cursor:pointer}.vp-file-tree .file-tree-item>ul{padding-left:8px!important;margin:0 0 0 6px!important;border-left:solid 1px var(--vp-c-divider);transition:border-color var(--t-color)}.file-tree-item:not(.expanded)>ul{display:none}.file-tree-item.expanded>.tree-node.folder:before{transform:rotate(90deg)}.vp-fti-folder{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M22.073 4.900L22.073 4.900L12.148 4.900L12.148 3.950Q12.148 3.125 11.585 2.563Q11.023 2 10.198 2L10.198 2L0.048 2L0.048 22L23.948 22L23.948 6.850Q23.998 6.025 23.448 5.462Q22.898 4.900 22.073 4.900Z'/%3E%3C/svg%3E")}.vp-fti-default{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1.082 16.876L1.082 14.014L22.918 14.014L22.918 16.876L1.082 16.876ZM1.082 9.986L1.082 7.071L13.272 7.071L13.272 9.986L1.082 9.986ZM1.082 3.096L1.082 0.181L22.918 0.181L22.918 3.096L1.082 3.096ZM1.082 23.819L1.082 20.904L17.300 20.904L17.300 23.819L1.082 23.819Z'/%3E%3C/svg%3E")}:root{--vp-c-white: #fff;--vp-c-black: #000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-turquoise-1: #5086a1;--vp-c-turquoise-2: #6aa1b7;--vp-c-turquoise-3: #8cccd5;--vp-c-turquoise-soft: rgba(131, 208, 218, .314);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-turquoise-1: #8cccd5;--vp-c-turquoise-2: #6aa1b7;--vp-c-turquoise-3: #5086a1;--vp-c-turquoise-soft: rgba(131, 208, 218, .314);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16)}:root{--vp-c-bg: #fff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #fff;--vp-c-bg-soft: #f6f6f7;--vp-c-bg-safe: #f6f8fa}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127;--vp-c-bg-safe: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56);--vp-c-text-dark-1: rgba(255, 255, 245, .86);--vp-c-text-dark-2: rgba(235, 235, 245, .6);--vp-c-text-dark-3: rgba(235, 235, 245, .38)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-turquoise-1);--vp-c-brand-2: var(--vp-c-turquoise-2);--vp-c-brand-3: var(--vp-c-turquoise-3);--vp-c-brand-soft: var(--vp-c-turquoise-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Chinese Quotes", inter, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, sfmono-regular, menlo, monaco, consolas, "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)),:root:where(:lang(zh-CN)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, "PingFang SC", "Noto Sans CJK SC", "Noto Sans SC", "Heiti SC", "Microsoft YaHei", "DengXian", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}.dark{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .27), 0 1px 2px rgba(0, 0, 0, .22);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .3), 0 1px 4px rgba(0, 0, 0, .27);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .35), 0 2px 6px rgba(0, 0, 0, .3);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .39), 0 3px 9px rgba(0, 0, 0, .35);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .42), 0 4px 12px rgba(0, 0, 0, .38)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60;--vp-z-index-back-to-top: 70;--vp-z-index-overlay: 80}:root{--vp-layout-max-width: 1440px;--content-width: var(--vp-layout-max-width)}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-safe);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-green-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-green-1);--vp-code-line-diff-remove-color: var(--vp-c-red-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-red-1);--vp-code-line-warning-color: var(--vp-c-yellow-soft);--vp-code-line-error-color: var(--vp-c-red-soft);--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2m-6 9 2 2 4-4'/%3E%3C/svg%3E");--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-1);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1)}.dark{--vp-button-brand-bg: var(--vp-c-brand-2);--vp-button-brand-hover-bg: var(--vp-c-brand-1);--vp-button-brand-active-bg: var(--vp-c-brand-3)}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-brand-soft);--vp-custom-block-tip-code-bg: var(--vp-c-brand-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .sidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none;--vp-c-text-hero-name: var(--vp-c-text-dark-1);--vp-c-text-hero-tagline: var(--vp-c-text-dark-2);--vp-c-text-hero-text: var(--vp-c-text-dark-1)}:root{--vp-friends-text-color: var(--vp-c-text-1);--vp-friends-bg-color: var(--vp-c-bg-alt);--vp-friends-name-color: var(--vp-c-text-2)}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-brand-1);--vp-badge-tip-bg: var(--vp-c-brand-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--search-bg-color: var(--vp-c-default-soft);--search-text-color: var(--vp-c-text-2);--search-item-text-color: var(--vp-c-text-1);--search-item-focus-bg-color: var(--vp-c-bg-alt);--search-input-width: 8rem;--search-result-width: 20rem;--search-border-color: transparent;--search-accent-color: var(--vp-c-brand-1)}:root{--code-tabs-nav-text-color: var(--vp-c-text-1);--code-tabs-nav-bg-color: #eaeef1;--code-tabs-nav-hover-color: var(--vp-code-block-bg)}.dark{--code-tabs-nav-bg-color: #3a404c;--code-tabs-nav-hover-color: #434a57}:root,html.dark{--important-title-color: var(--vp-c-text-1);--important-bg-color: var(--vp-c-purple-soft);--important-border-color: transparent;--important-code-bg-color: var(--vp-c-purple-soft);--info-title-color: var(--vp-c-text-1);--info-bg-color: var(--vp-custom-block-info-bg);--info-border-color: var(--vp-custom-block-info-border);--info-code-bg-color: var(--vp-custom-block-info-code-bg);--note-title-color: var(--vp-c-text-3);--note-bg-color: var(--vp-c-bg);--note-border-color: var(--vp-c-divider);--note-code-bg-color: var(--vp-c-default-soft);--tip-title-color: var(--vp-c-text-1);--tip-bg-color: var(--vp-custom-block-tip-bg);--tip-border-color: var(--vp-custom-block-tip-border);--tip-code-bg-color: var(--vp-custom-block-tip-code-bg);--warning-title-color: var(--vp-c-text-1);--warning-bg-color: var(--vp-custom-block-warning-bg);--warning-border-color: var(--vp-custom-block-warning-border);--warning-code-bg-color: var(--vp-custom-block-warning-code-bg);--caution-title-color: var(--vp-c-text-1);--caution-bg-color: var(--vp-custom-block-danger-bg);--caution-border-color: var(--vp-custom-block-danger-border);--caution-code-bg-color: var(--vp-custom-block-danger-code-bg);--detail-bg-color: var(--vp-custom-block-details-bg);--detail-text-color: inherit;--detail-code-bg-color: var(--vp-custom-block-details-code-bg)}:root{--code-demo-header-bg-color: var(--vp-c-bg-soft)}:root{--tab-bg-color: var(--vp-c-bg);--tab-nav-bg-color: var(--vp-c-bg-soft);--tab-nav-hover-color: var(--tab-bg-color);--tab-nav-text-color: var(--vp-c-text-1)}:root{--t-color: .25s ease;--code-bg-color: var(--vp-code-block-bg);--medium-zoom-bg-color: var(--vp-c-bg)}:root{--vp-c-plot-light: var(--vp-c-bg);--vp-c-bg-plot-light: var(--vp-c-text-1);--vp-c-plot-dark: var(--vp-c-bg);--vp-c-bg-plot-dark: var(--vp-c-text-2)}:root{--photo-swipe-bullet: var(--vp-c-bg);--photo-swipe-bullet-active: var(--vp-c-brand-1)}:root{--vp-mark-color: var(--vp-c-brand-3);--vp-mark-color-soft: var(--vp-c-brand-soft)}.dark{--vp-mark-color: var(--vp-c-brand-3);--vp-mark-color-soft: var(--vp-c-brand-soft)}@media (prefers-reduced-motion: reduce){*,:before,:after{background-attachment:initial!important;transition-delay:0s!important;transition-duration:0s!important;animation-duration:1ms!important;animation-delay:-1ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}*,:before,:after{box-sizing:border-box}html{font-size:16px;line-height:1.4;scroll-padding-top:80px}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-synthesis:none;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{width:100%;min-width:320px;min-height:100vh;margin:0;font-family:var(--vp-font-family-base);font-weight:400;line-height:24px;background-color:var(--vp-c-bg);direction:ltr}html,body{color:var(--vp-c-text-1);transition:var(--t-color);transition-property:color,background-color;scrollbar-width:thin}html.bg-gray body{background-color:var(--vp-c-bg-alt)}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;font-size:16px;font-weight:400;line-height:24px}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{padding:0;margin:0;list-style:none}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit;border:0}textarea{resize:vertical}select{-webkit-appearance:none;-moz-appearance:none;appearance:none}input{background-color:transparent}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input::-moz-placeholder,textarea::-moz-placeholder{color:var(--vp-c-text-3);-moz-transition:color var(--t-color);transition:color var(--t-color)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3);transition:color var(--t-color)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}fieldset{padding:0;margin:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{display:inline-block;margin:auto 2px;vertical-align:middle}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{display:inline-block;width:1em;height:1em;vertical-align:middle}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-color:transparent;background-image:var(--icon);background-repeat:no-repeat;background-size:100% 100%}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){color:inherit;background-color:currentcolor;-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-external-link{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' aria-hidden='true' focusable='false' viewBox='0 0 24 24' %3E %3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E %3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' fill='currentColor' /%3E %3C/svg%3E")}.vpi-lock{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E %3Cpath fill='currentColor' d='M18 8h-1V7c0-2.757-2.243-5-5-5S7 4.243 7 7v1H6a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V10a2 2 0 0 0-2-2M9 7c0-1.654 1.346-3 3-3s3 1.346 3 3v1H9zm4 8.723V18h-2v-2.277c-.595-.346-1-.984-1-1.723a2 2 0 1 1 4 0c0 .738-.405 1.376-1 1.723' /%3E %3C/svg%3E")}.vpi-loading{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 24 24'%3E%3Ccircle cx='18' cy='12' r='0' fill='%23000'%3E%3Canimate attributeName='r' begin='.67' calcMode='spline' dur='1.5s' keySplines='0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8' repeatCount='indefinite' values='0;2;0;0'/%3E%3C/circle%3E%3Ccircle cx='12' cy='12' r='0' fill='%23000'%3E%3Canimate attributeName='r' begin='.33' calcMode='spline' dur='1.5s' keySplines='0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8' repeatCount='indefinite' values='0;2;0;0'/%3E%3C/circle%3E%3Ccircle cx='6' cy='12' r='0' fill='%23000'%3E%3Canimate attributeName='r' begin='0' calcMode='spline' dur='1.5s' keySplines='0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8;0.2 0.2 0.4 0.8' repeatCount='indefinite' values='0;2;0;0'/%3E%3C/circle%3E%3C/svg%3E")}.vpi-print{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' d='M16 8V5H8v3H6V3h12v5zM4 10h16zm14 2.5q.425 0 .713-.288T19 11.5q0-.425-.288-.712T18 10.5q-.425 0-.712.288T17 11.5q0 .425.288.713T18 12.5M16 19v-4H8v4zm2 2H6v-4H2v-6q0-1.275.875-2.137T5 8h14q1.275 0 2.138.863T22 11v6h-4zm2-6v-4q0-.425-.288-.712T19 10H5q-.425 0-.712.288T4 11v4h2v-2h12v2z' /%3E%3C/svg%3E")}.vpi-books{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='32' d='M256 160c16-63.16 76.43-95.41 208-96a15.94 15.94 0 0 1 16 16v288a16 16 0 0 1-16 16c-128 0-177.45 25.81-208 64c-30.37-38-80-64-208-64c-9.88 0-16-8.05-16-17.93V80a15.94 15.94 0 0 1 16-16c131.57.59 192 32.84 208 96m0 0v288' /%3E%3C/svg%3E")}.vpi-clock{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E %3Cpath fill='currentColor' d='M9 11H7v2h2v-2zm4 0h-2v2h2v-2zm4 0h-2v2h2v-2zm2-7h-1V2h-2v2H8V2H6v2H5c-1.11 0-1.99.9-1.99 2L3 20a2 2 0 0 0 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V9h14v11z' /%3E %3C/svg%3E")}.vpi-tag{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E %3Cg fill='currentColor'%3E %3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M17.707 9.293a1 1 0 010 1.414l-7 7a1 1 0 01-1.414 0l-7-7A.997.997 0 012 10V5a3 3 0 013-3h5c.256 0 .512.098.707.293l7 7zM5 6a1 1 0 100-2 1 1 0 000 2z' /%3E %3C/g%3E %3C/svg%3E")}.vpi-user{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 256 256'%3E %3Cpath fill='currentColor' d='M230.92 212c-15.23-26.33-38.7-45.21-66.09-54.16a72 72 0 1 0-73.66 0c-27.39 8.94-50.86 27.82-66.09 54.16a8 8 0 1 0 13.85 8c18.84-32.56 52.14-52 89.07-52s70.23 19.44 89.07 52a8 8 0 1 0 13.85-8M72 96a56 56 0 1 1 56 56a56.06 56.06 0 0 1-56-56' /%3E %3C/svg%3E")}.vpi-folder{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E %3Cg fill='currentColor'%3E %3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M2 6a2 2 0 012-2h5l2 2h5a2 2 0 012 2v6a2 2 0 01-2 2H4a2 2 0 01-2-2V6z' /%3E %3C/g%3E %3C/svg%3E")}.vpi-archive{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256'%3E%3Cpath fill='currentColor' d='m213.66 82.34l-56-56A8 8 0 0 0 152 24H56a16 16 0 0 0-16 16v176a16 16 0 0 0 16 16h36a4 4 0 0 0 4-4v-20h-7.73a8.17 8.17 0 0 1-8.27-7.47a8 8 0 0 1 8-8.53h8v-16h-7.73a8.17 8.17 0 0 1-8.27-7.47a8 8 0 0 1 8-8.53h8v-16h-7.73a8.17 8.17 0 0 1-8.27-7.47a8 8 0 0 1 8-8.53h8v-7.73a8.18 8.18 0 0 1 7.47-8.25a8 8 0 0 1 8.53 8v8h7.73a8.17 8.17 0 0 1 8.25 7.47a8 8 0 0 1-8 8.53h-8v16h7.73a8.17 8.17 0 0 1 8.25 7.47a8 8 0 0 1-8 8.53h-8v16h7.73a8.17 8.17 0 0 1 8.25 7.47a8 8 0 0 1-8 8.53h-8v20a4 4 0 0 0 4 4h84a16 16 0 0 0 16-16V88a8 8 0 0 0-2.28-5.66M152 88V44l44 44Z' /%3E%3C/svg%3E")}.vpi-category{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 20 20'%3E%3Cpath fill='%23000' d='M5 7h13v10H2V4h7l2 2H4v9h1z'/%3E%3C/svg%3E")}.vpi-blog-ext{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='currentColor' d='M22 3H5a2 2 0 0 0-2 2v4h2V5h17v14H5v-4H3v4a2 2 0 0 0 2 2h17a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2M7 15v-2H0v-2h7V9l4 3zm13-2h-7v-2h7zm0-4h-7V7h7zm-3 8h-4v-2h4z' /%3E%3C/svg%3E")}.vpi-location{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E %3Cg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E %3Ccircle cx='12' cy='10' r='3' /%3E %3Cpath d='M12 2a8 8 0 0 0-8 8c0 1.892.402 3.13 1.5 4.5L12 22l6.5-7.5c1.098-1.37 1.5-2.608 1.5-4.5a8 8 0 0 0-8-8' /%3E %3C/g%3E %3C/svg%3E")}.vpi-organization{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E %3Cpath fill='currentColor' d='M1.75 16A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0h8.5C11.216 0 12 .784 12 1.75v12.5c0 .085-.006.168-.018.25h2.268a.25.25 0 0 0 .25-.25V8.285a.25.25 0 0 0-.111-.208l-1.055-.703a.749.749 0 1 1 .832-1.248l1.055.703c.487.325.779.871.779 1.456v5.965A1.75 1.75 0 0 1 14.25 16h-3.5a.766.766 0 0 1-.197-.026c-.099.017-.2.026-.303.026h-3a.75.75 0 0 1-.75-.75V14h-1v1.25a.75.75 0 0 1-.75.75Zm-.25-1.75c0 .138.112.25.25.25H4v-1.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 .75.75v1.25h2.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM3.75 6h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5M3 3.75A.75.75 0 0 1 3.75 3h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 3.75m4 3A.75.75 0 0 1 7.75 6h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 7 6.75M7.75 3h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5M3 9.75A.75.75 0 0 1 3.75 9h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 9.75M7.75 9h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5' /%3E %3C/svg%3E")}.vpi-back-to-top{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='4' d='M24.008 14.1V42M12 26l12-12l12 12M12 6h24' /%3E%3C/svg%3E")}.vpi-folder{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 1024 1024'%3E%3Cpath fill='%23000' d='M880 298.4H521L403.7 186.2a8.15 8.15 0 0 0-5.5-2.2H144c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V330.4c0-17.7-14.3-32-32-32'/%3E%3C/svg%3E")}.vpi-folder-open{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 1024 1024'%3E%3Cpath fill='%23000' d='M928 444H820V330.4c0-17.7-14.3-32-32-32H473L355.7 186.2a8.15 8.15 0 0 0-5.5-2.2H96c-17.7 0-32 14.3-32 32v592c0 17.7 14.3 32 32 32h698c13 0 24.8-7.9 29.7-20l134-332c1.5-3.8 2.3-7.9 2.3-12c0-17.7-14.3-32-32-32m-180 0H238c-13 0-24.8 7.9-29.7 20L136 643.2V256h188.5l119.6 114.4H748z'/%3E%3C/svg%3E")}.vpi-post{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M20 22H4a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h16a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1m-1-2V4H5v16zM7 6h4v4H7zm0 6h10v2H7zm0 4h10v2H7zm6-9h4v2h-4z'/%3E%3C/svg%3E")}.vpi-social-discord{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418Z'/%3E%3C/svg%3E")}.vpi-social-facebook{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z'/%3E%3C/svg%3E")}.vpi-social-github{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.vpi-social-instagram{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.03.084c-1.277.06-2.149.264-2.91.563a5.874 5.874 0 0 0-2.124 1.388 5.878 5.878 0 0 0-1.38 2.127C.321 4.926.12 5.8.064 7.076.008 8.354-.005 8.764.001 12.023c.007 3.259.021 3.667.083 4.947.061 1.277.264 2.149.563 2.911.308.789.72 1.457 1.388 2.123a5.872 5.872 0 0 0 2.129 1.38c.763.295 1.636.496 2.913.552 1.278.056 1.689.069 4.947.063 3.257-.007 3.668-.021 4.947-.082 1.28-.06 2.147-.265 2.91-.563a5.881 5.881 0 0 0 2.123-1.388 5.881 5.881 0 0 0 1.38-2.129c.295-.763.496-1.636.551-2.912.056-1.28.07-1.69.063-4.948-.006-3.258-.02-3.667-.081-4.947-.06-1.28-.264-2.148-.564-2.911a5.892 5.892 0 0 0-1.387-2.123 5.857 5.857 0 0 0-2.128-1.38C19.074.322 18.202.12 16.924.066 15.647.009 15.236-.006 11.977 0 8.718.008 8.31.021 7.03.084m.14 21.693c-1.17-.05-1.805-.245-2.228-.408a3.736 3.736 0 0 1-1.382-.895 3.695 3.695 0 0 1-.9-1.378c-.165-.423-.363-1.058-.417-2.228-.06-1.264-.072-1.644-.08-4.848-.006-3.204.006-3.583.061-4.848.05-1.169.246-1.805.408-2.228.216-.561.477-.96.895-1.382a3.705 3.705 0 0 1 1.379-.9c.423-.165 1.057-.361 2.227-.417 1.265-.06 1.644-.072 4.848-.08 3.203-.006 3.583.006 4.85.062 1.168.05 1.804.244 2.227.408.56.216.96.475 1.382.895.421.42.681.817.9 1.378.165.422.362 1.056.417 2.227.06 1.265.074 1.645.08 4.848.005 3.203-.006 3.583-.061 4.848-.051 1.17-.245 1.805-.408 2.23-.216.56-.477.96-.896 1.38a3.705 3.705 0 0 1-1.378.9c-.422.165-1.058.362-2.226.418-1.266.06-1.645.072-4.85.079-3.204.007-3.582-.006-4.848-.06m9.783-16.192a1.44 1.44 0 1 0 1.437-1.442 1.44 1.44 0 0 0-1.437 1.442M5.839 12.012a6.161 6.161 0 1 0 12.323-.024 6.162 6.162 0 0 0-12.323.024M8 12.008A4 4 0 1 1 12.008 16 4 4 0 0 1 8 12.008'/%3E%3C/svg%3E")}.vpi-social-linkedin{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/%3E%3C/svg%3E")}.vpi-social-mastodon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z'/%3E%3C/svg%3E")}.vpi-social-npm{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z'/%3E%3C/svg%3E")}.vpi-social-slack{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z'/%3E%3C/svg%3E")}.vpi-social-twitter,.vpi-social-x{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z'/%3E%3C/svg%3E")}.vpi-social-youtube{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E")}.vpi-social-qq{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath fill='currentColor' d='M29.11 26.278c-.72.087-2.804-3.296-2.804-3.296c0 1.959-1.009 4.515-3.191 6.362c1.052.325 3.428 1.198 2.863 2.151c-.457.772-7.844.493-9.977.252c-2.133.24-9.52.519-9.977-.252c-.565-.953 1.807-1.826 2.861-2.151c-2.182-1.846-3.191-4.403-3.191-6.362c0 0-2.083 3.384-2.804 3.296c-.335-.041-.776-1.853.584-6.231c.641-2.064 1.375-3.78 2.509-6.611C5.792 6.13 8.811.001 15.999.001c7.109.001 10.197 6.008 10.017 13.435c1.132 2.826 1.869 4.553 2.509 6.611c1.361 4.379.92 6.191.584 6.231z'/%3E%3C/svg%3E")}.vpi-social-weibo{--icon: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M17.525 11.378c1.263.392 2.669 1.336 2.669 3.004c0 2.763-3.98 6.239-9.964 6.239c-4.565 0-9.23-2.213-9.23-5.852c0-1.902 1.204-4.102 3.277-6.177c2.773-2.77 6.004-4.033 7.219-2.816c.537.537.588 1.464.244 2.572c-.178.557.525.25.525.25c2.24-.938 4.196-.994 4.909.027c.38.543.343 1.306-.008 2.19c-.163.407.048.471.36.563zm-7.282 7.939c3.641-.362 6.401-2.592 6.167-4.983c-.237-2.391-3.382-4.038-7.023-3.677c-3.64.36-6.403 2.59-6.167 4.98c.237 2.394 3.382 4.039 7.023 3.68zM6.16 14.438c.754-1.527 2.712-2.39 4.446-1.94c1.793.463 2.707 2.154 1.976 3.8c-.744 1.682-2.882 2.578-4.695 1.993c-1.752-.566-2.493-2.294-1.727-3.853zm1.446 2.587c.568.257 1.325.013 1.676-.55c.346-.568.163-1.217-.407-1.459c-.563-.237-1.291.008-1.64.553c-.354.547-.189 1.202.371 1.456zm2.206-1.808c.219.092.501-.012.628-.231c.123-.22.044-.466-.178-.548c-.216-.084-.486.018-.613.232c-.123.214-.054.458.163.547zM19.873 9.5a.725.725 0 1 1-1.378-.451a1.38 1.38 0 0 0-.288-1.357a1.395 1.395 0 0 0-1.321-.425a.723.723 0 1 1-.303-1.416a2.836 2.836 0 0 1 3.29 3.649zm-3.916-6.575A5.831 5.831 0 0 1 21.5 4.72a5.836 5.836 0 0 1 1.22 5.704a.838.838 0 0 1-1.06.54a.844.844 0 0 1-.542-1.062a4.143 4.143 0 0 0-4.807-5.327a.845.845 0 0 1-.354-1.65z'/%3E%3C/svg%3E")}.vpi-social-bilibili{--icon: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M3 10a4 4 0 0 1 4-4h10a4 4 0 0 1 4 4v6a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4v-6zm5-7l2 3m6-3l-2 3m-7 6l3-1m4 0l3 1m-8 3a1.625 1.625 0 0 0 3 0a1.625 1.625 0 0 0 3 0'/%3E%3C/svg%3E")}.vpi-social-gitlab{--icon: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M105.2 24.9c-3.1-8.9-15.7-8.9-18.9 0L29.8 199.7h132c-.1 0-56.6-174.8-56.6-174.8M.9 287.7c-2.6 8 .3 16.9 7.1 22l247.9 184l-226.2-294zm160.8-88l94.3 294l94.3-294zm349.4 88l-28.8-88l-226.3 294l247.9-184c6.9-5.1 9.7-14 7.2-22M425.7 24.9c-3.1-8.9-15.7-8.9-18.9 0l-56.6 174.8h132z'/%3E%3C/svg%3E")}.vpi-social-docker{--icon: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.983 11.078h2.119a.186.186 0 00.186-.185V9.006a.186.186 0 00-.186-.186h-2.119a.185.185 0 00-.185.185v1.888c0 .102.083.185.185.185m-2.954-5.43h2.118a.186.186 0 00.186-.186V3.574a.186.186 0 00-.186-.185h-2.118a.185.185 0 00-.185.185v1.888c0 .102.082.185.185.185m0 2.716h2.118a.187.187 0 00.186-.186V6.29a.186.186 0 00-.186-.185h-2.118a.185.185 0 00-.185.185v1.887c0 .102.082.185.185.186m-2.93 0h2.12a.186.186 0 00.184-.186V6.29a.185.185 0 00-.185-.185H8.1a.185.185 0 00-.185.185v1.887c0 .102.083.185.185.186m-2.964 0h2.119a.186.186 0 00.185-.186V6.29a.185.185 0 00-.185-.185H5.136a.186.186 0 00-.186.185v1.887c0 .102.084.185.186.186m5.893 2.715h2.118a.186.186 0 00.186-.185V9.006a.186.186 0 00-.186-.186h-2.118a.185.185 0 00-.185.185v1.888c0 .102.082.185.185.185m-2.93 0h2.12a.185.185 0 00.184-.185V9.006a.185.185 0 00-.184-.186h-2.12a.185.185 0 00-.184.185v1.888c0 .102.083.185.185.185m-2.964 0h2.119a.185.185 0 00.185-.185V9.006a.185.185 0 00-.184-.186h-2.12a.186.186 0 00-.186.186v1.887c0 .102.084.185.186.185m-2.92 0h2.12a.185.185 0 00.184-.185V9.006a.185.185 0 00-.184-.186h-2.12a.185.185 0 00-.184.185v1.888c0 .102.082.185.185.185M23.763 9.89c-.065-.051-.672-.51-1.954-.51-.338.001-.676.03-1.01.087-.248-1.7-1.653-2.53-1.716-2.566l-.344-.199-.226.327c-.284.438-.49.922-.612 1.43-.23.97-.09 1.882.403 2.661-.595.332-1.55.413-1.744.42H.751a.751.751 0 00-.75.748 11.376 11.376 0 00.692 4.062c.545 1.428 1.355 2.48 2.41 3.124 1.18.723 3.1 1.137 5.275 1.137.983.003 1.963-.086 2.93-.266a12.248 12.248 0 003.823-1.389c.98-.567 1.86-1.288 2.61-2.136 1.252-1.418 1.998-2.997 2.553-4.4h.221c1.372 0 2.215-.549 2.68-1.009.309-.293.55-.65.707-1.046l.098-.288Z'/%3E%3C/svg%3E")}.vpi-social-juejin{--icon: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='m12 14.316l7.454-5.88l-2.022-1.625L12 11.1l-.004.003l-5.432-4.288l-2.02 1.624l7.452 5.88Zm0-7.247l2.89-2.298L12 2.453l-.004-.005l-2.884 2.318l2.884 2.3Zm0 11.266l-.005.002l-9.975-7.87L0 12.088l.194.156l11.803 9.308l7.463-5.885L24 12.085l-2.023-1.624Z'/%3E%3C/svg%3E")}.vpi-social-zhihu{--icon: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M5.721 0C2.251 0 0 2.25 0 5.719V18.28C0 21.751 2.252 24 5.721 24h12.56C21.751 24 24 21.75 24 18.281V5.72C24 2.249 21.75 0 18.281 0zm1.964 4.078c-.271.73-.5 1.434-.68 2.11h4.587c.545-.006.445 1.168.445 1.171H9.384a58.104 58.104 0 0 1-.112 3.797h2.712c.388.023.393 1.251.393 1.266H9.183a9.223 9.223 0 0 1-.408 2.102l.757-.604c.452.456 1.512 1.712 1.906 2.177c.473.681.063 2.081.063 2.081l-2.794-3.382c-.653 2.518-1.845 3.607-1.845 3.607c-.523.468-1.58.82-2.64.516c2.218-1.73 3.44-3.917 3.667-6.497H4.491c0-.015.197-1.243.806-1.266h2.71c.024-.32.086-3.254.086-3.797H6.598c-.136.406-.158.447-.268.753c-.594 1.095-1.603 1.122-1.907 1.155c.906-1.821 1.416-3.6 1.591-4.064c.425-1.124 1.671-1.125 1.671-1.125M13.078 6h6.377v11.33h-2.573l-2.184 1.373l-.401-1.373h-1.219zm1.313 1.219v8.86h.623l.263.937l1.455-.938h1.456v-8.86z'/%3E%3C/svg%3E")}.vpi-social-douban{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 20h16M5 4h14M8 8h8a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2v-2a2 2 0 0 1 2-2m8 6l-2 6m-6-3l1 3'/%3E%3C/svg%3E")}.vpi-social-steam{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath fill='currentColor' d='M15.974 0C7.573 0 .682 6.479.031 14.714l8.573 3.547a4.521 4.521 0 0 1 2.552-.786c.083 0 .167.005.25.005l3.813-5.521v-.078c0-3.328 2.703-6.031 6.031-6.031s6.036 2.708 6.036 6.036a6.039 6.039 0 0 1-6.036 6.031h-.135l-5.438 3.88c0 .073.005.141.005.214c0 2.5-2.021 4.526-4.521 4.526c-2.177 0-4.021-1.563-4.443-3.635L.583 20.36c1.901 6.719 8.063 11.641 15.391 11.641c8.833 0 15.995-7.161 15.995-16s-7.161-16-15.995-16zm-5.922 24.281l-1.964-.813a3.413 3.413 0 0 0 1.755 1.667a3.404 3.404 0 0 0 4.443-1.833a3.38 3.38 0 0 0 .005-2.599a3.36 3.36 0 0 0-1.839-1.844a3.38 3.38 0 0 0-2.5-.042l2.026.839c1.276.536 1.88 2 1.349 3.276s-2 1.88-3.276 1.349zm15.219-12.406a4.025 4.025 0 0 0-4.016-4.021a4.02 4.02 0 1 0 0 8.042a4.022 4.022 0 0 0 4.016-4.021m-7.026-.005c0-1.672 1.349-3.021 3.016-3.021s3.026 1.349 3.026 3.021c0 1.667-1.359 3.021-3.026 3.021s-3.016-1.354-3.016-3.021'/%3E%3C/svg%3E")}.vpi-social-stackoverflow{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath fill='currentColor' d='M25.312 29.151v-8.536h2.849V32H2.458V20.615h2.839v8.536zM8.145 26.307h14.324v-2.848H8.145zm.35-6.468l13.975 2.916l.599-2.76L9.1 17.083zm1.812-6.74l12.939 6.037l1.203-2.6l-12.937-6.041l-1.204 2.584zm3.62-6.38L24.88 15.86l1.813-2.163L15.74 4.562l-1.803 2.151zM21 0l-2.328 1.724l8.541 11.473l2.328-1.724z'/%3E%3C/svg%3E")}.vpi-social-xbox{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath fill='currentColor' d='M5.469 28.041A15.907 15.907 0 0 0 16 32c4.036 0 7.719-1.489 10.536-3.959c2.5-2.547-5.755-11.609-10.536-15.219c-4.776 3.609-13.036 12.672-10.531 15.219m14.88-19.202c3.333 3.948 9.979 13.749 8.104 17.213A15.924 15.924 0 0 0 32 16.005c0-4.453-1.817-8.484-4.76-11.38c0 0-.037-.032-.109-.057a1.056 1.056 0 0 0-.376-.057c-.785 0-2.645.577-6.405 4.328zM4.869 4.568c-.072.025-.109.057-.115.057a15.933 15.933 0 0 0-4.755 11.38c0 3.807 1.328 7.297 3.547 10.041c-1.864-3.468 4.771-13.265 8.109-17.208C7.895 5.082 6.03 4.51 5.244 4.51a.901.901 0 0 0-.376.063zM16 4.735s-3.927-2.297-6.995-2.407c-1.203-.041-1.937.391-2.027.453C9.838.86 12.879 0 15.978 0h.021c3.115 0 6.14.86 9.021 2.781c-.089-.063-.819-.495-2.027-.453c-3.068.109-6.995 2.401-6.995 2.401z'/%3E%3C/svg%3E")}#nprogress .bar{background:var(--vp-c-brand-1)}#nprogress .spinner-icon{border-top-color:var(--vp-c-brand-1);border-left-color:var(--vp-c-brand-1)}#nprogress .peg{box-shadow:0 0 10px var(--vp-c-brand-1),0 0 5px var(--vp-c-brand-1)}.vp-comment{margin-top:80px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.vp-icon{margin:0 .3em}.smooth{scroll-behavior:smooth}.fade-slide-y-enter-active{transition:.15s ease!important;transition-property:opacity,transform}.fade-slide-y-leave-active{transition:.15s cubic-bezier(0,1,.3,1)!important;transition-property:opacity,transform}.fade-slide-y-enter-from,.fade-slide-y-leave-to{opacity:0;transform:translateY(10px)}.fade-slide-x-enter-active{transition:.15s ease!important;transition-property:opacity,transform}.fade-slide-x-leave-active{transition:.25s cubic-bezier(0,1,.3,1)!important;transition-property:opacity,transform}.fade-slide-x-enter-from,.fade-slide-x-leave-to{opacity:0!important;transform:translate(-10px)!important}.vp-doc{position:relative}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;color:var(--vp-c-text-1);overflow-wrap:break-word;outline:none}.vp-doc h1{font-size:28px;line-height:40px;letter-spacing:-.02em}.vp-doc h2{padding-top:24px;margin:48px 0 16px;font-size:24px;line-height:32px;letter-spacing:-.02em;border-top:1px solid var(--vp-c-divider);transition:border-top var(--t-color),color var(--t-color)}.vp-doc h2:first-of-type{border-top:none}.vp-doc h3{margin:32px 0 16px;font-size:20px;line-height:28px;letter-spacing:-.01em}.vp-doc h4{margin:24px 0 16px;font-size:18px;line-height:24px;letter-spacing:-.01em}.vp-doc h5,.vp-doc h6{margin:24px 0 16px;font-size:16px;line-height:24px;letter-spacing:-.01em}.vp-doc .header-anchor{position:relative;color:currentcolor;text-decoration:none}.vp-doc .header-anchor:before{position:absolute;left:-.75em;font-size:.8em;color:var(--vp-c-brand-1);content:var(--vp-header-anchor-symbol);opacity:0;transition:color var(--t-color)}.vp-doc .header-anchor:hover{color:inherit}.vp-doc .header-anchor:hover:before{opacity:1}.vp-doc .header-anchor:focus-visible{outline:none}.vp-doc .header-anchor:focus-visible:before{position:absolute;left:-.75em;color:var(--vp-c-brand-1);content:var(--vp-header-anchor-symbol);outline:auto}@media (min-width: 768px){.vp-doc h1{font-size:32px;line-height:40px;letter-spacing:-.02em}}.vp-doc img{display:inline-block}.vp-doc img+img{margin-left:.5rem}.vp-doc a img+span{margin-left:.2rem}.vp-doc p,.vp-doc summary{margin:16px 0;color:var(--vp-c-text-1);transition:color var(--t-color)}.vp-doc p{line-height:28px}.vp-doc blockquote{padding-left:16px;margin:16px 0;color:var(--vp-c-text-2);border-left:2px solid var(--vp-c-divider);transition:border-color var(--t-color),color var(--t-color)}.vp-doc blockquote>p{margin:0;font-size:16px}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color var(--t-color),opacity var(--t-color),text-underline-offset var(--t-color)}@media print{.vp-doc a[href^="http://"]:after,.vp-doc a[href^="https://"]:after{content:" (" attr(href) ") "}}.vp-doc :not(h1,h2,h3,h4,h5,h6) a:hover{color:var(--vp-c-brand-2);text-underline-offset:5px}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;margin:20px 0;overflow-x:auto;border-collapse:collapse}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:var(--t-color);transition-property:background-color,border-top}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{padding:8px 16px;border:1px solid var(--vp-c-divider);transition:border var(--t-color)}.vp-doc th{font-size:14px;font-weight:600;color:var(--vp-c-text-2);text-align:left;background-color:var(--vp-c-bg-soft);transition:var(--t-color);transition-property:color,background-color,border}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider);transition:border-top var(--t-color)}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color);transition:color var(--t-color)}.vp-doc :not(pre)>code{padding:3px 6px;background-color:var(--vp-code-bg);border-radius:4px;transition:color var(--t-color),background-color var(--t-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc a>code{color:var(--vp-code-link-color);transition:color var(--t-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc mark{padding:2px;color:currentcolor;background-color:transparent;background-image:linear-gradient(to bottom,transparent 25%,var(--vp-mark-color-soft) 30%,var(--vp-mark-color-soft) 50%,var(--vp-mark-color) 75%,var(--vp-mark-color) 90%,var(--vp-mark-color-soft) 100%);background-repeat:no-repeat;background-position:0 1em;border-bottom-right-radius:4px;border-bottom-left-radius:4px;animation:mark-highlight 1.5s .5s forwards}.vp-doc :not(h1,h2,h3,h4,h5,h6) mark{font-weight:700}@keyframes mark-highlight{0%{background-position:0 1em}to{background-position:0 0}}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");display:inline-block;flex-shrink:0;width:11px;height:11px;margin-top:-1px;margin-left:4px;color:var(--vp-c-text-3);background:currentcolor;-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{color:currentcolor;content:""}.dark .vp-code span{color:var(--shiki-dark, rgba(235, 235, 245, .6))}html:not(.dark) .vp-code span{color:var(--shiki-light, rgba(60, 60, 67, .78))}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;overflow-x:auto;background-color:var(--vp-code-block-bg);transition:background-color var(--t-color)}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{margin:16px 0;border-radius:8px}}.vp-doc div[class*=language-]+div[class*=language-]{margin-top:-8px}.vp-doc div[class*=language-]:before{position:absolute;top:5px;right:1em;z-index:3;font-size:.75rem;color:var(--vp-code-line-number-color);content:attr(data-title);transition:color var(--t-color)}.vp-doc div[class*=language-] code{display:block;width:-moz-fit-content;width:fit-content;min-width:100%;padding:0 24px;font-size:var(--vp-code-font-size);line-height:var(--vp-code-line-height);color:var(--vp-code-block-color);transition:background-color var(--t-color),color var(--t-color);-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.vp-doc div[class*=language-] pre{position:relative;z-index:1;padding:20px 0;margin:0;overflow-x:auto;background:transparent}@media (min-width: 640px){.vp-doc div[class*=language-] pre{border-radius:6px}}.vp-doc div[class*=language-] pre,.vp-doc div[class*=language-] code{-webkit-hyphens:none;hyphens:none;text-align:left;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;white-space:pre;word-spacing:normal;direction:ltr}.vp-doc div[class*=language-]:not(.line-numbers-mode) .line-numbers{display:none}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc div[class*=language-].line-numbers-mode .line-numbers{position:absolute;top:0;bottom:0;left:0;z-index:3;width:32px;padding-top:20px;font-family:var(--vp-font-family-mono);font-size:var(--vp-code-font-size);line-height:var(--vp-code-line-height);color:var(--vp-code-line-number-color);text-align:center;border-right:1px solid var(--vp-code-block-divider-color);transition:border-right var(--t-color),color var(--t-color)}.vp-doc div[class*=language-].line-numbers-mode .line-numbers .line-number{position:relative;z-index:3;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vp-doc div[class*=language-].line-numbers-mode .line-numbers .line-number:before{content:counter(line-number);counter-increment:line-number}@media print{.vp-doc div[class*=language-].line-numbers-mode{padding-left:0}.vp-doc div[class*=language-].line-numbers-mode .line-numbers{display:none}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-] code .highlighted{z-index:2;display:inline-block;width:calc(100% + 48px);padding:0 24px;margin:0 -24px;background-color:var(--vp-code-line-highlight-color);transition:background-color .5s}.vp-doc div[class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc div[class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc div[class*=language-] code .highlighted-word{padding:1px 3px;margin:-1px -3px;background-color:var(--vp-c-gray-soft);border:1px solid var(--vp-c-border);border-radius:4px}.vp-doc div[class*=language-] code .tab,.vp-doc div[class*=language-] code .space{position:relative}.vp-doc div[class*=language-] code .tab:before{position:absolute;content:"⇥";opacity:.3}.vp-doc div[class*=language-] code .space:before{position:absolute;content:"·";opacity:.3}.vp-doc div[class*=language-] code .diff{display:inline-block;width:calc(100% + 48px);padding:0 24px;margin:0 -24px;transition:background-color .5s}.vp-doc div[class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc div[class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc div[class*=language-] code .diff.remove:before{color:var(--vp-code-line-diff-remove-symbol-color);content:"-";transform:translate(-6px)}.vp-doc div[class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc div[class*=language-] code .diff.add:before{color:var(--vp-code-line-diff-add-symbol-color);content:"+";transform:translate(-6px)}.vp-doc div[class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.7;transition:filter .35s,opacity .35s}.vp-doc div[class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc div[class*=language-] button.copy{position:absolute;top:12px;right:12px;z-index:3;width:40px;height:40px;cursor:pointer;background-color:var(--vp-code-copy-code-bg);background-image:var(--vp-icon-copy);background-repeat:no-repeat;background-position:50%;background-size:20px;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;opacity:0;transition:border-color .25s,background-color .25s,opacity .25s;direction:ltr}.vp-doc div[class*=language-]:hover>button.copy,.vp-doc div[class*=language-]>button.copy:focus,.vp-doc div[class*=language-]>button.copy.copied{opacity:1}.vp-doc div[class*=language-]>button.copy:hover,.vp-doc div[class*=language-]>button.copy.copied{background-color:var(--vp-code-copy-code-hover-bg);border-color:var(--vp-code-copy-code-hover-border-color)}.vp-doc div[class*=language-]>button.copy.copied,.vp-doc div[class*=language-]>button.copy:hover.copied{background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied);border-radius:0 4px 4px 0}.vp-doc div[class*=language-]>button.copy.copied:before,.vp-doc div[class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;display:flex;align-items:center;justify-content:center;width:-moz-fit-content;width:fit-content;height:40px;padding:0 10px;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);text-align:center;white-space:nowrap;content:attr(data-copied);background-color:var(--vp-code-copy-code-hover-bg);border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;transform:translate(calc(-100% - 1px))}@media (max-width: 419px){.vp-doc div[class*=language-]>button.copy{display:none}}.vp-doc div[class*=language-].has-collapsed.collapsed{height:calc(var(--vp-collapsed-lines) * var(--vp-code-line-height) * var(--vp-code-font-size) + 62px);overflow-y:hidden}@property --vp-code-bg-collapsed-lines{inherits: false; initial-value: #fff; syntax: "";}.vp-doc div[class*=language-].has-collapsed .collapsed-lines{--vp-code-bg-collapsed-lines: var(--vp-code-block-bg);position:absolute;right:0;bottom:0;left:0;z-index:4;display:flex;align-items:center;justify-content:center;height:44px;cursor:pointer;background:linear-gradient(to bottom,transparent 0%,var(--vp-code-bg-collapsed-lines) 50%,var(--vp-code-bg-collapsed-lines) 100%);transition:--vp-code-bg-collapsed-lines var(--t-color)}.vp-doc div[class*=language-].has-collapsed .collapsed-lines:hover{--vp-code-bg-collapsed-lines: var(--vp-c-default-soft)}.vp-doc div[class*=language-].has-collapsed .collapsed-lines:before{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2' d='m18 12l-6 6l-6-6m12-6l-6 6l-6-6'/%3E%3C/svg%3E");--trans-rotate: 0deg;display:inline-block;width:24px;height:24px;pointer-events:none;content:"";background-color:var(--vp-code-block-color);-webkit-mask-image:var(--icon);mask-image:var(--icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:20px;mask-size:20px;animation:code-collapsed-lines 1.2s infinite alternate-reverse ease-in-out}.vp-doc div[class*=language-].has-collapsed:not(.collapsed) code{padding-bottom:20px}.vp-doc div[class*=language-].has-collapsed:not(.collapsed) .collapsed-lines:hover{--vp-code-bg-collapsed-lines: transparent}.vp-doc div[class*=language-].has-collapsed:not(.collapsed) .collapsed-lines:before{--trans-rotate: 180deg}@keyframes code-collapsed-lines{0%{opacity:.3;transform:translateY(-2px) rotate(var(--trans-rotate))}to{opacity:1;transform:translateY(2px) rotate(var(--trans-rotate))}}.vp-doc .demo-wrapper{display:flex;flex-direction:column;min-height:40px;margin:40px -16px;border:solid 1px var(--vp-c-divider);border-radius:8px;box-shadow:var(--vp-shadow-2);transition:var(--t-color);transition-property:border,box-shadow}.vp-doc .demo-wrapper .demo-head{display:flex;align-items:center;justify-content:flex-start;min-height:0;border-bottom:solid 1px var(--vp-c-divider);transition:border-bottom var(--t-color)}.vp-doc .demo-wrapper .demo-container{min-height:0;padding:20px;font-size:14px;line-height:22px;background-color:var(--vp-c-bg-alt);border-bottom-right-radius:8px;border-bottom-left-radius:8px;transition:background-color var(--t-color)}.vp-doc .demo-wrapper.has-title .demo-head{border-bottom-color:transparent}.vp-doc .demo-wrapper.only-img{overflow:hidden}.vp-doc .demo-wrapper.only-img img{display:block}.vp-doc .demo-wrapper.only-img .demo-container,.vp-doc .demo-wrapper.no-padding .demo-container{padding:0}.vp-doc .demo-wrapper.has-height .demo-container{height:var(--demo-container-height);overflow-y:auto}.vp-doc .demo-wrapper .demo-ctrl{display:flex;gap:5px;align-items:center;justify-content:flex-start;padding:5px 0 5px 8px}.vp-doc .demo-wrapper .demo-ctrl i{display:inline-block;width:10px;height:10px;background-color:#ccc;border-radius:100%;transition:background-color var(--t-color)}.vp-doc .demo-wrapper .demo-ctrl i:nth-child(1){background-color:var(--vp-c-danger-3)}.vp-doc .demo-wrapper .demo-ctrl i:nth-child(2){background-color:var(--vp-c-warning-3)}.vp-doc .demo-wrapper .demo-ctrl i:nth-child(3){background-color:var(--vp-c-green-3)}.vp-doc .demo-wrapper .demo-title{position:relative;min-width:0;padding:0 16px;margin:0 20px -1px;font-size:14px;font-weight:500;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-alt);border-top-left-radius:8px;border-top-right-radius:8px;transition:var(--t-color);transition-property:color,background-color}.vp-doc .demo-wrapper .demo-title p{max-width:100%;margin:0;overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}.vp-doc .demo-wrapper .demo-title:after,.vp-doc .demo-wrapper .demo-title:before{position:absolute;bottom:0;z-index:1;width:8px;height:8px;content:" ";transition:background var(--t-color)}.vp-doc .demo-wrapper .demo-title:before{left:100%;background:radial-gradient(16px at right top,transparent 50%,var(--vp-c-bg-alt) 50%)}.vp-doc .demo-wrapper .demo-title:after{right:100%;background:radial-gradient(16px at left top,transparent 50%,var(--vp-c-bg-alt) 50%)}.vp-doc .demo-wrapper .demo-container>*:first-child{margin-top:0}.vp-doc .demo-wrapper .demo-container>*:last-child{margin-bottom:0}@media (min-width: 419px){.vp-doc .demo-wrapper{margin:40px 0}}.vp-doc .vp-steps{margin:16px 0}.vp-doc .vp-steps>ol,.vp-doc .vp-steps>ul{padding-inline-start:0;list-style:none}.vp-doc .vp-steps>ol>li,.vp-doc .vp-steps>ul>li{position:relative;min-height:22px;padding-bottom:1px;padding-left:44px}.vp-doc .vp-steps>ol>li:before,.vp-doc .vp-steps>ul>li:before{position:absolute;inset-inline-start:0;top:0;width:28px;height:28px;font-size:16px;font-weight:400;line-height:28px;color:var(--vp-c-text-1);text-align:center;content:counter(list-item);background-color:var(--vp-c-bg-soft);border:solid 1px var(--vp-c-divider);border-radius:100%;transition:var(--t-color);transition-property:color,background-color,border-color}.vp-doc .vp-steps>ol>li:not(:last-of-type):after,.vp-doc .vp-steps>ul>li:not(:last-of-type):after{position:absolute;inset-inline-start:14px;top:34px;bottom:6px;width:1px;content:"";background-color:var(--vp-c-divider);transition:background-color var(--t-color)}.vp-doc .vp-steps>ol>li>:first-child,.vp-doc .vp-steps>ul>li>:first-child{margin-top:0}.vp-doc .vp-steps>ol>li>:first-child:where(h1,h2,h3,h4,h5,h6),.vp-doc .vp-steps>ul>li>:first-child:where(h1,h2,h3,h4,h5,h6){padding-top:0;border-top:none}.vp-doc .vp-steps>ol>li+li,.vp-doc .vp-steps>ul>li+li{margin-top:0}:root{--twoslash-border-color: var(--vp-c-divider);--twoslash-jsdoc-color: #888;--twoslash-underline-color: currentcolor;--twoslash-popup-bg: var(--vp-c-neutral-inverse);--twoslash-popup-shadow: var(--vp-shadow-2);--twoslash-matched-color: inherit;--twoslash-unmatched-color: #888;--twoslash-cursor-color: #8888;--twoslash-error-color: var(--vp-c-danger-1);--twoslash-error-bg: var(--vp-c-danger-soft);--twoslash-tag-color: var(--vp-c-tip-1);--twoslash-tag-bg: var(--vp-c-tip-soft);--twoslash-tag-warn-color: var(--vp-c-warning-1);--twoslash-tag-warn-bg: var(--vp-c-warning-soft);--twoslash-tag-annotate-color: var(--vp-c-green-1);--twoslash-tag-annotate-bg: var(--vp-c-green-soft)}@media (prefers-reduced-motion: reduce){.twoslash *{transition:none!important}}.twoslash:hover .twoslash-hover{border-color:var(--twoslash-underline-color)}.twoslash .twoslash-hover{position:relative;border-bottom:1px dotted transparent;transition:border-color .3s;transition-timing-function:ease}.twoslash .twoslash-popup-container{position:absolute;z-index:10;display:inline-flex;flex-direction:column;text-align:left;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;background:var(--twoslash-popup-bg);border:1px solid var(--twoslash-border-color);border-radius:4px;box-shadow:var(--twoslash-popup-shadow);opacity:0;transition:opacity .3s;transform:translateY(1.5em)}.twoslash .twoslash-query-presisted .twoslash-popup-container{left:50%;z-index:9;transform:translate(-1.3em,1.8em)}.twoslash .twoslash-hover:hover .twoslash-popup-container,.twoslash .twoslash-query-presisted .twoslash-popup-container{pointer-events:auto;opacity:1}.twoslash .twoslash-popup-container:hover{-webkit-user-select:auto;-moz-user-select:auto;user-select:auto}.twoslash .twoslash-popup-arrow{position:absolute;top:-4px;left:1em;width:6px;height:6px;pointer-events:none;background:var(--twoslash-popup-bg);border-top:1px solid var(--twoslash-border-color);border-right:1px solid var(--twoslash-border-color);transform:rotate(-45deg)}.twoslash .twoslash-popup-code,.twoslash .twoslash-popup-docs{padding:6px 8px!important}.twoslash .twoslash-popup-docs{font-family:sans-serif;font-size:.8em;color:var(--twoslash-jsdoc-color);border-top:1px solid var(--twoslash-border-color)}.twoslash .twoslash-popup-docs-tags{display:flex;flex-direction:column}.twoslash .twoslash-popup-docs-tags,.twoslash .twoslash-popup-docs-tag-name{margin-right:.5em}.twoslash .twoslash-error-line{position:relative;padding:6px;margin:.2em 0;color:var(--twoslash-error-color);background-color:var(--twoslash-error-bg);border-left:3px solid var(--twoslash-error-color)}.twoslash .twoslash-error{padding-bottom:2px;background:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%206%203'%20enable-background%3D'new%200%200%206%203'%20height%3D'3'%20width%3D'6'%3E%3Cg%20fill%3D'%23c94824'%3E%3Cpolygon%20points%3D'5.5%2C0%202.5%2C3%201.1%2C3%204.1%2C0'%2F%3E%3Cpolygon%20points%3D'4%2C0%206%2C2%206%2C0.6%205.4%2C0'%2F%3E%3Cpolygon%20points%3D'0%2C2%201%2C3%202.4%2C3%200%2C0.6'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") repeat-x bottom left}.twoslash .twoslash-completion-cursor{position:relative}.twoslash .twoslash-completion-cursor .twoslash-completion-list{position:absolute;top:0;left:0;z-index:8;display:inline-block;margin:3px 0 0 -1px;-webkit-user-select:none;-moz-user-select:none;user-select:none;background:var(--twoslash-popup-bg);border:1px solid var(--twoslash-border-color);box-shadow:var(--twoslash-popup-shadow);transform:translateY(1.2em)}.twoslash-completion-list{display:flex;flex-direction:column;gap:4px;width:240px;padding:4px;font-size:.8rem}.twoslash-completion-list:hover{-webkit-user-select:auto;-moz-user-select:auto;user-select:auto}.twoslash-completion-list:before{position:absolute;top:-1.6em;left:-1px;width:2px;height:1.4em;content:" ";background-color:var(--twoslash-cursor-color)}.twoslash-completion-list li{display:flex;gap:.25em;align-items:center;overflow:hidden;line-height:1em}.twoslash-completion-list li span.twoslash-completions-unmatched{color:var(--twoslash-unmatched-color)}.twoslash-completion-list .deprecated{text-decoration:line-through;opacity:.5}.twoslash-completion-list li span.twoslash-completions-matched{color:var(--twoslash-matched-color)}.twoslash-highlighted{padding:1px 2px;margin:-1px -3px;background-color:var(--twoslash-highlighted-bg);border:1px solid var(--twoslash-highlighted-border);border-radius:4px}.twoslash-completion-list .twoslash-completions-icon{flex:none;width:1em;color:var(--twoslash-unmatched-color)}.twoslash .twoslash-tag-line{position:relative;display:flex;gap:.3em;align-items:center;padding:6px 10px;margin:.2em 0;color:var(--twoslash-tag-color);background-color:var(--twoslash-tag-bg);border-left:3px solid var(--twoslash-tag-color)}.twoslash .twoslash-tag-line .twoslash-tag-icon{width:1.1em;color:inherit}.twoslash .twoslash-tag-line.twoslash-tag-error-line{color:var(--twoslash-error-color);background-color:var(--twoslash-error-bg);border-left:3px solid var(--twoslash-error-color)}.twoslash .twoslash-tag-line.twoslash-tag-warn-line{color:var(--twoslash-tag-warn-color);background-color:var(--twoslash-tag-warn-bg);border-left:3px solid var(--twoslash-tag-warn-color)}.twoslash .twoslash-tag-line.twoslash-tag-annotate-line{color:var(--twoslash-tag-annotate-color);background-color:var(--twoslash-tag-annotate-bg);border-left:3px solid var(--twoslash-tag-annotate-color)}:root{--twoslash-popup-bg: var(--vp-c-bg, inherit);--twoslash-popup-color: var(--vp-c-text-1);--twoslash-docs-color: var(--vp-c-text-1);--twoslash-docs-font: var(--vp-font-family-base);--twoslash-code-font: var(--vp-font-family-mono);--twoslash-code-size: var(--vp-code-font-size);--twoslash-underline-color: #8888;--twoslash-border-color: var(--vp-c-border);--twoslash-cursor-color: var(--vp-c-brand-1);--twoslash-matched-color: var(--vp-c-brand-1);--twoslash-unmatched-color: var(--vp-c-text-2)}.v-popper--theme-twoslash{z-index:calc(var(--vp-z-index-local-nav) - 1)}.v-popper--theme-twoslash .v-popper__inner{color:var(--twoslash-popup-color);background:var(--twoslash-popup-bg);border-color:var(--twoslash-border-color)}.v-popper--theme-twoslash .v-popper__arrow-outer{border-color:var(--twoslash-border-color)}.v-popper--theme-twoslash .v-popper__arrow-inner{border-color:var(--twoslash-popup-bg)}.twoslash-popup-container{transform:translateY(1.5em)}.twoslash-query-presisted .twoslash-popup-container{transform:translateY(1.8em)}.twoslash .v-popper{display:inline-block}.twoslash-completion-list .twoslash-completions-icon{color:var(--twoslash-unmatched-color)!important}.twoslash-floating .twoslash-popup-code{display:block;width:-moz-fit-content;width:fit-content;min-width:100%;max-width:600px;padding:6px 12px;font-size:var(--twoslash-code-size);line-height:var(--vp-code-line-height);white-space:pre-wrap;transition:color .5s}.twoslash-floating .twoslash-popup-docs,.twoslash-floating .twoslash-popup-error{max-width:700px;max-height:500px;padding:12px!important;overflow:hidden auto;font-family:var(--twoslash-docs-font);font-size:.9em;text-wrap:balance}.twoslash-floating .twoslash-popup-docs p:first-child,.twoslash-floating .twoslash-popup-error p:first-child{margin-top:0}.twoslash-floating .twoslash-popup-docs p:last-child,.twoslash-floating .twoslash-popup-error p:last-child{margin-bottom:0}.twoslash-floating .twoslash-popup-docs{color:var(--twoslash-docs-color);border-top:1px solid var(--twoslash-border-color)}.twoslash-floating .twoslash-popup-error{color:var(--twoslash-error-color)}.twoslash-floating .twoslash-popup-error.twoslash-error-level-warning{color:var(--twoslash-warn-color)}.twoslash-floating .twoslash-popup-docs p,.twoslash-floating .twoslash-popup-error p{margin:6px 0;text-wrap:balance}.twoslash-floating .twoslash-popup-docs pre .twoslash-floating .twoslash-popup-error pre{padding:12px;margin:6px -2px;overflow-x:auto;background-color:var(--vp-code-block-bg);border-radius:8px}.twoslash-floating .twoslash-popup-docs-tags{display:flex;flex-direction:column;padding:8px 12px!important}.twoslash-floating .twoslash-popup-docs-tags .twoslash-popup-docs-tag-name{margin-right:.5em;font-family:var(--twoslash-code-font);color:var(--twoslash-unmatched-color)}.twoslash-completion-cursor{display:inline-block;width:2px;height:1.2em;margin-bottom:-.2em;-webkit-user-select:none;-moz-user-select:none;user-select:none;background:var(--twoslash-cursor-color)}.twoslash-floating.twoslash-completion .v-popper__arrow-container{display:none}.twoslash-floating.twoslash-completion .twoslash-completion-list{padding:6px;font-family:var(--twoslash-code-font);font-size:var(--twoslash-code-size)!important}.twoslash-floating.twoslash-completion .twoslash-completion-list li{padding:3px 0}.vp-doc .hint-container{padding:16px;font-size:var(--vp-custom-block-font-size);line-height:24px;color:var(--vp-c-text-2);border-radius:8px}.vp-doc .hint-container .hint-container-title{margin-top:0;font-weight:600}.vp-doc .hint-container p+p{margin:8px 0}.vp-doc .hint-container>:not(summary):first-child{margin-top:0!important}.vp-doc .hint-container>:last-child{margin-bottom:0!important}.vp-doc .hint-container th,.vp-doc .hint-container blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.vp-doc .hint-container div[class*=language-]{margin:16px 0}.vp-doc .hint-container .vp-code-tab div[class*=language-]{margin:0 0 8px}.vp-doc .hint-container div[class*=language-] code{font-size:var(--vp-custom-block-code-font-size);font-weight:400;background-color:transparent}.vp-doc .hint-container div[class*=language-].line-numbers-mode .line-numbers{font-size:var(--vp-custom-block-code-font-size)}@media (max-width: 419px){.vp-doc .hint-container div[class*=language-]{margin:.85rem -.75rem}.vp-doc .hint-container .vp-code-tabs-nav{border-radius:6px 6px 0 0}.vp-doc .hint-container .vp-code-tab div[class*=language-]{margin:0 -.75rem 0 -1rem;border-radius:0 0 6px 6px}}.vp-doc .hint-container.note{color:var(--vp-c-text-3);border-radius:0}.vp-doc .hint-container.info{color:var(--vp-custom-block-info-text)}.vp-doc .hint-container.tip{color:var(--vp-custom-block-tip-text)}.vp-doc .hint-container.warning{color:var(--vp-custom-block-warning-text)}.vp-doc .hint-container.caution{color:var(--vp-custom-block-danger-text)}.vp-doc .hint-container.details{color:var(--vp-custom-block-details-text)}.vp-doc .hint-container.details summary{font-weight:700;color:var(--vp-c-text-1);cursor:pointer}@media (min-width: 768px){.vp-doc .hint-container.details summary{margin:-16px}}.vp-doc .hint-container.note a,.vp-doc .hint-container.note code,.vp-doc .hint-container.info a,.vp-doc .hint-container.info code,.vp-doc .hint-container.tip a,.vp-doc .hint-container.tip code,.vp-doc .hint-container.details a,.vp-doc .hint-container.details code{color:var(--vp-c-brand-1)}.vp-doc .hint-container.note a:hover,.vp-doc .hint-container.info a:hover,.vp-doc .hint-container.tip a:hover,.vp-doc .hint-container.details a:hover{color:var(--vp-c-brand-2)}.vp-doc .hint-container.important a,.vp-doc .hint-container.important code{color:var(--vp-c-purple-1)}.vp-doc .hint-container.important a:hover{color:var(--vp-c-purple-2)}.vp-doc .hint-container.warning a,.vp-doc .hint-container.warning code{color:var(--vp-c-warning-1)}.vp-doc .hint-container.warning a:hover{color:var(--vp-c-warning-2)}.vp-doc .hint-container.caution a,.vp-doc .hint-container.caution code{color:var(--vp-c-danger-1)}.vp-doc .hint-container.caution a:hover{color:var(--vp-c-danger-2)}.vp-doc .code-tabs-nav{margin-bottom:0}.vp-doc .vp-code-tabs-nav{padding:0 12px;margin:16px 0 0;overflow-y:hidden;background-color:var(--vp-code-tab-bg);box-shadow:inset 0 -1px var(--vp-code-tab-divider);transition:background-color var(--t-color),box-shadow var(--t-color)}@media (max-width: 639px){.vp-doc .vp-code-tabs-nav{margin:16px -24px 0}}.vp-doc .vp-code-tab-nav{position:relative;padding:0 12px;font-size:14px;font-weight:500;line-height:48px;color:var(--vp-code-tab-text-color);white-space:nowrap;border-bottom:1px solid transparent;transition:color var(--t-color)}.vp-doc .vp-code-tab-nav:before{display:none}.vp-doc .vp-code-tab-nav:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;display:block;width:auto;height:2px;content:"";background:transparent;border-radius:2px;transition:background var(--t-color)}.vp-doc .vp-code-tab-nav.active{color:var(--vp-code-tab-active-text-color);background:transparent}.vp-doc .vp-code-tab-nav.active:after{background:var(--vp-code-tab-active-bar-color)}.vp-doc .vp-code-tab-nav:hover{background:transparent}.vp-doc .vp-code-tab div[class*=language-]{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}@media (max-width: 419px){.vp-doc .hint-container .vp-code-tabs-nav{margin:.85rem -.75rem 0 -1rem}}.vp-doc .vp-code-demo{overflow:hidden;border:solid 1px var(--vp-c-divider);transition:border var(--t-color)}@media (max-width: 419px){.vp-doc .vp-code-demo .vp-code-demo-codes div[class*=language-]{margin:0;border-radius:0}}.vp-doc .vp-code-demo:hover{box-shadow:none}.vp-doc .vp-code-demo .vp-code-demo-header{padding:8px 12px;transition:background-color var(--t-color)}.vp-doc .vp-code-demo .vp-code-demo-code-wrapper{margin-bottom:-13px}.vp-doc .vp-code-demo .vp-code-demo-toggle-button{margin:0 12px 0 8px;background-color:var(--vp-c-gray-2);transition:background-color var(--t-color)}.vp-doc .vp-code-demo .vp-code-demo-toggle-button:hover{background-color:var(--vp-c-gray-1)}.vp-doc .vp-code-demo .vp-code-demo-title{font-size:1rem;line-height:1.75}.vp-doc .vp-code-demo .vp-code-demo-display{border-bottom:transparent}.vp-doc .vp-code-demo .code-demo-jsfiddle .jsfiddle-button,.vp-doc .vp-code-demo .code-demo-codepen .codepen-button{background-color:transparent}.vp-doc .vp-code-demo .vp-code-demo-codes div[class*=language-]{margin-top:0;margin-bottom:0;border-bottom:2px dashed var(--vp-c-divider);border-radius:0;transition:border-bottom var(--t-color)}.vp-doc .vp-code-demo .vp-code-demo-codes div[class*=language-]:first-of-type{border-top:1px solid var(--vp-c-divider)}.vp-doc .vp-code-demo .vp-code-demo-codes div[class*=language-]:last-of-type{border-bottom:none}.vp-doc .vp-code-demo .vp-code-demo-codes div[class*=language-] pre{margin-bottom:0;border-radius:0}@media (max-width: 419px){.vp-doc .vp-code-demo{margin:8px -12px}}.vp-doc .vp-md-demo{margin-bottom:16px;overflow:hidden;border:solid 1px var(--vp-c-divider);transition:border var(--t-color)}@media (max-width: 419px){.vp-doc .vp-md-demo .vp-md-demo-codes div[class*=language-]{margin:0;border-radius:0}}.vp-doc .vp-md-demo:hover{box-shadow:none}.vp-doc .vp-md-demo .vp-md-demo-header{padding:8px 12px;font-size:16px;line-height:1.7;transition:background-color var(--t-color)}.vp-doc .vp-md-demo .vp-md-demo-toggle-button{margin:0 12px 0 8px;background-color:var(--vp-c-gray-2);transition:background-color var(--t-color)}.vp-doc .vp-md-demo .vp-md-demo-toggle-button:hover{background-color:var(--vp-c-gray-1)}.vp-doc .vp-md-demo .vp-md-demo-title{font-size:1rem;line-height:1.75}.vp-doc .vp-md-demo .vp-md-demo-display{border-bottom:transparent}.vp-doc .vp-md-demo .vp-md-demo-codes div[class*=language-]{border-bottom:2px dashed var(--vp-c-divider);transition:border-bottom var(--t-color)}.vp-doc .vp-md-demo .vp-md-demo-codes div[class*=language-]:first-of-type{border-top:1px solid var(--vp-c-divider)}.vp-doc .vp-md-demo .vp-md-demo-codes div[class*=language-]:last-of-type{border-bottom:none}.vp-doc .vp-md-demo .vp-md-demo-codes div[class*=language-] pre{margin-bottom:0;border-radius:0}@media (max-width: 419px){.vp-doc .vp-md-demo{margin:8px -12px}}.vp-doc .task-list-container{padding-left:0}.vp-doc .task-list-container .task-list-item input{width:0;height:0;padding:0;margin:0}.vp-doc .task-list-container .task-list-item label{margin-left:1.2em}.vp-doc .task-list-container .task-list-item input:before,.vp-doc .task-list-container .task-list-item input:after{position:absolute;top:-1em;left:0;display:inline-block;font-size:1em;content:none}.vp-doc .task-list-container .task-list-item input:after{content:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="1em" height="1em" viewBox="0 0 32 32"%3E%3Cpath fill="%23c2c2c4" d="M26 27.5H6A1.5 1.5 0 0 1 4.5 26V6c0-.83.67-1.5 1.5-1.5h20c.828 0 1.5.67 1.5 1.5v20a1.5 1.5 0 0 1-1.5 1.5m-18.5-3h17v-17h-17z"%2F%3E%3C%2Fsvg%3E');background-color:transparent;border:none}.vp-doc .task-list-container .task-list-item input:checked[disabled]:after{content:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="1em" height="1em" viewBox="0 0 32 32"%3E%3Cpath fill="%23299764" d="M29.548 3.043a2.5 2.5 0 0 0-3.513.4L16 16.067l-3.508-4.414a2.5 2.5 0 0 0-3.915 3.112l5.465 6.875c.474.597 1.195.943 1.957.943s1.482-.35 1.957-.944L29.95 6.555c.86-1.08.68-2.654-.402-3.513zM24.5 24.5h-17v-17h12.756l2.385-3H6c-.83 0-1.5.67-1.5 1.5v20c0 .828.67 1.5 1.5 1.5h20a1.5 1.5 0 0 0 1.5-1.5V12.85l-3 3.774z"%2F%3E%3C%2Fsvg%3E');background-color:transparent;border:none}.vp-doc .vp-tabs{margin:1.5rem -.75rem;overflow:hidden;border:1px solid var(--vp-c-divider);transition:border var(--t-color)}.vp-doc .vp-tabs-nav{padding:0 12px;background-color:var(--vp-code-tab-bg);box-shadow:inset 0 -1px var(--vp-code-tab-divider);transition:background-color var(--t-color),box-shadow var(--t-color)}.vp-doc .vp-tab-nav{position:relative;padding:0 12px;font-size:14px;font-weight:500;line-height:48px;color:var(--vp-code-tab-text-color);white-space:nowrap;border-bottom:1px solid transparent;transition:color var(--t-color)}.vp-doc .vp-tab-nav:before{display:none}.vp-doc .vp-tab-nav:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;display:block;width:auto;height:2px;content:"";background:transparent;border-radius:2px;transition:background var(--t-color)}.vp-doc .vp-tab-nav.active{color:var(--vp-code-tab-active-text-color);background:transparent}.vp-doc .vp-tab-nav.active:after{background:var(--vp-code-tab-active-bar-color)}.vp-doc .vp-tab-nav:hover{background:transparent}@media (min-width: 419px){.vp-doc .vp-tabs{margin:1.5rem 0}}.vp-doc .hint-container .vp-tabs{margin:1rem -.45rem 1rem -.75rem}.vp-doc .hint-container .vp-tabs .vp-tabs-nav{background:var(--vp-c-default-soft)}.vp-doc .hint-container .vp-tabs .vp-tab{padding:.45rem .75rem;font-size:14px;background:transparent}.vp-doc .hint-container .vp-tabs .vp-tab p{margin:8px 0}.vp-doc .footnotes-sep{margin-top:48px}.vp-doc .footnotes{position:relative;padding:48px 0 12px 16px;margin-left:-16px;font-size:14px;border-left:4px solid var(--vp-c-default-soft)}@media (max-width: 419px){.vp-doc .footnotes{margin-left:0}}.vp-doc .footnotes:before{position:absolute;top:12px;left:16px;font-size:16px;font-weight:700}[lang=zh-CN] .vp-doc .footnotes:before{content:"脚注:"}[lang=en-US] .vp-doc .footnotes:before{content:"Footnotes:"}.vp-doc .footnotes ol{margin:0}.vp-doc .footnotes ol p{margin:8px 0}.vp-doc .footnotes ol li:first-of-type p:first-of-type{margin-top:0}.vp-doc .footnotes ol li:last-of-type p:last-of-type{margin-bottom:0}.vp-doc .footnote-item{padding-top:0;margin-top:0}.vp-doc .footnote-item>p{margin-bottom:0}.vp-doc .footnote-backref{position:relative;color:transparent;text-decoration:none}.vp-doc .footnote-backref:hover{color:transparent}.vp-doc .footnote-backref:before{position:absolute;top:-.4em;left:0;font-size:1em;content:url('data:image/svg+xml,%3Csvg xmlns="http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg" width="1em" height="1em" viewBox="0 0 48 48"%3E%3Cg fill="none" stroke="%23c2c2c4" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"%3E%3Cpath d="m13 8l-7 6l7 7"%2F%3E%3Cpath d="M6 14h22.994c6.883 0 12.728 5.62 12.996 12.5c.284 7.27-5.723 13.5-12.996 13.5H11.998"%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E')}.vp-doc .footnote-anchor{top:0}.vp-doc figure{position:relative;display:flex;flex-direction:column;width:auto;margin:1rem auto;text-align:center}.vp-doc figure img{margin:0 auto;overflow:hidden}@media print{.vp-doc figure>a[href^="http://"]:after,.vp-doc figure>a[href^="https://"]:after{content:""}}.vp-doc figure>a .external-icon{display:none}.vp-doc figure figcaption{display:inline-block;margin:6px auto;font-size:.8rem}.mermaid-actions{padding-right:20px}.mermaid-actions .preview-button,.mermaid-actions .download-button{width:1.5rem;height:1.5rem;color:var(--vp-c-text-2);transition:color var(--t-color)}.mermaid-actions .preview-button:hover,.mermaid-actions .download-button:hover{color:var(--vp-c-brand-1)}.mermaid-wrapper svg{display:inline-block}.flowchart-wrapper svg{display:inline-block}.vp-navbar-search{display:flex;align-items:center}.DocSearch{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: var(--vp-c-default-soft);--docsearch-searchbox-focus-background: var(--vp-c-default-3);--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark .DocSearch{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.vp-navbar-search .DocSearch-Button{display:flex;align-items:center;justify-content:center!important;width:32px;height:32px;padding:0;margin:0;background:var(--docsearch-searchbox-background);transition:border-color var(--t-color),background var(--t-color)}.vp-navbar-search .DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background)}.vp-navbar-search .DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.vp-navbar-search .DocSearch-Button:focus:not(:focus-visible){outline:none!important}.vp-navbar-search #docsearch-container{min-width:32px}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentcolor;transition:color var(--t-color)}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;padding:0 16px 0 0;margin-top:2px;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color var(--t-color)}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}.DocSearch-Button .DocSearch-Button-Keys{display:none;min-width:auto;direction:ltr}.DocSearch-Button .DocSearch-Button-Key{display:block;width:auto;min-width:0;height:22px;padding-left:6px;margin:2px 0 0;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;line-height:22px;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;transition:color var(--t-color),border-color var(--t-color)}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{padding-right:6px;padding-left:2px;border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:1px;color:transparent;letter-spacing:-12px}.DocSearch-Button .DocSearch-Button-Key:first-child:after{font-size:12px;color:var(--docsearch-muted-color);letter-spacing:normal;content:"Ctrl"}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{background-color:var(--vp-c-white);border:1px solid var(--vp-c-brand-1)}.dark .DocSearch-Form{background-color:var(--vp-c-bg-soft)}.vp-navbar-search .search-box input{padding:0 .3rem 0 1.655rem;background-position:.5rem .4rem}@media (min-width: 768px){.vp-navbar-search{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.vp-navbar-search{padding-left:32px}}@media print{.vp-navbar-search{display:none}}@media (min-width: 768px){.vp-navbar-search .DocSearch-Button{justify-content:flex-start;width:100%;height:40px;padding:0 10px 0 12px;background-color:var(--vp-c-bg-alt);border:1px solid transparent;border-radius:8px}.vp-navbar-search .DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);border-color:var(--vp-c-brand-1)}}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;width:14px;height:14px;margin-right:8px;color:var(--vp-c-text-2)}}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.search-box .suggestions{top:2.5rem;right:-1rem;padding:16px 12px;background-color:var(--vp-c-bg);border-radius:12px;box-shadow:var(--vp-shadow-3)}.vpi-22auzsne{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 20h6.943m0 0h.114m-.114 0h.114m-.114 0A7 7 0 0 1 4 13V8.923c0-.51.413-.923.923-.923h12.154c.51 0 .923.413.923.923V9m-6.943 11H18m-6.943 0A7 7 0 0 0 18 13m0-4h1.5a2.5 2.5 0 0 1 0 5H18v-1m0-4v4M15 3l-1 2m-2-2l-1 2M9 3L8 5'/%3E%3C/svg%3E")}.vpi-6bm9k4ht{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M16.278 8.12a7.21 7.21 0 0 0-6.991-4.454C5.27 3.666 2 6.467 2 9.914a5.88 5.88 0 0 0 2.571 4.759L3.707 16.4a.427.427 0 0 0 .59.548l2.189-1.259a8.4 8.4 0 0 0 1.849.416c.853 0 .219-1.094.317-1.608c0-3.217 3.184-5.832 7.09-5.832a.438.438 0 0 0 .536-.547m-9.727.524a1.247 1.247 0 0 1-1.247-1.247A1.247 1.247 0 0 1 7.8 7.42a1.247 1.247 0 0 1-1.25 1.224m5 0a1.247 1.247 0 1 1 .033 0z'/%3E%3Cpath fill='black' d='M22 14.498c0-2.757-2.8-5-6.247-5s-6.258 2.188-6.258 5s2.811 5 6.258 5a7.5 7.5 0 0 0 1.914-.24l2.068 1.039a.416.416 0 0 0 .57-.537l-.559-1.411A4.7 4.7 0 0 0 22 14.498m-8.337-.832a.831.831 0 1 1 0-1.663a.843.843 0 0 1 .842.832a.84.84 0 0 1-.842.831m4.168 0a.832.832 0 1 1 0-1.663a.832.832 0 0 1 0 1.663'/%3E%3C/svg%3E")}.vpi-nfubvipg{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512' width='640' height='512'%3E%3Cpath fill='black' d='M192 256c61.9 0 112-50.1 112-112S253.9 32 192 32S80 82.1 80 144s50.1 112 112 112m76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C51.6 288 0 339.6 0 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2M480 256c53 0 96-43 96-96s-43-96-96-96s-96 43-96 96s43 96 96 96m48 32h-3.8c-13.9 4.8-28.6 8-44.2 8s-30.3-3.2-44.2-8H432c-20.4 0-39.2 5.9-55.7 15.4c24.4 26.3 39.7 61.2 39.7 99.8v38.4c0 2.2-.5 4.3-.6 6.4H592c26.5 0 48-21.5 48-48c0-61.9-50.1-112-112-112'/%3E%3C/svg%3E")}.vpi-ppms4pwd{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' width='32' height='32'%3E%3Cg fill='black'%3E%3Cpath d='M11.248 14.572c0 .49.4.89.89.89s.891-.4.891-.89V12.89c0-.49-.4-.891-.89-.891s-.891.4-.891.89zM5.68 20.567a1.12 1.12 0 0 1-1.568 0L5.68 19c.428.442.428 1.14 0 1.567'/%3E%3Cpath d='M11.5 6.781c.14-.183.333-.357.563-.517a39 39 0 0 1-.06-1.383a13 13 0 0 1 0-.525v-.025c.01-.814.99-1.209 1.568-.654l.03.027a24 24 0 0 1 .506.459l.205.19l.612-.096c1.559-.243 3.448-.2 5.516.814c1.41.69 2.714 1.816 3.695 3.201c.776.238 1.494.741 2.095 1.357a8.3 8.3 0 0 1 1.562 2.307a3.97 3.97 0 0 1 1.823 1.12c.786.847 1.291 2.116 1.291 3.913v10.75c0 1.022-.253 1.963-1.104 2.573c-.421.301-.93.473-1.485.571l.048.137h-6.97l-.004-.016H9.716l.14-1.123l.992.123l-.992-.123v-.009l.003-.016a4 4 0 0 1 .036-.223q.036-.222.128-.614c.122-.518.328-1.245.664-2.107a19 19 0 0 1 2.204-4.069l-6.894 1.504h-.004c-.749.161-1.588.104-2.333-.276c-1.035-.527-1.857-1.408-1.986-2.627c-.125-1.184.44-2.39 1.484-3.522c.44-.476 1.006-1.104 1.674-1.845a418 418 0 0 1 3.713-4.078c-1.336-.587-1.712-2-1.451-2.26c.183-.184.47-.107.83-.01c.414.11.925.248 1.49.049L3.836 2.742c-.216-.273.127-.634.41-.431l6.913 4.947q.155-.23.342-.477m1.985 1.495l.008.014q.073.121.16.225q.223.265.564.403c-3.064 3.115-5.889 6.248-7.87 8.446l-.001.001a249 249 0 0 1-1.717 1.893c-.846.917-1.006 1.576-.966 1.957c.036.346.27.73.905 1.054c.274.14.634.182 1.004.103h.002l1.454-.317a.5.5 0 0 1 .106-.15c.155-.15.406-.439.626-.788c.224-.355.386-.729.417-1.057a.5.5 0 1 1 .995.094c-.052.552-.304 1.08-.565 1.495l-.046.072l5.618-1.226c1.067-.26 2.239-.805 3.307-1.556c.947-1.95 1.723-3.622 1.845-5.327c.16-2.305-.488-3.668-1.162-4.474a4.3 4.3 0 0 0-1.302-1.053l-.549.083a1 1 0 0 0-.134-.29l-.056-.091l-.011-.004l-.184-.244c-.32-.426-.914-1.004-1.522-1.548l-1.41-1.26l.003.129c.008.376.032.996.096 1.963H13.1c.051.535.15.985.325 1.339q.03.06.061.114m-.44-3.729l.002.003l-.047.008v-.05zm2.912 17.75l-.087.014a17.1 17.1 0 0 0-3.32 5.307c-.203.522-.351.985-.458 1.366h2.883c-.321-2.499.209-4.705.982-6.687m4.336 5.976c.027.195.054.392.076.602h1.069c-.518-4.827.766-7.427 2.218-10.363c.3-.607.607-1.229.907-1.887c1.75-3.844.454-6.027-.942-7.256c.368.629 1.158 3.06.51 5.356c-.276.977-.913 2.278-1.567 3.615c-.763 1.557-1.548 3.161-1.813 4.356c-.755 3.411-.609 4.478-.458 5.577m4.632.032c.026.195.053.391.075.602h1.063c-.526-4.9.761-7.615 1.667-9.526c.17-.361.328-.693.457-1.006c.813-1.969 1.047-4.652-.349-5.881c.369.629.403 2.742-.244 5.037c-.28.991-.675 1.707-1.067 2.416c-.444.805-.883 1.6-1.144 2.78c-.755 3.412-.609 4.479-.458 5.578'/%3E%3C/g%3E%3C/svg%3E")}.vp-home-box{position:relative;padding:24px}@media (min-width: 640px){.vp-home-box{padding:32px 48px}}@media (min-width: 960px){.vp-home-box{padding:48px}}.vp-home-box .container{width:100%;max-width:1152px;margin:0 auto}.vp-home-box.full{display:flex;align-items:center;justify-content:center;min-height:calc(100vh - var(--vp-nav-height))}.vp-icon.iconify{background-color:unset}.vp-icon-img[data-v-e1a362a3]{display:inline-block;width:-moz-max-content;width:max-content;height:1em;margin:0 .3em;vertical-align:middle}.vp-icon-img img[data-v-e1a362a3]{height:100%}.vp-card-wrapper[data-v-9831334c]{display:flex;flex-direction:column;gap:16px;padding:16px 20px;margin:16px 0;border:solid 1px var(--vp-c-divider);border-radius:8px;box-shadow:var(--vp-shadow-1);transition:border-color var(--t-color),box-shadow var(--t-color)}.vp-card-wrapper[data-v-9831334c]:hover{box-shadow:var(--vp-shadow-2)}.vp-card-wrapper[data-v-9831334c] .vp-icon,.vp-card-wrapper[data-v-9831334c] .vp-icon-img{margin:0}.vp-card-wrapper .title[data-v-9831334c]{display:flex;gap:8px;align-items:center;margin:0;font-size:20px;font-weight:700;color:var(--vp-c-text-1);transition:color var(--t-color)}.vp-card-wrapper .body[data-v-9831334c] :first-child{margin-top:0}.vp-card-wrapper .body[data-v-9831334c] :last-child{margin-bottom:0}.icon[data-v-039bb95e]{display:inline-block;width:11px;height:11px;margin-top:-1px;margin-left:4px;fill:var(--vp-c-text-3);transition:fill .25s}.vp-link[data-v-039bb95e] i{font-style:normal;font-weight:inherit;line-height:normal}.vp-link-card[data-v-6f7c0885]{position:relative;display:flex;gap:8px;align-items:flex-start;padding:16px 20px;margin:16px 0;background-color:transparent;border:solid 1px var(--vp-c-divider);border-radius:8px;box-shadow:var(--vp-shadow-1);transition:border-color var(--t-color),box-shadow var(--t-color),background-color var(--t-color)}.vp-link-card[data-v-6f7c0885]:hover{background-color:var(--vp-c-bg-soft);border-color:var(--vp-c-brand-2);box-shadow:var(--vp-shadow-2)}.vp-link-card .body[data-v-6f7c0885]{display:flex;flex:1;flex-direction:column;gap:16px;align-items:flex-start}.vp-link-card .body[data-v-6f7c0885]>*{margin:0}.vp-link-card .link[data-v-6f7c0885]{display:flex;gap:8px;align-items:center;font-size:18px;font-weight:700;color:var(--vp-c-text-1);text-decoration:none}.vp-link-card .link[data-v-6f7c0885]:before{position:absolute;top:0;right:0;bottom:0;left:0;content:""}.vp-link-card .link[data-v-6f7c0885] .vp-icon,.vp-link-card .link[data-v-6f7c0885] .vp-icon-img{margin:0}.vpi-arrow-right[data-v-6f7c0885]{margin-top:2px;font-size:20px}.vp-badge[data-v-39861a27]{display:inline-block;padding:0 10px;margin-left:2px;font-size:12px;font-weight:500;line-height:22px;border:1px solid transparent;border-radius:12px;transition:var(--t-color);transition-property:color,background-color,border-color;transform:translateY(-2px)}h1 .vp-badge[data-v-39861a27]{margin-top:4px;vertical-align:top}h2 .vp-badge[data-v-39861a27]{padding:0 8px;margin-top:3px;vertical-align:top}h3 .vp-badge[data-v-39861a27]{vertical-align:middle}h4 .vp-badge[data-v-39861a27],h5 .vp-badge[data-v-39861a27],h6 .vp-badge[data-v-39861a27]{line-height:18px;vertical-align:middle}.vp-badge.info[data-v-39861a27]{color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg);border-color:var(--vp-badge-info-border)}.vp-badge.tip[data-v-39861a27]{color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg);border-color:var(--vp-badge-tip-border)}.vp-badge.warning[data-v-39861a27]{color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg);border-color:var(--vp-badge-warning-border)}.vp-badge.danger[data-v-39861a27]{color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg);border-color:var(--vp-badge-danger-border)}.vp-card-grid[data-v-82050933]{display:grid;gap:16px 20px;margin:16px 0}.vp-card-grid[data-v-82050933]>*{margin:0!important}.vp-image-card[data-v-be2fd4d3]{margin:16px 0;box-shadow:var(--vp-shadow-2);transition:var(--t-color);transition-property:box-shadow}.vp-image-card[data-v-be2fd4d3]:hover{box-shadow:var(--vp-shadow-4)}.vp-image-card .image-container[data-v-be2fd4d3]{position:relative;overflow:hidden;font-size:0;line-height:1;border-radius:8px}.image-info[data-v-be2fd4d3]{position:absolute;bottom:0;left:0;display:flex;flex-direction:column;width:100%;max-height:100%;padding:16px 20px 0;overflow-y:hidden;font-size:14px;color:var(--vp-c-white);background-color:#00000080;border-top-left-radius:8px;border-top-right-radius:8px;transition:transform var(--t-color);transform:translateY(calc(100% - 60px))}:where(.vp-card-grid.cols-3) .image-info[data-v-be2fd4d3]{padding:8px 8px 0;font-size:12px;transform:translateY(calc(100% - 36px))}@media (max-width: 767px){:where(.vp-card-grid.cols-2) .image-info[data-v-be2fd4d3]{padding:8px 8px 0;font-size:12px;transform:translateY(calc(100% - 36px))}}.image-info[data-v-be2fd4d3]:hover{transform:translateY(0)}.image-info .title[data-v-be2fd4d3]{min-height:28px;margin:0 0 16px;overflow:hidden;font-size:18px;color:var(--vp-c-white);text-overflow:ellipsis;white-space:nowrap}:where(.vp-card-grid.cols-3) .image-info .title[data-v-be2fd4d3]{min-height:20px;margin:0 0 8px;font-size:14px;line-height:20px}@media (max-width: 767px){:where(.vp-card-grid.cols-2) .image-info .title[data-v-be2fd4d3]{min-height:20px;margin:0 0 8px;font-size:14px;line-height:20px}}.image-info .title a[data-v-be2fd4d3]{color:inherit;text-decoration:none}.image-info p[data-v-be2fd4d3]{margin:0;line-height:24px;color:var(--vp-c-white)}:where(.vp-card-grid.cols-3) .image-info p[data-v-be2fd4d3]{line-height:20px}@media (max-width: 767px){:where(.vp-card-grid.cols-2) .image-info p[data-v-be2fd4d3]{line-height:20px}}.image-info p[data-v-be2fd4d3]:last-child{margin-bottom:16px}.image-info .copyright[data-v-be2fd4d3]{display:flex;gap:4px;align-items:center;justify-content:flex-end}.image-info .copyright span[data-v-be2fd4d3]:first-child{flex:1;overflow:hidden;text-align:right;text-overflow:ellipsis;white-space:nowrap}.image-info .description[data-v-be2fd4d3]{flex:1;height:1px;overflow-y:auto}.image-info .description[data-v-be2fd4d3]::-webkit-scrollbar{width:0;height:0}.vp-backdrop[data-v-aaa8c6ad]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity var(--t-color)}.vp-backdrop.fade-enter-from[data-v-aaa8c6ad],.vp-backdrop.fade-leave-to[data-v-aaa8c6ad]{opacity:0}.vp-backdrop.fade-leave-active[data-v-aaa8c6ad]{transition-duration:.25s}@media (min-width: 1280px){.vp-backdrop[data-v-aaa8c6ad]{display:none}}.vp-blog-post-item[data-v-fe54072f]{padding-top:1rem;margin:0 1.75rem 2rem}.vp-blog-post-item[data-v-fe54072f]:last-of-type{border-bottom:none}.vp-blog-post-item .sticky[data-v-fe54072f]{display:inline-block;padding:3px 6px;margin-right:.5rem;font-size:13px;font-weight:600;line-height:1;color:var(--vp-c-text-2);background-color:var(--vp-c-brand-soft);border-radius:4px;transition:var(--t-color);transition-property:color,background-color}.vp-blog-post-item .icon-lock[data-v-fe54072f]{width:1em;height:1em;margin-right:8px;margin-left:3px;color:var(--vp-c-text-3);transition:var(--t-color);transition-property:color}.vp-blog-post-item h3[data-v-fe54072f]{display:flex;align-items:center;margin-bottom:.75rem;font-size:18px;font-weight:600;color:var(--vp-c-text-1);transition:color var(--t-color)}.vp-blog-post-item h3[data-v-fe54072f]:hover{color:var(--vp-c-brand-1)}.vp-blog-post-item h3:hover .sticky[data-v-fe54072f]{color:var(--vp-c-text-2)}@media (min-width: 768px){.vp-blog-post-item[data-v-fe54072f]{padding:24px 20px;margin:0 0 24px 20px;background-color:var(--vp-c-bg);border-radius:8px;box-shadow:var(--vp-shadow-1);transition:var(--t-color);transition-property:background-color,color,box-shadow;will-change:transform}.vp-blog-post-item[data-v-fe54072f]:hover{box-shadow:var(--vp-shadow-2)}.vp-blog-post-item .post-meta[data-v-fe54072f]{margin-bottom:0}.vp-blog-post-item .excerpt[data-v-fe54072f]{margin-top:24px}}@media (min-width: 1200px){.vp-blog-post-item[data-v-fe54072f]{margin:0 0 24px}}.post-meta[data-v-fe54072f]{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;margin-bottom:.5rem;font-size:14px;font-weight:400;color:var(--vp-c-text-2);transition:color var(--t-color)}.post-meta>div[data-v-fe54072f]{display:flex;align-items:center;justify-content:flex-start;margin-right:1rem}.post-meta>div[data-v-fe54072f]:last-of-type{margin-right:0}.post-meta .tag-list[data-v-fe54072f]{display:flex;align-items:center}.post-meta .tag-list .tag[data-v-fe54072f]{display:inline-block;padding:3px 5px;margin-right:6px;font-size:12px;line-height:1;color:var(--vp-tag-color);background-color:var(--vp-tag-bg);border-radius:3px;transition:color var(--t-color),background-color var(--t-color)}.post-meta .tag-list .tag[data-v-fe54072f]:last-of-type{margin-right:0}.post-meta .icon[data-v-fe54072f]{width:14px;height:14px;margin:.3rem;color:var(--vp-c-text-3);transition:color var(--t-color)}.vp-doc[data-v-fe54072f] p{margin:.5rem 0}.vp-doc[data-v-fe54072f] p:first-of-type{margin-top:0}.vp-doc[data-v-fe54072f] p:last-of-type{margin-bottom:0}.vp-doc[data-v-fe54072f] p strong{color:var(--vp-c-text-2);transition:color var(--t-color)}.vp-blog-pagination[data-v-e2840405]{display:flex;align-items:center;justify-content:space-between;padding:32px 20px 24px}.btn[data-v-e2840405]{padding:2px 5px;margin:0 2px;font-weight:500;line-height:1;color:var(--vp-c-text-2);background-color:transparent;border-radius:4px;transition:var(--t-color);transition-property:color,background-color}.btn.active[data-v-e2840405]{color:var(--vp-c-brand-1);background-color:var(--vp-c-bg-alt)}.btn[disabled][data-v-e2840405],.btn[disabled][data-v-e2840405]:hover,.btn.more[data-v-e2840405]{color:var(--vp-c-gray-1);cursor:not-allowed;background-color:transparent}@media (min-width: 768px){.vp-blog-pagination[data-v-e2840405]{padding:20px;margin-left:20px;background-color:var(--vp-c-bg);border-radius:6px;box-shadow:var(--vp-shadow-1);transition:var(--t-color);transition-property:background-color,box-shadow}.page-range .btn[data-v-e2840405]{padding:4px 12px;margin:0 8px;font-size:14px}.btn[data-v-e2840405]:not(.active,[disabled]):hover{color:var(--vp-c-brand-1)}.btn[data-v-e2840405]:not(.prev,.next):hover{background-color:var(--vp-c-bg-alt)}}@media (min-width: 1200px){.vp-blog-pagination[data-v-e2840405]{margin-left:0}}.vp-blog-post-list[data-v-88abbe07]{flex:1;padding-top:32px;padding-bottom:36px;margin:0 auto}.vp-blog-short-post-list[data-v-ff8d6363]{padding:0 12px;margin-top:32px}.vp-blog-short-post-list li[data-v-ff8d6363]{display:flex;align-items:center;justify-content:space-between;margin:14px 0;color:var(--vp-c-text-1);transition:color var(--t-color)}.vp-blog-short-post-list .post-title[data-v-ff8d6363]{display:-webkit-box;flex:1;margin-right:14px;overflow:hidden;font-weight:600;transition:all var(--t-color);-webkit-box-orient:vertical;-webkit-line-clamp:1;line-clamp:1}.vp-blog-short-post-list .post-time[data-v-ff8d6363]{color:var(--vp-c-text-3);transition:color var(--t-color)}.vp-blog-short-post-list li:hover .post-title[data-v-ff8d6363]{color:var(--vp-c-brand-1)}.vp-blog-short-post-list li:hover .post-time[data-v-ff8d6363]{color:var(--vp-c-text-2)}.vp-blog-archives[data-v-5ebdb825]{flex:1;padding:32px 24px;margin:0 auto}.archives-title[data-v-5ebdb825]{display:flex;align-items:center;margin-bottom:40px;font-size:24px;font-weight:700;color:var(--vp-c-brand-1)}.archives-title .icon[data-v-5ebdb825]{margin-right:8px}.archive[data-v-5ebdb825]{padding-bottom:1rem;border-bottom:1px dashed var(--vp-c-divider)}.archive[data-v-5ebdb825]:last-of-type{border-bottom:none}.archive-title[data-v-5ebdb825]{margin-top:2rem;font-size:18px;font-weight:700}@media (min-width: 768px){.vp-blog-archives[data-v-5ebdb825]{padding:32px 0;margin-left:20px}.archives-title[data-v-5ebdb825]{display:none}.archive[data-v-5ebdb825]{padding:20px;margin-bottom:24px;background-color:var(--vp-c-bg);border-bottom:none;border-radius:8px;box-shadow:var(--vp-shadow-1);transition:var(--t-color);transition-property:border-bottom,box-shadow,background-color}.archive[data-v-5ebdb825]:hover{box-shadow:var(--vp-shadow-2)}.archive-title[data-v-5ebdb825]{padding-bottom:10px;margin-top:0;border-bottom:solid 1px var(--vp-c-divider);transition:border-bottom var(--t-color)}}@media (min-width: 1200px){.vp-blog-archives[data-v-5ebdb825]{margin-left:0}}.vp-blog-nav[data-v-dfa4b1d4]{padding:0;text-align:left}.vp-blog-nav.local[data-v-dfa4b1d4]{display:none;padding-top:2rem;margin-left:20px}@media (min-width: 768px){.vp-blog-nav.local[data-v-dfa4b1d4]{display:flex}}@media (min-width: 1200px){.vp-blog-nav.local[data-v-dfa4b1d4]{margin-left:0}}.nav-link[data-v-dfa4b1d4]{display:flex;align-items:center;justify-content:flex-start;padding:10px 14px 10px 20px;margin-bottom:20px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);border-radius:8px;box-shadow:var(--vp-shadow-1);transition:var(--t-color);transition-property:background-color,color,box-shadow,transform;transform:scale(1)}.nav-link[data-v-dfa4b1d4]:hover{box-shadow:var(--vp-shadow-2);transform:scale(1.002)}.nav-link[data-v-dfa4b1d4]:hover,.nav-link.active[data-v-dfa4b1d4]{color:var(--vp-c-brand-1)}.vp-blog-nav.local .nav-link[data-v-dfa4b1d4]{flex:1;max-width:200px;margin-right:20px;margin-bottom:0}.vp-blog-nav.local .nav-link[data-v-dfa4b1d4]:last-of-type{margin-right:0}.nav-link .text[data-v-dfa4b1d4]{flex:1;min-width:0;padding-right:14px}.nav-link .total[data-v-dfa4b1d4]{padding-right:8px;color:var(--vp-c-text-3);transition:color var(--t-color)}.nav-link .icon[data-v-dfa4b1d4]{width:1em;height:1em;font-size:1.2em;color:var(--vp-c-text-3);transition:color var(--t-color)}.nav-link .icon-logo[data-v-dfa4b1d4]{margin-right:10px;color:var(--vp-c-brand-1)}.vp-social-link[data-v-4f551255]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color var(--t-color)}.vp-social-link[data-v-4f551255]:hover{color:var(--vp-c-text-1)}.vp-social-link[data-v-4f551255]>svg,.vp-social-link[data-v-4f551255]>[class^=vpi-social-]{width:20px;height:20px;fill:currentcolor}.vp-social-links[data-v-64e26b6f]{display:flex;flex-wrap:wrap;justify-content:center}.vp-blog-profile[data-v-83363bd8]{padding:24px 20px;margin-bottom:24px;background-color:var(--vp-c-bg);border-radius:8px;box-shadow:var(--vp-shadow-1);transition:var(--t-color);transition-property:background-color,color,box-shadow}.vp-blog-profile[data-v-83363bd8]:hover{box-shadow:var(--vp-shadow-2)}.vp-blog-profile img[data-v-83363bd8]{width:60%;margin:auto;-o-object-fit:cover;object-fit:cover}.vp-blog-profile h3[data-v-83363bd8]{margin-top:1.5rem;font-size:18px;font-weight:600}.vp-blog-profile h3[data-v-83363bd8],.vp-blog-profile p[data-v-83363bd8]{color:var(--vp-c-text-1);transition:color var(--t-color)}.vp-blog-profile .circle img[data-v-83363bd8]{overflow:hidden;border-radius:50%}.profile-location[data-v-83363bd8],.profile-organization[data-v-83363bd8]{display:flex;align-items:center;justify-content:center;margin-top:16px;font-size:14px;color:var(--vp-c-text-3);transition:color var(--t-color)}.profile-location p[data-v-83363bd8],.profile-organization p[data-v-83363bd8]{margin:0 4px}.profile-location+.profile-organization[data-v-83363bd8]{margin-top:0}.profile-social[data-v-83363bd8]{padding-top:12px;margin-top:12px;border-top:1px solid var(--vp-c-divider);transition:border var(--t-color)}.profile-social[data-v-83363bd8] .vp-social-link{width:32px;height:32px}.profile-social[data-v-83363bd8] .vp-social-link:hover{color:var(--vp-c-brand-1)}.vp-blog-aside[data-v-e971faab]{position:sticky;top:calc(var(--vp-nav-height) + 2rem);display:none;width:270px;overflow-y:auto;text-align:center}@media (min-width: 768px){.vp-blog-aside[data-v-e971faab]{display:block;margin:2rem 1rem 1rem 1.5rem}}.vp-blog-extract[data-v-435193cb]{position:fixed;right:0;bottom:30%;z-index:calc(var(--vp-z-index-nav) - 1);display:block;padding:6px 10px;cursor:pointer;background-color:var(--vp-c-bg);border:solid 1px var(--vp-c-divider);border-right:none;border-top-left-radius:99px;border-bottom-left-radius:99px;box-shadow:var(--vp-shadow-2);transition:var(--t-color);transition-property:background-color,border,box-shadow}.vp-blog-extract .icon[data-v-435193cb]{display:block;font-size:16px;color:var(--vp-c-text-2);transition:color var(--t-color)}@media (min-width: 768px){.vp-blog-extract[data-v-435193cb]{display:none}}@media print{.vp-blog-extract[data-v-435193cb]{display:none}}.blog-modal[data-v-435193cb]{position:fixed;top:0;bottom:0;left:0;z-index:var(--vp-z-index-overlay);width:100%;background-color:#0000004d;opacity:1}.blog-modal.fade-enter-from[data-v-435193cb],.blog-modal.fade-leave-to[data-v-435193cb]{opacity:0}.blog-modal.fade-leave-active[data-v-435193cb],.blog-modal.fade-enter-active[data-v-435193cb]{transition:opacity .5s cubic-bezier(.19,1,.22,1)}.blog-modal-container[data-v-435193cb]{position:absolute;bottom:0;width:100%;padding:24px;background-color:var(--vp-c-bg);border-top-left-radius:12px;border-top-right-radius:12px;box-shadow:0 -3px 12px #0000001a,0 -1px 4px #0000001a;transition:transform .5s cubic-bezier(.19,1,.22,1);transform:translateY(100%)}.dark .blog-modal-container[data-v-435193cb]{box-shadow:0 -3px 12px #0000004d,0 -1px 4px #00000045}.blog-modal-container.open[data-v-435193cb]{transform:translateY(0)}.profile[data-v-435193cb]{display:flex;align-items:center}.profile .avatar[data-v-435193cb]{width:64px;margin-right:16px}.profile h3[data-v-435193cb]{font-weight:600}.profile .desc[data-v-435193cb]{font-size:14px}.blog-nav[data-v-435193cb]{display:flex;align-items:center;justify-content:space-around;padding:10px 0 0;margin:24px 0 0;border-top:solid 1px var(--vp-c-divider)}.blog-nav.no-profile[data-v-435193cb]{padding-top:0;margin:0;border-top:none}.nav-link[data-v-435193cb]{display:flex;align-items:center;padding:3px;font-weight:600;color:var(--vp-c-brand-1);border-radius:8px;transition:all var(--t-color)}.nav-link .icon[data-v-435193cb]{width:1em;height:1em;margin-right:4px}.profile-info[data-v-435193cb]{display:flex;flex-wrap:wrap;gap:0 20px;align-items:center}.profile-location[data-v-435193cb],.profile-organization[data-v-435193cb]{display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--vp-c-text-3);transition:color var(--t-color)}.profile-location p[data-v-435193cb],.profile-organization p[data-v-435193cb]{margin:0 4px}.vp-blog-tags[data-v-093dd774]{flex:1;padding:32px 24px;margin:0 auto}.vp-blog-tags.has-list[data-v-093dd774]{padding-bottom:64px}.tags-title[data-v-093dd774]{display:flex;align-items:center;margin-bottom:20px;font-size:20px;font-weight:700;color:var(--vp-c-text-1);transition:color var(--t-color)}.tags-title .icon[data-v-093dd774]{width:1em;height:1em;margin-right:8px}.tags[data-v-093dd774]{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start}.tags .tag[data-v-093dd774]{display:flex;align-items:center;padding:6px 10px 6px 12px;margin:6px;font-size:14px;line-height:1;color:var(--vp-c-bg);word-wrap:break-word;cursor:pointer;background-color:var(--vp-tag-color);border:solid 1px var(--vp-tag-color);border-radius:6px;transition:all var(--t-color)}.tag-title[data-v-093dd774]{padding-bottom:8px;margin:20px 12px -10px;font-size:20px;font-weight:600;border-bottom:1px solid var(--vp-c-divider);transition:border-bottom var(--t-color)}.tag-count[data-v-093dd774]{display:inline-block;padding-left:6px;margin-left:4px;color:var(--vp-c-bg);border-left:1px solid var(--vp-c-bg);transition:color var(--t-color),border-left var(--t-color)}.tags .tag[data-v-093dd774]:hover,.tags .tag.active[data-v-093dd774]{color:var(--vp-c-bg);background-color:var(--vp-tag-hover-color)}.tags .tag:hover .tag-count[data-v-093dd774],.tags .tag.active .tag-count[data-v-093dd774]{color:var(--vp-c-bg);border-left-color:var(--vp-c-divider)}@media (min-width: 768px){.vp-blog-tags[data-v-093dd774]{padding:32px 0;margin-left:20px}.tags-nav[data-v-093dd774],.tags-container[data-v-093dd774]{padding:20px;background-color:var(--vp-c-bg);border-radius:8px;box-shadow:var(--vp-shadow-1);transition:var(--t-color);transition-property:background-color,box-shadow}.tags-container[data-v-093dd774]{margin-top:24px;margin-bottom:24px}.tags-nav[data-v-093dd774]:hover,.tags-container[data-v-093dd774]:hover{box-shadow:var(--vp-shadow-2)}.tags-container .tag-title[data-v-093dd774]{margin-top:0}}@media (min-width: 1200px){.vp-blog-tags[data-v-093dd774]{margin-left:0}}.vp-category-group[data-v-f59560e3]{position:relative}.vp-category-group[data-v-f59560e3]:after{position:absolute;top:30px;bottom:0;left:8px;display:block;content:"";border-left:1px solid var(--vp-c-divider);transition:border var(--t-color)}.vp-category-group .folder[data-v-f59560e3]{display:flex;align-items:center;margin:8px 0;font-size:16px;font-weight:600;color:var(--vp-c-text-2);cursor:pointer;transition:color var(--t-color)}.vp-category-group .folder[data-v-f59560e3]:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.vp-category-group .folder[data-v-f59560e3]{font-size:18px}}.vp-category-group .folder .icon[data-v-f59560e3]{display:inline-block;width:1em;margin-right:8px}.vp-category-group>.group[data-v-f59560e3]{display:none;margin-left:22px}@media (min-width: 768px){.vp-category-group>.group[data-v-f59560e3]{margin-left:26px}}.vp-category-group.active>.group[data-v-f59560e3]{display:block}.vp-categories-item[data-v-db15e3be]{margin:8px 0;font-size:16px;list-style:none}.vp-categories-item .post[data-v-db15e3be]{display:flex;align-items:center;width:-moz-fit-content;width:fit-content;max-width:100%;color:var(--vp-c-text-1);transition:color var(--t-color)}.vp-categories-item .post[data-v-db15e3be]:hover{color:var(--vp-c-brand-1)}.vp-categories-item .post .vpi-post[data-v-db15e3be]{display:inline-block;width:1em;margin-right:8px}.vp-categories-item .post[data-v-db15e3be] .vp-link{display:-webkit-box;overflow:hidden}.vp-blog-categories[data-v-9f0d2c06]{flex:1;padding:32px 0;margin:0 auto;transition:background-color var(--t-color),box-shadow var(--t-color)}@media (min-width: 768px){.vp-blog-categories[data-v-9f0d2c06]{padding:20px 0;margin:32px auto 32px 20px;background-color:var(--vp-c-bg);border-radius:8px;box-shadow:var(--vp-shadow-1)}.vp-blog-categories[data-v-9f0d2c06]:hover{box-shadow:var(--vp-shadow-2)}}.categories-title[data-v-9f0d2c06]{display:flex;align-items:center;padding:0 20px;font-size:20px;font-weight:700;color:var(--vp-c-text-1);transition:color var(--t-color)}.categories-title .icon[data-v-9f0d2c06]{margin-right:8px}@media (min-width: 768px){.categories-title[data-v-9f0d2c06]{padding-bottom:20px;margin-top:0;border-bottom:solid 1px var(--vp-c-divider);transition:border-bottom var(--t-color)}}@media (min-width: 1200px){.vp-blog-categories[data-v-9f0d2c06]{margin-left:0}}.vp-blog-categories .content[data-v-9f0d2c06]{padding:20px 20px 0}.vp-blog[data-v-97bed15c]{position:relative;min-height:calc(100vh - var(--vp-footer-height, 0px));background-color:var(--vp-c-bg);transition:background-color var(--t-color)}@media (min-width: 419px){.vp-blog.home-blog[data-v-97bed15c]{background-color:var(--vp-c-bg-alt)}}.blog-container[data-v-97bed15c]{display:flex;align-items:flex-start;justify-content:flex-start;width:100%;padding-top:var(--vp-nav-height);margin:0 auto}.blog-container.no-profile[data-v-97bed15c]{display:block;max-width:784px;padding-right:24px}@media (min-width: 768px){.vp-blog[data-v-97bed15c]{background-color:transparent}.blog-container[data-v-97bed15c]{position:relative;z-index:2}}@media (min-width: 960px){.vp-blog[data-v-97bed15c]{min-height:calc(100vh - var(--vp-nav-height) - var(--vp-footer-height, 0px))}.blog-container[data-v-97bed15c]{padding-top:0}}@media (min-width: 1440px){.blog-container[data-v-97bed15c]{max-width:1104px}}.root[data-v-b57d05fd]{position:relative;z-index:1}.nested[data-v-b57d05fd]{padding-left:13px}.outline-link[data-v-b57d05fd]{display:block;overflow:hidden;font-size:14px;font-weight:400;line-height:32px;color:var(--vp-c-text-2);text-overflow:ellipsis;white-space:nowrap;transition:color var(--t-color)}.outline-link[data-v-b57d05fd]:hover,.outline-link.active[data-v-b57d05fd]{color:var(--vp-c-text-1)}.outline-link.nested[data-v-b57d05fd]{padding-left:13px}.vp-doc-aside-outline[data-v-6c10763c]{display:none}.vp-doc-aside-outline.has-outline[data-v-6c10763c]{display:block}.content[data-v-6c10763c]{position:relative;padding-left:16px;font-size:13px;font-weight:500;border-left:1px solid var(--vp-c-divider);transition:border-left var(--t-color)}.outline-marker[data-v-6c10763c]{position:absolute;top:32px;left:-1px;z-index:0;width:2px;height:18px;background-color:var(--vp-c-brand-1);border-radius:2px;opacity:0;transition:top .25s cubic-bezier(0,1,.5,1),background-color var(--t-color),opacity var(--t-color)}.outline-title[data-v-6c10763c]{display:flex;align-items:center;font-size:14px;font-weight:600;line-height:32px;letter-spacing:.4px}.outline-title .icon[data-v-6c10763c]{margin-left:4px;font-size:1.2em;cursor:pointer}.vp-doc-aside[data-v-f5ed774d]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-f5ed774d]{flex-grow:1}.vp-doc-footer[data-v-92e4a8f2]{margin-top:96px}@media (min-width: 640px){.edit-info[data-v-92e4a8f2]{display:flex;align-items:center;justify-content:space-between;padding-bottom:6px}}.edit-link-button[data-v-92e4a8f2]{display:flex;align-items:center;font-size:14px;font-weight:500;line-height:32px;color:var(--vp-c-brand-1);border:0;transition:color var(--t-color)}.edit-link-button[data-v-92e4a8f2]:hover{color:var(--vp-c-brand-2)}@media print{.edit-link-button[data-v-92e4a8f2]{display:none}}.edit-link-icon[data-v-92e4a8f2]{margin-right:8px;fill:currentcolor}.last-updated-text[data-v-92e4a8f2]{font-size:14px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color var(--t-color)}@media (min-width: 640px){.last-updated[data-v-92e4a8f2]{flex:1;text-align:right}.last-updated-text[data-v-92e4a8f2]{font-size:14px;font-weight:500;line-height:32px}}.contributors[data-v-92e4a8f2]{padding-bottom:6px;margin-top:-10px;font-size:14px;line-height:32px;text-align:left}@media (min-width: 640px){.contributors[data-v-92e4a8f2]{text-align:right}}.contributors-label[data-v-92e4a8f2]{padding-right:10px;font-weight:500;color:var(--vp-c-text-2);transition:color var(--t-color)}.contributors-info[data-v-92e4a8f2]{color:var(--vp-c-text-2);transition:color var(--t-color)}.contributors-info .contributor[data-v-92e4a8f2]{color:var(--vp-c-text-3);transition:color var(--t-color)}.prev-next[data-v-92e4a8f2]{display:grid;grid-row-gap:8px;padding-top:24px;margin-top:10px;border-top:1px solid var(--vp-c-divider);transition:border-top var(--t-color)}@media (min-width: 640px){.prev-next[data-v-92e4a8f2]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}@media print{.prev-next[data-v-92e4a8f2]{display:none}}.pager-link[data-v-92e4a8f2]{display:block;width:100%;height:100%;padding:11px 16px 13px;border:1px solid var(--vp-c-divider);border-radius:8px;transition:border-color var(--t-color)}.pager-link[data-v-92e4a8f2]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-92e4a8f2]{margin-left:auto;text-align:right}.desc[data-v-92e4a8f2]{display:block;font-size:12px;font-weight:500;line-height:20px;color:var(--vp-c-text-2);transition:color var(--t-color)}.title[data-v-92e4a8f2]{display:block;font-size:14px;font-weight:500;line-height:20px;color:var(--vp-c-brand-1);transition:color var(--t-color)}.vp-encrypt-form[data-v-ccb8d8ab]{margin-top:20px}.encrypt-text[data-v-ccb8d8ab]{margin-top:40px;margin-bottom:30px;color:var(--vp-c-text-1);text-align:center}.encrypt-input-wrapper[data-v-ccb8d8ab]{position:relative}.icon-lock[data-v-ccb8d8ab]{position:absolute;top:12px;left:10px;color:var(--vp-c-border)}.encrypt-input[data-v-ccb8d8ab]{width:100%;padding:8px 12px 8px 32px;background-color:transparent;border:1px solid var(--vp-c-border);border-radius:4px;outline:none;transition:border-color var(--t-color),background-color var(--t-color)}.encrypt-input[data-v-ccb8d8ab]:focus{border-color:var(--vp-c-brand-1)}.encrypt-input.error[data-v-ccb8d8ab]{border-color:var(--vp-c-danger-3)}.encrypt-button[data-v-ccb8d8ab]{width:100%;padding:8px 12px;margin-top:20px;font-weight:500;color:var(--vp-c-white);cursor:pointer;background-color:var(--vp-c-brand-1);border:none;border-radius:4px;outline:none;transition:background-color var(--t-color)}.encrypt-button[data-v-ccb8d8ab]:hover{background-color:var(--vp-c-brand-2)}.encrypt-button.unlocking[data-v-ccb8d8ab]{color:var(--vp-c-brand-1);background-color:var(--vp-c-gray-1)}.vpi-loading[data-v-ccb8d8ab]{display:inline-block;transform:scale(5)}.vp-page-encrypt .logo[data-v-af0d71e3]{text-align:center}.icon-lock-head[data-v-af0d71e3]{display:inline-block;width:64px;height:64px;margin:auto}@media (min-width: 768px){.vp-page-encrypt[data-v-af0d71e3]{width:400px;padding:20px;margin:40px auto 0;border:solid 1px var(--vp-c-divider);border-radius:8px;box-shadow:var(--vp-shadow-1);transition:var(--t-color);transition-property:box-shadow,border-color}.vp-page-encrypt[data-v-af0d71e3]:hover{box-shadow:var(--vp-shadow-2)}}.vp-doc-title[data-v-6fc51474]{margin-bottom:.7rem;font-size:28px;font-weight:600;line-height:1.5;color:var(--vp-c-text-1);transition:color var(--t-color)}.vp-doc-title.padding[data-v-6fc51474]{padding-bottom:4rem}.vp-doc-meta[data-v-6fc51474]{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;padding:1rem 0 .5rem;margin-bottom:2rem;font-size:14px;color:var(--vp-c-text-3);border-bottom:solid 1px var(--vp-c-divider);transition:color var(--t-color),border-bottom var(--t-color)}.vp-doc-meta p[data-v-6fc51474]{display:flex;align-items:center;margin-right:1rem}.vp-doc-meta .icon[data-v-6fc51474]{width:14px;height:14px;margin-right:.3rem}.vp-doc-meta .author .icon[data-v-6fc51474],.vp-doc-meta .author span[data-v-6fc51474]{color:var(--vp-c-text-2);transition:color var(--t-color)}.vp-doc-meta .tag[data-v-6fc51474]{display:inline-block;padding:3px 5px;margin-right:6px;font-size:12px;line-height:1;color:var(--vp-tag-color, var(--vp-c-text-3));background-color:var(--vp-tag-bg, var(--vp-c-default-soft));border-radius:3px}.vp-doc-meta .tag[data-v-6fc51474]:last-of-type{margin-right:0}.vp-doc-meta .reading-time span[data-v-6fc51474]{margin-right:8px}.vp-doc-meta .reading-time span[data-v-6fc51474]:last-of-type{margin-right:0}.vp-doc-meta .create-time[data-v-6fc51474]{min-width:110px;margin-right:0;text-align:right}@media (min-width: 768px){.vp-doc-meta .create-time[data-v-6fc51474]{flex:1;justify-content:right}}.vp-breadcrumb[data-v-b0fd825a]{padding-left:8px;margin-bottom:2rem;border-left:solid 2px var(--vp-c-brand-1);transition:border-left var(--t-color)}.vp-breadcrumb ol[data-v-b0fd825a]{display:flex;flex-wrap:wrap;gap:4px;align-items:center;justify-content:flex-start;font-size:14px;font-weight:400}.vp-breadcrumb ol li[data-v-b0fd825a]{display:flex;align-items:center}.vp-breadcrumb .breadcrumb[data-v-b0fd825a]{font-weight:700;color:var(--vp-c-brand-2);transition:color var(--t-color)}.vp-breadcrumb .breadcrumb[data-v-b0fd825a]:hover{color:var(--vp-c-brand-1)}.vp-breadcrumb .breadcrumb.current[data-v-b0fd825a]{color:var(--vp-c-text-3)}.vp-breadcrumb .vpi-chevron-right[data-v-b0fd825a]{margin-left:4px;color:var(--vp-c-border);transition:color var(--t-color)}.vp-doc-container[data-v-2ba0562c]{width:100%;padding:32px 24px 96px}.vp-doc-container.with-encrypt[data-v-2ba0562c]{padding:32px 24px}@media (min-width: 768px){.vp-doc-container[data-v-2ba0562c]{padding:48px 32px 128px}}@media (min-width: 960px){.vp-doc-container[data-v-2ba0562c]{padding:48px 32px 0}.vp-doc-container:not(.has-sidebar) .container[data-v-2ba0562c]{display:flex;justify-content:center;max-width:992px}.vp-doc-container:not(.has-sidebar) .content[data-v-2ba0562c]{max-width:752px}}@media (min-width: 1280px){.vp-doc-container .container[data-v-2ba0562c]{display:flex;justify-content:center}.vp-doc-container .aside[data-v-2ba0562c]{display:block}}@media (min-width: 1440px){.vp-doc-container:not(.has-sidebar) .content[data-v-2ba0562c]{max-width:884px}.vp-doc-container.is-blog:not(.has-sidebar.has-aside) .content[data-v-2ba0562c]{max-width:985px}.vp-doc-container:not(.has-sidebar) .container[data-v-2ba0562c]{max-width:1104px}}.container[data-v-2ba0562c]{width:100%;margin:0 auto}.aside[data-v-2ba0562c]{position:relative;display:none;flex-grow:1;order:2;width:100%;max-width:256px;padding-left:32px}.left-aside[data-v-2ba0562c]{order:1;padding-right:32px;padding-left:unset}.aside-container[data-v-2ba0562c]{position:sticky;top:0;min-height:calc(100vh - var(--vp-nav-height, 0px) - var(--vp-footer-height, 0px));max-height:100vh;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 32px);margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1 - 32px);overflow:hidden auto;scrollbar-width:none}.aside-container[data-v-2ba0562c]::-webkit-scrollbar{display:none}@property --vp-aside-curtain-bg{inherits: false; initial-value: #fff; syntax: "";}.aside-curtain[data-v-2ba0562c]{--vp-aside-curtain-bg: var(--vp-c-bg);position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-aside-curtain-bg) 70%);transition:--vp-aside-curtain-bg var(--t-color)}.aside-content[data-v-2ba0562c]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-footer-height, 0px) + 48px));padding-bottom:32px}.content[data-v-2ba0562c]{position:relative;width:100%;margin:0 auto}@media (min-width: 960px){.content[data-v-2ba0562c]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-2ba0562c]{order:1;min-width:640px;margin:0}}.content-container[data-v-2ba0562c]{margin:0 auto}.vp-doc-container.has-aside .content-container[data-v-2ba0562c]{max-width:788px}.vp-button[data-v-41677cd7]{display:inline-block;font-weight:600;text-align:center;white-space:nowrap;border:1px solid transparent;transition:var(--t-color);transition-property:border,color,background-color}.vp-button[data-v-41677cd7]:active{transition:color .1s,border-color .1s,background-color .1s}.vp-button.medium[data-v-41677cd7]{padding:0 20px;font-size:14px;line-height:38px;border-radius:20px}.vp-button.big[data-v-41677cd7]{padding:0 24px;font-size:16px;line-height:46px;border-radius:24px}.vp-button.brand[data-v-41677cd7]{color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg);border-color:var(--vp-button-brand-border)}.vp-button.brand[data-v-41677cd7]:hover{color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg);border-color:var(--vp-button-brand-hover-border)}.vp-button.brand[data-v-41677cd7]:active{color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg);border-color:var(--vp-button-brand-active-border)}.vp-button.alt[data-v-41677cd7]{color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg);border-color:var(--vp-button-alt-border)}.vp-button.alt[data-v-41677cd7]:hover{color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg);border-color:var(--vp-button-alt-hover-border)}.vp-button.alt[data-v-41677cd7]:active{color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg);border-color:var(--vp-button-alt-active-border)}.vp-button.sponsor[data-v-41677cd7]{color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg);border-color:var(--vp-button-sponsor-border)}.vp-button.sponsor[data-v-41677cd7]:hover{color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg);border-color:var(--vp-button-sponsor-hover-border)}.vp-button.sponsor[data-v-41677cd7]:active{color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg);border-color:var(--vp-button-sponsor-active-border)}.vp-home-banner[data-v-94b967d3]{position:relative;width:100%;min-height:calc(100vh - var(--vp-nav-height));background-repeat:no-repeat;background-position:center;background-size:cover;transition:all var(--t-color)}.vp-home-banner .banner-mask[data-v-94b967d3]{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#000;transition:opacity var(--t-color)}.vp-home-banner .container[data-v-94b967d3]{position:relative;z-index:1;display:flex;align-items:center;justify-content:flex-start;width:100%;padding-top:4rem;margin:0 auto}.vp-home-banner .content[data-v-94b967d3]{width:100%;padding:0 2rem}.vp-home-banner .content .hero-name[data-v-94b967d3]{font-size:72px;font-weight:600;line-height:1;color:var(--vp-c-text-hero-name)}.vp-home-banner .content .hero-tagline[data-v-94b967d3]{display:flex;align-items:center;margin-top:1rem;font-size:24px;font-weight:500;line-height:1.25;color:var(--vp-c-text-hero-tagline)}.vp-home-banner .content .hero-tagline .line[data-v-94b967d3]{display:inline-block;width:80px;height:0;margin-right:1rem;border-top:solid 1px var(--vp-c-text-hero-tagline)}.vp-home-banner .content .hero-text[data-v-94b967d3]{width:100%;max-width:700px;margin-top:1.5rem;font-size:16px;font-weight:500;color:var(--vp-c-text-hero-text);border-radius:5px}@media (min-width: 960px){.vp-home-banner .container[data-v-94b967d3]{max-width:768px;padding-top:8rem}.vp-home-banner .content .hero-name[data-v-94b967d3]{font-size:100px}}@media (min-width: 1440px){.vp-home-banner .container[data-v-94b967d3]{max-width:1104px;padding-top:8rem}.vp-home-banner .content .hero-tagline[data-v-94b967d3]{font-size:32px}}.actions[data-v-94b967d3]{display:flex;flex-wrap:wrap;padding-top:24px;margin:-6px}.action[data-v-94b967d3]{flex-shrink:0;padding:6px}.vp-home-hero[data-v-769c67cd]{position:relative;width:100%}.vp-home-hero.full[data-v-769c67cd]{height:calc(100vh - var(--vp-nav-height))}.vp-home-hero.full.once[data-v-769c67cd]{height:calc(100vh - var(--vp-nav-height) - var(--vp-footer-height, 0px))}.vp-home-hero-bg[data-v-769c67cd]{position:absolute;z-index:0;width:100%;height:100%;filter:var(--vp-hero-bg-filter);background-repeat:no-repeat;background-position:center;background-size:cover;transform:translateZ(0)}.container[data-v-769c67cd]{position:relative;z-index:1;display:flex;width:100%;height:100%}.vp-home-hero.full .container[data-v-769c67cd]{align-items:center;justify-content:center}.vp-home-hero:not(.full) .container[data-v-769c67cd]{padding-top:80px;padding-bottom:80px}.content[data-v-769c67cd]{max-width:960px;padding:0 20px;margin:0 auto;text-align:center}.vp-home-hero.full .container .content[data-v-769c67cd]{margin-top:-40px}.hero-name[data-v-769c67cd],.hero-tagline[data-v-769c67cd]{font-size:48px;font-weight:900;line-height:1.25;letter-spacing:-.5px}.hero-name[data-v-769c67cd]{background:var(--vp-bg-home-hero-name, linear-gradient(315deg, var(--vp-c-purple-1) 15%, var(--vp-c-brand-2) 65%, var(--vp-c-brand-2) 100%));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.hero-tagline[data-v-769c67cd]{color:var(--vp-c-home-hero-tagline, var(--vp-c-text-2));transition:color var(--t-color)}.hero-text[data-v-769c67cd]{margin:18px 0 30px;font-size:18px;font-weight:500;color:var(--vp-c-home-hero-text, var(--vp-c-text-3));white-space:pre-wrap;transition:color var(--t-color)}.actions[data-v-769c67cd]{display:flex;flex-wrap:wrap;justify-content:space-around;margin:30px 0 0}.action[data-v-769c67cd] .vp-button{margin-right:24px}.action[data-v-769c67cd] .vp-button:last-of-type{margin-right:0}.bg-filter[data-v-769c67cd]{position:absolute;top:0;left:0;width:100%;height:100%;overflow:hidden;pointer-events:none;transform:translateZ(0)}.vp-home-hero.full.once .bg-filter[data-v-769c67cd]{height:calc(100% + var(--vp-footer-height, 0px))}@property --vp-home-hero-bg-filter{inherits: false; initial-value: #fff; syntax: "";}.bg-filter[data-v-769c67cd]:after{--vp-home-hero-bg-filter: var(--vp-c-bg);position:absolute;top:0;left:0;width:100%;height:100%;content:"";background:linear-gradient(to bottom,var(--vp-home-hero-bg-filter) 0,transparent 45%,transparent 55%,var(--vp-home-hero-bg-filter) 140%);transition:--vp-home-hero-bg-filter var(--t-color)}.bg-filter canvas[data-v-769c67cd]{width:100%;height:100%}@media (min-width: 768px){.hero-name[data-v-769c67cd],.hero-tagline[data-v-769c67cd]{font-size:64px}.hero-text[data-v-769c67cd]{font-size:20px}}@media (min-width: 960px){.hero-name[data-v-769c67cd],.hero-tagline[data-v-769c67cd]{font-size:72px}.hero-text[data-v-769c67cd]{font-size:24px}}html:not(.dark) .vp-image.dark[data-v-49934f0e]{display:none}.dark .vp-image.light[data-v-49934f0e]{display:none}.vp-home-feature[data-v-6860bc0e]{display:block;height:100%;background-color:var(--vp-c-bg-soft);border:1px solid var(--vp-c-bg-soft);border-radius:12px;transition:border-color var(--t-color),background-color var(--t-color)}.vp-home-feature.link[data-v-6860bc0e]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-6860bc0e]{display:flex;flex-direction:column;height:100%;padding:24px}.box[data-v-6860bc0e]>.VPImage{margin-bottom:20px}.icon[data-v-6860bc0e]{display:flex;align-items:center;justify-content:center;width:48px;height:48px;margin-bottom:20px;font-size:24px;background-color:var(--vp-c-default-soft);border-radius:6px;transition:background-color var(--t-color)}.title[data-v-6860bc0e]{font-size:16px;font-weight:600;line-height:24px}.details[data-v-6860bc0e]{flex-grow:1;padding-top:8px;font-size:14px;font-weight:500;line-height:24px;color:var(--vp-c-text-2)}.link-text[data-v-6860bc0e]{padding-top:8px}.link-text-value[data-v-6860bc0e]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-6860bc0e]{margin-left:6px}.title[data-v-0a927c33]{margin-bottom:20px;font-size:20px;font-weight:900;color:var(--vp-c-text-1);text-align:center;transition:color var(--t-color)}.description[data-v-0a927c33]{margin-bottom:20px;font-size:16px;line-height:1.7;color:var(--vp-c-text-1);text-align:center;transition:color var(--t-color)}@media (min-width: 768px){.title[data-v-0a927c33]{font-size:24px}.description[data-v-0a927c33]{font-size:18px}}@media (min-width: 960px){.title[data-v-0a927c33]{font-size:28px}}.items[data-v-0a927c33]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-0a927c33]{width:100%;padding:8px}@media (min-width: 640px){.item.grid-2[data-v-0a927c33],.item.grid-4[data-v-0a927c33],.item.grid-6[data-v-0a927c33]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-0a927c33],.item.grid-4[data-v-0a927c33]{width:50%}.item.grid-3[data-v-0a927c33],.item.grid-6[data-v-0a927c33]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-0a927c33]{width:25%}}.vp-home-text-image[data-v-5a1d14c5] .container{display:flex;flex-direction:column;gap:24px;align-items:center;justify-content:space-around;max-width:1152px;margin:0 auto}@media (min-width: 960px){.vp-home-text-image[data-v-5a1d14c5] .container{flex-direction:row}.vp-home-text-image[data-v-5a1d14c5] .container.reverse{flex-direction:row-reverse}}.content-image[data-v-5a1d14c5] .vp-image{width:100%;max-width:128px;margin:0 auto}.content-text h2[data-v-5a1d14c5]{margin-top:0;margin-bottom:12px}.content-text ul[data-v-5a1d14c5]{margin-left:-20px}.content-text .description[data-v-5a1d14c5]{margin:12px 0 24px;font-size:16px;font-weight:500;color:var(--vp-c-text-1);transition:color var(--t-color)}.content-text ul h3[data-v-5a1d14c5]{margin:0;font-size:16px;color:var(--vp-c-text-1);transition:color var(--t-color)}.content-text ul p[data-v-5a1d14c5]{margin:0;font-weight:500;color:var(--vp-c-text-1);transition:color var(--t-color)}.content-text ul li[data-v-5a1d14c5] :only-child{font-weight:500}@media (min-width: 768px){.content-image[data-v-5a1d14c5] .vp-image{max-width:180px;margin:0 48px}.content-text[data-v-5a1d14c5]{flex:1}}@media (min-width: 960px){.vp-home-text-image[data-v-5a1d14c5] .container{gap:48px}.content-image[data-v-5a1d14c5] .vp-image{max-width:220px;margin:0 96px}.content-text[data-v-5a1d14c5]{display:flex;justify-content:center;max-width:80%}}.vp-home-profile[data-v-22204ed3] .container{overflow:hidden}.vp-home-profile[data-v-22204ed3] img{float:left;width:64px;margin-right:24px}.vp-home-profile[data-v-22204ed3] img.circle{border-radius:50%}@media (min-width: 960px){.vp-home-profile[data-v-22204ed3] img{width:96px}}.vp-home-profile[data-v-22204ed3] h3{margin-bottom:12px;font-size:20px;font-weight:500}.vp-home-profile[data-v-22204ed3] p{font-size:16px;font-weight:400;line-height:1.5;color:var(--vp-c-text-2);white-space:pre-wrap;transition:color var(--t-color)}.vp-home[data-v-07dc6312]{min-height:calc(100vh - var(--vp-nav-height) - var(--vp-footer-height, 0px))}.vp-home .layout[data-v-07dc6312]{transition:background-color var(--t-color)}.vp-home .layout[data-v-07dc6312]:nth-child(odd){background-color:var(--vp-c-bg-alt)}.vp-home .layout[data-v-07dc6312]:nth-child(2n){background-color:var(--vp-c-bg)}.vp-friend[data-v-35027db0]{position:relative;display:flex;align-items:flex-start;padding:20px;margin-bottom:8px;background-color:var(--vp-friends-bg-color);border-radius:6px;transition:all var(--t-color)}.avatar-link[data-v-35027db0]{display:inline-block;margin-right:16px}.avatar[data-v-35027db0]{width:64px;height:64px;background-color:var(--vp-c-default-soft);background-size:cover;border-radius:100%}.content[data-v-35027db0]{flex:1}.vp-friend.only-title .content[data-v-35027db0]{margin-top:20px}.content .title[data-v-35027db0]{padding-bottom:8px;font-size:20px;font-weight:700;color:var(--vp-friends-name-color);transition:color var(--t-color),border-bottom var(--t-color)}.content[data-v-35027db0] .vp-social-links{justify-content:flex-end;margin-top:8px}.vp-friend.no-desc .content[data-v-35027db0] .vp-social-links{justify-content:flex-start}.content[data-v-35027db0] .vp-social-link{color:var(--vp-friends-name-color)}.content p[data-v-35027db0]{display:-webkit-box;padding-top:16px;overflow:hidden;line-height:1.5;color:var(--vp-friends-text-color);transition:color var(--t-color);-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3}.vp-friends-group[data-v-dd077b51]{width:100%;padding:64px 20px 0;margin:0 auto}.vp-friends-group .title[data-v-dd077b51]{padding-top:3rem;padding-bottom:8px;margin-bottom:28px;font-size:24px;font-weight:700;color:var(--vp-c-text-1);text-align:center;border-top:solid 1px var(--vp-c-divider);outline:none;transition:color var(--t-color),border-color var(--t-color)}.vp-friends-group .description[data-v-dd077b51]{margin-bottom:16px;line-height:28px;color:var(--vp-c-text-1);text-align:center;transition:color var(--t-color)}.friends-list[data-v-dd077b51]{display:grid;gap:20px;margin-top:32px}@media (min-width: 640px){.friends-list[data-v-dd077b51]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width: 960px){.vp-friends-group[data-v-dd077b51]{padding:64px 0 0}.friends-list[data-v-dd077b51]{padding:0}}@media (min-width: 1440px){.vp-friends-group[data-v-dd077b51]{max-width:1104px}.friends-list[data-v-dd077b51]{grid-template-columns:repeat(3,minmax(0,1fr));padding:0}}.vp-friends[data-v-dd991179]{width:100%;padding-top:calc(var(--vp-nav-height) + 32px);padding-bottom:5rem;margin:0 auto}.vp-friends .title[data-v-dd991179]{padding:32px 20px 0;margin-bottom:2rem;font-size:28px;font-weight:700;color:var(--vp-c-text-1);text-align:center;outline:none;transition:color var(--t-color)}.vp-friends .description[data-v-dd991179]{padding:0 20px;margin-bottom:16px;line-height:28px;color:var(--vp-c-text-1);text-align:center;transition:color var(--t-color)}.friends-list[data-v-dd991179]{display:grid;gap:20px;padding:0 20px;margin-top:48px}.edit-link[data-v-dd991179]{padding-left:1rem;margin-top:64px}@media (min-width: 640px){.vp-friends .title[data-v-dd991179],.vp-friends .description[data-v-dd991179]{padding-left:16px}.friends-list[data-v-dd991179]{grid-template-columns:repeat(2,minmax(0,1fr));padding:0 16px}}@media (min-width: 960px){.vp-friends[data-v-dd991179]{max-width:784px;padding-top:48px}.vp-friends .title[data-v-dd991179],.vp-friends .description[data-v-dd991179],.edit-link[data-v-dd991179]{padding-left:0}.friends-list[data-v-dd991179]{padding:0}}@media (min-width: 1440px){.vp-friends[data-v-dd991179]{max-width:1104px}.friends-list[data-v-dd991179]{grid-template-columns:repeat(3,minmax(0,1fr))}}.edit-link-button[data-v-dd991179]{display:flex;align-items:center;font-size:14px;font-weight:500;line-height:32px;color:var(--vp-c-brand-1);border:0;transition:color var(--t-color)}.edit-link-button[data-v-dd991179]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-dd991179]{width:14px;height:14px;margin-right:8px;fill:currentcolor}.vp-content[data-v-9c5bd14c]{flex-grow:1;flex-shrink:0;width:100%;margin:var(--vp-layout-top-height, 0) auto 0}.vp-content.is-home[data-v-9c5bd14c]{width:100%;max-width:100%}.vp-content.has-sidebar[data-v-9c5bd14c]{margin:0}@media (min-width: 960px){.vp-content[data-v-9c5bd14c]{padding-top:var(--vp-nav-height)}.vp-content.has-sidebar[data-v-9c5bd14c]{padding-left:var(--vp-sidebar-width);margin:var(--vp-layout-top-height, 0) 0 0}}@media (min-width: 1440px){.vp-content.has-sidebar[data-v-9c5bd14c]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.vp-local-nav-outline-dropdown[data-v-b58e40ac]{padding:12px 20px 11px}.vp-local-nav-outline-dropdown button[data-v-b58e40ac]{position:relative;display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color var(--t-color)}.vp-local-nav-outline-dropdown button[data-v-b58e40ac]:hover,.vp-local-nav-outline-dropdown button.open[data-v-b58e40ac]{color:var(--vp-c-text-1)}.icon[data-v-b58e40ac]{display:inline-block;width:14px;height:14px;margin-left:2px;vertical-align:middle;fill:currentcolor}[data-v-b58e40ac] .outline-link{padding:2px 0;font-size:14px}.open>.icon[data-v-b58e40ac]{transform:rotate(90deg)}.items[data-v-b58e40ac]{position:absolute;top:64px;right:16px;left:16px;display:grid;gap:1px;max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;background-color:var(--vp-c-gutter);border:1px solid var(--vp-c-border);border-radius:8px;box-shadow:var(--vp-shadow-3);transition:var(--t-color);transition-property:background-color,border,box-shadow}.header[data-v-b58e40ac]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-b58e40ac]{display:block;padding:0 16px;font-size:14px;font-weight:500;line-height:48px;color:var(--vp-c-brand-1)}.outline[data-v-b58e40ac]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-b58e40ac]{transition:all .2s ease-out}.flyout-leave-active[data-v-b58e40ac]{transition:all .15s ease-in}.flyout-enter-from[data-v-b58e40ac],.flyout-leave-to[data-v-b58e40ac]{opacity:0;transform:translateY(-16px)}.vp-local-nav[data-v-b10d7129]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);display:flex;align-items:center;justify-content:space-between;width:100%;padding-top:var(--vp-layout-top-height, 0);background-color:var(--vp-local-nav-bg-color);border-top:1px solid var(--vp-c-gutter);border-bottom:1px solid var(--vp-c-gutter);transition:border-color var(--t-color),background-color var(--t-color),border var(--t-color)}.vp-local-nav.fixed[data-v-b10d7129]{position:fixed}.vp-local-nav.reached-top[data-v-b10d7129]{border-top-color:transparent}@media (min-width: 960px){.vp-local-nav.is-blog[data-v-b10d7129]{display:none}.vp-local-nav[data-v-b10d7129]{top:var(--vp-nav-height);width:calc(100% - var(--vp-sidebar-width));margin-left:var(--vp-sidebar-width);border-top:none}.vp-local-nav .menu[data-v-b10d7129]{visibility:hidden}.vp-local-nav.with-outline[data-v-b10d7129]{display:none}}@media (min-width: 1280px){.vp-local-nav[data-v-b10d7129]{display:none}}@media print{.vp-local-nav[data-v-b10d7129]{display:none}}.menu[data-v-b10d7129]{display:flex;align-items:center;padding:12px 24px 11px;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s}.menu.hidden[data-v-b10d7129]{visibility:hidden}.menu[data-v-b10d7129]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-b10d7129]{padding:12px 32px 11px}}.menu-icon[data-v-b10d7129]{width:16px;height:16px;margin-right:8px;fill:currentcolor}.top-link[data-v-b10d7129]{display:block;padding:12px 24px 11px;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s}.top-link[data-v-b10d7129]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.top-link[data-v-b10d7129]{padding:12px 32px 11px}}.vp-switch[data-v-0169aaa3]{position:relative;display:block;flex-shrink:0;width:40px;height:22px;background-color:var(--vp-input-switch-bg-color);border:1px solid var(--vp-input-border-color);border-radius:11px;transition:border-color .25s ease,background-color .25s ease}.vp-switch[data-v-0169aaa3]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-0169aaa3]{position:absolute;top:1px;left:1px;width:18px;height:18px;background-color:var(--vp-c-neutral-inverse);border-radius:50%;box-shadow:var(--vp-shadow-1);transition:transform .25s}.icon[data-v-0169aaa3]{position:relative;display:block;width:18px;height:18px;overflow:hidden;border-radius:50%}.icon[data-v-0169aaa3] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-0169aaa3] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-2d192b87]{opacity:1}.moon[data-v-2d192b87],.dark .sun[data-v-2d192b87]{opacity:0}.dark .moon[data-v-2d192b87]{opacity:1}.dark .vp-switch-appearance[data-v-2d192b87] .check{transform:translate(18px)}.vp-navbar-appearance[data-v-d933a746]{display:none}@media (min-width: 1280px){.vp-navbar-appearance[data-v-d933a746]{display:flex;align-items:center}}.vp-menu-group+.vp-menu-link[data-v-c60562fd]{padding:12px 12px 0;margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);transition:border-top var(--t-color)}.link[data-v-c60562fd]{display:block;padding:0 12px;font-size:14px;font-weight:500;line-height:32px;color:var(--vp-c-text-1);white-space:nowrap;border-radius:6px;transition:background-color var(--t-color),color var(--t-color)}.link[data-v-c60562fd]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-c60562fd]{color:var(--vp-c-brand-1)}.link[data-v-c60562fd] .vp-icon,.link[data-v-c60562fd] .vp-icon-img{margin-left:0}.vp-menu-group[data-v-7be621bf]{padding:12px 12px 0;margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);transition:border-top var(--t-color)}.vp-menu-group[data-v-7be621bf]:first-child{padding-top:0;margin-top:0;border-top:0}.vp-menu-group+.vp-menu-group[data-v-7be621bf]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-7be621bf]{padding:0 12px;font-size:14px;font-weight:600;line-height:32px;color:var(--vp-c-text-2);transition:color var(--t-color)}.title[data-v-7be621bf] .vp-icon,.title[data-v-7be621bf] .vp-icon-img{margin-left:0}.vp-menu[data-v-c90f6b44]{min-width:128px;max-height:calc(100vh - var(--vp-nav-height));padding:12px;overflow-y:auto;background-color:var(--vp-c-bg-elv);border:1px solid var(--vp-c-divider);border-radius:12px;box-shadow:var(--vp-shadow-3);transition:background-color var(--t-color),border var(--t-color)}.vp-menu[data-v-c90f6b44] .group{padding:0 12px 12px;margin:0 -12px}.vp-menu[data-v-c90f6b44] .group+.group{padding:11px 12px 12px;border-top:1px solid var(--vp-c-divider);transition:border-top var(--t-color)}.vp-menu[data-v-c90f6b44] .group:last-child{padding-bottom:0}.vp-menu[data-v-c90f6b44] .group+.item{padding:11px 16px 0;border-top:1px solid var(--vp-c-divider);transition:border-top var(--t-color)}.vp-menu[data-v-c90f6b44] .item{padding:0 16px;white-space:nowrap}.vp-menu[data-v-c90f6b44] .label{flex-grow:1;font-size:12px;font-weight:500;line-height:28px;color:var(--vp-c-text-2);transition:color var(--t-color)}.vp-menu[data-v-c90f6b44] .action{padding-left:24px}.vp-flyout[data-v-e8e53aac]{position:relative;transition:color var(--t-color)}.text[data-v-e8e53aac]{display:flex;align-items:center;font-size:14px;font-weight:500;line-height:normal;color:var(--vp-c-text-1);transition:color var(--t-color)}.icon[data-v-e8e53aac]{width:20px;height:20px;fill:currentcolor;transition:fill var(--t-color)}.menu[data-v-e8e53aac]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;visibility:hidden;opacity:0;transition:opacity .25s,visibility .25s,transform .25s}.vp-flyout[data-v-e8e53aac]:hover{color:var(--vp-c-brand-1)}.vp-flyout:hover .text[data-v-e8e53aac]{color:var(--vp-c-text-2)}.vp-flyout:hover .icon[data-v-e8e53aac]{fill:var(--vp-c-text-2)}.vp-flyout.active .text[data-v-e8e53aac]{color:var(--vp-c-brand-1)}.vp-flyout.active:hover .text[data-v-e8e53aac]{color:var(--vp-c-brand-2)}.vp-flyout:hover .menu[data-v-e8e53aac],.button[aria-expanded=true]+.menu[data-v-e8e53aac]{visibility:visible;opacity:1;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-e8e53aac]{visibility:hidden;opacity:0;transform:translateY(0)}.button[data-v-e8e53aac]{display:flex;align-items:center;height:var(--vp-nav-height);padding:0 10px;color:var(--vp-c-text-1);transition:color var(--t-color)}.option-icon[data-v-e8e53aac]{margin-right:0;font-size:16px;fill:currentcolor}.text-icon[data-v-e8e53aac]{width:14px;height:14px;margin-left:4px;fill:currentcolor}.vp-navbar-extra[data-v-c623ec0f]{display:none;margin-right:-12px}@media (min-width: 768px){.vp-navbar-extra[data-v-c623ec0f]{display:block}}@media (min-width: 1280px){.vp-navbar-extra[data-v-c623ec0f]{display:none}}.trans-title[data-v-c623ec0f]{padding:0 24px 0 12px;font-size:14px;font-weight:700;line-height:32px;color:var(--vp-c-text-1);transition:color var(--t-color)}.item.appearance[data-v-c623ec0f],.item.social-links[data-v-c623ec0f]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-c623ec0f]{min-width:176px}.appearance-action[data-v-c623ec0f]{margin-right:-2px}.social-links-list[data-v-c623ec0f]{margin:-4px -8px}.vp-navbar-hamburger[data-v-4d0fdb4a]{display:flex;align-items:center;justify-content:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.vp-navbar-hamburger[data-v-4d0fdb4a]{display:none}}.container[data-v-4d0fdb4a]{position:relative;width:16px;height:14px;overflow:hidden}.top[data-v-4d0fdb4a],.middle[data-v-4d0fdb4a],.bottom[data-v-4d0fdb4a]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color var(--t-color),transform .25s}.top[data-v-4d0fdb4a]{top:0;left:0;transform:translate(0)}.middle[data-v-4d0fdb4a]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-4d0fdb4a]{top:12px;left:0;transform:translate(4px)}.vp-navbar-hamburger:hover .top[data-v-4d0fdb4a]{top:0;left:0;transform:translate(4px)}.vp-navbar-hamburger:hover .middle[data-v-4d0fdb4a]{top:6px;left:0;transform:translate(0)}.vp-navbar-hamburger:hover .bottom[data-v-4d0fdb4a]{top:12px;left:0;transform:translate(8px)}.vp-navbar-hamburger.active .top[data-v-4d0fdb4a]{top:6px;transform:translate(0) rotate(225deg)}.vp-navbar-hamburger.active .middle[data-v-4d0fdb4a]{top:6px;transform:translate(16px)}.vp-navbar-hamburger.active .bottom[data-v-4d0fdb4a]{top:6px;transform:translate(0) rotate(135deg)}.vp-navbar-hamburger.active:hover .top[data-v-4d0fdb4a],.vp-navbar-hamburger.active:hover .middle[data-v-4d0fdb4a],.vp-navbar-hamburger.active:hover .bottom[data-v-4d0fdb4a]{background-color:var(--vp-c-text-2);transition:top .25s,background-color var(--t-color),transform .25s}.navbar-menu-link[data-v-081f03fe]{display:flex;align-items:center;padding:0 10px;font-size:14px;font-weight:500;line-height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color var(--t-color)}.navbar-menu-link.active[data-v-081f03fe],.navbar-menu-link[data-v-081f03fe]:hover{color:var(--vp-c-brand-1)}.vp-navbar-menu[data-v-888c0fa0]{display:none}@media (min-width: 768px){.vp-navbar-menu[data-v-888c0fa0]{display:flex}}.vp-navbar-social-links[data-v-f7999e32]{display:none}@media (min-width: 1280px){.vp-navbar-social-links[data-v-f7999e32]{display:flex;align-items:center}}.title[data-v-f71c6d93]{display:flex;align-items:center;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);border-bottom:1px solid transparent;transition:opacity var(--t-color),color var(--t-color),border-bottom var(--t-color)}@media (min-width: 960px){.title[data-v-f71c6d93]{flex-shrink:0}.vp-navbar-title.has-sidebar .title[data-v-f71c6d93]{border-bottom-color:var(--vp-c-divider)}}[data-v-f71c6d93] .logo{height:min(var(--vp-nav-logo-height, 24px),48px);margin-right:8px}.vp-navbar-translations[data-v-3b5cd21d]{display:none}@media (min-width: 1280px){.vp-navbar-translations[data-v-3b5cd21d]{display:flex;align-items:center}}.title[data-v-3b5cd21d]{padding:0 24px 0 12px;font-size:14px;font-weight:700;line-height:32px;color:var(--vp-c-text-1);transition:color var(--t-color)}.vp-navbar[data-v-32055f74]{position:relative;height:var(--vp-nav-height);white-space:nowrap;pointer-events:none;transition:var(--t-color);transition-property:background-color,color,border-bottom}.vp-navbar.screen-open[data-v-32055f74]{background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.vp-navbar[data-v-32055f74]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.vp-navbar[data-v-32055f74]:not(.home){background-color:transparent}.vp-navbar[data-v-32055f74]:not(.has-sidebar,.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-32055f74]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-32055f74]{padding:0 32px}}@media (min-width: 960px){.vp-navbar.has-sidebar .wrapper[data-v-32055f74]{padding:0}}.container[data-v-32055f74]{display:flex;justify-content:space-between;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);margin:0 auto;pointer-events:none}.content[data-v-32055f74]{flex-grow:1}.title[data-v-32055f74]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color var(--t-color)}.container>.title[data-v-32055f74],.container>.content[data-v-32055f74]{pointer-events:none}.container[data-v-32055f74] *{pointer-events:auto}@media (min-width: 960px){.vp-navbar.has-sidebar .container[data-v-32055f74]{max-width:100%}}@media (min-width: 960px){.vp-navbar.has-sidebar .title[data-v-32055f74]{position:absolute;top:0;left:0;z-index:2;width:var(--vp-sidebar-width);height:var(--vp-nav-height);padding:0 32px;background-color:transparent}}@media (min-width: 1440px){.vp-navbar.has-sidebar .title[data-v-32055f74]{width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px);padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2))}}@media (min-width: 960px){.vp-navbar.has-sidebar .content[data-v-32055f74]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.vp-navbar.has-sidebar .content[data-v-32055f74]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-32055f74]{display:flex;align-items:center;justify-content:flex-end;height:var(--vp-nav-height);transition:background-color var(--t-color)}@media (min-width: 960px){.vp-navbar:not(.home.top) .content-body[data-v-32055f74]{position:relative;background-color:var(--vp-nav-bg-color)}.vp-navbar:not(.has-sidebar,.home.top) .content-body[data-v-32055f74]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-32055f74]{-moz-column-gap:.5rem;column-gap:.5rem}}.menu+.translations[data-v-32055f74]:before,.menu+.appearance[data-v-32055f74]:before,.menu+.social-links[data-v-32055f74]:before,.translations+.appearance[data-v-32055f74]:before,.translations+.social-links[data-v-32055f74]:before,.appearance+.social-links[data-v-32055f74]:before{width:1px;height:24px;margin-right:8px;margin-left:8px;content:"";background-color:var(--vp-c-divider);transition:background-color var(--t-color)}.menu+.appearance[data-v-32055f74]:before,.translations+.appearance[data-v-32055f74]:before{margin-right:16px}.appearance+.social-links[data-v-32055f74]:before{margin-left:16px}.social-links[data-v-32055f74]{margin-right:-8px}.divider[data-v-32055f74]{width:100%;height:1px}@media (min-width: 960px){.vp-navbar.has-sidebar .divider[data-v-32055f74]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.vp-navbar.has-sidebar .divider[data-v-32055f74]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.vp-navbar.screen-open .divider[data-v-32055f74]{display:none}.divider-line[data-v-32055f74]{width:100%;height:1px;transition:background-color var(--t-color)}.vp-navbar:not(.home) .divider-line[data-v-32055f74]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.vp-navbar:not(.home.top) .divider-line[data-v-32055f74]{background-color:var(--vp-c-gutter)}.vp-navbar:not(.has-sidebar,.home.top) .divider[data-v-32055f74]{background-color:var(--vp-c-gutter)}}@media print{.vp-navbar .hamburger[data-v-32055f74]{display:none}}.vp-nav-screen-appearance[data-v-fadca7e0]{display:flex;align-items:center;justify-content:space-between;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft);border-radius:8px;transition:var(--t-color);transition-property:background-color}.text[data-v-fadca7e0]{font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2)}.vp-nav-screen-menu-group-link[data-v-0661b3de]{display:block;margin-left:12px;font-size:14px;font-weight:400;line-height:32px;color:var(--vp-c-text-1);transition:color var(--t-color)}.vp-nav-screen-menu-group-link[data-v-0661b3de]:hover{color:var(--vp-c-brand-1)}.vp-nav-screen-menu-group-section[data-v-3d0d4b07]{display:block}.title[data-v-3d0d4b07]{font-size:13px;font-weight:700;line-height:32px;color:var(--vp-c-text-2);transition:color var(--t-color)}.vp-nav-screen-menu-group[data-v-877dc61b]{height:48px;overflow:hidden;border-bottom:1px solid var(--vp-c-divider);transition:border-color var(--t-color)}.vp-nav-screen-menu-group .items[data-v-877dc61b]{visibility:hidden}.vp-nav-screen-menu-group.open .items[data-v-877dc61b]{visibility:visible}.vp-nav-screen-menu-group.open[data-v-877dc61b]{height:auto;padding-bottom:10px}.button[data-v-877dc61b]{display:flex;align-items:center;justify-content:space-between;width:100%;padding:12px 4px 11px 0;font-size:14px;font-weight:500;line-height:24px;color:var(--vp-c-text-1);transition:color var(--t-color)}.button[data-v-877dc61b]:hover{color:var(--vp-c-brand-1)}.vp-nav-screen-menu-group.open .button[data-v-877dc61b]{padding-bottom:6px;color:var(--vp-c-brand-1)}.button-icon[data-v-877dc61b]{width:14px;height:14px;fill:var(--vp-c-text-2);transition:fill .5s,transform .25s}.vp-nav-screen-menu-group.open .button-icon[data-v-877dc61b]{transform:rotate(45deg)}.group[data-v-877dc61b]:first-child{padding-top:0}.group+.group[data-v-877dc61b],.group+.item[data-v-877dc61b]{padding-top:4px}.vp-nav-screen-menu-link[data-v-e6226695]{display:block;padding:12px 0 11px;font-size:14px;font-weight:500;line-height:24px;color:var(--vp-c-text-1);border-bottom:1px solid var(--vp-c-divider);transition:border-color var(--t-color),color var(--t-color)}.vp-nav-screen-menu-link[data-v-e6226695]:hover{color:var(--vp-c-brand-1)}.vp-nav-screen-translations[data-v-9415c1d3]{height:24px;overflow:hidden}.vp-nav-screen-translations.open[data-v-9415c1d3]{height:auto}.title[data-v-9415c1d3]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color var(--t-color)}.icon[data-v-9415c1d3]{font-size:16px}.icon.lang[data-v-9415c1d3]{margin-right:8px}.icon.chevron[data-v-9415c1d3]{margin-left:4px}.list[data-v-9415c1d3]{padding:4px 0 0 24px}.link[data-v-9415c1d3]{font-size:13px;line-height:32px;color:var(--vp-c-text-1);transition:color var(--t-color)}.vp-nav-screen[data-v-a90157be]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;width:100%;padding:0 32px;overflow-y:auto;pointer-events:auto;background-color:var(--vp-nav-screen-bg-color);transition:background-color var(--t-color)}.container[data-v-a90157be]{max-width:288px;padding:24px 0 96px;margin:0 auto}.vp-nav-screen.fade-enter-active[data-v-a90157be],.vp-nav-screen.fade-leave-active[data-v-a90157be]{transition:opacity var(--t-color)}.vp-nav-screen.fade-enter-active .container[data-v-a90157be],.vp-nav-screen.fade-leave-active .container[data-v-a90157be]{transition:transform var(--t-color)}.vp-nav-screen.fade-enter-from[data-v-a90157be],.vp-nav-screen.fade-leave-to[data-v-a90157be]{opacity:0}.vp-nav-screen.fade-enter-from .container[data-v-a90157be],.vp-nav-screen.fade-leave-to .container[data-v-a90157be]{transform:translateY(-8px)}@media (min-width: 768px){.vp-nav-screen[data-v-a90157be]{display:none}}.menu+.translations[data-v-a90157be],.menu+.appearance[data-v-a90157be],.translations+.appearance[data-v-a90157be]{margin-top:24px}.menu+.social-links[data-v-a90157be]{margin-top:16px}.appearance+.social-links[data-v-a90157be]{margin-top:16px}.vp-nav[data-v-1c6a66a8]{position:relative;top:var(--vp-layout-top-height, 0);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none}.vp-nav.fixed[data-v-1c6a66a8]{position:fixed}.vp-nav.fixed[data-v-1c6a66a8] .vp-navbar{background-color:var(--vp-nav-bg-color);border-bottom-color:var(--vp-c-gutter)}@media (min-width: 960px){.vp-nav[data-v-1c6a66a8]{position:fixed}}.vp-sidebar-item.level-0[data-v-1195cdfd]{padding-bottom:24px}.vp-sidebar-item.collapsed.level-0[data-v-1195cdfd]{padding-bottom:10px}.item[data-v-1195cdfd]{position:relative;display:flex;align-items:center;width:100%}.vp-sidebar-item.collapsible>.item[data-v-1195cdfd]{cursor:pointer}.indicator[data-v-1195cdfd]{position:absolute;top:6px;bottom:6px;left:-17px;width:1px;transition:background-color var(--t-color)}.vp-sidebar-item.level-2.is-active>.item>.indicator[data-v-1195cdfd],.vp-sidebar-item.level-3.is-active>.item>.indicator[data-v-1195cdfd],.vp-sidebar-item.level-4.is-active>.item>.indicator[data-v-1195cdfd],.vp-sidebar-item.level-5.is-active>.item>.indicator[data-v-1195cdfd]{background-color:var(--vp-c-brand-1)}.link[data-v-1195cdfd]{display:block;flex-grow:1}.text[data-v-1195cdfd]{flex-grow:1;padding:4px 0;font-size:14px;line-height:24px;transition:color var(--t-color)}.vp-sidebar-item.level-0 .text[data-v-1195cdfd]{font-weight:700;color:var(--vp-c-text-1)}.vp-sidebar-item.level-1 .text[data-v-1195cdfd],.vp-sidebar-item.level-2 .text[data-v-1195cdfd],.vp-sidebar-item.level-3 .text[data-v-1195cdfd],.vp-sidebar-item.level-4 .text[data-v-1195cdfd],.vp-sidebar-item.level-5 .text[data-v-1195cdfd]{font-weight:500;color:var(--vp-c-text-2)}.vp-sidebar-item.level-0.has-active>.item>.text[data-v-1195cdfd],.vp-sidebar-item.level-1.has-active>.item>.text[data-v-1195cdfd],.vp-sidebar-item.level-2.has-active>.item>.text[data-v-1195cdfd],.vp-sidebar-item.level-3.has-active>.item>.text[data-v-1195cdfd],.vp-sidebar-item.level-4.has-active>.item>.text[data-v-1195cdfd],.vp-sidebar-item.level-5.has-active>.item>.text[data-v-1195cdfd],.vp-sidebar-item.level-0.has-active>.item>.link>.text[data-v-1195cdfd],.vp-sidebar-item.level-1.has-active>.item>.link>.text[data-v-1195cdfd],.vp-sidebar-item.level-2.has-active>.item>.link>.text[data-v-1195cdfd],.vp-sidebar-item.level-3.has-active>.item>.link>.text[data-v-1195cdfd],.vp-sidebar-item.level-4.has-active>.item>.link>.text[data-v-1195cdfd],.vp-sidebar-item.level-5.has-active>.item>.link>.text[data-v-1195cdfd]{color:var(--vp-c-text-1)}.vp-sidebar-item.level-0.is-active>.item .link>.text[data-v-1195cdfd],.vp-sidebar-item.level-1.is-active>.item .link>.text[data-v-1195cdfd],.vp-sidebar-item.level-2.is-active>.item .link>.text[data-v-1195cdfd],.vp-sidebar-item.level-3.is-active>.item .link>.text[data-v-1195cdfd],.vp-sidebar-item.level-4.is-active>.item .link>.text[data-v-1195cdfd],.vp-sidebar-item.level-5.is-active>.item .link>.text[data-v-1195cdfd]{color:var(--vp-c-brand-1)}.vp-sidebar-item.level-0.is-link>.item>.link:hover .text[data-v-1195cdfd],.vp-sidebar-item.level-1.is-link>.item>.link:hover .text[data-v-1195cdfd],.vp-sidebar-item.level-2.is-link>.item>.link:hover .text[data-v-1195cdfd],.vp-sidebar-item.level-3.is-link>.item>.link:hover .text[data-v-1195cdfd],.vp-sidebar-item.level-4.is-link>.item>.link:hover .text[data-v-1195cdfd],.vp-sidebar-item.level-5.is-link>.item>.link:hover .text[data-v-1195cdfd]{color:var(--vp-c-brand-1)}.caret[data-v-1195cdfd]{display:flex;align-items:center;justify-content:center;width:32px;height:32px;margin-right:-7px;color:var(--vp-c-text-3);cursor:pointer;transition:color var(--t-color)}.item[data-v-1195cdfd] .vp-icon{margin:0 .25rem 0 0;font-size:.9em;color:var(--vp-c-text-2);transition:color var(--t-color)}.item[data-v-1195cdfd] .vp-icon-img{height:.9em;margin:0 .25rem 0 0}.item:hover .caret[data-v-1195cdfd]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-1195cdfd]:hover{color:var(--vp-c-text-1)}.vp-sidebar-item.level-0.is-active>.item[data-v-1195cdfd]>.vp-icon,.vp-sidebar-item.level-1.is-active>.item[data-v-1195cdfd]>.vp-icon,.vp-sidebar-item.level-2.is-active>.item[data-v-1195cdfd]>.vp-icon,.vp-sidebar-item.level-3.is-active>.item[data-v-1195cdfd]>.vp-icon,.vp-sidebar-item.level-4.is-active>.item[data-v-1195cdfd]>.vp-icon,.vp-sidebar-item.level-5.is-active>.item[data-v-1195cdfd]>.vp-icon{color:var(--vp-c-brand-1)}.vp-sidebar-item.level-0.is-link>.item[data-v-1195cdfd]:hover .vp-icon,.vp-sidebar-item.level-1.is-link>.item[data-v-1195cdfd]:hover .vp-icon,.vp-sidebar-item.level-2.is-link>.item[data-v-1195cdfd]:hover .vp-icon,.vp-sidebar-item.level-3.is-link>.item[data-v-1195cdfd]:hover .vp-icon,.vp-sidebar-item.level-4.is-link>.item[data-v-1195cdfd]:hover .vp-icon,.vp-sidebar-item.level-5.is-link>.item[data-v-1195cdfd]:hover .vp-icon{color:var(--vp-c-brand-1)}.caret-icon[data-v-1195cdfd]{width:18px;height:18px;fill:currentcolor;transition:transform var(--t-color);transform:rotate(90deg)}.vp-sidebar-item.collapsed .caret-icon[data-v-1195cdfd]{transform:rotate(0)}.vp-sidebar-item.level-1 .items[data-v-1195cdfd],.vp-sidebar-item.level-2 .items[data-v-1195cdfd],.vp-sidebar-item.level-3 .items[data-v-1195cdfd],.vp-sidebar-item.level-4 .items[data-v-1195cdfd],.vp-sidebar-item.level-5 .items[data-v-1195cdfd]{padding-left:16px;border-left:1px solid var(--vp-c-divider);transition:border-left var(--t-color)}.vp-sidebar-item.collapsed .items[data-v-1195cdfd]{display:none}.no-transition[data-v-6166e355] .caret-icon{transition:none}.group+.group[data-v-6166e355]{padding-top:10px;border-top:1px solid var(--vp-c-divider);transition:border var(--t-color)}@media (min-width: 960px){.group[data-v-6166e355]{width:calc(var(--vp-sidebar-width) - 64px);padding-top:10px}}.vp-sidebar[data-v-f57067a4]{position:fixed;top:var(--vp-layout-top-height, 0);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);width:calc(100vw - 64px);max-width:320px;padding:32px 32px 96px;overflow:hidden auto;background-color:var(--vp-sidebar-bg-color);box-shadow:var(--vp-c-shadow-3);opacity:0;transition:opacity var(--t-color),background-color var(--t-color),box-shadow var(--t-color),transform .5s cubic-bezier(.19,1,.22,1);transform:translate(-100%);scrollbar-width:thin}.vp-sidebar.open[data-v-f57067a4]{visibility:visible;opacity:1;transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1);transform:translate(0)}.dark .vp-sidebar[data-v-f57067a4]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.vp-sidebar[data-v-f57067a4]{z-index:1;width:var(--vp-sidebar-width);max-width:100%;padding-top:var(--vp-nav-height);visibility:visible;background-color:var(--vp-sidebar-bg-color);box-shadow:none;opacity:1;transform:translate(0)}}@media (min-width: 1440px){.vp-sidebar[data-v-f57067a4]{width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px);padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2))}}@media (min-width: 960px){.curtain[data-v-f57067a4]{position:sticky;top:-64px;left:0;z-index:1;height:var(--vp-nav-height);margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;background-color:var(--vp-sidebar-bg-color);transition:background-color var(--t-color)}}.nav[data-v-f57067a4]{outline:0}.vp-skip-link[data-v-ed157a22]{top:8px;left:8px;z-index:999;padding:8px 16px;font-size:12px;font-weight:700;color:var(--vp-c-brand-1);text-decoration:none;background-color:var(--vp-c-bg);border-radius:8px;box-shadow:var(--vp-shadow-3)}.vp-skip-link[data-v-ed157a22]:focus{width:auto;height:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.vp-skip-link[data-v-ed157a22]{top:14px;left:16px}}.vp-footer[data-v-7fd6cbc3]{position:relative;z-index:var(--vp-z-index-footer);padding:24px;background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-gutter);transition:border-top var(--t-color),background-color var(--t-color)}.footer-no-border .vp-footer[data-v-7fd6cbc3]{background-color:transparent;border-top:none}.vp-footer p[data-v-7fd6cbc3]{color:var(--vp-c-text-2);transition:color var(--t-color)}.vp-footer[data-v-7fd6cbc3] a{color:var(--vp-c-text-2);text-decoration-line:underline;text-underline-offset:2px;transition:color var(--t-color),text-underline-offset var(--t-color)}.vp-footer[data-v-7fd6cbc3] a:hover{color:var(--vp-c-text-1);text-underline-offset:4px}@media (min-width: 960px){.vp-footer.has-sidebar[data-v-7fd6cbc3]{margin-left:var(--vp-sidebar-width)}.vp-footer.has-sidebar .container[data-v-7fd6cbc3]{margin-left:calc(0px - var(--vp-sidebar-width))}}@media (min-width: 1440px){.vp-footer[data-v-7fd6cbc3]{padding:24px}.vp-footer.has-sidebar[data-v-7fd6cbc3]{margin-left:calc((100% - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-7fd6cbc3]{max-width:var(--vp-layout-max-width);margin:0 auto;text-align:center}.message[data-v-7fd6cbc3],.copyright[data-v-7fd6cbc3]{font-size:14px;font-weight:500;line-height:24px;color:var(--vp-c-text-2)}.message[data-v-7fd6cbc3]{order:2}.copyright[data-v-7fd6cbc3]{order:1}.vp-back-to-top[data-v-d069047c]{position:fixed;inset-inline-end:1rem;right:24px;bottom:calc(var(--vp-footer-height, 82px) - 18px);z-index:var(--vp-z-index-back-to-top);width:36px;height:36px;background-color:var(--vp-c-bg);border-radius:100%;box-shadow:var(--vp-shadow-2);transition:background-color var(--t-color),box-shadow var(--t-color)}.vp-back-to-top .percent[data-v-d069047c],.vp-back-to-top .icon[data-v-d069047c]{position:absolute;top:0;left:0;opacity:0;transition:opacity .5s ease,color var(--t-color)}.vp-back-to-top .percent.show[data-v-d069047c],.vp-back-to-top .icon.show[data-v-d069047c]{opacity:1}.vp-back-to-top .percent[data-v-d069047c]{width:100%;height:100%;font-size:10px;line-height:36px;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vp-back-to-top .icon[data-v-d069047c]{top:50%;left:50%;width:18px;height:18px;color:var(--vp-c-text-3);transform:translate(-50%,-50%)}.vp-back-to-top svg[data-v-d069047c]{width:100%;height:100%}.vp-back-to-top svg circle[data-v-d069047c]{fill:none;stroke:var(--vp-c-brand-2);stroke-dasharray:0% 314.1593%;stroke-width:4px;transform:rotate(-90deg);transform-origin:50% 50%;r:16}@media (min-width: 768px){.vp-back-to-top[data-v-d069047c]{bottom:calc(var(--vp-footer-height, 88px) - 24px);width:48px;height:48px}.vp-back-to-top .percent[data-v-d069047c]{font-size:14px;line-height:48px}.vp-back-to-top .icon[data-v-d069047c]{width:24px;height:24px}.vp-back-to-top svg circle[data-v-d069047c]{r:22}}.fade-enter-active[data-v-d069047c],.fade-leave-active[data-v-d069047c]{transition:opacity .5s ease}.fade-enter-from[data-v-d069047c],.fade-leave-to[data-v-d069047c]{opacity:0}@media print{.vp-back-to-top[data-v-d069047c]{display:none}}.vp-global-encrypt[data-v-0b9a7573]{display:flex;flex:1;width:100%;overflow-y:auto;background-color:var(--vp-c-bg);transition:background-color var(--t-color)}@media (min-width: 768px){.vp-global-encrypt[data-v-0b9a7573]{align-items:center;justify-content:center;background-color:var(--vp-c-bg-soft)}}.global-encrypt-container[data-v-0b9a7573]{width:100%;padding:0 20px;margin-top:40px}.profile[data-v-0b9a7573]{padding-bottom:20px;margin-bottom:60px;border-bottom:solid 1px var(--vp-c-divider)}@media (min-width: 768px){.global-encrypt-container[data-v-0b9a7573]{width:400px;padding:20px;margin-top:-40px;background-color:var(--vp-c-bg);border-radius:8px;box-shadow:var(--vp-shadow-2)}.profile[data-v-0b9a7573]{margin-bottom:40px}}.avatar[data-v-0b9a7573]{margin-bottom:16px}.avatar img[data-v-0b9a7573]{width:120px;margin:auto;-o-object-fit:cover;object-fit:cover}.avatar.circle img[data-v-0b9a7573]{overflow:hidden;border-radius:50%}.profile h3[data-v-0b9a7573]{font-weight:500;line-height:1.5;color:var(--vp-c-text-1);text-align:center;transition:color var(--t-color)}.vp-layout[data-v-8f792576],.vp-layout[data-v-d69c20a1]{display:flex;flex-direction:column;min-height:100vh}.vp-content[data-v-d69c20a1]{flex-grow:1;flex-shrink:0;width:100%;margin:var(--vp-layout-top-height, 0) auto 0}@media (min-width: 960px){.vp-content[data-v-d69c20a1]{padding-top:var(--vp-nav-height)}}.vp-not-found[data-v-d69c20a1]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.vp-not-found[data-v-d69c20a1]{padding:96px 32px 168px}}.code[data-v-d69c20a1]{font-size:64px;font-weight:600;line-height:64px}.title[data-v-d69c20a1]{padding-top:12px;font-size:20px;font-weight:700;line-height:20px;letter-spacing:2px}.divider[data-v-d69c20a1]{width:64px;height:1px;margin:24px auto 18px;background-color:var(--vp-c-divider);transition:background-color var(--t-color)}.quote[data-v-d69c20a1]{max-width:256px;margin:0 auto;font-size:14px;font-weight:500;color:var(--vp-c-text-2);transition:color var(--t-color)}.action[data-v-d69c20a1]{padding-top:20px}.link[data-v-d69c20a1]{display:inline-block;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);border:1px solid var(--vp-c-brand-1);border-radius:16px;transition:color var(--t-color),border-color var(--t-color)}.link[data-v-d69c20a1]:hover{color:var(--vp-c-brand-2);border-color:var(--vp-c-brand-2)}.vp-repo-card[data-v-a8b1d456]{display:flex;flex-direction:column;gap:8px;padding:16px 20px;margin:16px 0;border:solid 1px var(--vp-c-divider);border-radius:8px;transition:border-color var(--t-color)}.vp-repo-card[data-v-a8b1d456]:hover{border-color:var(--vp-c-brand-2)}.vp-repo-card p[data-v-a8b1d456]{margin:0}.vp-repo-card .repo-name[data-v-a8b1d456]{display:flex;gap:0 8px;align-items:center;max-width:100%;font-size:16px}.vp-repo-card .repo-link[data-v-a8b1d456]{flex:1;width:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vp-repo-card .repo-name a[data-v-a8b1d456]{max-width:100%;font-weight:600;color:var(--vp-c-brand-1);text-decoration:none;transition:color var(--t-color)}.vp-repo-card .repo-name a[data-v-a8b1d456]:hover{color:var(--vp-c-brand-2)}.vp-repo-card .repo-visibility[data-v-a8b1d456]{display:inline-block;padding:0 8px;font-size:14px;line-height:20px;color:var(--vp-c-text-2);border:solid 1px var(--vp-c-divider);border-radius:22px;transition:color var(--t-color),border var(--t-color)}.vp-repo-card .repo-desc[data-v-a8b1d456]{flex:1;font-size:14px;line-height:22px;color:var(--vp-c-text-2);transition:color var(--t-color)}.vp-repo-card .repo-info[data-v-a8b1d456]{display:flex;gap:16px;align-items:center;justify-content:flex-start;font-size:14px;line-height:22px}.vp-repo-card .repo-info p[data-v-a8b1d456]{display:flex;gap:0 4px;align-items:center;color:var(--vp-c-text-2);transition:color var(--t-color)}.vp-repo-card .repo-info p [class^=vpi-github-][data-v-a8b1d456]{color:var(--vp-c-text-1);transition:color var(--t-color)}.vp-repo-card .repo-language[data-v-a8b1d456]{display:inline-block;width:.8em;height:.8em;border-radius:100%}.vpi-github-repo[data-v-a8b1d456]{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 16 16'%3E%3Cpath fill='%23000' d='M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7a.75.75 0 1 1-1.072 1.05A2.5 2.5 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.5 2.5 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.25.25 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z'/%3E%3C/svg%3E");color:var(--vp-c-text-2);transition:color var(--t-color);transform:translateY(2px)}.vpi-github-star[data-v-a8b1d456]{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 256 256'%3E%3Cpath fill='%23000' d='M243 96a20.33 20.33 0 0 0-17.74-14l-56.59-4.57l-21.84-52.81a20.36 20.36 0 0 0-37.66 0L87.35 77.44L30.76 82a20.45 20.45 0 0 0-11.66 35.88l43.18 37.24l-13.2 55.7A20.37 20.37 0 0 0 79.57 233L128 203.19L176.43 233a20.39 20.39 0 0 0 30.49-22.15l-13.2-55.7l43.18-37.24A20.43 20.43 0 0 0 243 96m-70.47 45.7a12 12 0 0 0-3.84 11.86L181.58 208l-47.29-29.08a12 12 0 0 0-12.58 0L74.42 208l12.89-54.4a12 12 0 0 0-3.84-11.86l-42.27-36.5l55.4-4.47a12 12 0 0 0 10.13-7.38L128 41.89l21.27 51.5a12 12 0 0 0 10.13 7.38l55.4 4.47Z'/%3E%3C/svg%3E")}.vpi-github-fork[data-v-a8b1d456]{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 256 256'%3E%3Cpath fill='%23000' d='M228 64a36 36 0 1 0-48 33.94V112a4 4 0 0 1-4 4H80a4 4 0 0 1-4-4V97.94a36 36 0 1 0-24 0V112a28 28 0 0 0 28 28h36v18.06a36 36 0 1 0 24 0V140h36a28 28 0 0 0 28-28V97.94A36.07 36.07 0 0 0 228 64M64 52a12 12 0 1 1-12 12a12 12 0 0 1 12-12m64 152a12 12 0 1 1 12-12a12 12 0 0 1-12 12m64-128a12 12 0 1 1 12-12a12 12 0 0 1-12 12'/%3E%3C/svg%3E")}.vpi-github-license[data-v-a8b1d456]{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23000' stroke-linecap='round' stroke-linejoin='round' d='M4.5 13.5h7M8.01 1v12.06M1.5 3.5h3l1.5-1h4l1.5 1h3M.5 10L3 4.48L5.5 10C4 11 2 11 .5 10m10 0L13 4.48L15.5 10c-1.5 1-3.5 1-5 0'/%3E%3C/svg%3E")}:root{--vp-mini-search-bg: var(--vp-c-bg);--vp-mini-search-result-bg: var(--vp-c-bg);--vp-mini-search-result-border: var(--vp-c-divider);--vp-mini-search-result-selected-bg: var(--vp-c-bg);--vp-mini-search-result-selected-border: var(--vp-c-brand-1);--vp-mini-search-highlight-bg: var(--vp-c-brand-1);--vp-mini-search-highlight-text: var(--vp-c-neutral-inverse)}svg[data-v-b4513e47]{flex:none}.VPLocalSearchBox[data-v-b4513e47]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex}.backdrop[data-v-b4513e47]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-b4513e47]{position:relative;display:flex;flex-direction:column;gap:16px;width:min(100vw - 60px,900px);height:-moz-min-content;height:min-content;max-height:min(100vh - 128px,900px);padding:12px;margin:64px auto;background:var(--vp-mini-search-bg);border-radius:6px}@media (max-width: 767px){.shell[data-v-b4513e47]{width:100vw;height:100vh;max-height:none;margin:0;border-radius:0}}.search-bar[data-v-b4513e47]{display:flex;align-items:center;padding:0 12px;cursor:text;border:1px solid var(--vp-c-divider);border-radius:4px}@media (max-width: 767px){.search-bar[data-v-b4513e47]{padding:0 8px}}.search-bar[data-v-b4513e47]:focus-within{border-color:var(--vp-c-brand-1)}.search-icon[data-v-b4513e47]{margin:8px}@media (max-width: 767px){.search-icon[data-v-b4513e47]{display:none}}.search-input[data-v-b4513e47]{width:100%;padding:6px 12px;font-size:inherit}@media (max-width: 767px){.search-input[data-v-b4513e47]{padding:6px 4px}}.search-actions[data-v-b4513e47]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-b4513e47]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-b4513e47]{display:none}}.search-actions button[data-v-b4513e47]{padding:8px}.search-actions button[data-v-b4513e47]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-b4513e47]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-b4513e47]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-b4513e47]{display:flex;flex-wrap:wrap;gap:16px;font-size:.8rem;line-height:14px;opacity:.75}.search-keyboard-shortcuts span[data-v-b4513e47]{display:flex;gap:4px;align-items:center}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-b4513e47]{display:none}}.search-keyboard-shortcuts kbd[data-v-b4513e47]{display:inline-block;min-width:24px;padding:3px 6px;text-align:center;vertical-align:middle;background:#8080801a;border:1px solid rgba(128,128,128,.15);border-radius:4px;box-shadow:0 2px 2px #0000001a}.results[data-v-b4513e47]{display:flex;flex-direction:column;gap:6px;overflow:hidden auto;overscroll-behavior:contain}.result[data-v-b4513e47]{display:flex;gap:8px;align-items:center;line-height:1rem;border:solid 2px var(--vp-mini-search-result-border);border-radius:4px;outline:none;transition:none}.result>div[data-v-b4513e47]{width:100%;margin:12px;overflow:hidden}@media (max-width: 767px){.result>div[data-v-b4513e47]{margin:8px}}.titles[data-v-b4513e47]{position:relative;z-index:1001;display:flex;flex-wrap:wrap;gap:4px;padding:2px 0}.title[data-v-b4513e47]{display:flex;gap:4px;align-items:center}.title.main[data-v-b4513e47]{font-weight:500}.title-icon[data-v-b4513e47]{font-weight:500;color:var(--vp-c-brand-1);opacity:.5}.title[data-v-b4513e47] svg{opacity:.5}.result.selected[data-v-b4513e47]{--vp-mini-search-result-bg: var(--vp-mini-search-result-selected-bg);border-color:var(--vp-mini-search-result-selected-border)}.titles[data-v-b4513e47] mark{padding:0 2px;color:var(--vp-mini-search-highlight-text);background-color:var(--vp-mini-search-highlight-bg);border-radius:2px}.result.selected .titles[data-v-b4513e47],.result.selected .title-icon[data-v-b4513e47]{color:var(--vp-c-brand-1)!important}.no-results[data-v-b4513e47]{padding:12px;font-size:.9rem;text-align:center} diff --git a/assets/transaction.html-CDIB-Ys1.js b/assets/transaction.html-CDIB-Ys1.js new file mode 100644 index 0000000..39cff7c --- /dev/null +++ b/assets/transaction.html-CDIB-Ys1.js @@ -0,0 +1 @@ +import{_ as a,c as o,b as e,o as n}from"./app-Dq-B72KW.js";const c={};function i(r,t){return n(),o("div",null,t[0]||(t[0]=[e("h2",{id:"todo",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#todo"},[e("span",null,"TODO")])],-1)]))}const d=a(c,[["render",i],["__file","transaction.html.vue"]]),m=JSON.parse(`{"path":"/guide/reference/transaction.html","title":"事务","lang":"zh-CN","frontmatter":{"title":"事务","createTime":"2024/09/22 16:01:47","head":[["script",{"id":"check-dark-mode"},";(function () {const um= localStorage.getItem('vuepress-theme-appearance') || 'auto';const sm = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;if (um === 'dark' || (um !== 'light' && sm)) {document.documentElement.classList.add('dark');}})();"],["script",{"id":"check-mac-os"},"document.documentElement.classList.toggle('mac', /Mac|iPhone|iPod|iPad/i.test(navigator.platform))"]]},"headers":[{"level":2,"title":"TODO","slug":"todo","link":"#todo","children":[]}],"readingTime":{"minutes":0.03,"words":9},"git":{"createdTime":1726995109000,"updatedTime":1726995109000,"contributors":[{"name":"Wu Clan","email":"jianhengwu0407@gmail.com","commits":1}]},"filePathRelative":"guide/reference/transaction.md","categoryList":[{"id":"a0c391","sort":10000,"name":"guide"},{"id":"011963","sort":10002,"name":"reference"}]}`);export{d as comp,m as data}; diff --git a/assets/why.html-B9fyLO2y.js b/assets/why.html-B9fyLO2y.js new file mode 100644 index 0000000..4fa14c7 --- /dev/null +++ b/assets/why.html-B9fyLO2y.js @@ -0,0 +1 @@ +import{_ as n,c as s,a as l,b as t,e as a,d as r,w as d,r as o,o as m}from"./app-Dq-B72KW.js";const c={};function p(h,e){const i=o("RouteLink");return m(),s("div",null,[e[2]||(e[2]=l('

    写在前面

    我们不会去和其他架构做比较,我们认为每个架构都有自己的特点,适合不同的场景。

    我们的目标是提供一个最佳架构,让开发者可以快速上手,专注于业务逻辑的开发,所以我们只会不断完善和优化我们的架构,为开发者更好的体验。

    重要

    如果你缺乏资深的后端开发经验,目前的代码架构可能并不适合你,因为其中已经集成了相当复杂的功能实现。 我们建议新手用户从一些基础和简单的内容入手,这不仅是对自身学习的负责态度,也为将来能够顺利掌握这一架构奠定坚实的基础

    承诺

    「永久 MIT 协议」「永久免费」「永久免授权」

    无任何强制收费行为,我们唯一的收入来源仅为赞助,它们将全部用于基础设施建设(服务器,域名...)

    架构

    ',5)),t("p",null,[e[1]||(e[1]=a("独一无二,自主研发,自主命名,开发人员可轻松驾驭的独特架构:")),r(i,{to:"/guide/#%E4%BC%AA%E4%B8%89%E5%B1%82%E6%9E%B6%E6%9E%84"},{default:d(()=>e[0]||(e[0]=[a("伪三层架构")])),_:1})]),e[3]||(e[3]=t("h2",{id:"框架历程",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#框架历程"},[t("span",null,"框架历程")])],-1)),e[4]||(e[4]=t("p",null,"TODO",-1)),e[5]||(e[5]=t("h2",{id:"质量与规范",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#质量与规范"},[t("span",null,"质量与规范")])],-1)),e[6]||(e[6]=t("p",null,"TODO",-1))])}const g=n(c,[["render",p],["__file","why.html.vue"]]),f=JSON.parse(`{"path":"/guide/summary/why.html","title":"为什么选择我们?","lang":"zh-CN","frontmatter":{"title":"为什么选择我们?","createTime":"2024/09/14 21:24:14","head":[["script",{"id":"check-dark-mode"},";(function () {const um= localStorage.getItem('vuepress-theme-appearance') || 'auto';const sm = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;if (um === 'dark' || (um !== 'light' && sm)) {document.documentElement.classList.add('dark');}})();"],["script",{"id":"check-mac-os"},"document.documentElement.classList.toggle('mac', /Mac|iPhone|iPod|iPad/i.test(navigator.platform))"]]},"headers":[{"level":2,"title":"承诺","slug":"承诺","link":"#承诺","children":[]},{"level":2,"title":"架构","slug":"架构","link":"#架构","children":[]},{"level":2,"title":"框架历程","slug":"框架历程","link":"#框架历程","children":[]},{"level":2,"title":"质量与规范","slug":"质量与规范","link":"#质量与规范","children":[]}],"readingTime":{"minutes":1.11,"words":334},"git":{"createdTime":1726501588000,"updatedTime":1726984104000,"contributors":[{"name":"Wu Clan","email":"jianhengwu0407@gmail.com","commits":2}]},"filePathRelative":"guide/summary/why.md","categoryList":[{"id":"a0c391","sort":10000,"name":"guide"},{"id":"d6bf05","sort":10003,"name":"summary"}]}`);export{g as comp,f as data}; diff --git a/friends.html b/friends.html new file mode 100644 index 0000000..50b6610 --- /dev/null +++ b/friends.html @@ -0,0 +1 @@ +友情链接 | FastAPI Best Architecture
    Skip to content

    友情链接

    如果您的网站与 FastAPI Best Architecture 相关,或者也属于开源项目(无知识星球付费内容,无授权相关内容),欢迎与我们联系

    FastAPI 相关

    kinit-fast-task

    Kinit Fast Task 为 FastAPI 项目脚手架,高性能,高效率,易扩展,长期维护,积极更新!

    其他

    MIT License

    \ No newline at end of file diff --git a/guide/deploy/Docker.html b/guide/deploy/Docker.html new file mode 100644 index 0000000..6ffc117 --- /dev/null +++ b/guide/deploy/Docker.html @@ -0,0 +1,285 @@ +Docker 部署 | FastAPI Best Architecture
    Skip to content

    Docker 部署

    1918字约6分钟

    2024-09-12

    注意

    默认端口冲突:8000,3306,6379,5672

    建议在部署前关闭本地服务:mysql,redis,rabbitmq...

    本机部署

    警告

    部署 意味着你的所有代码已经准备就绪,可以用于生产,而本机部署则是为了能够快捷的提供本地 API 服务,所以,此教程仅提供 API 本机部署教程

    后端

    1. env

      进入 deploy/backend/docker-compose 目录,创建环境变量文件 .env

      touch .env.server ../../../backend/.env

      将初始化环境变量配置拷贝到环境变量文件中

      cp .env.server ../../../backend/.env
    2. 按需修改配置文件 backend/core/conf.py.env

    3. 执行一键启动命令

      相关信息

      命令执行期间遇到镜像拉取问题请自行 Google

      docker-compose up -d --build
    4. 等待命令执行完成

    5. 打开浏览器访问:http://127.0.0.1:8000/api/v1/docs

    前端

    警告

    此教程不提供前端本机部署方案,对于前后端本地开发或联调,你不应该进行部署,请转至文档:本地开发

    服务器部署

    提示

    此教程以 https 为例,如果你没有相关经验,请自行 Google 进行了解

    后端

    1. 拉取代码到服务器

      将代码拉取到服务器通常采用 ssh 方式(更安全),但是你也可以选择使用 https 方式,具体方式请根据个人自行决定,如果使用 ssh 方式拉取代码, 请自行 Google 拉取教程,如果使用 https 方式,你可以查看 后端步骤2

    2. env

      进入 deploy/backend/docker-compose 目录,创建环境变量文件 .env

      touch .env.server ../../../backend/.env

      将初始化环境变量配置拷贝到环境变量文件中

      cp .env.server ../../../backend/.env
    3. 按需修改配置文件 backend/core/conf.py.env

      建议修改 .env 中的 ENVIRONMENTpro

    4. 更新脚本文件

      仓库内的 docker-compose.yml 文件默认为后端独立部署,如果你没有前端需求,而只需调用后端 API,请查看 本机部署

      详情
      version: "3.10"
      +
      +networks:
      +  fba_network:
      +    name: fba_network
      +    driver: bridge
      +    ipam:
      +      driver: default
      +      config:
      +        - subnet: 172.10.10.0/24
      +
      +volumes:
      +  fba_mysql:
      +    name: fba_mysql
      +  fba_redis:
      +    name: fba_redis
      +  fba_static:
      +    name: fba_static
      +  fba_rabbitmq:
      +    name: fba_rabbitmq
      +
      +services:
      +  fba_server:
      +    build:
      +      context: ../../../
      +      dockerfile: backend/backend.dockerfile
      +    image: fba_server:latest
      +    container_name: fba_server
      +    restart: always
      +    depends_on:
      +      - fba_mysql
      +      - fba_redis
      +      - fba_celery
      +    volumes:
      +      - fba_static:/fba/backend/app/static
      +    networks:
      +      - fba_network
      +    command:
      +      - bash
      +      - -c
      +      - |
      +        wait-for-it -s fba_mysql:3306 -s fba_redis:6379 -t 300
      +        mkdir -p /var/log/supervisor/
      +        supervisord -c /fba/deploy/backend/supervisor.conf
      +        supervisorctl restart fastapi_server
      +
      +  fba_mysql:
      +    image: mysql:8.0.29
      +    ports:
      +      - "${DOCKER_MYSQL_MAP_PORT:-3306}:3306"
      +    container_name: fba_mysql
      +    restart: always
      +    environment:
      +      MYSQL_DATABASE: fba
      +      MYSQL_ROOT_PASSWORD: 123456
      +      TZ: Asia/Shanghai
      +    volumes:
      +      - fba_mysql:/var/lib/mysql
      +    networks:
      +      - fba_network
      +    command:
      +      --default-authentication-plugin=mysql_native_password
      +      --character-set-server=utf8mb4
      +      --collation-server=utf8mb4_general_ci
      +      --lower_case_table_names=1
      +
      +  fba_redis:
      +    image: redis:6.2.7
      +    ports:
      +      - "${DOCKER_REDIS_MAP_PORT:-6379}:6379"
      +    container_name: fba_redis
      +    restart: always
      +    environment:
      +      - TZ=Asia/Shanghai
      +    volumes:
      +      - fba_redis:/var/lib/redis
      +    networks:
      +      - fba_network
      +
      +  # 后端专用,这与 fba_ui 冲突,如果你选择使用 fba_ui,
      +  # 你应该注释或删除 fba_nginx 容器脚本,并使用 fba_ui 容器
      +  fba_nginx:
      +    image: nginx
      +    ports:
      +      - "8000:80"
      +    container_name: fba_nginx
      +    restart: always
      +    depends_on:
      +      - fba_server
      +    volumes:
      +      - ../nginx.conf:/etc/nginx/nginx.conf:ro
      +      - fba_static:/www/fba_server/backend/static
      +    networks:
      +      - fba_network
      +
      +  # 如果服务器内存小于 4GB,CPU 小于四个内核
      +  # 建议进入 fba_ui 项目单独构建这个容器(参考下方前端部署教程)
      +  # 如果你不选择单独构建,务必在执行下面步骤前根据前端部署教程更新前端配置文件
      +  # 如果你选择单独构建,务必注释或删除此容器脚本
      +  fba_ui:
      +    build:
      +      context: /root/fastapi_best_architecture_ui  # 根据 fba_ui 项目存放目录修改此路径
      +      dockerfile: Dockerfile
      +    image: fba_ui:latest
      +    ports:
      +      - "80:80"
      +      - "443:443"
      +    container_name: fba_ui
      +    restart: always
      +    depends_on:
      +      - fba_server
      +    command:
      +      - nginx
      +      - -g
      +      - daemon off;
      +    volumes:
      +      # nginx https conf
      +      # 通过 docker 进行部署时,需要打开此配置项并确保<挂载到容器内的证书文件路径>配置
      +      # 与 nginx conf 中的 ssl 证书文件路径配置一致,如果你直接将 ssl 证书文件 cp
      +      # 到了 docker 容器内,则无需挂载证书文件,直接将它们注释或删除即可
      +      # local_ssl_pem_path:你在服务器存放 ssl pem 证书文件的路径,自行修改
      +      # local_ssl_key_path: 你在服务器存放 ssl key 证书文件的路径,自行修改
      +      # /etc/ssl/xxx.pem:挂载到容器内 ssl pem 证书文件的路径,自行修改
      +      # /etc/ssl/xxx.key:挂载到容器内 ssl key 证书文件的路径,自行修改
      +      - local_ssl_pem_path:/etc/ssl/xxx.pem
      +      - local_ssl_key_path:/etc/ssl/xxx.key
      +      - fba_static:/www/fba_server/backend/static
      +    networks:
      +      - fba_network
      +
      +  fba_rabbitmq:
      +    hostname: fba_rabbitmq
      +    image: rabbitmq:3.12.7
      +    ports:
      +      - "15672:15672"
      +      - "5672:5672"
      +    container_name: fba_rabbitmq
      +    restart: always
      +    environment:
      +      - RABBITMQ_DEFAULT_USER=guest
      +      - RABBITMQ_DEFAULT_PASS=guest
      +    volumes:
      +      - fba_rabbitmq:/var/lib/rabbitmq
      +    networks:
      +      - fba_network
      +
      +  fba_celery:
      +    build:
      +      context: ../../../
      +      dockerfile: backend/celery.dockerfile
      +    image: fba_celery:latest
      +    ports:
      +      - "8555:8555"
      +    container_name: fba_celery
      +    restart: always
      +    depends_on:
      +      - fba_rabbitmq
      +    networks:
      +      - fba_network
      +    command:
      +      - bash
      +      - -c
      +      - |
      +        wait-for-it -s fba_rabbitmq:5672 -t 300
      +        mkdir -p /var/log/supervisor/
      +        supervisord -c /fba/deploy/backend/supervisor.conf
      +        supervisorctl restart celery_worker
      +        supervisorctl restart celery_beat
      +        supervisorctl restart celery_flower
    5. 执行一键启动命令

      相关信息

      命令执行期间遇到镜像拉取问题请自行 Google

      docker-compose up -d --build
    6. 等待命令执行完成

    前端

    警告

    我们提供此前端部署教程的目的是为你提供前端 Docker 部署解决方案,请记住我们的声明,此前端项目仅作为效果演示,而不是用于生产!

    1. 拉取代码到服务器

    2. env

      修改 .env.production 中的 VITE_API_BASE_URL 为域名地址

    3. 更新 nginx

      进入 deploy 目录,编辑 nginx.conf 文件

      详情
      # For more information on configuration, see:
      +#   * Official English Documentation: http://nginx.org/en/docs/
      +#   * Official Russian Documentation: http://nginx.org/ru/docs/
      +
      +worker_processes auto;
      +error_log /var/log/nginx/error.log;
      +pid /run/nginx.pid;
      +
      +# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
      +include /usr/share/nginx/modules/*.conf;
      +
      +events {
      +worker_connections 1024;
      +}
      +
      +http {
      +
      +    include /etc/nginx/mime.types;
      +    default_type application/octet-stream;
      +
      +    sendfile on;
      +    client_max_body_size 5M;
      +    client_body_buffer_size 5M;
      +
      +    gzip on;
      +    gzip_comp_level 2;
      +    gzip_types text/plain text/css text/javascript application/javascript application/x-javascript application/xml application/x-httpd-php image/jpeg image/gif image/png;
      +    gzip_vary on;
      +
      +    keepalive_timeout 300;
      +
      +    server {
      +        listen       80 default_server;
      +        listen       [::]:80 default_server;
      +        server_name  127.0.0.1;
      +
      +        listen 443 ssl;
      +        # docker ssl 证书文件路径配置应该与 docker-compose 中的保持一致
      +        # /etc/ssl/xxx.pem:挂载到容器内 ssl pem 证书文件的路径,自行修改
      +        # /etc/ssl/xxx.key:挂载到容器内 ssl key 证书文件的路径,自行修改
      +        ssl_certificate /etc/ssl/xxx.pem;
      +        ssl_certificate_key /etc/ssl/xxx.key;
      +        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
      +        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      +        ssl_prefer_server_ciphers on;
      +        
      +        # xxx.com 应该与 .env.production 中的配置保持一致
      +        server_name xxx.com;
      +
      +        client_max_body_size   10m;
      +
      +        root /www/fba_ui;
      +
      +        location / {
      +                try_files $uri $uri/ /index.html;
      +        }
      +
      +        location /api/v1/ {
      +                proxy_pass http://fba_server:8001;
      +
      +                proxy_set_header Host $http_host;
      +                proxy_set_header X-Real-IP $remote_addr;
      +                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      +                proxy_set_header X-Forwarded-Proto $scheme;
      +                proxy_connect_timeout 300s;
      +                proxy_send_timeout 300s;
      +                proxy_read_timeout 300s;
      +        }
      +
      +        location /static/ {
      +                alias /www/fba_server/backend/static;
      +        }
      +    }
      +
      +    server {
      +        listen 80;
      +        # xxx.com 应该与 .env.production 中的配置保持一致
      +        server_name xxx.com;
      +        rewrite ^(.*)$ https://$host$1 permanent;
      +    }
      +}
    4. 更新脚本文件

      注意

      如果已通过后端 docker-compose 构建前端项目,此步骤和后面的剩余步骤直接跳过即可

      详情
      networks:
      +  fba_network:
      +    external: true
      +
      +volumes:
      +  fba_static:
      +    external: true
      +
      +services:
      +  fba_ui:
      +    build:
      +      context: ../
      +      dockerfile: Dockerfile
      +    image: fba_ui:latest
      +    ports:
      +      - "80:80"
      +      - "443:443"
      +    container_name: fba_ui
      +    restart: always
      +    command:
      +      - nginx
      +      - -g
      +      - daemon off;
      +    volumes:
      +       # nginx https conf
      +       # 通过 docker 进行部署时,需要打开此配置项并确保<挂载到容器内的证书文件路径>配置
      +       # 与 nginx conf 中的 ssl 证书文件路径配置一致,如果你直接将 ssl 证书文件 cp
      +       # 到了 docker 容器内,则无需挂载证书文件,直接将它们注释或删除即可
      +       # local_ssl_pem_path:你在服务器存放 ssl pem 证书文件的路径,自行修改
      +       # local_ssl_key_path: 你在服务器存放 ssl key 证书文件的路径,自行修改
      +       # /etc/ssl/xxx.pem:挂载到容器内 ssl pem 证书文件的路径,自行修改
      +       # /etc/ssl/xxx.key:挂载到容器内 ssl key 证书文件的路径,自行修改
      +      - local_ssl_pem_path:/etc/ssl/xxx.pem
      +      - local_ssl_key_path:/etc/ssl/xxx.key
      +      - fba_static:/www/fba_server/backend/static
      +    networks:
      +      - fba_network
    5. 构建并启动容器

      创建网络

      docker network create fba_network

      构建

      docker-compose build fba_ui

      启动

      docker-compose run fba_ui

    注意事项

    注意

    请不要频繁使用 docker-compose up -d --build 命令,每次执行,此命令都会构建容器,并将原容器自动进行本地备份保留,这会导致硬盘空间迅速递减

    清理未使用的镜像

    docker image prune

    清理未使用的容器

    docker container prune

    清理所有未使用的镜像、容器、网络和构建缓存

    docker system prune

    清理所有悬空的镜像和卷

    docker system prune -a --volumes

    MIT License

    \ No newline at end of file diff --git a/guide/deploy/legacy.html b/guide/deploy/legacy.html new file mode 100644 index 0000000..0ea680a --- /dev/null +++ b/guide/deploy/legacy.html @@ -0,0 +1 @@ +传统部署 | FastAPI Best Architecture
    Skip to content

    传统部署

    151字小于1分钟

    2024-09-12

    重要

    由于传统部署方案涉及修改的地方较多且较为复杂,目前暂不提供此部署方案,如果你不是一个服务部署专家,这可能存在很多坑

    提示

    由于 FastAPI Best Architecture 线上服务器资源有限,当前使用【传统 + Docker】的方案进行部署,尽可能避免内存溢出导致的服务中断, 我们后期会提供 BiliBili 免费教程(敬请期待)

    但是抱歉,我们不提供一对一免费协助,它将是一个付费咨询

    MIT License

    \ No newline at end of file diff --git a/guide/index.html b/guide/index.html new file mode 100644 index 0000000..9e746d3 --- /dev/null +++ b/guide/index.html @@ -0,0 +1 @@ +FastAPI Best Architecture | FastAPI Best Architecture
    Skip to content

    FastAPI Best Architecture

    737字约2分钟

    2024-09-12

    提示

    此仓库作为模板库公开,任何人或企业均可免费使用!

    🔥持续更新维护中🔥

    Alt

    伪三层架构

    mvc 架构作为常规设计模式,在 python web 中也很常见,但是三层架构更令人着迷

    在 python web 开发中,三层架构的概念并没有通用标准,所以这里我们称之为伪三层架构

    但请注意,我们并没有传统的多应用程序结构(django、springBoot...),如果您不喜欢这种模式,可以使用模板对其进行随意改造!

    工作流程javafastapi_best_architecture
    视图controllerapi
    数据传输dtoschema
    业务逻辑service + implservice
    数据访问dao / mappercrud
    模型model / entitymodel

    特征

    内置功能

    项目结构

    • backend/后端
      • alembic/数据库迁移
      • app/应用
        • admin系统后台
          • api/接口
          • crud/ CRUD
          • model/模型
          • schema/数据传输
          • service/服务
          • tests/测试
        • generator/代码生成
        • task/任务
      • common/公共资源
      • core/核心配置
      • database/数据库连接
      • log/日志
      • middleware/中间件
      • scripts/脚本
      • sql/SQL文件
      • static/静态文件
      • templates/模版文件
      • utils/工具包
    • deploy/服务器部署
    • ...

    贡献者

    许可证

    本项目由 MIT 许可证的条款进行许可

    Stargazers over time

    相关

    特别鸣谢

    本文档由 vuepress-theme-plume 驱动,感谢 pengzhanbo 对此开源项目的杰出贡献

    MIT License

    \ No newline at end of file diff --git a/guide/reference/code-generation.html b/guide/reference/code-generation.html new file mode 100644 index 0000000..51355ec --- /dev/null +++ b/guide/reference/code-generation.html @@ -0,0 +1 @@ +代码生成 | FastAPI Best Architecture
    Skip to content

    代码生成

    11字小于1分钟

    2024-09-22

    MIT License

    \ No newline at end of file diff --git a/guide/reference/cors.html b/guide/reference/cors.html new file mode 100644 index 0000000..e0af469 --- /dev/null +++ b/guide/reference/cors.html @@ -0,0 +1,7 @@ +跨域 | FastAPI Best Architecture
    Skip to content

    跨域

    169字小于1分钟

    2024-09-22

    当进行前后端项目联调或服务器部署时,你通常会遇到跨域问题,不过没关系,你只需修改后端配置,就可以轻松解决 CORS 相关问题

    本地

    进入 core/conf.py 文件,修改 CORS_ALLOWED_ORIGINS 配置即可

    CORS_ALLOWED_ORIGINS: list[str] = [
    +        'http://localhost:5173',  # 前端访问地址,末尾不要带 '/'
    +    ]

    服务器

    进入 core/conf.py 文件,修改 CORS_ALLOWED_ORIGINS 配置即可

    1. 非 https 部署

      CORS_ALLOWED_ORIGINS: list[str] = [
      +        'http://服务器ip:端口号',  # 前端访问地址,末尾不要带 '/'
      +    ]
    2. https 部署

      CORS_ALLOWED_ORIGINS: list[str] = [
      +        'https://域名',  # 前端访问地址,末尾不要带 '/'
      +    ]

    MIT License

    \ No newline at end of file diff --git a/guide/reference/login.html b/guide/reference/login.html new file mode 100644 index 0000000..6ecd03a --- /dev/null +++ b/guide/reference/login.html @@ -0,0 +1 @@ +登录 | FastAPI Best Architecture
    Skip to content

    MIT License

    \ No newline at end of file diff --git a/guide/reference/oauth2.html b/guide/reference/oauth2.html new file mode 100644 index 0000000..c94e043 --- /dev/null +++ b/guide/reference/oauth2.html @@ -0,0 +1 @@ +OAuth 2.0 | FastAPI Best Architecture
    Skip to content

    OAuth 2.0

    9字小于1分钟

    2024-09-22

    MIT License

    \ No newline at end of file diff --git a/guide/reference/permission.html b/guide/reference/permission.html new file mode 100644 index 0000000..41680e8 --- /dev/null +++ b/guide/reference/permission.html @@ -0,0 +1 @@ +权限 | FastAPI Best Architecture
    Skip to content

    权限

    251字小于1分钟

    2024-09-16

    JWT

    TODO

    RBAC

    RBAC 提供了两种解决方案,第一种【角色菜单】可能更加常见,它可以设置按钮级别的控制规则,另外一种是【Casbin】,它非常灵活,可以通过模型定义多种 控制规则(我认为它很好,性能也很出色),这种设计在 Go 语言中应用更加广泛, 我们在最初架构设计时,参考了 go-admin,gin-vue-admin... 等优秀 的开源项目,同时引入了 Casbin,它在众多 python web 开源项目中可能是极为罕见的,并且,它的学习成本相对较高,如果你对此感兴趣,可以通过 Casbin 官网 进行学习,另外,这两个视频教程 ( 半小时彻底弄懂Casbin基础模型Casbin的代码使用、api调用、自定义比较方法 ) 可能起到画龙点睛之笔

    角色菜单

    TODO

    Casbin

    TODO

    MIT License

    \ No newline at end of file diff --git a/guide/reference/transaction.html b/guide/reference/transaction.html new file mode 100644 index 0000000..5f6e2af --- /dev/null +++ b/guide/reference/transaction.html @@ -0,0 +1 @@ +事务 | FastAPI Best Architecture
    Skip to content

    MIT License

    \ No newline at end of file diff --git a/guide/summary/fsm.html b/guide/summary/fsm.html new file mode 100644 index 0000000..af75e08 --- /dev/null +++ b/guide/summary/fsm.html @@ -0,0 +1 @@ +精简版本 | FastAPI Best Architecture
    Skip to content

    MIT License

    \ No newline at end of file diff --git a/guide/summary/quick-start.html b/guide/summary/quick-start.html new file mode 100644 index 0000000..d63f65c --- /dev/null +++ b/guide/summary/quick-start.html @@ -0,0 +1 @@ +快速开始 | FastAPI Best Architecture
    Skip to content

    快速开始

    799字约3分钟

    2024-09-12

    重要

    请一字不落的认真对待此文档,并严格按照本文档的顺序启动项目,否则你有很大几率在启动过程中遇到各种问题

    本地开发

    后端

    1. 准备本地环境

      • Python 3.10+
      • Mysql 8.0+
      • Redis 推荐最新稳定版
    2. 准备 Git 仓库

      相关信息

      提供两种方案,选择其中一种即可

      1. 拉取源代码仓库

        此方式需要你删除拉取项目后根目录下的 .git 文件夹,之后上传到你指定的仓库即可,具体请自行查阅你要上传平台的行为准则

        git clone https://github.com/fastapi-practices/fastapi_best_architecture.git
      2. 拉取模板仓库

        此项目支持创建模板仓库,意味着,你可以直接创建一个非 fork(独立无绑定的关系)的个人账户仓库,如果所示,进入此项目 GitHub 首页, 使用 use this template 按钮创建即可,创建完成之后,使用 git clone 命令拉取你自己的仓库即可

        use_this_template

    3. 安装依赖包

      拉取项目到本地后,进入项目 backend 目录,执行以下命令

      pip install -r requirements.txt
    4. 创建一个数据库:fba,选择 utf8mb4 编码

    5. 启动 Redis

    6. env

      backend 目录中,创建环境变量文件

      touch .env

      将初始化环境变量配置拷贝到环境变量文件中

      cp .env.example .env
    7. 按需修改配置文件 core/conf.py.env

      相关信息

      默认情况下,首次启动不需要修改

    8. 数据库迁移 alembic

      生成迁移文件

      alembic revision --autogenerate

      执行迁移

      alembic upgrade head
    9. 启动 celery worker, beat 和 flower (可选)

      Celery 应用程序

      celery -A app.task.celery worker -l info

      定时任务

      celery -A app.task.celery beat -l info

      web 监控

      celery -A app.task.celery flower --port=8555 --basic-auth=admin:123456
    10. 初始化测试数据

      使用 backend/sql/init_test_data.sql 文件初始化测试数据

    11. 启动 fastapi 服务

      此项目采用 fastapi CLI 应用启动服务,当前,为了方便本地调试,你仍然可以选择使用 pycharm 右键运行 main.py 文件

      帮助

      fastapi --help

      开发模式

      fastapi dev main.py
    12. 打开浏览器访问:http://127.0.0.1:8000/api/v1/docs

    前端

    1. 准备本地环境

      • Nodejs 14.0+
    2. 安装和启动

      警告

      目前它仅作为效果演示,而不是用于生产!

      如果你不想前端依赖安装问题带来困扰,请务必使用 yarn v1.x 版本

      你可以跳转 fastapi_best_architecture_ui 查看详情

    开发流程

    相关信息

    仅供参考,实际以个人为准

    1. 定义数据库模型(model)

    2. 定义数据验证模型(schema)

    3. 定义视图(api)和路由(router)

    4. 编写业务(service)

    5. 编写数据库操作(crud)

    单元测试

    相关信息

    通过 pytest 运行单元测试,项目内仅提供了非常简易的 demo,并不是完整单元测试,如需要,请自行编写

    1. 创建测试数据库 fba_test,选择 utf8mb4 编码

    2. 使用 backend/sql/create_tables.sql 文件创建数据库表

    3. 使用 backend/sql/init_pytest_data.sql 文件初始化用于单元测试的测试数据

    4. 进入 backend 目录,执行单元测试命令

      pytest -vs --disable-warnings

    MIT License

    \ No newline at end of file diff --git a/guide/summary/why.html b/guide/summary/why.html new file mode 100644 index 0000000..6fa4f96 --- /dev/null +++ b/guide/summary/why.html @@ -0,0 +1 @@ +为什么选择我们? | FastAPI Best Architecture
    Skip to content

    为什么选择我们?

    334字约1分钟

    2024-09-14

    写在前面

    我们不会去和其他架构做比较,我们认为每个架构都有自己的特点,适合不同的场景。

    我们的目标是提供一个最佳架构,让开发者可以快速上手,专注于业务逻辑的开发,所以我们只会不断完善和优化我们的架构,为开发者更好的体验。

    重要

    如果你缺乏资深的后端开发经验,目前的代码架构可能并不适合你,因为其中已经集成了相当复杂的功能实现。 我们建议新手用户从一些基础和简单的内容入手,这不仅是对自身学习的负责态度,也为将来能够顺利掌握这一架构奠定坚实的基础

    承诺

    「永久 MIT 协议」「永久免费」「永久免授权」

    无任何强制收费行为,我们唯一的收入来源仅为赞助,它们将全部用于基础设施建设(服务器,域名...)

    架构

    独一无二,自主研发,自主命名,开发人员可轻松驾驭的独特架构:伪三层架构

    框架历程

    TODO

    质量与规范

    TODO

    MIT License

    \ No newline at end of file diff --git a/images/use_this_template.png b/images/use_this_template.png new file mode 100644 index 0000000..07c8093 Binary files /dev/null and b/images/use_this_template.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..d603b3d --- /dev/null +++ b/index.html @@ -0,0 +1 @@ +FastAPI Best Architecture
    Skip to content

    FastAPI Best Architecture

    企业级中后台解决方案

    基于 FastAPI 框架,前后端分离,遵循「伪三层架构」设计,支持 Python 3.10+ 版本

    MIT License

    \ No newline at end of file