@@ -148,66 +154,57 @@ import { SWITCHER_LANGUAGES, loadLocale, saveLocale, getLanguage } from '@map/la
// exist in this SPA are OMITTED (never paint a dead nav row — nav.js's own navForTarget prunes empty
// groups the same way). `folder:true` (Experimental) renders collapsible, starting closed.
const NAV_MODEL = [
- // ── NOTE: there is deliberately NO separate "Dashboards" section. The ONE dashboard (the Driver's
- // ruling: "we don't need multiple dashboards") is `dashboard-plus-grid` — the coupled
- // research-dashboard + people-groups-grid on a single scroll-page, what the Driver calls the Big
- // Picture. It is the FIRST row of Prayer Mobilization below, which makes it tab-1/the landing
- // surface AND the opening step of the onboarding ramp.
+ // ── THREE SECTIONS, PER THE SPEC (2026-09-22 audio, transcribed to
+ // _qa-cycle/01-ideation-research/SPEC-the-six-map-product-and-its-tab-order.md — that file is
+ // AUTHORITATIVE; this comment explains how the code satisfies it, not the ruling itself).
//
- // WHY IT IS NOT ALSO ITS OWN SECTION: it used to be, and that is exactly what painted "Big
- // Picture" TWICE in the rail (a one-row "Dashboards" section whose single row was re-declared as
- // the ramp's step 1). Two rows sharing one tab id is not merely cosmetic — the layout keys its
- // tab-ref map and its `active` class BY ID, so both copies highlight at once and keyboard nav
- // stalls on the repeated key. One section owning the row fixes all of that and matches the
- // Driver's stated order (Big Picture → UPG-100 → Prayer Progress → Gospel Resources → Research).
+ // Driver, verbatim: "in one of the earlier messages i mentioned i wanted 3 tab sections. one
+ // called dashboards, one called prayer mobilization, one called gospel research. with two maps
+ // inside of each of them."
//
- // Prayer Mobilization FIRST among the map sections (the prayer map is the mobilisation landing).
- //
- // ORDER IS THE DRIVER'S, AND THE ORDER IS THE TEACHING. Big Picture → UPG-100 List → Prayer
- // Progress → Gospel Resources. The non-obvious step is UPG-100 BEFORE the prayer map, and his
- // rationale is worth preserving verbatim: "if you're trying to mobilize prayer, UPG-100 list
- // probably comes first because it's a NEW thing to people — you want them introduced to it
- // first." i.e. the rail is an ONBOARDING RAMP, not an inventory: show the big picture, hand the
- // newcomer the concrete new artifact (the 100 list), THEN ask them to pray it, then give them
- // the resources to act. Re-sorting these rows by any other logic (alphabetical, "maps first",
- // most-used) silently breaks that ramp — so do not reorder without the Driver.
- // ★ DESKTOP vs MOBILE — `onlyWhen` gates a row on viewport width (Driver 2026-09-22, verbatim).
- // DESKTOP: Big Picture Dashboard opens by default, then UPG-100, Prayer Progress, Gospel
- // Resources, Cities & Internet, then Research Map under Research.
- // MOBILE: "starts with the Research Map, then UPG-100 List, Prayer Progress, Gospel Resources,
- // Cities & Internet — and the Big Picture Dashboard does NOT appear on mobile at all."
- // So the ramp's FIRST rung swaps: the desktop rung is the dashboard composite, the mobile rung is
- // the research-map composite. Everything below rung 1 is IDENTICAL on both, which is why only the
- // first two rows carry `onlyWhen` — do not sprinkle it further without the Driver.
- //
- // WHY A ROW-LEVEL FLAG rather than two NAV_MODELs: one model keeps the teaching order in ONE place.
- // Two parallel models would be two things to keep in sync, and the failure would be silent (a row
- // added to one and forgotten in the other simply never appears on that form factor).
+ // A PRIOR CUT REMOVED DASHBOARDS ENTIRELY (see git history / the spec's "duplicate-key trap"),
+ // because Big Picture had been declared TWICE — once as a one-row Dashboards section and once as
+ // Prayer Mobilization's first rung — and VerticalTabsLayout keys its tab-ref map and `active`
+ // highlight BY ID, so two rows sharing one id painted both active at once and stalled keyboard
+ // nav. That was a REGRESSION, not a fix for the underlying constraint. The constraint (no id
+ // painted twice) is real and still enforced (see dedupeRows + the assertNoDuplicateTabKeys
+ // dev-time gate below); the fix is that Dashboards now owns TWO DISTINCT rows of its own — Big
+ // Picture never appears in Prayer Mobilization again — so it is not a one-row section that begs
+ // to be folded away.
+ { key: 'dashboards', label: 'Dashboards', icon: 'chart',
+ tabs: [
+ // 1. Big Picture — desktop default. Present on EVERY width (the device rule is "same tab
+ // order everywhere"), but DISABLED on mobile rather than hidden — see isBigPictureDisabled /
+ // onSelect's intercept and the `disabled`-row note above navGroups. Clicking it on mobile
+ // shows a message instead of switching; it never disappears from the rail.
+ { id: 'dashboard-plus-grid', icon: 'chart' },
+ // 2. Simple Research — mobile default; RENAMED from "Research Map" and RECATEGORISED here as a
+ // dashboard (it used to live as Prayer Mobilization's mobile-only rung 1). It is the research
+ // map + People Groups grid composite — "the mobile dashboard" per the spec — and it stays
+ // reachable on desktop too, as the second dashboard row.
+ { id: 'research-map-plus-grid', icon: 'map' },
+ ] },
+ // Prayer Mobilization — now TWO rows only: the onboarding ramp's steps 2 and 3. Big Picture (former
+ // step 1) moved to Dashboards above; Gospel Resources (former step 4) moved to Gospel Research below
+ // per the spec's table. UPG-100 BEFORE Prayer Progress is still the Driver's deliberate order —
+ // "if you're trying to mobilize prayer, UPG-100 list probably comes first because it's a NEW thing
+ // to people — you want them introduced to it first" — hand the newcomer the concrete new artifact,
+ // THEN ask them to pray it.
{ key: 'prayer-mobilization', label: 'Prayer Mobilization', icon: 'heart',
tabs: [
- // 1a. DESKTOP rung 1 — Big Picture. Omitted entirely on mobile, per the Driver.
- { id: 'dashboard-plus-grid', icon: 'chart', onlyWhen: 'desktop' },
- // 1b. MOBILE rung 1 — the research map + grid composite opens the app instead.
- { id: 'research-map-plus-grid', icon: 'map', onlyWhen: 'mobile' },
- { id: 'upg-100', icon: 'list' }, // 2. UPG-100 List — the NEW thing, introduced early
- { id: 'prayer-map', icon: 'embed' }, // 3. Prayer Progress — now pray the list
- { id: 'gospel-resources', icon: 'book' }, // 4. Gospel Resources — then act
+ { id: 'upg-100', icon: 'list' }, // 1. UPG-100 List — the NEW thing, introduced first
+ { id: 'prayer-map', icon: 'embed' }, // 2. Prayer Progress — now pray the list
] },
- // Research — a peer section (nav.js: "a section to the same degree as Laborer"). The Driver's
- // order: Cities & Internet FIRST, then Gospel Resources, then the simple research app at the
- // bottom.
- //
- // ★ Gospel Resources is DECLARED here as well as in the prayer ramp above, on purpose — it is the
- // "then act" step of that ramp AND a research surface in its own right. It is declared twice but
- // RENDERED ONCE: dedupeRows() (see below) gives the FIRST declaration the row and drops this
- // later one, so the rail holds exactly one node per tab id. Leaving the declaration here is not
- // dead weight — it documents the intent, and if the prayer section is ever re-cut this section
- // inherits the row automatically.
- { key: 'research', label: 'Research', icon: 'search',
+ // Gospel Research — RENAMED section (was "Research"). Cities with Internet then Gospel Resources,
+ // per the spec's table (rows 5-6). The plain, uncomposited "Research Map" tab (doxa-research-map)
+ // is no longer one of the six curated tabs — its research-map+grid composite now IS Dashboards row
+ // 2 (Simple Research) — so the standalone map is left OUT of every curated section and falls
+ // through to Experimental automatically (see curatedBundles/experimentalTabsFromManifest); that is
+ // correct, not an omission.
+ { key: 'gospel-research', label: 'Gospel Research', icon: 'search',
tabs: [
- { id: 'cities-internet', icon: 'wifi' },
- { id: 'gospel-resources', icon: 'book' },
- { id: 'research-map', icon: 'map' }, // the simple research app, at the bottom
+ { id: 'cities-internet', icon: 'wifi' }, // renamed label: "Cities with Internet"
+ { id: 'gospel-resources', icon: 'book' },
] },
// Experimental — a collapsible FOLDER at the bottom (nav.js: kind 'folder', open:false). Starts
// CLOSED; click the heading to open.
@@ -283,16 +280,22 @@ const TAB_DEFS = [
bundle: 'doxa-research-map', profile: 'research-map'
},
{
- // THE MOBILE COUNTERPART OF 'dashboard-plus-grid'. Driver 2026-09-22, having reversed an earlier
- // idea: "We made the wrong choice of saying that we should swap elements based on mobile and
- // desktop... It'd be easier just to have two separate capability-4 plugins." So there are two
- // cap-4 composites, neither aware of the other, and THIS SHELL picks between them by width —
- // which is what `onlyWhen` below expresses. Both stay independently embeddable, which a
- // self-swapping element could not be (an embedder at a fixed size could never ask for one).
+ // RENAMED (spec): "Research Map" → "Simple Research", and RECATEGORISED as a Dashboards row (the
+ // mobile-default dashboard). Driver 2026-09-22, having reversed an earlier idea: "We made the
+ // wrong choice of saying that we should swap elements based on mobile and desktop... It'd be
+ // easier just to have two separate capability-4 plugins." So there are two cap-4 composites,
+ // neither aware of the other — this one and 'dashboard-plus-grid' above — and the shell decides
+ // which is AUTO-SELECTED by width (see firstVisibleIndex/isBigPictureDisabled), never which is
+ // SHOWN: per the device rule both rows are always in the rail. Both composites stay independently
+ // embeddable, which a self-swapping element could not be (an embedder at a fixed size could never
+ // ask for one).
+ //
+ // NOTE the `id` stays 'research-map-plus-grid': the id is the stable join key between NAV_MODEL
+ // and TAB_DEFS, so only the human-facing LABEL/sub change on a rename — never the id.
//
// Same cap-4 tier as its desktop sibling: research-map-plus-grid.meta.json declares
// {"type":"nested-elements-mfe"}, verified against the built manifest.
- id: 'research-map-plus-grid', label: 'Research Map', sub: 'research map + people-groups grid', emoji: '🗺️',
+ id: 'research-map-plus-grid', label: 'Simple Research', sub: 'research map + people-groups grid', emoji: '🗺️',
bundle: 'research-map-plus-grid', profile: 'research-map-plus-grid'
},
{
@@ -310,7 +313,9 @@ const TAB_DEFS = [
bundle: 'doxa-simple-map', profile: 'doxa-simple-map', instance: 'prayer'
},
{
- id: 'cities-internet', label: 'Cities & Internet', sub: 'connectivity of key cities', emoji: '📡',
+ // RENAMED (spec): "Cities & Internet" → "Cities with Internet" — the Gospel Research section's
+ // first row. NOTE the `id` stays 'cities-internet' for the same stable-join-key reason as above.
+ id: 'cities-internet', label: 'Cities with Internet', sub: 'connectivity of key cities', emoji: '📡',
bundle: 'cities-internet', profile: 'connectivity-map'
},
{
@@ -327,6 +332,11 @@ const TAB_DEFS = [
// zero edits to this file.
]
+// THE SPEC'S REQUIRED GATE, run once at module load — see assertNoDuplicateTabKeys below for why this
+// exists as a LOUD check on top of dedupeRows' silent runtime safety net. `function` declarations
+// hoist, so this call is valid even though the function body is defined later in the file.
+assertNoDuplicateTabKeys(NAV_MODEL)
+
// MAP ELEMENTS — the rows this shell DESTROYS on deactivate rather than hiding.
//
// ★ THIS IS A WebGL CONTEXT BUDGET, NOT A STYLE CHOICE. The browser allows ~8-16 live WebGL contexts.
@@ -421,6 +431,40 @@ function dedupeRows(rows, seen) {
return out
}
+/**
+ * THE SPEC'S REQUIRED GATE — "any implementation must assert that no tab key appears twice across
+ * all sections" (SPEC-the-six-map-product-and-its-tab-order.md, "the duplicate-key trap"). dedupeRows
+ * above is the RUNTIME safety net (silently keeps the first declaration, so a duplicate can never
+ * stall the rail); this is the LOUD check that a duplicate should not exist among the CURATED
+ * sections in the first place — the previous regression happened because nobody had this and a
+ * silent safety net alone does not stop a duplicate from being written again by a future edit.
+ *
+ * Runs once at module load (see the call below NAV_MODEL/TAB_DEFS), so a duplicate is a build/dev-
+ * console error the moment the file is edited wrong, not something only Playwright would catch.
+ * Never throws in production: a duplicate is a code defect to fix, not a reason to take the whole
+ * SPA down for a live user, so this reports loudly and returns rather than throwing.
+ */
+function assertNoDuplicateTabKeys(navModel) {
+ const seen = new Map() // id -> section key that first claimed it
+ const dupes = []
+ for (const g of navModel) {
+ if (g.key === 'experimental') continue // the catch-all is generic by construction; nothing to assert
+ for (const r of g.tabs || []) {
+ if (!r || !r.id) continue
+ const first = seen.get(r.id)
+ if (first === undefined) { seen.set(r.id, g.key); continue }
+ if (first !== g.key || dupes.indexOf(r.id) === -1) dupes.push(r.id + ' (' + first + ' + ' + g.key + ')')
+ }
+ }
+ if (dupes.length && typeof console !== 'undefined') {
+ console.error('[doxa-maps-spa] duplicate tab key(s) across NAV_MODEL sections: ' + dupes.join(', ') +
+ ' — VerticalTabsLayout keys its tab-ref map and `active` highlight by id, so a row declared in ' +
+ 'two sections paints twice and stalls keyboard nav. See the duplicate-key trap in ' +
+ 'SPEC-the-six-map-product-and-its-tab-order.md.')
+ }
+ return dupes
+}
+
// Turn a bundle id into a human label: "all-people-groups" → "All People Groups". Small, local and
// dependency-free; a bundle may override it by shipping a profile `title` in the manifest.
function titleize(id) {
@@ -627,14 +671,18 @@ export default defineComponent({
// inherits its language from the parent via the `language` prop") can never drift: see
// showLocaleSwitcher. A future host that wants the SPA's own chrome flips this to true.
showHeader: false,
- // ★ VIEWPORT WIDTH AS REACTIVE STATE, for the desktop/mobile tab swap (see NAV_MODEL onlyWhen).
+ // ★ VIEWPORT WIDTH AS REACTIVE STATE, for the device rule (default row + Big Picture disable).
// 760px is THE SAME BREAKPOINT library/layouts/VerticalTabsLayout.vue uses for its rail/drawer
// switch. The layout keeps its own `narrow` flag PRIVATE (it emits only update:active), so the
// shell cannot read it and must watch the same query itself. That duplicates a CONSTANT, not
// logic — but if either side ever moves, move BOTH: a shell that thinks it is on desktop while
- // the rail has become a drawer would show the Big Picture row inside a mobile drawer, which is
+ // the rail has become a drawer would leave Big Picture enabled inside a mobile drawer, which is
// precisely what the Driver asked to never happen.
narrow: false, _mql: null, _onMedia: null,
+ // The transient "desktop only" message shown when Big Picture is clicked while disabled (see
+ // onSelect's intercept). '' renders nothing; _noticeTimer clears any earlier message's timeout
+ // so two quick clicks don't fight over when it disappears.
+ disabledNotice: '', _noticeTimer: null,
// i18n locale switcher (reuses app-wrapper-material/languages.js — persisted, offline, no dep).
locale: loadLocale(),
localeOpen: false,
@@ -676,6 +724,13 @@ export default defineComponent({
// which onSelect maps back to the tab index the mount machinery uses — so the sections are pure
// presentation, the mount path is unchanged. Rows whose tab id has no matching TAB_DEF are
// dropped, and a group with no surviving rows is omitted (never paint a dead section/row).
+ //
+ // ★ THE DEVICE RULE, PER THE SPEC — "it shouldn't change the tab order, it should open you up to
+ // the 2nd tab by default on mobile and disable the 1st tab." That is why there is NO width
+ // filter on rows here any more (the old `onlyWhen:'desktop'|'mobile'` hide-a-row mechanism is
+ // gone — every row is in the rail on every width, same order, always). The ONLY width-driven
+ // thing left is which row is DISABLED (Big Picture, on mobile — see isBigPictureDisabled) and
+ // which row auto-opens (see firstVisibleIndex) — both presentation, neither touches NAV_MODEL.
navGroups() {
const byId = Object.fromEntries(this.tabs.map(t => [t.id, t]))
// ONE `seen` set threaded across ALL groups (not per-group): the rail must hold one node per tab
@@ -687,15 +742,20 @@ export default defineComponent({
.map(g => {
let rows = dedupeRows(
(g.tabs || [])
- // ★ WIDTH GATE FIRST, before the tab-exists filter. A row may declare
- // onlyWhen:'desktop'|'mobile'; anything else (the common case, no flag) shows on both.
- // Applied here rather than in `tabs` so the underlying TAB_DEFS/mount machinery is
- // untouched — the swap is PURE PRESENTATION, exactly like the sections themselves.
- .filter(r => !r.onlyWhen || r.onlyWhen === (this.narrow ? 'mobile' : 'desktop'))
.filter(r => byId[r.id])
.map(r => {
const t = byId[r.id]
- return { key: t.id, label: t.label, sub: t.sub, icon: r.icon, badge: r.badge }
+ // Big Picture is DISABLED (not hidden) on mobile — the one row-level exception the
+ // device rule requires. `disabled`/`badge` are read by THIS shell's onSelect intercept
+ // and CSS below; VerticalTabsLayout itself does not know about `disabled` (it has no
+ // such concept — see the comment on isBigPictureDisabled), so the row stays clickable
+ // at the layout level and this shell is what turns that click into a message instead
+ // of a mount.
+ const disabled = this.isBigPictureDisabled(t.id)
+ return {
+ key: t.id, label: t.label, sub: t.sub, icon: r.icon,
+ badge: disabled ? 'desktop only' : r.badge, disabled
+ }
}),
seen)
// The Experimental folder is not authored — it is FILLED with every discovered tab (any
@@ -786,7 +846,7 @@ export default defineComponent({
},
methods: {
setSlot(i, el) { if (el) this._slots = Object.assign(this._slots || {}, { [i]: el }) },
- // ── VIEWPORT WATCH (the desktop/mobile tab swap) ──────────────────────────────────────────
+ // ── VIEWPORT WATCH (the device rule: same rail, different default + one disabled row) ────────
// Mirrors the SAME (max-width:760px) query VerticalTabsLayout uses. See the `narrow` note in
// data() for why the shell must watch it independently.
//
@@ -801,11 +861,11 @@ export default defineComponent({
const wasNarrow = this.narrow
this.narrow = !!e.matches
if (wasNarrow === this.narrow) return
- // A breakpoint crossing can REMOVE the row that is currently active (Big Picture exists only
- // on desktop). Leaving activeIndex pointing at a row the rail no longer paints leaves the
- // user on a mounted-but-unlisted tab with no highlight — visibly broken. Snap to the first
- // row that survives the crossing.
- if (!this.isVisibleId(this.activeKey)) this.select(this.firstVisibleIndex())
+ // A breakpoint crossing can DISABLE the row that is currently active (Big Picture, going
+ // desktop→mobile). Every row stays IN the rail on both widths per the device rule — nothing
+ // is removed any more — but a disabled active tab must not be left mounted/highlighted with
+ // no way to reach it, so snap to the default row for the new width.
+ if (this.isBigPictureDisabled(this.activeKey)) this.select(this.firstVisibleIndex())
}
// addEventListener is the modern API; addListener is the deprecated fallback some webviews
// still need. Try both rather than assume — a missed listener means the swap silently never
@@ -813,21 +873,30 @@ export default defineComponent({
if (this._mql.addEventListener) this._mql.addEventListener('change', this._onMedia)
else if (this._mql.addListener) this._mql.addListener(this._onMedia)
},
- // Is this tab id painted in the rail at the CURRENT width? Derived from navGroups (the thing the
- // user actually sees) rather than re-deriving the onlyWhen rule, so the two can never disagree.
- isVisibleId(id) {
- return this.navGroups.some(g => g.rows.some(r => r.key === id))
+ // THE ONE ROW THE DEVICE RULE DISABLES. Driver, verbatim: "it shouldn't change the tab order, it
+ // should open you up to the 2nd tab by default on mobile and disable the 1st tab." Named as a
+ // predicate (not a hardcoded width filter in navGroups) so the ONE place that knows "Big Picture"
+ // means 'dashboard-plus-grid' is this method — navGroups, onSelect and watchWidth all call it
+ // rather than each re-encoding the id + the width test.
+ isBigPictureDisabled(id) {
+ return id === 'dashboard-plus-grid' && this.narrow
},
- // Index (into this.tabs) of the first row the rail currently paints. Falls back to 0 so the app
- // always opens something, even if a future NAV_MODEL edit leaves a width with no curated rows.
+ // Index (into this.tabs) of the row the rail should auto-open at the CURRENT width. Desktop opens
+ // tab 1 (Big Picture); mobile opens tab 2 (Simple Research) because tab 1 is disabled there — the
+ // rail itself is UNCHANGED, only the default selection moves. Falls back to the first row of the
+ // first surviving group (then 0) so the app always opens something even if a future NAV_MODEL
+ // edit leaves a width with no curated rows.
firstVisibleIndex() {
+ let fallback = -1
for (const g of this.navGroups) {
for (const r of g.rows) {
const i = this.tabs.findIndex(t => t.id === r.key)
- if (i >= 0) return i
+ if (i < 0) continue
+ if (fallback < 0) fallback = i
+ if (!r.disabled) return i
}
}
- return 0
+ return fallback >= 0 ? fallback : 0
},
// Fetch the manifest ONCE and use it for BOTH jobs: complete the curated tabs (tag + scriptUrl)
// and fill the Experimental folder. One read, because the two answers must describe the same
@@ -888,7 +957,21 @@ export default defineComponent({
},
// The shared rail emits the selected tab's `key` (its id); map it back to the index the
// pane-mount machinery below is keyed on.
+ //
+ // ★ THE DISABLED-ROW INTERCEPT. VerticalTabsLayout has no `disabled` concept of its own (its
+ // `pick(key)` emits update:active unconditionally on click — see the layout file's `pick`), and
+ // this shell does not own that file (see the studio-wide file-ownership rule), so Big Picture's
+ // "disabled on mobile" behavior is enforced HERE: the click still arrives, but on mobile it is
+ // turned into a transient message instead of a mount. The row stays visibly present (greyed via
+ // the `disabled`-badge styling below), never removed — exactly the device rule's "disable, don't
+ // hide."
onSelect(key) {
+ if (this.isBigPictureDisabled(key)) {
+ this.disabledNotice = 'Big Picture only supports desktop — open this page on a desktop to use it.'
+ clearTimeout(this._noticeTimer)
+ this._noticeTimer = setTimeout(() => { this.disabledNotice = '' }, 4000)
+ return
+ }
const i = this.tabs.findIndex(t => t.id === key)
if (i !== -1) this.select(i)
},
@@ -1065,6 +1148,15 @@ export default defineComponent({
.dms-hint.err { color: #f87171; }
.dms-hint small { color: var(--dx-muted, #6d766e); }
+/* THE DEVICE-RULE NOTICE — the transient "desktop only" toast for the disabled Big Picture row on
+ mobile. Material light only (surface/border/text/muted tokens), matching the rest of this file. */
+.dms-notice {
+ position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%); z-index: 40;
+ max-width: 320px; text-align: center; font-size: 13px; line-height: 1.4;
+ color: #3b463d; background: #fff; border: 1px solid #d1d4cd; border-radius: 10px;
+ padding: 10px 16px; box-shadow: 0 8px 24px rgba(0,0,0,.12);
+}
+
/* #brand logo mark (left of the shell title). */
.dms-logo { display: inline-flex; align-items: center; }
.dms-logo svg { display: block; }
diff --git a/public/doxa-maps/doxa-maps-spa/doxa-maps-spa.js b/public/doxa-maps/doxa-maps-spa/doxa-maps-spa.js
index 7d1d8f122..43ad5aad6 100644
--- a/public/doxa-maps/doxa-maps-spa/doxa-maps-spa.js
+++ b/public/doxa-maps/doxa-maps-spa/doxa-maps-spa.js
@@ -2,23 +2,23 @@
* @vue/shared v3.5.42
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
-**/function Cs(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const B={},nt=[],we=()=>{},xi=()=>!1,Vt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Bt=e=>e.startsWith("onUpdate:"),X=Object.assign,As=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},Co=Object.prototype.hasOwnProperty,D=(e,t)=>Co.call(e,t),k=Array.isArray,Ke=e=>pt(e)==="[object Map]",Wt=e=>pt(e)==="[object Set]",_i=e=>pt(e)==="[object Date]",M=e=>typeof e=="function",G=e=>typeof e=="string",me=e=>typeof e=="symbol",F=e=>e!==null&&typeof e=="object",wi=e=>(F(e)||M(e))&&M(e.then)&&M(e.catch),Si=Object.prototype.toString,pt=e=>Si.call(e),Ao=e=>pt(e).slice(8,-1),Kt=e=>pt(e)==="[object Object]",ks=e=>G(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,gt=Cs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),zt=e=>{const t=Object.create(null);return s=>t[s]||(t[s]=e(s))},ko=/-\w/g,se=zt(e=>e.replace(ko,t=>t.slice(1).toUpperCase())),Oo=/\B([A-Z])/g,ge=zt(e=>e.replace(Oo,"-$1").toLowerCase()),qt=zt(e=>e.charAt(0).toUpperCase()+e.slice(1)),Os=zt(e=>e?`on${qt(e)}`:""),He=(e,t)=>!Object.is(e,t),Ms=(e,...t)=>{for(let s=0;s{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:i,value:s})},Mo=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Ti=e=>{const t=G(e)?Number(e):NaN;return isNaN(t)?e:t};let Ci;const Gt=()=>Ci||(Ci=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Is(e){if(k(e)){const t={};for(let s=0;s{if(s){const i=s.split(Ro);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function ze(e){let t="";if(G(e))t=e;else if(k(e))for(let s=0;s!!(e&&e.__v_isRef===!0),K=e=>G(e)?e:e==null?"":k(e)||F(e)&&(e.toString===Si||!M(e.toString))?Oi(e)?K(e.value):JSON.stringify(e,Mi,2):String(e),Mi=(e,t)=>Oi(t)?Mi(e,t.value):Ke(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[i,n],o)=>(s[Rs(i,o)+" =>"]=n,s),{})}:Wt(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>Rs(s))}:me(t)?Rs(t):F(t)&&!k(t)&&!Kt(t)?String(t):t,Rs=(e,t="")=>{var s;return me(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};/**
+**/function ks(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const V={},nt=[],we=()=>{},wi=()=>!1,Bt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Vt=e=>e.startsWith("onUpdate:"),X=Object.assign,As=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},ko=Object.prototype.hasOwnProperty,H=(e,t)=>ko.call(e,t),A=Array.isArray,Ke=e=>pt(e)==="[object Map]",Wt=e=>pt(e)==="[object Set]",Si=e=>pt(e)==="[object Date]",M=e=>typeof e=="function",G=e=>typeof e=="string",me=e=>typeof e=="symbol",F=e=>e!==null&&typeof e=="object",Ei=e=>(F(e)||M(e))&&M(e.then)&&M(e.catch),Ti=Object.prototype.toString,pt=e=>Ti.call(e),Ao=e=>pt(e).slice(8,-1),Kt=e=>pt(e)==="[object Object]",Os=e=>G(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,gt=ks(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),zt=e=>{const t=Object.create(null);return s=>t[s]||(t[s]=e(s))},Oo=/-\w/g,se=zt(e=>e.replace(Oo,t=>t.slice(1).toUpperCase())),Mo=/\B([A-Z])/g,ve=zt(e=>e.replace(Mo,"-$1").toLowerCase()),qt=zt(e=>e.charAt(0).toUpperCase()+e.slice(1)),Ms=zt(e=>e?`on${qt(e)}`:""),De=(e,t)=>!Object.is(e,t),Rs=(e,...t)=>{for(let s=0;s{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:i,value:s})},Ro=e=>{const t=parseFloat(e);return isNaN(t)?e:t},ki=e=>{const t=G(e)?Number(e):NaN;return isNaN(t)?e:t};let Ai;const Gt=()=>Ai||(Ai=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Is(e){if(A(e)){const t={};for(let s=0;s{if(s){const i=s.split(Po);i.length>1&&(t[i[0].trim()]=i[1].trim())}}),t}function ze(e){let t="";if(G(e))t=e;else if(A(e))for(let s=0;s!!(e&&e.__v_isRef===!0),W=e=>G(e)?e:e==null?"":A(e)||F(e)&&(e.toString===Ti||!M(e.toString))?Ri(e)?W(e.value):JSON.stringify(e,Ii,2):String(e),Ii=(e,t)=>Ri(t)?Ii(e,t.value):Ke(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[i,n],o)=>(s[Ps(i,o)+" =>"]=n,s),{})}:Wt(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>Ps(s))}:me(t)?Ps(t):F(t)&&!A(t)&&!Kt(t)?String(t):t,Ps=(e,t="")=>{var s;return me(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};/**
* @vue/reactivity v3.5.42
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
-**/let ie;class Do{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&ie&&(ie.active?(this.parent=ie,this.index=(ie.scopes||(ie.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes){const i=this.scopes.slice();for(t=0,s=i.length;t0&&--this._on===0){if(ie===this)ie=this.prevScope;else{let t=ie;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let s,i;for(s=0,i=this.effects.length;s0)return;if(mt){let t=mt;for(mt=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;vt;){let t=vt;for(vt=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(i){e||(e=i)}t=s}}if(e)throw e}function Li(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Ni(e){let t,s=e.depsTail,i=s;for(;i;){const n=i.prevDep;i.version===-1?(i===s&&(s=n),Ds(i),Fo(i)):t=i,i.dep.activeLink=i.prevActiveLink,i.prevActiveLink=void 0,i=n}e.deps=t,e.depsTail=s}function Hs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Hi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Hi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===bt)||(e.globalVersion=bt,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Hs(e))))return;e.flags|=2;const t=e.dep,s=z,i=be;z=e,be=!0;try{Li(e);const n=e.fn(e._value);(t.version===0||He(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(n){throw t.version++,n}finally{z=s,be=i,Ni(e),e.flags&=-3}}function Ds(e,t=!1){const{dep:s,prevSub:i,nextSub:n}=e;if(i&&(i.nextSub=n,e.prevSub=void 0),n&&(n.prevSub=i,e.nextSub=void 0),s.subs===e&&(s.subs=i,!i&&s.computed)){s.computed.flags&=-5;for(let o=s.computed.deps;o;o=o.nextDep)Ds(o,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function Fo(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let be=!0;const Di=[];function Se(){Di.push(be),be=!1}function Ee(){const e=Di.pop();be=e===void 0?!0:e}function ji(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=z;z=void 0;try{t()}finally{z=s}}}let bt=0;class $o{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Fi{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!z||!be||z===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==z)s=this.activeLink=new $o(z,this),z.deps?(s.prevDep=z.depsTail,z.depsTail.nextDep=s,z.depsTail=s):z.deps=z.depsTail=s,$i(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const i=s.nextDep;i.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=i),s.prevDep=z.depsTail,s.nextDep=void 0,z.depsTail.nextDep=s,z.depsTail=s,z.deps===s&&(z.deps=i)}return s}trigger(t){this.version++,bt++,this.notify(t)}notify(t){Ls();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{Ns()}}}function $i(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let i=t.deps;i;i=i.nextDep)$i(i)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const js=new WeakMap,Je=Symbol(""),Fs=Symbol(""),yt=Symbol("");function re(e,t,s){if(be&&z){let i=js.get(e);i||js.set(e,i=new Map);let n=i.get(s);n||(i.set(s,n=new Fi),n.map=i,n.key=s),n.track()}}function De(e,t,s,i,n,o){const r=js.get(e);if(!r){bt++;return}const l=a=>{a&&a.trigger()};if(Ls(),t==="clear")r.forEach(l);else{const a=k(e),u=a&&ks(s);if(a&&s==="length"){const d=Number(i);r.forEach((p,S)=>{(S==="length"||S===yt||!me(S)&&S>=d)&&l(p)})}else switch((s!==void 0||r.has(void 0))&&l(r.get(s)),u&&l(r.get(yt)),t){case"add":a?u&&l(r.get("length")):(l(r.get(Je)),Ke(e)&&l(r.get(Fs)));break;case"delete":a||(l(r.get(Je)),Ke(e)&&l(r.get(Fs)));break;case"set":Ke(e)&&l(r.get(Je));break}}Ns()}function ot(e){const t=j(e);return t===e?t:(re(t,"iterate",yt),ye(e)?t:t.map(Fe))}function Jt(e){return re(e=j(e),"iterate",yt),e}function Te(e,t){return qe(e)?rt(Xe(e)?Fe(t):t):Fe(t)}const Uo={__proto__:null,[Symbol.iterator](){return $s(this,Symbol.iterator,e=>Te(this,e))},concat(...e){return ot(this).concat(...e.map(t=>k(t)?ot(t):t))},entries(){return $s(this,"entries",e=>(e[1]=Te(this,e[1]),e))},every(e,t){return je(this,"every",e,t,void 0,arguments)},filter(e,t){return je(this,"filter",e,t,s=>s.map(i=>Te(this,i)),arguments)},find(e,t){return je(this,"find",e,t,s=>Te(this,s),arguments)},findIndex(e,t){return je(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return je(this,"findLast",e,t,s=>Te(this,s),arguments)},findLastIndex(e,t){return je(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return je(this,"forEach",e,t,void 0,arguments)},includes(...e){return Us(this,"includes",e)},indexOf(...e){return Us(this,"indexOf",e)},join(e){return ot(this).join(e)},lastIndexOf(...e){return Us(this,"lastIndexOf",e)},map(e,t){return je(this,"map",e,t,void 0,arguments)},pop(){return xt(this,"pop")},push(...e){return xt(this,"push",e)},reduce(e,...t){return Ui(this,"reduce",e,t)},reduceRight(e,...t){return Ui(this,"reduceRight",e,t)},shift(){return xt(this,"shift")},some(e,t){return je(this,"some",e,t,void 0,arguments)},splice(...e){return xt(this,"splice",e)},toReversed(){return ot(this).toReversed()},toSorted(e){return ot(this).toSorted(e)},toSpliced(...e){return ot(this).toSpliced(...e)},unshift(...e){return xt(this,"unshift",e)},values(){return $s(this,"values",e=>Te(this,e))}};function $s(e,t,s){const i=Jt(e),n=i[t]();return i!==e&&!ye(e)&&(n._next=n.next,n.next=()=>{const o=n._next();return o.done||(o.value=s(o.value)),o}),n}const Vo=Array.prototype;function je(e,t,s,i,n,o){const r=Jt(e),l=r!==e&&!ye(e),a=r[t];if(a!==Vo[t]){const p=a.apply(e,o);return l?Fe(p):p}let u=s;r!==e&&(l?u=function(p,S){return s.call(this,Te(e,p),S,e)}:s.length>2&&(u=function(p,S){return s.call(this,p,S,e)}));const d=a.call(r,u,i);return l&&n?n(d):d}function Ui(e,t,s,i){const n=Jt(e),o=n!==e&&!ye(e);let r=s,l=!1;n!==e&&(o?(l=i.length===0,r=function(u,d,p){return l&&(l=!1,u=Te(e,u)),s.call(this,u,Te(e,d),p,e)}):s.length>3&&(r=function(u,d,p){return s.call(this,u,d,p,e)}));const a=n[t](r,...i);return l?Te(e,a):a}function Us(e,t,s){const i=j(e);re(i,"iterate",yt);const n=i[t](...s);return(n===-1||n===!1)&&Ks(s[0])?(s[0]=j(s[0]),i[t](...s)):n}function xt(e,t,s=[]){Se(),Ls();const i=j(e)[t].apply(e,s);return Ns(),Ee(),i}const Bo=Cs("__proto__,__v_isRef,__isVue"),Vi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(me));function Wo(e){me(e)||(e=String(e));const t=j(this);return re(t,"has",e),t.hasOwnProperty(e)}class Bi{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,i){if(s==="__v_skip")return t.__v_skip;const n=this._isReadonly,o=this._isShallow;if(s==="__v_isReactive")return!n;if(s==="__v_isReadonly")return n;if(s==="__v_isShallow")return o;if(s==="__v_raw")return i===(n?o?Yi:Gi:o?qi:zi).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(i)?t:void 0;const r=k(t);if(!n){let a;if(r&&(a=Uo[s]))return a;if(s==="hasOwnProperty")return Wo}const l=Reflect.get(t,s,le(t)?t:i);if((me(s)?Vi.has(s):Bo(s))||(n||re(t,"get",s),o))return l;if(le(l)){const a=r&&ks(s)?l:l.value;return n&&F(a)?Ws(a):a}return F(l)?n?Ws(l):Bs(l):l}}class Wi extends Bi{constructor(t=!1){super(!1,t)}set(t,s,i,n){let o=t[s];const r=k(t)&&ks(s);if(!this._isShallow){const u=qe(o);if(!ye(i)&&!qe(i)&&(o=j(o),i=j(i)),!r&&le(o)&&!le(i))return u||(o.value=i),!0}const l=r?Number(s)e,Xt=e=>Reflect.getPrototypeOf(e);function Yo(e,t,s){return function(...i){const n=this.__v_raw,o=j(n),r=Ke(o),l=e==="entries"||e===Symbol.iterator&&r,a=e==="keys"&&r,u=n[e](...i),d=s?Vs:t?rt:Fe;return!t&&re(o,"iterate",a?Fs:Je),X(Object.create(u),{next(){const{value:p,done:S}=u.next();return S?{value:p,done:S}:{value:l?[d(p[0]),d(p[1])]:d(p),done:S}}})}}function Zt(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Jo(e,t){const s={get(n){const o=this.__v_raw,r=j(o),l=j(n);e||(He(n,l)&&re(r,"get",n),re(r,"get",l));const{has:a}=Xt(r),u=t?Vs:e?rt:Fe;if(a.call(r,n))return u(o.get(n));if(a.call(r,l))return u(o.get(l));o!==r&&o.get(n)},get size(){const n=this.__v_raw;return!e&&re(j(n),"iterate",Je),n.size},has(n){const o=this.__v_raw,r=j(o),l=j(n);return e||(He(n,l)&&re(r,"has",n),re(r,"has",l)),n===l?o.has(n):o.has(n)||o.has(l)},forEach(n,o){const r=this,l=r.__v_raw,a=j(l),u=t?Vs:e?rt:Fe;return!e&&re(a,"iterate",Je),l.forEach((d,p)=>n.call(o,u(d),u(p),r))}};return X(s,e?{add:Zt("add"),set:Zt("set"),delete:Zt("delete"),clear:Zt("clear")}:{add(n){const o=j(this),r=Xt(o),l=j(n),a=!t&&!ye(n)&&!qe(n)?l:n;return r.has.call(o,a)||He(n,a)&&r.has.call(o,n)||He(l,a)&&r.has.call(o,l)||(o.add(a),De(o,"add",a,a)),this},set(n,o){!t&&!ye(o)&&!qe(o)&&(o=j(o));const r=j(this),{has:l,get:a}=Xt(r);let u=l.call(r,n);u||(n=j(n),u=l.call(r,n));const d=a.call(r,n);return r.set(n,o),u?He(o,d)&&De(r,"set",n,o):De(r,"add",n,o),this},delete(n){const o=j(this),{has:r,get:l}=Xt(o);let a=r.call(o,n);a||(n=j(n),a=r.call(o,n)),l&&l.call(o,n);const u=o.delete(n);return a&&De(o,"delete",n,void 0),u},clear(){const n=j(this),o=n.size!==0,r=n.clear();return o&&De(n,"clear",void 0,void 0),r}}),["keys","values","entries",Symbol.iterator].forEach(n=>{s[n]=Yo(n,e,t)}),s}function Qt(e,t){const s=Jo(e,t);return(i,n,o)=>n==="__v_isReactive"?!e:n==="__v_isReadonly"?e:n==="__v_raw"?i:Reflect.get(D(s,n)&&n in i?s:i,n,o)}const Xo={get:Qt(!1,!1)},Zo={get:Qt(!1,!0)},Qo={get:Qt(!0,!1)},er={get:Qt(!0,!0)},zi=new WeakMap,qi=new WeakMap,Gi=new WeakMap,Yi=new WeakMap;function tr(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Bs(e){return qe(e)?e:es(e,!1,Ko,Xo,zi)}function sr(e){return es(e,!1,qo,Zo,qi)}function Ws(e){return es(e,!0,zo,Qo,Gi)}function Ac(e){return es(e,!0,Go,er,Yi)}function es(e,t,s,i,n){if(!F(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const o=n.get(e);if(o)return o;const r=tr(Ao(e));if(r===0)return e;const l=new Proxy(e,r===2?i:s);return n.set(e,l),l}function Xe(e){return qe(e)?Xe(e.__v_raw):!!(e&&e.__v_isReactive)}function qe(e){return!!(e&&e.__v_isReadonly)}function ye(e){return!!(e&&e.__v_isShallow)}function Ks(e){return e?!!e.__v_raw:!1}function j(e){const t=e&&e.__v_raw;return t?j(t):e}function ir(e){return!D(e,"__v_skip")&&Object.isExtensible(e)&&Ei(e,"__v_skip",!0),e}const Fe=e=>F(e)?Bs(e):e,rt=e=>F(e)?Ws(e):e;function le(e){return e?e.__v_isRef===!0:!1}function Ji(e){return le(e)?e.value:e}const nr={get:(e,t,s)=>t==="__v_raw"?e:Ji(Reflect.get(e,t,s)),set:(e,t,s,i)=>{const n=e[t];return le(n)&&!le(s)?(n.value=s,!0):Reflect.set(e,t,s,i)}};function Xi(e){return Xe(e)?e:new Proxy(e,nr)}class or{constructor(t,s,i){this.fn=t,this.setter=s,this._value=void 0,this.dep=new Fi(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=bt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=i}notify(){if(this.flags|=16,!(this.flags&8)&&z!==this)return Pi(this,!0),!0}get value(){const t=this.dep.track();return Hi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function rr(e,t,s=!1){let i,n;return M(e)?i=e:(i=e.get,n=e.set),new or(i,n,s)}const ts={},ss=new WeakMap;let Ze;function lr(e,t=!1,s=Ze){if(s){let i=ss.get(s);i||ss.set(s,i=[]),i.push(e)}}function ar(e,t,s=B){const{immediate:i,deep:n,once:o,scheduler:r,augmentJob:l,call:a}=s,u=A=>n?A:ye(A)||n===!1||n===0?$e(A,1):$e(A);let d,p,S,E,$=!1,I=!1;if(le(e)?(p=()=>e.value,$=ye(e)):Xe(e)?(p=()=>u(e),$=!0):k(e)?(I=!0,$=e.some(A=>Xe(A)||ye(A)),p=()=>e.map(A=>{if(le(A))return A.value;if(Xe(A))return u(A);if(M(A))return a?a(A,2):A()})):M(e)?t?p=a?()=>a(e,2):e:p=()=>{if(S){Se();try{S()}finally{Ee()}}const A=Ze;Ze=d;try{return a?a(e,3,[E]):e(E)}finally{Ze=A}}:p=we,t&&n){const A=p,te=n===!0?1/0:n;p=()=>$e(A(),te)}const Z=jo(),Y=()=>{d.stop(),Z&&Z.active&&As(Z.effects,d)};if(o&&t){const A=t;t=(...te)=>{const Me=A(...te);return Y(),Me}}let H=I?new Array(e.length).fill(ts):ts;const U=A=>{if(!(!(d.flags&1)||!d.dirty&&!A))if(t){const te=d.run();if(A||n||$||(I?te.some((Me,Ie)=>He(Me,H[Ie])):He(te,H))){S&&S();const Me=Ze;Ze=d;try{const Ie=[te,H===ts?void 0:I&&H[0]===ts?[]:H,E];H=te,a?a(t,3,Ie):t(...Ie)}finally{Ze=Me}}}else d.run()};return l&&l(U),d=new Ii(p),d.scheduler=r?()=>r(U,!1):U,E=A=>lr(A,!1,d),S=d.onStop=()=>{const A=ss.get(d);if(A){if(a)a(A,4);else for(const te of A)te();ss.delete(d)}},t?i?U(!0):H=d.run():r?r(U.bind(null,!0),!0):d.run(),Y.pause=d.pause.bind(d),Y.resume=d.resume.bind(d),Y.stop=Y,Y}function $e(e,t=1/0,s){if(t<=0||!F(e)||e.__v_skip||(s=s||new Map,(s.get(e)||0)>=t))return e;if(s.set(e,t),t--,le(e))$e(e.value,t,s);else if(k(e))for(let i=0;i{$e(i,t,s)});else if(Kt(e)){for(const i in e)$e(e[i],t,s);for(const i of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,i)&&$e(e[i],t,s)}return e}/**
+**/let ie;class jo{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!t&&ie&&(ie.active?(this.parent=ie,this.index=(ie.scopes||(ie.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes){const i=this.scopes.slice();for(t=0,s=i.length;t0&&--this._on===0){if(ie===this)ie=this.prevScope;else{let t=ie;for(;t;){if(t.prevScope===this){t.prevScope=this.prevScope;break}t=t.prevScope}}this.prevScope=void 0}}stop(t){if(this._active){this._active=!1;let s,i;for(s=0,i=this.effects.length;s0)return;if(mt){let t=mt;for(mt=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;vt;){let t=vt;for(vt=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(i){e||(e=i)}t=s}}if(e)throw e}function Di(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Hi(e){let t,s=e.depsTail,i=s;for(;i;){const n=i.prevDep;i.version===-1?(i===s&&(s=n),js(i),$o(i)):t=i,i.dep.activeLink=i.prevActiveLink,i.prevActiveLink=void 0,i=n}e.deps=t,e.depsTail=s}function Hs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(ji(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function ji(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===bt)||(e.globalVersion=bt,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Hs(e))))return;e.flags|=2;const t=e.dep,s=z,i=be;z=e,be=!0;try{Di(e);const n=e.fn(e._value);(t.version===0||De(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(n){throw t.version++,n}finally{z=s,be=i,Hi(e),e.flags&=-3}}function js(e,t=!1){const{dep:s,prevSub:i,nextSub:n}=e;if(i&&(i.nextSub=n,e.prevSub=void 0),n&&(n.prevSub=i,e.nextSub=void 0),s.subs===e&&(s.subs=i,!i&&s.computed)){s.computed.flags&=-5;for(let o=s.computed.deps;o;o=o.nextDep)js(o,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function $o(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let be=!0;const Fi=[];function Se(){Fi.push(be),be=!1}function Ee(){const e=Fi.pop();be=e===void 0?!0:e}function $i(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=z;z=void 0;try{t()}finally{z=s}}}let bt=0;class Uo{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Ui{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!z||!be||z===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==z)s=this.activeLink=new Uo(z,this),z.deps?(s.prevDep=z.depsTail,z.depsTail.nextDep=s,z.depsTail=s):z.deps=z.depsTail=s,Bi(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const i=s.nextDep;i.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=i),s.prevDep=z.depsTail,s.nextDep=void 0,z.depsTail.nextDep=s,z.depsTail=s,z.deps===s&&(z.deps=i)}return s}trigger(t){this.version++,bt++,this.notify(t)}notify(t){Ns();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{Ds()}}}function Bi(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let i=t.deps;i;i=i.nextDep)Bi(i)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const Fs=new WeakMap,Je=Symbol(""),$s=Symbol(""),yt=Symbol("");function re(e,t,s){if(be&&z){let i=Fs.get(e);i||Fs.set(e,i=new Map);let n=i.get(s);n||(i.set(s,n=new Ui),n.map=i,n.key=s),n.track()}}function He(e,t,s,i,n,o){const r=Fs.get(e);if(!r){bt++;return}const l=a=>{a&&a.trigger()};if(Ns(),t==="clear")r.forEach(l);else{const a=A(e),u=a&&Os(s);if(a&&s==="length"){const d=Number(i);r.forEach((p,S)=>{(S==="length"||S===yt||!me(S)&&S>=d)&&l(p)})}else switch((s!==void 0||r.has(void 0))&&l(r.get(s)),u&&l(r.get(yt)),t){case"add":a?u&&l(r.get("length")):(l(r.get(Je)),Ke(e)&&l(r.get($s)));break;case"delete":a||(l(r.get(Je)),Ke(e)&&l(r.get($s)));break;case"set":Ke(e)&&l(r.get(Je));break}}Ds()}function ot(e){const t=j(e);return t===e?t:(re(t,"iterate",yt),ye(e)?t:t.map(Fe))}function Jt(e){return re(e=j(e),"iterate",yt),e}function Te(e,t){return qe(e)?rt(Xe(e)?Fe(t):t):Fe(t)}const Bo={__proto__:null,[Symbol.iterator](){return Us(this,Symbol.iterator,e=>Te(this,e))},concat(...e){return ot(this).concat(...e.map(t=>A(t)?ot(t):t))},entries(){return Us(this,"entries",e=>(e[1]=Te(this,e[1]),e))},every(e,t){return je(this,"every",e,t,void 0,arguments)},filter(e,t){return je(this,"filter",e,t,s=>s.map(i=>Te(this,i)),arguments)},find(e,t){return je(this,"find",e,t,s=>Te(this,s),arguments)},findIndex(e,t){return je(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return je(this,"findLast",e,t,s=>Te(this,s),arguments)},findLastIndex(e,t){return je(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return je(this,"forEach",e,t,void 0,arguments)},includes(...e){return Bs(this,"includes",e)},indexOf(...e){return Bs(this,"indexOf",e)},join(e){return ot(this).join(e)},lastIndexOf(...e){return Bs(this,"lastIndexOf",e)},map(e,t){return je(this,"map",e,t,void 0,arguments)},pop(){return xt(this,"pop")},push(...e){return xt(this,"push",e)},reduce(e,...t){return Vi(this,"reduce",e,t)},reduceRight(e,...t){return Vi(this,"reduceRight",e,t)},shift(){return xt(this,"shift")},some(e,t){return je(this,"some",e,t,void 0,arguments)},splice(...e){return xt(this,"splice",e)},toReversed(){return ot(this).toReversed()},toSorted(e){return ot(this).toSorted(e)},toSpliced(...e){return ot(this).toSpliced(...e)},unshift(...e){return xt(this,"unshift",e)},values(){return Us(this,"values",e=>Te(this,e))}};function Us(e,t,s){const i=Jt(e),n=i[t]();return i!==e&&!ye(e)&&(n._next=n.next,n.next=()=>{const o=n._next();return o.done||(o.value=s(o.value)),o}),n}const Vo=Array.prototype;function je(e,t,s,i,n,o){const r=Jt(e),l=r!==e&&!ye(e),a=r[t];if(a!==Vo[t]){const p=a.apply(e,o);return l?Fe(p):p}let u=s;r!==e&&(l?u=function(p,S){return s.call(this,Te(e,p),S,e)}:s.length>2&&(u=function(p,S){return s.call(this,p,S,e)}));const d=a.call(r,u,i);return l&&n?n(d):d}function Vi(e,t,s,i){const n=Jt(e),o=n!==e&&!ye(e);let r=s,l=!1;n!==e&&(o?(l=i.length===0,r=function(u,d,p){return l&&(l=!1,u=Te(e,u)),s.call(this,u,Te(e,d),p,e)}):s.length>3&&(r=function(u,d,p){return s.call(this,u,d,p,e)}));const a=n[t](r,...i);return l?Te(e,a):a}function Bs(e,t,s){const i=j(e);re(i,"iterate",yt);const n=i[t](...s);return(n===-1||n===!1)&&zs(s[0])?(s[0]=j(s[0]),i[t](...s)):n}function xt(e,t,s=[]){Se(),Ns();const i=j(e)[t].apply(e,s);return Ds(),Ee(),i}const Wo=ks("__proto__,__v_isRef,__isVue"),Wi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(me));function Ko(e){me(e)||(e=String(e));const t=j(this);return re(t,"has",e),t.hasOwnProperty(e)}class Ki{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,i){if(s==="__v_skip")return t.__v_skip;const n=this._isReadonly,o=this._isShallow;if(s==="__v_isReactive")return!n;if(s==="__v_isReadonly")return n;if(s==="__v_isShallow")return o;if(s==="__v_raw")return i===(n?o?Xi:Ji:o?Yi:Gi).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(i)?t:void 0;const r=A(t);if(!n){let a;if(r&&(a=Bo[s]))return a;if(s==="hasOwnProperty")return Ko}const l=Reflect.get(t,s,le(t)?t:i);if((me(s)?Wi.has(s):Wo(s))||(n||re(t,"get",s),o))return l;if(le(l)){const a=r&&Os(s)?l:l.value;return n&&F(a)?Ks(a):a}return F(l)?n?Ks(l):Ws(l):l}}class zi extends Ki{constructor(t=!1){super(!1,t)}set(t,s,i,n){let o=t[s];const r=A(t)&&Os(s);if(!this._isShallow){const u=qe(o);if(!ye(i)&&!qe(i)&&(o=j(o),i=j(i)),!r&&le(o)&&!le(i))return u||(o.value=i),!0}const l=r?Number(s)e,Xt=e=>Reflect.getPrototypeOf(e);function Jo(e,t,s){return function(...i){const n=this.__v_raw,o=j(n),r=Ke(o),l=e==="entries"||e===Symbol.iterator&&r,a=e==="keys"&&r,u=n[e](...i),d=s?Vs:t?rt:Fe;return!t&&re(o,"iterate",a?$s:Je),X(Object.create(u),{next(){const{value:p,done:S}=u.next();return S?{value:p,done:S}:{value:l?[d(p[0]),d(p[1])]:d(p),done:S}}})}}function Zt(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Xo(e,t){const s={get(n){const o=this.__v_raw,r=j(o),l=j(n);e||(De(n,l)&&re(r,"get",n),re(r,"get",l));const{has:a}=Xt(r),u=t?Vs:e?rt:Fe;if(a.call(r,n))return u(o.get(n));if(a.call(r,l))return u(o.get(l));o!==r&&o.get(n)},get size(){const n=this.__v_raw;return!e&&re(j(n),"iterate",Je),n.size},has(n){const o=this.__v_raw,r=j(o),l=j(n);return e||(De(n,l)&&re(r,"has",n),re(r,"has",l)),n===l?o.has(n):o.has(n)||o.has(l)},forEach(n,o){const r=this,l=r.__v_raw,a=j(l),u=t?Vs:e?rt:Fe;return!e&&re(a,"iterate",Je),l.forEach((d,p)=>n.call(o,u(d),u(p),r))}};return X(s,e?{add:Zt("add"),set:Zt("set"),delete:Zt("delete"),clear:Zt("clear")}:{add(n){const o=j(this),r=Xt(o),l=j(n),a=!t&&!ye(n)&&!qe(n)?l:n;return r.has.call(o,a)||De(n,a)&&r.has.call(o,n)||De(l,a)&&r.has.call(o,l)||(o.add(a),He(o,"add",a,a)),this},set(n,o){!t&&!ye(o)&&!qe(o)&&(o=j(o));const r=j(this),{has:l,get:a}=Xt(r);let u=l.call(r,n);u||(n=j(n),u=l.call(r,n));const d=a.call(r,n);return r.set(n,o),u?De(o,d)&&He(r,"set",n,o):He(r,"add",n,o),this},delete(n){const o=j(this),{has:r,get:l}=Xt(o);let a=r.call(o,n);a||(n=j(n),a=r.call(o,n)),l&&l.call(o,n);const u=o.delete(n);return a&&He(o,"delete",n,void 0),u},clear(){const n=j(this),o=n.size!==0,r=n.clear();return o&&He(n,"clear",void 0,void 0),r}}),["keys","values","entries",Symbol.iterator].forEach(n=>{s[n]=Jo(n,e,t)}),s}function Qt(e,t){const s=Xo(e,t);return(i,n,o)=>n==="__v_isReactive"?!e:n==="__v_isReadonly"?e:n==="__v_raw"?i:Reflect.get(H(s,n)&&n in i?s:i,n,o)}const Zo={get:Qt(!1,!1)},Qo={get:Qt(!1,!0)},er={get:Qt(!0,!1)},tr={get:Qt(!0,!0)},Gi=new WeakMap,Yi=new WeakMap,Ji=new WeakMap,Xi=new WeakMap;function sr(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Ws(e){return qe(e)?e:es(e,!1,zo,Zo,Gi)}function ir(e){return es(e,!1,Go,Qo,Yi)}function Ks(e){return es(e,!0,qo,er,Ji)}function Mc(e){return es(e,!0,Yo,tr,Xi)}function es(e,t,s,i,n){if(!F(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;const o=n.get(e);if(o)return o;const r=sr(Ao(e));if(r===0)return e;const l=new Proxy(e,r===2?i:s);return n.set(e,l),l}function Xe(e){return qe(e)?Xe(e.__v_raw):!!(e&&e.__v_isReactive)}function qe(e){return!!(e&&e.__v_isReadonly)}function ye(e){return!!(e&&e.__v_isShallow)}function zs(e){return e?!!e.__v_raw:!1}function j(e){const t=e&&e.__v_raw;return t?j(t):e}function nr(e){return!H(e,"__v_skip")&&Object.isExtensible(e)&&Ci(e,"__v_skip",!0),e}const Fe=e=>F(e)?Ws(e):e,rt=e=>F(e)?Ks(e):e;function le(e){return e?e.__v_isRef===!0:!1}function Zi(e){return le(e)?e.value:e}const or={get:(e,t,s)=>t==="__v_raw"?e:Zi(Reflect.get(e,t,s)),set:(e,t,s,i)=>{const n=e[t];return le(n)&&!le(s)?(n.value=s,!0):Reflect.set(e,t,s,i)}};function Qi(e){return Xe(e)?e:new Proxy(e,or)}class rr{constructor(t,s,i){this.fn=t,this.setter=s,this._value=void 0,this.dep=new Ui(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=bt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=i}notify(){if(this.flags|=16,!(this.flags&8)&&z!==this)return Ni(this,!0),!0}get value(){const t=this.dep.track();return ji(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function lr(e,t,s=!1){let i,n;return M(e)?i=e:(i=e.get,n=e.set),new rr(i,n,s)}const ts={},ss=new WeakMap;let Ze;function ar(e,t=!1,s=Ze){if(s){let i=ss.get(s);i||ss.set(s,i=[]),i.push(e)}}function cr(e,t,s=V){const{immediate:i,deep:n,once:o,scheduler:r,augmentJob:l,call:a}=s,u=k=>n?k:ye(k)||n===!1||n===0?$e(k,1):$e(k);let d,p,S,E,$=!1,R=!1;if(le(e)?(p=()=>e.value,$=ye(e)):Xe(e)?(p=()=>u(e),$=!0):A(e)?(R=!0,$=e.some(k=>Xe(k)||ye(k)),p=()=>e.map(k=>{if(le(k))return k.value;if(Xe(k))return u(k);if(M(k))return a?a(k,2):k()})):M(e)?t?p=a?()=>a(e,2):e:p=()=>{if(S){Se();try{S()}finally{Ee()}}const k=Ze;Ze=d;try{return a?a(e,3,[E]):e(E)}finally{Ze=k}}:p=we,t&&n){const k=p,te=n===!0?1/0:n;p=()=>$e(k(),te)}const Z=Fo(),Y=()=>{d.stop(),Z&&Z.active&&As(Z.effects,d)};if(o&&t){const k=t;t=(...te)=>{const Me=k(...te);return Y(),Me}}let D=R?new Array(e.length).fill(ts):ts;const U=k=>{if(!(!(d.flags&1)||!d.dirty&&!k))if(t){const te=d.run();if(k||n||$||(R?te.some((Me,Re)=>De(Me,D[Re])):De(te,D))){S&&S();const Me=Ze;Ze=d;try{const Re=[te,D===ts?void 0:R&&D[0]===ts?[]:D,E];D=te,a?a(t,3,Re):t(...Re)}finally{Ze=Me}}}else d.run()};return l&&l(U),d=new Pi(p),d.scheduler=r?()=>r(U,!1):U,E=k=>ar(k,!1,d),S=d.onStop=()=>{const k=ss.get(d);if(k){if(a)a(k,4);else for(const te of k)te();ss.delete(d)}},t?i?U(!0):D=d.run():r?r(U.bind(null,!0),!0):d.run(),Y.pause=d.pause.bind(d),Y.resume=d.resume.bind(d),Y.stop=Y,Y}function $e(e,t=1/0,s){if(t<=0||!F(e)||e.__v_skip||(s=s||new Map,(s.get(e)||0)>=t))return e;if(s.set(e,t),t--,le(e))$e(e.value,t,s);else if(A(e))for(let i=0;i{$e(i,t,s)});else if(Kt(e)){for(const i in e)$e(e[i],t,s);for(const i of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,i)&&$e(e[i],t,s)}return e}/**
* @vue/runtime-core v3.5.42
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
-**/const _t=[];let zs=!1;function kc(e,...t){if(zs)return;zs=!0,Se();const s=_t.length?_t[_t.length-1].component:null,i=s&&s.appContext.config.warnHandler,n=cr();if(i)lt(i,s,11,[e+t.map(o=>{var r,l;return(l=(r=o.toString)==null?void 0:r.call(o))!=null?l:JSON.stringify(o)}).join(""),s&&s.proxy,n.map(({vnode:o})=>`at <${Zn(s,o.type)}>`).join(`
+**/const _t=[];let qs=!1;function Rc(e,...t){if(qs)return;qs=!0,Se();const s=_t.length?_t[_t.length-1].component:null,i=s&&s.appContext.config.warnHandler,n=fr();if(i)lt(i,s,11,[e+t.map(o=>{var r,l;return(l=(r=o.toString)==null?void 0:r.call(o))!=null?l:JSON.stringify(o)}).join(""),s&&s.proxy,n.map(({vnode:o})=>`at <${eo(s,o.type)}>`).join(`
`),n]);else{const o=[`[Vue warn]: ${e}`,...t];n.length&&o.push(`
-`,...fr(n)),console.warn(...o)}Ee(),zs=!1}function cr(){let e=_t[_t.length-1];if(!e)return[];const t=[];for(;e;){const s=t[0];s&&s.vnode===e?s.recurseCount++:t.push({vnode:e,recurseCount:0});const i=e.component&&e.component.parent;e=i&&i.vnode}return t}function fr(e){const t=[];return e.forEach((s,i)=>{t.push(...i===0?[]:[`
-`],...dr(s))}),t}function dr({vnode:e,recurseCount:t}){const s=t>0?`... (${t} recursive calls)`:"",i=e.component?e.component.parent==null:!1,n=` at <${Zn(e.component,e.type,i)}`,o=">"+s;return e.props?[n,...ur(e.props),o]:[n+o]}function ur(e){const t=[],s=Object.keys(e);return s.slice(0,3).forEach(i=>{t.push(...Zi(i,e[i]))}),s.length>3&&t.push(" ..."),t}function Zi(e,t,s){return G(t)?(t=JSON.stringify(t),s?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?s?t:[`${e}=${t}`]:le(t)?(t=Zi(e,j(t.value),!0),s?t:[`${e}=Ref<`,t,">"]):M(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=j(t),s?t:[`${e}=`,t])}function lt(e,t,s,i){try{return i?e(...i):e()}catch(n){is(n,t,s)}}function xe(e,t,s,i){if(M(e)){const n=lt(e,t,s,i);return n&&wi(n)&&n.catch(o=>{is(o,t,s)}),n}if(k(e)){const n=[];for(let o=0;o>>1,n=ce[i],o=wt(n);o=wt(s)?ce.push(e):ce.splice(pr(t),0,e),e.flags|=1,tn()}}function tn(){ns||(ns=Qi.then(on))}function gr(e){if(!k(e))Ge&&e.id===-1?Ge.splice(ct+1,0,e):e.flags&1||(at.push(e),e.flags|=1);else for(let t=0;twt(s)-wt(i));if(at.length=0,Ge){for(let s=0;se.id==null?e.flags&2?-1:1/0:e.id;function on(e){try{for(Ce=0;Ce{i._d&&Bn(-1);const o=os(t),r=Ve.length;let l;try{l=e(...n)}finally{for(let a=Ve.length;a>r;a--)ci();os(o),i._d&&Bn(1)}return l};return i._n=!0,i._c=!0,i._d=!0,i}function Gs(e,t){if(ne===null)return e;const s=ms(ne),i=e.dirs||(e.dirs=[]);for(let n=0;n1)return s&&M(t)?t.call(i&&i.proxy):t}}const mr=Symbol.for("v-scx"),br=()=>Et(mr);function Ys(e,t,s){return ln(e,t,s)}function ln(e,t,s=B){const{immediate:i,deep:n,flush:o,once:r}=s,l=X({},s),a=t&&i||!t&&o!=="post";let u;if(Pt){if(o==="sync"){const E=br();u=E.__watcherHandles||(E.__watcherHandles=[])}else if(!a){const E=()=>{};return E.stop=we,E.resume=we,E.pause=we,E}}const d=ae;l.call=(E,$,I)=>xe(E,d,$,I);let p=!1;o==="post"?l.scheduler=E=>{ue(E,d&&d.suspense)}:o!=="sync"&&(p=!0,l.scheduler=(E,$)=>{$?E():qs(E)}),l.augmentJob=E=>{t&&(E.flags|=4),p&&(E.flags|=2,d&&(E.id=d.uid,E.i=d))};const S=ar(e,t,l);return Pt&&(u?u.push(S):a&&S()),S}function yr(e,t,s){const i=this.proxy,n=G(e)?e.includes(".")?an(i,e):()=>i[e]:e.bind(i,i);let o;M(t)?o=t:(o=t.handler,s=t);const r=Rt(this),l=ln(n,o.bind(i),s);return r(),l}function an(e,t){const s=t.split(".");return()=>{let i=e;for(let n=0;ne.__isTeleport,Js=Symbol("_leaveCb");function _r(e){let t=e[0];if(e.length>1){for(const s of e)if(s.type!==Ae){t=s;break}}return t}function cn(e){if(!Qs(e))return rs(e.type)&&e.children?_r(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:s}=e;if(s){if(t&16)return s[0];if(t&32&&M(s.default))return s.default()}}function Xs(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;const s=e.component.subTree;Xs(rs(s.type)&&cn(s)||s,t)}else e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Zs(e,t){return M(e)?X({name:e.name},t,{setup:e}):e}function fn(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function dn(e,t){let s;return!!((s=Object.getOwnPropertyDescriptor(e,t))&&!s.configurable)}const ls=new WeakMap;function Tt(e,t,s,i,n=!1){if(k(e)){e.forEach((I,Z)=>Tt(I,t&&(k(t)?t[Z]:t),s,i,n));return}if(ft(i)&&!n){i.shapeFlag&512&&i.type.__asyncResolved&&i.component.subTree.component&&Tt(e,t,s,i.component.subTree);return}const o=i.shapeFlag&4?ms(i.component):i.el,r=n?null:o,{i:l,r:a}=e,u=t&&t.r,d=l.refs===B?l.refs={}:l.refs,p=l.setupState,S=j(p),E=p===B?xi:I=>dn(d,I)?!1:D(S,I),$=(I,Z)=>!(Z&&dn(d,Z));if(u!=null&&u!==a){if(un(t),G(u))d[u]=null,E(u)&&(p[u]=null);else if(le(u)){const I=t;$(u,I.k)&&(u.value=null),I.k&&(d[I.k]=null)}}if(M(a))lt(a,l,12,[r,d]);else{const I=G(a),Z=le(a);if(I||Z){const Y=()=>{if(e.f){const H=I?E(a)?p[a]:d[a]:$()||!e.k?a.value:d[e.k];if(n)k(H)&&As(H,o);else if(k(H))H.includes(o)||H.push(o);else if(I)d[a]=[o],E(a)&&(p[a]=d[a]);else{const U=[o];$(a,e.k)&&(a.value=U),e.k&&(d[e.k]=U)}}else I?(d[a]=r,E(a)&&(p[a]=r)):Z&&($(a,e.k)&&(a.value=r),e.k&&(d[e.k]=r))};if(r){const H=()=>{Y(),ls.delete(e)};H.id=-1,ls.set(e,H),ue(H,s)}else un(e),Y()}}}function un(e){const t=ls.get(e);t&&(t.flags|=8,ls.delete(e))}Gt().requestIdleCallback,Gt().cancelIdleCallback;const ft=e=>!!e.type.__asyncLoader,Qs=e=>e.type.__isKeepAlive;function wr(e,t){hn(e,"a",t)}function Sr(e,t){hn(e,"da",t)}function hn(e,t,s=ae){const i=e.__wdc||(e.__wdc=()=>{let n=s;for(;n;){if(n.isDeactivated)return;n=n.parent}return e()});if(as(t,i,s),s){let n=s.parent;for(;n&&n.parent;)Qs(n.parent.vnode)&&Er(i,t,s,n),n=n.parent}}function Er(e,t,s,i){const n=as(t,e,i,!0);gn(()=>{As(i[t],n)},s)}function as(e,t,s=ae,i=!1){if(s){const n=s[e]||(s[e]=[]),o=t.__weh||(t.__weh=(...r)=>{Se();const l=Rt(s),a=xe(t,s,e,r);return l(),Ee(),a});return i?n.unshift(o):n.push(o),o}}const Ue=e=>(t,s=ae)=>{(!Pt||e==="sp")&&as(e,(...i)=>t(...i),s)},Tr=Ue("bm"),pn=Ue("m"),Cr=Ue("bu"),Ar=Ue("u"),kr=Ue("bum"),gn=Ue("um"),Or=Ue("sp"),Mr=Ue("rtg"),Ir=Ue("rtc");function Rr(e,t=ae){as("ec",e,t)}const Pr="components";function Lr(e,t){return Hr(Pr,e,!0,t)||e}const Nr=Symbol.for("v-ndc");function Hr(e,t,s=!0,i=!1){const n=ne||ae;if(n){const o=n.type;{const l=Xn(o,!1);if(l&&(l===t||l===se(t)||l===qt(se(t))))return o}const r=vn(n[e]||o[e],t)||vn(n.appContext[e],t);return!r&&i?o:r}}function vn(e,t){return e&&(e[t]||e[se(t)]||e[qt(se(t))])}function dt(e,t,s,i){let n;const o=s,r=k(e);if(r||G(e)){const l=r&&Xe(e);let a=!1,u=!1;l&&(a=!ye(e),u=qe(e),e=Jt(e)),n=new Array(e.length);for(let d=0,p=e.length;d