diff --git a/.gitattributes b/.gitattributes index a6344aac8c09253b3b630fb776ae94478aa0275b..fc655c03110880e73239f142584cd9aa2f4a1378 100644 --- a/.gitattributes +++ b/.gitattributes @@ -33,3 +33,33 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text *.zip filter=lfs diff=lfs merge=lfs -text *.zst filter=lfs diff=lfs merge=lfs -text *tfevents* filter=lfs diff=lfs merge=lfs -text +docs/screenshots/desktop/07-dashboard.png filter=lfs diff=lfs merge=lfs -text +docs/screenshots/desktop/10-profile-other.png filter=lfs diff=lfs merge=lfs -text +docs/screenshots/desktop/11-editor.png filter=lfs diff=lfs merge=lfs -text +docs/screenshots/editor/02-editor-explorer-file.png filter=lfs diff=lfs merge=lfs -text +docs/screenshots/editor/03-editor-terminal.png filter=lfs diff=lfs merge=lfs -text +docs/screenshots/editor/04-editor-console.png filter=lfs diff=lfs merge=lfs -text +docs/screenshots/editor/05-editor-webview.png filter=lfs diff=lfs merge=lfs -text +docs/screenshots/editor/06-editor-problems.png filter=lfs diff=lfs merge=lfs -text +docs/screenshots/editor/07-sidebar-npm.png filter=lfs diff=lfs merge=lfs -text +docs/screenshots/editor/08-sidebar-github.png filter=lfs diff=lfs merge=lfs -text +docs/screenshots/editor/09-sidebar-drive.png filter=lfs diff=lfs merge=lfs -text +docs/screenshots/editor/10-sidebar-ai.png filter=lfs diff=lfs merge=lfs -text +docs/screenshots/editor/11-history-modal.png filter=lfs diff=lfs merge=lfs -text +docs/screenshots/mobile/07-dashboard.png filter=lfs diff=lfs merge=lfs -text +docs/screenshots/mobile/11-editor.png filter=lfs diff=lfs merge=lfs -text +public/screenshots/desktop/07-dashboard.png filter=lfs diff=lfs merge=lfs -text +public/screenshots/desktop/10-profile-other.png filter=lfs diff=lfs merge=lfs -text +public/screenshots/desktop/11-editor.png filter=lfs diff=lfs merge=lfs -text +public/screenshots/editor/02-editor-explorer-file.png filter=lfs diff=lfs merge=lfs -text +public/screenshots/editor/03-editor-terminal.png filter=lfs diff=lfs merge=lfs -text +public/screenshots/editor/04-editor-console.png filter=lfs diff=lfs merge=lfs -text +public/screenshots/editor/05-editor-webview.png filter=lfs diff=lfs merge=lfs -text +public/screenshots/editor/06-editor-problems.png filter=lfs diff=lfs merge=lfs -text +public/screenshots/editor/07-sidebar-npm.png filter=lfs diff=lfs merge=lfs -text +public/screenshots/editor/08-sidebar-github.png filter=lfs diff=lfs merge=lfs -text +public/screenshots/editor/09-sidebar-drive.png filter=lfs diff=lfs merge=lfs -text +public/screenshots/editor/10-sidebar-ai.png filter=lfs diff=lfs merge=lfs -text +public/screenshots/editor/11-history-modal.png filter=lfs diff=lfs merge=lfs -text +public/screenshots/mobile/07-dashboard.png filter=lfs diff=lfs merge=lfs -text +public/screenshots/mobile/11-editor.png filter=lfs diff=lfs merge=lfs -text diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..1bd291d5edc6cbc8ef07125691265a63e98781e0 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,93 @@ +# ────────────────────────────────────────────────────────────────────────────── +# Exocore Docs — production Docker image +# +# Two-stage build: +# 1. Node 20 builds the Vite + React SPA into ./dist +# 2. nginx-alpine serves the static bundle (no Node runtime in the +# final image — keeps it tiny: ~25 MB compressed) +# +# Build: +# docker build -t exocore-docs:latest -f exocore-docs/Dockerfile exocore-docs +# +# Run (host port 8080 → container port 80): +# docker run --rm -p 8080:80 exocore-docs:latest +# +# Hugging Face Spaces: this image works as-is on a "Docker" Space — HF +# expects something on port 7860, so override at run-time: +# docker run -p 7860:7860 -e PORT=7860 exocore-docs:latest +# ────────────────────────────────────────────────────────────────────────────── + +# ───── Stage 1: build the SPA ───── +FROM node:20-bookworm-slim AS builder + +WORKDIR /build + +# Cache npm install on the lockfile. +COPY package*.json ./ +RUN npm install --legacy-peer-deps + +# Pull in the rest of the project. +COPY tsconfig.json vite.config.ts index.html ./ +COPY public ./public +COPY docs ./docs +COPY src ./src + +RUN npm run build + + +# ───── Stage 2: static serve via nginx ───── +FROM nginx:1.27-alpine AS runtime + +# Drop the default nginx site and replace it with one that listens on +# $PORT (defaults to 80) and serves the SPA with hash-routing fallback. +RUN rm /etc/nginx/conf.d/default.conf + +# Inline nginx config — kept here so the image is reproducible without +# any extra files outside the Docker build context. +RUN printf '%s\n' \ + 'server {' \ + ' listen ${NGINX_PORT};' \ + ' server_name _;' \ + ' root /usr/share/nginx/html;' \ + ' index index.html;' \ + '' \ + ' # Long cache on hashed assets, short cache on the entry HTML.' \ + ' location /assets/ {' \ + ' add_header Cache-Control "public, max-age=31536000, immutable";' \ + ' try_files $uri =404;' \ + ' }' \ + ' location /screenshots/ {' \ + ' add_header Cache-Control "public, max-age=86400";' \ + ' try_files $uri =404;' \ + ' }' \ + '' \ + ' # Hash-router SPA fallback — every unknown path returns index.html.' \ + ' location / {' \ + ' add_header Cache-Control "no-cache";' \ + ' try_files $uri $uri/ /index.html;' \ + ' }' \ + '' \ + ' gzip on;' \ + ' gzip_types text/plain text/css application/javascript application/json image/svg+xml;' \ + ' gzip_min_length 1024;' \ + '}' \ + > /etc/nginx/templates/default.conf.template + +COPY --from=builder /build/dist /usr/share/nginx/html + +# Default to the conventional HTTP port. Override with -e PORT=7860 for +# Hugging Face Docker Spaces, or any other host that demands a specific +# listen port. nginx envsubst will fill `${NGINX_PORT}` at container start. +ENV PORT=80 +ENV NGINX_PORT=80 + +# Cheap healthcheck — `wget --spider` is included in the alpine base image. +HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \ + CMD wget --quiet --spider http://localhost:${NGINX_PORT}/ || exit 1 + +# Allow overriding the listen port via $PORT (HF Spaces convention). +# nginx automatically substitutes envs in /etc/nginx/templates/*.template +# when the official image starts up. +EXPOSE 80 + +CMD ["sh", "-c", "export NGINX_PORT=${PORT:-80}; exec nginx -g 'daemon off;'"] diff --git a/README.md b/README.md index f0803455f439ca03050d2e8b4fa5d81ef77ef38b..0778205f108228a8ccdc33bd3d203964fe3e285a 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,110 @@ ---- -title: Exocore Docs -emoji: 📚 -colorFrom: green -colorTo: green -sdk: docker -pinned: false ---- - -Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference +# Exocore Docs + +A standalone Vite + React documentation site that renders every Markdown +file under [`./docs/`](./docs/) with full-text search, a sticky sidebar, +breadcrumbs, prev/next pagers, and dark-mode syntax highlighting. Built to +drop straight onto a Hugging Face **Static Space**, GitHub Pages, Netlify, +S3 — anywhere that serves a `dist/` folder. + +> **Self-contained.** The full docs corpus (markdown + screenshots) lives +> inside this project (`./docs/` and `./public/screenshots/`). It used to +> read from `../exocore-web/docs/` via a vite alias, but the upstream copy +> in `exocore-web/` is now mirrored locally so this site can be split off +> into its own repo without breaking. To resync after editing the docs in +> the main project, just `cp -R ../exocore-web/docs/. ./docs/` and +> `cp -R ../exocore-web/docs/screenshots/. ./public/screenshots/`. + +## Stack + +| Piece | What it does | +| --- | --- | +| **Vite 6** | Bundles the SPA. Reads the local `./docs/` tree at build time via `import.meta.glob` so the entire docs corpus is shipped in one JS bundle (no runtime fetch). | +| **React 19** + **react-router-dom 7** | App shell, hash-routed pages (works on any dumb static host without rewrite rules). | +| **react-markdown** + **remark-gfm** + **rehype-slug** + **rehype-highlight** | Markdown → HTML, GitHub-Flavoured Markdown extensions, slug-based heading anchors, and `highlight.js` syntax colours (GitHub Dark theme). | +| **In-memory search** (`src/lib/docs.ts`) | Tokenised title+body indexing with snippet previews and `/` shortcut. | + +## Quickstart + +```bash +cd exocore-docs +npm install +npm run dev # vite on :5173 +npm run build # outputs ./dist +npm run preview # serves ./dist on :4173 +``` + +## Hugging Face Spaces deploy + +1. `npm run build` +2. Push the **contents of `dist/`** (not the `dist/` folder itself) to a + Hugging Face *Static* Space repo. The space root must contain + `index.html`. +3. Done — every page is reachable under `https://-.hf.space/`. + +Because the SPA uses `HashRouter`, a deep link like +`/#/docs/editor/` works without any nginx rewrite. Asset URLs are +`./assets/...` (relative), so the build also works under a sub-path +(`/myspace/...`) with no changes. + +## How docs are picked up + +```ts +import.meta.glob("../../docs/**/*.md", { query: "?raw", import: "default", eager: true }); +``` + +That single line walks the entire local `./docs/` tree at build time and +inlines every `.md` file into the JS bundle. The pipeline in +`src/lib/docs.ts`: + +1. Strips the path prefix down to a slug (`docs/editor/README.md → editor/`). +2. Pulls the first H1 as the title. +3. Pulls the first non-heading paragraph as the search-result excerpt. +4. Builds a lower-cased haystack for the in-memory search. + +Add a new `.md` anywhere under `./docs/` and rebuild — it shows up in the +sidebar, in the home grid, and in search with no further wiring. + +## Layout reference + +``` +exocore-docs/ +├── index.html ← Vite entry HTML +├── public/ +│ ├── favicon.svg ← inline-svg "E" favicon +│ └── screenshots/ ← desktop / mobile / editor PNGs (served as static assets) +├── docs/ ← full markdown corpus (mirrored from exocore-web/docs) +│ ├── README.md ← index page +│ ├── auth/ dashboard/ editor/ github/ cloud/ … +│ └── screenshots/ ← same screenshots, kept in-tree so the docs render +│ correctly when browsed on disk (e.g. on GitHub) +├── package.json ← React 19 + Vite 6 + react-markdown +├── vite.config.ts ← base: "./", allowedHosts, no external aliases +├── tsconfig.json +├── src/ +│ ├── main.tsx ← HashRouter mount +│ ├── App.tsx ← shell + routes +│ ├── styles.css ← single-file palette + responsive shell +│ ├── lib/docs.ts ← glob ./docs/**/*.md → DOCS[] index + search() +│ ├── components/ +│ │ ├── Layout.tsx ← topbar + sidebar shell + mobile drawer +│ │ ├── Sidebar.tsx ← per-section nav +│ │ ├── SearchBox.tsx ← / shortcut + dropdown results +│ │ └── MarkdownView.tsx ← react-markdown w/ rewritten links + real +│ └── pages/ +│ ├── Home.tsx ← hero + featured grid + all-pages list +│ ├── DocPage.tsx ← rendered markdown + breadcrumb + pager +│ └── NotFound.tsx +``` + +## Notes / gotchas + +- **Images inside docs** (e.g. `../screenshots/editor/01.png`) are now + rendered as real `` tags. The renderer (`MarkdownView.tsx`) + resolves the relative path against the doc's slug, detects the + `screenshots/` segment, and re-anchors onto `./screenshots/...` — + served verbatim by the host out of `public/screenshots/`. +- **Routing** is hash-based on purpose — keeps the site portable to every + static host without server-side URL rewriting. +- **Bundle size** is ~630 KB JS (200 KB gzip) for the full SPA + every + doc. Screenshots are *not* in the JS bundle — they sit in `public/` and + are loaded lazily as the user scrolls each page. diff --git a/dist/assets/index-CYg-Es9k.css b/dist/assets/index-CYg-Es9k.css new file mode 100644 index 0000000000000000000000000000000000000000..28866c62543dde39b2fa64a35a48ff9779ab89ac --- /dev/null +++ b/dist/assets/index-CYg-Es9k.css @@ -0,0 +1,10 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! + Theme: GitHub Dark + Description: Dark theme as seen on github.com + Author: github.com + Maintainer: @Hirse + Updated: 2021-05-15 + + Outdated base version: https://github.com/primer/github-syntax-dark + Current colors taken from GitHub's CSS +*/.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}:root{--bg: #0E0E10;--bg-soft: #16161A;--bg-card: #1C1C22;--bg-elev: #22232A;--border: #2A2B33;--text: #E6E6EA;--text-dim: #9A9AA6;--text-mute: #6F6F7A;--accent: #FFE500;--accent-2: #00FF94;--link: #7CC2FF;--code-bg: #11131A;--shadow: 0 6px 24px rgba(0, 0, 0, .45);--radius: 14px;--radius-sm: 8px;--topbar-h: 56px;--sidebar-w: 280px;--content-max: 880px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,SF Pro Text,system-ui,-apple-system,sans-serif;font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}a{color:var(--link);text-decoration:none;transition:color .12s ease}a:hover{color:var(--accent)}kbd{background:var(--bg-elev);border:1px solid var(--border);border-bottom-width:2px;border-radius:6px;padding:0 6px;font-family:JetBrains Mono,Fira Code,monospace;font-size:12px}.app-shell{min-height:100%;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:50;height:var(--topbar-h);background:#0e0e10d9;-webkit-backdrop-filter:saturate(180%) blur(8px);backdrop-filter:saturate(180%) blur(8px);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 18px;gap:14px}.brand{display:inline-flex;align-items:center;gap:10px;font-weight:700;color:var(--text);font-size:16px}.brand-mark{width:28px;height:28px;border-radius:8px;background:var(--accent);color:var(--bg);display:inline-flex;align-items:center;justify-content:center;font-weight:900}.brand-text{white-space:nowrap}.topbar-actions{margin-left:auto;display:flex;gap:4px}.topbar-link{color:var(--text-dim);padding:6px 10px;border-radius:8px;font-size:13px}.topbar-link:hover{color:var(--text);background:var(--bg-elev)}.hamburger{background:transparent;border:1px solid var(--border);border-radius:8px;width:36px;height:36px;display:none;flex-direction:column;justify-content:center;align-items:center;gap:4px;cursor:pointer}.hamburger span{display:block;width:16px;height:2px;background:var(--text);border-radius:2px}.shell-body{flex:1;display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);position:relative}.main-pane{padding:32px 36px 80px;min-width:0}.sidebar-backdrop{display:none;position:fixed;inset:var(--topbar-h) 0 0 0;background:#0000008c;z-index:30}.sidebar{border-right:1px solid var(--border);background:var(--bg-soft);padding:22px 16px 40px;overflow-y:auto;height:calc(100vh - var(--topbar-h));position:sticky;top:var(--topbar-h)}.sidebar-home{display:block;color:var(--text-dim);padding:6px 8px;border-radius:6px;font-size:13px;margin-bottom:14px}.sidebar-home.active,.sidebar-home:hover{color:var(--accent);background:var(--bg-elev)}.sidebar-section{margin-bottom:18px}.sidebar-section-label{text-transform:uppercase;letter-spacing:.08em;font-size:11px;color:var(--text-mute);padding:0 8px 6px}.sidebar-list{list-style:none;margin:0;padding:0}.sidebar-link{display:block;padding:6px 10px;border-radius:6px;color:var(--text-dim);font-size:14px;line-height:1.3;margin-bottom:1px;border-left:2px solid transparent}.sidebar-link:hover{color:var(--text);background:var(--bg-card)}.sidebar-link.active{color:var(--accent);background:var(--bg-elev);border-left-color:var(--accent);font-weight:600}.search-wrap{position:relative;width:100%;max-width:720px}.search-shell{display:flex;align-items:center;gap:10px;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:10px 14px;transition:border-color .15s ease,box-shadow .15s ease}.search-shell:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px #ffe5001f}.search-icon{font-size:14px;opacity:.7}.search-input{flex:1;background:transparent;border:0;outline:0;color:var(--text);font-size:15px;min-width:0}.search-clear{background:transparent;border:0;color:var(--text-mute);font-size:18px;cursor:pointer;padding:0 4px}.search-clear:hover{color:var(--text)}.search-results{position:absolute;top:calc(100% + 6px);left:0;right:0;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);max-height:60vh;overflow-y:auto;z-index:40}.search-empty{padding:16px;color:var(--text-dim);font-size:14px}.search-result{display:block;padding:12px 14px;border-bottom:1px solid var(--border);color:var(--text)}.search-result:last-child{border-bottom:0}.search-result.active,.search-result:hover{background:var(--bg-elev)}.search-result-head{display:flex;justify-content:space-between;gap:12px;align-items:baseline;margin-bottom:4px}.search-result-title{font-weight:600;font-size:14px;color:var(--text)}.search-result-section{color:var(--text-mute);font-size:11px;text-transform:uppercase;letter-spacing:.06em}.search-result-snippet{color:var(--text-dim);font-size:13px;line-height:1.4;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.home{max-width:var(--content-max);margin:0 auto}.hero{padding:24px 0 28px;margin-bottom:22px;border-bottom:1px solid var(--border)}.hero-eyebrow{display:inline-block;font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--accent);background:#ffe5001a;border:1px solid rgba(255,229,0,.35);border-radius:999px;padding:4px 12px;margin-bottom:16px}.hero-title{font-size:clamp(28px,4vw,40px);line-height:1.15;margin:0 0 14px;letter-spacing:-.02em}.hero-sub{color:var(--text-dim);font-size:16px;max-width:640px;margin:0 0 22px}.hero-cta{color:var(--text-dim);font-size:13px;margin-top:14px}.hero-link{background:transparent;border:0;color:var(--link);cursor:pointer;padding:0;font:inherit}.hero-link:hover{color:var(--accent)}.section{margin:36px 0}.section-title{font-size:18px;margin:0 0 14px;color:var(--text)}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}.doc-card{display:block;padding:18px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);transition:transform .15s ease,border-color .15s ease,background .15s ease}.doc-card:hover{background:var(--bg-elev);border-color:var(--accent);transform:translateY(-2px)}.doc-card-tag{display:inline-block;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--accent);margin-bottom:8px}.doc-card-title{font-weight:700;font-size:16px;margin-bottom:8px}.doc-card-excerpt{color:var(--text-dim);font-size:13px;margin:0 0 12px;line-height:1.45;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.doc-card-cta{color:var(--link);font-size:13px}.all-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:22px}.all-section-label{text-transform:uppercase;letter-spacing:.08em;font-size:12px;color:var(--text-mute);margin-bottom:8px}.all-section-list{list-style:none;margin:0;padding:0}.all-section-list li{padding:4px 0}.all-section-list a{color:var(--text-dim);font-size:14px}.all-section-list a:hover{color:var(--accent)}.doc-page{max-width:var(--content-max);margin:0 auto}.breadcrumb{color:var(--text-mute);font-size:13px;margin-bottom:14px;display:flex;flex-wrap:wrap;align-items:center}.crumb{display:inline-flex;align-items:center}.crumb-sep{padding:0 8px;color:var(--text-mute)}.doc-page-search{margin:0 0 24px}.doc-pager{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:36px;padding-top:22px;border-top:1px solid var(--border)}.doc-pager-cell.right{justify-self:end;text-align:right}.doc-pager-link{display:block;padding:14px 16px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);min-width:220px}.doc-pager-link:hover{border-color:var(--accent)}.doc-pager-dir{display:block;color:var(--text-mute);font-size:12px;text-transform:uppercase;letter-spacing:.08em;margin-bottom:4px}.doc-pager-title{color:var(--text);font-weight:600;font-size:14px}.markdown-body{font-size:15px;line-height:1.7;color:var(--text);word-wrap:break-word}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5{line-height:1.25;margin:28px 0 14px;color:var(--text);font-weight:700}.markdown-body h1{font-size:clamp(26px,3.4vw,34px);border-bottom:1px solid var(--border);padding-bottom:12px;margin-top:8px}.markdown-body h2{font-size:22px}.markdown-body h3{font-size:18px}.markdown-body p{margin:0 0 14px;color:var(--text)}.markdown-body ul,.markdown-body ol{padding-left:22px;margin:0 0 14px}.markdown-body li{margin-bottom:4px}.markdown-body blockquote{border-left:3px solid var(--accent);background:var(--bg-card);color:var(--text-dim);padding:10px 14px;margin:14px 0;border-radius:0 var(--radius-sm) var(--radius-sm) 0}.markdown-body code{background:var(--code-bg);border:1px solid var(--border);padding:1px 6px;border-radius:5px;font-family:JetBrains Mono,Fira Code,monospace;font-size:13px}.markdown-body pre{background:var(--code-bg)!important;border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px 16px;overflow-x:auto;margin:14px 0}.markdown-body pre code{background:transparent;border:0;padding:0;font-size:13px;line-height:1.55}.markdown-body hr{border:0;border-top:1px solid var(--border);margin:24px 0}.markdown-body table{border-collapse:collapse;width:100%;margin:14px 0;font-size:14px}.markdown-body th,.markdown-body td{border:1px solid var(--border);padding:8px 12px;text-align:left}.markdown-body th{background:var(--bg-card)}.markdown-body img{max-width:100%;border-radius:var(--radius-sm)}.md-img-stub{display:inline-flex;align-items:center;gap:6px;background:var(--bg-card);border:1px dashed var(--border);color:var(--text-mute);padding:4px 10px;border-radius:8px;font-size:13px}.footer{padding:18px 24px;color:var(--text-mute);font-size:12px;border-top:1px solid var(--border);background:var(--bg-soft);display:flex;justify-content:center;gap:8px}.footer-sep{opacity:.5}.not-found{padding:60px 0;text-align:center}.not-found h1{font-size:80px;margin:0;color:var(--accent)}@media(max-width:960px){.hamburger{display:inline-flex}.shell-body{grid-template-columns:1fr}.sidebar{position:fixed;top:var(--topbar-h);left:0;bottom:0;width:min(85vw,320px);z-index:35;transform:translate(-100%);transition:transform .22s cubic-bezier(.2,.7,.2,1);height:auto}.shell-body.sidebar-open .sidebar{transform:translate(0)}.shell-body.sidebar-open .sidebar-backdrop{display:block}.main-pane{padding:24px 18px 64px}} diff --git a/dist/assets/index-Dv5XhPnV.js b/dist/assets/index-Dv5XhPnV.js new file mode 100644 index 0000000000000000000000000000000000000000..562db61cb4b5b5cfdb2137992b41e12e874aef6c --- /dev/null +++ b/dist/assets/index-Dv5XhPnV.js @@ -0,0 +1,971 @@ +(function(){const a=document.createElement("link").relList;if(a&&a.supports&&a.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))l(s);new MutationObserver(s=>{for(const u of s)if(u.type==="childList")for(const c of u.addedNodes)c.tagName==="LINK"&&c.rel==="modulepreload"&&l(c)}).observe(document,{childList:!0,subtree:!0});function r(s){const u={};return s.integrity&&(u.integrity=s.integrity),s.referrerPolicy&&(u.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?u.credentials="include":s.crossOrigin==="anonymous"?u.credentials="omit":u.credentials="same-origin",u}function l(s){if(s.ep)return;s.ep=!0;const u=r(s);fetch(s.href,u)}})();function Gl(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Gc={exports:{}},Tl={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Um;function iv(){if(Um)return Tl;Um=1;var t=Symbol.for("react.transitional.element"),a=Symbol.for("react.fragment");function r(l,s,u){var c=null;if(u!==void 0&&(c=""+u),s.key!==void 0&&(c=""+s.key),"key"in s){u={};for(var p in s)p!=="key"&&(u[p]=s[p])}else u=s;return s=u.ref,{$$typeof:t,type:l,key:c,ref:s!==void 0?s:null,props:u}}return Tl.Fragment=a,Tl.jsx=r,Tl.jsxs=r,Tl}var Hm;function av(){return Hm||(Hm=1,Gc.exports=iv()),Gc.exports}var Z=av(),qc={exports:{}},Ne={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Pm;function rv(){if(Pm)return Ne;Pm=1;var t=Symbol.for("react.transitional.element"),a=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),l=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),u=Symbol.for("react.consumer"),c=Symbol.for("react.context"),p=Symbol.for("react.forward_ref"),m=Symbol.for("react.suspense"),h=Symbol.for("react.memo"),b=Symbol.for("react.lazy"),g=Symbol.for("react.activity"),E=Symbol.iterator;function v(k){return k===null||typeof k!="object"?null:(k=E&&k[E]||k["@@iterator"],typeof k=="function"?k:null)}var S={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,T={};function D(k,G,x){this.props=k,this.context=G,this.refs=T,this.updater=x||S}D.prototype.isReactComponent={},D.prototype.setState=function(k,G){if(typeof k!="object"&&typeof k!="function"&&k!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,k,G,"setState")},D.prototype.forceUpdate=function(k){this.updater.enqueueForceUpdate(this,k,"forceUpdate")};function B(){}B.prototype=D.prototype;function M(k,G,x){this.props=k,this.context=G,this.refs=T,this.updater=x||S}var X=M.prototype=new B;X.constructor=M,C(X,D.prototype),X.isPureReactComponent=!0;var W=Array.isArray;function O(){}var ee={H:null,A:null,T:null,S:null},ue=Object.prototype.hasOwnProperty;function de(k,G,x){var ce=x.ref;return{$$typeof:t,type:k,key:G,ref:ce!==void 0?ce:null,props:x}}function I(k,G){return de(k.type,G,k.props)}function oe(k){return typeof k=="object"&&k!==null&&k.$$typeof===t}function re(k){var G={"=":"=0",":":"=2"};return"$"+k.replace(/[=:]/g,function(x){return G[x]})}var xe=/\/+/g;function le(k,G){return typeof k=="object"&&k!==null&&k.key!=null?re(""+k.key):G.toString(36)}function Q(k){switch(k.status){case"fulfilled":return k.value;case"rejected":throw k.reason;default:switch(typeof k.status=="string"?k.then(O,O):(k.status="pending",k.then(function(G){k.status==="pending"&&(k.status="fulfilled",k.value=G)},function(G){k.status==="pending"&&(k.status="rejected",k.reason=G)})),k.status){case"fulfilled":return k.value;case"rejected":throw k.reason}}throw k}function L(k,G,x,ce,_e){var ge=typeof k;(ge==="undefined"||ge==="boolean")&&(k=null);var Le=!1;if(k===null)Le=!0;else switch(ge){case"bigint":case"string":case"number":Le=!0;break;case"object":switch(k.$$typeof){case t:case a:Le=!0;break;case b:return Le=k._init,L(Le(k._payload),G,x,ce,_e)}}if(Le)return _e=_e(k),Le=ce===""?"."+le(k,0):ce,W(_e)?(x="",Le!=null&&(x=Le.replace(xe,"$&/")+"/"),L(_e,G,x,"",function(Bt){return Bt})):_e!=null&&(oe(_e)&&(_e=I(_e,x+(_e.key==null||k&&k.key===_e.key?"":(""+_e.key).replace(xe,"$&/")+"/")+Le)),G.push(_e)),1;Le=0;var We=ce===""?".":ce+":";if(W(k))for(var Ze=0;Ze>>1,A=L[Ee];if(0>>1;Ees(x,ne))ces(_e,x)?(L[Ee]=_e,L[ce]=ne,Ee=ce):(L[Ee]=x,L[G]=ne,Ee=G);else if(ces(_e,ne))L[Ee]=_e,L[ce]=ne,Ee=ce;else break e}}return J}function s(L,J){var ne=L.sortIndex-J.sortIndex;return ne!==0?ne:L.id-J.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var u=performance;t.unstable_now=function(){return u.now()}}else{var c=Date,p=c.now();t.unstable_now=function(){return c.now()-p}}var m=[],h=[],b=1,g=null,E=3,v=!1,S=!1,C=!1,T=!1,D=typeof setTimeout=="function"?setTimeout:null,B=typeof clearTimeout=="function"?clearTimeout:null,M=typeof setImmediate<"u"?setImmediate:null;function X(L){for(var J=r(h);J!==null;){if(J.callback===null)l(h);else if(J.startTime<=L)l(h),J.sortIndex=J.expirationTime,a(m,J);else break;J=r(h)}}function W(L){if(C=!1,X(L),!S)if(r(m)!==null)S=!0,O||(O=!0,re());else{var J=r(h);J!==null&&Q(W,J.startTime-L)}}var O=!1,ee=-1,ue=5,de=-1;function I(){return T?!0:!(t.unstable_now()-deL&&I());){var Ee=g.callback;if(typeof Ee=="function"){g.callback=null,E=g.priorityLevel;var A=Ee(g.expirationTime<=L);if(L=t.unstable_now(),typeof A=="function"){g.callback=A,X(L),J=!0;break t}g===r(m)&&l(m),X(L)}else l(m);g=r(m)}if(g!==null)J=!0;else{var k=r(h);k!==null&&Q(W,k.startTime-L),J=!1}}break e}finally{g=null,E=ne,v=!1}J=void 0}}finally{J?re():O=!1}}}var re;if(typeof M=="function")re=function(){M(oe)};else if(typeof MessageChannel<"u"){var xe=new MessageChannel,le=xe.port2;xe.port1.onmessage=oe,re=function(){le.postMessage(null)}}else re=function(){D(oe,0)};function Q(L,J){ee=D(function(){L(t.unstable_now())},J)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(L){L.callback=null},t.unstable_forceFrameRate=function(L){0>L||125Ee?(L.sortIndex=ne,a(h,L),r(m)===null&&L===r(h)&&(C?(B(ee),ee=-1):C=!0,Q(W,ne-Ee))):(L.sortIndex=A,a(m,L),S||v||(S=!0,O||(O=!0,re()))),L},t.unstable_shouldYield=I,t.unstable_wrapCallback=function(L){var J=E;return function(){var ne=E;E=J;try{return L.apply(this,arguments)}finally{E=ne}}}})(Kc)),Kc}var jm;function sv(){return jm||(jm=1,Yc.exports=ov()),Yc.exports}var Vc={exports:{}},$t={};/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Ym;function uv(){if(Ym)return $t;Ym=1;var t=Ff();function a(m){var h="https://react.dev/errors/"+m;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(a){console.error(a)}}return t(),Vc.exports=uv(),Vc.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Vm;function fv(){if(Vm)return kl;Vm=1;var t=sv(),a=Ff(),r=cv();function l(e){var n="https://react.dev/errors/"+e;if(1A||(e.current=Ee[A],Ee[A]=null,A--)}function x(e,n){A++,Ee[A]=e.current,e.current=n}var ce=k(null),_e=k(null),ge=k(null),Le=k(null);function We(e,n){switch(x(ge,n),x(_e,e),x(ce,null),n.nodeType){case 9:case 11:e=(e=n.documentElement)&&(e=e.namespaceURI)?sm(e):0;break;default:if(e=n.tagName,n=n.namespaceURI)n=sm(n),e=um(n,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}G(ce),x(ce,e)}function Ze(){G(ce),G(_e),G(ge)}function Bt(e){e.memoizedState!==null&&x(Le,e);var n=ce.current,i=um(n,e.type);n!==i&&(x(_e,e),x(ce,i))}function mn(e){_e.current===e&&(G(ce),G(_e)),Le.current===e&&(G(Le),Dl._currentValue=ne)}var ui,Mi;function gn(e){if(ui===void 0)try{throw Error()}catch(i){var n=i.stack.trim().match(/\n( *(at )?)/);ui=n&&n[1]||"",Mi=-1)":-1f||w[o]!==U[f]){var Y=` +`+w[o].replace(" at new "," at ");return e.displayName&&Y.includes("")&&(Y=Y.replace("",e.displayName)),Y}while(1<=o&&0<=f);break}}}finally{Wn=!1,Error.prepareStackTrace=i}return(i=e?e.displayName||e.name:"")?gn(i):""}function qn(e,n){switch(e.tag){case 26:case 27:case 5:return gn(e.type);case 16:return gn("Lazy");case 13:return e.child!==n&&n!==null?gn("Suspense Fallback"):gn("Suspense");case 19:return gn("SuspenseList");case 0:case 15:return je(e.type,!1);case 11:return je(e.type.render,!1);case 1:return je(e.type,!0);case 31:return gn("Activity");default:return""}}function kn(e){try{var n="",i=null;do n+=qn(e,i),i=e,e=e.return;while(e);return n}catch(o){return` +Error generating stack: `+o.message+` +`+o.stack}}var Jn=Object.prototype.hasOwnProperty,ci=t.unstable_scheduleCallback,ca=t.unstable_cancelCallback,Fr=t.unstable_shouldYield,za=t.unstable_requestPaint,Et=t.unstable_now,Ia=t.unstable_getCurrentPriorityLevel,j=t.unstable_ImmediatePriority,ae=t.unstable_UserBlockingPriority,Ae=t.unstable_NormalPriority,Be=t.unstable_LowPriority,Ve=t.unstable_IdlePriority,Qt=t.log,jn=t.unstable_setDisableYieldValue,Ut=null,_t=null;function Yt(e){if(typeof Qt=="function"&&jn(e),_t&&typeof _t.setStrictMode=="function")try{_t.setStrictMode(Ut,e)}catch{}}var Je=Math.clz32?Math.clz32:Zl,ei=Math.log,Wt=Math.LN2;function Zl(e){return e>>>=0,e===0?32:31-(ei(e)/Wt|0)|0}var fa=256,Ua=262144,da=4194304;function an(e){var n=e&42;if(n!==0)return n;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function N(e,n,i){var o=e.pendingLanes;if(o===0)return 0;var f=0,d=e.suspendedLanes,y=e.pingedLanes;e=e.warmLanes;var _=o&134217727;return _!==0?(o=_&~d,o!==0?f=an(o):(y&=_,y!==0?f=an(y):i||(i=_&~e,i!==0&&(f=an(i))))):(_=o&~d,_!==0?f=an(_):y!==0?f=an(y):i||(i=o&~e,i!==0&&(f=an(i)))),f===0?0:n!==0&&n!==f&&(n&d)===0&&(d=f&-f,i=n&-n,d>=i||d===32&&(i&4194048)!==0)?n:f}function K(e,n){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&n)===0}function fe(e,n){switch(e){case 1:case 2:case 4:case 8:case 64:return n+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return n+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function ke(){var e=da;return da<<=1,(da&62914560)===0&&(da=4194304),e}function pt(e){for(var n=[],i=0;31>i;i++)n.push(e);return n}function st(e,n){e.pendingLanes|=n,n!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function me(e,n,i,o,f,d){var y=e.pendingLanes;e.pendingLanes=i,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=i,e.entangledLanes&=i,e.errorRecoveryDisabledLanes&=i,e.shellSuspendCounter=0;var _=e.entanglements,w=e.expirationTimes,U=e.hiddenUpdates;for(i=y&~i;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var Ps=/[\n"\\]/g;function ln(e){return e.replace(Ps,function(n){return"\\"+n.charCodeAt(0).toString(16)+" "})}function Ir(e,n,i,o,f,d,y,_){e.name="",y!=null&&typeof y!="function"&&typeof y!="symbol"&&typeof y!="boolean"?e.type=y:e.removeAttribute("type"),n!=null?y==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+ft(n)):e.value!==""+ft(n)&&(e.value=""+ft(n)):y!=="submit"&&y!=="reset"||e.removeAttribute("value"),n!=null?Ya(e,y,ft(n)):i!=null?Ya(e,y,ft(i)):o!=null&&e.removeAttribute("value"),f==null&&d!=null&&(e.defaultChecked=!!d),f!=null&&(e.checked=f&&typeof f!="function"&&typeof f!="symbol"),_!=null&&typeof _!="function"&&typeof _!="symbol"&&typeof _!="boolean"?e.name=""+ft(_):e.removeAttribute("name")}function ma(e,n,i,o,f,d,y,_){if(d!=null&&typeof d!="function"&&typeof d!="symbol"&&typeof d!="boolean"&&(e.type=d),n!=null||i!=null){if(!(d!=="submit"&&d!=="reset"||n!=null)){qa(e);return}i=i!=null?""+ft(i):"",n=n!=null?""+ft(n):i,_||n===e.value||(e.value=n),e.defaultValue=n}o=o??f,o=typeof o!="function"&&typeof o!="symbol"&&!!o,e.checked=_?e.checked:!!o,e.defaultChecked=!!o,y!=null&&typeof y!="function"&&typeof y!="symbol"&&typeof y!="boolean"&&(e.name=y),qa(e)}function Ya(e,n,i){n==="number"&&ja(e.ownerDocument)===e||e.defaultValue===""+i||(e.defaultValue=""+i)}function Ht(e,n,i,o){if(e=e.options,n){n={};for(var f=0;f"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Gs=!1;if(mi)try{var Gr={};Object.defineProperty(Gr,"passive",{get:function(){Gs=!0}}),window.addEventListener("test",Gr,Gr),window.removeEventListener("test",Gr,Gr)}catch{Gs=!1}var Ui=null,qs=null,ao=null;function ud(){if(ao)return ao;var e,n=qs,i=n.length,o,f="value"in Ui?Ui.value:Ui.textContent,d=f.length;for(e=0;e=Yr),md=" ",gd=!1;function bd(e,n){switch(e){case"keyup":return AE.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function yd(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Va=!1;function wE(e,n){switch(e){case"compositionend":return yd(n);case"keypress":return n.which!==32?null:(gd=!0,md);case"textInput":return e=n.data,e===md&&gd?null:e;default:return null}}function TE(e,n){if(Va)return e==="compositionend"||!$s&&bd(e,n)?(e=ud(),ao=qs=Ui=null,Va=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1=n)return{node:i,offset:n-e};e=o}e:{for(;i;){if(i.nextSibling){i=i.nextSibling;break e}i=i.parentNode}i=void 0}i=Cd(i)}}function Td(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?Td(e,n.parentNode):"contains"in e?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function kd(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var n=ja(e.document);n instanceof e.HTMLIFrameElement;){try{var i=typeof n.contentWindow.location.href=="string"}catch{i=!1}if(i)e=n.contentWindow;else break;n=ja(e.document)}return n}function Qs(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&(n==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||n==="textarea"||e.contentEditable==="true")}var BE=mi&&"documentMode"in document&&11>=document.documentMode,$a=null,Ws=null,Xr=null,Js=!1;function Nd(e,n,i){var o=i.window===i?i.document:i.nodeType===9?i:i.ownerDocument;Js||$a==null||$a!==ja(o)||(o=$a,"selectionStart"in o&&Qs(o)?o={start:o.selectionStart,end:o.selectionEnd}:(o=(o.ownerDocument&&o.ownerDocument.defaultView||window).getSelection(),o={anchorNode:o.anchorNode,anchorOffset:o.anchorOffset,focusNode:o.focusNode,focusOffset:o.focusOffset}),Xr&&$r(Xr,o)||(Xr=o,o=Wo(Ws,"onSelect"),0>=y,f-=y,ni=1<<32-Je(n)+f|i<Me?(qe=ye,ye=null):qe=ye.sibling;var Xe=H(F,ye,z[Me],V);if(Xe===null){ye===null&&(ye=qe);break}e&&ye&&Xe.alternate===null&&n(F,ye),R=d(Xe,R,Me),$e===null?Se=Xe:$e.sibling=Xe,$e=Xe,ye=qe}if(Me===z.length)return i(F,ye),Ye&&bi(F,Me),Se;if(ye===null){for(;MeMe?(qe=ye,ye=null):qe=ye.sibling;var oa=H(F,ye,Xe.value,V);if(oa===null){ye===null&&(ye=qe);break}e&&ye&&oa.alternate===null&&n(F,ye),R=d(oa,R,Me),$e===null?Se=oa:$e.sibling=oa,$e=oa,ye=qe}if(Xe.done)return i(F,ye),Ye&&bi(F,Me),Se;if(ye===null){for(;!Xe.done;Me++,Xe=z.next())Xe=$(F,Xe.value,V),Xe!==null&&(R=d(Xe,R,Me),$e===null?Se=Xe:$e.sibling=Xe,$e=Xe);return Ye&&bi(F,Me),Se}for(ye=o(ye);!Xe.done;Me++,Xe=z.next())Xe=P(ye,F,Me,Xe.value,V),Xe!==null&&(e&&Xe.alternate!==null&&ye.delete(Xe.key===null?Me:Xe.key),R=d(Xe,R,Me),$e===null?Se=Xe:$e.sibling=Xe,$e=Xe);return e&&ye.forEach(function(nv){return n(F,nv)}),Ye&&bi(F,Me),Se}function lt(F,R,z,V){if(typeof z=="object"&&z!==null&&z.type===C&&z.key===null&&(z=z.props.children),typeof z=="object"&&z!==null){switch(z.$$typeof){case v:e:{for(var Se=z.key;R!==null;){if(R.key===Se){if(Se=z.type,Se===C){if(R.tag===7){i(F,R.sibling),V=f(R,z.props.children),V.return=F,F=V;break e}}else if(R.elementType===Se||typeof Se=="object"&&Se!==null&&Se.$$typeof===ue&&Aa(Se)===R.type){i(F,R.sibling),V=f(R,z.props),tl(V,z),V.return=F,F=V;break e}i(F,R);break}else n(F,R);R=R.sibling}z.type===C?(V=va(z.props.children,F.mode,V,z.key),V.return=F,F=V):(V=mo(z.type,z.key,z.props,null,F.mode,V),tl(V,z),V.return=F,F=V)}return y(F);case S:e:{for(Se=z.key;R!==null;){if(R.key===Se)if(R.tag===4&&R.stateNode.containerInfo===z.containerInfo&&R.stateNode.implementation===z.implementation){i(F,R.sibling),V=f(R,z.children||[]),V.return=F,F=V;break e}else{i(F,R);break}else n(F,R);R=R.sibling}V=lu(z,F.mode,V),V.return=F,F=V}return y(F);case ue:return z=Aa(z),lt(F,R,z,V)}if(Q(z))return he(F,R,z,V);if(re(z)){if(Se=re(z),typeof Se!="function")throw Error(l(150));return z=Se.call(z),Ce(F,R,z,V)}if(typeof z.then=="function")return lt(F,R,So(z),V);if(z.$$typeof===M)return lt(F,R,yo(F,z),V);xo(F,z)}return typeof z=="string"&&z!==""||typeof z=="number"||typeof z=="bigint"?(z=""+z,R!==null&&R.tag===6?(i(F,R.sibling),V=f(R,z),V.return=F,F=V):(i(F,R),V=ru(z,F.mode,V),V.return=F,F=V),y(F)):i(F,R)}return function(F,R,z,V){try{el=0;var Se=lt(F,R,z,V);return rr=null,Se}catch(ye){if(ye===ar||ye===vo)throw ye;var $e=vn(29,ye,null,F.mode);return $e.lanes=V,$e.return=F,$e}finally{}}}var wa=Jd(!0),ep=Jd(!1),ji=!1;function yu(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Eu(e,n){e=e.updateQueue,n.updateQueue===e&&(n.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Yi(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Ki(e,n,i){var o=e.updateQueue;if(o===null)return null;if(o=o.shared,(Qe&2)!==0){var f=o.pending;return f===null?n.next=n:(n.next=f.next,f.next=n),o.pending=n,n=ho(e),zd(e,null,i),n}return po(e,o,n,i),ho(e)}function nl(e,n,i){if(n=n.updateQueue,n!==null&&(n=n.shared,(i&4194048)!==0)){var o=n.lanes;o&=e.pendingLanes,i|=o,n.lanes=i,Te(e,i)}}function vu(e,n){var i=e.updateQueue,o=e.alternate;if(o!==null&&(o=o.updateQueue,i===o)){var f=null,d=null;if(i=i.firstBaseUpdate,i!==null){do{var y={lane:i.lane,tag:i.tag,payload:i.payload,callback:null,next:null};d===null?f=d=y:d=d.next=y,i=i.next}while(i!==null);d===null?f=d=n:d=d.next=n}else f=d=n;i={baseState:o.baseState,firstBaseUpdate:f,lastBaseUpdate:d,shared:o.shared,callbacks:o.callbacks},e.updateQueue=i;return}e=i.lastBaseUpdate,e===null?i.firstBaseUpdate=n:e.next=n,i.lastBaseUpdate=n}var _u=!1;function il(){if(_u){var e=ir;if(e!==null)throw e}}function al(e,n,i,o){_u=!1;var f=e.updateQueue;ji=!1;var d=f.firstBaseUpdate,y=f.lastBaseUpdate,_=f.shared.pending;if(_!==null){f.shared.pending=null;var w=_,U=w.next;w.next=null,y===null?d=U:y.next=U,y=w;var Y=e.alternate;Y!==null&&(Y=Y.updateQueue,_=Y.lastBaseUpdate,_!==y&&(_===null?Y.firstBaseUpdate=U:_.next=U,Y.lastBaseUpdate=w))}if(d!==null){var $=f.baseState;y=0,Y=U=w=null,_=d;do{var H=_.lane&-536870913,P=H!==_.lane;if(P?(Ge&H)===H:(o&H)===H){H!==0&&H===nr&&(_u=!0),Y!==null&&(Y=Y.next={lane:0,tag:_.tag,payload:_.payload,callback:null,next:null});e:{var he=e,Ce=_;H=n;var lt=i;switch(Ce.tag){case 1:if(he=Ce.payload,typeof he=="function"){$=he.call(lt,$,H);break e}$=he;break e;case 3:he.flags=he.flags&-65537|128;case 0:if(he=Ce.payload,H=typeof he=="function"?he.call(lt,$,H):he,H==null)break e;$=g({},$,H);break e;case 2:ji=!0}}H=_.callback,H!==null&&(e.flags|=64,P&&(e.flags|=8192),P=f.callbacks,P===null?f.callbacks=[H]:P.push(H))}else P={lane:H,tag:_.tag,payload:_.payload,callback:_.callback,next:null},Y===null?(U=Y=P,w=$):Y=Y.next=P,y|=H;if(_=_.next,_===null){if(_=f.shared.pending,_===null)break;P=_,_=P.next,P.next=null,f.lastBaseUpdate=P,f.shared.pending=null}}while(!0);Y===null&&(w=$),f.baseState=w,f.firstBaseUpdate=U,f.lastBaseUpdate=Y,d===null&&(f.shared.lanes=0),Qi|=y,e.lanes=y,e.memoizedState=$}}function tp(e,n){if(typeof e!="function")throw Error(l(191,e));e.call(n)}function np(e,n){var i=e.callbacks;if(i!==null)for(e.callbacks=null,e=0;ed?d:8;var y=L.T,_={};L.T=_,Hu(e,!1,n,i);try{var w=f(),U=L.S;if(U!==null&&U(_,w),w!==null&&typeof w=="object"&&typeof w.then=="function"){var Y=YE(w,o);ol(e,n,Y,An(e))}else ol(e,n,o,An(e))}catch($){ol(e,n,{then:function(){},status:"rejected",reason:$},An())}finally{J.p=d,y!==null&&_.types!==null&&(y.types=_.types),L.T=y}}function QE(){}function Iu(e,n,i,o){if(e.tag!==5)throw Error(l(476));var f=Fp(e).queue;Mp(e,f,n,ne,i===null?QE:function(){return Lp(e),i(o)})}function Fp(e){var n=e.memoizedState;if(n!==null)return n;n={memoizedState:ne,baseState:ne,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:_i,lastRenderedState:ne},next:null};var i={};return n.next={memoizedState:i,baseState:i,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:_i,lastRenderedState:i},next:null},e.memoizedState=n,e=e.alternate,e!==null&&(e.memoizedState=n),n}function Lp(e){var n=Fp(e);n.next===null&&(n=e.alternate.memoizedState),ol(e,n.next.queue,{},An())}function Uu(){return Gt(Dl)}function Bp(){return Tt().memoizedState}function zp(){return Tt().memoizedState}function WE(e){for(var n=e.return;n!==null;){switch(n.tag){case 24:case 3:var i=An();e=Yi(i);var o=Ki(n,e,i);o!==null&&(dn(o,n,i),nl(o,n,i)),n={cache:hu()},e.payload=n;return}n=n.return}}function JE(e,n,i){var o=An();i={lane:o,revertLane:0,gesture:null,action:i,hasEagerState:!1,eagerState:null,next:null},Mo(e)?Up(n,i):(i=iu(e,n,i,o),i!==null&&(dn(i,e,o),Hp(i,n,o)))}function Ip(e,n,i){var o=An();ol(e,n,i,o)}function ol(e,n,i,o){var f={lane:o,revertLane:0,gesture:null,action:i,hasEagerState:!1,eagerState:null,next:null};if(Mo(e))Up(n,f);else{var d=e.alternate;if(e.lanes===0&&(d===null||d.lanes===0)&&(d=n.lastRenderedReducer,d!==null))try{var y=n.lastRenderedState,_=d(y,i);if(f.hasEagerState=!0,f.eagerState=_,En(_,y))return po(e,n,f,0),ut===null&&fo(),!1}catch{}finally{}if(i=iu(e,n,f,o),i!==null)return dn(i,e,o),Hp(i,n,o),!0}return!1}function Hu(e,n,i,o){if(o={lane:2,revertLane:yc(),gesture:null,action:o,hasEagerState:!1,eagerState:null,next:null},Mo(e)){if(n)throw Error(l(479))}else n=iu(e,i,o,2),n!==null&&dn(n,e,2)}function Mo(e){var n=e.alternate;return e===Oe||n!==null&&n===Oe}function Up(e,n){or=Co=!0;var i=e.pending;i===null?n.next=n:(n.next=i.next,i.next=n),e.pending=n}function Hp(e,n,i){if((i&4194048)!==0){var o=n.lanes;o&=e.pendingLanes,i|=o,n.lanes=i,Te(e,i)}}var sl={readContext:Gt,use:ko,useCallback:St,useContext:St,useEffect:St,useImperativeHandle:St,useLayoutEffect:St,useInsertionEffect:St,useMemo:St,useReducer:St,useRef:St,useState:St,useDebugValue:St,useDeferredValue:St,useTransition:St,useSyncExternalStore:St,useId:St,useHostTransitionStatus:St,useFormState:St,useActionState:St,useOptimistic:St,useMemoCache:St,useCacheRefresh:St};sl.useEffectEvent=St;var Pp={readContext:Gt,use:ko,useCallback:function(e,n){return en().memoizedState=[e,n===void 0?null:n],e},useContext:Gt,useEffect:Dp,useImperativeHandle:function(e,n,i){i=i!=null?i.concat([e]):null,Ro(4194308,4,Tp.bind(null,n,e),i)},useLayoutEffect:function(e,n){return Ro(4194308,4,e,n)},useInsertionEffect:function(e,n){Ro(4,2,e,n)},useMemo:function(e,n){var i=en();n=n===void 0?null:n;var o=e();if(Ta){Yt(!0);try{e()}finally{Yt(!1)}}return i.memoizedState=[o,n],o},useReducer:function(e,n,i){var o=en();if(i!==void 0){var f=i(n);if(Ta){Yt(!0);try{i(n)}finally{Yt(!1)}}}else f=n;return o.memoizedState=o.baseState=f,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:f},o.queue=e,e=e.dispatch=JE.bind(null,Oe,e),[o.memoizedState,e]},useRef:function(e){var n=en();return e={current:e},n.memoizedState=e},useState:function(e){e=Mu(e);var n=e.queue,i=Ip.bind(null,Oe,n);return n.dispatch=i,[e.memoizedState,i]},useDebugValue:Bu,useDeferredValue:function(e,n){var i=en();return zu(i,e,n)},useTransition:function(){var e=Mu(!1);return e=Mp.bind(null,Oe,e.queue,!0,!1),en().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,n,i){var o=Oe,f=en();if(Ye){if(i===void 0)throw Error(l(407));i=i()}else{if(i=n(),ut===null)throw Error(l(349));(Ge&127)!==0||sp(o,n,i)}f.memoizedState=i;var d={value:i,getSnapshot:n};return f.queue=d,Dp(cp.bind(null,o,d,e),[e]),o.flags|=2048,ur(9,{destroy:void 0},up.bind(null,o,d,i,n),null),i},useId:function(){var e=en(),n=ut.identifierPrefix;if(Ye){var i=ii,o=ni;i=(o&~(1<<32-Je(o)-1)).toString(32)+i,n="_"+n+"R_"+i,i=wo++,0<\/script>",d=d.removeChild(d.firstChild);break;case"select":d=typeof o.is=="string"?y.createElement("select",{is:o.is}):y.createElement("select"),o.multiple?d.multiple=!0:o.size&&(d.size=o.size);break;default:d=typeof o.is=="string"?y.createElement(f,{is:o.is}):y.createElement(f)}}d[At]=n,d[Kt]=o;e:for(y=n.child;y!==null;){if(y.tag===5||y.tag===6)d.appendChild(y.stateNode);else if(y.tag!==4&&y.tag!==27&&y.child!==null){y.child.return=y,y=y.child;continue}if(y===n)break e;for(;y.sibling===null;){if(y.return===null||y.return===n)break e;y=y.return}y.sibling.return=y.return,y=y.sibling}n.stateNode=d;e:switch(jt(d,f,o),f){case"button":case"input":case"select":case"textarea":o=!!o.autoFocus;break e;case"img":o=!0;break e;default:o=!1}o&&xi(n)}}return mt(n),ec(n,n.type,e===null?null:e.memoizedProps,n.pendingProps,i),null;case 6:if(e&&n.stateNode!=null)e.memoizedProps!==o&&xi(n);else{if(typeof o!="string"&&n.stateNode===null)throw Error(l(166));if(e=ge.current,er(n)){if(e=n.stateNode,i=n.memoizedProps,o=null,f=Pt,f!==null)switch(f.tag){case 27:case 5:o=f.memoizedProps}e[At]=n,e=!!(e.nodeValue===i||o!==null&&o.suppressHydrationWarning===!0||lm(e.nodeValue,i)),e||Gi(n,!0)}else e=Jo(e).createTextNode(o),e[At]=n,n.stateNode=e}return mt(n),null;case 31:if(i=n.memoizedState,e===null||e.memoizedState!==null){if(o=er(n),i!==null){if(e===null){if(!o)throw Error(l(318));if(e=n.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(l(557));e[At]=n}else _a(),(n.flags&128)===0&&(n.memoizedState=null),n.flags|=4;mt(n),e=!1}else i=cu(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=i),e=!0;if(!e)return n.flags&256?(Sn(n),n):(Sn(n),null);if((n.flags&128)!==0)throw Error(l(558))}return mt(n),null;case 13:if(o=n.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(f=er(n),o!==null&&o.dehydrated!==null){if(e===null){if(!f)throw Error(l(318));if(f=n.memoizedState,f=f!==null?f.dehydrated:null,!f)throw Error(l(317));f[At]=n}else _a(),(n.flags&128)===0&&(n.memoizedState=null),n.flags|=4;mt(n),f=!1}else f=cu(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=f),f=!0;if(!f)return n.flags&256?(Sn(n),n):(Sn(n),null)}return Sn(n),(n.flags&128)!==0?(n.lanes=i,n):(i=o!==null,e=e!==null&&e.memoizedState!==null,i&&(o=n.child,f=null,o.alternate!==null&&o.alternate.memoizedState!==null&&o.alternate.memoizedState.cachePool!==null&&(f=o.alternate.memoizedState.cachePool.pool),d=null,o.memoizedState!==null&&o.memoizedState.cachePool!==null&&(d=o.memoizedState.cachePool.pool),d!==f&&(o.flags|=2048)),i!==e&&i&&(n.child.flags|=8192),Io(n,n.updateQueue),mt(n),null);case 4:return Ze(),e===null&&Sc(n.stateNode.containerInfo),mt(n),null;case 10:return Ei(n.type),mt(n),null;case 19:if(G(wt),o=n.memoizedState,o===null)return mt(n),null;if(f=(n.flags&128)!==0,d=o.rendering,d===null)if(f)cl(o,!1);else{if(xt!==0||e!==null&&(e.flags&128)!==0)for(e=n.child;e!==null;){if(d=Ao(e),d!==null){for(n.flags|=128,cl(o,!1),e=d.updateQueue,n.updateQueue=e,Io(n,e),n.subtreeFlags=0,e=i,i=n.child;i!==null;)Id(i,e),i=i.sibling;return x(wt,wt.current&1|2),Ye&&bi(n,o.treeForkCount),n.child}e=e.sibling}o.tail!==null&&Et()>qo&&(n.flags|=128,f=!0,cl(o,!1),n.lanes=4194304)}else{if(!f)if(e=Ao(d),e!==null){if(n.flags|=128,f=!0,e=e.updateQueue,n.updateQueue=e,Io(n,e),cl(o,!0),o.tail===null&&o.tailMode==="hidden"&&!d.alternate&&!Ye)return mt(n),null}else 2*Et()-o.renderingStartTime>qo&&i!==536870912&&(n.flags|=128,f=!0,cl(o,!1),n.lanes=4194304);o.isBackwards?(d.sibling=n.child,n.child=d):(e=o.last,e!==null?e.sibling=d:n.child=d,o.last=d)}return o.tail!==null?(e=o.tail,o.rendering=e,o.tail=e.sibling,o.renderingStartTime=Et(),e.sibling=null,i=wt.current,x(wt,f?i&1|2:i&1),Ye&&bi(n,o.treeForkCount),e):(mt(n),null);case 22:case 23:return Sn(n),xu(),o=n.memoizedState!==null,e!==null?e.memoizedState!==null!==o&&(n.flags|=8192):o&&(n.flags|=8192),o?(i&536870912)!==0&&(n.flags&128)===0&&(mt(n),n.subtreeFlags&6&&(n.flags|=8192)):mt(n),i=n.updateQueue,i!==null&&Io(n,i.retryQueue),i=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(i=e.memoizedState.cachePool.pool),o=null,n.memoizedState!==null&&n.memoizedState.cachePool!==null&&(o=n.memoizedState.cachePool.pool),o!==i&&(n.flags|=2048),e!==null&&G(Da),null;case 24:return i=null,e!==null&&(i=e.memoizedState.cache),n.memoizedState.cache!==i&&(n.flags|=2048),Ei(Rt),mt(n),null;case 25:return null;case 30:return null}throw Error(l(156,n.tag))}function a0(e,n){switch(su(n),n.tag){case 1:return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return Ei(Rt),Ze(),e=n.flags,(e&65536)!==0&&(e&128)===0?(n.flags=e&-65537|128,n):null;case 26:case 27:case 5:return mn(n),null;case 31:if(n.memoizedState!==null){if(Sn(n),n.alternate===null)throw Error(l(340));_a()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 13:if(Sn(n),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(l(340));_a()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return G(wt),null;case 4:return Ze(),null;case 10:return Ei(n.type),null;case 22:case 23:return Sn(n),xu(),e!==null&&G(Da),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 24:return Ei(Rt),null;case 25:return null;default:return null}}function fh(e,n){switch(su(n),n.tag){case 3:Ei(Rt),Ze();break;case 26:case 27:case 5:mn(n);break;case 4:Ze();break;case 31:n.memoizedState!==null&&Sn(n);break;case 13:Sn(n);break;case 19:G(wt);break;case 10:Ei(n.type);break;case 22:case 23:Sn(n),xu(),e!==null&&G(Da);break;case 24:Ei(Rt)}}function fl(e,n){try{var i=n.updateQueue,o=i!==null?i.lastEffect:null;if(o!==null){var f=o.next;i=f;do{if((i.tag&e)===e){o=void 0;var d=i.create,y=i.inst;o=d(),y.destroy=o}i=i.next}while(i!==f)}}catch(_){it(n,n.return,_)}}function Xi(e,n,i){try{var o=n.updateQueue,f=o!==null?o.lastEffect:null;if(f!==null){var d=f.next;o=d;do{if((o.tag&e)===e){var y=o.inst,_=y.destroy;if(_!==void 0){y.destroy=void 0,f=n;var w=i,U=_;try{U()}catch(Y){it(f,w,Y)}}}o=o.next}while(o!==d)}}catch(Y){it(n,n.return,Y)}}function dh(e){var n=e.updateQueue;if(n!==null){var i=e.stateNode;try{np(n,i)}catch(o){it(e,e.return,o)}}}function ph(e,n,i){i.props=ka(e.type,e.memoizedProps),i.state=e.memoizedState;try{i.componentWillUnmount()}catch(o){it(e,n,o)}}function dl(e,n){try{var i=e.ref;if(i!==null){switch(e.tag){case 26:case 27:case 5:var o=e.stateNode;break;case 30:o=e.stateNode;break;default:o=e.stateNode}typeof i=="function"?e.refCleanup=i(o):i.current=o}}catch(f){it(e,n,f)}}function ai(e,n){var i=e.ref,o=e.refCleanup;if(i!==null)if(typeof o=="function")try{o()}catch(f){it(e,n,f)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof i=="function")try{i(null)}catch(f){it(e,n,f)}else i.current=null}function hh(e){var n=e.type,i=e.memoizedProps,o=e.stateNode;try{e:switch(n){case"button":case"input":case"select":case"textarea":i.autoFocus&&o.focus();break e;case"img":i.src?o.src=i.src:i.srcSet&&(o.srcset=i.srcSet)}}catch(f){it(e,e.return,f)}}function tc(e,n,i){try{var o=e.stateNode;C0(o,e.type,i,n),o[Kt]=n}catch(f){it(e,e.return,f)}}function mh(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&na(e.type)||e.tag===4}function nc(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||mh(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&na(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function ic(e,n,i){var o=e.tag;if(o===5||o===6)e=e.stateNode,n?(i.nodeType===9?i.body:i.nodeName==="HTML"?i.ownerDocument.body:i).insertBefore(e,n):(n=i.nodeType===9?i.body:i.nodeName==="HTML"?i.ownerDocument.body:i,n.appendChild(e),i=i._reactRootContainer,i!=null||n.onclick!==null||(n.onclick=se));else if(o!==4&&(o===27&&na(e.type)&&(i=e.stateNode,n=null),e=e.child,e!==null))for(ic(e,n,i),e=e.sibling;e!==null;)ic(e,n,i),e=e.sibling}function Uo(e,n,i){var o=e.tag;if(o===5||o===6)e=e.stateNode,n?i.insertBefore(e,n):i.appendChild(e);else if(o!==4&&(o===27&&na(e.type)&&(i=e.stateNode),e=e.child,e!==null))for(Uo(e,n,i),e=e.sibling;e!==null;)Uo(e,n,i),e=e.sibling}function gh(e){var n=e.stateNode,i=e.memoizedProps;try{for(var o=e.type,f=n.attributes;f.length;)n.removeAttributeNode(f[0]);jt(n,o,i),n[At]=e,n[Kt]=i}catch(d){it(e,e.return,d)}}var Di=!1,Ft=!1,ac=!1,bh=typeof WeakSet=="function"?WeakSet:Set,It=null;function r0(e,n){if(e=e.containerInfo,Ac=ls,e=kd(e),Qs(e)){if("selectionStart"in e)var i={start:e.selectionStart,end:e.selectionEnd};else e:{i=(i=e.ownerDocument)&&i.defaultView||window;var o=i.getSelection&&i.getSelection();if(o&&o.rangeCount!==0){i=o.anchorNode;var f=o.anchorOffset,d=o.focusNode;o=o.focusOffset;try{i.nodeType,d.nodeType}catch{i=null;break e}var y=0,_=-1,w=-1,U=0,Y=0,$=e,H=null;t:for(;;){for(var P;$!==i||f!==0&&$.nodeType!==3||(_=y+f),$!==d||o!==0&&$.nodeType!==3||(w=y+o),$.nodeType===3&&(y+=$.nodeValue.length),(P=$.firstChild)!==null;)H=$,$=P;for(;;){if($===e)break t;if(H===i&&++U===f&&(_=y),H===d&&++Y===o&&(w=y),(P=$.nextSibling)!==null)break;$=H,H=$.parentNode}$=P}i=_===-1||w===-1?null:{start:_,end:w}}else i=null}i=i||{start:0,end:0}}else i=null;for(Cc={focusedElem:e,selectionRange:i},ls=!1,It=n;It!==null;)if(n=It,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,It=e;else for(;It!==null;){switch(n=It,d=n.alternate,e=n.flags,n.tag){case 0:if((e&4)!==0&&(e=n.updateQueue,e=e!==null?e.events:null,e!==null))for(i=0;i title"))),jt(d,o,i),d[At]=e,kt(d),o=d;break e;case"link":var y=xm("link","href",f).get(o+(i.href||""));if(y){for(var _=0;_lt&&(y=lt,lt=Ce,Ce=y);var F=wd(_,Ce),R=wd(_,lt);if(F&&R&&(P.rangeCount!==1||P.anchorNode!==F.node||P.anchorOffset!==F.offset||P.focusNode!==R.node||P.focusOffset!==R.offset)){var z=$.createRange();z.setStart(F.node,F.offset),P.removeAllRanges(),Ce>lt?(P.addRange(z),P.extend(R.node,R.offset)):(z.setEnd(R.node,R.offset),P.addRange(z))}}}}for($=[],P=_;P=P.parentNode;)P.nodeType===1&&$.push({element:P,left:P.scrollLeft,top:P.scrollTop});for(typeof _.focus=="function"&&_.focus(),_=0;_<$.length;_++){var V=$[_];V.element.scrollLeft=V.left,V.element.scrollTop=V.top}}ls=!!Ac,Cc=Ac=null}finally{Qe=f,J.p=o,L.T=i}}e.current=n,zt=2}}function jh(){if(zt===2){zt=0;var e=Ji,n=hr,i=(n.flags&8772)!==0;if((n.subtreeFlags&8772)!==0||i){i=L.T,L.T=null;var o=J.p;J.p=2;var f=Qe;Qe|=4;try{yh(e,n.alternate,n)}finally{Qe=f,J.p=o,L.T=i}}zt=3}}function Yh(){if(zt===4||zt===3){zt=0,za();var e=Ji,n=hr,i=ki,o=Rh;(n.subtreeFlags&10256)!==0||(n.flags&10256)!==0?zt=5:(zt=0,hr=Ji=null,Kh(e,e.pendingLanes));var f=e.pendingLanes;if(f===0&&(Wi=null),fi(i),n=n.stateNode,_t&&typeof _t.onCommitFiberRoot=="function")try{_t.onCommitFiberRoot(Ut,n,void 0,(n.current.flags&128)===128)}catch{}if(o!==null){n=L.T,f=J.p,J.p=2,L.T=null;try{for(var d=e.onRecoverableError,y=0;yi?32:i,L.T=null,i=fc,fc=null;var d=Ji,y=ki;if(zt=0,hr=Ji=null,ki=0,(Qe&6)!==0)throw Error(l(331));var _=Qe;if(Qe|=4,Th(d.current),Ah(d,d.current,y,i),Qe=_,yl(0,!1),_t&&typeof _t.onPostCommitFiberRoot=="function")try{_t.onPostCommitFiberRoot(Ut,d)}catch{}return!0}finally{J.p=f,L.T=o,Kh(e,n)}}function $h(e,n,i){n=On(i,n),n=ju(e.stateNode,n,2),e=Ki(e,n,2),e!==null&&(st(e,2),ri(e))}function it(e,n,i){if(e.tag===3)$h(e,e,i);else for(;n!==null;){if(n.tag===3){$h(n,e,i);break}else if(n.tag===1){var o=n.stateNode;if(typeof n.type.getDerivedStateFromError=="function"||typeof o.componentDidCatch=="function"&&(Wi===null||!Wi.has(o))){e=On(i,e),i=Xp(2),o=Ki(n,i,2),o!==null&&(Zp(i,o,n,e),st(o,2),ri(o));break}}n=n.return}}function mc(e,n,i){var o=e.pingCache;if(o===null){o=e.pingCache=new s0;var f=new Set;o.set(n,f)}else f=o.get(n),f===void 0&&(f=new Set,o.set(n,f));f.has(i)||(oc=!0,f.add(i),e=p0.bind(null,e,n,i),n.then(e,e))}function p0(e,n,i){var o=e.pingCache;o!==null&&o.delete(n),e.pingedLanes|=e.suspendedLanes&i,e.warmLanes&=~i,ut===e&&(Ge&i)===i&&(xt===4||xt===3&&(Ge&62914560)===Ge&&300>Et()-Go?(Qe&2)===0&&mr(e,0):sc|=i,pr===Ge&&(pr=0)),ri(e)}function Xh(e,n){n===0&&(n=ke()),e=Ea(e,n),e!==null&&(st(e,n),ri(e))}function h0(e){var n=e.memoizedState,i=0;n!==null&&(i=n.retryLane),Xh(e,i)}function m0(e,n){var i=0;switch(e.tag){case 31:case 13:var o=e.stateNode,f=e.memoizedState;f!==null&&(i=f.retryLane);break;case 19:o=e.stateNode;break;case 22:o=e.stateNode._retryCache;break;default:throw Error(l(314))}o!==null&&o.delete(n),Xh(e,i)}function g0(e,n){return ci(e,n)}var Xo=null,br=null,gc=!1,Zo=!1,bc=!1,ta=0;function ri(e){e!==br&&e.next===null&&(br===null?Xo=br=e:br=br.next=e),Zo=!0,gc||(gc=!0,y0())}function yl(e,n){if(!bc&&Zo){bc=!0;do for(var i=!1,o=Xo;o!==null;){if(e!==0){var f=o.pendingLanes;if(f===0)var d=0;else{var y=o.suspendedLanes,_=o.pingedLanes;d=(1<<31-Je(42|e)+1)-1,d&=f&~(y&~_),d=d&201326741?d&201326741|1:d?d|2:0}d!==0&&(i=!0,Jh(o,d))}else d=Ge,d=N(o,o===ut?d:0,o.cancelPendingCommit!==null||o.timeoutHandle!==-1),(d&3)===0||K(o,d)||(i=!0,Jh(o,d));o=o.next}while(i);bc=!1}}function b0(){Zh()}function Zh(){Zo=gc=!1;var e=0;ta!==0&&T0()&&(e=ta);for(var n=Et(),i=null,o=Xo;o!==null;){var f=o.next,d=Qh(o,n);d===0?(o.next=null,i===null?Xo=f:i.next=f,f===null&&(br=i)):(i=o,(e!==0||(d&3)!==0)&&(Zo=!0)),o=f}zt!==0&&zt!==5||yl(e),ta!==0&&(ta=0)}function Qh(e,n){for(var i=e.suspendedLanes,o=e.pingedLanes,f=e.expirationTimes,d=e.pendingLanes&-62914561;0_)break;var Y=w.transferSize,$=w.initiatorType;Y&&om($)&&(w=w.responseEnd,y+=Y*(w<_?1:(_-U)/(w-U)))}if(--o,n+=8*(d+y)/(f.duration/1e3),e++,10"u"?null:document;function Em(e,n,i){var o=yr;if(o&&typeof n=="string"&&n){var f=ln(n);f='link[rel="'+e+'"][href="'+f+'"]',typeof i=="string"&&(f+='[crossorigin="'+i+'"]'),ym.has(f)||(ym.add(f),e={rel:e,crossOrigin:i,href:n},o.querySelector(f)===null&&(n=o.createElement("link"),jt(n,"link",e),kt(n),o.head.appendChild(n)))}}function z0(e){Ni.D(e),Em("dns-prefetch",e,null)}function I0(e,n){Ni.C(e,n),Em("preconnect",e,n)}function U0(e,n,i){Ni.L(e,n,i);var o=yr;if(o&&e&&n){var f='link[rel="preload"][as="'+ln(n)+'"]';n==="image"&&i&&i.imageSrcSet?(f+='[imagesrcset="'+ln(i.imageSrcSet)+'"]',typeof i.imageSizes=="string"&&(f+='[imagesizes="'+ln(i.imageSizes)+'"]')):f+='[href="'+ln(e)+'"]';var d=f;switch(n){case"style":d=Er(e);break;case"script":d=vr(e)}In.has(d)||(e=g({rel:"preload",href:n==="image"&&i&&i.imageSrcSet?void 0:e,as:n},i),In.set(d,e),o.querySelector(f)!==null||n==="style"&&o.querySelector(Sl(d))||n==="script"&&o.querySelector(xl(d))||(n=o.createElement("link"),jt(n,"link",e),kt(n),o.head.appendChild(n)))}}function H0(e,n){Ni.m(e,n);var i=yr;if(i&&e){var o=n&&typeof n.as=="string"?n.as:"script",f='link[rel="modulepreload"][as="'+ln(o)+'"][href="'+ln(e)+'"]',d=f;switch(o){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":d=vr(e)}if(!In.has(d)&&(e=g({rel:"modulepreload",href:e},n),In.set(d,e),i.querySelector(f)===null)){switch(o){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(i.querySelector(xl(d)))return}o=i.createElement("link"),jt(o,"link",e),kt(o),i.head.appendChild(o)}}}function P0(e,n,i){Ni.S(e,n,i);var o=yr;if(o&&e){var f=Bi(o).hoistableStyles,d=Er(e);n=n||"default";var y=f.get(d);if(!y){var _={loading:0,preload:null};if(y=o.querySelector(Sl(d)))_.loading=5;else{e=g({rel:"stylesheet",href:e,"data-precedence":n},i),(i=In.get(d))&&Mc(e,i);var w=y=o.createElement("link");kt(w),jt(w,"link",e),w._p=new Promise(function(U,Y){w.onload=U,w.onerror=Y}),w.addEventListener("load",function(){_.loading|=1}),w.addEventListener("error",function(){_.loading|=2}),_.loading|=4,ts(y,n,o)}y={type:"stylesheet",instance:y,count:1,state:_},f.set(d,y)}}}function G0(e,n){Ni.X(e,n);var i=yr;if(i&&e){var o=Bi(i).hoistableScripts,f=vr(e),d=o.get(f);d||(d=i.querySelector(xl(f)),d||(e=g({src:e,async:!0},n),(n=In.get(f))&&Fc(e,n),d=i.createElement("script"),kt(d),jt(d,"link",e),i.head.appendChild(d)),d={type:"script",instance:d,count:1,state:null},o.set(f,d))}}function q0(e,n){Ni.M(e,n);var i=yr;if(i&&e){var o=Bi(i).hoistableScripts,f=vr(e),d=o.get(f);d||(d=i.querySelector(xl(f)),d||(e=g({src:e,async:!0,type:"module"},n),(n=In.get(f))&&Fc(e,n),d=i.createElement("script"),kt(d),jt(d,"link",e),i.head.appendChild(d)),d={type:"script",instance:d,count:1,state:null},o.set(f,d))}}function vm(e,n,i,o){var f=(f=ge.current)?es(f):null;if(!f)throw Error(l(446));switch(e){case"meta":case"title":return null;case"style":return typeof i.precedence=="string"&&typeof i.href=="string"?(n=Er(i.href),i=Bi(f).hoistableStyles,o=i.get(n),o||(o={type:"style",instance:null,count:0,state:null},i.set(n,o)),o):{type:"void",instance:null,count:0,state:null};case"link":if(i.rel==="stylesheet"&&typeof i.href=="string"&&typeof i.precedence=="string"){e=Er(i.href);var d=Bi(f).hoistableStyles,y=d.get(e);if(y||(f=f.ownerDocument||f,y={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},d.set(e,y),(d=f.querySelector(Sl(e)))&&!d._p&&(y.instance=d,y.state.loading=5),In.has(e)||(i={rel:"preload",as:"style",href:i.href,crossOrigin:i.crossOrigin,integrity:i.integrity,media:i.media,hrefLang:i.hrefLang,referrerPolicy:i.referrerPolicy},In.set(e,i),d||j0(f,e,i,y.state))),n&&o===null)throw Error(l(528,""));return y}if(n&&o!==null)throw Error(l(529,""));return null;case"script":return n=i.async,i=i.src,typeof i=="string"&&n&&typeof n!="function"&&typeof n!="symbol"?(n=vr(i),i=Bi(f).hoistableScripts,o=i.get(n),o||(o={type:"script",instance:null,count:0,state:null},i.set(n,o)),o):{type:"void",instance:null,count:0,state:null};default:throw Error(l(444,e))}}function Er(e){return'href="'+ln(e)+'"'}function Sl(e){return'link[rel="stylesheet"]['+e+"]"}function _m(e){return g({},e,{"data-precedence":e.precedence,precedence:null})}function j0(e,n,i,o){e.querySelector('link[rel="preload"][as="style"]['+n+"]")?o.loading=1:(n=e.createElement("link"),o.preload=n,n.addEventListener("load",function(){return o.loading|=1}),n.addEventListener("error",function(){return o.loading|=2}),jt(n,"link",i),kt(n),e.head.appendChild(n))}function vr(e){return'[src="'+ln(e)+'"]'}function xl(e){return"script[async]"+e}function Sm(e,n,i){if(n.count++,n.instance===null)switch(n.type){case"style":var o=e.querySelector('style[data-href~="'+ln(i.href)+'"]');if(o)return n.instance=o,kt(o),o;var f=g({},i,{"data-href":i.href,"data-precedence":i.precedence,href:null,precedence:null});return o=(e.ownerDocument||e).createElement("style"),kt(o),jt(o,"style",f),ts(o,i.precedence,e),n.instance=o;case"stylesheet":f=Er(i.href);var d=e.querySelector(Sl(f));if(d)return n.state.loading|=4,n.instance=d,kt(d),d;o=_m(i),(f=In.get(f))&&Mc(o,f),d=(e.ownerDocument||e).createElement("link"),kt(d);var y=d;return y._p=new Promise(function(_,w){y.onload=_,y.onerror=w}),jt(d,"link",o),n.state.loading|=4,ts(d,i.precedence,e),n.instance=d;case"script":return d=vr(i.src),(f=e.querySelector(xl(d)))?(n.instance=f,kt(f),f):(o=i,(f=In.get(d))&&(o=g({},i),Fc(o,f)),e=e.ownerDocument||e,f=e.createElement("script"),kt(f),jt(f,"link",o),e.head.appendChild(f),n.instance=f);case"void":return null;default:throw Error(l(443,n.type))}else n.type==="stylesheet"&&(n.state.loading&4)===0&&(o=n.instance,n.state.loading|=4,ts(o,i.precedence,e));return n.instance}function ts(e,n,i){for(var o=i.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),f=o.length?o[o.length-1]:null,d=f,y=0;y title"):null)}function Y0(e,n,i){if(i===1||n.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof n.precedence!="string"||typeof n.href!="string"||n.href==="")break;return!0;case"link":if(typeof n.rel!="string"||typeof n.href!="string"||n.href===""||n.onLoad||n.onError)break;switch(n.rel){case"stylesheet":return e=n.disabled,typeof n.precedence=="string"&&e==null;default:return!0}case"script":if(n.async&&typeof n.async!="function"&&typeof n.async!="symbol"&&!n.onLoad&&!n.onError&&n.src&&typeof n.src=="string")return!0}return!1}function Am(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function K0(e,n,i,o){if(i.type==="stylesheet"&&(typeof o.media!="string"||matchMedia(o.media).matches!==!1)&&(i.state.loading&4)===0){if(i.instance===null){var f=Er(o.href),d=n.querySelector(Sl(f));if(d){n=d._p,n!==null&&typeof n=="object"&&typeof n.then=="function"&&(e.count++,e=is.bind(e),n.then(e,e)),i.state.loading|=4,i.instance=d,kt(d);return}d=n.ownerDocument||n,o=_m(o),(f=In.get(f))&&Mc(o,f),d=d.createElement("link"),kt(d);var y=d;y._p=new Promise(function(_,w){y.onload=_,y.onerror=w}),jt(d,"link",o),i.instance=d}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(i,n),(n=i.state.preload)&&(i.state.loading&3)===0&&(e.count++,i=is.bind(e),n.addEventListener("load",i),n.addEventListener("error",i))}}var Lc=0;function V0(e,n){return e.stylesheets&&e.count===0&&rs(e,e.stylesheets),0Lc?50:800)+n);return e.unsuspend=i,function(){e.unsuspend=null,clearTimeout(o),clearTimeout(f)}}:null}function is(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)rs(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var as=null;function rs(e,n){e.stylesheets=null,e.unsuspend!==null&&(e.count++,as=new Map,n.forEach($0,e),as=null,is.call(e))}function $0(e,n){if(!(n.state.loading&4)){var i=as.get(e);if(i)var o=i.get(null);else{i=new Map,as.set(e,i);for(var f=e.querySelectorAll("link[data-precedence],style[data-precedence]"),d=0;d"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(a){console.error(a)}}return t(),jc.exports=fv(),jc.exports}var pv=dv();const hv=Gl(pv);/** + * react-router v7.14.2 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */var Xm="popstate";function Zm(t){return typeof t=="object"&&t!=null&&"pathname"in t&&"search"in t&&"hash"in t&&"state"in t&&"key"in t}function mv(t={}){function a(s,u){let{pathname:c="/",search:p="",hash:m=""}=Fa(s.location.hash.substring(1));return!c.startsWith("/")&&!c.startsWith(".")&&(c="/"+c),yf("",{pathname:c,search:p,hash:m},u.state&&u.state.usr||null,u.state&&u.state.key||"default")}function r(s,u){let c=s.document.querySelector("base"),p="";if(c&&c.getAttribute("href")){let m=s.location.href,h=m.indexOf("#");p=h===-1?m:m.slice(0,h)}return p+"#"+(typeof u=="string"?u:Ul(u))}function l(s,u){Pn(s.pathname.charAt(0)==="/",`relative pathnames are not supported in hash history.push(${JSON.stringify(u)})`)}return bv(a,r,l,t)}function yt(t,a){if(t===!1||t===null||typeof t>"u")throw new Error(a)}function Pn(t,a){if(!t){typeof console<"u"&&console.warn(a);try{throw new Error(a)}catch{}}}function gv(){return Math.random().toString(36).substring(2,10)}function Qm(t,a){return{usr:t.state,key:t.key,idx:a,masked:t.unstable_mask?{pathname:t.pathname,search:t.search,hash:t.hash}:void 0}}function yf(t,a,r=null,l,s){return{pathname:typeof t=="string"?t:t.pathname,search:"",hash:"",...typeof a=="string"?Fa(a):a,state:r,key:a&&a.key||l||gv(),unstable_mask:s}}function Ul({pathname:t="/",search:a="",hash:r=""}){return a&&a!=="?"&&(t+=a.charAt(0)==="?"?a:"?"+a),r&&r!=="#"&&(t+=r.charAt(0)==="#"?r:"#"+r),t}function Fa(t){let a={};if(t){let r=t.indexOf("#");r>=0&&(a.hash=t.substring(r),t=t.substring(0,r));let l=t.indexOf("?");l>=0&&(a.search=t.substring(l),t=t.substring(0,l)),t&&(a.pathname=t)}return a}function bv(t,a,r,l={}){let{window:s=document.defaultView,v5Compat:u=!1}=l,c=s.history,p="POP",m=null,h=b();h==null&&(h=0,c.replaceState({...c.state,idx:h},""));function b(){return(c.state||{idx:null}).idx}function g(){p="POP";let T=b(),D=T==null?null:T-h;h=T,m&&m({action:p,location:C.location,delta:D})}function E(T,D){p="PUSH";let B=Zm(T)?T:yf(C.location,T,D);r&&r(B,T),h=b()+1;let M=Qm(B,h),X=C.createHref(B.unstable_mask||B);try{c.pushState(M,"",X)}catch(W){if(W instanceof DOMException&&W.name==="DataCloneError")throw W;s.location.assign(X)}u&&m&&m({action:p,location:C.location,delta:1})}function v(T,D){p="REPLACE";let B=Zm(T)?T:yf(C.location,T,D);r&&r(B,T),h=b();let M=Qm(B,h),X=C.createHref(B.unstable_mask||B);c.replaceState(M,"",X),u&&m&&m({action:p,location:C.location,delta:0})}function S(T){return yv(T)}let C={get action(){return p},get location(){return t(s,c)},listen(T){if(m)throw new Error("A history only accepts one active listener");return s.addEventListener(Xm,g),m=T,()=>{s.removeEventListener(Xm,g),m=null}},createHref(T){return a(s,T)},createURL:S,encodeLocation(T){let D=S(T);return{pathname:D.pathname,search:D.search,hash:D.hash}},push:E,replace:v,go(T){return c.go(T)}};return C}function yv(t,a=!1){let r="http://localhost";typeof window<"u"&&(r=window.location.origin!=="null"?window.location.origin:window.location.href),yt(r,"No window.location.(origin|href) available to create URL");let l=typeof t=="string"?t:Ul(t);return l=l.replace(/ $/,"%20"),!a&&l.startsWith("//")&&(l=r+l),new URL(l,r)}function sb(t,a,r="/"){return Ev(t,a,r,!1)}function Ev(t,a,r,l){let s=typeof a=="string"?Fa(a):a,u=Ri(s.pathname||"/",r);if(u==null)return null;let c=ub(t);vv(c);let p=null;for(let m=0;p==null&&m{let b={relativePath:h===void 0?c.path||"":h,caseSensitive:c.caseSensitive===!0,childrenIndex:p,route:c};if(b.relativePath.startsWith("/")){if(!b.relativePath.startsWith(l)&&m)return;yt(b.relativePath.startsWith(l),`Absolute route path "${b.relativePath}" nested under path "${l}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),b.relativePath=b.relativePath.slice(l.length)}let g=$n([l,b.relativePath]),E=r.concat(b);c.children&&c.children.length>0&&(yt(c.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${g}".`),ub(c.children,a,E,g,m)),!(c.path==null&&!c.index)&&a.push({path:g,score:wv(g,c.index),routesMeta:E})};return t.forEach((c,p)=>{var m;if(c.path===""||!((m=c.path)!=null&&m.includes("?")))u(c,p);else for(let h of cb(c.path))u(c,p,!0,h)}),a}function cb(t){let a=t.split("/");if(a.length===0)return[];let[r,...l]=a,s=r.endsWith("?"),u=r.replace(/\?$/,"");if(l.length===0)return s?[u,""]:[u];let c=cb(l.join("/")),p=[];return p.push(...c.map(m=>m===""?u:[u,m].join("/"))),s&&p.push(...c),p.map(m=>t.startsWith("/")&&m===""?"/":m)}function vv(t){t.sort((a,r)=>a.score!==r.score?r.score-a.score:Tv(a.routesMeta.map(l=>l.childrenIndex),r.routesMeta.map(l=>l.childrenIndex)))}var _v=/^:[\w-]+$/,Sv=3,xv=2,Dv=1,Av=10,Cv=-2,Wm=t=>t==="*";function wv(t,a){let r=t.split("/"),l=r.length;return r.some(Wm)&&(l+=Cv),a&&(l+=xv),r.filter(s=>!Wm(s)).reduce((s,u)=>s+(_v.test(u)?Sv:u===""?Dv:Av),l)}function Tv(t,a){return t.length===a.length&&t.slice(0,-1).every((l,s)=>l===a[s])?t[t.length-1]-a[a.length-1]:0}function kv(t,a,r=!1){let{routesMeta:l}=t,s={},u="/",c=[];for(let p=0;p{if(b==="*"){let S=p[E]||"";c=u.slice(0,u.length-S.length).replace(/(.)\/+$/,"$1")}const v=p[E];return g&&!v?h[b]=void 0:h[b]=(v||"").replace(/%2F/g,"/"),h},{}),pathname:u,pathnameBase:c,pattern:t}}function Nv(t,a=!1,r=!0){Pn(t==="*"||!t.endsWith("*")||t.endsWith("/*"),`Route path "${t}" will be treated as if it were "${t.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${t.replace(/\*$/,"/*")}".`);let l=[],s="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(c,p,m,h,b)=>{if(l.push({paramName:p,isOptional:m!=null}),m){let g=b.charAt(h+c.length);return g&&g!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}return"/([^\\/]+)"}).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return t.endsWith("*")?(l.push({paramName:"*"}),s+=t==="*"||t==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):r?s+="\\/*$":t!==""&&t!=="/"&&(s+="(?:(?=\\/|$))"),[new RegExp(s,a?void 0:"i"),l]}function Rv(t){try{return t.split("/").map(a=>decodeURIComponent(a).replace(/\//g,"%2F")).join("/")}catch(a){return Pn(!1,`The URL path "${t}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${a}).`),t}}function Ri(t,a){if(a==="/")return t;if(!t.toLowerCase().startsWith(a.toLowerCase()))return null;let r=a.endsWith("/")?a.length-1:a.length,l=t.charAt(r);return l&&l!=="/"?null:t.slice(r)||"/"}var Ov=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function Mv(t,a="/"){let{pathname:r,search:l="",hash:s=""}=typeof t=="string"?Fa(t):t,u;return r?(r=fb(r),r.startsWith("/")?u=Jm(r.substring(1),"/"):u=Jm(r,a)):u=a,{pathname:u,search:Bv(l),hash:zv(s)}}function Jm(t,a){let r=ws(a).split("/");return t.split("/").forEach(s=>{s===".."?r.length>1&&r.pop():s!=="."&&r.push(s)}),r.length>1?r.join("/"):"/"}function $c(t,a,r,l){return`Cannot include a '${t}' character in a manually specified \`to.${a}\` field [${JSON.stringify(l)}]. Please separate it out to the \`to.${r}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function Fv(t){return t.filter((a,r)=>r===0||a.route.path&&a.route.path.length>0)}function Lf(t){let a=Fv(t);return a.map((r,l)=>l===a.length-1?r.pathname:r.pathnameBase)}function Fs(t,a,r,l=!1){let s;typeof t=="string"?s=Fa(t):(s={...t},yt(!s.pathname||!s.pathname.includes("?"),$c("?","pathname","search",s)),yt(!s.pathname||!s.pathname.includes("#"),$c("#","pathname","hash",s)),yt(!s.search||!s.search.includes("#"),$c("#","search","hash",s)));let u=t===""||s.pathname==="",c=u?"/":s.pathname,p;if(c==null)p=r;else{let g=a.length-1;if(!l&&c.startsWith("..")){let E=c.split("/");for(;E[0]==="..";)E.shift(),g-=1;s.pathname=E.join("/")}p=g>=0?a[g]:"/"}let m=Mv(s,p),h=c&&c!=="/"&&c.endsWith("/"),b=(u||c===".")&&r.endsWith("/");return!m.pathname.endsWith("/")&&(h||b)&&(m.pathname+="/"),m}var fb=t=>t.replace(/\/\/+/g,"/"),$n=t=>fb(t.join("/")),ws=t=>t.replace(/\/+$/,""),Lv=t=>ws(t).replace(/^\/*/,"/"),Bv=t=>!t||t==="?"?"":t.startsWith("?")?t:"?"+t,zv=t=>!t||t==="#"?"":t.startsWith("#")?t:"#"+t,Iv=class{constructor(t,a,r,l=!1){this.status=t,this.statusText=a||"",this.internal=l,r instanceof Error?(this.data=r.toString(),this.error=r):this.data=r}};function Uv(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}function Hv(t){let a=t.map(r=>r.route.path).filter(Boolean);return $n(a)||"/"}var db=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function pb(t,a){let r=t;if(typeof r!="string"||!Ov.test(r))return{absoluteURL:void 0,isExternal:!1,to:r};let l=r,s=!1;if(db)try{let u=new URL(window.location.href),c=r.startsWith("//")?new URL(u.protocol+r):new URL(r),p=Ri(c.pathname,a);c.origin===u.origin&&p!=null?r=p+c.search+c.hash:s=!0}catch{Pn(!1,` contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:l,isExternal:s,to:r}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var hb=["POST","PUT","PATCH","DELETE"];new Set(hb);var Pv=["GET",...hb];new Set(Pv);var Nr=q.createContext(null);Nr.displayName="DataRouter";var Ls=q.createContext(null);Ls.displayName="DataRouterState";var mb=q.createContext(!1);function Gv(){return q.useContext(mb)}var gb=q.createContext({isTransitioning:!1});gb.displayName="ViewTransition";var qv=q.createContext(new Map);qv.displayName="Fetchers";var jv=q.createContext(null);jv.displayName="Await";var Tn=q.createContext(null);Tn.displayName="Navigation";var ql=q.createContext(null);ql.displayName="Location";var Gn=q.createContext({outlet:null,matches:[],isDataRoute:!1});Gn.displayName="Route";var Bf=q.createContext(null);Bf.displayName="RouteError";var bb="REACT_ROUTER_ERROR",Yv="REDIRECT",Kv="ROUTE_ERROR_RESPONSE";function Vv(t){if(t.startsWith(`${bb}:${Yv}:{`))try{let a=JSON.parse(t.slice(28));if(typeof a=="object"&&a&&typeof a.status=="number"&&typeof a.statusText=="string"&&typeof a.location=="string"&&typeof a.reloadDocument=="boolean"&&typeof a.replace=="boolean")return a}catch{}}function $v(t){if(t.startsWith(`${bb}:${Kv}:{`))try{let a=JSON.parse(t.slice(40));if(typeof a=="object"&&a&&typeof a.status=="number"&&typeof a.statusText=="string")return new Iv(a.status,a.statusText,a.data)}catch{}}function Xv(t,{relative:a}={}){yt(Rr(),"useHref() may be used only in the context of a component.");let{basename:r,navigator:l}=q.useContext(Tn),{hash:s,pathname:u,search:c}=jl(t,{relative:a}),p=u;return r!=="/"&&(p=u==="/"?r:$n([r,u])),l.createHref({pathname:p,search:c,hash:s})}function Rr(){return q.useContext(ql)!=null}function Qn(){return yt(Rr(),"useLocation() may be used only in the context of a component."),q.useContext(ql).location}var yb="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Eb(t){q.useContext(Tn).static||q.useLayoutEffect(t)}function zf(){let{isDataRoute:t}=q.useContext(Gn);return t?f_():Zv()}function Zv(){yt(Rr(),"useNavigate() may be used only in the context of a component.");let t=q.useContext(Nr),{basename:a,navigator:r}=q.useContext(Tn),{matches:l}=q.useContext(Gn),{pathname:s}=Qn(),u=JSON.stringify(Lf(l)),c=q.useRef(!1);return Eb(()=>{c.current=!0}),q.useCallback((m,h={})=>{if(Pn(c.current,yb),!c.current)return;if(typeof m=="number"){r.go(m);return}let b=Fs(m,JSON.parse(u),s,h.relative==="path");t==null&&a!=="/"&&(b.pathname=b.pathname==="/"?a:$n([a,b.pathname])),(h.replace?r.replace:r.push)(b,h.state,h)},[a,r,u,s,t])}var Qv=q.createContext(null);function Wv(t){let a=q.useContext(Gn).outlet;return q.useMemo(()=>a&&q.createElement(Qv.Provider,{value:t},a),[a,t])}function Jv(){let{matches:t}=q.useContext(Gn),a=t[t.length-1];return(a==null?void 0:a.params)??{}}function jl(t,{relative:a}={}){let{matches:r}=q.useContext(Gn),{pathname:l}=Qn(),s=JSON.stringify(Lf(r));return q.useMemo(()=>Fs(t,JSON.parse(s),l,a==="path"),[t,s,l,a])}function e_(t,a){return vb(t,a)}function vb(t,a,r){var T;yt(Rr(),"useRoutes() may be used only in the context of a component.");let{navigator:l}=q.useContext(Tn),{matches:s}=q.useContext(Gn),u=s[s.length-1],c=u?u.params:{},p=u?u.pathname:"/",m=u?u.pathnameBase:"/",h=u&&u.route;{let D=h&&h.path||"";Sb(p,!h||D.endsWith("*")||D.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${p}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. + +Please change the parent to .`)}let b=Qn(),g;if(a){let D=typeof a=="string"?Fa(a):a;yt(m==="/"||((T=D.pathname)==null?void 0:T.startsWith(m)),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${m}" but pathname "${D.pathname}" was given in the \`location\` prop.`),g=D}else g=b;let E=g.pathname||"/",v=E;if(m!=="/"){let D=m.replace(/^\//,"").split("/");v="/"+E.replace(/^\//,"").split("/").slice(D.length).join("/")}let S=sb(t,{pathname:v});Pn(h||S!=null,`No routes matched location "${g.pathname}${g.search}${g.hash}" `),Pn(S==null||S[S.length-1].route.element!==void 0||S[S.length-1].route.Component!==void 0||S[S.length-1].route.lazy!==void 0,`Matched leaf route at location "${g.pathname}${g.search}${g.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let C=r_(S&&S.map(D=>Object.assign({},D,{params:Object.assign({},c,D.params),pathname:$n([m,l.encodeLocation?l.encodeLocation(D.pathname.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:D.pathname]),pathnameBase:D.pathnameBase==="/"?m:$n([m,l.encodeLocation?l.encodeLocation(D.pathnameBase.replace(/%/g,"%25").replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:D.pathnameBase])})),s,r);return a&&C?q.createElement(ql.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",unstable_mask:void 0,...g},navigationType:"POP"}},C):C}function t_(){let t=c_(),a=Uv(t)?`${t.status} ${t.statusText}`:t instanceof Error?t.message:JSON.stringify(t),r=t instanceof Error?t.stack:null,l="rgba(200,200,200, 0.5)",s={padding:"0.5rem",backgroundColor:l},u={padding:"2px 4px",backgroundColor:l},c=null;return console.error("Error handled by React Router default ErrorBoundary:",t),c=q.createElement(q.Fragment,null,q.createElement("p",null,"💿 Hey developer 👋"),q.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",q.createElement("code",{style:u},"ErrorBoundary")," or"," ",q.createElement("code",{style:u},"errorElement")," prop on your route.")),q.createElement(q.Fragment,null,q.createElement("h2",null,"Unexpected Application Error!"),q.createElement("h3",{style:{fontStyle:"italic"}},a),r?q.createElement("pre",{style:s},r):null,c)}var n_=q.createElement(t_,null),_b=class extends q.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,a){return a.location!==t.location||a.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:a.error,location:a.location,revalidation:t.revalidation||a.revalidation}}componentDidCatch(t,a){this.props.onError?this.props.onError(t,a):console.error("React Router caught the following error during render",t)}render(){let t=this.state.error;if(this.context&&typeof t=="object"&&t&&"digest"in t&&typeof t.digest=="string"){const r=$v(t.digest);r&&(t=r)}let a=t!==void 0?q.createElement(Gn.Provider,{value:this.props.routeContext},q.createElement(Bf.Provider,{value:t,children:this.props.component})):this.props.children;return this.context?q.createElement(i_,{error:t},a):a}};_b.contextType=mb;var Xc=new WeakMap;function i_({children:t,error:a}){let{basename:r}=q.useContext(Tn);if(typeof a=="object"&&a&&"digest"in a&&typeof a.digest=="string"){let l=Vv(a.digest);if(l){let s=Xc.get(a);if(s)throw s;let u=pb(l.location,r);if(db&&!Xc.get(a))if(u.isExternal||l.reloadDocument)window.location.href=u.absoluteURL||u.to;else{const c=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(u.to,{replace:l.replace}));throw Xc.set(a,c),c}return q.createElement("meta",{httpEquiv:"refresh",content:`0;url=${u.absoluteURL||u.to}`})}}return t}function a_({routeContext:t,match:a,children:r}){let l=q.useContext(Nr);return l&&l.static&&l.staticContext&&(a.route.errorElement||a.route.ErrorBoundary)&&(l.staticContext._deepestRenderedBoundaryId=a.route.id),q.createElement(Gn.Provider,{value:t},r)}function r_(t,a=[],r){let l=r==null?void 0:r.state;if(t==null){if(!l)return null;if(l.errors)t=l.matches;else if(a.length===0&&!l.initialized&&l.matches.length>0)t=l.matches;else return null}let s=t,u=l==null?void 0:l.errors;if(u!=null){let b=s.findIndex(g=>g.route.id&&(u==null?void 0:u[g.route.id])!==void 0);yt(b>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(u).join(",")}`),s=s.slice(0,Math.min(s.length,b+1))}let c=!1,p=-1;if(r&&l){c=l.renderFallback;for(let b=0;b=0?s=s.slice(0,p+1):s=[s[0]];break}}}}let m=r==null?void 0:r.onError,h=l&&m?(b,g)=>{var E,v;m(b,{location:l.location,params:((v=(E=l.matches)==null?void 0:E[0])==null?void 0:v.params)??{},unstable_pattern:Hv(l.matches),errorInfo:g})}:void 0;return s.reduceRight((b,g,E)=>{let v,S=!1,C=null,T=null;l&&(v=u&&g.route.id?u[g.route.id]:void 0,C=g.route.errorElement||n_,c&&(p<0&&E===0?(Sb("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),S=!0,T=null):p===E&&(S=!0,T=g.route.hydrateFallbackElement||null)));let D=a.concat(s.slice(0,E+1)),B=()=>{let M;return v?M=C:S?M=T:g.route.Component?M=q.createElement(g.route.Component,null):g.route.element?M=g.route.element:M=b,q.createElement(a_,{match:g,routeContext:{outlet:b,matches:D,isDataRoute:l!=null},children:M})};return l&&(g.route.ErrorBoundary||g.route.errorElement||E===0)?q.createElement(_b,{location:l.location,revalidation:l.revalidation,component:C,error:v,children:B(),routeContext:{outlet:null,matches:D,isDataRoute:!0},onError:h}):B()},null)}function If(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function l_(t){let a=q.useContext(Nr);return yt(a,If(t)),a}function o_(t){let a=q.useContext(Ls);return yt(a,If(t)),a}function s_(t){let a=q.useContext(Gn);return yt(a,If(t)),a}function Uf(t){let a=s_(t),r=a.matches[a.matches.length-1];return yt(r.route.id,`${t} can only be used on routes that contain a unique "id"`),r.route.id}function u_(){return Uf("useRouteId")}function c_(){var l;let t=q.useContext(Bf),a=o_("useRouteError"),r=Uf("useRouteError");return t!==void 0?t:(l=a.errors)==null?void 0:l[r]}function f_(){let{router:t}=l_("useNavigate"),a=Uf("useNavigate"),r=q.useRef(!1);return Eb(()=>{r.current=!0}),q.useCallback(async(s,u={})=>{Pn(r.current,yb),r.current&&(typeof s=="number"?await t.navigate(s):await t.navigate(s,{fromRouteId:a,...u}))},[t,a])}var eg={};function Sb(t,a,r){!a&&!eg[t]&&(eg[t]=!0,Pn(!1,r))}q.memo(d_);function d_({routes:t,future:a,state:r,isStatic:l,onError:s}){return vb(t,void 0,{state:r,isStatic:l,onError:s})}function xb({to:t,replace:a,state:r,relative:l}){yt(Rr()," may be used only in the context of a component.");let{static:s}=q.useContext(Tn);Pn(!s," must not be used on the initial render in a . This is a no-op, but you should modify your code so the is only ever rendered in response to some user interaction or state change.");let{matches:u}=q.useContext(Gn),{pathname:c}=Qn(),p=zf(),m=Fs(t,Lf(u),c,l==="path"),h=JSON.stringify(m);return q.useEffect(()=>{p(JSON.parse(h),{replace:a,state:r,relative:l})},[p,h,l,a,r]),null}function p_(t){return Wv(t.context)}function Dr(t){yt(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function h_({basename:t="/",children:a=null,location:r,navigationType:l="POP",navigator:s,static:u=!1,unstable_useTransitions:c}){yt(!Rr(),"You cannot render a inside another . You should never have more than one in your app.");let p=t.replace(/^\/*/,"/"),m=q.useMemo(()=>({basename:p,navigator:s,static:u,unstable_useTransitions:c,future:{}}),[p,s,u,c]);typeof r=="string"&&(r=Fa(r));let{pathname:h="/",search:b="",hash:g="",state:E=null,key:v="default",unstable_mask:S}=r,C=q.useMemo(()=>{let T=Ri(h,p);return T==null?null:{location:{pathname:T,search:b,hash:g,state:E,key:v,unstable_mask:S},navigationType:l}},[p,h,b,g,E,v,l,S]);return Pn(C!=null,` is not able to match the URL "${h}${b}${g}" because it does not start with the basename, so the won't render anything.`),C==null?null:q.createElement(Tn.Provider,{value:m},q.createElement(ql.Provider,{children:a,value:C}))}function m_({children:t,location:a}){return e_(Ef(t),a)}function Ef(t,a=[]){let r=[];return q.Children.forEach(t,(l,s)=>{if(!q.isValidElement(l))return;let u=[...a,s];if(l.type===q.Fragment){r.push.apply(r,Ef(l.props.children,u));return}yt(l.type===Dr,`[${typeof l.type=="string"?l.type:l.type.name}] is not a component. All component children of must be a or `),yt(!l.props.index||!l.props.children,"An index route cannot have child routes.");let c={id:l.props.id||u.join("-"),caseSensitive:l.props.caseSensitive,element:l.props.element,Component:l.props.Component,index:l.props.index,path:l.props.path,middleware:l.props.middleware,loader:l.props.loader,action:l.props.action,hydrateFallbackElement:l.props.hydrateFallbackElement,HydrateFallback:l.props.HydrateFallback,errorElement:l.props.errorElement,ErrorBoundary:l.props.ErrorBoundary,hasErrorBoundary:l.props.hasErrorBoundary===!0||l.props.ErrorBoundary!=null||l.props.errorElement!=null,shouldRevalidate:l.props.shouldRevalidate,handle:l.props.handle,lazy:l.props.lazy};l.props.children&&(c.children=Ef(l.props.children,u)),r.push(c)}),r}var xs="get",Ds="application/x-www-form-urlencoded";function Bs(t){return typeof HTMLElement<"u"&&t instanceof HTMLElement}function g_(t){return Bs(t)&&t.tagName.toLowerCase()==="button"}function b_(t){return Bs(t)&&t.tagName.toLowerCase()==="form"}function y_(t){return Bs(t)&&t.tagName.toLowerCase()==="input"}function E_(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function v_(t,a){return t.button===0&&(!a||a==="_self")&&!E_(t)}var ps=null;function __(){if(ps===null)try{new FormData(document.createElement("form"),0),ps=!1}catch{ps=!0}return ps}var S_=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Zc(t){return t!=null&&!S_.has(t)?(Pn(!1,`"${t}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${Ds}"`),null):t}function x_(t,a){let r,l,s,u,c;if(b_(t)){let p=t.getAttribute("action");l=p?Ri(p,a):null,r=t.getAttribute("method")||xs,s=Zc(t.getAttribute("enctype"))||Ds,u=new FormData(t)}else if(g_(t)||y_(t)&&(t.type==="submit"||t.type==="image")){let p=t.form;if(p==null)throw new Error('Cannot submit a