From 168d3cb05cce33e4ff9c00bfb26ab2ea02f4b5fa Mon Sep 17 00:00:00 2001 From: maziggy Date: Sat, 13 Jun 2026 10:38:13 +0200 Subject: [PATCH] fix(ams): filter Configure AMS Slot profile list by printer model (#1623) The Filament Profile picker in the Configure AMS Slot modal listed profiles for every printer the user had ever imported / cloud-synced. On H2D the reporter saw local "Custom" PETG/PLA for A1 mini and P1S alongside Bambu Cloud and Orca Cloud profiles named "X1C eSUN PETG- Basic Filament" - none of them usable on the slot they were configuring. Three filter gaps in the same picker: - Local "Custom" imported profiles were unconditionally listed. Now parse their compatible_printers JSON and run presetCompatibility() against the slot's full slicer preset name ("Bambu Lab H2D 0.4 nozzle") derived from the printer-model registry + slot nozzle. Hide on 'mismatch'; 'match' and 'unknown' keep showing (back-compat for hand-edited imports without compatible_printers). - Cloud presets with the "@Bambu Lab " suffix form (user- renamed Bambu Cloud presets, most Orca Cloud profiles) slipped through the existing "@BBL " matcher. extractPresetModel now handles both, with case-insensitive registry reverse-lookup so "A1 mini" vs "A1 Mini" capitalisation drift doesn't hide A1 Mini profiles (#1649 alias match preserved). - Cloud presets with the model in the BODY of the name and no @ suffix ("X1C eSUN PETG-Basic Filament") returned null from the extractor. Added a body-text scan against every known model token from the registry, long-first sort so "A1 Mini" / "X1 Carbon" / "H2D Pro" aren't eaten by their shorter siblings, word-boundary regex so "PA1" doesn't false-match "A1". Fail-open posture preserved: registry not loaded or printerModel empty no-ops every filter; saved preset bypass keeps the active selection visible; built-in filaments stay unfiltered (generic fallback); free- form names with no recognisable token still show. --- CHANGELOG.md | 1 + .../src/components/ConfigureAmsSlotModal.tsx | 149 +++- .../{index-I24jNRag.js => index-BwzCCxhK.js} | 838 +++++++++--------- static/index.html | 2 +- 4 files changed, 559 insertions(+), 431 deletions(-) rename static/assets/{index-I24jNRag.js => index-BwzCCxhK.js} (73%) diff --git a/CHANGELOG.md b/CHANGELOG.md index b1282e048..9d81aa39f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ All notable changes to Bambuddy will be documented in this file. ## [0.2.5b1] - Unreleased ### Fixed +- **Configure AMS Slot: filament profiles for other printer models now filtered out (#1623, reported by @shaddowlink)** — Three independent gaps in the same picker, each surfaced by a different round of reporter screenshots. **(1) Local "Custom" imported profiles** were unconditionally listed regardless of the slot's printer; a user with PETG / PLA profiles imported from OrcaSlicer / BambuStudio for A1 mini, H2D, and P1S saw all three lined up when configuring an AMS slot on any one of those printers. **(2) Cloud presets using the `@Bambu Lab ` suffix form** (user-renamed Bambu Cloud presets and most Orca Cloud profiles) slipped through the existing filter, which only matched the `@BBL ` form Bambu's system presets use. **(3) Cloud presets with the printer model in the BODY of the name** (the literal failure shape the reporter screenshotted on H2D: `"X1C eSUN PETG-Basic Filament"` with no `@` suffix at all) — the existing extractor returned null for these and the filter no-op'd. **Fix:** `ConfigureAmsSlotModal.tsx` now (a) queries the backend's Bambu printer-model registry (`/slicer/printer-models`, same fetch SliceModal uses), (b) for local presets — reverse-looks-up the slot's short model code to a long printer-preset fragment, pairs it with the slot's nozzle diameter to synthesise the full slicer preset name ("Bambu Lab P1S 0.4 nozzle"), and passes that into `presetCompatibility(...)` from `utils/slicerPrinterMatch.ts` against each local preset's parsed `compatible_printers` JSON; (c) for cloud / Orca Cloud presets — `extractPresetModel(name, registry)` is now multi-strategy: first the `@BBL ` form (existing), then the `@Bambu Lab ` form with case-insensitive reverse-lookup against the registry (so "A1 mini" vs "A1 Mini" capitalisation drift doesn't hide A1 Mini profiles, preserving the #1649 alias-aware match), then a body-text scan against every known model token (long-name fragments and short codes from the registry, long-first sort so "A1 Mini" / "X1 Carbon" / "H2D Pro" aren't eaten by their shorter siblings, word-boundary regex so "PA1" doesn't match "A1" and "X1Box" doesn't match "X1"). Presets where no strategy resolves still pass through — free-form names with no recognisable model token stay visible (can't filter what we can't classify). **Fail-open posture preserved:** `match` and `unknown` verdicts keep showing for local presets (back-compat for hand-edited imports without `compatible_printers`); the currently-configured preset (`slotInfo.savedPresetId`) bypasses the filter so the active selection always remains visible; built-in filaments stay unfiltered (generic fallback); when the registry hasn't loaded yet OR `printerModel` is empty, every filter no-ops. **No backend / schema / i18n changes.** Frontend ESLint clean; `npm run build` clean; vitest `ConfigureAmsSlotModal` 24/24 green. - **Virtual Printer: empty AMS slots forwarded as phantom loaded filaments to BambuStudio Sync (#1726, reported with full code-level analysis by @needo37)** — On any VP bound to a target printer (Proxy mode, or Queue mode with a specific target), the slicer-facing AMS state was the printer's raw push_status — the empty-slot cleanup that `bambu_mqtt.py::_handle_ams_data` applies to Bambuddy's own internal state was NEVER run on the bridge cache. Concrete case: real printer has 3 filaments loaded (AMS-A slots 2/3/4), AMS-A slot 1 and all of AMS-B empty; Bambuddy's AMS card renders the empty slots correctly as Empty (control — internal state path is fine), but BambuStudio after Sync paints 7 populated/green-checked filament slots — the 3 real ones plus 4 phantoms whose color/material is stale RFID/calibration data from before those slots went empty. The diagnostic signature is the mismatch between the AMS card (correct) and the slicer view (wrong) for the same payload. Archive mode and Queue-by-model are NOT affected — no target printer → no bridge → the slicer gets the synthetic stub at `mqtt_server.py:927` with no real AMS data. **Root cause:** two code paths consume the same printer AMS payload. Internal (`bambu_mqtt.py::_handle_ams_data` lines 1802-1858) parses `tray_exist_bits`, promotes empty slots to `state=9`, and wipes the stale `tray_type`/`tray_color`/`tray_info_idx`/`tag_uid`/`tray_uuid`/`remain` fields. VP bridge (`mqtt_bridge.py::_on_printer_raw` lines 551-656) deep-merges AMS structurally via `_merge_ams_dict` and copies `tray_exist_bits` through as an opaque top-level scalar — but never applies the bit→clear-empty-slot logic. The cached state ships to the slicer untouched. **Fix:** factored the bit-clear logic out of `_handle_ams_data` into a shared module-level helper `bambu_mqtt.py::apply_tray_exist_bits(units, tray_exist_bits_str, *, power_on_flag, log_label)` and call it from both paths. The internal call site is replaced with a single helper invocation; the bridge calls it on the merged AMS dict after `_merge_ams_dict` runs, before the 1 Hz cached-as-base push picks the cache up. Shared shutdown guard preserved on both sides: all-zero bits + `power_on_flag=False` is the printer-off pattern (#765) and skips cleanup — a non-zero bits + power-off combo is valid idle-printer state (#1365 — X1C between prints) and still applies. AMS-HT units (`id >= 128`) skipped on both sides (separate addressing scheme). **Tests:** new `TestApplyTrayExistBitsHelper` class in `test_bambu_mqtt.py` (10 cases pinning the helper contract directly — missing/unparseable bits → no-op, shutdown guard, nonzero+power-off X1C case, int-9 state, AMS-HT skip, string id handling, multi-AMS global bit math, state-promote-even-without-stale-data). 3 new bridge regression tests in `test_vp_mqtt_bridge.py::TestPushStatusCache`: `test_tray_exist_bits_clears_empty_slots_in_slicer_cache` reproduces the #1726 wire shape (slot 0 carries stale `tray_type`/`tray_color`/`tray_info_idx`/`tag_uid`/`tray_uuid`/`remain` + `tray_exist_bits="e"` → slot 0 must clear, slots 1-3 preserved), `test_tray_exist_bits_shutdown_guard_preserves_cache` pins the printer-off path won't propagate phantom empties on every reconnect, `test_tray_exist_bits_skips_ams_ht_units` pins the HT addressing skip. Existing internal-state tests for the bit-clear logic (`test_tray_exist_bits_clears_empty_slots`, `test_tray_exist_bits_promotes_empty_slot_to_state_9`, `test_tray_exist_bits_does_not_change_state_on_loaded_slots`, …) continue to pass against the refactored internal path — same contract, same behavior, different implementation seam. One pre-existing bridge fixture (`test_partial_ams_unit_update_preserves_other_units`) had an inconsistent `tray_exist_bits="3"` for two AMS units (bit 0 set, bit 4 unset, but both unit 0 and unit 1 had slot 0 populated as loaded). The fix exposed the inconsistency — corrected to `"11"` (bits 0 + 4) to match what the real printer would send. Full backend suite 5955/5955 green; ruff clean; i18n parity 5107 leaves × 11 locales green (no new keys). Frontend untouched. **Verification on a live system (per @needo37's analysis):** set `BAMBUDDY_VP_DUMP_WIRE=1`, restart, Sync the slicer, inspect `/vp_wire/_out.json`. For any tray whose bit in `tray_exist_bits` is 0, `tray_type`/`tray_color` should now be empty. - **Windows: `/api/local-backup/status` 500 on `ZoneInfoNotFoundError: 'No time zone found with key UTC'` (from a user's log on the Windows installer)** — Reported via a Windows traceback against the new local-backup status endpoint. The stdlib `zoneinfo` module reads the system IANA tz database on Linux/macOS, but Windows has none — and the embedded Python in our Windows installer doesn't carry the `tzdata` PyPI package either, so even `ZoneInfo("UTC")` raises `ZoneInfoNotFoundError`. `_local_zone()` in `services/local_backup.py` only caught that exception for the `TZ`-env branch; the empty-`TZ` fallback and the unrecognised-`TZ` fallback both unconditionally called `ZoneInfo("UTC")` and re-raised, bubbling out of the FastAPI handler as a 500. **Fix (two parts):** (1) `_local_zone()` is now resilient — return type widened from `ZoneInfo` to `tzinfo`, the `UTC` fallback is wrapped in its own try, and the last-resort fallback returns the stdlib `datetime.timezone.utc` (which needs no IANA DB and satisfies every `astimezone` / `str()` call site downstream — `str(timezone.utc) == "UTC"` matches the previous response shape). Restores function on existing Windows installs without re-bundling. (2) `requirements.txt` now pins `tzdata>=2024.1; sys_platform == "win32"` so the next Windows installer build ships the IANA DB and any non-UTC `TZ` value (e.g. `Europe/Berlin`) resolves correctly — the stdlib fallback can only ever give UTC. Linux/macOS unaffected: the platform marker keeps them on the system tz DB they already have. **Tests:** new `test_zoneinfo_completely_unavailable_falls_back_to_stdlib_utc` in `test_local_backup.py` monkeypatches `ZoneInfo` to always raise `ZoneInfoNotFoundError` and pins that `_local_zone()` returns `datetime.timezone.utc` rather than propagating. 31/31 local_backup tests green; ruff clean. - **Print-modal "off" toggles for `flow_cali` and `nozzle_offset_cali` now actually suppress the calibration stage (live-tested on H2D 01.x)** — The Re-print / Schedule modal toggles for Flow Calibration and Nozzle Offset Calibration accepted the user's "off" choice and flowed it correctly through to the `project_file` MQTT publish — Bambuddy sent `extrude_cali_flag: 2` and `nozzle_offset_cali: 2` per our reading of "1 = run, 2 = skip" inherited from the #1478 / #1682 work. Live test on an H2D running firmware 01.x: with both toggles off in Bambuddy's modal, the printer's `stg` queue (the pre-print stage list firmware publishes via push_status) still included stage **8** ("Calibrating dynamic flow") and stage **39** ("Nozzle offset calibration") — and physically ran them at print start. The `2` value did NOT suppress the stage despite our earlier "skip and reuse stored PA" reading. **Root cause:** the encoding for the "off" wire value is `0`, not `2`. The `2` value appears to mean "skip the explicit calibration pass but still apply / verify the stored PA value via the calibration stage" — close to a no-op in terms of K-factor but the printer still queues the stage and runs the per-print physical sequence. `0` is what actually drops the stage from the `stg` queue. A real BambuStudio Send-dialog capture on the same firmware (proxy-mode VP echo) also showed `0` for both fields when calibrations are unchecked, contradicting the #1478 commit message which read `0` as "never sent by BambuStudio." **Fix:** `bambu_mqtt.py::start_print` — `extrude_cali_flag` is now `1 if flow_cali else 0` (was `2`), and `nozzle_offset_cali` is `1 if (nozzle_offset_cali and is_dual_nozzle) else 0` (was `2`). The dual-nozzle gate stays — single-nozzle prints continue to force-skip the nozzle-offset calibration their head doesn't support (#1682). `1` (run) is unchanged on both fields. **Verification:** live re-test on the same H2D with both toggles still off — `stg: [29, 13, 4, 14, 3]` (cooling, homing, filament change, nozzle cleaning, vibration comp). Stages 8 and 39 dropped out cleanly. **What's NOT fixed:** `vibration_cali` is a JSON `false` bool in both Bambuddy's and BambuStudio's wire format, and the H2D firmware queues stage **3** ("Vibration compensation") regardless of the bool value — this is firmware-side and not solvable at our dispatch layer with the current field. Captured as a follow-up to investigate whether a parallel `vibration_cali_flag` integer field exists. **Tests:** `test_bambu_mqtt.py` — `test_p2s_uses_boolean_format` flipped `extrude_cali_flag == 2` → `== 0`; `test_nozzle_offset_cali_default_is_skip`, `test_nozzle_offset_cali_ignored_on_single_nozzle`, `test_nozzle_offset_cali_false_on_dual_nozzle` flipped `== 2` → `== 0`; docstrings updated to reflect the #1721 finding. The `1 if user_wants` branch in both tests for the "on" case is unchanged. 281/281 bambu_mqtt tests green; full backend suite 5941/5941 green with `-n 30`; ruff clean; frontend untouched (rebuild + i18n parity confirmed clean per `feedback_run_all_ci_checks`). diff --git a/frontend/src/components/ConfigureAmsSlotModal.tsx b/frontend/src/components/ConfigureAmsSlotModal.tsx index 7510967a9..beb2233da 100644 --- a/frontend/src/components/ConfigureAmsSlotModal.tsx +++ b/frontend/src/components/ConfigureAmsSlotModal.tsx @@ -4,7 +4,7 @@ import { useTranslation } from 'react-i18next'; import { X, Loader2, Settings2, ChevronDown, CheckCircle2, RotateCcw } from 'lucide-react'; import { api } from '../api/client'; import type { KProfile } from '../api/client'; -import { matchesPrinterModelSuffix } from '../utils/slicerPrinterMatch'; +import { matchesPrinterModelSuffix, presetCompatibility, buildCompatibilityIndex } from '../utils/slicerPrinterMatch'; import { toFilamentId, isGenericFilamentId } from './spool-form/utils'; import { Button } from './Button'; @@ -230,13 +230,80 @@ function colorNameToHex(name: string): string | null { return COLOR_NAME_MAP[normalized] || null; } -// Extract printer model from preset name suffix "@BBL X1C 0.4 nozzle" → "X1C" -function extractPresetModel(name: string): string | null { +// Escape regex metacharacters and turn whitespace into ``\s+`` so a literal +// model token compiles to a flexible-whitespace word-boundary regex. +function _tokenToRegex(token: string): RegExp { + const escaped = token.replace(/[.*+?^${}()|[\]\\]/g, '\\$&').replace(/\s+/g, '\\s+'); + return new RegExp(`\\b${escaped}\\b`, 'i'); +} + +// Extract printer model from a preset name → normalized short code +// (e.g. "X1C", "H2D"). Two strategies in order: +// +// (1) ``@`` suffix — the BambuStudio naming convention. Two shapes: +// - "@BBL X1C 0.4 nozzle" → "X1C" (short-code form, +// Bambu Cloud system presets) +// - "@Bambu Lab X1 Carbon 0.4 nozzle" → "X1C" (long-form, used by +// user-renamed Bambu Cloud presets and most Orca Cloud profiles — +// reverse-looked-up via the backend printer-model registry) +// +// (2) Body scan — many user-authored / Orca Cloud presets put the printer +// model at the START of the name with no @ suffix at all (the literal +// shape that surfaced #1623: "X1C eSUN PETG-Basic Filament"). Scan the +// name for any known model token (every long-name fragment + every short +// code from the registry) and return the first match. Long-first sort +// keeps "A1 Mini" / "X1 Carbon" / "H2D Pro" from being eaten by their +// shorter sibling ("A1" / "X1" / "H2D"). Word-boundary regex prevents +// false-positives on partial substrings (e.g. "PA1" doesn't match "A1", +// "X1Box" doesn't match "X1"). +// +// Returns null when neither strategy resolves; the caller keeps such +// presets visible (can't filter what we can't classify). +// +// ``printerModelsLongToShort`` is the backend's PRINTER_MODEL_MAP shape: +// keys are "Bambu Lab ", values are short codes. +function extractPresetModel( + name: string, + printerModelsLongToShort: Record, +): string | null { const atIdx = name.indexOf('@'); - if (atIdx < 0) return null; - const suffix = name.slice(atIdx + 1).trim(); - const bblMatch = suffix.match(/^BBL\s+(.+?)(?:\s+[\d.]+\s*nozzle)?$/i); - if (bblMatch) return bblMatch[1].trim(); + if (atIdx >= 0) { + const suffix = name.slice(atIdx + 1).trim(); + const bblMatch = suffix.match(/^BBL\s+(.+?)(?:\s+[\d.]+\s*nozzle)?$/i); + if (bblMatch) return bblMatch[1].trim(); + const longMatch = suffix.match(/^Bambu Lab\s+(.+?)(?:\s+[\d.]+\s*nozzle)?$/i); + if (longMatch) { + const longFragment = longMatch[1].trim(); + const fullKey = `Bambu Lab ${longFragment}`; + if (printerModelsLongToShort[fullKey]) return printerModelsLongToShort[fullKey]; + const lower = fullKey.toLowerCase(); + for (const [k, v] of Object.entries(printerModelsLongToShort)) { + if (k.toLowerCase() === lower) return v; + } + return longFragment; + } + } + + // Body scan — accumulate {token, short} pairs and try long-first. + const tokens: Array<{ token: string; short: string }> = []; + const seen = new Set(); + for (const [longName, short] of Object.entries(printerModelsLongToShort)) { + const fragment = longName.replace(/^Bambu Lab\s+/, ''); + const key = fragment.toLowerCase(); + if (!seen.has(key)) { + tokens.push({ token: fragment, short }); + seen.add(key); + } + const shortKey = short.toLowerCase(); + if (!seen.has(shortKey)) { + tokens.push({ token: short, short }); + seen.add(shortKey); + } + } + tokens.sort((a, b) => b.token.length - a.token.length); + for (const { token, short } of tokens) { + if (_tokenToRegex(token).test(name)) return short; + } return null; } @@ -309,6 +376,39 @@ export function ConfigureAmsSlotModal({ staleTime: Infinity, }); + // Backend Bambu printer-model registry — drives the @BBL short-code matcher + // and (here) the reverse short-code → long-name lookup that lets us check + // imported local presets' `compatible_printers` list against the slot's + // printer (#1623). Long staleTime: the registry only changes across backend + // releases. + const { data: printerModelsData } = useQuery({ + queryKey: ['slicerPrinterModels'], + queryFn: api.getSlicerPrinterModels, + enabled: isOpen, + staleTime: Infinity, + }); + + const compatIndex = useMemo( + () => buildCompatibilityIndex(printerModelsData ?? {}), + [printerModelsData], + ); + + // The full printer-preset name for this slot's printer — e.g. the short + // code "X1C" resolves to "Bambu Lab X1 Carbon 0.4 nozzle" via the backend + // registry plus the slot's nozzle. Used to filter imported local presets + // whose `compatible_printers` list is keyed by the full slicer preset name. + // Null when the registry hasn't loaded or no model is known — caller skips + // the filter in that case (fail-open, same shape as the cloud-preset filter). + const fullPrinterName = useMemo(() => { + if (!printerModel || !printerModelsData) return null; + for (const [longName, shortCode] of Object.entries(printerModelsData)) { + if (shortCode === printerModel) { + return `${longName.startsWith('Bambu Lab ') ? longName : `Bambu Lab ${longName}`} ${nozzleDiameter} nozzle`; + } + } + return null; + }, [printerModel, printerModelsData, nozzleDiameter]); + // Configure slot mutation const configureMutation = useMutation({ mutationFn: async () => { @@ -584,7 +684,7 @@ export function ConfigureAmsSlotModal({ coveredIds.add(orcaId); if (query && !op.name.toLowerCase().includes(query)) continue; if (printerModel) { - const presetModel = extractPresetModel(op.name); + const presetModel = extractPresetModel(op.name, printerModelsData ?? {}); if (presetModel && !matchesPrinterModelSuffix(presetModel, printerModel)) continue; } // All Orca Cloud profiles are user-authored, so isUser is always true. @@ -607,18 +707,45 @@ export function ConfigureAmsSlotModal({ // alias-aware match so Bambu's "A1 Mini" → "A1M" cloud rename (#1649) // doesn't hide A1 Mini cloud profiles. if (!isCurrentPreset && printerModel) { - const presetModel = extractPresetModel(cp.name); + const presetModel = extractPresetModel(cp.name, printerModelsData ?? {}); if (presetModel && !matchesPrinterModelSuffix(presetModel, printerModel)) continue; } items.push({ id: cp.setting_id, name: cp.name, source: 'cloud', isUser: isUserPreset(cp.setting_id) }); } } - // 2. Local presets (always shown — user-imported profiles work on any printer) + // 2. Local presets — filter by the slicer's own ``compatible_printers`` + // list when present (#1623). LocalPreset.compatible_printers is a JSON- + // encoded string array; presetCompatibility returns 'mismatch' when the + // list is set and our derived full printer name isn't in it, 'unknown' + // when neither the list nor an @BBL token is parseable — we hide on + // 'mismatch' only so user-imported presets without compatible_printers + // still surface (back-compat with the prior "always show" behaviour for + // hand-edited / lossily-imported presets). if (localPresets?.filament) { + const savedLocalId = slotInfo.savedPresetId; for (const lp of localPresets.filament) { const localId = `local_${lp.id}`; if (query && !lp.name.toLowerCase().includes(query)) continue; + const isCurrentPreset = savedLocalId === localId; + if (!isCurrentPreset && fullPrinterName) { + let compatList: string[] | null = null; + if (lp.compatible_printers) { + try { + const parsed = JSON.parse(lp.compatible_printers); + if (Array.isArray(parsed)) compatList = parsed.filter((s): s is string => typeof s === 'string'); + } catch { + compatList = null; + } + } + const verdict = presetCompatibility( + { name: lp.name, compatible_printers: compatList }, + 'filament', + fullPrinterName, + compatIndex, + ); + if (verdict === 'mismatch') continue; + } items.push({ id: localId, name: lp.name, source: 'local', isUser: false }); } } @@ -649,7 +776,7 @@ export function ConfigureAmsSlotModal({ if (!a.isUser && b.isUser) return 1; return a.name.localeCompare(b.name); }); - }, [orcaCloudList?.filament, cloudSettings?.filament, localPresets?.filament, builtinFilaments, searchQuery, printerModel, slotInfo.savedPresetId, slotInfo.trayInfoIdx]); + }, [orcaCloudList?.filament, cloudSettings?.filament, localPresets?.filament, builtinFilaments, searchQuery, printerModel, slotInfo.savedPresetId, slotInfo.trayInfoIdx, fullPrinterName, compatIndex, printerModelsData]); // Get full preset name for K profile filtering (brand + material, without printer suffix) const selectedPresetInfo = useMemo(() => { diff --git a/static/assets/index-I24jNRag.js b/static/assets/index-BwzCCxhK.js similarity index 73% rename from static/assets/index-I24jNRag.js rename to static/assets/index-BwzCCxhK.js index c1df291fa..903ae9161 100644 --- a/static/assets/index-I24jNRag.js +++ b/static/assets/index-BwzCCxhK.js @@ -1,51 +1,51 @@ -function pme(t,e){for(var a=0;an[i]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function a(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function n(i){if(i.ep)return;i.ep=!0;const s=a(i);fetch(i.href,s)}})();var D_=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function zc(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var lE={exports:{}},s0={};var Lq;function hme(){if(Lq)return s0;Lq=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function a(n,i,s){var o=null;if(s!==void 0&&(o=""+s),i.key!==void 0&&(o=""+i.key),"key"in i){s={};for(var l in i)l!=="key"&&(s[l]=i[l])}else s=i;return i=s.ref,{$$typeof:t,type:n,key:o,ref:i!==void 0?i:null,props:s}}return s0.Fragment=e,s0.jsx=a,s0.jsxs=a,s0}var Rq;function fme(){return Rq||(Rq=1,lE.exports=hme()),lE.exports}var r=fme(),cE={exports:{}},er={};var zq;function gme(){if(zq)return er;zq=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),n=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),s=Symbol.for("react.consumer"),o=Symbol.for("react.context"),l=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),u=Symbol.for("react.lazy"),m=Symbol.for("react.activity"),p=Symbol.iterator;function f(K){return K===null||typeof K!="object"?null:(K=p&&K[p]||K["@@iterator"],typeof K=="function"?K:null)}var g={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},v=Object.assign,b={};function x(K,ie,ue){this.props=K,this.context=ie,this.refs=b,this.updater=ue||g}x.prototype.isReactComponent={},x.prototype.setState=function(K,ie){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,ie,"setState")},x.prototype.forceUpdate=function(K){this.updater.enqueueForceUpdate(this,K,"forceUpdate")};function S(){}S.prototype=x.prototype;function k(K,ie,ue){this.props=K,this.context=ie,this.refs=b,this.updater=ue||g}var P=k.prototype=new S;P.constructor=k,v(P,x.prototype),P.isPureReactComponent=!0;var N=Array.isArray;function T(){}var j={H:null,A:null,T:null,S:null},D=Object.prototype.hasOwnProperty;function C(K,ie,ue){var he=ue.ref;return{$$typeof:t,type:K,key:ie,ref:he!==void 0?he:null,props:ue}}function E(K,ie){return C(K.type,ie,K.props)}function R(K){return typeof K=="object"&&K!==null&&K.$$typeof===t}function I(K){var ie={"=":"=0",":":"=2"};return"$"+K.replace(/[=:]/g,function(ue){return ie[ue]})}var O=/\/+/g;function z(K,ie){return typeof K=="object"&&K!==null&&K.key!=null?I(""+K.key):ie.toString(36)}function X(K){switch(K.status){case"fulfilled":return K.value;case"rejected":throw K.reason;default:switch(typeof K.status=="string"?K.then(T,T):(K.status="pending",K.then(function(ie){K.status==="pending"&&(K.status="fulfilled",K.value=ie)},function(ie){K.status==="pending"&&(K.status="rejected",K.reason=ie)})),K.status){case"fulfilled":return K.value;case"rejected":throw K.reason}}throw K}function ae(K,ie,ue,he,ge){var q=typeof K;(q==="undefined"||q==="boolean")&&(K=null);var Q=!1;if(K===null)Q=!0;else switch(q){case"bigint":case"string":case"number":Q=!0;break;case"object":switch(K.$$typeof){case t:case e:Q=!0;break;case u:return Q=K._init,ae(Q(K._payload),ie,ue,he,ge)}}if(Q)return ge=ge(K),Q=he===""?"."+z(K,0):he,N(ge)?(ue="",Q!=null&&(ue=Q.replace(O,"$&/")+"/"),ae(ge,ie,ue,"",function(B){return B})):ge!=null&&(R(ge)&&(ge=E(ge,ue+(ge.key==null||K&&K.key===ge.key?"":(""+ge.key).replace(O,"$&/")+"/")+Q)),ie.push(ge)),1;Q=0;var A=he===""?".":he+":";if(N(K))for(var F=0;F>>1,oe=ae[de];if(0>>1;dei(ue,ce))hei(ge,ue)?(ae[de]=ge,ae[he]=ce,de=he):(ae[de]=ue,ae[ie]=ce,de=ie);else if(hei(ge,ce))ae[de]=ge,ae[he]=ce,de=he;else break e}}return Y}function i(ae,Y){var ce=ae.sortIndex-Y.sortIndex;return ce!==0?ce:ae.id-Y.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var s=performance;t.unstable_now=function(){return s.now()}}else{var o=Date,l=o.now();t.unstable_now=function(){return o.now()-l}}var c=[],d=[],u=1,m=null,p=3,f=!1,g=!1,v=!1,b=!1,x=typeof setTimeout=="function"?setTimeout:null,S=typeof clearTimeout=="function"?clearTimeout:null,k=typeof setImmediate<"u"?setImmediate:null;function P(ae){for(var Y=a(d);Y!==null;){if(Y.callback===null)n(d);else if(Y.startTime<=ae)n(d),Y.sortIndex=Y.expirationTime,e(c,Y);else break;Y=a(d)}}function N(ae){if(v=!1,P(ae),!g)if(a(c)!==null)g=!0,T||(T=!0,I());else{var Y=a(d);Y!==null&&X(N,Y.startTime-ae)}}var T=!1,j=-1,D=5,C=-1;function E(){return b?!0:!(t.unstable_now()-Cae&&E());){var de=m.callback;if(typeof de=="function"){m.callback=null,p=m.priorityLevel;var oe=de(m.expirationTime<=ae);if(ae=t.unstable_now(),typeof oe=="function"){m.callback=oe,P(ae),Y=!0;break t}m===a(c)&&n(c),P(ae)}else n(c);m=a(c)}if(m!==null)Y=!0;else{var K=a(d);K!==null&&X(N,K.startTime-ae),Y=!1}}break e}finally{m=null,p=ce,f=!1}Y=void 0}}finally{Y?I():T=!1}}}var I;if(typeof k=="function")I=function(){k(R)};else if(typeof MessageChannel<"u"){var O=new MessageChannel,z=O.port2;O.port1.onmessage=R,I=function(){z.postMessage(null)}}else I=function(){x(R,0)};function X(ae,Y){j=x(function(){ae(t.unstable_now())},Y)}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(ae){ae.callback=null},t.unstable_forceFrameRate=function(ae){0>ae||125de?(ae.sortIndex=ce,e(d,ae),a(c)===null&&ae===a(d)&&(v?(S(j),j=-1):v=!0,X(N,ce-de))):(ae.sortIndex=oe,e(c,ae),g||f||(g=!0,T||(T=!0,I()))),ae},t.unstable_shouldYield=E,t.unstable_wrapCallback=function(ae){var Y=p;return function(){var ce=p;p=Y;try{return ae.apply(this,arguments)}finally{p=ce}}}})(mE)),mE}var Bq;function yme(){return Bq||(Bq=1,uE.exports=xme()),uE.exports}var pE={exports:{}},Vs={};var Uq;function vme(){if(Uq)return Vs;Uq=1;var t=ub();function e(c){var d="https://react.dev/errors/"+c;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),pE.exports=vme(),pE.exports}var qq;function wme(){if(qq)return o0;qq=1;var t=yme(),e=ub(),a=cZ();function n(h){var w="https://react.dev/errors/"+h;if(1oe||(h.current=de[oe],de[oe]=null,oe--)}function ue(h,w){oe++,de[oe]=h.current,h.current=w}var he=K(null),ge=K(null),q=K(null),Q=K(null);function A(h,w){switch(ue(q,w),ue(ge,h),ue(he,null),w.nodeType){case 9:case 11:h=(h=w.documentElement)&&(h=h.namespaceURI)?nq(h):0;break;default:if(h=w.tagName,w=w.namespaceURI)w=nq(w),h=iq(w,h);else switch(h){case"svg":h=1;break;case"math":h=2;break;default:h=0}}ie(he),ue(he,h)}function F(){ie(he),ie(ge),ie(q)}function B(h){h.memoizedState!==null&&ue(Q,h);var w=he.current,_=iq(w,h.type);w!==_&&(ue(ge,h),ue(he,_))}function W(h){ge.current===h&&(ie(he),ie(ge)),Q.current===h&&(ie(Q),a0._currentValue=ce)}var H,le;function U(h){if(H===void 0)try{throw Error()}catch(_){var w=_.stack.trim().match(/\n( *(at )?)/);H=w&&w[1]||"",le=-1<_.stack.indexOf(` +function hme(t,e){for(var a=0;an[i]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function a(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function n(i){if(i.ep)return;i.ep=!0;const s=a(i);fetch(i.href,s)}})();var D_=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function zc(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var lE={exports:{}},s0={};var Lq;function fme(){if(Lq)return s0;Lq=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function a(n,i,s){var o=null;if(s!==void 0&&(o=""+s),i.key!==void 0&&(o=""+i.key),"key"in i){s={};for(var l in i)l!=="key"&&(s[l]=i[l])}else s=i;return i=s.ref,{$$typeof:t,type:n,key:o,ref:i!==void 0?i:null,props:s}}return s0.Fragment=e,s0.jsx=a,s0.jsxs=a,s0}var Rq;function gme(){return Rq||(Rq=1,lE.exports=fme()),lE.exports}var r=gme(),cE={exports:{}},er={};var zq;function bme(){if(zq)return er;zq=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),n=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),s=Symbol.for("react.consumer"),o=Symbol.for("react.context"),l=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),u=Symbol.for("react.lazy"),m=Symbol.for("react.activity"),p=Symbol.iterator;function f(K){return K===null||typeof K!="object"?null:(K=p&&K[p]||K["@@iterator"],typeof K=="function"?K:null)}var g={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},v=Object.assign,b={};function x(K,se,ue){this.props=K,this.context=se,this.refs=b,this.updater=ue||g}x.prototype.isReactComponent={},x.prototype.setState=function(K,se){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,se,"setState")},x.prototype.forceUpdate=function(K){this.updater.enqueueForceUpdate(this,K,"forceUpdate")};function S(){}S.prototype=x.prototype;function k(K,se,ue){this.props=K,this.context=se,this.refs=b,this.updater=ue||g}var P=k.prototype=new S;P.constructor=k,v(P,x.prototype),P.isPureReactComponent=!0;var N=Array.isArray;function T(){}var j={H:null,A:null,T:null,S:null},D=Object.prototype.hasOwnProperty;function C(K,se,ue){var he=ue.ref;return{$$typeof:t,type:K,key:se,ref:he!==void 0?he:null,props:ue}}function E(K,se){return C(K.type,se,K.props)}function R(K){return typeof K=="object"&&K!==null&&K.$$typeof===t}function I(K){var se={"=":"=0",":":"=2"};return"$"+K.replace(/[=:]/g,function(ue){return se[ue]})}var O=/\/+/g;function z(K,se){return typeof K=="object"&&K!==null&&K.key!=null?I(""+K.key):se.toString(36)}function X(K){switch(K.status){case"fulfilled":return K.value;case"rejected":throw K.reason;default:switch(typeof K.status=="string"?K.then(T,T):(K.status="pending",K.then(function(se){K.status==="pending"&&(K.status="fulfilled",K.value=se)},function(se){K.status==="pending"&&(K.status="rejected",K.reason=se)})),K.status){case"fulfilled":return K.value;case"rejected":throw K.reason}}throw K}function ne(K,se,ue,he,ge){var H=typeof K;(H==="undefined"||H==="boolean")&&(K=null);var Q=!1;if(K===null)Q=!0;else switch(H){case"bigint":case"string":case"number":Q=!0;break;case"object":switch(K.$$typeof){case t:case e:Q=!0;break;case u:return Q=K._init,ne(Q(K._payload),se,ue,he,ge)}}if(Q)return ge=ge(K),Q=he===""?"."+z(K,0):he,N(ge)?(ue="",Q!=null&&(ue=Q.replace(O,"$&/")+"/"),ne(ge,se,ue,"",function(q){return q})):ge!=null&&(R(ge)&&(ge=E(ge,ue+(ge.key==null||K&&K.key===ge.key?"":(""+ge.key).replace(O,"$&/")+"/")+Q)),se.push(ge)),1;Q=0;var A=he===""?".":he+":";if(N(K))for(var F=0;F>>1,le=ne[de];if(0>>1;dei(ue,ce))hei(ge,ue)?(ne[de]=ge,ne[he]=ce,de=he):(ne[de]=ue,ne[se]=ce,de=se);else if(hei(ge,ce))ne[de]=ge,ne[he]=ce,de=he;else break e}}return Y}function i(ne,Y){var ce=ne.sortIndex-Y.sortIndex;return ce!==0?ce:ne.id-Y.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var s=performance;t.unstable_now=function(){return s.now()}}else{var o=Date,l=o.now();t.unstable_now=function(){return o.now()-l}}var c=[],d=[],u=1,m=null,p=3,f=!1,g=!1,v=!1,b=!1,x=typeof setTimeout=="function"?setTimeout:null,S=typeof clearTimeout=="function"?clearTimeout:null,k=typeof setImmediate<"u"?setImmediate:null;function P(ne){for(var Y=a(d);Y!==null;){if(Y.callback===null)n(d);else if(Y.startTime<=ne)n(d),Y.sortIndex=Y.expirationTime,e(c,Y);else break;Y=a(d)}}function N(ne){if(v=!1,P(ne),!g)if(a(c)!==null)g=!0,T||(T=!0,I());else{var Y=a(d);Y!==null&&X(N,Y.startTime-ne)}}var T=!1,j=-1,D=5,C=-1;function E(){return b?!0:!(t.unstable_now()-Cne&&E());){var de=m.callback;if(typeof de=="function"){m.callback=null,p=m.priorityLevel;var le=de(m.expirationTime<=ne);if(ne=t.unstable_now(),typeof le=="function"){m.callback=le,P(ne),Y=!0;break t}m===a(c)&&n(c),P(ne)}else n(c);m=a(c)}if(m!==null)Y=!0;else{var K=a(d);K!==null&&X(N,K.startTime-ne),Y=!1}}break e}finally{m=null,p=ce,f=!1}Y=void 0}}finally{Y?I():T=!1}}}var I;if(typeof k=="function")I=function(){k(R)};else if(typeof MessageChannel<"u"){var O=new MessageChannel,z=O.port2;O.port1.onmessage=R,I=function(){z.postMessage(null)}}else I=function(){x(R,0)};function X(ne,Y){j=x(function(){ne(t.unstable_now())},Y)}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(ne){ne.callback=null},t.unstable_forceFrameRate=function(ne){0>ne||125de?(ne.sortIndex=ce,e(d,ne),a(c)===null&&ne===a(d)&&(v?(S(j),j=-1):v=!0,X(N,ce-de))):(ne.sortIndex=le,e(c,ne),g||f||(g=!0,T||(T=!0,I()))),ne},t.unstable_shouldYield=E,t.unstable_wrapCallback=function(ne){var Y=p;return function(){var ce=p;p=Y;try{return ne.apply(this,arguments)}finally{p=ce}}}})(mE)),mE}var Bq;function vme(){return Bq||(Bq=1,uE.exports=yme()),uE.exports}var pE={exports:{}},Vs={};var Uq;function wme(){if(Uq)return Vs;Uq=1;var t=mb();function e(c){var d="https://react.dev/errors/"+c;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),pE.exports=wme(),pE.exports}var qq;function Sme(){if(qq)return o0;qq=1;var t=vme(),e=mb(),a=cZ();function n(h){var w="https://react.dev/errors/"+h;if(1le||(h.current=de[le],de[le]=null,le--)}function ue(h,w){le++,de[le]=h.current,h.current=w}var he=K(null),ge=K(null),H=K(null),Q=K(null);function A(h,w){switch(ue(H,w),ue(ge,h),ue(he,null),w.nodeType){case 9:case 11:h=(h=w.documentElement)&&(h=h.namespaceURI)?nq(h):0;break;default:if(h=w.tagName,w=w.namespaceURI)w=nq(w),h=iq(w,h);else switch(h){case"svg":h=1;break;case"math":h=2;break;default:h=0}}se(he),ue(he,h)}function F(){se(he),se(ge),se(H)}function q(h){h.memoizedState!==null&&ue(Q,h);var w=he.current,_=iq(w,h.type);w!==_&&(ue(ge,h),ue(he,_))}function W(h){ge.current===h&&(se(he),se(ge)),Q.current===h&&(se(Q),a0._currentValue=ce)}var U,Z;function B(h){if(U===void 0)try{throw Error()}catch(_){var w=_.stack.trim().match(/\n( *(at )?)/);U=w&&w[1]||"",Z=-1<_.stack.indexOf(` at`)?" ()":-1<_.stack.indexOf("@")?"@unknown:0:0":""}return` -`+H+h+le}var G=!1;function Z(h,w){if(!h||G)return"";G=!0;var _=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var M={DetermineComponentFrameRoot:function(){try{if(w){var Wt=function(){throw Error()};if(Object.defineProperty(Wt.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(Wt,[])}catch(zt){var Dt=zt}Reflect.construct(h,[],Wt)}else{try{Wt.call()}catch(zt){Dt=zt}h.call(Wt.prototype)}}else{try{throw Error()}catch(zt){Dt=zt}(Wt=h())&&typeof Wt.catch=="function"&&Wt.catch(function(){})}}catch(zt){if(zt&&Dt&&typeof zt.stack=="string")return[zt.stack,Dt.stack]}return[null,null]}};M.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var $=Object.getOwnPropertyDescriptor(M.DetermineComponentFrameRoot,"name");$&&$.configurable&&Object.defineProperty(M.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var ee=M.DetermineComponentFrameRoot(),ke=ee[0],He=ee[1];if(ke&&He){var mt=ke.split(` -`),Et=He.split(` +`+U+h+Z}var G=!1;function ae(h,w){if(!h||G)return"";G=!0;var _=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var M={DetermineComponentFrameRoot:function(){try{if(w){var Wt=function(){throw Error()};if(Object.defineProperty(Wt.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(Wt,[])}catch(zt){var Dt=zt}Reflect.construct(h,[],Wt)}else{try{Wt.call()}catch(zt){Dt=zt}h.call(Wt.prototype)}}else{try{throw Error()}catch(zt){Dt=zt}(Wt=h())&&typeof Wt.catch=="function"&&Wt.catch(function(){})}}catch(zt){if(zt&&Dt&&typeof zt.stack=="string")return[zt.stack,Dt.stack]}return[null,null]}};M.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var $=Object.getOwnPropertyDescriptor(M.DetermineComponentFrameRoot,"name");$&&$.configurable&&Object.defineProperty(M.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var re=M.DetermineComponentFrameRoot(),ke=re[0],qe=re[1];if(ke&&qe){var mt=ke.split(` +`),Et=qe.split(` `);for($=M=0;M$||mt[M]!==Et[$]){var Ut=` -`+mt[M].replace(" at new "," at ");return h.displayName&&Ut.includes("")&&(Ut=Ut.replace("",h.displayName)),Ut}while(1<=M&&0<=$);break}}}finally{G=!1,Error.prepareStackTrace=_}return(_=h?h.displayName||h.name:"")?U(_):""}function J(h,w){switch(h.tag){case 26:case 27:case 5:return U(h.type);case 16:return U("Lazy");case 13:return h.child!==w&&w!==null?U("Suspense Fallback"):U("Suspense");case 19:return U("SuspenseList");case 0:case 15:return Z(h.type,!1);case 11:return Z(h.type.render,!1);case 1:return Z(h.type,!0);case 31:return U("Activity");default:return""}}function re(h){try{var w="",_=null;do w+=J(h,_),_=h,h=h.return;while(h);return w}catch(M){return` +`+mt[M].replace(" at new "," at ");return h.displayName&&Ut.includes("")&&(Ut=Ut.replace("",h.displayName)),Ut}while(1<=M&&0<=$);break}}}finally{G=!1,Error.prepareStackTrace=_}return(_=h?h.displayName||h.name:"")?B(_):""}function te(h,w){switch(h.tag){case 26:case 27:case 5:return B(h.type);case 16:return B("Lazy");case 13:return h.child!==w&&w!==null?B("Suspense Fallback"):B("Suspense");case 19:return B("SuspenseList");case 0:case 15:return ae(h.type,!1);case 11:return ae(h.type.render,!1);case 1:return ae(h.type,!0);case 31:return B("Activity");default:return""}}function J(h){try{var w="",_=null;do w+=te(h,_),_=h,h=h.return;while(h);return w}catch(M){return` Error generating stack: `+M.message+` -`+M.stack}}var se=Object.prototype.hasOwnProperty,fe=t.unstable_scheduleCallback,me=t.unstable_cancelCallback,pe=t.unstable_shouldYield,V=t.unstable_requestPaint,L=t.unstable_now,te=t.unstable_getCurrentPriorityLevel,be=t.unstable_ImmediatePriority,xe=t.unstable_UserBlockingPriority,ve=t.unstable_NormalPriority,De=t.unstable_LowPriority,je=t.unstable_IdlePriority,Te=t.log,qe=t.unstable_setDisableYieldValue,Pe=null,Ie=null;function Re(h){if(typeof Te=="function"&&qe(h),Ie&&typeof Ie.setStrictMode=="function")try{Ie.setStrictMode(Pe,h)}catch{}}var Ue=Math.clz32?Math.clz32:Oe,ze=Math.log,it=Math.LN2;function Oe(h){return h>>>=0,h===0?32:31-(ze(h)/it|0)|0}var tt=256,Fe=262144,Ye=4194304;function Ve(h){var w=h&42;if(w!==0)return w;switch(h&-h){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 h&261888;case 262144:case 524288:case 1048576:case 2097152:return h&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return h&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return h}}function Me(h,w,_){var M=h.pendingLanes;if(M===0)return 0;var $=0,ee=h.suspendedLanes,ke=h.pingedLanes;h=h.warmLanes;var He=M&134217727;return He!==0?(M=He&~ee,M!==0?$=Ve(M):(ke&=He,ke!==0?$=Ve(ke):_||(_=He&~h,_!==0&&($=Ve(_))))):(He=M&~ee,He!==0?$=Ve(He):ke!==0?$=Ve(ke):_||(_=M&~h,_!==0&&($=Ve(_)))),$===0?0:w!==0&&w!==$&&(w&ee)===0&&(ee=$&-$,_=w&-w,ee>=_||ee===32&&(_&4194048)!==0)?w:$}function Be(h,w){return(h.pendingLanes&~(h.suspendedLanes&~h.pingedLanes)&w)===0}function Qe(h,w){switch(h){case 1:case 2:case 4:case 8:case 64:return w+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 w+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 Ge(){var h=Ye;return Ye<<=1,(Ye&62914560)===0&&(Ye=4194304),h}function Ee(h){for(var w=[],_=0;31>_;_++)w.push(h);return w}function at(h,w){h.pendingLanes|=w,w!==268435456&&(h.suspendedLanes=0,h.pingedLanes=0,h.warmLanes=0)}function Xe(h,w,_,M,$,ee){var ke=h.pendingLanes;h.pendingLanes=_,h.suspendedLanes=0,h.pingedLanes=0,h.warmLanes=0,h.expiredLanes&=_,h.entangledLanes&=_,h.errorRecoveryDisabledLanes&=_,h.shellSuspendCounter=0;var He=h.entanglements,mt=h.expirationTimes,Et=h.hiddenUpdates;for(_=ke&~_;0<_;){var Ut=31-Ue(_),Wt=1<"u")return null;try{return h.activeElement||h.body}catch{return h.body}}var yr=/[\n"\\]/g;function ja(h){return h.replace(yr,function(w){return"\\"+w.charCodeAt(0).toString(16)+" "})}function $a(h,w,_,M,$,ee,ke,He){h.name="",ke!=null&&typeof ke!="function"&&typeof ke!="symbol"&&typeof ke!="boolean"?h.type=ke:h.removeAttribute("type"),w!=null?ke==="number"?(w===0&&h.value===""||h.value!=w)&&(h.value=""+ra(w)):h.value!==""+ra(w)&&(h.value=""+ra(w)):ke!=="submit"&&ke!=="reset"||h.removeAttribute("value"),w!=null?Gr(h,ke,ra(w)):_!=null?Gr(h,ke,ra(_)):M!=null&&h.removeAttribute("value"),$==null&&ee!=null&&(h.defaultChecked=!!ee),$!=null&&(h.checked=$&&typeof $!="function"&&typeof $!="symbol"),He!=null&&typeof He!="function"&&typeof He!="symbol"&&typeof He!="boolean"?h.name=""+ra(He):h.removeAttribute("name")}function Oa(h,w,_,M,$,ee,ke,He){if(ee!=null&&typeof ee!="function"&&typeof ee!="symbol"&&typeof ee!="boolean"&&(h.type=ee),w!=null||_!=null){if(!(ee!=="submit"&&ee!=="reset"||w!=null)){Jt(h);return}_=_!=null?""+ra(_):"",w=w!=null?""+ra(w):_,He||w===h.value||(h.value=w),h.defaultValue=w}M=M??$,M=typeof M!="function"&&typeof M!="symbol"&&!!M,h.checked=He?h.checked:!!M,h.defaultChecked=!!M,ke!=null&&typeof ke!="function"&&typeof ke!="symbol"&&typeof ke!="boolean"&&(h.name=ke),Jt(h)}function Gr(h,w,_){w==="number"&&Ua(h.ownerDocument)===h||h.defaultValue===""+_||(h.defaultValue=""+_)}function et(h,w,_,M){if(h=h.options,w){w={};for(var $=0;$<_.length;$++)w["$"+_[$]]=!0;for(_=0;_"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),xp=!1;if(rr)try{var Pd={};Object.defineProperty(Pd,"passive",{get:function(){xp=!0}}),window.addEventListener("test",Pd,Pd),window.removeEventListener("test",Pd,Pd)}catch{xp=!1}var mi=null,Eu=null,Si=null;function Sf(){if(Si)return Si;var h,w=Eu,_=w.length,M,$="value"in mi?mi.value:mi.textContent,ee=$.length;for(h=0;h<_&&w[h]===$[h];h++);var ke=_-h;for(M=1;M<=ke&&w[_-M]===$[ee-M];M++);return Si=$.slice(h,1=hi),kp=" ",Nb=!1;function ye(h,w){switch(h){case"keyup":return Nv.indexOf(w.keyCode)!==-1;case"keydown":return w.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Rt(h){return h=h.detail,typeof h=="object"&&"data"in h?h.data:null}var pa=!1;function Ma(h,w){switch(h){case"compositionend":return Rt(w);case"keypress":return w.which!==32?null:(Nb=!0,kp);case"textInput":return h=w.data,h===kp&&Nb?null:h;default:return null}}function Wa(h,w){if(pa)return h==="compositionend"||!ul&&ye(h,w)?(h=Sf(),Si=Eu=mi=null,pa=!1,h):null;switch(h){case"paste":return null;case"keypress":if(!(w.ctrlKey||w.altKey||w.metaKey)||w.ctrlKey&&w.altKey){if(w.char&&1=w)return{node:_,offset:w-h};h=M}e:{for(;_;){if(_.nextSibling){_=_.nextSibling;break e}_=_.parentNode}_=void 0}_=Fo(_)}}function Lo(h,w){return h&&w?h===w?!0:h&&h.nodeType===3?!1:w&&w.nodeType===3?Lo(h,w.parentNode):"contains"in h?h.contains(w):h.compareDocumentPosition?!!(h.compareDocumentPosition(w)&16):!1:!1}function mo(h){h=h!=null&&h.ownerDocument!=null&&h.ownerDocument.defaultView!=null?h.ownerDocument.defaultView:window;for(var w=Ua(h.document);w instanceof h.HTMLIFrameElement;){try{var _=typeof w.contentWindow.location.href=="string"}catch{_=!1}if(_)h=w.contentWindow;else break;w=Ua(h.document)}return w}function _i(h){var w=h&&h.nodeName&&h.nodeName.toLowerCase();return w&&(w==="input"&&(h.type==="text"||h.type==="search"||h.type==="tel"||h.type==="url"||h.type==="password")||w==="textarea"||h.contentEditable==="true")}var Md=rr&&"documentMode"in document&&11>=document.documentMode,fi=null,wr=null,zr=null,Zn=!1;function _p(h,w,_){var M=_.window===_?_.document:_.nodeType===9?_:_.ownerDocument;Zn||fi==null||fi!==Ua(M)||(M=fi,"selectionStart"in M&&_i(M)?M={start:M.selectionStart,end:M.selectionEnd}:(M=(M.ownerDocument&&M.ownerDocument.defaultView||window).getSelection(),M={anchorNode:M.anchorNode,anchorOffset:M.anchorOffset,focusNode:M.focusNode,focusOffset:M.focusOffset}),zr&&Ss(zr,M)||(zr=M,M=x_(wr,"onSelect"),0>=ke,$-=ke,Dd=1<<32-Ue(w)+$|_<<$|M,Fd=ee+h}else Dd=1<sr?(jr=Aa,Aa=null):jr=Aa.sibling;var Or=Dt(Ct,Aa,Mt[sr],Gt);if(Or===null){Aa===null&&(Aa=jr);break}h&&Aa&&Or.alternate===null&&w(Ct,Aa),gt=ee(Or,gt,sr),Ir===null?Ra=Or:Ir.sibling=Or,Ir=Or,Aa=jr}if(sr===Mt.length)return _(Ct,Aa),Mr&&Bu(Ct,sr),Ra;if(Aa===null){for(;srsr?(jr=Aa,Aa=null):jr=Aa.sibling;var $p=Dt(Ct,Aa,Or.value,Gt);if($p===null){Aa===null&&(Aa=jr);break}h&&Aa&&$p.alternate===null&&w(Ct,Aa),gt=ee($p,gt,sr),Ir===null?Ra=$p:Ir.sibling=$p,Ir=$p,Aa=jr}if(Or.done)return _(Ct,Aa),Mr&&Bu(Ct,sr),Ra;if(Aa===null){for(;!Or.done;sr++,Or=Mt.next())Or=Wt(Ct,Or.value,Gt),Or!==null&&(gt=ee(Or,gt,sr),Ir===null?Ra=Or:Ir.sibling=Or,Ir=Or);return Mr&&Bu(Ct,sr),Ra}for(Aa=M(Aa);!Or.done;sr++,Or=Mt.next())Or=zt(Aa,Ct,sr,Or.value,Gt),Or!==null&&(h&&Or.alternate!==null&&Aa.delete(Or.key===null?sr:Or.key),gt=ee(Or,gt,sr),Ir===null?Ra=Or:Ir.sibling=Or,Ir=Or);return h&&Aa.forEach(function(mme){return w(Ct,mme)}),Mr&&Bu(Ct,sr),Ra}function ln(Ct,gt,Mt,Gt){if(typeof Mt=="object"&&Mt!==null&&Mt.type===v&&Mt.key===null&&(Mt=Mt.props.children),typeof Mt=="object"&&Mt!==null){switch(Mt.$$typeof){case f:e:{for(var Ra=Mt.key;gt!==null;){if(gt.key===Ra){if(Ra=Mt.type,Ra===v){if(gt.tag===7){_(Ct,gt.sibling),Gt=$(gt,Mt.props.children),Gt.return=Ct,Ct=Gt;break e}}else if(gt.elementType===Ra||typeof Ra=="object"&&Ra!==null&&Ra.$$typeof===D&&Ef(Ra)===gt.type){_(Ct,gt.sibling),Gt=$(gt,Mt.props),Dv(Gt,Mt),Gt.return=Ct,Ct=Gt;break e}_(Ct,gt);break}else w(Ct,gt);gt=gt.sibling}Mt.type===v?(Gt=Nf(Mt.props.children,Ct.mode,Gt,Mt.key),Gt.return=Ct,Ct=Gt):(Gt=Lk(Mt.type,Mt.key,Mt.props,null,Ct.mode,Gt),Dv(Gt,Mt),Gt.return=Ct,Ct=Gt)}return ke(Ct);case g:e:{for(Ra=Mt.key;gt!==null;){if(gt.key===Ra)if(gt.tag===4&>.stateNode.containerInfo===Mt.containerInfo&>.stateNode.implementation===Mt.implementation){_(Ct,gt.sibling),Gt=$(gt,Mt.children||[]),Gt.return=Ct,Ct=Gt;break e}else{_(Ct,gt);break}else w(Ct,gt);gt=gt.sibling}Gt=Pj(Mt,Ct.mode,Gt),Gt.return=Ct,Ct=Gt}return ke(Ct);case D:return Mt=Ef(Mt),ln(Ct,gt,Mt,Gt)}if(X(Mt))return Ca(Ct,gt,Mt,Gt);if(I(Mt)){if(Ra=I(Mt),typeof Ra!="function")throw Error(n(150));return Mt=Ra.call(Mt),qa(Ct,gt,Mt,Gt)}if(typeof Mt.then=="function")return ln(Ct,gt,Hk(Mt),Gt);if(Mt.$$typeof===k)return ln(Ct,gt,Ik(Ct,Mt),Gt);qk(Ct,Mt)}return typeof Mt=="string"&&Mt!==""||typeof Mt=="number"||typeof Mt=="bigint"?(Mt=""+Mt,gt!==null&>.tag===6?(_(Ct,gt.sibling),Gt=$(gt,Mt),Gt.return=Ct,Ct=Gt):(_(Ct,gt),Gt=Cj(Mt,Ct.mode,Gt),Gt.return=Ct,Ct=Gt),ke(Ct)):_(Ct,gt)}return function(Ct,gt,Mt,Gt){try{Ev=0;var Ra=ln(Ct,gt,Mt,Gt);return zb=null,Ra}catch(Aa){if(Aa===Rb||Aa===Bk)throw Aa;var Ir=ml(29,Aa,null,Ct.mode);return Ir.lanes=Gt,Ir.return=Ct,Ir}}}var Ff=Y5(!0),Q5=Y5(!1),Ap=!1;function Ij(h){h.updateQueue={baseState:h.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Oj(h,w){h=h.updateQueue,w.updateQueue===h&&(w.updateQueue={baseState:h.baseState,firstBaseUpdate:h.firstBaseUpdate,lastBaseUpdate:h.lastBaseUpdate,shared:h.shared,callbacks:null})}function jp(h){return{lane:h,tag:0,payload:null,callback:null,next:null}}function Mp(h,w,_){var M=h.updateQueue;if(M===null)return null;if(M=M.shared,(Vr&2)!==0){var $=M.pending;return $===null?w.next=w:(w.next=$.next,$.next=w),M.pending=w,w=Fk(h),D5(h,null,_),w}return Dk(h,M,w,_),Fk(h)}function Fv(h,w,_){if(w=w.updateQueue,w!==null&&(w=w.shared,(_&4194048)!==0)){var M=w.lanes;M&=h.pendingLanes,_|=M,w.lanes=_,Vt(h,_)}}function Bj(h,w){var _=h.updateQueue,M=h.alternate;if(M!==null&&(M=M.updateQueue,_===M)){var $=null,ee=null;if(_=_.firstBaseUpdate,_!==null){do{var ke={lane:_.lane,tag:_.tag,payload:_.payload,callback:null,next:null};ee===null?$=ee=ke:ee=ee.next=ke,_=_.next}while(_!==null);ee===null?$=ee=w:ee=ee.next=w}else $=ee=w;_={baseState:M.baseState,firstBaseUpdate:$,lastBaseUpdate:ee,shared:M.shared,callbacks:M.callbacks},h.updateQueue=_;return}h=_.lastBaseUpdate,h===null?_.firstBaseUpdate=w:h.next=w,_.lastBaseUpdate=w}var Uj=!1;function Lv(){if(Uj){var h=Lb;if(h!==null)throw h}}function Rv(h,w,_,M){Uj=!1;var $=h.updateQueue;Ap=!1;var ee=$.firstBaseUpdate,ke=$.lastBaseUpdate,He=$.shared.pending;if(He!==null){$.shared.pending=null;var mt=He,Et=mt.next;mt.next=null,ke===null?ee=Et:ke.next=Et,ke=mt;var Ut=h.alternate;Ut!==null&&(Ut=Ut.updateQueue,He=Ut.lastBaseUpdate,He!==ke&&(He===null?Ut.firstBaseUpdate=Et:He.next=Et,Ut.lastBaseUpdate=mt))}if(ee!==null){var Wt=$.baseState;ke=0,Ut=Et=mt=null,He=ee;do{var Dt=He.lane&-536870913,zt=Dt!==He.lane;if(zt?(Ar&Dt)===Dt:(M&Dt)===Dt){Dt!==0&&Dt===Fb&&(Uj=!0),Ut!==null&&(Ut=Ut.next={lane:0,tag:He.tag,payload:He.payload,callback:null,next:null});e:{var Ca=h,qa=He;Dt=w;var ln=_;switch(qa.tag){case 1:if(Ca=qa.payload,typeof Ca=="function"){Wt=Ca.call(ln,Wt,Dt);break e}Wt=Ca;break e;case 3:Ca.flags=Ca.flags&-65537|128;case 0:if(Ca=qa.payload,Dt=typeof Ca=="function"?Ca.call(ln,Wt,Dt):Ca,Dt==null)break e;Wt=m({},Wt,Dt);break e;case 2:Ap=!0}}Dt=He.callback,Dt!==null&&(h.flags|=64,zt&&(h.flags|=8192),zt=$.callbacks,zt===null?$.callbacks=[Dt]:zt.push(Dt))}else zt={lane:Dt,tag:He.tag,payload:He.payload,callback:He.callback,next:null},Ut===null?(Et=Ut=zt,mt=Wt):Ut=Ut.next=zt,ke|=Dt;if(He=He.next,He===null){if(He=$.shared.pending,He===null)break;zt=He,He=zt.next,zt.next=null,$.lastBaseUpdate=zt,$.shared.pending=null}}while(!0);Ut===null&&(mt=Wt),$.baseState=mt,$.firstBaseUpdate=Et,$.lastBaseUpdate=Ut,ee===null&&($.shared.lanes=0),Rp|=ke,h.lanes=ke,h.memoizedState=Wt}}function X5(h,w){if(typeof h!="function")throw Error(n(191,h));h.call(w)}function Z5(h,w){var _=h.callbacks;if(_!==null)for(h.callbacks=null,h=0;h<_.length;h++)X5(_[h],w)}var Ib=K(null),Vk=K(0);function J5(h,w){h=Xu,ue(Vk,h),ue(Ib,w),Xu=h|w.baseLanes}function Hj(){ue(Vk,Xu),ue(Ib,Ib.current)}function qj(){Xu=Vk.current,ie(Ib),ie(Vk)}var pl=K(null),Zl=null;function Ep(h){var w=h.alternate;ue(gi,gi.current&1),ue(pl,h),Zl===null&&(w===null||Ib.current!==null||w.memoizedState!==null)&&(Zl=h)}function Vj(h){ue(gi,gi.current),ue(pl,h),Zl===null&&(Zl=h)}function eU(h){h.tag===22?(ue(gi,gi.current),ue(pl,h),Zl===null&&(Zl=h)):Dp()}function Dp(){ue(gi,gi.current),ue(pl,pl.current)}function hl(h){ie(pl),Zl===h&&(Zl=null),ie(gi)}var gi=K(0);function Gk(h){for(var w=h;w!==null;){if(w.tag===13){var _=w.memoizedState;if(_!==null&&(_=_.dehydrated,_===null||QM(_)||XM(_)))return w}else if(w.tag===19&&(w.memoizedProps.revealOrder==="forwards"||w.memoizedProps.revealOrder==="backwards"||w.memoizedProps.revealOrder==="unstable_legacy-backwards"||w.memoizedProps.revealOrder==="together")){if((w.flags&128)!==0)return w}else if(w.child!==null){w.child.return=w,w=w.child;continue}if(w===h)break;for(;w.sibling===null;){if(w.return===null||w.return===h)return null;w=w.return}w.sibling.return=w.return,w=w.sibling}return null}var qu=0,nr=null,sn=null,Pi=null,$k=!1,Ob=!1,Lf=!1,Wk=0,zv=0,Bb=null,aue=0;function Jn(){throw Error(n(321))}function Gj(h,w){if(w===null)return!1;for(var _=0;_ee?ee:8;var ke=ae.T,He={};ae.T=He,sM(h,!1,w,_);try{var mt=$(),Et=ae.S;if(Et!==null&&Et(He,mt),mt!==null&&typeof mt=="object"&&typeof mt.then=="function"){var Ut=tue(mt,M);Ov(h,w,Ut,bl(h))}else Ov(h,w,M,bl(h))}catch(Wt){Ov(h,w,{then:function(){},status:"rejected",reason:Wt},bl())}finally{Y.p=ee,ke!==null&&He.types!==null&&(ke.types=He.types),ae.T=ke}}function oue(){}function nM(h,w,_,M){if(h.tag!==5)throw Error(n(476));var $=jU(h).queue;AU(h,$,w,ce,_===null?oue:function(){return MU(h),_(M)})}function jU(h){var w=h.memoizedState;if(w!==null)return w;w={memoizedState:ce,baseState:ce,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Vu,lastRenderedState:ce},next:null};var _={};return w.next={memoizedState:_,baseState:_,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Vu,lastRenderedState:_},next:null},h.memoizedState=w,h=h.alternate,h!==null&&(h.memoizedState=w),w}function MU(h){var w=jU(h);w.next===null&&(w=h.alternate.memoizedState),Ov(h,w.next.queue,{},bl())}function iM(){return _s(a0)}function EU(){return bi().memoizedState}function DU(){return bi().memoizedState}function lue(h){for(var w=h.return;w!==null;){switch(w.tag){case 24:case 3:var _=bl();h=jp(_);var M=Mp(w,h,_);M!==null&&(Bo(M,w,_),Fv(M,w,_)),w={cache:Fj()},h.payload=w;return}w=w.return}}function cue(h,w,_){var M=bl();_={lane:M,revertLane:0,gesture:null,action:_,hasEagerState:!1,eagerState:null,next:null},Jk(h)?LU(w,_):(_=kj(h,w,_,M),_!==null&&(Bo(_,h,M),RU(_,w,M)))}function FU(h,w,_){var M=bl();Ov(h,w,_,M)}function Ov(h,w,_,M){var $={lane:M,revertLane:0,gesture:null,action:_,hasEagerState:!1,eagerState:null,next:null};if(Jk(h))LU(w,$);else{var ee=h.alternate;if(h.lanes===0&&(ee===null||ee.lanes===0)&&(ee=w.lastRenderedReducer,ee!==null))try{var ke=w.lastRenderedState,He=ee(ke,_);if($.hasEagerState=!0,$.eagerState=He,Fn(He,ke))return Dk(h,w,$,0),bn===null&&Ek(),!1}catch{}if(_=kj(h,w,$,M),_!==null)return Bo(_,h,M),RU(_,w,M),!0}return!1}function sM(h,w,_,M){if(M={lane:2,revertLane:IM(),gesture:null,action:M,hasEagerState:!1,eagerState:null,next:null},Jk(h)){if(w)throw Error(n(479))}else w=kj(h,_,M,2),w!==null&&Bo(w,h,2)}function Jk(h){var w=h.alternate;return h===nr||w!==null&&w===nr}function LU(h,w){Ob=$k=!0;var _=h.pending;_===null?w.next=w:(w.next=_.next,_.next=w),h.pending=w}function RU(h,w,_){if((_&4194048)!==0){var M=w.lanes;M&=h.pendingLanes,_|=M,w.lanes=_,Vt(h,_)}}var Bv={readContext:_s,use:Yk,useCallback:Jn,useContext:Jn,useEffect:Jn,useImperativeHandle:Jn,useLayoutEffect:Jn,useInsertionEffect:Jn,useMemo:Jn,useReducer:Jn,useRef:Jn,useState:Jn,useDebugValue:Jn,useDeferredValue:Jn,useTransition:Jn,useSyncExternalStore:Jn,useId:Jn,useHostTransitionStatus:Jn,useFormState:Jn,useActionState:Jn,useOptimistic:Jn,useMemoCache:Jn,useCacheRefresh:Jn};Bv.useEffectEvent=Jn;var zU={readContext:_s,use:Yk,useCallback:function(h,w){return po().memoizedState=[h,w===void 0?null:w],h},useContext:_s,useEffect:vU,useImperativeHandle:function(h,w,_){_=_!=null?_.concat([h]):null,Xk(4194308,4,_U.bind(null,w,h),_)},useLayoutEffect:function(h,w){return Xk(4194308,4,h,w)},useInsertionEffect:function(h,w){Xk(4,2,h,w)},useMemo:function(h,w){var _=po();w=w===void 0?null:w;var M=h();if(Lf){Re(!0);try{h()}finally{Re(!1)}}return _.memoizedState=[M,w],M},useReducer:function(h,w,_){var M=po();if(_!==void 0){var $=_(w);if(Lf){Re(!0);try{_(w)}finally{Re(!1)}}}else $=w;return M.memoizedState=M.baseState=$,h={pending:null,lanes:0,dispatch:null,lastRenderedReducer:h,lastRenderedState:$},M.queue=h,h=h.dispatch=cue.bind(null,nr,h),[M.memoizedState,h]},useRef:function(h){var w=po();return h={current:h},w.memoizedState=h},useState:function(h){h=Jj(h);var w=h.queue,_=FU.bind(null,nr,w);return w.dispatch=_,[h.memoizedState,_]},useDebugValue:aM,useDeferredValue:function(h,w){var _=po();return rM(_,h,w)},useTransition:function(){var h=Jj(!1);return h=AU.bind(null,nr,h.queue,!0,!1),po().memoizedState=h,[!1,h]},useSyncExternalStore:function(h,w,_){var M=nr,$=po();if(Mr){if(_===void 0)throw Error(n(407));_=_()}else{if(_=w(),bn===null)throw Error(n(349));(Ar&127)!==0||nU(M,w,_)}$.memoizedState=_;var ee={value:_,getSnapshot:w};return $.queue=ee,vU(sU.bind(null,M,ee,h),[h]),M.flags|=2048,Ub(9,{destroy:void 0},iU.bind(null,M,ee,_,w),null),_},useId:function(){var h=po(),w=bn.identifierPrefix;if(Mr){var _=Fd,M=Dd;_=(M&~(1<<32-Ue(M)-1)).toString(32)+_,w="_"+w+"R_"+_,_=Wk++,0<_&&(w+="H"+_.toString(32)),w+="_"}else _=aue++,w="_"+w+"r_"+_.toString(32)+"_";return h.memoizedState=w},useHostTransitionStatus:iM,useFormState:fU,useActionState:fU,useOptimistic:function(h){var w=po();w.memoizedState=w.baseState=h;var _={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return w.queue=_,w=sM.bind(null,nr,!0,_),_.dispatch=w,[h,w]},useMemoCache:Qj,useCacheRefresh:function(){return po().memoizedState=lue.bind(null,nr)},useEffectEvent:function(h){var w=po(),_={impl:h};return w.memoizedState=_,function(){if((Vr&2)!==0)throw Error(n(440));return _.impl.apply(void 0,arguments)}}},oM={readContext:_s,use:Yk,useCallback:PU,useContext:_s,useEffect:tM,useImperativeHandle:CU,useInsertionEffect:SU,useLayoutEffect:kU,useMemo:NU,useReducer:Qk,useRef:yU,useState:function(){return Qk(Vu)},useDebugValue:aM,useDeferredValue:function(h,w){var _=bi();return TU(_,sn.memoizedState,h,w)},useTransition:function(){var h=Qk(Vu)[0],w=bi().memoizedState;return[typeof h=="boolean"?h:Iv(h),w]},useSyncExternalStore:rU,useId:EU,useHostTransitionStatus:iM,useFormState:gU,useActionState:gU,useOptimistic:function(h,w){var _=bi();return cU(_,sn,h,w)},useMemoCache:Qj,useCacheRefresh:DU};oM.useEffectEvent=wU;var IU={readContext:_s,use:Yk,useCallback:PU,useContext:_s,useEffect:tM,useImperativeHandle:CU,useInsertionEffect:SU,useLayoutEffect:kU,useMemo:NU,useReducer:Zj,useRef:yU,useState:function(){return Zj(Vu)},useDebugValue:aM,useDeferredValue:function(h,w){var _=bi();return sn===null?rM(_,h,w):TU(_,sn.memoizedState,h,w)},useTransition:function(){var h=Zj(Vu)[0],w=bi().memoizedState;return[typeof h=="boolean"?h:Iv(h),w]},useSyncExternalStore:rU,useId:EU,useHostTransitionStatus:iM,useFormState:xU,useActionState:xU,useOptimistic:function(h,w){var _=bi();return sn!==null?cU(_,sn,h,w):(_.baseState=h,[h,_.queue.dispatch])},useMemoCache:Qj,useCacheRefresh:DU};IU.useEffectEvent=wU;function lM(h,w,_,M){w=h.memoizedState,_=_(M,w),_=_==null?w:m({},w,_),h.memoizedState=_,h.lanes===0&&(h.updateQueue.baseState=_)}var cM={enqueueSetState:function(h,w,_){h=h._reactInternals;var M=bl(),$=jp(M);$.payload=w,_!=null&&($.callback=_),w=Mp(h,$,M),w!==null&&(Bo(w,h,M),Fv(w,h,M))},enqueueReplaceState:function(h,w,_){h=h._reactInternals;var M=bl(),$=jp(M);$.tag=1,$.payload=w,_!=null&&($.callback=_),w=Mp(h,$,M),w!==null&&(Bo(w,h,M),Fv(w,h,M))},enqueueForceUpdate:function(h,w){h=h._reactInternals;var _=bl(),M=jp(_);M.tag=2,w!=null&&(M.callback=w),w=Mp(h,M,_),w!==null&&(Bo(w,h,_),Fv(w,h,_))}};function OU(h,w,_,M,$,ee,ke){return h=h.stateNode,typeof h.shouldComponentUpdate=="function"?h.shouldComponentUpdate(M,ee,ke):w.prototype&&w.prototype.isPureReactComponent?!Ss(_,M)||!Ss($,ee):!0}function BU(h,w,_,M){h=w.state,typeof w.componentWillReceiveProps=="function"&&w.componentWillReceiveProps(_,M),typeof w.UNSAFE_componentWillReceiveProps=="function"&&w.UNSAFE_componentWillReceiveProps(_,M),w.state!==h&&cM.enqueueReplaceState(w,w.state,null)}function Rf(h,w){var _=w;if("ref"in w){_={};for(var M in w)M!=="ref"&&(_[M]=w[M])}if(h=h.defaultProps){_===w&&(_=m({},_));for(var $ in h)_[$]===void 0&&(_[$]=h[$])}return _}function UU(h){Mk(h)}function HU(h){console.error(h)}function qU(h){Mk(h)}function e_(h,w){try{var _=h.onUncaughtError;_(w.value,{componentStack:w.stack})}catch(M){setTimeout(function(){throw M})}}function VU(h,w,_){try{var M=h.onCaughtError;M(_.value,{componentStack:_.stack,errorBoundary:w.tag===1?w.stateNode:null})}catch($){setTimeout(function(){throw $})}}function dM(h,w,_){return _=jp(_),_.tag=3,_.payload={element:null},_.callback=function(){e_(h,w)},_}function GU(h){return h=jp(h),h.tag=3,h}function $U(h,w,_,M){var $=_.type.getDerivedStateFromError;if(typeof $=="function"){var ee=M.value;h.payload=function(){return $(ee)},h.callback=function(){VU(w,_,M)}}var ke=_.stateNode;ke!==null&&typeof ke.componentDidCatch=="function"&&(h.callback=function(){VU(w,_,M),typeof $!="function"&&(zp===null?zp=new Set([this]):zp.add(this));var He=M.stack;this.componentDidCatch(M.value,{componentStack:He!==null?He:""})})}function due(h,w,_,M,$){if(_.flags|=32768,M!==null&&typeof M=="object"&&typeof M.then=="function"){if(w=_.alternate,w!==null&&Db(w,_,$,!0),_=pl.current,_!==null){switch(_.tag){case 31:case 13:return Zl===null?m_():_.alternate===null&&ei===0&&(ei=3),_.flags&=-257,_.flags|=65536,_.lanes=$,M===Uk?_.flags|=16384:(w=_.updateQueue,w===null?_.updateQueue=new Set([M]):w.add(M),LM(h,M,$)),!1;case 22:return _.flags|=65536,M===Uk?_.flags|=16384:(w=_.updateQueue,w===null?(w={transitions:null,markerInstances:null,retryQueue:new Set([M])},_.updateQueue=w):(_=w.retryQueue,_===null?w.retryQueue=new Set([M]):_.add(M)),LM(h,M,$)),!1}throw Error(n(435,_.tag))}return LM(h,M,$),m_(),!1}if(Mr)return w=pl.current,w!==null?((w.flags&65536)===0&&(w.flags|=256),w.flags|=65536,w.lanes=$,M!==Aj&&(h=Error(n(422),{cause:M}),Av(Kl(h,_)))):(M!==Aj&&(w=Error(n(423),{cause:M}),Av(Kl(w,_))),h=h.current.alternate,h.flags|=65536,$&=-$,h.lanes|=$,M=Kl(M,_),$=dM(h.stateNode,M,$),Bj(h,$),ei!==4&&(ei=2)),!1;var ee=Error(n(520),{cause:M});if(ee=Kl(ee,_),Kv===null?Kv=[ee]:Kv.push(ee),ei!==4&&(ei=2),w===null)return!0;M=Kl(M,_),_=w;do{switch(_.tag){case 3:return _.flags|=65536,h=$&-$,_.lanes|=h,h=dM(_.stateNode,M,h),Bj(_,h),!1;case 1:if(w=_.type,ee=_.stateNode,(_.flags&128)===0&&(typeof w.getDerivedStateFromError=="function"||ee!==null&&typeof ee.componentDidCatch=="function"&&(zp===null||!zp.has(ee))))return _.flags|=65536,$&=-$,_.lanes|=$,$=GU($),$U($,h,_,M),Bj(_,$),!1}_=_.return}while(_!==null);return!1}var uM=Error(n(461)),Ni=!1;function Cs(h,w,_,M){w.child=h===null?Q5(w,null,_,M):Ff(w,h.child,_,M)}function WU(h,w,_,M,$){_=_.render;var ee=w.ref;if("ref"in M){var ke={};for(var He in M)He!=="ref"&&(ke[He]=M[He])}else ke=M;return jf(w),M=$j(h,w,_,ke,ee,$),He=Wj(),h!==null&&!Ni?(Kj(h,w,$),Gu(h,w,$)):(Mr&&He&&Nj(w),w.flags|=1,Cs(h,w,M,$),w.child)}function KU(h,w,_,M,$){if(h===null){var ee=_.type;return typeof ee=="function"&&!_j(ee)&&ee.defaultProps===void 0&&_.compare===null?(w.tag=15,w.type=ee,YU(h,w,ee,M,$)):(h=Lk(_.type,null,M,w,w.mode,$),h.ref=w.ref,h.return=w,w.child=h)}if(ee=h.child,!yM(h,$)){var ke=ee.memoizedProps;if(_=_.compare,_=_!==null?_:Ss,_(ke,M)&&h.ref===w.ref)return Gu(h,w,$)}return w.flags|=1,h=Ou(ee,M),h.ref=w.ref,h.return=w,w.child=h}function YU(h,w,_,M,$){if(h!==null){var ee=h.memoizedProps;if(Ss(ee,M)&&h.ref===w.ref)if(Ni=!1,w.pendingProps=M=ee,yM(h,$))(h.flags&131072)!==0&&(Ni=!0);else return w.lanes=h.lanes,Gu(h,w,$)}return mM(h,w,_,M,$)}function QU(h,w,_,M){var $=M.children,ee=h!==null?h.memoizedState:null;if(h===null&&w.stateNode===null&&(w.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),M.mode==="hidden"){if((w.flags&128)!==0){if(ee=ee!==null?ee.baseLanes|_:_,h!==null){for(M=w.child=h.child,$=0;M!==null;)$=$|M.lanes|M.childLanes,M=M.sibling;M=$&~ee}else M=0,w.child=null;return XU(h,w,ee,_,M)}if((_&536870912)!==0)w.memoizedState={baseLanes:0,cachePool:null},h!==null&&Ok(w,ee!==null?ee.cachePool:null),ee!==null?J5(w,ee):Hj(),eU(w);else return M=w.lanes=536870912,XU(h,w,ee!==null?ee.baseLanes|_:_,_,M)}else ee!==null?(Ok(w,ee.cachePool),J5(w,ee),Dp(),w.memoizedState=null):(h!==null&&Ok(w,null),Hj(),Dp());return Cs(h,w,$,_),w.child}function Uv(h,w){return h!==null&&h.tag===22||w.stateNode!==null||(w.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),w.sibling}function XU(h,w,_,M,$){var ee=Rj();return ee=ee===null?null:{parent:Ci._currentValue,pool:ee},w.memoizedState={baseLanes:_,cachePool:ee},h!==null&&Ok(w,null),Hj(),eU(w),h!==null&&Db(h,w,M,!0),w.childLanes=$,null}function t_(h,w){return w=r_({mode:w.mode,children:w.children},h.mode),w.ref=h.ref,h.child=w,w.return=h,w}function ZU(h,w,_){return Ff(w,h.child,null,_),h=t_(w,w.pendingProps),h.flags|=2,hl(w),w.memoizedState=null,h}function uue(h,w,_){var M=w.pendingProps,$=(w.flags&128)!==0;if(w.flags&=-129,h===null){if(Mr){if(M.mode==="hidden")return h=t_(w,M),w.lanes=536870912,Uv(null,h);if(Vj(w),(h=Nn)?(h=dq(h,Xl),h=h!==null&&h.data==="&"?h:null,h!==null&&(w.memoizedState={dehydrated:h,treeContext:Cp!==null?{id:Dd,overflow:Fd}:null,retryLane:536870912,hydrationErrors:null},_=L5(h),_.return=w,w.child=_,ks=w,Nn=null)):h=null,h===null)throw Np(w);return w.lanes=536870912,null}return t_(w,M)}var ee=h.memoizedState;if(ee!==null){var ke=ee.dehydrated;if(Vj(w),$)if(w.flags&256)w.flags&=-257,w=ZU(h,w,_);else if(w.memoizedState!==null)w.child=h.child,w.flags|=128,w=null;else throw Error(n(558));else if(Ni||Db(h,w,_,!1),$=(_&h.childLanes)!==0,Ni||$){if(M=bn,M!==null&&(ke=ht(M,_),ke!==0&&ke!==ee.retryLane))throw ee.retryLane=ke,Pf(h,ke),Bo(M,h,ke),uM;m_(),w=ZU(h,w,_)}else h=ee.treeContext,Nn=Jl(ke.nextSibling),ks=w,Mr=!0,Pp=null,Xl=!1,h!==null&&I5(w,h),w=t_(w,M),w.flags|=4096;return w}return h=Ou(h.child,{mode:M.mode,children:M.children}),h.ref=w.ref,w.child=h,h.return=w,h}function a_(h,w){var _=w.ref;if(_===null)h!==null&&h.ref!==null&&(w.flags|=4194816);else{if(typeof _!="function"&&typeof _!="object")throw Error(n(284));(h===null||h.ref!==_)&&(w.flags|=4194816)}}function mM(h,w,_,M,$){return jf(w),_=$j(h,w,_,M,void 0,$),M=Wj(),h!==null&&!Ni?(Kj(h,w,$),Gu(h,w,$)):(Mr&&M&&Nj(w),w.flags|=1,Cs(h,w,_,$),w.child)}function JU(h,w,_,M,$,ee){return jf(w),w.updateQueue=null,_=aU(w,M,_,$),tU(h),M=Wj(),h!==null&&!Ni?(Kj(h,w,ee),Gu(h,w,ee)):(Mr&&M&&Nj(w),w.flags|=1,Cs(h,w,_,ee),w.child)}function eH(h,w,_,M,$){if(jf(w),w.stateNode===null){var ee=Ab,ke=_.contextType;typeof ke=="object"&&ke!==null&&(ee=_s(ke)),ee=new _(M,ee),w.memoizedState=ee.state!==null&&ee.state!==void 0?ee.state:null,ee.updater=cM,w.stateNode=ee,ee._reactInternals=w,ee=w.stateNode,ee.props=M,ee.state=w.memoizedState,ee.refs={},Ij(w),ke=_.contextType,ee.context=typeof ke=="object"&&ke!==null?_s(ke):Ab,ee.state=w.memoizedState,ke=_.getDerivedStateFromProps,typeof ke=="function"&&(lM(w,_,ke,M),ee.state=w.memoizedState),typeof _.getDerivedStateFromProps=="function"||typeof ee.getSnapshotBeforeUpdate=="function"||typeof ee.UNSAFE_componentWillMount!="function"&&typeof ee.componentWillMount!="function"||(ke=ee.state,typeof ee.componentWillMount=="function"&&ee.componentWillMount(),typeof ee.UNSAFE_componentWillMount=="function"&&ee.UNSAFE_componentWillMount(),ke!==ee.state&&cM.enqueueReplaceState(ee,ee.state,null),Rv(w,M,ee,$),Lv(),ee.state=w.memoizedState),typeof ee.componentDidMount=="function"&&(w.flags|=4194308),M=!0}else if(h===null){ee=w.stateNode;var He=w.memoizedProps,mt=Rf(_,He);ee.props=mt;var Et=ee.context,Ut=_.contextType;ke=Ab,typeof Ut=="object"&&Ut!==null&&(ke=_s(Ut));var Wt=_.getDerivedStateFromProps;Ut=typeof Wt=="function"||typeof ee.getSnapshotBeforeUpdate=="function",He=w.pendingProps!==He,Ut||typeof ee.UNSAFE_componentWillReceiveProps!="function"&&typeof ee.componentWillReceiveProps!="function"||(He||Et!==ke)&&BU(w,ee,M,ke),Ap=!1;var Dt=w.memoizedState;ee.state=Dt,Rv(w,M,ee,$),Lv(),Et=w.memoizedState,He||Dt!==Et||Ap?(typeof Wt=="function"&&(lM(w,_,Wt,M),Et=w.memoizedState),(mt=Ap||OU(w,_,mt,M,Dt,Et,ke))?(Ut||typeof ee.UNSAFE_componentWillMount!="function"&&typeof ee.componentWillMount!="function"||(typeof ee.componentWillMount=="function"&&ee.componentWillMount(),typeof ee.UNSAFE_componentWillMount=="function"&&ee.UNSAFE_componentWillMount()),typeof ee.componentDidMount=="function"&&(w.flags|=4194308)):(typeof ee.componentDidMount=="function"&&(w.flags|=4194308),w.memoizedProps=M,w.memoizedState=Et),ee.props=M,ee.state=Et,ee.context=ke,M=mt):(typeof ee.componentDidMount=="function"&&(w.flags|=4194308),M=!1)}else{ee=w.stateNode,Oj(h,w),ke=w.memoizedProps,Ut=Rf(_,ke),ee.props=Ut,Wt=w.pendingProps,Dt=ee.context,Et=_.contextType,mt=Ab,typeof Et=="object"&&Et!==null&&(mt=_s(Et)),He=_.getDerivedStateFromProps,(Et=typeof He=="function"||typeof ee.getSnapshotBeforeUpdate=="function")||typeof ee.UNSAFE_componentWillReceiveProps!="function"&&typeof ee.componentWillReceiveProps!="function"||(ke!==Wt||Dt!==mt)&&BU(w,ee,M,mt),Ap=!1,Dt=w.memoizedState,ee.state=Dt,Rv(w,M,ee,$),Lv();var zt=w.memoizedState;ke!==Wt||Dt!==zt||Ap||h!==null&&h.dependencies!==null&&zk(h.dependencies)?(typeof He=="function"&&(lM(w,_,He,M),zt=w.memoizedState),(Ut=Ap||OU(w,_,Ut,M,Dt,zt,mt)||h!==null&&h.dependencies!==null&&zk(h.dependencies))?(Et||typeof ee.UNSAFE_componentWillUpdate!="function"&&typeof ee.componentWillUpdate!="function"||(typeof ee.componentWillUpdate=="function"&&ee.componentWillUpdate(M,zt,mt),typeof ee.UNSAFE_componentWillUpdate=="function"&&ee.UNSAFE_componentWillUpdate(M,zt,mt)),typeof ee.componentDidUpdate=="function"&&(w.flags|=4),typeof ee.getSnapshotBeforeUpdate=="function"&&(w.flags|=1024)):(typeof ee.componentDidUpdate!="function"||ke===h.memoizedProps&&Dt===h.memoizedState||(w.flags|=4),typeof ee.getSnapshotBeforeUpdate!="function"||ke===h.memoizedProps&&Dt===h.memoizedState||(w.flags|=1024),w.memoizedProps=M,w.memoizedState=zt),ee.props=M,ee.state=zt,ee.context=mt,M=Ut):(typeof ee.componentDidUpdate!="function"||ke===h.memoizedProps&&Dt===h.memoizedState||(w.flags|=4),typeof ee.getSnapshotBeforeUpdate!="function"||ke===h.memoizedProps&&Dt===h.memoizedState||(w.flags|=1024),M=!1)}return ee=M,a_(h,w),M=(w.flags&128)!==0,ee||M?(ee=w.stateNode,_=M&&typeof _.getDerivedStateFromError!="function"?null:ee.render(),w.flags|=1,h!==null&&M?(w.child=Ff(w,h.child,null,$),w.child=Ff(w,null,_,$)):Cs(h,w,_,$),w.memoizedState=ee.state,h=w.child):h=Gu(h,w,$),h}function tH(h,w,_,M){return Tf(),w.flags|=256,Cs(h,w,_,M),w.child}var pM={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function hM(h){return{baseLanes:h,cachePool:V5()}}function fM(h,w,_){return h=h!==null?h.childLanes&~_:0,w&&(h|=gl),h}function aH(h,w,_){var M=w.pendingProps,$=!1,ee=(w.flags&128)!==0,ke;if((ke=ee)||(ke=h!==null&&h.memoizedState===null?!1:(gi.current&2)!==0),ke&&($=!0,w.flags&=-129),ke=(w.flags&32)!==0,w.flags&=-33,h===null){if(Mr){if($?Ep(w):Dp(),(h=Nn)?(h=dq(h,Xl),h=h!==null&&h.data!=="&"?h:null,h!==null&&(w.memoizedState={dehydrated:h,treeContext:Cp!==null?{id:Dd,overflow:Fd}:null,retryLane:536870912,hydrationErrors:null},_=L5(h),_.return=w,w.child=_,ks=w,Nn=null)):h=null,h===null)throw Np(w);return XM(h)?w.lanes=32:w.lanes=536870912,null}var He=M.children;return M=M.fallback,$?(Dp(),$=w.mode,He=r_({mode:"hidden",children:He},$),M=Nf(M,$,_,null),He.return=w,M.return=w,He.sibling=M,w.child=He,M=w.child,M.memoizedState=hM(_),M.childLanes=fM(h,ke,_),w.memoizedState=pM,Uv(null,M)):(Ep(w),gM(w,He))}var mt=h.memoizedState;if(mt!==null&&(He=mt.dehydrated,He!==null)){if(ee)w.flags&256?(Ep(w),w.flags&=-257,w=bM(h,w,_)):w.memoizedState!==null?(Dp(),w.child=h.child,w.flags|=128,w=null):(Dp(),He=M.fallback,$=w.mode,M=r_({mode:"visible",children:M.children},$),He=Nf(He,$,_,null),He.flags|=2,M.return=w,He.return=w,M.sibling=He,w.child=M,Ff(w,h.child,null,_),M=w.child,M.memoizedState=hM(_),M.childLanes=fM(h,ke,_),w.memoizedState=pM,w=Uv(null,M));else if(Ep(w),XM(He)){if(ke=He.nextSibling&&He.nextSibling.dataset,ke)var Et=ke.dgst;ke=Et,M=Error(n(419)),M.stack="",M.digest=ke,Av({value:M,source:null,stack:null}),w=bM(h,w,_)}else if(Ni||Db(h,w,_,!1),ke=(_&h.childLanes)!==0,Ni||ke){if(ke=bn,ke!==null&&(M=ht(ke,_),M!==0&&M!==mt.retryLane))throw mt.retryLane=M,Pf(h,M),Bo(ke,h,M),uM;QM(He)||m_(),w=bM(h,w,_)}else QM(He)?(w.flags|=192,w.child=h.child,w=null):(h=mt.treeContext,Nn=Jl(He.nextSibling),ks=w,Mr=!0,Pp=null,Xl=!1,h!==null&&I5(w,h),w=gM(w,M.children),w.flags|=4096);return w}return $?(Dp(),He=M.fallback,$=w.mode,mt=h.child,Et=mt.sibling,M=Ou(mt,{mode:"hidden",children:M.children}),M.subtreeFlags=mt.subtreeFlags&65011712,Et!==null?He=Ou(Et,He):(He=Nf(He,$,_,null),He.flags|=2),He.return=w,M.return=w,M.sibling=He,w.child=M,Uv(null,M),M=w.child,He=h.child.memoizedState,He===null?He=hM(_):($=He.cachePool,$!==null?(mt=Ci._currentValue,$=$.parent!==mt?{parent:mt,pool:mt}:$):$=V5(),He={baseLanes:He.baseLanes|_,cachePool:$}),M.memoizedState=He,M.childLanes=fM(h,ke,_),w.memoizedState=pM,Uv(h.child,M)):(Ep(w),_=h.child,h=_.sibling,_=Ou(_,{mode:"visible",children:M.children}),_.return=w,_.sibling=null,h!==null&&(ke=w.deletions,ke===null?(w.deletions=[h],w.flags|=16):ke.push(h)),w.child=_,w.memoizedState=null,_)}function gM(h,w){return w=r_({mode:"visible",children:w},h.mode),w.return=h,h.child=w}function r_(h,w){return h=ml(22,h,null,w),h.lanes=0,h}function bM(h,w,_){return Ff(w,h.child,null,_),h=gM(w,w.pendingProps.children),h.flags|=2,w.memoizedState=null,h}function rH(h,w,_){h.lanes|=w;var M=h.alternate;M!==null&&(M.lanes|=w),Ej(h.return,w,_)}function xM(h,w,_,M,$,ee){var ke=h.memoizedState;ke===null?h.memoizedState={isBackwards:w,rendering:null,renderingStartTime:0,last:M,tail:_,tailMode:$,treeForkCount:ee}:(ke.isBackwards=w,ke.rendering=null,ke.renderingStartTime=0,ke.last=M,ke.tail=_,ke.tailMode=$,ke.treeForkCount=ee)}function nH(h,w,_){var M=w.pendingProps,$=M.revealOrder,ee=M.tail;M=M.children;var ke=gi.current,He=(ke&2)!==0;if(He?(ke=ke&1|2,w.flags|=128):ke&=1,ue(gi,ke),Cs(h,w,M,_),M=Mr?Tv:0,!He&&h!==null&&(h.flags&128)!==0)e:for(h=w.child;h!==null;){if(h.tag===13)h.memoizedState!==null&&rH(h,_,w);else if(h.tag===19)rH(h,_,w);else if(h.child!==null){h.child.return=h,h=h.child;continue}if(h===w)break e;for(;h.sibling===null;){if(h.return===null||h.return===w)break e;h=h.return}h.sibling.return=h.return,h=h.sibling}switch($){case"forwards":for(_=w.child,$=null;_!==null;)h=_.alternate,h!==null&&Gk(h)===null&&($=_),_=_.sibling;_=$,_===null?($=w.child,w.child=null):($=_.sibling,_.sibling=null),xM(w,!1,$,_,ee,M);break;case"backwards":case"unstable_legacy-backwards":for(_=null,$=w.child,w.child=null;$!==null;){if(h=$.alternate,h!==null&&Gk(h)===null){w.child=$;break}h=$.sibling,$.sibling=_,_=$,$=h}xM(w,!0,_,null,ee,M);break;case"together":xM(w,!1,null,null,void 0,M);break;default:w.memoizedState=null}return w.child}function Gu(h,w,_){if(h!==null&&(w.dependencies=h.dependencies),Rp|=w.lanes,(_&w.childLanes)===0)if(h!==null){if(Db(h,w,_,!1),(_&w.childLanes)===0)return null}else return null;if(h!==null&&w.child!==h.child)throw Error(n(153));if(w.child!==null){for(h=w.child,_=Ou(h,h.pendingProps),w.child=_,_.return=w;h.sibling!==null;)h=h.sibling,_=_.sibling=Ou(h,h.pendingProps),_.return=w;_.sibling=null}return w.child}function yM(h,w){return(h.lanes&w)!==0?!0:(h=h.dependencies,!!(h!==null&&zk(h)))}function mue(h,w,_){switch(w.tag){case 3:A(w,w.stateNode.containerInfo),Tp(w,Ci,h.memoizedState.cache),Tf();break;case 27:case 5:B(w);break;case 4:A(w,w.stateNode.containerInfo);break;case 10:Tp(w,w.type,w.memoizedProps.value);break;case 31:if(w.memoizedState!==null)return w.flags|=128,Vj(w),null;break;case 13:var M=w.memoizedState;if(M!==null)return M.dehydrated!==null?(Ep(w),w.flags|=128,null):(_&w.child.childLanes)!==0?aH(h,w,_):(Ep(w),h=Gu(h,w,_),h!==null?h.sibling:null);Ep(w);break;case 19:var $=(h.flags&128)!==0;if(M=(_&w.childLanes)!==0,M||(Db(h,w,_,!1),M=(_&w.childLanes)!==0),$){if(M)return nH(h,w,_);w.flags|=128}if($=w.memoizedState,$!==null&&($.rendering=null,$.tail=null,$.lastEffect=null),ue(gi,gi.current),M)break;return null;case 22:return w.lanes=0,QU(h,w,_,w.pendingProps);case 24:Tp(w,Ci,h.memoizedState.cache)}return Gu(h,w,_)}function iH(h,w,_){if(h!==null)if(h.memoizedProps!==w.pendingProps)Ni=!0;else{if(!yM(h,_)&&(w.flags&128)===0)return Ni=!1,mue(h,w,_);Ni=(h.flags&131072)!==0}else Ni=!1,Mr&&(w.flags&1048576)!==0&&z5(w,Tv,w.index);switch(w.lanes=0,w.tag){case 16:e:{var M=w.pendingProps;if(h=Ef(w.elementType),w.type=h,typeof h=="function")_j(h)?(M=Rf(h,M),w.tag=1,w=eH(null,w,h,M,_)):(w.tag=0,w=mM(null,w,h,M,_));else{if(h!=null){var $=h.$$typeof;if($===P){w.tag=11,w=WU(null,w,h,M,_);break e}else if($===j){w.tag=14,w=KU(null,w,h,M,_);break e}}throw w=z(h)||h,Error(n(306,w,""))}}return w;case 0:return mM(h,w,w.type,w.pendingProps,_);case 1:return M=w.type,$=Rf(M,w.pendingProps),eH(h,w,M,$,_);case 3:e:{if(A(w,w.stateNode.containerInfo),h===null)throw Error(n(387));M=w.pendingProps;var ee=w.memoizedState;$=ee.element,Oj(h,w),Rv(w,M,null,_);var ke=w.memoizedState;if(M=ke.cache,Tp(w,Ci,M),M!==ee.cache&&Dj(w,[Ci],_,!0),Lv(),M=ke.element,ee.isDehydrated)if(ee={element:M,isDehydrated:!1,cache:ke.cache},w.updateQueue.baseState=ee,w.memoizedState=ee,w.flags&256){w=tH(h,w,M,_);break e}else if(M!==$){$=Kl(Error(n(424)),w),Av($),w=tH(h,w,M,_);break e}else for(h=w.stateNode.containerInfo,h.nodeType===9?h=h.body:h=h.nodeName==="HTML"?h.ownerDocument.body:h,Nn=Jl(h.firstChild),ks=w,Mr=!0,Pp=null,Xl=!0,_=Q5(w,null,M,_),w.child=_;_;)_.flags=_.flags&-3|4096,_=_.sibling;else{if(Tf(),M===$){w=Gu(h,w,_);break e}Cs(h,w,M,_)}w=w.child}return w;case 26:return a_(h,w),h===null?(_=gq(w.type,null,w.pendingProps,null))?w.memoizedState=_:Mr||(_=w.type,h=w.pendingProps,M=y_(q.current).createElement(_),M[vt]=w,M[Pt]=h,Ps(M,_,h),Je(M),w.stateNode=M):w.memoizedState=gq(w.type,h.memoizedProps,w.pendingProps,h.memoizedState),null;case 27:return B(w),h===null&&Mr&&(M=w.stateNode=pq(w.type,w.pendingProps,q.current),ks=w,Xl=!0,$=Nn,Up(w.type)?(ZM=$,Nn=Jl(M.firstChild)):Nn=$),Cs(h,w,w.pendingProps.children,_),a_(h,w),h===null&&(w.flags|=4194304),w.child;case 5:return h===null&&Mr&&(($=M=Nn)&&(M=Hue(M,w.type,w.pendingProps,Xl),M!==null?(w.stateNode=M,ks=w,Nn=Jl(M.firstChild),Xl=!1,$=!0):$=!1),$||Np(w)),B(w),$=w.type,ee=w.pendingProps,ke=h!==null?h.memoizedProps:null,M=ee.children,WM($,ee)?M=null:ke!==null&&WM($,ke)&&(w.flags|=32),w.memoizedState!==null&&($=$j(h,w,rue,null,null,_),a0._currentValue=$),a_(h,w),Cs(h,w,M,_),w.child;case 6:return h===null&&Mr&&((h=_=Nn)&&(_=que(_,w.pendingProps,Xl),_!==null?(w.stateNode=_,ks=w,Nn=null,h=!0):h=!1),h||Np(w)),null;case 13:return aH(h,w,_);case 4:return A(w,w.stateNode.containerInfo),M=w.pendingProps,h===null?w.child=Ff(w,null,M,_):Cs(h,w,M,_),w.child;case 11:return WU(h,w,w.type,w.pendingProps,_);case 7:return Cs(h,w,w.pendingProps,_),w.child;case 8:return Cs(h,w,w.pendingProps.children,_),w.child;case 12:return Cs(h,w,w.pendingProps.children,_),w.child;case 10:return M=w.pendingProps,Tp(w,w.type,M.value),Cs(h,w,M.children,_),w.child;case 9:return $=w.type._context,M=w.pendingProps.children,jf(w),$=_s($),M=M($),w.flags|=1,Cs(h,w,M,_),w.child;case 14:return KU(h,w,w.type,w.pendingProps,_);case 15:return YU(h,w,w.type,w.pendingProps,_);case 19:return nH(h,w,_);case 31:return uue(h,w,_);case 22:return QU(h,w,_,w.pendingProps);case 24:return jf(w),M=_s(Ci),h===null?($=Rj(),$===null&&($=bn,ee=Fj(),$.pooledCache=ee,ee.refCount++,ee!==null&&($.pooledCacheLanes|=_),$=ee),w.memoizedState={parent:M,cache:$},Ij(w),Tp(w,Ci,$)):((h.lanes&_)!==0&&(Oj(h,w),Rv(w,null,null,_),Lv()),$=h.memoizedState,ee=w.memoizedState,$.parent!==M?($={parent:M,cache:M},w.memoizedState=$,w.lanes===0&&(w.memoizedState=w.updateQueue.baseState=$),Tp(w,Ci,M)):(M=ee.cache,Tp(w,Ci,M),M!==$.cache&&Dj(w,[Ci],_,!0))),Cs(h,w,w.pendingProps.children,_),w.child;case 29:throw w.pendingProps}throw Error(n(156,w.tag))}function $u(h){h.flags|=4}function vM(h,w,_,M,$){if((w=(h.mode&32)!==0)&&(w=!1),w){if(h.flags|=16777216,($&335544128)===$)if(h.stateNode.complete)h.flags|=8192;else if(EH())h.flags|=8192;else throw Df=Uk,zj}else h.flags&=-16777217}function sH(h,w){if(w.type!=="stylesheet"||(w.state.loading&4)!==0)h.flags&=-16777217;else if(h.flags|=16777216,!wq(w))if(EH())h.flags|=8192;else throw Df=Uk,zj}function n_(h,w){w!==null&&(h.flags|=4),h.flags&16384&&(w=h.tag!==22?Ge():536870912,h.lanes|=w,Gb|=w)}function Hv(h,w){if(!Mr)switch(h.tailMode){case"hidden":w=h.tail;for(var _=null;w!==null;)w.alternate!==null&&(_=w),w=w.sibling;_===null?h.tail=null:_.sibling=null;break;case"collapsed":_=h.tail;for(var M=null;_!==null;)_.alternate!==null&&(M=_),_=_.sibling;M===null?w||h.tail===null?h.tail=null:h.tail.sibling=null:M.sibling=null}}function Tn(h){var w=h.alternate!==null&&h.alternate.child===h.child,_=0,M=0;if(w)for(var $=h.child;$!==null;)_|=$.lanes|$.childLanes,M|=$.subtreeFlags&65011712,M|=$.flags&65011712,$.return=h,$=$.sibling;else for($=h.child;$!==null;)_|=$.lanes|$.childLanes,M|=$.subtreeFlags,M|=$.flags,$.return=h,$=$.sibling;return h.subtreeFlags|=M,h.childLanes=_,w}function pue(h,w,_){var M=w.pendingProps;switch(Tj(w),w.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Tn(w),null;case 1:return Tn(w),null;case 3:return _=w.stateNode,M=null,h!==null&&(M=h.memoizedState.cache),w.memoizedState.cache!==M&&(w.flags|=2048),Hu(Ci),F(),_.pendingContext&&(_.context=_.pendingContext,_.pendingContext=null),(h===null||h.child===null)&&(Eb(w)?$u(w):h===null||h.memoizedState.isDehydrated&&(w.flags&256)===0||(w.flags|=1024,jj())),Tn(w),null;case 26:var $=w.type,ee=w.memoizedState;return h===null?($u(w),ee!==null?(Tn(w),sH(w,ee)):(Tn(w),vM(w,$,null,M,_))):ee?ee!==h.memoizedState?($u(w),Tn(w),sH(w,ee)):(Tn(w),w.flags&=-16777217):(h=h.memoizedProps,h!==M&&$u(w),Tn(w),vM(w,$,h,M,_)),null;case 27:if(W(w),_=q.current,$=w.type,h!==null&&w.stateNode!=null)h.memoizedProps!==M&&$u(w);else{if(!M){if(w.stateNode===null)throw Error(n(166));return Tn(w),null}h=he.current,Eb(w)?O5(w):(h=pq($,M,_),w.stateNode=h,$u(w))}return Tn(w),null;case 5:if(W(w),$=w.type,h!==null&&w.stateNode!=null)h.memoizedProps!==M&&$u(w);else{if(!M){if(w.stateNode===null)throw Error(n(166));return Tn(w),null}if(ee=he.current,Eb(w))O5(w);else{var ke=y_(q.current);switch(ee){case 1:ee=ke.createElementNS("http://www.w3.org/2000/svg",$);break;case 2:ee=ke.createElementNS("http://www.w3.org/1998/Math/MathML",$);break;default:switch($){case"svg":ee=ke.createElementNS("http://www.w3.org/2000/svg",$);break;case"math":ee=ke.createElementNS("http://www.w3.org/1998/Math/MathML",$);break;case"script":ee=ke.createElement("div"),ee.innerHTML=" +