diff --git a/backend/routers/homelab.py b/backend/routers/homelab.py index 37ef807..0d92e42 100644 --- a/backend/routers/homelab.py +++ b/backend/routers/homelab.py @@ -70,6 +70,12 @@ def host_neustart() -> dict: return _antwort(updates.starten("pve", "neustart")) +@router.post("/ziele/pve/kernel-aufraeumen") +def host_kernel_aufraeumen() -> dict: + """Alte Kernel vom Proxmox-Host entfernen (seit 25.09.2026, nur per Knopf). Welche, entscheidet der Ausführer.""" + return _antwort(updates.starten("pve", "kernel")) + + @router.post("/ziele/{ziel_id}/suchen") def suchen(ziel_id: str) -> dict: gast = inventar.gast(ziel_id) diff --git a/backend/services/homelab/kanal.py b/backend/services/homelab/kanal.py index 6312437..d6d4596 100644 --- a/backend/services/homelab/kanal.py +++ b/backend/services/homelab/kanal.py @@ -33,7 +33,8 @@ except ImportError: # Windows (Entwicklung): nur die Thread-Sperre fcntl = None AKTIONEN = {"bericht", "snapshot", "update", "os_update", "suchen", "zurueck", "snapshot_loeschen", - "host_update", "host_neustart", "sichern", "sicherung_zurueck", "sicherung_loeschen"} + "host_update", "host_neustart", "sichern", "sicherung_zurueck", "sicherung_loeschen", + "kernel_aufraeumen"} VERLOREN_S = 3 * 3600 # abgeholt, aber nie beantwortet (Ausführer abgestürzt, Host neu gestartet) BEHALTEN = 500 # so viele erledigte Aufträge bleiben sichtbar (Protokoll; bis 24.09.2026: 60) VOLLTEXT = 60 # die jüngsten erledigten behalten ihre ganze Ausgabe … diff --git a/backend/services/homelab/protokoll.py b/backend/services/homelab/protokoll.py index a5a328a..3db37fb 100644 --- a/backend/services/homelab/protokoll.py +++ b/backend/services/homelab/protokoll.py @@ -62,10 +62,12 @@ _AKTION = { "host_update": ("Host-Pakete eingespielt", "Host-Pakete gescheitert", "Host-Pakete werden eingespielt", "Host-Pakete"), "host_neustart": ("Neustart ausgelöst", "Neustart gescheitert", "Neustart angefordert", "Neustart"), + "kernel_aufraeumen": ("Alte Kernel entfernt", "Kernel aufräumen gescheitert", "Alte Kernel werden entfernt", + "Kernel aufräumen"), } -_HOST_AKTIONEN = {"bericht", "host_update", "host_neustart"} +_HOST_AKTIONEN = {"bericht", "host_update", "host_neustart", "kernel_aufraeumen"} _LAUF_WAS = {"app": "Update", "os": "Paket-Update", "pakete": "Paket-Update", "docker": "Docker-Update", - "neustart": "Neustart"} + "neustart": "Neustart", "kernel": "Kernel-Aufräumen"} _SCHRITT_WORT = {"wartet": "wartet", "laeuft": "läuft", "eingespielt": "eingespielt", "zurueckgerollt": "zurückgerollt", "fehler": "gescheitert", "uebersprungen": "übersprungen"} _MELDUNG = re.compile(r"^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) " @@ -313,6 +315,8 @@ def _lauf(x: dict, schw: Callable) -> dict | None: titel, stufe = f"{was} gescheitert · {name}", "fehler" elif ergebnis == "neustart": titel, stufe = f"Neustart ausgelöst · {name}", "info" + elif ergebnis == "aufgeraeumt": + titel, stufe = f"Alte Kernel entfernt · {name}", "ok" elif ergebnis == "offen": titel, stufe = f"Docker-Probelauf · {name}", "info" else: diff --git a/backend/services/homelab/speicher.py b/backend/services/homelab/speicher.py index 60d3e18..f961ceb 100644 --- a/backend/services/homelab/speicher.py +++ b/backend/services/homelab/speicher.py @@ -9,6 +9,8 @@ Alles aus dem Bericht des Ausführers (alle 10 Minuten), dazu eine eigene Prüfu ist eingebunden, hängt nicht, hat Platz (80/90 % wie oben). • Sicherungen: Für jeden Gast, den ein Sicherungsauftrag erfasst, liegt auf dessen Ziel eine frische Sicherung (täglicher Auftrag: höchstens 26 Stunden alt, sonst 8 Tage), und das Ziel ist erreichbar. + • Systemplatte des Proxmox-Hosts (Stufen wie oben): Dort liegen die Kernel, die Sicherungen vor Updates (local) und + alles vom Host selbst. Alte Kernel lassen sich per Knopf entfernen (Ausführer: kernel_aufraeumen). Hinweise gehen über den Wächter (pruefe_speicher), die Oberfläche zeigt alles als Karte „Speicher und Sicherungen“ (lage). """ @@ -111,7 +113,7 @@ def empfehlungen(bericht: dict) -> list[dict]: for u in g.get("ungenutzt") or []: liste.append({ "art": "ungenutzt", "platz": u.get("belegt"), "titel": f"{_name(g)}: ungenutzte Platte {u['volume']}", - "kurz": f"ungenutzte Platte bei {_name(g)}", + "kurz": f"ungenutzte Platte bei {_name(g)}", "ort": "pool", "text": (f"Hängt an keinem Laufwerk mehr. Wird sie nicht mehr gebraucht: in Proxmox {_wo(g)} → Hardware " "→ „Unbenutzte Festplatte“ → Entfernen (löscht sie endgültig).")}) if (summe := sum(x for _, x in container)) >= EMPFEHLUNG_AB: @@ -120,16 +122,18 @@ def empfehlungen(bericht: dict) -> list[dict]: befehle = "; ".join(f"pct fstrim {g['vmid']} --ignore-mountpoints" for g, _ in container) liste.append({ "art": "trim", "platz": summe, "titel": "Container: freigegebenen Platz an den Pool zurückgeben", - "kurz": f"{_groesse(summe)} per TRIM in den Containern", + "kurz": f"{_groesse(summe)} per TRIM in den Containern", "ort": "pool", "text": (f"Die Container belegen im Pool {_gb(summe)} GB mehr, als sie nutzen ({einzeln}). In Proxmox: pve → " f"Shell → {befehle} — im laufenden Betrieb und ohne Verlust.")}) for p in (bericht.get("host") or {}).get("pools") or []: for v in p.get("verwaist") or []: liste.append({ "art": "verwaist", "platz": v.get("belegt"), "titel": f"Verwaiste Platte {v['volume']}", - "kurz": f"verwaiste Platte {v['volume']}", + "kurz": f"verwaiste Platte {v['volume']}", "ort": "pool", "text": (f"Gehört zu keinem Gast mehr. Wird sie nicht mehr gebraucht: in Proxmox pve → {p.get('speicher')} " "→ Datenträger → Entfernen (löscht sie endgültig).")}) + if kernel := _kernel_vorschlag(bericht.get("host") or {}): + liste.append(kernel) liste.sort(key=lambda e: -(e["platz"] or 0)) for g in gaeste: for s in g.get("snapshots") or []: @@ -137,6 +141,7 @@ def empfehlungen(bericht: dict) -> list[dict]: wann = f"vom {m.group(3)}.{m.group(2)}. {m.group(4)}:{m.group(5)}" if m else "von Hand angelegt" liste.append({ "art": "snapshot", "platz": None, "titel": f"{_name(g)}: Snapshot {s}", "kurz": f"Snapshot bei {_name(g)}", + "ort": "pool", "text": ((f"Rückweg des Updates {wann}. Läuft {_name(g)} seitdem gut, kann er weg" if m else f"Snapshot {wann}. Wird er nicht mehr gebraucht, kann er weg") + f": in Proxmox {_wo(g)} → Snapshots → {s} → Entfernen. Wie viel er belegt, sagt Proxmox " @@ -144,6 +149,36 @@ def empfehlungen(bericht: dict) -> list[dict]: return liste +def _kernel_vorschlag(host: dict) -> dict | None: + """Alte Kernel auf der Systemplatte des Hosts — mit Knopf. Die Liste stammt vom Ausführer (was apt für entbehrlich + hält, nie der laufende oder der nächste); beim Klick bestimmt er sie noch einmal selbst.""" + alt = host.get("kernel_alt") or [] + if not alt: + return None + platz = sum(int(k.get("groesse") or 0) for k in alt) + bleiben = ", ".join(str(v).removesuffix("-pve") for v in host.get("kernel_bleiben") or []) or "der laufende" + return { + "art": "kernel", "ort": "systemplatte", "platz": platz, + "titel": f"Proxmox-Host: {len(alt)} alte Kernel entfernen", + "kurz": f"{_groesse(platz)} alte Kernel auf dem Proxmox-Host", + "text": (f"Liegen auf der Systemplatte des Hosts, nicht im Speicherpool. Entfernt wird nur, was Proxmox selbst für " + f"entbehrlich hält; es bleiben {bleiben} — darunter der laufende und der für den nächsten Start. Die " + "Gäste laufen weiter, ein Neustart ist dafür nicht nötig."), + "aktion": {"methode": "POST", "pfad": "/api/homelab/ziele/pve/kernel-aufraeumen", "label": "Alte Kernel entfernen", + "frage": (f"{len(alt)} alte Kernel vom Proxmox-Host entfernen (etwa {_groesse(platz)})? Es bleiben " + f"{bleiben}. Die Gäste laufen weiter, ein Neustart ist nicht nötig.")}, + } + + +def systemplatte(bericht: dict) -> dict | None: + p = (bericht.get("host") or {}).get("systemplatte") or {} + gesamt, belegt = p.get("gesamt"), p.get("belegt") + if not gesamt or belegt is None: + return None + anteil = belegt / gesamt + return {"belegt": belegt, "gesamt": gesamt, "frei": gesamt - belegt, "anteil": anteil, "stufe": _stufe(anteil)} + + def _trim_vm(g: dict, im_pool: int, genutzt: int, gewinn: int) -> dict: kopf = f"Im Pool belegt die VM {_gb(im_pool)} GB, genutzt sind darin {_gb(genutzt)} GB." if g.get("discard"): @@ -156,6 +191,7 @@ def _trim_vm(g: dict, im_pool: int, genutzt: int, gewinn: int) -> dict: "sofort mit „sudo fstrim -av“ in der VM.") return {"art": "trim-vm", "platz": gewinn, "titel": f"{_name(g)}: {_groesse(gewinn)} an den Pool zurückgeben", "kurz": f"{_groesse(gewinn)} bei {_name(g)} per TRIM" + ("" if g.get("discard") else " (Discard einschalten)"), + "ort": "pool", "text": text} @@ -258,8 +294,8 @@ def sicherungen(bericht: dict, jetzt: float) -> dict: def lage(jetzt: float | None = None) -> dict: b = _bericht() jetzt = time.time() if jetzt is None else jetzt - return {"bericht": bool(b), "pools": pools(b), "nas": nas(b), "sicherungen": sicherungen(b, jetzt), - "empfehlungen": empfehlungen(b)} + return {"bericht": bool(b), "pools": pools(b), "systemplatte": systemplatte(b), "nas": nas(b), + "sicherungen": sicherungen(b, jetzt), "empfehlungen": empfehlungen(b)} def pruefe_speicher(jetzt: float | None = None) -> list: @@ -271,7 +307,7 @@ def pruefe_speicher(jetzt: float | None = None) -> list: jetzt = time.time() if jetzt is None else jetzt befunde = [] tipps = empfehlungen(b) - platz_tipp = "; ".join(e["kurz"] for e in tipps[:3]) + platz_tipp = "; ".join([e["kurz"] for e in tipps if e.get("ort") == "pool"][:3]) for p in pools(b): if p["stufe"] == "ok": continue @@ -284,6 +320,16 @@ def pruefe_speicher(jetzt: float | None = None) -> list: + (f"Platz bringt: {platz_tipp}. " if platz_tipp else "") + "Alles dazu im Homelab-Cockpit unter „Speicher und Sicherungen“."), quelle="pve")) + sp = systemplatte(b) + if sp and sp["stufe"] != "ok": + kernel = next((e for e in tipps if e["art"] == "kernel"), None) + befunde.append(Befund( + id="host-platte", stufe=sp["stufe"], + titel=f"Systemplatte des Proxmox-Hosts zu {min(100, round(sp['anteil'] * 100))} % voll", + text=(f"Noch {_groesse(sp['frei'])} frei. Läuft sie voll, scheitern Updates und die Sicherungen vor Updates. " + + (f"Platz bringt: {kernel['kurz']} (Knopf im Homelab-Cockpit unter „Speicher und Sicherungen“)." + if kernel else "Alte Sicherungen unter /var/lib/vz/dump und ISO-Abbilder prüfen.")), + quelle="pve")) for n in nas(b): if n["stufe"] == "ok": continue diff --git a/backend/services/homelab/updates.py b/backend/services/homelab/updates.py index ab87882..8f26b06 100644 --- a/backend/services/homelab/updates.py +++ b/backend/services/homelab/updates.py @@ -316,6 +316,16 @@ def _docker_lauf(lauf: dict, basis: str, gast: dict) -> None: def _host_lauf(lauf: dict) -> None: try: + if lauf["baustein"] == "kernel": + # Welche Kernel gehen, bestimmt der Ausführer selbst (nie der laufende oder der nächste). + a = _auftrag(lauf, "kernel_aufraeumen", {}, ZEITLIMIT_SICHERUNG_S) + werte = dict(z.split("=", 1) for z in str(a.get("text") or "").splitlines()[:2] if "=" in z) + anzahl, frei = int(werte.get("entfernt") or 0), int(werte.get("frei") or 0) + _auftrag(lauf, "bericht", {}, 5 * 60) + _ende(lauf, "aufgeraeumt", f"Proxmox-Host: {anzahl} alte Kernel entfernt, " + f"{frei / 1e9:.1f} GB frei geworden.".replace(".", ",", 1) + if anzahl else "Proxmox-Host: kein alter Kernel zu entfernen.") + return if lauf["baustein"] == "neustart": _auftrag(lauf, "host_neustart", {}, 60) _ende(lauf, "neustart", "Der Proxmox-Host startet neu. Die KI-Box meldet, ob alles wiederkommt.") @@ -324,7 +334,8 @@ def _host_lauf(lauf: dict) -> None: _auftrag(lauf, "bericht", {}, 5 * 60) _ende(lauf, "eingespielt", "Proxmox-Host: Pakete eingespielt. Ein Neustart ist ein eigener Knopf.") except RuntimeError as exc: - _ende(lauf, "fehler", f"Proxmox-Host: Update gescheitert — {exc}", dringend=True) + was = "Kernel aufräumen" if lauf["baustein"] == "kernel" else "Update" + _ende(lauf, "fehler", f"Proxmox-Host: {was} gescheitert — {exc}", dringend=True) def _ende(lauf: dict, ergebnis: str, text: str, dringend: bool = False) -> None: @@ -358,7 +369,7 @@ def starten(ziel_id: str, baustein: str, sammellauf: dict | None = None) -> dict sammellauf ({"id", "start"}) setzt nur „Alle aktualisieren“ (sammellauf.py) für seine Schritte; ohne ihn lehnt der Knopf ab, solange ein Sammellauf läuft.""" - if baustein not in ("app", "os", "pakete", "neustart", "docker"): + if baustein not in ("app", "os", "pakete", "neustart", "docker", "kernel"): return {"ok": False, "detail": "Unbekannter Baustein."} with START_SPERRE: if sammellauf is None and _sammellauf_laeuft(): @@ -368,7 +379,8 @@ def starten(ziel_id: str, baustein: str, sammellauf: dict | None = None) -> dict if ziel_id == "pve": name, gast = "Proxmox-Host", None host = ((kanal.bericht() or {}).get("bericht") or {}).get("host") or {} - mehr = {"pakete": len(host.get("updates") or [])} if baustein == "pakete" else {} + mehr = ({"pakete": len(host.get("updates") or [])} if baustein == "pakete" + else {"kernel": len(host.get("kernel_alt") or [])} if baustein == "kernel" else {}) else: gast = inventar.gast(ziel_id) if not gast: diff --git a/backend/tests/test_homelab.py b/backend/tests/test_homelab.py index ab03361..af58c9c 100644 --- a/backend/tests/test_homelab.py +++ b/backend/tests/test_homelab.py @@ -148,6 +148,8 @@ def _ausfuehrer_spielen(stopp: threading.Event, neue_version: str, protokoll: li text = "" if auftrag["aktion"] == "snapshot": text = "snapshot=mc2-20260924-190000" + elif auftrag["aktion"] == "kernel_aufraeumen": + text = "entfernt=20\nfrei=18300000000\nRemoving proxmox-kernel-6.17.2-1-pve-signed …" elif auftrag["aktion"] == "bericht": neu = json.loads(json.dumps(BERICHT)) next(g for g in neu["gaeste"] if g["vmid"] == 104)["app"]["version"] = neue_version @@ -451,3 +453,33 @@ def test_neuer_kernel_heisst_neustart(daten): host = {b["id"]: b for b in next(z for z in inventar.ziele()["ziele"] if z["id"] == "pve")["bausteine"]} assert host["neustart"]["grund"] == "Neuer Kernel 7.0.14-19-pve ist installiert, es läuft noch 7.0.14-12-pve." assert host["neustart"]["aktion"]["label"] == "Jetzt neu starten" + + +def test_alte_kernel_nur_auf_knopfdruck(ausfuehrer): + """25.09.2026: 25 Kernel auf dem Host, 20 davon hielt apt für entbehrlich.""" + starten, protokoll, meldungen, verlauf = ausfuehrer + starten("1.27.3") + lauf = _auf_ende(updates.starten("pve", "kernel")["lauf"]) + assert (lauf["ergebnis"], protokoll) == ("aufgeraeumt", ["kernel_aufraeumen", "bericht"]) + assert meldungen[-1] == ("Proxmox-Host: 20 alte Kernel entfernt, 18,3 GB frei geworden.", False) + assert verlauf[-1][2:4] == ("pve", "aufgeraeumt") + from services.homelab import protokoll as prot + assert prot._lauf(lauf, lambda *a: None) is None or True # Titel-Zweig existiert (kein KeyError) + + +def test_ausfuehrer_waehlt_alte_kernel_selbst(): + a = _ausfuehrer_modul() + simulation = """NOTE: This is only a simulation! +Reading package lists... +The following packages will be REMOVED: + proxmox-kernel-6.14.11-2-pve-signed proxmox-kernel-7.0.14-12-pve-signed libfoo1 +Remv proxmox-kernel-6.14.11-2-pve-signed [6.14.11-2] +Remv proxmox-kernel-7.0.14-12-pve-signed [7.0.14-12] +Remv proxmox-kernel-7.0.14-5-pve-signed [7.0.14-5] +Remv proxmox-kernel-6.17 [6.17.13-21] +Remv libfoo1 [1.2-3] +Remv pve-kernel-6.8.12-4-pve [6.8.12-4] +""" + behalten = {"7.0.14-12-pve", "7.0.14-19-pve"} + assert a.alte_kernel(simulation, behalten) == [ + "proxmox-kernel-6.14.11-2-pve-signed", "proxmox-kernel-7.0.14-5-pve-signed", "pve-kernel-6.8.12-4-pve"] diff --git a/backend/tests/test_homelab_speicher.py b/backend/tests/test_homelab_speicher.py index f5d4620..bbbe41e 100644 --- a/backend/tests/test_homelab_speicher.py +++ b/backend/tests/test_homelab_speicher.py @@ -239,3 +239,27 @@ def test_schnittstelle(monkeypatch): assert daten["bericht"] is True and daten["pools"][0]["stufe"] == "ok" assert daten["nas"][0]["erreichbar"] is True and daten["sicherungen"]["stufe"] == "ok" assert daten["empfehlungen"][0]["art"] == "trim-vm" + + +def test_alte_kernel_mit_knopf_und_systemplatte(monkeypatch): + b = _bericht() + b["host"].update( + kernel_alt=[{"paket": f"proxmox-kernel-6.17.{i}-1-pve-signed", "version": f"6.17.{i}-1-pve", "groesse": 915_000_000} + for i in range(20)], + kernel_bleiben=["6.14.8-2-pve", "6.17.13-21-pve", "7.0.14-12-pve", "7.0.14-19-pve"], + systemplatte={"belegt": 47_000_000_000, "gesamt": 94_000_000_000}) + tipps = speicher.empfehlungen(b) + assert [t["art"] for t in tipps] == ["trim-vm", "kernel", "trim", "snapshot"] + kernel = tipps[1] + assert kernel["titel"] == "Proxmox-Host: 20 alte Kernel entfernen" and kernel["platz"] == 18_300_000_000 + assert kernel["ort"] == "systemplatte" and kernel["aktion"]["pfad"] == "/api/homelab/ziele/pve/kernel-aufraeumen" + assert "es bleiben 6.14.8-2, 6.17.13-21, 7.0.14-12, 7.0.14-19" in kernel["text"] + assert speicher.systemplatte(b)["stufe"] == "ok" + # Die Systemplatte läuft voll: eigener Hinweis mit dem Kernel-Vorschlag; der Pool-Hinweis nennt ihn nicht. + b["host"]["systemplatte"]["belegt"] = 80_000_000_000 + b["host"]["pools"][0]["belegt"] = int(b["host"]["pools"][0]["gesamt"] * 0.95) + monkeypatch.setattr(speicher, "antwortet", lambda s, p: True) + monkeypatch.setattr(speicher, "_bericht", lambda: b) + befunde = {x.id: x for x in speicher.pruefe_speicher(JETZT)} + assert befunde["host-platte"].stufe == "gelb" and "18 GB alte Kernel auf dem Proxmox-Host" in befunde["host-platte"].text + assert "Kernel" not in befunde["pool:local-lvm"].text diff --git a/deploy/homelab/ausfuehrer.py b/deploy/homelab/ausfuehrer.py index 43bac7b..06d6dd6 100644 --- a/deploy/homelab/ausfuehrer.py +++ b/deploy/homelab/ausfuehrer.py @@ -637,12 +637,70 @@ def _host() -> dict: host["fehler"] = str(exc)[:200] code, kernel = _laufen(["uname", "-r"], 5) host["kernel"] = kernel if code == 0 else None - vorhanden = [os.path.basename(p)[len("vmlinuz-"):] for p in glob.glob("/boot/vmlinuz-*")] - host["kernel_neu"] = neuer_kernel(host["kernel"], vorhanden, _lesen("/etc/kernel/proxmox-boot-pin").strip() or None) + pin = _lesen("/etc/kernel/proxmox-boot-pin").strip() or None + host["kernel_neu"] = neuer_kernel(host["kernel"], _kernel_vorhanden(), pin) host["neustart_noetig"] = host["neustart_noetig"] or bool(host["kernel_neu"]) + host["systemplatte"] = _platte("/") + try: + host["kernel_alt"], host["kernel_bleiben"] = _kernel_lage(host["kernel"], host["kernel_neu"] or host["kernel"], pin) + except Exception: + host["kernel_alt"], host["kernel_bleiben"] = [], [] return host +def _platte(pfad: str) -> dict | None: + """Belegung wie df sie zeigt: belegt + was Nutzer noch schreiben dürfen (ohne die Reserve für root).""" + try: + s = os.statvfs(pfad) + except (OSError, AttributeError): # AttributeError: Windows kennt statvfs nicht (Tests am PC) + return None + belegt = (s.f_blocks - s.f_bfree) * s.f_frsize + return {"belegt": belegt, "gesamt": belegt + s.f_bavail * s.f_frsize} + + +def _kernel_vorhanden() -> list[str]: + return [os.path.basename(p)[len("vmlinuz-"):] for p in glob.glob("/boot/vmlinuz-*")] + + +KERNEL_PAKET = re.compile(r"^(?:proxmox|pve)-kernel-(\d+\.\d+\.\d+-\d+-pve)(?:-signed)?$") + + +def alte_kernel(simulation: str, behalten: set[str]) -> list[str]: + """Kernel-Pakete, die `apt-get -s autoremove` entfernen würde — nur Kernel und nie einer aus `behalten` (der + laufende, der beim nächsten Start kommt, ein festgepinnter). Was Proxmox selbst hält (je Serie den jüngsten, den + bei der Installation), steht gar nicht erst in der Simulation.""" + pakete = [] + for zeile in simulation.splitlines(): + m = re.match(r"^Remv (\S+)", zeile) + k = KERNEL_PAKET.match(m.group(1)) if m else None + if k and k.group(1) not in behalten: + pakete.append(m.group(1)) + return pakete + + +def _kernel_lage(laufend: str | None, naechster: str | None, pin: str | None) -> tuple[list[dict], list[str]]: + """(entbehrliche Kernel mit Paket, Version und belegtem Platz samt initrd; die bleibenden Versionen).""" + code, simulation = _laufen(["apt-get", "-s", "autoremove"], 120) + if code != 0 or not laufend: + return [], [] + pakete = alte_kernel(simulation, {k for k in (laufend, naechster, pin) if k}) + groessen: dict[str, int] = {} + if pakete: + code, aus = _laufen(["dpkg-query", "-W", "-f=${Package}\t${Installed-Size}\n", *pakete], 30) + for zeile in aus.splitlines() if code == 0 else []: + name, _, kib = zeile.partition("\t") + if kib.strip().isdigit(): + groessen[name] = int(kib) * 1024 + weg = [] + for paket in pakete: + version = KERNEL_PAKET.match(paket).group(1) + initrd = f"/boot/initrd.img-{version}" + weg.append({"paket": paket, "version": version, + "groesse": groessen.get(paket, 0) + (os.path.getsize(initrd) if os.path.exists(initrd) else 0)}) + entbehrlich = {w["version"] for w in weg} + return weg, sorted((v for v in _kernel_vorhanden() if v not in entbehrlich), key=_versionsschluessel) + + def _versionsschluessel(version: str) -> tuple[int, ...]: return tuple(int(x) for x in re.findall(r"\d+", version)) @@ -843,11 +901,33 @@ def a_bericht(p: dict) -> tuple[int, str]: return 0, json.dumps(bericht(), ensure_ascii=False) +def a_kernel_aufraeumen(p: dict) -> tuple[int, str]: + """Alte Kernel entfernen (seit 25.09.2026, nur auf Knopfdruck). Welche, bestimmt dieser Host selbst, jetzt und wie + im Bericht — der Server kann nur den Anstoß geben. Am Ende: entfernt=, frei=.""" + code, laufend = _laufen(["uname", "-r"], 5) + if code != 0 or not laufend.strip(): + raise ValueError("der laufende Kernel ließ sich nicht lesen") + laufend = laufend.strip() + pin = _lesen("/etc/kernel/proxmox-boot-pin").strip() or None + naechster = neuer_kernel(laufend, _kernel_vorhanden(), pin) or laufend + weg, _ = _kernel_lage(laufend, naechster, pin) + pakete = [w["paket"] for w in weg if w["version"] not in {laufend, naechster, pin}] + if not pakete: + return 0, "entfernt=0\nfrei=0\nKein alter Kernel zu entfernen." + vorher = _platte("/") or {} + code, text = _laufen(["env", "DEBIAN_FRONTEND=noninteractive", "apt-get", "-y", "purge", *pakete], 30 * 60, + sanft=True) + nachher = _platte("/") or {} + frei = max(0, int(vorher.get("belegt") or 0) - int(nachher.get("belegt") or 0)) + return code, f"entfernt={len(pakete) if code == 0 else 0}\nfrei={frei}\n{text[-1500:]}" + + AKTIONEN = {"snapshot": a_snapshot, "update": a_update, "os_update": a_os_update, "suchen": a_suchen, "zurueck": a_zurueck, "snapshot_loeschen": a_snapshot_loeschen, "host_update": a_host_update, "host_neustart": a_host_neustart, "bericht": a_bericht, - "sichern": a_sichern, "sicherung_zurueck": a_sicherung_zurueck, "sicherung_loeschen": a_sicherung_loeschen} + "sichern": a_sichern, "sicherung_zurueck": a_sicherung_zurueck, "sicherung_loeschen": a_sicherung_loeschen, + "kernel_aufraeumen": a_kernel_aufraeumen} def ausfuehren(auftrag: dict) -> dict: diff --git a/docs/ARCHITEKTUR.md b/docs/ARCHITEKTUR.md index 5c8f04f..1708ea6 100644 --- a/docs/ARCHITEKTUR.md +++ b/docs/ARCHITEKTUR.md @@ -349,7 +349,13 @@ flowchart LR nicht eingebunden oder hängt = rot; eine Sicherung älter als erlaubt (Zeitplan nur mit Uhrzeit = täglich: 26 h, sonst 8 Tage) = gelb, bei allen Geräten oder unerreichbarem Ziel rot. Empfehlungen, größter Gewinn zuerst: Platz, den ein Gast freigegeben hat, der im Pool aber belegt bleibt (VM ohne Discard; Container per `pct fstrim`, - zusammengefasst ab 1 GB), ungenutzte und verwaiste Platten, Snapshots (Größe unbekannt, zuletzt). + zusammengefasst ab 1 GB), ungenutzte und verwaiste Platten, Snapshots (Größe unbekannt, zuletzt). Seit 25.09. auch + die Systemplatte des Hosts (`host.systemplatte`, `statvfs("/")` wie df) und alte Kernel: `host.kernel_alt` = was + `apt-get -s autoremove` entfernen würde, nur Kernel-Pakete, nie laufender, nächster (`kernel_neu`) oder + festgepinnter Kernel, mit Größe samt initrd; `host.kernel_bleiben`. Der Vorschlag hat einen Knopf + (`POST /api/homelab/ziele/pve/kernel-aufraeumen` → Lauf `kernel` → Ausführer-Aktion `kernel_aufraeumen`, die die + Liste selbst neu bestimmt und `apt-get -y purge` ausführt; Ergebnis `aufgeraeumt`). `neustart_noetig` kommt + außerdem, wenn ein neuerer Kernel installiert ist als der laufende (Proxmox legt dafür kein reboot-required an). - **Oberfläche** (Bereich „Homelab“, nur Daten aus `/api/homelab/…`): - **Cockpit** (`/homelab`): oben die Lage wie das Warnpanel der KI-Box — die große Leuchte (Störung vor Hinweis vor laufendem Update vor offenen Updates) und eine Lampe je Gerät —, darunter die Hinweise des Homelab-Wächters und diff --git a/docs/BEDIENUNG.md b/docs/BEDIENUNG.md index 42e8030..40c7b53 100644 --- a/docs/BEDIENUNG.md +++ b/docs/BEDIENUNG.md @@ -112,8 +112,11 @@ Werte zu jedem Zeitpunkt; „Werte als Tabelle“ klappt die letzten Punkte als - **Speicher und Sicherungen** (seit 25.09.): der Speicherpool des Proxmox-Hosts (auf ihm liegen alle Container, die VM und die Snapshots), das NAS (antwortet es, ist es eingebunden, wie voll) und die nächtlichen Sicherungen (hat jedes Gerät eine frische). Füllstände ab 80 % bernstein, ab 90 % — also bei 10 % frei — rot und als dringende - Meldung. Darunter „Was im Speicherpool Platz bringt“: Vorschläge mit ungefährem Gewinn und dem Klickweg in - Proxmox, größter zuerst; aufgeklappt, sobald der Pool knapp wird. Gelöscht wird nichts von selbst. + Meldung. Dazu die Systemplatte des Hosts (Kernel, Sicherungen vor Updates), mit denselben Stufen. Darunter „Was + Platz bringt“: Vorschläge mit ungefährem Gewinn, dem Ort und dem Klickweg in Proxmox, größter zuerst; aufgeklappt, + sobald Pool oder Systemplatte knapp werden. Gelöscht wird nichts von selbst — nur alte Kernel haben einen Knopf + („Alte Kernel entfernen“, mit Rückfrage): Entfernt wird, was Proxmox selbst für entbehrlich hält, nie der laufende + oder der Kernel für den nächsten Start; die Gäste laufen weiter. ## Homelab · Updates diff --git a/frontend/dist/assets/Auftraege-PZ7YvGYr.js b/frontend/dist/assets/Auftraege-CAHujylB.js similarity index 98% rename from frontend/dist/assets/Auftraege-PZ7YvGYr.js rename to frontend/dist/assets/Auftraege-CAHujylB.js index d77ad7b..32dbcb7 100644 --- a/frontend/dist/assets/Auftraege-PZ7YvGYr.js +++ b/frontend/dist/assets/Auftraege-CAHujylB.js @@ -1,2 +1,2 @@ -import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{Pt as a,X as o,Z as s,f as c,u as l,xt as u,yt as d}from"./index-COh3_SSc.js";import{t as f}from"./button-D8rvET0Z.js";import{t as p}from"./Bestaetigen-D8Dh5cqS.js";var m=t();function h(e,t){if(e===`os`)return{laeuft:`Ubuntu`,neu:t.count?`${t.count} ${t.count===1?`Paket`:`Pakete`}`:null};if(e===`hermes`)return{laeuft:t.installed_version?`v${t.installed_version}`:`–`,neu:t.behind?`+${t.behind.toLocaleString(`de-DE`)} Änderungen`:null};let n=e===`engine`?`b`:`v`;return{laeuft:t.installed_build==null?`–`:`${n}${t.installed_build}`,neu:t.latest_build!=null&&t.installed_build!=null&&t.latest_build>t.installed_build?`${n}${t.latest_build}`:null}}function g(e,t){return!t||t.error?null:e===`os`?typeof t.count==`number`?t.count>0:null:e===`hermes`?typeof t.behind==`number`?t.behind>0:null:t.latest_build==null||t.installed_build==null?null:t.latest_build>t.installed_build}function _(e){let t=e.trim();return/timed out|timeout|zeitüberschreitung/i.test(t)?`Konnte nicht prüfen: Die Gegenstelle hat nicht rechtzeitig geantwortet. Später klappt es meist wieder.`:/name resolution|name or service not known|network is unreachable|connection (refused|reset)|nicht erreichbar/i.test(t)?`Konnte nicht prüfen: Die Box kommt gerade nicht ins Internet.`:`Konnte nicht prüfen: ${t.length>160?`${t.slice(0,157)}…`:t}`}var v=e=>e.group===`download`||/^download\s/i.test(e.label),y=e=>e.group===`pruefen`||e.label===`Nach Updates suchen`,b=e=>a(e)&&v(e),x=[[/^download\s+(.+)$/i,`Download $1`],[/^OS-Update \(apt\)$/,`Update Betriebssystem`],[/^Engine-Update \(llama\.cpp Vulkan\)$/,`Update Motor (llama.cpp)`],[/^Router-Update \(llama-swap\)$/,`Update llama-swap`],[/^Hermes-Agent-Update$/,`Update Hermes`]],S=[[`Engine (llama.cpp)`,`Motor`],[`Router (llama-swap)`,`llama-swap`],[`Hermes-Agent`,`Hermes`],[`OS (apt)`,`Betriebssystem`]];function C(e){for(let[t,n]of x)if(t.test(e.label))return e.label.replace(t,n);return e.label.startsWith(`Alle aktualisieren`)?S.reduce((e,[t,n])=>e.split(t).join(n),e.label):e.label}function w(e){if(e<60)return`noch unter einer Minute`;let t=Math.round(e/60);if(t<60)return`noch etwa ${t} min`;let n=Math.floor(t/60),r=t%60;return r?`noch etwa ${n} h ${r} min`:`noch etwa ${n} h`}function T(e,t=Date.now()/1e3){let n=Math.max(0,t-e.started_at),r=Math.floor(n/60),i=n<60?`ein paar Sekunden`:r<60?`${r} min`:`${Math.floor(r/60)} h ${r%60} min`;return`${e.state===`queued`?`Wartet`:`Läuft`} seit ${i}`}function E(e){if(e.progress==null)return null;let t=[`${Math.round(e.progress)} %`];return e.total_bytes&&t.push(`${u(e.done_bytes??0,1)} von ${u(e.total_bytes,1)}`),e.eta_s!=null&&a(e)&&t.push(w(e.eta_s)),t.join(` · `)}function D(e){for(let t=(e.log?.length??0)-1;t>=0;t--){let n=e.log[t].trim();if(n&&!n.startsWith(`$ `))return n}return null}function O(e,t=Date.now()/1e3){let n=e.filter(a).sort((e,t)=>e.started_at-t.started_at),r=e.filter(e=>!a(e)&&t-(e.finished_at??e.started_at)<86400).sort((e,t)=>(t.finished_at??t.started_at)-(e.finished_at??e.started_at)).slice(0,3);return[...n,...r]}function k(e,t,n){if(!n)return`Nach dem Download übernimmt ${e} die Rolle „${t}“.`;let r=n.weitere.length?` Die Rolle${n.weitere.length===1?``:`n`} „${n.weitere.join(`“, „`)}“ behält es.`:``;return`Achtung: Nach dem Download übernimmt ${e} die Rolle „${t}“ und ersetzt damit ${n.name}. Das bisherige Modell bleibt auf der Platte.${r}`+(n.zwilling?` Bilder liest vorerst weiter sein Bild-Zwilling, also noch das bisherige Modell.`:``)}function A(e){return`Kurze Unterbrechung: Beim Eintragen lädt llama-swap sofort neu. Was Lucy oder OpenChamber gerade schreiben, bricht ab, und die Modelle werden neu geladen.`+(e?` Mit Rolle passiert das nach dem Download noch einmal.`:``)}var j=r(e(),1),M=n(),N={queued:{text:`Wartet`,art:`cyan`},running:{text:`Läuft`,art:`cyan`},done:{text:`Fertig`,art:`gruen`},failed:{text:`Fehler`,art:`rot`},canceled:{text:`Abgebrochen`,art:`grau`}},P={queued:`bg-cyan`,running:`bg-cyan`,done:`bg-gruen`,failed:`bg-rot`,canceled:`bg-text-3`},F=e=>d(new Date(e*1e3).toISOString());function I(e){let t=(0,m.c)(3),[n,r]=(0,j.useState)(L),i,a;return t[0]===e?(i=t[1],a=t[2]):(i=()=>{if(!e)return;let t=window.setInterval(()=>r(Date.now()/1e3),3e4);return()=>window.clearInterval(t)},a=[e],t[0]=e,t[1]=i,t[2]=a),(0,j.useEffect)(i,a),n}function L(){return Date.now()/1e3}function R(e){let t=(0,m.c)(75),{job:n,onAbbrechen:r,abbrechenGesperrt:o,ebene:s}=e,l=s===void 0?4:s,[u,d]=(0,j.useState)(!1),[h,g]=(0,j.useState)(!1),_;t[0]===n.state?_=t[1]:(_=N[n.state]??{text:n.state,art:`grau`},t[0]=n.state,t[1]=_);let y=_,x;t[2]===n?x=t[3]:(x=C(n),t[2]=n,t[3]=x);let S=x,w;t[4]===n?w=t[5]:(w=E(n),t[4]=n,t[5]=w);let O=w,k;t[6]===n?k=t[7]:(k=D(n),t[6]=n,t[7]=k);let A=k,L;t[8]===n?L=t[9]:(L=a(n),t[8]=n,t[9]=L);let R=L,z=I(R),B;t[10]!==n||t[11]!==r?(B=!!r&&b(n),t[10]=n,t[11]=r,t[12]=B):B=t[12];let V=B,H,U,W,G,K,q,J,Y;if(t[13]!==o||t[14]!==V||t[15]!==l||t[16]!==O||t[17]!==z||t[18]!==n||t[19]!==R||t[20]!==A||t[21]!==h||t[22]!==S||t[23]!==y.art||t[24]!==y.text){let e=(n.log??[]).slice(-12),r=l===3?`h3`:`h4`;J=`Auftrag: ${S}`,Y=`flex flex-col gap-2.5 rounded-xl border border-linie bg-erhaben/50 p-3.5`;let a;t[33]!==r||t[34]!==S?(a=(0,M.jsx)(r,{className:`m-0 min-w-0 text-[15px] leading-snug font-semibold break-words`,children:S}),t[33]=r,t[34]=S,t[35]=a):a=t[35];let s;t[36]!==y.art||t[37]!==y.text?(s=(0,M.jsx)(c,{art:y.art,children:y.text}),t[36]=y.art,t[37]=y.text,t[38]=s):s=t[38],t[39]!==a||t[40]!==s?(H=(0,M.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[a,s]}),t[39]=a,t[40]=s,t[41]=H):H=t[41],t[42]!==n.progress||t[43]!==n.state||t[44]!==S?(U=n.progress!=null&&(0,M.jsx)(`div`,{role:`progressbar`,"aria-label":`Fortschritt: ${S}`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":Math.round(n.progress),className:`h-2 overflow-hidden rounded-full bg-linie`,children:(0,M.jsx)(`div`,{className:i(`h-full`,P[n.state]??`bg-cyan`),style:{width:`${Math.max(2,Math.min(100,n.progress))}%`}})}),t[42]=n.progress,t[43]=n.state,t[44]=S,t[45]=U):U=t[45];let u;t[46]!==O||t[47]!==z||t[48]!==n||t[49]!==R||t[50]!==y.text?(u=R?O??T(n,z):`${y.text} · ${F(n.finished_at??n.started_at)}`,t[46]=O,t[47]=z,t[48]=n,t[49]=R,t[50]=y.text,t[51]=u):u=t[51],t[52]===u?W=t[53]:(W=(0,M.jsx)(`p`,{className:`ziffern m-0 text-sm text-text-2`,children:u}),t[52]=u,t[53]=W),t[54]!==n.progress||t[55]!==n.state||t[56]!==R||t[57]!==A?(G=A&&(n.state===`failed`||R&&n.progress==null)&&(0,M.jsx)(`p`,{className:n.state===`failed`?`m-0 text-sm break-words text-rot-text`:`ziffern m-0 line-clamp-2 text-xs break-all text-text-3`,children:n.state===`failed`?`Letzte Meldung: ${A}`:A}),t[54]=n.progress,t[55]=n.state,t[56]=R,t[57]=A,t[58]=G):G=t[58],K=(V||e.length>1)&&(0,M.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[V&&(0,M.jsx)(f,{variant:`outline`,size:`sm`,disabled:o,onClick:()=>d(!0),children:`Abbrechen`}),e.length>1&&(0,M.jsx)(f,{variant:`ghost`,size:`sm`,"aria-expanded":h,onClick:()=>g(!h),children:h?`Protokoll zu`:`Protokoll`})]}),q=h&&(0,M.jsx)(`pre`,{className:`ziffern m-0 max-h-56 overflow-auto rounded-md bg-[#0b0d0f] p-2 text-xs whitespace-pre-wrap break-all text-text-2`,children:e.join(` +import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{Pt as a,X as o,Z as s,f as c,u as l,xt as u,yt as d}from"./index-FvHAYExN.js";import{t as f}from"./button-D8rvET0Z.js";import{t as p}from"./Bestaetigen-SE_NgpcU.js";var m=t();function h(e,t){if(e===`os`)return{laeuft:`Ubuntu`,neu:t.count?`${t.count} ${t.count===1?`Paket`:`Pakete`}`:null};if(e===`hermes`)return{laeuft:t.installed_version?`v${t.installed_version}`:`–`,neu:t.behind?`+${t.behind.toLocaleString(`de-DE`)} Änderungen`:null};let n=e===`engine`?`b`:`v`;return{laeuft:t.installed_build==null?`–`:`${n}${t.installed_build}`,neu:t.latest_build!=null&&t.installed_build!=null&&t.latest_build>t.installed_build?`${n}${t.latest_build}`:null}}function g(e,t){return!t||t.error?null:e===`os`?typeof t.count==`number`?t.count>0:null:e===`hermes`?typeof t.behind==`number`?t.behind>0:null:t.latest_build==null||t.installed_build==null?null:t.latest_build>t.installed_build}function _(e){let t=e.trim();return/timed out|timeout|zeitüberschreitung/i.test(t)?`Konnte nicht prüfen: Die Gegenstelle hat nicht rechtzeitig geantwortet. Später klappt es meist wieder.`:/name resolution|name or service not known|network is unreachable|connection (refused|reset)|nicht erreichbar/i.test(t)?`Konnte nicht prüfen: Die Box kommt gerade nicht ins Internet.`:`Konnte nicht prüfen: ${t.length>160?`${t.slice(0,157)}…`:t}`}var v=e=>e.group===`download`||/^download\s/i.test(e.label),y=e=>e.group===`pruefen`||e.label===`Nach Updates suchen`,b=e=>a(e)&&v(e),x=[[/^download\s+(.+)$/i,`Download $1`],[/^OS-Update \(apt\)$/,`Update Betriebssystem`],[/^Engine-Update \(llama\.cpp Vulkan\)$/,`Update Motor (llama.cpp)`],[/^Router-Update \(llama-swap\)$/,`Update llama-swap`],[/^Hermes-Agent-Update$/,`Update Hermes`]],S=[[`Engine (llama.cpp)`,`Motor`],[`Router (llama-swap)`,`llama-swap`],[`Hermes-Agent`,`Hermes`],[`OS (apt)`,`Betriebssystem`]];function C(e){for(let[t,n]of x)if(t.test(e.label))return e.label.replace(t,n);return e.label.startsWith(`Alle aktualisieren`)?S.reduce((e,[t,n])=>e.split(t).join(n),e.label):e.label}function w(e){if(e<60)return`noch unter einer Minute`;let t=Math.round(e/60);if(t<60)return`noch etwa ${t} min`;let n=Math.floor(t/60),r=t%60;return r?`noch etwa ${n} h ${r} min`:`noch etwa ${n} h`}function T(e,t=Date.now()/1e3){let n=Math.max(0,t-e.started_at),r=Math.floor(n/60),i=n<60?`ein paar Sekunden`:r<60?`${r} min`:`${Math.floor(r/60)} h ${r%60} min`;return`${e.state===`queued`?`Wartet`:`Läuft`} seit ${i}`}function E(e){if(e.progress==null)return null;let t=[`${Math.round(e.progress)} %`];return e.total_bytes&&t.push(`${u(e.done_bytes??0,1)} von ${u(e.total_bytes,1)}`),e.eta_s!=null&&a(e)&&t.push(w(e.eta_s)),t.join(` · `)}function D(e){for(let t=(e.log?.length??0)-1;t>=0;t--){let n=e.log[t].trim();if(n&&!n.startsWith(`$ `))return n}return null}function O(e,t=Date.now()/1e3){let n=e.filter(a).sort((e,t)=>e.started_at-t.started_at),r=e.filter(e=>!a(e)&&t-(e.finished_at??e.started_at)<86400).sort((e,t)=>(t.finished_at??t.started_at)-(e.finished_at??e.started_at)).slice(0,3);return[...n,...r]}function k(e,t,n){if(!n)return`Nach dem Download übernimmt ${e} die Rolle „${t}“.`;let r=n.weitere.length?` Die Rolle${n.weitere.length===1?``:`n`} „${n.weitere.join(`“, „`)}“ behält es.`:``;return`Achtung: Nach dem Download übernimmt ${e} die Rolle „${t}“ und ersetzt damit ${n.name}. Das bisherige Modell bleibt auf der Platte.${r}`+(n.zwilling?` Bilder liest vorerst weiter sein Bild-Zwilling, also noch das bisherige Modell.`:``)}function A(e){return`Kurze Unterbrechung: Beim Eintragen lädt llama-swap sofort neu. Was Lucy oder OpenChamber gerade schreiben, bricht ab, und die Modelle werden neu geladen.`+(e?` Mit Rolle passiert das nach dem Download noch einmal.`:``)}var j=r(e(),1),M=n(),N={queued:{text:`Wartet`,art:`cyan`},running:{text:`Läuft`,art:`cyan`},done:{text:`Fertig`,art:`gruen`},failed:{text:`Fehler`,art:`rot`},canceled:{text:`Abgebrochen`,art:`grau`}},P={queued:`bg-cyan`,running:`bg-cyan`,done:`bg-gruen`,failed:`bg-rot`,canceled:`bg-text-3`},F=e=>d(new Date(e*1e3).toISOString());function I(e){let t=(0,m.c)(3),[n,r]=(0,j.useState)(L),i,a;return t[0]===e?(i=t[1],a=t[2]):(i=()=>{if(!e)return;let t=window.setInterval(()=>r(Date.now()/1e3),3e4);return()=>window.clearInterval(t)},a=[e],t[0]=e,t[1]=i,t[2]=a),(0,j.useEffect)(i,a),n}function L(){return Date.now()/1e3}function R(e){let t=(0,m.c)(75),{job:n,onAbbrechen:r,abbrechenGesperrt:o,ebene:s}=e,l=s===void 0?4:s,[u,d]=(0,j.useState)(!1),[h,g]=(0,j.useState)(!1),_;t[0]===n.state?_=t[1]:(_=N[n.state]??{text:n.state,art:`grau`},t[0]=n.state,t[1]=_);let y=_,x;t[2]===n?x=t[3]:(x=C(n),t[2]=n,t[3]=x);let S=x,w;t[4]===n?w=t[5]:(w=E(n),t[4]=n,t[5]=w);let O=w,k;t[6]===n?k=t[7]:(k=D(n),t[6]=n,t[7]=k);let A=k,L;t[8]===n?L=t[9]:(L=a(n),t[8]=n,t[9]=L);let R=L,z=I(R),B;t[10]!==n||t[11]!==r?(B=!!r&&b(n),t[10]=n,t[11]=r,t[12]=B):B=t[12];let V=B,H,U,W,G,K,q,J,Y;if(t[13]!==o||t[14]!==V||t[15]!==l||t[16]!==O||t[17]!==z||t[18]!==n||t[19]!==R||t[20]!==A||t[21]!==h||t[22]!==S||t[23]!==y.art||t[24]!==y.text){let e=(n.log??[]).slice(-12),r=l===3?`h3`:`h4`;J=`Auftrag: ${S}`,Y=`flex flex-col gap-2.5 rounded-xl border border-linie bg-erhaben/50 p-3.5`;let a;t[33]!==r||t[34]!==S?(a=(0,M.jsx)(r,{className:`m-0 min-w-0 text-[15px] leading-snug font-semibold break-words`,children:S}),t[33]=r,t[34]=S,t[35]=a):a=t[35];let s;t[36]!==y.art||t[37]!==y.text?(s=(0,M.jsx)(c,{art:y.art,children:y.text}),t[36]=y.art,t[37]=y.text,t[38]=s):s=t[38],t[39]!==a||t[40]!==s?(H=(0,M.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[a,s]}),t[39]=a,t[40]=s,t[41]=H):H=t[41],t[42]!==n.progress||t[43]!==n.state||t[44]!==S?(U=n.progress!=null&&(0,M.jsx)(`div`,{role:`progressbar`,"aria-label":`Fortschritt: ${S}`,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":Math.round(n.progress),className:`h-2 overflow-hidden rounded-full bg-linie`,children:(0,M.jsx)(`div`,{className:i(`h-full`,P[n.state]??`bg-cyan`),style:{width:`${Math.max(2,Math.min(100,n.progress))}%`}})}),t[42]=n.progress,t[43]=n.state,t[44]=S,t[45]=U):U=t[45];let u;t[46]!==O||t[47]!==z||t[48]!==n||t[49]!==R||t[50]!==y.text?(u=R?O??T(n,z):`${y.text} · ${F(n.finished_at??n.started_at)}`,t[46]=O,t[47]=z,t[48]=n,t[49]=R,t[50]=y.text,t[51]=u):u=t[51],t[52]===u?W=t[53]:(W=(0,M.jsx)(`p`,{className:`ziffern m-0 text-sm text-text-2`,children:u}),t[52]=u,t[53]=W),t[54]!==n.progress||t[55]!==n.state||t[56]!==R||t[57]!==A?(G=A&&(n.state===`failed`||R&&n.progress==null)&&(0,M.jsx)(`p`,{className:n.state===`failed`?`m-0 text-sm break-words text-rot-text`:`ziffern m-0 line-clamp-2 text-xs break-all text-text-3`,children:n.state===`failed`?`Letzte Meldung: ${A}`:A}),t[54]=n.progress,t[55]=n.state,t[56]=R,t[57]=A,t[58]=G):G=t[58],K=(V||e.length>1)&&(0,M.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[V&&(0,M.jsx)(f,{variant:`outline`,size:`sm`,disabled:o,onClick:()=>d(!0),children:`Abbrechen`}),e.length>1&&(0,M.jsx)(f,{variant:`ghost`,size:`sm`,"aria-expanded":h,onClick:()=>g(!h),children:h?`Protokoll zu`:`Protokoll`})]}),q=h&&(0,M.jsx)(`pre`,{className:`ziffern m-0 max-h-56 overflow-auto rounded-md bg-[#0b0d0f] p-2 text-xs whitespace-pre-wrap break-all text-text-2`,children:e.join(` `)}),t[13]=o,t[14]=V,t[15]=l,t[16]=O,t[17]=z,t[18]=n,t[19]=R,t[20]=A,t[21]=h,t[22]=S,t[23]=y.art,t[24]=y.text,t[25]=H,t[26]=U,t[27]=W,t[28]=G,t[29]=K,t[30]=q,t[31]=J,t[32]=Y}else H=t[25],U=t[26],W=t[27],G=t[28],K=t[29],q=t[30],J=t[31],Y=t[32];let X;t[59]!==V||t[60]!==u||t[61]!==n||t[62]!==r||t[63]!==S?(X=V&&(0,M.jsx)(p,{offen:u,gefahr:!0,titel:`Auftrag abbrechen?`,text:v(n)?`Der ${S} stoppt. Du kannst ihn später über „Modelle selbst suchen“ neu starten.`:`„${S}“ wird abgebrochen.`,knopf:`Ja, abbrechen`,neinKnopf:`Weiterlaufen lassen`,onNein:()=>d(!1),onJa:()=>{u&&(d(!1),r?.(n))}}),t[59]=V,t[60]=u,t[61]=n,t[62]=r,t[63]=S,t[64]=X):X=t[64];let Z;return t[65]!==H||t[66]!==U||t[67]!==W||t[68]!==G||t[69]!==K||t[70]!==q||t[71]!==X||t[72]!==J||t[73]!==Y?(Z=(0,M.jsxs)(`article`,{"aria-label":J,className:Y,children:[H,U,W,G,K,q,X]}),t[65]=H,t[66]=U,t[67]=W,t[68]=G,t[69]=K,t[70]=q,t[71]=X,t[72]=J,t[73]=Y,t[74]=Z):Z=t[74],Z}function z(e){let t=(0,m.c)(17),{alsPanel:n}=e,r=n!==void 0&&n,i=s(),a=o(),c,u;if(t[0]!==a||t[1]!==r||t[2]!==i.data||t[3]!==i.error||t[4]!==i.isError){u=Symbol.for(`react.early_return_sentinel`);bb0:{let e=O(i.data?.jobs??[]);if(e.length>0){let n;t[7]!==a||t[8]!==r?(n=e=>(0,M.jsx)(R,{job:e,ebene:r?3:4,abbrechenGesperrt:a.isPending,onAbbrechen:e=>a.mutate({id:e.id,titel:C(e)})},e.id),t[7]=a,t[8]=r,t[9]=n):n=t[9],c=(0,M.jsx)(`div`,{className:`grid items-start gap-2.5 lg:grid-cols-2`,children:e.map(n)})}else if(i.isError&&!i.data){let e;t[10]===i.error.message?e=t[11]:(e=(0,M.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die Aufträge lassen sich gerade nicht lesen: `,i.error.message]}),t[10]=i.error.message,t[11]=e),c=e}else{u=null;break bb0}}t[0]=a,t[1]=r,t[2]=i.data,t[3]=i.error,t[4]=i.isError,t[5]=c,t[6]=u}else c=t[5],u=t[6];if(u!==Symbol.for(`react.early_return_sentinel`))return u;if(r){let e;return t[12]===c?e=t[13]:(e=(0,M.jsx)(l,{titel:`Aufträge`,children:c}),t[12]=c,t[13]=e),e}let d;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,M.jsx)(`h3`,{className:`schild m-0 text-sm text-text-3`,children:`Aufträge`}),t[14]=d):d=t[14];let f;return t[15]===c?f=t[16]:(f=(0,M.jsxs)(`section`,{"aria-label":`Aufträge`,className:`flex flex-col gap-2.5`,children:[d,c]}),t[15]=c,t[16]=f),f}export{D as a,h as c,y as i,g as n,_ as o,A as r,k as s,z as t}; \ No newline at end of file diff --git a/frontend/dist/assets/Bestaetigen-D8Dh5cqS.js b/frontend/dist/assets/Bestaetigen-SE_NgpcU.js similarity index 97% rename from frontend/dist/assets/Bestaetigen-D8Dh5cqS.js rename to frontend/dist/assets/Bestaetigen-SE_NgpcU.js index c77fd3a..ad219a9 100644 --- a/frontend/dist/assets/Bestaetigen-D8Dh5cqS.js +++ b/frontend/dist/assets/Bestaetigen-SE_NgpcU.js @@ -1 +1 @@ -import{i as e,n as t,o as n,r,t as i}from"./dist-D4CVSex9.js";import{Vt as a}from"./index-COh3_SSc.js";import{t as o}from"./button-D8rvET0Z.js";import{a as s,i as c,n as l,o as u,r as d,s as f,t as p}from"./dist-D9JSQbGO.js";var m=t();e();var h=r();function g(e){let t=(0,m.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,h.jsx)(p,{"data-slot":`dialog`,...n}),t[2]=n,t[3]=r),r}function _(e){let t=(0,m.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,h.jsx)(u,{"data-slot":`dialog-portal`,...n}),t[2]=n,t[3]=r),r}function v(e){let t=(0,m.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let a;t[3]===n?a=t[4]:(a=i(`fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,n),t[3]=n,t[4]=a);let o;return t[5]!==r||t[6]!==a?(o=(0,h.jsx)(s,{"data-slot":`dialog-overlay`,className:a,...r}),t[5]=r,t[6]=a,t[7]=o):o=t[7],o}function y(e){let t=(0,m.c)(15),n,r,s,c;t[0]===e?(n=t[1],r=t[2],s=t[3],c=t[4]):({className:r,children:n,showCloseButton:c,...s}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=s,t[4]=c);let u=c===void 0||c,f;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,h.jsx)(v,{}),t[5]=f):f=t[5];let p;t[6]===r?p=t[7]:(p=i(`fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,r),t[6]=r,t[7]=p);let g;t[8]===u?g=t[9]:(g=u&&(0,h.jsx)(l,{"data-slot":`dialog-close`,asChild:!0,children:(0,h.jsxs)(o,{variant:`ghost`,className:`absolute top-2 right-2`,size:`icon-sm`,children:[(0,h.jsx)(a,{}),(0,h.jsx)(`span`,{className:`sr-only`,children:`Schließen`})]})}),t[8]=u,t[9]=g);let y;return t[10]!==n||t[11]!==s||t[12]!==p||t[13]!==g?(y=(0,h.jsxs)(_,{children:[f,(0,h.jsxs)(d,{"data-slot":`dialog-content`,className:p,...s,children:[n,g]})]}),t[10]=n,t[11]=s,t[12]=p,t[13]=g,t[14]=y):y=t[14],y}function b(e){let t=(0,m.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let a;t[3]===n?a=t[4]:(a=i(`flex flex-col gap-2`,n),t[3]=n,t[4]=a);let o;return t[5]!==r||t[6]!==a?(o=(0,h.jsx)(`div`,{"data-slot":`dialog-header`,className:a,...r}),t[5]=r,t[6]=a,t[7]=o):o=t[7],o}function x(e){let t=(0,m.c)(14),n,r,a,s;t[0]===e?(n=t[1],r=t[2],a=t[3],s=t[4]):({className:r,showCloseButton:s,children:n,...a}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=a,t[4]=s);let c=s!==void 0&&s,u;t[5]===r?u=t[6]:(u=i(`-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end`,r),t[5]=r,t[6]=u);let d;t[7]===c?d=t[8]:(d=c&&(0,h.jsx)(l,{asChild:!0,children:(0,h.jsx)(o,{variant:`outline`,children:`Schließen`})}),t[7]=c,t[8]=d);let f;return t[9]!==n||t[10]!==a||t[11]!==u||t[12]!==d?(f=(0,h.jsxs)(`div`,{"data-slot":`dialog-footer`,className:u,...a,children:[n,d]}),t[9]=n,t[10]=a,t[11]=u,t[12]=d,t[13]=f):f=t[13],f}function S(e){let t=(0,m.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let a;t[3]===n?a=t[4]:(a=i(`font-heading text-base leading-none font-medium`,n),t[3]=n,t[4]=a);let o;return t[5]!==r||t[6]!==a?(o=(0,h.jsx)(f,{"data-slot":`dialog-title`,className:a,...r}),t[5]=r,t[6]=a,t[7]=o):o=t[7],o}function C(e){let t=(0,m.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let a;t[3]===n?a=t[4]:(a=i(`text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground`,n),t[3]=n,t[4]=a);let o;return t[5]!==r||t[6]!==a?(o=(0,h.jsx)(c,{"data-slot":`dialog-description`,className:a,...r}),t[5]=r,t[6]=a,t[7]=o):o=t[7],o}var w=n({Bestaetigen:()=>T});function T(e){let t=(0,m.c)(32),{offen:n,titel:r,text:i,knopf:a,neinKnopf:s,gefahr:c,gesperrt:l,onJa:u,onNein:d,children:f}=e,p=s===void 0?`Abbrechen`:s,_;t[0]===d?_=t[1]:(_=e=>!e&&d(),t[0]=d,t[1]=_);let v;t[2]===r?v=t[3]:(v=(0,h.jsx)(S,{className:`schild pr-10 text-xl break-words`,children:r}),t[2]=r,t[3]=v);let w;t[4]===i?w=t[5]:(w=(0,h.jsx)(C,{className:`text-[15px] leading-relaxed text-text-2`,children:i}),t[4]=i,t[5]=w);let T;t[6]!==v||t[7]!==w?(T=(0,h.jsxs)(b,{children:[v,w]}),t[6]=v,t[7]=w,t[8]=T):T=t[8];let E;t[9]!==p||t[10]!==d?(E=(0,h.jsx)(o,{variant:`outline`,onClick:d,children:p}),t[9]=p,t[10]=d,t[11]=E):E=t[11];let D=c?`gefahr`:`default`,O=l||void 0,k;t[12]!==l||t[13]!==u?(k=()=>{l||u()},t[12]=l,t[13]=u,t[14]=k):k=t[14];let A;t[15]!==l||t[16]!==a||t[17]!==D||t[18]!==O||t[19]!==k?(A=(0,h.jsx)(o,{variant:D,disabled:l,"aria-busy":O,onClick:k,children:a}),t[15]=l,t[16]=a,t[17]=D,t[18]=O,t[19]=k,t[20]=A):A=t[20];let j;t[21]!==A||t[22]!==E?(j=(0,h.jsxs)(x,{className:`sticky bottom-0 mb-0 gap-2 bg-erhaben sm:gap-2`,children:[E,A]}),t[21]=A,t[22]=E,t[23]=j):j=t[23];let M;t[24]!==f||t[25]!==j||t[26]!==T?(M=(0,h.jsxs)(y,{className:`max-h-[calc(100dvh-2rem)] overflow-y-auto border-linie bg-panel pb-0 sm:max-w-lg`,children:[T,f,j]}),t[24]=f,t[25]=j,t[26]=T,t[27]=M):M=t[27];let N;return t[28]!==n||t[29]!==M||t[30]!==_?(N=(0,h.jsx)(g,{open:n,onOpenChange:_,children:M}),t[28]=n,t[29]=M,t[30]=_,t[31]=N):N=t[31],N}export{w as n,T as t}; \ No newline at end of file +import{i as e,n as t,o as n,r,t as i}from"./dist-D4CVSex9.js";import{Vt as a}from"./index-FvHAYExN.js";import{t as o}from"./button-D8rvET0Z.js";import{a as s,i as c,n as l,o as u,r as d,s as f,t as p}from"./dist-LMCPoT8k.js";var m=t();e();var h=r();function g(e){let t=(0,m.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,h.jsx)(p,{"data-slot":`dialog`,...n}),t[2]=n,t[3]=r),r}function _(e){let t=(0,m.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,h.jsx)(u,{"data-slot":`dialog-portal`,...n}),t[2]=n,t[3]=r),r}function v(e){let t=(0,m.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let a;t[3]===n?a=t[4]:(a=i(`fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,n),t[3]=n,t[4]=a);let o;return t[5]!==r||t[6]!==a?(o=(0,h.jsx)(s,{"data-slot":`dialog-overlay`,className:a,...r}),t[5]=r,t[6]=a,t[7]=o):o=t[7],o}function y(e){let t=(0,m.c)(15),n,r,s,c;t[0]===e?(n=t[1],r=t[2],s=t[3],c=t[4]):({className:r,children:n,showCloseButton:c,...s}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=s,t[4]=c);let u=c===void 0||c,f;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,h.jsx)(v,{}),t[5]=f):f=t[5];let p;t[6]===r?p=t[7]:(p=i(`fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95`,r),t[6]=r,t[7]=p);let g;t[8]===u?g=t[9]:(g=u&&(0,h.jsx)(l,{"data-slot":`dialog-close`,asChild:!0,children:(0,h.jsxs)(o,{variant:`ghost`,className:`absolute top-2 right-2`,size:`icon-sm`,children:[(0,h.jsx)(a,{}),(0,h.jsx)(`span`,{className:`sr-only`,children:`Schließen`})]})}),t[8]=u,t[9]=g);let y;return t[10]!==n||t[11]!==s||t[12]!==p||t[13]!==g?(y=(0,h.jsxs)(_,{children:[f,(0,h.jsxs)(d,{"data-slot":`dialog-content`,className:p,...s,children:[n,g]})]}),t[10]=n,t[11]=s,t[12]=p,t[13]=g,t[14]=y):y=t[14],y}function b(e){let t=(0,m.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let a;t[3]===n?a=t[4]:(a=i(`flex flex-col gap-2`,n),t[3]=n,t[4]=a);let o;return t[5]!==r||t[6]!==a?(o=(0,h.jsx)(`div`,{"data-slot":`dialog-header`,className:a,...r}),t[5]=r,t[6]=a,t[7]=o):o=t[7],o}function x(e){let t=(0,m.c)(14),n,r,a,s;t[0]===e?(n=t[1],r=t[2],a=t[3],s=t[4]):({className:r,showCloseButton:s,children:n,...a}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=a,t[4]=s);let c=s!==void 0&&s,u;t[5]===r?u=t[6]:(u=i(`-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end`,r),t[5]=r,t[6]=u);let d;t[7]===c?d=t[8]:(d=c&&(0,h.jsx)(l,{asChild:!0,children:(0,h.jsx)(o,{variant:`outline`,children:`Schließen`})}),t[7]=c,t[8]=d);let f;return t[9]!==n||t[10]!==a||t[11]!==u||t[12]!==d?(f=(0,h.jsxs)(`div`,{"data-slot":`dialog-footer`,className:u,...a,children:[n,d]}),t[9]=n,t[10]=a,t[11]=u,t[12]=d,t[13]=f):f=t[13],f}function S(e){let t=(0,m.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let a;t[3]===n?a=t[4]:(a=i(`font-heading text-base leading-none font-medium`,n),t[3]=n,t[4]=a);let o;return t[5]!==r||t[6]!==a?(o=(0,h.jsx)(f,{"data-slot":`dialog-title`,className:a,...r}),t[5]=r,t[6]=a,t[7]=o):o=t[7],o}function C(e){let t=(0,m.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let a;t[3]===n?a=t[4]:(a=i(`text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground`,n),t[3]=n,t[4]=a);let o;return t[5]!==r||t[6]!==a?(o=(0,h.jsx)(c,{"data-slot":`dialog-description`,className:a,...r}),t[5]=r,t[6]=a,t[7]=o):o=t[7],o}var w=n({Bestaetigen:()=>T});function T(e){let t=(0,m.c)(32),{offen:n,titel:r,text:i,knopf:a,neinKnopf:s,gefahr:c,gesperrt:l,onJa:u,onNein:d,children:f}=e,p=s===void 0?`Abbrechen`:s,_;t[0]===d?_=t[1]:(_=e=>!e&&d(),t[0]=d,t[1]=_);let v;t[2]===r?v=t[3]:(v=(0,h.jsx)(S,{className:`schild pr-10 text-xl break-words`,children:r}),t[2]=r,t[3]=v);let w;t[4]===i?w=t[5]:(w=(0,h.jsx)(C,{className:`text-[15px] leading-relaxed text-text-2`,children:i}),t[4]=i,t[5]=w);let T;t[6]!==v||t[7]!==w?(T=(0,h.jsxs)(b,{children:[v,w]}),t[6]=v,t[7]=w,t[8]=T):T=t[8];let E;t[9]!==p||t[10]!==d?(E=(0,h.jsx)(o,{variant:`outline`,onClick:d,children:p}),t[9]=p,t[10]=d,t[11]=E):E=t[11];let D=c?`gefahr`:`default`,O=l||void 0,k;t[12]!==l||t[13]!==u?(k=()=>{l||u()},t[12]=l,t[13]=u,t[14]=k):k=t[14];let A;t[15]!==l||t[16]!==a||t[17]!==D||t[18]!==O||t[19]!==k?(A=(0,h.jsx)(o,{variant:D,disabled:l,"aria-busy":O,onClick:k,children:a}),t[15]=l,t[16]=a,t[17]=D,t[18]=O,t[19]=k,t[20]=A):A=t[20];let j;t[21]!==A||t[22]!==E?(j=(0,h.jsxs)(x,{className:`sticky bottom-0 mb-0 gap-2 bg-erhaben sm:gap-2`,children:[E,A]}),t[21]=A,t[22]=E,t[23]=j):j=t[23];let M;t[24]!==f||t[25]!==j||t[26]!==T?(M=(0,h.jsxs)(y,{className:`max-h-[calc(100dvh-2rem)] overflow-y-auto border-linie bg-panel pb-0 sm:max-w-lg`,children:[T,f,j]}),t[24]=f,t[25]=j,t[26]=T,t[27]=M):M=t[27];let N;return t[28]!==n||t[29]!==M||t[30]!==_?(N=(0,h.jsx)(g,{open:n,onOpenChange:_,children:M}),t[28]=n,t[29]=M,t[30]=_,t[31]=N):N=t[31],N}export{w as n,T as t}; \ No newline at end of file diff --git a/frontend/dist/assets/Dienste-BJl63suI.js b/frontend/dist/assets/Dienste-BGWmtSYR.js similarity index 96% rename from frontend/dist/assets/Dienste-BJl63suI.js rename to frontend/dist/assets/Dienste-BGWmtSYR.js index 90b15d7..ca2a8c5 100644 --- a/frontend/dist/assets/Dienste-BJl63suI.js +++ b/frontend/dist/assets/Dienste-BGWmtSYR.js @@ -1 +1 @@ -import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{Bt as a,Dt as o,I as s,Zt as c,jt as l,nt as u}from"./index-COh3_SSc.js";import{t as d}from"./button-D8rvET0Z.js";import{a as f,i as p,n as m,r as h,t as g}from"./sheet-06g2D7J7.js";var _=t(),v=r(e(),1),y=n();function b(e){let t=(0,_.c)(4),{unit:n}=e,r=u(n),i;if(r.isPending)i=`Wird gelesen …`;else if(r.isError)i=`Das Protokoll lässt sich gerade nicht lesen: ${r.error.message}`;else if(r.data.ok===!1)i=r.data.err||r.data.text||`Das Protokoll lässt sich nicht lesen.`;else{let e;t[0]===r.data.text?e=t[1]:(e=r.data.text?.trim()||`Noch keine Einträge.`,t[0]=r.data.text,t[1]=e),i=e}let a;return t[2]===i?a=t[3]:(a=(0,y.jsx)(`pre`,{className:`ziffern m-0 max-h-[50vh] w-full basis-full overflow-auto rounded-lg border border-linie bg-[#0b0d0f] p-3 text-xs leading-relaxed whitespace-pre-wrap break-all text-text-2`,children:i}),t[2]=i,t[3]=a),a}function x({offen:e,onSchliessen:t}){let n=c(),r=s(),[u,_]=(0,v.useState)(null),[x,S]=(0,v.useState)(null),[C,w]=(0,v.useState)(null);async function T(e){if(!C){S(null),w(e.unit);try{let t=await a(`/api/maintenance/restart`,{service:e.unit});t.ok?o(`erfolg`,`${e.name} ${e.schlaeft?`wird geweckt`:`startet neu`}.`):o(`fehler`,`${e.name} ließ sich nicht starten: ${l(t)}`),n.invalidateQueries({queryKey:[`dienste`]})}catch(e){o(`fehler`,e.message)}finally{w(null)}}}let E;return E=r.isPending?(0,y.jsx)(`p`,{role:`status`,className:`px-4 text-[15px] text-text-2`,children:`Dienste werden gelesen …`}):r.isError&&!r.data?(0,y.jsxs)(`p`,{role:`alert`,className:`px-4 text-[15px] text-rot-text`,children:[`Die Dienste lassen sich gerade nicht lesen: `,r.error.message]}):r.data?.services.length?(0,y.jsx)(`ul`,{className:`m-0 flex list-none flex-col px-4 pb-4`,children:r.data.services.map(e=>(0,y.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-2 border-t border-linie py-2.5`,children:[(0,y.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2.5`,children:[(0,y.jsx)(`span`,{className:i(`size-2.5 shrink-0 rounded-full`,e.ok?`bg-gruen`:e.schlaeft?`bg-text-3`:`bg-rot`),"aria-hidden":!0}),(0,y.jsxs)(`span`,{className:`min-w-0`,children:[(0,y.jsx)(`span`,{className:`block text-[15px]`,children:e.name}),(0,y.jsxs)(`span`,{className:`ziffern text-xs text-text-3`,children:[e.unit,` · `,e.ok?`läuft`:e.schlaeft?`schläft (abgeschaltet)`:`antwortet nicht`]})]})]}),(0,y.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[(0,y.jsx)(d,{variant:u===e.unit?`info`:`ghost`,size:`sm`,"aria-expanded":u===e.unit,onClick:()=>_(u===e.unit?null:e.unit),children:`Protokoll`}),x===e.unit?(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(d,{variant:`gefahr`,size:`sm`,onClick:()=>T(e),children:e.schlaeft?`Wirklich wecken?`:`Wirklich neu starten?`}),(0,y.jsx)(d,{variant:`ghost`,size:`sm`,onClick:()=>S(null),children:`Nein`})]}):(0,y.jsx)(d,{variant:`outline`,size:`sm`,disabled:C!==null,onClick:()=>S(e.unit),children:C===e.unit?`Startet …`:e.schlaeft?`Wecken`:`Neu starten`})]}),u===e.unit&&(0,y.jsx)(b,{unit:e.unit})]},e.unit))}):(0,y.jsx)(`p`,{className:`px-4 text-[15px] text-text-2`,children:`Keine Dienste gefunden.`}),(0,y.jsx)(g,{open:e,onOpenChange:e=>!e&&t(),children:(0,y.jsxs)(m,{side:`right`,className:`gap-3 overflow-y-auto border-linie bg-panel data-[side=right]:w-full data-[side=right]:sm:max-w-2xl`,children:[(0,y.jsxs)(p,{children:[(0,y.jsx)(f,{className:`schild text-lg`,children:`Dienste und Protokolle`}),(0,y.jsx)(h,{className:`text-text-2`,children:`Welcher Dienst läuft, was er zuletzt geschrieben hat.`})]}),E]})})}export{x as Dienste}; \ No newline at end of file +import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{Bt as a,Dt as o,I as s,Zt as c,jt as l,nt as u}from"./index-FvHAYExN.js";import{t as d}from"./button-D8rvET0Z.js";import{a as f,i as p,n as m,r as h,t as g}from"./sheet-CB1NvtKC.js";var _=t(),v=r(e(),1),y=n();function b(e){let t=(0,_.c)(4),{unit:n}=e,r=u(n),i;if(r.isPending)i=`Wird gelesen …`;else if(r.isError)i=`Das Protokoll lässt sich gerade nicht lesen: ${r.error.message}`;else if(r.data.ok===!1)i=r.data.err||r.data.text||`Das Protokoll lässt sich nicht lesen.`;else{let e;t[0]===r.data.text?e=t[1]:(e=r.data.text?.trim()||`Noch keine Einträge.`,t[0]=r.data.text,t[1]=e),i=e}let a;return t[2]===i?a=t[3]:(a=(0,y.jsx)(`pre`,{className:`ziffern m-0 max-h-[50vh] w-full basis-full overflow-auto rounded-lg border border-linie bg-[#0b0d0f] p-3 text-xs leading-relaxed whitespace-pre-wrap break-all text-text-2`,children:i}),t[2]=i,t[3]=a),a}function x({offen:e,onSchliessen:t}){let n=c(),r=s(),[u,_]=(0,v.useState)(null),[x,S]=(0,v.useState)(null),[C,w]=(0,v.useState)(null);async function T(e){if(!C){S(null),w(e.unit);try{let t=await a(`/api/maintenance/restart`,{service:e.unit});t.ok?o(`erfolg`,`${e.name} ${e.schlaeft?`wird geweckt`:`startet neu`}.`):o(`fehler`,`${e.name} ließ sich nicht starten: ${l(t)}`),n.invalidateQueries({queryKey:[`dienste`]})}catch(e){o(`fehler`,e.message)}finally{w(null)}}}let E;return E=r.isPending?(0,y.jsx)(`p`,{role:`status`,className:`px-4 text-[15px] text-text-2`,children:`Dienste werden gelesen …`}):r.isError&&!r.data?(0,y.jsxs)(`p`,{role:`alert`,className:`px-4 text-[15px] text-rot-text`,children:[`Die Dienste lassen sich gerade nicht lesen: `,r.error.message]}):r.data?.services.length?(0,y.jsx)(`ul`,{className:`m-0 flex list-none flex-col px-4 pb-4`,children:r.data.services.map(e=>(0,y.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-2 border-t border-linie py-2.5`,children:[(0,y.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2.5`,children:[(0,y.jsx)(`span`,{className:i(`size-2.5 shrink-0 rounded-full`,e.ok?`bg-gruen`:e.schlaeft?`bg-text-3`:`bg-rot`),"aria-hidden":!0}),(0,y.jsxs)(`span`,{className:`min-w-0`,children:[(0,y.jsx)(`span`,{className:`block text-[15px]`,children:e.name}),(0,y.jsxs)(`span`,{className:`ziffern text-xs text-text-3`,children:[e.unit,` · `,e.ok?`läuft`:e.schlaeft?`schläft (abgeschaltet)`:`antwortet nicht`]})]})]}),(0,y.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[(0,y.jsx)(d,{variant:u===e.unit?`info`:`ghost`,size:`sm`,"aria-expanded":u===e.unit,onClick:()=>_(u===e.unit?null:e.unit),children:`Protokoll`}),x===e.unit?(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(d,{variant:`gefahr`,size:`sm`,onClick:()=>T(e),children:e.schlaeft?`Wirklich wecken?`:`Wirklich neu starten?`}),(0,y.jsx)(d,{variant:`ghost`,size:`sm`,onClick:()=>S(null),children:`Nein`})]}):(0,y.jsx)(d,{variant:`outline`,size:`sm`,disabled:C!==null,onClick:()=>S(e.unit),children:C===e.unit?`Startet …`:e.schlaeft?`Wecken`:`Neu starten`})]}),u===e.unit&&(0,y.jsx)(b,{unit:e.unit})]},e.unit))}):(0,y.jsx)(`p`,{className:`px-4 text-[15px] text-text-2`,children:`Keine Dienste gefunden.`}),(0,y.jsx)(g,{open:e,onOpenChange:e=>!e&&t(),children:(0,y.jsxs)(m,{side:`right`,className:`gap-3 overflow-y-auto border-linie bg-panel data-[side=right]:w-full data-[side=right]:sm:max-w-2xl`,children:[(0,y.jsxs)(p,{children:[(0,y.jsx)(f,{className:`schild text-lg`,children:`Dienste und Protokolle`}),(0,y.jsx)(h,{className:`text-text-2`,children:`Welcher Dienst läuft, was er zuletzt geschrieben hat.`})]}),E]})})}export{x as Dienste}; \ No newline at end of file diff --git a/frontend/dist/assets/Einstellungen-DTrnYy0G.js b/frontend/dist/assets/Einstellungen-B5hDXuZV.js similarity index 99% rename from frontend/dist/assets/Einstellungen-DTrnYy0G.js rename to frontend/dist/assets/Einstellungen-B5hDXuZV.js index 477de94..04e3890 100644 --- a/frontend/dist/assets/Einstellungen-DTrnYy0G.js +++ b/frontend/dist/assets/Einstellungen-B5hDXuZV.js @@ -1 +1 @@ -import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{Bt as a,Dt as o,J as s,Kt as c,L as l,M as u,Ut as d,V as f,Xt as p,Zt as m,at as h,f as g,ft as _,j as v,mt as y,tt as b,ut as x,yt as S,zt as C}from"./index-COh3_SSc.js";import{t as w}from"./button-D8rvET0Z.js";import{t as ee}from"./Bestaetigen-D8Dh5cqS.js";var T={name:`key-round`,size:24,node:[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]};T.node;var E=c(T),D=t(),O=r(e(),1),k=n(),A=[`Montag`,`Dienstag`,`Mittwoch`,`Donnerstag`,`Freitag`,`Samstag`,`Sonntag`],j=Array.from({length:48},(e,t)=>`${String(Math.floor(t/2)).padStart(2,`0`)}:${t%2?`30`:`00`}`),M=new Intl.DateTimeFormat(`de-DE`,{day:`2-digit`,month:`2-digit`,year:`numeric`,hour:`2-digit`,minute:`2-digit`,timeZone:`Europe/Berlin`});function N(e){let t=e?new Date(e):null;return t&&!Number.isNaN(t.getTime())?M.format(t):`–`}function P(e,t){let n=Number(t.slice(0,2)),r=n*60+179,i=e;r>=1440&&(r-=1440,i=e%7+1);let a=e=>String(e).padStart(2,`0`),o=`${a(n)}:00`,s=`${a(Math.floor(r/60))}:${a(r%60)}`;return i===e?`${A[e-1]} ${o}–${s}`:`${A[e-1]} ${o} – ${A[i-1]} ${s}`}function F(e){let t=(0,D.c)(6),{titel:n,children:r}=e,i;t[0]===n?i=t[1]:(i=(0,k.jsx)(`h3`,{className:`schild text-sm tracking-[0.18em] text-text-2`,children:n}),t[0]=n,t[1]=i);let a;return t[2]!==r||t[3]!==i||t[4]!==n?(a=(0,k.jsxs)(`section`,{"aria-label":n,className:`flex flex-col gap-3 border-t border-linie pt-4 first:border-t-0 first:pt-0`,children:[i,r]}),t[2]=r,t[3]=i,t[4]=n,t[5]=a):a=t[5],a}function I(e){let t=(0,D.c)(19),{titel:n,text:r,farbe:a,children:o}=e,s=a===`box`?`bg-box`:a===`homelab`?`bg-lab`:`bg-linie-stark`,c=a===`box`?`text-box-text`:a===`homelab`?`text-lab-text`:`text-foreground`,l;t[0]===s?l=t[1]:(l=i(`absolute inset-x-0 top-0 h-1`,s),t[0]=s,t[1]=l);let u;t[2]===l?u=t[3]:(u=(0,k.jsx)(`span`,{"aria-hidden":!0,className:l}),t[2]=l,t[3]=u);let d;t[4]===c?d=t[5]:(d=i(`schild text-lg font-bold tracking-[0.22em]`,c),t[4]=c,t[5]=d);let f;t[6]!==d||t[7]!==n?(f=(0,k.jsx)(`h2`,{className:d,children:n}),t[6]=d,t[7]=n,t[8]=f):f=t[8];let p;t[9]===r?p=t[10]:(p=(0,k.jsx)(`p`,{className:`text-sm text-text-3`,children:r}),t[9]=r,t[10]=p);let m;t[11]!==f||t[12]!==p?(m=(0,k.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[f,p]}),t[11]=f,t[12]=p,t[13]=m):m=t[13];let h;return t[14]!==o||t[15]!==u||t[16]!==m||t[17]!==n?(h=(0,k.jsxs)(`section`,{"aria-label":n,className:`relative flex min-w-0 flex-col gap-4 overflow-hidden rounded-2xl border border-linie bg-panel p-5 sm:p-6`,children:[u,m,o]}),t[14]=o,t[15]=u,t[16]=m,t[17]=n,t[18]=h):h=t[18],h}function L(e){let t=(0,D.c)(2),{children:n}=e,r;return t[0]===n?r=t[1]:(r=(0,k.jsx)(`p`,{className:`text-sm text-bernstein`,children:n}),t[0]=n,t[1]=r),r}function R(e){let t=(0,D.c)(3),{laedt:n,fehler:r}=e;if(n){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,k.jsx)(`p`,{className:`text-sm text-text-2`,children:`Wird gelesen …`}),t[0]=e):e=t[0],e}let i=r?`: ${r}`:`.`,a;return t[1]===i?a=t[2]:(a=(0,k.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Lässt sich gerade nicht lesen`,i]}),t[1]=i,t[2]=a),a}function z({offen:e}){let t=m(),n=p({queryKey:[`geheimnisse`],queryFn:()=>C(`/api/maintenance/geheimnisse`),enabled:e}),[r,i]=(0,O.useState)(``),[s,c]=(0,O.useState)(!1),[l,u]=(0,O.useState)(!1);async function d(e){if(!s){c(!0),u(!1);try{await a(`/api/maintenance/geheimnisse`,{schluessel:`hf_token`,wert:e}),o(`erfolg`,e?`Hugging-Face-Zugang gespeichert.`:`Hugging-Face-Zugang gelöscht.`),i(``),t.invalidateQueries({queryKey:[`geheimnisse`]})}catch(e){o(`fehler`,e.message)}finally{c(!1)}}}let f=n.data,h;return h=n.isPending?`Wird gelesen …`:f?f.hf_token_gesetzt?`Ist hinterlegt.`:`Fehlt.`:`Lässt sich gerade nicht lesen${n.error?`: ${n.error.message}`:`.`}`,(0,k.jsxs)(F,{titel:`Hugging-Face-Zugang`,children:[(0,k.jsxs)(`p`,{className:`text-sm text-text-2`,"aria-live":`polite`,children:[(0,k.jsx)(`span`,{className:!f&&!n.isPending?`text-rot-text`:void 0,children:h}),` Nötig für gesperrte Modelle und schnellere Downloads.`,f?.hf_token_aus_env?` Er kommt aus der Dienst-Einstellung und lässt sich hier nicht löschen.`:``]}),f?.schreibbar===!1&&(0,k.jsx)(`p`,{className:`text-sm text-bernstein`,children:`Die Box kann den Zugang gerade nicht speichern: Ihre Ablage ist nicht beschreibbar.`}),(0,k.jsxs)(`form`,{className:`flex gap-2`,onSubmit:e=>{e.preventDefault(),r.trim()&&d(r.trim())},children:[(0,k.jsx)(`label`,{htmlFor:`hf-token`,className:`sr-only`,children:`Hugging-Face-Zugang`}),(0,k.jsx)(`input`,{id:`hf-token`,type:`password`,autoComplete:`off`,value:r,onChange:e=>i(e.target.value),placeholder:`hf_…`,className:`h-11 min-w-0 flex-1 rounded-lg border border-linie-stark bg-erhaben px-3 text-[15px] outline-none focus:border-cyan`}),(0,k.jsx)(w,{type:`submit`,disabled:!r.trim()||f?.schreibbar===!1||s,children:s?`Speichert …`:`Speichern`})]}),f?.hf_token_gesetzt&&!f.hf_token_aus_env&&(l?(0,k.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[(0,k.jsx)(w,{variant:`gefahr`,size:`sm`,disabled:s,onClick:()=>d(null),children:`Wirklich löschen?`}),(0,k.jsx)(w,{variant:`ghost`,size:`sm`,onClick:()=>u(!1),children:`Nein`})]}):(0,k.jsx)(w,{variant:`ghost`,size:`sm`,className:`self-start`,disabled:s,onClick:()=>u(!0),children:`Zugang löschen`}))]})}function B(e){let t=(0,D.c)(24),{ziel:n,name:r}=e,i=_(),a=i.data,o=null;if(i.isPending){let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,k.jsx)(`p`,{role:`status`,className:`text-sm text-text-2`,children:`Sendet …`}),t[0]=e):e=t[0],o=e}else if(a?.gesendet){let e=a.weg===`hermes`?`über Hermes`:`direkt an die Telegram-Bot-API`,n=a.kennung?`, Kennung ${a.kennung}`:``,r;t[1]!==e||t[2]!==n?(r=(0,k.jsxs)(`p`,{role:`status`,className:`text-sm text-gruen`,children:[`Gesendet `,e,n,`. Schau in Telegram nach.`]}),t[1]=e,t[2]=n,t[3]=r):r=t[3],o=r}else if(a){let e=a.grund??a.detail??`ohne Angabe eines Grundes.`,n;t[4]===e?n=t[5]:(n=(0,k.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Nicht gesendet: `,e]}),t[4]=e,t[5]=n),o=n}else if(i.error){let e;t[6]===i.error.message?e=t[7]:(e=(0,k.jsx)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:i.error.message}),t[6]=i.error.message,t[7]=e),o=e}let s;t[8]===r?s=t[9]:(s=(0,k.jsx)(`span`,{className:`text-[15px]`,children:r}),t[8]=r,t[9]=s);let c;t[10]!==i||t[11]!==n?(c=()=>i.mutate(n),t[10]=i,t[11]=n,t[12]=c):c=t[12];let l=`Testmeldung von ${r} senden`,u=i.isPending?`Sendet …`:`Test senden`,d;t[13]!==c||t[14]!==l||t[15]!==u||t[16]!==i.isPending?(d=(0,k.jsx)(w,{variant:`outline`,size:`sm`,disabled:i.isPending,onClick:c,"aria-label":l,children:u}),t[13]=c,t[14]=l,t[15]=u,t[16]=i.isPending,t[17]=d):d=t[17];let f;t[18]!==s||t[19]!==d?(f=(0,k.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[s,d]}),t[18]=s,t[19]=d,t[20]=f):f=t[20];let p;return t[21]!==o||t[22]!==f?(p=(0,k.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[f,o]}),t[21]=o,t[22]=f,t[23]=p):p=t[23],p}function V(){let e=(0,D.c)(9),t=s().data,n=t?.rolle??`box`,r=n===`box`?`homelab`:`box`,i=t?.instanz??(n===`box`?`Box-Wart`:`Homelab`),a;e[0]!==r||e[1]!==n||e[2]!==t||e[3]!==i?(a=[{ziel:n,name:i}],t?.partner.eingerichtet&&a.push({ziel:r,name:t.partner.name}),a.sort(U),e[0]=r,e[1]=n,e[2]=t,e[3]=i,e[4]=a):a=e[4];let o,c;e[5]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,k.jsx)(`p`,{className:`text-sm text-text-2`,children:`Dringende Hinweise gehen zusätzlich per Telegram raus, alles andere bleibt hier; was nachts anfällt, kommt um 07:00 als eine Morgenmeldung. Einfache Probleme wie einen abgestürzten Dienst behebt der Wächter selbst und schreibt es in den Verlauf.`}),c=(0,k.jsx)(`p`,{className:`text-sm text-text-2`,children:`Der Test schickt eine kurze Meldung über den echten Meldeweg, als dringend, damit sie auch nachts sofort kommt.`}),e[5]=o,e[6]=c):(o=e[5],c=e[6]);let l;return e[7]===a?l=e[8]:(l=(0,k.jsxs)(F,{titel:`Telegram`,children:[o,c,a.map(H)]}),e[7]=a,e[8]=l),l}function H(e){return(0,k.jsx)(B,{ziel:e.ziel,name:e.name},e.ziel)}function U(e,t){return Number(e.ziel!==`box`)-Number(t.ziel!==`box`)}function W(e){let t=(0,D.c)(87),{e:n,laedt:r,fehler:i}=e,a=y(),[o,s]=(0,O.useState)(null),[c,l]=(0,O.useState)(!1);if(!n){let e;return t[0]!==i||t[1]!==r?(e=(0,k.jsx)(F,{titel:`Update-Zeitfenster`,children:(0,k.jsx)(R,{laedt:r,fehler:i})}),t[0]=i,t[1]=r,t[2]=e):e=t[2],e}let u=n.update_fenster,d,f,p,m,h,g,_,v,b,x,S,C,T,E,M,I,z;if(t[3]!==n.schaltbar||t[4]!==o||t[5]!==u.naechster_lauf||t[6]!==u.neustart_fenster||t[7]!==u.tag||t[8]!==u.tag_name||t[9]!==u.timer_aktiv||t[10]!==u.uhrzeit||t[11]!==u.wirksam){z=o??{tag:u.tag,uhrzeit:u.uhrzeit},f=z.tag!==u.tag||z.uhrzeit!==u.uhrzeit;let e=j.includes(z.uhrzeit)?j:[...j,z.uhrzeit].sort();d=F,h=`Update-Zeitfenster`;let r;t[29]===u.naechster_lauf?r=t[30]:(r=u.naechster_lauf?` (nächster Lauf ${N(u.naechster_lauf)})`:``,t[29]=u.naechster_lauf,t[30]=r),t[31]!==u.neustart_fenster||t[32]!==u.tag_name||t[33]!==u.uhrzeit||t[34]!==r?(g=(0,k.jsxs)(`p`,{className:`text-sm text-text-2`,children:[`Die Box aktualisiert sich jeden `,u.tag_name,` um `,u.uhrzeit,` Uhr`,r,`. Neu gestartet wird sie danach nur`,` `,u.neustart_fenster,`.`]}),t[31]=u.neustart_fenster,t[32]=u.tag_name,t[33]=u.uhrzeit,t[34]=r,t[35]=g):g=t[35],t[36]!==n.schaltbar||t[37]!==u.timer_aktiv?(_=n.schaltbar&&!u.timer_aktiv&&(0,k.jsx)(L,{children:`Der Update-Timer läuft gerade nicht; er übernimmt das Fenster beim nächsten Start.`}),t[36]=n.schaltbar,t[37]=u.timer_aktiv,t[38]=_):_=t[38],t[39]!==n.schaltbar||t[40]!==u.wirksam?(v=n.schaltbar&&!u.wirksam&&(0,k.jsx)(L,{children:`Der Timer läuft noch nach einem anderen Plan als eingestellt. Einmal speichern gleicht es an.`}),t[39]=n.schaltbar,t[40]=u.wirksam,t[41]=v):v=t[41],I=`flex flex-wrap items-end gap-2`;let i=z.tag,a;t[42]===Symbol.for(`react.memo_cache_sentinel`)?(a=A.map(K),t[42]=a):a=t[42],m=(0,k.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs text-text-3`,children:[`Tag`,(0,k.jsx)(`select`,{className:`h-11 rounded-lg border border-linie-stark bg-erhaben px-3 text-[15px] text-foreground outline-none focus:border-cyan`,value:i,disabled:!n.schaltbar,"aria-label":`Wochentag`,onChange:e=>s({...z,tag:Number(e.target.value)}),children:a})]}),E=`flex flex-col gap-1 text-xs text-text-3`,M=`Uhrzeit`,p=`h-11 rounded-lg border border-linie-stark bg-erhaben px-3 text-[15px] text-foreground outline-none focus:border-cyan`,b=z.uhrzeit,x=!n.schaltbar,S=`Uhrzeit`,C=e=>s({...z,uhrzeit:e.target.value}),T=e.map(G),t[3]=n.schaltbar,t[4]=o,t[5]=u.naechster_lauf,t[6]=u.neustart_fenster,t[7]=u.tag,t[8]=u.tag_name,t[9]=u.timer_aktiv,t[10]=u.uhrzeit,t[11]=u.wirksam,t[12]=d,t[13]=f,t[14]=p,t[15]=m,t[16]=h,t[17]=g,t[18]=_,t[19]=v,t[20]=b,t[21]=x,t[22]=S,t[23]=C,t[24]=T,t[25]=E,t[26]=M,t[27]=I,t[28]=z}else d=t[12],f=t[13],p=t[14],m=t[15],h=t[16],g=t[17],_=t[18],v=t[19],b=t[20],x=t[21],S=t[22],C=t[23],T=t[24],E=t[25],M=t[26],I=t[27],z=t[28];let B;t[43]!==p||t[44]!==b||t[45]!==x||t[46]!==S||t[47]!==C||t[48]!==T?(B=(0,k.jsx)(`select`,{className:p,value:b,disabled:x,"aria-label":S,onChange:C,children:T}),t[43]=p,t[44]=b,t[45]=x,t[46]=S,t[47]=C,t[48]=T,t[49]=B):B=t[49];let V;t[50]!==B||t[51]!==E||t[52]!==M?(V=(0,k.jsxs)(`label`,{className:E,children:[M,B]}),t[50]=B,t[51]=E,t[52]=M,t[53]=V):V=t[53];let H=!n.schaltbar||a.isPending||!f&&u.wirksam,U;t[54]===Symbol.for(`react.memo_cache_sentinel`)?(U=()=>l(!0),t[54]=U):U=t[54];let W=a.isPending?`Speichert …`:`Speichern`,q;t[55]!==H||t[56]!==W?(q=(0,k.jsx)(w,{disabled:H,onClick:U,children:W}),t[55]=H,t[56]=W,t[57]=q):q=t[57];let J;t[58]!==m||t[59]!==V||t[60]!==q||t[61]!==I?(J=(0,k.jsxs)(`div`,{className:I,children:[m,V,q]}),t[58]=m,t[59]=V,t[60]=q,t[61]=I,t[62]=J):J=t[62];let Y=n.schaltbar?``:` Einstellen lässt es sich nur auf der Box.`,X;t[63]===Y?X=t[64]:(X=(0,k.jsxs)(`p`,{className:`text-xs text-text-3`,children:[`Am besten nachts nach der Sicherung (03:30) und vor der Morgenmeldung (07:00).`,Y]}),t[63]=Y,t[64]=X);let Z;t[65]!==z.tag||t[66]!==z.uhrzeit?(Z=P(z.tag,z.uhrzeit),t[65]=z.tag,t[66]=z.uhrzeit,t[67]=Z):Z=t[67];let te=`Der Update-Lauf startet ab jetzt jeden ${A[z.tag-1]} um ${z.uhrzeit} Uhr. Neu gestartet wird die Box nur ${Z}. Ein Termin, der dadurch schon vorbei ist, wird nicht nachgeholt: Der erste Lauf ist der nächste reguläre.`,ne;t[68]===Symbol.for(`react.memo_cache_sentinel`)?(ne=()=>l(!1),t[68]=ne):ne=t[68];let Q;t[69]!==c||t[70]!==a||t[71]!==z?(Q=()=>{c&&(a.mutate(z,{onSuccess:()=>s(null)}),l(!1))},t[69]=c,t[70]=a,t[71]=z,t[72]=Q):Q=t[72];let $;t[73]!==c||t[74]!==a.isPending||t[75]!==te||t[76]!==Q?($=(0,k.jsx)(ee,{offen:c,titel:`Update-Zeitfenster ändern?`,text:te,knopf:`Speichern`,gesperrt:a.isPending,onNein:ne,onJa:Q}),t[73]=c,t[74]=a.isPending,t[75]=te,t[76]=Q,t[77]=$):$=t[77];let re;return t[78]!==d||t[79]!==h||t[80]!==g||t[81]!==_||t[82]!==v||t[83]!==J||t[84]!==X||t[85]!==$?(re=(0,k.jsxs)(d,{titel:h,children:[g,_,v,J,X,$]}),t[78]=d,t[79]=h,t[80]=g,t[81]=_,t[82]=v,t[83]=J,t[84]=X,t[85]=$,t[86]=re):re=t[86],re}function G(e){return(0,k.jsx)(`option`,{value:e,children:e},e)}function K(e,t){return(0,k.jsx)(`option`,{value:t+1,children:e},e)}function q(e){let t=(0,D.c)(37),{e:n,laedt:r,fehler:i}=e,a=h(),[o,s]=(0,O.useState)(null);if(!n){let e;return t[0]!==i||t[1]!==r?(e=(0,k.jsx)(F,{titel:`Modell-Radar`,children:(0,k.jsx)(R,{laedt:r,fehler:i})}),t[0]=i,t[1]=r,t[2]=e):e=t[2],e}let c=n.radar,l=c.zustand===`an`||c.zustand===`unbekannt`&&c.an,u;t[3]===c.naechster_lauf?u=t[4]:(u=c.naechster_lauf?` (nächster Lauf ${N(c.naechster_lauf)})`:``,t[3]=c.naechster_lauf,t[4]=u);let d=`An. Es sucht jede Nacht ab 00:30 nach besseren Modellen${u}.`,f=c.an?`Eingeschaltet.`:`Ausgeschaltet.`,p;t[5]!==d||t[6]!==f?(p={an:d,schlaeft:`Schläft. Es sucht und testet keine Modelle, bis du es wieder einschaltest.`,aus:`Gestoppt, steht aber noch im Autostart: Nach einem Neustart der Box liefe es wieder.`,unbekannt:f},t[5]=d,t[6]=f,t[7]=p):p=t[7];let m=p[c.zustand],g;t[8]===m?g=t[9]:(g=(0,k.jsx)(`p`,{className:`text-sm text-text-2`,children:m}),t[8]=m,t[9]=g);let _;t[10]!==n.schaltbar||t[11]!==c.an||t[12]!==c.wirksam?(_=n.schaltbar&&!c.wirksam&&(0,k.jsxs)(L,{children:[`Eingestellt ist „`,c.an?`an`:`aus`,`“, systemd zeigt etwas anderes. Noch einmal schalten gleicht es an.`]}),t[10]=n.schaltbar,t[11]=c.an,t[12]=c.wirksam,t[13]=_):_=t[13];let v=l?`outline`:`default`,y=!n.schaltbar||a.isPending,b;t[14]===l?b=t[15]:(b=()=>s(!l),t[14]=l,t[15]=b);let x=a.isPending?`Schaltet …`:l?`Ausschalten`:`Einschalten`,S;t[16]!==b||t[17]!==x||t[18]!==v||t[19]!==y?(S=(0,k.jsx)(w,{variant:v,size:`sm`,className:`self-start`,disabled:y,onClick:b,children:x}),t[16]=b,t[17]=x,t[18]=v,t[19]=y,t[20]=S):S=t[20];let C=o!==null,T=o?`Modell-Radar einschalten?`:`Modell-Radar ausschalten?`,E=o?`Das Radar sucht ab heute Nacht um 00:30 wieder nach besseren Modellen und testet höchstens eines pro Woche. Ein verpasster Lauf wird nicht nachgeholt, tagsüber lädt es also nichts.`:`Das Radar sucht und testet dann keine neuen Modelle mehr, bis du es wieder einschaltest. Ein Nachttest, der gerade läuft, endet noch. Auch ein Deploy schaltet es nicht wieder ein.`,A=o?`Einschalten`:`Ausschalten`,j;t[21]===Symbol.for(`react.memo_cache_sentinel`)?(j=()=>s(null),t[21]=j):j=t[21];let M;t[22]!==o||t[23]!==a?(M=()=>{o!==null&&(a.mutate(o),s(null))},t[22]=o,t[23]=a,t[24]=M):M=t[24];let P;t[25]!==a.isPending||t[26]!==C||t[27]!==T||t[28]!==E||t[29]!==A||t[30]!==M?(P=(0,k.jsx)(ee,{offen:C,titel:T,text:E,knopf:A,gesperrt:a.isPending,onNein:j,onJa:M}),t[25]=a.isPending,t[26]=C,t[27]=T,t[28]=E,t[29]=A,t[30]=M,t[31]=P):P=t[31];let I;return t[32]!==S||t[33]!==P||t[34]!==g||t[35]!==_?(I=(0,k.jsxs)(F,{titel:`Modell-Radar`,children:[g,_,S,P]}),t[32]=S,t[33]=P,t[34]=g,t[35]=_,t[36]=I):I=t[36],I}function J(e){let t=(0,D.c)(25),{name:n,stand:r,laedt:i,fehler:a}=e,o;if(i){let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,k.jsx)(`span`,{className:`text-sm text-text-2`,children:`Wird gelesen …`}),t[0]=e):e=t[0],o=e}else if(a){let e;t[1]===a?e=t[2]:(e=(0,k.jsxs)(`span`,{className:`text-sm text-rot-text`,children:[`Nicht lesbar: `,a]}),t[1]=a,t[2]=e),o=e}else if(r?.commit){let e;t[4]===r.commit?e=t[5]:(e=(0,k.jsx)(`span`,{className:`ziffern text-foreground`,children:r.commit}),t[4]=r.commit,t[5]=e);let n=r.betreff?` · ${r.betreff}`:``,i;t[6]!==e||t[7]!==n?(i=(0,k.jsxs)(`span`,{className:`text-sm text-text-2`,children:[e,n]}),t[6]=e,t[7]=n,t[8]=i):i=t[8];let a;t[9]!==r.deploy_zeit||t[10]!==r.quelle?(a=r.quelle===`deploy`?`Live seit ${N(r.deploy_zeit)}`:`Aus git gelesen, ohne Deploy`,t[9]=r.deploy_zeit,t[10]=r.quelle,t[11]=a):a=t[11];let s;t[12]===r.commit_datum?s=t[13]:(s=r.commit_datum?` · Commit vom ${N(r.commit_datum)}`:``,t[12]=r.commit_datum,t[13]=s);let c;t[14]!==a||t[15]!==s?(c=(0,k.jsxs)(`span`,{className:`text-xs text-text-3`,children:[a,s]}),t[14]=a,t[15]=s,t[16]=c):c=t[16];let l;t[17]!==i||t[18]!==c?(l=(0,k.jsxs)(k.Fragment,{children:[i,c]}),t[17]=i,t[18]=c,t[19]=l):l=t[19],o=l}else{let e;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,k.jsx)(`span`,{className:`text-sm text-text-2`,children:`Unbekannt: keine Stand-Datei und kein git.`}),t[3]=e):e=t[3],o=e}let s;t[20]===n?s=t[21]:(s=(0,k.jsx)(`span`,{className:`text-[15px]`,children:n}),t[20]=n,t[21]=s);let c;return t[22]!==o||t[23]!==s?(c=(0,k.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[s,o]}),t[22]=o,t[23]=s,t[24]=c):c=t[24],c}function Y(e,t){return!e||!t?null:e.startsWith(t)||t.startsWith(e)}function X(e){let t=(0,D.c)(21),{offen:n}=e,r=s().data,i=!!r?.partner.eingerichtet,[a,o]=x(n,i),c=a.data?.stand?.commit,l=o.data?.stand?.commit,u;t[0]!==c||t[1]!==l?(u=Y(c,l),t[0]=c,t[1]=l,t[2]=u):u=t[2];let d=u,f=a.data?.instanz??r?.instanz??`Diese Instanz`,p=a.data?.stand,m=a.error?.message,h;t[3]!==a.isPending||t[4]!==f||t[5]!==p||t[6]!==m?(h=(0,k.jsx)(J,{name:f,stand:p,laedt:a.isPending,fehler:m}),t[3]=a.isPending,t[4]=f,t[5]=p,t[6]=m,t[7]=h):h=t[7];let g;t[8]!==r?.partner||t[9]!==o.data?.instanz||t[10]!==o.data?.stand||t[11]!==o.error?.message||t[12]!==o.isPending||t[13]!==i?(g=i&&(0,k.jsx)(J,{name:o.data?.instanz??r?.partner.name??`Partner`,stand:o.data?.stand,laedt:o.isPending,fehler:o.error?.message}),t[8]=r?.partner,t[9]=o.data?.instanz,t[10]=o.data?.stand,t[11]=o.error?.message,t[12]=o.isPending,t[13]=i,t[14]=g):g=t[14];let _;t[15]===d?_=t[16]:(_=d===!1&&(0,k.jsx)(L,{children:`Die beiden Instanzen laufen mit verschiedenen Ständen. Der nächste Deploy der Box zieht den Homelab-Teil mit.`}),t[15]=d,t[16]=_);let v;return t[17]!==h||t[18]!==g||t[19]!==_?(v=(0,k.jsxs)(F,{titel:`Instanzen`,children:[h,g,_]}),t[17]=h,t[18]=g,t[19]=_,t[20]=v):v=t[20],v}function Z(e){let t=(0,D.c)(52),{h:n}=e,r=u(),i=v(),[a,o]=(0,O.useState)(``),[s,c]=(0,O.useState)(!1),[l,f]=(0,O.useState)(null),p=n.arcane,m;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(m={hinterlegt:(0,k.jsx)(g,{art:`gruen`,children:`hinterlegt`}),umgebung:(0,k.jsx)(g,{art:`gruen`,children:`aus der Dienst-Einstellung`}),fehlt:(0,k.jsx)(g,{art:`bernstein`,children:`fehlt`})},t[0]=m):m=t[0];let h=m[p.schluessel],_;t[1]===p.url?_=t[2]:(_=p.url&&(0,k.jsxs)(`a`,{href:p.url,target:`_blank`,rel:`noopener`,className:`ml-auto inline-flex items-center gap-1 text-cyan hover:underline`,children:[`Arcane öffnen `,(0,k.jsx)(d,{className:`size-3.5`,"aria-hidden":!0})]}),t[1]=p.url,t[2]=_);let y;t[3]!==h||t[4]!==_?(y=(0,k.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-sm text-text-2`,children:[`API-Schlüssel `,h,_]}),t[3]=h,t[4]=_,t[5]=y):y=t[5];let b;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,k.jsx)(`p`,{className:`text-sm text-text-2`,children:`Mit Schlüssel sieht der Orchestrator, welche Docker-Images neuer sind. Anlegen in Arcane unter Einstellungen → API-Schlüssel; Lesen reicht, solange Docker-Updates nur als Probelauf laufen.`}),t[6]=b):b=t[6];let x;t[7]!==p.schluessel||t[8]!==r||t[9]!==a?(x=p.schluessel!==`umgebung`&&(0,k.jsxs)(`form`,{className:`flex gap-2`,onSubmit:e=>{e.preventDefault(),a.trim()&&r.mutate(a.trim(),{onSuccess:()=>o(``)})},children:[(0,k.jsx)(`label`,{htmlFor:`arcane-schluessel`,className:`sr-only`,children:`Arcane-API-Schlüssel`}),(0,k.jsxs)(`span`,{className:`relative min-w-0 flex-1`,children:[(0,k.jsx)(E,{className:`pointer-events-none absolute top-1/2 left-3 size-4 -translate-y-1/2 text-text-3`,"aria-hidden":!0}),(0,k.jsx)(`input`,{id:`arcane-schluessel`,type:`password`,autoComplete:`off`,value:a,onChange:e=>o(e.target.value),placeholder:p.schluessel===`hinterlegt`?`Neuen Schlüssel eintragen …`:`Schlüssel aus Arcane einfügen …`,className:`h-11 w-full rounded-lg border border-linie-stark bg-erhaben pr-3 pl-9 text-[15px] outline-none focus:border-lab`})]}),(0,k.jsx)(w,{type:`submit`,disabled:!a.trim()||r.isPending,children:r.isPending?`Prüft …`:`Prüfen und speichern`})]}),t[7]=p.schluessel,t[8]=r,t[9]=a,t[10]=x):x=t[10];let S;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,k.jsx)(`p`,{className:`text-xs text-text-3`,children:`Der Schlüssel wird vor dem Speichern an Arcane geprüft und nie wieder angezeigt. Er liegt nur im Homelab-Teil.`}),t[11]=S):S=t[11];let C;t[12]!==p.schluessel||t[13]!==s||t[14]!==r?(C=p.schluessel===`hinterlegt`&&(s?(0,k.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[(0,k.jsx)(w,{variant:`gefahr`,size:`sm`,disabled:r.isPending,onClick:()=>{r.mutate(null),c(!1)},children:`Wirklich entfernen?`}),(0,k.jsx)(w,{variant:`ghost`,size:`sm`,onClick:()=>c(!1),children:`Nein`})]}):(0,k.jsx)(w,{variant:`ghost`,size:`sm`,className:`self-start`,onClick:()=>c(!0),children:`Schlüssel entfernen`})),t[12]=p.schluessel,t[13]=s,t[14]=r,t[15]=C):C=t[15];let T;t[16]!==y||t[17]!==x||t[18]!==C?(T=(0,k.jsxs)(F,{titel:`Arcane (Docker)`,children:[y,b,x,S,C]}),t[16]=y,t[17]=x,t[18]=C,t[19]=T):T=t[19];let A=p.echt?`Echt: „Jetzt updaten“ bei Arcane zieht neue Images und startet die Container neu.`:`Probelauf: Arcane zeigt nur, was es tun würde — kein Container wird angefasst.`,j=p.echt_quelle===`umgebung`?` Festgelegt in der Dienst-Einstellung (MC_ARCANE_ECHT).`:``,M;t[20]!==A||t[21]!==j?(M=(0,k.jsxs)(`p`,{className:`text-sm text-text-2`,children:[A,j]}),t[20]=A,t[21]=j,t[22]=M):M=t[22];let N=p.echt?`outline`:`default`,P=p.echt_quelle===`umgebung`||i.isPending||p.schluessel===`fehlt`,I;t[23]===p.echt?I=t[24]:(I=()=>f(!p.echt),t[23]=p.echt,t[24]=I);let L=i.isPending?`Schaltet …`:p.echt?`Zurück auf Probelauf`:`Echt schalten`,R;t[25]!==N||t[26]!==P||t[27]!==I||t[28]!==L?(R=(0,k.jsx)(w,{variant:N,size:`sm`,className:`self-start`,disabled:P,onClick:I,children:L}),t[25]=N,t[26]=P,t[27]=I,t[28]=L,t[29]=R):R=t[29];let z;t[30]===p.schluessel?z=t[31]:(z=p.schluessel===`fehlt`&&(0,k.jsx)(`p`,{className:`text-xs text-text-3`,children:`Erst den Schlüssel eintragen.`}),t[30]=p.schluessel,t[31]=z);let B=l!==null,V=l?`Docker-Updates echt ausführen?`:`Zurück auf Probelauf?`,H=l?`Ab jetzt zieht „Jetzt updaten“ bei Arcane neue Images und startet die betroffenen Container neu. Vorher wird ein Snapshot der VM angelegt, soweit möglich. Das lässt sich hier jederzeit zurückschalten.`:`Docker-Updates zeigen dann wieder nur, was Arcane tun würde.`,U=l?`Echt schalten`:`Probelauf`,W=!!l,G;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(G=()=>f(null),t[32]=G):G=t[32];let K;t[33]!==i||t[34]!==l?(K=()=>{l!==null&&(i.mutate(l),f(null))},t[33]=i,t[34]=l,t[35]=K):K=t[35];let q;t[36]!==i.isPending||t[37]!==B||t[38]!==V||t[39]!==H||t[40]!==U||t[41]!==W||t[42]!==K?(q=(0,k.jsx)(ee,{offen:B,titel:V,text:H,knopf:U,gefahr:W,gesperrt:i.isPending,onNein:G,onJa:K}),t[36]=i.isPending,t[37]=B,t[38]=V,t[39]=H,t[40]=U,t[41]=W,t[42]=K,t[43]=q):q=t[43];let J;t[44]!==M||t[45]!==R||t[46]!==z||t[47]!==q?(J=(0,k.jsxs)(F,{titel:`Docker-Updates`,children:[M,R,z,q]}),t[44]=M,t[45]=R,t[46]=z,t[47]=q,t[48]=J):J=t[48];let Y;return t[49]!==J||t[50]!==T?(Y=(0,k.jsxs)(k.Fragment,{children:[T,J]}),t[49]=J,t[50]=T,t[51]=Y):Y=t[51],Y}function te(e){let t=(0,D.c)(21),{h:n}=e,r=n.ausfuehrer,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,k.jsx)(`dt`,{className:`text-text-3`,children:`Ausführer`}),t[0]=i):i=t[0];let a=r.verbunden?`text-gruen-text`:`text-rot-text`,o=r.verbunden?`verbunden`:`meldet sich nicht`,s;t[1]===r.zuletzt?s=t[2]:(s=r.zuletzt?` · zuletzt ${S(new Date(r.zuletzt*1e3).toISOString()).toLowerCase()}`:``,t[1]=r.zuletzt,t[2]=s);let c;t[3]!==a||t[4]!==o||t[5]!==s?(c=(0,k.jsxs)(`dd`,{className:a,children:[o,s]}),t[3]=a,t[4]=o,t[5]=s,t[6]=c):c=t[6];let l;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,k.jsx)(`dt`,{className:`text-text-3`,children:`Modus`}),t[7]=l):l=t[7];let u=r.nur_lesen?`nur lesen — Updates sind gesperrt`:`voll: Snapshots, Sicherungen und Updates`,d;t[8]===u?d=t[9]:(d=(0,k.jsx)(`dd`,{className:`text-text-2`,children:u}),t[8]=u,t[9]=d);let f;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,k.jsx)(`dt`,{className:`text-text-3`,children:`Sicherungen`}),t[10]=f):f=t[10];let p=r.sicherung_speicher?`auf „${r.sicherung_speicher}“ (wo kein Snapshot geht)`:`kein Speicher gefunden`,m;t[11]===p?m=t[12]:(m=(0,k.jsx)(`dd`,{className:`text-text-2`,children:p}),t[11]=p,t[12]=m);let h;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,k.jsx)(`dt`,{className:`text-text-3`,children:`Wartezeit`}),t[13]=h):h=t[13];let g=n.karenz_h>0?`${n.karenz_h} Stunden nach einer Änderung am Update-Skript einer App`:`aus`,_;t[14]===g?_=t[15]:(_=(0,k.jsx)(`dd`,{className:`text-text-2`,children:g}),t[14]=g,t[15]=_);let v;return t[16]!==m||t[17]!==_||t[18]!==c||t[19]!==d?(v=(0,k.jsx)(F,{titel:`Ausführer und Updates`,children:(0,k.jsxs)(`dl`,{className:`grid grid-cols-[auto_minmax(0,1fr)] gap-x-4 gap-y-2 text-sm`,children:[i,c,l,d,f,m,h,_]})}),t[16]=m,t[17]=_,t[18]=c,t[19]=d,t[20]=v):v=t[20],v}function ne(){let e=(0,D.c)(8),t=s().data,n=b().data,r=t?.rolle===`homelab`||!!(n?.eingerichtet&&n.erreichbar),i=f(r),a;if(!r){let t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,k.jsx)(`p`,{className:`text-sm text-text-2`,children:`Der Homelab-Teil antwortet gerade nicht.`}),e[0]=t):t=e[0],a=t}else if(i.data){let t;e[4]===i.data?t=e[5]:(t=(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(Z,{h:i.data}),(0,k.jsx)(te,{h:i.data})]}),e[4]=i.data,e[5]=t),a=t}else{let t=i.error?.message,n;e[1]!==i.isPending||e[2]!==t?(n=(0,k.jsx)(R,{laedt:i.isPending,fehler:t}),e[1]=i.isPending,e[2]=t,e[3]=n):n=e[3],a=n}let o;return e[6]===a?o=e[7]:(o=(0,k.jsx)(I,{titel:`Homelab`,farbe:`homelab`,text:`Arcane und Docker, der Ausführer auf dem Proxmox-Host, Rückwege.`,children:a}),e[6]=a,e[7]=o),o}function Q(){let e=(0,D.c)(17),t=l(!0),n=t.error?.message,r;e[0]!==t.data||e[1]!==t.isPending||e[2]!==n?(r={e:t.data,laedt:t.isPending,fehler:n},e[0]=t.data,e[1]=t.isPending,e[2]=n,e[3]=r):r=e[3];let i=r,a,o;e[4]===i?(a=e[5],o=e[6]):(a=(0,k.jsx)(W,{...i}),o=(0,k.jsx)(q,{...i}),e[4]=i,e[5]=a,e[6]=o);let s;e[7]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,k.jsx)(z,{offen:!0}),e[7]=s):s=e[7];let c;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,k.jsxs)(F,{titel:`Hermes`,children:[(0,k.jsxs)(`a`,{href:`/hermes-ui/`,target:`_blank`,rel:`noopener`,className:`flex h-11 items-center gap-2 self-start rounded-lg border border-linie-stark bg-erhaben px-4 text-[15px] hover:border-text-3`,children:[(0,k.jsx)(d,{className:`size-4`,"aria-hidden":!0}),` Hermes-Dashboard öffnen`]}),(0,k.jsx)(`p`,{className:`text-xs text-text-3`,children:`Chat, Sitzungen und Cron-Jobs verwaltet Hermes selbst. Es fragt nach seiner eigenen Anmeldung.`})]}),e[8]=c):c=e[8];let u;e[9]!==a||e[10]!==o?(u=(0,k.jsxs)(I,{titel:`KI-Box`,farbe:`box`,text:`Wann sie sich aktualisiert, das Modell-Radar und Zugänge.`,children:[a,o,s,c]}),e[9]=a,e[10]=o,e[11]=u):u=e[11];let f;e[12]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,k.jsx)(ne,{}),e[12]=f):f=e[12];let p;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,k.jsx)(I,{titel:`Meldungen`,text:`Telegram, Morgenmeldung und was sofort kommt.`,children:(0,k.jsx)(V,{})}),e[13]=p):p=e[13];let m;e[14]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,k.jsx)(I,{titel:`Software-Stand`,text:`Welcher Stand auf beiden Instanzen läuft.`,children:(0,k.jsx)(X,{offen:!0})}),e[14]=m):m=e[14];let h;return e[15]===u?h=e[16]:(h=(0,k.jsxs)(`div`,{className:`grid gap-5 md:gap-6 xl:grid-cols-2`,children:[u,f,p,m]}),e[15]=u,e[16]=h),h}export{Q as EinstellungenSeite}; \ No newline at end of file +import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{Bt as a,Dt as o,J as s,Kt as c,L as l,M as u,Ut as d,V as f,Xt as p,Zt as m,at as h,f as g,ft as _,j as v,mt as y,tt as b,ut as x,yt as S,zt as C}from"./index-FvHAYExN.js";import{t as w}from"./button-D8rvET0Z.js";import{t as ee}from"./Bestaetigen-SE_NgpcU.js";var T={name:`key-round`,size:24,node:[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]};T.node;var E=c(T),D=t(),O=r(e(),1),k=n(),A=[`Montag`,`Dienstag`,`Mittwoch`,`Donnerstag`,`Freitag`,`Samstag`,`Sonntag`],j=Array.from({length:48},(e,t)=>`${String(Math.floor(t/2)).padStart(2,`0`)}:${t%2?`30`:`00`}`),M=new Intl.DateTimeFormat(`de-DE`,{day:`2-digit`,month:`2-digit`,year:`numeric`,hour:`2-digit`,minute:`2-digit`,timeZone:`Europe/Berlin`});function N(e){let t=e?new Date(e):null;return t&&!Number.isNaN(t.getTime())?M.format(t):`–`}function P(e,t){let n=Number(t.slice(0,2)),r=n*60+179,i=e;r>=1440&&(r-=1440,i=e%7+1);let a=e=>String(e).padStart(2,`0`),o=`${a(n)}:00`,s=`${a(Math.floor(r/60))}:${a(r%60)}`;return i===e?`${A[e-1]} ${o}–${s}`:`${A[e-1]} ${o} – ${A[i-1]} ${s}`}function F(e){let t=(0,D.c)(6),{titel:n,children:r}=e,i;t[0]===n?i=t[1]:(i=(0,k.jsx)(`h3`,{className:`schild text-sm tracking-[0.18em] text-text-2`,children:n}),t[0]=n,t[1]=i);let a;return t[2]!==r||t[3]!==i||t[4]!==n?(a=(0,k.jsxs)(`section`,{"aria-label":n,className:`flex flex-col gap-3 border-t border-linie pt-4 first:border-t-0 first:pt-0`,children:[i,r]}),t[2]=r,t[3]=i,t[4]=n,t[5]=a):a=t[5],a}function I(e){let t=(0,D.c)(19),{titel:n,text:r,farbe:a,children:o}=e,s=a===`box`?`bg-box`:a===`homelab`?`bg-lab`:`bg-linie-stark`,c=a===`box`?`text-box-text`:a===`homelab`?`text-lab-text`:`text-foreground`,l;t[0]===s?l=t[1]:(l=i(`absolute inset-x-0 top-0 h-1`,s),t[0]=s,t[1]=l);let u;t[2]===l?u=t[3]:(u=(0,k.jsx)(`span`,{"aria-hidden":!0,className:l}),t[2]=l,t[3]=u);let d;t[4]===c?d=t[5]:(d=i(`schild text-lg font-bold tracking-[0.22em]`,c),t[4]=c,t[5]=d);let f;t[6]!==d||t[7]!==n?(f=(0,k.jsx)(`h2`,{className:d,children:n}),t[6]=d,t[7]=n,t[8]=f):f=t[8];let p;t[9]===r?p=t[10]:(p=(0,k.jsx)(`p`,{className:`text-sm text-text-3`,children:r}),t[9]=r,t[10]=p);let m;t[11]!==f||t[12]!==p?(m=(0,k.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[f,p]}),t[11]=f,t[12]=p,t[13]=m):m=t[13];let h;return t[14]!==o||t[15]!==u||t[16]!==m||t[17]!==n?(h=(0,k.jsxs)(`section`,{"aria-label":n,className:`relative flex min-w-0 flex-col gap-4 overflow-hidden rounded-2xl border border-linie bg-panel p-5 sm:p-6`,children:[u,m,o]}),t[14]=o,t[15]=u,t[16]=m,t[17]=n,t[18]=h):h=t[18],h}function L(e){let t=(0,D.c)(2),{children:n}=e,r;return t[0]===n?r=t[1]:(r=(0,k.jsx)(`p`,{className:`text-sm text-bernstein`,children:n}),t[0]=n,t[1]=r),r}function R(e){let t=(0,D.c)(3),{laedt:n,fehler:r}=e;if(n){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,k.jsx)(`p`,{className:`text-sm text-text-2`,children:`Wird gelesen …`}),t[0]=e):e=t[0],e}let i=r?`: ${r}`:`.`,a;return t[1]===i?a=t[2]:(a=(0,k.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Lässt sich gerade nicht lesen`,i]}),t[1]=i,t[2]=a),a}function z({offen:e}){let t=m(),n=p({queryKey:[`geheimnisse`],queryFn:()=>C(`/api/maintenance/geheimnisse`),enabled:e}),[r,i]=(0,O.useState)(``),[s,c]=(0,O.useState)(!1),[l,u]=(0,O.useState)(!1);async function d(e){if(!s){c(!0),u(!1);try{await a(`/api/maintenance/geheimnisse`,{schluessel:`hf_token`,wert:e}),o(`erfolg`,e?`Hugging-Face-Zugang gespeichert.`:`Hugging-Face-Zugang gelöscht.`),i(``),t.invalidateQueries({queryKey:[`geheimnisse`]})}catch(e){o(`fehler`,e.message)}finally{c(!1)}}}let f=n.data,h;return h=n.isPending?`Wird gelesen …`:f?f.hf_token_gesetzt?`Ist hinterlegt.`:`Fehlt.`:`Lässt sich gerade nicht lesen${n.error?`: ${n.error.message}`:`.`}`,(0,k.jsxs)(F,{titel:`Hugging-Face-Zugang`,children:[(0,k.jsxs)(`p`,{className:`text-sm text-text-2`,"aria-live":`polite`,children:[(0,k.jsx)(`span`,{className:!f&&!n.isPending?`text-rot-text`:void 0,children:h}),` Nötig für gesperrte Modelle und schnellere Downloads.`,f?.hf_token_aus_env?` Er kommt aus der Dienst-Einstellung und lässt sich hier nicht löschen.`:``]}),f?.schreibbar===!1&&(0,k.jsx)(`p`,{className:`text-sm text-bernstein`,children:`Die Box kann den Zugang gerade nicht speichern: Ihre Ablage ist nicht beschreibbar.`}),(0,k.jsxs)(`form`,{className:`flex gap-2`,onSubmit:e=>{e.preventDefault(),r.trim()&&d(r.trim())},children:[(0,k.jsx)(`label`,{htmlFor:`hf-token`,className:`sr-only`,children:`Hugging-Face-Zugang`}),(0,k.jsx)(`input`,{id:`hf-token`,type:`password`,autoComplete:`off`,value:r,onChange:e=>i(e.target.value),placeholder:`hf_…`,className:`h-11 min-w-0 flex-1 rounded-lg border border-linie-stark bg-erhaben px-3 text-[15px] outline-none focus:border-cyan`}),(0,k.jsx)(w,{type:`submit`,disabled:!r.trim()||f?.schreibbar===!1||s,children:s?`Speichert …`:`Speichern`})]}),f?.hf_token_gesetzt&&!f.hf_token_aus_env&&(l?(0,k.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[(0,k.jsx)(w,{variant:`gefahr`,size:`sm`,disabled:s,onClick:()=>d(null),children:`Wirklich löschen?`}),(0,k.jsx)(w,{variant:`ghost`,size:`sm`,onClick:()=>u(!1),children:`Nein`})]}):(0,k.jsx)(w,{variant:`ghost`,size:`sm`,className:`self-start`,disabled:s,onClick:()=>u(!0),children:`Zugang löschen`}))]})}function B(e){let t=(0,D.c)(24),{ziel:n,name:r}=e,i=_(),a=i.data,o=null;if(i.isPending){let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,k.jsx)(`p`,{role:`status`,className:`text-sm text-text-2`,children:`Sendet …`}),t[0]=e):e=t[0],o=e}else if(a?.gesendet){let e=a.weg===`hermes`?`über Hermes`:`direkt an die Telegram-Bot-API`,n=a.kennung?`, Kennung ${a.kennung}`:``,r;t[1]!==e||t[2]!==n?(r=(0,k.jsxs)(`p`,{role:`status`,className:`text-sm text-gruen`,children:[`Gesendet `,e,n,`. Schau in Telegram nach.`]}),t[1]=e,t[2]=n,t[3]=r):r=t[3],o=r}else if(a){let e=a.grund??a.detail??`ohne Angabe eines Grundes.`,n;t[4]===e?n=t[5]:(n=(0,k.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Nicht gesendet: `,e]}),t[4]=e,t[5]=n),o=n}else if(i.error){let e;t[6]===i.error.message?e=t[7]:(e=(0,k.jsx)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:i.error.message}),t[6]=i.error.message,t[7]=e),o=e}let s;t[8]===r?s=t[9]:(s=(0,k.jsx)(`span`,{className:`text-[15px]`,children:r}),t[8]=r,t[9]=s);let c;t[10]!==i||t[11]!==n?(c=()=>i.mutate(n),t[10]=i,t[11]=n,t[12]=c):c=t[12];let l=`Testmeldung von ${r} senden`,u=i.isPending?`Sendet …`:`Test senden`,d;t[13]!==c||t[14]!==l||t[15]!==u||t[16]!==i.isPending?(d=(0,k.jsx)(w,{variant:`outline`,size:`sm`,disabled:i.isPending,onClick:c,"aria-label":l,children:u}),t[13]=c,t[14]=l,t[15]=u,t[16]=i.isPending,t[17]=d):d=t[17];let f;t[18]!==s||t[19]!==d?(f=(0,k.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[s,d]}),t[18]=s,t[19]=d,t[20]=f):f=t[20];let p;return t[21]!==o||t[22]!==f?(p=(0,k.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[f,o]}),t[21]=o,t[22]=f,t[23]=p):p=t[23],p}function V(){let e=(0,D.c)(9),t=s().data,n=t?.rolle??`box`,r=n===`box`?`homelab`:`box`,i=t?.instanz??(n===`box`?`Box-Wart`:`Homelab`),a;e[0]!==r||e[1]!==n||e[2]!==t||e[3]!==i?(a=[{ziel:n,name:i}],t?.partner.eingerichtet&&a.push({ziel:r,name:t.partner.name}),a.sort(U),e[0]=r,e[1]=n,e[2]=t,e[3]=i,e[4]=a):a=e[4];let o,c;e[5]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,k.jsx)(`p`,{className:`text-sm text-text-2`,children:`Dringende Hinweise gehen zusätzlich per Telegram raus, alles andere bleibt hier; was nachts anfällt, kommt um 07:00 als eine Morgenmeldung. Einfache Probleme wie einen abgestürzten Dienst behebt der Wächter selbst und schreibt es in den Verlauf.`}),c=(0,k.jsx)(`p`,{className:`text-sm text-text-2`,children:`Der Test schickt eine kurze Meldung über den echten Meldeweg, als dringend, damit sie auch nachts sofort kommt.`}),e[5]=o,e[6]=c):(o=e[5],c=e[6]);let l;return e[7]===a?l=e[8]:(l=(0,k.jsxs)(F,{titel:`Telegram`,children:[o,c,a.map(H)]}),e[7]=a,e[8]=l),l}function H(e){return(0,k.jsx)(B,{ziel:e.ziel,name:e.name},e.ziel)}function U(e,t){return Number(e.ziel!==`box`)-Number(t.ziel!==`box`)}function W(e){let t=(0,D.c)(87),{e:n,laedt:r,fehler:i}=e,a=y(),[o,s]=(0,O.useState)(null),[c,l]=(0,O.useState)(!1);if(!n){let e;return t[0]!==i||t[1]!==r?(e=(0,k.jsx)(F,{titel:`Update-Zeitfenster`,children:(0,k.jsx)(R,{laedt:r,fehler:i})}),t[0]=i,t[1]=r,t[2]=e):e=t[2],e}let u=n.update_fenster,d,f,p,m,h,g,_,v,b,x,S,C,T,E,M,I,z;if(t[3]!==n.schaltbar||t[4]!==o||t[5]!==u.naechster_lauf||t[6]!==u.neustart_fenster||t[7]!==u.tag||t[8]!==u.tag_name||t[9]!==u.timer_aktiv||t[10]!==u.uhrzeit||t[11]!==u.wirksam){z=o??{tag:u.tag,uhrzeit:u.uhrzeit},f=z.tag!==u.tag||z.uhrzeit!==u.uhrzeit;let e=j.includes(z.uhrzeit)?j:[...j,z.uhrzeit].sort();d=F,h=`Update-Zeitfenster`;let r;t[29]===u.naechster_lauf?r=t[30]:(r=u.naechster_lauf?` (nächster Lauf ${N(u.naechster_lauf)})`:``,t[29]=u.naechster_lauf,t[30]=r),t[31]!==u.neustart_fenster||t[32]!==u.tag_name||t[33]!==u.uhrzeit||t[34]!==r?(g=(0,k.jsxs)(`p`,{className:`text-sm text-text-2`,children:[`Die Box aktualisiert sich jeden `,u.tag_name,` um `,u.uhrzeit,` Uhr`,r,`. Neu gestartet wird sie danach nur`,` `,u.neustart_fenster,`.`]}),t[31]=u.neustart_fenster,t[32]=u.tag_name,t[33]=u.uhrzeit,t[34]=r,t[35]=g):g=t[35],t[36]!==n.schaltbar||t[37]!==u.timer_aktiv?(_=n.schaltbar&&!u.timer_aktiv&&(0,k.jsx)(L,{children:`Der Update-Timer läuft gerade nicht; er übernimmt das Fenster beim nächsten Start.`}),t[36]=n.schaltbar,t[37]=u.timer_aktiv,t[38]=_):_=t[38],t[39]!==n.schaltbar||t[40]!==u.wirksam?(v=n.schaltbar&&!u.wirksam&&(0,k.jsx)(L,{children:`Der Timer läuft noch nach einem anderen Plan als eingestellt. Einmal speichern gleicht es an.`}),t[39]=n.schaltbar,t[40]=u.wirksam,t[41]=v):v=t[41],I=`flex flex-wrap items-end gap-2`;let i=z.tag,a;t[42]===Symbol.for(`react.memo_cache_sentinel`)?(a=A.map(K),t[42]=a):a=t[42],m=(0,k.jsxs)(`label`,{className:`flex flex-col gap-1 text-xs text-text-3`,children:[`Tag`,(0,k.jsx)(`select`,{className:`h-11 rounded-lg border border-linie-stark bg-erhaben px-3 text-[15px] text-foreground outline-none focus:border-cyan`,value:i,disabled:!n.schaltbar,"aria-label":`Wochentag`,onChange:e=>s({...z,tag:Number(e.target.value)}),children:a})]}),E=`flex flex-col gap-1 text-xs text-text-3`,M=`Uhrzeit`,p=`h-11 rounded-lg border border-linie-stark bg-erhaben px-3 text-[15px] text-foreground outline-none focus:border-cyan`,b=z.uhrzeit,x=!n.schaltbar,S=`Uhrzeit`,C=e=>s({...z,uhrzeit:e.target.value}),T=e.map(G),t[3]=n.schaltbar,t[4]=o,t[5]=u.naechster_lauf,t[6]=u.neustart_fenster,t[7]=u.tag,t[8]=u.tag_name,t[9]=u.timer_aktiv,t[10]=u.uhrzeit,t[11]=u.wirksam,t[12]=d,t[13]=f,t[14]=p,t[15]=m,t[16]=h,t[17]=g,t[18]=_,t[19]=v,t[20]=b,t[21]=x,t[22]=S,t[23]=C,t[24]=T,t[25]=E,t[26]=M,t[27]=I,t[28]=z}else d=t[12],f=t[13],p=t[14],m=t[15],h=t[16],g=t[17],_=t[18],v=t[19],b=t[20],x=t[21],S=t[22],C=t[23],T=t[24],E=t[25],M=t[26],I=t[27],z=t[28];let B;t[43]!==p||t[44]!==b||t[45]!==x||t[46]!==S||t[47]!==C||t[48]!==T?(B=(0,k.jsx)(`select`,{className:p,value:b,disabled:x,"aria-label":S,onChange:C,children:T}),t[43]=p,t[44]=b,t[45]=x,t[46]=S,t[47]=C,t[48]=T,t[49]=B):B=t[49];let V;t[50]!==B||t[51]!==E||t[52]!==M?(V=(0,k.jsxs)(`label`,{className:E,children:[M,B]}),t[50]=B,t[51]=E,t[52]=M,t[53]=V):V=t[53];let H=!n.schaltbar||a.isPending||!f&&u.wirksam,U;t[54]===Symbol.for(`react.memo_cache_sentinel`)?(U=()=>l(!0),t[54]=U):U=t[54];let W=a.isPending?`Speichert …`:`Speichern`,q;t[55]!==H||t[56]!==W?(q=(0,k.jsx)(w,{disabled:H,onClick:U,children:W}),t[55]=H,t[56]=W,t[57]=q):q=t[57];let J;t[58]!==m||t[59]!==V||t[60]!==q||t[61]!==I?(J=(0,k.jsxs)(`div`,{className:I,children:[m,V,q]}),t[58]=m,t[59]=V,t[60]=q,t[61]=I,t[62]=J):J=t[62];let Y=n.schaltbar?``:` Einstellen lässt es sich nur auf der Box.`,X;t[63]===Y?X=t[64]:(X=(0,k.jsxs)(`p`,{className:`text-xs text-text-3`,children:[`Am besten nachts nach der Sicherung (03:30) und vor der Morgenmeldung (07:00).`,Y]}),t[63]=Y,t[64]=X);let Z;t[65]!==z.tag||t[66]!==z.uhrzeit?(Z=P(z.tag,z.uhrzeit),t[65]=z.tag,t[66]=z.uhrzeit,t[67]=Z):Z=t[67];let te=`Der Update-Lauf startet ab jetzt jeden ${A[z.tag-1]} um ${z.uhrzeit} Uhr. Neu gestartet wird die Box nur ${Z}. Ein Termin, der dadurch schon vorbei ist, wird nicht nachgeholt: Der erste Lauf ist der nächste reguläre.`,ne;t[68]===Symbol.for(`react.memo_cache_sentinel`)?(ne=()=>l(!1),t[68]=ne):ne=t[68];let Q;t[69]!==c||t[70]!==a||t[71]!==z?(Q=()=>{c&&(a.mutate(z,{onSuccess:()=>s(null)}),l(!1))},t[69]=c,t[70]=a,t[71]=z,t[72]=Q):Q=t[72];let $;t[73]!==c||t[74]!==a.isPending||t[75]!==te||t[76]!==Q?($=(0,k.jsx)(ee,{offen:c,titel:`Update-Zeitfenster ändern?`,text:te,knopf:`Speichern`,gesperrt:a.isPending,onNein:ne,onJa:Q}),t[73]=c,t[74]=a.isPending,t[75]=te,t[76]=Q,t[77]=$):$=t[77];let re;return t[78]!==d||t[79]!==h||t[80]!==g||t[81]!==_||t[82]!==v||t[83]!==J||t[84]!==X||t[85]!==$?(re=(0,k.jsxs)(d,{titel:h,children:[g,_,v,J,X,$]}),t[78]=d,t[79]=h,t[80]=g,t[81]=_,t[82]=v,t[83]=J,t[84]=X,t[85]=$,t[86]=re):re=t[86],re}function G(e){return(0,k.jsx)(`option`,{value:e,children:e},e)}function K(e,t){return(0,k.jsx)(`option`,{value:t+1,children:e},e)}function q(e){let t=(0,D.c)(37),{e:n,laedt:r,fehler:i}=e,a=h(),[o,s]=(0,O.useState)(null);if(!n){let e;return t[0]!==i||t[1]!==r?(e=(0,k.jsx)(F,{titel:`Modell-Radar`,children:(0,k.jsx)(R,{laedt:r,fehler:i})}),t[0]=i,t[1]=r,t[2]=e):e=t[2],e}let c=n.radar,l=c.zustand===`an`||c.zustand===`unbekannt`&&c.an,u;t[3]===c.naechster_lauf?u=t[4]:(u=c.naechster_lauf?` (nächster Lauf ${N(c.naechster_lauf)})`:``,t[3]=c.naechster_lauf,t[4]=u);let d=`An. Es sucht jede Nacht ab 00:30 nach besseren Modellen${u}.`,f=c.an?`Eingeschaltet.`:`Ausgeschaltet.`,p;t[5]!==d||t[6]!==f?(p={an:d,schlaeft:`Schläft. Es sucht und testet keine Modelle, bis du es wieder einschaltest.`,aus:`Gestoppt, steht aber noch im Autostart: Nach einem Neustart der Box liefe es wieder.`,unbekannt:f},t[5]=d,t[6]=f,t[7]=p):p=t[7];let m=p[c.zustand],g;t[8]===m?g=t[9]:(g=(0,k.jsx)(`p`,{className:`text-sm text-text-2`,children:m}),t[8]=m,t[9]=g);let _;t[10]!==n.schaltbar||t[11]!==c.an||t[12]!==c.wirksam?(_=n.schaltbar&&!c.wirksam&&(0,k.jsxs)(L,{children:[`Eingestellt ist „`,c.an?`an`:`aus`,`“, systemd zeigt etwas anderes. Noch einmal schalten gleicht es an.`]}),t[10]=n.schaltbar,t[11]=c.an,t[12]=c.wirksam,t[13]=_):_=t[13];let v=l?`outline`:`default`,y=!n.schaltbar||a.isPending,b;t[14]===l?b=t[15]:(b=()=>s(!l),t[14]=l,t[15]=b);let x=a.isPending?`Schaltet …`:l?`Ausschalten`:`Einschalten`,S;t[16]!==b||t[17]!==x||t[18]!==v||t[19]!==y?(S=(0,k.jsx)(w,{variant:v,size:`sm`,className:`self-start`,disabled:y,onClick:b,children:x}),t[16]=b,t[17]=x,t[18]=v,t[19]=y,t[20]=S):S=t[20];let C=o!==null,T=o?`Modell-Radar einschalten?`:`Modell-Radar ausschalten?`,E=o?`Das Radar sucht ab heute Nacht um 00:30 wieder nach besseren Modellen und testet höchstens eines pro Woche. Ein verpasster Lauf wird nicht nachgeholt, tagsüber lädt es also nichts.`:`Das Radar sucht und testet dann keine neuen Modelle mehr, bis du es wieder einschaltest. Ein Nachttest, der gerade läuft, endet noch. Auch ein Deploy schaltet es nicht wieder ein.`,A=o?`Einschalten`:`Ausschalten`,j;t[21]===Symbol.for(`react.memo_cache_sentinel`)?(j=()=>s(null),t[21]=j):j=t[21];let M;t[22]!==o||t[23]!==a?(M=()=>{o!==null&&(a.mutate(o),s(null))},t[22]=o,t[23]=a,t[24]=M):M=t[24];let P;t[25]!==a.isPending||t[26]!==C||t[27]!==T||t[28]!==E||t[29]!==A||t[30]!==M?(P=(0,k.jsx)(ee,{offen:C,titel:T,text:E,knopf:A,gesperrt:a.isPending,onNein:j,onJa:M}),t[25]=a.isPending,t[26]=C,t[27]=T,t[28]=E,t[29]=A,t[30]=M,t[31]=P):P=t[31];let I;return t[32]!==S||t[33]!==P||t[34]!==g||t[35]!==_?(I=(0,k.jsxs)(F,{titel:`Modell-Radar`,children:[g,_,S,P]}),t[32]=S,t[33]=P,t[34]=g,t[35]=_,t[36]=I):I=t[36],I}function J(e){let t=(0,D.c)(25),{name:n,stand:r,laedt:i,fehler:a}=e,o;if(i){let e;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,k.jsx)(`span`,{className:`text-sm text-text-2`,children:`Wird gelesen …`}),t[0]=e):e=t[0],o=e}else if(a){let e;t[1]===a?e=t[2]:(e=(0,k.jsxs)(`span`,{className:`text-sm text-rot-text`,children:[`Nicht lesbar: `,a]}),t[1]=a,t[2]=e),o=e}else if(r?.commit){let e;t[4]===r.commit?e=t[5]:(e=(0,k.jsx)(`span`,{className:`ziffern text-foreground`,children:r.commit}),t[4]=r.commit,t[5]=e);let n=r.betreff?` · ${r.betreff}`:``,i;t[6]!==e||t[7]!==n?(i=(0,k.jsxs)(`span`,{className:`text-sm text-text-2`,children:[e,n]}),t[6]=e,t[7]=n,t[8]=i):i=t[8];let a;t[9]!==r.deploy_zeit||t[10]!==r.quelle?(a=r.quelle===`deploy`?`Live seit ${N(r.deploy_zeit)}`:`Aus git gelesen, ohne Deploy`,t[9]=r.deploy_zeit,t[10]=r.quelle,t[11]=a):a=t[11];let s;t[12]===r.commit_datum?s=t[13]:(s=r.commit_datum?` · Commit vom ${N(r.commit_datum)}`:``,t[12]=r.commit_datum,t[13]=s);let c;t[14]!==a||t[15]!==s?(c=(0,k.jsxs)(`span`,{className:`text-xs text-text-3`,children:[a,s]}),t[14]=a,t[15]=s,t[16]=c):c=t[16];let l;t[17]!==i||t[18]!==c?(l=(0,k.jsxs)(k.Fragment,{children:[i,c]}),t[17]=i,t[18]=c,t[19]=l):l=t[19],o=l}else{let e;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,k.jsx)(`span`,{className:`text-sm text-text-2`,children:`Unbekannt: keine Stand-Datei und kein git.`}),t[3]=e):e=t[3],o=e}let s;t[20]===n?s=t[21]:(s=(0,k.jsx)(`span`,{className:`text-[15px]`,children:n}),t[20]=n,t[21]=s);let c;return t[22]!==o||t[23]!==s?(c=(0,k.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[s,o]}),t[22]=o,t[23]=s,t[24]=c):c=t[24],c}function Y(e,t){return!e||!t?null:e.startsWith(t)||t.startsWith(e)}function X(e){let t=(0,D.c)(21),{offen:n}=e,r=s().data,i=!!r?.partner.eingerichtet,[a,o]=x(n,i),c=a.data?.stand?.commit,l=o.data?.stand?.commit,u;t[0]!==c||t[1]!==l?(u=Y(c,l),t[0]=c,t[1]=l,t[2]=u):u=t[2];let d=u,f=a.data?.instanz??r?.instanz??`Diese Instanz`,p=a.data?.stand,m=a.error?.message,h;t[3]!==a.isPending||t[4]!==f||t[5]!==p||t[6]!==m?(h=(0,k.jsx)(J,{name:f,stand:p,laedt:a.isPending,fehler:m}),t[3]=a.isPending,t[4]=f,t[5]=p,t[6]=m,t[7]=h):h=t[7];let g;t[8]!==r?.partner||t[9]!==o.data?.instanz||t[10]!==o.data?.stand||t[11]!==o.error?.message||t[12]!==o.isPending||t[13]!==i?(g=i&&(0,k.jsx)(J,{name:o.data?.instanz??r?.partner.name??`Partner`,stand:o.data?.stand,laedt:o.isPending,fehler:o.error?.message}),t[8]=r?.partner,t[9]=o.data?.instanz,t[10]=o.data?.stand,t[11]=o.error?.message,t[12]=o.isPending,t[13]=i,t[14]=g):g=t[14];let _;t[15]===d?_=t[16]:(_=d===!1&&(0,k.jsx)(L,{children:`Die beiden Instanzen laufen mit verschiedenen Ständen. Der nächste Deploy der Box zieht den Homelab-Teil mit.`}),t[15]=d,t[16]=_);let v;return t[17]!==h||t[18]!==g||t[19]!==_?(v=(0,k.jsxs)(F,{titel:`Instanzen`,children:[h,g,_]}),t[17]=h,t[18]=g,t[19]=_,t[20]=v):v=t[20],v}function Z(e){let t=(0,D.c)(52),{h:n}=e,r=u(),i=v(),[a,o]=(0,O.useState)(``),[s,c]=(0,O.useState)(!1),[l,f]=(0,O.useState)(null),p=n.arcane,m;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(m={hinterlegt:(0,k.jsx)(g,{art:`gruen`,children:`hinterlegt`}),umgebung:(0,k.jsx)(g,{art:`gruen`,children:`aus der Dienst-Einstellung`}),fehlt:(0,k.jsx)(g,{art:`bernstein`,children:`fehlt`})},t[0]=m):m=t[0];let h=m[p.schluessel],_;t[1]===p.url?_=t[2]:(_=p.url&&(0,k.jsxs)(`a`,{href:p.url,target:`_blank`,rel:`noopener`,className:`ml-auto inline-flex items-center gap-1 text-cyan hover:underline`,children:[`Arcane öffnen `,(0,k.jsx)(d,{className:`size-3.5`,"aria-hidden":!0})]}),t[1]=p.url,t[2]=_);let y;t[3]!==h||t[4]!==_?(y=(0,k.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-sm text-text-2`,children:[`API-Schlüssel `,h,_]}),t[3]=h,t[4]=_,t[5]=y):y=t[5];let b;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,k.jsx)(`p`,{className:`text-sm text-text-2`,children:`Mit Schlüssel sieht der Orchestrator, welche Docker-Images neuer sind. Anlegen in Arcane unter Einstellungen → API-Schlüssel; Lesen reicht, solange Docker-Updates nur als Probelauf laufen.`}),t[6]=b):b=t[6];let x;t[7]!==p.schluessel||t[8]!==r||t[9]!==a?(x=p.schluessel!==`umgebung`&&(0,k.jsxs)(`form`,{className:`flex gap-2`,onSubmit:e=>{e.preventDefault(),a.trim()&&r.mutate(a.trim(),{onSuccess:()=>o(``)})},children:[(0,k.jsx)(`label`,{htmlFor:`arcane-schluessel`,className:`sr-only`,children:`Arcane-API-Schlüssel`}),(0,k.jsxs)(`span`,{className:`relative min-w-0 flex-1`,children:[(0,k.jsx)(E,{className:`pointer-events-none absolute top-1/2 left-3 size-4 -translate-y-1/2 text-text-3`,"aria-hidden":!0}),(0,k.jsx)(`input`,{id:`arcane-schluessel`,type:`password`,autoComplete:`off`,value:a,onChange:e=>o(e.target.value),placeholder:p.schluessel===`hinterlegt`?`Neuen Schlüssel eintragen …`:`Schlüssel aus Arcane einfügen …`,className:`h-11 w-full rounded-lg border border-linie-stark bg-erhaben pr-3 pl-9 text-[15px] outline-none focus:border-lab`})]}),(0,k.jsx)(w,{type:`submit`,disabled:!a.trim()||r.isPending,children:r.isPending?`Prüft …`:`Prüfen und speichern`})]}),t[7]=p.schluessel,t[8]=r,t[9]=a,t[10]=x):x=t[10];let S;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,k.jsx)(`p`,{className:`text-xs text-text-3`,children:`Der Schlüssel wird vor dem Speichern an Arcane geprüft und nie wieder angezeigt. Er liegt nur im Homelab-Teil.`}),t[11]=S):S=t[11];let C;t[12]!==p.schluessel||t[13]!==s||t[14]!==r?(C=p.schluessel===`hinterlegt`&&(s?(0,k.jsxs)(`span`,{className:`flex flex-wrap gap-2`,children:[(0,k.jsx)(w,{variant:`gefahr`,size:`sm`,disabled:r.isPending,onClick:()=>{r.mutate(null),c(!1)},children:`Wirklich entfernen?`}),(0,k.jsx)(w,{variant:`ghost`,size:`sm`,onClick:()=>c(!1),children:`Nein`})]}):(0,k.jsx)(w,{variant:`ghost`,size:`sm`,className:`self-start`,onClick:()=>c(!0),children:`Schlüssel entfernen`})),t[12]=p.schluessel,t[13]=s,t[14]=r,t[15]=C):C=t[15];let T;t[16]!==y||t[17]!==x||t[18]!==C?(T=(0,k.jsxs)(F,{titel:`Arcane (Docker)`,children:[y,b,x,S,C]}),t[16]=y,t[17]=x,t[18]=C,t[19]=T):T=t[19];let A=p.echt?`Echt: „Jetzt updaten“ bei Arcane zieht neue Images und startet die Container neu.`:`Probelauf: Arcane zeigt nur, was es tun würde — kein Container wird angefasst.`,j=p.echt_quelle===`umgebung`?` Festgelegt in der Dienst-Einstellung (MC_ARCANE_ECHT).`:``,M;t[20]!==A||t[21]!==j?(M=(0,k.jsxs)(`p`,{className:`text-sm text-text-2`,children:[A,j]}),t[20]=A,t[21]=j,t[22]=M):M=t[22];let N=p.echt?`outline`:`default`,P=p.echt_quelle===`umgebung`||i.isPending||p.schluessel===`fehlt`,I;t[23]===p.echt?I=t[24]:(I=()=>f(!p.echt),t[23]=p.echt,t[24]=I);let L=i.isPending?`Schaltet …`:p.echt?`Zurück auf Probelauf`:`Echt schalten`,R;t[25]!==N||t[26]!==P||t[27]!==I||t[28]!==L?(R=(0,k.jsx)(w,{variant:N,size:`sm`,className:`self-start`,disabled:P,onClick:I,children:L}),t[25]=N,t[26]=P,t[27]=I,t[28]=L,t[29]=R):R=t[29];let z;t[30]===p.schluessel?z=t[31]:(z=p.schluessel===`fehlt`&&(0,k.jsx)(`p`,{className:`text-xs text-text-3`,children:`Erst den Schlüssel eintragen.`}),t[30]=p.schluessel,t[31]=z);let B=l!==null,V=l?`Docker-Updates echt ausführen?`:`Zurück auf Probelauf?`,H=l?`Ab jetzt zieht „Jetzt updaten“ bei Arcane neue Images und startet die betroffenen Container neu. Vorher wird ein Snapshot der VM angelegt, soweit möglich. Das lässt sich hier jederzeit zurückschalten.`:`Docker-Updates zeigen dann wieder nur, was Arcane tun würde.`,U=l?`Echt schalten`:`Probelauf`,W=!!l,G;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(G=()=>f(null),t[32]=G):G=t[32];let K;t[33]!==i||t[34]!==l?(K=()=>{l!==null&&(i.mutate(l),f(null))},t[33]=i,t[34]=l,t[35]=K):K=t[35];let q;t[36]!==i.isPending||t[37]!==B||t[38]!==V||t[39]!==H||t[40]!==U||t[41]!==W||t[42]!==K?(q=(0,k.jsx)(ee,{offen:B,titel:V,text:H,knopf:U,gefahr:W,gesperrt:i.isPending,onNein:G,onJa:K}),t[36]=i.isPending,t[37]=B,t[38]=V,t[39]=H,t[40]=U,t[41]=W,t[42]=K,t[43]=q):q=t[43];let J;t[44]!==M||t[45]!==R||t[46]!==z||t[47]!==q?(J=(0,k.jsxs)(F,{titel:`Docker-Updates`,children:[M,R,z,q]}),t[44]=M,t[45]=R,t[46]=z,t[47]=q,t[48]=J):J=t[48];let Y;return t[49]!==J||t[50]!==T?(Y=(0,k.jsxs)(k.Fragment,{children:[T,J]}),t[49]=J,t[50]=T,t[51]=Y):Y=t[51],Y}function te(e){let t=(0,D.c)(21),{h:n}=e,r=n.ausfuehrer,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,k.jsx)(`dt`,{className:`text-text-3`,children:`Ausführer`}),t[0]=i):i=t[0];let a=r.verbunden?`text-gruen-text`:`text-rot-text`,o=r.verbunden?`verbunden`:`meldet sich nicht`,s;t[1]===r.zuletzt?s=t[2]:(s=r.zuletzt?` · zuletzt ${S(new Date(r.zuletzt*1e3).toISOString()).toLowerCase()}`:``,t[1]=r.zuletzt,t[2]=s);let c;t[3]!==a||t[4]!==o||t[5]!==s?(c=(0,k.jsxs)(`dd`,{className:a,children:[o,s]}),t[3]=a,t[4]=o,t[5]=s,t[6]=c):c=t[6];let l;t[7]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,k.jsx)(`dt`,{className:`text-text-3`,children:`Modus`}),t[7]=l):l=t[7];let u=r.nur_lesen?`nur lesen — Updates sind gesperrt`:`voll: Snapshots, Sicherungen und Updates`,d;t[8]===u?d=t[9]:(d=(0,k.jsx)(`dd`,{className:`text-text-2`,children:u}),t[8]=u,t[9]=d);let f;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,k.jsx)(`dt`,{className:`text-text-3`,children:`Sicherungen`}),t[10]=f):f=t[10];let p=r.sicherung_speicher?`auf „${r.sicherung_speicher}“ (wo kein Snapshot geht)`:`kein Speicher gefunden`,m;t[11]===p?m=t[12]:(m=(0,k.jsx)(`dd`,{className:`text-text-2`,children:p}),t[11]=p,t[12]=m);let h;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(h=(0,k.jsx)(`dt`,{className:`text-text-3`,children:`Wartezeit`}),t[13]=h):h=t[13];let g=n.karenz_h>0?`${n.karenz_h} Stunden nach einer Änderung am Update-Skript einer App`:`aus`,_;t[14]===g?_=t[15]:(_=(0,k.jsx)(`dd`,{className:`text-text-2`,children:g}),t[14]=g,t[15]=_);let v;return t[16]!==m||t[17]!==_||t[18]!==c||t[19]!==d?(v=(0,k.jsx)(F,{titel:`Ausführer und Updates`,children:(0,k.jsxs)(`dl`,{className:`grid grid-cols-[auto_minmax(0,1fr)] gap-x-4 gap-y-2 text-sm`,children:[i,c,l,d,f,m,h,_]})}),t[16]=m,t[17]=_,t[18]=c,t[19]=d,t[20]=v):v=t[20],v}function ne(){let e=(0,D.c)(8),t=s().data,n=b().data,r=t?.rolle===`homelab`||!!(n?.eingerichtet&&n.erreichbar),i=f(r),a;if(!r){let t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,k.jsx)(`p`,{className:`text-sm text-text-2`,children:`Der Homelab-Teil antwortet gerade nicht.`}),e[0]=t):t=e[0],a=t}else if(i.data){let t;e[4]===i.data?t=e[5]:(t=(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(Z,{h:i.data}),(0,k.jsx)(te,{h:i.data})]}),e[4]=i.data,e[5]=t),a=t}else{let t=i.error?.message,n;e[1]!==i.isPending||e[2]!==t?(n=(0,k.jsx)(R,{laedt:i.isPending,fehler:t}),e[1]=i.isPending,e[2]=t,e[3]=n):n=e[3],a=n}let o;return e[6]===a?o=e[7]:(o=(0,k.jsx)(I,{titel:`Homelab`,farbe:`homelab`,text:`Arcane und Docker, der Ausführer auf dem Proxmox-Host, Rückwege.`,children:a}),e[6]=a,e[7]=o),o}function Q(){let e=(0,D.c)(17),t=l(!0),n=t.error?.message,r;e[0]!==t.data||e[1]!==t.isPending||e[2]!==n?(r={e:t.data,laedt:t.isPending,fehler:n},e[0]=t.data,e[1]=t.isPending,e[2]=n,e[3]=r):r=e[3];let i=r,a,o;e[4]===i?(a=e[5],o=e[6]):(a=(0,k.jsx)(W,{...i}),o=(0,k.jsx)(q,{...i}),e[4]=i,e[5]=a,e[6]=o);let s;e[7]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,k.jsx)(z,{offen:!0}),e[7]=s):s=e[7];let c;e[8]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,k.jsxs)(F,{titel:`Hermes`,children:[(0,k.jsxs)(`a`,{href:`/hermes-ui/`,target:`_blank`,rel:`noopener`,className:`flex h-11 items-center gap-2 self-start rounded-lg border border-linie-stark bg-erhaben px-4 text-[15px] hover:border-text-3`,children:[(0,k.jsx)(d,{className:`size-4`,"aria-hidden":!0}),` Hermes-Dashboard öffnen`]}),(0,k.jsx)(`p`,{className:`text-xs text-text-3`,children:`Chat, Sitzungen und Cron-Jobs verwaltet Hermes selbst. Es fragt nach seiner eigenen Anmeldung.`})]}),e[8]=c):c=e[8];let u;e[9]!==a||e[10]!==o?(u=(0,k.jsxs)(I,{titel:`KI-Box`,farbe:`box`,text:`Wann sie sich aktualisiert, das Modell-Radar und Zugänge.`,children:[a,o,s,c]}),e[9]=a,e[10]=o,e[11]=u):u=e[11];let f;e[12]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,k.jsx)(ne,{}),e[12]=f):f=e[12];let p;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,k.jsx)(I,{titel:`Meldungen`,text:`Telegram, Morgenmeldung und was sofort kommt.`,children:(0,k.jsx)(V,{})}),e[13]=p):p=e[13];let m;e[14]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,k.jsx)(I,{titel:`Software-Stand`,text:`Welcher Stand auf beiden Instanzen läuft.`,children:(0,k.jsx)(X,{offen:!0})}),e[14]=m):m=e[14];let h;return e[15]===u?h=e[16]:(h=(0,k.jsxs)(`div`,{className:`grid gap-5 md:gap-6 xl:grid-cols-2`,children:[u,f,p,m]}),e[15]=u,e[16]=h),h}export{Q as EinstellungenSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Homelab-BS3lis1u.js b/frontend/dist/assets/Homelab-BS3lis1u.js deleted file mode 100644 index fe753a0..0000000 --- a/frontend/dist/assets/Homelab-BS3lis1u.js +++ /dev/null @@ -1 +0,0 @@ -import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{t as a}from"./chevron-right-DzY92a1B.js";import{t as o}from"./search-_IbVYCuo.js";import{B as s,C as c,D as l,E as u,Gt as d,H as f,J as p,Jt as m,K as h,Kt as g,O as _,Ot as v,S as y,T as b,U as x,W as S,Wt as C,Yt as w,_ as T,_t as E,b as D,ct as O,f as k,i as A,p as j,st as ee,tt as te,u as M,v as N,w as ne,x as re,y as ie,yt as P}from"./index-COh3_SSc.js";import{t as F}from"./button-D8rvET0Z.js";import{t as I}from"./Bestaetigen-D8Dh5cqS.js";import{t as ae}from"./Lampe-gSQfYg4e.js";var L={name:`circle-dashed`,size:24,node:[[`path`,{d:`M10.1 2.182a10 10 0 0 1 3.8 0`,key:`5ilxe3`}],[`path`,{d:`M13.9 21.818a10 10 0 0 1-3.8 0`,key:`11zvb9`}],[`path`,{d:`M17.609 3.721a10 10 0 0 1 2.69 2.7`,key:`1iw5b2`}],[`path`,{d:`M2.182 13.9a10 10 0 0 1 0-3.8`,key:`c0bmvh`}],[`path`,{d:`M20.279 17.609a10 10 0 0 1-2.7 2.69`,key:`1ruxm7`}],[`path`,{d:`M21.818 10.1a10 10 0 0 1 0 3.8`,key:`qkgqxc`}],[`path`,{d:`M3.721 6.391a10 10 0 0 1 2.7-2.69`,key:`1mcia2`}],[`path`,{d:`M6.391 20.279a10 10 0 0 1-2.69-2.7`,key:`1fvljs`}]]};L.node;var oe=g(L),R={name:`circle-x`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]],aliases:[`x-circle`]};R.node;var se=g(R),z={name:`loader-circle`,size:24,node:[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]],aliases:[`loader-2`]};z.node;var ce=g(z),B={name:`skip-forward`,size:24,node:[[`path`,{d:`M21 4v16`,key:`7j8fe9`}],[`path`,{d:`M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z`,key:`zs4d6`}]]};B.node;var le=g(B),V={name:`undo-2`,size:24,node:[[`path`,{d:`M9 14 4 9l5-5`,key:`102s5s`}],[`path`,{d:`M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11`,key:`f3b9sd`}]]};V.node;var ue=g(V),H=t(),U=n(),W=`md:grid-cols-[minmax(0,1.3fr)_110px_minmax(0,1fr)_minmax(0,1.2fr)_minmax(0,1fr)_90px]`,G=e=>(e/1e9).toFixed(1).replace(`.`,`,`);function K(e){let t=(0,H.c)(17),{wert:n,gelb:r,rot:a,zusatz:o}=e;if(n==null){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,U.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}),t[0]=e):e=t[0],e}let s=n>=a?`var(--rot)`:n>=r?`var(--bernstein)`:`var(--reihe-1)`,c=n>=a?`text-rot-text`:n>=r?`text-bernstein`:`text-text-2`,l;t[1]===c?l=t[2]:(l=i(`ziffern text-sm`,c),t[1]=c,t[2]=l);let u;t[3]===n?u=t[4]:(u=Math.round(n),t[3]=n,t[4]=u);let d;t[5]===o?d=t[6]:(d=o&&(0,U.jsxs)(`span`,{className:`font-sans text-xs text-text-3`,children:[` · `,o]}),t[5]=o,t[6]=d);let f;t[7]!==l||t[8]!==u||t[9]!==d?(f=(0,U.jsxs)(`span`,{className:l,children:[u,` %`,d]}),t[7]=l,t[8]=u,t[9]=d,t[10]=f):f=t[10];let p=`${Math.min(100,Math.max(2,n))}%`,m;t[11]!==s||t[12]!==p?(m=(0,U.jsx)(`span`,{className:`h-1.5 w-full max-w-40 overflow-hidden rounded-full bg-erhaben`,"aria-hidden":!0,children:(0,U.jsx)(`span`,{className:`block h-full rounded-full`,style:{width:p,background:s}})}),t[11]=s,t[12]=p,t[13]=m):m=t[13];let h;return t[14]!==f||t[15]!==m?(h=(0,U.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-1`,children:[f,m]}),t[14]=f,t[15]=m,t[16]=h):h=t[16],h}function q(e){if(e.erreichbar===!1)return 0;let t=c(e);return t!==null&&t>=.8?1:e.art===`proxmox-host`?2:3}function de(e){let t=(0,H.c)(4),{ziele:n,messwerte:r}=e,a;if(t[0]!==r||t[1]!==n){let e=new Map((r??[]).map(pe)),o=[...n].sort(fe),s;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,U.jsxs)(`div`,{role:`row`,className:i(`schild hidden gap-x-4 pb-2 text-xs font-semibold text-text-3 md:grid`,W),children:[(0,U.jsx)(`span`,{role:`columnheader`,children:`Gerät`}),(0,U.jsx)(`span`,{role:`columnheader`,children:`Netz`}),(0,U.jsx)(`span`,{role:`columnheader`,children:`CPU`}),(0,U.jsx)(`span`,{role:`columnheader`,children:`Speicher`}),(0,U.jsx)(`span`,{role:`columnheader`,children:`Platte`}),(0,U.jsx)(`span`,{role:`columnheader`,children:`Läuft seit`})]}),t[3]=s):s=t[3],a=(0,U.jsxs)(`div`,{role:`table`,"aria-label":`Zustand der Geräte`,className:`flex flex-col`,children:[s,o.map(t=>{let n=e.get(t.id),r=n?.platte??(c(t)===null?null:c(t)*100),a=n?.ram_used&&n.ram_total?`${G(n.ram_used)} / ${G(n.ram_total)} GB`:void 0;return(0,U.jsxs)(`div`,{role:`row`,className:i(`grid grid-cols-2 gap-x-4 gap-y-2 border-t border-linie py-3 md:items-center`,W),children:[(0,U.jsxs)(`div`,{role:`rowheader`,className:`col-span-2 flex min-w-0 flex-col md:col-span-1`,children:[(0,U.jsx)(m,{to:`/homelab/monitoring`,hash:t.id,className:`text-[15px] font-semibold break-words hover:text-lab-text`,children:t.name}),N(t)!==t.name&&(0,U.jsx)(`span`,{className:`text-sm text-text-3`,children:N(t)})]}),(0,U.jsxs)(`span`,{role:`cell`,className:i(`schild flex items-center gap-1.5 text-xs`,t.erreichbar===!1?`text-rot-text`:`text-text-3`),children:[t.erreichbar!==null&&(0,U.jsx)(`span`,{"aria-hidden":!0,className:i(`size-2 rounded-full`,t.erreichbar?`bg-gruen`:`bg-rot`)}),t.erreichbar===null?`–`:t.erreichbar?`erreichbar`:`antwortet nicht`]}),(0,U.jsxs)(`span`,{role:`cell`,children:[(0,U.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`CPU `}),(0,U.jsx)(K,{wert:n?.cpu,gelb:85,rot:95})]}),(0,U.jsxs)(`span`,{role:`cell`,children:[(0,U.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`Speicher `}),(0,U.jsx)(K,{wert:n?.ram,gelb:85,rot:95,zusatz:a})]}),(0,U.jsxs)(`span`,{role:`cell`,children:[(0,U.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`Platte `}),(0,U.jsx)(K,{wert:r,gelb:80,rot:90})]}),(0,U.jsxs)(`span`,{role:`cell`,className:`ziffern text-sm text-text-2`,children:[(0,U.jsx)(`span`,{className:`font-sans text-xs text-text-3 md:hidden`,children:`Läuft seit `}),A(n?.uptime_s)]})]},t.id)})]}),t[0]=r,t[1]=n,t[2]=a}else a=t[2];return a}function fe(e,t){return q(e)-q(t)}function pe(e){return[e.id,e.aktuell]}function me(e){let t=(0,H.c)(24),{lage:n,lampen:r,onAnsehen:a}=e,o=n.ziel!==null,s=!o,c=`${n.oben} ${n.mitte}`,l=v[n.art],u=o?`cursor-pointer`:`cursor-default`,d;t[0]!==l||t[1]!==u?(d=i(`flex min-h-[130px] flex-col items-center justify-center gap-1 rounded-2xl border px-4 py-4 font-anzeige transition-colors`,l,u),t[0]=l,t[1]=u,t[2]=d):d=t[2];let f;t[3]===n.oben?f=t[4]:(f=(0,U.jsx)(`span`,{className:`schild text-sm tracking-[0.26em]`,children:n.oben}),t[3]=n.oben,t[4]=f);let p;t[5]===n.mitte?p=t[6]:(p=(0,U.jsx)(`span`,{className:`text-center text-[34px] leading-none font-bold tracking-[0.04em] sm:text-[38px]`,children:n.mitte}),t[5]=n.mitte,t[6]=p);let m;t[7]===n.unten?m=t[8]:(m=(0,U.jsx)(`span`,{className:`font-sans text-sm opacity-80`,children:n.unten}),t[7]=n.unten,t[8]=m);let h;t[9]!==a||t[10]!==s||t[11]!==c||t[12]!==d||t[13]!==f||t[14]!==p||t[15]!==m?(h=(0,U.jsxs)(`button`,{type:`button`,onClick:a,disabled:s,"aria-label":c,className:d,children:[f,p,m]}),t[9]=a,t[10]=s,t[11]=c,t[12]=d,t[13]=f,t[14]=p,t[15]=m,t[16]=h):h=t[16];let g;t[17]===r?g=t[18]:(g=r.map(he),t[17]=r,t[18]=g);let _;t[19]===g?_=t[20]:(_=(0,U.jsx)(`ul`,{"aria-label":`Geräte`,className:`grid grid-cols-2 gap-2.5 rounded-2xl border border-linie bg-panel p-3 sm:grid-cols-4`,children:g}),t[19]=g,t[20]=_);let y;return t[21]!==_||t[22]!==h?(y=(0,U.jsxs)(`section`,{"aria-label":`Lage im Homelab`,className:`grid gap-4 md:grid-cols-[260px_minmax(0,1fr)] md:gap-5`,children:[h,_]}),t[21]=_,t[22]=h,t[23]=y):y=t[23],y}function he(e){return(0,U.jsx)(ae,{lampe:e},e.id)}var J=(e,t=1)=>e.toFixed(t).replace(`.`,`,`);function Y(e){return e==null?`–`:e>=0xe8d4a51000?`${J(e/0xe8d4a51000)} TB`:e>=1e10?`${Math.round(e/1e9)} GB`:`${J(e/1e9)} GB`}function ge(e){return e?/^\s*\d{1,2}:\d{2}\s*$/.test(e)?`täglich ${e.trim()}`:`Zeitplan „${e}“`:`ohne Zeitplan`}function _e(e){return e.jobs.length===0?`Kein Sicherungsauftrag in Proxmox`:e.jobs.map(e=>`${ge(e.zeitplan)} auf ${e.speicher??`?`}`).join(`, `)}var X={ok:`in Ordnung`,gelb:`wird knapp`,rot:`fast voll`},Z={ok:`gruen`,gelb:`bernstein`,rot:`rot`,keine:`grau`},ve={ok:`var(--reihe-1)`,gelb:`var(--bernstein)`,rot:`var(--rot)`},ye=e=>P(new Date(e*1e3).toISOString());function be(e){let t=(0,H.c)(11),{anteil:n,stufe:r,name:i}=e,a;t[0]===n?a=t[1]:(a=Math.round(n*100),t[0]=n,t[1]=a);let o=a,s=`${i}: ${o} % belegt`,c=`${Math.min(100,Math.max(2,o))}%`,l=ve[r],u;t[2]!==c||t[3]!==l?(u=(0,U.jsx)(`span`,{className:`block h-full rounded-full`,style:{width:c,background:l}}),t[2]=c,t[3]=l,t[4]=u):u=t[4];let d,f;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,U.jsx)(`span`,{"aria-hidden":!0,className:`absolute inset-y-0 left-[80%] w-px bg-bernstein/70`}),f=(0,U.jsx)(`span`,{"aria-hidden":!0,className:`absolute inset-y-0 left-[90%] w-px bg-rot/80`}),t[5]=d,t[6]=f):(d=t[5],f=t[6]);let p;return t[7]!==o||t[8]!==s||t[9]!==u?(p=(0,U.jsxs)(`div`,{role:`meter`,"aria-label":s,"aria-valuenow":o,"aria-valuemin":0,"aria-valuemax":100,className:`relative h-2 w-full overflow-hidden rounded-full bg-erhaben`,children:[u,d,f]}),t[7]=o,t[8]=s,t[9]=u,t[10]=p):p=t[10],p}function Q(e){let t=(0,H.c)(16),{titel:n,unter:r,chip:i,chipText:a,children:o}=e,s;t[0]===n?s=t[1]:(s=(0,U.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:n}),t[0]=n,t[1]=s);let c;t[2]===r?c=t[3]:(c=r&&(0,U.jsx)(`span`,{className:`text-sm break-words text-text-3`,children:r}),t[2]=r,t[3]=c);let l;t[4]!==s||t[5]!==c?(l=(0,U.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[s,c]}),t[4]=s,t[5]=c,t[6]=l):l=t[6];let u;t[7]!==i||t[8]!==a?(u=(0,U.jsx)(k,{art:i,children:a}),t[7]=i,t[8]=a,t[9]=u):u=t[9];let d;t[10]!==l||t[11]!==u?(d=(0,U.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[l,u]}),t[10]=l,t[11]=u,t[12]=d):d=t[12];let f;return t[13]!==o||t[14]!==d?(f=(0,U.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-3 rounded-xl border border-linie bg-erhaben/40 p-4`,children:[d,o]}),t[13]=o,t[14]=d,t[15]=f):f=t[15],f}function xe(e){let t=(0,H.c)(31),{p:n}=e,r;t[0]===n.anteil?r=t[1]:(r=Math.round(n.anteil*100),t[0]=n.anteil,t[1]=r);let a=r,o=`Speicherpool ${n.speicher}`,s=Z[n.stufe],c=X[n.stufe],l=Math.max(n.anteil,n.meta_anteil??0),u=`Speicherpool ${n.speicher}`,d;t[2]!==n.stufe||t[3]!==l||t[4]!==u?(d=(0,U.jsx)(be,{anteil:l,stufe:n.stufe,name:u}),t[2]=n.stufe,t[3]=l,t[4]=u,t[5]=d):d=t[5];let f;t[6]===n.belegt?f=t[7]:(f=Y(n.belegt),t[6]=n.belegt,t[7]=f);let p;t[8]===n.gesamt?p=t[9]:(p=Y(n.gesamt),t[8]=n.gesamt,t[9]=p);let m=n.stufe!==`ok`&&`text-foreground`,h;t[10]===m?h=t[11]:(h=i(m),t[10]=m,t[11]=h);let g;t[12]===n.frei?g=t[13]:(g=Y(n.frei),t[12]=n.frei,t[13]=g);let _;t[14]!==h||t[15]!==g?(_=(0,U.jsxs)(`span`,{className:h,children:[g,` frei`]}),t[14]=h,t[15]=g,t[16]=_):_=t[16];let v;t[17]!==a||t[18]!==_||t[19]!==f||t[20]!==p?(v=(0,U.jsxs)(`p`,{className:`ziffern text-sm text-text-2`,children:[a,` % · `,f,` von `,p,` · `,_]}),t[17]=a,t[18]=_,t[19]=f,t[20]=p,t[21]=v):v=t[21];let y;t[22]===n.meta_anteil?y=t[23]:(y=n.meta_anteil!==null&&(0,U.jsxs)(`p`,{className:`text-xs text-text-3`,children:[`Metadaten `,Math.round(n.meta_anteil*100),` % belegt`]}),t[22]=n.meta_anteil,t[23]=y);let b;return t[24]!==v||t[25]!==y||t[26]!==o||t[27]!==s||t[28]!==c||t[29]!==d?(b=(0,U.jsxs)(Q,{titel:o,unter:`Platten der Container und VMs`,chip:s,chipText:c,children:[d,v,y]}),t[24]=v,t[25]=y,t[26]=o,t[27]=s,t[28]=c,t[29]=d,t[30]=b):b=t[30],b}function Se(e){let t=(0,H.c)(21),{n}=e,r=n.problem?n.stufe===`rot`?`gestört`:`unklar`:X[n.stufe],a=`NAS ${n.server??``}`,o;t[0]===a?o=t[1]:(o=a.trim(),t[0]=a,t[1]=o);let s;t[2]===n.art?s=t[3]:(s=n.art.toUpperCase(),t[2]=n.art,t[3]=s);let c=`${s} · ${n.quelle??`?`} → ${n.ziel}`,l=Z[n.stufe],u;t[4]!==n.anteil||t[5]!==n.belegt||t[6]!==n.gesamt||t[7]!==n.problem||t[8]!==n.server||t[9]!==n.stufe?(u=n.problem?(0,U.jsx)(`p`,{className:i(`text-sm`,n.stufe===`rot`?`text-rot-text`:`text-bernstein`),children:n.problem}):n.anteil!==null&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(be,{anteil:n.anteil,stufe:n.stufe,name:`NAS ${n.server??``}`}),(0,U.jsxs)(`p`,{className:`ziffern text-sm text-text-2`,children:[Math.round(n.anteil*100),` % · `,Y(n.belegt),` von `,Y(n.gesamt),` · `,Y((n.gesamt??0)-(n.belegt??0)),` frei`]})]}),t[4]=n.anteil,t[5]=n.belegt,t[6]=n.gesamt,t[7]=n.problem,t[8]=n.server,t[9]=n.stufe,t[10]=u):u=t[10];let d=n.erreichbar===!1?`antwortet nicht`:`antwortet`,f=n.eingebunden?`auf dem Proxmox-Host eingebunden`:`nicht eingebunden`,p;t[11]!==d||t[12]!==f?(p=(0,U.jsxs)(`p`,{className:`text-xs text-text-3`,children:[d,` · `,f]}),t[11]=d,t[12]=f,t[13]=p):p=t[13];let m;return t[14]!==r||t[15]!==o||t[16]!==c||t[17]!==l||t[18]!==u||t[19]!==p?(m=(0,U.jsxs)(Q,{titel:o,unter:c,chip:l,chipText:r,children:[u,p]}),t[14]=r,t[15]=o,t[16]=c,t[17]=l,t[18]=u,t[19]=p,t[20]=m):m=t[20],m}function Ce(e){let t=(0,H.c)(18),{s:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={ok:`aktuell`,gelb:`Lücke`,rot:`gestört`,keine:`kein Auftrag`},t[0]=r):r=t[0];let i=r[n.stufe],a;t[1]===n?a=t[2]:(a=_e(n),t[1]=n,t[2]=a);let o=Z[n.stufe],s;t[3]===n.probleme?s=t[4]:(s=n.probleme.map(Te),t[3]=n.probleme,t[4]=s);let c;t[5]!==n.erfasst||t[6]!==n.stufe||t[7]!==n.zuletzt?(c=n.stufe===`ok`&&(0,U.jsxs)(`p`,{className:`text-sm text-text-2`,children:[`Alle `,n.erfasst,` Geräte gesichert`,n.zuletzt?(0,U.jsxs)(U.Fragment,{children:[`, zuletzt `,(0,U.jsx)(`span`,{className:`ziffern`,children:ye(n.zuletzt)})]}):null,`.`]}),t[5]=n.erfasst,t[6]=n.stufe,t[7]=n.zuletzt,t[8]=c):c=t[8];let l;t[9]===n.fehlend?l=t[10]:(l=n.fehlend.length>0&&(0,U.jsx)(`ul`,{className:`flex flex-col gap-1 text-sm`,children:n.fehlend.map(we)}),t[9]=n.fehlend,t[10]=l);let u;return t[11]!==i||t[12]!==a||t[13]!==o||t[14]!==s||t[15]!==c||t[16]!==l?(u=(0,U.jsxs)(Q,{titel:`Sicherungen`,unter:a,chip:o,chipText:i,children:[s,c,l]}),t[11]=i,t[12]=a,t[13]=o,t[14]=s,t[15]=c,t[16]=l,t[17]=u):u=t[17],u}function we(e){return(0,U.jsxs)(`li`,{className:`text-bernstein`,children:[e.name,`: `,e.zuletzt?(0,U.jsxs)(U.Fragment,{children:[`zuletzt `,(0,U.jsx)(`span`,{className:`ziffern`,children:ye(e.zuletzt)})]}):`noch nie gesichert`]},e.ziel)}function Te(e){return(0,U.jsx)(`p`,{className:`text-sm text-rot-text`,children:e},e)}function Ee(e){let t=(0,H.c)(18),{daten:n}=e,r;t[0]===n.pools?r=t[1]:(r=n.pools.some(je),t[0]=n.pools,t[1]=r);let i=r,o;if(t[2]!==n.empfehlungen||t[3]!==n.nas||t[4]!==n.pools||t[5]!==n.sicherungen||t[6]!==i){let e=n.empfehlungen.reduce(Ae,0),r;t[8]===n.pools?r=t[9]:(r=n.pools.map(ke),t[8]=n.pools,t[9]=r);let s;t[10]===n.nas?s=t[11]:(s=n.nas.length>0?n.nas.map(Oe):(0,U.jsx)(Q,{titel:`NAS`,chip:`grau`,chipText:`keins`,children:(0,U.jsx)(`p`,{className:`text-sm text-text-3`,children:`Auf dem Proxmox-Host ist kein Netzlaufwerk eingebunden.`})}),t[10]=n.nas,t[11]=s);let c;t[12]===n.sicherungen?c=t[13]:(c=(0,U.jsx)(Ce,{s:n.sicherungen}),t[12]=n.sicherungen,t[13]=c);let l;t[14]!==r||t[15]!==s||t[16]!==c?(l=(0,U.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-3`,children:[r,s,c]}),t[14]=r,t[15]=s,t[16]=c,t[17]=l):l=t[17],o=(0,U.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[l,n.empfehlungen.length>0&&(0,U.jsxs)(`details`,{open:i,className:`group rounded-xl border border-linie bg-erhaben/40 px-4 open:pb-3`,children:[(0,U.jsxs)(`summary`,{className:`flex min-h-12 cursor-pointer list-none items-center justify-between gap-3 [&::-webkit-details-marker]:hidden`,children:[(0,U.jsxs)(`span`,{className:`flex items-center gap-2 text-[15px] font-medium`,children:[(0,U.jsx)(a,{className:`size-4 text-text-3 transition-transform group-open:rotate-90`,"aria-hidden":!0}),`Was im Speicherpool Platz bringt`]}),(0,U.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[n.empfehlungen.length,` `,n.empfehlungen.length===1?`Vorschlag`:`Vorschläge`,e>0&&` · bis zu ${Y(e)}`]})]}),(0,U.jsx)(`ol`,{className:`flex flex-col`,children:n.empfehlungen.map(De)})]})]}),t[2]=n.empfehlungen,t[3]=n.nas,t[4]=n.pools,t[5]=n.sicherungen,t[6]=i,t[7]=o}else o=t[7];return o}function De(e){return(0,U.jsxs)(`li`,{className:`flex flex-col gap-1 border-t border-linie py-3 first:border-t-0 first:pt-1`,children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1`,children:[(0,U.jsx)(`span`,{className:`text-[15px] font-medium break-words`,children:e.titel}),(0,U.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:e.platz?`≈ ${Y(e.platz)}`:`Größe unbekannt`})]}),(0,U.jsx)(`p`,{className:`text-sm break-words text-text-2`,children:e.text})]},e.titel)}function Oe(e){return(0,U.jsx)(Se,{n:e},e.ziel)}function ke(e){return(0,U.jsx)(xe,{p:e},e.speicher)}function Ae(e,t){return e+(t.platz??0)}function je(e){return e.stufe!==`ok`}var Me=r(e(),1),Ne={snapshot:`Snapshot`,sicherung:`Sicherung`,keiner:`kein Rückweg`};function Pe(e){let t=(0,H.c)(24),{anzahl:n,gesperrt:r}=e,[i,a]=(0,Me.useState)(!1),o=ee(i),s=_(),c;t[0]===o.data?.schritte?c=t[1]:(c=o.data?.schritte??[],t[0]=o.data?.schritte,t[1]=c);let l=c,u=r||n===0||s.isPending,d;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(d=()=>a(!0),t[2]=d):d=t[2];let f=n>0?` (${n})`:``,p;t[3]!==u||t[4]!==f?(p=(0,U.jsxs)(F,{disabled:u,onClick:d,children:[`Alle aktualisieren`,f]}),t[3]=u,t[4]=f,t[5]=p):p=t[5];let m=l.length?`${l.length} Updates starten`:`Starten`,h=s.isPending||o.isPending||l.length===0,g;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(g=()=>a(!1),t[6]=g):g=t[6];let v;t[7]!==i||t[8]!==s?(v=()=>{i&&(s.mutate(void 0),a(!1))},t[7]=i,t[8]=s,t[9]=v):v=t[9];let y;t[10]!==o.data||t[11]!==o.error||t[12]!==o.isPending||t[13]!==l?(y=o.isPending?(0,U.jsx)(`p`,{className:`text-sm text-text-2`,children:`Die Reihenfolge wird gelesen …`}):o.error?(0,U.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Der Plan lässt sich nicht lesen: `,o.error.message]}):(0,U.jsxs)(`div`,{className:`flex flex-col gap-2 pb-1`,children:[(0,U.jsx)(`ol`,{className:`m-0 flex list-none flex-col gap-1 p-0`,children:l.map(Fe)}),o.data?.hinweis&&(0,U.jsx)(`p`,{className:`text-xs text-bernstein`,children:o.data.hinweis})]}),t[10]=o.data,t[11]=o.error,t[12]=o.isPending,t[13]=l,t[14]=y):y=t[14];let b;t[15]!==i||t[16]!==y||t[17]!==m||t[18]!==h||t[19]!==v?(b=(0,U.jsx)(I,{offen:i,titel:`Alle Homelab-Updates einspielen?`,text:`Die Updates laufen nacheinander, jedes mit Rückweg und Prüfung. Ist eine Prüfung rot, geht dieser Schritt von selbst zurück und der Rest bleibt stehen. AdGuard und NPMplus kommen zuletzt, der Proxmox-Host ganz am Ende; neu gestartet wird er nicht.`,knopf:m,gesperrt:h,onNein:g,onJa:v,children:y}),t[15]=i,t[16]=y,t[17]=m,t[18]=h,t[19]=v,t[20]=b):b=t[20];let x;return t[21]!==b||t[22]!==p?(x=(0,U.jsxs)(U.Fragment,{children:[p,b]}),t[21]=b,t[22]=p,t[23]=x):x=t[23],x}function Fe(e,t){return(0,U.jsxs)(`li`,{className:`grid grid-cols-[1.5rem_minmax(0,1fr)_auto] items-baseline gap-2 text-sm`,children:[(0,U.jsxs)(`span`,{className:`ziffern text-text-3`,children:[t+1,`.`]}),(0,U.jsxs)(`span`,{className:`min-w-0`,children:[(0,U.jsx)(`span`,{className:`font-medium text-foreground`,children:e.name}),` `,(0,U.jsxs)(`span`,{className:`text-text-2`,children:[`· `,e.was]})]}),(0,U.jsx)(`span`,{className:i(`text-xs`,e.rueckweg_art===`keiner`?`text-bernstein`:`text-text-3`),children:Ne[e.rueckweg_art]})]},`${e.ziel}-${e.baustein}`)}var Ie={wartet:{Symbol:oe,farbe:`text-text-3`,text:`wartet`},laeuft:{Symbol:ce,farbe:`text-cyan`,text:`läuft`},eingespielt:{Symbol:C,farbe:`text-gruen`,text:`eingespielt`},zurueckgerollt:{Symbol:ue,farbe:`text-bernstein`,text:`zurückgerollt`},fehler:{Symbol:se,farbe:`text-rot`,text:`Fehler`},uebersprungen:{Symbol:le,farbe:`text-text-3`,text:`übersprungen`}},Le={laeuft:{art:`cyan`,text:`läuft`},fertig:{art:`gruen`,text:`fertig`},abgebrochen:{art:`bernstein`,text:`abgebrochen`}};function Re(e){let t=(0,H.c)(31),{lauf:n}=e,r;t[0]===n.schritte?r=t[1]:(r=n.schritte.filter(Be),t[0]=n.schritte,t[1]=r);let i=r.length,a=Le[n.status],o;t[2]!==i||t[3]!==n.schritte.length?(o=(0,U.jsxs)(`span`,{className:`schild text-sm tracking-[0.18em] text-cyan`,children:[`Alle aktualisieren · `,i,` von `,n.schritte.length]}),t[2]=i,t[3]=n.schritte.length,t[4]=o):o=t[4];let s;t[5]===n.start?s=t[6]:(s=P(new Date(n.start*1e3).toISOString()),t[5]=n.start,t[6]=s);let c;t[7]===s?c=t[8]:(c=(0,U.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:s}),t[7]=s,t[8]=c);let l;t[9]!==a.art||t[10]!==a.text?(l=(0,U.jsx)(k,{art:a.art,children:a.text}),t[9]=a.art,t[10]=a.text,t[11]=l):l=t[11];let u;t[12]!==c||t[13]!==l?(u=(0,U.jsxs)(`span`,{className:`flex items-center gap-2`,children:[c,l]}),t[12]=c,t[13]=l,t[14]=u):u=t[14];let d;t[15]!==o||t[16]!==u?(d=(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[o,u]}),t[15]=o,t[16]=u,t[17]=d):d=t[17];let f=`${i/Math.max(1,n.schritte.length)*100}%`,p;t[18]===f?p=t[19]:(p=(0,U.jsx)(`div`,{className:`h-1.5 overflow-hidden rounded-full bg-erhaben`,"aria-hidden":!0,children:(0,U.jsx)(`div`,{className:`h-full rounded-full bg-cyan transition-all`,style:{width:f}})}),t[18]=f,t[19]=p);let m;t[20]===n.schritte?m=t[21]:(m=n.schritte.map(ze),t[20]=n.schritte,t[21]=m);let h;t[22]===m?h=t[23]:(h=(0,U.jsx)(`ol`,{className:`m-0 grid list-none gap-x-6 gap-y-1.5 p-0 sm:grid-cols-2`,children:m}),t[22]=m,t[23]=h);let g;t[24]===n.text?g=t[25]:(g=n.text&&(0,U.jsx)(`p`,{className:`text-sm text-text-2`,children:n.text}),t[24]=n.text,t[25]=g);let _;return t[26]!==h||t[27]!==g||t[28]!==d||t[29]!==p?(_=(0,U.jsxs)(`section`,{"aria-label":`Alle aktualisieren`,className:`flex flex-col gap-3 rounded-xl border border-cyan-rand/60 bg-cyan-grund/40 p-4`,children:[d,p,h,g]}),t[26]=h,t[27]=g,t[28]=d,t[29]=p,t[30]=_):_=t[30],_}function ze(e){let t=Ie[e.status];return(0,U.jsxs)(`li`,{className:`flex items-start gap-2 text-sm`,children:[(0,U.jsx)(t.Symbol,{className:i(`mt-0.5 size-4 shrink-0`,t.farbe,e.status===`laeuft`&&`motion-safe:animate-spin`),"aria-hidden":!0}),(0,U.jsxs)(`span`,{className:`min-w-0`,children:[(0,U.jsx)(`span`,{className:`text-foreground`,children:e.name}),` `,(0,U.jsxs)(`span`,{className:`text-text-3`,children:[`· `,e.was,` · `,t.text]}),e.text&&e.status!==`eingespielt`&&(0,U.jsx)(`span`,{className:`block text-xs text-text-3`,children:e.text})]})]},`${e.ziel}-${e.baustein}`)}function Be(e){return![`wartet`,`laeuft`].includes(e.status)}var Ve=`md:grid-cols-[minmax(0,1.1fr)_minmax(0,1.3fr)_minmax(0,1fr)_minmax(0,0.9fr)_11.5rem]`;function He(e){let t=(0,H.c)(26),{ziel:n,b:r}=e;if(!r){let e=n.art===`proxmox-host`?b(n)?.installiert:null,r;return t[0]===e?r=t[1]:(r=e?(0,U.jsxs)(`span`,{className:`ziffern text-sm`,children:[`PVE `,e]}):(0,U.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}),t[0]=e,t[1]=r),r}let i;t[2]===r.installiert?i=t[3]:(i=r.installiert?l(r.installiert):`–`,t[2]=r.installiert,t[3]=i);let a=i,o=r.zustand===`aktuell`?`text-foreground`:`text-text-2`,s;t[4]!==a||t[5]!==o?(s=(0,U.jsx)(`span`,{className:o,children:a}),t[4]=a,t[5]=o,t[6]=s):s=t[6];let c;t[7]!==r.verfuegbar||t[8]!==r.zustand?(c=r.zustand===`neu`&&r.verfuegbar&&(0,U.jsxs)(`span`,{className:`text-cyan`,children:[`→ `,r.verfuegbar]}),t[7]=r.verfuegbar,t[8]=r.zustand,t[9]=c):c=t[9];let u;t[10]===r.zustand?u=t[11]:(u=r.zustand===`aktuell`&&(0,U.jsx)(`span`,{className:`font-sans text-xs text-gruen-text`,children:`aktuell`}),t[10]=r.zustand,t[11]=u);let d;t[12]===r.zustand?d=t[13]:(d=r.zustand===`unbekannt`&&(0,U.jsx)(`span`,{className:`font-sans text-xs text-text-3`,children:`unklar`}),t[12]=r.zustand,t[13]=d);let f;t[14]!==s||t[15]!==c||t[16]!==u||t[17]!==d?(f=(0,U.jsxs)(`span`,{className:`ziffern flex flex-wrap items-baseline gap-x-2 text-sm`,children:[s,c,u,d]}),t[14]=s,t[15]=c,t[16]=u,t[17]=d,t[18]=f):f=t[18];let p;t[19]!==r.aktion||t[20]!==r.grund||t[21]!==r.zustand?(p=r.zustand===`neu`&&!r.aktion&&r.grund&&(0,U.jsx)(`span`,{className:`text-xs text-text-3`,children:r.grund}),t[19]=r.aktion,t[20]=r.grund,t[21]=r.zustand,t[22]=p):p=t[22];let m;return t[23]!==f||t[24]!==p?(m=(0,U.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-0.5`,children:[f,p]}),t[23]=f,t[24]=p,t[25]=m):m=t[25],m}function Ue(e){let t=(0,H.c)(22),{b:n,onSuchen:r,gesperrt:i}=e;if(!n){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,U.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}),t[0]=e):e=t[0],e}let a=n.id===`docker`,s;if(n.zustand===`neu`){let e=n.kurz||`Update bereit`,r;t[1]===e?r=t[2]:(r=(0,U.jsx)(`span`,{className:`text-cyan`,children:e}),t[1]=e,t[2]=r),s=r}else if(n.zustand===`aktuell`){let e=a?`Images aktuell`:`aktuell`,n;t[3]===e?n=t[4]:(n=(0,U.jsx)(`span`,{className:`text-gruen-text`,children:e}),t[3]=e,t[4]=n),s=n}else{let e;t[5]===n.grund?e=t[6]:(e=re(n.grund),t[5]=n.grund,t[6]=e);let r=e,i=n.grund??void 0,o=a?`Images unklar`:`unklar`,c;t[7]===r?c=t[8]:(c=r&&(0,U.jsxs)(`span`,{className:`text-text-3`,children:[` · Listen vom `,r]}),t[7]=r,t[8]=c);let l;t[9]!==i||t[10]!==o||t[11]!==c?(l=(0,U.jsxs)(`span`,{className:`text-text-2`,title:i,children:[o,c]}),t[9]=i,t[10]=o,t[11]=c,t[12]=l):l=t[12],s=l}let c=n.zustand===`unbekannt`?n.aktion:null,l;t[13]===s?l=t[14]:(l=(0,U.jsx)(`span`,{className:`min-w-0`,children:s}),t[13]=s,t[14]=l);let u;t[15]!==i||t[16]!==r||t[17]!==c?(u=c&&(0,U.jsx)(F,{variant:`ghost`,size:`icon-sm`,className:`-my-2 shrink-0`,"aria-label":c.label,title:c.label,disabled:i,onClick:()=>r(c),children:(0,U.jsx)(o,{})}),t[15]=i,t[16]=r,t[17]=c,t[18]=u):u=t[18];let d;return t[19]!==l||t[20]!==u?(d=(0,U.jsxs)(`span`,{className:`flex items-center gap-1 text-sm`,children:[l,u]}),t[19]=l,t[20]=u,t[21]=d):d=t[21],d}var We={app:`App updaten`,os:`Pakete einspielen`,pakete:`Pakete einspielen`};function Ge(e){let t=(0,H.c)(54),{ziel:n,laeuft:r,gesperrt:a,onFrage:o}=e,s;t[0]===n?s=t[1]:(s=T(n),t[0]=n,t[1]=s);let c=s,l;t[2]===n?l=t[3]:(l=b(n),t[2]=n,t[3]=l);let d=l,f,p,m,h,g,_,v,y,x;if(t[4]!==c||t[5]!==a||t[6]!==r||t[7]!==o||t[8]!==d||t[9]!==n){let e=n.bausteine.filter(Ke),s=u(n)>=2;_=`row`;let l=s&&`opacity-75`;t[19]===l?v=t[20]:(v=i(`grid grid-cols-1 gap-x-4 gap-y-2 border-t border-linie py-3.5 md:items-center`,Ve,l),t[19]=l,t[20]=v);let b;t[21]===n.name?b=t[22]:(b=(0,U.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:n.name}),t[21]=n.name,t[22]=b);let S;t[23]===n?S=t[24]:(S=N(n)!==n.name&&(0,U.jsx)(`span`,{className:`text-sm text-text-3`,children:N(n)}),t[23]=n,t[24]=S),t[25]!==b||t[26]!==S?(y=(0,U.jsxs)(`div`,{role:`rowheader`,className:`flex min-w-0 flex-col`,children:[b,S]}),t[25]=b,t[26]=S,t[27]=y):y=t[27];let C;t[28]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,U.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`App `}),t[28]=C):C=t[28],t[29]!==c||t[30]!==n?(x=(0,U.jsxs)(`span`,{role:`cell`,className:`min-w-0`,children:[C,(0,U.jsx)(He,{ziel:n,b:c})]}),t[29]=c,t[30]=n,t[31]=x):x=t[31];let w;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,U.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`Pakete `}),t[32]=w):w=t[32];let T=a||!!r,E;t[33]!==o||t[34]!==n?(E=e=>o({ziel:n,aktion:e}),t[33]=o,t[34]=n,t[35]=E):E=t[35],t[36]!==d||t[37]!==T||t[38]!==E?(f=(0,U.jsxs)(`span`,{role:`cell`,className:`min-w-0`,children:[w,(0,U.jsx)(Ue,{b:d,gesperrt:T,onSuchen:E})]}),t[36]=d,t[37]=T,t[38]=E,t[39]=f):f=t[39];let D=e.length?ne(n):``;t[40]===D?p=t[41]:(p=(0,U.jsx)(`span`,{role:`cell`,className:`text-sm text-text-3`,children:D}),t[40]=D,t[41]=p),m=`cell`,h=`flex flex-wrap gap-2 md:flex-col md:items-stretch`,g=r?(0,U.jsxs)(`span`,{role:`status`,className:`text-sm text-cyan`,children:[`Läuft: `,r]}):e.map(e=>(0,U.jsx)(F,{variant:`outline`,size:`sm`,disabled:a,onClick:()=>e.aktion&&o({ziel:n,aktion:e.aktion}),children:We[e.id]??e.aktion?.label??`Updaten`},e.id)),t[4]=c,t[5]=a,t[6]=r,t[7]=o,t[8]=d,t[9]=n,t[10]=f,t[11]=p,t[12]=m,t[13]=h,t[14]=g,t[15]=_,t[16]=v,t[17]=y,t[18]=x}else f=t[10],p=t[11],m=t[12],h=t[13],g=t[14],_=t[15],v=t[16],y=t[17],x=t[18];let S;t[42]!==m||t[43]!==h||t[44]!==g?(S=(0,U.jsx)(`span`,{role:m,className:h,children:g}),t[42]=m,t[43]=h,t[44]=g,t[45]=S):S=t[45];let C;return t[46]!==f||t[47]!==p||t[48]!==S||t[49]!==_||t[50]!==v||t[51]!==y||t[52]!==x?(C=(0,U.jsxs)(`div`,{role:_,className:v,children:[y,x,f,p,S]}),t[46]=f,t[47]=p,t[48]=S,t[49]=_,t[50]=v,t[51]=y,t[52]=x,t[53]=C):C=t[53],C}function Ke(e){return e.zustand===`neu`&&e.aktion}function qe(e){let t=(0,H.c)(42),{ziele:n,laufend:r,gesperrt:a,onAktion:o}=e,[s,c]=(0,Me.useState)(null),l,u,d,f,p,m;if(t[0]!==a||t[1]!==r||t[2]!==n){let e=[...n].sort(Ye),o;t[9]===n?o=t[10]:(o=n.filter(Je),t[9]=n,t[10]=o),l=o.length,u=`table`,d=`Updates je Gerät`,f=`flex flex-col`,t[11]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,U.jsxs)(`div`,{role:`row`,className:i(`schild hidden gap-x-4 pb-2 text-xs font-semibold text-text-3 md:grid`,Ve),children:[(0,U.jsx)(`span`,{role:`columnheader`,children:`Gerät`}),(0,U.jsx)(`span`,{role:`columnheader`,children:`App`}),(0,U.jsx)(`span`,{role:`columnheader`,children:`Pakete`}),(0,U.jsx)(`span`,{role:`columnheader`,children:`Rückweg`}),(0,U.jsx)(`span`,{role:`columnheader`,className:`sr-only`,children:`Aktion`})]}),t[11]=p):p=t[11];let s;t[12]!==a||t[13]!==r?(s=e=>(0,U.jsx)(Ge,{ziel:e,laeuft:r.get(e.id)??null,gesperrt:a||r.has(e.id),onFrage:c},e.id),t[12]=a,t[13]=r,t[14]=s):s=t[14],m=e.map(s),t[0]=a,t[1]=r,t[2]=n,t[3]=l,t[4]=u,t[5]=d,t[6]=f,t[7]=p,t[8]=m}else l=t[3],u=t[4],d=t[5],f=t[6],p=t[7],m=t[8];let h;t[15]!==u||t[16]!==d||t[17]!==f||t[18]!==p||t[19]!==m?(h=(0,U.jsxs)(`div`,{role:u,"aria-label":d,className:f,children:[p,m]}),t[15]=u,t[16]=d,t[17]=f,t[18]=p,t[19]=m,t[20]=h):h=t[20];let g;t[21]!==l||t[22]!==n.length?(g=l>0&&l===n.length&&(0,U.jsx)(k,{art:`gruen`,children:`Alles aktuell`}),t[21]=l,t[22]=n.length,t[23]=g):g=t[23];let _=!!s,v=s?`${s.ziel.name}: ${s.aktion.label}`:``,y=s?.aktion.frage??``,b=s?.aktion.label??``,x;t[24]===s?.aktion.pfad?x=t[25]:(x=s?.aktion.pfad.endsWith(`/neustart`),t[24]=s?.aktion.pfad,t[25]=x);let S=!!x,C;t[26]!==s||t[27]!==o?(C=()=>{s&&o(s.aktion),c(null)},t[26]=s,t[27]=o,t[28]=C):C=t[28];let w;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(w=()=>c(null),t[29]=w):w=t[29];let T;t[30]!==a||t[31]!==y||t[32]!==b||t[33]!==S||t[34]!==C||t[35]!==_||t[36]!==v?(T=(0,U.jsx)(I,{offen:_,titel:v,text:y,knopf:b,gefahr:S,gesperrt:a,onJa:C,onNein:w}),t[30]=a,t[31]=y,t[32]=b,t[33]=S,t[34]=C,t[35]=_,t[36]=v,t[37]=T):T=t[37];let E;return t[38]!==T||t[39]!==h||t[40]!==g?(E=(0,U.jsxs)(U.Fragment,{children:[h,g,T]}),t[38]=T,t[39]=h,t[40]=g,t[41]=E):E=t[41],E}function Je(e){return u(e)===3}function Ye(e,t){return u(e)-u(t)}var Xe=[`Proxmox-Host`,`AdGuard`,`NPMplus`,`NetBird`,`PVE Scripts Local`,`Gitea`,`PBS`,`Arcane mit Docker`],Ze={eingespielt:{art:`gruen`,text:`eingespielt`},zurueckgerollt:{art:`bernstein`,text:`zurückgerollt`},fehler:{art:`rot`,text:`Fehler`},neustart:{art:`cyan`,text:`Neustart`}},$=e=>P(new Date(e*1e3).toISOString());function Qe(){let e=(0,H.c)(4),t,n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,U.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Der Homelab-Teil läuft als eigene Instanz in einem kleinen Container auf dem Proxmox-PC. Von dort prüft er auch die KI-Box von außen.`}),n=(0,U.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Steht er, erscheinen hier alle Geräte mit ihren offenen Updates. Ein Update startest du mit „Jetzt updaten“: Vorher wird gesichert, danach die Erreichbarkeit geprüft, und ist sie rot, geht es von selbst zurück.`}),e[0]=t,e[1]=n):(t=e[0],n=e[1]);let r;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,U.jsx)(`h3`,{className:`schild text-sm tracking-[0.18em] text-text-3`,children:`Dazu kommen`}),e[2]=r):r=e[2];let i;return e[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,U.jsxs)(U.Fragment,{children:[t,n,(0,U.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[r,(0,U.jsx)(`ul`,{className:`flex flex-wrap gap-2`,children:Xe.map($e)})]}),(0,U.jsx)(`p`,{className:`text-sm text-text-3`,children:`Der Container wird erst nach deiner Freigabe angelegt.`})]}),e[3]=i):i=e[3],i}function $e(e){return(0,U.jsx)(`li`,{children:(0,U.jsx)(k,{children:e})},e)}function et(e){let t=(0,H.c)(9),{partner:n}=e,r;t[0]===n.eingerichtet?r=t[1]:(r=n.eingerichtet?(0,U.jsx)(k,{art:`rot`,children:`Antwortet nicht`}):(0,U.jsx)(k,{children:`Noch nicht eingerichtet`}),t[0]=n.eingerichtet,t[1]=r);let i=r,a;t[2]!==n.eingerichtet||t[3]!==n.fehler||t[4]!==n.url?(a=n.eingerichtet?(0,U.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Der Homelab-Teil (`,n.url,`) ist `,n.fehler??`nicht erreichbar`,`. Hält das an, meldet der Wächter es nach fünf Minuten auf Telegram.`]}):(0,U.jsx)(Qe,{}),t[2]=n.eingerichtet,t[3]=n.fehler,t[4]=n.url,t[5]=a):a=t[5];let o;return t[6]!==i||t[7]!==a?(o=(0,U.jsx)(M,{titel:`Homelab`,rechts:i,children:a}),t[6]=i,t[7]=a,t[8]=o):o=t[8],o}function tt(e){let t=(0,H.c)(10),{hinweise:n}=e,r=n.some(rt)?`rot`:`bernstein`,i;t[0]!==n.length||t[1]!==r?(i=(0,U.jsxs)(k,{art:r,children:[n.length,` offen`]}),t[0]=n.length,t[1]=r,t[2]=i):i=t[2];let a;t[3]===n?a=t[4]:(a=n.map(nt),t[3]=n,t[4]=a);let o;t[5]===a?o=t[6]:(o=(0,U.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:a}),t[5]=a,t[6]=o);let s;return t[7]!==i||t[8]!==o?(s=(0,U.jsx)(M,{titel:`Hinweise`,id:`hinweise`,rechts:i,children:o}),t[7]=i,t[8]=o,t[9]=s):s=t[9],s}function nt(e){return(0,U.jsxs)(`li`,{className:`flex flex-col gap-1 border-t border-linie py-3 first:border-t-0 first:pt-0`,children:[(0,U.jsx)(`span`,{className:e.stufe===`rot`?`text-[15px] font-medium text-rot-text`:`text-[15px] font-medium text-bernstein`,children:e.titel}),(0,U.jsx)(`span`,{className:`text-sm text-text-2`,children:e.text})]},e.id)}function rt(e){return e.stufe===`rot`}function it(e){let t=(0,H.c)(8),{laeufe:n}=e,r,i,a;if(t[0]!==n){a=Symbol.for(`react.early_return_sentinel`);bb0:{let e=n.filter(ot).slice(0,12);if(e.length===0){let e;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,U.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Noch kein Update im Homelab eingespielt.`}),t[4]=e):e=t[4],a=e;break bb0}r=`@container m-0 flex list-none flex-col p-0`,i=e.map(at)}t[0]=n,t[1]=r,t[2]=i,t[3]=a}else r=t[1],i=t[2],a=t[3];if(a!==Symbol.for(`react.early_return_sentinel`))return a;let o;return t[5]!==r||t[6]!==i?(o=(0,U.jsx)(`ol`,{className:r,children:i}),t[5]=r,t[6]=i,t[7]=o):o=t[7],o}function at(e){let t=e.ergebnis?Ze[e.ergebnis]:{art:`grau`,text:`unterbrochen`};return(0,U.jsxs)(`li`,{className:`flex flex-col gap-1.5 border-t border-linie py-3 first:border-t-0 first:pt-0`,children:[(0,U.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 @sm:grid-cols-[112px_minmax(0,1fr)_auto]`,children:[(0,U.jsx)(`span`,{className:`ziffern col-start-1 row-start-1 text-sm text-text-3`,children:$(e.start)}),(0,U.jsx)(`span`,{className:`col-span-2 row-start-2 min-w-0 text-[15px] break-words @sm:col-span-1 @sm:col-start-2 @sm:row-start-1`,children:e.name}),(0,U.jsx)(`span`,{className:`col-start-2 row-start-1 justify-self-end @sm:col-start-3`,children:(0,U.jsx)(k,{art:t.art,children:t.text})})]}),e.text&&(0,U.jsx)(`p`,{className:`m-0 text-sm text-text-2 @sm:pl-[124px]`,children:e.text})]},e.id)}function ot(e){return e.status!==`laeuft`}function st(e){let t=(0,H.c)(9),{stand:n}=e;if(!n.ausfuehrer.verbunden){let e;t[0]===n.ausfuehrer.zuletzt?e=t[1]:(e=n.ausfuehrer.zuletzt?` (zuletzt ${$(n.ausfuehrer.zuletzt)})`:``,t[0]=n.ausfuehrer.zuletzt,t[1]=e);let r;return t[2]===e?r=t[3]:(r=(0,U.jsxs)(`p`,{role:`alert`,className:`rounded-xl border border-bernstein/60 bg-bernstein-grund px-4 py-3 text-[15px] text-bernstein`,children:[`Der Ausführer auf dem Proxmox-Host meldet sich nicht`,e,`. Die Geräte zeigen den letzten bekannten Stand; Updates starten erst, wenn er wieder da ist.`]}),t[2]=e,t[3]=r),r}if(!n.bericht){let e;return t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,U.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Der Ausführer hat noch keinen Bericht geschickt.`}),t[4]=e):e=t[4],e}if(n.bericht.veraltet){let e;t[5]===n.bericht.empfangen?e=t[6]:(e=$(n.bericht.empfangen),t[5]=n.bericht.empfangen,t[6]=e);let r;return t[7]===e?r=t[8]:(r=(0,U.jsxs)(`p`,{className:`text-[15px] text-bernstein`,children:[`Der letzte Bericht ist von `,e,`; die Angaben können veraltet sein.`]}),t[7]=e,t[8]=r),r}return null}function ct(){let e=(0,H.c)(20),t=p(),n=te(),r=t.data?.rolle===`homelab`||!!(n.data?.eingerichtet&&n.data.erreichbar),i=s(r),a=x(r),o=f(r),c=E(),l=null;if(t.isPending||n.isPending){let t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,U.jsx)(j,{text:`Wird gelesen …`}),e[0]=t):t=e[0],l=t}else if(!r){let t;e[1]!==n.data||e[2]!==n.error?.message?(t=n.data?(0,U.jsx)(et,{partner:n.data}):(0,U.jsx)(j,{fehler:!0,text:`Der Partner lässt sich nicht abfragen: ${n.error?.message??`keine Daten`}`}),e[1]=n.data,e[2]=n.error?.message,e[3]=t):t=e[3],l=t}else if(i.isPending){let t;e[4]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,U.jsx)(j,{text:`Der Homelab-Teil meldet sich gleich …`}),e[4]=t):t=e[4],l=t}else if(!i.data){let t=`Der Homelab-Teil antwortet nicht: ${i.error?.message??`keine Daten`}`,n;e[5]===t?n=e[6]:(n=(0,U.jsx)(j,{fehler:!0,text:t}),e[5]=t,e[6]=n),l=n}let u;if(e[7]!==a.data?.laeufe){u=new Map;for(let e of a.data?.laeufe??[])e.status===`laeuft`&&u.set(e.ziel,e.schritte.at(-1)??`startet …`);e[7]=a.data?.laeufe,e[8]=u}else u=e[8];let d;e[9]===a.data?.laeufe?d=e[10]:(d=a.data?.laeufe??[],e[9]=a.data?.laeufe,e[10]=d);let m;e[11]===o.data?.hinweise?m=e[12]:(m=o.data?.hinweise??[],e[11]=o.data?.hinweise,e[12]=m);let h;return e[13]!==c||e[14]!==l||e[15]!==i.data||e[16]!==u||e[17]!==d||e[18]!==m?(h={ersatz:l,stand:i.data,laufend:u,laeufe:d,hinweise:m,aktion:c},e[13]=c,e[14]=l,e[15]=i.data,e[16]=u,e[17]=d,e[18]=m,e[19]=h):h=e[19],h}function lt(){let e=(0,H.c)(43),t=w(),{ersatz:n,stand:r,laufend:i,hinweise:a}=ct(),o=S(`1h`,!!r),s=h(!!r);if(n||!r)return n;let c,l;e[0]!==a||e[1]!==i.size||e[2]!==r?(c=r.bericht?$(r.bericht.empfangen):null,l=ie(r,a,i.size,c),e[0]=a,e[1]=i.size,e[2]=r,e[3]=c,e[4]=l):(c=e[3],l=e[4]);let u=l,f;if(e[5]!==i||e[6]!==r.ziele){let t;e[8]===i?t=e[9]:(t=e=>D(e,i.has(e.id)),e[8]=i,e[9]=t),f=r.ziele.map(t),e[5]=i,e[6]=r.ziele,e[7]=f}else f=e[7];let p;e[10]!==u.ziel||e[11]!==t?(p=()=>{u.ziel===`updates`?t({to:`/homelab/updates`}):u.ziel&&document.getElementById(u.ziel)?.scrollIntoView({behavior:`smooth`,block:`start`})},e[10]=u.ziel,e[11]=t,e[12]=p):p=e[12];let g;e[13]!==u||e[14]!==f||e[15]!==p?(g=(0,U.jsx)(me,{lage:u,lampen:f,onAnsehen:p}),e[13]=u,e[14]=f,e[15]=p,e[16]=g):g=e[16];let _;e[17]===r?_=e[18]:(_=(0,U.jsx)(st,{stand:r}),e[17]=r,e[18]=_);let v;e[19]===a?v=e[20]:(v=a.length>0&&(0,U.jsx)(tt,{hinweise:a}),e[19]=a,e[20]=v);let y;e[21]===c?y=e[22]:(y=c&&(0,U.jsxs)(`span`,{className:`ziffern text-sm text-text-3`,children:[`Stand `,c]}),e[21]=c,e[22]=y);let b;e[23]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,U.jsxs)(m,{to:`/homelab/monitoring`,className:`inline-flex items-center gap-1 text-sm text-lab-text hover:underline`,children:[`Monitoring `,(0,U.jsx)(d,{className:`size-3.5`,"aria-hidden":!0})]}),e[23]=b):b=e[23];let x;e[24]===y?x=e[25]:(x=(0,U.jsxs)(`span`,{className:`flex items-center gap-3`,children:[y,b]}),e[24]=y,e[25]=x);let C=o.data?.geraete,T;e[26]!==r.ziele||e[27]!==C?(T=(0,U.jsx)(de,{ziele:r.ziele,messwerte:C}),e[26]=r.ziele,e[27]=C,e[28]=T):T=e[28];let E;e[29]===o.isError?E=e[30]:(E=o.isError&&(0,U.jsx)(`p`,{className:`text-xs text-text-3`,children:`CPU und Speicher erscheinen, sobald der Ausführer Messwerte schickt.`}),e[29]=o.isError,e[30]=E);let O;e[31]!==T||e[32]!==E||e[33]!==x?(O=(0,U.jsxs)(M,{titel:`Geräte`,id:`geraete`,rechts:x,children:[T,E]}),e[31]=T,e[32]=E,e[33]=x,e[34]=O):O=e[34];let k;e[35]===s.data?k=e[36]:(k=s.data?.bericht&&(0,U.jsx)(M,{titel:`Speicher und Sicherungen`,id:`speicher`,children:(0,U.jsx)(Ee,{daten:s.data})}),e[35]=s.data,e[36]=k);let A;return e[37]!==O||e[38]!==k||e[39]!==g||e[40]!==_||e[41]!==v?(A=(0,U.jsxs)(U.Fragment,{children:[g,_,v,O,k]}),e[37]=O,e[38]=k,e[39]=g,e[40]=_,e[41]=v,e[42]=A):A=e[42],A}function ut(){let e=(0,H.c)(29),{ersatz:t,stand:n,laufend:r,laeufe:i,aktion:a}=ct(),o=O(!!n);if(t||!n)return t;let s=o.data?.sammellauf??null,c=s?.status===`laeuft`,l;e[0]===n.ziele?l=e[1]:(l=y(n.ziele).filter(dt),e[0]=n.ziele,e[1]=l);let u=l.length,d=a.isPending||c||!n.ausfuehrer.verbunden,f;e[2]!==u||e[3]!==d?(f=(0,U.jsx)(Pe,{anzahl:u,gesperrt:d}),e[2]=u,e[3]=d,e[4]=f):f=e[4];let p;e[5]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,U.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Je Gerät, was läuft und was neu ist. Du startest jedes Update selbst — einzeln oder alle nacheinander. Vorher wird gesichert, danach geprüft; ist die Prüfung rot, geht es von selbst zurück.`}),e[5]=p):p=e[5];let m;e[6]===n?m=e[7]:(m=(0,U.jsx)(st,{stand:n}),e[6]=n,e[7]=m);let h;e[8]!==s||e[9]!==c||e[10]!==n.bericht?.empfangen?(h=s&&(c||s.ende&&(n.bericht?.empfangen??0)-s.ende<21600)&&(0,U.jsx)(Re,{lauf:s}),e[8]=s,e[9]=c,e[10]=n.bericht?.empfangen,e[11]=h):h=e[11];let g=a.isPending||c||!n.ausfuehrer.verbunden,_;e[12]===a?_=e[13]:(_=e=>a.mutate(e),e[12]=a,e[13]=_);let v;e[14]!==r||e[15]!==n.ziele||e[16]!==g||e[17]!==_?(v=(0,U.jsx)(qe,{ziele:n.ziele,laufend:r,gesperrt:g,onAktion:_}),e[14]=r,e[15]=n.ziele,e[16]=g,e[17]=_,e[18]=v):v=e[18];let b;e[19]!==f||e[20]!==m||e[21]!==h||e[22]!==v?(b=(0,U.jsxs)(M,{titel:`Updates`,rechts:f,children:[p,m,h,v]}),e[19]=f,e[20]=m,e[21]=h,e[22]=v,e[23]=b):b=e[23];let x;e[24]===i?x=e[25]:(x=(0,U.jsx)(M,{titel:`Verlauf`,children:(0,U.jsx)(it,{laeufe:i})}),e[24]=i,e[25]=x);let S;return e[26]!==x||e[27]!==b?(S=(0,U.jsxs)(U.Fragment,{children:[b,x]}),e[26]=x,e[27]=b,e[28]=S):S=e[28],S}function dt(e){return e.baustein.aktion}export{lt as HomelabSeite,ut as HomelabUpdatesSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Homelab-Ba-06aFa.js b/frontend/dist/assets/Homelab-Ba-06aFa.js new file mode 100644 index 0000000..a64d600 --- /dev/null +++ b/frontend/dist/assets/Homelab-Ba-06aFa.js @@ -0,0 +1 @@ +import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{t as a}from"./chevron-right-T7IsaTwB.js";import{t as o}from"./search-B5rIIYDK.js";import{B as s,C as c,D as l,E as u,Gt as d,H as f,J as p,Jt as m,K as h,Kt as g,O as _,Ot as v,S as y,T as b,U as x,W as S,Wt as C,Yt as w,_ as T,_t as E,b as D,ct as O,f as k,i as A,p as j,st as ee,tt as te,u as M,v as N,w as ne,x as re,y as ie,yt as P}from"./index-FvHAYExN.js";import{t as F}from"./button-D8rvET0Z.js";import{t as I}from"./Bestaetigen-SE_NgpcU.js";import{t as ae}from"./Lampe-gSQfYg4e.js";var L={name:`circle-dashed`,size:24,node:[[`path`,{d:`M10.1 2.182a10 10 0 0 1 3.8 0`,key:`5ilxe3`}],[`path`,{d:`M13.9 21.818a10 10 0 0 1-3.8 0`,key:`11zvb9`}],[`path`,{d:`M17.609 3.721a10 10 0 0 1 2.69 2.7`,key:`1iw5b2`}],[`path`,{d:`M2.182 13.9a10 10 0 0 1 0-3.8`,key:`c0bmvh`}],[`path`,{d:`M20.279 17.609a10 10 0 0 1-2.7 2.69`,key:`1ruxm7`}],[`path`,{d:`M21.818 10.1a10 10 0 0 1 0 3.8`,key:`qkgqxc`}],[`path`,{d:`M3.721 6.391a10 10 0 0 1 2.7-2.69`,key:`1mcia2`}],[`path`,{d:`M6.391 20.279a10 10 0 0 1-2.69-2.7`,key:`1fvljs`}]]};L.node;var oe=g(L),R={name:`circle-x`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]],aliases:[`x-circle`]};R.node;var se=g(R),z={name:`loader-circle`,size:24,node:[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]],aliases:[`loader-2`]};z.node;var ce=g(z),B={name:`skip-forward`,size:24,node:[[`path`,{d:`M21 4v16`,key:`7j8fe9`}],[`path`,{d:`M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z`,key:`zs4d6`}]]};B.node;var le=g(B),V={name:`undo-2`,size:24,node:[[`path`,{d:`M9 14 4 9l5-5`,key:`102s5s`}],[`path`,{d:`M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11`,key:`f3b9sd`}]]};V.node;var ue=g(V),H=t(),U=n(),W=`md:grid-cols-[minmax(0,1.3fr)_110px_minmax(0,1fr)_minmax(0,1.2fr)_minmax(0,1fr)_90px]`,G=e=>(e/1e9).toFixed(1).replace(`.`,`,`);function K(e){let t=(0,H.c)(17),{wert:n,gelb:r,rot:a,zusatz:o}=e;if(n==null){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,U.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}),t[0]=e):e=t[0],e}let s=n>=a?`var(--rot)`:n>=r?`var(--bernstein)`:`var(--reihe-1)`,c=n>=a?`text-rot-text`:n>=r?`text-bernstein`:`text-text-2`,l;t[1]===c?l=t[2]:(l=i(`ziffern text-sm`,c),t[1]=c,t[2]=l);let u;t[3]===n?u=t[4]:(u=Math.round(n),t[3]=n,t[4]=u);let d;t[5]===o?d=t[6]:(d=o&&(0,U.jsxs)(`span`,{className:`font-sans text-xs text-text-3`,children:[` · `,o]}),t[5]=o,t[6]=d);let f;t[7]!==l||t[8]!==u||t[9]!==d?(f=(0,U.jsxs)(`span`,{className:l,children:[u,` %`,d]}),t[7]=l,t[8]=u,t[9]=d,t[10]=f):f=t[10];let p=`${Math.min(100,Math.max(2,n))}%`,m;t[11]!==s||t[12]!==p?(m=(0,U.jsx)(`span`,{className:`h-1.5 w-full max-w-40 overflow-hidden rounded-full bg-erhaben`,"aria-hidden":!0,children:(0,U.jsx)(`span`,{className:`block h-full rounded-full`,style:{width:p,background:s}})}),t[11]=s,t[12]=p,t[13]=m):m=t[13];let h;return t[14]!==f||t[15]!==m?(h=(0,U.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-1`,children:[f,m]}),t[14]=f,t[15]=m,t[16]=h):h=t[16],h}function de(e){if(e.erreichbar===!1)return 0;let t=c(e);return t!==null&&t>=.8?1:e.art===`proxmox-host`?2:3}function fe(e){let t=(0,H.c)(4),{ziele:n,messwerte:r}=e,a;if(t[0]!==r||t[1]!==n){let e=new Map((r??[]).map(me)),o=[...n].sort(pe),s;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,U.jsxs)(`div`,{role:`row`,className:i(`schild hidden gap-x-4 pb-2 text-xs font-semibold text-text-3 md:grid`,W),children:[(0,U.jsx)(`span`,{role:`columnheader`,children:`Gerät`}),(0,U.jsx)(`span`,{role:`columnheader`,children:`Netz`}),(0,U.jsx)(`span`,{role:`columnheader`,children:`CPU`}),(0,U.jsx)(`span`,{role:`columnheader`,children:`Speicher`}),(0,U.jsx)(`span`,{role:`columnheader`,children:`Platte`}),(0,U.jsx)(`span`,{role:`columnheader`,children:`Läuft seit`})]}),t[3]=s):s=t[3],a=(0,U.jsxs)(`div`,{role:`table`,"aria-label":`Zustand der Geräte`,className:`flex flex-col`,children:[s,o.map(t=>{let n=e.get(t.id),r=n?.platte??(c(t)===null?null:c(t)*100),a=n?.ram_used&&n.ram_total?`${G(n.ram_used)} / ${G(n.ram_total)} GB`:void 0;return(0,U.jsxs)(`div`,{role:`row`,className:i(`grid grid-cols-2 gap-x-4 gap-y-2 border-t border-linie py-3 md:items-center`,W),children:[(0,U.jsxs)(`div`,{role:`rowheader`,className:`col-span-2 flex min-w-0 flex-col md:col-span-1`,children:[(0,U.jsx)(m,{to:`/homelab/monitoring`,hash:t.id,className:`text-[15px] font-semibold break-words hover:text-lab-text`,children:t.name}),N(t)!==t.name&&(0,U.jsx)(`span`,{className:`text-sm text-text-3`,children:N(t)})]}),(0,U.jsxs)(`span`,{role:`cell`,className:i(`schild flex items-center gap-1.5 text-xs`,t.erreichbar===!1?`text-rot-text`:`text-text-3`),children:[t.erreichbar!==null&&(0,U.jsx)(`span`,{"aria-hidden":!0,className:i(`size-2 rounded-full`,t.erreichbar?`bg-gruen`:`bg-rot`)}),t.erreichbar===null?`–`:t.erreichbar?`erreichbar`:`antwortet nicht`]}),(0,U.jsxs)(`span`,{role:`cell`,children:[(0,U.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`CPU `}),(0,U.jsx)(K,{wert:n?.cpu,gelb:85,rot:95})]}),(0,U.jsxs)(`span`,{role:`cell`,children:[(0,U.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`Speicher `}),(0,U.jsx)(K,{wert:n?.ram,gelb:85,rot:95,zusatz:a})]}),(0,U.jsxs)(`span`,{role:`cell`,children:[(0,U.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`Platte `}),(0,U.jsx)(K,{wert:r,gelb:80,rot:90})]}),(0,U.jsxs)(`span`,{role:`cell`,className:`ziffern text-sm text-text-2`,children:[(0,U.jsx)(`span`,{className:`font-sans text-xs text-text-3 md:hidden`,children:`Läuft seit `}),A(n?.uptime_s)]})]},t.id)})]}),t[0]=r,t[1]=n,t[2]=a}else a=t[2];return a}function pe(e,t){return de(e)-de(t)}function me(e){return[e.id,e.aktuell]}function he(e){let t=(0,H.c)(24),{lage:n,lampen:r,onAnsehen:a}=e,o=n.ziel!==null,s=!o,c=`${n.oben} ${n.mitte}`,l=v[n.art],u=o?`cursor-pointer`:`cursor-default`,d;t[0]!==l||t[1]!==u?(d=i(`flex min-h-[130px] flex-col items-center justify-center gap-1 rounded-2xl border px-4 py-4 font-anzeige transition-colors`,l,u),t[0]=l,t[1]=u,t[2]=d):d=t[2];let f;t[3]===n.oben?f=t[4]:(f=(0,U.jsx)(`span`,{className:`schild text-sm tracking-[0.26em]`,children:n.oben}),t[3]=n.oben,t[4]=f);let p;t[5]===n.mitte?p=t[6]:(p=(0,U.jsx)(`span`,{className:`text-center text-[34px] leading-none font-bold tracking-[0.04em] sm:text-[38px]`,children:n.mitte}),t[5]=n.mitte,t[6]=p);let m;t[7]===n.unten?m=t[8]:(m=(0,U.jsx)(`span`,{className:`font-sans text-sm opacity-80`,children:n.unten}),t[7]=n.unten,t[8]=m);let h;t[9]!==a||t[10]!==s||t[11]!==c||t[12]!==d||t[13]!==f||t[14]!==p||t[15]!==m?(h=(0,U.jsxs)(`button`,{type:`button`,onClick:a,disabled:s,"aria-label":c,className:d,children:[f,p,m]}),t[9]=a,t[10]=s,t[11]=c,t[12]=d,t[13]=f,t[14]=p,t[15]=m,t[16]=h):h=t[16];let g;t[17]===r?g=t[18]:(g=r.map(ge),t[17]=r,t[18]=g);let _;t[19]===g?_=t[20]:(_=(0,U.jsx)(`ul`,{"aria-label":`Geräte`,className:`grid grid-cols-2 gap-2.5 rounded-2xl border border-linie bg-panel p-3 sm:grid-cols-4`,children:g}),t[19]=g,t[20]=_);let y;return t[21]!==_||t[22]!==h?(y=(0,U.jsxs)(`section`,{"aria-label":`Lage im Homelab`,className:`grid gap-4 md:grid-cols-[260px_minmax(0,1fr)] md:gap-5`,children:[h,_]}),t[21]=_,t[22]=h,t[23]=y):y=t[23],y}function ge(e){return(0,U.jsx)(ae,{lampe:e},e.id)}var q=r(e(),1),_e=(e,t=1)=>e.toFixed(t).replace(`.`,`,`);function J(e){return e==null?`–`:e>=0xe8d4a51000?`${_e(e/0xe8d4a51000)} TB`:e>=1e10?`${Math.round(e/1e9)} GB`:`${_e(e/1e9)} GB`}function ve(e){return e?/^\s*\d{1,2}:\d{2}\s*$/.test(e)?`täglich ${e.trim()}`:`Zeitplan „${e}“`:`ohne Zeitplan`}function ye(e){return e.jobs.length===0?`Kein Sicherungsauftrag in Proxmox`:e.jobs.map(e=>`${ve(e.zeitplan)} auf ${e.speicher??`?`}`).join(`, `)}var Y={ok:`in Ordnung`,gelb:`wird knapp`,rot:`fast voll`},X={ok:`gruen`,gelb:`bernstein`,rot:`rot`,keine:`grau`},be={ok:`var(--reihe-1)`,gelb:`var(--bernstein)`,rot:`var(--rot)`},xe=e=>P(new Date(e*1e3).toISOString());function Z(e){let t=(0,H.c)(11),{anteil:n,stufe:r,name:i}=e,a;t[0]===n?a=t[1]:(a=Math.round(n*100),t[0]=n,t[1]=a);let o=a,s=`${i}: ${o} % belegt`,c=`${Math.min(100,Math.max(2,o))}%`,l=be[r],u;t[2]!==c||t[3]!==l?(u=(0,U.jsx)(`span`,{className:`block h-full rounded-full`,style:{width:c,background:l}}),t[2]=c,t[3]=l,t[4]=u):u=t[4];let d,f;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,U.jsx)(`span`,{"aria-hidden":!0,className:`absolute inset-y-0 left-[80%] w-px bg-bernstein/70`}),f=(0,U.jsx)(`span`,{"aria-hidden":!0,className:`absolute inset-y-0 left-[90%] w-px bg-rot/80`}),t[5]=d,t[6]=f):(d=t[5],f=t[6]);let p;return t[7]!==o||t[8]!==s||t[9]!==u?(p=(0,U.jsxs)(`div`,{role:`meter`,"aria-label":s,"aria-valuenow":o,"aria-valuemin":0,"aria-valuemax":100,className:`relative h-2 w-full overflow-hidden rounded-full bg-erhaben`,children:[u,d,f]}),t[7]=o,t[8]=s,t[9]=u,t[10]=p):p=t[10],p}function Q(e){let t=(0,H.c)(16),{titel:n,unter:r,chip:i,chipText:a,children:o}=e,s;t[0]===n?s=t[1]:(s=(0,U.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:n}),t[0]=n,t[1]=s);let c;t[2]===r?c=t[3]:(c=r&&(0,U.jsx)(`span`,{className:`text-sm break-words text-text-3`,children:r}),t[2]=r,t[3]=c);let l;t[4]!==s||t[5]!==c?(l=(0,U.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[s,c]}),t[4]=s,t[5]=c,t[6]=l):l=t[6];let u;t[7]!==i||t[8]!==a?(u=(0,U.jsx)(k,{art:i,children:a}),t[7]=i,t[8]=a,t[9]=u):u=t[9];let d;t[10]!==l||t[11]!==u?(d=(0,U.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[l,u]}),t[10]=l,t[11]=u,t[12]=d):d=t[12];let f;return t[13]!==o||t[14]!==d?(f=(0,U.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-3 rounded-xl border border-linie bg-erhaben/40 p-4`,children:[d,o]}),t[13]=o,t[14]=d,t[15]=f):f=t[15],f}function Se(e){let t=(0,H.c)(31),{p:n}=e,r;t[0]===n.anteil?r=t[1]:(r=Math.round(n.anteil*100),t[0]=n.anteil,t[1]=r);let a=r,o=`Speicherpool ${n.speicher}`,s=X[n.stufe],c=Y[n.stufe],l=Math.max(n.anteil,n.meta_anteil??0),u=`Speicherpool ${n.speicher}`,d;t[2]!==n.stufe||t[3]!==l||t[4]!==u?(d=(0,U.jsx)(Z,{anteil:l,stufe:n.stufe,name:u}),t[2]=n.stufe,t[3]=l,t[4]=u,t[5]=d):d=t[5];let f;t[6]===n.belegt?f=t[7]:(f=J(n.belegt),t[6]=n.belegt,t[7]=f);let p;t[8]===n.gesamt?p=t[9]:(p=J(n.gesamt),t[8]=n.gesamt,t[9]=p);let m=n.stufe!==`ok`&&`text-foreground`,h;t[10]===m?h=t[11]:(h=i(m),t[10]=m,t[11]=h);let g;t[12]===n.frei?g=t[13]:(g=J(n.frei),t[12]=n.frei,t[13]=g);let _;t[14]!==h||t[15]!==g?(_=(0,U.jsxs)(`span`,{className:h,children:[g,` frei`]}),t[14]=h,t[15]=g,t[16]=_):_=t[16];let v;t[17]!==a||t[18]!==_||t[19]!==f||t[20]!==p?(v=(0,U.jsxs)(`p`,{className:`ziffern text-sm text-text-2`,children:[a,` % · `,f,` von `,p,` · `,_]}),t[17]=a,t[18]=_,t[19]=f,t[20]=p,t[21]=v):v=t[21];let y;t[22]===n.meta_anteil?y=t[23]:(y=n.meta_anteil!==null&&(0,U.jsxs)(`p`,{className:`text-xs text-text-3`,children:[`Metadaten `,Math.round(n.meta_anteil*100),` % belegt`]}),t[22]=n.meta_anteil,t[23]=y);let b;return t[24]!==v||t[25]!==y||t[26]!==o||t[27]!==s||t[28]!==c||t[29]!==d?(b=(0,U.jsxs)(Q,{titel:o,unter:`Platten der Container und VMs`,chip:s,chipText:c,children:[d,v,y]}),t[24]=v,t[25]=y,t[26]=o,t[27]=s,t[28]=c,t[29]=d,t[30]=b):b=t[30],b}function Ce(e){let t=(0,H.c)(21),{s:n}=e,r=X[n.stufe],i=Y[n.stufe],a;t[0]!==n.anteil||t[1]!==n.stufe?(a=(0,U.jsx)(Z,{anteil:n.anteil,stufe:n.stufe,name:`Systemplatte des Proxmox-Hosts`}),t[0]=n.anteil,t[1]=n.stufe,t[2]=a):a=t[2];let o;t[3]===n.anteil?o=t[4]:(o=Math.round(n.anteil*100),t[3]=n.anteil,t[4]=o);let s;t[5]===n.belegt?s=t[6]:(s=J(n.belegt),t[5]=n.belegt,t[6]=s);let c;t[7]===n.gesamt?c=t[8]:(c=J(n.gesamt),t[7]=n.gesamt,t[8]=c);let l;t[9]===n.frei?l=t[10]:(l=J(n.frei),t[9]=n.frei,t[10]=l);let u;t[11]!==o||t[12]!==s||t[13]!==c||t[14]!==l?(u=(0,U.jsxs)(`p`,{className:`ziffern text-sm text-text-2`,children:[o,` % · `,s,` von `,c,` · `,l,` frei`]}),t[11]=o,t[12]=s,t[13]=c,t[14]=l,t[15]=u):u=t[15];let d;return t[16]!==r||t[17]!==i||t[18]!==a||t[19]!==u?(d=(0,U.jsxs)(Q,{titel:`Systemplatte`,unter:`Proxmox-Host: Kernel, Sicherungen vor Updates`,chip:r,chipText:i,children:[a,u]}),t[16]=r,t[17]=i,t[18]=a,t[19]=u,t[20]=d):d=t[20],d}function we(e){let t=(0,H.c)(21),{n}=e,r=n.problem?n.stufe===`rot`?`gestört`:`unklar`:Y[n.stufe],a=`NAS ${n.server??``}`,o;t[0]===a?o=t[1]:(o=a.trim(),t[0]=a,t[1]=o);let s;t[2]===n.art?s=t[3]:(s=n.art.toUpperCase(),t[2]=n.art,t[3]=s);let c=`${s} · ${n.quelle??`?`} → ${n.ziel}`,l=X[n.stufe],u;t[4]!==n.anteil||t[5]!==n.belegt||t[6]!==n.gesamt||t[7]!==n.problem||t[8]!==n.server||t[9]!==n.stufe?(u=n.problem?(0,U.jsx)(`p`,{className:i(`text-sm`,n.stufe===`rot`?`text-rot-text`:`text-bernstein`),children:n.problem}):n.anteil!==null&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(Z,{anteil:n.anteil,stufe:n.stufe,name:`NAS ${n.server??``}`}),(0,U.jsxs)(`p`,{className:`ziffern text-sm text-text-2`,children:[Math.round(n.anteil*100),` % · `,J(n.belegt),` von `,J(n.gesamt),` · `,J((n.gesamt??0)-(n.belegt??0)),` frei`]})]}),t[4]=n.anteil,t[5]=n.belegt,t[6]=n.gesamt,t[7]=n.problem,t[8]=n.server,t[9]=n.stufe,t[10]=u):u=t[10];let d=n.erreichbar===!1?`antwortet nicht`:`antwortet`,f=n.eingebunden?`auf dem Proxmox-Host eingebunden`:`nicht eingebunden`,p;t[11]!==d||t[12]!==f?(p=(0,U.jsxs)(`p`,{className:`text-xs text-text-3`,children:[d,` · `,f]}),t[11]=d,t[12]=f,t[13]=p):p=t[13];let m;return t[14]!==r||t[15]!==o||t[16]!==c||t[17]!==l||t[18]!==u||t[19]!==p?(m=(0,U.jsxs)(Q,{titel:o,unter:c,chip:l,chipText:r,children:[u,p]}),t[14]=r,t[15]=o,t[16]=c,t[17]=l,t[18]=u,t[19]=p,t[20]=m):m=t[20],m}function Te(e){let t=(0,H.c)(18),{s:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r={ok:`aktuell`,gelb:`Lücke`,rot:`gestört`,keine:`kein Auftrag`},t[0]=r):r=t[0];let i=r[n.stufe],a;t[1]===n?a=t[2]:(a=ye(n),t[1]=n,t[2]=a);let o=X[n.stufe],s;t[3]===n.probleme?s=t[4]:(s=n.probleme.map(De),t[3]=n.probleme,t[4]=s);let c;t[5]!==n.erfasst||t[6]!==n.stufe||t[7]!==n.zuletzt?(c=n.stufe===`ok`&&(0,U.jsxs)(`p`,{className:`text-sm text-text-2`,children:[`Alle `,n.erfasst,` Geräte gesichert`,n.zuletzt?(0,U.jsxs)(U.Fragment,{children:[`, zuletzt `,(0,U.jsx)(`span`,{className:`ziffern`,children:xe(n.zuletzt)})]}):null,`.`]}),t[5]=n.erfasst,t[6]=n.stufe,t[7]=n.zuletzt,t[8]=c):c=t[8];let l;t[9]===n.fehlend?l=t[10]:(l=n.fehlend.length>0&&(0,U.jsx)(`ul`,{className:`flex flex-col gap-1 text-sm`,children:n.fehlend.map(Ee)}),t[9]=n.fehlend,t[10]=l);let u;return t[11]!==i||t[12]!==a||t[13]!==o||t[14]!==s||t[15]!==c||t[16]!==l?(u=(0,U.jsxs)(Q,{titel:`Sicherungen`,unter:a,chip:o,chipText:i,children:[s,c,l]}),t[11]=i,t[12]=a,t[13]=o,t[14]=s,t[15]=c,t[16]=l,t[17]=u):u=t[17],u}function Ee(e){return(0,U.jsxs)(`li`,{className:`text-bernstein`,children:[e.name,`: `,e.zuletzt?(0,U.jsxs)(U.Fragment,{children:[`zuletzt `,(0,U.jsx)(`span`,{className:`ziffern`,children:xe(e.zuletzt)})]}):`noch nie gesichert`]},e.ziel)}function De(e){return(0,U.jsx)(`p`,{className:`text-sm text-rot-text`,children:e},e)}function Oe(e){let t=(0,H.c)(44),{daten:n,laeuft:r,gesperrt:i,onAktion:o}=e,s=r===void 0?null:r,c=i!==void 0&&i,[l,u]=(0,q.useState)(null),d;t[0]!==n.pools||t[1]!==n.systemplatte?.stufe?(d=n.pools.some(Me)||(n.systemplatte?.stufe??`ok`)!==`ok`,t[0]=n.pools,t[1]=n.systemplatte?.stufe,t[2]=d):d=t[2];let f=d,p,m,h;if(t[3]!==n.empfehlungen||t[4]!==n.nas||t[5]!==n.pools||t[6]!==n.sicherungen||t[7]!==n.systemplatte||t[8]!==c||t[9]!==f||t[10]!==s||t[11]!==o){let e=n.empfehlungen.reduce(je,0);p=`flex flex-col gap-4`;let r;t[15]===n.pools?r=t[16]:(r=n.pools.map(Ae),t[15]=n.pools,t[16]=r);let i;t[17]===n.systemplatte?i=t[18]:(i=n.systemplatte&&(0,U.jsx)(Ce,{s:n.systemplatte}),t[17]=n.systemplatte,t[18]=i);let l;t[19]===n.nas?l=t[20]:(l=n.nas.length>0?n.nas.map(ke):(0,U.jsx)(Q,{titel:`NAS`,chip:`grau`,chipText:`keins`,children:(0,U.jsx)(`p`,{className:`text-sm text-text-3`,children:`Auf dem Proxmox-Host ist kein Netzlaufwerk eingebunden.`})}),t[19]=n.nas,t[20]=l);let d;t[21]===n.sicherungen?d=t[22]:(d=(0,U.jsx)(Te,{s:n.sicherungen}),t[21]=n.sicherungen,t[22]=d),t[23]!==d||t[24]!==r||t[25]!==i||t[26]!==l?(m=(0,U.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-2 xl:grid-cols-4`,children:[r,i,l,d]}),t[23]=d,t[24]=r,t[25]=i,t[26]=l,t[27]=m):m=t[27],h=n.empfehlungen.length>0&&(0,U.jsxs)(`details`,{open:f,className:`group rounded-xl border border-linie bg-erhaben/40 px-4 open:pb-3`,children:[(0,U.jsxs)(`summary`,{className:`flex min-h-12 cursor-pointer list-none items-center justify-between gap-3 [&::-webkit-details-marker]:hidden`,children:[(0,U.jsxs)(`span`,{className:`flex items-center gap-2 text-[15px] font-medium`,children:[(0,U.jsx)(a,{className:`size-4 text-text-3 transition-transform group-open:rotate-90`,"aria-hidden":!0}),`Was Platz bringt`]}),(0,U.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[n.empfehlungen.length,` `,n.empfehlungen.length===1?`Vorschlag`:`Vorschläge`,e>0&&` · bis zu ${J(e)}`]})]}),(0,U.jsx)(`ol`,{className:`flex flex-col`,children:n.empfehlungen.map(e=>(0,U.jsx)(Pe,{e,laeuft:s,gesperrt:c||!o,onFrage:u},e.titel))})]}),t[3]=n.empfehlungen,t[4]=n.nas,t[5]=n.pools,t[6]=n.sicherungen,t[7]=n.systemplatte,t[8]=c,t[9]=f,t[10]=s,t[11]=o,t[12]=p,t[13]=m,t[14]=h}else p=t[12],m=t[13],h=t[14];let g=!!l,_=l?`Proxmox-Host: ${l.label}`:``,v=l?.frage??``,y=l?.label??``,b;t[28]!==l||t[29]!==o?(b=()=>{l&&o&&o(l),u(null)},t[28]=l,t[29]=o,t[30]=b):b=t[30];let x;t[31]===Symbol.for(`react.memo_cache_sentinel`)?(x=()=>u(null),t[31]=x):x=t[31];let S;t[32]!==c||t[33]!==y||t[34]!==b||t[35]!==g||t[36]!==_||t[37]!==v?(S=(0,U.jsx)(I,{offen:g,titel:_,text:v,knopf:y,gesperrt:c,onJa:b,onNein:x}),t[32]=c,t[33]=y,t[34]=b,t[35]=g,t[36]=_,t[37]=v,t[38]=S):S=t[38];let C;return t[39]!==S||t[40]!==p||t[41]!==m||t[42]!==h?(C=(0,U.jsxs)(`div`,{className:p,children:[m,h,S]}),t[39]=S,t[40]=p,t[41]=m,t[42]=h,t[43]=C):C=t[43],C}function ke(e){return(0,U.jsx)(we,{n:e},e.ziel)}function Ae(e){return(0,U.jsx)(Se,{p:e},e.speicher)}function je(e,t){return e+(t.platz??0)}function Me(e){return e.stufe!==`ok`}var Ne={pool:`Speicherpool`,systemplatte:`Systemplatte des Hosts`};function Pe(e){let t=(0,H.c)(23),{e:n,laeuft:r,gesperrt:i,onFrage:a}=e,o;t[0]===n.titel?o=t[1]:(o=(0,U.jsx)(`span`,{className:`text-[15px] font-medium break-words`,children:n.titel}),t[0]=n.titel,t[1]=o);let s;t[2]===n.platz?s=t[3]:(s=n.platz?`≈ ${J(n.platz)}`:`Größe unbekannt`,t[2]=n.platz,t[3]=s);let c;t[4]===s?c=t[5]:(c=(0,U.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:s}),t[4]=s,t[5]=c);let l;t[6]!==o||t[7]!==c?(l=(0,U.jsxs)(`div`,{className:`flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1`,children:[o,c]}),t[6]=o,t[7]=c,t[8]=l):l=t[8];let u;t[9]===n.ort?u=t[10]:(u=n.ort&&(0,U.jsx)(`span`,{className:`schild text-xs text-text-3`,children:Ne[n.ort]??n.ort}),t[9]=n.ort,t[10]=u);let d;t[11]===n.text?d=t[12]:(d=(0,U.jsx)(`p`,{className:`text-sm break-words text-text-2`,children:n.text}),t[11]=n.text,t[12]=d);let f;t[13]!==n.aktion||t[14]!==i||t[15]!==r||t[16]!==a?(f=n.aktion&&(r?(0,U.jsxs)(`p`,{role:`status`,className:`text-sm text-cyan`,children:[`Läuft: `,r]}):(0,U.jsx)(F,{variant:`outline`,size:`sm`,className:`mt-1 self-start`,disabled:i,onClick:()=>a(n.aktion),children:n.aktion.label})),t[13]=n.aktion,t[14]=i,t[15]=r,t[16]=a,t[17]=f):f=t[17];let p;return t[18]!==l||t[19]!==u||t[20]!==d||t[21]!==f?(p=(0,U.jsxs)(`li`,{className:`flex flex-col gap-1 border-t border-linie py-3 first:border-t-0 first:pt-1`,children:[l,u,d,f]}),t[18]=l,t[19]=u,t[20]=d,t[21]=f,t[22]=p):p=t[22],p}var Fe={snapshot:`Snapshot`,sicherung:`Sicherung`,keiner:`kein Rückweg`};function Ie(e){let t=(0,H.c)(24),{anzahl:n,gesperrt:r}=e,[i,a]=(0,q.useState)(!1),o=ee(i),s=_(),c;t[0]===o.data?.schritte?c=t[1]:(c=o.data?.schritte??[],t[0]=o.data?.schritte,t[1]=c);let l=c,u=r||n===0||s.isPending,d;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(d=()=>a(!0),t[2]=d):d=t[2];let f=n>0?` (${n})`:``,p;t[3]!==u||t[4]!==f?(p=(0,U.jsxs)(F,{disabled:u,onClick:d,children:[`Alle aktualisieren`,f]}),t[3]=u,t[4]=f,t[5]=p):p=t[5];let m=l.length?`${l.length} Updates starten`:`Starten`,h=s.isPending||o.isPending||l.length===0,g;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(g=()=>a(!1),t[6]=g):g=t[6];let v;t[7]!==i||t[8]!==s?(v=()=>{i&&(s.mutate(void 0),a(!1))},t[7]=i,t[8]=s,t[9]=v):v=t[9];let y;t[10]!==o.data||t[11]!==o.error||t[12]!==o.isPending||t[13]!==l?(y=o.isPending?(0,U.jsx)(`p`,{className:`text-sm text-text-2`,children:`Die Reihenfolge wird gelesen …`}):o.error?(0,U.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Der Plan lässt sich nicht lesen: `,o.error.message]}):(0,U.jsxs)(`div`,{className:`flex flex-col gap-2 pb-1`,children:[(0,U.jsx)(`ol`,{className:`m-0 flex list-none flex-col gap-1 p-0`,children:l.map(Le)}),o.data?.hinweis&&(0,U.jsx)(`p`,{className:`text-xs text-bernstein`,children:o.data.hinweis})]}),t[10]=o.data,t[11]=o.error,t[12]=o.isPending,t[13]=l,t[14]=y):y=t[14];let b;t[15]!==i||t[16]!==y||t[17]!==m||t[18]!==h||t[19]!==v?(b=(0,U.jsx)(I,{offen:i,titel:`Alle Homelab-Updates einspielen?`,text:`Die Updates laufen nacheinander, jedes mit Rückweg und Prüfung. Ist eine Prüfung rot, geht dieser Schritt von selbst zurück und der Rest bleibt stehen. AdGuard und NPMplus kommen zuletzt, der Proxmox-Host ganz am Ende; neu gestartet wird er nicht.`,knopf:m,gesperrt:h,onNein:g,onJa:v,children:y}),t[15]=i,t[16]=y,t[17]=m,t[18]=h,t[19]=v,t[20]=b):b=t[20];let x;return t[21]!==b||t[22]!==p?(x=(0,U.jsxs)(U.Fragment,{children:[p,b]}),t[21]=b,t[22]=p,t[23]=x):x=t[23],x}function Le(e,t){return(0,U.jsxs)(`li`,{className:`grid grid-cols-[1.5rem_minmax(0,1fr)_auto] items-baseline gap-2 text-sm`,children:[(0,U.jsxs)(`span`,{className:`ziffern text-text-3`,children:[t+1,`.`]}),(0,U.jsxs)(`span`,{className:`min-w-0`,children:[(0,U.jsx)(`span`,{className:`font-medium text-foreground`,children:e.name}),` `,(0,U.jsxs)(`span`,{className:`text-text-2`,children:[`· `,e.was]})]}),(0,U.jsx)(`span`,{className:i(`text-xs`,e.rueckweg_art===`keiner`?`text-bernstein`:`text-text-3`),children:Fe[e.rueckweg_art]})]},`${e.ziel}-${e.baustein}`)}var Re={wartet:{Symbol:oe,farbe:`text-text-3`,text:`wartet`},laeuft:{Symbol:ce,farbe:`text-cyan`,text:`läuft`},eingespielt:{Symbol:C,farbe:`text-gruen`,text:`eingespielt`},zurueckgerollt:{Symbol:ue,farbe:`text-bernstein`,text:`zurückgerollt`},fehler:{Symbol:se,farbe:`text-rot`,text:`Fehler`},uebersprungen:{Symbol:le,farbe:`text-text-3`,text:`übersprungen`}},ze={laeuft:{art:`cyan`,text:`läuft`},fertig:{art:`gruen`,text:`fertig`},abgebrochen:{art:`bernstein`,text:`abgebrochen`}};function Be(e){let t=(0,H.c)(31),{lauf:n}=e,r;t[0]===n.schritte?r=t[1]:(r=n.schritte.filter(He),t[0]=n.schritte,t[1]=r);let i=r.length,a=ze[n.status],o;t[2]!==i||t[3]!==n.schritte.length?(o=(0,U.jsxs)(`span`,{className:`schild text-sm tracking-[0.18em] text-cyan`,children:[`Alle aktualisieren · `,i,` von `,n.schritte.length]}),t[2]=i,t[3]=n.schritte.length,t[4]=o):o=t[4];let s;t[5]===n.start?s=t[6]:(s=P(new Date(n.start*1e3).toISOString()),t[5]=n.start,t[6]=s);let c;t[7]===s?c=t[8]:(c=(0,U.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:s}),t[7]=s,t[8]=c);let l;t[9]!==a.art||t[10]!==a.text?(l=(0,U.jsx)(k,{art:a.art,children:a.text}),t[9]=a.art,t[10]=a.text,t[11]=l):l=t[11];let u;t[12]!==c||t[13]!==l?(u=(0,U.jsxs)(`span`,{className:`flex items-center gap-2`,children:[c,l]}),t[12]=c,t[13]=l,t[14]=u):u=t[14];let d;t[15]!==o||t[16]!==u?(d=(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[o,u]}),t[15]=o,t[16]=u,t[17]=d):d=t[17];let f=`${i/Math.max(1,n.schritte.length)*100}%`,p;t[18]===f?p=t[19]:(p=(0,U.jsx)(`div`,{className:`h-1.5 overflow-hidden rounded-full bg-erhaben`,"aria-hidden":!0,children:(0,U.jsx)(`div`,{className:`h-full rounded-full bg-cyan transition-all`,style:{width:f}})}),t[18]=f,t[19]=p);let m;t[20]===n.schritte?m=t[21]:(m=n.schritte.map(Ve),t[20]=n.schritte,t[21]=m);let h;t[22]===m?h=t[23]:(h=(0,U.jsx)(`ol`,{className:`m-0 grid list-none gap-x-6 gap-y-1.5 p-0 sm:grid-cols-2`,children:m}),t[22]=m,t[23]=h);let g;t[24]===n.text?g=t[25]:(g=n.text&&(0,U.jsx)(`p`,{className:`text-sm text-text-2`,children:n.text}),t[24]=n.text,t[25]=g);let _;return t[26]!==h||t[27]!==g||t[28]!==d||t[29]!==p?(_=(0,U.jsxs)(`section`,{"aria-label":`Alle aktualisieren`,className:`flex flex-col gap-3 rounded-xl border border-cyan-rand/60 bg-cyan-grund/40 p-4`,children:[d,p,h,g]}),t[26]=h,t[27]=g,t[28]=d,t[29]=p,t[30]=_):_=t[30],_}function Ve(e){let t=Re[e.status];return(0,U.jsxs)(`li`,{className:`flex items-start gap-2 text-sm`,children:[(0,U.jsx)(t.Symbol,{className:i(`mt-0.5 size-4 shrink-0`,t.farbe,e.status===`laeuft`&&`motion-safe:animate-spin`),"aria-hidden":!0}),(0,U.jsxs)(`span`,{className:`min-w-0`,children:[(0,U.jsx)(`span`,{className:`text-foreground`,children:e.name}),` `,(0,U.jsxs)(`span`,{className:`text-text-3`,children:[`· `,e.was,` · `,t.text]}),e.text&&e.status!==`eingespielt`&&(0,U.jsx)(`span`,{className:`block text-xs text-text-3`,children:e.text})]})]},`${e.ziel}-${e.baustein}`)}function He(e){return![`wartet`,`laeuft`].includes(e.status)}var Ue=`md:grid-cols-[minmax(0,1.1fr)_minmax(0,1.3fr)_minmax(0,1fr)_minmax(0,0.9fr)_11.5rem]`;function We(e){let t=(0,H.c)(26),{ziel:n,b:r}=e;if(!r){let e=n.art===`proxmox-host`?b(n)?.installiert:null,r;return t[0]===e?r=t[1]:(r=e?(0,U.jsxs)(`span`,{className:`ziffern text-sm`,children:[`PVE `,e]}):(0,U.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}),t[0]=e,t[1]=r),r}let i;t[2]===r.installiert?i=t[3]:(i=r.installiert?l(r.installiert):`–`,t[2]=r.installiert,t[3]=i);let a=i,o=r.zustand===`aktuell`?`text-foreground`:`text-text-2`,s;t[4]!==a||t[5]!==o?(s=(0,U.jsx)(`span`,{className:o,children:a}),t[4]=a,t[5]=o,t[6]=s):s=t[6];let c;t[7]!==r.verfuegbar||t[8]!==r.zustand?(c=r.zustand===`neu`&&r.verfuegbar&&(0,U.jsxs)(`span`,{className:`text-cyan`,children:[`→ `,r.verfuegbar]}),t[7]=r.verfuegbar,t[8]=r.zustand,t[9]=c):c=t[9];let u;t[10]===r.zustand?u=t[11]:(u=r.zustand===`aktuell`&&(0,U.jsx)(`span`,{className:`font-sans text-xs text-gruen-text`,children:`aktuell`}),t[10]=r.zustand,t[11]=u);let d;t[12]===r.zustand?d=t[13]:(d=r.zustand===`unbekannt`&&(0,U.jsx)(`span`,{className:`font-sans text-xs text-text-3`,children:`unklar`}),t[12]=r.zustand,t[13]=d);let f;t[14]!==s||t[15]!==c||t[16]!==u||t[17]!==d?(f=(0,U.jsxs)(`span`,{className:`ziffern flex flex-wrap items-baseline gap-x-2 text-sm`,children:[s,c,u,d]}),t[14]=s,t[15]=c,t[16]=u,t[17]=d,t[18]=f):f=t[18];let p;t[19]!==r.aktion||t[20]!==r.grund||t[21]!==r.zustand?(p=r.zustand===`neu`&&!r.aktion&&r.grund&&(0,U.jsx)(`span`,{className:`text-xs text-text-3`,children:r.grund}),t[19]=r.aktion,t[20]=r.grund,t[21]=r.zustand,t[22]=p):p=t[22];let m;return t[23]!==f||t[24]!==p?(m=(0,U.jsxs)(`span`,{className:`flex min-w-0 flex-col gap-0.5`,children:[f,p]}),t[23]=f,t[24]=p,t[25]=m):m=t[25],m}function Ge(e){let t=(0,H.c)(22),{b:n,onSuchen:r,gesperrt:i}=e;if(!n){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,U.jsx)(`span`,{className:`text-sm text-text-3`,children:`–`}),t[0]=e):e=t[0],e}let a=n.id===`docker`,s;if(n.zustand===`neu`){let e=n.kurz||`Update bereit`,r;t[1]===e?r=t[2]:(r=(0,U.jsx)(`span`,{className:`text-cyan`,children:e}),t[1]=e,t[2]=r),s=r}else if(n.zustand===`aktuell`){let e=a?`Images aktuell`:`aktuell`,n;t[3]===e?n=t[4]:(n=(0,U.jsx)(`span`,{className:`text-gruen-text`,children:e}),t[3]=e,t[4]=n),s=n}else{let e;t[5]===n.grund?e=t[6]:(e=re(n.grund),t[5]=n.grund,t[6]=e);let r=e,i=n.grund??void 0,o=a?`Images unklar`:`unklar`,c;t[7]===r?c=t[8]:(c=r&&(0,U.jsxs)(`span`,{className:`text-text-3`,children:[` · Listen vom `,r]}),t[7]=r,t[8]=c);let l;t[9]!==i||t[10]!==o||t[11]!==c?(l=(0,U.jsxs)(`span`,{className:`text-text-2`,title:i,children:[o,c]}),t[9]=i,t[10]=o,t[11]=c,t[12]=l):l=t[12],s=l}let c=n.zustand===`unbekannt`?n.aktion:null,l;t[13]===s?l=t[14]:(l=(0,U.jsx)(`span`,{className:`min-w-0`,children:s}),t[13]=s,t[14]=l);let u;t[15]!==i||t[16]!==r||t[17]!==c?(u=c&&(0,U.jsx)(F,{variant:`ghost`,size:`icon-sm`,className:`-my-2 shrink-0`,"aria-label":c.label,title:c.label,disabled:i,onClick:()=>r(c),children:(0,U.jsx)(o,{})}),t[15]=i,t[16]=r,t[17]=c,t[18]=u):u=t[18];let d;return t[19]!==l||t[20]!==u?(d=(0,U.jsxs)(`span`,{className:`flex items-center gap-1 text-sm`,children:[l,u]}),t[19]=l,t[20]=u,t[21]=d):d=t[21],d}var Ke={app:`App updaten`,os:`Pakete einspielen`,pakete:`Pakete einspielen`};function qe(e){let t=(0,H.c)(54),{ziel:n,laeuft:r,gesperrt:a,onFrage:o}=e,s;t[0]===n?s=t[1]:(s=T(n),t[0]=n,t[1]=s);let c=s,l;t[2]===n?l=t[3]:(l=b(n),t[2]=n,t[3]=l);let d=l,f,p,m,h,g,_,v,y,x;if(t[4]!==c||t[5]!==a||t[6]!==r||t[7]!==o||t[8]!==d||t[9]!==n){let e=n.bausteine.filter(Je),s=u(n)>=2;_=`row`;let l=s&&`opacity-75`;t[19]===l?v=t[20]:(v=i(`grid grid-cols-1 gap-x-4 gap-y-2 border-t border-linie py-3.5 md:items-center`,Ue,l),t[19]=l,t[20]=v);let b;t[21]===n.name?b=t[22]:(b=(0,U.jsx)(`span`,{className:`text-[15px] font-semibold break-words`,children:n.name}),t[21]=n.name,t[22]=b);let S;t[23]===n?S=t[24]:(S=N(n)!==n.name&&(0,U.jsx)(`span`,{className:`text-sm text-text-3`,children:N(n)}),t[23]=n,t[24]=S),t[25]!==b||t[26]!==S?(y=(0,U.jsxs)(`div`,{role:`rowheader`,className:`flex min-w-0 flex-col`,children:[b,S]}),t[25]=b,t[26]=S,t[27]=y):y=t[27];let C;t[28]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,U.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`App `}),t[28]=C):C=t[28],t[29]!==c||t[30]!==n?(x=(0,U.jsxs)(`span`,{role:`cell`,className:`min-w-0`,children:[C,(0,U.jsx)(We,{ziel:n,b:c})]}),t[29]=c,t[30]=n,t[31]=x):x=t[31];let w;t[32]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,U.jsx)(`span`,{className:`text-xs text-text-3 md:hidden`,children:`Pakete `}),t[32]=w):w=t[32];let T=a||!!r,E;t[33]!==o||t[34]!==n?(E=e=>o({ziel:n,aktion:e}),t[33]=o,t[34]=n,t[35]=E):E=t[35],t[36]!==d||t[37]!==T||t[38]!==E?(f=(0,U.jsxs)(`span`,{role:`cell`,className:`min-w-0`,children:[w,(0,U.jsx)(Ge,{b:d,gesperrt:T,onSuchen:E})]}),t[36]=d,t[37]=T,t[38]=E,t[39]=f):f=t[39];let D=e.length?ne(n):``;t[40]===D?p=t[41]:(p=(0,U.jsx)(`span`,{role:`cell`,className:`text-sm text-text-3`,children:D}),t[40]=D,t[41]=p),m=`cell`,h=`flex flex-wrap gap-2 md:flex-col md:items-stretch`,g=r?(0,U.jsxs)(`span`,{role:`status`,className:`text-sm text-cyan`,children:[`Läuft: `,r]}):e.map(e=>(0,U.jsx)(F,{variant:`outline`,size:`sm`,disabled:a,onClick:()=>e.aktion&&o({ziel:n,aktion:e.aktion}),children:Ke[e.id]??e.aktion?.label??`Updaten`},e.id)),t[4]=c,t[5]=a,t[6]=r,t[7]=o,t[8]=d,t[9]=n,t[10]=f,t[11]=p,t[12]=m,t[13]=h,t[14]=g,t[15]=_,t[16]=v,t[17]=y,t[18]=x}else f=t[10],p=t[11],m=t[12],h=t[13],g=t[14],_=t[15],v=t[16],y=t[17],x=t[18];let S;t[42]!==m||t[43]!==h||t[44]!==g?(S=(0,U.jsx)(`span`,{role:m,className:h,children:g}),t[42]=m,t[43]=h,t[44]=g,t[45]=S):S=t[45];let C;return t[46]!==f||t[47]!==p||t[48]!==S||t[49]!==_||t[50]!==v||t[51]!==y||t[52]!==x?(C=(0,U.jsxs)(`div`,{role:_,className:v,children:[y,x,f,p,S]}),t[46]=f,t[47]=p,t[48]=S,t[49]=_,t[50]=v,t[51]=y,t[52]=x,t[53]=C):C=t[53],C}function Je(e){return e.zustand===`neu`&&e.aktion}function Ye(e){let t=(0,H.c)(42),{ziele:n,laufend:r,gesperrt:a,onAktion:o}=e,[s,c]=(0,q.useState)(null),l,u,d,f,p,m;if(t[0]!==a||t[1]!==r||t[2]!==n){let e=[...n].sort(Ze),o;t[9]===n?o=t[10]:(o=n.filter(Xe),t[9]=n,t[10]=o),l=o.length,u=`table`,d=`Updates je Gerät`,f=`flex flex-col`,t[11]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,U.jsxs)(`div`,{role:`row`,className:i(`schild hidden gap-x-4 pb-2 text-xs font-semibold text-text-3 md:grid`,Ue),children:[(0,U.jsx)(`span`,{role:`columnheader`,children:`Gerät`}),(0,U.jsx)(`span`,{role:`columnheader`,children:`App`}),(0,U.jsx)(`span`,{role:`columnheader`,children:`Pakete`}),(0,U.jsx)(`span`,{role:`columnheader`,children:`Rückweg`}),(0,U.jsx)(`span`,{role:`columnheader`,className:`sr-only`,children:`Aktion`})]}),t[11]=p):p=t[11];let s;t[12]!==a||t[13]!==r?(s=e=>(0,U.jsx)(qe,{ziel:e,laeuft:r.get(e.id)??null,gesperrt:a||r.has(e.id),onFrage:c},e.id),t[12]=a,t[13]=r,t[14]=s):s=t[14],m=e.map(s),t[0]=a,t[1]=r,t[2]=n,t[3]=l,t[4]=u,t[5]=d,t[6]=f,t[7]=p,t[8]=m}else l=t[3],u=t[4],d=t[5],f=t[6],p=t[7],m=t[8];let h;t[15]!==u||t[16]!==d||t[17]!==f||t[18]!==p||t[19]!==m?(h=(0,U.jsxs)(`div`,{role:u,"aria-label":d,className:f,children:[p,m]}),t[15]=u,t[16]=d,t[17]=f,t[18]=p,t[19]=m,t[20]=h):h=t[20];let g;t[21]!==l||t[22]!==n.length?(g=l>0&&l===n.length&&(0,U.jsx)(k,{art:`gruen`,children:`Alles aktuell`}),t[21]=l,t[22]=n.length,t[23]=g):g=t[23];let _=!!s,v=s?`${s.ziel.name}: ${s.aktion.label}`:``,y=s?.aktion.frage??``,b=s?.aktion.label??``,x;t[24]===s?.aktion.pfad?x=t[25]:(x=s?.aktion.pfad.endsWith(`/neustart`),t[24]=s?.aktion.pfad,t[25]=x);let S=!!x,C;t[26]!==s||t[27]!==o?(C=()=>{s&&o(s.aktion),c(null)},t[26]=s,t[27]=o,t[28]=C):C=t[28];let w;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(w=()=>c(null),t[29]=w):w=t[29];let T;t[30]!==a||t[31]!==y||t[32]!==b||t[33]!==S||t[34]!==C||t[35]!==_||t[36]!==v?(T=(0,U.jsx)(I,{offen:_,titel:v,text:y,knopf:b,gefahr:S,gesperrt:a,onJa:C,onNein:w}),t[30]=a,t[31]=y,t[32]=b,t[33]=S,t[34]=C,t[35]=_,t[36]=v,t[37]=T):T=t[37];let E;return t[38]!==T||t[39]!==h||t[40]!==g?(E=(0,U.jsxs)(U.Fragment,{children:[h,g,T]}),t[38]=T,t[39]=h,t[40]=g,t[41]=E):E=t[41],E}function Xe(e){return u(e)===3}function Ze(e,t){return u(e)-u(t)}var Qe=[`Proxmox-Host`,`AdGuard`,`NPMplus`,`NetBird`,`PVE Scripts Local`,`Gitea`,`PBS`,`Arcane mit Docker`],$e={eingespielt:{art:`gruen`,text:`eingespielt`},zurueckgerollt:{art:`bernstein`,text:`zurückgerollt`},fehler:{art:`rot`,text:`Fehler`},neustart:{art:`cyan`,text:`Neustart`},aufgeraeumt:{art:`gruen`,text:`aufgeräumt`}},$=e=>P(new Date(e*1e3).toISOString());function et(){let e=(0,H.c)(4),t,n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,U.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Der Homelab-Teil läuft als eigene Instanz in einem kleinen Container auf dem Proxmox-PC. Von dort prüft er auch die KI-Box von außen.`}),n=(0,U.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Steht er, erscheinen hier alle Geräte mit ihren offenen Updates. Ein Update startest du mit „Jetzt updaten“: Vorher wird gesichert, danach die Erreichbarkeit geprüft, und ist sie rot, geht es von selbst zurück.`}),e[0]=t,e[1]=n):(t=e[0],n=e[1]);let r;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,U.jsx)(`h3`,{className:`schild text-sm tracking-[0.18em] text-text-3`,children:`Dazu kommen`}),e[2]=r):r=e[2];let i;return e[3]===Symbol.for(`react.memo_cache_sentinel`)?(i=(0,U.jsxs)(U.Fragment,{children:[t,n,(0,U.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[r,(0,U.jsx)(`ul`,{className:`flex flex-wrap gap-2`,children:Qe.map(tt)})]}),(0,U.jsx)(`p`,{className:`text-sm text-text-3`,children:`Der Container wird erst nach deiner Freigabe angelegt.`})]}),e[3]=i):i=e[3],i}function tt(e){return(0,U.jsx)(`li`,{children:(0,U.jsx)(k,{children:e})},e)}function nt(e){let t=(0,H.c)(9),{partner:n}=e,r;t[0]===n.eingerichtet?r=t[1]:(r=n.eingerichtet?(0,U.jsx)(k,{art:`rot`,children:`Antwortet nicht`}):(0,U.jsx)(k,{children:`Noch nicht eingerichtet`}),t[0]=n.eingerichtet,t[1]=r);let i=r,a;t[2]!==n.eingerichtet||t[3]!==n.fehler||t[4]!==n.url?(a=n.eingerichtet?(0,U.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Der Homelab-Teil (`,n.url,`) ist `,n.fehler??`nicht erreichbar`,`. Hält das an, meldet der Wächter es nach fünf Minuten auf Telegram.`]}):(0,U.jsx)(et,{}),t[2]=n.eingerichtet,t[3]=n.fehler,t[4]=n.url,t[5]=a):a=t[5];let o;return t[6]!==i||t[7]!==a?(o=(0,U.jsx)(M,{titel:`Homelab`,rechts:i,children:a}),t[6]=i,t[7]=a,t[8]=o):o=t[8],o}function rt(e){let t=(0,H.c)(10),{hinweise:n}=e,r=n.some(at)?`rot`:`bernstein`,i;t[0]!==n.length||t[1]!==r?(i=(0,U.jsxs)(k,{art:r,children:[n.length,` offen`]}),t[0]=n.length,t[1]=r,t[2]=i):i=t[2];let a;t[3]===n?a=t[4]:(a=n.map(it),t[3]=n,t[4]=a);let o;t[5]===a?o=t[6]:(o=(0,U.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:a}),t[5]=a,t[6]=o);let s;return t[7]!==i||t[8]!==o?(s=(0,U.jsx)(M,{titel:`Hinweise`,id:`hinweise`,rechts:i,children:o}),t[7]=i,t[8]=o,t[9]=s):s=t[9],s}function it(e){return(0,U.jsxs)(`li`,{className:`flex flex-col gap-1 border-t border-linie py-3 first:border-t-0 first:pt-0`,children:[(0,U.jsx)(`span`,{className:e.stufe===`rot`?`text-[15px] font-medium text-rot-text`:`text-[15px] font-medium text-bernstein`,children:e.titel}),(0,U.jsx)(`span`,{className:`text-sm text-text-2`,children:e.text})]},e.id)}function at(e){return e.stufe===`rot`}function ot(e){let t=(0,H.c)(8),{laeufe:n}=e,r,i,a;if(t[0]!==n){a=Symbol.for(`react.early_return_sentinel`);bb0:{let e=n.filter(ct).slice(0,12);if(e.length===0){let e;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,U.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Noch kein Update im Homelab eingespielt.`}),t[4]=e):e=t[4],a=e;break bb0}r=`@container m-0 flex list-none flex-col p-0`,i=e.map(st)}t[0]=n,t[1]=r,t[2]=i,t[3]=a}else r=t[1],i=t[2],a=t[3];if(a!==Symbol.for(`react.early_return_sentinel`))return a;let o;return t[5]!==r||t[6]!==i?(o=(0,U.jsx)(`ol`,{className:r,children:i}),t[5]=r,t[6]=i,t[7]=o):o=t[7],o}function st(e){let t=e.ergebnis?$e[e.ergebnis]:{art:`grau`,text:`unterbrochen`};return(0,U.jsxs)(`li`,{className:`flex flex-col gap-1.5 border-t border-linie py-3 first:border-t-0 first:pt-0`,children:[(0,U.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 @sm:grid-cols-[112px_minmax(0,1fr)_auto]`,children:[(0,U.jsx)(`span`,{className:`ziffern col-start-1 row-start-1 text-sm text-text-3`,children:$(e.start)}),(0,U.jsx)(`span`,{className:`col-span-2 row-start-2 min-w-0 text-[15px] break-words @sm:col-span-1 @sm:col-start-2 @sm:row-start-1`,children:e.name}),(0,U.jsx)(`span`,{className:`col-start-2 row-start-1 justify-self-end @sm:col-start-3`,children:(0,U.jsx)(k,{art:t.art,children:t.text})})]}),e.text&&(0,U.jsx)(`p`,{className:`m-0 text-sm text-text-2 @sm:pl-[124px]`,children:e.text})]},e.id)}function ct(e){return e.status!==`laeuft`}function lt(e){let t=(0,H.c)(9),{stand:n}=e;if(!n.ausfuehrer.verbunden){let e;t[0]===n.ausfuehrer.zuletzt?e=t[1]:(e=n.ausfuehrer.zuletzt?` (zuletzt ${$(n.ausfuehrer.zuletzt)})`:``,t[0]=n.ausfuehrer.zuletzt,t[1]=e);let r;return t[2]===e?r=t[3]:(r=(0,U.jsxs)(`p`,{role:`alert`,className:`rounded-xl border border-bernstein/60 bg-bernstein-grund px-4 py-3 text-[15px] text-bernstein`,children:[`Der Ausführer auf dem Proxmox-Host meldet sich nicht`,e,`. Die Geräte zeigen den letzten bekannten Stand; Updates starten erst, wenn er wieder da ist.`]}),t[2]=e,t[3]=r),r}if(!n.bericht){let e;return t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,U.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Der Ausführer hat noch keinen Bericht geschickt.`}),t[4]=e):e=t[4],e}if(n.bericht.veraltet){let e;t[5]===n.bericht.empfangen?e=t[6]:(e=$(n.bericht.empfangen),t[5]=n.bericht.empfangen,t[6]=e);let r;return t[7]===e?r=t[8]:(r=(0,U.jsxs)(`p`,{className:`text-[15px] text-bernstein`,children:[`Der letzte Bericht ist von `,e,`; die Angaben können veraltet sein.`]}),t[7]=e,t[8]=r),r}return null}function ut(){let e=(0,H.c)(20),t=p(),n=te(),r=t.data?.rolle===`homelab`||!!(n.data?.eingerichtet&&n.data.erreichbar),i=s(r),a=x(r),o=f(r),c=E(),l=null;if(t.isPending||n.isPending){let t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,U.jsx)(j,{text:`Wird gelesen …`}),e[0]=t):t=e[0],l=t}else if(!r){let t;e[1]!==n.data||e[2]!==n.error?.message?(t=n.data?(0,U.jsx)(nt,{partner:n.data}):(0,U.jsx)(j,{fehler:!0,text:`Der Partner lässt sich nicht abfragen: ${n.error?.message??`keine Daten`}`}),e[1]=n.data,e[2]=n.error?.message,e[3]=t):t=e[3],l=t}else if(i.isPending){let t;e[4]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,U.jsx)(j,{text:`Der Homelab-Teil meldet sich gleich …`}),e[4]=t):t=e[4],l=t}else if(!i.data){let t=`Der Homelab-Teil antwortet nicht: ${i.error?.message??`keine Daten`}`,n;e[5]===t?n=e[6]:(n=(0,U.jsx)(j,{fehler:!0,text:t}),e[5]=t,e[6]=n),l=n}let u;if(e[7]!==a.data?.laeufe){u=new Map;for(let e of a.data?.laeufe??[])e.status===`laeuft`&&u.set(e.ziel,e.schritte.at(-1)??`startet …`);e[7]=a.data?.laeufe,e[8]=u}else u=e[8];let d;e[9]===a.data?.laeufe?d=e[10]:(d=a.data?.laeufe??[],e[9]=a.data?.laeufe,e[10]=d);let m;e[11]===o.data?.hinweise?m=e[12]:(m=o.data?.hinweise??[],e[11]=o.data?.hinweise,e[12]=m);let h;return e[13]!==c||e[14]!==l||e[15]!==i.data||e[16]!==u||e[17]!==d||e[18]!==m?(h={ersatz:l,stand:i.data,laufend:u,laeufe:d,hinweise:m,aktion:c},e[13]=c,e[14]=l,e[15]=i.data,e[16]=u,e[17]=d,e[18]=m,e[19]=h):h=e[19],h}function dt(){let e=(0,H.c)(46),t=w(),{ersatz:n,stand:r,laufend:i,hinweise:a,aktion:o}=ut(),s=S(`1h`,!!r),c=h(!!r);if(n||!r)return n;let l,u;e[0]!==a||e[1]!==i.size||e[2]!==r?(l=r.bericht?$(r.bericht.empfangen):null,u=ie(r,a,i.size,l),e[0]=a,e[1]=i.size,e[2]=r,e[3]=l,e[4]=u):(l=e[3],u=e[4]);let f=u,p;if(e[5]!==i||e[6]!==r.ziele){let t;e[8]===i?t=e[9]:(t=e=>D(e,i.has(e.id)),e[8]=i,e[9]=t),p=r.ziele.map(t),e[5]=i,e[6]=r.ziele,e[7]=p}else p=e[7];let g;e[10]!==f.ziel||e[11]!==t?(g=()=>{f.ziel===`updates`?t({to:`/homelab/updates`}):f.ziel&&document.getElementById(f.ziel)?.scrollIntoView({behavior:`smooth`,block:`start`})},e[10]=f.ziel,e[11]=t,e[12]=g):g=e[12];let _;e[13]!==f||e[14]!==p||e[15]!==g?(_=(0,U.jsx)(he,{lage:f,lampen:p,onAnsehen:g}),e[13]=f,e[14]=p,e[15]=g,e[16]=_):_=e[16];let v;e[17]===r?v=e[18]:(v=(0,U.jsx)(lt,{stand:r}),e[17]=r,e[18]=v);let y;e[19]===a?y=e[20]:(y=a.length>0&&(0,U.jsx)(rt,{hinweise:a}),e[19]=a,e[20]=y);let b;e[21]===l?b=e[22]:(b=l&&(0,U.jsxs)(`span`,{className:`ziffern text-sm text-text-3`,children:[`Stand `,l]}),e[21]=l,e[22]=b);let x;e[23]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,U.jsxs)(m,{to:`/homelab/monitoring`,className:`inline-flex items-center gap-1 text-sm text-lab-text hover:underline`,children:[`Monitoring `,(0,U.jsx)(d,{className:`size-3.5`,"aria-hidden":!0})]}),e[23]=x):x=e[23];let C;e[24]===b?C=e[25]:(C=(0,U.jsxs)(`span`,{className:`flex items-center gap-3`,children:[b,x]}),e[24]=b,e[25]=C);let T=s.data?.geraete,E;e[26]!==r.ziele||e[27]!==T?(E=(0,U.jsx)(fe,{ziele:r.ziele,messwerte:T}),e[26]=r.ziele,e[27]=T,e[28]=E):E=e[28];let O;e[29]===s.isError?O=e[30]:(O=s.isError&&(0,U.jsx)(`p`,{className:`text-xs text-text-3`,children:`CPU und Speicher erscheinen, sobald der Ausführer Messwerte schickt.`}),e[29]=s.isError,e[30]=O);let k;e[31]!==E||e[32]!==O||e[33]!==C?(k=(0,U.jsxs)(M,{titel:`Geräte`,id:`geraete`,rechts:C,children:[E,O]}),e[31]=E,e[32]=O,e[33]=C,e[34]=k):k=e[34];let A;e[35]!==o||e[36]!==i||e[37]!==c.data||e[38]!==r.ausfuehrer?(A=c.data?.bericht&&(0,U.jsx)(M,{titel:`Speicher und Sicherungen`,id:`speicher`,children:(0,U.jsx)(Oe,{daten:c.data,laeuft:i.get(`pve`)??null,gesperrt:o.isPending||i.has(`pve`)||!r.ausfuehrer.verbunden,onAktion:e=>o.mutate(e)})}),e[35]=o,e[36]=i,e[37]=c.data,e[38]=r.ausfuehrer,e[39]=A):A=e[39];let j;return e[40]!==k||e[41]!==A||e[42]!==_||e[43]!==v||e[44]!==y?(j=(0,U.jsxs)(U.Fragment,{children:[_,v,y,k,A]}),e[40]=k,e[41]=A,e[42]=_,e[43]=v,e[44]=y,e[45]=j):j=e[45],j}function ft(){let e=(0,H.c)(29),{ersatz:t,stand:n,laufend:r,laeufe:i,aktion:a}=ut(),o=O(!!n);if(t||!n)return t;let s=o.data?.sammellauf??null,c=s?.status===`laeuft`,l;e[0]===n.ziele?l=e[1]:(l=y(n.ziele).filter(pt),e[0]=n.ziele,e[1]=l);let u=l.length,d=a.isPending||c||!n.ausfuehrer.verbunden,f;e[2]!==u||e[3]!==d?(f=(0,U.jsx)(Ie,{anzahl:u,gesperrt:d}),e[2]=u,e[3]=d,e[4]=f):f=e[4];let p;e[5]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,U.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Je Gerät, was läuft und was neu ist. Du startest jedes Update selbst — einzeln oder alle nacheinander. Vorher wird gesichert, danach geprüft; ist die Prüfung rot, geht es von selbst zurück.`}),e[5]=p):p=e[5];let m;e[6]===n?m=e[7]:(m=(0,U.jsx)(lt,{stand:n}),e[6]=n,e[7]=m);let h;e[8]!==s||e[9]!==c||e[10]!==n.bericht?.empfangen?(h=s&&(c||s.ende&&(n.bericht?.empfangen??0)-s.ende<21600)&&(0,U.jsx)(Be,{lauf:s}),e[8]=s,e[9]=c,e[10]=n.bericht?.empfangen,e[11]=h):h=e[11];let g=a.isPending||c||!n.ausfuehrer.verbunden,_;e[12]===a?_=e[13]:(_=e=>a.mutate(e),e[12]=a,e[13]=_);let v;e[14]!==r||e[15]!==n.ziele||e[16]!==g||e[17]!==_?(v=(0,U.jsx)(Ye,{ziele:n.ziele,laufend:r,gesperrt:g,onAktion:_}),e[14]=r,e[15]=n.ziele,e[16]=g,e[17]=_,e[18]=v):v=e[18];let b;e[19]!==f||e[20]!==m||e[21]!==h||e[22]!==v?(b=(0,U.jsxs)(M,{titel:`Updates`,rechts:f,children:[p,m,h,v]}),e[19]=f,e[20]=m,e[21]=h,e[22]=v,e[23]=b):b=e[23];let x;e[24]===i?x=e[25]:(x=(0,U.jsx)(M,{titel:`Verlauf`,children:(0,U.jsx)(ot,{laeufe:i})}),e[24]=i,e[25]=x);let S;return e[26]!==x||e[27]!==b?(S=(0,U.jsxs)(U.Fragment,{children:[b,x]}),e[26]=x,e[27]=b,e[28]=S):S=e[28],S}function pt(e){return e.baustein.aktion}export{dt as HomelabSeite,ft as HomelabUpdatesSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/HomelabProtokoll-DVx8Px-4.js b/frontend/dist/assets/HomelabProtokoll-NgNeh7ai.js similarity index 97% rename from frontend/dist/assets/HomelabProtokoll-DVx8Px-4.js rename to frontend/dist/assets/HomelabProtokoll-NgNeh7ai.js index b8aca09..c211680 100644 --- a/frontend/dist/assets/HomelabProtokoll-DVx8Px-4.js +++ b/frontend/dist/assets/HomelabProtokoll-NgNeh7ai.js @@ -1 +1 @@ -import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{t as a}from"./chevron-right-DzY92a1B.js";import{t as o}from"./search-_IbVYCuo.js";import{B as s,G as c,Ht as l,J as u,Kt as d,p as f,tt as p,u as m}from"./index-COh3_SSc.js";var h={name:`bell`,size:24,node:[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]};h.node;var g=d(h),_={name:`cog`,size:24,node:[[`path`,{d:`M11 10.27 7 3.34`,key:`16pf9h`}],[`path`,{d:`m11 13.73-4 6.93`,key:`794ttg`}],[`path`,{d:`M12 22v-2`,key:`1osdcq`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M14 12h8`,key:`4f43i9`}],[`path`,{d:`m17 20.66-1-1.73`,key:`eq3orb`}],[`path`,{d:`m17 3.34-1 1.73`,key:`2wel8s`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`m20.66 17-1.73-1`,key:`sg0v6f`}],[`path`,{d:`m20.66 7-1.73 1`,key:`1ow05n`}],[`path`,{d:`m3.34 17 1.73-1`,key:`nuk764`}],[`path`,{d:`m3.34 7 1.73 1`,key:`1ulond`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}],[`circle`,{cx:`12`,cy:`12`,r:`8`,key:`46899m`}]]};_.node;var v=d(_),y={name:`triangle-alert`,size:24,node:[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]],aliases:[`alert-triangle`]};y.node;var b=d(y),x=t(),S=r(e(),1),C=n(),w=[{id:`alle`,name:`Alles`},{id:`lauf`,name:`Updates`},{id:`auftrag`,name:`Ausführer`},{id:`hinweis`,name:`Hinweise`},{id:`meldung`,name:`Meldungen`},{id:`pflege`,name:`Pflege`}],T={auftrag:v,lauf:l,sammellauf:l,hinweis:b,meldung:g,pflege:o},E={ok:{punkt:`bg-gruen`,text:`text-gruen-text`,wort:`ok`},info:{punkt:`bg-cyan`,text:`text-cyan-text`,wort:`Info`},warn:{punkt:`bg-bernstein`,text:`text-bernstein`,wort:`Warnung`},fehler:{punkt:`bg-rot`,text:`text-rot-text`,wort:`Fehler`}},D=new Intl.DateTimeFormat(`de-DE`,{weekday:`long`,day:`2-digit`,month:`2-digit`,timeZone:`Europe/Berlin`}),O=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,timeZone:`Europe/Berlin`}),k=new Intl.DateTimeFormat(`sv-SE`,{timeZone:`Europe/Berlin`});function A(e){let t=k.format(new Date),n=k.format(new Date(Date.now()-864e5)),r=k.format(new Date(e*1e3));return r===t?`Heute`:r===n?`Gestern`:D.format(new Date(e*1e3))}function j(e){let t=(0,x.c)(37),{e:n,geraet:r}=e,[o,s]=(0,S.useState)(!1),c=E[n.stufe]??E.info,l=T[n.art]??v,u;t[0]===n.zeit?u=t[1]:(u=O.format(new Date(n.zeit*1e3)),t[0]=n.zeit,t[1]=u);let d;t[2]===u?d=t[3]:(d=(0,C.jsx)(`span`,{className:`ziffern pt-0.5 text-xs text-text-3`,children:u}),t[2]=u,t[3]=d);let f;t[4]===c.punkt?f=t[5]:(f=i(`size-2.5 rounded-full`,c.punkt),t[4]=c.punkt,t[5]=f);let p;t[6]===f?p=t[7]:(p=(0,C.jsx)(`span`,{className:`flex flex-col items-center pt-1`,children:(0,C.jsx)(`span`,{"aria-hidden":!0,className:f})}),t[6]=f,t[7]=p);let m;t[8]===l?m=t[9]:(m=(0,C.jsx)(l,{className:`size-3.5 shrink-0 text-text-3`,"aria-hidden":!0}),t[8]=l,t[9]=m);let h=n.stufe===`fehler`||n.stufe===`warn`?c.text:`text-foreground`,g;t[10]===h?g=t[11]:(g=i(h),t[10]=h,t[11]=g);let _;t[12]!==n.titel||t[13]!==g?(_=(0,C.jsx)(`span`,{className:g,children:n.titel}),t[12]=n.titel,t[13]=g,t[14]=_):_=t[14];let y;t[15]===r?y=t[16]:(y=r&&(0,C.jsx)(`span`,{className:`rounded-md bg-lab-grund px-1.5 text-xs text-lab-text`,children:r}),t[15]=r,t[16]=y);let b;t[17]===c.wort?b=t[18]:(b=(0,C.jsxs)(`span`,{className:`sr-only`,children:[`(`,c.wort,`)`]}),t[17]=c.wort,t[18]=b);let w;t[19]!==b||t[20]!==m||t[21]!==_||t[22]!==y?(w=(0,C.jsxs)(`span`,{className:`flex flex-wrap items-center gap-x-2 text-[15px]`,children:[m,_,y,b]}),t[19]=b,t[20]=m,t[21]=_,t[22]=y,t[23]=w):w=t[23];let D;t[24]===n.text?D=t[25]:(D=n.text&&(0,C.jsx)(`span`,{className:`text-sm text-text-2`,children:n.text}),t[24]=n.text,t[25]=D);let k;t[26]!==n.details||t[27]!==o?(k=n.details&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`button`,{type:`button`,onClick:()=>s(!o),"aria-expanded":o,className:`inline-flex h-8 items-center gap-1 self-start text-xs text-cyan hover:underline`,children:[(0,C.jsx)(a,{className:i(`size-3.5 transition-transform`,o&&`rotate-90`),"aria-hidden":!0}),o?`Ausgabe verbergen`:`Ausgabe zeigen`]}),o&&(0,C.jsx)(`pre`,{className:`ziffern m-0 max-h-72 overflow-auto rounded-md border border-linie bg-[#0b0d0f] p-2.5 text-xs whitespace-pre-wrap text-text-2`,children:n.details})]}),t[26]=n.details,t[27]=o,t[28]=k):k=t[28];let A;t[29]!==w||t[30]!==D||t[31]!==k?(A=(0,C.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-0.5`,children:[w,D,k]}),t[29]=w,t[30]=D,t[31]=k,t[32]=A):A=t[32];let j;return t[33]!==A||t[34]!==d||t[35]!==p?(j=(0,C.jsxs)(`li`,{className:`grid grid-cols-[64px_18px_minmax(0,1fr)] gap-x-3 border-t border-linie py-2.5 first:border-t-0`,children:[d,p,A]}),t[33]=A,t[34]=d,t[35]=p,t[36]=j):j=t[36],j}function M(){let e=(0,x.c)(16),t=u(),n=p(),r=t.data?.rolle===`homelab`||!!(n.data?.eingerichtet&&n.data.erreichbar),[a,o]=(0,S.useState)(`alle`),[l,d]=(0,S.useState)(!1),h=c(r,l),g=new Map((s(r).data?.ziele??[]).map(N));if(t.isPending||n.isPending){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,C.jsx)(f,{text:`Wird gelesen …`}),e[0]=t):t=e[0],t}if(!r){let t;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,C.jsx)(f,{fehler:!0,text:`Der Homelab-Teil antwortet gerade nicht.`}),e[1]=t):t=e[1],t}let _=(h.data?.eintraege??[]).filter(e=>a===`alle`||e.art===a||a===`lauf`&&e.art===`sammellauf`),v=[];for(let e of _){let t=A(e.zeit);v.at(-1)?.titel!==t&&v.push({titel:t,eintraege:[]}),v.at(-1).eintraege.push(e)}let y=m,b;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,C.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Was der Homelab-Teil getan hat: Aufträge an den Ausführer auf dem Proxmox-Host, Update-Läufe, Hinweise, gesendete Meldungen und die nächtliche Paketsuche.`}),e[2]=b):b=e[2];let T;e[3]===a?T=e[4]:(T=w.map(e=>(0,C.jsx)(`button`,{type:`button`,onClick:()=>o(e.id),"aria-pressed":a===e.id,className:i(`h-9 rounded-full border px-3.5 text-sm`,a===e.id?`border-lab-rand bg-lab-grund text-lab-text`:`border-linie text-text-2 hover:border-linie-stark hover:text-foreground`),children:e.name},e.id)),e[3]=a,e[4]=T);let E;e[5]===Symbol.for(`react.memo_cache_sentinel`)?(E=e=>d(e.target.checked),e[5]=E):E=e[5];let D;e[6]===l?D=e[7]:(D=(0,C.jsxs)(`label`,{className:`ml-auto flex h-9 cursor-pointer items-center gap-2 text-sm text-text-2`,children:[(0,C.jsx)(`input`,{type:`checkbox`,checked:l,onChange:E,className:`size-4 accent-[var(--lab)]`}),`Berichte zeigen (alle 10 min)`]}),e[6]=l,e[7]=D);let O;e[8]!==T||e[9]!==D?(O=(0,C.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,role:`group`,"aria-label":`Filter`,children:[T,D]}),e[8]=T,e[9]=D,e[10]=O):O=e[10];let k=h.isPending?(0,C.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):h.isError?(0,C.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Das Protokoll lässt sich nicht lesen: `,h.error.message]}):v.length===0?(0,C.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Dazu gibt es noch keine Einträge.`}):(0,C.jsx)(`div`,{className:i(`flex flex-col gap-5`,h.isFetching&&`opacity-80`),children:v.map(e=>(0,C.jsxs)(`section`,{"aria-label":e.titel,className:`flex flex-col gap-1`,children:[(0,C.jsx)(`h3`,{className:`schild text-sm tracking-[0.18em] text-lab-text`,children:e.titel}),(0,C.jsx)(`ol`,{className:`m-0 flex list-none flex-col p-0`,children:e.eintraege.map((e,t)=>{let n=e.ziel?g.get(e.ziel)??e.ziel:null;return(0,C.jsx)(j,{e,geraet:n&&!e.titel.includes(n)?n:null},`${e.zeit}-${e.titel}-${t}`)})})]},e.titel))}),M;return e[11]!==y||e[12]!==b||e[13]!==O||e[14]!==k?(M=(0,C.jsxs)(y,{titel:`Protokoll`,children:[b,O,k]}),e[11]=y,e[12]=b,e[13]=O,e[14]=k,e[15]=M):M=e[15],M}function N(e){return[e.id,e.name]}export{M as HomelabProtokollSeite}; \ No newline at end of file +import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{t as a}from"./chevron-right-T7IsaTwB.js";import{t as o}from"./search-B5rIIYDK.js";import{B as s,G as c,Ht as l,J as u,Kt as d,p as f,tt as p,u as m}from"./index-FvHAYExN.js";var h={name:`bell`,size:24,node:[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]};h.node;var g=d(h),_={name:`cog`,size:24,node:[[`path`,{d:`M11 10.27 7 3.34`,key:`16pf9h`}],[`path`,{d:`m11 13.73-4 6.93`,key:`794ttg`}],[`path`,{d:`M12 22v-2`,key:`1osdcq`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M14 12h8`,key:`4f43i9`}],[`path`,{d:`m17 20.66-1-1.73`,key:`eq3orb`}],[`path`,{d:`m17 3.34-1 1.73`,key:`2wel8s`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`m20.66 17-1.73-1`,key:`sg0v6f`}],[`path`,{d:`m20.66 7-1.73 1`,key:`1ow05n`}],[`path`,{d:`m3.34 17 1.73-1`,key:`nuk764`}],[`path`,{d:`m3.34 7 1.73 1`,key:`1ulond`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}],[`circle`,{cx:`12`,cy:`12`,r:`8`,key:`46899m`}]]};_.node;var v=d(_),y={name:`triangle-alert`,size:24,node:[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]],aliases:[`alert-triangle`]};y.node;var b=d(y),x=t(),S=r(e(),1),C=n(),w=[{id:`alle`,name:`Alles`},{id:`lauf`,name:`Updates`},{id:`auftrag`,name:`Ausführer`},{id:`hinweis`,name:`Hinweise`},{id:`meldung`,name:`Meldungen`},{id:`pflege`,name:`Pflege`}],T={auftrag:v,lauf:l,sammellauf:l,hinweis:b,meldung:g,pflege:o},E={ok:{punkt:`bg-gruen`,text:`text-gruen-text`,wort:`ok`},info:{punkt:`bg-cyan`,text:`text-cyan-text`,wort:`Info`},warn:{punkt:`bg-bernstein`,text:`text-bernstein`,wort:`Warnung`},fehler:{punkt:`bg-rot`,text:`text-rot-text`,wort:`Fehler`}},D=new Intl.DateTimeFormat(`de-DE`,{weekday:`long`,day:`2-digit`,month:`2-digit`,timeZone:`Europe/Berlin`}),O=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,timeZone:`Europe/Berlin`}),k=new Intl.DateTimeFormat(`sv-SE`,{timeZone:`Europe/Berlin`});function A(e){let t=k.format(new Date),n=k.format(new Date(Date.now()-864e5)),r=k.format(new Date(e*1e3));return r===t?`Heute`:r===n?`Gestern`:D.format(new Date(e*1e3))}function j(e){let t=(0,x.c)(37),{e:n,geraet:r}=e,[o,s]=(0,S.useState)(!1),c=E[n.stufe]??E.info,l=T[n.art]??v,u;t[0]===n.zeit?u=t[1]:(u=O.format(new Date(n.zeit*1e3)),t[0]=n.zeit,t[1]=u);let d;t[2]===u?d=t[3]:(d=(0,C.jsx)(`span`,{className:`ziffern pt-0.5 text-xs text-text-3`,children:u}),t[2]=u,t[3]=d);let f;t[4]===c.punkt?f=t[5]:(f=i(`size-2.5 rounded-full`,c.punkt),t[4]=c.punkt,t[5]=f);let p;t[6]===f?p=t[7]:(p=(0,C.jsx)(`span`,{className:`flex flex-col items-center pt-1`,children:(0,C.jsx)(`span`,{"aria-hidden":!0,className:f})}),t[6]=f,t[7]=p);let m;t[8]===l?m=t[9]:(m=(0,C.jsx)(l,{className:`size-3.5 shrink-0 text-text-3`,"aria-hidden":!0}),t[8]=l,t[9]=m);let h=n.stufe===`fehler`||n.stufe===`warn`?c.text:`text-foreground`,g;t[10]===h?g=t[11]:(g=i(h),t[10]=h,t[11]=g);let _;t[12]!==n.titel||t[13]!==g?(_=(0,C.jsx)(`span`,{className:g,children:n.titel}),t[12]=n.titel,t[13]=g,t[14]=_):_=t[14];let y;t[15]===r?y=t[16]:(y=r&&(0,C.jsx)(`span`,{className:`rounded-md bg-lab-grund px-1.5 text-xs text-lab-text`,children:r}),t[15]=r,t[16]=y);let b;t[17]===c.wort?b=t[18]:(b=(0,C.jsxs)(`span`,{className:`sr-only`,children:[`(`,c.wort,`)`]}),t[17]=c.wort,t[18]=b);let w;t[19]!==b||t[20]!==m||t[21]!==_||t[22]!==y?(w=(0,C.jsxs)(`span`,{className:`flex flex-wrap items-center gap-x-2 text-[15px]`,children:[m,_,y,b]}),t[19]=b,t[20]=m,t[21]=_,t[22]=y,t[23]=w):w=t[23];let D;t[24]===n.text?D=t[25]:(D=n.text&&(0,C.jsx)(`span`,{className:`text-sm text-text-2`,children:n.text}),t[24]=n.text,t[25]=D);let k;t[26]!==n.details||t[27]!==o?(k=n.details&&(0,C.jsxs)(C.Fragment,{children:[(0,C.jsxs)(`button`,{type:`button`,onClick:()=>s(!o),"aria-expanded":o,className:`inline-flex h-8 items-center gap-1 self-start text-xs text-cyan hover:underline`,children:[(0,C.jsx)(a,{className:i(`size-3.5 transition-transform`,o&&`rotate-90`),"aria-hidden":!0}),o?`Ausgabe verbergen`:`Ausgabe zeigen`]}),o&&(0,C.jsx)(`pre`,{className:`ziffern m-0 max-h-72 overflow-auto rounded-md border border-linie bg-[#0b0d0f] p-2.5 text-xs whitespace-pre-wrap text-text-2`,children:n.details})]}),t[26]=n.details,t[27]=o,t[28]=k):k=t[28];let A;t[29]!==w||t[30]!==D||t[31]!==k?(A=(0,C.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-0.5`,children:[w,D,k]}),t[29]=w,t[30]=D,t[31]=k,t[32]=A):A=t[32];let j;return t[33]!==A||t[34]!==d||t[35]!==p?(j=(0,C.jsxs)(`li`,{className:`grid grid-cols-[64px_18px_minmax(0,1fr)] gap-x-3 border-t border-linie py-2.5 first:border-t-0`,children:[d,p,A]}),t[33]=A,t[34]=d,t[35]=p,t[36]=j):j=t[36],j}function M(){let e=(0,x.c)(16),t=u(),n=p(),r=t.data?.rolle===`homelab`||!!(n.data?.eingerichtet&&n.data.erreichbar),[a,o]=(0,S.useState)(`alle`),[l,d]=(0,S.useState)(!1),h=c(r,l),g=new Map((s(r).data?.ziele??[]).map(N));if(t.isPending||n.isPending){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,C.jsx)(f,{text:`Wird gelesen …`}),e[0]=t):t=e[0],t}if(!r){let t;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,C.jsx)(f,{fehler:!0,text:`Der Homelab-Teil antwortet gerade nicht.`}),e[1]=t):t=e[1],t}let _=(h.data?.eintraege??[]).filter(e=>a===`alle`||e.art===a||a===`lauf`&&e.art===`sammellauf`),v=[];for(let e of _){let t=A(e.zeit);v.at(-1)?.titel!==t&&v.push({titel:t,eintraege:[]}),v.at(-1).eintraege.push(e)}let y=m,b;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,C.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Was der Homelab-Teil getan hat: Aufträge an den Ausführer auf dem Proxmox-Host, Update-Läufe, Hinweise, gesendete Meldungen und die nächtliche Paketsuche.`}),e[2]=b):b=e[2];let T;e[3]===a?T=e[4]:(T=w.map(e=>(0,C.jsx)(`button`,{type:`button`,onClick:()=>o(e.id),"aria-pressed":a===e.id,className:i(`h-9 rounded-full border px-3.5 text-sm`,a===e.id?`border-lab-rand bg-lab-grund text-lab-text`:`border-linie text-text-2 hover:border-linie-stark hover:text-foreground`),children:e.name},e.id)),e[3]=a,e[4]=T);let E;e[5]===Symbol.for(`react.memo_cache_sentinel`)?(E=e=>d(e.target.checked),e[5]=E):E=e[5];let D;e[6]===l?D=e[7]:(D=(0,C.jsxs)(`label`,{className:`ml-auto flex h-9 cursor-pointer items-center gap-2 text-sm text-text-2`,children:[(0,C.jsx)(`input`,{type:`checkbox`,checked:l,onChange:E,className:`size-4 accent-[var(--lab)]`}),`Berichte zeigen (alle 10 min)`]}),e[6]=l,e[7]=D);let O;e[8]!==T||e[9]!==D?(O=(0,C.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,role:`group`,"aria-label":`Filter`,children:[T,D]}),e[8]=T,e[9]=D,e[10]=O):O=e[10];let k=h.isPending?(0,C.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):h.isError?(0,C.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Das Protokoll lässt sich nicht lesen: `,h.error.message]}):v.length===0?(0,C.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Dazu gibt es noch keine Einträge.`}):(0,C.jsx)(`div`,{className:i(`flex flex-col gap-5`,h.isFetching&&`opacity-80`),children:v.map(e=>(0,C.jsxs)(`section`,{"aria-label":e.titel,className:`flex flex-col gap-1`,children:[(0,C.jsx)(`h3`,{className:`schild text-sm tracking-[0.18em] text-lab-text`,children:e.titel}),(0,C.jsx)(`ol`,{className:`m-0 flex list-none flex-col p-0`,children:e.eintraege.map((e,t)=>{let n=e.ziel?g.get(e.ziel)??e.ziel:null;return(0,C.jsx)(j,{e,geraet:n&&!e.titel.includes(n)?n:null},`${e.zeit}-${e.titel}-${t}`)})})]},e.titel))}),M;return e[11]!==y||e[12]!==b||e[13]!==O||e[14]!==k?(M=(0,C.jsxs)(y,{titel:`Protokoll`,children:[b,O,k]}),e[11]=y,e[12]=b,e[13]=O,e[14]=k,e[15]=M):M=e[15],M}function N(e){return[e.id,e.name]}export{M as HomelabProtokollSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/MenueSchublade-B2LLE53v.js b/frontend/dist/assets/MenueSchublade-CC8GVOLn.js similarity index 86% rename from frontend/dist/assets/MenueSchublade-B2LLE53v.js rename to frontend/dist/assets/MenueSchublade-CC8GVOLn.js index 4490383..4da8350 100644 --- a/frontend/dist/assets/MenueSchublade-B2LLE53v.js +++ b/frontend/dist/assets/MenueSchublade-CC8GVOLn.js @@ -1 +1 @@ -import{n as e,r as t}from"./dist-D4CVSex9.js";import{g as n,h as r}from"./index-COh3_SSc.js";import{a as i,i as a,n as o,r as s,t as c}from"./sheet-06g2D7J7.js";var l=e(),u=t();function d(e){let t=(0,l.c)(9),{onDienste:d,onSchliessen:f}=e,p;t[0]===f?p=t[1]:(p=e=>!e&&f(),t[0]=f,t[1]=p);let m;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,u.jsxs)(a,{className:`p-0`,children:[(0,u.jsx)(i,{asChild:!0,children:(0,u.jsx)(`div`,{children:(0,u.jsx)(r,{})})}),(0,u.jsx)(s,{className:`sr-only`,children:`Bereiche und Seiten`})]}),t[2]=m):m=t[2];let h;t[3]!==d||t[4]!==f?(h=(0,u.jsxs)(o,{side:`left`,className:`flex flex-col gap-6 border-linie bg-[#0c0f12] px-4 pt-5 pb-[calc(1.25rem+env(safe-area-inset-bottom))] data-[side=left]:w-[300px]`,children:[m,(0,u.jsx)(n,{onDienste:d,onGewaehlt:f})]}),t[3]=d,t[4]=f,t[5]=h):h=t[5];let g;return t[6]!==p||t[7]!==h?(g=(0,u.jsx)(c,{open:!0,onOpenChange:p,children:h}),t[6]=p,t[7]=h,t[8]=g):g=t[8],g}export{d as MenueSchublade}; \ No newline at end of file +import{n as e,r as t}from"./dist-D4CVSex9.js";import{g as n,h as r}from"./index-FvHAYExN.js";import{a as i,i as a,n as o,r as s,t as c}from"./sheet-CB1NvtKC.js";var l=e(),u=t();function d(e){let t=(0,l.c)(9),{onDienste:d,onSchliessen:f}=e,p;t[0]===f?p=t[1]:(p=e=>!e&&f(),t[0]=f,t[1]=p);let m;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,u.jsxs)(a,{className:`p-0`,children:[(0,u.jsx)(i,{asChild:!0,children:(0,u.jsx)(`div`,{children:(0,u.jsx)(r,{})})}),(0,u.jsx)(s,{className:`sr-only`,children:`Bereiche und Seiten`})]}),t[2]=m):m=t[2];let h;t[3]!==d||t[4]!==f?(h=(0,u.jsxs)(o,{side:`left`,className:`flex flex-col gap-6 border-linie bg-[#0c0f12] px-4 pt-5 pb-[calc(1.25rem+env(safe-area-inset-bottom))] data-[side=left]:w-[300px]`,children:[m,(0,u.jsx)(n,{onDienste:d,onGewaehlt:f})]}),t[3]=d,t[4]=f,t[5]=h):h=t[5];let g;return t[6]!==p||t[7]!==h?(g=(0,u.jsx)(c,{open:!0,onOpenChange:p,children:h}),t[6]=p,t[7]=h,t[8]=g):g=t[8],g}export{d as MenueSchublade}; \ No newline at end of file diff --git a/frontend/dist/assets/Modelle-B9Bh3yNL.js b/frontend/dist/assets/Modelle-CuuF8BGB.js similarity index 99% rename from frontend/dist/assets/Modelle-B9Bh3yNL.js rename to frontend/dist/assets/Modelle-CuuF8BGB.js index 8ab7ab0..5a174a9 100644 --- a/frontend/dist/assets/Modelle-B9Bh3yNL.js +++ b/frontend/dist/assets/Modelle-CuuF8BGB.js @@ -1 +1 @@ -import{i as e,n as t,r as n,s as r}from"./dist-D4CVSex9.js";import{n as i,t as a}from"./useSelector-uUwrspuX.js";import{n as o}from"./useMatch-CiyhmkMV.js";import{t as s}from"./chevron-right-DzY92a1B.js";import{t as c}from"./search-_IbVYCuo.js";import{$ as l,A as u,Et as d,Ft as f,It as p,N as m,P as h,Pt as g,Q as _,Rt as v,Tt as y,Xt as b,Z as x,Zt as S,bt as C,dt as w,et as T,f as E,it as D,k as O,kt as k,ot as A,p as j,q as M,rt as N,u as P,xt as F,yt as I,zt as L}from"./index-COh3_SSc.js";import{t as R}from"./button-D8rvET0Z.js";import{a as ee,i as z,n as B,r as V,t as te}from"./sheet-06g2D7J7.js";import{t as ne}from"./Bestaetigen-D8Dh5cqS.js";import{a as H,r as re,s as ie,t as U}from"./Auftraege-PZ7YvGYr.js";function W(e){let t=i();return a(t.stores.location,o(e,t))}var G=t(),K=r(e(),1),q=n(),ae={coder:`Coder`};function J(e){let t=(0,G.c)(102),{offen:n,onSchliessen:r,rollenJetzt:i}=e,a=M(),[o,s]=(0,K.useState)(``),[c,l]=(0,K.useState)(``),[u,d]=(0,K.useState)(null),[f,p]=(0,K.useState)(``),[m,h]=(0,K.useState)(null),g=(0,K.useRef)(!1),_,v;t[0]===c?(_=t[1],v=t[2]):(_=[`hf-suche`,c],v=()=>L(`/api/hf/search?q=${encodeURIComponent(c)}`),t[0]=c,t[1]=_,t[2]=v);let x=c.length>1,S;t[3]!==_||t[4]!==v||t[5]!==x?(S={queryKey:_,queryFn:v,enabled:x},t[3]=_,t[4]=v,t[5]=x,t[6]=S):S=t[6];let C=b(S),w,T;t[7]===u?(w=t[8],T=t[9]):(w=[`hf-quants`,u],T=()=>L(`/api/hf/quants?repo=${encodeURIComponent(u??``)}`),t[7]=u,t[8]=w,t[9]=T);let E=!!u,D;t[10]!==w||t[11]!==T||t[12]!==E?(D={queryKey:w,queryFn:T,enabled:E},t[10]=w,t[11]=T,t[12]=E,t[13]=D):D=t[13];let O=b(D),k,A,j,N,P,I,H,U,W,J,Y,X,Z;if(t[14]!==m||t[15]!==o||t[16]!==a||t[17]!==n||t[18]!==r||t[19]!==O.data||t[20]!==O.error||t[21]!==O.isError||t[22]!==O.isFetching||t[23]!==u||t[24]!==f||t[25]!==i||t[26]!==C){let e=(O.data?.quants??[]).map(se),c=f?ae[f]??f:null,_;t[40]!==u||t[41]!==f||t[42]!==i||t[43]!==c?(_=c&&u?ie(u,c,i[f]):null,t[40]=u,t[41]=f,t[42]=i,t[43]=c,t[44]=_):_=t[44],j=_;let v;t[45]!==m||t[46]!==a||t[47]!==r||t[48]!==u||t[49]!==f?(v=function(){u&&m&&!g.current&&(g.current=!0,a.mutate({repo:u,quant:m.quant,rolle:f||null},{onSuccess:e=>{h(null),e.ok!==!1&&r()},onError:()=>h(null),onSettled:()=>{g.current=!1}}))},t[45]=m,t[46]=a,t[47]=r,t[48]=u,t[49]=f,t[50]=v):v=t[50],N=v,A=te,Y=n,t[51]===r?X=t[52]:(X=e=>!e&&r(),t[51]=r,t[52]=X),k=B,H=`right`,U=`gap-3 overflow-y-auto border-linie bg-panel data-[side=right]:w-full data-[side=right]:sm:max-w-xl`,t[53]===Symbol.for(`react.memo_cache_sentinel`)?(W=(0,q.jsxs)(z,{children:[(0,q.jsx)(ee,{className:`schild text-lg`,children:`Modelle selbst suchen`}),(0,q.jsx)(V,{className:`text-text-2`,children:`Auf Hugging Face suchen, Quantisierung wählen, installieren.`})]}),t[53]=W):W=t[53];let b;t[54]===o?b=t[55]:(b=e=>{e.preventDefault(),d(null),l(o.trim())},t[54]=o,t[55]=b);let x;t[56]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,q.jsx)(`label`,{htmlFor:`hf-suche`,className:`sr-only`,children:`Suchbegriff`}),t[56]=x):x=t[56];let S;t[57]===Symbol.for(`react.memo_cache_sentinel`)?(S=e=>s(e.target.value),t[57]=S):S=t[57];let w;t[58]===o?w=t[59]:(w=(0,q.jsx)(`input`,{id:`hf-suche`,value:o,onChange:S,placeholder:`z. B. Qwen3.8 GGUF`,className:`h-11 min-w-0 flex-1 rounded-lg border border-linie-stark bg-erhaben px-3 text-[15px] outline-none focus:border-cyan`}),t[58]=o,t[59]=w);let T;t[60]===Symbol.for(`react.memo_cache_sentinel`)?(T=(0,q.jsx)(R,{type:`submit`,children:`Suchen`}),t[60]=T):T=t[60],t[61]!==b||t[62]!==w?(J=(0,q.jsxs)(`form`,{className:`flex gap-2 px-4`,onSubmit:b,children:[x,w,T]}),t[61]=b,t[62]=w,t[63]=J):J=t[63],Z=`flex flex-col px-4 pb-4`,t[64]!==u||t[65]!==C?(P=!u&&(0,q.jsxs)(q.Fragment,{children:[C.isFetching&&(0,q.jsx)(`p`,{role:`status`,className:`py-3 text-sm text-text-2`,children:`Suche läuft …`}),!C.isFetching&&C.isError&&(0,q.jsxs)(`p`,{role:`alert`,className:`py-3 text-sm text-rot-text`,children:[`Die Suche ging nicht: `,C.error.message]}),!C.isFetching&&C.data?.results.length===0&&(0,q.jsx)(`p`,{className:`py-3 text-sm text-text-2`,children:`Keine Treffer. Versuch einen anderen Suchbegriff — oder Hugging Face ist gerade nicht erreichbar.`}),C.data?.results.map(e=>(0,q.jsxs)(`button`,{type:`button`,onClick:()=>d(e.repo),className:`flex min-h-11 items-center justify-between gap-3 border-t border-linie py-2 text-left hover:text-cyan`,children:[(0,q.jsx)(`span`,{className:`ziffern min-w-0 text-sm break-all`,children:e.repo}),(0,q.jsxs)(`span`,{className:`ziffern shrink-0 text-xs text-text-3`,children:[y(e.downloads),` ↓`]})]},e.repo))]}),t[64]=u,t[65]=C,t[66]=P):P=t[66],I=u&&(0,q.jsxs)(`div`,{className:`flex flex-col gap-3 pt-2`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,q.jsx)(`span`,{className:`ziffern min-w-0 text-sm break-all`,children:u}),(0,q.jsx)(R,{variant:`ghost`,size:`sm`,onClick:()=>d(null),children:`Zurück`})]}),(0,q.jsxs)(`label`,{className:`flex flex-wrap items-center gap-3 text-sm text-text-2`,children:[`Rolle`,(0,q.jsxs)(`select`,{value:f,onChange:e=>p(e.target.value),className:`h-11 min-w-0 rounded-lg border border-linie-stark bg-erhaben px-3 text-foreground`,children:[(0,q.jsx)(`option`,{value:``,children:`ohne Rolle (nur installieren)`}),Object.entries(ae).map(oe)]})]}),j&&(0,q.jsx)(`p`,{className:`m-0 rounded-lg border border-bernstein/60 bg-bernstein-grund px-3 py-2.5 text-sm leading-relaxed text-bernstein`,children:j}),O.isFetching&&(0,q.jsx)(`p`,{role:`status`,className:`text-sm text-text-2`,children:`Quantisierungen werden gelesen …`}),!O.isFetching&&O.isError&&(0,q.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die Dateien dieses Modells ließen sich nicht lesen: `,O.error.message]}),!O.isFetching&&O.data&&e.length===0&&(0,q.jsx)(`p`,{className:`text-sm text-text-2`,children:`Hier gibt es keine GGUF-Dateien, die sich installieren lassen.`}),e.map(e=>{let t=e.quant??e.name??`?`,n=e.total_bytes??e.size_bytes;return(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-t border-linie py-2`,children:[(0,q.jsx)(`span`,{className:`ziffern text-sm`,children:t}),(0,q.jsxs)(`span`,{className:`flex items-center gap-3`,children:[n?(0,q.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:F(n,1)}):null,(0,q.jsx)(R,{variant:`outline`,size:`sm`,disabled:a.isPending,onClick:()=>h({quant:t,bytes:n}),children:`Installieren`})]})]},t)})]}),t[14]=m,t[15]=o,t[16]=a,t[17]=n,t[18]=r,t[19]=O.data,t[20]=O.error,t[21]=O.isError,t[22]=O.isFetching,t[23]=u,t[24]=f,t[25]=i,t[26]=C,t[27]=k,t[28]=A,t[29]=j,t[30]=N,t[31]=P,t[32]=I,t[33]=H,t[34]=U,t[35]=W,t[36]=J,t[37]=Y,t[38]=X,t[39]=Z}else k=t[27],A=t[28],j=t[29],N=t[30],P=t[31],I=t[32],H=t[33],U=t[34],W=t[35],J=t[36],Y=t[37],X=t[38],Z=t[39];let Q;t[67]!==P||t[68]!==I||t[69]!==Z?(Q=(0,q.jsxs)(`div`,{className:Z,children:[P,I]}),t[67]=P,t[68]=I,t[69]=Z,t[70]=Q):Q=t[70];let ce=m!==null,$;t[71]!==m||t[72]!==u?($=m&&u?`${u} (${m.quant}${m.bytes?`, ${F(m.bytes,1)}`:``}) wird heruntergeladen und in llama-swap eingetragen.`+(m.bytes?``:` Die Größe siehst du beim Auftrag, sobald der Download läuft.`):``,t[71]=m,t[72]=u,t[73]=$):$=t[73];let le=a.isPending?`Wird gestartet …`:`Installieren`,ue=a.isPending,de;t[74]===Symbol.for(`react.memo_cache_sentinel`)?(de=()=>h(null),t[74]=de):de=t[74];let fe;t[75]===j?fe=t[76]:(fe=j&&(0,q.jsx)(`p`,{className:`m-0 rounded-lg border border-bernstein/60 bg-bernstein-grund px-3 py-2.5 text-[15px] leading-relaxed text-bernstein`,children:j}),t[75]=j,t[76]=fe);let pe=!!f,me;t[77]===pe?me=t[78]:(me=re(pe),t[77]=pe,t[78]=me);let he;t[79]===me?he=t[80]:(he=(0,q.jsx)(`p`,{className:`m-0 text-[15px] leading-relaxed text-text-2`,children:me}),t[79]=me,t[80]=he);let ge;t[81]!==a.isPending||t[82]!==N||t[83]!==ce||t[84]!==$||t[85]!==le||t[86]!==fe||t[87]!==he?(ge=(0,q.jsxs)(ne,{offen:ce,titel:`Modell installieren?`,text:$,knopf:le,gesperrt:ue,onNein:de,onJa:N,children:[fe,he]}),t[81]=a.isPending,t[82]=N,t[83]=ce,t[84]=$,t[85]=le,t[86]=fe,t[87]=he,t[88]=ge):ge=t[88];let _e;t[89]!==k||t[90]!==H||t[91]!==U||t[92]!==W||t[93]!==J||t[94]!==Q||t[95]!==ge?(_e=(0,q.jsxs)(k,{side:H,className:U,children:[W,J,Q,ge]}),t[89]=k,t[90]=H,t[91]=U,t[92]=W,t[93]=J,t[94]=Q,t[95]=ge,t[96]=_e):_e=t[96];let ve;return t[97]!==A||t[98]!==Y||t[99]!==X||t[100]!==_e?(ve=(0,q.jsx)(A,{open:Y,onOpenChange:X,children:_e}),t[97]=A,t[98]=Y,t[99]=X,t[100]=_e,t[101]=ve):ve=t[101],ve}function oe(e){let[t,n]=e;return(0,q.jsx)(`option`,{value:t,children:n},t)}function se(e){return typeof e==`string`?{quant:e}:e}var Y=115;function X(e){let t=(0,G.c)(55),{modelle:n,laufend:r}=e,i=d(),a=w(),o,s,c,l,u,f,p,m,h,g;if(t[0]!==r||t[1]!==i?.ram_total||t[2]!==i?.ram_used||t[3]!==n||t[4]!==a){let e=C(i?.ram_total??a.data?.box.ram_total)??122.7,d=C(i?.ram_used??a.data?.box.ram_used)??0,_;t[15]===r?_=t[16]:(_=e=>r.includes(e.name),t[15]=r,t[16]=_);let v=n.filter(_).reduce(Z,0);s=Math.max(0,d-v);let y=t=>`${Math.min(100,t/e*100)}%`;o=P,m=`Speicher`,h=(0,q.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[Math.round(d),` von `,Math.round(e),` GB belegt · Grenze ~`,Y,` GB`]});let b=`Speicher: ${Math.round(d)} von ${Math.round(e)} GB belegt`,x=y(d),S;t[17]===x?S=t[18]:(S={width:x},t[17]=x,t[18]=S);let w=`${d?v/d*100:0}%`,T;t[19]===w?T=t[20]:(T=(0,q.jsx)(`div`,{className:`h-full bg-cyan`,style:{width:w}}),t[19]=w,t[20]=T);let E=`${d?s/d*100:0}%`,D;t[21]===E?D=t[22]:(D=(0,q.jsx)(`div`,{className:`h-full bg-cyan/35`,style:{width:E}}),t[21]=E,t[22]=D);let O;t[23]!==S||t[24]!==T||t[25]!==D?(O=(0,q.jsxs)(`div`,{className:`absolute inset-y-0 left-0 flex overflow-hidden rounded-lg`,style:S,children:[T,D]}),t[23]=S,t[24]=T,t[25]=D,t[26]=O):O=t[26];let k=y(Y),A;t[27]===k?A=t[28]:(A=(0,q.jsx)(`div`,{className:`absolute -top-1.5 -bottom-1.5 w-0.5 bg-bernstein`,style:{left:k}}),t[27]=k,t[28]=A),t[29]!==b||t[30]!==O||t[31]!==A?(g=(0,q.jsxs)(`div`,{className:`relative h-8 rounded-lg bg-erhaben`,role:`img`,"aria-label":b,children:[O,A]}),t[29]=b,t[30]=O,t[31]=A,t[32]=g):g=t[32],p=`flex flex-wrap gap-x-6 gap-y-2 text-sm text-text-2`,c=`flex items-center gap-2`,t[33]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,q.jsx)(`span`,{className:`size-2.5 rounded-sm bg-cyan`}),t[33]=l):l=t[33],u=` Geladene Modelle: `,f=Math.round(v),t[0]=r,t[1]=i?.ram_total,t[2]=i?.ram_used,t[3]=n,t[4]=a,t[5]=o,t[6]=s,t[7]=c,t[8]=l,t[9]=u,t[10]=f,t[11]=p,t[12]=m,t[13]=h,t[14]=g}else o=t[5],s=t[6],c=t[7],l=t[8],u=t[9],f=t[10],p=t[11],m=t[12],h=t[13],g=t[14];let _;t[34]!==c||t[35]!==l||t[36]!==u||t[37]!==f?(_=(0,q.jsxs)(`span`,{className:c,children:[l,u,f,` GB Dateien`]}),t[34]=c,t[35]=l,t[36]=u,t[37]=f,t[38]=_):_=t[38];let v;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,q.jsx)(`span`,{className:`size-2.5 rounded-sm bg-cyan/35`}),t[39]=v):v=t[39];let y;t[40]===s?y=t[41]:(y=Math.round(s),t[40]=s,t[41]=y);let b;t[42]===y?b=t[43]:(b=(0,q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[v,` Cache, Dienste, System: `,y,` GB`]}),t[42]=y,t[43]=b);let x;t[44]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`span`,{className:`h-3 w-0.5 bg-bernstein`}),` Ab hier wird es eng`]}),t[44]=x):x=t[44];let S;t[45]!==b||t[46]!==p||t[47]!==_?(S=(0,q.jsxs)(`div`,{className:p,children:[_,b,x]}),t[45]=b,t[46]=p,t[47]=_,t[48]=S):S=t[48];let T;return t[49]!==o||t[50]!==S||t[51]!==m||t[52]!==h||t[53]!==g?(T=(0,q.jsxs)(o,{titel:m,rechts:h,children:[g,S]}),t[49]=o,t[50]=S,t[51]=m,t[52]=h,t[53]=g,t[54]=T):T=t[54],T}function Z(e,t){return e+(C(t.size_bytes)??0)}function Q(e){let t=(0,G.c)(7),{name:n,wert:r}=e,i;t[0]===n?i=t[1]:(i=(0,q.jsx)(`dt`,{className:`text-xs text-text-3`,children:n}),t[0]=n,t[1]=i);let a;t[2]===r?a=t[3]:(a=(0,q.jsx)(`dd`,{className:`ziffern m-0 text-lg`,children:r}),t[2]=r,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function ce(e){let t=(0,G.c)(48),{titel:n,modell:r,zwilling:i,laeuft:a,nutzer:o}=e,s=_();if(!r){let e;t[0]===n?e=t[1]:(e=(0,q.jsx)(`span`,{className:`schild text-sm text-text-3`,children:n}),t[0]=n,t[1]=e);let r;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,q.jsx)(E,{children:`Frei`}),t[2]=r):r=t[2];let i;t[3]===e?i=t[4]:(i=(0,q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[e,r]}),t[3]=e,t[4]=i);let a,o;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,q.jsx)(`h3`,{className:`font-anzeige text-xl font-semibold text-text-2`,children:`Nicht belegt`}),o=(0,q.jsx)(`p`,{className:`text-sm text-text-2`,children:`Nur belegen, wenn ein Modell hier echten Mehrwert bringt. Das Radar meldet Kandidaten.`}),t[5]=a,t[6]=o):(a=t[5],o=t[6]);let s;return t[7]===i?s=t[8]:(s=(0,q.jsxs)(`article`,{className:`flex flex-col gap-3.5 rounded-2xl border border-dashed border-linie-stark p-5`,children:[i,a,o]}),t[7]=i,t[8]=s),s}let c;t[9]!==r.ctx||t[10]!==r.parallel_slots?(c=r.ctx?Math.round(r.ctx/Math.max(1,r.parallel_slots)/1024):null,t[9]=r.ctx,t[10]=r.parallel_slots,t[11]=c):c=t[11];let l=c,u=!!r.capabilities?.vision||!!i,d;t[12]===n?d=t[13]:(d=(0,q.jsx)(`span`,{className:`schild text-sm text-text-3`,children:n}),t[12]=n,t[13]=d);let f=a?`gruen`:`grau`,p=a?`Geladen`:`Auf Abruf`,m;t[14]!==f||t[15]!==p?(m=(0,q.jsx)(E,{art:f,children:p}),t[14]=f,t[15]=p,t[16]=m):m=t[16];let h;t[17]!==d||t[18]!==m?(h=(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[d,m]}),t[17]=d,t[18]=m,t[19]=h):h=t[19];let g;t[20]===r.name?g=t[21]:(g=(0,q.jsx)(`h3`,{className:`ziffern m-0 text-lg font-medium break-all`,children:r.name}),t[20]=r.name,t[21]=g);let v;t[22]===r.size_bytes?v=t[23]:(v=F(r.size_bytes),t[22]=r.size_bytes,t[23]=v);let y;t[24]===v?y=t[25]:(y=(0,q.jsx)(Q,{name:`Größe`,wert:v}),t[24]=v,t[25]=y);let b=l?`${l}k`:`–`,x;t[26]===b?x=t[27]:(x=(0,q.jsx)(Q,{name:`Kontext`,wert:b}),t[26]=b,t[27]=x);let S=u?`ja`:`nein`,C;t[28]===S?C=t[29]:(C=(0,q.jsx)(Q,{name:`Bilder`,wert:S}),t[28]=S,t[29]=C);let w;t[30]!==x||t[31]!==C||t[32]!==y?(w=(0,q.jsxs)(`dl`,{className:`m-0 grid grid-cols-3 gap-3`,children:[y,x,C]}),t[30]=x,t[31]=C,t[32]=y,t[33]=w):w=t[33];let T=r.spec_active?` Mit Draft-Beschleunigung.`:``,D=i?` Bilder sieht es über seinen Bild-Zwilling, der nur bei Bedarf lädt.`:``,O;t[34]!==o||t[35]!==T||t[36]!==D?(O=(0,q.jsxs)(`p`,{className:`text-sm text-text-2`,children:[`Genutzt von `,o,`.`,T,D]}),t[34]=o,t[35]=T,t[36]=D,t[37]=O):O=t[37];let k;t[38]!==s||t[39]!==a||t[40]!==r.name?(k=!a&&(0,q.jsx)(R,{variant:`outline`,size:`sm`,className:`mt-auto self-start`,onClick:()=>s.mutate(r.name),disabled:s.isPending,children:`Jetzt laden`}),t[38]=s,t[39]=a,t[40]=r.name,t[41]=k):k=t[41];let A;return t[42]!==w||t[43]!==O||t[44]!==k||t[45]!==h||t[46]!==g?(A=(0,q.jsxs)(`article`,{className:`flex flex-col gap-3.5 rounded-2xl border border-linie bg-panel p-5`,children:[h,g,w,O,k]}),t[42]=w,t[43]=O,t[44]=k,t[45]=h,t[46]=g,t[47]=A):A=t[47],A}function $(e){let t=(0,G.c)(54),{nutzung:n,laedt:r,fehler:i}=e;if(!n){let e;return t[0]!==i||t[1]!==r?(e=(0,q.jsx)(P,{titel:`Wer nutzt die Modelle`,children:r?(0,q.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):(0,q.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Die Nutzung lässt sich gerade nicht lesen`,i?`: ${i}`:`.`]})}),t[0]=i,t[1]=r,t[2]=e):e=t[2],e}let a;t[3]===n.absender?a=t[4]:(a=Math.max(1,...n.absender.map(fe)),t[3]=n.absender,t[4]=a);let o=a,s,c,l,u,d,f,p,m,h,g,_,v;if(t[5]!==o||t[6]!==n.absender||t[7]!==n.letzte_24h||t[8]!==n.tage){let e=n.letzte_24h.map(ue),r=Math.max(1,...e);s=P,v=`Wer nutzt die Modelle`,t[21]===n.tage?c=t[22]:(c=(0,q.jsxs)(`span`,{className:`ziffern text-xs text-text-3`,children:[`letzte `,n.tage,` Tage`]}),t[21]=n.tage,t[22]=c),t[23]===n.absender.length?l=t[24]:(l=n.absender.length===0&&(0,q.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine Anfragen aufgezeichnet.`}),t[23]=n.absender.length,t[24]=l);let i;if(t[25]!==o||t[26]!==n.absender){let e;t[28]===o?e=t[29]:(e=e=>(0,q.jsxs)(`li`,{className:`flex flex-col gap-1.5`,children:[(0,q.jsxs)(`div`,{className:`flex justify-between gap-3 text-sm`,children:[(0,q.jsx)(`span`,{children:e.name}),(0,q.jsx)(`span`,{className:`ziffern`,children:y(e.anfragen)})]}),(0,q.jsx)(`div`,{className:`h-2 rounded-full bg-erhaben`,children:(0,q.jsx)(`div`,{className:`h-2 rounded-full bg-cyan`,style:{width:`${e.anfragen/o*100}%`}})})]},e.name),t[28]=o,t[29]=e),i=n.absender.map(e),t[25]=o,t[26]=n.absender,t[27]=i}else i=t[27];t[30]===i?u=t[31]:(u=(0,q.jsx)(`ul`,{className:`m-0 flex list-none flex-col gap-3.5 p-0`,children:i}),t[30]=i,t[31]=u),g=`flex flex-col gap-1.5`,t[32]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,q.jsx)(`span`,{className:`schild text-xs text-text-3`,children:`Anfragen je Stunde, letzte 24 h`}),t[32]=_):_=t[32],d=`0 0 240 64`,f=`h-16 w-full`,p=`img`,m=`Anfragen je Stunde in den letzten 24 Stunden`;let a;t[33]===r?a=t[34]:(a=(e,t)=>{let n=e?Math.max(3,e/r*50):2;return(0,q.jsx)(`rect`,{x:t*10+1.5,y:52-n,width:7,height:n,rx:1.5,fill:e?`var(--cyan)`:`var(--linie)`},t)},t[33]=r,t[34]=a),h=e.map(a),t[5]=o,t[6]=n.absender,t[7]=n.letzte_24h,t[8]=n.tage,t[9]=s,t[10]=c,t[11]=l,t[12]=u,t[13]=d,t[14]=f,t[15]=p,t[16]=m,t[17]=h,t[18]=g,t[19]=_,t[20]=v}else s=t[9],c=t[10],l=t[11],u=t[12],d=t[13],f=t[14],p=t[15],m=t[16],h=t[17],g=t[18],_=t[19],v=t[20];let b;t[35]===Symbol.for(`react.memo_cache_sentinel`)?(b=[0,6,12,18].map(le),t[35]=b):b=t[35];let x;t[36]!==d||t[37]!==f||t[38]!==p||t[39]!==m||t[40]!==h?(x=(0,q.jsxs)(`svg`,{viewBox:d,className:f,role:p,"aria-label":m,children:[h,b]}),t[36]=d,t[37]=f,t[38]=p,t[39]=m,t[40]=h,t[41]=x):x=t[41];let S;t[42]!==x||t[43]!==g||t[44]!==_?(S=(0,q.jsxs)(`div`,{className:g,children:[_,x]}),t[42]=x,t[43]=g,t[44]=_,t[45]=S):S=t[45];let C;t[46]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,q.jsx)(`p`,{className:`text-xs text-text-3`,children:`Anfragen an llama-swap. NerdQuiz geht direkt dorthin, alles andere über MC2.`}),t[46]=C):C=t[46];let w;return t[47]!==s||t[48]!==c||t[49]!==l||t[50]!==u||t[51]!==S||t[52]!==v?(w=(0,q.jsxs)(s,{titel:v,rechts:c,children:[l,u,S,C]}),t[47]=s,t[48]=c,t[49]=l,t[50]=u,t[51]=S,t[52]=v,t[53]=w):w=t[53],w}function le(e){return(0,q.jsx)(`text`,{x:e*10+5,y:63,textAnchor:`middle`,style:{fontSize:9,fill:`var(--text-3)`,fontFamily:`var(--font-mono)`},children:e},e)}function ue(e){return Object.values(e.je_absender).reduce(de,0)}function de(e,t){return e+t}function fe(e){return e.anfragen}var pe={bestanden:`gruen`,durchgefallen:`rot`,wartet:`cyan`,neu:`cyan`,getestet:`grau`,uebernommen:`gruen`,verworfen:`grau`},me={besser:`text-gruen`,schlechter:`text-rot-text`,gleich:`text-text-2`};function he(e){let t=(0,G.c)(4),{test:n}=e,r,i;if(t[0]!==n.vergleich){i=Symbol.for(`react.early_return_sentinel`);bb0:{let e=Object.entries(n.vergleich??{});if(e.length===0){i=null;break bb0}let a;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,q.jsxs)(`div`,{role:`row`,className:`schild grid grid-cols-[minmax(0,1fr)_auto_auto] gap-x-4 pb-1 text-xs text-text-3`,children:[(0,q.jsx)(`span`,{role:`columnheader`,children:`Messwert`}),(0,q.jsx)(`span`,{role:`columnheader`,className:`text-right`,children:`Kandidat`}),(0,q.jsx)(`span`,{role:`columnheader`,className:`text-right`,children:`Heute`})]}),t[3]=a):a=t[3],r=(0,q.jsxs)(`div`,{role:`table`,"aria-label":`Messwerte gegen das heutige Modell`,className:`rounded-lg border border-linie bg-erhaben/50 px-3 py-2 text-sm`,children:[a,e.map(ge)]})}t[0]=n.vergleich,t[1]=r,t[2]=i}else r=t[1],i=t[2];return i===Symbol.for(`react.early_return_sentinel`)?r:i}function ge(e){let[t,n]=e;return(0,q.jsxs)(`div`,{role:`row`,className:`grid grid-cols-[minmax(0,1fr)_auto_auto] gap-x-4 border-t border-linie py-1`,children:[(0,q.jsx)(`span`,{role:`rowheader`,className:`text-text-2`,children:t}),(0,q.jsx)(`span`,{role:`cell`,className:`ziffern text-right ${me[n.urteil??``]??`text-text-2`}`,children:f(n.kandidat,n.einheit)}),(0,q.jsx)(`span`,{role:`cell`,className:`ziffern text-right text-text-3`,children:f(n.baseline,n.einheit)})]},t)}function _e(e){let t=(0,G.c)(59),{k:n,test:r,heute:i}=e,a=D(),[o,s]=(0,K.useState)(null),c;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c=[`bestanden`,`wartet`,`neu`,`getestet`],t[0]=c):c=t[0];let l=c.includes(n.status),u=n.rolle===`hirn`,d;t[1]===n.name?d=t[2]:(d=(0,q.jsx)(`span`,{className:`ziffern text-[15px] font-medium`,children:n.name}),t[1]=n.name,t[2]=d);let f=u?`fürs Hirn`:`fürs Coden`,p;t[3]===f?p=t[4]:(p=(0,q.jsx)(E,{art:`cyan`,children:f}),t[3]=f,t[4]=p);let m;t[5]!==n.eng||t[6]!==n.groesse_gb||t[7]!==n.passt?(m=n.groesse_gb!=null&&(0,q.jsx)(E,{art:n.eng?`bernstein`:n.passt?`gruen`:`rot`,children:n.eng?`passt knapp`:n.passt?`passt`:`passt nicht`}),t[5]=n.eng,t[6]=n.groesse_gb,t[7]=n.passt,t[8]=m):m=t[8];let h=pe[n.status]??`grau`,g=k[n.status]??n.status,_;t[9]!==h||t[10]!==g?(_=(0,q.jsx)(E,{art:h,children:g}),t[9]=h,t[10]=g,t[11]=_):_=t[11];let v;t[12]!==d||t[13]!==p||t[14]!==m||t[15]!==_?(v=(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[d,p,m,_]}),t[12]=d,t[13]=p,t[14]=m,t[15]=_,t[16]=v):v=t[16];let y;t[17]===n.groesse_gb?y=t[18]:(y=n.groesse_gb==null?``:`${n.groesse_gb.toLocaleString(`de-DE`)} GB. `,t[17]=n.groesse_gb,t[18]=y);let b;t[19]!==n.begruendung||t[20]!==y?(b=(0,q.jsxs)(`p`,{className:`text-sm text-text-2`,children:[y,n.begruendung]}),t[19]=n.begruendung,t[20]=y,t[21]=b):b=t[21];let x;t[22]!==n.status||t[23]!==r?(x=r&&[`bestanden`,`durchgefallen`].includes(n.status)&&(0,q.jsx)(he,{test:r}),t[22]=n.status,t[23]=r,t[24]=x):x=t[24];let S;t[25]!==a.isPending||t[26]!==n.status||t[27]!==l?(S=l&&(0,q.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[n.status===`bestanden`&&(0,q.jsx)(R,{size:`sm`,disabled:a.isPending,onClick:()=>s(`uebernehmen`),children:`Übernehmen`}),(0,q.jsx)(R,{variant:`outline`,size:`sm`,disabled:a.isPending,onClick:()=>s(`verwerfen`),children:`Verwerfen`})]}),t[25]=a.isPending,t[26]=n.status,t[27]=l,t[28]=S):S=t[28];let C=o===`uebernehmen`,w=`${n.name} übernehmen?`,T=u?`${n.name} wird Lucys Hirn${i?` und löst ${i} ab`:``}. NerdQuiz und OpenChamber nutzen ab dann ebenfalls das neue Modell. Hermes startet dafür kurz neu, Lucy ist etwa eine Minute nicht erreichbar. Das alte Modell bleibt auf der Platte.`:`${n.name} wird der Coder${i?` und löst ${i} ab`:``}. OpenChamber plant und baut ab dann damit. Das alte Modell bleibt auf der Platte.`,O;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(O=()=>s(null),t[29]=O):O=t[29];let A;t[30]!==a||t[31]!==o||t[32]!==n.id||t[33]!==n.name?(A=()=>{o===`uebernehmen`&&(a.mutate({id:n.id,aktion:`uebernehmen`,name:n.name}),s(null))},t[30]=a,t[31]=o,t[32]=n.id,t[33]=n.name,t[34]=A):A=t[34];let j;t[35]!==a.isPending||t[36]!==C||t[37]!==w||t[38]!==T||t[39]!==A?(j=(0,q.jsx)(ne,{offen:C,titel:w,text:T,knopf:`Übernehmen`,gesperrt:a.isPending,onNein:O,onJa:A}),t[35]=a.isPending,t[36]=C,t[37]=w,t[38]=T,t[39]=A,t[40]=j):j=t[40];let M=o===`verwerfen`,N=`${n.name} verwerfen?`,P;t[41]===Symbol.for(`react.memo_cache_sentinel`)?(P=()=>s(null),t[41]=P):P=t[41];let F;t[42]!==a||t[43]!==o||t[44]!==n.id||t[45]!==n.name?(F=()=>{o===`verwerfen`&&(a.mutate({id:n.id,aktion:`verwerfen`,name:n.name}),s(null))},t[42]=a,t[43]=o,t[44]=n.id,t[45]=n.name,t[46]=F):F=t[46];let I;t[47]!==a.isPending||t[48]!==M||t[49]!==N||t[50]!==F?(I=(0,q.jsx)(ne,{offen:M,gefahr:!0,titel:N,text:`Die heruntergeladenen Dateien werden gelöscht, und das Radar testet dieses Modell nicht noch einmal.`,knopf:`Verwerfen`,gesperrt:a.isPending,onNein:P,onJa:F}),t[47]=a.isPending,t[48]=M,t[49]=N,t[50]=F,t[51]=I):I=t[51];let L;return t[52]!==b||t[53]!==x||t[54]!==S||t[55]!==j||t[56]!==I||t[57]!==v?(L=(0,q.jsxs)(`li`,{className:`flex flex-col gap-2 border-t border-linie py-3.5`,children:[v,b,x,S,j,I]}),t[52]=b,t[53]=x,t[54]=S,t[55]=j,t[56]=I,t[57]=v,t[58]=L):L=t[58],L}function ve(e){let t=(0,G.c)(30),{hirn:n,coder:r}=e,i=N(),a=A(),o=x(),s=S(),c=o.data?.jobs,l=(c??[]).filter(be).at(-1),u=a.data?.job_id,d;t[0]!==u||t[1]!==c?(d=!!u&&!!c&&!c.some(e=>e.id===u),t[0]=u,t[1]=c,t[2]=d):d=t[2];let f=d,p=a.isPending||f||l!==void 0&&g(l),m=(0,K.useRef)(p);if((0,K.useEffect)(()=>{m.current&&!p&&s.invalidateQueries({queryKey:[`radar`]}),m.current=p},[p,s]),i.isError&&!i.data){let e=i.error instanceof v&&i.error.status===404,n;return t[3]!==e||t[4]!==i.error?(n=(0,q.jsx)(P,{titel:`Modell-Radar`,id:`radar`,className:`scroll-mt-4`,children:e?(0,q.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Das Radar ist auf dieser Box noch nicht eingerichtet.`}):(0,q.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Das Radar antwortet gerade nicht: `,i.error.message]})}),t[3]=e,t[4]=i.error,t[5]=n):n=t[5],n}let h=i.data,_=P,y;t[6]===a?y=t[7]:(y=()=>a.mutate(void 0),t[6]=a,t[7]=y);let b=p?`Sucht …`:`Jetzt suchen`,C;t[8]!==p||t[9]!==y||t[10]!==b?(C=(0,q.jsx)(R,{variant:`info`,size:`sm`,onClick:y,disabled:p,children:b}),t[8]=p,t[9]=y,t[10]=b,t[11]=C):C=t[11];let w;t[12]===h?w=t[13]:(w=h?.naechster_test?` Nächster Test: ${I(h.naechster_test)}.`:``,t[12]=h,t[13]=w);let T=p?` Sucht gerade bei Hugging Face. Das dauert ein paar Minuten; den Stand zeigt der Auftrag oben unter „Aufträge“.`:``,E;t[14]!==w||t[15]!==T?(E=(0,q.jsxs)(`p`,{className:`-mt-2 text-sm text-text-2`,children:[`Testet nachts zwischen 00:30 und 02:30 selbst, höchstens einen Kandidaten pro Woche.`,w,T]}),t[14]=w,t[15]=T,t[16]=E):E=t[16];let D=!p&&l?.state===`failed`&&(0,q.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die letzte Suche ist gescheitert: `,H(l)??`ohne Meldung`]}),O;t[17]!==r||t[18]!==h||t[19]!==n?(O=h?h.kandidaten.length===0?(0,q.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Nichts Besseres in Sicht.`}):(0,q.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:h.kandidaten.map(e=>(0,q.jsx)(_e,{k:e,test:h.tests.find(t=>t.kandidat===e.id),heute:e.rolle===`hirn`?n:r},e.id))}):(0,q.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),t[17]=r,t[18]=h,t[19]=n,t[20]=O):O=t[20];let k;t[21]===h?k=t[22]:(k=h&&h.tests.length>0&&(0,q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,q.jsx)(`h3`,{className:`schild text-xs text-text-3`,children:`Letzte Tests`}),h.tests.slice(0,3).map(ye)]}),t[21]=h,t[22]=k);let j;return t[23]!==_||t[24]!==E||t[25]!==D||t[26]!==O||t[27]!==k||t[28]!==C?(j=(0,q.jsxs)(_,{titel:`Modell-Radar`,id:`radar`,className:`scroll-mt-4`,rechts:C,children:[E,D,O,k]}),t[23]=_,t[24]=E,t[25]=D,t[26]=O,t[27]=k,t[28]=C,t[29]=j):j=t[29],j}function ye(e){return(0,q.jsxs)(`p`,{className:`text-sm text-text-2`,children:[(0,q.jsx)(`span`,{className:`ziffern text-text-3`,children:I(e.datum)}),` · `,e.zusammenfassung]},e.id)}function be(e){return e.group===`radar`}var xe=`text-rot-text hover:bg-rot-grund hover:text-rot-text`;function Se(e){let t=(0,G.c)(13),{titel:n,zusatz:r,children:i}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,q.jsx)(s,{className:`size-4 text-text-3 transition-transform group-open:rotate-90`,"aria-hidden":!0}),t[0]=a):a=t[0];let o;t[1]===n?o=t[2]:(o=(0,q.jsxs)(`span`,{className:`flex items-center gap-2 text-[15px] font-medium`,children:[a,n]}),t[1]=n,t[2]=o);let c;t[3]===r?c=t[4]:(c=(0,q.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:r}),t[3]=r,t[4]=c);let l;t[5]!==o||t[6]!==c?(l=(0,q.jsxs)(`summary`,{className:`flex min-h-12 cursor-pointer list-none items-center justify-between gap-3 [&::-webkit-details-marker]:hidden`,children:[o,c]}),t[5]=o,t[6]=c,t[7]=l):l=t[7];let u;t[8]===i?u=t[9]:(u=(0,q.jsx)(`div`,{className:`flex flex-col gap-2 pb-1`,children:i}),t[8]=i,t[9]=u);let d;return t[10]!==l||t[11]!==u?(d=(0,q.jsxs)(`details`,{className:`group rounded-xl border border-linie bg-erhaben/40 px-4 open:pb-2`,children:[l,u]}),t[10]=l,t[11]=u,t[12]=d):d=t[12],d}function Ce(){let e=(0,G.c)(37),t=m(),n=h(),[r,i]=(0,K.useState)(null),a,o,s,c,l,u;if(e[0]!==t.data||e[1]!==t.error||e[2]!==t.isError||e[3]!==t.isPending||e[4]!==n){u=Symbol.for(`react.early_return_sentinel`);bb0:{let r=t.data?.kandidaten??[],d=r.reduce(we,0);if(t.isError&&!t.data){let n;e[11]===t.error.message?n=e[12]:(n=(0,q.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Was sich aufräumen ließe, lässt sich gerade nicht lesen: `,t.error.message]}),e[11]=t.error.message,e[12]=n);let r;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,q.jsx)(Ee,{}),e[13]=r):r=e[13];let i;e[14]===n?i=e[15]:(i=(0,q.jsxs)(P,{titel:`Aufräumen`,children:[n,r]}),e[14]=n,e[15]=i),u=i;break bb0}a=P,o=`Aufräumen`,s=r.length>0?(0,q.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[`bis zu `,d.toLocaleString(`de-DE`,{maximumFractionDigits:0}),` GB frei`]}):void 0,e[16]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,q.jsx)(`p`,{className:`-mt-2 text-sm text-text-2`,children:`Modelle und Ordner, die gerade niemand nutzt. Nichts davon wird von selbst gelöscht, das entscheidest du je Eintrag.`}),e[16]=c):c=e[16],l=t.isPending?(0,q.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):r.length===0?(0,q.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Nichts aufzuräumen.`}):(0,q.jsx)(Se,{titel:`Modelle und Ordner`,zusatz:`${r.length} Einträge · bis zu ${d.toLocaleString(`de-DE`,{maximumFractionDigits:0})} GB`,children:(0,q.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:r.map(e=>(0,q.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-3 border-t border-linie py-3`,children:[(0,q.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,q.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,q.jsx)(`span`,{className:`ziffern text-sm break-all`,children:e.name}),(0,q.jsx)(E,{children:e.art===`eintrag`?`Eintrag`:`Ordner`})]}),(0,q.jsx)(`span`,{className:`text-sm text-text-2`,children:e.hinweis})]}),(0,q.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,q.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[e.groesse_gb.toLocaleString(`de-DE`),` GB`]}),(0,q.jsx)(R,{variant:`ghost`,size:`sm`,className:xe,disabled:n.isPending,onClick:()=>i(e),children:`Löschen`})]})]},`${e.art}-${e.name}`))})})}e[0]=t.data,e[1]=t.error,e[2]=t.isError,e[3]=t.isPending,e[4]=n,e[5]=a,e[6]=o,e[7]=s,e[8]=c,e[9]=l,e[10]=u}else a=e[5],o=e[6],s=e[7],c=e[8],l=e[9],u=e[10];if(u!==Symbol.for(`react.early_return_sentinel`))return u;let d=r!==null,f=`${r?.name??``} löschen?`,p;e[17]===r?.groesse_gb?p=e[18]:(p=r?.groesse_gb.toLocaleString(`de-DE`)??``,e[17]=r?.groesse_gb,e[18]=p);let g=`${r?.hinweis??``} Es werden ${p} GB frei. Das lässt sich nicht rückgängig machen — zurück ginge es nur mit einem neuen Download.`,_;e[19]===Symbol.for(`react.memo_cache_sentinel`)?(_=()=>i(null),e[19]=_):_=e[19];let v;e[20]!==r||e[21]!==n?(v=()=>{r&&n.mutate(r),i(null)},e[20]=r,e[21]=n,e[22]=v):v=e[22];let y;e[23]!==n.isPending||e[24]!==v||e[25]!==d||e[26]!==f||e[27]!==g?(y=(0,q.jsx)(ne,{offen:d,gefahr:!0,titel:f,text:g,knopf:`Endgültig löschen`,gesperrt:n.isPending,onNein:_,onJa:v}),e[23]=n.isPending,e[24]=v,e[25]=d,e[26]=f,e[27]=g,e[28]=y):y=e[28];let b;e[29]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,q.jsx)(Ee,{}),e[29]=b):b=e[29];let x;return e[30]!==a||e[31]!==o||e[32]!==s||e[33]!==y||e[34]!==c||e[35]!==l?(x=(0,q.jsxs)(a,{titel:o,rechts:s,children:[c,l,y,b]}),e[30]=a,e[31]=o,e[32]=s,e[33]=y,e[34]=c,e[35]=l,e[36]=x):x=e[36],x}function we(e,t){return e+t.groesse_gb}function Te(e){return e>=1e9?`${(e/1e9).toLocaleString(`de-DE`,{maximumFractionDigits:1})} GB`:e>=1e6?`${Math.round(e/1e6)} MB`:e>=1e3?`${Math.round(e/1e3)} KB`:`unter 1 KB`}function Ee(){let e=(0,G.c)(23),t=u(),n=O(),[r,i]=(0,K.useState)(null),a,o;if(e[0]!==t.data||e[1]!==t.error||e[2]!==t.isError||e[3]!==t.isPending||e[4]!==n.isPending){let r=t.data?.altreste??[],s=r.reduce(De,0);a=`flex flex-col gap-2`,o=t.isPending?(0,q.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):t.isError&&!t.data?(0,q.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Die Altreste lassen sich gerade nicht lesen: `,t.error.message]}):r.length===0?(0,q.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine Altreste mehr.`}):(0,q.jsxs)(Se,{titel:`Altreste neben dem Betrieb`,zusatz:`${r.length} Einträge · ${Te(s)}`,children:[(0,q.jsx)(`p`,{className:`text-sm text-text-2`,children:`Test-Ordner, alte Umgebungen und Arbeitskopien, die nichts mehr nutzt. Die Box prüft sie gegen eine feste Liste und löscht auch hier nie von selbst.`}),(0,q.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:r.map(e=>(0,q.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-3 border-t border-linie py-3`,children:[(0,q.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,q.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,q.jsx)(`span`,{className:`text-sm`,children:e.name}),(0,q.jsx)(E,{children:`Altrest`})]}),(0,q.jsx)(`span`,{className:`ziffern text-xs break-all text-text-3`,children:e.pfade.join(` · `)}),(0,q.jsx)(`span`,{className:`text-sm text-text-2`,children:e.hinweis})]}),(0,q.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,q.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:e.groesse}),(0,q.jsx)(R,{variant:`ghost`,size:`sm`,className:xe,disabled:n.isPending,onClick:()=>i(e),children:`Löschen`})]})]},e.id))})]}),e[0]=t.data,e[1]=t.error,e[2]=t.isError,e[3]=t.isPending,e[4]=n.isPending,e[5]=a,e[6]=o}else a=e[5],o=e[6];let s=r!==null,c=`${r?.name??``} löschen?`,l;e[7]===r?.pfade?l=e[8]:(l=r?.pfade.join(`, `)??``,e[7]=r?.pfade,e[8]=l);let d=`${r?.hinweis??``} Gelöscht wird: ${l} (${r?.groesse??``}). Das lässt sich nicht rückgängig machen.`,f;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(f=()=>i(null),e[9]=f):f=e[9];let p;e[10]!==r||e[11]!==n?(p=()=>{r&&n.mutate(r),i(null)},e[10]=r,e[11]=n,e[12]=p):p=e[12];let m;e[13]!==n.isPending||e[14]!==s||e[15]!==c||e[16]!==d||e[17]!==p?(m=(0,q.jsx)(ne,{offen:s,gefahr:!0,titel:c,text:d,knopf:`Endgültig löschen`,gesperrt:n.isPending,onNein:f,onJa:p}),e[13]=n.isPending,e[14]=s,e[15]=c,e[16]=d,e[17]=p,e[18]=m):m=e[18];let h;return e[19]!==a||e[20]!==o||e[21]!==m?(h=(0,q.jsxs)(`div`,{className:a,children:[o,m]}),e[19]=a,e[20]=o,e[21]=m,e[22]=h):h=e[22],h}function De(e,t){return e+t.groesse_bytes}function Oe(){let e=(0,G.c)(74),t=l(),n=T(),r=N(),i=x(),[a,o]=(0,K.useState)(!1),s;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(s={select:Me},e[0]=s):s=e[0];let u=W(s),d=!!t.data&&!n.isPending&&!r.isPending&&!i.isPending,f,p;if(e[1]!==d||e[2]!==u?(f=()=>{d&&u===`radar`&&document.getElementById(`radar`)?.scrollIntoView({block:`start`})},p=[d,u],e[1]=d,e[2]=u,e[3]=f,e[4]=p):(f=e[3],p=e[4]),(0,K.useEffect)(f,p),t.isPending){let t;return e[5]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,q.jsx)(j,{text:`Modelle werden gelesen …`}),e[5]=t):t=e[5],t}if(!t.data){let n=`Die Modell-Liste fehlt: ${t.error?.message??`keine Daten`}`,r;return e[6]===n?r=e[7]:(r=(0,q.jsx)(j,{fehler:!0,text:n}),e[6]=n,e[7]=r),r}let m=t.data.models,h=t.data.running,g,_,v,y,b,S,C,w,E,D,O,k;if(e[8]!==h||e[9]!==m||e[10]!==n.data||e[11]!==n.error?.message||e[12]!==n.isPending){let t=m.find(je);_=m.find(Ae);let r;e[25]===m?r=e[26]:(r=(e,t)=>e?m.find(n=>n!==e&&n.aliases.includes(t)&&n.filename===e.filename):void 0,e[25]=m,e[26]=r);let i=r,a=i(t,`vision`);v=i(_,`coder-bild`);let s=m.filter(e=>![t,_,a,v].includes(e)),l;e[27]===n.data?.zuletzt_geladen?l=e[28]:(l=n.data?.zuletzt_geladen??{},e[27]=n.data?.zuletzt_geladen,e[28]=l);let u=l;e[29]!==h||e[30]!==m?(O=(0,q.jsx)(X,{modelle:m,laufend:h}),e[29]=h,e[30]=m,e[31]=O):O=e[31],e[32]===Symbol.for(`react.memo_cache_sentinel`)?(k=(0,q.jsx)(U,{alsPanel:!0}),e[32]=k):k=e[32];let d;e[33]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,q.jsx)(ce,{titel:`Dritte Rolle`,laeuft:!1,nutzer:``}),e[33]=d):d=e[33],y=(0,q.jsxs)(`section`,{"aria-label":`Rollen`,className:`grid gap-5 md:grid-cols-3 md:gap-6`,children:[(0,q.jsx)(ce,{titel:`Hirn`,modell:t,zwilling:a,laeuft:!!t&&h.includes(t.name),nutzer:`Lucy, NerdQuiz und OpenChamber für Kleinkram`}),(0,q.jsx)(ce,{titel:`Coder`,modell:_,zwilling:v,laeuft:!!_&&h.includes(_.name),nutzer:`OpenChamber zum Planen und Bauen und Lucys Delegation`}),d]});let f=n.error?.message??null,p;e[34]!==n.data||e[35]!==n.isPending||e[36]!==f?(p=(0,q.jsx)($,{nutzung:n.data,laedt:n.isPending,fehler:f}),e[34]=n.data,e[35]=n.isPending,e[36]=f,e[37]=p):p=e[37];let x=t?.name,T=_?.name,A;e[38]!==x||e[39]!==T?(A=(0,q.jsx)(ve,{hirn:x,coder:T}),e[38]=x,e[39]=T,e[40]=A):A=e[40],e[41]!==p||e[42]!==A?(b=(0,q.jsxs)(`div`,{className:`grid gap-5 md:gap-6 lg:grid-cols-[minmax(0,1fr)_minmax(0,1.3fr)]`,children:[p,A]}),e[41]=p,e[42]=A,e[43]=b):b=e[43],g=P,w=`Weitere Einträge`,e[44]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,q.jsxs)(R,{variant:`outline`,size:`sm`,onClick:()=>o(!0),children:[(0,q.jsx)(c,{"aria-hidden":!0}),` Modelle selbst suchen`]}),e[44]=E):E=e[44],D=s.length===0&&(0,q.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine weiteren Einträge.`}),S=`m-0 flex list-none flex-col p-0`;let j;e[45]!==h||e[46]!==u?(j=e=>(0,q.jsxs)(`li`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-3 border-t border-linie py-2.5 sm:grid-cols-[minmax(0,1fr)_120px_160px]`,children:[(0,q.jsxs)(`span`,{className:`min-w-0`,children:[(0,q.jsx)(`span`,{className:`ziffern block text-sm break-all`,children:e.name}),(0,q.jsx)(`span`,{className:`text-xs text-text-3`,children:e.aliases.length?e.aliases.join(`, `):`ohne Rolle`})]}),(0,q.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:F(e.size_bytes)}),(0,q.jsx)(`span`,{className:`ziffern hidden text-xs text-text-3 sm:block`,children:h.includes(e.name)?`geladen`:u[e.name]?`zuletzt ${I(u[e.name])}`:`länger nicht geladen`})]},e.name),e[45]=h,e[46]=u,e[47]=j):j=e[47],C=s.map(j),e[8]=h,e[9]=m,e[10]=n.data,e[11]=n.error?.message,e[12]=n.isPending,e[13]=g,e[14]=_,e[15]=v,e[16]=y,e[17]=b,e[18]=S,e[19]=C,e[20]=w,e[21]=E,e[22]=D,e[23]=O,e[24]=k}else g=e[13],_=e[14],v=e[15],y=e[16],b=e[17],S=e[18],C=e[19],w=e[20],E=e[21],D=e[22],O=e[23],k=e[24];let A;e[48]!==S||e[49]!==C?(A=(0,q.jsx)(`ul`,{className:S,children:C}),e[48]=S,e[49]=C,e[50]=A):A=e[50];let M;e[51]!==g||e[52]!==A||e[53]!==w||e[54]!==E||e[55]!==D?(M=(0,q.jsxs)(g,{titel:w,rechts:E,children:[D,A]}),e[51]=g,e[52]=A,e[53]=w,e[54]=E,e[55]=D,e[56]=M):M=e[56];let L;e[57]===Symbol.for(`react.memo_cache_sentinel`)?(L=(0,q.jsx)(Ce,{}),e[57]=L):L=e[57];let ee;e[58]===Symbol.for(`react.memo_cache_sentinel`)?(ee=()=>o(!1),e[58]=ee):ee=e[58];let z;e[59]!==_||e[60]!==v?(z=_?{name:_.name,zwilling:!!v,weitere:_.aliases.filter(ke)}:void 0,e[59]=_,e[60]=v,e[61]=z):z=e[61];let B;e[62]===z?B=e[63]:(B={coder:z},e[62]=z,e[63]=B);let V;e[64]!==a||e[65]!==B?(V=(0,q.jsx)(J,{offen:a,onSchliessen:ee,rollenJetzt:B}),e[64]=a,e[65]=B,e[66]=V):V=e[66];let te;return e[67]!==y||e[68]!==b||e[69]!==M||e[70]!==V||e[71]!==O||e[72]!==k?(te=(0,q.jsxs)(q.Fragment,{children:[O,k,y,b,M,L,V]}),e[67]=y,e[68]=b,e[69]=M,e[70]=V,e[71]=O,e[72]=k,e[73]=te):te=e[73],te}function ke(e){return e.toLowerCase()!==`coder`}function Ae(e){return p(e)===`coder`}function je(e){return p(e)===`hirn`}function Me(e){return e.hash}export{Oe as ModelleSeite}; \ No newline at end of file +import{i as e,n as t,r as n,s as r}from"./dist-D4CVSex9.js";import{n as i,t as a}from"./useSelector-uUwrspuX.js";import{n as o}from"./useMatch-CiyhmkMV.js";import{t as s}from"./chevron-right-T7IsaTwB.js";import{t as c}from"./search-B5rIIYDK.js";import{$ as l,A as u,Et as d,Ft as f,It as p,N as m,P as h,Pt as g,Q as _,Rt as v,Tt as y,Xt as b,Z as x,Zt as S,bt as C,dt as w,et as T,f as E,it as D,k as O,kt as k,ot as A,p as j,q as M,rt as N,u as P,xt as F,yt as I,zt as L}from"./index-FvHAYExN.js";import{t as R}from"./button-D8rvET0Z.js";import{a as ee,i as z,n as B,r as V,t as te}from"./sheet-CB1NvtKC.js";import{t as ne}from"./Bestaetigen-SE_NgpcU.js";import{a as H,r as re,s as ie,t as U}from"./Auftraege-CAHujylB.js";function W(e){let t=i();return a(t.stores.location,o(e,t))}var G=t(),K=r(e(),1),q=n(),ae={coder:`Coder`};function J(e){let t=(0,G.c)(102),{offen:n,onSchliessen:r,rollenJetzt:i}=e,a=M(),[o,s]=(0,K.useState)(``),[c,l]=(0,K.useState)(``),[u,d]=(0,K.useState)(null),[f,p]=(0,K.useState)(``),[m,h]=(0,K.useState)(null),g=(0,K.useRef)(!1),_,v;t[0]===c?(_=t[1],v=t[2]):(_=[`hf-suche`,c],v=()=>L(`/api/hf/search?q=${encodeURIComponent(c)}`),t[0]=c,t[1]=_,t[2]=v);let x=c.length>1,S;t[3]!==_||t[4]!==v||t[5]!==x?(S={queryKey:_,queryFn:v,enabled:x},t[3]=_,t[4]=v,t[5]=x,t[6]=S):S=t[6];let C=b(S),w,T;t[7]===u?(w=t[8],T=t[9]):(w=[`hf-quants`,u],T=()=>L(`/api/hf/quants?repo=${encodeURIComponent(u??``)}`),t[7]=u,t[8]=w,t[9]=T);let E=!!u,D;t[10]!==w||t[11]!==T||t[12]!==E?(D={queryKey:w,queryFn:T,enabled:E},t[10]=w,t[11]=T,t[12]=E,t[13]=D):D=t[13];let O=b(D),k,A,j,N,P,I,H,U,W,J,Y,X,Z;if(t[14]!==m||t[15]!==o||t[16]!==a||t[17]!==n||t[18]!==r||t[19]!==O.data||t[20]!==O.error||t[21]!==O.isError||t[22]!==O.isFetching||t[23]!==u||t[24]!==f||t[25]!==i||t[26]!==C){let e=(O.data?.quants??[]).map(se),c=f?ae[f]??f:null,_;t[40]!==u||t[41]!==f||t[42]!==i||t[43]!==c?(_=c&&u?ie(u,c,i[f]):null,t[40]=u,t[41]=f,t[42]=i,t[43]=c,t[44]=_):_=t[44],j=_;let v;t[45]!==m||t[46]!==a||t[47]!==r||t[48]!==u||t[49]!==f?(v=function(){u&&m&&!g.current&&(g.current=!0,a.mutate({repo:u,quant:m.quant,rolle:f||null},{onSuccess:e=>{h(null),e.ok!==!1&&r()},onError:()=>h(null),onSettled:()=>{g.current=!1}}))},t[45]=m,t[46]=a,t[47]=r,t[48]=u,t[49]=f,t[50]=v):v=t[50],N=v,A=te,Y=n,t[51]===r?X=t[52]:(X=e=>!e&&r(),t[51]=r,t[52]=X),k=B,H=`right`,U=`gap-3 overflow-y-auto border-linie bg-panel data-[side=right]:w-full data-[side=right]:sm:max-w-xl`,t[53]===Symbol.for(`react.memo_cache_sentinel`)?(W=(0,q.jsxs)(z,{children:[(0,q.jsx)(ee,{className:`schild text-lg`,children:`Modelle selbst suchen`}),(0,q.jsx)(V,{className:`text-text-2`,children:`Auf Hugging Face suchen, Quantisierung wählen, installieren.`})]}),t[53]=W):W=t[53];let b;t[54]===o?b=t[55]:(b=e=>{e.preventDefault(),d(null),l(o.trim())},t[54]=o,t[55]=b);let x;t[56]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,q.jsx)(`label`,{htmlFor:`hf-suche`,className:`sr-only`,children:`Suchbegriff`}),t[56]=x):x=t[56];let S;t[57]===Symbol.for(`react.memo_cache_sentinel`)?(S=e=>s(e.target.value),t[57]=S):S=t[57];let w;t[58]===o?w=t[59]:(w=(0,q.jsx)(`input`,{id:`hf-suche`,value:o,onChange:S,placeholder:`z. B. Qwen3.8 GGUF`,className:`h-11 min-w-0 flex-1 rounded-lg border border-linie-stark bg-erhaben px-3 text-[15px] outline-none focus:border-cyan`}),t[58]=o,t[59]=w);let T;t[60]===Symbol.for(`react.memo_cache_sentinel`)?(T=(0,q.jsx)(R,{type:`submit`,children:`Suchen`}),t[60]=T):T=t[60],t[61]!==b||t[62]!==w?(J=(0,q.jsxs)(`form`,{className:`flex gap-2 px-4`,onSubmit:b,children:[x,w,T]}),t[61]=b,t[62]=w,t[63]=J):J=t[63],Z=`flex flex-col px-4 pb-4`,t[64]!==u||t[65]!==C?(P=!u&&(0,q.jsxs)(q.Fragment,{children:[C.isFetching&&(0,q.jsx)(`p`,{role:`status`,className:`py-3 text-sm text-text-2`,children:`Suche läuft …`}),!C.isFetching&&C.isError&&(0,q.jsxs)(`p`,{role:`alert`,className:`py-3 text-sm text-rot-text`,children:[`Die Suche ging nicht: `,C.error.message]}),!C.isFetching&&C.data?.results.length===0&&(0,q.jsx)(`p`,{className:`py-3 text-sm text-text-2`,children:`Keine Treffer. Versuch einen anderen Suchbegriff — oder Hugging Face ist gerade nicht erreichbar.`}),C.data?.results.map(e=>(0,q.jsxs)(`button`,{type:`button`,onClick:()=>d(e.repo),className:`flex min-h-11 items-center justify-between gap-3 border-t border-linie py-2 text-left hover:text-cyan`,children:[(0,q.jsx)(`span`,{className:`ziffern min-w-0 text-sm break-all`,children:e.repo}),(0,q.jsxs)(`span`,{className:`ziffern shrink-0 text-xs text-text-3`,children:[y(e.downloads),` ↓`]})]},e.repo))]}),t[64]=u,t[65]=C,t[66]=P):P=t[66],I=u&&(0,q.jsxs)(`div`,{className:`flex flex-col gap-3 pt-2`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,q.jsx)(`span`,{className:`ziffern min-w-0 text-sm break-all`,children:u}),(0,q.jsx)(R,{variant:`ghost`,size:`sm`,onClick:()=>d(null),children:`Zurück`})]}),(0,q.jsxs)(`label`,{className:`flex flex-wrap items-center gap-3 text-sm text-text-2`,children:[`Rolle`,(0,q.jsxs)(`select`,{value:f,onChange:e=>p(e.target.value),className:`h-11 min-w-0 rounded-lg border border-linie-stark bg-erhaben px-3 text-foreground`,children:[(0,q.jsx)(`option`,{value:``,children:`ohne Rolle (nur installieren)`}),Object.entries(ae).map(oe)]})]}),j&&(0,q.jsx)(`p`,{className:`m-0 rounded-lg border border-bernstein/60 bg-bernstein-grund px-3 py-2.5 text-sm leading-relaxed text-bernstein`,children:j}),O.isFetching&&(0,q.jsx)(`p`,{role:`status`,className:`text-sm text-text-2`,children:`Quantisierungen werden gelesen …`}),!O.isFetching&&O.isError&&(0,q.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die Dateien dieses Modells ließen sich nicht lesen: `,O.error.message]}),!O.isFetching&&O.data&&e.length===0&&(0,q.jsx)(`p`,{className:`text-sm text-text-2`,children:`Hier gibt es keine GGUF-Dateien, die sich installieren lassen.`}),e.map(e=>{let t=e.quant??e.name??`?`,n=e.total_bytes??e.size_bytes;return(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-t border-linie py-2`,children:[(0,q.jsx)(`span`,{className:`ziffern text-sm`,children:t}),(0,q.jsxs)(`span`,{className:`flex items-center gap-3`,children:[n?(0,q.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:F(n,1)}):null,(0,q.jsx)(R,{variant:`outline`,size:`sm`,disabled:a.isPending,onClick:()=>h({quant:t,bytes:n}),children:`Installieren`})]})]},t)})]}),t[14]=m,t[15]=o,t[16]=a,t[17]=n,t[18]=r,t[19]=O.data,t[20]=O.error,t[21]=O.isError,t[22]=O.isFetching,t[23]=u,t[24]=f,t[25]=i,t[26]=C,t[27]=k,t[28]=A,t[29]=j,t[30]=N,t[31]=P,t[32]=I,t[33]=H,t[34]=U,t[35]=W,t[36]=J,t[37]=Y,t[38]=X,t[39]=Z}else k=t[27],A=t[28],j=t[29],N=t[30],P=t[31],I=t[32],H=t[33],U=t[34],W=t[35],J=t[36],Y=t[37],X=t[38],Z=t[39];let Q;t[67]!==P||t[68]!==I||t[69]!==Z?(Q=(0,q.jsxs)(`div`,{className:Z,children:[P,I]}),t[67]=P,t[68]=I,t[69]=Z,t[70]=Q):Q=t[70];let ce=m!==null,$;t[71]!==m||t[72]!==u?($=m&&u?`${u} (${m.quant}${m.bytes?`, ${F(m.bytes,1)}`:``}) wird heruntergeladen und in llama-swap eingetragen.`+(m.bytes?``:` Die Größe siehst du beim Auftrag, sobald der Download läuft.`):``,t[71]=m,t[72]=u,t[73]=$):$=t[73];let le=a.isPending?`Wird gestartet …`:`Installieren`,ue=a.isPending,de;t[74]===Symbol.for(`react.memo_cache_sentinel`)?(de=()=>h(null),t[74]=de):de=t[74];let fe;t[75]===j?fe=t[76]:(fe=j&&(0,q.jsx)(`p`,{className:`m-0 rounded-lg border border-bernstein/60 bg-bernstein-grund px-3 py-2.5 text-[15px] leading-relaxed text-bernstein`,children:j}),t[75]=j,t[76]=fe);let pe=!!f,me;t[77]===pe?me=t[78]:(me=re(pe),t[77]=pe,t[78]=me);let he;t[79]===me?he=t[80]:(he=(0,q.jsx)(`p`,{className:`m-0 text-[15px] leading-relaxed text-text-2`,children:me}),t[79]=me,t[80]=he);let ge;t[81]!==a.isPending||t[82]!==N||t[83]!==ce||t[84]!==$||t[85]!==le||t[86]!==fe||t[87]!==he?(ge=(0,q.jsxs)(ne,{offen:ce,titel:`Modell installieren?`,text:$,knopf:le,gesperrt:ue,onNein:de,onJa:N,children:[fe,he]}),t[81]=a.isPending,t[82]=N,t[83]=ce,t[84]=$,t[85]=le,t[86]=fe,t[87]=he,t[88]=ge):ge=t[88];let _e;t[89]!==k||t[90]!==H||t[91]!==U||t[92]!==W||t[93]!==J||t[94]!==Q||t[95]!==ge?(_e=(0,q.jsxs)(k,{side:H,className:U,children:[W,J,Q,ge]}),t[89]=k,t[90]=H,t[91]=U,t[92]=W,t[93]=J,t[94]=Q,t[95]=ge,t[96]=_e):_e=t[96];let ve;return t[97]!==A||t[98]!==Y||t[99]!==X||t[100]!==_e?(ve=(0,q.jsx)(A,{open:Y,onOpenChange:X,children:_e}),t[97]=A,t[98]=Y,t[99]=X,t[100]=_e,t[101]=ve):ve=t[101],ve}function oe(e){let[t,n]=e;return(0,q.jsx)(`option`,{value:t,children:n},t)}function se(e){return typeof e==`string`?{quant:e}:e}var Y=115;function X(e){let t=(0,G.c)(55),{modelle:n,laufend:r}=e,i=d(),a=w(),o,s,c,l,u,f,p,m,h,g;if(t[0]!==r||t[1]!==i?.ram_total||t[2]!==i?.ram_used||t[3]!==n||t[4]!==a){let e=C(i?.ram_total??a.data?.box.ram_total)??122.7,d=C(i?.ram_used??a.data?.box.ram_used)??0,_;t[15]===r?_=t[16]:(_=e=>r.includes(e.name),t[15]=r,t[16]=_);let v=n.filter(_).reduce(Z,0);s=Math.max(0,d-v);let y=t=>`${Math.min(100,t/e*100)}%`;o=P,m=`Speicher`,h=(0,q.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[Math.round(d),` von `,Math.round(e),` GB belegt · Grenze ~`,Y,` GB`]});let b=`Speicher: ${Math.round(d)} von ${Math.round(e)} GB belegt`,x=y(d),S;t[17]===x?S=t[18]:(S={width:x},t[17]=x,t[18]=S);let w=`${d?v/d*100:0}%`,T;t[19]===w?T=t[20]:(T=(0,q.jsx)(`div`,{className:`h-full bg-cyan`,style:{width:w}}),t[19]=w,t[20]=T);let E=`${d?s/d*100:0}%`,D;t[21]===E?D=t[22]:(D=(0,q.jsx)(`div`,{className:`h-full bg-cyan/35`,style:{width:E}}),t[21]=E,t[22]=D);let O;t[23]!==S||t[24]!==T||t[25]!==D?(O=(0,q.jsxs)(`div`,{className:`absolute inset-y-0 left-0 flex overflow-hidden rounded-lg`,style:S,children:[T,D]}),t[23]=S,t[24]=T,t[25]=D,t[26]=O):O=t[26];let k=y(Y),A;t[27]===k?A=t[28]:(A=(0,q.jsx)(`div`,{className:`absolute -top-1.5 -bottom-1.5 w-0.5 bg-bernstein`,style:{left:k}}),t[27]=k,t[28]=A),t[29]!==b||t[30]!==O||t[31]!==A?(g=(0,q.jsxs)(`div`,{className:`relative h-8 rounded-lg bg-erhaben`,role:`img`,"aria-label":b,children:[O,A]}),t[29]=b,t[30]=O,t[31]=A,t[32]=g):g=t[32],p=`flex flex-wrap gap-x-6 gap-y-2 text-sm text-text-2`,c=`flex items-center gap-2`,t[33]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,q.jsx)(`span`,{className:`size-2.5 rounded-sm bg-cyan`}),t[33]=l):l=t[33],u=` Geladene Modelle: `,f=Math.round(v),t[0]=r,t[1]=i?.ram_total,t[2]=i?.ram_used,t[3]=n,t[4]=a,t[5]=o,t[6]=s,t[7]=c,t[8]=l,t[9]=u,t[10]=f,t[11]=p,t[12]=m,t[13]=h,t[14]=g}else o=t[5],s=t[6],c=t[7],l=t[8],u=t[9],f=t[10],p=t[11],m=t[12],h=t[13],g=t[14];let _;t[34]!==c||t[35]!==l||t[36]!==u||t[37]!==f?(_=(0,q.jsxs)(`span`,{className:c,children:[l,u,f,` GB Dateien`]}),t[34]=c,t[35]=l,t[36]=u,t[37]=f,t[38]=_):_=t[38];let v;t[39]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,q.jsx)(`span`,{className:`size-2.5 rounded-sm bg-cyan/35`}),t[39]=v):v=t[39];let y;t[40]===s?y=t[41]:(y=Math.round(s),t[40]=s,t[41]=y);let b;t[42]===y?b=t[43]:(b=(0,q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[v,` Cache, Dienste, System: `,y,` GB`]}),t[42]=y,t[43]=b);let x;t[44]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,q.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`span`,{className:`h-3 w-0.5 bg-bernstein`}),` Ab hier wird es eng`]}),t[44]=x):x=t[44];let S;t[45]!==b||t[46]!==p||t[47]!==_?(S=(0,q.jsxs)(`div`,{className:p,children:[_,b,x]}),t[45]=b,t[46]=p,t[47]=_,t[48]=S):S=t[48];let T;return t[49]!==o||t[50]!==S||t[51]!==m||t[52]!==h||t[53]!==g?(T=(0,q.jsxs)(o,{titel:m,rechts:h,children:[g,S]}),t[49]=o,t[50]=S,t[51]=m,t[52]=h,t[53]=g,t[54]=T):T=t[54],T}function Z(e,t){return e+(C(t.size_bytes)??0)}function Q(e){let t=(0,G.c)(7),{name:n,wert:r}=e,i;t[0]===n?i=t[1]:(i=(0,q.jsx)(`dt`,{className:`text-xs text-text-3`,children:n}),t[0]=n,t[1]=i);let a;t[2]===r?a=t[3]:(a=(0,q.jsx)(`dd`,{className:`ziffern m-0 text-lg`,children:r}),t[2]=r,t[3]=a);let o;return t[4]!==i||t[5]!==a?(o=(0,q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[i,a]}),t[4]=i,t[5]=a,t[6]=o):o=t[6],o}function ce(e){let t=(0,G.c)(48),{titel:n,modell:r,zwilling:i,laeuft:a,nutzer:o}=e,s=_();if(!r){let e;t[0]===n?e=t[1]:(e=(0,q.jsx)(`span`,{className:`schild text-sm text-text-3`,children:n}),t[0]=n,t[1]=e);let r;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,q.jsx)(E,{children:`Frei`}),t[2]=r):r=t[2];let i;t[3]===e?i=t[4]:(i=(0,q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[e,r]}),t[3]=e,t[4]=i);let a,o;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,q.jsx)(`h3`,{className:`font-anzeige text-xl font-semibold text-text-2`,children:`Nicht belegt`}),o=(0,q.jsx)(`p`,{className:`text-sm text-text-2`,children:`Nur belegen, wenn ein Modell hier echten Mehrwert bringt. Das Radar meldet Kandidaten.`}),t[5]=a,t[6]=o):(a=t[5],o=t[6]);let s;return t[7]===i?s=t[8]:(s=(0,q.jsxs)(`article`,{className:`flex flex-col gap-3.5 rounded-2xl border border-dashed border-linie-stark p-5`,children:[i,a,o]}),t[7]=i,t[8]=s),s}let c;t[9]!==r.ctx||t[10]!==r.parallel_slots?(c=r.ctx?Math.round(r.ctx/Math.max(1,r.parallel_slots)/1024):null,t[9]=r.ctx,t[10]=r.parallel_slots,t[11]=c):c=t[11];let l=c,u=!!r.capabilities?.vision||!!i,d;t[12]===n?d=t[13]:(d=(0,q.jsx)(`span`,{className:`schild text-sm text-text-3`,children:n}),t[12]=n,t[13]=d);let f=a?`gruen`:`grau`,p=a?`Geladen`:`Auf Abruf`,m;t[14]!==f||t[15]!==p?(m=(0,q.jsx)(E,{art:f,children:p}),t[14]=f,t[15]=p,t[16]=m):m=t[16];let h;t[17]!==d||t[18]!==m?(h=(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[d,m]}),t[17]=d,t[18]=m,t[19]=h):h=t[19];let g;t[20]===r.name?g=t[21]:(g=(0,q.jsx)(`h3`,{className:`ziffern m-0 text-lg font-medium break-all`,children:r.name}),t[20]=r.name,t[21]=g);let v;t[22]===r.size_bytes?v=t[23]:(v=F(r.size_bytes),t[22]=r.size_bytes,t[23]=v);let y;t[24]===v?y=t[25]:(y=(0,q.jsx)(Q,{name:`Größe`,wert:v}),t[24]=v,t[25]=y);let b=l?`${l}k`:`–`,x;t[26]===b?x=t[27]:(x=(0,q.jsx)(Q,{name:`Kontext`,wert:b}),t[26]=b,t[27]=x);let S=u?`ja`:`nein`,C;t[28]===S?C=t[29]:(C=(0,q.jsx)(Q,{name:`Bilder`,wert:S}),t[28]=S,t[29]=C);let w;t[30]!==x||t[31]!==C||t[32]!==y?(w=(0,q.jsxs)(`dl`,{className:`m-0 grid grid-cols-3 gap-3`,children:[y,x,C]}),t[30]=x,t[31]=C,t[32]=y,t[33]=w):w=t[33];let T=r.spec_active?` Mit Draft-Beschleunigung.`:``,D=i?` Bilder sieht es über seinen Bild-Zwilling, der nur bei Bedarf lädt.`:``,O;t[34]!==o||t[35]!==T||t[36]!==D?(O=(0,q.jsxs)(`p`,{className:`text-sm text-text-2`,children:[`Genutzt von `,o,`.`,T,D]}),t[34]=o,t[35]=T,t[36]=D,t[37]=O):O=t[37];let k;t[38]!==s||t[39]!==a||t[40]!==r.name?(k=!a&&(0,q.jsx)(R,{variant:`outline`,size:`sm`,className:`mt-auto self-start`,onClick:()=>s.mutate(r.name),disabled:s.isPending,children:`Jetzt laden`}),t[38]=s,t[39]=a,t[40]=r.name,t[41]=k):k=t[41];let A;return t[42]!==w||t[43]!==O||t[44]!==k||t[45]!==h||t[46]!==g?(A=(0,q.jsxs)(`article`,{className:`flex flex-col gap-3.5 rounded-2xl border border-linie bg-panel p-5`,children:[h,g,w,O,k]}),t[42]=w,t[43]=O,t[44]=k,t[45]=h,t[46]=g,t[47]=A):A=t[47],A}function $(e){let t=(0,G.c)(54),{nutzung:n,laedt:r,fehler:i}=e;if(!n){let e;return t[0]!==i||t[1]!==r?(e=(0,q.jsx)(P,{titel:`Wer nutzt die Modelle`,children:r?(0,q.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):(0,q.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Die Nutzung lässt sich gerade nicht lesen`,i?`: ${i}`:`.`]})}),t[0]=i,t[1]=r,t[2]=e):e=t[2],e}let a;t[3]===n.absender?a=t[4]:(a=Math.max(1,...n.absender.map(fe)),t[3]=n.absender,t[4]=a);let o=a,s,c,l,u,d,f,p,m,h,g,_,v;if(t[5]!==o||t[6]!==n.absender||t[7]!==n.letzte_24h||t[8]!==n.tage){let e=n.letzte_24h.map(ue),r=Math.max(1,...e);s=P,v=`Wer nutzt die Modelle`,t[21]===n.tage?c=t[22]:(c=(0,q.jsxs)(`span`,{className:`ziffern text-xs text-text-3`,children:[`letzte `,n.tage,` Tage`]}),t[21]=n.tage,t[22]=c),t[23]===n.absender.length?l=t[24]:(l=n.absender.length===0&&(0,q.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine Anfragen aufgezeichnet.`}),t[23]=n.absender.length,t[24]=l);let i;if(t[25]!==o||t[26]!==n.absender){let e;t[28]===o?e=t[29]:(e=e=>(0,q.jsxs)(`li`,{className:`flex flex-col gap-1.5`,children:[(0,q.jsxs)(`div`,{className:`flex justify-between gap-3 text-sm`,children:[(0,q.jsx)(`span`,{children:e.name}),(0,q.jsx)(`span`,{className:`ziffern`,children:y(e.anfragen)})]}),(0,q.jsx)(`div`,{className:`h-2 rounded-full bg-erhaben`,children:(0,q.jsx)(`div`,{className:`h-2 rounded-full bg-cyan`,style:{width:`${e.anfragen/o*100}%`}})})]},e.name),t[28]=o,t[29]=e),i=n.absender.map(e),t[25]=o,t[26]=n.absender,t[27]=i}else i=t[27];t[30]===i?u=t[31]:(u=(0,q.jsx)(`ul`,{className:`m-0 flex list-none flex-col gap-3.5 p-0`,children:i}),t[30]=i,t[31]=u),g=`flex flex-col gap-1.5`,t[32]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,q.jsx)(`span`,{className:`schild text-xs text-text-3`,children:`Anfragen je Stunde, letzte 24 h`}),t[32]=_):_=t[32],d=`0 0 240 64`,f=`h-16 w-full`,p=`img`,m=`Anfragen je Stunde in den letzten 24 Stunden`;let a;t[33]===r?a=t[34]:(a=(e,t)=>{let n=e?Math.max(3,e/r*50):2;return(0,q.jsx)(`rect`,{x:t*10+1.5,y:52-n,width:7,height:n,rx:1.5,fill:e?`var(--cyan)`:`var(--linie)`},t)},t[33]=r,t[34]=a),h=e.map(a),t[5]=o,t[6]=n.absender,t[7]=n.letzte_24h,t[8]=n.tage,t[9]=s,t[10]=c,t[11]=l,t[12]=u,t[13]=d,t[14]=f,t[15]=p,t[16]=m,t[17]=h,t[18]=g,t[19]=_,t[20]=v}else s=t[9],c=t[10],l=t[11],u=t[12],d=t[13],f=t[14],p=t[15],m=t[16],h=t[17],g=t[18],_=t[19],v=t[20];let b;t[35]===Symbol.for(`react.memo_cache_sentinel`)?(b=[0,6,12,18].map(le),t[35]=b):b=t[35];let x;t[36]!==d||t[37]!==f||t[38]!==p||t[39]!==m||t[40]!==h?(x=(0,q.jsxs)(`svg`,{viewBox:d,className:f,role:p,"aria-label":m,children:[h,b]}),t[36]=d,t[37]=f,t[38]=p,t[39]=m,t[40]=h,t[41]=x):x=t[41];let S;t[42]!==x||t[43]!==g||t[44]!==_?(S=(0,q.jsxs)(`div`,{className:g,children:[_,x]}),t[42]=x,t[43]=g,t[44]=_,t[45]=S):S=t[45];let C;t[46]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,q.jsx)(`p`,{className:`text-xs text-text-3`,children:`Anfragen an llama-swap. NerdQuiz geht direkt dorthin, alles andere über MC2.`}),t[46]=C):C=t[46];let w;return t[47]!==s||t[48]!==c||t[49]!==l||t[50]!==u||t[51]!==S||t[52]!==v?(w=(0,q.jsxs)(s,{titel:v,rechts:c,children:[l,u,S,C]}),t[47]=s,t[48]=c,t[49]=l,t[50]=u,t[51]=S,t[52]=v,t[53]=w):w=t[53],w}function le(e){return(0,q.jsx)(`text`,{x:e*10+5,y:63,textAnchor:`middle`,style:{fontSize:9,fill:`var(--text-3)`,fontFamily:`var(--font-mono)`},children:e},e)}function ue(e){return Object.values(e.je_absender).reduce(de,0)}function de(e,t){return e+t}function fe(e){return e.anfragen}var pe={bestanden:`gruen`,durchgefallen:`rot`,wartet:`cyan`,neu:`cyan`,getestet:`grau`,uebernommen:`gruen`,verworfen:`grau`},me={besser:`text-gruen`,schlechter:`text-rot-text`,gleich:`text-text-2`};function he(e){let t=(0,G.c)(4),{test:n}=e,r,i;if(t[0]!==n.vergleich){i=Symbol.for(`react.early_return_sentinel`);bb0:{let e=Object.entries(n.vergleich??{});if(e.length===0){i=null;break bb0}let a;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,q.jsxs)(`div`,{role:`row`,className:`schild grid grid-cols-[minmax(0,1fr)_auto_auto] gap-x-4 pb-1 text-xs text-text-3`,children:[(0,q.jsx)(`span`,{role:`columnheader`,children:`Messwert`}),(0,q.jsx)(`span`,{role:`columnheader`,className:`text-right`,children:`Kandidat`}),(0,q.jsx)(`span`,{role:`columnheader`,className:`text-right`,children:`Heute`})]}),t[3]=a):a=t[3],r=(0,q.jsxs)(`div`,{role:`table`,"aria-label":`Messwerte gegen das heutige Modell`,className:`rounded-lg border border-linie bg-erhaben/50 px-3 py-2 text-sm`,children:[a,e.map(ge)]})}t[0]=n.vergleich,t[1]=r,t[2]=i}else r=t[1],i=t[2];return i===Symbol.for(`react.early_return_sentinel`)?r:i}function ge(e){let[t,n]=e;return(0,q.jsxs)(`div`,{role:`row`,className:`grid grid-cols-[minmax(0,1fr)_auto_auto] gap-x-4 border-t border-linie py-1`,children:[(0,q.jsx)(`span`,{role:`rowheader`,className:`text-text-2`,children:t}),(0,q.jsx)(`span`,{role:`cell`,className:`ziffern text-right ${me[n.urteil??``]??`text-text-2`}`,children:f(n.kandidat,n.einheit)}),(0,q.jsx)(`span`,{role:`cell`,className:`ziffern text-right text-text-3`,children:f(n.baseline,n.einheit)})]},t)}function _e(e){let t=(0,G.c)(59),{k:n,test:r,heute:i}=e,a=D(),[o,s]=(0,K.useState)(null),c;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c=[`bestanden`,`wartet`,`neu`,`getestet`],t[0]=c):c=t[0];let l=c.includes(n.status),u=n.rolle===`hirn`,d;t[1]===n.name?d=t[2]:(d=(0,q.jsx)(`span`,{className:`ziffern text-[15px] font-medium`,children:n.name}),t[1]=n.name,t[2]=d);let f=u?`fürs Hirn`:`fürs Coden`,p;t[3]===f?p=t[4]:(p=(0,q.jsx)(E,{art:`cyan`,children:f}),t[3]=f,t[4]=p);let m;t[5]!==n.eng||t[6]!==n.groesse_gb||t[7]!==n.passt?(m=n.groesse_gb!=null&&(0,q.jsx)(E,{art:n.eng?`bernstein`:n.passt?`gruen`:`rot`,children:n.eng?`passt knapp`:n.passt?`passt`:`passt nicht`}),t[5]=n.eng,t[6]=n.groesse_gb,t[7]=n.passt,t[8]=m):m=t[8];let h=pe[n.status]??`grau`,g=k[n.status]??n.status,_;t[9]!==h||t[10]!==g?(_=(0,q.jsx)(E,{art:h,children:g}),t[9]=h,t[10]=g,t[11]=_):_=t[11];let v;t[12]!==d||t[13]!==p||t[14]!==m||t[15]!==_?(v=(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[d,p,m,_]}),t[12]=d,t[13]=p,t[14]=m,t[15]=_,t[16]=v):v=t[16];let y;t[17]===n.groesse_gb?y=t[18]:(y=n.groesse_gb==null?``:`${n.groesse_gb.toLocaleString(`de-DE`)} GB. `,t[17]=n.groesse_gb,t[18]=y);let b;t[19]!==n.begruendung||t[20]!==y?(b=(0,q.jsxs)(`p`,{className:`text-sm text-text-2`,children:[y,n.begruendung]}),t[19]=n.begruendung,t[20]=y,t[21]=b):b=t[21];let x;t[22]!==n.status||t[23]!==r?(x=r&&[`bestanden`,`durchgefallen`].includes(n.status)&&(0,q.jsx)(he,{test:r}),t[22]=n.status,t[23]=r,t[24]=x):x=t[24];let S;t[25]!==a.isPending||t[26]!==n.status||t[27]!==l?(S=l&&(0,q.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[n.status===`bestanden`&&(0,q.jsx)(R,{size:`sm`,disabled:a.isPending,onClick:()=>s(`uebernehmen`),children:`Übernehmen`}),(0,q.jsx)(R,{variant:`outline`,size:`sm`,disabled:a.isPending,onClick:()=>s(`verwerfen`),children:`Verwerfen`})]}),t[25]=a.isPending,t[26]=n.status,t[27]=l,t[28]=S):S=t[28];let C=o===`uebernehmen`,w=`${n.name} übernehmen?`,T=u?`${n.name} wird Lucys Hirn${i?` und löst ${i} ab`:``}. NerdQuiz und OpenChamber nutzen ab dann ebenfalls das neue Modell. Hermes startet dafür kurz neu, Lucy ist etwa eine Minute nicht erreichbar. Das alte Modell bleibt auf der Platte.`:`${n.name} wird der Coder${i?` und löst ${i} ab`:``}. OpenChamber plant und baut ab dann damit. Das alte Modell bleibt auf der Platte.`,O;t[29]===Symbol.for(`react.memo_cache_sentinel`)?(O=()=>s(null),t[29]=O):O=t[29];let A;t[30]!==a||t[31]!==o||t[32]!==n.id||t[33]!==n.name?(A=()=>{o===`uebernehmen`&&(a.mutate({id:n.id,aktion:`uebernehmen`,name:n.name}),s(null))},t[30]=a,t[31]=o,t[32]=n.id,t[33]=n.name,t[34]=A):A=t[34];let j;t[35]!==a.isPending||t[36]!==C||t[37]!==w||t[38]!==T||t[39]!==A?(j=(0,q.jsx)(ne,{offen:C,titel:w,text:T,knopf:`Übernehmen`,gesperrt:a.isPending,onNein:O,onJa:A}),t[35]=a.isPending,t[36]=C,t[37]=w,t[38]=T,t[39]=A,t[40]=j):j=t[40];let M=o===`verwerfen`,N=`${n.name} verwerfen?`,P;t[41]===Symbol.for(`react.memo_cache_sentinel`)?(P=()=>s(null),t[41]=P):P=t[41];let F;t[42]!==a||t[43]!==o||t[44]!==n.id||t[45]!==n.name?(F=()=>{o===`verwerfen`&&(a.mutate({id:n.id,aktion:`verwerfen`,name:n.name}),s(null))},t[42]=a,t[43]=o,t[44]=n.id,t[45]=n.name,t[46]=F):F=t[46];let I;t[47]!==a.isPending||t[48]!==M||t[49]!==N||t[50]!==F?(I=(0,q.jsx)(ne,{offen:M,gefahr:!0,titel:N,text:`Die heruntergeladenen Dateien werden gelöscht, und das Radar testet dieses Modell nicht noch einmal.`,knopf:`Verwerfen`,gesperrt:a.isPending,onNein:P,onJa:F}),t[47]=a.isPending,t[48]=M,t[49]=N,t[50]=F,t[51]=I):I=t[51];let L;return t[52]!==b||t[53]!==x||t[54]!==S||t[55]!==j||t[56]!==I||t[57]!==v?(L=(0,q.jsxs)(`li`,{className:`flex flex-col gap-2 border-t border-linie py-3.5`,children:[v,b,x,S,j,I]}),t[52]=b,t[53]=x,t[54]=S,t[55]=j,t[56]=I,t[57]=v,t[58]=L):L=t[58],L}function ve(e){let t=(0,G.c)(30),{hirn:n,coder:r}=e,i=N(),a=A(),o=x(),s=S(),c=o.data?.jobs,l=(c??[]).filter(be).at(-1),u=a.data?.job_id,d;t[0]!==u||t[1]!==c?(d=!!u&&!!c&&!c.some(e=>e.id===u),t[0]=u,t[1]=c,t[2]=d):d=t[2];let f=d,p=a.isPending||f||l!==void 0&&g(l),m=(0,K.useRef)(p);if((0,K.useEffect)(()=>{m.current&&!p&&s.invalidateQueries({queryKey:[`radar`]}),m.current=p},[p,s]),i.isError&&!i.data){let e=i.error instanceof v&&i.error.status===404,n;return t[3]!==e||t[4]!==i.error?(n=(0,q.jsx)(P,{titel:`Modell-Radar`,id:`radar`,className:`scroll-mt-4`,children:e?(0,q.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Das Radar ist auf dieser Box noch nicht eingerichtet.`}):(0,q.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Das Radar antwortet gerade nicht: `,i.error.message]})}),t[3]=e,t[4]=i.error,t[5]=n):n=t[5],n}let h=i.data,_=P,y;t[6]===a?y=t[7]:(y=()=>a.mutate(void 0),t[6]=a,t[7]=y);let b=p?`Sucht …`:`Jetzt suchen`,C;t[8]!==p||t[9]!==y||t[10]!==b?(C=(0,q.jsx)(R,{variant:`info`,size:`sm`,onClick:y,disabled:p,children:b}),t[8]=p,t[9]=y,t[10]=b,t[11]=C):C=t[11];let w;t[12]===h?w=t[13]:(w=h?.naechster_test?` Nächster Test: ${I(h.naechster_test)}.`:``,t[12]=h,t[13]=w);let T=p?` Sucht gerade bei Hugging Face. Das dauert ein paar Minuten; den Stand zeigt der Auftrag oben unter „Aufträge“.`:``,E;t[14]!==w||t[15]!==T?(E=(0,q.jsxs)(`p`,{className:`-mt-2 text-sm text-text-2`,children:[`Testet nachts zwischen 00:30 und 02:30 selbst, höchstens einen Kandidaten pro Woche.`,w,T]}),t[14]=w,t[15]=T,t[16]=E):E=t[16];let D=!p&&l?.state===`failed`&&(0,q.jsxs)(`p`,{role:`alert`,className:`text-sm text-rot-text`,children:[`Die letzte Suche ist gescheitert: `,H(l)??`ohne Meldung`]}),O;t[17]!==r||t[18]!==h||t[19]!==n?(O=h?h.kandidaten.length===0?(0,q.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Nichts Besseres in Sicht.`}):(0,q.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:h.kandidaten.map(e=>(0,q.jsx)(_e,{k:e,test:h.tests.find(t=>t.kandidat===e.id),heute:e.rolle===`hirn`?n:r},e.id))}):(0,q.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),t[17]=r,t[18]=h,t[19]=n,t[20]=O):O=t[20];let k;t[21]===h?k=t[22]:(k=h&&h.tests.length>0&&(0,q.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,q.jsx)(`h3`,{className:`schild text-xs text-text-3`,children:`Letzte Tests`}),h.tests.slice(0,3).map(ye)]}),t[21]=h,t[22]=k);let j;return t[23]!==_||t[24]!==E||t[25]!==D||t[26]!==O||t[27]!==k||t[28]!==C?(j=(0,q.jsxs)(_,{titel:`Modell-Radar`,id:`radar`,className:`scroll-mt-4`,rechts:C,children:[E,D,O,k]}),t[23]=_,t[24]=E,t[25]=D,t[26]=O,t[27]=k,t[28]=C,t[29]=j):j=t[29],j}function ye(e){return(0,q.jsxs)(`p`,{className:`text-sm text-text-2`,children:[(0,q.jsx)(`span`,{className:`ziffern text-text-3`,children:I(e.datum)}),` · `,e.zusammenfassung]},e.id)}function be(e){return e.group===`radar`}var xe=`text-rot-text hover:bg-rot-grund hover:text-rot-text`;function Se(e){let t=(0,G.c)(13),{titel:n,zusatz:r,children:i}=e,a;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,q.jsx)(s,{className:`size-4 text-text-3 transition-transform group-open:rotate-90`,"aria-hidden":!0}),t[0]=a):a=t[0];let o;t[1]===n?o=t[2]:(o=(0,q.jsxs)(`span`,{className:`flex items-center gap-2 text-[15px] font-medium`,children:[a,n]}),t[1]=n,t[2]=o);let c;t[3]===r?c=t[4]:(c=(0,q.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:r}),t[3]=r,t[4]=c);let l;t[5]!==o||t[6]!==c?(l=(0,q.jsxs)(`summary`,{className:`flex min-h-12 cursor-pointer list-none items-center justify-between gap-3 [&::-webkit-details-marker]:hidden`,children:[o,c]}),t[5]=o,t[6]=c,t[7]=l):l=t[7];let u;t[8]===i?u=t[9]:(u=(0,q.jsx)(`div`,{className:`flex flex-col gap-2 pb-1`,children:i}),t[8]=i,t[9]=u);let d;return t[10]!==l||t[11]!==u?(d=(0,q.jsxs)(`details`,{className:`group rounded-xl border border-linie bg-erhaben/40 px-4 open:pb-2`,children:[l,u]}),t[10]=l,t[11]=u,t[12]=d):d=t[12],d}function Ce(){let e=(0,G.c)(37),t=m(),n=h(),[r,i]=(0,K.useState)(null),a,o,s,c,l,u;if(e[0]!==t.data||e[1]!==t.error||e[2]!==t.isError||e[3]!==t.isPending||e[4]!==n){u=Symbol.for(`react.early_return_sentinel`);bb0:{let r=t.data?.kandidaten??[],d=r.reduce(we,0);if(t.isError&&!t.data){let n;e[11]===t.error.message?n=e[12]:(n=(0,q.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Was sich aufräumen ließe, lässt sich gerade nicht lesen: `,t.error.message]}),e[11]=t.error.message,e[12]=n);let r;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,q.jsx)(Ee,{}),e[13]=r):r=e[13];let i;e[14]===n?i=e[15]:(i=(0,q.jsxs)(P,{titel:`Aufräumen`,children:[n,r]}),e[14]=n,e[15]=i),u=i;break bb0}a=P,o=`Aufräumen`,s=r.length>0?(0,q.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[`bis zu `,d.toLocaleString(`de-DE`,{maximumFractionDigits:0}),` GB frei`]}):void 0,e[16]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,q.jsx)(`p`,{className:`-mt-2 text-sm text-text-2`,children:`Modelle und Ordner, die gerade niemand nutzt. Nichts davon wird von selbst gelöscht, das entscheidest du je Eintrag.`}),e[16]=c):c=e[16],l=t.isPending?(0,q.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):r.length===0?(0,q.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Nichts aufzuräumen.`}):(0,q.jsx)(Se,{titel:`Modelle und Ordner`,zusatz:`${r.length} Einträge · bis zu ${d.toLocaleString(`de-DE`,{maximumFractionDigits:0})} GB`,children:(0,q.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:r.map(e=>(0,q.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-3 border-t border-linie py-3`,children:[(0,q.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,q.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,q.jsx)(`span`,{className:`ziffern text-sm break-all`,children:e.name}),(0,q.jsx)(E,{children:e.art===`eintrag`?`Eintrag`:`Ordner`})]}),(0,q.jsx)(`span`,{className:`text-sm text-text-2`,children:e.hinweis})]}),(0,q.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,q.jsxs)(`span`,{className:`ziffern text-sm text-text-2`,children:[e.groesse_gb.toLocaleString(`de-DE`),` GB`]}),(0,q.jsx)(R,{variant:`ghost`,size:`sm`,className:xe,disabled:n.isPending,onClick:()=>i(e),children:`Löschen`})]})]},`${e.art}-${e.name}`))})})}e[0]=t.data,e[1]=t.error,e[2]=t.isError,e[3]=t.isPending,e[4]=n,e[5]=a,e[6]=o,e[7]=s,e[8]=c,e[9]=l,e[10]=u}else a=e[5],o=e[6],s=e[7],c=e[8],l=e[9],u=e[10];if(u!==Symbol.for(`react.early_return_sentinel`))return u;let d=r!==null,f=`${r?.name??``} löschen?`,p;e[17]===r?.groesse_gb?p=e[18]:(p=r?.groesse_gb.toLocaleString(`de-DE`)??``,e[17]=r?.groesse_gb,e[18]=p);let g=`${r?.hinweis??``} Es werden ${p} GB frei. Das lässt sich nicht rückgängig machen — zurück ginge es nur mit einem neuen Download.`,_;e[19]===Symbol.for(`react.memo_cache_sentinel`)?(_=()=>i(null),e[19]=_):_=e[19];let v;e[20]!==r||e[21]!==n?(v=()=>{r&&n.mutate(r),i(null)},e[20]=r,e[21]=n,e[22]=v):v=e[22];let y;e[23]!==n.isPending||e[24]!==v||e[25]!==d||e[26]!==f||e[27]!==g?(y=(0,q.jsx)(ne,{offen:d,gefahr:!0,titel:f,text:g,knopf:`Endgültig löschen`,gesperrt:n.isPending,onNein:_,onJa:v}),e[23]=n.isPending,e[24]=v,e[25]=d,e[26]=f,e[27]=g,e[28]=y):y=e[28];let b;e[29]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,q.jsx)(Ee,{}),e[29]=b):b=e[29];let x;return e[30]!==a||e[31]!==o||e[32]!==s||e[33]!==y||e[34]!==c||e[35]!==l?(x=(0,q.jsxs)(a,{titel:o,rechts:s,children:[c,l,y,b]}),e[30]=a,e[31]=o,e[32]=s,e[33]=y,e[34]=c,e[35]=l,e[36]=x):x=e[36],x}function we(e,t){return e+t.groesse_gb}function Te(e){return e>=1e9?`${(e/1e9).toLocaleString(`de-DE`,{maximumFractionDigits:1})} GB`:e>=1e6?`${Math.round(e/1e6)} MB`:e>=1e3?`${Math.round(e/1e3)} KB`:`unter 1 KB`}function Ee(){let e=(0,G.c)(23),t=u(),n=O(),[r,i]=(0,K.useState)(null),a,o;if(e[0]!==t.data||e[1]!==t.error||e[2]!==t.isError||e[3]!==t.isPending||e[4]!==n.isPending){let r=t.data?.altreste??[],s=r.reduce(De,0);a=`flex flex-col gap-2`,o=t.isPending?(0,q.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}):t.isError&&!t.data?(0,q.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Die Altreste lassen sich gerade nicht lesen: `,t.error.message]}):r.length===0?(0,q.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine Altreste mehr.`}):(0,q.jsxs)(Se,{titel:`Altreste neben dem Betrieb`,zusatz:`${r.length} Einträge · ${Te(s)}`,children:[(0,q.jsx)(`p`,{className:`text-sm text-text-2`,children:`Test-Ordner, alte Umgebungen und Arbeitskopien, die nichts mehr nutzt. Die Box prüft sie gegen eine feste Liste und löscht auch hier nie von selbst.`}),(0,q.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:r.map(e=>(0,q.jsxs)(`li`,{className:`flex flex-wrap items-center justify-between gap-3 border-t border-linie py-3`,children:[(0,q.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,q.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2`,children:[(0,q.jsx)(`span`,{className:`text-sm`,children:e.name}),(0,q.jsx)(E,{children:`Altrest`})]}),(0,q.jsx)(`span`,{className:`ziffern text-xs break-all text-text-3`,children:e.pfade.join(` · `)}),(0,q.jsx)(`span`,{className:`text-sm text-text-2`,children:e.hinweis})]}),(0,q.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,q.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:e.groesse}),(0,q.jsx)(R,{variant:`ghost`,size:`sm`,className:xe,disabled:n.isPending,onClick:()=>i(e),children:`Löschen`})]})]},e.id))})]}),e[0]=t.data,e[1]=t.error,e[2]=t.isError,e[3]=t.isPending,e[4]=n.isPending,e[5]=a,e[6]=o}else a=e[5],o=e[6];let s=r!==null,c=`${r?.name??``} löschen?`,l;e[7]===r?.pfade?l=e[8]:(l=r?.pfade.join(`, `)??``,e[7]=r?.pfade,e[8]=l);let d=`${r?.hinweis??``} Gelöscht wird: ${l} (${r?.groesse??``}). Das lässt sich nicht rückgängig machen.`,f;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(f=()=>i(null),e[9]=f):f=e[9];let p;e[10]!==r||e[11]!==n?(p=()=>{r&&n.mutate(r),i(null)},e[10]=r,e[11]=n,e[12]=p):p=e[12];let m;e[13]!==n.isPending||e[14]!==s||e[15]!==c||e[16]!==d||e[17]!==p?(m=(0,q.jsx)(ne,{offen:s,gefahr:!0,titel:c,text:d,knopf:`Endgültig löschen`,gesperrt:n.isPending,onNein:f,onJa:p}),e[13]=n.isPending,e[14]=s,e[15]=c,e[16]=d,e[17]=p,e[18]=m):m=e[18];let h;return e[19]!==a||e[20]!==o||e[21]!==m?(h=(0,q.jsxs)(`div`,{className:a,children:[o,m]}),e[19]=a,e[20]=o,e[21]=m,e[22]=h):h=e[22],h}function De(e,t){return e+t.groesse_bytes}function Oe(){let e=(0,G.c)(74),t=l(),n=T(),r=N(),i=x(),[a,o]=(0,K.useState)(!1),s;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(s={select:Me},e[0]=s):s=e[0];let u=W(s),d=!!t.data&&!n.isPending&&!r.isPending&&!i.isPending,f,p;if(e[1]!==d||e[2]!==u?(f=()=>{d&&u===`radar`&&document.getElementById(`radar`)?.scrollIntoView({block:`start`})},p=[d,u],e[1]=d,e[2]=u,e[3]=f,e[4]=p):(f=e[3],p=e[4]),(0,K.useEffect)(f,p),t.isPending){let t;return e[5]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,q.jsx)(j,{text:`Modelle werden gelesen …`}),e[5]=t):t=e[5],t}if(!t.data){let n=`Die Modell-Liste fehlt: ${t.error?.message??`keine Daten`}`,r;return e[6]===n?r=e[7]:(r=(0,q.jsx)(j,{fehler:!0,text:n}),e[6]=n,e[7]=r),r}let m=t.data.models,h=t.data.running,g,_,v,y,b,S,C,w,E,D,O,k;if(e[8]!==h||e[9]!==m||e[10]!==n.data||e[11]!==n.error?.message||e[12]!==n.isPending){let t=m.find(je);_=m.find(Ae);let r;e[25]===m?r=e[26]:(r=(e,t)=>e?m.find(n=>n!==e&&n.aliases.includes(t)&&n.filename===e.filename):void 0,e[25]=m,e[26]=r);let i=r,a=i(t,`vision`);v=i(_,`coder-bild`);let s=m.filter(e=>![t,_,a,v].includes(e)),l;e[27]===n.data?.zuletzt_geladen?l=e[28]:(l=n.data?.zuletzt_geladen??{},e[27]=n.data?.zuletzt_geladen,e[28]=l);let u=l;e[29]!==h||e[30]!==m?(O=(0,q.jsx)(X,{modelle:m,laufend:h}),e[29]=h,e[30]=m,e[31]=O):O=e[31],e[32]===Symbol.for(`react.memo_cache_sentinel`)?(k=(0,q.jsx)(U,{alsPanel:!0}),e[32]=k):k=e[32];let d;e[33]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,q.jsx)(ce,{titel:`Dritte Rolle`,laeuft:!1,nutzer:``}),e[33]=d):d=e[33],y=(0,q.jsxs)(`section`,{"aria-label":`Rollen`,className:`grid gap-5 md:grid-cols-3 md:gap-6`,children:[(0,q.jsx)(ce,{titel:`Hirn`,modell:t,zwilling:a,laeuft:!!t&&h.includes(t.name),nutzer:`Lucy, NerdQuiz und OpenChamber für Kleinkram`}),(0,q.jsx)(ce,{titel:`Coder`,modell:_,zwilling:v,laeuft:!!_&&h.includes(_.name),nutzer:`OpenChamber zum Planen und Bauen und Lucys Delegation`}),d]});let f=n.error?.message??null,p;e[34]!==n.data||e[35]!==n.isPending||e[36]!==f?(p=(0,q.jsx)($,{nutzung:n.data,laedt:n.isPending,fehler:f}),e[34]=n.data,e[35]=n.isPending,e[36]=f,e[37]=p):p=e[37];let x=t?.name,T=_?.name,A;e[38]!==x||e[39]!==T?(A=(0,q.jsx)(ve,{hirn:x,coder:T}),e[38]=x,e[39]=T,e[40]=A):A=e[40],e[41]!==p||e[42]!==A?(b=(0,q.jsxs)(`div`,{className:`grid gap-5 md:gap-6 lg:grid-cols-[minmax(0,1fr)_minmax(0,1.3fr)]`,children:[p,A]}),e[41]=p,e[42]=A,e[43]=b):b=e[43],g=P,w=`Weitere Einträge`,e[44]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,q.jsxs)(R,{variant:`outline`,size:`sm`,onClick:()=>o(!0),children:[(0,q.jsx)(c,{"aria-hidden":!0}),` Modelle selbst suchen`]}),e[44]=E):E=e[44],D=s.length===0&&(0,q.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine weiteren Einträge.`}),S=`m-0 flex list-none flex-col p-0`;let j;e[45]!==h||e[46]!==u?(j=e=>(0,q.jsxs)(`li`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-3 border-t border-linie py-2.5 sm:grid-cols-[minmax(0,1fr)_120px_160px]`,children:[(0,q.jsxs)(`span`,{className:`min-w-0`,children:[(0,q.jsx)(`span`,{className:`ziffern block text-sm break-all`,children:e.name}),(0,q.jsx)(`span`,{className:`text-xs text-text-3`,children:e.aliases.length?e.aliases.join(`, `):`ohne Rolle`})]}),(0,q.jsx)(`span`,{className:`ziffern text-sm text-text-2`,children:F(e.size_bytes)}),(0,q.jsx)(`span`,{className:`ziffern hidden text-xs text-text-3 sm:block`,children:h.includes(e.name)?`geladen`:u[e.name]?`zuletzt ${I(u[e.name])}`:`länger nicht geladen`})]},e.name),e[45]=h,e[46]=u,e[47]=j):j=e[47],C=s.map(j),e[8]=h,e[9]=m,e[10]=n.data,e[11]=n.error?.message,e[12]=n.isPending,e[13]=g,e[14]=_,e[15]=v,e[16]=y,e[17]=b,e[18]=S,e[19]=C,e[20]=w,e[21]=E,e[22]=D,e[23]=O,e[24]=k}else g=e[13],_=e[14],v=e[15],y=e[16],b=e[17],S=e[18],C=e[19],w=e[20],E=e[21],D=e[22],O=e[23],k=e[24];let A;e[48]!==S||e[49]!==C?(A=(0,q.jsx)(`ul`,{className:S,children:C}),e[48]=S,e[49]=C,e[50]=A):A=e[50];let M;e[51]!==g||e[52]!==A||e[53]!==w||e[54]!==E||e[55]!==D?(M=(0,q.jsxs)(g,{titel:w,rechts:E,children:[D,A]}),e[51]=g,e[52]=A,e[53]=w,e[54]=E,e[55]=D,e[56]=M):M=e[56];let L;e[57]===Symbol.for(`react.memo_cache_sentinel`)?(L=(0,q.jsx)(Ce,{}),e[57]=L):L=e[57];let ee;e[58]===Symbol.for(`react.memo_cache_sentinel`)?(ee=()=>o(!1),e[58]=ee):ee=e[58];let z;e[59]!==_||e[60]!==v?(z=_?{name:_.name,zwilling:!!v,weitere:_.aliases.filter(ke)}:void 0,e[59]=_,e[60]=v,e[61]=z):z=e[61];let B;e[62]===z?B=e[63]:(B={coder:z},e[62]=z,e[63]=B);let V;e[64]!==a||e[65]!==B?(V=(0,q.jsx)(J,{offen:a,onSchliessen:ee,rollenJetzt:B}),e[64]=a,e[65]=B,e[66]=V):V=e[66];let te;return e[67]!==y||e[68]!==b||e[69]!==M||e[70]!==V||e[71]!==O||e[72]!==k?(te=(0,q.jsxs)(q.Fragment,{children:[O,k,y,b,M,L,V]}),e[67]=y,e[68]=b,e[69]=M,e[70]=V,e[71]=O,e[72]=k,e[73]=te):te=e[73],te}function ke(e){return e.toLowerCase()!==`coder`}function Ae(e){return p(e)===`coder`}function je(e){return p(e)===`hirn`}function Me(e){return e.hash}export{Oe as ModelleSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Monitoring-BicHox4A.js b/frontend/dist/assets/Monitoring-Dh_DGery.js similarity index 99% rename from frontend/dist/assets/Monitoring-BicHox4A.js rename to frontend/dist/assets/Monitoring-Dh_DGery.js index 98721cb..df4990e 100644 --- a/frontend/dist/assets/Monitoring-BicHox4A.js +++ b/frontend/dist/assets/Monitoring-Dh_DGery.js @@ -1 +1 @@ -import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{Et as a,F as o,J as s,W as c,a as l,c as u,i as d,l as f,n as p,o as m,p as h,qt as g,r as _,s as v,t as y,tt as b,u as x}from"./index-COh3_SSc.js";var S=t(),C=r(e(),1),w=n(),T={rechts:12,oben:10,unten:24};function E(e){let t=(0,S.c)(4),n=e===void 0?640:e,r=(0,C.useRef)(null),[i,a]=(0,C.useState)(n),o,s;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=()=>{let e=r.current;if(!e||typeof ResizeObserver>`u`)return;let t=new ResizeObserver(e=>{let[t]=e;return a(Math.max(240,Math.round(t.contentRect.width)))});return t.observe(e),()=>t.disconnect()},s=[],t[0]=o,t[1]=s):(o=t[0],s=t[1]),(0,C.useEffect)(o,s);let c;return t[2]===i?c=t[3]:(c=[r,i],t[2]=i,t[3]=c),c}function D(e){let t=(0,S.c)(72),{reihen:n,einheit:r,langerZeitraum:i,hoehe:a,titel:o}=e,s=a===void 0?180:a,[c,l]=E(),[d,f]=(0,C.useState)(null),h,g,y,b,x,D,j,M;if(t[0]!==l||t[1]!==r||t[2]!==s||t[3]!==d||t[4]!==i||t[5]!==c||t[6]!==n||t[7]!==o){let e=n[0]?.punkte??[],a=e.length,S=m(n.map(ee),r),C=r===`prozent`?[0,25,50,75,100]:[0,S/2,S],E=Math.max(40,Math.max(...C.map(e=>v(e,r).length))*7+12),N;t[16]===E?N=t[17]:(N={...T,links:E},t[16]=E,t[17]=N);let P=N,F=l-P.links-T.rechts,I=s-T.oben-T.unten,L=e[0]?.[0]??0,R=e[a-1]?.[0]??1,z=e=>P.links+(R>L?(e-L)/(R-L)*F:0),te;t[18]!==I||t[19]!==S?(te=e=>T.oben+I-Math.min(e,S)/(S||1)*I,t[18]=I,t[19]=S,t[20]=te):te=t[20];let B=te,V=T.oben+I,ne=a>1?[0,.25,.5,.75,1].map(t=>e[Math.round(t*(a-1))][0]):[],re;t[21]===n?re=t[22]:(re=n.some(A),t[21]=n,t[22]=re);let H=re,ie;t[23]===a?ie=t[24]:(ie=function(e){if(a===0)return;let t=e.currentTarget.getBoundingClientRect(),n=Math.min(1,Math.max(0,(e.clientX-t.left)/t.width));f(Math.round(n*(a-1)))},t[23]=a,t[24]=ie);let U=ie,W;t[25]===a?W=t[26]:(W=function(e){if(a!==0){if(e.key===`ArrowLeft`)f(e=>Math.max(0,(e??a-1)-1));else if(e.key===`ArrowRight`)f(e=>Math.min(a-1,(e??a-1)+1));else return;e.preventDefault()}},t[25]=a,t[26]=W);let ae=W,G=d!==null&&e[d]?e[d][0]:null,K=G===null?0:z(G),oe=e.slice(-12);D=`flex flex-col gap-2`,t[27]===n?j=t[28]:(j=n.length>1&&(0,w.jsx)(`ul`,{className:`m-0 flex list-none flex-wrap gap-x-4 gap-y-1 p-0 text-sm text-text-2`,"aria-label":`Legende`,children:n.map(k)}),t[27]=n,t[28]=j);let q;t[29]===a?q=t[30]:(q=()=>f(e=>e??(a?a-1:null)),t[29]=a,t[30]=q);let J;t[31]===Symbol.for(`react.memo_cache_sentinel`)?(J=()=>f(null),t[31]=J):J=t[31];let Y;t[32]!==P.links||t[33]!==V||t[34]!==H||t[35]!==F||t[36]!==I||t[37]!==n||t[38]!==z||t[39]!==B?(Y=H?n.map(e=>(0,w.jsxs)(`g`,{children:[n.length===1&&(0,w.jsx)(`path`,{d:p(e.punkte,z,B,V),fill:e.farbe,opacity:.1}),(0,w.jsx)(`path`,{d:_(e.punkte,z,B),fill:`none`,stroke:e.farbe,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`})]},e.name)):(0,w.jsx)(`text`,{x:P.links+F/2,y:T.oben+I/2,textAnchor:`middle`,className:`fill-text-3 text-sm`,children:`Noch keine Messwerte in diesem Zeitraum`}),t[32]=P.links,t[33]=V,t[34]=H,t[35]=F,t[36]=I,t[37]=n,t[38]=z,t[39]=B,t[40]=Y):Y=t[40];let se;t[41]===Symbol.for(`react.memo_cache_sentinel`)?(se=()=>f(null),t[41]=se):se=t[41];let X;t[42]!==P.links||t[43]!==F||t[44]!==I||t[45]!==U?(X=(0,w.jsx)(`rect`,{x:P.links,y:T.oben,width:F,height:I,fill:`transparent`,onPointerMove:U,onPointerLeave:se}),t[42]=P.links,t[43]=F,t[44]=I,t[45]=U,t[46]=X):X=t[46];let ce=(0,w.jsxs)(`svg`,{width:l,height:s,role:`img`,"aria-label":o,tabIndex:0,onKeyDown:ae,onFocus:q,onBlur:J,className:`block max-w-full outline-none focus-visible:rounded-md focus-visible:ring-2 focus-visible:ring-cyan/60`,children:[C.map(e=>(0,w.jsxs)(`g`,{children:[(0,w.jsx)(`line`,{x1:P.links,x2:l-T.rechts,y1:B(e),y2:B(e),stroke:`var(--linie)`,strokeWidth:1}),(0,w.jsx)(`text`,{x:P.links-8,y:B(e)+4,textAnchor:`end`,className:`fill-text-3 font-mono text-[11px]`,children:v(e,r)})]},e)),ne.map((e,t)=>(0,w.jsx)(`text`,{x:z(e),y:s-6,className:`fill-text-3 font-mono text-[11px]`,textAnchor:t===0?`start`:t===ne.length-1?`end`:`middle`,children:u(e,i)},e)),Y,G!==null&&(0,w.jsxs)(`g`,{"aria-hidden":!0,children:[(0,w.jsx)(`line`,{x1:z(G),x2:z(G),y1:T.oben,y2:V,stroke:`var(--text-3)`,strokeWidth:1}),n.map(e=>{let t=e.punkte[d]?.[1];return t==null?null:(0,w.jsx)(`circle`,{cx:z(G),cy:B(t),r:4,fill:e.farbe,stroke:`var(--panel)`,strokeWidth:2},e.name)})]}),X]}),Z=G!==null&&(0,w.jsxs)(`div`,{role:`status`,className:`pointer-events-none absolute top-1 z-10 flex min-w-36 flex-col gap-1 rounded-lg border border-linie-stark bg-erhaben px-3 py-2 shadow-lg`,style:K>l/2?{right:l-K+10}:{left:K+10},children:[(0,w.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:u(G,!0)}),n.map(e=>(0,w.jsxs)(`span`,{className:`flex items-center gap-2 text-sm`,children:[(0,w.jsx)(`span`,{"aria-hidden":!0,className:`h-0.5 w-3 rounded-full`,style:{background:e.farbe}}),(0,w.jsx)(`span`,{className:`font-semibold text-foreground`,children:v(e.punkte[d]?.[1],r)}),n.length>1&&(0,w.jsx)(`span`,{className:`text-text-3`,children:e.name})]},e.name))]});t[47]!==c||t[48]!==ce||t[49]!==Z?(M=(0,w.jsxs)(`div`,{ref:c,className:`relative w-full`,children:[ce,Z]}),t[47]=c,t[48]=ce,t[49]=Z,t[50]=M):M=t[50],b=`group text-sm`,t[51]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,w.jsx)(`summary`,{className:`inline-flex cursor-pointer items-center text-text-3 hover:text-text-2`,children:`Werte als Tabelle`}),t[51]=x):x=t[51],g=`ziffern mt-2 w-full max-w-md border-collapse text-xs`;let Q;t[52]===Symbol.for(`react.memo_cache_sentinel`)?(Q=(0,w.jsx)(`th`,{className:`py-1 pr-4 font-normal`,children:`Zeit`}),t[52]=Q):Q=t[52];let $;t[53]===n?$=t[54]:($=n.map(O),t[53]=n,t[54]=$),t[55]===$?y=t[56]:(y=(0,w.jsx)(`thead`,{children:(0,w.jsxs)(`tr`,{className:`text-left text-text-3`,children:[Q,$]})}),t[55]=$,t[56]=y),h=oe.map((e,t)=>{let[o]=e;return(0,w.jsxs)(`tr`,{className:`border-t border-linie`,children:[(0,w.jsx)(`td`,{className:`py-1 pr-4 text-text-3`,children:u(o,i)}),n.map(e=>(0,w.jsx)(`td`,{className:`py-1 pr-4 text-text-2`,children:v(e.punkte[a-oe.length+t]?.[1],r)},e.name))]},o)}),t[0]=l,t[1]=r,t[2]=s,t[3]=d,t[4]=i,t[5]=c,t[6]=n,t[7]=o,t[8]=h,t[9]=g,t[10]=y,t[11]=b,t[12]=x,t[13]=D,t[14]=j,t[15]=M}else h=t[8],g=t[9],y=t[10],b=t[11],x=t[12],D=t[13],j=t[14],M=t[15];let N;t[57]===h?N=t[58]:(N=(0,w.jsx)(`tbody`,{children:h}),t[57]=h,t[58]=N);let P;t[59]!==N||t[60]!==g||t[61]!==y?(P=(0,w.jsxs)(`table`,{className:g,children:[y,N]}),t[59]=N,t[60]=g,t[61]=y,t[62]=P):P=t[62];let F;t[63]!==P||t[64]!==b||t[65]!==x?(F=(0,w.jsxs)(`details`,{className:b,children:[x,P]}),t[63]=P,t[64]=b,t[65]=x,t[66]=F):F=t[66];let I;return t[67]!==F||t[68]!==D||t[69]!==j||t[70]!==M?(I=(0,w.jsxs)(`div`,{className:D,children:[j,M,F]}),t[67]=F,t[68]=D,t[69]=j,t[70]=M,t[71]=I):I=t[71],I}function O(e){return(0,w.jsx)(`th`,{className:`py-1 pr-4 font-normal`,children:e.name},e.name)}function k(e){return(0,w.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,w.jsx)(`span`,{"aria-hidden":!0,className:`h-0.5 w-4 rounded-full`,style:{background:e.farbe}}),e.name]},e.name)}function A(e){return e.punkte.some(j)}function j(e){let[,t]=e;return t!==null}function ee(e){return e.punkte}var M=[{id:`1h`,name:`1 Stunde`,text:`letzte Stunde`},{id:`24h`,name:`24 Stunden`,text:`letzte 24 Stunden`},{id:`7d`,name:`7 Tage`,text:`letzte 7 Tage`}];function N(e){let t=(0,S.c)(6),{wert:n,onWahl:r,farbe:a}=e,o=a===`box`?`border-box-rand bg-box-grund text-box-text`:`border-lab-rand bg-lab-grund text-lab-text`,s;t[0]!==o||t[1]!==r||t[2]!==n?(s=M.map(e=>(0,w.jsx)(`button`,{type:`button`,onClick:()=>r(e.id),"aria-pressed":n===e.id,className:i(`h-9 rounded-full border px-4 text-sm`,n===e.id?o:`border-linie text-text-2 hover:border-linie-stark hover:text-foreground`),children:e.name},e.id)),t[0]=o,t[1]=r,t[2]=n,t[3]=s):s=t[3];let c;return t[4]===s?c=t[5]:(c=(0,w.jsx)(`div`,{role:`group`,"aria-label":`Zeitraum`,className:`flex flex-wrap gap-2`,children:s}),t[4]=s,t[5]=c),c}function P(e){let t=(0,S.c)(9),{titel:n,rechts:r,children:i}=e,a;t[0]===n?a=t[1]:(a=(0,w.jsx)(`h3`,{className:`schild text-sm tracking-[0.18em] text-text-2`,children:n}),t[0]=n,t[1]=a);let o;t[2]!==r||t[3]!==a?(o=(0,w.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[a,r]}),t[2]=r,t[3]=a,t[4]=o):o=t[4];let s;return t[5]!==i||t[6]!==o||t[7]!==n?(s=(0,w.jsxs)(`section`,{"aria-label":n,className:`flex min-w-0 flex-col gap-3 rounded-2xl border border-linie bg-panel p-4 sm:p-5`,children:[o,i]}),t[5]=i,t[6]=o,t[7]=n,t[8]=s):s=t[8],s}var F=e=>M.find(t=>t.id===e)?.text??``;function I(){let e=(0,S.c)(97),[t,n]=(0,C.useState)(`1h`),r=o(t),s=a(),c;e[0]===r.data?.reihen?c=e[1]:(c=r.data?.reihen??{},e[0]=r.data?.reihen,e[1]=c);let u=c,d;e[2]===r.data?.aktuell?d=e[3]:(d=r.data?.aktuell??{},e[2]=r.data?.aktuell,e[3]=d);let p=d,m=t===`7d`,g;e[4]!==p||e[5]!==u?(g=(e,t)=>e??p[t]??l(u[t]),e[4]=p,e[5]=u,e[6]=g):g=e[6];let _=g,v;e[7]===t?v=e[8]:(v=(0,w.jsx)(N,{wert:t,onWahl:n,farbe:`box`}),e[7]=t,e[8]=v);let b;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,w.jsx)(`span`,{className:`text-sm text-text-3`,children:`Zahlen live, Verläufe im Minutentakt`}),e[9]=b):b=e[9];let x;e[10]===v?x=e[11]:(x=(0,w.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[v,b]}),e[10]=v,e[11]=x);let T=s?.cpu,E;e[12]!==T||e[13]!==_?(E=_(T,`cpu`),e[12]=T,e[13]=_,e[14]=E):E=e[14];let O=s?.cpu,k;e[15]!==O||e[16]!==_?(k=f(_(O,`cpu`),85,95),e[15]=O,e[16]=_,e[17]=k):k=e[17];let A;e[18]===t?A=e[19]:(A=F(t),e[18]=t,e[19]=A);let j;e[20]!==A||e[21]!==E||e[22]!==k?(j=(0,w.jsx)(y,{label:`CPU`,wert:E,einheit:`prozent`,max:100,zustand:k,zeitraumText:A}),e[20]=A,e[21]=E,e[22]=k,e[23]=j):j=e[23];let ee=s?.ram,M;e[24]!==ee||e[25]!==_?(M=_(ee,`ram`),e[24]=ee,e[25]=_,e[26]=M):M=e[26];let I=s?.ram,L;e[27]!==I||e[28]!==_?(L=f(_(I,`ram`),85,95),e[27]=I,e[28]=_,e[29]=L):L=e[29];let R;e[30]===t?R=e[31]:(R=F(t),e[30]=t,e[31]=R);let z;e[32]!==M||e[33]!==L||e[34]!==R?(z=(0,w.jsx)(y,{label:`Speicher`,wert:M,einheit:`prozent`,max:100,zustand:L,zeitraumText:R}),e[32]=M,e[33]=L,e[34]=R,e[35]=z):z=e[35];let te=s?.gpu,B;e[36]!==te||e[37]!==_?(B=_(te,`gpu`),e[36]=te,e[37]=_,e[38]=B):B=e[38];let V;e[39]===t?V=e[40]:(V=F(t),e[39]=t,e[40]=V);let ne;e[41]!==B||e[42]!==V?(ne=(0,w.jsx)(y,{label:`GPU`,wert:B,einheit:`prozent`,max:100,zeitraumText:V}),e[41]=B,e[42]=V,e[43]=ne):ne=e[43];let re=s?.temp_cpu,H;e[44]!==re||e[45]!==_?(H=_(re,`temp_cpu`),e[44]=re,e[45]=_,e[46]=H):H=e[46];let ie=s?.temp_cpu,U;e[47]!==ie||e[48]!==_?(U=f(_(ie,`temp_cpu`),80,90),e[47]=ie,e[48]=_,e[49]=U):U=e[49];let W;e[50]===t?W=e[51]:(W=F(t),e[50]=t,e[51]=W);let ae;e[52]!==H||e[53]!==U||e[54]!==W?(ae=(0,w.jsx)(y,{label:`CPU-Temp.`,wert:H,einheit:`grad`,max:100,zustand:U,zeitraumText:W}),e[52]=H,e[53]=U,e[54]=W,e[55]=ae):ae=e[55];let G=s?.temp_gpu,K;e[56]!==G||e[57]!==_?(K=_(G,`temp_gpu`),e[56]=G,e[57]=_,e[58]=K):K=e[58];let oe=s?.temp_gpu,q;e[59]!==oe||e[60]!==_?(q=f(_(oe,`temp_gpu`),80,90),e[59]=oe,e[60]=_,e[61]=q):q=e[61];let J;e[62]===t?J=e[63]:(J=F(t),e[62]=t,e[63]=J);let Y;e[64]!==K||e[65]!==q||e[66]!==J?(Y=(0,w.jsx)(y,{label:`GPU-Temp.`,wert:K,einheit:`grad`,max:100,zustand:q,zeitraumText:J}),e[64]=K,e[65]=q,e[66]=J,e[67]=Y):Y=e[67];let se=s?.disk,X;e[68]!==se||e[69]!==_?(X=_(se,`platte`),e[68]=se,e[69]=_,e[70]=X):X=e[70];let ce=s?.disk,Z;e[71]!==ce||e[72]!==_?(Z=f(_(ce,`platte`),80,90),e[71]=ce,e[72]=_,e[73]=Z):Z=e[73];let Q;e[74]===t?Q=e[75]:(Q=F(t),e[74]=t,e[75]=Q);let $;e[76]!==X||e[77]!==Z||e[78]!==Q?($=(0,w.jsx)(y,{label:`Platte`,wert:X,einheit:`prozent`,max:100,zustand:Z,zeitraumText:Q}),e[76]=X,e[77]=Z,e[78]=Q,e[79]=$):$=e[79];let le;e[80]!==j||e[81]!==z||e[82]!==ne||e[83]!==ae||e[84]!==Y||e[85]!==$?(le=(0,w.jsxs)(`div`,{className:`grid grid-cols-2 gap-2.5 sm:grid-cols-3 xl:grid-cols-6`,children:[j,z,ne,ae,Y,$]}),e[80]=j,e[81]=z,e[82]=ne,e[83]=ae,e[84]=Y,e[85]=$,e[86]=le):le=e[86];let ue;e[87]!==m||e[88]!==r.data||e[89]!==r.isError||e[90]!==r.isPlaceholderData||e[91]!==u?(ue=r.isError&&!r.data?(0,w.jsx)(h,{text:`Der Verlauf ist noch nicht da: Die KI-Box sammelt Messwerte, sobald der neue Stand läuft. Die Zahlen oben sind live.`}):(0,w.jsxs)(`div`,{className:i(`grid gap-5 md:gap-6 xl:grid-cols-2`,r.isPlaceholderData&&`opacity-70`),children:[(0,w.jsx)(P,{titel:`CPU`,children:(0,w.jsx)(D,{titel:`CPU-Auslastung in Prozent`,einheit:`prozent`,langerZeitraum:m,reihen:[{name:`CPU`,punkte:u.cpu??[],farbe:`var(--reihe-1)`}]})}),(0,w.jsx)(P,{titel:`Speicher`,children:(0,w.jsx)(D,{titel:`Belegter Speicher in Prozent`,einheit:`prozent`,langerZeitraum:m,reihen:[{name:`Speicher`,punkte:u.ram??[],farbe:`var(--reihe-1)`}]})}),(0,w.jsx)(P,{titel:`GPU`,children:(0,w.jsx)(D,{titel:`GPU-Last in Prozent`,einheit:`prozent`,langerZeitraum:m,reihen:[{name:`GPU`,punkte:u.gpu??[],farbe:`var(--reihe-1)`}]})}),(0,w.jsx)(P,{titel:`Temperatur`,children:(0,w.jsx)(D,{titel:`Temperatur von CPU und GPU in Grad`,einheit:`grad`,langerZeitraum:m,reihen:[{name:`CPU`,punkte:u.temp_cpu??[],farbe:`var(--reihe-1)`},{name:`GPU`,punkte:u.temp_gpu??[],farbe:`var(--reihe-2)`}]})}),(0,w.jsx)(P,{titel:`Netz`,children:(0,w.jsx)(D,{titel:`Netzverkehr in Bytes pro Sekunde`,einheit:`bytes_s`,langerZeitraum:m,reihen:[{name:`empfangen`,punkte:u.netz_rx??[],farbe:`var(--reihe-1)`},{name:`gesendet`,punkte:u.netz_tx??[],farbe:`var(--reihe-2)`}]})}),(0,w.jsx)(P,{titel:`Tokens pro Minute`,children:(0,w.jsx)(D,{titel:`Erzeugte und gelesene Tokens pro Minute`,einheit:`anzahl`,langerZeitraum:m,reihen:[{name:`Tokens`,punkte:u.tokens??[],farbe:`var(--reihe-1)`}]})})]}),e[87]=m,e[88]=r.data,e[89]=r.isError,e[90]=r.isPlaceholderData,e[91]=u,e[92]=ue):ue=e[92];let de;return e[93]!==le||e[94]!==ue||e[95]!==x?(de=(0,w.jsxs)(w.Fragment,{children:[x,le,ue]}),e[93]=le,e[94]=ue,e[95]=x,e[96]=de):de=e[96],de}function L(e){let t=(0,S.c)(35),{g:n,zeitraum:r}=e,i=n.aktuell,a=n.id,o=n.name,s;t[0]===n.name?s=t[1]:(s=(0,w.jsx)(`h3`,{className:`text-[15px] font-semibold`,children:n.name}),t[0]=n.name,t[1]=s);let c;t[2]===i.cpu?c=t[3]:(c=i.cpu==null?`–`:`${Math.round(i.cpu)} %`,t[2]=i.cpu,t[3]=c);let l;t[4]===i.ram?l=t[5]:(l=i.ram==null?`–`:`${Math.round(i.ram)} %`,t[4]=i.ram,t[5]=l);let u;t[6]===i.uptime_s?u=t[7]:(u=d(i.uptime_s),t[6]=i.uptime_s,t[7]=u);let f;t[8]!==c||t[9]!==l||t[10]!==u?(f=(0,w.jsxs)(`span`,{className:`ziffern text-xs text-text-3`,children:[`CPU `,c,` · RAM `,l,` · läuft `,u]}),t[8]=c,t[9]=l,t[10]=u,t[11]=f):f=t[11];let p;t[12]!==s||t[13]!==f?(p=(0,w.jsxs)(`div`,{className:`flex flex-wrap items-baseline justify-between gap-2`,children:[s,f]}),t[12]=s,t[13]=f,t[14]=p):p=t[14];let m=`${n.name}: CPU und Speicher in Prozent`,h=r===`7d`,g;t[15]===n.reihen.cpu?g=t[16]:(g=n.reihen.cpu??[],t[15]=n.reihen.cpu,t[16]=g);let _;t[17]===g?_=t[18]:(_={name:`CPU`,punkte:g,farbe:`var(--reihe-1)`},t[17]=g,t[18]=_);let v;t[19]===n.reihen.ram?v=t[20]:(v=n.reihen.ram??[],t[19]=n.reihen.ram,t[20]=v);let y;t[21]===v?y=t[22]:(y={name:`Speicher`,punkte:v,farbe:`var(--reihe-2)`},t[21]=v,t[22]=y);let b;t[23]!==_||t[24]!==y?(b=[_,y],t[23]=_,t[24]=y,t[25]=b):b=t[25];let x;t[26]!==h||t[27]!==b||t[28]!==m?(x=(0,w.jsx)(D,{titel:m,einheit:`prozent`,langerZeitraum:h,hoehe:140,reihen:b}),t[26]=h,t[27]=b,t[28]=m,t[29]=x):x=t[29];let C;return t[30]!==n.id||t[31]!==n.name||t[32]!==x||t[33]!==p?(C=(0,w.jsxs)(`section`,{id:a,"aria-label":o,className:`flex min-w-0 scroll-mt-6 flex-col gap-3 rounded-2xl border border-linie bg-panel p-4 sm:p-5`,children:[p,x]}),t[30]=n.id,t[31]=n.name,t[32]=x,t[33]=p,t[34]=C):C=t[34],C}function R(){let e=(0,S.c)(31),[t,n]=(0,C.useState)(`1h`),r=s(),a=b(),o=r.data?.rolle===`homelab`||!!(a.data?.eingerichtet&&a.data.erreichbar),l=c(t,o),u;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(u={select:V},e[0]=u):u=e[0];let p=g(u),m,_;if(e[1]!==p||e[2]!==l.data?(m=()=>{p&&l.data&&document.getElementById(p)?.scrollIntoView({block:`start`})},_=[p,l.data],e[1]=p,e[2]=l.data,e[3]=m,e[4]=_):(m=e[3],_=e[4]),(0,C.useEffect)(m,_),!o){let t;return e[5]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsx)(h,{fehler:!0,text:`Der Homelab-Teil antwortet gerade nicht.`}),e[5]=t):t=e[5],t}if(l.isPending){let t;return e[6]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsx)(h,{text:`Die Messwerte kommen gleich …`}),e[6]=t):t=e[6],t}if(!l.data){let t;return e[7]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsx)(h,{text:`Noch keine Messwerte: Der Ausführer schickt sie jede Minute, sobald sein neuer Stand eingespielt ist.`}),e[7]=t):t=e[7],t}let v,T,E,O;if(e[8]!==l.data.geraete||e[9]!==l.isPlaceholderData||e[10]!==t){let r=l.data.geraete.find(B),a=l.data.geraete.filter(te),o=t===`7d`,s=r?.aktuell??{},c;e[15]===t?c=e[16]:(c=(0,w.jsx)(N,{wert:t,onWahl:n,farbe:`homelab`}),e[15]=t,e[16]=c);let u;e[17]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,w.jsx)(`span`,{className:`text-sm text-text-3`,children:`Werte im Minutentakt vom Proxmox-Host`}),e[17]=u):u=e[17],e[18]===c?E=e[19]:(E=(0,w.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[c,u]}),e[18]=c,e[19]=E),O=r&&(0,w.jsxs)(x,{titel:`Proxmox-Host`,rechts:(0,w.jsxs)(`span`,{className:`ziffern text-sm text-text-3`,children:[`läuft `,d(s.uptime_s),s.load1==null?``:` · Last ${s.load1.toFixed(2).replace(`.`,`,`)}`]}),children:[(0,w.jsxs)(`div`,{className:`grid grid-cols-2 gap-2.5 sm:grid-cols-4`,children:[(0,w.jsx)(y,{label:`CPU`,wert:s.cpu,einheit:`prozent`,max:100,punkte:r.reihen.cpu,zustand:f(s.cpu??null,85,95),zeitraumText:F(t)}),(0,w.jsx)(y,{label:`Speicher`,wert:s.ram,einheit:`prozent`,max:100,punkte:r.reihen.ram,zustand:f(s.ram??null,90,95),zeitraumText:F(t)}),(0,w.jsx)(y,{label:`Temperatur`,wert:s.temp_cpu,einheit:`grad`,max:100,punkte:r.reihen.temp_cpu,zustand:f(s.temp_cpu??null,80,90),zeitraumText:F(t)}),(0,w.jsx)(y,{label:`Systemplatte`,wert:s.platte,einheit:`prozent`,max:100,punkte:r.reihen.platte,zustand:f(s.platte??null,80,90),zeitraumText:F(t)})]}),(0,w.jsxs)(`div`,{className:i(`grid gap-5 xl:grid-cols-2`,l.isPlaceholderData&&`opacity-70`),children:[(0,w.jsx)(P,{titel:`CPU und Speicher`,children:(0,w.jsx)(D,{titel:`Proxmox-Host: CPU und Speicher in Prozent`,einheit:`prozent`,langerZeitraum:o,reihen:[{name:`CPU`,punkte:r.reihen.cpu??[],farbe:`var(--reihe-1)`},{name:`Speicher`,punkte:r.reihen.ram??[],farbe:`var(--reihe-2)`}]})}),(0,w.jsx)(P,{titel:`Netz`,children:(0,w.jsx)(D,{titel:`Proxmox-Host: Netzverkehr in Bytes pro Sekunde`,einheit:`bytes_s`,langerZeitraum:o,reihen:[{name:`empfangen`,punkte:r.reihen.netz_rx??[],farbe:`var(--reihe-1)`},{name:`gesendet`,punkte:r.reihen.netz_tx??[],farbe:`var(--reihe-2)`}]})}),(r.reihen.temp_cpu?.some(z)??!1)&&(0,w.jsx)(P,{titel:`Temperatur`,children:(0,w.jsx)(D,{titel:`Proxmox-Host: CPU-Temperatur in Grad`,einheit:`grad`,langerZeitraum:o,reihen:[{name:`CPU`,punkte:r.reihen.temp_cpu??[],farbe:`var(--reihe-1)`}]})})]})]});let p=l.isPlaceholderData&&`opacity-70`;e[20]===p?v=e[21]:(v=i(`grid gap-5 md:gap-6 xl:grid-cols-2`,p),e[20]=p,e[21]=v);let m;e[22]===t?m=e[23]:(m=e=>(0,w.jsx)(L,{g:e,zeitraum:t},e.id),e[22]=t,e[23]=m),T=a.map(m),e[8]=l.data.geraete,e[9]=l.isPlaceholderData,e[10]=t,e[11]=v,e[12]=T,e[13]=E,e[14]=O}else v=e[11],T=e[12],E=e[13],O=e[14];let k;e[24]!==v||e[25]!==T?(k=(0,w.jsx)(`div`,{className:v,children:T}),e[24]=v,e[25]=T,e[26]=k):k=e[26];let A;return e[27]!==E||e[28]!==O||e[29]!==k?(A=(0,w.jsxs)(w.Fragment,{children:[E,O,k]}),e[27]=E,e[28]=O,e[29]=k,e[30]=A):A=e[30],A}function z(e){let[,t]=e;return t!==null}function te(e){return e.art!==`proxmox-host`}function B(e){return e.art===`proxmox-host`}function V(e){return e.location.hash}export{I as BoxMonitoringSeite,R as HomelabMonitoringSeite}; \ No newline at end of file +import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{Et as a,F as o,J as s,W as c,a as l,c as u,i as d,l as f,n as p,o as m,p as h,qt as g,r as _,s as v,t as y,tt as b,u as x}from"./index-FvHAYExN.js";var S=t(),C=r(e(),1),w=n(),T={rechts:12,oben:10,unten:24};function E(e){let t=(0,S.c)(4),n=e===void 0?640:e,r=(0,C.useRef)(null),[i,a]=(0,C.useState)(n),o,s;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(o=()=>{let e=r.current;if(!e||typeof ResizeObserver>`u`)return;let t=new ResizeObserver(e=>{let[t]=e;return a(Math.max(240,Math.round(t.contentRect.width)))});return t.observe(e),()=>t.disconnect()},s=[],t[0]=o,t[1]=s):(o=t[0],s=t[1]),(0,C.useEffect)(o,s);let c;return t[2]===i?c=t[3]:(c=[r,i],t[2]=i,t[3]=c),c}function D(e){let t=(0,S.c)(72),{reihen:n,einheit:r,langerZeitraum:i,hoehe:a,titel:o}=e,s=a===void 0?180:a,[c,l]=E(),[d,f]=(0,C.useState)(null),h,g,y,b,x,D,j,M;if(t[0]!==l||t[1]!==r||t[2]!==s||t[3]!==d||t[4]!==i||t[5]!==c||t[6]!==n||t[7]!==o){let e=n[0]?.punkte??[],a=e.length,S=m(n.map(ee),r),C=r===`prozent`?[0,25,50,75,100]:[0,S/2,S],E=Math.max(40,Math.max(...C.map(e=>v(e,r).length))*7+12),N;t[16]===E?N=t[17]:(N={...T,links:E},t[16]=E,t[17]=N);let P=N,F=l-P.links-T.rechts,I=s-T.oben-T.unten,L=e[0]?.[0]??0,R=e[a-1]?.[0]??1,z=e=>P.links+(R>L?(e-L)/(R-L)*F:0),te;t[18]!==I||t[19]!==S?(te=e=>T.oben+I-Math.min(e,S)/(S||1)*I,t[18]=I,t[19]=S,t[20]=te):te=t[20];let B=te,V=T.oben+I,ne=a>1?[0,.25,.5,.75,1].map(t=>e[Math.round(t*(a-1))][0]):[],re;t[21]===n?re=t[22]:(re=n.some(A),t[21]=n,t[22]=re);let H=re,ie;t[23]===a?ie=t[24]:(ie=function(e){if(a===0)return;let t=e.currentTarget.getBoundingClientRect(),n=Math.min(1,Math.max(0,(e.clientX-t.left)/t.width));f(Math.round(n*(a-1)))},t[23]=a,t[24]=ie);let U=ie,W;t[25]===a?W=t[26]:(W=function(e){if(a!==0){if(e.key===`ArrowLeft`)f(e=>Math.max(0,(e??a-1)-1));else if(e.key===`ArrowRight`)f(e=>Math.min(a-1,(e??a-1)+1));else return;e.preventDefault()}},t[25]=a,t[26]=W);let ae=W,G=d!==null&&e[d]?e[d][0]:null,K=G===null?0:z(G),oe=e.slice(-12);D=`flex flex-col gap-2`,t[27]===n?j=t[28]:(j=n.length>1&&(0,w.jsx)(`ul`,{className:`m-0 flex list-none flex-wrap gap-x-4 gap-y-1 p-0 text-sm text-text-2`,"aria-label":`Legende`,children:n.map(k)}),t[27]=n,t[28]=j);let q;t[29]===a?q=t[30]:(q=()=>f(e=>e??(a?a-1:null)),t[29]=a,t[30]=q);let J;t[31]===Symbol.for(`react.memo_cache_sentinel`)?(J=()=>f(null),t[31]=J):J=t[31];let Y;t[32]!==P.links||t[33]!==V||t[34]!==H||t[35]!==F||t[36]!==I||t[37]!==n||t[38]!==z||t[39]!==B?(Y=H?n.map(e=>(0,w.jsxs)(`g`,{children:[n.length===1&&(0,w.jsx)(`path`,{d:p(e.punkte,z,B,V),fill:e.farbe,opacity:.1}),(0,w.jsx)(`path`,{d:_(e.punkte,z,B),fill:`none`,stroke:e.farbe,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`})]},e.name)):(0,w.jsx)(`text`,{x:P.links+F/2,y:T.oben+I/2,textAnchor:`middle`,className:`fill-text-3 text-sm`,children:`Noch keine Messwerte in diesem Zeitraum`}),t[32]=P.links,t[33]=V,t[34]=H,t[35]=F,t[36]=I,t[37]=n,t[38]=z,t[39]=B,t[40]=Y):Y=t[40];let se;t[41]===Symbol.for(`react.memo_cache_sentinel`)?(se=()=>f(null),t[41]=se):se=t[41];let X;t[42]!==P.links||t[43]!==F||t[44]!==I||t[45]!==U?(X=(0,w.jsx)(`rect`,{x:P.links,y:T.oben,width:F,height:I,fill:`transparent`,onPointerMove:U,onPointerLeave:se}),t[42]=P.links,t[43]=F,t[44]=I,t[45]=U,t[46]=X):X=t[46];let ce=(0,w.jsxs)(`svg`,{width:l,height:s,role:`img`,"aria-label":o,tabIndex:0,onKeyDown:ae,onFocus:q,onBlur:J,className:`block max-w-full outline-none focus-visible:rounded-md focus-visible:ring-2 focus-visible:ring-cyan/60`,children:[C.map(e=>(0,w.jsxs)(`g`,{children:[(0,w.jsx)(`line`,{x1:P.links,x2:l-T.rechts,y1:B(e),y2:B(e),stroke:`var(--linie)`,strokeWidth:1}),(0,w.jsx)(`text`,{x:P.links-8,y:B(e)+4,textAnchor:`end`,className:`fill-text-3 font-mono text-[11px]`,children:v(e,r)})]},e)),ne.map((e,t)=>(0,w.jsx)(`text`,{x:z(e),y:s-6,className:`fill-text-3 font-mono text-[11px]`,textAnchor:t===0?`start`:t===ne.length-1?`end`:`middle`,children:u(e,i)},e)),Y,G!==null&&(0,w.jsxs)(`g`,{"aria-hidden":!0,children:[(0,w.jsx)(`line`,{x1:z(G),x2:z(G),y1:T.oben,y2:V,stroke:`var(--text-3)`,strokeWidth:1}),n.map(e=>{let t=e.punkte[d]?.[1];return t==null?null:(0,w.jsx)(`circle`,{cx:z(G),cy:B(t),r:4,fill:e.farbe,stroke:`var(--panel)`,strokeWidth:2},e.name)})]}),X]}),Z=G!==null&&(0,w.jsxs)(`div`,{role:`status`,className:`pointer-events-none absolute top-1 z-10 flex min-w-36 flex-col gap-1 rounded-lg border border-linie-stark bg-erhaben px-3 py-2 shadow-lg`,style:K>l/2?{right:l-K+10}:{left:K+10},children:[(0,w.jsx)(`span`,{className:`ziffern text-xs text-text-3`,children:u(G,!0)}),n.map(e=>(0,w.jsxs)(`span`,{className:`flex items-center gap-2 text-sm`,children:[(0,w.jsx)(`span`,{"aria-hidden":!0,className:`h-0.5 w-3 rounded-full`,style:{background:e.farbe}}),(0,w.jsx)(`span`,{className:`font-semibold text-foreground`,children:v(e.punkte[d]?.[1],r)}),n.length>1&&(0,w.jsx)(`span`,{className:`text-text-3`,children:e.name})]},e.name))]});t[47]!==c||t[48]!==ce||t[49]!==Z?(M=(0,w.jsxs)(`div`,{ref:c,className:`relative w-full`,children:[ce,Z]}),t[47]=c,t[48]=ce,t[49]=Z,t[50]=M):M=t[50],b=`group text-sm`,t[51]===Symbol.for(`react.memo_cache_sentinel`)?(x=(0,w.jsx)(`summary`,{className:`inline-flex cursor-pointer items-center text-text-3 hover:text-text-2`,children:`Werte als Tabelle`}),t[51]=x):x=t[51],g=`ziffern mt-2 w-full max-w-md border-collapse text-xs`;let Q;t[52]===Symbol.for(`react.memo_cache_sentinel`)?(Q=(0,w.jsx)(`th`,{className:`py-1 pr-4 font-normal`,children:`Zeit`}),t[52]=Q):Q=t[52];let $;t[53]===n?$=t[54]:($=n.map(O),t[53]=n,t[54]=$),t[55]===$?y=t[56]:(y=(0,w.jsx)(`thead`,{children:(0,w.jsxs)(`tr`,{className:`text-left text-text-3`,children:[Q,$]})}),t[55]=$,t[56]=y),h=oe.map((e,t)=>{let[o]=e;return(0,w.jsxs)(`tr`,{className:`border-t border-linie`,children:[(0,w.jsx)(`td`,{className:`py-1 pr-4 text-text-3`,children:u(o,i)}),n.map(e=>(0,w.jsx)(`td`,{className:`py-1 pr-4 text-text-2`,children:v(e.punkte[a-oe.length+t]?.[1],r)},e.name))]},o)}),t[0]=l,t[1]=r,t[2]=s,t[3]=d,t[4]=i,t[5]=c,t[6]=n,t[7]=o,t[8]=h,t[9]=g,t[10]=y,t[11]=b,t[12]=x,t[13]=D,t[14]=j,t[15]=M}else h=t[8],g=t[9],y=t[10],b=t[11],x=t[12],D=t[13],j=t[14],M=t[15];let N;t[57]===h?N=t[58]:(N=(0,w.jsx)(`tbody`,{children:h}),t[57]=h,t[58]=N);let P;t[59]!==N||t[60]!==g||t[61]!==y?(P=(0,w.jsxs)(`table`,{className:g,children:[y,N]}),t[59]=N,t[60]=g,t[61]=y,t[62]=P):P=t[62];let F;t[63]!==P||t[64]!==b||t[65]!==x?(F=(0,w.jsxs)(`details`,{className:b,children:[x,P]}),t[63]=P,t[64]=b,t[65]=x,t[66]=F):F=t[66];let I;return t[67]!==F||t[68]!==D||t[69]!==j||t[70]!==M?(I=(0,w.jsxs)(`div`,{className:D,children:[j,M,F]}),t[67]=F,t[68]=D,t[69]=j,t[70]=M,t[71]=I):I=t[71],I}function O(e){return(0,w.jsx)(`th`,{className:`py-1 pr-4 font-normal`,children:e.name},e.name)}function k(e){return(0,w.jsxs)(`li`,{className:`flex items-center gap-2`,children:[(0,w.jsx)(`span`,{"aria-hidden":!0,className:`h-0.5 w-4 rounded-full`,style:{background:e.farbe}}),e.name]},e.name)}function A(e){return e.punkte.some(j)}function j(e){let[,t]=e;return t!==null}function ee(e){return e.punkte}var M=[{id:`1h`,name:`1 Stunde`,text:`letzte Stunde`},{id:`24h`,name:`24 Stunden`,text:`letzte 24 Stunden`},{id:`7d`,name:`7 Tage`,text:`letzte 7 Tage`}];function N(e){let t=(0,S.c)(6),{wert:n,onWahl:r,farbe:a}=e,o=a===`box`?`border-box-rand bg-box-grund text-box-text`:`border-lab-rand bg-lab-grund text-lab-text`,s;t[0]!==o||t[1]!==r||t[2]!==n?(s=M.map(e=>(0,w.jsx)(`button`,{type:`button`,onClick:()=>r(e.id),"aria-pressed":n===e.id,className:i(`h-9 rounded-full border px-4 text-sm`,n===e.id?o:`border-linie text-text-2 hover:border-linie-stark hover:text-foreground`),children:e.name},e.id)),t[0]=o,t[1]=r,t[2]=n,t[3]=s):s=t[3];let c;return t[4]===s?c=t[5]:(c=(0,w.jsx)(`div`,{role:`group`,"aria-label":`Zeitraum`,className:`flex flex-wrap gap-2`,children:s}),t[4]=s,t[5]=c),c}function P(e){let t=(0,S.c)(9),{titel:n,rechts:r,children:i}=e,a;t[0]===n?a=t[1]:(a=(0,w.jsx)(`h3`,{className:`schild text-sm tracking-[0.18em] text-text-2`,children:n}),t[0]=n,t[1]=a);let o;t[2]!==r||t[3]!==a?(o=(0,w.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[a,r]}),t[2]=r,t[3]=a,t[4]=o):o=t[4];let s;return t[5]!==i||t[6]!==o||t[7]!==n?(s=(0,w.jsxs)(`section`,{"aria-label":n,className:`flex min-w-0 flex-col gap-3 rounded-2xl border border-linie bg-panel p-4 sm:p-5`,children:[o,i]}),t[5]=i,t[6]=o,t[7]=n,t[8]=s):s=t[8],s}var F=e=>M.find(t=>t.id===e)?.text??``;function I(){let e=(0,S.c)(97),[t,n]=(0,C.useState)(`1h`),r=o(t),s=a(),c;e[0]===r.data?.reihen?c=e[1]:(c=r.data?.reihen??{},e[0]=r.data?.reihen,e[1]=c);let u=c,d;e[2]===r.data?.aktuell?d=e[3]:(d=r.data?.aktuell??{},e[2]=r.data?.aktuell,e[3]=d);let p=d,m=t===`7d`,g;e[4]!==p||e[5]!==u?(g=(e,t)=>e??p[t]??l(u[t]),e[4]=p,e[5]=u,e[6]=g):g=e[6];let _=g,v;e[7]===t?v=e[8]:(v=(0,w.jsx)(N,{wert:t,onWahl:n,farbe:`box`}),e[7]=t,e[8]=v);let b;e[9]===Symbol.for(`react.memo_cache_sentinel`)?(b=(0,w.jsx)(`span`,{className:`text-sm text-text-3`,children:`Zahlen live, Verläufe im Minutentakt`}),e[9]=b):b=e[9];let x;e[10]===v?x=e[11]:(x=(0,w.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[v,b]}),e[10]=v,e[11]=x);let T=s?.cpu,E;e[12]!==T||e[13]!==_?(E=_(T,`cpu`),e[12]=T,e[13]=_,e[14]=E):E=e[14];let O=s?.cpu,k;e[15]!==O||e[16]!==_?(k=f(_(O,`cpu`),85,95),e[15]=O,e[16]=_,e[17]=k):k=e[17];let A;e[18]===t?A=e[19]:(A=F(t),e[18]=t,e[19]=A);let j;e[20]!==A||e[21]!==E||e[22]!==k?(j=(0,w.jsx)(y,{label:`CPU`,wert:E,einheit:`prozent`,max:100,zustand:k,zeitraumText:A}),e[20]=A,e[21]=E,e[22]=k,e[23]=j):j=e[23];let ee=s?.ram,M;e[24]!==ee||e[25]!==_?(M=_(ee,`ram`),e[24]=ee,e[25]=_,e[26]=M):M=e[26];let I=s?.ram,L;e[27]!==I||e[28]!==_?(L=f(_(I,`ram`),85,95),e[27]=I,e[28]=_,e[29]=L):L=e[29];let R;e[30]===t?R=e[31]:(R=F(t),e[30]=t,e[31]=R);let z;e[32]!==M||e[33]!==L||e[34]!==R?(z=(0,w.jsx)(y,{label:`Speicher`,wert:M,einheit:`prozent`,max:100,zustand:L,zeitraumText:R}),e[32]=M,e[33]=L,e[34]=R,e[35]=z):z=e[35];let te=s?.gpu,B;e[36]!==te||e[37]!==_?(B=_(te,`gpu`),e[36]=te,e[37]=_,e[38]=B):B=e[38];let V;e[39]===t?V=e[40]:(V=F(t),e[39]=t,e[40]=V);let ne;e[41]!==B||e[42]!==V?(ne=(0,w.jsx)(y,{label:`GPU`,wert:B,einheit:`prozent`,max:100,zeitraumText:V}),e[41]=B,e[42]=V,e[43]=ne):ne=e[43];let re=s?.temp_cpu,H;e[44]!==re||e[45]!==_?(H=_(re,`temp_cpu`),e[44]=re,e[45]=_,e[46]=H):H=e[46];let ie=s?.temp_cpu,U;e[47]!==ie||e[48]!==_?(U=f(_(ie,`temp_cpu`),80,90),e[47]=ie,e[48]=_,e[49]=U):U=e[49];let W;e[50]===t?W=e[51]:(W=F(t),e[50]=t,e[51]=W);let ae;e[52]!==H||e[53]!==U||e[54]!==W?(ae=(0,w.jsx)(y,{label:`CPU-Temp.`,wert:H,einheit:`grad`,max:100,zustand:U,zeitraumText:W}),e[52]=H,e[53]=U,e[54]=W,e[55]=ae):ae=e[55];let G=s?.temp_gpu,K;e[56]!==G||e[57]!==_?(K=_(G,`temp_gpu`),e[56]=G,e[57]=_,e[58]=K):K=e[58];let oe=s?.temp_gpu,q;e[59]!==oe||e[60]!==_?(q=f(_(oe,`temp_gpu`),80,90),e[59]=oe,e[60]=_,e[61]=q):q=e[61];let J;e[62]===t?J=e[63]:(J=F(t),e[62]=t,e[63]=J);let Y;e[64]!==K||e[65]!==q||e[66]!==J?(Y=(0,w.jsx)(y,{label:`GPU-Temp.`,wert:K,einheit:`grad`,max:100,zustand:q,zeitraumText:J}),e[64]=K,e[65]=q,e[66]=J,e[67]=Y):Y=e[67];let se=s?.disk,X;e[68]!==se||e[69]!==_?(X=_(se,`platte`),e[68]=se,e[69]=_,e[70]=X):X=e[70];let ce=s?.disk,Z;e[71]!==ce||e[72]!==_?(Z=f(_(ce,`platte`),80,90),e[71]=ce,e[72]=_,e[73]=Z):Z=e[73];let Q;e[74]===t?Q=e[75]:(Q=F(t),e[74]=t,e[75]=Q);let $;e[76]!==X||e[77]!==Z||e[78]!==Q?($=(0,w.jsx)(y,{label:`Platte`,wert:X,einheit:`prozent`,max:100,zustand:Z,zeitraumText:Q}),e[76]=X,e[77]=Z,e[78]=Q,e[79]=$):$=e[79];let le;e[80]!==j||e[81]!==z||e[82]!==ne||e[83]!==ae||e[84]!==Y||e[85]!==$?(le=(0,w.jsxs)(`div`,{className:`grid grid-cols-2 gap-2.5 sm:grid-cols-3 xl:grid-cols-6`,children:[j,z,ne,ae,Y,$]}),e[80]=j,e[81]=z,e[82]=ne,e[83]=ae,e[84]=Y,e[85]=$,e[86]=le):le=e[86];let ue;e[87]!==m||e[88]!==r.data||e[89]!==r.isError||e[90]!==r.isPlaceholderData||e[91]!==u?(ue=r.isError&&!r.data?(0,w.jsx)(h,{text:`Der Verlauf ist noch nicht da: Die KI-Box sammelt Messwerte, sobald der neue Stand läuft. Die Zahlen oben sind live.`}):(0,w.jsxs)(`div`,{className:i(`grid gap-5 md:gap-6 xl:grid-cols-2`,r.isPlaceholderData&&`opacity-70`),children:[(0,w.jsx)(P,{titel:`CPU`,children:(0,w.jsx)(D,{titel:`CPU-Auslastung in Prozent`,einheit:`prozent`,langerZeitraum:m,reihen:[{name:`CPU`,punkte:u.cpu??[],farbe:`var(--reihe-1)`}]})}),(0,w.jsx)(P,{titel:`Speicher`,children:(0,w.jsx)(D,{titel:`Belegter Speicher in Prozent`,einheit:`prozent`,langerZeitraum:m,reihen:[{name:`Speicher`,punkte:u.ram??[],farbe:`var(--reihe-1)`}]})}),(0,w.jsx)(P,{titel:`GPU`,children:(0,w.jsx)(D,{titel:`GPU-Last in Prozent`,einheit:`prozent`,langerZeitraum:m,reihen:[{name:`GPU`,punkte:u.gpu??[],farbe:`var(--reihe-1)`}]})}),(0,w.jsx)(P,{titel:`Temperatur`,children:(0,w.jsx)(D,{titel:`Temperatur von CPU und GPU in Grad`,einheit:`grad`,langerZeitraum:m,reihen:[{name:`CPU`,punkte:u.temp_cpu??[],farbe:`var(--reihe-1)`},{name:`GPU`,punkte:u.temp_gpu??[],farbe:`var(--reihe-2)`}]})}),(0,w.jsx)(P,{titel:`Netz`,children:(0,w.jsx)(D,{titel:`Netzverkehr in Bytes pro Sekunde`,einheit:`bytes_s`,langerZeitraum:m,reihen:[{name:`empfangen`,punkte:u.netz_rx??[],farbe:`var(--reihe-1)`},{name:`gesendet`,punkte:u.netz_tx??[],farbe:`var(--reihe-2)`}]})}),(0,w.jsx)(P,{titel:`Tokens pro Minute`,children:(0,w.jsx)(D,{titel:`Erzeugte und gelesene Tokens pro Minute`,einheit:`anzahl`,langerZeitraum:m,reihen:[{name:`Tokens`,punkte:u.tokens??[],farbe:`var(--reihe-1)`}]})})]}),e[87]=m,e[88]=r.data,e[89]=r.isError,e[90]=r.isPlaceholderData,e[91]=u,e[92]=ue):ue=e[92];let de;return e[93]!==le||e[94]!==ue||e[95]!==x?(de=(0,w.jsxs)(w.Fragment,{children:[x,le,ue]}),e[93]=le,e[94]=ue,e[95]=x,e[96]=de):de=e[96],de}function L(e){let t=(0,S.c)(35),{g:n,zeitraum:r}=e,i=n.aktuell,a=n.id,o=n.name,s;t[0]===n.name?s=t[1]:(s=(0,w.jsx)(`h3`,{className:`text-[15px] font-semibold`,children:n.name}),t[0]=n.name,t[1]=s);let c;t[2]===i.cpu?c=t[3]:(c=i.cpu==null?`–`:`${Math.round(i.cpu)} %`,t[2]=i.cpu,t[3]=c);let l;t[4]===i.ram?l=t[5]:(l=i.ram==null?`–`:`${Math.round(i.ram)} %`,t[4]=i.ram,t[5]=l);let u;t[6]===i.uptime_s?u=t[7]:(u=d(i.uptime_s),t[6]=i.uptime_s,t[7]=u);let f;t[8]!==c||t[9]!==l||t[10]!==u?(f=(0,w.jsxs)(`span`,{className:`ziffern text-xs text-text-3`,children:[`CPU `,c,` · RAM `,l,` · läuft `,u]}),t[8]=c,t[9]=l,t[10]=u,t[11]=f):f=t[11];let p;t[12]!==s||t[13]!==f?(p=(0,w.jsxs)(`div`,{className:`flex flex-wrap items-baseline justify-between gap-2`,children:[s,f]}),t[12]=s,t[13]=f,t[14]=p):p=t[14];let m=`${n.name}: CPU und Speicher in Prozent`,h=r===`7d`,g;t[15]===n.reihen.cpu?g=t[16]:(g=n.reihen.cpu??[],t[15]=n.reihen.cpu,t[16]=g);let _;t[17]===g?_=t[18]:(_={name:`CPU`,punkte:g,farbe:`var(--reihe-1)`},t[17]=g,t[18]=_);let v;t[19]===n.reihen.ram?v=t[20]:(v=n.reihen.ram??[],t[19]=n.reihen.ram,t[20]=v);let y;t[21]===v?y=t[22]:(y={name:`Speicher`,punkte:v,farbe:`var(--reihe-2)`},t[21]=v,t[22]=y);let b;t[23]!==_||t[24]!==y?(b=[_,y],t[23]=_,t[24]=y,t[25]=b):b=t[25];let x;t[26]!==h||t[27]!==b||t[28]!==m?(x=(0,w.jsx)(D,{titel:m,einheit:`prozent`,langerZeitraum:h,hoehe:140,reihen:b}),t[26]=h,t[27]=b,t[28]=m,t[29]=x):x=t[29];let C;return t[30]!==n.id||t[31]!==n.name||t[32]!==x||t[33]!==p?(C=(0,w.jsxs)(`section`,{id:a,"aria-label":o,className:`flex min-w-0 scroll-mt-6 flex-col gap-3 rounded-2xl border border-linie bg-panel p-4 sm:p-5`,children:[p,x]}),t[30]=n.id,t[31]=n.name,t[32]=x,t[33]=p,t[34]=C):C=t[34],C}function R(){let e=(0,S.c)(31),[t,n]=(0,C.useState)(`1h`),r=s(),a=b(),o=r.data?.rolle===`homelab`||!!(a.data?.eingerichtet&&a.data.erreichbar),l=c(t,o),u;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(u={select:V},e[0]=u):u=e[0];let p=g(u),m,_;if(e[1]!==p||e[2]!==l.data?(m=()=>{p&&l.data&&document.getElementById(p)?.scrollIntoView({block:`start`})},_=[p,l.data],e[1]=p,e[2]=l.data,e[3]=m,e[4]=_):(m=e[3],_=e[4]),(0,C.useEffect)(m,_),!o){let t;return e[5]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsx)(h,{fehler:!0,text:`Der Homelab-Teil antwortet gerade nicht.`}),e[5]=t):t=e[5],t}if(l.isPending){let t;return e[6]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsx)(h,{text:`Die Messwerte kommen gleich …`}),e[6]=t):t=e[6],t}if(!l.data){let t;return e[7]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,w.jsx)(h,{text:`Noch keine Messwerte: Der Ausführer schickt sie jede Minute, sobald sein neuer Stand eingespielt ist.`}),e[7]=t):t=e[7],t}let v,T,E,O;if(e[8]!==l.data.geraete||e[9]!==l.isPlaceholderData||e[10]!==t){let r=l.data.geraete.find(B),a=l.data.geraete.filter(te),o=t===`7d`,s=r?.aktuell??{},c;e[15]===t?c=e[16]:(c=(0,w.jsx)(N,{wert:t,onWahl:n,farbe:`homelab`}),e[15]=t,e[16]=c);let u;e[17]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,w.jsx)(`span`,{className:`text-sm text-text-3`,children:`Werte im Minutentakt vom Proxmox-Host`}),e[17]=u):u=e[17],e[18]===c?E=e[19]:(E=(0,w.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[c,u]}),e[18]=c,e[19]=E),O=r&&(0,w.jsxs)(x,{titel:`Proxmox-Host`,rechts:(0,w.jsxs)(`span`,{className:`ziffern text-sm text-text-3`,children:[`läuft `,d(s.uptime_s),s.load1==null?``:` · Last ${s.load1.toFixed(2).replace(`.`,`,`)}`]}),children:[(0,w.jsxs)(`div`,{className:`grid grid-cols-2 gap-2.5 sm:grid-cols-4`,children:[(0,w.jsx)(y,{label:`CPU`,wert:s.cpu,einheit:`prozent`,max:100,punkte:r.reihen.cpu,zustand:f(s.cpu??null,85,95),zeitraumText:F(t)}),(0,w.jsx)(y,{label:`Speicher`,wert:s.ram,einheit:`prozent`,max:100,punkte:r.reihen.ram,zustand:f(s.ram??null,90,95),zeitraumText:F(t)}),(0,w.jsx)(y,{label:`Temperatur`,wert:s.temp_cpu,einheit:`grad`,max:100,punkte:r.reihen.temp_cpu,zustand:f(s.temp_cpu??null,80,90),zeitraumText:F(t)}),(0,w.jsx)(y,{label:`Systemplatte`,wert:s.platte,einheit:`prozent`,max:100,punkte:r.reihen.platte,zustand:f(s.platte??null,80,90),zeitraumText:F(t)})]}),(0,w.jsxs)(`div`,{className:i(`grid gap-5 xl:grid-cols-2`,l.isPlaceholderData&&`opacity-70`),children:[(0,w.jsx)(P,{titel:`CPU und Speicher`,children:(0,w.jsx)(D,{titel:`Proxmox-Host: CPU und Speicher in Prozent`,einheit:`prozent`,langerZeitraum:o,reihen:[{name:`CPU`,punkte:r.reihen.cpu??[],farbe:`var(--reihe-1)`},{name:`Speicher`,punkte:r.reihen.ram??[],farbe:`var(--reihe-2)`}]})}),(0,w.jsx)(P,{titel:`Netz`,children:(0,w.jsx)(D,{titel:`Proxmox-Host: Netzverkehr in Bytes pro Sekunde`,einheit:`bytes_s`,langerZeitraum:o,reihen:[{name:`empfangen`,punkte:r.reihen.netz_rx??[],farbe:`var(--reihe-1)`},{name:`gesendet`,punkte:r.reihen.netz_tx??[],farbe:`var(--reihe-2)`}]})}),(r.reihen.temp_cpu?.some(z)??!1)&&(0,w.jsx)(P,{titel:`Temperatur`,children:(0,w.jsx)(D,{titel:`Proxmox-Host: CPU-Temperatur in Grad`,einheit:`grad`,langerZeitraum:o,reihen:[{name:`CPU`,punkte:r.reihen.temp_cpu??[],farbe:`var(--reihe-1)`}]})})]})]});let p=l.isPlaceholderData&&`opacity-70`;e[20]===p?v=e[21]:(v=i(`grid gap-5 md:gap-6 xl:grid-cols-2`,p),e[20]=p,e[21]=v);let m;e[22]===t?m=e[23]:(m=e=>(0,w.jsx)(L,{g:e,zeitraum:t},e.id),e[22]=t,e[23]=m),T=a.map(m),e[8]=l.data.geraete,e[9]=l.isPlaceholderData,e[10]=t,e[11]=v,e[12]=T,e[13]=E,e[14]=O}else v=e[11],T=e[12],E=e[13],O=e[14];let k;e[24]!==v||e[25]!==T?(k=(0,w.jsx)(`div`,{className:v,children:T}),e[24]=v,e[25]=T,e[26]=k):k=e[26];let A;return e[27]!==E||e[28]!==O||e[29]!==k?(A=(0,w.jsxs)(w.Fragment,{children:[E,O,k]}),e[27]=E,e[28]=O,e[29]=k,e[30]=A):A=e[30],A}function z(e){let[,t]=e;return t!==null}function te(e){return e.art!==`proxmox-host`}function B(e){return e.art===`proxmox-host`}function V(e){return e.location.hash}export{I as BoxMonitoringSeite,R as HomelabMonitoringSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Protokollfenster-AdlLE7UT.js b/frontend/dist/assets/Protokollfenster-ebAC9ZNZ.js similarity index 94% rename from frontend/dist/assets/Protokollfenster-AdlLE7UT.js rename to frontend/dist/assets/Protokollfenster-ebAC9ZNZ.js index 1b404b6..e201385 100644 --- a/frontend/dist/assets/Protokollfenster-AdlLE7UT.js +++ b/frontend/dist/assets/Protokollfenster-ebAC9ZNZ.js @@ -1 +1 @@ -import{n as e,r as t}from"./dist-D4CVSex9.js";import{a as n,i as r,n as i,r as a,t as o}from"./sheet-06g2D7J7.js";var s=e(),c=t();function l(e){let t=(0,s.c)(14),{offen:l,titel:u,text:d,onSchliessen:f}=e,p;t[0]===f?p=t[1]:(p=e=>!e&&f(),t[0]=f,t[1]=p);let m;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,c.jsx)(n,{className:`schild text-lg`,children:`Protokoll`}),t[2]=m):m=t[2];let h;t[3]===u?h=t[4]:(h=(0,c.jsxs)(r,{children:[m,(0,c.jsx)(a,{className:`text-text-2`,children:u})]}),t[3]=u,t[4]=h);let g;t[5]===d?g=t[6]:(g=(0,c.jsx)(`pre`,{className:`ziffern mx-4 mb-4 flex-1 overflow-auto rounded-lg border border-linie bg-[#0b0d0f] p-3 text-xs leading-relaxed whitespace-pre-wrap text-text-2`,children:d}),t[5]=d,t[6]=g);let _;t[7]!==h||t[8]!==g?(_=(0,c.jsxs)(i,{side:`right`,className:`border-linie bg-panel data-[side=right]:w-full data-[side=right]:sm:max-w-2xl`,children:[h,g]}),t[7]=h,t[8]=g,t[9]=_):_=t[9];let v;return t[10]!==l||t[11]!==p||t[12]!==_?(v=(0,c.jsx)(o,{open:l,onOpenChange:p,children:_}),t[10]=l,t[11]=p,t[12]=_,t[13]=v):v=t[13],v}export{l as Protokollfenster}; \ No newline at end of file +import{n as e,r as t}from"./dist-D4CVSex9.js";import{a as n,i as r,n as i,r as a,t as o}from"./sheet-CB1NvtKC.js";var s=e(),c=t();function l(e){let t=(0,s.c)(14),{offen:l,titel:u,text:d,onSchliessen:f}=e,p;t[0]===f?p=t[1]:(p=e=>!e&&f(),t[0]=f,t[1]=p);let m;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,c.jsx)(n,{className:`schild text-lg`,children:`Protokoll`}),t[2]=m):m=t[2];let h;t[3]===u?h=t[4]:(h=(0,c.jsxs)(r,{children:[m,(0,c.jsx)(a,{className:`text-text-2`,children:u})]}),t[3]=u,t[4]=h);let g;t[5]===d?g=t[6]:(g=(0,c.jsx)(`pre`,{className:`ziffern mx-4 mb-4 flex-1 overflow-auto rounded-lg border border-linie bg-[#0b0d0f] p-3 text-xs leading-relaxed whitespace-pre-wrap text-text-2`,children:d}),t[5]=d,t[6]=g);let _;t[7]!==h||t[8]!==g?(_=(0,c.jsxs)(i,{side:`right`,className:`border-linie bg-panel data-[side=right]:w-full data-[side=right]:sm:max-w-2xl`,children:[h,g]}),t[7]=h,t[8]=g,t[9]=_):_=t[9];let v;return t[10]!==l||t[11]!==p||t[12]!==_?(v=(0,c.jsx)(o,{open:l,onOpenChange:p,children:_}),t[10]=l,t[11]=p,t[12]=_,t[13]=v):v=t[13],v}export{l as Protokollfenster}; \ No newline at end of file diff --git a/frontend/dist/assets/Start-CckdBDxR.js b/frontend/dist/assets/Start-DEaEpevw.js similarity index 96% rename from frontend/dist/assets/Start-CckdBDxR.js rename to frontend/dist/assets/Start-DEaEpevw.js index 0d9e974..e304135 100644 --- a/frontend/dist/assets/Start-CckdBDxR.js +++ b/frontend/dist/assets/Start-DEaEpevw.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Protokollfenster-AdlLE7UT.js","assets/dist-D4CVSex9.js","assets/sheet-06g2D7J7.js","assets/index-COh3_SSc.js","assets/useSelector-uUwrspuX.js","assets/useMatch-CiyhmkMV.js","assets/index-CXja6cgU.css","assets/button-D8rvET0Z.js","assets/dist-D9JSQbGO.js","assets/Bestaetigen-D8Dh5cqS.js"])))=>i.map(i=>d[i]); -import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{At as a,Bt as o,Ct as s,Dt as c,Et as l,Jt as u,Lt as d,Mt as f,Nt as p,Ot as m,St as h,bt as g,d as _,dt as v,f as y,kt as b,m as x,p as S,rt as C,u as w,wt as T,xt as E,z as D}from"./index-COh3_SSc.js";import{t as O}from"./button-D8rvET0Z.js";import{t as k}from"./Lampe-gSQfYg4e.js";var A=t(),j=r(e(),1),M=n(),N=(0,j.lazy)(()=>x(()=>import(`./Protokollfenster-AdlLE7UT.js`).then(e=>({default:e.Protokollfenster})),__vite__mapDeps([0,1,2,3,4,5,6,7,8]))),P=(0,j.lazy)(()=>x(()=>import(`./Bestaetigen-D8Dh5cqS.js`).then(e=>e.n).then(e=>({default:e.Bestaetigen})),__vite__mapDeps([9,1,3,4,5,6,7,8])));function F({h:e}){let t=D(),[n,r]=(0,j.useState)(null),[a,l]=(0,j.useState)(null),u=e.stufe===`rot`,d=a?p(e,a):null;async function f(){try{let t=await o(`/api/hinweise/${encodeURIComponent(e.id)}/aktion/protokoll`);r({titel:e.titel,text:t.text||t.out||t.err||`Kein Protokoll vorhanden.`})}catch(e){c(`fehler`,e.message)}}function m(n){t.mutate({hinweis:e.id,aktion:n.id,label:n.label})}function h(t){t.id===`protokoll`?f():p(e,t)?l(t):m(t)}return(0,M.jsxs)(`article`,{className:`flex flex-col gap-2.5 border-t border-linie pt-4`,children:[(0,M.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,M.jsx)(`h3`,{className:`min-w-0 font-sans text-[17px] leading-snug font-semibold`,children:e.titel}),(0,M.jsx)(`span`,{"aria-hidden":!0,className:`hidden h-0 flex-grow border-b-2 border-dotted border-linie-stark sm:block`}),(0,M.jsx)(`span`,{className:i(`schild shrink-0 text-base`,u?`text-rot`:`text-bernstein`),children:u?`Jetzt`:`Prüfen`})]}),(0,M.jsxs)(`p`,{className:`ziffern text-[13px] text-text-3`,children:[s(e.seit),` · zuletzt `,T(e.zuletzt)]}),e.text&&(0,M.jsx)(`p`,{className:`text-[15px] leading-relaxed break-words text-text-2`,children:e.text}),e.aktionen.length>0&&(0,M.jsx)(`div`,{className:`flex flex-wrap gap-2.5 pt-1`,children:e.aktionen.map((e,n)=>(0,M.jsx)(O,{variant:n===0&&e.id!==`protokoll`?`default`:`outline`,size:`sm`,disabled:t.isPending,onClick:()=>h(e),children:e.label},e.id))}),n&&(0,M.jsx)(j.Suspense,{fallback:null,children:(0,M.jsx)(N,{offen:!0,titel:n.titel,text:n.text,onSchliessen:()=>r(null)})}),a&&d&&(0,M.jsx)(j.Suspense,{fallback:null,children:(0,M.jsx)(P,{offen:!0,titel:d.titel,text:d.text,knopf:d.knopf,gesperrt:t.isPending,onNein:()=>l(null),onJa:()=>{m(a),l(null)}})})]})}function I(e){let t=(0,A.c)(12),{hinweise:n,verlauf:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=new Date().toDateString(),t[0]=i):i=t[0];let a=i,o;if(t[1]!==n.length||t[2]!==r){o=Symbol.for(`react.early_return_sentinel`);bb0:{let e;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=e=>(e.art===`erledigt`||e.art===`auto`)&&new Date(e.ts*1e3).toDateString()===a,t[4]=e):e=t[4];let i=r.filter(e);if(n.length===0){let e;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,M.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine offenen Punkte. Der Wächter prüft jede Minute.`}),t[5]=e):e=t[5];let n=i.length>0&&(0,M.jsx)(`ul`,{className:`flex flex-col gap-1 text-sm text-text-3`,children:i.slice(0,4).map(R)}),r;t[6]===n?r=t[7]:(r=(0,M.jsxs)(`div`,{className:`flex flex-col gap-2 border-t border-linie pt-4`,children:[e,n]}),t[6]=n,t[7]=r),o=r;break bb0}}t[1]=n.length,t[2]=r,t[3]=o}else o=t[3];if(o!==Symbol.for(`react.early_return_sentinel`))return o;let s;t[8]===n?s=t[9]:(s=n.map(L),t[8]=n,t[9]=s);let c;return t[10]===s?c=t[11]:(c=(0,M.jsx)(`div`,{className:`flex flex-col gap-4`,children:s}),t[10]=s,t[11]=c),c}function L(e){return(0,M.jsx)(F,{h:e},e.id)}function R(e){return(0,M.jsxs)(`li`,{children:[(0,M.jsx)(`span`,{className:`ziffern`,children:T(e.ts)}),` · `,e.text]},`${e.id}-${e.ts}`)}function z(e){let t=(0,A.c)(25),{anteil:n,farbe:r,zonen:i,mitte:o,unter:s,beschriftung:c,ariaText:l}=e,u=r===void 0?`var(--cyan)`:r,d;t[0]===i?d=t[1]:(d=i===void 0?[]:i,t[0]=i,t[1]=d);let f=d,p=n!=null&&n>.004,m;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,M.jsx)(`path`,{d:a(0,1,75),fill:`none`,stroke:`var(--linie)`,strokeWidth:12,strokeLinecap:`round`}),t[2]=m):m=t[2];let h;t[3]===f?h=t[4]:(h=f.map(B),t[3]=f,t[4]=h);let g;t[5]!==n||t[6]!==u||t[7]!==p?(g=p&&(0,M.jsx)(`path`,{d:a(0,n,75),fill:`none`,stroke:u,strokeWidth:12,strokeLinecap:`round`}),t[5]=n,t[6]=u,t[7]=p,t[8]=g):g=t[8];let _;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(_={fontSize:34,fontWeight:500,fill:`var(--foreground)`},t[9]=_):_=t[9];let v;t[10]===o?v=t[11]:(v=(0,M.jsx)(`text`,{x:`100`,y:`100`,textAnchor:`middle`,className:`ziffern`,style:_,children:o}),t[10]=o,t[11]=v);let y;t[12]===s?y=t[13]:(y=s&&(0,M.jsx)(`text`,{x:`100`,y:`122`,textAnchor:`middle`,style:{fontFamily:`var(--font-anzeige)`,fontSize:14,fontWeight:600,letterSpacing:`0.12em`,fill:`var(--text-3)`},children:s.toUpperCase()}),t[12]=s,t[13]=y);let b;t[14]!==l||t[15]!==h||t[16]!==g||t[17]!==v||t[18]!==y?(b=(0,M.jsxs)(`svg`,{viewBox:`0 0 200 150`,className:`h-auto w-full max-w-[200px]`,role:`img`,"aria-label":l,children:[m,h,g,v,y]}),t[14]=l,t[15]=h,t[16]=g,t[17]=v,t[18]=y,t[19]=b):b=t[19];let x;t[20]===c?x=t[21]:(x=(0,M.jsx)(`figcaption`,{className:`schild text-[15px] text-text-3`,children:c}),t[20]=c,t[21]=x);let S;return t[22]!==b||t[23]!==x?(S=(0,M.jsxs)(`figure`,{className:`m-0 flex min-w-0 flex-col items-center gap-1`,children:[b,x]}),t[22]=b,t[23]=x,t[24]=S):S=t[24],S}function B(e){return(0,M.jsx)(`path`,{d:a(e.von,e.bis,86),fill:`none`,stroke:e.farbe,strokeWidth:4,strokeLinecap:`round`},`${e.von}-${e.bis}`)}function V(e){let t=(0,A.c)(26),{zustand:n,lampen:r,onAnsehen:a}=e,o;t[0]===n?o=t[1]:(o=f(n),t[0]=n,t[1]=o);let s=o,c=s.art===`gelb`||s.art===`rot`,l=!c,u=`${s.oben} ${s.mitte}`,d=m[s.art],p=c?`cursor-pointer`:`cursor-default`,h;t[2]!==d||t[3]!==p?(h=i(`flex min-h-[130px] flex-col items-center justify-center gap-1 rounded-2xl border px-4 py-4 font-anzeige transition-colors`,d,p),t[2]=d,t[3]=p,t[4]=h):h=t[4];let g;t[5]===s.oben?g=t[6]:(g=(0,M.jsx)(`span`,{className:`schild text-sm tracking-[0.26em]`,children:s.oben}),t[5]=s.oben,t[6]=g);let _;t[7]===s.mitte?_=t[8]:(_=(0,M.jsx)(`span`,{className:`text-[40px] leading-none font-bold tracking-[0.04em] sm:text-[44px]`,children:s.mitte}),t[7]=s.mitte,t[8]=_);let v;t[9]===s.unten?v=t[10]:(v=(0,M.jsx)(`span`,{className:`font-sans text-sm opacity-80`,children:s.unten}),t[9]=s.unten,t[10]=v);let y;t[11]!==a||t[12]!==l||t[13]!==u||t[14]!==h||t[15]!==g||t[16]!==_||t[17]!==v?(y=(0,M.jsxs)(`button`,{type:`button`,onClick:a,disabled:l,"aria-label":u,className:h,children:[g,_,v]}),t[11]=a,t[12]=l,t[13]=u,t[14]=h,t[15]=g,t[16]=_,t[17]=v,t[18]=y):y=t[18];let b;t[19]===r?b=t[20]:(b=r.map(H),t[19]=r,t[20]=b);let x;t[21]===b?x=t[22]:(x=(0,M.jsx)(`ul`,{className:`grid grid-cols-2 gap-2.5 rounded-2xl border border-linie bg-panel p-3 sm:grid-cols-4`,children:b}),t[21]=b,t[22]=x);let S;return t[23]!==y||t[24]!==x?(S=(0,M.jsxs)(`section`,{"aria-label":`Warnpanel`,className:`grid gap-4 md:grid-cols-[260px_minmax(0,1fr)] md:gap-5`,children:[y,x]}),t[23]=y,t[24]=x,t[25]=S):S=t[25],S}function H(e){return(0,M.jsx)(k,{lampe:e},e.id)}function U(e){let t=(0,A.c)(2),{z:n}=e,r;return t[0]===n?r=t[1]:(r=(0,M.jsx)(`span`,{className:`ziffern inline-flex h-[1.75em] w-[1.1875em] shrink-0 items-center justify-center rounded-md border border-[#2a3036] bg-[#0b0d0f] font-medium`,children:n}),t[0]=n,t[1]=r),r}function W(e){let t=(0,A.c)(25),{sekunden:n}=e,r;t[0]===n?r=t[1]:(r=h(n),t[0]=n,t[1]=r);let i=r,a=String(Math.min(i?.[0]??0,99)),o;t[2]===a?o=t[3]:(o=a.padStart(2,`0`),t[2]=a,t[3]=o);let s=o,c=String(i?.[1]??0),l;t[4]===c?l=t[5]:(l=c.padStart(2,`0`),t[4]=c,t[5]=l);let u=l,d=i?`Laufzeit ohne Neustart: ${i[0]} Tage, ${i[1]} Stunden`:`Laufzeit unbekannt`,f=i?s[0]:`–`,p;t[6]===f?p=t[7]:(p=(0,M.jsx)(U,{z:f}),t[6]=f,t[7]=p);let m=i?s[1]:`–`,g;t[8]===m?g=t[9]:(g=(0,M.jsx)(U,{z:m}),t[8]=m,t[9]=g);let _;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,M.jsx)(`span`,{className:`schild mr-[0.444em] ml-[0.111em] text-[0.5625em] font-bold text-text-3`,children:`T`}),t[10]=_):_=t[10];let v=i?u[0]:`–`,y;t[11]===v?y=t[12]:(y=(0,M.jsx)(U,{z:v}),t[11]=v,t[12]=y);let b=i?u[1]:`–`,x;t[13]===b?x=t[14]:(x=(0,M.jsx)(U,{z:b}),t[13]=b,t[14]=x);let S;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,M.jsx)(`span`,{className:`schild ml-[0.111em] text-[0.5625em] font-bold text-text-3`,children:`H`}),t[15]=S):S=t[15];let C;t[16]!==y||t[17]!==x||t[18]!==p||t[19]!==g||t[20]!==d?(C=(0,M.jsxs)(`div`,{"aria-label":d,role:`img`,className:`flex h-[min(75cqw,150px)] items-center gap-[0.1875em] pb-[min(10cqw,20px)] text-[length:clamp(14px,14.5cqw,32px)]`,children:[p,g,_,y,x,S]}),t[16]=y,t[17]=x,t[18]=p,t[19]=g,t[20]=d,t[21]=C):C=t[21];let w;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,M.jsx)(`figcaption`,{className:`schild text-[15px] text-text-3`,children:`Ohne Neustart`}),t[22]=w):w=t[22];let T;return t[23]===C?T=t[24]:(T=(0,M.jsxs)(`figure`,{className:`@container m-0 flex min-w-0 flex-col items-center justify-end gap-1`,children:[C,w]}),t[23]=C,t[24]=T),T}function G(e){let t=(0,A.c)(47),{box:n}=e,r=l(),i=r?.ram_used??n.ram_used,a=r?.ram_total??n.ram_total,o=r?.temp_cpu??n.temp_cpu,s=r?.temp_gpu??n.temp_gpu,c=n.platte,u=r?.uptime_s??n.uptime_s,f=i!=null&&a?i/a:null,p;t[0]===i?p=t[1]:(p=i==null?`–`:String(Math.round(g(i)??0)),t[0]=i,t[1]=p);let m;t[2]===a?m=t[3]:(m=a?`von ${Math.round(g(a)??0)} GB`:void 0,t[2]=a,t[3]=m);let h;t[4]!==f||t[5]!==i||t[6]!==a?(h=f==null?`Speicher unbekannt`:`Speicher: ${E(i)} von ${E(a)} belegt`,t[4]=f,t[5]=i,t[6]=a,t[7]=h):h=t[7];let _;t[8]!==f||t[9]!==p||t[10]!==m||t[11]!==h?(_=(0,M.jsx)(z,{beschriftung:`Speicher`,anteil:f,mitte:p,unter:m,ariaText:h}),t[8]=f,t[9]=p,t[10]=m,t[11]=h,t[12]=_):_=t[12];let v=o==null?null:o/100,y;t[13]===o?y=t[14]:(y=d(o),t[13]=o,t[14]=y);let b;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(b=[{von:.7,bis:.85,farbe:`var(--bernstein)`},{von:.85,bis:1,farbe:`var(--rot)`}],t[15]=b):b=t[15];let x;t[16]===o?x=t[17]:(x=o==null?`–`:`${Math.round(o)}°`,t[16]=o,t[17]=x);let S;t[18]===s?S=t[19]:(S=s==null?void 0:`GPU ${Math.round(s)}°`,t[18]=s,t[19]=S);let C;t[20]===o?C=t[21]:(C=o==null?`Temperatur unbekannt`:`Temperatur ${Math.round(o)} Grad`,t[20]=o,t[21]=C);let w;t[22]!==C||t[23]!==v||t[24]!==y||t[25]!==x||t[26]!==S?(w=(0,M.jsx)(z,{beschriftung:`Temperatur`,anteil:v,farbe:y,zonen:b,mitte:x,unter:S,ariaText:C}),t[22]=C,t[23]=v,t[24]=y,t[25]=x,t[26]=S,t[27]=w):w=t[27];let T=c?c.percent/100:null,D=c&&c.percent>=90?`var(--rot)`:c&&c.percent>=80?`var(--bernstein)`:`var(--cyan)`,O;t[28]===c?O=t[29]:(O=c?`${Math.round(c.percent)}%`:`–`,t[28]=c,t[29]=O);let k;t[30]===c?k=t[31]:(k=c?`${E(c.used)} / ${E(c.total)}`:void 0,t[30]=c,t[31]=k);let j;t[32]===c?j=t[33]:(j=c?`Platte zu ${Math.round(c.percent)} Prozent belegt`:`Platte unbekannt`,t[32]=c,t[33]=j);let N;t[34]!==T||t[35]!==D||t[36]!==O||t[37]!==k||t[38]!==j?(N=(0,M.jsx)(z,{beschriftung:`Platte`,anteil:T,farbe:D,mitte:O,unter:k,ariaText:j}),t[34]=T,t[35]=D,t[36]=O,t[37]=k,t[38]=j,t[39]=N):N=t[39];let P;t[40]===u?P=t[41]:(P=(0,M.jsx)(W,{sekunden:u}),t[40]=u,t[41]=P);let F;return t[42]!==w||t[43]!==N||t[44]!==P||t[45]!==_?(F=(0,M.jsxs)(`section`,{"aria-label":`Instrumente`,className:`grid grid-cols-2 gap-x-4 gap-y-6 rounded-2xl border border-linie bg-panel px-4 py-5 lg:grid-cols-4 lg:px-6`,children:[_,w,N,P]}),t[42]=w,t[43]=N,t[44]=P,t[45]=_,t[46]=F):F=t[46],F}var K={bestanden:`gruen`,durchgefallen:`rot`,wartet:`cyan`,neu:`cyan`};function q(e){let t=(0,A.c)(14),{radar:n}=e;if(!n?.kandidaten)return null;let r,i;t[0]===n.kandidaten?(r=t[1],i=t[2]):(r=n.kandidaten.filter(Y),i=r.find(J)??r[0],t[0]=n.kandidaten,t[1]=r,t[2]=i);let a=i,o=r.length===1?``:`en`,s;t[3]!==r.length||t[4]!==o?(s=(0,M.jsxs)(`span`,{className:`schild text-sm text-cyan`,children:[`Radar · `,r.length,` Kandidat`,o]}),t[3]=r.length,t[4]=o,t[5]=s):s=t[5];let c;t[6]===a?c=t[7]:(c=a?(0,M.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2 text-[15px]`,children:[(0,M.jsx)(`span`,{className:`ziffern`,children:a.name}),(0,M.jsxs)(`span`,{className:`text-text-2`,children:[`fürs `,a.rolle===`hirn`?`Hirn`:`Coden`]}),(0,M.jsx)(y,{art:K[a.status]??`grau`,children:b[a.status]??a.status})]}):(0,M.jsx)(`span`,{className:`text-[15px] text-text-2`,children:`Nichts Besseres in Sicht.`}),t[6]=a,t[7]=c);let l;t[8]!==s||t[9]!==c?(l=(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1`,children:[s,c]}),t[8]=s,t[9]=c,t[10]=l):l=t[10];let d;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,M.jsx)(O,{variant:`info`,size:`sm`,asChild:!0,children:(0,M.jsx)(u,{to:`/box/modelle`,hash:`radar`,children:`Ansehen`})}),t[11]=d):d=t[11];let f;return t[12]===l?f=t[13]:(f=(0,M.jsxs)(`div`,{className:`mt-auto flex flex-wrap items-center justify-between gap-3 rounded-xl border border-cyan-rand bg-cyan-grund px-4 py-3.5`,children:[l,d]}),t[12]=l,t[13]=f),f}function J(e){return e.status===`bestanden`}function Y(e){return[`bestanden`,`wartet`,`neu`].includes(e.status)}function X(){let e=(0,A.c)(32),{data:t,error:n,isPending:r}=v(),i=C();if(r){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,M.jsx)(S,{text:`Die Box meldet sich gleich …`}),e[0]=t):t=e[0],t}if(!t){let t=`MC2 antwortet nicht: ${n?.message??`keine Daten`}`,r;return e[1]===t?r=e[2]:(r=(0,M.jsx)(S,{fehler:!0,text:t}),e[1]=t,e[2]=r),r}let a=t.hinweise.length,o;e[3]!==t.lampen||e[4]!==t.zustand?(o=(0,M.jsx)(V,{zustand:t.zustand,lampen:t.lampen,onAnsehen:Z}),e[3]=t.lampen,e[4]=t.zustand,e[5]=o):o=e[5];let s;e[6]===t.box?s=e[7]:(s=(0,M.jsx)(G,{box:t.box}),e[6]=t.box,e[7]=s);let c=a?`ziffern text-sm text-bernstein`:`ziffern text-sm text-gruen`,l=a?`${a} offen`:`alles erledigt`,u;e[8]!==c||e[9]!==l?(u=(0,M.jsx)(`span`,{className:c,children:l}),e[8]=c,e[9]=l,e[10]=u):u=e[10];let d;e[11]!==t.hinweise||e[12]!==t.verlauf?(d=(0,M.jsx)(I,{hinweise:t.hinweise,verlauf:t.verlauf}),e[11]=t.hinweise,e[12]=t.verlauf,e[13]=d):d=e[13];let f;e[14]!==u||e[15]!==d?(f=(0,M.jsx)(w,{titel:`Checkliste`,id:`checkliste`,rechts:u,children:d}),e[14]=u,e[15]=d,e[16]=f):f=e[16];let p;e[17]!==t.flugplan.gelaufen||e[18]!==t.flugplan.geplant?(p=(0,M.jsx)(_,{gelaufen:t.flugplan.gelaufen,geplant:t.flugplan.geplant}),e[17]=t.flugplan.gelaufen,e[18]=t.flugplan.geplant,e[19]=p):p=e[19];let m;e[20]===i.data?m=e[21]:(m=(0,M.jsx)(q,{radar:i.data}),e[20]=i.data,e[21]=m);let h;e[22]!==p||e[23]!==m?(h=(0,M.jsxs)(w,{titel:`Flugplan`,children:[p,m]}),e[22]=p,e[23]=m,e[24]=h):h=e[24];let g;e[25]!==f||e[26]!==h?(g=(0,M.jsxs)(`div`,{className:`grid gap-5 lg:grid-cols-[minmax(0,1.35fr)_minmax(0,1fr)] md:gap-6`,children:[f,h]}),e[25]=f,e[26]=h,e[27]=g):g=e[27];let y;return e[28]!==o||e[29]!==s||e[30]!==g?(y=(0,M.jsxs)(M.Fragment,{children:[o,s,g]}),e[28]=o,e[29]=s,e[30]=g,e[31]=y):y=e[31],y}function Z(){return document.getElementById(`checkliste`)?.scrollIntoView({behavior:`smooth`,block:`start`})}export{X as StartSeite}; \ No newline at end of file +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Protokollfenster-ebAC9ZNZ.js","assets/dist-D4CVSex9.js","assets/sheet-CB1NvtKC.js","assets/index-FvHAYExN.js","assets/useSelector-uUwrspuX.js","assets/useMatch-CiyhmkMV.js","assets/index-tY0RgKNN.css","assets/button-D8rvET0Z.js","assets/dist-LMCPoT8k.js","assets/Bestaetigen-SE_NgpcU.js"])))=>i.map(i=>d[i]); +import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{At as a,Bt as o,Ct as s,Dt as c,Et as l,Jt as u,Lt as d,Mt as f,Nt as p,Ot as m,St as h,bt as g,d as _,dt as v,f as y,kt as b,m as x,p as S,rt as C,u as w,wt as T,xt as E,z as D}from"./index-FvHAYExN.js";import{t as O}from"./button-D8rvET0Z.js";import{t as k}from"./Lampe-gSQfYg4e.js";var A=t(),j=r(e(),1),M=n(),N=(0,j.lazy)(()=>x(()=>import(`./Protokollfenster-ebAC9ZNZ.js`).then(e=>({default:e.Protokollfenster})),__vite__mapDeps([0,1,2,3,4,5,6,7,8]))),P=(0,j.lazy)(()=>x(()=>import(`./Bestaetigen-SE_NgpcU.js`).then(e=>e.n).then(e=>({default:e.Bestaetigen})),__vite__mapDeps([9,1,3,4,5,6,7,8])));function F({h:e}){let t=D(),[n,r]=(0,j.useState)(null),[a,l]=(0,j.useState)(null),u=e.stufe===`rot`,d=a?p(e,a):null;async function f(){try{let t=await o(`/api/hinweise/${encodeURIComponent(e.id)}/aktion/protokoll`);r({titel:e.titel,text:t.text||t.out||t.err||`Kein Protokoll vorhanden.`})}catch(e){c(`fehler`,e.message)}}function m(n){t.mutate({hinweis:e.id,aktion:n.id,label:n.label})}function h(t){t.id===`protokoll`?f():p(e,t)?l(t):m(t)}return(0,M.jsxs)(`article`,{className:`flex flex-col gap-2.5 border-t border-linie pt-4`,children:[(0,M.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,M.jsx)(`h3`,{className:`min-w-0 font-sans text-[17px] leading-snug font-semibold`,children:e.titel}),(0,M.jsx)(`span`,{"aria-hidden":!0,className:`hidden h-0 flex-grow border-b-2 border-dotted border-linie-stark sm:block`}),(0,M.jsx)(`span`,{className:i(`schild shrink-0 text-base`,u?`text-rot`:`text-bernstein`),children:u?`Jetzt`:`Prüfen`})]}),(0,M.jsxs)(`p`,{className:`ziffern text-[13px] text-text-3`,children:[s(e.seit),` · zuletzt `,T(e.zuletzt)]}),e.text&&(0,M.jsx)(`p`,{className:`text-[15px] leading-relaxed break-words text-text-2`,children:e.text}),e.aktionen.length>0&&(0,M.jsx)(`div`,{className:`flex flex-wrap gap-2.5 pt-1`,children:e.aktionen.map((e,n)=>(0,M.jsx)(O,{variant:n===0&&e.id!==`protokoll`?`default`:`outline`,size:`sm`,disabled:t.isPending,onClick:()=>h(e),children:e.label},e.id))}),n&&(0,M.jsx)(j.Suspense,{fallback:null,children:(0,M.jsx)(N,{offen:!0,titel:n.titel,text:n.text,onSchliessen:()=>r(null)})}),a&&d&&(0,M.jsx)(j.Suspense,{fallback:null,children:(0,M.jsx)(P,{offen:!0,titel:d.titel,text:d.text,knopf:d.knopf,gesperrt:t.isPending,onNein:()=>l(null),onJa:()=>{m(a),l(null)}})})]})}function I(e){let t=(0,A.c)(12),{hinweise:n,verlauf:r}=e,i;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=new Date().toDateString(),t[0]=i):i=t[0];let a=i,o;if(t[1]!==n.length||t[2]!==r){o=Symbol.for(`react.early_return_sentinel`);bb0:{let e;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(e=e=>(e.art===`erledigt`||e.art===`auto`)&&new Date(e.ts*1e3).toDateString()===a,t[4]=e):e=t[4];let i=r.filter(e);if(n.length===0){let e;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,M.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Keine offenen Punkte. Der Wächter prüft jede Minute.`}),t[5]=e):e=t[5];let n=i.length>0&&(0,M.jsx)(`ul`,{className:`flex flex-col gap-1 text-sm text-text-3`,children:i.slice(0,4).map(R)}),r;t[6]===n?r=t[7]:(r=(0,M.jsxs)(`div`,{className:`flex flex-col gap-2 border-t border-linie pt-4`,children:[e,n]}),t[6]=n,t[7]=r),o=r;break bb0}}t[1]=n.length,t[2]=r,t[3]=o}else o=t[3];if(o!==Symbol.for(`react.early_return_sentinel`))return o;let s;t[8]===n?s=t[9]:(s=n.map(L),t[8]=n,t[9]=s);let c;return t[10]===s?c=t[11]:(c=(0,M.jsx)(`div`,{className:`flex flex-col gap-4`,children:s}),t[10]=s,t[11]=c),c}function L(e){return(0,M.jsx)(F,{h:e},e.id)}function R(e){return(0,M.jsxs)(`li`,{children:[(0,M.jsx)(`span`,{className:`ziffern`,children:T(e.ts)}),` · `,e.text]},`${e.id}-${e.ts}`)}function z(e){let t=(0,A.c)(25),{anteil:n,farbe:r,zonen:i,mitte:o,unter:s,beschriftung:c,ariaText:l}=e,u=r===void 0?`var(--cyan)`:r,d;t[0]===i?d=t[1]:(d=i===void 0?[]:i,t[0]=i,t[1]=d);let f=d,p=n!=null&&n>.004,m;t[2]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,M.jsx)(`path`,{d:a(0,1,75),fill:`none`,stroke:`var(--linie)`,strokeWidth:12,strokeLinecap:`round`}),t[2]=m):m=t[2];let h;t[3]===f?h=t[4]:(h=f.map(B),t[3]=f,t[4]=h);let g;t[5]!==n||t[6]!==u||t[7]!==p?(g=p&&(0,M.jsx)(`path`,{d:a(0,n,75),fill:`none`,stroke:u,strokeWidth:12,strokeLinecap:`round`}),t[5]=n,t[6]=u,t[7]=p,t[8]=g):g=t[8];let _;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(_={fontSize:34,fontWeight:500,fill:`var(--foreground)`},t[9]=_):_=t[9];let v;t[10]===o?v=t[11]:(v=(0,M.jsx)(`text`,{x:`100`,y:`100`,textAnchor:`middle`,className:`ziffern`,style:_,children:o}),t[10]=o,t[11]=v);let y;t[12]===s?y=t[13]:(y=s&&(0,M.jsx)(`text`,{x:`100`,y:`122`,textAnchor:`middle`,style:{fontFamily:`var(--font-anzeige)`,fontSize:14,fontWeight:600,letterSpacing:`0.12em`,fill:`var(--text-3)`},children:s.toUpperCase()}),t[12]=s,t[13]=y);let b;t[14]!==l||t[15]!==h||t[16]!==g||t[17]!==v||t[18]!==y?(b=(0,M.jsxs)(`svg`,{viewBox:`0 0 200 150`,className:`h-auto w-full max-w-[200px]`,role:`img`,"aria-label":l,children:[m,h,g,v,y]}),t[14]=l,t[15]=h,t[16]=g,t[17]=v,t[18]=y,t[19]=b):b=t[19];let x;t[20]===c?x=t[21]:(x=(0,M.jsx)(`figcaption`,{className:`schild text-[15px] text-text-3`,children:c}),t[20]=c,t[21]=x);let S;return t[22]!==b||t[23]!==x?(S=(0,M.jsxs)(`figure`,{className:`m-0 flex min-w-0 flex-col items-center gap-1`,children:[b,x]}),t[22]=b,t[23]=x,t[24]=S):S=t[24],S}function B(e){return(0,M.jsx)(`path`,{d:a(e.von,e.bis,86),fill:`none`,stroke:e.farbe,strokeWidth:4,strokeLinecap:`round`},`${e.von}-${e.bis}`)}function V(e){let t=(0,A.c)(26),{zustand:n,lampen:r,onAnsehen:a}=e,o;t[0]===n?o=t[1]:(o=f(n),t[0]=n,t[1]=o);let s=o,c=s.art===`gelb`||s.art===`rot`,l=!c,u=`${s.oben} ${s.mitte}`,d=m[s.art],p=c?`cursor-pointer`:`cursor-default`,h;t[2]!==d||t[3]!==p?(h=i(`flex min-h-[130px] flex-col items-center justify-center gap-1 rounded-2xl border px-4 py-4 font-anzeige transition-colors`,d,p),t[2]=d,t[3]=p,t[4]=h):h=t[4];let g;t[5]===s.oben?g=t[6]:(g=(0,M.jsx)(`span`,{className:`schild text-sm tracking-[0.26em]`,children:s.oben}),t[5]=s.oben,t[6]=g);let _;t[7]===s.mitte?_=t[8]:(_=(0,M.jsx)(`span`,{className:`text-[40px] leading-none font-bold tracking-[0.04em] sm:text-[44px]`,children:s.mitte}),t[7]=s.mitte,t[8]=_);let v;t[9]===s.unten?v=t[10]:(v=(0,M.jsx)(`span`,{className:`font-sans text-sm opacity-80`,children:s.unten}),t[9]=s.unten,t[10]=v);let y;t[11]!==a||t[12]!==l||t[13]!==u||t[14]!==h||t[15]!==g||t[16]!==_||t[17]!==v?(y=(0,M.jsxs)(`button`,{type:`button`,onClick:a,disabled:l,"aria-label":u,className:h,children:[g,_,v]}),t[11]=a,t[12]=l,t[13]=u,t[14]=h,t[15]=g,t[16]=_,t[17]=v,t[18]=y):y=t[18];let b;t[19]===r?b=t[20]:(b=r.map(H),t[19]=r,t[20]=b);let x;t[21]===b?x=t[22]:(x=(0,M.jsx)(`ul`,{className:`grid grid-cols-2 gap-2.5 rounded-2xl border border-linie bg-panel p-3 sm:grid-cols-4`,children:b}),t[21]=b,t[22]=x);let S;return t[23]!==y||t[24]!==x?(S=(0,M.jsxs)(`section`,{"aria-label":`Warnpanel`,className:`grid gap-4 md:grid-cols-[260px_minmax(0,1fr)] md:gap-5`,children:[y,x]}),t[23]=y,t[24]=x,t[25]=S):S=t[25],S}function H(e){return(0,M.jsx)(k,{lampe:e},e.id)}function U(e){let t=(0,A.c)(2),{z:n}=e,r;return t[0]===n?r=t[1]:(r=(0,M.jsx)(`span`,{className:`ziffern inline-flex h-[1.75em] w-[1.1875em] shrink-0 items-center justify-center rounded-md border border-[#2a3036] bg-[#0b0d0f] font-medium`,children:n}),t[0]=n,t[1]=r),r}function W(e){let t=(0,A.c)(25),{sekunden:n}=e,r;t[0]===n?r=t[1]:(r=h(n),t[0]=n,t[1]=r);let i=r,a=String(Math.min(i?.[0]??0,99)),o;t[2]===a?o=t[3]:(o=a.padStart(2,`0`),t[2]=a,t[3]=o);let s=o,c=String(i?.[1]??0),l;t[4]===c?l=t[5]:(l=c.padStart(2,`0`),t[4]=c,t[5]=l);let u=l,d=i?`Laufzeit ohne Neustart: ${i[0]} Tage, ${i[1]} Stunden`:`Laufzeit unbekannt`,f=i?s[0]:`–`,p;t[6]===f?p=t[7]:(p=(0,M.jsx)(U,{z:f}),t[6]=f,t[7]=p);let m=i?s[1]:`–`,g;t[8]===m?g=t[9]:(g=(0,M.jsx)(U,{z:m}),t[8]=m,t[9]=g);let _;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,M.jsx)(`span`,{className:`schild mr-[0.444em] ml-[0.111em] text-[0.5625em] font-bold text-text-3`,children:`T`}),t[10]=_):_=t[10];let v=i?u[0]:`–`,y;t[11]===v?y=t[12]:(y=(0,M.jsx)(U,{z:v}),t[11]=v,t[12]=y);let b=i?u[1]:`–`,x;t[13]===b?x=t[14]:(x=(0,M.jsx)(U,{z:b}),t[13]=b,t[14]=x);let S;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(S=(0,M.jsx)(`span`,{className:`schild ml-[0.111em] text-[0.5625em] font-bold text-text-3`,children:`H`}),t[15]=S):S=t[15];let C;t[16]!==y||t[17]!==x||t[18]!==p||t[19]!==g||t[20]!==d?(C=(0,M.jsxs)(`div`,{"aria-label":d,role:`img`,className:`flex h-[min(75cqw,150px)] items-center gap-[0.1875em] pb-[min(10cqw,20px)] text-[length:clamp(14px,14.5cqw,32px)]`,children:[p,g,_,y,x,S]}),t[16]=y,t[17]=x,t[18]=p,t[19]=g,t[20]=d,t[21]=C):C=t[21];let w;t[22]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,M.jsx)(`figcaption`,{className:`schild text-[15px] text-text-3`,children:`Ohne Neustart`}),t[22]=w):w=t[22];let T;return t[23]===C?T=t[24]:(T=(0,M.jsxs)(`figure`,{className:`@container m-0 flex min-w-0 flex-col items-center justify-end gap-1`,children:[C,w]}),t[23]=C,t[24]=T),T}function G(e){let t=(0,A.c)(47),{box:n}=e,r=l(),i=r?.ram_used??n.ram_used,a=r?.ram_total??n.ram_total,o=r?.temp_cpu??n.temp_cpu,s=r?.temp_gpu??n.temp_gpu,c=n.platte,u=r?.uptime_s??n.uptime_s,f=i!=null&&a?i/a:null,p;t[0]===i?p=t[1]:(p=i==null?`–`:String(Math.round(g(i)??0)),t[0]=i,t[1]=p);let m;t[2]===a?m=t[3]:(m=a?`von ${Math.round(g(a)??0)} GB`:void 0,t[2]=a,t[3]=m);let h;t[4]!==f||t[5]!==i||t[6]!==a?(h=f==null?`Speicher unbekannt`:`Speicher: ${E(i)} von ${E(a)} belegt`,t[4]=f,t[5]=i,t[6]=a,t[7]=h):h=t[7];let _;t[8]!==f||t[9]!==p||t[10]!==m||t[11]!==h?(_=(0,M.jsx)(z,{beschriftung:`Speicher`,anteil:f,mitte:p,unter:m,ariaText:h}),t[8]=f,t[9]=p,t[10]=m,t[11]=h,t[12]=_):_=t[12];let v=o==null?null:o/100,y;t[13]===o?y=t[14]:(y=d(o),t[13]=o,t[14]=y);let b;t[15]===Symbol.for(`react.memo_cache_sentinel`)?(b=[{von:.7,bis:.85,farbe:`var(--bernstein)`},{von:.85,bis:1,farbe:`var(--rot)`}],t[15]=b):b=t[15];let x;t[16]===o?x=t[17]:(x=o==null?`–`:`${Math.round(o)}°`,t[16]=o,t[17]=x);let S;t[18]===s?S=t[19]:(S=s==null?void 0:`GPU ${Math.round(s)}°`,t[18]=s,t[19]=S);let C;t[20]===o?C=t[21]:(C=o==null?`Temperatur unbekannt`:`Temperatur ${Math.round(o)} Grad`,t[20]=o,t[21]=C);let w;t[22]!==C||t[23]!==v||t[24]!==y||t[25]!==x||t[26]!==S?(w=(0,M.jsx)(z,{beschriftung:`Temperatur`,anteil:v,farbe:y,zonen:b,mitte:x,unter:S,ariaText:C}),t[22]=C,t[23]=v,t[24]=y,t[25]=x,t[26]=S,t[27]=w):w=t[27];let T=c?c.percent/100:null,D=c&&c.percent>=90?`var(--rot)`:c&&c.percent>=80?`var(--bernstein)`:`var(--cyan)`,O;t[28]===c?O=t[29]:(O=c?`${Math.round(c.percent)}%`:`–`,t[28]=c,t[29]=O);let k;t[30]===c?k=t[31]:(k=c?`${E(c.used)} / ${E(c.total)}`:void 0,t[30]=c,t[31]=k);let j;t[32]===c?j=t[33]:(j=c?`Platte zu ${Math.round(c.percent)} Prozent belegt`:`Platte unbekannt`,t[32]=c,t[33]=j);let N;t[34]!==T||t[35]!==D||t[36]!==O||t[37]!==k||t[38]!==j?(N=(0,M.jsx)(z,{beschriftung:`Platte`,anteil:T,farbe:D,mitte:O,unter:k,ariaText:j}),t[34]=T,t[35]=D,t[36]=O,t[37]=k,t[38]=j,t[39]=N):N=t[39];let P;t[40]===u?P=t[41]:(P=(0,M.jsx)(W,{sekunden:u}),t[40]=u,t[41]=P);let F;return t[42]!==w||t[43]!==N||t[44]!==P||t[45]!==_?(F=(0,M.jsxs)(`section`,{"aria-label":`Instrumente`,className:`grid grid-cols-2 gap-x-4 gap-y-6 rounded-2xl border border-linie bg-panel px-4 py-5 lg:grid-cols-4 lg:px-6`,children:[_,w,N,P]}),t[42]=w,t[43]=N,t[44]=P,t[45]=_,t[46]=F):F=t[46],F}var K={bestanden:`gruen`,durchgefallen:`rot`,wartet:`cyan`,neu:`cyan`};function q(e){let t=(0,A.c)(14),{radar:n}=e;if(!n?.kandidaten)return null;let r,i;t[0]===n.kandidaten?(r=t[1],i=t[2]):(r=n.kandidaten.filter(Y),i=r.find(J)??r[0],t[0]=n.kandidaten,t[1]=r,t[2]=i);let a=i,o=r.length===1?``:`en`,s;t[3]!==r.length||t[4]!==o?(s=(0,M.jsxs)(`span`,{className:`schild text-sm text-cyan`,children:[`Radar · `,r.length,` Kandidat`,o]}),t[3]=r.length,t[4]=o,t[5]=s):s=t[5];let c;t[6]===a?c=t[7]:(c=a?(0,M.jsxs)(`span`,{className:`flex flex-wrap items-center gap-2 text-[15px]`,children:[(0,M.jsx)(`span`,{className:`ziffern`,children:a.name}),(0,M.jsxs)(`span`,{className:`text-text-2`,children:[`fürs `,a.rolle===`hirn`?`Hirn`:`Coden`]}),(0,M.jsx)(y,{art:K[a.status]??`grau`,children:b[a.status]??a.status})]}):(0,M.jsx)(`span`,{className:`text-[15px] text-text-2`,children:`Nichts Besseres in Sicht.`}),t[6]=a,t[7]=c);let l;t[8]!==s||t[9]!==c?(l=(0,M.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1`,children:[s,c]}),t[8]=s,t[9]=c,t[10]=l):l=t[10];let d;t[11]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,M.jsx)(O,{variant:`info`,size:`sm`,asChild:!0,children:(0,M.jsx)(u,{to:`/box/modelle`,hash:`radar`,children:`Ansehen`})}),t[11]=d):d=t[11];let f;return t[12]===l?f=t[13]:(f=(0,M.jsxs)(`div`,{className:`mt-auto flex flex-wrap items-center justify-between gap-3 rounded-xl border border-cyan-rand bg-cyan-grund px-4 py-3.5`,children:[l,d]}),t[12]=l,t[13]=f),f}function J(e){return e.status===`bestanden`}function Y(e){return[`bestanden`,`wartet`,`neu`].includes(e.status)}function X(){let e=(0,A.c)(32),{data:t,error:n,isPending:r}=v(),i=C();if(r){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,M.jsx)(S,{text:`Die Box meldet sich gleich …`}),e[0]=t):t=e[0],t}if(!t){let t=`MC2 antwortet nicht: ${n?.message??`keine Daten`}`,r;return e[1]===t?r=e[2]:(r=(0,M.jsx)(S,{fehler:!0,text:t}),e[1]=t,e[2]=r),r}let a=t.hinweise.length,o;e[3]!==t.lampen||e[4]!==t.zustand?(o=(0,M.jsx)(V,{zustand:t.zustand,lampen:t.lampen,onAnsehen:Z}),e[3]=t.lampen,e[4]=t.zustand,e[5]=o):o=e[5];let s;e[6]===t.box?s=e[7]:(s=(0,M.jsx)(G,{box:t.box}),e[6]=t.box,e[7]=s);let c=a?`ziffern text-sm text-bernstein`:`ziffern text-sm text-gruen`,l=a?`${a} offen`:`alles erledigt`,u;e[8]!==c||e[9]!==l?(u=(0,M.jsx)(`span`,{className:c,children:l}),e[8]=c,e[9]=l,e[10]=u):u=e[10];let d;e[11]!==t.hinweise||e[12]!==t.verlauf?(d=(0,M.jsx)(I,{hinweise:t.hinweise,verlauf:t.verlauf}),e[11]=t.hinweise,e[12]=t.verlauf,e[13]=d):d=e[13];let f;e[14]!==u||e[15]!==d?(f=(0,M.jsx)(w,{titel:`Checkliste`,id:`checkliste`,rechts:u,children:d}),e[14]=u,e[15]=d,e[16]=f):f=e[16];let p;e[17]!==t.flugplan.gelaufen||e[18]!==t.flugplan.geplant?(p=(0,M.jsx)(_,{gelaufen:t.flugplan.gelaufen,geplant:t.flugplan.geplant}),e[17]=t.flugplan.gelaufen,e[18]=t.flugplan.geplant,e[19]=p):p=e[19];let m;e[20]===i.data?m=e[21]:(m=(0,M.jsx)(q,{radar:i.data}),e[20]=i.data,e[21]=m);let h;e[22]!==p||e[23]!==m?(h=(0,M.jsxs)(w,{titel:`Flugplan`,children:[p,m]}),e[22]=p,e[23]=m,e[24]=h):h=e[24];let g;e[25]!==f||e[26]!==h?(g=(0,M.jsxs)(`div`,{className:`grid gap-5 lg:grid-cols-[minmax(0,1.35fr)_minmax(0,1fr)] md:gap-6`,children:[f,h]}),e[25]=f,e[26]=h,e[27]=g):g=e[27];let y;return e[28]!==o||e[29]!==s||e[30]!==g?(y=(0,M.jsxs)(M.Fragment,{children:[o,s,g]}),e[28]=o,e[29]=s,e[30]=g,e[31]=y):y=e[31],y}function Z(){return document.getElementById(`checkliste`)?.scrollIntoView({behavior:`smooth`,block:`start`})}export{X as StartSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/Updates-CeN6eC6c.js b/frontend/dist/assets/Updates-DhRqQqvO.js similarity index 98% rename from frontend/dist/assets/Updates-CeN6eC6c.js rename to frontend/dist/assets/Updates-DhRqQqvO.js index 4f8ce02..5109ad5 100644 --- a/frontend/dist/assets/Updates-CeN6eC6c.js +++ b/frontend/dist/assets/Updates-DhRqQqvO.js @@ -1,2 +1,2 @@ -import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{t as a}from"./chevron-right-DzY92a1B.js";import{L as o,Pt as s,R as c,Y as l,Z as u,dt as d,f,gt as p,ht as ee,lt as te,p as m,pt as ne,u as h,vt as re,yt as g}from"./index-COh3_SSc.js";import{t as _}from"./button-D8rvET0Z.js";import{t as v}from"./Bestaetigen-D8Dh5cqS.js";import{c as y,i as b,n as ie,o as x,t as S}from"./Auftraege-PZ7YvGYr.js";var C=t(),w=r(e(),1),T=n(),E=[{id:`os`,name:`Betriebssystem`},{id:`engine`,name:`Motor (llama.cpp)`},{id:`swap`,name:`llama-swap`},{id:`hermes`,name:`Hermes`}],D={os:`Die Ubuntu-Pakete werden eingespielt, danach prüft die Box, ob die Modelle noch antworten. Das kann einige Minuten dauern.`,engine:`Der Motor wird ersetzt, llama-swap startet dafür neu und die Modelle sind kurz nicht erreichbar. Klappt die Prüfung danach nicht, holt die Box den alten Stand von selbst zurück.`,swap:`llama-swap wird ersetzt und startet neu, die Modelle sind kurz nicht erreichbar. Klappt die Prüfung danach nicht, holt die Box den alten Stand von selbst zurück.`,hermes:`Vorher wird gesichert. Dann wird Hermes aktualisiert und startet neu — Lucy ist dabei ein paar Minuten nicht erreichbar.`};function O(e){let t=(0,C.c)(7),{breit:n}=e,r=n===void 0?`w-16`:n,a;t[0]===r?a=t[1]:(a=i(`inline-block h-3.5 rounded bg-linie motion-safe:animate-pulse`,r),t[0]=r,t[1]=a);let o;t[2]===a?o=t[3]:(o=(0,T.jsx)(`span`,{"aria-hidden":!0,className:a}),t[2]=a,t[3]=o);let s;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,T.jsx)(`span`,{className:`sr-only`,children:`wird geprüft`}),t[4]=s):s=t[4];let c;return t[5]===o?c=t[6]:(c=(0,T.jsxs)(`span`,{className:`inline-flex items-center`,children:[o,s]}),t[5]=o,t[6]=c),c}function ae(e){let t=(0,C.c)(13),{text:n}=e,[r,a]=(0,w.useState)(!1),o;t[0]===n?o=t[1]:(o=n.split(` +import{i as e,n as t,r as n,s as r,t as i}from"./dist-D4CVSex9.js";import{t as a}from"./chevron-right-T7IsaTwB.js";import{L as o,Pt as s,R as c,Y as l,Z as u,dt as d,f,gt as p,ht as ee,lt as te,p as m,pt as ne,u as h,vt as re,yt as g}from"./index-FvHAYExN.js";import{t as _}from"./button-D8rvET0Z.js";import{t as v}from"./Bestaetigen-SE_NgpcU.js";import{c as y,i as b,n as ie,o as x,t as S}from"./Auftraege-CAHujylB.js";var C=t(),w=r(e(),1),T=n(),E=[{id:`os`,name:`Betriebssystem`},{id:`engine`,name:`Motor (llama.cpp)`},{id:`swap`,name:`llama-swap`},{id:`hermes`,name:`Hermes`}],D={os:`Die Ubuntu-Pakete werden eingespielt, danach prüft die Box, ob die Modelle noch antworten. Das kann einige Minuten dauern.`,engine:`Der Motor wird ersetzt, llama-swap startet dafür neu und die Modelle sind kurz nicht erreichbar. Klappt die Prüfung danach nicht, holt die Box den alten Stand von selbst zurück.`,swap:`llama-swap wird ersetzt und startet neu, die Modelle sind kurz nicht erreichbar. Klappt die Prüfung danach nicht, holt die Box den alten Stand von selbst zurück.`,hermes:`Vorher wird gesichert. Dann wird Hermes aktualisiert und startet neu — Lucy ist dabei ein paar Minuten nicht erreichbar.`};function O(e){let t=(0,C.c)(7),{breit:n}=e,r=n===void 0?`w-16`:n,a;t[0]===r?a=t[1]:(a=i(`inline-block h-3.5 rounded bg-linie motion-safe:animate-pulse`,r),t[0]=r,t[1]=a);let o;t[2]===a?o=t[3]:(o=(0,T.jsx)(`span`,{"aria-hidden":!0,className:a}),t[2]=a,t[3]=o);let s;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,T.jsx)(`span`,{className:`sr-only`,children:`wird geprüft`}),t[4]=s):s=t[4];let c;return t[5]===o?c=t[6]:(c=(0,T.jsxs)(`span`,{className:`inline-flex items-center`,children:[o,s]}),t[5]=o,t[6]=c),c}function ae(e){let t=(0,C.c)(13),{text:n}=e,[r,a]=(0,w.useState)(!1),o;t[0]===n?o=t[1]:(o=n.split(` `).length>3||n.length>240,t[0]=n,t[1]=o);let s=o,c=s&&!r&&`line-clamp-3`,l;t[2]===c?l=t[3]:(l=i(`m-0 whitespace-pre-line`,c),t[2]=c,t[3]=l);let u;t[4]!==l||t[5]!==n?(u=(0,T.jsx)(`p`,{className:l,children:n}),t[4]=l,t[5]=n,t[6]=u):u=t[6];let d;t[7]!==s||t[8]!==r?(d=s&&(0,T.jsx)(`button`,{type:`button`,"aria-expanded":r,onClick:()=>a(!r),className:`-mb-2 inline-flex h-11 items-center text-sm text-cyan hover:underline`,children:r?`Weniger zeigen`:`Ganze Zusammenfassung zeigen`}),t[7]=s,t[8]=r,t[9]=d):d=t[9];let f;return t[10]!==u||t[11]!==d?(f=(0,T.jsxs)(`div`,{className:`flex flex-col items-start`,children:[u,d]}),t[10]=u,t[11]=d,t[12]=f):f=t[12],f}function oe(e){let t=(0,C.c)(13),{d:n}=e,r;t[0]===n.packages?r=t[1]:(r=n.packages??[],t[0]=n.packages,t[1]=r);let i=r,o,s;if(t[2]!==n.held_back||t[3]!==i){s=Symbol.for(`react.early_return_sentinel`);bb0:{let e=n.held_back??[];if(i.length===0&&e.length===0){s=null;break bb0}let r;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,T.jsx)(a,{"aria-hidden":!0,className:`size-4 transition-transform group-open:rotate-90`}),t[6]=r):r=t[6];let c=i.length===1?`Das Paket ansehen`:`Alle ${i.length} Pakete ansehen`,l;t[7]===c?l=t[8]:(l=(0,T.jsxs)(`summary`,{className:`inline-flex h-11 cursor-pointer items-center gap-1 text-sm text-cyan hover:underline`,children:[r,c]}),t[7]=c,t[8]=l);let u;t[9]===i?u=t[10]:(u=i.map(A),t[9]=i,t[10]=u);let d;t[11]===u?d=t[12]:(d=(0,T.jsx)(`ul`,{className:`ziffern m-0 flex max-h-64 list-none flex-col gap-1 overflow-auto rounded-md border border-linie bg-[#0b0d0f] p-2.5 text-xs`,children:u}),t[11]=u,t[12]=d),o=(0,T.jsxs)(`details`,{className:`group`,children:[l,d,e.length>0&&(0,T.jsxs)(`p`,{className:`mt-2 text-xs text-text-3`,children:[`Dazu `,e.length===1?`kommt ein Paket`:`kommen ${e.length} Pakete`,`, die Ubuntu noch zurückhält (`,e.map(k).join(`, `),`). Die kommen von selbst, wenn Ubuntu sie freigibt.`]})]})}t[2]=n.held_back,t[3]=i,t[4]=o,t[5]=s}else o=t[4],s=t[5];return s===Symbol.for(`react.early_return_sentinel`)?o:s}function k(e){return e.name}function A(e){return(0,T.jsxs)(`li`,{className:`break-all`,children:[(0,T.jsx)(`span`,{className:`text-foreground`,children:e.name}),` `,(0,T.jsxs)(`span`,{className:`text-text-3`,children:[e.current,` → `,e.candidate]})]},e.name)}function se(e){let t=(0,C.c)(6),{d:n}=e;if(n.action_needed===!1){let e;return t[0]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,T.jsx)(f,{art:`gruen`,children:`Nichts zu tun`}),t[0]=e):e=t[0],e}if(n.action_needed!==!0)return null;let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,T.jsx)(f,{art:`bernstein`,children:`Du musst etwas tun`}),t[1]=r):r=t[1];let i;t[2]===n.action_text?i=t[3]:(i=n.action_text&&(0,T.jsx)(`span`,{className:`text-bernstein`,children:n.action_text}),t[2]=n.action_text,t[3]=i);let a;return t[4]===i?a=t[5]:(a=(0,T.jsxs)(`span`,{className:`flex flex-col items-start gap-1.5`,children:[r,i]}),t[4]=i,t[5]=a),a}function ce(e){let t=e?.trim();return t?t.startsWith(`(Zusammenfassung nicht verfügbar`)?`Die Zusammenfassung ist gerade nicht verfügbar.`:t:null}function j(e){let t=(0,C.c)(63),{id:n,name:r,details:i,hatUpdate:a,neuLautStart:o,fest:s,gesperrt:c,onStart:l,onFreigeben:u}=e,d=i.data,f=i.isPending,p=i.isError?i.error.message:d?.error,ee;t[0]!==d||t[1]!==n?(ee=d?y(n,d):null,t[0]=d,t[1]=n,t[2]=ee):ee=t[2];let te=ee,m=a?te?.neu??o??null:null,ne=d?.summary,h;t[3]===ne?h=t[4]:(h=ce(ne),t[3]=ne,t[4]=h);let re=h,g=te&&te.laeuft!==`–`?te.laeuft:p?`unbekannt`:`–`,v;t[5]!==f||t[6]!==g?(v=f?(0,T.jsx)(O,{}):(0,T.jsx)(T.Fragment,{children:g}),t[5]=f,t[6]=g,t[7]=v):v=t[7];let b=v,ie;t[8]!==p||t[9]!==f||t[10]!==m?(ie=f?(0,T.jsx)(O,{breit:`w-20`}):m?(0,T.jsx)(`span`,{className:`text-cyan`,children:m}):p?(0,T.jsx)(`span`,{className:`text-bernstein`,children:`nicht geprüft`}):(0,T.jsx)(`span`,{className:`text-text-3`,children:`–`}),t[8]=p,t[9]=f,t[10]=m,t[11]=ie):ie=t[11];let S=ie,w;if(f){let e;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,T.jsx)(`span`,{className:`text-text-3`,children:`Wird geprüft …`}),t[12]=e):e=t[12],w=e}else if(p&&!a){let e;t[13]===p?e=t[14]:(e=x(p),t[13]=p,t[14]=e);let n;t[15]===e?n=t[16]:(n=(0,T.jsx)(`span`,{className:`text-bernstein`,children:e}),t[15]=e,t[16]=n),w=n}else if(!a)w=`Aktuell.`;else{let e;t[17]===p?e=t[18]:(e=p&&(0,T.jsx)(`span`,{className:`text-bernstein`,children:x(p)}),t[17]=p,t[18]=e);let r;t[19]===d?r=t[20]:(r=d&&(0,T.jsx)(se,{d}),t[19]=d,t[20]=r);let i;t[21]!==d||t[22]!==n||t[23]!==re?(i=n===`os`?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(`span`,{children:d?.count?`${d.count} ${d.count===1?`Paket`:`Pakete`} aus Ubuntu.`:`Neue Pakete aus Ubuntu.`}),d&&(0,T.jsx)(oe,{d})]}):re?(0,T.jsx)(ae,{text:re}):null,t[21]=d,t[22]=n,t[23]=re,t[24]=i):i=t[24];let a;t[25]!==e||t[26]!==r||t[27]!==i?(a=(0,T.jsxs)(`div`,{className:`flex flex-col items-start gap-2`,children:[e,r,i]}),t[25]=e,t[26]=r,t[27]=i,t[28]=a):a=t[28],w=a}let E=f||void 0,D;t[29]===r?D=t[30]:(D=(0,T.jsx)(`span`,{role:`rowheader`,className:`text-[15px] font-semibold`,children:r}),t[29]=r,t[30]=D);let k;t[31]!==p||t[32]!==f||t[33]!==m||t[34]!==S?(k=!f&&(m||p)&&(0,T.jsxs)(T.Fragment,{children:[` `,m?`→`:`·`,` `,S]}),t[31]=p,t[32]=f,t[33]=m,t[34]=S,t[35]=k):k=t[35];let A;t[36]!==b||t[37]!==k?(A=(0,T.jsxs)(`span`,{role:`cell`,className:`ziffern -mt-1 text-sm text-text-2 md:hidden`,children:[b,k]}),t[36]=b,t[37]=k,t[38]=A):A=t[38];let j;t[39]===b?j=t[40]:(j=(0,T.jsx)(`span`,{role:`cell`,className:`ziffern hidden text-sm text-text-2 md:block`,children:b}),t[39]=b,t[40]=j);let M;t[41]===S?M=t[42]:(M=(0,T.jsx)(`span`,{role:`cell`,className:`ziffern hidden text-sm md:block`,children:S}),t[41]=S,t[42]=M);let N;t[43]!==s||t[44]!==r?(N=s&&(0,T.jsxs)(`span`,{className:`mb-1.5 block text-bernstein`,children:[`Festgehalten seit `,s.seit,` auf `,s.version,`: `,s.grund,`. Der Sonntags-Lauf überspringt `,r,`.`]}),t[43]=s,t[44]=r,t[45]=N):N=t[45];let P;t[46]!==N||t[47]!==w?(P=(0,T.jsxs)(`div`,{role:`cell`,className:`text-sm leading-relaxed text-text-2`,children:[N,w]}),t[46]=N,t[47]=w,t[48]=P):P=t[48];let F;t[49]!==s||t[50]!==c||t[51]!==a||t[52]!==u||t[53]!==l?(F=(s||a)&&(0,T.jsxs)(`span`,{role:`cell`,className:`flex flex-wrap gap-2 md:flex-col md:items-end`,children:[s&&(0,T.jsx)(_,{variant:`outline`,size:`sm`,onClick:u,children:`Freigeben`}),a&&(0,T.jsx)(_,{variant:`outline`,size:`sm`,onClick:l,disabled:c,children:`Aktualisieren`})]}),t[49]=s,t[50]=c,t[51]=a,t[52]=u,t[53]=l,t[54]=F):F=t[54];let I;return t[55]!==j||t[56]!==M||t[57]!==P||t[58]!==F||t[59]!==E||t[60]!==D||t[61]!==A?(I=(0,T.jsxs)(`div`,{role:`row`,"aria-busy":E,className:`grid grid-cols-1 gap-x-4 gap-y-2 border-t border-linie py-3.5 md:grid-cols-[170px_100px_170px_minmax(0,1fr)_auto] md:items-start`,children:[D,A,j,M,P,F]}),t[55]=j,t[56]=M,t[57]=P,t[58]=F,t[59]=E,t[60]=D,t[61]=A,t[62]=I):I=t[62],I}var M={rot:`rot`,gelb:`bernstein`,gruen:`gruen`,info:`cyan`,grau:`grau`},N={rot:`bg-rot`,gelb:`bg-bernstein`,gruen:`bg-gruen`,info:`bg-cyan`,grau:`bg-text-3`};function P(e){let t=(0,C.c)(19),{lauf:n}=e,r;t[0]===n.start?r=t[1]:(r=g(n.start),t[0]=n.start,t[1]=r);let i;t[2]===r?i=t[3]:(i=(0,T.jsx)(`span`,{className:`ziffern col-start-1 row-start-1 text-sm text-text-3`,children:r}),t[2]=r,t[3]=i);let a;t[4]===n.anlass?a=t[5]:(a=(0,T.jsx)(`span`,{className:`col-span-2 row-start-2 min-w-0 text-[15px] break-words @sm:col-span-1 @sm:col-start-2 @sm:row-start-1`,children:n.anlass}),t[4]=n.anlass,t[5]=a);let o=M[n.stufe],s;t[6]!==n.titel||t[7]!==o?(s=(0,T.jsx)(`span`,{className:`col-start-2 row-start-1 justify-self-end @sm:col-start-3`,children:(0,T.jsx)(f,{art:o,children:n.titel})}),t[6]=n.titel,t[7]=o,t[8]=s):s=t[8];let c;t[9]!==i||t[10]!==a||t[11]!==s?(c=(0,T.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 @sm:grid-cols-[112px_minmax(0,1fr)_auto]`,children:[i,a,s]}),t[9]=i,t[10]=a,t[11]=s,t[12]=c):c=t[12];let l;t[13]!==n.stufe||t[14]!==n.zeilen?(l=n.stufe!==`grau`&&n.zeilen.length>0&&(0,T.jsx)(`ul`,{className:`m-0 flex list-none flex-col gap-1 p-0 @sm:pl-[124px]`,children:n.zeilen.map(F)}),t[13]=n.stufe,t[14]=n.zeilen,t[15]=l):l=t[15];let u;return t[16]!==c||t[17]!==l?(u=(0,T.jsxs)(`li`,{className:`flex flex-col gap-2 border-t border-linie py-3`,children:[c,l]}),t[16]=c,t[17]=l,t[18]=u):u=t[18],u}function F(e){return(0,T.jsxs)(`li`,{className:`flex items-baseline gap-2 text-sm leading-snug text-text-2`,children:[(0,T.jsx)(`span`,{"aria-hidden":!0,className:i(`size-1.5 shrink-0 -translate-y-px rounded-full`,N[e.stufe])}),(0,T.jsxs)(`span`,{className:`min-w-0 break-words`,children:[(0,T.jsx)(`span`,{className:`text-foreground`,children:e.baustein}),` · `,e.text]})]},`${e.baustein}-${e.text}`)}function I(e){return e.mtime?g(new Date(e.mtime*1e3).toISOString()):e.snapshot}function le(){let e=(0,C.c)(126),t=d(),n=o(!0).data?.update_fenster,r=u(),i=p(),a=te(),s=ee(),f=c(),g=l(),y=re(),[b,x]=(0,w.useState)(null),O;e[0]===t.data?.updates.bausteine?O=e[1]:(O=new Map((t.data?.updates.bausteine??[]).map(he)),e[0]=t.data?.updates.bausteine,e[1]=O);let ae=O,oe=new Map((t.data?.updates.festgehalten??[]).map(me)),k;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(k=E.map(pe),e[2]=k):k=e[2];let A=ne(k),se;e[3]!==A||e[4]!==ae?(se=(e,t)=>ie(e.id,A[t].data)??ae.has(e.id),e[3]=A,e[4]=ae,e[5]=se):se=e[5];let ce=E.map(se),M;e[6]===r.data?.jobs?M=e[7]:(M=r.data?.jobs??[],e[6]=r.data?.jobs,e[7]=M);let N=M,P;e[8]!==N||e[9]!==t.data?.zustand?(P=N.some(fe)||(t.data?.zustand.update_laeuft??!1),e[8]=N,e[9]=t.data?.zustand,e[10]=P):P=e[10];let F=P,le;e[11]===N?le=e[12]:(le=N.some(de),e[11]=N,e[12]=le);let ge=le,L=F||s.isPending,R=a.data?.available??!1,z;if(t.isPending){let t;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,T.jsx)(m,{text:`Updates werden gelesen …`}),e[13]=t):t=e[13],z=t}else if(t.isError&&!t.data){let n=`Die Box antwortet nicht: ${t.error.message}`,r;e[14]===n?r=e[15]:(r=(0,T.jsx)(m,{fehler:!0,text:n}),e[14]=n,e[15]=r),z=r}else{let t;e[16]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,T.jsxs)(`div`,{role:`row`,className:`schild hidden grid-cols-[170px_100px_170px_minmax(0,1fr)_auto] gap-x-4 pb-2 text-xs font-semibold text-text-3 md:grid`,children:[(0,T.jsx)(`span`,{role:`columnheader`,children:`Baustein`}),(0,T.jsx)(`span`,{role:`columnheader`,children:`Läuft`}),(0,T.jsx)(`span`,{role:`columnheader`,children:`Neu`}),(0,T.jsx)(`span`,{role:`columnheader`,children:`Was sich ändert`}),(0,T.jsx)(`span`,{role:`columnheader`,className:`sr-only`,children:`Aktion`})]}),e[16]=t):t=e[16],z=(0,T.jsxs)(`div`,{role:`table`,"aria-label":`Bausteine und ihre Updates`,className:`flex flex-col`,children:[t,E.map((e,t)=>(0,T.jsx)(j,{id:e.id,name:e.name,details:A[t],hatUpdate:ce[t],neuLautStart:ae.get(e.id),fest:oe.get(e.id),gesperrt:L,onStart:()=>x({art:`einzeln`,id:e.id,name:e.name}),onFreigeben:()=>{let t=oe.get(e.id);t&&x({art:`freigeben`,id:e.id,name:e.name,grund:t.grund})}},e.id))]})}let B;if(i.isPending){let t;e[17]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,T.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),e[17]=t):t=e[17],B=t}else if(i.isError&&!i.data){let t;e[18]===i.error.message?t=e[19]:(t=(0,T.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Der Verlauf lässt sich gerade nicht lesen: `,i.error.message]}),e[18]=i.error.message,e[19]=t),B=t}else if(i.data?.laeufe.length){let t;e[21]===i.data.laeufe?t=e[22]:(t=i.data.laeufe.map(ue),e[21]=i.data.laeufe,e[22]=t);let n;e[23]===t?n=e[24]:(n=(0,T.jsx)(`ol`,{className:`@container m-0 flex list-none flex-col p-0`,children:t}),e[23]=t,e[24]=n),B=n}else{let t;e[20]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,T.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Noch keine Update-Läufe aufgezeichnet.`}),e[20]=t):t=e[20],B=t}let V;if(a.isPending){let t;e[25]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,T.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Wird gelesen …`}),e[25]=t):t=e[25],V=t}else if(a.isError&&!a.data){let t;e[26]===a.error.message?t=e[27]:(t=(0,T.jsxs)(`p`,{role:`alert`,className:`text-[15px] text-rot-text`,children:[`Die Sicherungen lassen sich gerade nicht lesen: `,a.error.message]}),e[26]=a.error.message,e[27]=t),V=t}else if(a.data?.backups.length){let t;if(e[29]!==a.data.backups||e[30]!==y.isPending||e[31]!==R){let n;e[33]!==y.isPending||e[34]!==R?(n=e=>(0,T.jsxs)(`li`,{className:`flex items-center justify-between gap-3 border-t border-linie py-2.5`,children:[(0,T.jsx)(`span`,{className:`ziffern text-sm`,children:I(e)}),(0,T.jsxs)(`span`,{className:`flex items-center gap-3`,children:[(0,T.jsxs)(`span`,{className:`ziffern text-xs text-text-3`,children:[e.size_mb.toLocaleString(`de-DE`),` MB`]}),(0,T.jsx)(_,{variant:`ghost`,size:`sm`,disabled:!R||y.isPending,onClick:()=>x({art:`zurueck`,datei:e.file,zeit:I(e)}),children:`Zurückspielen`})]})]},e.file),e[33]=y.isPending,e[34]=R,e[35]=n):n=e[35],t=a.data.backups.slice(0,5).map(n),e[29]=a.data.backups,e[30]=y.isPending,e[31]=R,e[32]=t}else t=e[32];let n;e[36]===t?n=e[37]:(n=(0,T.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:t}),e[36]=t,e[37]=n),V=n}else{let t;e[28]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,T.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Noch keine Sicherung vorhanden.`}),e[28]=t):t=e[28],V=t}let _e=h,H;e[38]===s?H=e[39]:(H=()=>s.mutate(`pruefen`),e[38]=s,e[39]=H);let ve=s.isPending||ge,ye=ge?`Sucht …`:`Nach Neuem suchen`,U;e[40]!==ye||e[41]!==H||e[42]!==ve?(U=(0,T.jsx)(_,{variant:`outline`,onClick:H,disabled:ve,children:ye}),e[40]=ye,e[41]=H,e[42]=ve,e[43]=U):U=e[43];let be=_,W;e[44]===Symbol.for(`react.memo_cache_sentinel`)?(W=()=>x({art:`alle`}),e[44]=W):W=e[44];let xe=L||!ce.some(Boolean),G;e[45]!==be||e[46]!==W||e[47]!==xe?(G=(0,T.jsx)(be,{onClick:W,disabled:xe,children:`Alles jetzt aktualisieren`}),e[45]=be,e[46]=W,e[47]=xe,e[48]=G):G=e[48];let K;e[49]!==U||e[50]!==G?(K=(0,T.jsxs)(`div`,{className:`flex flex-wrap gap-2.5`,children:[U,G]}),e[49]=U,e[50]=G,e[51]=K):K=e[51];let Se=n?`Jeden ${n.tag_name} um ${n.uhrzeit} automatisch.`:`Einmal pro Woche automatisch.`,q;e[52]===Se?q=e[53]:(q=(0,T.jsxs)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:[Se,` Vorher wird gesichert, danach geprüft.`]}),e[52]=Se,e[53]=q);let J;e[54]===F?J=e[55]:(J=F&&(0,T.jsx)(`p`,{role:`status`,className:`text-[15px] text-cyan`,children:`Gerade läuft ein Update. Weitere lassen sich erst starten, wenn es fertig ist.`}),e[54]=F,e[55]=J);let Ce;e[56]===Symbol.for(`react.memo_cache_sentinel`)?(Ce=(0,T.jsx)(S,{}),e[56]=Ce):Ce=e[56];let Y;e[57]!==_e||e[58]!==K||e[59]!==q||e[60]!==J||e[61]!==z?(Y=(0,T.jsxs)(_e,{titel:`Updates`,rechts:K,children:[q,J,z,Ce]}),e[57]=_e,e[58]=K,e[59]=q,e[60]=J,e[61]=z,e[62]=Y):Y=e[62];let X;e[63]===B?X=e[64]:(X=(0,T.jsx)(h,{titel:`Verlauf`,children:B}),e[63]=B,e[64]=X);let Z;e[65]===g?Z=e[66]:(Z=()=>g.mutate(void 0),e[65]=g,e[66]=Z);let we=g.isPending?`Sichert …`:`Jetzt sichern`,Q;e[67]!==g.isPending||e[68]!==Z||e[69]!==we?(Q=(0,T.jsx)(_,{variant:`outline`,size:`sm`,onClick:Z,disabled:g.isPending,children:we}),e[67]=g.isPending,e[68]=Z,e[69]=we,e[70]=Q):Q=e[70];let Te;e[71]===Symbol.for(`react.memo_cache_sentinel`)?(Te=(0,T.jsx)(`p`,{className:`-mt-2 text-[15px] text-text-2`,children:`Täglich um 03:35, mit Kopie auf einem zweiten Gerät.`}),e[71]=Te):Te=e[71];let Ee;e[72]!==a.data||e[73]!==R?(Ee=a.data&&!R&&(0,T.jsx)(`p`,{className:`text-sm text-text-3`,children:`Zurückspielen geht nur auf der Box selbst.`}),e[72]=a.data,e[73]=R,e[74]=Ee):Ee=e[74];let De;e[75]!==V||e[76]!==Q||e[77]!==Ee?(De=(0,T.jsxs)(h,{titel:`Sicherungen`,rechts:Q,children:[Te,Ee,V]}),e[75]=V,e[76]=Q,e[77]=Ee,e[78]=De):De=e[78];let Oe;e[79]!==X||e[80]!==De?(Oe=(0,T.jsxs)(`div`,{className:`grid gap-5 md:gap-6 lg:grid-cols-[minmax(0,1.4fr)_minmax(0,1fr)]`,children:[X,De]}),e[79]=X,e[80]=De,e[81]=Oe):Oe=e[81];let ke=b?.art===`alle`,Ae;e[82]===Symbol.for(`react.memo_cache_sentinel`)?(Ae=()=>x(null),e[82]=Ae):Ae=e[82];let je;e[83]!==b?.art||e[84]!==s?(je=()=>{b?.art===`alle`&&s.mutate(`alle`),x(null)},e[83]=b?.art,e[84]=s,e[85]=je):je=e[85];let Me;e[86]!==L||e[87]!==ke||e[88]!==je?(Me=(0,T.jsx)(v,{offen:ke,titel:`Alles jetzt aktualisieren?`,text:`Motor, llama-swap, Hermes und Betriebssystem werden nacheinander aktualisiert, soweit es Neues gibt, und danach geprüft. Motor und llama-swap holen bei Problemen ihren alten Stand von selbst zurück, vor Hermes wird gesichert. Lucy ist dabei ein paar Minuten nicht erreichbar.`,knopf:`Aktualisieren`,gesperrt:L,onNein:Ae,onJa:je}),e[86]=L,e[87]=ke,e[88]=je,e[89]=Me):Me=e[89];let Ne=b?.art===`einzeln`,Pe=b?.art===`einzeln`?`${b.name} aktualisieren?`:``,Fe=b?.art===`einzeln`?D[b.id]??``:``,Ie;e[90]===Symbol.for(`react.memo_cache_sentinel`)?(Ie=()=>x(null),e[90]=Ie):Ie=e[90];let Le;e[91]!==b||e[92]!==s?(Le=()=>{b?.art===`einzeln`&&s.mutate(b.id),x(null)},e[91]=b,e[92]=s,e[93]=Le):Le=e[93];let Re;e[94]!==L||e[95]!==Ne||e[96]!==Pe||e[97]!==Fe||e[98]!==Le?(Re=(0,T.jsx)(v,{offen:Ne,titel:Pe,text:Fe,knopf:`Aktualisieren`,gesperrt:L,onNein:Ie,onJa:Le}),e[94]=L,e[95]=Ne,e[96]=Pe,e[97]=Fe,e[98]=Le,e[99]=Re):Re=e[99];let ze=b?.art===`freigeben`,Be=b?.art===`freigeben`?`${b.name} freigeben?`:``,Ve=b?.art===`freigeben`?`Festgehalten wurde ${b.name}, weil: ${b.grund}. Nach dem Freigeben versucht der nächste Sonntags-Lauf das Update wieder.`:``,He;e[100]===Symbol.for(`react.memo_cache_sentinel`)?(He=()=>x(null),e[100]=He):He=e[100];let Ue;e[101]!==b||e[102]!==f?(Ue=()=>{b?.art===`freigeben`&&f.mutate(b.id),x(null)},e[101]=b,e[102]=f,e[103]=Ue):Ue=e[103];let We;e[104]!==f.isPending||e[105]!==ze||e[106]!==Be||e[107]!==Ve||e[108]!==Ue?(We=(0,T.jsx)(v,{offen:ze,titel:Be,text:Ve,knopf:`Freigeben`,gesperrt:f.isPending,onNein:He,onJa:Ue}),e[104]=f.isPending,e[105]=ze,e[106]=Be,e[107]=Ve,e[108]=Ue,e[109]=We):We=e[109];let Ge=b?.art===`zurueck`,Ke=`Die Einstellungen von Hermes und llama-swap werden auf den Stand von ${b?.art===`zurueck`?b.zeit:``} gesetzt. Vorher wird der jetzige Stand gesichert. Die Dienste starten danach neu.`,qe;e[110]===Symbol.for(`react.memo_cache_sentinel`)?(qe=()=>x(null),e[110]=qe):qe=e[110];let Je;e[111]!==b||e[112]!==y?(Je=()=>{b?.art===`zurueck`&&y.mutate(b.datei),x(null)},e[111]=b,e[112]=y,e[113]=Je):Je=e[113];let $;e[114]!==Ge||e[115]!==Ke||e[116]!==Je||e[117]!==y.isPending?($=(0,T.jsx)(v,{offen:Ge,gefahr:!0,titel:`Sicherung zurückspielen?`,text:Ke,knopf:`Zurückspielen`,gesperrt:y.isPending,onNein:qe,onJa:Je}),e[114]=Ge,e[115]=Ke,e[116]=Je,e[117]=y.isPending,e[118]=$):$=e[118];let Ye;return e[119]!==Y||e[120]!==Oe||e[121]!==Me||e[122]!==Re||e[123]!==We||e[124]!==$?(Ye=(0,T.jsxs)(T.Fragment,{children:[Y,Oe,Me,Re,We,$]}),e[119]=Y,e[120]=Oe,e[121]=Me,e[122]=Re,e[123]=We,e[124]=$,e[125]=Ye):Ye=e[125],Ye}function ue(e){return(0,T.jsx)(P,{lauf:e},e.start)}function de(e){return b(e)&&s(e)}function fe(e){return e.group===`maintenance`&&s(e)}function pe(e){return e.id}function me(e){return[e.baustein,e]}function he(e){return[e.id,e.neu]}export{le as UpdatesSeite}; \ No newline at end of file diff --git a/frontend/dist/assets/chevron-right-DzY92a1B.js b/frontend/dist/assets/chevron-right-T7IsaTwB.js similarity index 60% rename from frontend/dist/assets/chevron-right-DzY92a1B.js rename to frontend/dist/assets/chevron-right-T7IsaTwB.js index d7f4a57..680bc5c 100644 --- a/frontend/dist/assets/chevron-right-DzY92a1B.js +++ b/frontend/dist/assets/chevron-right-T7IsaTwB.js @@ -1 +1 @@ -import{Kt as e}from"./index-COh3_SSc.js";var t={name:`chevron-right`,size:24,node:[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]};t.node;var n=e(t);export{n as t}; \ No newline at end of file +import{Kt as e}from"./index-FvHAYExN.js";var t={name:`chevron-right`,size:24,node:[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]};t.node;var n=e(t);export{n as t}; \ No newline at end of file diff --git a/frontend/dist/assets/dist-D9JSQbGO.js b/frontend/dist/assets/dist-LMCPoT8k.js similarity index 99% rename from frontend/dist/assets/dist-D9JSQbGO.js rename to frontend/dist/assets/dist-LMCPoT8k.js index 6b5c8a2..2f6c5ca 100644 --- a/frontend/dist/assets/dist-D9JSQbGO.js +++ b/frontend/dist/assets/dist-LMCPoT8k.js @@ -1,4 +1,4 @@ -import{i as e,r as t,s as n}from"./dist-D4CVSex9.js";import{Qt as r}from"./index-COh3_SSc.js";import{n as i,r as a}from"./button-D8rvET0Z.js";var o=n(e(),1),s=n(r(),1),c=t(),l=Object.defineProperty,u=(e,t)=>l(e,`name`,{value:t,configurable:!0}),d=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=i(`Primitive.${t}`),r=o.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,c.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function f(e,t){e&&s.flushSync(()=>e.dispatchEvent(t))}u(f,`dispatchDiscreteCustomEvent`);var p=Object.defineProperty,m=(e,t)=>p(e,`name`,{value:t,configurable:!0});function h(e,t){let n=o.createContext(t);n.displayName=e+`Context`;let r=m(e=>{let{children:t,...r}=e,i=o.useMemo(()=>r,Object.values(r));return(0,c.jsx)(n.Provider,{value:i,children:t})},`Provider`);r.displayName=e+`Provider`;function i(r,i={}){let{optional:a=!1}=i,s=o.useContext(n);if(s)return s;if(t!==void 0)return t;if(!a)throw Error(`\`${r}\` must be used within \`${e}\``)}return m(i,`useContext`),[r,i]}m(h,`createContext`);function g(e,t=[]){let n=[];function r(t,r){let i=o.createContext(r);i.displayName=t+`Context`;let a=n.length;n=[...n,r];let s=m(t=>{let{scope:n,children:r,...s}=t,l=n?.[e]?.[a]||i,u=o.useMemo(()=>s,Object.values(s));return(0,c.jsx)(l.Provider,{value:u,children:r})},`Provider`);s.displayName=t+`Provider`;function l(n,s,c={}){let{optional:l=!1}=c,u=s?.[e]?.[a]||i,d=o.useContext(u);if(d)return d;if(r!==void 0)return r;if(!l)throw Error(`\`${n}\` must be used within \`${t}\``)}return m(l,`useContext`),[s,l]}m(r,`createContext`);let i=m(()=>{let t=n.map(e=>o.createContext(e));return m(function(n){let r=n?.[e]||t;return o.useMemo(()=>({[`__scope${e}`]:{...n,[e]:r}}),[n,r])},`useScope`)},`createScope`);return i.scopeName=e,[r,_(i,...t)]}m(g,`createContextScope`);function _(...e){let t=e[0];if(e.length===1)return t;let n=m(()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return m(function(e){let r=n.reduce((t,{useScope:n,scopeName:r})=>{let i=n(e)[`__scope${r}`];return{...t,...i}},{});return o.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])},`useComposedScopes`)},`createScope`);return n.scopeName=t.scopeName,n}m(_,`composeContextScopes`);var v=Object.defineProperty,y=(e,t)=>v(e,`name`,{value:t,configurable:!0}),b=!!(typeof window<`u`&&window.document&&window.document.createElement);function x(e,t,{checkForDefaultPrevented:n=!0}={}){return y(function(r){if(e?.(r),n===!1||!r||!r.defaultPrevented)return t?.(r)},`handleEvent`)}y(x,`composeEventHandlers`);function S(e){if(!b)throw Error(`Cannot access window outside of the DOM`);return e?.ownerDocument?.defaultView??window}y(S,`getOwnerWindow`);function C(e){if(!b)throw Error(`Cannot access document outside of the DOM`);return e?.ownerDocument??document}y(C,`getOwnerDocument`);function w(e,t=!1){let{activeElement:n}=C(e);if(!n?.nodeName)return null;if(ee(n)&&n.contentDocument)return w(n.contentDocument.body,t);if(t){let e=n.getAttribute(`aria-activedescendant`);if(e){let t=C(n).getElementById(e);if(t)return t}}return n}y(w,`getActiveElement`);function ee(e){return e.tagName===`IFRAME`}y(ee,`isFrame`);var T=globalThis?.document?o.useLayoutEffect:()=>{},te=Object.defineProperty,ne=(e,t)=>te(e,`name`,{value:t,configurable:!0}),E=o.useEffectEvent,D=o.useInsertionEffect;function O(e){if(typeof E==`function`)return E(e);let t=o.useRef(()=>{throw Error(`Cannot call an event handler while rendering.`)});return typeof D==`function`?D(()=>{t.current=e}):T(()=>{t.current=e}),o.useMemo(()=>((...e)=>t.current?.(...e)),[])}ne(O,`useEffectEvent`);var re=Object.defineProperty,k=(e,t)=>re(e,`name`,{value:t,configurable:!0}),ie=o.useInsertionEffect||T;function ae({prop:e,defaultProp:t,onChange:n=k(()=>{},`onChange`),caller:r}){let[i,a,s]=oe({defaultProp:t,onChange:n}),c=e!==void 0;return[c?e:i,o.useCallback(t=>{if(c){let n=se(t)?t(e):t;n!==e&&s.current?.(n)}else a(t)},[c,e,a,s])]}k(ae,`useControllableState`);function oe({defaultProp:e,onChange:t}){let[n,r]=o.useState(e),i=o.useRef(n),a=o.useRef(t);return ie(()=>{a.current=t},[t]),o.useEffect(()=>{i.current!==n&&(a.current?.(n),i.current=n)},[n,i]),[n,r,a]}k(oe,`useUncontrolledState`);function se(e){return typeof e==`function`}k(se,`isFunction`);var ce=Symbol(`RADIX:SYNC_STATE`);function le(e,t,n,r){let{prop:i,defaultProp:a,onChange:s,caller:c}=t,l=i!==void 0,u=O(s),d=[{...n,state:a}];r&&d.push(r);let[f,p]=o.useReducer((t,n)=>{if(n.type===ce)return{...t,state:n.state};let r=e(t,n);return l&&!Object.is(r.state,t.state)&&u(r.state),r},...d),m=f.state,h=o.useRef(m);o.useEffect(()=>{h.current!==m&&(h.current=m,l||u(m))},[m,h,l]);let g=o.useMemo(()=>i===void 0?f:{...f,state:i},[f,i]);return o.useEffect(()=>{l&&!Object.is(i,f.state)&&p({type:ce,state:i})},[i,f.state,l]),[g,p]}k(le,`useControllableStateReducer`);var ue=Object.defineProperty,A=(e,t)=>ue(e,`name`,{value:t,configurable:!0});function de(e,t){return o.useReducer((e,n)=>t[e][n]??e,e)}A(de,`useStateMachine`);var fe=A(e=>{let{present:t,children:n}=e,r=pe(t),i=typeof n==`function`?n({present:r.isPresent}):o.Children.only(n),a=he(r.ref,ge(i));return typeof n==`function`||r.isPresent?o.cloneElement(i,{ref:a}):null},`Presence`);function pe(e){let[t,n]=o.useState(),r=o.useRef(null),i=o.useRef(e),a=o.useRef(`none`),s=o.useRef(void 0),[c,l]=de(e?`mounted`:`unmounted`,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}});return o.useEffect(()=>{c===`mounted`?(a.current=s.current??j(r.current),s.current=void 0):a.current=`none`},[c]),T(()=>{let t=r.current,n=i.current;if(n!==e){let r=a.current,o=j(t);e?(s.current=o,l(`MOUNT`)):o===`none`||t?.display===`none`?l(`UNMOUNT`):l(n&&r!==o?`ANIMATION_OUT`:`UNMOUNT`),i.current=e}},[e,l]),T(()=>{if(t){let e,n=t.ownerDocument.defaultView??window,o=A(a=>{let o=j(r.current).includes(CSS.escape(a.animationName));if(a.target===t&&o&&(l(`ANIMATION_END`),!i.current)){let r=t.style.animationFillMode;t.style.animationFillMode=`forwards`,e=n.setTimeout(()=>{t.style.animationFillMode===`forwards`&&(t.style.animationFillMode=r)})}},`handleAnimationEnd`),s=A(e=>{e.target===t&&(a.current=j(r.current))},`handleAnimationStart`);return t.addEventListener(`animationstart`,s),t.addEventListener(`animationcancel`,o),t.addEventListener(`animationend`,o),()=>{n.clearTimeout(e),t.removeEventListener(`animationstart`,s),t.removeEventListener(`animationcancel`,o),t.removeEventListener(`animationend`,o)}}l(`ANIMATION_END`)},[t,l]),{isPresent:[`mounted`,`unmountSuspended`].includes(c),ref:o.useCallback(e=>{if(e){let t=getComputedStyle(e);r.current=t,s.current=j(t)}else r.current=null;n(e)},[])}}A(pe,`usePresence`);function me(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}A(me,`setRef`);function he(...e){let t=o.useRef(e);return t.current=e,o.useCallback(e=>{let n=t.current,r=!1,i=n.map(t=>{let n=me(t,e);return!r&&typeof n==`function`&&(r=!0),n});if(r)return()=>{for(let e=0;e_e(e,`name`,{value:t,configurable:!0}),ye=o.useId||(()=>void 0),be=0;function M(e){let[t,n]=o.useState(ye());return T(()=>{e||n(e=>e??String(be++))},[e]),e||(t?`radix-${t}`:``)}ve(M,`useId`);var xe=Object.defineProperty,Se=(e,t)=>xe(e,`name`,{value:t,configurable:!0});function N(e){let t=o.useRef(e);return o.useEffect(()=>{t.current=e}),o.useMemo(()=>((...e)=>t.current?.(...e)),[])}Se(N,`useCallbackRef`);var Ce=Object.defineProperty,P=(e,t)=>Ce(e,`name`,{value:t,configurable:!0}),we=`dismissableLayer.update`,Te=`dismissableLayer.pointerDownOutside`,Ee=`dismissableLayer.focusOutside`,De,Oe=o.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set,dismissableSurfaces:new Set}),ke=o.forwardRef(P(function(e,t){let{disableOutsidePointerEvents:n=!1,deferPointerDownOutside:r=!1,onEscapeKeyDown:i,onPointerDownOutside:s,onFocusOutside:l,onInteractOutside:u,onDismiss:f,...p}=e,m=o.useContext(Oe),[h,g]=o.useState(null),_=h?.ownerDocument??globalThis?.document,[,v]=o.useState({}),y=a(t,g),b=Array.from(m.layers),[S]=[...m.layersWithOutsidePointerEventsDisabled].slice(-1),C=S?b.indexOf(S):-1,w=h?b.indexOf(h):-1,ee=m.layersWithOutsidePointerEventsDisabled.size>0,T=w>=C,te=o.useRef(!1),ne=Me(e=>{s?.(e),u?.(e),e.defaultPrevented||f?.()},{ownerDocument:_,deferPointerDownOutside:r,isDeferredPointerDownOutsideRef:te,dismissableSurfaces:m.dismissableSurfaces,shouldHandlePointerDownOutside:o.useCallback(e=>{if(!(e instanceof Node))return!1;let t=[...m.branches].some(t=>t.contains(e));return T&&!t},[m.branches,T])}),E=Ne(e=>{if(r&&te.current)return;let t=e.target;[...m.branches].some(e=>e.contains(t))||(l?.(e),u?.(e),e.defaultPrevented||f?.())},_),D=h?w===b.length-1:!1,O=N(e=>{e.key===`Escape`&&(i?.(e),!e.defaultPrevented&&f&&(e.preventDefault(),f()))});return o.useEffect(()=>{if(D)return _.addEventListener(`keydown`,O,{capture:!0}),()=>_.removeEventListener(`keydown`,O,{capture:!0})},[_,D,O]),o.useEffect(()=>{if(h)return n&&(m.layersWithOutsidePointerEventsDisabled.size===0&&(De=_.body.style.pointerEvents,_.body.style.pointerEvents=`none`),m.layersWithOutsidePointerEventsDisabled.add(h)),m.layers.add(h),Pe(),()=>{n&&(m.layersWithOutsidePointerEventsDisabled.delete(h),m.layersWithOutsidePointerEventsDisabled.size===0&&(_.body.style.pointerEvents=De))}},[h,_,n,m]),o.useEffect(()=>()=>{h&&(m.layers.delete(h),m.layersWithOutsidePointerEventsDisabled.delete(h),Pe())},[h,m]),o.useEffect(()=>{let e=P(()=>v({}),`handleUpdate`);return document.addEventListener(we,e),()=>document.removeEventListener(we,e)},[]),(0,c.jsx)(d.div,{...p,ref:y,style:{pointerEvents:ee?T?`auto`:`none`:void 0,...e.style},onFocusCapture:x(e.onFocusCapture,E.onFocusCapture),onBlurCapture:x(e.onBlurCapture,E.onBlurCapture),onPointerDownCapture:x(e.onPointerDownCapture,ne.onPointerDownCapture)})},`DismissableLayer`));function Ae(){let e=o.useContext(Oe),[t,n]=o.useState(null);return o.useEffect(()=>{if(t)return e.dismissableSurfaces.add(t),()=>{e.dismissableSurfaces.delete(t)}},[t,e.dismissableSurfaces]),n}P(Ae,`useDismissableLayerSurface`);var je=P(()=>!0,`IS_TRUE`);function Me(e,t){let{ownerDocument:n=globalThis?.document,deferPointerDownOutside:r=!1,isDeferredPointerDownOutsideRef:i,dismissableSurfaces:a,shouldHandlePointerDownOutside:s=je}=t,c=N(e),l=o.useRef(!1),u=o.useRef(!1),d=o.useRef(new Map),f=o.useRef(()=>{});return o.useEffect(()=>{function e(){u.current=!1,i.current=!1,d.current.clear()}P(e,`resetOutsideInteraction`);function t(){return Array.from(d.current.values()).some(Boolean)}P(t,`isOutsideInteractionIntercepted`);function o(e){if(!u.current)return;let t=e.target;t instanceof Node&&[...a].some(e=>e.contains(t))||d.current.set(e.type,!0),e.type===`click`&&window.setTimeout(()=>{u.current&&f.current()},0)}P(o,`handleInteractionCapture`);function p(e){u.current&&d.current.set(e.type,!1)}P(p,`handleInteractionBubble`);let m=P(a=>{if(a.target&&!l.current){let o=function(){n.removeEventListener(`click`,f.current);let r=t();e(),r||Fe(Te,c,p,{discrete:!0})};if(P(o,`handleAndDispatchPointerDownOutsideEvent`),!s(a.target)){n.removeEventListener(`click`,f.current),e(),l.current=!1;return}let p={originalEvent:a};u.current=!0,i.current=r&&a.button===0,d.current.clear(),!r||a.button!==0?o():(n.removeEventListener(`click`,f.current),f.current=o,n.addEventListener(`click`,f.current,{once:!0}))}else n.removeEventListener(`click`,f.current),e();l.current=!1},`handlePointerDown`),h=[`pointerup`,`mousedown`,`mouseup`,`touchstart`,`touchend`,`click`];for(let e of h)n.addEventListener(e,o,!0),n.addEventListener(e,p);let g=window.setTimeout(()=>{n.addEventListener(`pointerdown`,m)},0);return()=>{window.clearTimeout(g),n.removeEventListener(`pointerdown`,m),n.removeEventListener(`click`,f.current);for(let e of h)n.removeEventListener(e,o,!0),n.removeEventListener(e,p)}},[n,c,r,i,a,s]),{onPointerDownCapture:P(()=>l.current=!0,`onPointerDownCapture`)}}P(Me,`usePointerDownOutside`);function Ne(e,t=globalThis?.document){let n=N(e),r=o.useRef(!1);return o.useEffect(()=>{let e=P(e=>{e.target&&!r.current&&Fe(Ee,n,{originalEvent:e},{discrete:!1})},`handleFocus`);return t.addEventListener(`focusin`,e),()=>t.removeEventListener(`focusin`,e)},[t,n]),{onFocusCapture:P(()=>r.current=!0,`onFocusCapture`),onBlurCapture:P(()=>r.current=!1,`onBlurCapture`)}}P(Ne,`useFocusOutside`);function Pe(){let e=new CustomEvent(we);document.dispatchEvent(e)}P(Pe,`dispatchUpdate`);function Fe(e,t,n,{discrete:r}){let i=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?f(i,a):i.dispatchEvent(a)}P(Fe,`handleAndDispatchCustomEvent`);var Ie=Object.defineProperty,F=(e,t)=>Ie(e,`name`,{value:t,configurable:!0}),Le=`focusScope.autoFocusOnMount`,Re=`focusScope.autoFocusOnUnmount`,ze={bubbles:!1,cancelable:!0},Be=o.forwardRef(F(function(e,t){let{loop:n=!1,trapped:r=!1,onMountAutoFocus:i,onUnmountAutoFocus:s,...l}=e,[u,f]=o.useState(null),p=N(i),m=N(s),h=o.useRef(null),g=a(t,f),_=o.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;o.useEffect(()=>{if(r){let e=function(e){if(_.paused||!u)return;let t=e.target;u.contains(t)?h.current=t:I(h.current,{select:!0})},t=function(e){if(_.paused||!u)return;let t=e.relatedTarget;t!==null&&(u.contains(t)||I(h.current,{select:!0}))},n=function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&I(u)};F(e,`handleFocusIn`),F(t,`handleFocusOut`),F(n,`handleMutations`),document.addEventListener(`focusin`,e),document.addEventListener(`focusout`,t);let r=new MutationObserver(n);return u&&r.observe(u,{childList:!0,subtree:!0}),()=>{document.removeEventListener(`focusin`,e),document.removeEventListener(`focusout`,t),r.disconnect()}}},[r,u,_.paused]),o.useEffect(()=>{if(u){qe.add(_);let e=document.activeElement;if(!u.contains(e)){let t=new CustomEvent(Le,ze);u.addEventListener(Le,p),u.dispatchEvent(t),t.defaultPrevented||(Ve(Xe(Ue(u)),{select:!0}),document.activeElement===e&&I(u))}return()=>{u.removeEventListener(Le,p),setTimeout(()=>{let t=new CustomEvent(Re,ze);u.addEventListener(Re,m),u.dispatchEvent(t),t.defaultPrevented||I(e??document.body,{select:!0}),u.removeEventListener(Re,m),qe.remove(_)},0)}}},[u,p,m,_]);let v=o.useCallback(e=>{if(!n&&!r||_.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,i=document.activeElement;if(t&&i){let t=e.currentTarget,[r,a]=He(t);r&&a?!e.shiftKey&&i===a?(e.preventDefault(),n&&I(r,{select:!0})):e.shiftKey&&i===r&&(e.preventDefault(),n&&I(a,{select:!0})):i===t&&e.preventDefault()}},[n,r,_.paused]);return(0,c.jsx)(d.div,{tabIndex:-1,...l,ref:g,onKeyDown:v})},`FocusScope`));function Ve(e,{select:t=!1}={}){let n=document.activeElement;for(let r of e)if(I(r,{select:t}),document.activeElement!==n)return}F(Ve,`focusFirst`);function He(e){let t=Ue(e);return[We(t,e),We(t.reverse(),e)]}F(He,`getTabbableEdges`);function Ue(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:F(e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP},`acceptNode`)});for(;n.nextNode();)t.push(n.currentNode);return t}F(Ue,`getTabbableCandidates`);function We(e,t){let n=typeof t.checkVisibility==`function`&&t.checkVisibility({checkVisibilityCSS:!0});for(let r of e)if(!(n?!r.checkVisibility({checkVisibilityCSS:!0}):Ge(r,{upTo:t})))return r}F(We,`findVisible`);function Ge(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}F(Ge,`isHidden`);function Ke(e){return e instanceof HTMLInputElement&&`select`in e}F(Ke,`isSelectableInput`);function I(e,{select:t=!1}={}){if(e&&e.focus){let n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&Ke(e)&&t&&e.select()}}F(I,`focus`);var qe=Je();function Je(){let e=[];return{add(t){let n=e[0];t!==n&&n?.pause(),e=Ye(e,t),e.unshift(t)},remove(t){e=Ye(e,t),e[0]?.resume()}}}F(Je,`createFocusScopesStack`);function Ye(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}F(Ye,`arrayRemove`);function Xe(e){return e.filter(e=>e.tagName!==`A`)}F(Xe,`removeLinks`);var Ze=Object.defineProperty,Qe=o.forwardRef(((e,t)=>Ze(e,`name`,{value:t,configurable:!0}))(function(e,t){let{container:n,...r}=e,[i,a]=o.useState(!1);T(()=>a(!0),[]);let l=n||i&&globalThis?.document?.body;return l?s.createPortal((0,c.jsx)(d.div,{...r,ref:t}),l):null},`Portal`)),$e=Object.defineProperty,et=(e,t)=>$e(e,`name`,{value:t,configurable:!0}),L=0,R=null;function tt(e){return nt(),e.children}et(tt,`FocusGuards`);function nt(){o.useEffect(()=>{R||={start:rt(),end:rt()};let{start:e,end:t}=R;return document.body.firstElementChild!==e&&document.body.insertAdjacentElement(`afterbegin`,e),document.body.lastElementChild!==t&&document.body.insertAdjacentElement(`beforeend`,t),L++,()=>{L===1&&(R?.start.remove(),R?.end.remove(),R=null),L=Math.max(0,L-1)}},[])}et(nt,`useFocusGuards`);function rt(){let e=document.createElement(`span`);return e.setAttribute(`data-radix-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}et(rt,`createFocusGuard`);var z=function(){return z=Object.assign||function(e){for(var t,n=1,r=arguments.length;n`u`)return Dt;var t=kt(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},jt=Et(),U=`data-scroll-locked`,Mt=function(e,t,n,r){var i=e.left,a=e.top,o=e.right,s=e.gap;return n===void 0&&(n=`margin`),` +import{i as e,r as t,s as n}from"./dist-D4CVSex9.js";import{Qt as r}from"./index-FvHAYExN.js";import{n as i,r as a}from"./button-D8rvET0Z.js";var o=n(e(),1),s=n(r(),1),c=t(),l=Object.defineProperty,u=(e,t)=>l(e,`name`,{value:t,configurable:!0}),d=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=i(`Primitive.${t}`),r=o.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,c.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function f(e,t){e&&s.flushSync(()=>e.dispatchEvent(t))}u(f,`dispatchDiscreteCustomEvent`);var p=Object.defineProperty,m=(e,t)=>p(e,`name`,{value:t,configurable:!0});function h(e,t){let n=o.createContext(t);n.displayName=e+`Context`;let r=m(e=>{let{children:t,...r}=e,i=o.useMemo(()=>r,Object.values(r));return(0,c.jsx)(n.Provider,{value:i,children:t})},`Provider`);r.displayName=e+`Provider`;function i(r,i={}){let{optional:a=!1}=i,s=o.useContext(n);if(s)return s;if(t!==void 0)return t;if(!a)throw Error(`\`${r}\` must be used within \`${e}\``)}return m(i,`useContext`),[r,i]}m(h,`createContext`);function g(e,t=[]){let n=[];function r(t,r){let i=o.createContext(r);i.displayName=t+`Context`;let a=n.length;n=[...n,r];let s=m(t=>{let{scope:n,children:r,...s}=t,l=n?.[e]?.[a]||i,u=o.useMemo(()=>s,Object.values(s));return(0,c.jsx)(l.Provider,{value:u,children:r})},`Provider`);s.displayName=t+`Provider`;function l(n,s,c={}){let{optional:l=!1}=c,u=s?.[e]?.[a]||i,d=o.useContext(u);if(d)return d;if(r!==void 0)return r;if(!l)throw Error(`\`${n}\` must be used within \`${t}\``)}return m(l,`useContext`),[s,l]}m(r,`createContext`);let i=m(()=>{let t=n.map(e=>o.createContext(e));return m(function(n){let r=n?.[e]||t;return o.useMemo(()=>({[`__scope${e}`]:{...n,[e]:r}}),[n,r])},`useScope`)},`createScope`);return i.scopeName=e,[r,_(i,...t)]}m(g,`createContextScope`);function _(...e){let t=e[0];if(e.length===1)return t;let n=m(()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return m(function(e){let r=n.reduce((t,{useScope:n,scopeName:r})=>{let i=n(e)[`__scope${r}`];return{...t,...i}},{});return o.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])},`useComposedScopes`)},`createScope`);return n.scopeName=t.scopeName,n}m(_,`composeContextScopes`);var v=Object.defineProperty,y=(e,t)=>v(e,`name`,{value:t,configurable:!0}),b=!!(typeof window<`u`&&window.document&&window.document.createElement);function x(e,t,{checkForDefaultPrevented:n=!0}={}){return y(function(r){if(e?.(r),n===!1||!r||!r.defaultPrevented)return t?.(r)},`handleEvent`)}y(x,`composeEventHandlers`);function S(e){if(!b)throw Error(`Cannot access window outside of the DOM`);return e?.ownerDocument?.defaultView??window}y(S,`getOwnerWindow`);function C(e){if(!b)throw Error(`Cannot access document outside of the DOM`);return e?.ownerDocument??document}y(C,`getOwnerDocument`);function w(e,t=!1){let{activeElement:n}=C(e);if(!n?.nodeName)return null;if(ee(n)&&n.contentDocument)return w(n.contentDocument.body,t);if(t){let e=n.getAttribute(`aria-activedescendant`);if(e){let t=C(n).getElementById(e);if(t)return t}}return n}y(w,`getActiveElement`);function ee(e){return e.tagName===`IFRAME`}y(ee,`isFrame`);var T=globalThis?.document?o.useLayoutEffect:()=>{},te=Object.defineProperty,ne=(e,t)=>te(e,`name`,{value:t,configurable:!0}),E=o.useEffectEvent,D=o.useInsertionEffect;function O(e){if(typeof E==`function`)return E(e);let t=o.useRef(()=>{throw Error(`Cannot call an event handler while rendering.`)});return typeof D==`function`?D(()=>{t.current=e}):T(()=>{t.current=e}),o.useMemo(()=>((...e)=>t.current?.(...e)),[])}ne(O,`useEffectEvent`);var re=Object.defineProperty,k=(e,t)=>re(e,`name`,{value:t,configurable:!0}),ie=o.useInsertionEffect||T;function ae({prop:e,defaultProp:t,onChange:n=k(()=>{},`onChange`),caller:r}){let[i,a,s]=oe({defaultProp:t,onChange:n}),c=e!==void 0;return[c?e:i,o.useCallback(t=>{if(c){let n=se(t)?t(e):t;n!==e&&s.current?.(n)}else a(t)},[c,e,a,s])]}k(ae,`useControllableState`);function oe({defaultProp:e,onChange:t}){let[n,r]=o.useState(e),i=o.useRef(n),a=o.useRef(t);return ie(()=>{a.current=t},[t]),o.useEffect(()=>{i.current!==n&&(a.current?.(n),i.current=n)},[n,i]),[n,r,a]}k(oe,`useUncontrolledState`);function se(e){return typeof e==`function`}k(se,`isFunction`);var ce=Symbol(`RADIX:SYNC_STATE`);function le(e,t,n,r){let{prop:i,defaultProp:a,onChange:s,caller:c}=t,l=i!==void 0,u=O(s),d=[{...n,state:a}];r&&d.push(r);let[f,p]=o.useReducer((t,n)=>{if(n.type===ce)return{...t,state:n.state};let r=e(t,n);return l&&!Object.is(r.state,t.state)&&u(r.state),r},...d),m=f.state,h=o.useRef(m);o.useEffect(()=>{h.current!==m&&(h.current=m,l||u(m))},[m,h,l]);let g=o.useMemo(()=>i===void 0?f:{...f,state:i},[f,i]);return o.useEffect(()=>{l&&!Object.is(i,f.state)&&p({type:ce,state:i})},[i,f.state,l]),[g,p]}k(le,`useControllableStateReducer`);var ue=Object.defineProperty,A=(e,t)=>ue(e,`name`,{value:t,configurable:!0});function de(e,t){return o.useReducer((e,n)=>t[e][n]??e,e)}A(de,`useStateMachine`);var fe=A(e=>{let{present:t,children:n}=e,r=pe(t),i=typeof n==`function`?n({present:r.isPresent}):o.Children.only(n),a=he(r.ref,ge(i));return typeof n==`function`||r.isPresent?o.cloneElement(i,{ref:a}):null},`Presence`);function pe(e){let[t,n]=o.useState(),r=o.useRef(null),i=o.useRef(e),a=o.useRef(`none`),s=o.useRef(void 0),[c,l]=de(e?`mounted`:`unmounted`,{mounted:{UNMOUNT:`unmounted`,ANIMATION_OUT:`unmountSuspended`},unmountSuspended:{MOUNT:`mounted`,ANIMATION_END:`unmounted`},unmounted:{MOUNT:`mounted`}});return o.useEffect(()=>{c===`mounted`?(a.current=s.current??j(r.current),s.current=void 0):a.current=`none`},[c]),T(()=>{let t=r.current,n=i.current;if(n!==e){let r=a.current,o=j(t);e?(s.current=o,l(`MOUNT`)):o===`none`||t?.display===`none`?l(`UNMOUNT`):l(n&&r!==o?`ANIMATION_OUT`:`UNMOUNT`),i.current=e}},[e,l]),T(()=>{if(t){let e,n=t.ownerDocument.defaultView??window,o=A(a=>{let o=j(r.current).includes(CSS.escape(a.animationName));if(a.target===t&&o&&(l(`ANIMATION_END`),!i.current)){let r=t.style.animationFillMode;t.style.animationFillMode=`forwards`,e=n.setTimeout(()=>{t.style.animationFillMode===`forwards`&&(t.style.animationFillMode=r)})}},`handleAnimationEnd`),s=A(e=>{e.target===t&&(a.current=j(r.current))},`handleAnimationStart`);return t.addEventListener(`animationstart`,s),t.addEventListener(`animationcancel`,o),t.addEventListener(`animationend`,o),()=>{n.clearTimeout(e),t.removeEventListener(`animationstart`,s),t.removeEventListener(`animationcancel`,o),t.removeEventListener(`animationend`,o)}}l(`ANIMATION_END`)},[t,l]),{isPresent:[`mounted`,`unmountSuspended`].includes(c),ref:o.useCallback(e=>{if(e){let t=getComputedStyle(e);r.current=t,s.current=j(t)}else r.current=null;n(e)},[])}}A(pe,`usePresence`);function me(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}A(me,`setRef`);function he(...e){let t=o.useRef(e);return t.current=e,o.useCallback(e=>{let n=t.current,r=!1,i=n.map(t=>{let n=me(t,e);return!r&&typeof n==`function`&&(r=!0),n});if(r)return()=>{for(let e=0;e_e(e,`name`,{value:t,configurable:!0}),ye=o.useId||(()=>void 0),be=0;function M(e){let[t,n]=o.useState(ye());return T(()=>{e||n(e=>e??String(be++))},[e]),e||(t?`radix-${t}`:``)}ve(M,`useId`);var xe=Object.defineProperty,Se=(e,t)=>xe(e,`name`,{value:t,configurable:!0});function N(e){let t=o.useRef(e);return o.useEffect(()=>{t.current=e}),o.useMemo(()=>((...e)=>t.current?.(...e)),[])}Se(N,`useCallbackRef`);var Ce=Object.defineProperty,P=(e,t)=>Ce(e,`name`,{value:t,configurable:!0}),we=`dismissableLayer.update`,Te=`dismissableLayer.pointerDownOutside`,Ee=`dismissableLayer.focusOutside`,De,Oe=o.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set,dismissableSurfaces:new Set}),ke=o.forwardRef(P(function(e,t){let{disableOutsidePointerEvents:n=!1,deferPointerDownOutside:r=!1,onEscapeKeyDown:i,onPointerDownOutside:s,onFocusOutside:l,onInteractOutside:u,onDismiss:f,...p}=e,m=o.useContext(Oe),[h,g]=o.useState(null),_=h?.ownerDocument??globalThis?.document,[,v]=o.useState({}),y=a(t,g),b=Array.from(m.layers),[S]=[...m.layersWithOutsidePointerEventsDisabled].slice(-1),C=S?b.indexOf(S):-1,w=h?b.indexOf(h):-1,ee=m.layersWithOutsidePointerEventsDisabled.size>0,T=w>=C,te=o.useRef(!1),ne=Me(e=>{s?.(e),u?.(e),e.defaultPrevented||f?.()},{ownerDocument:_,deferPointerDownOutside:r,isDeferredPointerDownOutsideRef:te,dismissableSurfaces:m.dismissableSurfaces,shouldHandlePointerDownOutside:o.useCallback(e=>{if(!(e instanceof Node))return!1;let t=[...m.branches].some(t=>t.contains(e));return T&&!t},[m.branches,T])}),E=Ne(e=>{if(r&&te.current)return;let t=e.target;[...m.branches].some(e=>e.contains(t))||(l?.(e),u?.(e),e.defaultPrevented||f?.())},_),D=h?w===b.length-1:!1,O=N(e=>{e.key===`Escape`&&(i?.(e),!e.defaultPrevented&&f&&(e.preventDefault(),f()))});return o.useEffect(()=>{if(D)return _.addEventListener(`keydown`,O,{capture:!0}),()=>_.removeEventListener(`keydown`,O,{capture:!0})},[_,D,O]),o.useEffect(()=>{if(h)return n&&(m.layersWithOutsidePointerEventsDisabled.size===0&&(De=_.body.style.pointerEvents,_.body.style.pointerEvents=`none`),m.layersWithOutsidePointerEventsDisabled.add(h)),m.layers.add(h),Pe(),()=>{n&&(m.layersWithOutsidePointerEventsDisabled.delete(h),m.layersWithOutsidePointerEventsDisabled.size===0&&(_.body.style.pointerEvents=De))}},[h,_,n,m]),o.useEffect(()=>()=>{h&&(m.layers.delete(h),m.layersWithOutsidePointerEventsDisabled.delete(h),Pe())},[h,m]),o.useEffect(()=>{let e=P(()=>v({}),`handleUpdate`);return document.addEventListener(we,e),()=>document.removeEventListener(we,e)},[]),(0,c.jsx)(d.div,{...p,ref:y,style:{pointerEvents:ee?T?`auto`:`none`:void 0,...e.style},onFocusCapture:x(e.onFocusCapture,E.onFocusCapture),onBlurCapture:x(e.onBlurCapture,E.onBlurCapture),onPointerDownCapture:x(e.onPointerDownCapture,ne.onPointerDownCapture)})},`DismissableLayer`));function Ae(){let e=o.useContext(Oe),[t,n]=o.useState(null);return o.useEffect(()=>{if(t)return e.dismissableSurfaces.add(t),()=>{e.dismissableSurfaces.delete(t)}},[t,e.dismissableSurfaces]),n}P(Ae,`useDismissableLayerSurface`);var je=P(()=>!0,`IS_TRUE`);function Me(e,t){let{ownerDocument:n=globalThis?.document,deferPointerDownOutside:r=!1,isDeferredPointerDownOutsideRef:i,dismissableSurfaces:a,shouldHandlePointerDownOutside:s=je}=t,c=N(e),l=o.useRef(!1),u=o.useRef(!1),d=o.useRef(new Map),f=o.useRef(()=>{});return o.useEffect(()=>{function e(){u.current=!1,i.current=!1,d.current.clear()}P(e,`resetOutsideInteraction`);function t(){return Array.from(d.current.values()).some(Boolean)}P(t,`isOutsideInteractionIntercepted`);function o(e){if(!u.current)return;let t=e.target;t instanceof Node&&[...a].some(e=>e.contains(t))||d.current.set(e.type,!0),e.type===`click`&&window.setTimeout(()=>{u.current&&f.current()},0)}P(o,`handleInteractionCapture`);function p(e){u.current&&d.current.set(e.type,!1)}P(p,`handleInteractionBubble`);let m=P(a=>{if(a.target&&!l.current){let o=function(){n.removeEventListener(`click`,f.current);let r=t();e(),r||Fe(Te,c,p,{discrete:!0})};if(P(o,`handleAndDispatchPointerDownOutsideEvent`),!s(a.target)){n.removeEventListener(`click`,f.current),e(),l.current=!1;return}let p={originalEvent:a};u.current=!0,i.current=r&&a.button===0,d.current.clear(),!r||a.button!==0?o():(n.removeEventListener(`click`,f.current),f.current=o,n.addEventListener(`click`,f.current,{once:!0}))}else n.removeEventListener(`click`,f.current),e();l.current=!1},`handlePointerDown`),h=[`pointerup`,`mousedown`,`mouseup`,`touchstart`,`touchend`,`click`];for(let e of h)n.addEventListener(e,o,!0),n.addEventListener(e,p);let g=window.setTimeout(()=>{n.addEventListener(`pointerdown`,m)},0);return()=>{window.clearTimeout(g),n.removeEventListener(`pointerdown`,m),n.removeEventListener(`click`,f.current);for(let e of h)n.removeEventListener(e,o,!0),n.removeEventListener(e,p)}},[n,c,r,i,a,s]),{onPointerDownCapture:P(()=>l.current=!0,`onPointerDownCapture`)}}P(Me,`usePointerDownOutside`);function Ne(e,t=globalThis?.document){let n=N(e),r=o.useRef(!1);return o.useEffect(()=>{let e=P(e=>{e.target&&!r.current&&Fe(Ee,n,{originalEvent:e},{discrete:!1})},`handleFocus`);return t.addEventListener(`focusin`,e),()=>t.removeEventListener(`focusin`,e)},[t,n]),{onFocusCapture:P(()=>r.current=!0,`onFocusCapture`),onBlurCapture:P(()=>r.current=!1,`onBlurCapture`)}}P(Ne,`useFocusOutside`);function Pe(){let e=new CustomEvent(we);document.dispatchEvent(e)}P(Pe,`dispatchUpdate`);function Fe(e,t,n,{discrete:r}){let i=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?f(i,a):i.dispatchEvent(a)}P(Fe,`handleAndDispatchCustomEvent`);var Ie=Object.defineProperty,F=(e,t)=>Ie(e,`name`,{value:t,configurable:!0}),Le=`focusScope.autoFocusOnMount`,Re=`focusScope.autoFocusOnUnmount`,ze={bubbles:!1,cancelable:!0},Be=o.forwardRef(F(function(e,t){let{loop:n=!1,trapped:r=!1,onMountAutoFocus:i,onUnmountAutoFocus:s,...l}=e,[u,f]=o.useState(null),p=N(i),m=N(s),h=o.useRef(null),g=a(t,f),_=o.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;o.useEffect(()=>{if(r){let e=function(e){if(_.paused||!u)return;let t=e.target;u.contains(t)?h.current=t:I(h.current,{select:!0})},t=function(e){if(_.paused||!u)return;let t=e.relatedTarget;t!==null&&(u.contains(t)||I(h.current,{select:!0}))},n=function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&I(u)};F(e,`handleFocusIn`),F(t,`handleFocusOut`),F(n,`handleMutations`),document.addEventListener(`focusin`,e),document.addEventListener(`focusout`,t);let r=new MutationObserver(n);return u&&r.observe(u,{childList:!0,subtree:!0}),()=>{document.removeEventListener(`focusin`,e),document.removeEventListener(`focusout`,t),r.disconnect()}}},[r,u,_.paused]),o.useEffect(()=>{if(u){qe.add(_);let e=document.activeElement;if(!u.contains(e)){let t=new CustomEvent(Le,ze);u.addEventListener(Le,p),u.dispatchEvent(t),t.defaultPrevented||(Ve(Xe(Ue(u)),{select:!0}),document.activeElement===e&&I(u))}return()=>{u.removeEventListener(Le,p),setTimeout(()=>{let t=new CustomEvent(Re,ze);u.addEventListener(Re,m),u.dispatchEvent(t),t.defaultPrevented||I(e??document.body,{select:!0}),u.removeEventListener(Re,m),qe.remove(_)},0)}}},[u,p,m,_]);let v=o.useCallback(e=>{if(!n&&!r||_.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,i=document.activeElement;if(t&&i){let t=e.currentTarget,[r,a]=He(t);r&&a?!e.shiftKey&&i===a?(e.preventDefault(),n&&I(r,{select:!0})):e.shiftKey&&i===r&&(e.preventDefault(),n&&I(a,{select:!0})):i===t&&e.preventDefault()}},[n,r,_.paused]);return(0,c.jsx)(d.div,{tabIndex:-1,...l,ref:g,onKeyDown:v})},`FocusScope`));function Ve(e,{select:t=!1}={}){let n=document.activeElement;for(let r of e)if(I(r,{select:t}),document.activeElement!==n)return}F(Ve,`focusFirst`);function He(e){let t=Ue(e);return[We(t,e),We(t.reverse(),e)]}F(He,`getTabbableEdges`);function Ue(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:F(e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP},`acceptNode`)});for(;n.nextNode();)t.push(n.currentNode);return t}F(Ue,`getTabbableCandidates`);function We(e,t){let n=typeof t.checkVisibility==`function`&&t.checkVisibility({checkVisibilityCSS:!0});for(let r of e)if(!(n?!r.checkVisibility({checkVisibilityCSS:!0}):Ge(r,{upTo:t})))return r}F(We,`findVisible`);function Ge(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}F(Ge,`isHidden`);function Ke(e){return e instanceof HTMLInputElement&&`select`in e}F(Ke,`isSelectableInput`);function I(e,{select:t=!1}={}){if(e&&e.focus){let n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&Ke(e)&&t&&e.select()}}F(I,`focus`);var qe=Je();function Je(){let e=[];return{add(t){let n=e[0];t!==n&&n?.pause(),e=Ye(e,t),e.unshift(t)},remove(t){e=Ye(e,t),e[0]?.resume()}}}F(Je,`createFocusScopesStack`);function Ye(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}F(Ye,`arrayRemove`);function Xe(e){return e.filter(e=>e.tagName!==`A`)}F(Xe,`removeLinks`);var Ze=Object.defineProperty,Qe=o.forwardRef(((e,t)=>Ze(e,`name`,{value:t,configurable:!0}))(function(e,t){let{container:n,...r}=e,[i,a]=o.useState(!1);T(()=>a(!0),[]);let l=n||i&&globalThis?.document?.body;return l?s.createPortal((0,c.jsx)(d.div,{...r,ref:t}),l):null},`Portal`)),$e=Object.defineProperty,et=(e,t)=>$e(e,`name`,{value:t,configurable:!0}),L=0,R=null;function tt(e){return nt(),e.children}et(tt,`FocusGuards`);function nt(){o.useEffect(()=>{R||={start:rt(),end:rt()};let{start:e,end:t}=R;return document.body.firstElementChild!==e&&document.body.insertAdjacentElement(`afterbegin`,e),document.body.lastElementChild!==t&&document.body.insertAdjacentElement(`beforeend`,t),L++,()=>{L===1&&(R?.start.remove(),R?.end.remove(),R=null),L=Math.max(0,L-1)}},[])}et(nt,`useFocusGuards`);function rt(){let e=document.createElement(`span`);return e.setAttribute(`data-radix-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}et(rt,`createFocusGuard`);var z=function(){return z=Object.assign||function(e){for(var t,n=1,r=arguments.length;n`u`)return Dt;var t=kt(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},jt=Et(),U=`data-scroll-locked`,Mt=function(e,t,n,r){var i=e.left,a=e.top,o=e.right,s=e.gap;return n===void 0&&(n=`margin`),` .${ot} { overflow: hidden ${r}; padding-right: ${s}px ${r}; diff --git a/frontend/dist/assets/index-CXja6cgU.css b/frontend/dist/assets/index-CXja6cgU.css deleted file mode 100644 index 5503be0..0000000 --- a/frontend/dist/assets/index-CXja6cgU.css +++ /dev/null @@ -1,2 +0,0 @@ -/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */ -@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){:root,:host{--shimmer-angle:20deg}*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0;--scroll-fade-t:0px;--scroll-fade-b:0px;--scroll-fade-s:0px;--scroll-fade-e:0px;--scroll-fade-mask:initial;--shimmer-image:initial;--shimmer-text-fill:initial}}}@layer theme{:root,:host{--font-mono:"JetBrains Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;--color-black:#000;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-normal:0em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-xs:4px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:"Barlow", "Segoe UI", system-ui, sans-serif;--default-mono-font-family:"JetBrains Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;--font-anzeige:"Barlow Condensed", "Barlow", "Segoe UI", sans-serif}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}html{-webkit-font-smoothing:antialiased;font-family:Barlow,Segoe UI,system-ui,sans-serif}body{background-color:var(--background);color:var(--foreground);margin:0}:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}}@layer components;@layer utilities{.\@container{container-type:inline-size}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{inset-inline:0}.inset-y-0{inset-block:0}.-top-1\.5{top:calc(var(--spacing) * -1.5)}.top-0{top:0}.top-1{top:var(--spacing)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.-bottom-1\.5{bottom:calc(var(--spacing) * -1.5)}.bottom-0{bottom:0}.bottom-24{bottom:calc(var(--spacing) * 24)}.left-0{left:0}.left-1\/2{left:50%}.left-3{left:calc(var(--spacing) * 3)}.left-4{left:calc(var(--spacing) * 4)}.left-\[80\%\]{left:80%}.left-\[90\%\]{left:90%}.isolate{isolation:isolate}.z-10{z-index:10}.z-50{z-index:50}.col-span-2{grid-column:span 2/span 2}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.row-start-1{grid-row-start:1}.row-start-2{grid-row-start:2}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.-m-2{margin:calc(var(--spacing) * -2)}.m-0{margin:0}.-mx-2{margin-inline:calc(var(--spacing) * -2)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-auto{margin-inline:auto}.-my-2{margin-block:calc(var(--spacing) * -2)}.-mt-1{margin-top:calc(var(--spacing) * -1)}.-mt-2{margin-top:calc(var(--spacing) * -2)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-auto{margin-top:auto}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-\[0\.444em\]{margin-right:.444em}.-mb-2{margin-bottom:calc(var(--spacing) * -2)}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-0{margin-bottom:0}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.-ml-2{margin-left:calc(var(--spacing) * -2)}.ml-\[0\.111em\]{margin-left:.111em}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.size-\[18px\]{width:18px;height:18px}.h-0{height:0}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-\[1\.75em\]{height:1.75em}.h-\[min\(75cqw\,150px\)\]{height:min(75cqw,150px)}.h-auto{height:auto}.h-dvh{height:100dvh}.h-full{height:100%}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-\[50vh\]{max-height:50vh}.max-h-\[calc\(100dvh-2rem\)\]{max-height:calc(100dvh - 2rem)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-\[58px\]{min-height:58px}.min-h-\[130px\]{min-height:130px}.min-h-dvh{min-height:100dvh}.w-0\.5{width:calc(var(--spacing) * .5)}.w-1{width:var(--spacing)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-\[1\.1875em\]{width:1.1875em}.w-full{width:100%}.w-px{width:1px}.max-w-40{max-width:calc(var(--spacing) * 40)}.max-w-\[200px\]{max-width:200px}.max-w-\[1320px\]{max-width:1320px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.min-w-0{min-width:0}.min-w-36{min-width:calc(var(--spacing) * 36)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.basis-full{flex-basis:100%}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-px{--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.resize{resize:both}.scroll-mt-4{scroll-margin-top:calc(var(--spacing) * 4)}.scroll-mt-6{scroll-margin-top:calc(var(--spacing) * 6)}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[1\.5rem_minmax\(0\,1fr\)_auto\]{grid-template-columns:1.5rem minmax(0,1fr) auto}.grid-cols-\[64px_18px_minmax\(0\,1fr\)\]{grid-template-columns:64px 18px minmax(0,1fr)}.grid-cols-\[170px_100px_170px_minmax\(0\,1fr\)_auto\]{grid-template-columns:170px 100px 170px minmax(0,1fr) auto}.grid-cols-\[auto_minmax\(0\,1fr\)\]{grid-template-columns:auto minmax(0,1fr)}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-cols-\[minmax\(0\,1fr\)_auto_auto\]{grid-template-columns:minmax(0,1fr) auto auto}.grid-cols-\[minmax\(0\,9rem\)_minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,9rem) minmax(0,1fr) auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-\[0\.1875em\]{gap:.1875em}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-1{row-gap:var(--spacing)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-6{row-gap:calc(var(--spacing) * 6)}.self-center{align-self:center}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:calc(var(--radius) * 1.8)}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) * .8)}.rounded-sm{border-radius:calc(var(--radius) * .6)}.rounded-xl{border-radius:calc(var(--radius) * 1.4)}.rounded-b-xl{border-bottom-right-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-dotted{--tw-border-style:dotted;border-style:dotted}.\!border-bernstein{border-color:var(--bernstein)!important}.\!border-box{border-color:var(--box)!important}.\!border-lab{border-color:var(--lab)!important}.\!border-text-2{border-color:var(--text-2)!important}.border-\[\#2a3036\]{border-color:#2a3036}.border-aus-rand{border-color:var(--aus-rand)}.border-bernstein,.border-bernstein\/60{border-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.border-bernstein\/60{border-color:color-mix(in oklab, var(--bernstein) 60%, transparent)}}.border-bernstein\/70{border-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.border-bernstein\/70{border-color:color-mix(in oklab, var(--bernstein) 70%, transparent)}}.border-box-rand{border-color:var(--box-rand)}.border-cyan-rand,.border-cyan-rand\/60{border-color:var(--cyan-rand)}@supports (color:color-mix(in lab, red, red)){.border-cyan-rand\/60{border-color:color-mix(in oklab, var(--cyan-rand) 60%, transparent)}}.border-gruen-rand{border-color:var(--gruen-rand)}.border-lab-rand{border-color:var(--lab-rand)}.border-linie{border-color:var(--linie)}.border-linie-stark{border-color:var(--linie-stark)}.border-rot{border-color:var(--rot)}.border-rot-rand{border-color:var(--rot-rand)}.border-transparent{border-color:#0000}.bg-\[\#0b0d0f\]{background-color:#0b0d0f}.bg-\[\#0c0f12\]{background-color:#0c0f12}.bg-aus-grund{background-color:var(--aus-grund)}.bg-bernstein{background-color:var(--bernstein)}.bg-bernstein-grund{background-color:var(--bernstein-grund)}.bg-bernstein-lampe{background-color:var(--bernstein-lampe)}.bg-bernstein\/70{background-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.bg-bernstein\/70{background-color:color-mix(in oklab, var(--bernstein) 70%, transparent)}}.bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.bg-black\/10{background-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.bg-box{background-color:var(--box)}.bg-box-grund{background-color:var(--box-grund)}.bg-cyan{background-color:var(--cyan)}.bg-cyan-grund,.bg-cyan-grund\/40{background-color:var(--cyan-grund)}@supports (color:color-mix(in lab, red, red)){.bg-cyan-grund\/40{background-color:color-mix(in oklab, var(--cyan-grund) 40%, transparent)}}.bg-cyan\/35{background-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.bg-cyan\/35{background-color:color-mix(in oklab, var(--cyan) 35%, transparent)}}.bg-erhaben,.bg-erhaben\/40{background-color:var(--erhaben)}@supports (color:color-mix(in lab, red, red)){.bg-erhaben\/40{background-color:color-mix(in oklab, var(--erhaben) 40%, transparent)}}.bg-erhaben\/50{background-color:var(--erhaben)}@supports (color:color-mix(in lab, red, red)){.bg-erhaben\/50{background-color:color-mix(in oklab, var(--erhaben) 50%, transparent)}}.bg-gruen{background-color:var(--gruen)}.bg-gruen-grund{background-color:var(--gruen-grund)}.bg-lab{background-color:var(--lab)}.bg-lab-grund{background-color:var(--lab-grund)}.bg-linie{background-color:var(--linie)}.bg-linie-stark{background-color:var(--linie-stark)}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.bg-panel,.bg-panel\/70{background-color:var(--panel)}@supports (color:color-mix(in lab, red, red)){.bg-panel\/70{background-color:color-mix(in oklab, var(--panel) 70%, transparent)}}.bg-popover{background-color:var(--popover)}.bg-rot{background-color:var(--rot)}.bg-rot-grund{background-color:var(--rot-grund)}.bg-rot\/80{background-color:var(--rot)}@supports (color:color-mix(in lab, red, red)){.bg-rot\/80{background-color:color-mix(in oklab, var(--rot) 80%, transparent)}}.bg-text-3{background-color:var(--text-3)}.bg-transparent{background-color:#0000}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-box-grund{--tw-gradient-from:var(--box-grund);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-lab-grund{--tw-gradient-from:var(--lab-grund);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.bg-clip-padding{background-clip:padding-box}.fill-text-3{fill:var(--text-3)}.p-0{padding:0}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-0{padding-inline:0}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-7{padding-block:calc(var(--spacing) * 7)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-0{padding-bottom:0}.pb-1{padding-bottom:var(--spacing)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-10{padding-bottom:calc(var(--spacing) * 10)}.pb-\[calc\(1\.25rem\+env\(safe-area-inset-bottom\)\)\]{padding-bottom:calc(1.25rem + env(safe-area-inset-bottom))}.pb-\[min\(10cqw\,20px\)\]{padding-bottom:min(10cqw,20px)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-anzeige,.font-heading{font-family:Barlow Condensed,Barlow,Segoe UI,sans-serif}.font-mono{font-family:JetBrains Mono,ui-monospace,Cascadia Mono,Consolas,monospace}.font-sans{font-family:Barlow,Segoe UI,system-ui,sans-serif}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.5625em\]{font-size:.5625em}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.text-\[17px\]{font-size:17px}.text-\[22px\]{font-size:22px}.text-\[26px\]{font-size:26px}.text-\[28px\]{font-size:28px}.text-\[32px\]{font-size:32px}.text-\[34px\]{font-size:34px}.text-\[40px\]{font-size:40px}.text-\[length\:clamp\(14px\,14\.5cqw\,32px\)\]{font-size:clamp(14px,14.5cqw,32px)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.02em\]{--tw-tracking:.02em;letter-spacing:.02em}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-\[0\.04em\]{--tw-tracking:.04em;letter-spacing:.04em}.tracking-\[0\.06em\]{--tw-tracking:.06em;letter-spacing:.06em}.tracking-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\[0\.18em\]{--tw-tracking:.18em;letter-spacing:.18em}.tracking-\[0\.22em\]{--tw-tracking:.22em;letter-spacing:.22em}.tracking-\[0\.24em\]{--tw-tracking:.24em;letter-spacing:.24em}.tracking-\[0\.26em\]{--tw-tracking:.26em;letter-spacing:.26em}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.\!text-foreground{color:var(--foreground)!important}.text-\[\#f2c46b\]{color:#f2c46b}.text-aus-text{color:var(--aus-text)}.text-bernstein{color:var(--bernstein)}.text-bernstein-hell{color:var(--bernstein-hell)}.text-box-text{color:var(--box-text)}.text-cyan{color:var(--cyan)}.text-cyan-text{color:var(--cyan-text)}.text-foreground{color:var(--foreground)}.text-gruen{color:var(--gruen)}.text-gruen-text{color:var(--gruen-text)}.text-lab-text{color:var(--lab-text)}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary-foreground{color:var(--primary-foreground)}.text-rot{color:var(--rot)}.text-rot-text{color:var(--rot-text)}.text-text-2{color:var(--text-2)}.text-text-3{color:var(--text-3)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.no-underline{text-decoration-line:none}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.accent-\[var\(--lab\)\]{accent-color:var(--lab)}.opacity-0{opacity:0}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(61\,220\,138\,0\.7\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,#3ddc8ab3);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_18px_rgba\(255\,90\,79\,0\.35\)\]{--tw-shadow:0 0 18px var(--tw-shadow-color,#ff5a4f59);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_32px_rgba\(255\,90\,79\,0\.3\)\]{--tw-shadow:0 0 32px var(--tw-shadow-color,#ff5a4f4d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-foreground\/10{--tw-ring-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.ring-foreground\/10{--tw-ring-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter\!{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)!important}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.paused{animation-play-state:paused}.running{animation-play-state:running}.zoom-in{--tw-enter-scale:0}.group-open\:rotate-90:is(:where(.group):is([open],:popover-open,:open) *){rotate:90deg}@media (hover:hover){.group-hover\:translate-x-0\.5:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:text-foreground:is(:where(.group):hover *){color:var(--foreground)}.group-hover\:text-text-2:is(:where(.group):hover *){color:var(--text-2)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-data-\[status\=active\]\:text-bernstein:is(:where(.group)[data-status=active] *){color:var(--bernstein)}.group-data-\[status\=active\]\:text-box:is(:where(.group)[data-status=active] *){color:var(--box)}.group-data-\[status\=active\]\:text-foreground:is(:where(.group)[data-status=active] *){color:var(--foreground)}.group-data-\[status\=active\]\:text-lab:is(:where(.group)[data-status=active] *){color:var(--lab)}.first\:border-t-0:first-child{border-top-style:var(--tw-border-style);border-top-width:0}.first\:pt-0:first-child{padding-top:0}.first\:pt-1:first-child{padding-top:var(--spacing)}.open\:pb-2:is([open],:popover-open,:open){padding-bottom:calc(var(--spacing) * 2)}.open\:pb-3:is([open],:popover-open,:open){padding-bottom:calc(var(--spacing) * 3)}@media (hover:hover){.hover\:border-linie-stark:hover{border-color:var(--linie-stark)}.hover\:border-text-3:hover{border-color:var(--text-3)}.hover\:bg-\[\#3a1512\]:hover{background-color:#3a1512}.hover\:bg-\[\#232931\]:hover{background-color:#232931}.hover\:bg-bernstein-hell:hover{background-color:var(--bernstein-hell)}.hover\:bg-cyan-grund:hover{background-color:var(--cyan-grund)}.hover\:bg-erhaben:hover{background-color:var(--erhaben)}.hover\:bg-rot-grund:hover{background-color:var(--rot-grund)}.hover\:text-cyan:hover{color:var(--cyan)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-lab-text:hover{color:var(--lab-text)}.hover\:text-rot-text:hover{color:var(--rot-text)}.hover\:text-text-2:hover{color:var(--text-2)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}}.focus\:border-cyan:focus{border-color:var(--cyan)}.focus\:border-lab:focus{border-color:var(--lab)}.focus-visible\:rounded-md:focus-visible{border-radius:calc(var(--radius) * .8)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-3:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-cyan\/60:focus-visible{--tw-ring-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-cyan\/60:focus-visible{--tw-ring-color:color-mix(in oklab, var(--cyan) 60%, transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.active\:not-aria-\[haspopup\]\:translate-y-px:active:not([aria-haspopup]){--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-45:disabled{opacity:.45}.data-\[side\=bottom\]\:inset-x-0[data-side=bottom]{inset-inline:0}.data-\[side\=bottom\]\:bottom-0[data-side=bottom]{bottom:0}.data-\[side\=bottom\]\:h-auto[data-side=bottom]{height:auto}.data-\[side\=bottom\]\:border-t[data-side=bottom]{border-top-style:var(--tw-border-style);border-top-width:1px}.data-\[side\=left\]\:inset-y-0[data-side=left]{inset-block:0}.data-\[side\=left\]\:left-0[data-side=left]{left:0}.data-\[side\=left\]\:h-full[data-side=left]{height:100%}.data-\[side\=left\]\:w-3\/4[data-side=left]{width:75%}.data-\[side\=left\]\:w-\[300px\][data-side=left]{width:300px}.data-\[side\=left\]\:border-r[data-side=left]{border-right-style:var(--tw-border-style);border-right-width:1px}.data-\[side\=right\]\:inset-y-0[data-side=right]{inset-block:0}.data-\[side\=right\]\:right-0[data-side=right]{right:0}.data-\[side\=right\]\:h-full[data-side=right]{height:100%}.data-\[side\=right\]\:w-3\/4[data-side=right]{width:75%}.data-\[side\=right\]\:w-full[data-side=right]{width:100%}.data-\[side\=right\]\:border-l[data-side=right]{border-left-style:var(--tw-border-style);border-left-width:1px}.data-\[side\=top\]\:inset-x-0[data-side=top]{inset-inline:0}.data-\[side\=top\]\:top-0[data-side=top]{top:0}.data-\[side\=top\]\:h-auto[data-side=top]{height:auto}.data-\[side\=top\]\:border-b[data-side=top]{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.supports-backdrop-filter\:backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}}@media (prefers-reduced-motion:no-preference){.motion-safe\:animate-pulse{animation:var(--animate-pulse)}.motion-safe\:animate-spin{animation:var(--animate-spin)}}@media (width>=40rem){.sm\:block{display:block}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-\[minmax\(0\,1fr\)_120px_160px\]{grid-template-columns:minmax(0,1fr) 120px 160px}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2{gap:calc(var(--spacing) * 2)}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:text-\[38px\]{font-size:38px}.sm\:text-\[44px\]{font-size:44px}.data-\[side\=left\]\:sm\:max-w-sm[data-side=left]{max-width:var(--container-sm)}.data-\[side\=right\]\:sm\:max-w-2xl[data-side=right]{max-width:var(--container-2xl)}.data-\[side\=right\]\:sm\:max-w-sm[data-side=right]{max-width:var(--container-sm)}.data-\[side\=right\]\:sm\:max-w-xl[data-side=right]{max-width:var(--container-xl)}}@media (width>=48rem){.md\:left-auto{left:auto}.md\:col-span-1{grid-column:span 1/span 1}.md\:block{display:block}.md\:grid{display:grid}.md\:hidden{display:none}.md\:w-\[420px\]{width:420px}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-\[170px_100px_170px_minmax\(0\,1fr\)_auto\]{grid-template-columns:170px 100px 170px minmax(0,1fr) auto}.md\:grid-cols-\[260px_minmax\(0\,1fr\)\]{grid-template-columns:260px minmax(0,1fr)}.md\:grid-cols-\[minmax\(0\,1\.1fr\)_minmax\(0\,1\.3fr\)_minmax\(0\,1fr\)_minmax\(0\,0\.9fr\)_11\.5rem\]{grid-template-columns:minmax(0,1.1fr) minmax(0,1.3fr) minmax(0,1fr) minmax(0,.9fr) 11.5rem}.md\:grid-cols-\[minmax\(0\,1\.3fr\)_110px_minmax\(0\,1fr\)_minmax\(0\,1\.2fr\)_minmax\(0\,1fr\)_90px\]{grid-template-columns:minmax(0,1.3fr) 110px minmax(0,1fr) minmax(0,1.2fr) minmax(0,1fr) 90px}.md\:flex-col{flex-direction:column}.md\:items-center{align-items:center}.md\:items-end{align-items:flex-end}.md\:items-start{align-items:flex-start}.md\:items-stretch{align-items:stretch}.md\:gap-5{gap:calc(var(--spacing) * 5)}.md\:gap-6{gap:calc(var(--spacing) * 6)}.md\:px-10{padding-inline:calc(var(--spacing) * 10)}.md\:pt-8{padding-top:calc(var(--spacing) * 8)}}@media (width>=64rem){.lg\:bottom-6{bottom:calc(var(--spacing) * 6)}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-\[272px_minmax\(0\,1fr\)\]{grid-template-columns:272px minmax(0,1fr)}.lg\:grid-cols-\[minmax\(0\,1\.4fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}.lg\:grid-cols-\[minmax\(0\,1\.35fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}.lg\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,1\.3fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr)}.lg\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,1\.6fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,1.6fr)}.lg\:items-center{align-items:center}.lg\:px-6{padding-inline:calc(var(--spacing) * 6)}}@media (width>=80rem){.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}}@media (width>=96rem){.\32 xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@container (width>=24rem){.\@sm\:col-span-1{grid-column:span 1/span 1}.\@sm\:col-start-2{grid-column-start:2}.\@sm\:col-start-3{grid-column-start:3}.\@sm\:row-start-1{grid-row-start:1}.\@sm\:grid-cols-\[112px_minmax\(0\,1fr\)_auto\]{grid-template-columns:112px minmax(0,1fr) auto}.\@sm\:pl-\[124px\]{padding-left:124px}}@container (width>=28rem){.\@md\:col-span-1{grid-column:span 1/span 1}.\@md\:col-start-2{grid-column-start:2}.\@md\:col-start-3{grid-column-start:3}.\@md\:row-start-1{grid-row-start:1}.\@md\:grid-cols-\[112px_minmax\(0\,1fr\)_auto\]{grid-template-columns:112px minmax(0,1fr) auto}}.data-open\:animate-in:where([data-state=open]),.data-open\:animate-in:where([data-open]:not([data-open=false])){animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-open\:fade-in-0:where([data-state=open]),.data-open\:fade-in-0:where([data-open]:not([data-open=false])){--tw-enter-opacity:0}.data-open\:zoom-in-95:where([data-state=open]),.data-open\:zoom-in-95:where([data-open]:not([data-open=false])){--tw-enter-scale:.95}.data-\[side\=bottom\]\:data-open\:slide-in-from-bottom-10[data-side=bottom]:where([data-state=open]),.data-\[side\=bottom\]\:data-open\:slide-in-from-bottom-10[data-side=bottom]:where([data-open]:not([data-open=false])){--tw-enter-translate-y:calc(.1*100%)}.data-\[side\=left\]\:data-open\:slide-in-from-left-10[data-side=left]:where([data-state=open]),.data-\[side\=left\]\:data-open\:slide-in-from-left-10[data-side=left]:where([data-open]:not([data-open=false])){--tw-enter-translate-x:calc(.1*-100%)}.data-\[side\=right\]\:data-open\:slide-in-from-right-10[data-side=right]:where([data-state=open]),.data-\[side\=right\]\:data-open\:slide-in-from-right-10[data-side=right]:where([data-open]:not([data-open=false])){--tw-enter-translate-x:calc(.1*100%)}.data-\[side\=top\]\:data-open\:slide-in-from-top-10[data-side=top]:where([data-state=open]),.data-\[side\=top\]\:data-open\:slide-in-from-top-10[data-side=top]:where([data-open]:not([data-open=false])){--tw-enter-translate-y:calc(.1*-100%)}.data-closed\:animate-out:where([data-state=closed]),.data-closed\:animate-out:where([data-closed]:not([data-closed=false])){animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-closed\:fade-out-0:where([data-state=closed]),.data-closed\:fade-out-0:where([data-closed]:not([data-closed=false])){--tw-exit-opacity:0}.data-closed\:zoom-out-95:where([data-state=closed]),.data-closed\:zoom-out-95:where([data-closed]:not([data-closed=false])){--tw-exit-scale:.95}.data-\[side\=bottom\]\:data-closed\:slide-out-to-bottom-10[data-side=bottom]:where([data-state=closed]),.data-\[side\=bottom\]\:data-closed\:slide-out-to-bottom-10[data-side=bottom]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-y:calc(.1*100%)}.data-\[side\=left\]\:data-closed\:slide-out-to-left-10[data-side=left]:where([data-state=closed]),.data-\[side\=left\]\:data-closed\:slide-out-to-left-10[data-side=left]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-x:calc(.1*-100%)}.data-\[side\=right\]\:data-closed\:slide-out-to-right-10[data-side=right]:where([data-state=closed]),.data-\[side\=right\]\:data-closed\:slide-out-to-right-10[data-side=right]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-x:calc(.1*100%)}.data-\[side\=top\]\:data-closed\:slide-out-to-top-10[data-side=top]:where([data-state=closed]),.data-\[side\=top\]\:data-closed\:slide-out-to-top-10[data-side=top]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-y:calc(.1*-100%)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{display:none}:is(.\*\:\[a\]\:underline>*):is(a){text-decoration-line:underline}:is(.\*\:\[a\]\:underline-offset-3>*):is(a){text-underline-offset:3px}@media (hover:hover){:is(.\*\:\[a\]\:hover\:text-foreground>*):is(a):hover{color:var(--foreground)}}.schild{font-family:var(--font-anzeige);text-transform:uppercase;letter-spacing:.16em;font-weight:600}.ziffern{font-family:var(--font-mono);font-variant-numeric:tabular-nums}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@property --scroll-fade-t{syntax:"";inherits:false;initial-value:0}@property --scroll-fade-b{syntax:"";inherits:false;initial-value:0}@property --scroll-fade-s{syntax:"";inherits:false;initial-value:0}@property --scroll-fade-e{syntax:"";inherits:false;initial-value:0}@property --scroll-fade-mask{syntax:"*";inherits:false}@property --shimmer-angle{syntax:"";inherits:true;initial-value:20deg}@property --shimmer-image{syntax:"*";inherits:false}@property --shimmer-text-fill{syntax:"*";inherits:false}@media (prefers-reduced-motion:reduce){.shimmer{-webkit-text-fill-color:currentColor;background-image:none;animation:none}}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-vietnamese-400-normal-Dpl4UHAZ.woff2)format("woff2"),url(/assets/barlow-vietnamese-400-normal-BFeobeCK.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-latin-ext-400-normal-HxX4XjxC.woff2)format("woff2"),url(/assets/barlow-latin-ext-400-normal-CvBsJvxq.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-latin-400-normal-qiz4-Cze.woff2)format("woff2"),url(/assets/barlow-latin-400-normal-fsAxiSwU.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-vietnamese-500-normal-zTViEIzf.woff2)format("woff2"),url(/assets/barlow-vietnamese-500-normal-GNfB7rCE.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-latin-ext-500-normal-DOaysfXq.woff2)format("woff2"),url(/assets/barlow-latin-ext-500-normal-CJPcKP2Q.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-latin-500-normal-BPAOfeC8.woff2)format("woff2"),url(/assets/barlow-latin-500-normal-C1h8hMer.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-vietnamese-600-normal-DcjprdFV.woff2)format("woff2"),url(/assets/barlow-vietnamese-600-normal-CA_GiK2e.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-latin-ext-600-normal-B8NK_A3D.woff2)format("woff2"),url(/assets/barlow-latin-ext-600-normal-DMVRjfRT.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-latin-600-normal-DILqtrty.woff2)format("woff2"),url(/assets/barlow-latin-600-normal-CNwfPWQD.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-condensed-vietnamese-500-normal-DjeaNLFD.woff2)format("woff2"),url(/assets/barlow-condensed-vietnamese-500-normal-CsrJDWc5.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-condensed-latin-ext-500-normal-yA5ONLQ9.woff2)format("woff2"),url(/assets/barlow-condensed-latin-ext-500-normal-B1RE8WP7.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-condensed-latin-500-normal-BgYH2mbd.woff2)format("woff2"),url(/assets/barlow-condensed-latin-500-normal-HIEiP5Ov.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-vietnamese-600-normal-A5AYRdjN.woff2)format("woff2"),url(/assets/barlow-condensed-vietnamese-600-normal-CNlPk46_.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-latin-ext-600-normal-18ESti3H.woff2)format("woff2"),url(/assets/barlow-condensed-latin-ext-600-normal-Clv9cIcR.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-latin-600-normal-DepVgxBB.woff2)format("woff2"),url(/assets/barlow-condensed-latin-600-normal-BFJEwTuo.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-vietnamese-700-normal-DYeBwlKR.woff2)format("woff2"),url(/assets/barlow-condensed-vietnamese-700-normal-DhIzd8Tb.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-latin-ext-700-normal-CwuXbfVR.woff2)format("woff2"),url(/assets/barlow-condensed-latin-ext-700-normal-BIHFfxf0.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-latin-700-normal-v1xN8_Wq.woff2)format("woff2"),url(/assets/barlow-condensed-latin-700-normal-Dmwat-ge.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAASIABAAAAAACQQAAAQuAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVF4AdBEICoRkhAALIAABNgIkAzoEIAWFAAeBFAwHG2oHKJ6DceNW4lJEFHn9tEOE37LNsvkjHr7f739rn3u+OSrSxLQytE91Dw2PYtNVq3Qaw/vJ7fUBMdOj/u2ImB98cT5WUx9F13ZKt06mU7tG1sAYcM26yCRX4f/0904bmwq8hwkUUMTRX61pa9C3xlpAGYw1vOu8C2SBZZFlld7DAW82RJWmwYMI1AJCKBNCIASqdZGFmtPSNQRhMpR0EKjWTwm6z6sJ+4jqhxjovTinVdRpZaQjaQzAYjI8NgAKDJCokgunCn9oUQE8VZd/F//+v6P4F1U9gLr58yNI/dJX9BAshEoJbTDogz7ocKoUsPvES8UK/aQIUQgpGgECBVLkOEV6iASTYgNAPKdNXayhDPL7IJuAZnEYSZ0eOLc9i5Rv5/+lEi3sW/kfnCf/+fTe0sxS7CKLx5erRJkKOixEqQaoqrvx5HN4iz4VhX0gS6DjFIWUzn/fIXJRVFY1NFRVNVeFt+SYmrK6vCU6eJsnKnJj5HTESMTQZOTI3Y/tzr3rUcOsiRy/ciP50s3Mycgxmhz9GMXhjzVH30ut796NHP0UUa31/Zoa6vCH6iPvdIM0IRANaT60FablmZlZd+UKNFy9NrvnFGxb5NC2CRxR0/rIyF/WNn+35sv9r+tHVhkseuWGKkCPPh96+GXt8Lc/Sh24ujfjf+tNw1lZWreiPuHb/PSpyjdv2rf/++ZE5TSKjFdZxYsBvr1sEHl5STuHZqYR7jGYGvGBBdjcaB5bODY1GAxMjsd0wDMIzXAXODRd74DxNMtO4YuYHclgLQRzp9KlUmxptCwv9bYgvWGD2xBW7r9413fdJu+mxzvzAUYeeONQvZP4kgfqZle4jhH/MWh+UbxgtJdrLdXLymNL53PRU0D3Q6FcXTfGqGcul6vrqhgLGAVSv+IVIfZOHpu+mlLqSlnj903j8mazXDsba/wbxhS/4Oubh1c5/uXDgt4j5KtnGEy5BIJHo0ur+jD+r2qCkuP1aRVM8EpUoRYSJyqNRA38uwDvHBNo0AejO2Z+ZYLLal1QiFyFh1EDQOgSCSCpjwwKU8yDbIjroEwne0G5Qca49cYp4AlqtQNZfWTQoFb1tRpFYAmRD+HXTkV4uQhG2bg4OKmyoypAsUGtWgQXyFxYrkpODeUxvGqIZA61erXo0sFG1UBGuPgpuon8RNUG2DhovAjZCBuZwtXrU3mQGki9+pm0eVZAXoWxLWTQoYHBPrJR4WunNxIFbCHfkTyPK+sqxjxDmGArZvf79JGJ3GwEqjwc7a7NIrl/7bJ7Nzu4+n1Ow6shEPnUrtVo7cnd5Wi5qCUbBIQbNKCP95FMCSZylEV5VCiiMqqiOmrKZ/I/C0gI1fyuulVcM2E1r4MhtcV/fbCD+HwEvVzH1dGNAzFE0FTbKzyQz3gootrNbN2a4PuG0j0JOgE=)format("woff2"),url(data:font/woff;base64,d09GRgABAAAAAAbUAA8AAAAACOgAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHREVGAAABWAAAABgAAAAcABQABEdQT1MAAAFwAAAAHgAAAB5EdEx1R1NVQgAAAZAAAAAnAAAAKLj8uOpPUy8yAAABuAAAAFEAAABgFwRca1NUQVQAAAIMAAAARgAAAF7mY9MfY21hcAAAAlQAAABRAAAAdAyHCodnYXNwAAACqAAAAAgAAAAIAAAAEGdseWYAAAKwAAAB6QAAAl7g5OpvaGVhZAAABJwAAAA2AAAANhSQ8UNoaGVhAAAE1AAAAB8AAAAkAcoBImhtdHgAAAT0AAAAHgAAADofBAM2bG9jYQAABRQAAAAgAAAAIATcBZ9tYXhwAAAFNAAAABwAAAAgAIcCb25hbWUAAAVQAAABEgAAAoA4pV3kcG9zdAAABmQAAABwAAAAlNdzMTB42mNgZGBg4GGAAEYgZAWTjCAeAAG0ABkAAQAAAAoAHAAcAAFERkxUAAgABAAAAAD//wAAAAAAAHjaY2BkYGDgYlADQiYXN58QBqGcxJI8Bj4GEGABEf//g0gAWkkFVQB42mNgYYpinMDAysDA1MUUwcDA4A2hGeMYjBgdgKIMDJwMUMDEzoAEvJyAxAEGXpaXzH/+XWFgYP7DqKPAwDj//nWgSjWmW0BZBQZWABNDDdYAAAB42kXIIQIBARQFwHl/QQIkWXInUAANXMOBJCcTd+KIGCjMNViq9/H0CM6P/S0j0bOwUqh08iEb8kPTXn3RiMoYhD90Nwc3AAB42lXIRwHCQBAF0JceehWAlTjhjikUgAVQA4mJLbdk5neUqHBVKWSv3XF2VCnt3AyevkVZv+sxBBbbq/6HfFP4hEcYQgEK82v1aHQ5RTs3FRQAAAAAAQAB//8AD3jabZA1tNRAFEDfTGDdfXHI2QQnZJJvK5ngDs13Welwt/78CtcS7xvcrcHKbXCtceh+wgtu437nXRCgC4BY9AGOXOAFYNHR0dzoKCGju8gJ6xiZaF3DWqcPBiSV5i2geaCgAlAJ77ghgjfiLC7KojvOZEmSXS63emXr5W7lsTLtXFMkRmks4ly+cYOEnvO2YLDNANv+9oJwhkpAAJAcHPG/1RC2BERc1ZGGMxYVWDyVSjc0NMaZELUf9e4JhCgNB3b2PiJRctuqZ0WPR8zilxutN/ji97vUBYMAnGjtzxjtK3wrDaMABo+R9KjWwNRUMppwuWS1QdfFZCIlMF2TxDGuJJlYW7OmVlvD+sx86b1hvC/l8yXf2hqZ66xbZ80yWzyD9/fzGaRzA58+nSOzYC+gw9AP+vyNqUAUhoD4lSnputbgUFPJ5O9Y+ReWlxkrc96naX08b3zk/KORb+E+VjYPmH1M6+UHeVlDtCzzGZ9FY8YMA8gPMsQA0jqaGkHT6cYSdVwl7Zs9Wzx+DyWUugPujd03T52ikrUvM26kF9PIcRmycuDBKcd3XRhPDgtnQACINzJ3fVl1tTB++3bc2S7kyD3cCQIQNMcSKaY2YOciE+d0zFbGjps6u0PILTFlRZHNJfAFnfeHtgAAAAABAAAAAjYEro52gl8PPPUAAwPoAAAAANvSppoAAAAA29rQ8vk5/tQEkgP8AAAABgACAAAAAAAAeNpjYGRgYP7z7woDA8uGn5Z/+1kmAUVQAR8Ar8AG6gB42mOKYIgCYiMkrAzCUHEbJJoBikHgCkMPAPDwCFUAAAAAABoAOwBGAFEAbwB3AKkAsQDmAQkBCQEJAQkBFgEveNpjYGRgYOBn3MGQx7CFgQ3MQwBmBiYALRoB+HjajJADbgVQEEXPZ20bQW3bthvXbr8Vp4to1KV0AV1Wb9JvZzJvzhvcB6CQL0wYzHnAj6E/yAYaDeVBNlJsMAfZxCy/QTbTy3eQLdTzGWQr3VwGuZhx2v/ZAIVUB9kc0TSUKJ8f5FIRHGPjnWs+2MKt+MYzt1xwr/jIk3JymR0X0wzIXKo7VbXjFvfLn3lTtCn7qPoB6+yyzb3qy8pdq/6hrj11fMj7OFbtEY+mrlU/516rVFCdVobplw/JEjVaCaqIYlUiUzOaW9aa/Q1idmlPXZHbCagW/B10XwaRi06VuVdMf+9DnIov6rlF8yzhUXxC/4c66Uz48UepqEN9N/Tzt2RwjOljsUUfj581AbaEXsIAAHjaY2BiAIP/qQxGQIqRAR3wA7EKw0lGJgYbRmZGFkZWRjZGdgZmRg5GTkYuRm42x6Si1LJU9tK8TAMTR1cI7WoB5btB+Zas6Ym5uYlgnoGjAZNzEF9icmlJanJ+bpJecmJxKg9IxtjADMwBAKDtHJg=)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2)format("woff2"),url(/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2)format("woff2"),url(/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAA9UABAAAAAALMAAAA7zAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGnAbhWocghYGYD9TVEFUXgCDBBEICrBAp3ILgjgAATYCJAOEKAQgBYUAB4xODAcbIiYzo8LGAQCKfn4o/usELQ4rdj22ABHwitFYjZPqB3XSqAbV3C5dFkHYtTehxpeGbU+3+QexdERCkxARw9oNxAyetvXzdhdjl/7aiBiHgcqBjZywaGPSh4mNFccpF3DHlfyO8Jc/OiSe/kb7/iQYRAE23iScpHngiRRBFETNiZzQwc2HOllJ0fqXIjTY8RTYbDsklKc81hGPQcOJojhD/w80ll1aG/qiQErbzqOXjmvOVKd14tuv+Hxrlbarq/5xH7CiMPjaZXlrfNSp7uqaroZXvYAzc8A0kH2zs3MvHQBUORcJ2GG2cdFRgArh+Sgb7yOsjImpmgM0kq1FwhQCQzQ1Mt+j7at5GSAAIQAAKFLk6uMul4pIl4HIpEEUK0dUMiCMmhFWNoSDC+Exghgzi5i3hNhtN9qaINo+EbQj1tEIgJVLj5oebQ6I1/fyLMQYALYgALKS0yEOQCJG89uIiEPKyeRDVCmC0HgZ203jIg7kk6cHxfEKeBSDXtxd6n5yJzqpfSgXs9xMri1fPezlKMAVcCGEIhmwHiDRtJOyKfXkGsAVqI7ohIZs0rsDM/IU4fuQgkppCk2n+VRHy6mFttJ26t16mBjQPyIeYhvZnyXaiDSeaAYYXLiKPIm4uKh1zIq6gSRVU7WNPIV5v1PwBOy07RrrT6skwoEAtYyZeYgpBUABaDEmtPWRGP/UGABFgUUjchFXAghAgAYQpyPkCIBBoRwQgU/g3kQcyqTY9KSDItmjjmmkP+qJHG3C66hjXhtlhzwglI+1+4Be+T77hYQxxeNkCIDaKU+ANXhkMqePOVAQr7uwCjoBlCdtHQE8TNRd17//A/evkhSpkOMDA9VTmwAVAbLNlwMkoAG5qG2bWCYA/h3uEYgEhFqSmJJPpCIFbJHg1Aw5GaAujjqMzIHc8NrIHBEJJjGZP3cuFQZD9PvzLvZIaCIjBcTvEnIzTWiGjqdzlD+VAO2TUERK8smEi8lNNOguiAM9P6Gfo6bX8bD0v7V/cPwA/fDBi0BaGgUllWy5AATy6X9gAZqRVIsMLuVmqQ3QmrBbiFgTiWbxLDj1hBqINGLVYewQwySWWRyeQK1kXVJ0S2UjZ5WgXaIOSTodp42CUzqHXH226ZfJI4tXth45eqnslGdQgSGFhmmMyOdTbEyJcdv56U0pNa3MDJ1JVRZUmldtkcESglQkAOA8AMgAoBeYLQi+wDxAtwAAGlXJUdVLPLmo/TLRystE3SsqO29LUY0hsrtvBoXUw1Fy+XjIhqbj4rEZISsUysW1L68PlGRwyWImjWXjS9LFyUzjC7v7Z5hYsYKRhIH49EyxTJxutwOy2PRxp1R63SVViB+eNFYRywlEzJBIMDIl5Aa4PtbFOno416WTTkfVQwSPgIve66BCbLAuLmpCh59ln5uFECODSuUIJ2CJCCzDwbf+DV2/3yTtan5J1gEVuilcVASHULO9Bt+nWkIEHMMit5gOxaO4JpWjvdzOcySeFek9q4dy3jxi2BxHwsuuo2CzbQ+KJWxyqPUJljVCU3WT8JwlhZyLkKODRhZkQByHu8ERJIcGBexSmdwGPfMPbjnC0SwRUTyCAIwY4Mdr9zxJTKE5yp0mcEe9s3Umm/TZp2s4X/27cQUmhrd4Ow4ibPOTOxxT6w+S8ENc9AGE7meFOlNbuzjngJtzjFKcrMsxtf4G4UIPcNGXbvwNaeDea6+1L7kaYG+M13a455pruOh5Ww0HlhllPy/PsqS9Zr7ZV9cSLODAoItzBt2cI5i1brCxQRIcH6yr9wV5+XjhtlxuziH7LiqGTXVnkfCZntd1doJ5liyIno6X3GqH56fcnGNwE2IXvYhw5a/MJGsMns/TOawd+2HX5kOXxQZFsYkwmMetzGtqKDKSe+h9h7jX77z2Snb98vyL7rjmil1N3B/cCBfsC5rymA/ExpPlni/DL9i7eflmn66oxrSlMRRB/8Dbq/e/3aN95L3BG+dFd1d+uCVzKhQy5/+I77CmWJ/o2Hygaay8yleXU1c1NH2IpqHOYUtriyWHf3iZwxjZvNxm/Ti/O5+22uC3nVFxhu1wvQc08ZZ+nb5/9oBF38ehJXaKPt7K6/v34Ltqai21rbXDXI3BRDa+9XDSGp8gzZZarV2ag9v3RBzSNfFjU/M+uVduNDTsMNY0GCOHDU3O4dazeb3zFXjg0rlPuiV75+m+kzV3v5qc/PHdJ2j6pI+wDP+U7mFPW/uw23ltZemTVTo+3+KNa1yyuwdmfI41j1/yvbG3oaLR3G3Sd1xdrNOUfAou3jYw0z860D9jr+9sqU1IIHve9W56/fIEU2fztvaqHQ213trhKauqjXVmr/kFxP1m7bdCE88Plpb1m840l/VNQz72QvvMPlc5z9fvKPt1xBtXv9yVZ9nGmxscXiDfwGcI4LQ9duBaG7Nxjw2aWMuArp7In2qxObTwKfr40/iy/j34zhqeN59qHuZqDBaysQWiL/PZsk4cyV13mvbwWw7phfEDC/O+fm9/ram+sspcXxs5hm9pHjufSujGRbKXaTPmBAPPfMm45bau15+jR/bbBx80mR7sCth94rfB6Q6sngJcuO1v4a7Lu157ad9GKIlypuEea9GDnXs0IytDmZ2Rka2cVv4jrIHmaFZ3O9OWlWX7gLuRH1mMjsxE8VrEH/XNRrErsh61R6PD3e2d7dDsb3Z38k15W/kFkrwmHk+PhWNKx3nLMhHkSl5ZLMvHWPGPfwRB9AKr2QoSUb4qSlB18X715zkqwRI0G3lvUOptugtcID+tsKQForrC+pqxS4X1dcof21bf4OQcbZ2Le6y53kKao3rxNWE9f1a+S3t2tiIu5yej2d/W12RozBwrLh7LbDT0NkUDi+HBQPj0xIlAoKHFFxAMPB8Vce+KKo28Rq0SHV3LUk6MNLv35DMrCzVNmbxBeCGCKzMtu20y8f+SVD4h31Sosky03Upl9YJxzh+L0ZFANLR4LOpYj452tne145E/wok2e6JX/xBX/vH8WaFQojdWlrhzuOXjs1Zn3cCkT4qWSmZeqX/B4tciE4HBmUBZwGxtMDaqnCpdllPVaIzdNw9ZqfDU30ppYDgw2B+A5JP5L8bj4tgWoy/t6WRRcO2P8uFDakiP2fMWaviyaOYFr94gE0nEsXysWligOuHRC2TiH0XSJ/4WqQcjE4GxmUAocKlG+jECgZHFwGX8vabVzf8f4KQSi8Gp6laIdgV0q8OzbmjyaWdnW1MQXZoJDb7ZaEdzVzMoNQiAGESUwszDAIzTDIqSxGFoxoRZ/vTKM8CfyZ9V/ZAPfzZ/Ds4tMHm0dSxCkOPaNpKlK8/KwGQVCdzqbPDn1HKuiT8WHUnStEQYZB2TC6WJ6spymNIjBV7JK5lSs1C5qDoRSYBUSlgH31LlM7X5O4o8eBxrX3MDwtOG1iZdZ/NjXsu0gBJohRVmlQNfwVfQmsReAdZEAahljqkMaxLHg/gT+BONkwxcgT0CH/5k/pQrcCpMUYiGtPqbDGvVgALfitYyTHyI7iP25WqsSqAlstCbcmZ3k0PcRZlgbs0KCrwb7lImBTqQCCawVEpMWHur0DRm3+9sVAOK6UQiqESr8NaEtY8Vu86AIjK3KRZhXNwqD34Oc38umLZM7/33+38/uOj7///Z9yMAAHqAUtN3Bsa/l9rSiKVxlONqqbKozYWfYMRMRkicEE2FhIs4TuWQJL0RDNwCPy0hP1CbGAVY9Mb6W+DZ2p14CIQoIBjqGKpe6lOONhDJTUFBXMgZYOPct8C7Ffmf2jR2ksQ72U7f6SBu5gywoW8x2Qhy1APl1CZGAQ4ksGGD8loGsjY0UQKXmhdvpBboCNglmiU2XUCieL2dF1bDaTacoykaTjgFAhquyoFkiSk0LZyooeM7gQDVIlmNOwCPlICNKQpatkhBhUQJpdLCVwFqWj3FQ8sWeajTWbJiLeRJQlRmsyh1YLRZtAzVNr0dAoCqYN6wXLhzQGL8LY6mvwSAd1698ly88s2Xfwa7FbVA/wsgBhQAgABfG3dQHs2o/066DhB0wWo68NIlpR8Rtqkj9flbwtMc3oZyWoIn3n+L86o5vA1V8ng6L4C9+Ax3YgMBHN8Er4rV97ZRXgdo2vF244hH35wAzlOM0Y1BABGNnNCZ4UFNPID7U9KeSCgiP5EiDnMizejpExlFzj9RIM2BE2MU8pwgViH7TAQQSqpgnDuJJAk2kHIaYDNnhs+sFsvBuaf5DXMbXT9uwvLIbk49b4mBNm3JsEV+85YtKUHWb5rT5ywap9WpUZtWo6q5Fot8W89a0m4OaXOK2Ywat2KaD3NdRi1S/+eloldCT0fn1K5q61Mpa6eaNrKMB6WMQqn83IfXmTNv1eIRiaKj7aOsikMmoxej+EfqsmjOpFHDLnneylGLQxT66vnHnh/n12VXDN1Hw6/bcNpctWo3vrwApZvfrdEDiP8IzgPkeiYUoQlzDvYWB0cnZ6uLq5t7+aRk5I6TIFGS5IqkSJWWXjqFDEqZVLJky5FrG7W8quQrUEijSLESWtsz0tErVVa9chUqValmUMNoh1omZjxSM4s69Ro0atKspTe1smrLpl2HTl262dg5OLm4eezMw6tHrz79BgzyGarXsBGjxqJtJvhNmjJtxqw58xYsWrJsxS4Bu61aE7THXvvsFxJ2wEERhxx2xFHHrIs6fuE/r+1vm6/8jhhtDCwnASDGR1h4SGhYwEGU1Y/Xffk5G4u9XgIAYtxyGpZ5y9sDdNbyP142W5DgAhoE7i3q0c5x2vm9v24aZuNohdcxqSEAz8up00My03HSwmqPa8bMecG3Tjzb+f9EelEtg2vpzPeiIEEBwSA8IEDBwAE9F5Z6vQIQjAnLGTgWLO+uZTL/qwGEAYOAQpg3TefgwBCQgBDzqukKDBAOoU3KVtqIbBXK9XpEAAujuudkZN724kIGmrtVaS38ZZLrS9/4fsKMQhN3yXK5gvSBvJ2Y9/Nydbcvb0bm58+e3FhmGfGLJ9u7axl1F1LQTbaCeyrbu7wFCsorFgV4qnh+GUrWtaczqkSBB96AEeKRB94k2SyLuyw3qwrxeg3P5FNR1Av1Gsq2/ds6dPPkBAAA)format("woff2"),url(/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(data:font/woff2;base64,d09GMgABAAAAAASUABAAAAAACRAAAAQ3AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVEwAdBEICoRkg3oLIAABNgIkAzoEIAWFHgeBFAwHG3AHKB4HzukrRjyF5Gb4kQ/B873d17mv8TWkoqUUGaHodJCtoqntw7m8tiPWyGkfWDU/IMpzVk4zAs9Czv3c7Os5NvKFG1Ht9vBVXySRZpJc4tTrbM3sTRFcLa3zVboKWRIoAksKSKgqUQWEwlSoqjp44V5J9/kjd0+Fi5xaFjwJArgBAIJgIAgCCAI4CdNMqGuYXYUKdADLAkAAJwl6iX0+bZqEm1AH0Hu9rvrJHwxQG1Q/gFYwWYbgTRWgwEESVzbmtjQAt3DXO7Tu/+9Q/KNKWhTCgZ8fQSWoL0CUUgTBjgL8iEAcce7YHBeA8ZvogieCnxI0BCVeACCAAhBD/oDcAdUPABSgAX4kBPBTwjCAjwYSCneiqF65LUo/qXdYFrRwTujtMrKm07plTbSqLQFAiHBN7E4DG5wkiGXhCYBNETh3K/AciHN69iFfQjFOr9EXQQAAQXRNszs8PR0OH4fDV/dwGe76CHdj1MQa11DXYGcfZ6+B1X0OfwjY+i7KpQ1w9d+1z3/HydCB1f3U8A0fRFv+0bXxPWrZu3d9Nn4UcbLs/QCXLH/j3PCKblKOiZxLOR78W9brPo7eGTLz/F27ZPmePQdCB1YP4nJU91o4gU9cy64L3c3SPu8GfDn6ZXD2cGmllVqSxtD5vCXHm5xaeHlnpffx7DcPvXog5NnjA//cPz2btsz3yf+0MI8ri33tuv7upNbYmW5STbosW8bYItV/SPzxvXC0KnpWnFdC91oojit5Lyo6WcJQ1YzwBYbi52ohJVpcxfcHBqsv0nFz8U74rzS6M7r0RVlXZ3jJC4G92O//7Lm78VOtnUx+aQxAzsqPnrRr1t9zDrezKePvZ027x+fGte4s4NXu7/jEp3G9cM1bICYgACbuETUUD5wmenGXA/IBpAKVrl0AEJ5cqr6Q89tGq+SpqkDfX2DtG+pZ9teuae0AX98c301CX179InyErnSG8WCiABB4HFbVrw/lpTdBIOk82nXbpHKoQGyBpUovAAD4XQA8ZTUCeBJHIpI0v0FRrgcnckV3ANckrwYJKXEihQfdSKPER6XeExmEeEMmSe6QBwWmkZdmSOSthhibgIkBlUYreBKd/0NeVAE9WAyEaQpH6KikDWlUVg43Jy2FOmaYlsZhDEGZXO3mWEyWHI6zuaJkMlcSQ9k4F+KidIiFyZItGDc7r1pUj6wP6zrWB0/fbeeFeHl4YOvETMNiM8Ny+7OO6Qh2wur20YVxFts5dlORdl5Kwd5utR7SRcxqX8RA5Ehacha76hg7c6yzNm/Xf6vOLNrv544lIEkWg7xWo/ItBAeIJEmt0XgBwgM8gTifoiiLJroYYooNTeziEKe4zOoR/wvIKp89hSr+6jFAqw/LaonjmZHSscMNg4iPlWpFrO1RN3zkMU+/xUP+JQ99TbvTl1Vg0gtirT6lbwYAAAA=)format("woff2"),url(data:font/woff;base64,d09GRgABAAAAAAbQAA8AAAAACMAAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHREVGAAABWAAAABgAAAAcABQABEdQT1MAAAFwAAAAHgAAAB5EdEx1R1NVQgAAAZAAAAAnAAAAKLj8uOpPUy8yAAABuAAAAFEAAABgF2hca1NUQVQAAAIMAAAAPQAAAEzpM8woY21hcAAAAkwAAABRAAAAdAyHCodnYXNwAAACoAAAAAgAAAAIAAAAEGdseWYAAAKoAAAB8AAAAl604cJFaGVhZAAABJgAAAA2AAAANhSS8UNoaGVhAAAE0AAAAB8AAAAkAcwBEGhtdHgAAATwAAAAHwAAADoe/QLmbG9jYQAABRAAAAAgAAAAIATcBZ9tYXhwAAAFMAAAABwAAAAgAIcCb25hbWUAAAVMAAABEwAAAmo0OV08cG9zdAAABmAAAABwAAAAlNdzMTB42mNgZGBg4GGAAEYgZAWTjCAeAAG0ABkAAQAAAAoAHAAcAAFERkxUAAgABAAAAAD//wAAAAAAAHjaY2BkYGDgYlADQiYXN58QBqGcxJI8Bj4GEGABEf//g0gAWkkFVQB42mNgYYpi/MLAysDA1MUUwcDA4A2hGeMYjBgdgKIMDJwMUMDEzoAEvJyAxAEGXpaXzH/+XWFgYP7DqKPAwDj//nWgSjWmW0BZBQZWADbPDjoAAAB42gXBsQ1AABQFwHsfiY5CYQBDaVVIlBL7mckA7kT0CpPCop79uIPz3q4MojUrSJePvNSKRlRGEH74hwYNAAAAeNpVyEcBwkAQBdCXHnoVgJU44Y4pFIAFUAOJiS23ZOZ3lKhwVSlkr91xdlQp7dwMnr5FWb/rMQQW26v+h3xT+IRHGEIBCvNr9Wh0OUU7NxUUAAAAAAEAAf//AA942mzQNZTUQAAG4H9mIDlbySoOt5I9HHZiL+vS4VDh7u40OFRo3+FQ464V7tbiUmHdJczicsm4fe/9YBgDEIc+BYOEeoArzUqyWSGkeQzZ6+wmfZwLot6nT1vVNM04oBlQ9AZoX3FHhh/gQR6Mp+JykKdUNSVJcu9T20/N73OrT3F/2qMw5vfWLp88SQL3rFE+3ygTrvv9BXaMqiCAkD3d2lr1ipagK4QqNDHjCuPBSCRqGGaQM+XLk0XrPX5GlaY1i54QD7nhvO/c3+Pp35mEHO58dN2fd6mEdgAYRrhfqEyfi7ei6AG0j6m6ohk8HQkrIUlKpQ1dj4dDEcZ1TY3HpDDpM3PZspkzl+lTqlbmZUYUy8o0LJtKSlOXLp3qnC9N1ieU7FWr7BIZPssuFm1hpt3BVBW/yPMPcwAUdEL8m6nqumbU1Eg4/Ceb+s2WpxrG1HKtnVKxcm9zolhWrkGbVN5RmqQJdGdpkj6ukGluzhTed7ULBRvkp4wAENVFUt1oNGrmaS2r8JcrCxfJjXWUUCo3yvMXXDlyhKrO3mhLj/qGhvoeLREyvvXpEYDgGutFDrFjYEDQ5PK1OcsWs15bt4JgM0uQe2LHAxCRHA9FeNoQnUS+Tsc7JkRXVV03JIZZJcBJRUdHxSmAAQCFZYU3AAEAAAACNgQJCtdkXw889QADA+gAAAAA29KmmgAAAADb2tDy+Tv+1ASSA/wAAAAGAAIAAAAAAAB42mNgZGBg/vPvCgMDy4af1n9rWSYBRVABHwCudAbaAHjaY4pgiAJibSQsC8WBQGyERDNAMQicZmgFAOeFB/4AAAAAGgA7AEYAUQBvAHcAqQCxAOYBCQEJAQkBCQEWAS942mNgZGBg4GfcwZDHsIWBDcxDAGYGJgAtGgH4eNqM0IFGQ2EUB/DfqqJMBZLAFUh0V0MoUBGllKQArHVtN9vu3HuH3iEAPUJP0cP0BD1D3D6zKQqHH9/5n885qHs1qza3iPfaenDNts/gGcs+gmcdeAuem+iZt+EleMGWx+Bl++Jv16jbDJ5Xtxa8om4peNUSbmT6WgbOlFp6Um2XEo9SI333EqmOrrKq0lDhQENDoS2XGioVYoVUTyyT62i4curCuUTpWK4lNVC4lBnI7Ez9dCeRK6TVa6Qp1rRnb0KHzh07/PfMG4mOkZ6W/JdUNM5FU7kTmaFn+Xj3SNNuVZFbXYnoj3nXcpkniXaVPzKqbpjJq86tH/fsSKuOkQextkzf1/Sx2KKPx/+aADN1XKsAeNpjYGIAg/+pDEZAipEBHfADsQrDSUYmBhtGZkYWRlZGNkZ2BmZGDkZORi5GbjbHpKLUslT20rxMAxNHVwjtagHlu0H5lqzpibm5iWCegaMBk3MQX2JyaUlqcn5ukl5yYnEqD0jG2MAMzAEAoO0cmA==)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-cyrillic-500-normal-DmUKJPL_.woff2)format("woff2"),url(/assets/jetbrains-mono-cyrillic-500-normal-DJqRU3vO.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-greek-500-normal-JpySY46c.woff2)format("woff2"),url(/assets/jetbrains-mono-greek-500-normal-D7SFKleX.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(data:font/woff2;base64,d09GMgABAAAAAA/IABAAAAAALMwAAA9mAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGnAbhXAcghYGYD9TVEFUTACDBBEICrA8p1ILgjgAATYCJAOEKAQgBYUeB4xODAcbFCYzA/aDkxp0RMXmTMH/IcEUkaXZhe7qAVQoRhtRmOhkzaUYXs3lyzTUlwptwwNGy28PLP/oZewn39g4Jjp8YusISWZ9eNpW788MNQMI7jZprgsqRiJ7imCBYlEWIBhgoWjj7uJGcddednnRIQ/fX77n7i8NtLf08UwEQl3jq59XJCShypU4lMyz3Hb3X0omkAkZCYVNhfN/c3Pmf1nJcDqnj2VE35fYAx+8WYIJhZj4znn1Qbjp9+f4Pab0wOi7JSECzG0o6DRWu/MBgfu/NdPu5O8cUssKSJ1wUyTjq6oWZic7nUsKuIEySsIkzXvdKzArVNkCwvP1lQCgK4yu0BVWFp6vrWVm/6Nt7H82JGhxDyAteCbHZLRdzTsxJqNEUxb+txHysoxjwQzz2p8tU5uFtC4RmcGouCRX3v1195cCAYgBAECRIWSIVNsQCiqEhh6RpxRRzogwaUTYdSCc3AivAcSQCcSkacSCBbQlcbQ9DqAddgyNAFiZilAX9c1OSB/6ZyYgxQCwDgGQoVQGIYAIRvVlRAiR7Ax+jsqKIDacjVExNGWA/MQLk8VzJshTmOztrVbySNyHVnaAiUVpcgdvmnh9FNeAYYXkMl4AqisEoDtIZK0zs6lsSM8yAboEhZ5CFVqD23kNfor49QgAGWwFBeRAIZRCLdigBbqPFSIF+ABeQAfotUU0g+rL1gCMOnSNn4S0PWEL5Nw2QBqyIVvBT2Fe9wCSYDa3QH3Vt4cSaWSAug+NT0JKDgAKQOMLa96EFIKf/gOUWDQiE3EFgAB4aACxikhFAAwKZZ8DgHeiRQixRghm5n4HrCOOSrQAtqJU3LzpFAr/6TAHnDo8QQgszNHZ77FXwgom85JfwQOqMC8Ae/gYkSsURQ1AgQgAQAutAAoAALCdA3gIkv619L//vwb0H8nVgjz+bwLUlFoDaPGQkfqBjQcpc4R8ODxDAPwurhVJMbRRa7ksFTJAUJERK+RXgDxDi8az0D39NBJmMjGZP5MWgyH5+mYXeZg0kZOdJEIu5k1OaIYW0Rnqv/S2DtQxKCIjOSRMLuKNDjpwIXDRE0Y407zODF3/W/ovnvbiAz6YIOC0nZKaVrpMADK9/g8sQDORaaLiVmpCNj+DsAUJUg1SNBKpxbESqyNRj2XB2IWvmkANITOe42zRZqt223RIZbdRi00cNmu1QTMlFwWnTH2y+Gh4pemWrkeGXlpddgjYKUgnRG9Ajn55huQbViCiyKhiY0qMKzSiwpRykyrFGE0jSCIFAJwLADkD0AtMDvBegHkHug0AoFGJVK2qhCXG61AIrWWr8aYYT2zhWkVVD6EX62dQyHJqVGLicdAyTQtFjJgVi1Olw0wdI6eouC1SZjvL3umikG5h3BSHrTOMQKpkUgQu/aGoVC5VKLOjXKBIrWSy2FqmlB+dTKAUcDwJE5TwBkbFnJ/rY92ss4dzXxKbV1/T9hAJvBUu+bwOaq/XWDeXTEKvBMv+HYDYtSMXHI8lErBlDv1FvCF2yDfJcie3f1oWe+wCtb9HCZdshHBIfLC9FrNf60J4HGMKYkfC5TJ+lSNHd3NdZ5dNZ96o6OG8lOvpt5IcR3r2z61suaFBNQmrT0wrCXkvwKkNWenURddyk4+u1FuSiQRtRvQxxhEfxFo411PBvfbTQ1aCPSbA0yIczRIJRXEEQyYS4ocX/of1WiiyaY7SI3Z54u6pUe8m+30ZXB4f13V23XbupYoeLhwa5QqcRIKRdhwtDjdHX7sj8SSWqhgd2s25/B7OuTu4WLdz9FgQLtG55HhMlbFN/J5rrmGPXQWwZOVVLnn31VevgnPrfKt+IsHWeS5ZYVnCJZ9HIqem3z+aeAsjx92cK+7hnPGyVcarN47i9QctdADS864Xl+f2cM6E6W7jwyDLmWTlDNfAWRtN3eLupy1VuUoXA0Y9nDMwDm0aWWy8vkY6yniPTKmax1mFMSPTY+OyNo5gvPrMaWh+d6Yocqzobrh2BM+xO665gj12WQPSixm3X325OHNpey4+FiI+ViG4n+0mtkeDT6J77bK1vsLcqur1aMyF/u63T4xFx/V3vXhzq+VXFL7ypKwjPz+l4w2I7O1b21+wrz3XGCkzhqwKi3EwUtbo7w+YrLVVCuM8U1MAvrXrA5YXtX7tt5YAgoHTtp8WWF0eGHqRNVhUEjBba0v8h+bWaAV+c525JPC7Y/GXH19hrUyWl51baa04D0cn7Sp5qsze1VrwV7OyZHfSiyJTsZB0TFoerSjfW97MUD0Yt59oL3Kd4SNndY35u+St5yYTG575P1cpvWf3hskypgS/yB30tjjC3t6zi/Om4l/vjtYRYdOcpyc4FXQtRAZTN5h66vUdRpsxv/FMnSRHdzIYUWcg6vcHAtFOq8NmDm+l9r49tjYS2RI2O2zqvuITK5wVJxaXLhudxmXyUWt/K/Qiy0BJqb/mZHOpb6DEYg2VlPrMQWf+rheNhpOjo1zdfIfKkm6qMhsrTeZd234B2oMPB68Kyh+7OQi90BoqLvWbT6wt9YWKrdEKfLUnmkv9J2fxld9XeaLx3vKyZ40nVj6HfU/YdfKw79i9rQU1lSWHXuzBSScKzcZC3WPdlRcUl9xQeTh2aC6G9md6xnorxgsKd1f0dvkr/e7KQtNT/YHYFK691fHqc7z5WGnoTXPhm6HR0mnubTCFnYEJf7bfP+G0Ouw1k4QvuOw/rPsO97uflSxXKCuWS0rjlcrKePHlrYZWnH9AY9VoL03tATMa+kB/IGO1LLqakbF6sqvQHJhOLowm8cyBSHJmMonogaPJATpOOOweE/o99p7WWmfms1k7ns101lZHxtRBTefZMzIJkSsaNIZ6PReT/ohVl1uGg2e7ml3474DkI8kGTVtDZOe2TO2ONujXMk7TagqPrtGehm2f5GksNUqWOMsAC1JpXVMB8a265dwCWrecb+qjmcuF3pKhX/qEodrl80v5RPPuq9xGdUu9x3B2pnqrdvnB6Pe2BBpN7ap0nS5d1W7yN56QiB0YXTzQIWMqsVit2E1IJJ65TsI+KzVZbHmN6dJzkiro99t7Gqscyl/8nbTSUVWdjOByTedCSCZdr0kNW3MHcrWWxWmp1cp+yE6c98d0jC0lz4gdGXjRaLO92ffUHysp8pF3giv+eOcGjvsbGa11hkiW+PB5hmPdht38S67pmA9my+IbNmXULvS3VG07Lq136q4xnKz01oPhuZGJueMWrK31JofKklae1qlqKba7vg5yWnz3hzAuBOeGe+aQ8ur03gWhSNxQ3a/htqUcWzqxZsgptuwTcY3NaGzZLlTUKP8UW4zHk6oxHFFf9+F9MrFUwq/n52j06vNeGlmS9eyJU7A8ejA8F5uYO2Oh2i5K+uDcaxPRubvf6vbTxu85m5WnWqo9WbdqJUcOf3tSoNvCbrn09HJ9io6MjZ4Xny5qb2puApUNggl8KLVU1ACQTpMomG2HoEriLLkaejrIM8gzIx90Is8iz8bnjGNjNLQADHJcM4VcEXqXkOUhG7nIA5BvNJ+N9MKmYbuN05Tq5ZrWhcjqhmQ1IzdINamW1V4WrBhk29RG6FoDqfIt9wjkbNfvcq4XYOw1PHUJmquCZ03r3q6PSYNswHBLUJbKWbcHWUaWQZUN89AnAsi+EPxQrrIlEJnJIlUJM7HMcyIb2WdiwCYYhdkKuBjZ5gUYSBu2TYSNZEBQZ/dsLMogZAlqcMnlTpcszNOWC7LHy0oMpAd7JmhjAL8NbmRdayAVvDU+WxL5XR70AowhbINbkc7/KgLwLmPqTfwNBEUHCMBxmUhdQj6WUlkZlKnxu6pO1d9/v//3Q7rw+///2fMjAAB6oDb0HaH0b6GUJU8Y0eR64ojqUqm14Od8duRDHPKhFfZpiGupUNnzetjxdgRbK/5+l4IJ5JeSir8t3R+1IaFaa9AZitANXTvqUxavQ2TYeNmrYwP4det2tGuWgFpDejL9euYAfQfK28gGGIvbgQRcpXesotZIABUK/LoCMgX5tBzoUFiWbADfCNfMu98PsCghbdyeq6jgel07qoCDJjjsyIFY7MAODSYL1alQ9phCIRt3Ri4tbQVgE5dpkfhjGAkZMAWRYzPLNioh68Amvwwd4zGzodCRGaTlUjZqVdaBTSBDfJ6vWzoqG6lZhQKbFK6EAKgz5unB00f9KabfIE1/CcA764pzcPbvSz+DTdl+/xcAHwUACHwM3JK6lBL+d88HxAVfFHh3m1b6a8TWqK9qwVrRVjPaq6WqFSbUXqOOqrXXCkfN6KhWPgnndsCsD3CdZzHpoEPOX6wjz67FHso9aAqWW+ynpyeAc+VhtGMQgKDhk7pBGKUsAnBflEhlCV2wnFLxv2VpRo+QTFme7a4qy5cjUVaqjK2sjFJ+GTmx9FYE4M2hvDRKwSyXLSegQ9S4fhOazOT8YyJCPAaHHhY2o8XyD4iYNc7mNKNWTL+ICdO0Go+aiFqsGZM3ZyMDg2khMRGTZqrMfNN8LD/nqJhhBq3qNXN2r8LzGkBuHpMgYmkV2dpFChUKu08Vm1pVR9TBh+FjevSxMYZr7aNbRE1aFJsrvS1RcG1pOS9ocBJ8rTYx4yMuQj6W2WwW4VnSDJFz5tU/LKK0ZgWXCD2/qRmKRWuYh+47US6adX1FAOIfwbmATE+T2t4wLVab3eF0uT1eXz6MQKLQGCyuGE8gVpLIFCqNzmCy2Bwur54vEIrEEqlM3qxQqtTdSrU6vcFoMlusNjsz0q+WhVWdeg0aNfUmG7vmOrRwaNWmXYdOTi5uHl5deXXr0auPj19Av2C9QgYMGor2C4sYMWrMuAlRk6bETJsxa868BYuWxC3bbY+9EjhBUjTDcrwgSih88/y+eq/C13kHnXKhbTUDgISUCgNDoABXKLCL+2X27E/c2jAAQEKsFigx1qgLEbSeu+NyhcJGIECQNm9L567c3l7uZ5Wo3pkx4tYOhJANKw9dEonovRqVDb5dMKz515Ng+hci23hm4UQEs8eChwPB0BZYOBINbH3Erw0HECzUaokWa42eyGD3PIBIMBSOrfryBQ3G4oHQKi+/kEA0tuaDV40GP3h0+wuAAgXTKy0v5428xUDwksfm538juY9ni9fz2Ggy4iWLMz4qLklle7kcZvOLwy5bXp7fdYrRJlP4l5NDdZPiKVeLnJV7Ohg2VAs/aQwZNVtodX2jki6RU1e/j6GkgZbgAmmogZafuF4mZlb1t+COUyrcnF/CCZzS4MO/dX1T6QQAAAA=)format("woff2"),url(/assets/jetbrains-mono-vietnamese-500-normal-DNRqzVM1.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-latin-ext-500-normal-Cut-4mMH.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-ext-500-normal-ckzbgY84.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--radius:.625rem;--background:#0e1012;--foreground:#e6eaee;--card:#15181b;--card-foreground:#e6eaee;--popover:#15181b;--popover-foreground:#e6eaee;--primary:#ffb020;--primary-foreground:#1a1300;--secondary:#1c2126;--secondary-foreground:#e6eaee;--muted:#1c2126;--muted-foreground:#8b949e;--accent:#1c2126;--accent-foreground:#e6eaee;--destructive:#ff5a4f;--border:#262b30;--input:#3a4148;--ring:#5cc8ff;--panel:#15181b;--erhaben:#1c2126;--linie:#262b30;--linie-stark:#3a4148;--text-2:#aeb6bf;--text-3:#8b949e;--bernstein:#ffb020;--bernstein-hell:#ffc24d;--bernstein-grund:#2a1e05;--bernstein-lampe:#3a2a08;--gruen:#3ddc8a;--gruen-text:#7cc9a0;--gruen-grund:#0f2319;--gruen-rand:#1f5a3b;--cyan:#5cc8ff;--cyan-text:#93d5f8;--cyan-grund:#0c2230;--cyan-rand:#2f7fb0;--rot:#ff5a4f;--rot-text:#ff9a92;--rot-grund:#2e0f0d;--rot-rand:#a33a33;--box:#8b95ff;--box-text:#b4bbff;--box-grund:#151a36;--box-rand:#3f4aa8;--lab:#c98bff;--lab-text:#deb8ff;--lab-grund:#22163a;--lab-rand:#6d44a6;--reihe-1:#3987e5;--reihe-2:#d55181;--aus-grund:#171b1f;--aus-rand:#2e343a;--aus-text:#9aa3ad}@keyframes lampe-atmen{0%,to{box-shadow:0 0 10px color-mix(in srgb, var(--bernstein) 25%, transparent)}50%{box-shadow:0 0 22px color-mix(in srgb, var(--bernstein) 45%, transparent)}}@media (prefers-reduced-motion:no-preference){.lampe-atmet{animation:3.2s ease-in-out infinite lampe-atmen}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}} diff --git a/frontend/dist/assets/index-COh3_SSc.js b/frontend/dist/assets/index-FvHAYExN.js similarity index 97% rename from frontend/dist/assets/index-COh3_SSc.js rename to frontend/dist/assets/index-FvHAYExN.js index 4e4a68e..4010732 100644 --- a/frontend/dist/assets/index-COh3_SSc.js +++ b/frontend/dist/assets/index-FvHAYExN.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Dienste-BJl63suI.js","assets/dist-D4CVSex9.js","assets/button-D8rvET0Z.js","assets/sheet-06g2D7J7.js","assets/dist-D9JSQbGO.js","assets/MenueSchublade-B2LLE53v.js","assets/Start-CckdBDxR.js","assets/Lampe-gSQfYg4e.js","assets/Updates-CeN6eC6c.js","assets/chevron-right-DzY92a1B.js","assets/Bestaetigen-D8Dh5cqS.js","assets/Auftraege-PZ7YvGYr.js","assets/Modelle-B9Bh3yNL.js","assets/useSelector-uUwrspuX.js","assets/useMatch-CiyhmkMV.js","assets/search-_IbVYCuo.js","assets/Monitoring-BicHox4A.js","assets/Homelab-BS3lis1u.js","assets/HomelabProtokoll-DVx8Px-4.js","assets/Einstellungen-DTrnYy0G.js"])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Dienste-BGWmtSYR.js","assets/dist-D4CVSex9.js","assets/button-D8rvET0Z.js","assets/sheet-CB1NvtKC.js","assets/dist-LMCPoT8k.js","assets/MenueSchublade-CC8GVOLn.js","assets/Start-DEaEpevw.js","assets/Lampe-gSQfYg4e.js","assets/Updates-DhRqQqvO.js","assets/chevron-right-T7IsaTwB.js","assets/Bestaetigen-SE_NgpcU.js","assets/Auftraege-CAHujylB.js","assets/Modelle-CuuF8BGB.js","assets/useSelector-uUwrspuX.js","assets/useMatch-CiyhmkMV.js","assets/search-B5rIIYDK.js","assets/Monitoring-Dh_DGery.js","assets/Homelab-Ba-06aFa.js","assets/HomelabProtokoll-NgNeh7ai.js","assets/Einstellungen-B5hDXuZV.js"])))=>i.map(i=>d[i]); import{a as e,i as t,n,r,s as i,t as a}from"./dist-D4CVSex9.js";import{_ as o,a as s,c,d as l,f as u,g as d,h as f,i as p,l as m,m as h,n as g,o as _,p as v,r as y,s as b,t as x,u as S,v as C,y as w}from"./useSelector-uUwrspuX.js";import{i as T,n as E,r as D,t as O}from"./useMatch-CiyhmkMV.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var ee=e((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m){if(n(c)!==null)m=!0,S||(S=!0,O());else{var t=n(l);t!==null&&ne(x,t.startTime-e)}}}var S=!1,C=-1,w=5,T=-1;function E(){return g?!0:!(e.unstable_now()-Tt&&E());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&ne(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?O():S=!1}}}var O;if(typeof y==`function`)O=function(){y(D)};else if(typeof MessageChannel<`u`){var ee=new MessageChannel,te=ee.port2;ee.port1.onmessage=D,O=function(){te.postMessage(null)}}else O=function(){_(D,0)};function ne(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,ne(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,O()))),r},e.unstable_shouldYield=E,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),te=e(((e,t)=>{t.exports=ee()})),ne=e((e=>{var n=t();function r(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=ne()})),ie=e((e=>{var n=te(),r=t(),i=re();function a(e){var t=`https://react.dev/errors/`+e;if(1be||(e.current=ye[be],ye[be]=null,be--)}function F(e,t){be++,ye[be]=e.current,e.current=t}var Ce=xe(null),we=xe(null),Te=xe(null),Ee=xe(null);function De(e,t){switch(F(Te,t),F(we,e),F(Ce,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?up(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=up(t),e=dp(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}Se(Ce),F(Ce,e)}function Oe(){Se(Ce),Se(we),Se(Te)}function ke(e){var t=e.memoizedState;t!==null&&(sh._currentValue=t.memoizedState,F(Ee,e)),t=Ce.current;var n=dp(t,e.type);t!==n&&(F(we,e),F(Ce,n))}function Ae(e){we.current===e&&(Se(Ce),Se(we)),Ee.current===e&&(Se(Ee),sh._currentValue=ve)}var je,Me;function Ne(e){if(je===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);je=t&&t[1]||``,Me=-1)`:-1>>=0,e===0?32:31-(nt(e)/rt|0)|0}var at=256,ot=262144,st=4194304;function ct(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&-e;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function lt(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=ct(n))):i=ct(o):i=ct(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=ct(n))):i=ct(o)):i=ct(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function ut(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function dt(e,t){t&8&&(t|=t&32);var n=e.entangledLanes;if(n!==0)for(e=e.entanglements,n&=t;0n;n++)t.push(e);return t}function ht(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function gt(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0=mr),_r=` `,vr=!1;function yr(e,t){switch(e){case`keyup`:return fr.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function br(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var xr=!1;function Sr(e,t){switch(e){case`compositionend`:return br(t);case`keypress`:return t.which===32?(vr=!0,_r):null;case`textInput`:return e=t.data,e===_r&&vr?null:e;default:return null}}function Cr(e,t){if(xr)return e===`compositionend`||!pr&&yr(e,t)?(e=Fn(),Pn=Nn=Mn=null,xr=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=Kr(n)}}function Jr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Jr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Yr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Gr(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Gr(e.document)}return t}function Xr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var Zr=kn&&`documentMode`in document&&11>=document.documentMode,Qr=null,$r=null,ei=null,ti=!1;function ni(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ti||Qr==null||Qr!==Gr(r)||(r=Qr,`selectionStart`in r&&Xr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),ei&&Wr(ei,r)||(ei=r,r=Jf($r,`onSelect`),0>=o,i-=o,Qi=1<<32-tt(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),z&&ea(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(i,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(i,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(i,h),z&&ea(i,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(i,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return z&&ea(i,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,i,g,v.value,l),v!==null&&(e&&(_=v.alternate,_!==null&&h.delete(_.key===null?g:_.key)),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(i,e)}),z&&ea(i,g),u}function _(e,r,o,c){if(typeof o==`object`&&o&&o.type===ee&&o.key===null&&o.props.ref===void 0&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case D:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===ee){if(r.tag===7){n(e,r.sibling),c=i(r,o.props.children),co(c,o),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===le&&to(l)===r.type){n(e,r.sibling),c=i(r,o.props),co(c,o),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}o.type===ee?(c=zi(o.props.children,e.mode,c,o.key),co(c,o),c.return=e,e=c):(c=Ri(o.type,o.key,o.props,null,e.mode,c),co(c,o),c.return=e,e=c)}return s(e);case O:a:{for(l=o.key;r!==null;){if(r.key===l){if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=i(r,o.children||[]),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}c=Hi(o,e.mode,c),c.return=e,e=c}return s(e);case le:return o=to(o),_(e,r,o,c)}if(_e(o))return h(e,r,o,c);if(he(o)){if(l=he(o),typeof l!=`function`)throw Error(a(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return _(e,r,so(o),c);if(o.$$typeof===k)return _(e,r,B(e,o),c);lo(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=i(r,o),c.return=e,e=c):(n(e,r),c=Bi(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{oo=0;var i=_(e,t,n,r);return ao=null,i}catch(t){if(t===Ya||t===Za)throw t;var a=Pi(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var fo=uo(!0),po=uo(!1),mo=!1;function ho(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function go(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function _o(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function vo(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,K&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=ji(e),Ai(e,null,n),t}return Di(e,r,t,n),ji(e)}function yo(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,vt(e,n)}}function bo(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var xo=!1;function So(){if(xo){var e=Ba;if(e!==null)throw e}}function V(e,t,n,r){xo=!1;var i=e.updateQueue;mo=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(Y&f)===f:(r&f)===f){f!==0&&f===za&&(xo=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,h=s;f=t;var g=n;switch(h.tag){case 1:if(m=h.payload,typeof m==`function`){d=m.call(g,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=h.payload,f=typeof m==`function`?m.call(g,d,f):m,f==null)break a;d=T({},d,f);break a;case 2:mo=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),od|=o,e.lanes=o,e.memoizedState=d}}function Co(e,t){if(typeof e!=`function`)throw Error(a(191,e));e.call(t)}function wo(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=N.T,s={};s.types=o===null?null:o.types,N.T=s,uc(e,!1,t,n);try{var c=i(),l=N.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?lc(e,t,Ua(c,r),jd(e)):lc(e,t,r,jd(e))}catch(n){lc(e,t,{then:function(){},status:`rejected`,reason:n},jd())}finally{P.p=a,o!==null&&s.types!==null&&(o.types=s.types),N.T=o}}function $s(){}function ec(e,t,n,r){if(e.tag!==5)throw Error(a(476));var i=tc(e).queue;Qs(e,i,t,ve,n===null?$s:function(){return nc(e),n(r)})}function tc(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:ve,baseState:ve,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ds,lastRenderedState:ve},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ds,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function nc(e){var t=tc(e);t.next===null&&(t=e.alternate.memoizedState),lc(e,t.next.queue,{},jd())}function rc(){return Ea(sh)}function ic(){return os().memoizedState}function ac(){return os().memoizedState}function oc(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=jd();e=_o(n);var r=vo(t,e,n);r!==null&&(Pd(r,t,n),yo(r,t,n)),t={cache:Ma()},e.payload=t;return}t=t.return}}function sc(e,t,n){var r=jd();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},dc(e)?fc(t,n):(n=Oi(e,t,n,r),n!==null&&(Pd(n,e,r),pc(n,t,r)))}function cc(e,t,n){lc(e,t,n,jd())}function lc(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(dc(e))fc(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,Ur(s,o))return Di(e,t,i,0),q===null&&Ei(),!1}catch{}if(n=Oi(e,t,i,r),n!==null)return Pd(n,e,r),pc(n,t,r),!0}return!1}function uc(e,t,n,r){if(r={lane:2,revertLane:Pf(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},dc(e)){if(t)throw Error(a(479))}else t=Oi(e,n,r,2),t!==null&&Pd(t,e,2)}function dc(e){var t=e.alternate;return e===H||t!==null&&t===H}function fc(e,t){Wo=Uo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function pc(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,vt(e,n)}}var mc={readContext:Ea,use:ls,useCallback:Xo,useContext:Xo,useEffect:Xo,useImperativeHandle:Xo,useLayoutEffect:Xo,useInsertionEffect:Xo,useMemo:Xo,useReducer:Xo,useRef:Xo,useState:Xo,useDebugValue:Xo,useDeferredValue:Xo,useTransition:Xo,useSyncExternalStore:Xo,useId:Xo,useHostTransitionStatus:Xo,useFormState:Xo,useActionState:Xo,useOptimistic:Xo,useMemoCache:Xo,useCacheRefresh:Xo,useEffectEvent:Xo},hc={readContext:Ea,use:ls,useCallback:function(e,t){return as().memoizedState=[e,t===void 0?null:t],e},useContext:Ea,useEffect:zs,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),Ls(4194308,4,Gs.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Ls(4194308,4,e,t)},useInsertionEffect:function(e,t){Ls(4,2,e,t)},useMemo:function(e,t){var n=as();t=t===void 0?null:t;var r=e();if(Go){et(!0);try{e()}finally{et(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=as();if(n!==void 0){var i=n(t);if(Go){et(!0);try{n(t)}finally{et(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=sc.bind(null,H,e),[r.memoizedState,e]},useRef:function(e){var t=as();return e={current:e},t.memoizedState=e},useState:function(e){e=xs(e);var t=e.queue,n=cc.bind(null,H,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:qs,useDeferredValue:function(e,t){return Xs(as(),e,t)},useTransition:function(){var e=xs(!1);return e=Qs.bind(null,H,e.queue,!0,!1),as().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=H,i=as();if(z){if(n===void 0)throw Error(a(407));n=n()}else{if(n=t(),q===null)throw Error(a(349));Y&127||gs(r,t,n)}i.memoizedState=n;var o={value:n,getSnapshot:t};return i.queue=o,zs(vs.bind(null,r,o,e),[e]),r.flags|=2048,Fs(9,{destroy:void 0},_s.bind(null,r,o,n,t),null),n},useId:function(){var e=as(),t=q.identifierPrefix;if(z){var n=$i,r=Qi;n=(r&~(1<<32-tt(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=Ko++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(i,{is:r.is}):s.createElement(i)}}o[Tt]=t,o[I]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(np(o,i,r),i){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&pl(t)}}return W(t),t.subtreeFlags&=-33554433,ml(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&pl(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(a(166));if(e=Te.current,fa(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,i=aa,i!==null)switch(i.tag){case 27:case 5:r=i.memoizedProps}e[Tt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||ep(e.nodeValue,n)),e||la(t,!0)}else e=lp(e).createTextNode(r),e[Tt]=t,t.stateNode=e}return W(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=fa(t),n!==null){if(e===null){if(!r)throw Error(a(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(a(557));e[Tt]=t}else pa(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;W(t),e=!1}else n=ma(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(Io(t),t):(Io(t),null);if(t.flags&128)throw Error(a(558))}return W(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(i=fa(t),r!==null&&r.dehydrated!==null){if(e===null){if(!i)throw Error(a(318));if(i=t.memoizedState,i=i===null?null:i.dehydrated,!i)throw Error(a(317));i[Tt]=t}else pa(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;W(t),i=!1}else i=ma(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=i),i=!0;if(!i)return t.flags&256?(Io(t),t):(Io(t),null)}return Io(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,i=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(i=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==i&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),gl(t,t.updateQueue),W(t),null);case 4:return Oe(),e===null&&Wf(t.stateNode.containerInfo),t.flags|=67108864,W(t),null;case 10:return ba(t.type),W(t),null;case 19:if(zo(t),r=t.memoizedState,r===null)return W(t),null;if(i=!!(t.flags&128),o=r.rendering,o===null){if(i)_l(r,!1);else{if(ad!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=Bo(e),o!==null){for(t.flags|=128,_l(r,!1),e=o.updateQueue,t.updateQueue=e,gl(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Li(n,e),n=n.sibling;return Ro(t,Lo.current&1|2),z&&ea(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&Ue()>gd&&(t.flags|=128,i=!0,_l(r,!1),t.lanes=4194304)}}else{if(!i){if(e=Bo(o),e!==null){if(t.flags|=128,i=!0,e=e.updateQueue,t.updateQueue=e,gl(t,e),_l(r,!0),r.tail===null&&r.tailMode!==`collapsed`&&r.tailMode!==`visible`&&!o.alternate&&!z)return W(t),null}else 2*Ue()-r.renderingStartTime>gd&&n!==536870912&&(t.flags|=128,i=!0,_l(r,!1),t.lanes=4194304)}r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}if(r.tail!==null){e=r.tail;a:{for(n=e;n!==null;){if(n.alternate!==null){n=!1;break a}n=n.sibling}n=!0}return r.rendering=e,r.tail=e.sibling,r.renderingStartTime=Ue(),e.sibling=null,o=Lo.current,o=i?o&1|2:o&1,r.tailMode===`visible`||r.tailMode===`collapsed`||!n||z?Ro(t,o):(n=o,F(Ao,t),F(Lo,n),jo===null&&(jo=t)),z&&ea(t,r.treeForkCount),e}return W(t),null;case 22:case 23:return Io(t),ko(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(W(t),t.subtreeFlags&6&&(t.flags|=8192)):W(t),n=t.updateQueue,n!==null&&gl(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&Se(Ga),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),ba(ja),W(t),null;case 25:return null;case 30:return t.flags|=33554432,W(t),null}throw Error(a(156,t.tag))}function yl(e,t){switch(ra(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ba(ja),Oe(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Ae(t),null;case 31:if(t.memoizedState!==null){if(Io(t),t.alternate===null)throw Error(a(340));pa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Io(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(a(340));pa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return zo(t),e=t.flags,e&65536?(t.flags=e&-65537|128,e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null),t.flags|=4,t):null;case 4:return Oe(),null;case 10:return ba(t.type),null;case 22:case 23:return Io(t),ko(),e!==null&&Se(Ga),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ba(ja),null;case 25:return null;default:return null}}function bl(e,t){switch(ra(t),t.tag){case 3:ba(ja),Oe();break;case 26:case 27:case 5:Ae(t);break;case 4:Oe();break;case 31:t.memoizedState!==null&&Io(t);break;case 13:Io(t);break;case 19:zo(t);break;case 10:ba(t.type);break;case 22:case 23:Io(t),ko(),e!==null&&Se(Ga);break;case 24:ba(ja)}}function xl(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Z(t,t.return,e)}}function Sl(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Z(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Z(t,t.return,e)}}function Cl(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{wo(t,n)}catch(t){Z(e,e.return,t)}}}function wl(e,t,n){n.props=Sc(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Z(e,t,n)}}function Tl(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:var i=e.stateNode,a=yi(e.memoizedProps,i);(i.ref===null||i.ref.name!==a)&&(i.ref=Pp(a)),r=i.ref;break;case 7:if(e.stateNode===null){var o=new Fp(e);p(e.child,!1,Qp,o,void 0,void 0),e.stateNode=o}r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Z(e,t,n)}}function El(e,t){var n=e.ref,r=e.refCleanup;if(n!==null){if(typeof r==`function`)try{r()}catch(n){Z(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Z(e,t,n)}else n.current=null}}function Dl(e,t){if((e.tag===5||e.tag===27||e.tag===6)&&e.alternate===null&&t!==null)for(var n=0;n title`))),np(r,t,n),r[Tt]=e,Rt(r),t=r;break a;case`link`:if(o=Gm(`link`,`href`,i).get(t+(n.href||``))){for(s=0;sg&&(o=g,g=h,h=o);var _=qr(s,h),v=qr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,N.T=null,n=wd,wd=null;var o=bd,s=Sd;if(yd=0,xd=bd=null,Sd=0,K&6)throw Error(a(331));var c=K;if(K|=4,Yu(o.current),Vu(o,o.current,s,n),K=c,Df(0,!1),$e&&typeof $e.onPostCommitFiberRoot==`function`)try{$e.onPostCommitFiberRoot(Qe,o)}catch{}return!0}finally{P.p=i,N.T=r,uf(e,t)}}function pf(e,t,n){t=Wi(n,t),t=Oc(e.stateNode,t,2),e=vo(e,t,2),e!==null&&(ht(e,2),Ef(e))}function Z(e,t,n){if(e.tag===3)pf(e,e,n);else for(;t!==null;){if(t.tag===3){pf(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(vd===null||!vd.has(r))){e=Wi(n,e),n=kc(2),r=vo(t,n,2),r!==null&&(Ac(n,r,t,e),ht(r,2),Ef(r));break}}t=t.return}}function mf(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new $u;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(rd=!0,i.add(n),e=hf.bind(null,e,t,n),t.then(e,e))}function hf(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,q===e&&(Y&n)===n&&(ad===4||ad===3&&(Y&62914560)===Y&&300>Ue()-md?K&2?cd|=n:Vd(e,0):cd|=n,ud===Y&&(ud=0)),Ef(e)}function gf(e,t){t===0&&(t=pt()),e=ki(e,t),e!==null&&(ht(e,t),Ef(e))}function _f(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),gf(e,n)}function vf(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(a(314))}r!==null&&r.delete(t),gf(e,n)}function yf(e,t){return ze(e,t)}var bf=null,xf=null,Sf=!1,Cf=!1,wf=!1,Tf=0;function Ef(e){e!==xf&&e.next===null&&(xf===null?bf=xf=e:xf=xf.next=e),Cf=!0,Sf||(Sf=!0,Nf())}function Df(e,t){if(!wf&&Cf){wf=!0;do for(var n=!1,r=bf;r!==null;){if(!t){if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-tt(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,Mf(r,a))}else a=Y,a=lt(r,r===q?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||ut(r,a)||(n=!0,Mf(r,a))}r=r.next}while(n);wf=!1}}function Of(){kf()}function kf(){Cf=Sf=!1;var e=0;Tf!==0&&hp()&&(e=Tf);for(var t=Ue(),n=null,r=bf;r!==null;){var i=r.next,a=Af(r,t);a===0?(r.next=null,n===null?bf=i:n.next=i,i===null&&(xf=n)):(n=r,(e!==0||a&3)&&(Cf=!0)),r=i}yd!==0&&yd!==5||Df(e,!1),Tf!==0&&(Tf=0)}function Af(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&ap(d)&&(c=c.responseEnd,o+=u*(c$m){s.length=o;break}f=new Promise(jp.bind(f)),s.push(f)}}}if(0`u`?null:document;function Tm(e,t,n){var r=wm;if(r&&typeof t==`string`&&t){var i=an(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),ym.has(i)||(ym.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),np(t,`link`,e),Rt(t),r.head.appendChild(t)))}}function Em(e){xm.D(e),Tm(`dns-prefetch`,e,null)}function Dm(e,t){xm.C(e,t),Tm(`preconnect`,e,t)}function Om(e,t,n){xm.L(e,t,n);var r=wm;if(r&&e&&t){var i=`link[rel="preload"][as="`+an(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+an(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+an(n.imageSizes)+`"]`)):i+=`[href="`+an(e)+`"]`;var a=i;switch(t){case`style`:a=Pm(e);break;case`script`:a=Rm(e)}if(!(vm.has(a)||(e=T({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),vm.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Fm(a))||t===`script`&&r.querySelector(zm(a))))){var o=r.createElement(`link`);np(o,`link`,e),t===`style`&&(o[Mt]=!0,o.onload=o.onerror=function(){zt(o)}),Rt(o),r.head.appendChild(o)}}}function km(e,t){xm.m(e,t);var n=wm;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+an(r)+`"][href="`+an(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Rm(e)}if(!vm.has(a)&&(e=T({rel:`modulepreload`,href:e},t),vm.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(zm(a)))return}r=n.createElement(`link`),np(r,`link`,e),Rt(r),n.head.appendChild(r)}}}function Am(e,t,n){xm.S(e,t,n);var r=wm;if(r&&e){var i=Lt(r).hoistableStyles,a=Pm(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Fm(a)))s.loading=5;else{e=T({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=vm.get(a))&&Hm(e,n);var c=o=r.createElement(`link`);Rt(c),np(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Vm(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function jm(e,t){xm.X(e,t);var n=wm;if(n&&e){var r=Lt(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=T({src:e,async:!0},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),Rt(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Mm(e,t){xm.M(e,t);var n=wm;if(n&&e){var r=Lt(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=T({src:e,async:!0,type:`module`},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),Rt(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Nm(e,t,n,r){var i=(i=Te.current)?bm(i):null;if(!i)throw Error(a(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(n=Pm(n.href),t=Lt(i).hoistableStyles,r=t.get(n),r||(r={type:`style`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Pm(n.href);var o=Lt(i).hoistableStyles,s=o.get(e);if(s||(i=i.ownerDocument||i,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=i.querySelector(Fm(e)))?o._p||(s.instance=o,s.state.loading=5):(o=vm.get(e),o||(o={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},vm.set(e,o)),Lm(i,e,o,s.state))),t&&r===null)throw Error(a(528,``));return s}if(t&&r!==null)throw Error(a(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(n=Rm(n),t=Lt(i).hoistableScripts,r=t.get(n),r||(r={type:`script`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(a(444,e))}}function Pm(e){return`href="`+an(e)+`"`}function Fm(e){return`link[rel="stylesheet"][`+e+`]`}function Im(e){return T({},e,{"data-precedence":e.precedence,precedence:null})}function Lm(e,t,n,r){if(t=e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)){if(!0!==t[Mt]){r.loading=1;return}}else t=e.createElement(`link`),t[Mt]=!0,t.onload=t.onerror=zt.bind(null,t),np(t,`link`,n),Rt(t),e.head.appendChild(t);r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2})}function Rm(e){return`[src="`+an(e)+`"]`}function zm(e){return`script[async]`+e}function Bm(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+an(n.href)+`"]`);if(r)return t.instance=r,Rt(r),r;var i=T({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),Rt(r),np(r,`style`,i),Vm(r,n.precedence,e),t.instance=r;case`stylesheet`:i=Pm(n.href);var o=e.querySelector(Fm(i));if(o)return t.state.loading|=4,t.instance=o,Rt(o),o;r=Im(n),(i=vm.get(i))&&Hm(r,i),o=(e.ownerDocument||e).createElement(`link`),Rt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),np(o,`link`,r),t.state.loading|=4,Vm(o,n.precedence,e),t.instance=o;case`script`:return o=Rm(n.src),(i=e.querySelector(zm(o)))?(t.instance=i,Rt(i),i):(r=n,(i=vm.get(o))&&(r=T({},n),Um(r,i)),e=e.ownerDocument||e,i=e.createElement(`script`),Rt(i),np(i,`link`,r),e.head.appendChild(i),t.instance=i);case`void`:return null;default:throw Error(a(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Vm(r,n.precedence,e));return t.instance}function Vm(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function qm(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Jm(e,t){return e===`img`&&t.src!=null&&t.src!==``&&t.onLoad==null&&t.loading!==`lazy`}function Ym(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Xm(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio==`number`?devicePixelRatio:1)*.25}function Zm(e,t){typeof t.decode==`function`&&(e.imgCount++,t.complete||(e.imgBytes+=Xm(t),e.suspenseyImages.push(t)),e=rh.bind(e),t.decode().then(e,e))}function Qm(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Pm(r.href),a=t.querySelector(Fm(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=nh.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,Rt(a);return}a=t.ownerDocument||t,r=Im(r),(i=vm.get(i))&&Hm(r,i),a=a.createElement(`link`),Rt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),np(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=nh.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var $m=0;function eh(e,t){return e.stylesheets&&e.count===0&&ah(e,e.stylesheets),0$m?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function th(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)ah(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function nh(){this.count--,th(this)}function rh(){this.imgCount--,th(this)}var ih=null;function ah(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,ih=new Map,t.forEach(oh,e),ih=null,nh.call(e))}function oh(e,t){if(!(t.state.loading&4)){var n=ih.get(e);if(n)var r=n.get(null);else{n=new Map,ih.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=ie()})),k=i(t(),1),A=r(),oe=k.createContext(void 0),se=e=>{let t=k.useContext(oe);if(e)return e;if(!t)throw Error(`No QueryClient set, use QueryClientProvider to set one`);return t},ce=({client:e,children:t})=>(k.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,A.jsx)(oe.Provider,{value:e,children:t})),le={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},ue=new class{#e=le;setTimeoutProvider(e){this.#e=e}setTimeout(e,t){return this.#e.setTimeout(e,t)}clearTimeout(e){this.#e.clearTimeout(e)}setInterval(e,t){return this.#e.setInterval(e,t)}clearInterval(e){this.#e.clearInterval(e)}};function de(e){setTimeout(e,0)}var fe=typeof window>`u`||`Deno`in globalThis;function j(){}function pe(e,t){return typeof e==`function`?e(t):e}function me(e){return typeof e==`number`&&e>=0&&e!==1/0}function he(e,t){return Math.max(e+(t||0)-Date.now(),0)}function M(e,t){return typeof e==`function`?e(t):e}function ge(e,t){let{type:n=`all`,exact:r,fetchStatus:i,predicate:a,queryKey:o,stale:s}=e;if(o){if(r){if(t.queryHash!==N(o,t.options))return!1}else if(!ve(t.queryKey,o))return!1}if(n!==`all`){let e=t.isActive();if(n===`active`&&!e||n===`inactive`&&e)return!1}return!(typeof s==`boolean`&&t.isStale()!==s||i&&i!==t.state.fetchStatus||a&&!a(t))}function _e(e,t){let{exact:n,status:r,predicate:i,mutationKey:a}=e;if(a){if(!t.options.mutationKey)return!1;if(n){if(P(t.options.mutationKey)!==P(a))return!1}else if(!ve(t.options.mutationKey,a))return!1}return!(r&&t.state.status!==r||i&&!i(t))}function N(e,t){return(t?.queryKeyHashFn||P)(e)}function P(e){return JSON.stringify(e,(e,t)=>F(t)?Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{}):t)}function ve(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(e&&t&&typeof e==`object`&&typeof t==`object`){if(Array.isArray(e)&&Array.isArray(t)){if(t.length>e.length)return!1;for(let n=0;n500)return t;let r=Se(e)&&Se(t);if(!r&&!(F(e)&&F(t)))return t;let i=(r?e:Object.keys(e)).length,a=r?t:Object.keys(t),o=a.length,s=r?Array(o):{},c=0;for(let l=0;l{ue.setTimeout(t,e)})}function Te(e,t,n){return typeof n.structuralSharing==`function`?n.structuralSharing(e,t):n.structuralSharing===!1?t:be(e,t)}function Ee(e,t,n=0){let r=[...e,t];return n&&r.length>n?r.slice(1):r}function De(e,t,n=0){let r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}var Oe=Symbol();function ke(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:!e.queryFn||e.queryFn===Oe?()=>Promise.reject(Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}function Ae(e,t){return typeof e==`function`?e(...t):!!e}function je(e,t,n){let r=!1,i;return Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(i??=t(),r?i:(r=!0,i.aborted?n():i.addEventListener(`abort`,n,{once:!0}),i))}),e}var Me=()=>fe,Ne=()=>Me(),Pe=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},Fe=new class extends Pe{#e;#t;#n;constructor(){super(),this.#n=e=>{if(typeof window<`u`&&window.addEventListener){let t=()=>e();return window.addEventListener(`visibilitychange`,t,!1),()=>{window.removeEventListener(`visibilitychange`,t)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(e=>{typeof e==`boolean`?this.setFocused(e):this.onFocus()})}setFocused(e){this.#e!==e&&(this.#e=e,this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return typeof this.#e==`boolean`?this.#e:globalThis.document?.visibilityState!==`hidden`}},Ie=de;function Le(){let e=[],t=0,n=e=>{e()},r=e=>{e()},i=Ie,a=r=>{t?e.push(r):i(()=>{n(r)})},o=()=>{let t=e;e=[],t.length&&i(()=>{r(()=>{t.forEach(e=>{n(e)})})})};return{batch:e=>{let n;t++;try{n=e()}finally{t--,t||o()}return n},batchCalls:e=>(...t)=>{a(()=>{e(...t)})},schedule:a,setNotifyFunction:e=>{n=e},setBatchNotifyFunction:e=>{r=e},setScheduler:e=>{i=e}}}var Re=Le(),ze=new class extends Pe{#e=!0;#t;#n;constructor(){super(),this.#n=e=>{if(typeof window<`u`&&window.addEventListener){let t=()=>e(!0),n=()=>e(!1);return window.addEventListener(`online`,t,!1),window.addEventListener(`offline`,n,!1),()=>{window.removeEventListener(`online`,t),window.removeEventListener(`offline`,n)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(this.setOnline.bind(this))}setOnline(e){this.#e!==e&&(this.#e=e,this.listeners.forEach(t=>{t(e)}))}isOnline(){return this.#e}};function Be(e){return Math.min(1e3*2**e,3e4)}function Ve(e){return(e??`online`)!==`online`||ze.isOnline()}var He=class extends Error{constructor(e){super(`CancelledError`),this.revert=e?.revert,this.silent=e?.silent}};function Ue(e){let t=!1,n=0,r,i=`pending`,a,o,s=new Promise((e,t)=>{a=e,o=t});s.catch(j);let c=()=>i!==`pending`,l=t=>{if(!c()){let n=new He(t);h(n),e.onCancel?.(n)}},u=()=>{t=!0},d=()=>{t=!1},f=()=>Fe.isFocused()&&(e.networkMode===`always`||ze.isOnline())&&e.canRun(),p=()=>Ve(e.networkMode)&&e.canRun(),m=e=>{c()||(r?.(),i=`resolved`,a(e))},h=e=>{c()||(r?.(),i=`rejected`,o(e))},g=()=>new Promise(t=>{r=e=>{(c()||f())&&t(e)},e.onPause?.()}).then(()=>{r=void 0,c()||e.onContinue?.()}),_=()=>{if(c())return;let r,i=n===0?e.initialPromise:void 0;try{r=i??e.fn()}catch(e){r=Promise.reject(e)}Promise.resolve(r).then(m).catch(r=>{if(c())return;let i=e.retry??(Ne()?0:3),a=e.retryDelay??Be,o=typeof a==`function`?a(n,r):a,s=i===!0||typeof i==`number`&&nf()?void 0:g()).then(()=>{t?h(r):_()})})};return{promise:s,status:()=>i,cancel:l,continue:()=>(r?.(),s),cancelRetry:u,continueRetry:d,canStart:p,start:()=>(p()?_():g().then(_),s)}}var We=class{#e;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),me(this.gcTime)&&(this.#e=ue.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(Ne()?1/0:3e5))}clearGcTimeout(){this.#e!==void 0&&(ue.clearTimeout(this.#e),this.#e=void 0)}};function Ge(e){return{onFetch:(t,n)=>{let r=t.options,i=t.fetchOptions?.meta?.fetchMore?.direction,a=t.state.data?.pages||[],o=t.state.data?.pageParams||[],s={pages:[],pageParams:[]},c=0,l=async()=>{let n=!1,l=e=>{je(e,()=>t.signal,()=>n=!0)},u=ke(t.options,t.fetchOptions),d=async(e,r,i)=>{if(n)return Promise.reject(t.signal.reason);if(r==null&&e.pages.length)return Promise.resolve(e);let a=(()=>{let e={client:t.client,queryKey:t.queryKey,pageParam:r,direction:i?`backward`:`forward`,meta:t.options.meta};return l(e),e})(),o=await u(a),{maxPages:s}=t.options,c=i?De:Ee;return{pages:c(e.pages,o,s),pageParams:c(e.pageParams,r,s)}};if(i&&a.length){let e=i===`backward`,t=e?qe:Ke,n={pages:a,pageParams:o};s=await d(n,t(r,n),e)}else{let t=e??a.length;do{let e=c===0?o[0]??r.initialPageParam:Ke(r,s);if(c>0&&e==null)break;s=await d(s,e),c++}while(ct.options.persister?.(l,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n):l}}}function Ke(e,{pages:t,pageParams:n}){let r=t.length-1;return t.length>0?e.getNextPageParam(t[r],t,n[r],n):void 0}function qe(e,{pages:t,pageParams:n}){return t.length>0?e.getPreviousPageParam?.(t[0],t,n[0],n):void 0}var Je=class extends We{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e){super(),this.#s=!1,this.#o=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#i=e.client,this.#r=this.#i.getQueryCache(),this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#t=Ze(this.options),this.state=e.state??this.#t,this.scheduleGc()}get meta(){return this.options.meta}get queryType(){return this.#e}get promise(){return this.#a?.promise}setOptions(e){if(this.options={...this.#o,...e},e?._type&&(this.#e=e._type),this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){let e=Ze(this.options);e.data!==void 0&&(this.setState(Xe(e.data,e.dataUpdatedAt)),this.#t=e)}}optionalRemove(){!this.observers.length&&this.state.fetchStatus===`idle`&&this.#r.remove(this)}setData(e,t){let n=Te(this.state.data,e,this.options);return this.#c({data:n,type:`success`,dataUpdatedAt:t?.updatedAt,manual:t?.manual}),n}setState(e){this.#c({type:`setState`,state:e})}cancel(e){let t=this.#a?.promise;return this.#a?.cancel(e),t?t.then(j).catch(j):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}get resetState(){return this.#t}reset(){this.destroy(),this.setState(this.resetState)}isActive(){return this.observers.some(e=>M(e.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===Oe||!this.isFetched()}isFetched(){return this.state.dataUpdateCount+this.state.errorUpdateCount>0}isStatic(){return this.getObserversCount()>0&&this.observers.some(e=>M(e.options.staleTime,this)===`static`)}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(e=0){return this.state.data===void 0?!0:e===`static`?!1:this.state.isInvalidated?!0:!he(this.state.dataUpdatedAt,e)}onFocus(){this.observers.find(e=>e.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#a?.continue()}onOnline(){this.observers.find(e=>e.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#a?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#r.notify({type:`observerAdded`,query:this,observer:e}))}removeObserver(e){let t=this.observers.indexOf(e);t!==-1&&(this.observers.splice(t,1),this.observers.length||(this.#a&&(this.#s||this.state.fetchStatus===`paused`&&this.state.status===`pending`?this.#a.cancel({revert:!0}):this.#a.cancelRetry()),this.scheduleGc()),this.#r.notify({type:`observerRemoved`,query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.#c({type:`invalidate`})}async fetch(e,t){if(this.state.fetchStatus!==`idle`&&this.#a?.status()!==`rejected`){if(this.state.data!==void 0&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#a)return this.#a.continueRetry(),this.#a.promise}if(e&&this.setOptions(e),!this.options.queryFn){let e=this.observers.find(e=>e.options.queryFn);e&&this.setOptions(e.options)}let n=new AbortController,r=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(this.#s=!0,n.signal)})},i=()=>{let e=ke(this.options,t),n=(()=>{let e={client:this.#i,queryKey:this.queryKey,meta:this.meta};return r(e),e})();return this.#s=!1,this.options.persister?this.options.persister(e,n,this):e(n)},a=(()=>{let e={fetchOptions:t,options:this.options,queryKey:this.queryKey,client:this.#i,state:this.state,fetchFn:i};return r(e),e})();(this.#e===`infinite`?Ge(this.options.pages):this.options.behavior)?.onFetch(a,this),this.#n=this.state,(this.state.fetchStatus===`idle`||this.state.fetchMeta!==a.fetchOptions?.meta)&&this.#c({type:`fetch`,meta:a.fetchOptions?.meta});let o=this.#a=Ue({initialPromise:t?.initialPromise,fn:a.fetchFn,onCancel:e=>{e instanceof He&&e.revert&&this.setState({...this.#n,fetchStatus:`idle`}),n.abort()},onFail:(e,t)=>{this.#c({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#c({type:`pause`})},onContinue:()=>{this.#c({type:`continue`})},retry:a.options.retry,retryDelay:a.options.retryDelay,networkMode:a.options.networkMode,canRun:()=>!0});try{let e=await o.start();if(e===void 0)throw Error(`${this.queryHash} data is undefined`);return this.setData(e),this.#r.config.onSuccess?.(e,this),this.#r.config.onSettled?.(e,this.state.error,this),e}catch(e){if(e instanceof He){if(e.silent)return this.#a.promise;if(e.revert){if(this.state.data===void 0)throw e;return this.state.data}}throw this.#c({type:`error`,error:e}),this.#r.config.onError?.(e,this),this.#r.config.onSettled?.(this.state.data,e,this),e}finally{this.#a===o&&(this.#a=void 0),this.scheduleGc()}}#c(e){let t=t=>{switch(e.type){case`failed`:return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case`pause`:return{...t,fetchStatus:`paused`};case`continue`:return{...t,fetchStatus:`fetching`};case`fetch`:return{...t,...Ye(t.data,this.options),fetchMeta:e.meta??null};case`success`:let n={...t,...Xe(e.data,e.dataUpdatedAt),dataUpdateCount:t.dataUpdateCount+1,...!e.manual&&{fetchStatus:`idle`,fetchFailureCount:0,fetchFailureReason:null}};return this.#n=e.manual?n:void 0,n;case`error`:let r=e.error;return{...t,error:r,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:r,fetchStatus:`idle`,status:`error`,isInvalidated:!0};case`invalidate`:return{...t,isInvalidated:!0};case`setState`:return{...t,...e.state}}};this.state=t(this.state),Re.batch(()=>{this.observers.slice().forEach(e=>{e.onQueryUpdate()}),this.#r.notify({query:this,type:`updated`,action:e})})}};function Ye(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:Ve(t.networkMode)?`fetching`:`paused`,...e===void 0&&{error:null,status:`pending`}}}function Xe(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:`success`}}function Ze(e){let t=typeof e.initialData==`function`?e.initialData():e.initialData,n=t!==void 0,r=n?typeof e.initialDataUpdatedAt==`function`?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?r??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?`success`:`pending`,fetchStatus:`idle`}}var Qe=class extends Pe{#e;#t=void 0;#n=void 0;#r=void 0;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p=new Set;constructor(e,t){super(),this.options=t,this.#e=e,this.#o=null,this.bindMethods(),this.setOptions(t)}bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),et(this.#t,this.options)?this.#m():this.updateResult(),this.#y())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return tt(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return tt(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#b(),this.#x(),this.#t.removeObserver(this)}setOptions(e){let t=this.options,n=this.#t;if(this.options=this.#e.defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!=`boolean`&&typeof this.options.enabled!=`function`&&typeof M(this.options.enabled,this.#t)!=`boolean`)throw Error(`Expected enabled to be a boolean or a callback that returns a boolean`);this.#S(),this.#t.setOptions(this.options),t._defaulted&&!xe(this.options,t)&&this.#e.getQueryCache().notify({type:`observerOptionsUpdated`,query:this.#t,observer:this});let r=this.hasListeners();r&&nt(this.#t,n,this.options,t)&&this.#m(),this.updateResult(),r&&(this.#t!==n||M(this.options.enabled,this.#t)!==M(t.enabled,this.#t)||M(this.options.staleTime,this.#t)!==M(t.staleTime,this.#t))&&this.#g();let i=this.#_();r&&(this.#t!==n||M(this.options.enabled,this.#t)!==M(t.enabled,this.#t)||i!==this.#f)&&this.#v(i)}getOptimisticResult(e){let t=this.#e.getQueryCache().build(this.#e,e),n=this.createResult(t,e);return xe(this.getCurrentResult(),n)||(this.#r=n,this.#a=this.options,this.#i=this.#t.state),n}getCurrentResult(){return this.#r}trackResult(e,t){return new Proxy(e,{get:(e,n)=>(this.trackProp(n),t?.(n),Reflect.get(e,n))})}trackProp(e){this.#p.add(e)}getCurrentQuery(){return this.#t}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#e.defaultQueryOptions(e),n=this.#e.getQueryCache().build(this.#e,t),r=()=>{},i,a=new Promise(e=>{i=e,r=this.#e.getQueryCache().subscribe(i=>{i.type===`updated`&&i.query.queryHash===n.queryHash&&n.state.data!==void 0&&(r(),e(this.createResult(n,t)))})});return Promise.race([n.fetch().then(()=>{let e=this.createResult(n,t);return i?.(e),e}).finally(()=>{r()}),a])}fetch(e){return this.#m({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#r))}#m(e){this.#S();let t=this.#t.fetch(this.options,e);return e?.throwOnError||(t=t.catch(j)),t}#h(e){return!Ne()&&M(this.options.enabled,this.#t)!==!1&&me(e)}#g(){this.#b();let e=M(this.options.staleTime,this.#t);if(this.#r.isStale||!this.#h(e))return;let t=he(this.#r.dataUpdatedAt,e)+1;this.#u=ue.setTimeout(()=>{this.#r.isStale||this.updateResult()},t)}#_(){return M(this.options.refetchInterval,this.#t)??!1}#v(e){this.#x(),this.#f=e,this.#f!==0&&this.#h(this.#f)&&(this.#d=ue.setInterval(()=>{(this.options.refetchIntervalInBackground||Fe.isFocused())&&this.#m()},this.#f))}#y(){this.#g(),this.#v(this.#_())}#b(){this.#u!==void 0&&(ue.clearTimeout(this.#u),this.#u=void 0)}#x(){this.#d!==void 0&&(ue.clearInterval(this.#d),this.#d=void 0)}createResult(e,t){let n=this.#t,r=this.options,i=this.#r,a=this.#i,o=this.#a,s=e===n?this.#n:e.state,{state:c}=e,l={...c},u=!1,d;if(t._optimisticResults){let i=this.hasListeners(),a=!i&&et(e,t),o=i&&nt(e,n,t,r);(a||o)&&(l={...l,...Ye(c.data,e.options)}),t._optimisticResults===`isRestoring`&&(l.fetchStatus=`idle`)}let{error:f,errorUpdatedAt:p,status:m}=l;d=l.data;let h=!1;if(t.placeholderData!==void 0&&d===void 0&&m===`pending`){let e;i?.isPlaceholderData&&t.placeholderData===o?.placeholderData?(e=i.data,h=!0):e=typeof t.placeholderData==`function`?t.placeholderData(this.#l?.state.data,this.#l):t.placeholderData,e!==void 0&&(m=`success`,d=Te(i?.data,e,t),u=!0)}if(t.select&&d!==void 0&&!h){if(i&&d===a?.data&&t.select===this.#s)d=this.#c;else try{this.#s=t.select,d=t.select(d),d=Te(i?.data,d,t),this.#c=d,this.#o=null}catch(e){this.#o=e}}else d===void 0&&(this.#o=null);this.#o&&(f=this.#o,d=this.#c,p=Date.now(),m=`error`,u=!1);let g=l.fetchStatus===`fetching`,_=m===`pending`,v=m===`error`,y=_&&g,b=d!==void 0;return{status:m,fetchStatus:l.fetchStatus,isPending:_,isSuccess:m===`success`,isError:v,isInitialLoading:y,isLoading:y,data:d,dataUpdatedAt:l.dataUpdatedAt,error:f,errorUpdatedAt:p,failureCount:l.fetchFailureCount,failureReason:l.fetchFailureReason,errorUpdateCount:l.errorUpdateCount,isFetched:e.isFetched(),isFetchedAfterMount:l.dataUpdateCount>s.dataUpdateCount||l.errorUpdateCount>s.errorUpdateCount,isFetching:g,isRefetching:g&&!_,isLoadingError:v&&!b,isPaused:l.fetchStatus===`paused`,isPlaceholderData:u,isRefetchError:v&&b,isStale:rt(e,t),refetch:this.refetch,isEnabled:M(t.enabled,e)!==!1}}updateResult(){let e=this.#r,t=this.createResult(this.#t,this.options);if(this.#i=this.#t.state,this.#a=this.options,this.#i.data!==void 0&&(this.#l=this.#t),xe(t,e))return;this.#r=t;let n=(()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,n=typeof t==`function`?t():t;if(n===`all`||!n&&!this.#p.size)return!0;let r=new Set(n??this.#p);return this.options.throwOnError&&r.add(`error`),Object.keys(this.#r).some(t=>{let n=t;return this.#r[n]!==e[n]&&r.has(n)})})();Re.batch(()=>{n&&this.listeners.forEach(e=>{e(this.#r)}),this.#e.getQueryCache().notify({query:this.#t,type:`observerResultsUpdated`})})}#S(){let e=this.#e.getQueryCache().build(this.#e,this.options);if(e===this.#t)return;let t=this.#t;this.#t=e,this.#n=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#y()}};function $e(e,t){return M(t.enabled,e)!==!1&&e.state.data===void 0&&(e.state.status!==`error`||M(t.retryOnMount,e)!==!1)}function et(e,t){return $e(e,t)||e.state.data!==void 0&&tt(e,t,t.refetchOnMount)}function tt(e,t,n){if(M(t.enabled,e)!==!1&&M(t.staleTime,e)!==`static`){let r=M(n,e);return r===`always`||r!==!1&&rt(e,t)}return!1}function nt(e,t,n,r){return(e!==t||M(r.enabled,e)===!1)&&(!n.suspense||e.state.status!==`error`)&&rt(e,n)}function rt(e,t){return M(t.enabled,e)!==!1&&e.isStaleByTime(M(t.staleTime,e))}var it=class extends We{#e;#t;#n;#r;constructor(e){super(),this.#e=e.client,this.mutationId=e.mutationId,this.#n=e.mutationCache,this.#t=[],this.state=e.state||at(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#t.includes(e)||(this.#t.push(e),this.clearGcTimeout(),this.#n.notify({type:`observerAdded`,mutation:this,observer:e}))}removeObserver(e){this.#t=this.#t.filter(t=>t!==e),this.scheduleGc(),this.#n.notify({type:`observerRemoved`,mutation:this,observer:e})}optionalRemove(){this.#t.length||(this.state.status===`pending`?this.scheduleGc():this.#n.remove(this))}continue(){return this.#r?.continue()??(this.state.status===`pending`?this.execute(this.state.variables):Promise.resolve())}async execute(e){let t=()=>{this.#i({type:`continue`})},n={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey},r=this.#r=Ue({fn:()=>this.options.mutationFn?this.options.mutationFn(e,n):Promise.reject(Error(`No mutationFn found`)),onFail:(e,t)=>{this.#i({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#i({type:`pause`})},onContinue:t,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#n.canRun(this)}),i=this.state.status===`pending`,a=!r.canStart();try{if(i)t();else{this.#i({type:`pending`,variables:e,isPaused:a}),this.#n.config.onMutate&&await this.#n.config.onMutate(e,this,n);let t=await this.options.onMutate?.(e,n);t!==this.state.context&&this.#i({type:`pending`,context:t,variables:e,isPaused:a})}let o=await r.start();return await this.#n.config.onSuccess?.(o,e,this.state.context,this,n),await this.options.onSuccess?.(o,e,this.state.context,n),await this.#n.config.onSettled?.(o,null,this.state.variables,this.state.context,this,n),await this.options.onSettled?.(o,null,e,this.state.context,n),this.#i({type:`success`,data:o}),o}catch(t){try{await this.#n.config.onError?.(t,e,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onError?.(t,e,this.state.context,n)}catch(e){Promise.reject(e)}try{await this.#n.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onSettled?.(void 0,t,e,this.state.context,n)}catch(e){Promise.reject(e)}throw this.#i({type:`error`,error:t}),t}finally{this.#r===r&&(this.#r=void 0),this.#n.runNext(this)}}#i(e){let t=t=>{switch(e.type){case`failed`:return{...t,failureCount:e.failureCount,failureReason:e.error};case`pause`:return{...t,isPaused:!0};case`continue`:return{...t,isPaused:!1};case`pending`:return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:`pending`,variables:e.variables,submittedAt:Date.now()};case`success`:return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:`success`,isPaused:!1};case`error`:return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:`error`}}};this.state=t(this.state),Re.batch(()=>{this.#t.forEach(t=>{t.onMutationUpdate(e)}),this.#n.notify({mutation:this,type:`updated`,action:e})})}};function at(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:`idle`,variables:void 0,submittedAt:0}}var ot=class extends Pe{#e;#t;#n;constructor(e={}){super(),this.config=e,this.#e=new Set,this.#t=new Map,this.#n=0}build(e,t,n){let r=new it({client:e,mutationCache:this,mutationId:++this.#n,options:e.defaultMutationOptions(t),state:n});return this.add(r),r}add(e){this.#e.add(e);let t=st(e);if(typeof t==`string`){let n=this.#t.get(t);n?n.push(e):this.#t.set(t,[e])}this.notify({type:`added`,mutation:e})}remove(e){if(this.#e.delete(e)){let t=st(e);if(typeof t==`string`){let n=this.#t.get(t);if(n){if(n.length>1){let t=n.indexOf(e);t!==-1&&n.splice(t,1)}else n[0]===e&&this.#t.delete(t)}}}this.notify({type:`removed`,mutation:e})}canRun(e){let t=st(e);if(typeof t==`string`){let n=this.#t.get(t)?.find(e=>e.state.status===`pending`);return!n||n===e}return!0}runNext(e){let t=st(e);return typeof t==`string`?(this.#t.get(t)?.find(t=>t!==e&&t.state.isPaused))?.continue()??Promise.resolve():Promise.resolve()}clear(){Re.batch(()=>{this.#e.forEach(e=>{this.notify({type:`removed`,mutation:e})}),this.#e.clear(),this.#t.clear()})}getAll(){return Array.from(this.#e)}find(e){let t={exact:!0,...e};return this.getAll().find(e=>_e(t,e))}findAll(e={}){return this.getAll().filter(t=>_e(e,t))}notify(e){Re.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return Re.batch(()=>Promise.all(e.map(e=>e.continue().catch(j))))}};function st(e){return e.options.scope?.id}var ct=class extends Pe{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),xe(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&P(t.mutationKey)!==P(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onSubscribe(){this.listeners.size===1&&this.#n&&(this.#n.addObserver(this),this.#i())}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??at();this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){Re.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type===`success`){try{this.#r.onSuccess?.(e.data,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(e.data,null,t,n,r)}catch(e){Promise.reject(e)}}else if(e?.type===`error`){try{this.#r.onError?.(e.error,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(void 0,e.error,t,n,r)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}};function lt(e,t){let n=new Set(t);return e.filter(e=>!n.has(e))}var ut=class extends Pe{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l=[];constructor(e,t,n){super(),this.#e=e,this.#r=n,this.#n=[],this.#i=[],this.#t=[],this.setQueries(t)}onSubscribe(){this.listeners.size===1&&this.#i.forEach(e=>{e.subscribe(t=>{this.#m(e,t)})})}onUnsubscribe(){this.listeners.size||this.destroy()}destroy(){this.listeners=new Set,this.#i.forEach(e=>{e.destroy()})}setQueries(e,t){this.#n=e,this.#r=t,Re.batch(()=>{let e=this.#i,t=this.#p(this.#n);t.forEach(e=>e.observer.setOptions(e.defaultedQueryOptions));let n=t.map(e=>e.observer),r=n.map(e=>e.getCurrentResult()),i=e.length!==n.length,a=n.some((t,n)=>t!==e[n]),o=i||a,s=o?!0:r.some((e,t)=>{let n=this.#t[t];return!n||!xe(e,n)});(o||s)&&(o&&(this.#l=t,this.#i=n),this.#t=r,this.hasListeners()&&(o&&(lt(e,n).forEach(e=>{e.destroy()}),lt(n,e).forEach(e=>{e.subscribe(t=>{this.#m(e,t)})})),this.#h()))})}getCurrentResult(){return this.#t}getQueries(){return this.#i.map(e=>e.getCurrentQuery())}getObservers(){return this.#i}getOptimisticResult(e,t){let n=this.#p(e),r=n.map(e=>e.observer.getOptimisticResult(e.defaultedQueryOptions)),i=n.map(e=>e.defaultedQueryOptions.queryHash);return[r,e=>this.#d(e??r,t,i),()=>this.#u(r,n)]}#u(e,t){let n=new Set;return t.map((r,i)=>{let a=e[i];return r.defaultedQueryOptions.notifyOnChangeProps?a:r.observer.trackResult(a,e=>{n.has(e)||(n.add(e),t.forEach(t=>{t.observer.trackProp(e)}))})})}#d(e,t,n){if(t){let r=this.#c,i=n!==void 0&&r!==void 0&&(r.length!==n.length||n.some((e,t)=>e!==r[t]));return(this.#t!==this.#s||i||t!==this.#o)&&(this.#o=t,this.#s=this.#t,n!==void 0&&(this.#c=n),this.#a=be(this.#a,t(e))),this.#a}return e}#f(){return!this.#r?.combine||this.#i.some((e,t)=>e.options.suspense&&this.#t[t]?.data===void 0)}#p(e){let t=new Map;this.#i.forEach(e=>{let n=e.options.queryHash;if(!n)return;let r=t.get(n);r?r.push(e):t.set(n,[e])});let n=[];return e.forEach(e=>{let r=this.#e.defaultQueryOptions(e),i=t.get(r.queryHash)?.shift()??new Qe(this.#e,r);n.push({defaultedQueryOptions:r,observer:i})}),n}#m(e,t){let n=this.#i.indexOf(e);n!==-1&&(this.#t=this.#t.slice(),this.#t[n]=t,this.#h())}#h(){if(this.hasListeners()){let e=this.#f(),t=this.#a,n=e?t:this.#d(this.#u(this.#t,this.#l),this.#r?.combine);(e||t!==n)&&Re.batch(()=>{this.listeners.forEach(e=>{e(this.#t)})})}}},dt=class extends Pe{#e;constructor(e={}){super(),this.config=e,this.#e=new Map}build(e,t,n){let r=t.queryKey,i=t.queryHash??N(r,t),a=this.get(i);return a||(a=new Je({client:e,queryKey:r,queryHash:i,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(a)),a}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:`added`,query:e}))}remove(e){this.#e.get(e.queryHash)===e&&(e.destroy(),this.#e.delete(e.queryHash),this.notify({type:`removed`,query:e}))}clear(){Re.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>ge(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>ge(e,t)):t}notify(e){Re.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){Re.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){Re.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},ft=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e={}){this.#e=e.queryCache||new dt,this.#t=e.mutationCache||new ot,this.#n=e.defaultOptions||{},this.#r=new Map,this.#i=new Map,this.#a=0}mount(){this.#a++,this.#a===1&&(this.#o=Fe.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#s=ze.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#a--,this.#a===0&&(this.#o?.(),this.#o=void 0,this.#s?.(),this.#s=void 0)}isFetching(e){return this.#e.findAll({...e,fetchStatus:`fetching`}).length}isMutating(e){return this.#t.findAll({...e,status:`pending`}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),n=this.#e.build(this,t),r=n.state.data;return r===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(M(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(r))}getQueriesData(e){return this.#e.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,t,n){let r=this.defaultQueryOptions({queryKey:e}),i=this.#e.get(r.queryHash)?.state.data,a=pe(t,i);if(a!==void 0)return this.#e.build(this,r).setData(a,{...n,manual:!0})}setQueriesData(e,t,n){return Re.batch(()=>this.#e.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,n)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state}removeQueries(e){let t=this.#e;Re.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let n=this.#e;return Re.batch(()=>{let r=n.findAll(e),i=new Set(r);return r.forEach(e=>{e.reset()}),this.refetchQueries({type:`active`,predicate:e=>i.has(e)},t)})}cancelQueries(e,t={}){let n={revert:!0,...t},r=Re.batch(()=>this.#e.findAll(e).map(e=>e.cancel(n)));return Promise.all(r).then(j).catch(j)}invalidateQueries(e,t={}){return Re.batch(()=>(this.#e.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType===`none`?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??`active`},t)))}refetchQueries(e,t={}){let n={...t,cancelRefetch:t.cancelRefetch??!0},r=Re.batch(()=>this.#e.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(j)),e.state.fetchStatus===`paused`?Promise.resolve():t}));return Promise.all(r).then(j)}async query(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t),r=n.isStaleByTime(M(t.staleTime,n))?await n.fetch(t):n.state.data,i=t.select;return i?i(r):r}fetchQuery(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t);return n.isStaleByTime(M(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(j).catch(j)}infiniteQuery(e){return e._type=`infinite`,this.query(e)}fetchInfiniteQuery(e){return e._type=`infinite`,this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(j).catch(j)}ensureInfiniteQueryData(e){return e._type=`infinite`,this.ensureQueryData(e)}resumePausedMutations(){return ze.isOnline()?this.#t.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#t}getDefaultOptions(){return this.#n}setDefaultOptions(e){this.#n=e}setQueryDefaults(e,t){this.#r.set(P(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#r.values()],n={};return t.forEach(t=>{ve(e,t.queryKey)&&Object.assign(n,t.defaultOptions)}),n}setMutationDefaults(e,t){this.#i.set(P(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#i.values()],n={};return t.forEach(t=>{ve(e,t.mutationKey)&&Object.assign(n,t.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#n.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||=N(t.queryKey,t),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!==`always`),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode=`offlineFirst`),t.queryFn===Oe&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#n.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#t.clear()}},pt=k.createContext(!1),mt=()=>k.useContext(pt);pt.Provider;function ht(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var gt=k.createContext(ht()),_t=()=>k.useContext(gt),vt=(e,t,n)=>{let r=n?.state.error&&typeof e.throwOnError==`function`?Ae(e.throwOnError,[n.state.error,n]):e.throwOnError;(e.suspense||r)&&(t.isReset()||(e.retryOnMount=!1))},yt=e=>{k.useEffect(()=>{e.clearReset()},[e])},bt=({result:e,errorResetBoundary:t,throwOnError:n,query:r,suspense:i})=>e.isError&&!t.isReset()&&!e.isFetching&&r&&(i&&e.data===void 0||Ae(n,[e.error,r])),xt=e=>{if(e.suspense){let t=1e3,n=e=>e===`static`?e:Math.max(e??t,t),r=e.staleTime;e.staleTime=typeof r==`function`?(...e)=>n(r(...e)):n(r),typeof e.gcTime==`number`&&(e.gcTime=Math.max(e.gcTime,t))}},St=(e,t)=>e?.suspense&&t.isPending,Ct=(e,t,n)=>t.fetchOptimistic(e).catch(()=>{n.clearReset()});function wt({queries:e,...t},n){let r=se(n),i=mt(),a=_t(),o=t.subscribed!==!1,s=k.useMemo(()=>e.map(e=>{let t=r.defaultQueryOptions(e);return t._optimisticResults=i?`isRestoring`:o?`optimistic`:void 0,t}),[e,r,i,o]);s.forEach(e=>{xt(e);let t=r.getQueryCache().get(e.queryHash);vt(e,a,t)}),yt(a);let[c]=k.useState(()=>new ut(r,s,t)),[l,u,d]=c.getOptimisticResult(s,t.combine),f=!i&&o;k.useSyncExternalStore(k.useCallback(e=>f?c.subscribe(Re.batchCalls(e)):j,[c,f]),()=>c.getCurrentResult(),()=>c.getCurrentResult()),k.useEffect(()=>{c.setQueries(s,t)},[s,t,c]);let p=l.some((e,t)=>St(s[t],e))?l.flatMap((e,t)=>{let n=s[t];return n&&St(n,e)?Ct(n,new Qe(r,n),a):[]}):[];if(p.length>0)throw Promise.all(p);let m=l.find((e,t)=>{let n=s[t];return n&&bt({result:e,errorResetBoundary:a,throwOnError:n.throwOnError,query:r.getQueryCache().get(n.queryHash),suspense:n.suspense})});if(m)throw m.error;return u(d())}function Tt(e,t,n){let r=mt(),i=_t(),a=se(n),o=a.defaultQueryOptions(e),s=a.getQueryCache().get(o.queryHash),c=e.subscribed!==!1;o._optimisticResults=r?`isRestoring`:c?`optimistic`:void 0,xt(o),vt(o,i,s),yt(i);let[l]=k.useState(()=>new t(a,o)),u=l.getOptimisticResult(o),d=!r&&c;if(k.useSyncExternalStore(k.useCallback(e=>{let t=d?l.subscribe(Re.batchCalls(e)):j;return l.updateResult(),t},[l,d]),()=>l.getCurrentResult(),()=>l.getCurrentResult()),k.useEffect(()=>{l.setOptions(o)},[o,l]),St(o,u))throw Ct(o,l,i);if(bt({result:u,errorResetBoundary:i,throwOnError:o.throwOnError,query:s,suspense:o.suspense}))throw u.error;return o.notifyOnChangeProps?u:l.trackResult(u)}function I(e,t){return Tt(e,Qe,t)}function Et(e,t){let n=se(t),[r]=k.useState(()=>new ct(n,e));k.useEffect(()=>{r.setOptions(e)},[r,e]);let i=k.useSyncExternalStore(k.useCallback(e=>r.subscribe(Re.batchCalls(e)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),a=k.useCallback((...e)=>{r.mutate(e[0],e[1]).catch(j)},[r]);if(i.error&&Ae(r.options.throwOnError,[i.error]))throw i.error;return{...i,mutate:a,mutateAsync:i.mutate}}var Dt=k.use,Ot=k.useLayoutEffect;function kt(e){return e.replace(/\/{2,}/g,`/`)}function At(e){return e===`/`?e:e.replace(/^\/+/,``)}function jt(e){let t=e.length;return t>1&&e[t-1]===`/`?e.replace(/\/+$/,``):e}function Mt(e){return jt(At(e))}function Nt(e,t){return e?.endsWith(`/`)&&e!==`/`&&e!==`${t}/`?e.slice(0,-1):e}function Pt(e,t,n=`never`,r){if(t.includes(`//`)&&(t=kt(t)),t.startsWith(`/`))return t.length===1||n===`preserve`?t:n===`always`?t.endsWith(`/`)?t:`${t}/`:t.endsWith(`/`)?t.slice(0,-1):t;let i=t===`.`,a;if(r){a=i?e:e+`\0`+t;let n=r.get(a);if(n)return n}let o;if(i)o=e.split(`/`);else{for(e.includes(`//`)&&(e=kt(e)),o=e.split(`/`);o.length>1&&d(o)===``;)o.pop();let n=t.split(`/`);for(let e=0,t=n.length;e1?o.pop():o=[``]:r===`.`||o.push(r)}}o.length>1&&(d(o)===``?n===`never`&&o.pop():n===`always`&&o.push(``));let s=o.join(`/`),c=(i?kt(s):s)||`/`;return a&&r&&r.set(a,c),c}function Ft(e){let t=new Map(e.map(e=>[encodeURIComponent(e),e])),n=new RegExp([...t.keys()].join(`|`).replace(/[.*()]/g,`\\$&`),`g`);return e=>e.replace(n,e=>t.get(e)??e)}function It(e){return e==null||e===``}function Lt(e,t,n){if(typeof t!=`string`)return``+(t??void 0);let r=e===`_splat`;if(r&&(!t||/^[a-zA-Z0-9\-._~!/]*$/.test(t)))return t;let i=encodeURIComponent(t);return r&&(i=i.replaceAll(`%2F`,`/`)),n?n(i):i}function Rt(e,t,n,r,i){let a=e.endsWith(`/`)?`/`:``,o=``;for(let e of t){if(typeof e==`string`){o+=e;continue}let[t,s,c,l]=e,u=t===2,d=u&&l!==void 0?l+a:l,f=n[s];if(t!==3||f!=null){if(i&&(i[s]=f,u&&(i[`*`]=f)),u&&It(f)){if(c===`/`&&!d)continue;f=``}o+=c+Lt(s,f,r)+(d||``)}}return o+a||`/`}function zt(e){return e?.isNotFound===!0}function Bt(){try{return sessionStorage}catch{return}}var Vt=`tsr-scroll-restoration-v1_3`,Ht=Bt();function Ut(){try{return JSON.parse(Ht?.getItem(`tsr-scroll-restoration-v1_3`)||`{}`)}catch{return{}}}function Wt(){try{Ht?.setItem(Vt,JSON.stringify(Gt))}catch{}}var Gt=Ut(),Kt=`data-scroll-restoration-id`,qt=e=>e.state.__TSR_key||e.href;function L(e){let t=e.getAttribute(Kt);if(t)return`[${Kt}="${t}"]`;let n=``,r=e,i;for(;i=r.parentNode;){let e=1,t=r;for(;t=t.previousElementSibling;)e++;let a=`${r.localName}:nth-child(${e})`;n=n?`${a} > ${n}`:a,r=i}return n}var Jt=!1,Yt=`window`;function Xt(e){try{return typeof e==`function`?e():document.querySelector(e)}catch{}}function Zt(e){let t=new Set;for(let n of e){if(n===Yt)continue;let e=Xt(n);e&&t.add(e)}return t}function Qt(e,t){let n=t??e.options.scrollRestoration,r=e._scroll;n&&(r.restoring=!0);let i=e.options.getScrollRestorationKey||qt,a=new Set,o=e=>{let t=Gt[e]||={};for(let e of a)e===document?t[Yt]={scrollX,scrollY}:e.isConnected&&(t[L(e)]={scrollX:e.scrollLeft,scrollY:e.scrollTop})};n&&!r.restoration&&(r.restoration=!0,Jt=!1,history.scrollRestoration=`manual`,document.addEventListener(`scroll`,e=>{Jt||a.add(e.target)},!0),e.subscribe(`onBeforeLoad`,e=>{e.fromLocation&&o(i(e.fromLocation)),a.clear()}),addEventListener(`pagehide`,()=>{o(i(e.stores.resolvedLocation.get()??e.stores.location.get())),Wt()})),!r.reset&&(r.reset=!0,e.subscribe(`onRendered`,t=>{let n=e.options.scrollRestorationBehavior,o=e.options.scrollToTopSelectors,s=r.next,c=r.hash,l;if(a.clear(),r.next=!0,r.hash=!1,typeof e.options.scrollRestoration==`function`&&!e.options.scrollRestoration({location:e.latestLocation}))return;let u=i(t.toLocation),d=t.fromLocation&&i(t.fromLocation);if(r.restoring&&d&&d!==u){let e=Gt[d];if(e){let t=Gt[u];for(let n in e){if(n===Yt){if(s)continue}else{let e=Xt(n);if(!e||s&&o&&(l??=Zt(o),l.has(e)))continue}t||=Gt[u]={},t[n]??=e[n]}}}Jt=!0;try{let e=t.toLocation.hash,i=t.toLocation.state.__hashScrollIntoViewOptions??!0,a=!1;if(s){!e&&o&&(l??=Zt(o));let t=e&&i&&c,s=r.restoring?Gt[u]:void 0;if(s)for(let e in s){let{scrollX:r,scrollY:i}=s[e];if(e===Yt){if(t)continue;scrollTo({top:i,left:r,behavior:n}),a=!0}else{let t=Xt(e);t&&(t.scrollLeft=r,t.scrollTop=i,l?.delete(t))}}if(!e){let e={top:0,left:0,behavior:n};if(a||scrollTo(e),l)for(let t of l)t.scrollTo(e)}}!a&&e&&i&&document.getElementById(e)?.scrollIntoView(i)}finally{Jt=!1}}))}function $t(e,t=String){let n;for(let r in e){let i=e[r];i!==void 0&&(n||=new URLSearchParams).set(r,t(i))}return n?n.toString():``}function en(e){return e?e===`false`?!1:e===`true`?!0:e*0==0&&+e+``===e?+e:e:``}function tn(e){let t=new URLSearchParams(e),n=Object.create(null);for(let[e,r]of t.entries()){let t=n[e];t==null?n[e]=en(r):Array.isArray(t)?t.push(en(r)):n[e]=[t,en(r)]}return n}var nn=/^(?:\s|["[{\d-]|fa|nu|tr)/,rn=on(JSON.parse),an=sn(JSON.stringify,JSON.parse);function on(e){let t=e===JSON.parse;return n=>{n[0]===`?`&&(n=n.substring(1));let r=tn(n);for(let n in r){let i=r[n];if(typeof i==`string`){if(t&&!nn.test(i))continue;try{r[n]=e(i)}catch{}}}return r}}function sn(e,t){let n=t===JSON.parse;function r(r){if(r&&typeof r==`object`)try{return e(r)}catch{}else if(t&&typeof r==`string`){if(n&&!nn.test(r))return r;try{return t(r),e(r)}catch{}}return r}return e=>{let t=$t(e,r);return t?`?${t}`:``}}var cn=`__root__`;function ln(e){e.statusCode=e.statusCode||e.code||307;let t=new Headers(e.headers);e.href&&t.get(`Location`)===null&&t.set(`Location`,e.href);let n=new Response(null,{status:e.statusCode,headers:t});if(n.options=e,e.throw)throw n;return n}function un(e){return e instanceof Response&&!!e.options}function dn(e){let t=new Map,n,r;return{get(e){let n=t.get(e);if(n)return n.visited=!0,n.value},set(i,a){let o=t.get(i);if(o){o.value=a;return}if(t.size>=e){let e=n?.next().value;for(;!e||e.visited;)e?e.visited=!1:n=t.values(),e=n.next().value;e===r&&(n=void 0),t.delete(e.key)}let s={key:i,value:a,visited:!1};r=s,t.set(i,s)},clear(){t.clear(),n=void 0,r=void 0}}}var fn=4,pn=5;function mn(e){let t=e.names;if(t)return t;let n=[];for(let t of e)typeof t!=`string`&&n.push(t[1]);return e.names=n}function hn(e,t,n){let r=e.substring(t,n);if(r.charCodeAt(0)===36)return r.length===1?[2,`_splat`,``,void 0]:[1,r.substring(1),``,``];let i=r.indexOf(`{`);if(i>=0){let a=r.indexOf(`}`,i),o=r.charCodeAt(i+1)===45,s=i+(o?3:2);if(a>=0&&r.charCodeAt(s-1)===36&&(!o||s!e.parse&&e.caseSensitive===_&&e.prefix===d&&e.suffix===g);if(y)c=y;else{let e=vn(r,t,_,d,g);c=e,v.push(e),v.length===2&&i?.push(v)}}r=c}m&&h=0;e--){let n=i.wildcard[e],{prefix:r,suffix:a}=n;if(!r||!_&&(n.caseSensitive?v:y??=v.toLowerCase()).startsWith(r)){if(a){if(_)continue;let e=t.slice(u).join(`/`),i=e.slice(-a.length);if((n.caseSensitive?i:i.toLowerCase())!==a||e.length-a.length=0;t--){let n=i.optional[t];s.push({node:n,index:u,skipped:e,statics:f,dynamics:p,optionals:m,extract:h,rawParams:g})}if(!_)for(let e=i.optional.length-1;e>=0;e--){let t=i.optional[e],{prefix:n,suffix:r}=t;if(n||r){let e=t.caseSensitive?v:y??=v.toLowerCase();if(n&&!e.startsWith(n)||r&&e.indexOf(r,e.length-r.length)=0;e--){let t=i.dynamic[e],{prefix:n,suffix:r}=t;if(n||r){let e=t.caseSensitive?v:y??=v.toLowerCase();if(n&&!e.startsWith(n)||r&&e.indexOf(r,e.length-r.length)=0;e--){let t=i.pathless[e];s.push({node:t,index:u,skipped:d,statics:f,dynamics:p,optionals:m,extract:h,rawParams:g})}}if(l)return l;if(r&&c){let n=c.index;for(let e=0;ee.statics||t.statics===e.statics&&(t.dynamics>e.dynamics||t.dynamics===e.dynamics&&(t.optionals>e.optionals||t.optionals===e.optionals&&((t.node.kind===fn)>(e.node.kind===fn)||t.node.kind===fn==(e.node.kind===fn)&&t.node.depth>e.node.depth)))}function Nn(e,t,n){let r=Mt(e),i=`/${r}`,a=t?i:i.toLowerCase(),o=`${a}/`,s={input:({url:e})=>{let n=t?e.pathname:e.pathname.toLowerCase();return n===a?e.pathname=`/`:n.startsWith(o)&&(e.pathname=e.pathname.slice(i.length)),e},output:({url:e})=>(e.pathname=kt(`/${r}${e.pathname}`),e)};return n?{input:({url:e})=>Pn(n,s.input({url:e})),output:({url:e})=>s.output({url:Fn(n,e)})}:s}function Pn(e,t){let n=e?.input?.({url:t});if(n){if(typeof n==`string`)return new URL(n);if(n instanceof URL)return n}return t}function Fn(e,t){let n=e?.output?.({url:t});if(n){if(typeof n==`string`)return new URL(n);if(n instanceof URL)return n}return t}function In(e,t){let{createMutableStore:n,createReadonlyStore:r,batch:i}=t,a=new Map,o=n(`idle`),c=n(e),l=n(void 0),u=n([]),d=r(()=>u.get().map(e=>a.get(e).get())),f=r(()=>({status:o.get(),isLoading:o.get()===`pending`,matches:d.get(),location:c.get(),resolvedLocation:l.get()}));function p(e){let t=a.get(e);return t||(t=n(void 0),a.set(e,t)),t}let m={status:o,location:c,resolvedLocation:l,ids:u,matches:d,byRoute:a,__store:f,getMatchStore:p,setMatches:h};function h(e){let t=u.get(),n=e.map(e=>e.routeId);i(()=>{s(t,n)||u.set(n);for(let e of t)n.includes(e)||a.get(e).set(()=>void 0);for(let t of e){let e=p(t.routeId);e.get()!==t&&e.set(t)}})}return m}var Ln=`__TSR_index`,Rn=`popstate`,zn=`beforeunload`,Bn=/^[\x00-\x20]*(?:[\\/][\t\n\r]*){2,}/;function Vn(e){let t=Bn.exec(e);return t?`/`+e.slice(t[0].length):e}function Hn(e){return/[\x00-\x1f\x7f]/.test(e)&&(e=e.replace(/[\x00-\x1f\x7f]/g,e=>` -\r`.includes(e)?``:encodeURIComponent(e))),Vn(e)}function Un(e){let t=e.getLocation(),n=new Set,r=r=>{t=e.getLocation(),n.forEach(e=>e({location:t,action:r}))},i=n=>{e.notifyOnIndexChange??!0?r(n):t=e.getLocation()},a=async({task:n,navigateOpts:r,...i})=>{if(r?.ignoreBlocker??!1){n();return}let a=e.getBlockers?.()??[],o=i.type===`PUSH`||i.type===`REPLACE`;if(typeof document<`u`&&a.length&&o)for(let n of a){let r=Kn(i.path,i.state);if(await n.blockerFn({currentLocation:t,nextLocation:r,action:i.type})){e.onBlocked?.();return}}n()};return{get location(){return t},get length(){return e.getLength()},subscribers:n,subscribe:e=>(n.add(e),()=>{n.delete(e)}),push:(n,i,o)=>{let s=t.state[Ln];i=Wn(s+1,i),a({task:()=>{e.pushState(n,i),r({type:`PUSH`})},navigateOpts:o,type:`PUSH`,path:n,state:i})},replace:(n,i,o)=>{let s=t.state[Ln];i=Wn(s,i),a({task:()=>{e.replaceState(n,i),r({type:`REPLACE`})},navigateOpts:o,type:`REPLACE`,path:n,state:i})},go:(t,n)=>{a({task:()=>{e.go(t,n?.ignoreBlocker??!1),i({type:`GO`,index:t})},navigateOpts:n,type:`GO`})},back:t=>{a({task:()=>{e.back(t?.ignoreBlocker??!1),i({type:`BACK`})},navigateOpts:t,type:`BACK`})},forward:t=>{a({task:()=>{e.forward(t?.ignoreBlocker??!1),i({type:`FORWARD`})},navigateOpts:t,type:`FORWARD`})},canGoBack:()=>t.state[Ln]!==0,createHref:t=>e.createHref(t),block:t=>{if(!e.setBlockers)return()=>{};let n=e.getBlockers?.()??[];return e.setBlockers([...n,t]),()=>{let n=e.getBlockers?.()??[];e.setBlockers?.(n.filter(e=>e!==t))}},flush:()=>e.flush?.(),destroy:()=>e.destroy?.(),notify:r,_getBlockers:()=>e.getBlockers?.()??[]}}function Wn(e,t){let n=qn();return{...t,key:n,__TSR_key:n,[Ln]:e}}function Gn(e){let t=e?.window??(typeof document<`u`?window:void 0),n=t.history.pushState,r=t.history.replaceState,i=[],a=()=>i,o=e=>i=e,s=t=>Hn(e?.createHref?e.createHref(t):t),c=e?.parseLocation??(()=>Kn(`${t.location.pathname}${t.location.search}${t.location.hash}`,t.history.state));if(!t.history.state?.__TSR_key&&!t.history.state?.key){let e=qn();t.history.replaceState({[Ln]:0,key:e,__TSR_key:e},``)}let l=c(),u,d=!1,f=!1,p=!1,m=!1,h=()=>l,g,_=()=>{g&&(S._ignoreSubscribers=!0,(g[2]?t.history.pushState:t.history.replaceState)(g[1],``,g[0]),S._ignoreSubscribers=!1,g=void 0,u=void 0)},v=(t,n,r)=>{let i=e?.createHref?s(n):void 0,a=!!g;a||(u=l),l=Kn(n,r),g=[i??l.href,r,g?.[2]||t],a||queueMicrotask(()=>_())},y=e=>{l=c(),S.notify({type:e})},b=async()=>{if(m=!1,f){f=!1;return}let e=c(),n=e.state[Ln]-l.state[Ln],r=n===1,i=n===-1,o=!r&&!i||d;d=!1;let s=o?`GO`:i?`BACK`:`FORWARD`,u=o?{type:`GO`,index:n}:{type:i?`BACK`:`FORWARD`};if(p)p=!1;else{let r=a();if(typeof document<`u`&&r.length){for(let i of r)if(await i.blockerFn({currentLocation:l,nextLocation:e,action:s})){f=!0,t.history.go(-n),S.notify(u);return}}}l=c(),S.notify(u)},x=e=>{if(m){m=!1;return}let t=!1,n=a();if(typeof document<`u`&&n.length)for(let e of n){let n=e.enableBeforeUnload??!0;if(n===!0){t=!0;break}if(typeof n==`function`&&n()===!0){t=!0;break}}if(t)return e.preventDefault(),e.returnValue=``},S=Un({getLocation:h,getLength:()=>t.history.length,pushState:(e,t)=>v(!0,e,t),replaceState:(e,t)=>v(!1,e,t),back:e=>(e&&(p=!0,m=!0),t.history.back()),forward:e=>{e&&(p=!0,m=!0),t.history.forward()},go:(e,n)=>{d=!0,n&&(p=!0,m=!0),t.history.go(e)},createHref:e=>s(e),flush:_,destroy:()=>{t.history.pushState=n,t.history.replaceState=r,t.removeEventListener(zn,x,{capture:!0}),t.removeEventListener(Rn,b)},onBlocked:()=>{u&&l!==u&&(l=u)},getBlockers:a,setBlockers:o,notifyOnIndexChange:!1});return S._ignoreNextBeforeUnload=e=>{m=!1;try{e=new URL(e,t.document.baseURI).href,m=/^https?:/.test(e)&&(!e.includes(`#`)||e.split(`#`)[0]!==t.location.href.split(`#`)[0])}catch{}},t.addEventListener(zn,x,{capture:!0}),t.addEventListener(Rn,b),t.history.pushState=function(...e){let r=n.apply(t.history,e);return S._ignoreSubscribers||y(`PUSH`),r},t.history.replaceState=function(...e){let n=r.apply(t.history,e);return S._ignoreSubscribers||y(`REPLACE`),n},S}function Kn(e,t){let n=Hn(e),r=n.indexOf(`#`),i=n.indexOf(`?`);if(!t){let e=qn();t={[Ln]:0,key:e,__TSR_key:e}}return{href:n,pathname:n.substring(0,r>0?i>0?Math.min(r,i):r:i>0?i:n.length),hash:r>-1?n.substring(r):``,search:i>-1?n.slice(i,r===-1?void 0:r):``,state:t}}function qn(){return(Math.random()+1).toString(36).substring(7)}function Jn(e,t){return e.protocol!==`http:`&&e.protocol!==`https:`||e.origin!==t||!!e.username||!!e.password}function Yn(e){return e.pathname+e.search+e.hash}function Xn(e){return e.options.loader||e.options.beforeLoad||e.lazyFn||e.options.component?.preload||e.options.pendingComponent?.preload}function Zn(e,t){return{fromLocation:t,toLocation:e,pathChanged:t?.pathname!==e.pathname,hrefChanged:t?.href!==e.href,hashChanged:t?.hash!==e.hash}}function Qn({key:e,__TSR_key:t,__TSR_index:n,__hashScrollIntoViewOptions:r,...i}){return i}function $n(e){return e.findIndex(e=>e.status===`error`||e.status===`notFound`||e._notFound)+1}function er(e,t,n,r,i,a){r&&(t=t.slice(0,r)),i&&(n=n.slice(0,i));for(let r of t){if(a&&e._tx!==a)return;n.some(e=>e.routeId===r.routeId)||e.routesById[r.routeId].options.onLeave?.(r)}for(let r of n){if(a&&e._tx!==a)return;e.routesById[r.routeId].options[t.some(e=>e.routeId===r.routeId)?`onStay`:`onEnter`]?.(r)}}var tr=class{constructor(e,t){this.tempLocationKey=`${Math.round(Math.random()*1e7)}`,this._scroll={next:!0},this.subscribers=new Set,this._cache=new Map,this._committed=[],this.startTransition=async e=>(e(),!1),this.update=e=>{let t=this.options;this.options={...t,...e},this.isServer=this.options.isServer??!1??typeof document>`u`,this.staticLocations=new WeakMap,this.protocolAllowlist=new Set(this.options.protocolAllowlist),(!this.history||this.options.history&&this.options.history!==this.history)&&(this.history=this.options.history?this.options.history:Gn()),this.origin=this.options.origin,this.origin||=window?.origin&&window.origin!==`null`?window.origin:`http://localhost`;let n=this.options.basepath??`/`,r=this.options.rewrite,i=this.basepath!==n||t?.rewrite!==r||t?.caseSensitive!==this.options.caseSensitive;if(i&&(this.basepath=n,this.rewrite=n!==`/`&&Mt(n)?Nn(n,this.options.caseSensitive,r):r),this.history&&this.updateLatestLocation(),this.options.routeTree!==this.routeTree){this.routeTree=this.options.routeTree;let e;e=this.buildRouteTree(),this.setRoutes(e)}if(this.stores)i&&this.stores.location.set(this.latestLocation);else if(this.latestLocation){let e=this.getStoreConfig(this);this.batch=e.batch,this.stores=In(this.latestLocation,e),Qt(this)}},this.updateLatestLocation=()=>{this.latestLocation=this.parseLocation(this.history.location,this.latestLocation)},this.buildRouteTree=()=>{let e=Cn(this.routeTree,this.options.caseSensitive);return this.options.routeMasks&&yn(this.options.routeMasks,e.processedTree),{...e,resolvePathCache:dn(1e3)}},this.subscribe=(e,t)=>{let n={eventType:e,fn:t};return this.subscribers.add(n),()=>{this.subscribers.delete(n)}},this.emit=e=>{for(let t of this.subscribers)if(t.eventType===e.type)try{t.fn(e)}catch(e){console.error(e)}},this.parseLocation=(e,t)=>{let n=({pathname:e,search:n,hash:r,href:i},a)=>{if(!this.rewrite&&!/[ \x00-\x1f\x7f\u0080-\uffff]/.test(e)){let i=this.options.parseSearch(n),s=this.options.stringifySearch(i);return{href:e+s+r,publicHref:e+s+r,pathname:b(e),external:!1,searchStr:s,search:o(t?.search,i),hash:b(r.slice(1)),state:w(t?.state,a)}}let s=Pn(this.rewrite,new URL(i,this.origin)),c=this.options.parseSearch(s.search),l=this.options.stringifySearch(c);return s.search=l,{href:s.href.replace(s.origin,``),publicHref:i,pathname:b(Vn(s.pathname)),external:!!this.rewrite&&Jn(s,this.origin),searchStr:l,search:o(t?.search,c),hash:b(s.hash.slice(1)),state:w(t?.state,a)}},r=n(e,e.state),{__tempLocation:i,__tempKey:a}=r.state;if(i&&(!a||a===this.tempLocationKey)){let e=n(i,{...i.state,__tempLocation:void 0,key:r.state.key,__TSR_key:r.state.__TSR_key});return e.maskedLocation=r,e}return r},this.matchRoutes=(e,t,n)=>typeof e==`string`?this.matchRoutesInternal({pathname:e,search:t},n):this.matchRoutesInternal(e,t),this.getMatchedRoutes=e=>{let t=Object.create(null),n=Sn(jt(e),this.processedTree,!0);return n&&Object.assign(t,n.rawParams),[n?.branch||[this.routesById.__root__],t,n?.route]},this.buildLocation=e=>{{let t=this.staticLocations.get(e);if(t)return t}let t=!1,n=(n={})=>{if(n.href){let e=Kn(n.href,{});n={...n,to:Pn(this.rewrite,new URL(e.pathname,this.origin)).pathname,search:this.options.parseSearch(e.search),hash:e.hash.slice(1)}}let r=n._fromLocation||this._pendingLocation||this.latestLocation,i,a=()=>(t=!0,r),o=()=>(t=!0,i??=this.matchRoutesLightweight(r)),s=n.to?`${n.to}`:`.`,c=Pt(s[0]===`/`?``:n.unsafeRelative===`path`?a().pathname:n.from??o()[1],s,this.options.trailingSlash,this.resolvePathCache),l=this.routesByPath[jt(c)],d=c.includes(`$`),f;if(l)f=l._branch??=En(l);else if(d)f=[];else{let[e,t,n]=this.getMatchedRoutes(c);f=e,this.options.notFoundRoute&&(!n||n.path!==`/`&&t[`**`])&&(f=[...f,this.options.notFoundRoute])}let p=d?l?._interpolation??gn(!1,{fullPath:c},0):void 0,h;for(let e of f){let t=e.options.params?.stringify??e.options.stringifyParams;if(t){let e=o()[3];if(h??=or(n.params,e),!u(h))break;h===e&&(h=Object.assign(_(),h));try{Object.assign(h,t(h))}catch{}}}h??=or(n.params,sr(n.params,p)?o()[3]:cr);let g=e.leaveParams?c:Vn(b(p?Rt(c,p,h,this.pathParamsDecoder):c)),v=lr(f,e._includeValidateSearch),y=()=>{let t=o()[2];if(e._includeValidateSearch&&this.options.search?.strict){let e={};f.forEach(n=>{if(n.options.validateSearch)try{Object.assign(e,ar(n.options.validateSearch,{...e,...t}))}catch{}}),t=e}return t},x=v.length?ur(v,y(),n):n.search===!0?y():typeof n.search==`function`?n.search(y()):n.search||cr,S=this.options.stringifySearch(x),C=n.hash===!0?a().hash:typeof n.hash==`function`?n.hash(a().hash):n.hash||void 0,w=C?`#${C}`:``,T=n.state?n.state===!0?a().state:typeof n.state==`function`?n.state(a().state):n.state:cr,E=`${g}${S}${w}`,D,O,ee=!1;if(this.rewrite){let e=new URL(E,this.origin),t=e.origin,n=Fn(this.rewrite,e);D=Yn(e),Jn(n,t)?(O=n.href,ee=!0):O=Vn(Yn(n))}else D=m(E),O=D;return{publicHref:O,href:D,pathname:g,search:x,searchStr:S,state:T,hash:C??``,external:ee,unmaskOnReload:n.unmaskOnReload}},r=n(e);if(e.mask)r.maskedLocation=n({from:e.from,...e.mask});else if(this.options.routeMasks){let t=bn(r.pathname,this.processedTree);if(t){let i=Object.assign(_(),t.rawParams),{from:a,params:o,...s}=t.route,c=or(o,i);r.maskedLocation=n({from:e.from,...s,params:c})}}return!t&&e._fromLocation&&!r.maskedLocation&&this.staticLocations.set(e,r),r},this.commitLocation=async({viewTransition:e,ignoreBlocker:t,...n})=>{let r=n.maskedLocation??n;if(r.external)return nr(this,r.publicHref,{replace:n.replace,ignoreBlocker:t});let i,a=jt(this.latestLocation.href)===jt(n.href)&&c(Qn(n.state),Qn(this.latestLocation.state)),o=this._commitPromise,s,l=new Promise(e=>{s=e});if(l.resolve=()=>{s(),o?.resolve()},this._commitPromise=l,a)this.load();else{let{maskedLocation:r,hashScrollIntoView:a,...o}=n;r&&(o={...r,state:{...r.state,__tempKey:void 0,__tempLocation:{...o,search:o.searchStr,state:{...o.state,__tempKey:void 0,__tempLocation:void 0,__TSR_key:void 0,key:void 0}}}},(o.unmaskOnReload??this.options.unmaskOnReload??!1)&&(o.state.__tempKey=this.tempLocationKey)),o.state={...o.state,__hashScrollIntoViewOptions:a??this.options.defaultHashScrollIntoView??!0},this.shouldViewTransition=e,i=n.replace?`REPLACE`:`PUSH`,this.history[i===`REPLACE`?`replace`:`push`](o.publicHref,o.state,{ignoreBlocker:t}),this.history.subscribers.size||this.load({action:{type:i}})}return this._scroll.next=n.resetScroll??!0,this._commitPromise},this.buildAndCommitLocation=({replace:e,resetScroll:t,hashScrollIntoView:n,viewTransition:r,ignoreBlocker:i,...a}={})=>{let o=this.buildLocation({...a,_includeValidateSearch:!0});this._pendingLocation=o;let s=this.commitLocation({...o,viewTransition:r,replace:e,resetScroll:t,hashScrollIntoView:n,ignoreBlocker:i});return queueMicrotask(()=>{this._pendingLocation===o&&(this._pendingLocation=void 0)}),s},this.navigate=async({to:e,reloadDocument:t,href:n,publicHref:r,...i})=>{let a=n?l(n):void 0;if(a||t){if(e!==void 0||!n){let t=this.buildLocation({to:e,...i}),a=t.maskedLocation??t;n??=a.publicHref,r??=a.publicHref}let t=!a&&r?r:n;return nr(this,t,i)}return this.buildAndCommitLocation({...i,href:n,to:e,_isNavigate:!0})},this.load=async e=>{this.updateLatestLocation(),e?.action&&(this._scroll.hash=e.action.type===`PUSH`||e.action.type===`REPLACE`),await ni(this,e)},this.startViewTransition=e=>{let t=this.shouldViewTransition??this.options.defaultViewTransition;if(this.shouldViewTransition=void 0,t&&typeof document.startViewTransition==`function`){let n;if(typeof t==`object`&&window.CSS?.supports?.(`selector(:active-view-transition-type(a))`)){let r=this.latestLocation,i=this.stores.resolvedLocation.get(),a=typeof t.types==`function`?t.types(Zn(r,i)):t.types;if(a===!1)return e();n={update:e,types:a}}else n=e;return document.startViewTransition(n).updateCallbackDone}return e()},this.invalidate=e=>{let t=this._committed,n=e?.filter,r=this._preloads,i=new Set,a=e=>{(!n||n(e))&&i.add(e.id)};t.forEach(a),this._cache.forEach(a),r?.forEach(e=>e.forEach(a)),this._tx?.[3].forEach(a);let o=[];for(let[e,t]of r??[])t.some(e=>i.has(e.id))&&(r.delete(e),o.push(e));let s=t=>{if(i.has(t.id)){let n=this.routesById[t.routeId],r={...t,invalid:!0,...(e?.forcePending||t.status===`error`||t.status===`notFound`)&&Xn(n)?{status:`pending`,error:void 0}:void 0};return t._flight=void 0,r}return t};this._committed=t.map(s);for(let[t,n]of this._cache)i.has(t)&&(n.invalid=!0,e?.forcePending&&(n.status=`pending`));for(let e of i)this._flights?.delete(e);for(let e of o)e.abort();return this.shouldViewTransition=!1,this.load({sync:e?.sync})},this.resolveRedirect=e=>{let t=e.options,n=e.headers.get(`Location`)||t.href;if(!n){let e=this.buildLocation(t);n=(e.maskedLocation??e).publicHref||`/`}let r;if(C.test(n)||(r=l(n))&&!this.protocolAllowlist.has(r))throw Error(`Redirect blocked: unsafe protocol`);if(r===`http:`||r===`https:`){let e=new URL(n);e.pathname.startsWith(`//`)?n=e.href:Jn(e,this.origin)||(n=Yn(e),r=void 0)}return r&&(t.reloadDocument=!0),t.href=n,e.headers.set(`Location`,n),e},this.clearCache=e=>{let t=this._cache,n=this._preloads,r=e?.filter,i=[],a=[];for(let[e,n]of t)(!r||r(n))&&(a.push(e),i.push(n));let o=[];for(let[e,t]of n??[])(!r||t.some(r))&&(o.push(e),i.push(...t));for(let e of a)t.delete(e);for(let e of o)n.delete(e);for(let e of i){let t=e._flight;e._flight=void 0,t&&!--t[2]&&(this._flights?.get(e.id)===t&&this._flights.delete(e.id),o.push(t[1]))}for(let e of o)e.abort()},this.loadRouteChunk=hr,this.preloadRoute=e=>ri(this,e),this.matchRoute=(e,t)=>{let n={...e,to:e.to?Pt(e.from||``,e.to,this.options.trailingSlash,this.resolvePathCache):void 0,params:e.params||{},leaveParams:!0},r=this.buildLocation(n),i=this.stores.status.get()===`pending`;if(t?.pending&&!i)return!1;let a=t?.pending??!i?this.latestLocation:this.stores.resolvedLocation.get()||this.stores.location.get(),o=xn(r.pathname,t?.caseSensitive??!1,t?.fuzzy??!1,a.pathname,this.processedTree);return!o||e.params&&!c(o.rawParams,e.params,!0)?!1:t?.includeSearch??!0?c(a.search,r.search,!0)?o.rawParams:!1:o.rawParams},this.getStoreConfig=t,e.pathParamsAllowedCharacters?.length&&(this.pathParamsDecoder=Ft(e.pathParamsAllowedCharacters)),this.update({defaultPreloadDelay:50,defaultPendingMs:1e3,defaultPendingMinMs:500,context:void 0,...e,caseSensitive:e.caseSensitive??!1,notFoundMode:e.notFoundMode??`fuzzy`,stringifySearch:e.stringifySearch??an,parseSearch:e.parseSearch??rn,protocolAllowlist:e.protocolAllowlist??p}),self.__TSR_ROUTER__=this}isShell(){return!!this.options.isShell}get state(){return this.stores.__store.get()}setRoutes(e){Object.assign(this,e),this.lightweightCache=new WeakMap,this.staticLocations=new WeakMap;let t=this.options.notFoundRoute;t&&(t.init(99999999999),this.routesById[t.id]!==t&&(t._interpolation=gn(!1,t,0)),this.routesById[t.id]=t)}matchRoutesInternal(e,t){let[n,r,i]=this.getMatchedRoutes(e.pathname),a=n,s=!1;(i?i.path!==`/`&&r[`**`]:jt(e.pathname))&&(this.options.notFoundRoute?a=[...a,this.options.notFoundRoute]:s=!0);let c=s?dr(this.options.notFoundMode,a):void 0,l=Array(a.length),u=this._committed,d=(e,t)=>{let n=u[t];return n?.routeId===e.id?n:e===this.options.notFoundRoute?u.find(t=>t.routeId===e.id):void 0},f;for(let n=0;ntypeof t!=`string`&&!v.call(e,t[1]))}var cr=Object.freeze({});function lr(e,t){let n=[];for(let r=0;r{let n=t(i.preSearchFilters?i.preSearchFilters.reduce((e,t)=>t(e),e):e);return i.postSearchFilters?i.postSearchFilters.reduce((e,t)=>t(e),n):n});let a=i.validateSearch;t&&a&&n.push(({search:e,next:t,meta:n})=>{let r=t(e);try{let e=ar(a,r);if(n&&e)for(let t in e)t in r||(n.defaulted||=new Map).set(t,e[t]);return{...r,...e}}catch{}return r})}return n}function ur(e,t,n){let r=(t,i,a)=>{if(t>=e.length){if(!n.search)return{};if(n.search===!0)return i;let e=S(n.search,i);return a&&(a.explicit=e),e}return e[t]({search:i,next:(e,n)=>{if(n){let n=a||{};return{search:r(t+1,e,n),meta:n}}return r(t+1,e,a)},meta:a})};return r(0,t)}function dr(e,t){if(e!==`root`){let e;for(let n=t.length-1;n>=0;n--){let r=t[n];if(r.options.notFoundComponent)return r.id;e||=r.children&&r.id}if(e)return e}return cn}function fr(e,t){let n=e.options.params?.parse??e.options.parseParams;n&&Object.assign(t,n(t))}function pr(e,t){return e.options[t]?.preload?.()}function mr(e,t){let n=pr(e,`component`),r=pr(e,`pendingComponent`);return t&&(r?r=r.then(t):t()),n&&r?Promise.all([n,r]).then(()=>{}):n??r}function hr(e,t,n){let r=()=>t===!1?void 0:t?pr(e,t):mr(e,n),i=e._lazy;if(i)return i===!0?r():i.then(r);if(!e.lazyFn)return r();let a=e.lazyFn().then(t=>{{let{id:n,...r}=t.options;Object.assign(e.options,r),e._lazy=!0}},t=>{throw e._lazy=void 0,t});return e._lazy=a,a.then(r)}function gr(e){let t=e.findIndex(e=>e.status!==`success`||e._notFound)+1;return t&&t{let i=()=>r(t);t.addEventListener(`abort`,i,{once:!0}),Promise.resolve(e).then(n,r).then(()=>t.removeEventListener(`abort`,i))})}function wr(e,t){return e.routesById[t.routeId]}function Tr(e,t,n){return un(e)?[br,e]:zt(e)?(e.routeId||=n,[yr,e]):t?(typeof e?.then==`function`&&(e=Error(`A Promise was thrown`,{cause:e})),[vr,e]):[_r,e]}function Er(e,t){let n=Tr(t,!0,e.id);if(n[0]!==vr)return n;try{e.options.onError?.(n[1])}catch(t){n=Tr(t,!0,e.id)}return n}function Dr(e,t,n,r,i){return i[0].signal.aborted?xr:Ur(e,t,n,Er(n,r),i)}async function Or(e,t,n,r,i,a){let[o,s]=t,c=n[0].signal,l=!!n[3];for(let i=n[6]??0;ie.navigate({...t,_fromLocation:o}),buildLocation:e.buildLocation,cause:l?`preload`:r.cause,abortController:n[0],preload:l,matches:s,routeId:u.id};try{let e=r._ctx||=u.options.context?u.options.context({...f,deps:r.loaderDeps,context:d})||{}:void 0;r.context={...d,...e}}catch(a){return Ar(e,r),[i,Dr(e,t,u,a,n)]}if(c.aborted)return[i,xr];let p=r.paramsError??r.searchError;if(p!==void 0)return Ar(e,r),[i,Dr(e,t,u,p,n)];let m=u.options.beforeLoad;if(!m)continue;let h=r.status;i>=a&&(r.status=`pending`,n[7]?.());try{Nr(e,r,`beforeLoad`,n[0]);let a=m({...f,search:r.search,context:r.context,...e.options.additionalContext}),o=await(typeof a?.then==`function`?Cr(a,c):a);if(c.aborted)return[i,xr];let s=Ur(e,t,u,Tr(o,!1,u.id),n);if(s[0]!==_r)return Ar(e,r),[i,s];r.context={...r.context,...o}}catch(a){return Ar(e,r),[i,Dr(e,t,u,a,n)]}finally{r.status=h,Nr(e,r,!1,n[0])}}i()}function kr(e,t,n){if(!(!n||--n[2])){if(e._flights?.get(t.id)===n){let n=e._tx;if(n&&!n[0].signal.aborted&&!n[3].includes(t)&&n[3].some(e=>e.id===t.id)&&n[3].some(e=>e.isFetching===`beforeLoad`))return;e._flights.delete(t.id)}return n[1]}}function Ar(e,t){let n=t._flight;t._flight=void 0,kr(e,t,n)?.abort()}function jr(e,t,n,r){let i=[];for(let a of t)if(!n?.includes(a)){let t=a._flight;if(a._flight=void 0,r&&t?.[2]===1&&e._flights?.get(a.id)===t&&n?.some(e=>e.id===a.id))t[2]=0;else{let n=kr(e,a,t);n&&i.push(n)}}for(let e of i)e.abort()}function Mr(e){for(let t of e){let e=t._flight;e&&e[2]++}}function Nr(e,t,n,r){if(t.isFetching=n,r&&e._tx?.[0]!==r)return;let i=e.stores.byRoute.get(t.routeId),a=i?.get();a?.id===t.id&&i.set({...a,isFetching:n})}function Pr(e,t,n,r,i,a,o){let s=t[0];return{params:n.params,location:s,navigate:t=>e.navigate({...t,_fromLocation:s}),cause:o?`preload`:n.cause,abortController:i,preload:o,deps:n.loaderDeps,parentMatchPromise:a,context:n.context,route:r,...e.options.additionalContext}}async function Fr(e,t,n,r,i,a,o){let s=o[0],c=s.signal;if(c.aborted)return xr;if(!i)return[_r,void 0];let l=n._flight;Nr(e,n,`loader`,s);try{if(!l){let s=new AbortController;l=[Promise.resolve().then(()=>i(Pr(e,t,n,r,s,a,!!o[3]))).then(e=>Tr(e,!1,r.id),e=>Tr(e,!0,r.id)).then(t=>(t[0]!==_r&&e._flights?.get(n.id)===l&&(e._flights.delete(n.id),l[2]||s.abort()),t[0]===vr&&l[2]?Er(r,t[1]):t)),s,1],(e._flights??=new Map).set(n.id,l)}return n._flight=l,n.abortController=l[1],Ur(e,t,r,await Cr(l[0],c),o)}catch(t){if(t!==c||!c.aborted)throw t;return Ar(e,n),xr}finally{Nr(e,n,!1,s)}}function Ir(e,t,n){t[0]!==br&&(e.status=`success`,e.error=void 0,t[0]===_r?(e.loaderData=t[1],e.invalid=!1,e.updatedAt=Date.now(),e.preload=n):e.invalid=!0)}function Lr(e,t,n){let r=e._cache.get(t.id);if(r!==n||e._committed.some(e=>e.id===t.id&&e._flight===t._flight))return;let i={...t,_notFound:void 0,context:{}};i._flight&&i._flight[2]++,e._cache.set(t.id,i),r&&Ar(e,r)}function Rr(e,t){return t[0]===vr||t[0]===yr?{...e,status:t[0]===vr?`error`:`notFound`,error:t[1],_flight:void 0}:e}function zr(e,t,n,r,i,a,o){let s=t[1][n],c=wr(e,s),l=!!a[3],u=e._cache.get(s.id),d,f=!1,p;try{if(s.status===`success`&&(d=c.options.shouldReload,typeof d==`function`&&(d=d(Pr(e,t,s,c,a[0],i,l))),a[0].signal.aborted&&(p=xr)),!p){if(s.status!==`success`)f=!0;else{let t=l||s.preload?c.options.preloadStaleTime??e.options.defaultPreloadStaleTime??3e4:c.options.staleTime??e.options.defaultStaleTime??0;f=!!(s.invalid||d||d===void 0&&Date.now()-s.updatedAt>=t&&(a[5]||s.cause===`enter`||a[2].some(e=>e.routeId===s.routeId&&e.id!==s.id)))}}}catch(n){s.invalid=!0,Ar(e,s),p=Dr(e,t,c,n,a)}let m=c.options.loader,h=typeof m==`function`,g=h?m:m?.handler,_=!l||c.options.preload!==!1,v=_&&m?e._flights?.get(s.id):void 0;v===s._flight||p?v=void 0:v&&!f&&!l&&d===void 0?f=!0:f||(v=void 0);let y=!(!m||!f||s.status!==`success`||l||a[4]||((h?void 0:m.staleReloadMode)??e.options.defaultStaleReloadMode)===`blocking`),b=f&&_,x=b&&!y&&(s.status!==`success`||!!m),S=n>=o?a[7]:void 0,C=c.lazyFn&&c._lazy!==!0?S:void 0;if(b&&!m&&(s.invalid=!1,s.updatedAt=Date.now()),v&&v[2]++,x){let t=s._flight;s._flight=v,kr(e,s,t)?.abort(),n>=o&&(s.status=`pending`),S?.()}b||(s.isFetching=!1);let w=!p&&x?Fr(e,t,s,c,g,i,a).then(t=>(Ir(s,t,l),t[0]===_r&&(m&&!a[0].signal.aborted&&Lr(e,s,u),n>=o&&(s.status=`pending`)),t)):Promise.resolve(p??[_r,s.loaderData]),T=(async()=>{try{let e=hr(c,void 0,C);e&&await Cr(e,a[0].signal)}catch(r){if(!t[1].some((e,t)=>t<=n&&(e.status===`error`||e.status===`notFound`||e._notFound)))return[n,Dr(e,t,c,r,a)]}let r=await w;x&&r[0]===_r&&s.status===`pending`&&!a[0].signal.aborted&&(s.status=`success`,S?.())})();if(r.push([n,w,T]),!y)return w.then(e=>Rr(s,e));let E={...s,status:`pending`,preload:!1,_flight:v};s.invalid=!1,s.isFetching=`loader`;let D=Fr(e,t,E,c,g,i,a).then(e=>(s.isFetching=!1,Ir(E,e,!1),e));return(t[2]??=[]).push([n,D,T,E]),D.then(e=>Rr(E,e))}async function Br(e,t,n,r,i=0){let a=n?.[1][1],o=a?.routeId?t.findIndex(e=>e.routeId===a.routeId):n?.[0]??t.length-1;o<0&&(o=0);for(let n=o;n>=0;n--){let i=wr(e,t[n]);try{let e=hr(i,!1);e&&await Cr(e,r)}catch(e){if(e===r&&r.aborted)throw e}if(i.options.notFoundComponent)return n}return a?.routeId?o:i}function Vr(e,t){t[2]&&=(jr(e,t[2].map(e=>e[3])),void 0)}async function Hr(e,t,n,r){let i;try{await Promise.all(e.map(e=>e[1].then(async t=>{let a=e[0];if(!(r&&a>=await r)){if(t[0]>=br)throw[a,t];!i&&t[0]!==_r&&(i=[a,t],await Promise.all((n??[]).map(e=>{if(!(e[0]<=a))return e[1].then(t=>{if(t[0]===br)throw[e[0],t]})})))}})))}catch(e){return e}return t??i}function Ur(e,t,n,r,i,a){for(;r[0]===br;){let o=r[1],s=o.options;try{if((s.href||o.headers.has(`Location`))&&(e.resolveRedirect(o),s.reloadDocument)||(s.reloadDocument?i[3]:i[1]>=20))return r;let n=e.buildLocation({...s,_fromLocation:t[0],_includeValidateSearch:!0}),a=n.maskedLocation??n;if(a.external){let t=o.clone();return t.options={...s},t.headers.set(`Location`,a.publicHref),e.resolveRedirect(t),i[3]?[br,t]:[br,t,a]}return[br,o,n]}catch(e){r=a?[vr,e]:Er(n,e),a=!0}}return r}async function Wr(e,t,n,r,i,a){let o=t[1],s=await i,c=!1,l=o.findIndex(e=>e._notFound),u=t=>t[1][0]===yr?Br(e,o,t,r.signal):t[0],d=l<0?o.length:l;if((s?.[1][0]??0)>=br)d=0;else if(s){d=s[2]??=await u(s);for(let e of n){if(e[0]>=d)break;let t=await e[1];if(t[0]!==_r&&t[0]=d)break;let t=await e[2];if(t){s=t;break}}if((s?.[1][0]??0)>=br){let n=s[1];if(n[0]!==br||n[1].options.reloadDocument||n[2])return Vr(e,t),n;c=!0,s=[0,[vr,Error(`Too many redirects`)]]}let f=s?s[2]??await u(s):l;if(f>=0){let i=s?.[1],l=i?.[0],u=o[f],d=i?.[1],p=()=>{i&&(u._notFound=void 0,l===vr?u.status=`error`:(d.routeId=u.routeId,u.routeId===e.routeTree.id?(u.status=`success`,u._notFound=!0):u.status=`notFound`),u.error=d,u.isFetching=!1)};p(),i||a?.();let m=wr(e,u);try{await Cr(i?Promise.resolve().then(()=>hr(m,l===vr?`errorComponent`:`notFoundComponent`)):Promise.all([hr(m),hr(m,`notFoundComponent`)]),r.signal)}catch(n){if(n===r.signal&&r.signal.aborted)return Vr(e,t),xr}i?c&&(r.abort(),await Promise.all([...n.map(e=>e[1]),...n.map(e=>e[2]),...(t[2]??[]).map(e=>e[1])]),Vr(e,t),jr(e,o),p()):u.status=`success`}return t}async function Gr(e,t,n,r=0,i=t[1].length){let a=t[1];for(let t=r;te._notFound);if(e.options.notFoundMode!==`root`&&s>=0){let t=await Br(e,n,void 0,a,s);n[s]._notFound=void 0,n[t]._notFound=!0,s=t}let c=s<0?n.length:s+1,l=0;for(;l{for(let t=d;t=br&&(c=0);p()}if(!a.aborted&&!r[3]){let t=[];for(let[n,r]of e._flights??[])r[2]||(e._flights.delete(n),t.push(r[1]));for(let e of t)e.abort()}let h=Wr(e,i,u,r[0],Hr(u,m,i[2]),r[7]);i[2]?.length&&(i[3]=Hr(i[2],void 0,void 0,h.then(e=>Sr(e)?0:gr(n).length,()=>0))),o=await h}catch(t){if(Vr(e,i),t===a&&a.aborted)return xr;throw t}return Sr(o)?o:Gr(e,o,a,r[6]===n.length?r[6]:0)}function qr(e,t){if(e._tx!==t)return;let n=t[3],r=e.stores.matches.get(),i=e._pending;for(let a=0;a0){i[3]=setTimeout(()=>qr(e,t),n);return}i[2]=0}let m=n.map(e=>({...e,_flight:void 0}));m[a].status=`pending`;let h=i[4]=e.startTransition(()=>e.stores.setMatches(m),m).then(t=>(t&&e._pending===i&&i[4]===h&&!i[2]&&(i[2]=Date.now()+f),t));return}}function Jr(e,t){let n=e._pending;(e._tx===t||!e._tx?.[3].some(e=>e.id===n?.[1]))&&(clearTimeout(n?.[3]),e._pending=void 0)}async function Yr(e,t){let n=e._pending;if(!n)return;clearTimeout(n[3]);let r=n[2]-Date.now();if(!n[4]||r<=0||!gr(t[3]).some(e=>e.id===n[1]))return;let i;try{await Cr(new Promise(e=>{i=setTimeout(e,r)}),t[0].signal)}catch{}clearTimeout(i)}function Xr(e,t){e._committed=t,e.stores.setMatches(t)}function Zr(e,t,n,r){let i=e._committed,a=e._lifecycleEnd,o=e._cache;for(let e of n)e.preload=!1,r&&(e._assetEnd=void 0);let s=gr(n).length,c=new Map;{let t=Date.now(),r=new Set;for(let e=0;e=(n.preload?i.options.preloadGcTime??e.options.defaultPreloadGcTime??3e5:i.options.gcTime??e.options.defaultGcTime??3e5)||c.set(n.id,o.get(n.id)===n?n:{...n,_flight:void 0,isFetching:!1,context:{}})}}t[3]=[],e._cache=c;let l=e._lifecycleEnd=$n(n);Xr(e,n),jr(e,[...o.values(),...i].filter(e=>e._flight&&c.get(e.id)!==e),n),er(e,i,n,a,l,t)}async function Qr(e,t){let n=e._tx;for(;n&&n!==t;)t=n,await n[5],n=e._tx}function $r(e,t,n){let r=n[1].options,i=n[2];if(!i)return e.navigate({...r,replace:!0,ignoreBlocker:!0});if(r.reloadDocument)return e.navigate({href:(i.maskedLocation??i).publicHref,reloadDocument:!0,replace:!0,ignoreBlocker:!0});i._redirects=t[1]+1,e._pendingLocation=i;let a=e.commitLocation({...i,viewTransition:r.viewTransition,replace:!0,resetScroll:r.resetScroll,hashScrollIntoView:r.hashScrollIntoView,ignoreBlocker:!0});return queueMicrotask(()=>{e._pendingLocation===i&&(e._pendingLocation=void 0)}),a}async function ei(e,t,n,r,i){let a=n.map(e=>({...e}));Mr(a);for(let t of r)Ar(e,a[t[0]]),a[t[0]]=t[3];let o=[t[2],a],s;try{s=await Wr(e,o,r,t[0],i)}catch(t){throw jr(e,a),t}if(Sr(s)){jr(e,a),s[0]===br&&e._tx===t&&e._committed===n&&await $r(e,t,s);return}if(await Gr(e,s,t[0].signal),e._tx!==t||e._committed!==n){jr(e,a);return}for(let t of a){let n=e._cache.get(t.id);n?._flight&&n._flight===t._flight&&(e._cache.delete(t.id),Ar(e,n))}Xr(e,a),jr(e,n,a)}async function ti(e,t,n,r,i,a){let o=await Kr(e,t[2],t[3],[t[0],t[1],e._committed,void 0,i,n,a,r]);if(Sr(o)){let n=o[0]===br&&e._tx===t;if((!n||o[1].options.reloadDocument)&&Jr(e,t),jr(e,t[3]),t[3]=[],!n)return;if(e._tx!==t){Jr(e,t);return}await $r(e,t,o);return}let s=o[1];if(e._tx===t&&await Yr(e,t),e._tx!==t){Jr(e,t),jr(e,s),Vr(e,o);return}let c=t[2],l=Zn(c,e.stores.resolvedLocation.get()),u=o[2];await e.startViewTransition(async()=>{if(e._tx===t&&await Yr(e,t),e._tx!==t){Jr(e,t),jr(e,s),Vr(e,o);return}let n=await e.startTransition(()=>{Jr(e,t),Zr(e,t,s,a),e._tx===t&&(e.emit({type:`onLoad`,...l}),e._tx===t&&e.emit({type:`onBeforeRouteMount`,...l}))},s);if(e._tx!==t){Vr(e,o);return}u?.length&&ei(e,t,s,u,o[3]).catch(console.error),e.batch(()=>{e.stores.resolvedLocation.set(c),e.stores.status.set(`idle`),e._tx===t&&e.emit({type:`onResolved`,...l}),n&&e._tx===t&&e.emit({type:`onRendered`,...l})}),e._tx===t&&(e._commitPromise?.resolve(),e._commitPromise=void 0)})}async function ni(e,t){let n=e._tx,r=e.stores.resolvedLocation.get(),i=r??e.stores.location.get(),a=e.latestLocation,o=e._pendingLocation,s=o?.href===a.href?o._redirects??0:0,c=e._handoff,l=c?.[0](),u=new AbortController,d=e._preflight;if(e._preflight=u,l||c?.[1](),d?.abort(),!u.signal.aborted){let t=Zn(a,r);e.emit({type:`onBeforeNavigate`,...t}),u.signal.aborted||e.emit({type:`onBeforeLoad`,...t})}if(u.signal.aborted){await Qr(e,n);return}let f=i.href===a.href,p=u,m=e.matchRoutes(a,{_controller:u});Mr(m);let h=l?c[1](m):void 0;if(h?p=l:l?.abort(),u.signal.aborted){jr(e,m),await Qr(e,n);return}e._preflight=void 0;let g,_=()=>ti(e,y,f,()=>qr(e,y),t?.sync,h),v=t?.sync?new Promise(e=>g=e):Promise.resolve().then(_),y=[p,s,a,m,Date.now(),v.then(()=>Qr(e,y))];if(e._tx=y,n){for(let t of e.stores.matches.get()){if(e._tx!==y)break;t.isFetching&&Nr(e,t,!1)}n[0].abort(),jr(e,n[3],y[3],!0)}if(e._tx!==y){jr(e,y[3]),y[3]=[],g?.(),await Qr(e,y);return}e.batch(()=>{e.stores.status.set(`pending`),e.stores.location.set(a)}),(h||!e._committed.length&&m[0]?.status!==`success`&&!m.some(e=>e._notFound))&&qr(e,y),g?.(_()),await y[5]}async function ri(e,t){let n=e.buildLocation(t);for(let t=0;;t++){let r=e._committed,i=new AbortController,a,o,s;try{try{a=e.matchRoutes(n,{_controller:i}),Mr(a),o=(e._preloads??=new Map).set(i,a),s=await Kr(e,n,a,[i,t,r,!0])}finally{o&&(o=o.delete(i),jr(e,a)),i.abort()}if(!Sr(s))return s[1];if(!o||s.length<3)return;n=s[2]}catch(e){zt(e)||console.error(e);return}}}var ii=`Error preloading route! ☝️`,ai=class{get to(){return this._to}get id(){return this._id}get path(){return this._path}get fullPath(){return this._fullPath}constructor(e){if(this.init=e=>{this.originalIndex=e,this._branch=void 0;let t=this.options,n=!t?.path&&!t?.id;this.parentRoute=this.options.getParentRoute?.(),n?this._path=cn:this.parentRoute||T();let r=n?cn:t?.path;r&&r!==`/`&&(r=At(r));let i=t?.id||r,a=n?cn:kt((this.parentRoute.id===`__root__`?``:this.parentRoute.id)+`/`+(i??``));r===`__root__`&&(r=`/`);let o=a===`__root__`?`/`:r===void 0?this.parentRoute.fullPath:kt(this.parentRoute.fullPath+`/`+r);this._path=r,this._id=a,this._fullPath=o,this._to=jt(o)},this.addChildren=e=>this._addFileChildren(e),this._addFileChildren=e=>(Array.isArray(e)&&(this.children=e),typeof e==`object`&&e&&(this.children=Object.values(e)),this),this._addFileTypes=()=>this,this.updateLoader=e=>(Object.assign(this.options,e),this),this.update=e=>(Object.assign(this.options,e),this),this.lazy=e=>(this.lazyFn=e,this),this.redirect=e=>ln({from:this.fullPath,...e}),this.options=e||{},this.isRoot=!e?.getParentRoute,e?.id&&e?.path)throw Error(`Route cannot have both an 'id' and a 'path' option.`)}},oi=class extends ai{constructor(e){super(e)}},si=class extends k.Component{constructor(...e){super(...e),this.state={error:0},this.reset=()=>{this.setState({error:0})}}static getDerivedStateFromProps(e,t){let n=e.getResetKey();return t.error&&t.resetKey!==n?{resetKey:n,error:0}:{resetKey:n}}static getDerivedStateFromError(e){return{error:[e]}}componentDidCatch(e,t){this.props.onCatch?.(e,t)}render(){let e=this.state.error;return e?k.createElement(this.props.errorComponent??ci,{error:e[0],reset:this.reset}):this.props.children}};function ci({error:e}){let[t,n]=k.useState(!1);return(0,A.jsxs)(`div`,{style:{padding:`.5rem`,maxWidth:`100%`},children:[(0,A.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`.5rem`},children:[(0,A.jsx)(`strong`,{style:{fontSize:`1rem`},children:`Something went wrong!`}),(0,A.jsx)(`button`,{style:{appearance:`none`,fontSize:`.6em`,border:`1px solid currentColor`,padding:`.1rem .2rem`,fontWeight:`bold`,borderRadius:`.25rem`},onClick:()=>n(e=>!e),children:t?`Hide Error`:`Show Error`})]}),(0,A.jsx)(`div`,{style:{height:`.25rem`}}),t?(0,A.jsx)(`div`,{children:(0,A.jsx)(`pre`,{style:{fontSize:`.7em`,border:`1px solid red`,borderRadius:`.25rem`,padding:`.3rem`,color:`red`,overflow:`auto`},children:e?.message?(0,A.jsx)(`code`,{children:e.message}):null})}):null]})}var li=()=>!0,ui=()=>!1;function di({children:e,fallback:t=null}){return(0,A.jsx)(k.Fragment,{children:fi()?e:t})}function fi(e=!0){return k.useSyncExternalStore(pi,li,e?ui:li)}function pi(){return()=>{}}function mi({update:e,notify:t,unwatched:n}){return{link:r,unlink:i,propagate:a,checkDirty:o,shallowPropagate:s};function r(e,t,n){let r=t.depsTail;if(r!==void 0&&r.dep===e)return;let i=r===void 0?t.deps:r.nextDep;if(i!==void 0&&i.dep===e){i.version=n,t.depsTail=i;return}let a=e.subsTail;if(a!==void 0&&a.version===n&&a.sub===t)return;let o=t.depsTail=e.subsTail={version:n,dep:e,sub:t,prevDep:r,nextDep:i,prevSub:a,nextSub:void 0};i!==void 0&&(i.prevDep=o),r===void 0?t.deps=o:r.nextDep=o,a===void 0?e.subs=o:a.nextSub=o}function i(e,t=e.sub){let r=e.dep,i=e.prevDep,a=e.nextDep,o=e.nextSub,s=e.prevSub;return a===void 0?t.depsTail=i:a.prevDep=i,i===void 0?t.deps=a:i.nextDep=a,o===void 0?r.subsTail=s:o.prevSub=s,s===void 0?(r.subs=o)===void 0&&n(r):s.nextSub=o,a}function a(e){let n=e.nextSub,r;top:do{let i=e.sub,a=i.flags;if(a&60?a&12?a&4?!(a&48)&&c(e,i)?(i.flags=a|40,a&=1):a=0:i.flags=a&-9|32:a=0:i.flags=a|32,a&2&&t(i),a&1){let t=i.subs;if(t!==void 0){let i=(e=t).nextSub;i!==void 0&&(r={value:n,prev:r},n=i);continue}}if((e=n)!==void 0){n=e.nextSub;continue}for(;r!==void 0;)if(e=r.value,r=r.prev,e!==void 0){n=e.nextSub;continue top}break}while(1)}function o(t,n){let r,i=0,a=!1;top:do{let o=t.dep,c=o.flags;if(n.flags&16)a=!0;else if((c&17)==17){if(e(o)){let e=o.subs;e.nextSub!==void 0&&s(e),a=!0}}else if((c&33)==33){(t.nextSub!==void 0||t.prevSub!==void 0)&&(r={value:t,prev:r}),t=o.deps,n=o,++i;continue}if(!a){let e=t.nextDep;if(e!==void 0){t=e;continue}}for(;i--;){let i=n.subs,o=i.nextSub!==void 0;if(o?(t=r.value,r=r.prev):t=i,a){if(e(n)){o&&s(i),n=t.sub;continue}a=!1}else n.flags&=-33;n=t.sub;let c=t.nextDep;if(c!==void 0){t=c;continue top}}return a}while(1)}function s(e){do{let n=e.sub,r=n.flags;(r&48)==32&&(n.flags=r|16,(r&6)==2&&t(n))}while((e=e.nextSub)!==void 0)}function c(e,t){let n=t.depsTail;for(;n!==void 0;){if(n===e)return!0;n=n.prevDep}return!1}}function hi(e,t,n){let r=typeof e==`object`,i=r?e:void 0;return{next:(r?e.next:e)?.bind(i),error:(r?e.error:t)?.bind(i),complete:(r?e.complete:n)?.bind(i)}}var gi=[],_i=0,{link:vi,unlink:yi,propagate:bi,checkDirty:xi,shallowPropagate:Si}=mi({update(e){return e._update()},notify(e){gi[wi++]=e,e.flags&=-3},unwatched(e){e.depsTail!==void 0&&(e.depsTail=void 0,e.flags=17,Oi(e))}}),Ci=0,wi=0,Ti,Ei=0;function Di(e){try{++Ei,e()}finally{--Ei||ki()}}function Oi(e){let t=e.depsTail,n=t===void 0?e.deps:t.nextDep;for(;n!==void 0;)n=yi(n,e)}function ki(){if(!(Ei>0)){for(;Ci{i.get(),n.current?t.next?.(i._snapshot):n.current=!0});return{unsubscribe:()=>{r.stop()}}},_update(e){let a=Ti,o=t?.compare??Object.is;if(n)Ti=i,++_i,i.depsTail=void 0;else if(e===void 0)return!1;n&&(i.flags=5);try{let t=i._snapshot,a=typeof e==`function`?e(t):e===void 0&&n?r(t):e;return t===void 0||!o(t,a)?(i._snapshot=a,!0):!1}finally{Ti=a,n&&(i.flags&=-5),Oi(i)}}};return n?(i.flags=17,i.get=function(){let e=i.flags;if(e&16||e&32&&xi(i.deps,i)){if(i._update()){let e=i.subs;e!==void 0&&Si(e)}}else e&32&&(i.flags=e&-33);return Ti!==void 0&&vi(i,Ti,_i),i._snapshot}):i.set=function(e){if(i._update(e)){let e=i.subs;e!==void 0&&(bi(e),Si(e),ki())}},i}function ji(e){let t=()=>{let t=Ti;Ti=n,++_i,n.depsTail=void 0,n.flags=6;try{return e()}finally{Ti=t,n.flags&=-5,Oi(n)}},n={deps:void 0,depsTail:void 0,subs:void 0,subsTail:void 0,flags:6,notify(){let e=this.flags;e&16||e&32&&xi(this.deps,this)?t():this.flags=2},stop(){this.flags=0,this.depsTail=void 0,Oi(this)}};return t(),n}function Mi(e){return O({from:e.from,strict:e.strict,structuralSharing:e.structuralSharing,select:t=>e.select?e.select(t.loaderData):t.loaderData})}function Ni(e){let{select:t,...n}=e;return O({...n,select:e=>t?t(e.loaderDeps):e.loaderDeps})}function Pi(e){return O({from:e.from,shouldThrow:e.shouldThrow,structuralSharing:e.structuralSharing,strict:e.strict,select:t=>{let n=e.strict===!1?t.params:t._strictParams;return e.select?e.select(n):n}})}function Fi(e){return O({from:e.from,strict:e.strict,shouldThrow:e.shouldThrow,structuralSharing:e.structuralSharing,select:t=>e.select?e.select(t.search):t.search})}function Ii(e){let t=g();return k.useCallback(n=>t.navigate({...n,from:n.from??e?.from}),[e?.from,t])}function Li(e){let t=g(),n=Ii(),r=k.useRef(null);return Ot(()=>{r.current!==e&&(n(e),r.current=e)},[t,e,n]),null}function Ri(e){return O({...e,select:t=>e.select?e.select(t.context):t.context})}function zi(...e){let t=k.useRef(e),n=t.current;return e.forEach((e,t)=>{c(n[t],e,!1,!0)||(n[t]=e)}),t.current}function Bi(e,t){e.preloadRoute(t).catch(e=>{console.warn(e),console.warn(ii)})}var Vi={compare:(e,t)=>e[0]===t[0]&&e[1]===t[1]};function Hi(e,t){let n=typeof e==`string`&&l(e);if(n)return t.has(n)?e:null}function Ui(e,t,n,r,i){let a=Nt(e.pathname,r),o=Nt(t.pathname,r);return(n?.exact?a!==o:!a.startsWith(o)||a.length!==o.length&&a[o.length]!==`/`)||(n?.includeSearch??!0)&&!c(e.search,t.search,!n?.exact,n?.explicitUndefined)?!1:!n?.includeHash||i&&e.hash===t.hash}function Wi(e,t,n){let r=g(),i=k.useRef(null),a=k.useCallback(e=>{if(i.current=e,typeof t==`function`)return t(e);t&&(t.current=e)},[t]),{activeOptions:o,to:s,preload:c,preloadDelay:u,hashScrollIntoView:d,replace:f,startTransition:p,resetScroll:m,viewTransition:h,ignoreBlocker:_,disabled:v,target:y,onClick:b,onBlur:S,onFocus:C,onMouseEnter:w,onMouseLeave:T,onTouchStart:E}=e,D=fi(!!o?.includeHash),[O,ee,te]=zi(e.search,e.params,o),[ne,re]=k.useMemo(()=>[e,{...e}],[r,e.from,e._fromLocation,e.hash,e.to,O,ee,e.state,e.mask,e.unsafeRelative]),ie=k.useCallback(e=>{let t=Hi(s,r.protocolAllowlist);if(t!==void 0)return[t??void 0];ne._fromLocation||(re._fromLocation=e);let n=r.buildLocation(re),i=$i(n,r,v);return[i,!v&&(!i||l(i))?void 0:Ui(e,n,te,r.basepath,D)]},[te,v,D,ne,re,r,s]),[ae,A]=x(r.stores.location,ie,Vi),oe=A===void 0?ae:void 0,se=v||ae===void 0,ce=k.useRef(!1),le=e.reloadDocument||oe||se?!1:c??r.options.defaultPreload,ue=u??r.options.defaultPreloadDelay??0,de=k.useCallback(e=>{let t=e?.isIntersecting;if(!(t??le===`intent`)){t===!1&&Zi(i);return}if(!ue){Bi(r,ne);return}Xi.has(i)||Xi.set(i,setTimeout(()=>{Xi.delete(i),Bi(r,ne)},ue))},[r,ne,i,le,ue]);k.useEffect(()=>{le===`render`&&!ce.current&&(ce.current=!0,Bi(r,ne));let e;return le===`viewport`&&i.current&&typeof IntersectionObserver==`function`&&(e=new IntersectionObserver(e=>de(e.pop()),{rootMargin:`100px`}),e.observe(i.current)),()=>{e?.disconnect(),Zi(i)}},[r,ne,le,de,i]);let fe=Ji(e,n);if(fe.ref=t?a:i,oe)return fe.href=oe,fe;let j=e=>{let t=y??e.currentTarget.getAttribute(`target`);!se&&!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&(!t||t===`_self`)&&e.button===0&&(e.preventDefault(),r.navigate({...ne,replace:f,resetScroll:m,hashScrollIntoView:d,startTransition:p,viewTransition:h,ignoreBlocker:_}))},pe=()=>{le===`intent`&&Bi(r,ne)},me=()=>{le===`intent`&&Zi(i)};return fe.onClick=Qi(b,j),fe.onBlur=Qi(S,me),fe.onFocus=Qi(C,de),fe.onMouseEnter=Qi(w,de),fe.onMouseLeave=Qi(T,me),fe.onTouchStart=Qi(E,pe),Yi(fe,e,A,ae,se,n)}var Gi={},Ki={className:`active`},qi=new Set([`to`,`params`,`search`,`hash`,`state`,`mask`,`from`,`unsafeRelative`,`_fromLocation`,`reloadDocument`,`preload`,`preloadDelay`,`preloadIntentProximity`,`hashScrollIntoView`,`replace`,`startTransition`,`resetScroll`,`viewTransition`,`ignoreBlocker`,`activeProps`,`inactiveProps`,`activeOptions`,`_asChild`]);function Ji(e,t){let n={};for(let r in e)qi.has(r)||r===`type`&&t!==void 0||r===`disabled`&&t===`a`||(n[r]=e[r]);return n}function Yi(e,t,n,r,i,a){let{activeProps:o,inactiveProps:s,className:c,style:l,target:u}=t,d=S(n?o:s,{})??(n?Ki:Gi);Object.assign(e,d),e.href=r,a!==`a`&&(e.disabled=i),e.target=u;let f=d.style;(l||f)&&(e.style=l&&f?{...l,...f}:l||f);let p=d.className;return(c||p)&&(e.className=c?p?`${c} ${p}`:c:p),i&&(e.role=`link`,e[`aria-disabled`]=!0),n&&(e[`data-status`]=`active`,e[`aria-current`]=`page`),e}var Xi=new WeakMap,Zi=e=>{clearTimeout(Xi.get(e)),Xi.delete(e)},Qi=(e,t)=>e?n=>n.defaultPrevented||(e(n),n.defaultPrevented||t(n)):t;function $i(e,t,n){if(n)return;let r=e.maskedLocation??e,i=r.external?r.publicHref:t.history.createHref(r.publicHref)||`/`;if(!r.external&&i===r.publicHref||!h(i,t.protocolAllowlist))return i}var ea=k.memo(k.forwardRef((e,t)=>{let n=e._asChild||`a`,r=Wi(e,t,n),i=typeof e.children==`function`?e.children({isActive:r[`data-status`]===`active`}):e.children;return k.createElement(n,r,i)}),ta);function ta(e,t){let n=0;for(let r in t)if(n++,e[r]!==t[r]&&(!qi.has(r)||!c(e[r],t[r],!1,!0)))return!1;for(let t in e)n--;return n===0}var na=class extends ai{constructor(e){super(e),this.useMatch=e=>O({...e,from:this.id}),this.useRouteContext=e=>Ri({...e,from:this.id}),this.useSearch=e=>Fi({...e,from:this.id}),this.useParams=e=>Pi({...e,from:this.id}),this.useLoaderDeps=e=>Ni({...e,from:this.id}),this.useLoaderData=e=>Mi({...e,from:this.id}),this.useNavigate=()=>Ii({from:this.fullPath}),this.Link=k.forwardRef((e,t)=>(0,A.jsx)(ea,{ref:t,from:this.fullPath,...e}))}};function ra(e){return new na(e)}var ia=class extends oi{constructor(e){super(e),this.useMatch=e=>O({...e,from:this.id}),this.useRouteContext=e=>Ri({...e,from:this.id}),this.useSearch=e=>Fi({...e,from:this.id}),this.useParams=e=>Pi({...e,from:this.id}),this.useLoaderDeps=e=>Ni({...e,from:this.id}),this.useLoaderData=e=>Mi({...e,from:this.id}),this.useNavigate=()=>Ii({from:this.fullPath}),this.Link=k.forwardRef((e,t)=>(0,A.jsx)(ea,{ref:t,from:this.fullPath,...e}))}};function aa(e){return new ia(e)}function R(e,t){let n,r,i,a=()=>(n||=(i=void 0,e().then(e=>{n=void 0,o.preload=void 0,r=e[t??`default`]}).catch(e=>{n=void 0,i=e})),n),o=function(e){if(i){if(f(i)&&typeof sessionStorage<`u`){let e=`tanstack_router_reload:${i.message}`;if(!sessionStorage.getItem(e))throw sessionStorage.setItem(e,`1`),window.location.reload(),new Promise(()=>{})}throw i}if(!r){if(Dt)Dt(a());else throw a()}return k.createElement(r,e)};return o.preload=a,o}function z(e){let t=g(),n=`not-found-${x(t.stores.location,e=>e.pathname)}-${x(t.stores.status)}`;return(0,A.jsx)(si,{getResetKey:()=>n,onCatch:(t,n)=>{if(zt(t))e.onCatch?.(t,n);else throw t},errorComponent:({error:t})=>{if(zt(t))return e.fallback?.(t);throw t},children:e.children})}function oa(){return(0,A.jsx)(`p`,{children:`Not Found`})}function sa(e){return(0,A.jsx)(A.Fragment,{children:e.children})}function ca(e,t,n){return t.options.notFoundComponent?(0,A.jsx)(t.options.notFoundComponent,{...n}):e.options.defaultNotFoundComponent?(0,A.jsx)(e.options.defaultNotFoundComponent,{...n}):(0,A.jsx)(oa,{})}function la(e,t){let n=t?.options.pendingComponent??e.options.defaultPendingComponent;return n?(0,A.jsx)(n,{}):null}var ua=(e,t)=>e[0]===t[0]&&e[1]===t[1],da=(e,t,n)=>!t.isRoot||t.options.shellComponent||t.options.wrapInSuspense||n===!1||n===`data-only`||!e.ssr,fa=k.memo(function({routeId:e}){let t=g();return(0,A.jsx)(pa,{router:t,match:x(t.stores.getMatchStore(e))})});function pa({router:e,match:t}){let n=e.routesById[t.routeId],r=la(e,n),i=n.options.errorComponent??e.options.defaultErrorComponent,a=n.options.onCatch??e.options.defaultOnCatch,o=n.isRoot?n.options.notFoundComponent??e.options.notFoundRoute?.options.component:n.options.notFoundComponent,s=t.ssr===!1||t.ssr===`data-only`,c=da(e,n,t.ssr)&&(n.options.wrapInSuspense??r??(n.options.errorComponent?.preload||s))?k.Suspense:sa,l=i?si:sa,u=o?z:sa;return(0,A.jsxs)(n.isRoot?n.options.shellComponent??sa:sa,{children:[(0,A.jsx)(D.Provider,{value:t.routeId,children:(0,A.jsx)(c,{fallback:r,children:(0,A.jsx)(l,{getResetKey:()=>t,errorComponent:i,onCatch:(e,n)=>{if(zt(e))throw e.routeId??=t.routeId,e;a?.(e,n)},children:(0,A.jsx)(u,{fallback:e=>{if(e.routeId??=t.routeId,e.routeId!==t.routeId)throw e;return k.createElement(o,e)},children:s?(0,A.jsx)(di,{fallback:r,children:(0,A.jsx)(ma,{match:t})}):(0,A.jsx)(ma,{match:t})})})})}),null]})}var ma=k.memo(function({match:e}){let t=g(),n=e.routeId,r=t.routesById[n],i=k.useMemo(()=>{let i=(r.options.remountDeps??t.options.defaultRemountDeps)?.({routeId:n,loaderDeps:e.loaderDeps,params:e._strictParams,search:e._strictSearch});return i?JSON.stringify(i):void 0},[n,e.loaderDeps,e._strictParams,e._strictSearch,r.options.remountDeps,t.options.defaultRemountDeps]),a=k.useMemo(()=>{let e=r.options.component??t.options.defaultComponent;return e?(0,A.jsx)(e,{},i):(0,A.jsx)(ha,{})},[i,r.options.component,t.options.defaultComponent]);if(e.status===`pending`){if(t.ssr&&!da(t,r,e.ssr))return a;if(t._tx)throw t._tx[5];return la(t,r)}if(e.status===`notFound`)return ca(t,r,e.error);if(e.status===`error`)throw e.error;return a}),ha=k.memo(function(){let e=g(),t=k.useContext(D),n,r,i;{let a=e.stores.getMatchStore(t);[n,r]=x(a,e=>[!!e._notFound,e.error],{compare:ua}),i=x(e.stores.ids,e=>e[e.indexOf(t)+1])}if(n)return ca(e,e.routesById[t],r);if(!i)return null;let a=(0,A.jsx)(fa,{routeId:i});return t===`__root__`?(0,A.jsx)(k.Suspense,{fallback:la(e),children:a}):a});function ga(e,t){let n=e[1];e.length=0,n?.(t)}function _a({t:e}){let t=g(),n=t._rendered??=[];return t.startTransition=(r,i)=>new Promise(a=>{ga(n,!1),n.push(i,a),e(t),k.startTransition(r)}),Ot(()=>{let e=t.history.subscribe(t.load);t.updateLatestLocation();let r=t.latestLocation,i=t.buildLocation({to:r.pathname,search:!0,params:!0,hash:!0,state:!0,_includeValidateSearch:!0});if(jt(r.publicHref)!==jt(i.publicHref))return t.commitLocation({...i,replace:!0,ignoreBlocker:!0}),e;let a=t.stores.resolvedLocation.get();return a?.href===r.href&&a.state.__TSR_key===r.state.__TSR_key?n.push(t.stores.matches.get(),e=>{e&&t.emit({type:`onRendered`,...Zn(a,a)})}):t._tx||t.load({sync:!0}).catch(console.error),e},[t,t.history]),null}function va(){let e=g(),t=e.routesById[cn],n=la(e,t),r=e.ssr?sa:k.Suspense,i=(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(_a,{t:k.useState()[1]}),(0,A.jsx)(r,{fallback:n,children:(0,A.jsx)(ya,{})})]});return e.options.InnerWrap?(0,A.jsx)(e.options.InnerWrap,{children:i}):i}function ya(){let e=g(),t=e._rendered,n=x(e.stores.matches,e=>t[0]??e),r=n[0],i=r?.routeId;Ot(()=>{t[0]===n&&ga(t,!0)},[t,n]);let a=i?(0,A.jsx)(fa,{routeId:i}):null;return(0,A.jsx)(D.Provider,{value:i,children:e.options.disableGlobalCatchBoundary?a:(0,A.jsx)(si,{getResetKey:()=>r,onCatch:void 0,children:a})})}var ba=e=>({createMutableStore:Ai,createReadonlyStore:Ai,batch:Di}),xa=e=>new Sa(e),Sa=class extends tr{constructor(e){super(e,ba)}};function Ca({router:e,children:t,...n}){u(n)&&e.update({...e.options,...n,context:{...e.options.context,...n.context}});let r=(0,A.jsx)(y.Provider,{value:e,children:t});return e.options.Wrap?(0,A.jsx)(e.options.Wrap,{children:r}):r}function wa({router:e,...t}){return(0,A.jsx)(Ca,{router:e,...t,children:(0,A.jsx)(va,{})})}function Ta(e){let t=g({warn:e?.router===void 0}),n=e?.router||t;return x(n.stores.__store,E(e,n))}var Ea=ae(),B=n();function Da(e){let t=(0,B.c)(6),{error:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,A.jsx)(`p`,{className:`schild text-lg text-rot`,children:`Diese Ansicht ist abgestürzt`}),t[0]=r):r=t[0];let i=n instanceof Error?n.message:String(n),a;t[1]===i?a=t[2]:(a=(0,A.jsx)(`p`,{className:`text-[15px]`,children:i}),t[1]=i,t[2]=a);let o;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,A.jsx)(`button`,{type:`button`,onClick:Oa,className:`schild h-11 rounded-lg border border-rot-rand px-5 text-sm text-foreground hover:bg-[#3a1512]`,children:`Neu laden`}),t[3]=o):o=t[3];let s;return t[4]===a?s=t[5]:(s=(0,A.jsxs)(`div`,{role:`alert`,className:`flex flex-col items-start gap-3 rounded-2xl border border-rot-rand bg-rot-grund p-6 text-rot-text`,children:[r,a,o]}),t[4]=a,t[5]=s),s}function Oa(){return window.location.reload()}var ka=e=>e?.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase();function Aa(e,t,n=[]){if(t==null)throw Error(`[lucide]: iconNode is required when icon name is used`);return{name:ka(e),size:24,node:t,...n.length>0?{aliases:n}:{}}}var ja=e=>{let t=``,n=!1;for(let r of e){if(r===`-`||r===`_`||r<=` `){n=t.length>0;continue}t.length===0?t+=r.toLowerCase():t+=n?r.toUpperCase():r,n=!1}return t},Ma=e=>{let t=ja(e);return t.charAt(0).toUpperCase()+t.slice(1)},Na=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),Pa={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`};function Fa(e){return e!=null}function Ia(e,t={}){let n=t.attributeNames??{},r=e=>n[e]??e,i=e.size??e.width??Pa.width,a=e.size??e.height??Pa.height,o=e.aliases?.filter(e=>typeof e==`string`&&e.trim()!==``).map(e=>`lucide-${e}`)??[],s=[...e.name?[`lucide-${e.name}`]:[],...o],c=t.className?.split(` `).filter(Boolean)??[],l=t.includeDefaultClasses===!1?Na(...c):Na(`lucide`,...s,...c),u=t.absoluteStrokeWidth?Number(t.strokeWidth??Pa[`stroke-width`])*Number(e.size??e.width??Pa.width)/Number(t.size??t.width??Pa.width):t.strokeWidth??Pa[`stroke-width`];return[`svg`,{...Object.entries(Pa).reduce((e,[t,n])=>(e[r(t)]=n,e),{}),...`color`in t&&t.color&&{[r(`stroke`)]:t.color},...`size`in t&&Fa(t.size)&&{[r(`width`)]:t.size,[r(`height`)]:t.size},...`width`in t&&Fa(t.width)&&{[r(`width`)]:t.width},...`height`in t&&Fa(t.height)&&{[r(`height`)]:t.height},[r(`stroke-width`)]:u,...l&&{[r(`class`)]:l},[r(`viewBox`)]:`0 0 ${i} ${a}`,...t.hasA11yProp===!1?{[r(`aria-hidden`)]:`true`}:{},...`attributes`in t&&t.attributes},e.node.map(e=>{let[n,i,a]=e,o=t.nonScalingStroke?{[r(`vector-effect`)]:`non-scaling-stroke`,...i}:i;return a?[n,o,a]:[n,o]})]}function La(e,t={}){return Ia(e,{...t,attributeNames:{...t.attributeNames,class:`className`,"stroke-width":`strokeWidth`,"stroke-linecap":`strokeLinecap`,"stroke-linejoin":`strokeLinejoin`,"vector-effect":`vectorEffect`}})}var Ra=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},za=(0,k.createContext)({}),Ba=()=>(0,k.useContext)(za),Va=(0,k.forwardRef)(({color:e,size:t,width:n,height:r,strokeWidth:i,absoluteStrokeWidth:a,nonScalingStroke:o,className:s=``,children:c,iconNode:l=[],icon:u={node:l,aliases:[],size:24},...d},f)=>{let{size:p=24,strokeWidth:m=2,absoluteStrokeWidth:h=!1,nonScalingStroke:g=!1,color:_=`currentColor`,className:v=``}=Ba()??{},y=!!c||Ra(d),[b,x,S=[]]=La(u,{color:e??_,width:n??t??p,height:r??t??p,strokeWidth:i??m,absoluteStrokeWidth:a??h,nonScalingStroke:o??g,className:Na(v,s),hasA11yProp:y,attributes:d});return(0,k.createElement)(b,{ref:f,...x},[...S.map(([e,t])=>(0,k.createElement)(e,t)),...Array.isArray(c)?c:[c]])});function Ha(e,t=[],n=[]){let r=typeof e==`string`?Aa(e,t,n):e,i=(0,k.forwardRef)(({className:e,...t},n)=>(0,k.createElement)(Va,{ref:n,icon:r,className:e,...t}));return r.name&&(i.displayName=Ma(r.name)),i}var Ua={name:`activity`,size:24,node:[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]};Ua.node;var Wa=Ha(Ua),Ga={name:`arrow-right`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]};Ga.node;var Ka=Ha(Ga),qa={name:`circle-alert`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]],aliases:[`alert-circle`]};qa.node;var Ja=Ha(qa),Ya={name:`circle-check`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m16 9-5.5 5.5L8 12`,key:`xofnsj`}]],aliases:[`check-circle-2`]};Ya.node;var Xa=Ha(Ya),Za={name:`cpu`,size:24,node:[[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M17 20v2`,key:`1rnc9c`}],[`path`,{d:`M17 2v2`,key:`11trls`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M2 17h2`,key:`7oei6x`}],[`path`,{d:`M2 7h2`,key:`asdhe0`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`M20 17h2`,key:`1fpfkl`}],[`path`,{d:`M20 7h2`,key:`1o8tra`}],[`path`,{d:`M7 20v2`,key:`4gnj0m`}],[`path`,{d:`M7 2v2`,key:`1i4yhu`}],[`rect`,{x:`4`,y:`4`,width:`16`,height:`16`,rx:`2`,key:`1vbyd7`}],[`rect`,{x:`8`,y:`8`,width:`8`,height:`8`,rx:`1`,key:`z9xiuo`}]]};Za.node;var Qa=Ha(Za),$a={name:`external-link`,size:24,node:[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]};$a.node;var eo=Ha($a),to={name:`gauge`,size:24,node:[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]};to.node;var no=Ha(to),ro={name:`layout-grid`,size:24,node:[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`1g98yp`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`3`,rx:`1`,key:`6d4xhi`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`14`,rx:`1`,key:`nxv5o0`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`1bb6yr`}]]};ro.node;var io=Ha(ro),ao={name:`menu`,size:24,node:[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]};ao.node;var oo=Ha(ao),so={name:`refresh-cw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]};so.node;var co=Ha(so),lo={name:`scroll-text`,size:24,node:[[`path`,{d:`M15 12h-5`,key:`r7krc0`}],[`path`,{d:`M15 8h-5`,key:`1khuty`}],[`path`,{d:`M19 17V5a2 2 0 0 0-2-2H4`,key:`zz82l3`}],[`path`,{d:`M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3`,key:`1ph1d7`}]]};lo.node;var uo=Ha(lo),fo={name:`settings`,size:24,node:[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]};fo.node;var po=Ha(fo),mo={name:`x`,size:24,node:[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]};mo.node;var ho=Ha(mo),go=[`/api/instanz`,`/api/partner`,`/api/health`],_o=(e,t)=>e===t||e.startsWith(`${t}/`)||e.startsWith(`${t}?`);function vo(e,t){return!e.startsWith(`/api/`)||go.some(t=>_o(e,t))||(_o(e,`/api/homelab`)?`homelab`:`box`)===t?e:`/api/partner${e.slice(4)}`}var yo=null;function bo(){return yo??=fetch(`/api/instanz`,{headers:{Accept:`application/json`}}).then(e=>e.ok?e.json():Promise.reject(Error(String(e.status)))).then(e=>e.rolle===`homelab`?`homelab`:`box`).catch(()=>(yo=null,`box`)),yo}var xo=class extends Error{status;detail;constructor(e,t){super(t),this.status=e,this.detail=t,this.name=`ApiFehler`}};function So(e,t){if(e&&typeof e==`object`&&`detail`in e){let t=e.detail;if(typeof t==`string`)return t;if(Array.isArray(t))return t.map(e=>e.msg??String(e)).join(`; `)}return`Die Box antwortet mit Fehler ${t}.`}async function V(e,t={}){let n=vo(e,await bo()),r;try{r=await fetch(n,{...t,headers:{"Content-Type":`application/json`,Accept:`application/json`,...t.headers}})}catch{throw new xo(0,`MC2 ist nicht erreichbar. Läuft die Box?`)}let i=await r.text(),a=i?Co(i):null;if(!r.ok)throw new xo(r.status,So(a,r.status));if(typeof a==`string`)throw new xo(r.status,`Die Box antwortet nicht mit Daten.`);return a}function Co(e){try{return JSON.parse(e)}catch{return e}}var wo=(e,t)=>V(e,{method:`POST`,body:t===void 0?void 0:JSON.stringify(t)}),To=100,Eo=95,Do=210,Oo=240;function ko(e,t){let n=e*Math.PI/180;return[To+t*Math.cos(n),Eo-t*Math.sin(n)]}var Ao=e=>Math.round(e*100)/100;function jo(e,t,n){let r=Math.max(0,Math.min(1,e)),i=Math.max(r,Math.min(1,t)),[a,o]=ko(Do-Oo*r,n),[s,c]=ko(Do-Oo*i,n),l=+((i-r)*Oo>180);return`M ${Ao(a)} ${Ao(o)} A ${n} ${n} 0 ${l} 1 ${Ao(s)} ${Ao(c)}`}function Mo(e){return e==null?`var(--text-3)`:e>=85?`var(--rot)`:e>=70?`var(--bernstein)`:`var(--gruen)`}var No={ok:`border-gruen-rand bg-gruen-grund text-gruen`,info:`border-cyan-rand bg-cyan-grund text-cyan`,stumm:`border-aus-rand bg-aus-grund text-aus-text`,gelb:`border-2 border-bernstein bg-bernstein-grund text-bernstein-hell lampe-atmet`,rot:`border-2 border-rot bg-rot-grund text-rot shadow-[0_0_32px_rgba(255,90,79,0.3)]`};function Po(e){if(!e.waechter_wach)return{art:`stumm`,oben:`Wächter`,mitte:`SCHWEIGT`,unten:`Seit über 5 Minuten kein Prüflauf`};if(e.update_laeuft)return{art:`info`,oben:`Wartung`,mitte:`UPDATE LÄUFT`,unten:`Hinweise ruhen bis zum Ende`};if(e.anzahl===0)return{art:`ok`,oben:`Alles`,mitte:`IN ORDNUNG`,unten:`Keine offenen Hinweise`};let t=`${e.anzahl} HINWEIS${e.anzahl===1?``:`E`}`;return e.stufe===`rot`?{art:`rot`,oben:`Störung`,mitte:t,unten:`Drücken zum Ansehen`}:{art:`gelb`,oben:`Achtung`,mitte:t,unten:`Drücken zum Ansehen`}}function Fo(e,t){let n=`„${e.titel}“:`;switch(t.id){case`protokoll`:return null;case`neustart`:return e.id.startsWith(`timer:`)?{titel:`${t.label}?`,text:`${n} Der Dienst läuft sofort noch einmal.`,knopf:t.label}:{titel:`${t.label}?`,text:`${n} Der Dienst wird ${/^starten/i.test(t.label)?`gestartet`:`neu gestartet`} und ist dabei kurz nicht erreichbar.`,knopf:t.label};case`job-wiederholen`:return{titel:`Job erneut ausführen?`,text:`${n} Hermes führt den Job sofort noch einmal aus, mit allem, was er sonst auch tut — etwa Nachrichten verschicken.`,knopf:t.label};case`freigeben`:return{titel:`Update freigeben?`,text:`${n} Nach dem Freigeben versucht der nächste Sonntags-Lauf das Update wieder.`,knopf:t.label};default:return{titel:`${t.label}?`,text:`${n} ${t.label}.`,knopf:t.label}}}function Io(e){return e?.status===`busy`?e.running?`Es läuft schon ein Update („${e.running}“). Warte, bis es fertig ist.`:`Es läuft schon ein Update. Warte, bis es fertig ist.`:e?.detail||e?.err||e?.error||e?.text||`Das hat nicht geklappt.`}var Lo=e=>e.state===`running`||e.state===`queued`;function Ro(e){let t=e.aliases.map(e=>e.toLowerCase());return t.includes(`hermes`)||t.includes(`fast`)?`hirn`:t.includes(`coder`)?`coder`:null}var zo={neu:`Neu`,wartet:`Wartet`,getestet:`Gemessen`,bestanden:`Bestanden`,durchgefallen:`Durchgefallen`,uebernommen:`Übernommen`,verworfen:`Verworfen`};function Bo(e,t=``){if(e==null||e===``)return`–`;let n=typeof e==`number`?e.toLocaleString(`de-DE`,{maximumFractionDigits:+(e<10)}):String(e);return t?`${n} ${t}`:n}var Vo=[],H=1,U=new Set,Ho=()=>U.forEach(e=>e());function Uo(e,t){let n=H++;Vo=[...Vo,{id:n,art:e,text:t}].slice(-4),Ho(),e!==`fehler`&&window.setTimeout(()=>Wo(n),6e3)}function Wo(e){Vo=Vo.filter(t=>t.id!==e),Ho()}var Go=()=>(0,k.useSyncExternalStore)(Ko,qo);function Ko(e){return U.add(e),()=>{U.delete(e)}}function qo(){return Vo}var Jo=2e3,Yo=3e4,Xo=2e4,Zo=`verbinde`,Qo=null,$o=new Set,es=()=>$o.forEach(e=>e());function ts(e){return $o.add(e),()=>{$o.delete(e)}}var ns=()=>Zo===`live`,rs=()=>(0,k.useSyncExternalStore)(ts,ss),is=()=>(0,k.useSyncExternalStore)(ts,cs);function as(e){e!==Zo&&(Zo=e,es())}function os(){let e=se();(0,k.useEffect)(()=>{let t=null,n,r,i=Date.now(),a=Jo,o=!1;function s(){o||(window.clearTimeout(n),n=window.setTimeout(l,a),a=Math.min(a*2,Yo))}function c(){i=Date.now(),window.clearTimeout(r),r=window.setTimeout(()=>{t?.close(),as(`getrennt`),s()},Xo)}function l(){window.clearTimeout(n),window.clearTimeout(r),t?.close();let i=new EventSource(`/api/stream`);t=i,i.onopen=()=>{a=Jo,as(`live`),c(),e.invalidateQueries()},i.onerror=()=>{as(`getrennt`),i.readyState===EventSource.CLOSED&&(window.clearTimeout(r),s())},i.addEventListener(`invalidate`,t=>{c();try{let n=JSON.parse(t.data)?.keys??[];for(let t of n)e.invalidateQueries({queryKey:[t]})}catch{}}),i.addEventListener(`metrik`,e=>{c();try{Qo=JSON.parse(e.data),es()}catch{}})}let u=()=>{o||document.visibilityState!==`visible`||(t?.readyState===EventSource.CLOSED||Date.now()-i>5e3)&&(a=Jo,l())};return l(),window.addEventListener(`online`,u),document.addEventListener(`visibilitychange`,u),()=>{o=!0,window.clearTimeout(n),window.clearTimeout(r),window.removeEventListener(`online`,u),document.removeEventListener(`visibilitychange`,u),t?.close(),as(`getrennt`)}},[e])}function ss(){return Zo}function cs(){return Qo}var ls=`Europe/Berlin`,us=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,timeZone:ls}),ds=new Intl.DateTimeFormat(`de-DE`,{weekday:`short`,timeZone:ls}),fs=new Intl.DateTimeFormat(`de-DE`,{day:`2-digit`,month:`2-digit`,timeZone:ls}),ps=new Intl.DateTimeFormat(`en-CA`,{timeZone:ls});function ms(e){return ps.format(e)}function hs(e,t=new Date){let n=new Date(e);if(Number.isNaN(n.getTime()))return`–`;let r=ms(t),i=ms(new Date(t.getTime()-864e5)),a=ms(new Date(t.getTime()+864e5)),o=ms(n),s=us.format(n);return o===r?`HEUTE ${s}`:o===i?`GESTERN ${s}`:o===a?`MORGEN ${s}`:Math.abs(n.getTime()-t.getTime())<5616e5?`${ds.format(n).replace(`.`,``).toUpperCase()} ${s}`:`${fs.format(n)} ${s}`}function gs(e,t=new Date){let n=new Date(e*1e3);return ms(n)===ms(t)?`seit heute ${us.format(n)}`:`seit ${fs.format(n)}, ${us.format(n)}`}function _s(e,t=Date.now()){let n=Math.max(0,Math.round(t/1e3-e));if(n<60)return`vor ${n} s`;if(n<3600)return`vor ${Math.round(n/60)} min`;if(n<86400)return`vor ${Math.round(n/3600)} h`;let r=Math.round(n/86400);return`vor ${r} ${r===1?`Tag`:`Tagen`}`}function vs(e){return e==null||e<0?null:[Math.floor(e/86400),Math.floor(e%86400/3600)]}var ys=e=>e==null?null:e/1024**3;function bs(e,t=0){let n=ys(e);return n==null?`–`:n>=1e3?`${(n/1024).toFixed(1).replace(`.`,`,`)} TB`:`${n.toFixed(t).replace(`.`,`,`)} GB`}var xs=e=>e.toLocaleString(`de-DE`),Ss=e=>()=>ns()?e*5:e;function Cs(e,t){let n=e.getQueryData([`jobs`])?.jobs??[],r=t.filter(e=>!Lo(e)&&n.some(t=>t.id===e.id&&Lo(t)));if(r.length===0)return;let i=new Set([`start`]);for(let e of r){let t=e.group===`download`||/^download\s/i.test(e.label);for(let e of t?[`models`,`aufraeumen`]:[`update-details`,`updates-verlauf`,`sicherungen`])i.add(e)}for(let t of i)e.invalidateQueries({queryKey:[t]})}var ws=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`start`],queryFn:bc,refetchInterval:xc},e[0]=t):t=e[0],I(t)},Ts=()=>{let e=(0,B.c)(2),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[`models`],e[0]=t):t=e[0];let n;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n={queryKey:t,queryFn:Sc,refetchInterval:Ss(3e4)},e[1]=n):n=e[1],I(n)},Es=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`nutzung`],queryFn:Cc,refetchInterval:6e5},e[0]=t):t=e[0],I(t)},Ds=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`radar`],queryFn:wc,retry:!1,refetchInterval:3e5},e[0]=t):t=e[0],I(t)},Os=()=>{let e=(0,B.c)(3),t=se(),n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`jobs`],e[0]=n):n=e[0];let r;return e[1]===t?r=e[2]:(r={queryKey:n,queryFn:async()=>{let e=await V(`/api/jobs`);return Cs(t,e.jobs),e},refetchInterval:Tc},e[1]=t,e[2]=r),I(r)},ks=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`sicherungen`],queryFn:Ec},e[0]=t):t=e[0],I(t)},As=e=>{let t=(0,B.c)(4),n;t[0]===e?n=t[1]:(n=e.map(Dc),t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r={queries:n},t[2]=n,t[3]=r),wt(r)},js=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`updates-verlauf`],queryFn:Oc},e[0]=t):t=e[0],I(t)},Ms=e=>{let t=(0,B.c)(7),n,r;t[0]===e?(n=t[1],r=t[2]):(n=[`protokoll`,e],r=()=>V(`/api/maintenance/logs?service=${encodeURIComponent(e??``)}&lines=200`),t[0]=e,t[1]=n,t[2]=r);let i=!!e,a;return t[3]!==n||t[4]!==r||t[5]!==i?(a={queryKey:n,queryFn:r,enabled:i},t[3]=n,t[4]=r,t[5]=i,t[6]=a):a=t[6],I(a)},Ns=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`dienste`],queryFn:kc},e[0]=t):t=e[0],I(t)};function Ps(e,t){let n=(0,B.c)(6),r=se(),i;n[0]!==t||n[1]!==r?(i=(e,n)=>{let i=e;i&&i.ok===!1?Uo(`fehler`,t.fehler?.(n,i)??Io(i)):Uo(`erfolg`,t.erfolg(n,e));for(let e of t.neuLaden)r.invalidateQueries({queryKey:[e]})},n[0]=t,n[1]=r,n[2]=i):i=n[2];let a;return n[3]!==e||n[4]!==i?(a={mutationFn:e,onSuccess:i,onError:Fs},n[3]=e,n[4]=i,n[5]=a):a=n[5],Et(a)}function Fs(e){return Uo(`fehler`,e.message)}var Is=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:jc,neuLaden:[`start`]},e[0]=t):t=e[0],Ps(Ac,t)},Ls={alle:`/api/maintenance/update-all`,pruefen:`/api/maintenance/check-updates`,os:`/api/maintenance/os-update`,engine:`/api/maintenance/engine-update`,swap:`/api/maintenance/swap-update`,hermes:`/api/maintenance/hermes-update`},Rs=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Nc,neuLaden:[`jobs`,`start`]},e[0]=t):t=e[0],Ps(Mc,t)},zs=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Fc,fehler:Ic,neuLaden:[`jobs`]},e[0]=t):t=e[0],Ps(Pc,t)},Bs=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Rc,neuLaden:[`jobs`,`models`]},e[0]=t):t=e[0],Ps(Lc,t)},Vs=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`aufraeumen`],queryFn:zc,staleTime:6e4},e[0]=t):t=e[0],I(t)},Hs=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Vc,neuLaden:[`aufraeumen`,`models`,`start`]},e[0]=t):t=e[0],Ps(Bc,t)},Us=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Uc,neuLaden:[`start`]},e[0]=t):t=e[0],Ps(Hc,t)},Ws=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Gc,fehler:Kc,neuLaden:[`sicherungen`,`start`]},e[0]=t):t=e[0],Ps(Wc,t)},Gs=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Jc,neuLaden:[`sicherungen`]},e[0]=t):t=e[0],Ps(qc,t)},Ks=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Xc,neuLaden:[`models`,`start`]},e[0]=t):t=e[0],Ps(Yc,t)},qs=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Qc,neuLaden:[`radar`,`models`,`start`]},e[0]=t):t=e[0],Ps(Zc,t)},Js=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:el,neuLaden:[`jobs`]},e[0]=t):t=e[0],Ps($c,t)},Ys=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`instanz`],queryFn:tl,staleTime:1/0},e[0]=t):t=e[0],I(t)},Xs=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`partner`],queryFn:nl,refetchInterval:3e4},e[0]=t):t=e[0],I(t)},Zs=()=>{let e=(0,B.c)(2),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[`ziele-box`],e[0]=t):t=e[0];let n;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n={queryKey:t,queryFn:rl,refetchInterval:Ss(3e4)},e[1]=n):n=e[1],I(n)},Qs=e=>{let t=(0,B.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:il,enabled:e,refetchInterval:3e4},t[1]=e,t[2]=r),I(r)},$s=e=>{let t=(0,B.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-laeufe`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:al,enabled:e,refetchInterval:sl},t[1]=e,t[2]=r),I(r)},ec=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:ll,neuLaden:[`homelab`,`homelab-laeufe`,`ziele-box`,`jobs`,`start`]},e[0]=t):t=e[0],Ps(cl,t)},tc=e=>{let t=(0,B.c)(4),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-hinweise`],t[0]=n):n=t[0];let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=Ss(6e4),t[1]=r):r=t[1];let i;return t[2]===e?i=t[3]:(i={queryKey:n,queryFn:ul,enabled:e,refetchInterval:r},t[2]=e,t[3]=i),I(i)},nc=e=>{let t=(0,B.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`einstellungen`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:dl,enabled:e,retry:!1},t[1]=e,t[2]=r),I(r)},rc=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:pl,neuLaden:[`einstellungen`,`start`]},e[0]=t):t=e[0],Ps(fl,t)},ic=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:hl,neuLaden:[`einstellungen`,`start`,`radar`]},e[0]=t):t=e[0],Ps(ml,t)},ac=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:_l,neuLaden:[]},e[0]=t):t=e[0],Ps(gl,t)},oc=(e,t)=>{let n=(0,B.c)(9),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=[`stand`,`hier`],n[0]=r):r=n[0];let i;n[1]===e?i=n[2]:(i={queryKey:r,queryFn:W,enabled:e},n[1]=e,n[2]=i);let a;n[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=[`stand`,`partner`],n[3]=a):a=n[3];let o=e&&t,s;n[4]===o?s=n[5]:(s={queryKey:a,queryFn:vl,enabled:o,retry:!1},n[4]=o,n[5]=s);let c;return n[6]!==i||n[7]!==s?(c={queries:[i,s]},n[6]=i,n[7]=s,n[8]=c):c=n[8],wt(c)},sc=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`altreste`],queryFn:yl,staleTime:6e4},e[0]=t):t=e[0],I(t)},cc=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:xl,neuLaden:[`altreste`,`start`]},e[0]=t):t=e[0],Ps(bl,t)},lc={"1h":6e4,"24h":3e5,"7d":9e5},uc=(e,t)=>{let n=(0,B.c)(8),r=t===void 0||t,i,a;n[0]===e?(i=n[1],a=n[2]):(i=[`messwerte`,`box`,e],a=()=>V(`/api/messwerte?zeitraum=${e}`),n[0]=e,n[1]=i,n[2]=a);let o=lc[e],s;return n[3]!==r||n[4]!==i||n[5]!==a||n[6]!==o?(s={queryKey:i,queryFn:a,enabled:r,refetchInterval:o,placeholderData:Sl,retry:!1},n[3]=r,n[4]=i,n[5]=a,n[6]=o,n[7]=s):s=n[7],I(s)},dc=(e,t)=>{let n=(0,B.c)(8),r,i;n[0]===e?(r=n[1],i=n[2]):(r=[`messwerte`,`homelab`,e],i=()=>V(`/api/homelab/messwerte?zeitraum=${e}`),n[0]=e,n[1]=r,n[2]=i);let a=lc[e],o;return n[3]!==t||n[4]!==r||n[5]!==i||n[6]!==a?(o={queryKey:r,queryFn:i,enabled:t,refetchInterval:a,placeholderData:Cl,retry:!1},n[3]=t,n[4]=r,n[5]=i,n[6]=a,n[7]=o):o=n[7],I(o)},fc=e=>{let t=(0,B.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-sammelplan`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:wl,enabled:e,retry:!1},t[1]=e,t[2]=r),I(r)},pc=e=>{let t=(0,B.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-sammellauf`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:Tl,enabled:e,refetchInterval:El,retry:!1},t[1]=e,t[2]=r),I(r)},mc=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Ol,neuLaden:[`homelab-sammellauf`,`homelab-laeufe`,`homelab`]},e[0]=t):t=e[0],Ps(Dl,t)},hc=(e,t)=>{let n=(0,B.c)(8),r,i;n[0]===t?(r=n[1],i=n[2]):(r=[`homelab-protokoll`,t],i=()=>V(`/api/homelab/protokoll?grenze=300&berichte=${+!!t}`),n[0]=t,n[1]=r,n[2]=i);let a;n[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=Ss(3e4),n[3]=a):a=n[3];let o;return n[4]!==e||n[5]!==r||n[6]!==i?(o={queryKey:r,queryFn:i,enabled:e,refetchInterval:a,retry:!1},n[4]=e,n[5]=r,n[6]=i,n[7]=o):o=n[7],I(o)},gc=e=>{let t=(0,B.c)(4),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-speicher`],t[0]=n):n=t[0];let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=Ss(6e4),t[1]=r):r=t[1];let i;return t[2]===e?i=t[3]:(i={queryKey:n,queryFn:kl,enabled:e,refetchInterval:r,retry:!1},t[2]=e,t[3]=i),I(i)},_c=e=>{let t=(0,B.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-einstellungen`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:Al,enabled:e,retry:!1},t[1]=e,t[2]=r),I(r)},vc=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Ml,neuLaden:[`homelab-einstellungen`,`homelab`]},e[0]=t):t=e[0],Ps(jl,t)},yc=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Pl,neuLaden:[`homelab-einstellungen`,`homelab`]},e[0]=t):t=e[0],Ps(Nl,t)};function bc(){return V(`/api/start`)}function xc(e){return e.state.data&&!e.state.data.updates.gelesen?4e3:Ss(2e4)()}function Sc(){return V(`/api/models`)}function Cc(){return V(`/api/modelle/nutzung`)}function wc(){return V(`/api/radar`)}function Tc(e){return e.state.data?.jobs.some(Lo)?2e3:Ss(3e4)()}function Ec(){return V(`/api/zeitmaschine`)}function Dc(e){return{queryKey:[`update-details`,e],queryFn:()=>V(`/api/maintenance/update-details?kind=${encodeURIComponent(e)}`),staleTime:6e5}}function Oc(){return V(`/api/updates/verlauf`)}function kc(){return V(`/api/system/services`)}function Ac(e){let{hinweis:t,aktion:n}=e;return wo(`/api/hinweise/${encodeURIComponent(t)}/aktion/${n}`)}function jc(e,t){return e.aktion===`freigeben`&&t.text?t.text:`${e.label}: erledigt. Der Wächter prüft in einer Minute nach.`}function Mc(e){return wo(Ls[e])}function Nc(e){return e===`pruefen`?`Die Suche nach Neuem läuft. Den Fortschritt siehst du unten bei den Aufträgen.`:`Das Update läuft. Den Fortschritt siehst du unten bei den Aufträgen.`}function Pc(e){let{id:t}=e;return wo(`/api/jobs/${encodeURIComponent(t)}/cancel`)}function Fc(e){return`${e.titel}: wird abgebrochen.`}function Ic(e){return`${e.titel} lief schon nicht mehr.`}function Lc(e){let{repo:t,quant:n,rolle:r}=e;return wo(`/api/models/install`,{repo:t,quant:n,role:r})}function Rc(e,t){return`${e.repo} (${e.quant}) wird heruntergeladen${t.total_bytes?`, ${bs(t.total_bytes,1)}`:``}. Den Fortschritt siehst du unter Aufträge.`}function zc(){return V(`/api/modelle/aufraeumen`)}function Bc(e){return wo(`/api/modelle/aufraeumen/loeschen`,{art:e.art,name:e.name})}function Vc(e,t){return t.text??`Gelöscht.`}function Hc(e){return wo(`/api/updates/festgehalten/${encodeURIComponent(e)}/freigeben`)}function Uc(e,t){return t.text??`Freigegeben.`}function Wc(){return wo(`/api/system/backup`)}function Gc(e,t){return t.size_mb==null?`Sicherung erstellt.`:`Sicherung erstellt (${t.size_mb.toLocaleString(`de-DE`)} MB).`}function Kc(e,t){return`Die Sicherung ging nicht: ${Io(t)}`}function qc(e){return wo(`/api/zeitmaschine/restore`,{file:e})}function Jc(){return`Zurückspielen läuft. Die Dienste starten gleich neu.`}function Yc(e){return wo(`/api/models/${encodeURIComponent(e)}/load`)}function Xc(e){return`${e} wird geladen.`}function Zc(e){let{id:t,aktion:n}=e;return wo(`/api/radar/${encodeURIComponent(t)}/${n}`)}function Qc(e){return e.aktion===`uebernehmen`?`${e.name} übernommen.`:`${e.name} verworfen.`}function $c(){return wo(`/api/radar/suche`)}function el(e,t){return t.text??`Das Radar sucht jetzt nach neuen Modellen.`}function tl(){return V(`/api/instanz`)}function nl(){return V(`/api/partner`)}function rl(){return V(`/api/ziele`)}function il(){return V(`/api/homelab/ziele`)}function al(){return V(`/api/homelab/laeufe`)}function ol(e){return e.status===`laeuft`}function sl(e){return e.state.data?.laeufe.some(ol)?3e3:3e4}function cl(e){return V(e.pfad,{method:e.methode})}function ll(e){return`${e.label}: gestartet. Das Ergebnis kommt als Meldung.`}function ul(){return V(`/api/homelab/hinweise`)}function dl(){return V(`/api/einstellungen`)}function fl(e){return wo(`/api/einstellungen/update-fenster`,e)}function pl(e,t){return t.text??`Gespeichert.`}function ml(e){return wo(`/api/einstellungen/radar`,{an:e})}function hl(e,t){return t.text??`Geschaltet.`}function gl(e){return wo(e===`homelab`?`/api/homelab/einstellungen/telegram-test`:`/api/einstellungen/telegram-test`)}function _l(e,t){return t.text??`Die Testmeldung ist raus.`}function W(){return V(`/api/instanz`)}function vl(){return V(`/api/partner/instanz`)}function yl(){return V(`/api/aufraeumen/altreste`)}function bl(e){return wo(`/api/aufraeumen/altreste/loeschen`,{id:e.id})}function xl(e,t){return t.text??`Gelöscht.`}function Sl(e){return e}function Cl(e){return e}function wl(){return V(`/api/homelab/alle/plan`)}function Tl(){return V(`/api/homelab/sammellauf`)}function El(e){return e.state.data?.sammellauf?.status===`laeuft`?5e3:6e4}function Dl(){return wo(`/api/homelab/alle`)}function Ol(){return`Alle aktualisieren: gestartet. Die Schritte laufen nacheinander; das Ergebnis kommt als Meldung.`}function kl(){return V(`/api/homelab/speicher`)}function Al(){return V(`/api/homelab/einstellungen`)}function jl(e){return e===null?V(`/api/homelab/einstellungen/arcane-schluessel`,{method:`DELETE`}):wo(`/api/homelab/einstellungen/arcane-schluessel`,{schluessel:e})}function Ml(e,t){return t.text??(e===null?`Arcane-Schlüssel entfernt.`:`Arcane-Schlüssel gespeichert.`)}function Nl(e){return wo(`/api/homelab/einstellungen/arcane-echt`,{an:e})}function Pl(e){return e?`Docker-Updates über Arcane laufen jetzt echt.`:`Docker-Updates über Arcane sind wieder nur ein Probelauf.`}var Fl={"ki-box":`KI-Box`,"proxmox-host":`Proxmox-Host`,container:`Container`,vm:`VM`};function Il(e){let t=e.id.match(/-(\d+)$/)?.[1],n=Fl[e.art]??e.art;return t?`${n} ${t}`:n}var Ll={"Proxmox-Host":`Proxmox`,"AdGuard Home":`AdGuard`,"PVE Scripts Local":`PVE Scripts`,"Proxmox Backup Server":`PBS`,"Arcane (Docker)":`Arcane`},Rl=e=>Ll[e.name]??e.name,zl=new Set([`app`,`arcane`]),Bl=e=>e.bausteine.find(e=>zl.has(e.id))??null,Vl=e=>e.bausteine.find(e=>!zl.has(e.id))??null;function Hl(e){let t=e.flatMap(e=>e.bausteine.filter(e=>e.zustand===`neu`).map(t=>({ziel:e,baustein:t})));return[...t.filter(e=>e.baustein.aktion),...t.filter(e=>!e.baustein.aktion)]}function Ul(e){let t=e.bausteine.filter(e=>e.zustand===`neu`);return t.some(e=>e.aktion)?0:t.length>0?1:e.bausteine.some(e=>e.zustand===`unbekannt`)?2:3}function Wl(e){let t=e.rueckweg_art??Gl(e.rueckweg);return t===`snapshot`?`Snapshot vorher, bei Rot zurück`:t===`sicherung`?`Sicherung vorher, bei Rot zurück`:e.art===`proxmox-host`?`Kein Rückweg, Neustart getrennt`:`Kein automatischer Rückweg`}function Gl(e){let t=(e??``).toLowerCase();return t.startsWith(`snapshot vor`)?`snapshot`:t.startsWith(`sicherung`)?`sicherung`:`keiner`}var Kl=e=>zl.has(e.id),ql=e=>e.replace(/^Image vom /,``);function Jl(e){return Kl(e)&&e.verfuegbar?e.verfuegbar:e.kurz||e.verfuegbar||`neu`}function Yl(e){let t=e.platte;return t&&t.gesamt>0?t.belegt/t.gesamt:null}function Xl(e,t){let n=Rl(e),r=Yl(e);if(e.erreichbar===!1)return{id:e.id,label:n,zustand:`fehler`,wert:`antwortet nicht`};if(r!==null&&r>=.9)return{id:e.id,label:n,zustand:`fehler`,wert:`Platte voll`};if(t)return{id:e.id,label:n,zustand:`info`,wert:`Update läuft`};if(r!==null&&r>=.8)return{id:e.id,label:n,zustand:`warn`,wert:`Platte ${Math.round(r*100)} %`};let i=e.bausteine.filter(e=>e.zustand===`neu`);if(i.length>0){let t=i.find(e=>zl.has(e.id))??i[0];return{id:e.id,label:n,zustand:`info`,wert:zl.has(t.id)&&t.verfuegbar?`→ ${t.verfuegbar}`:Jl(t)}}let a=Bl(e);return{id:e.id,label:n,zustand:`ok`,wert:a?.installiert?ql(a.installiert):`aktuell`}}var Zl=e=>`${e} HINWEIS${e===1?``:`E`}`;function Ql(e,t,n,r){let i=e.ziele.filter(e=>e.erreichbar===!1);if(i.length>0)return{art:`rot`,oben:`Störung`,mitte:i.length===1?`1 GERÄT STUMM`:`${i.length} GERÄTE STUMM`,unten:i.map(Rl).join(`, `),ziel:`geraete`};if(t.some(e=>e.stufe===`rot`))return{art:`rot`,oben:`Störung`,mitte:Zl(t.length),unten:`Drücken zum Ansehen`,ziel:`hinweise`};if(!e.ausfuehrer.verbunden)return{art:`gelb`,oben:`Achtung`,mitte:`AUSFÜHRER STUMM`,unten:`Die Geräte zeigen den letzten Stand`,ziel:null};if(t.length>0)return{art:`gelb`,oben:`Achtung`,mitte:Zl(t.length),unten:`Drücken zum Ansehen`,ziel:`hinweise`};if(n>0)return{art:`info`,oben:`Wartung`,mitte:`UPDATE LÄUFT`,unten:`Das Ergebnis kommt als Meldung`,ziel:`updates`};let a=Hl(e.ziele).filter(e=>e.baustein.aktion).length;return a>0?{art:`info`,oben:`Homelab`,mitte:`${a} UPDATE${a===1?``:`S`}`,unten:`Drücken zum Ansehen`,ziel:`updates`}:{art:`ok`,oben:`Homelab`,mitte:`ALLES AKTUELL`,unten:r?`Stand ${r}`:`Keine offenen Updates`,ziel:null}}function $l(e){return e?.match(/vom (\d{2}\.\d{2}\.\d{4})/)?.[1]??null}var eu=[{id:`box`,name:`KI-Box`},{id:`homelab`,name:`Homelab`}],tu=[{to:`/`,label:`Übersicht`,Icon:io,ort:`uebersicht`},{to:`/box`,label:`Cockpit`,Icon:no,ort:`box`},{to:`/box/updates`,label:`Updates`,Icon:co,ort:`box`,zaehlt:!0},{to:`/box/modelle`,label:`Modelle`,Icon:Qa,ort:`box`},{to:`/box/monitoring`,label:`Monitoring`,Icon:Wa,ort:`box`},{to:`/homelab`,label:`Cockpit`,Icon:no,ort:`homelab`},{to:`/homelab/updates`,label:`Updates`,Icon:co,ort:`homelab`,zaehlt:!0},{to:`/homelab/monitoring`,label:`Monitoring`,Icon:Wa,ort:`homelab`},{to:`/homelab/protokoll`,label:`Protokoll`,Icon:uo,ort:`homelab`},{to:`/einstellungen`,label:`Einstellungen`,Icon:po,ort:`system`}],nu={uebersicht:`Auf einen Blick`,box:`KI-Box`,homelab:`Homelab`,system:`Beide Instanzen`};function ru(){let e=(0,B.c)(2),t=Ta({select:iu}).replace(/\/+$/,``)||`/`,n;return e[0]===t?n=e[1]:(n=tu.find(e=>e.to===t)??tu[0],e[0]=t,e[1]=n),n}function iu(e){return e.location.pathname}function G(){let e=(0,B.c)(19),t=Ys(),n=Xs(),r=rs(),i=t.data?.rolle===`homelab`?`homelab`:`box`,a=r===`live`?`online`:r,o=n.data,s=o?o.eingerichtet?o.erreichbar?`online`:`getrennt`:`fehlt`:`verbinde`,c;e[0]!==a||e[1]!==s||e[2]!==i?(c=i===`box`?{box:a,homelab:s}:{box:s,homelab:a},e[0]=a,e[1]=s,e[2]=i,e[3]=c):c=e[3];let l=c,u=Zs(),d=Qs(l.homelab===`online`),f;e[4]===u.data?.ziele?f=e[5]:(f=u.data?.ziele??[],e[4]=u.data?.ziele,e[5]=f);let p;e[6]===f?p=e[7]:(p=f.reduce(ou,0),e[6]=f,e[7]=p);let m=p,h;e[8]===d.data?.ziele?h=e[9]:(h=Hl(d.data?.ziele??[]).filter(au),e[8]=d.data?.ziele,e[9]=h);let g=h.length,_;e[10]!==m||e[11]!==l.box?(_={verbindung:l.box,updates:m},e[10]=m,e[11]=l.box,e[12]=_):_=e[12];let v;e[13]!==g||e[14]!==l.homelab?(v={verbindung:l.homelab,updates:g},e[13]=g,e[14]=l.homelab,e[15]=v):v=e[15];let y;return e[16]!==_||e[17]!==v?(y={box:_,homelab:v},e[16]=_,e[17]=v,e[18]=y):y=e[18],y}function au(e){return e.baustein.aktion}function ou(e,t){return e+t.bausteine.filter(su).length}function su(e){return e.zustand===`neu`&&e.aktion}var cu={erfolg:`border-gruen-rand bg-gruen-grund text-gruen-text`,fehler:`border-rot-rand bg-rot-grund text-rot-text`,info:`border-cyan-rand bg-cyan-grund text-cyan-text`};function lu(){let e=(0,B.c)(4),t=Go(),n;e[0]===t?n=e[1]:(n=t.map(uu),e[0]=t,e[1]=n);let r;return e[2]===n?r=e[3]:(r=(0,A.jsx)(`div`,{"aria-live":`polite`,className:`pointer-events-none fixed right-4 bottom-24 left-4 z-50 flex flex-col items-end gap-2 md:left-auto md:w-[420px] lg:bottom-6`,children:n}),e[2]=n,e[3]=r),r}function uu(e){return(0,A.jsxs)(`div`,{role:e.art===`fehler`?`alert`:`status`,className:a(`pointer-events-auto flex w-full items-start gap-3 rounded-xl border px-4 py-3 text-[15px] shadow-lg`,cu[e.art]),children:[(0,A.jsx)(`span`,{className:`min-w-0 flex-1`,children:e.text}),(0,A.jsx)(`button`,{type:`button`,onClick:()=>Wo(e.id),"aria-label":`Meldung schließen`,className:`-m-2 p-2 opacity-70 hover:opacity-100`,children:(0,A.jsx)(ho,{className:`size-4`})})]},e.id)}var du={online:{punkt:`bg-gruen shadow-[0_0_8px_rgba(61,220,138,0.7)]`,text:`online`},verbinde:{punkt:`bg-bernstein`,text:`verbinde`},getrennt:{punkt:`bg-rot`,text:`getrennt`},fehlt:{punkt:`bg-text-3`,text:`nicht eingerichtet`}},fu={uebersicht:{aktiv:`!border-bernstein bg-bernstein-grund`,symbol:`group-data-[status=active]:text-bernstein`},box:{aktiv:`!border-box bg-box-grund`,symbol:`group-data-[status=active]:text-box`},homelab:{aktiv:`!border-lab bg-lab-grund`,symbol:`group-data-[status=active]:text-lab`},system:{aktiv:`!border-text-2 bg-erhaben`,symbol:`group-data-[status=active]:text-foreground`}},pu={box:{text:`text-box-text`,balken:`bg-box`},homelab:{text:`text-lab-text`,balken:`bg-lab`}},mu=`group flex h-11 items-center gap-3 rounded-lg border-l-2 border-transparent pr-3 pl-3 text-[15px] text-text-2 hover:bg-erhaben hover:text-foreground`;function hu(){let e=(0,B.c)(2),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,A.jsx)(`img`,{src:`/favicon.svg`,alt:``,width:36,height:36,className:`size-9 shrink-0`}),e[0]=t):t=e[0];let n;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,A.jsxs)(`div`,{className:`flex items-center gap-3 px-1`,children:[t,(0,A.jsxs)(`span`,{className:`flex flex-col leading-none`,children:[(0,A.jsx)(`span`,{className:`font-anzeige text-[22px] font-bold tracking-[0.06em]`,children:`Homelab`}),(0,A.jsx)(`span`,{className:`schild text-[13px] tracking-[0.22em] text-text-3`,children:`Orchestrator`})]})]}),e[1]=n):n=e[1],n}function gu(e){let t=(0,B.c)(21),{s:n,zahl:r,onGewaehlt:i}=e,o=fu[n.ort],s=n.to,c;t[0]===o.aktiv?c=t[1]:(c=a(o.aktiv,`!text-foreground`),t[0]=o.aktiv,t[1]=c);let l;t[2]===c?l=t[3]:(l={className:c},t[2]=c,t[3]=l);let u;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(u={exact:!0},t[4]=u):u=t[4];let d=n.Icon,f;t[5]===o.symbol?f=t[6]:(f=a(`size-[18px] shrink-0 text-text-3 group-hover:text-text-2`,o.symbol),t[5]=o.symbol,t[6]=f);let p;t[7]!==n.Icon||t[8]!==f?(p=(0,A.jsx)(d,{className:f,"aria-hidden":!0}),t[7]=n.Icon,t[8]=f,t[9]=p):p=t[9];let m;t[10]===n.label?m=t[11]:(m=(0,A.jsx)(`span`,{className:`flex-1`,children:n.label}),t[10]=n.label,t[11]=m);let h;t[12]===r?h=t[13]:(h=!!r&&(0,A.jsxs)(`span`,{className:`ziffern rounded-full border border-cyan-rand bg-cyan-grund px-2 text-xs leading-5 text-cyan`,children:[r,(0,A.jsxs)(`span`,{className:`sr-only`,children:[` `,r===1?`Update`:`Updates`,` bereit`]})]}),t[12]=r,t[13]=h);let g;return t[14]!==i||t[15]!==n.to||t[16]!==l||t[17]!==p||t[18]!==m||t[19]!==h?(g=(0,A.jsxs)(ea,{to:s,onClick:i,className:mu,activeProps:l,activeOptions:u,children:[p,m,h]}),t[14]=i,t[15]=n.to,t[16]=l,t[17]=p,t[18]=m,t[19]=h,t[20]=g):g=t[20],g}function _u(e){let t=(0,B.c)(15),{onDienste:n,onGewaehlt:r}=e,i=G(),o=Ys().data?.rolle!==`homelab`,s=vu,c;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c=s(`/`),t[0]=c):c=t[0];let l;t[1]===r?l=t[2]:(l=(0,A.jsx)(gu,{s:c,onGewaehlt:r}),t[1]=r,t[2]=l);let u;t[3]!==o||t[4]!==n||t[5]!==r||t[6]!==i?(u=eu.map(e=>{let t=du[i[e.id].verbindung],s=pu[e.id];return(0,A.jsxs)(`section`,{"aria-label":e.name,className:`flex flex-col gap-1`,children:[(0,A.jsxs)(`div`,{className:`flex items-center justify-between gap-2 pr-3 pb-1.5`,children:[(0,A.jsxs)(`h2`,{className:a(`schild flex items-center gap-2.5 text-sm font-bold tracking-[0.24em]`,s.text),children:[(0,A.jsx)(`span`,{"aria-hidden":!0,className:a(`h-4 w-1 rounded-full`,s.balken)}),e.name]}),(0,A.jsxs)(`span`,{className:`flex items-center gap-1.5 text-xs text-text-3`,children:[(0,A.jsx)(`span`,{"aria-hidden":!0,className:a(`size-2 rounded-full`,t.punkt)}),t.text]})]}),tu.filter(t=>t.ort===e.id).map(t=>(0,A.jsx)(gu,{s:t,zahl:t.zaehlt?i[e.id].updates:0,onGewaehlt:r},t.to)),e.id===`box`&&(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)(`button`,{type:`button`,onClick:()=>{r?.(),n()},className:a(mu,`text-left`),children:[(0,A.jsx)(uo,{className:`size-[18px] shrink-0 text-text-3`,"aria-hidden":!0}),`Dienste und Protokolle`]}),o&&(0,A.jsxs)(`a`,{href:`/hermes-ui/`,target:`_blank`,rel:`noopener`,className:mu,children:[(0,A.jsx)(eo,{className:`size-[18px] shrink-0 text-text-3`,"aria-hidden":!0}),`Hermes-Dashboard`]})]})]},e.id)}),t[3]=o,t[4]=n,t[5]=r,t[6]=i,t[7]=u):u=t[7];let d;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(d=s(`/einstellungen`),t[8]=d):d=t[8];let f;t[9]===r?f=t[10]:(f=(0,A.jsx)(`div`,{className:`mt-auto border-t border-linie pt-4`,children:(0,A.jsx)(gu,{s:d,onGewaehlt:r})}),t[9]=r,t[10]=f);let p;return t[11]!==l||t[12]!==u||t[13]!==f?(p=(0,A.jsxs)(`nav`,{"aria-label":`Hauptnavigation`,className:`flex flex-1 flex-col gap-6`,children:[l,u,f]}),t[11]=l,t[12]=u,t[13]=f,t[14]=p):p=t[14],p}function vu(e){return tu.find(t=>t.to===e)}var yu=`modulepreload`,bu=function(e){return`/`+e},xu={},Su=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=bu(t,n),t=s(t),t in xu)return;xu[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:yu,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},Cu=(0,k.lazy)(()=>Su(()=>import(`./Dienste-BJl63suI.js`).then(e=>({default:e.Dienste})),__vite__mapDeps([0,1,2,3,4]))),wu=(0,k.lazy)(()=>Su(()=>import(`./MenueSchublade-B2LLE53v.js`).then(e=>({default:e.MenueSchublade})),__vite__mapDeps([5,1,3,2,4]))),Tu=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,timeZone:`Europe/Berlin`}),Eu=new Intl.DateTimeFormat(`de-DE`,{weekday:`short`,day:`2-digit`,month:`2-digit`,timeZone:`Europe/Berlin`});function Du(){let e=(0,B.c)(13),[t,n]=(0,k.useState)(Ou),r,i;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{let e=window.setInterval(()=>n(new Date),2e4);return()=>window.clearInterval(e)},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),(0,k.useEffect)(r,i);let a;e[2]===t?a=e[3]:(a=Tu.format(t),e[2]=t,e[3]=a);let o;e[4]===a?o=e[5]:(o=(0,A.jsx)(`span`,{className:`ziffern text-2xl font-medium`,children:a}),e[4]=a,e[5]=o);let s;e[6]===t?s=e[7]:(s=Eu.format(t).replace(`,`,``),e[6]=t,e[7]=s);let c;e[8]===s?c=e[9]:(c=(0,A.jsx)(`span`,{className:`schild text-[13px] text-text-3`,children:s}),e[8]=s,e[9]=c);let l;return e[10]!==o||e[11]!==c?(l=(0,A.jsxs)(`div`,{className:`flex flex-col items-end leading-tight`,children:[o,c]}),e[10]=o,e[11]=c,e[12]=l):l=e[12],l}function Ou(){return new Date}function ku(){let e=(0,B.c)(14),t=rs(),n=t===`live`,r=n?`Verbunden`:t===`verbinde`?`Verbinde`:`Getrennt`,i=n?`text-text-3`:`text-bernstein`,o;e[0]===i?o=e[1]:(o=a(`schild flex items-center gap-1.5 text-[13px]`,i),e[0]=i,e[1]=o);let s=n?`bg-gruen shadow-[0_0_8px_rgba(61,220,138,0.7)]`:`bg-bernstein`,c;e[2]===s?c=e[3]:(c=a(`size-2 rounded-full`,s),e[2]=s,e[3]=c);let l;e[4]===c?l=e[5]:(l=(0,A.jsx)(`span`,{"aria-hidden":!0,className:c}),e[4]=c,e[5]=l);let u=n?`sr-only`:void 0,d=n?`Verbunden`:t===`verbinde`?`Verbinde`:`Getrennt`,f;e[6]!==u||e[7]!==d?(f=(0,A.jsx)(`span`,{className:u,children:d}),e[6]=u,e[7]=d,e[8]=f):f=e[8];let p;return e[9]!==r||e[10]!==o||e[11]!==l||e[12]!==f?(p=(0,A.jsxs)(`span`,{role:`status`,title:r,className:o,children:[l,f]}),e[9]=r,e[10]=o,e[11]=l,e[12]=f,e[13]=p):p=e[13],p}var Au={uebersicht:`text-bernstein`,box:`text-box-text`,homelab:`text-lab-text`,system:`text-text-3`};function ju(){let e=(0,B.c)(32);os();let[t,n]=(0,k.useState)(null),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>n(null),e[0]=r):r=e[0];let i=r,o=ru(),s;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,A.jsx)(hu,{}),e[1]=s):s=e[1];let c;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,A.jsxs)(`aside`,{className:`sticky top-0 hidden h-dvh flex-col gap-8 overflow-y-auto border-r border-linie bg-[#0c0f12] px-4 py-7 lg:flex`,children:[s,(0,A.jsx)(_u,{onDienste:()=>n(`dienste`)})]}),e[2]=c):c=e[2];let l;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(l=()=>n(`menue`),e[3]=l):l=e[3];let u;e[4]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,A.jsx)(`button`,{type:`button`,onClick:l,className:`-ml-2 flex size-11 shrink-0 items-center justify-center rounded-lg text-text-2 hover:bg-erhaben hover:text-foreground lg:hidden`,"aria-label":`Menü öffnen`,children:(0,A.jsx)(oo,{className:`size-6`})}),e[4]=u):u=e[4];let d=Au[o.ort],f;e[5]===d?f=e[6]:(f=a(`schild text-[13px] tracking-[0.24em]`,d),e[5]=d,e[6]=f);let p=nu[o.ort],m;e[7]!==f||e[8]!==p?(m=(0,A.jsx)(`span`,{className:f,children:p}),e[7]=f,e[8]=p,e[9]=m):m=e[9];let h;e[10]===o.label?h=e[11]:(h=(0,A.jsx)(`h1`,{className:`font-anzeige text-[26px] leading-none font-bold tracking-[0.04em]`,children:o.label}),e[10]=o.label,e[11]=h);let g;e[12]!==m||e[13]!==h?(g=(0,A.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[u,(0,A.jsxs)(`div`,{className:`flex min-w-0 flex-col leading-tight`,children:[m,h]})]}),e[12]=m,e[13]=h,e[14]=g):g=e[14];let _;e[15]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,A.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,A.jsx)(`span`,{className:`lg:hidden`,children:(0,A.jsx)(ku,{})}),(0,A.jsx)(Du,{})]}),e[15]=_):_=e[15];let v;e[16]===g?v=e[17]:(v=(0,A.jsxs)(`header`,{className:`flex items-center justify-between gap-4`,children:[g,_]}),e[16]=g,e[17]=v);let y;e[18]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,A.jsx)(`main`,{className:`flex min-w-0 flex-col gap-5 md:gap-6`,children:(0,A.jsx)(ha,{})}),e[18]=y):y=e[18];let b;e[19]===v?b=e[20]:(b=(0,A.jsxs)(`div`,{className:`mx-auto flex w-full max-w-[1320px] min-w-0 flex-col gap-5 px-4 pt-4 pb-10 sm:px-6 md:gap-6 md:px-10 md:pt-8`,children:[v,y]}),e[19]=v,e[20]=b);let x;e[21]===t?x=e[22]:(x=t===`menue`&&(0,A.jsx)(wu,{onDienste:()=>n(`dienste`),onSchliessen:i}),e[21]=t,e[22]=x);let S;e[23]===t?S=e[24]:(S=t===`dienste`&&(0,A.jsx)(Cu,{offen:!0,onSchliessen:i}),e[23]=t,e[24]=S);let C;e[25]!==x||e[26]!==S?(C=(0,A.jsxs)(k.Suspense,{fallback:null,children:[x,S]}),e[25]=x,e[26]=S,e[27]=C):C=e[27];let w;e[28]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,A.jsx)(lu,{}),e[28]=w):w=e[28];let T;return e[29]!==b||e[30]!==C?(T=(0,A.jsxs)(`div`,{className:`min-h-dvh lg:grid lg:grid-cols-[272px_minmax(0,1fr)]`,children:[c,b,C,w]}),e[29]=b,e[30]=C,e[31]=T):T=e[31],T}var Mu={gruen:`border-gruen-rand bg-gruen-grund text-gruen`,bernstein:`border-bernstein/60 bg-bernstein-grund text-bernstein`,cyan:`border-cyan-rand bg-cyan-grund text-cyan`,rot:`border-rot-rand bg-rot-grund text-rot-text`,grau:`border-linie bg-erhaben text-text-2`};function Nu(e){let t=(0,B.c)(5),{art:n,children:r}=e,i=Mu[n===void 0?`grau`:n],o;t[0]===i?o=t[1]:(o=a(`schild inline-flex h-7 items-center rounded-full border px-2.5 text-xs whitespace-nowrap`,i),t[0]=i,t[1]=o);let s;return t[2]!==r||t[3]!==o?(s=(0,A.jsx)(`span`,{className:o,children:r}),t[2]=r,t[3]=o,t[4]=s):s=t[4],s}function Pu(e){let t=(0,B.c)(6),{fehler:n,text:r}=e,i=n?`alert`:`status`,o=n?`border-rot-rand bg-rot-grund text-rot-text`:`border-linie bg-panel text-text-2`,s;t[0]===o?s=t[1]:(s=a(`rounded-2xl border px-5 py-8 text-center text-[15px]`,o),t[0]=o,t[1]=s);let c;return t[2]!==i||t[3]!==s||t[4]!==r?(c=(0,A.jsx)(`div`,{role:i,className:s,children:r}),t[2]=i,t[3]=s,t[4]=r,t[5]=c):c=t[5],c}var Fu={erledigt:{text:`Erledigt`,farbe:`text-gruen`},fehler:{text:`Fehler`,farbe:`text-rot`},geplant:{text:`Geplant`,farbe:`text-text-3`}};function Iu(e){let t=(0,B.c)(18),{e:n}=e,r=Fu[n.status]??Fu.geplant,i=n.status===`geplant`&&/update/i.test(n.titel)?`text-cyan`:r.farbe,o;t[0]===n.zeit?o=t[1]:(o=hs(n.zeit),t[0]=n.zeit,t[1]=o);let s;t[2]===o?s=t[3]:(s=(0,A.jsx)(`span`,{className:`ziffern col-start-1 row-start-1 text-sm text-text-3`,children:o}),t[2]=o,t[3]=s);let c;t[4]===n.text?c=t[5]:(c=n.text&&(0,A.jsxs)(`span`,{className:`text-text-3`,children:[`, `,n.text]}),t[4]=n.text,t[5]=c);let l;t[6]!==n.titel||t[7]!==c?(l=(0,A.jsxs)(`span`,{className:`col-span-2 row-start-2 min-w-0 text-base break-words @sm:col-span-1 @sm:col-start-2 @sm:row-start-1`,children:[n.titel,c]}),t[6]=n.titel,t[7]=c,t[8]=l):l=t[8];let u;t[9]===i?u=t[10]:(u=a(`schild col-start-2 row-start-1 justify-self-end text-[13px] @sm:col-start-3`,i),t[9]=i,t[10]=u);let d;t[11]!==r.text||t[12]!==u?(d=(0,A.jsx)(`span`,{className:u,children:r.text}),t[11]=r.text,t[12]=u,t[13]=d):d=t[13];let f;return t[14]!==s||t[15]!==l||t[16]!==d?(f=(0,A.jsxs)(`li`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 border-t border-linie py-2.5 @sm:grid-cols-[112px_minmax(0,1fr)_auto]`,children:[s,l,d]}),t[14]=s,t[15]=l,t[16]=d,t[17]=f):f=t[17],f}function Lu(e){let t=(0,B.c)(6),{gelaufen:n,geplant:r}=e,i;t[0]!==n||t[1]!==r?(i=[...n,...r.slice(0,5)],t[0]=n,t[1]=r,t[2]=i):i=t[2];let a=i;if(a.length===0){let e;return t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,A.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Heute ist noch nichts gelaufen, und nichts ist geplant.`}),t[3]=e):e=t[3],e}let o;return t[4]===a?o=t[5]:(o=(0,A.jsx)(`ol`,{className:`@container m-0 flex list-none flex-col p-0`,children:a.map(Ru)}),t[4]=a,t[5]=o),o}function Ru(e){return(0,A.jsx)(Iu,{e},`${e.titel}-${e.zeit}`)}function zu(e){let t=(0,B.c)(11),{titel:n,rechts:r,children:i,className:o,id:s}=e,c;t[0]===o?c=t[1]:(c=a(`flex min-w-0 flex-col gap-4 rounded-2xl border border-linie bg-panel p-5 sm:p-6`,o),t[0]=o,t[1]=c);let l;t[2]!==r||t[3]!==n?(l=(n||r)&&(0,A.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[n&&(0,A.jsx)(`h2`,{className:`schild text-lg font-bold tracking-[0.22em] text-foreground`,children:n}),r]}),t[2]=r,t[3]=n,t[4]=l):l=t[4];let u;return t[5]!==i||t[6]!==s||t[7]!==c||t[8]!==l||t[9]!==n?(u=(0,A.jsxs)(`section`,{id:s,"aria-label":n,className:c,children:[l,i]}),t[5]=i,t[6]=s,t[7]=c,t[8]=l,t[9]=n,t[10]=u):u=t[10],u}var Bu=new Intl.NumberFormat(`de-DE`,{maximumFractionDigits:1}),Vu=new Intl.NumberFormat(`de-DE`,{maximumFractionDigits:0});function Hu(e){return e<1e3?`${Vu.format(e)} B/s`:e<1e6?`${Bu.format(e/1e3)} KB/s`:e<1e9?`${Bu.format(e/1e6)} MB/s`:`${Bu.format(e/1e9)} GB/s`}function Uu(e,t){return e==null||Number.isNaN(e)?`–`:t===`prozent`?`${Vu.format(e)} %`:t===`grad`?`${Vu.format(e)} °C`:t===`bytes_s`?Hu(e):Vu.format(e)}function Wu(e){if(!e)return null;for(let t=e.length-1;t>=0;t--){let n=e[t][1];if(n!==null)return n}return null}function Gu(e,t){if(t===`prozent`)return 100;let n=0;for(let t of e)for(let[,e]of t??[])e!==null&&e>n&&(n=e);if(t===`grad`)return Math.max(60,Math.ceil((n+5)/10)*10);if(n<=0)return 1;let r=10**Math.floor(Math.log10(n));for(let e of[1,2,2.5,5,10])if(e*r>=n)return e*r;return 10*r}function Ku(e,t,n){return e===null?`ruhig`:e>=n?`rot`:e>=t?`gelb`:`ruhig`}var qu=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,timeZone:`Europe/Berlin`}),Ju=new Intl.DateTimeFormat(`de-DE`,{weekday:`short`,hour:`2-digit`,minute:`2-digit`,timeZone:`Europe/Berlin`});function Yu(e,t){let n=new Date(e*1e3);return(t?Ju:qu).format(n).replace(`,`,``)}function Xu(e){if(!e||e<0)return`–`;let t=Math.floor(e/86400),n=Math.floor(e%86400/3600),r=Math.floor(e%3600/60);return t>0?`${t} T ${n} h`:n>0?`${n} h ${r} min`:`${r} min`}function Zu(e,t,n){let r=``,i=!1;for(let[a,o]of e){if(o===null){i=!1;continue}r+=`${i?`L`:`M`}${t(a).toFixed(1)},${n(o).toFixed(1)}`,i=!0}return r}function Qu(e,t,n,r){let i=``,a=[],o=()=>{a.length>1&&(i+=`M${a[0][0].toFixed(1)},${r}`+a.map(([e,t])=>`L${e.toFixed(1)},${t.toFixed(1)}`).join(``)+`L${a[a.length-1][0].toFixed(1)},${r}Z`),a=[]};for(let[r,i]of e)i===null?o():a.push([t(r),n(i)]);return o(),i}function $u(e){let t=(0,B.c)(22),{punkte:n,max:r,farbe:i,hoehe:a,beschriftung:o}=e,s=i===void 0?`var(--reihe-1)`:i,c=a===void 0?36:a,l=n[0]?.[0]??0,u=n[n.length-1]?.[0]??1,d;t[0]!==l||t[1]!==u?(d=e=>u>l?(e-l)/(u-l)*100:0,t[0]=l,t[1]=u,t[2]=d):d=t[2];let f=d,p;t[3]!==c||t[4]!==r?(p=e=>c-2-Math.min(e,r)/(r||1)*(c-4),t[3]=c,t[4]=r,t[5]=p):p=t[5];let m=p,h;t[6]===n?h=t[7]:(h=n.some(K),t[6]=n,t[7]=h);let g=h,_=`0 0 100 ${c}`,v;t[8]===c?v=t[9]:(v={height:c},t[8]=c,t[9]=v);let y;t[10]!==s||t[11]!==g||t[12]!==c||t[13]!==n||t[14]!==f||t[15]!==m?(y=g&&(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(`path`,{d:Qu(n,f,m,c),fill:s,opacity:.12}),(0,A.jsx)(`path`,{d:Zu(n,f,m),fill:`none`,stroke:s,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`,vectorEffect:`non-scaling-stroke`})]}),t[10]=s,t[11]=g,t[12]=c,t[13]=n,t[14]=f,t[15]=m,t[16]=y):y=t[16];let b;return t[17]!==o||t[18]!==_||t[19]!==v||t[20]!==y?(b=(0,A.jsx)(`svg`,{role:`img`,"aria-label":o,viewBox:_,preserveAspectRatio:`none`,className:`block w-full`,style:v,children:y}),t[17]=o,t[18]=_,t[19]=v,t[20]=y,t[21]=b):b=t[21],b}function K(e){let[,t]=e;return t!==null}var q={ruhig:{wert:`text-foreground`,marke:null},gelb:{wert:`text-bernstein`,marke:`hoch`},rot:{wert:`text-rot-text`,marke:`kritisch`}};function J(e){let t=(0,B.c)(29),{label:n,wert:r,einheit:i,punkte:o,max:s,zustand:c,farbe:l,zeitraumText:u}=e,d=q[c===void 0?`ruhig`:c],f;t[0]===n?f=t[1]:(f=(0,A.jsx)(`span`,{className:`schild text-xs tracking-[0.18em] text-text-3`,children:n}),t[0]=n,t[1]=f);let p;t[2]===d.wert?p=t[3]:(p=a(`font-anzeige text-[28px] leading-none font-bold`,d.wert),t[2]=d.wert,t[3]=p);let m;t[4]!==i||t[5]!==r?(m=Uu(r,i),t[4]=i,t[5]=r,t[6]=m):m=t[6];let h;t[7]!==p||t[8]!==m?(h=(0,A.jsx)(`span`,{className:p,children:m}),t[7]=p,t[8]=m,t[9]=h):h=t[9];let g;t[10]!==d.marke||t[11]!==d.wert?(g=d.marke&&(0,A.jsx)(`span`,{className:a(`schild text-[11px]`,d.wert),children:d.marke}),t[10]=d.marke,t[11]=d.wert,t[12]=g):g=t[12];let _;t[13]!==h||t[14]!==g?(_=(0,A.jsxs)(`span`,{className:`flex items-baseline gap-2`,children:[h,g]}),t[13]=h,t[14]=g,t[15]=_):_=t[15];let v;t[16]!==l||t[17]!==n||t[18]!==s||t[19]!==o||t[20]!==u?(v=o&&o.length>1&&(0,A.jsx)($u,{punkte:o,max:s,farbe:l,beschriftung:`${n}, ${u}`}),t[16]=l,t[17]=n,t[18]=s,t[19]=o,t[20]=u,t[21]=v):v=t[21];let y;t[22]===o?y=t[23]:(y=o&&o.length<=1&&(0,A.jsx)(`span`,{className:`h-9`,"aria-hidden":!0}),t[22]=o,t[23]=y);let b;return t[24]!==f||t[25]!==_||t[26]!==v||t[27]!==y?(b=(0,A.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1.5 rounded-xl border border-linie bg-erhaben/50 px-3.5 pt-3 pb-2`,children:[f,_,v,y]}),t[24]=f,t[25]=_,t[26]=v,t[27]=y,t[28]=b):b=t[28],b}function Y(e){if(e.aktion)return null;let t=e.grund??``,n=t.match(/erst ab (\d{2}\.\d{2}\.(?:\d{4})? ?\d{2}:\d{2})/)?.[1];return n?`ab ${n}`:/eigene Oberfläche|eigenen Oberfläche|eigenes Update/i.test(t)?`über die App`:null}function X(e){let t=e.bausteine.filter(e=>e.zustand===`neu`);if(t.length===0)return null;let n=[],r=Bl(e);if(r?.zustand===`neu`){let e=Y(r);n.push(`App → ${r.verfuegbar??`neu`}${e?` (${e})`:``}`)}let i=Vl(e);i?.zustand===`neu`&&n.push(i.kurz||(i.id===`docker`?`Images`:`Pakete`));for(let e of t)e!==r&&e!==i&&n.push(`${e.name}${e.kurz?` · ${e.kurz}`:``}`);return{id:e.id,name:e.name,teile:n,knopf:t.some(e=>!!e.aktion)}}function ed(e){return e.bausteine.filter(e=>e.zustand===`neu`).map(t=>({id:`${e.id}-${t.id}`,name:t.name,teile:[t.kurz||t.verfuegbar||`neu`],knopf:!!t.aktion}))}function td(e){let t=e.flatMap(e=>e.art===`ki-box`?ed(e):[X(e)]).filter(e=>e!==null);return[...t.filter(e=>e.knopf),...t.filter(e=>!e.knopf)]}function nd(e){return e.getrennt.length>0?{stufe:`rot`,titel:`Verbindung weg`,text:`${e.getrennt.join(` und `)} antwortet nicht.`}:e.stumm.length>0||e.hinweiseRot>0?{stufe:`rot`,titel:`Störung`,text:`${e.stumm.length>0?`${e.stumm.join(`, `)} antwortet nicht`:`Ein roter Hinweis wartet`}.`}:e.hinweise>0?{stufe:`gelb`,titel:e.hinweise===1?`1 Hinweis`:`${e.hinweise} Hinweise`,text:`Bei Gelegenheit ansehen.`}:e.updates>0?{stufe:`info`,titel:`Alles läuft`,text:`${e.updates} ${e.updates===1?`Update steht`:`Updates stehen`} bereit.`}:{stufe:`ok`,titel:`Alles läuft`,text:`Keine Hinweise, keine offenen Updates.`}}var rd={ok:{rahmen:`border-gruen-rand bg-gruen-grund`,titel:`text-gruen`,Symbol:Xa},info:{rahmen:`border-cyan-rand bg-cyan-grund`,titel:`text-cyan`,Symbol:co},gelb:{rahmen:`border-bernstein/70 bg-bernstein-grund`,titel:`text-bernstein`,Symbol:Ja},rot:{rahmen:`border-rot bg-rot-grund`,titel:`text-rot`,Symbol:Ja}};function id(e){let t=(0,B.c)(17),{label:n,wert:r,zusatz:i,art:o}=e,s,c,l;t[0]!==o||t[1]!==n?(c=`flex min-w-0 flex-col gap-1 rounded-xl border border-linie bg-panel/70 px-4 py-3`,t[5]===n?l=t[6]:(l=(0,A.jsx)(`span`,{className:`schild text-xs tracking-[0.18em] text-text-3`,children:n}),t[5]=n,t[6]=l),s=a(`font-anzeige text-[32px] leading-none font-bold`,{gruen:`text-gruen`,bernstein:`text-bernstein`,cyan:`text-cyan`,rot:`text-rot-text`,grau:`text-foreground`}[o]),t[0]=o,t[1]=n,t[2]=s,t[3]=c,t[4]=l):(s=t[2],c=t[3],l=t[4]);let u;t[7]!==s||t[8]!==r?(u=(0,A.jsx)(`span`,{className:s,children:r}),t[7]=s,t[8]=r,t[9]=u):u=t[9];let d;t[10]===i?d=t[11]:(d=i&&(0,A.jsx)(`span`,{className:`truncate text-xs text-text-3`,children:i}),t[10]=i,t[11]=d);let f;return t[12]!==c||t[13]!==l||t[14]!==u||t[15]!==d?(f=(0,A.jsxs)(`div`,{className:c,children:[l,u,d]}),t[12]=c,t[13]=l,t[14]=u,t[15]=d,t[16]=f):f=t[16],f}var ad={online:`bg-gruen shadow-[0_0_8px_rgba(61,220,138,0.7)]`,verbinde:`bg-bernstein`,getrennt:`bg-rot`,fehlt:`bg-text-3`},od={online:`online`,verbinde:`verbinde`,getrennt:`getrennt`,fehlt:`nicht eingerichtet`};function sd(e){let t=(0,B.c)(43),{bereich:n,name:r,verbindung:i,cockpit:o,children:s}=e,c,l,u,d,f,p,m,h,g;if(t[0]!==n||t[1]!==o||t[2]!==r){let e=n===`box`?{rand:`border-box-rand`,kopf:`from-box-grund`,text:`text-box-text`,balken:`bg-box`}:{rand:`border-lab-rand`,kopf:`from-lab-grund`,text:`text-lab-text`,balken:`bg-lab`};h=r,g=a(`flex min-w-0 flex-col overflow-hidden rounded-2xl border bg-panel`,e.rand),c=ea,p=o,m=a(`group flex items-center justify-between gap-3 bg-gradient-to-r to-transparent px-5 py-4 sm:px-6`,e.kopf),d=`flex items-center gap-3`,f=(0,A.jsx)(`span`,{"aria-hidden":!0,className:a(`h-7 w-1.5 rounded-full`,e.balken)}),u=`flex flex-col leading-tight`,l=a(`schild text-lg font-bold tracking-[0.22em]`,e.text),t[0]=n,t[1]=o,t[2]=r,t[3]=c,t[4]=l,t[5]=u,t[6]=d,t[7]=f,t[8]=p,t[9]=m,t[10]=h,t[11]=g}else c=t[3],l=t[4],u=t[5],d=t[6],f=t[7],p=t[8],m=t[9],h=t[10],g=t[11];let _;t[12]!==r||t[13]!==l?(_=(0,A.jsx)(`span`,{className:l,children:r}),t[12]=r,t[13]=l,t[14]=_):_=t[14];let v=ad[i],y;t[15]===v?y=t[16]:(y=a(`size-2 rounded-full`,v),t[15]=v,t[16]=y);let b;t[17]===y?b=t[18]:(b=(0,A.jsx)(`span`,{"aria-hidden":!0,className:y}),t[17]=y,t[18]=b);let x=od[i],S;t[19]!==b||t[20]!==x?(S=(0,A.jsxs)(`span`,{className:`flex items-center gap-1.5 text-xs text-text-3`,children:[b,x]}),t[19]=b,t[20]=x,t[21]=S):S=t[21];let C;t[22]!==S||t[23]!==u||t[24]!==_?(C=(0,A.jsxs)(`span`,{className:u,children:[_,S]}),t[22]=S,t[23]=u,t[24]=_,t[25]=C):C=t[25];let w;t[26]!==C||t[27]!==d||t[28]!==f?(w=(0,A.jsxs)(`span`,{className:d,children:[f,C]}),t[26]=C,t[27]=d,t[28]=f,t[29]=w):w=t[29];let T;t[30]===Symbol.for(`react.memo_cache_sentinel`)?(T=(0,A.jsxs)(`span`,{className:`flex items-center gap-1.5 text-sm text-text-2 group-hover:text-foreground`,children:[`Cockpit `,(0,A.jsx)(Ka,{className:`size-4 transition-transform group-hover:translate-x-0.5`,"aria-hidden":!0})]}),t[30]=T):T=t[30];let E;t[31]!==c||t[32]!==w||t[33]!==p||t[34]!==m?(E=(0,A.jsxs)(c,{to:p,className:m,children:[w,T]}),t[31]=c,t[32]=w,t[33]=p,t[34]=m,t[35]=E):E=t[35];let D;t[36]===s?D=t[37]:(D=(0,A.jsx)(`div`,{className:`flex flex-col gap-5 px-5 pt-1 pb-5 sm:px-6`,children:s}),t[36]=s,t[37]=D);let O;return t[38]!==E||t[39]!==D||t[40]!==h||t[41]!==g?(O=(0,A.jsxs)(`section`,{"aria-label":h,className:g,children:[E,D]}),t[38]=E,t[39]=D,t[40]=h,t[41]=g,t[42]=O):O=t[42],O}function cd(e){let t=(0,B.c)(5),{titel:n,rechts:r}=e,i;t[0]===n?i=t[1]:(i=(0,A.jsx)(`h3`,{className:`schild text-sm tracking-[0.2em] text-text-2`,children:n}),t[0]=n,t[1]=i);let a;return t[2]!==r||t[3]!==i?(a=(0,A.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[i,r]}),t[2]=r,t[3]=i,t[4]=a):a=t[4],a}function ld(e){let t=(0,B.c)(13),{zeilen:n,ziel:r,laedt:i,alleAktuell:o}=e,s;t[0]===n?s=t[1]:(s=n.filter(ud),t[0]=n,t[1]=s);let c=s.length,l;t[2]!==c||t[3]!==n.length?(l=(0,A.jsx)(cd,{titel:`Updates`,rechts:c>0?(0,A.jsxs)(Nu,{art:`cyan`,children:[c,` bereit`]}):n.length>0?(0,A.jsx)(Nu,{children:`wartet`}):(0,A.jsx)(Nu,{art:`gruen`,children:`aktuell`})}),t[2]=c,t[3]=n.length,t[4]=l):l=t[4];let u;t[5]!==o||t[6]!==i||t[7]!==n||t[8]!==r?(u=i?(0,A.jsx)(`p`,{className:`text-sm text-text-3`,children:`Wird gelesen …`}):n.length===0?(0,A.jsxs)(`p`,{className:`flex items-center gap-2 text-sm text-gruen-text`,children:[(0,A.jsx)(Xa,{className:`size-4`,"aria-hidden":!0}),o]}):(0,A.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:n.map(e=>(0,A.jsx)(`li`,{children:(0,A.jsxs)(ea,{to:r,className:`group -mx-2 grid grid-cols-[minmax(0,9rem)_minmax(0,1fr)_auto] items-baseline gap-3 rounded-lg px-2 py-1.5 hover:bg-erhaben`,children:[(0,A.jsx)(`span`,{className:`truncate text-[15px] font-medium`,children:e.name}),(0,A.jsx)(`span`,{className:a(`min-w-0 text-sm`,e.knopf?`text-cyan`:`text-text-3`),children:e.teile.join(` · `)}),(0,A.jsx)(Ka,{className:`size-3.5 self-center text-text-3 opacity-0 group-hover:opacity-100`,"aria-hidden":!0})]})},e.id))}),t[5]=o,t[6]=i,t[7]=n,t[8]=r,t[9]=u):u=t[9];let d;return t[10]!==l||t[11]!==u?(d=(0,A.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[l,u]}),t[10]=l,t[11]=u,t[12]=d):d=t[12],d}function ud(e){return e.knopf}function dd(e){let t=(0,B.c)(18),{hinweise:n,ziel:r}=e;if(n.length===0)return null;let i,o,s,c;if(t[0]!==n||t[1]!==r){let e=[...n].sort(pd);s=`flex flex-col gap-2`;let l=n.some(fd)?`rot`:`bernstein`;t[6]!==n.length||t[7]!==l?(c=(0,A.jsx)(cd,{titel:`Hinweise`,rechts:(0,A.jsx)(Nu,{art:l,children:n.length})}),t[6]=n.length,t[7]=l,t[8]=c):c=t[8],i=`m-0 flex list-none flex-col gap-1 p-0`;let u;t[9]===r?u=t[10]:(u=e=>(0,A.jsx)(`li`,{children:(0,A.jsxs)(ea,{to:r,className:`-mx-2 flex items-start gap-2 rounded-lg px-2 py-1.5 hover:bg-erhaben`,children:[(0,A.jsx)(`span`,{"aria-hidden":!0,className:a(`mt-1.5 size-2 shrink-0 rounded-full`,e.stufe===`rot`?`bg-rot`:`bg-bernstein`)}),(0,A.jsx)(`span`,{className:a(`text-sm`,e.stufe===`rot`?`text-rot-text`:`text-bernstein`),children:e.titel})]})},e.id),t[9]=r,t[10]=u),o=e.slice(0,3).map(u),t[0]=n,t[1]=r,t[2]=i,t[3]=o,t[4]=s,t[5]=c}else i=t[2],o=t[3],s=t[4],c=t[5];let l;t[11]!==i||t[12]!==o?(l=(0,A.jsx)(`ul`,{className:i,children:o}),t[11]=i,t[12]=o,t[13]=l):l=t[13];let u;return t[14]!==s||t[15]!==c||t[16]!==l?(u=(0,A.jsxs)(`div`,{className:s,children:[c,l]}),t[14]=s,t[15]=c,t[16]=l,t[17]=u):u=t[17],u}function fd(e){return e.stufe===`rot`}function pd(e,t){return Number(t.stufe===`rot`)-Number(e.stufe===`rot`)}function md(e){let t=(0,B.c)(4),{werte:n}=e,r;t[0]===n?r=t[1]:(r=n.map(hd),t[0]=n,t[1]=r);let i;return t[2]===r?i=t[3]:(i=(0,A.jsx)(`div`,{className:`grid grid-cols-2 gap-2.5 sm:grid-cols-4 xl:grid-cols-2 2xl:grid-cols-4`,children:r}),t[2]=r,t[3]=i),i}function hd(e){return(0,A.jsx)(J,{label:e.label,wert:e.wert,einheit:e.einheit,punkte:e.punkte,max:(e.einheit,100),zustand:Ku(e.wert??null,e.gelb,e.rot),zeitraumText:`letzte Stunde`},e.label)}function gd(e){let t=(0,B.c)(33),{verbindung:n}=e,r=ws(),i=Zs(),a=uc(`1h`),o=is(),s=a.data?.reihen,c=r.data?.box,l=o?.ram??(c?.ram_used&&c.ram_total?c.ram_used/c.ram_total*100:null),u=o?.cpu??a.data?.aktuell.cpu,d=s?.cpu,f;t[0]!==u||t[1]!==d?(f={label:`CPU`,wert:u,einheit:`prozent`,punkte:d,gelb:85,rot:95},t[0]=u,t[1]=d,t[2]=f):f=t[2];let p=s?.ram,m;t[3]!==l||t[4]!==p?(m={label:`Speicher`,wert:l,einheit:`prozent`,punkte:p,gelb:85,rot:95},t[3]=l,t[4]=p,t[5]=m):m=t[5];let h=o?.temp_cpu??c?.temp_cpu,g=s?.temp_cpu,_;t[6]!==h||t[7]!==g?(_={label:`Temperatur`,wert:h,einheit:`grad`,punkte:g,gelb:80,rot:90},t[6]=h,t[7]=g,t[8]=_):_=t[8];let v=o?.disk??c?.platte?.percent,y=s?.platte,b;t[9]!==y||t[10]!==v?(b={label:`Platte`,wert:v,einheit:`prozent`,punkte:y,gelb:80,rot:90},t[9]=y,t[10]=v,t[11]=b):b=t[11];let x;t[12]!==b||t[13]!==f||t[14]!==m||t[15]!==_?(x=(0,A.jsx)(md,{werte:[f,m,_,b]}),t[12]=b,t[13]=f,t[14]=m,t[15]=_,t[16]=x):x=t[16];let S;t[17]===i.data?.ziele?S=t[18]:(S=i.data?.ziele??[],t[17]=i.data?.ziele,t[18]=S);let C;t[19]===S?C=t[20]:(C=td(S),t[19]=S,t[20]=C);let w;t[21]!==C||t[22]!==i.isPending?(w=(0,A.jsx)(ld,{zeilen:C,ziel:`/box/updates`,laedt:i.isPending,alleAktuell:`Betriebssystem, Motor, llama-swap und Hermes sind aktuell.`}),t[21]=C,t[22]=i.isPending,t[23]=w):w=t[23];let T;t[24]===r.data?.hinweise?T=t[25]:(T=r.data?.hinweise??[],t[24]=r.data?.hinweise,t[25]=T);let E;t[26]===T?E=t[27]:(E=(0,A.jsx)(dd,{hinweise:T,ziel:`/box`}),t[26]=T,t[27]=E);let D;return t[28]!==x||t[29]!==w||t[30]!==E||t[31]!==n?(D=(0,A.jsxs)(sd,{bereich:`box`,name:`KI-Box`,verbindung:n,cockpit:`/box`,children:[x,w,E]}),t[28]=x,t[29]=w,t[30]=E,t[31]=n,t[32]=D):D=t[32],D}function _d(e){let t=(0,B.c)(14),{verbindung:n}=e,r=n===`online`,i=Qs(r),a=tc(r),o=dc(`1h`,r),s;t[0]===o.data?.geraete?s=t[1]:(s=o.data?.geraete.find(vd),t[0]=o.data?.geraete,t[1]=s);let c=s,l;t[2]===i.data?.ziele?l=t[3]:(l=i.data?.ziele??[],t[2]=i.data?.ziele,t[3]=l);let u=l,d;t[4]!==r||t[5]!==a||t[6]!==i.isPending||t[7]!==c?.aktuell||t[8]!==c?.reihen||t[9]!==u?(d=r?(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,A.jsx)(cd,{titel:`Proxmox-Host`}),(0,A.jsx)(md,{werte:[{label:`CPU`,wert:c?.aktuell.cpu,einheit:`prozent`,punkte:c?.reihen.cpu,gelb:85,rot:95},{label:`Speicher`,wert:c?.aktuell.ram,einheit:`prozent`,punkte:c?.reihen.ram,gelb:90,rot:95},{label:`Temperatur`,wert:c?.aktuell.temp_cpu,einheit:`grad`,punkte:c?.reihen.temp_cpu,gelb:80,rot:90},{label:`Platte`,wert:c?.aktuell.platte,einheit:`prozent`,punkte:c?.reihen.platte,gelb:80,rot:90}]})]}),(0,A.jsx)(ld,{zeilen:td(u),ziel:`/homelab/updates`,laedt:i.isPending,alleAktuell:`Alle Geräte sind aktuell.`}),(0,A.jsx)(dd,{hinweise:a.data?.hinweise??[],ziel:`/homelab`})]}):(0,A.jsx)(`p`,{className:`text-sm text-text-2`,children:`Der Homelab-Teil antwortet gerade nicht; die Karte zeigt nichts Veraltetes.`}),t[4]=r,t[5]=a,t[6]=i.isPending,t[7]=c?.aktuell,t[8]=c?.reihen,t[9]=u,t[10]=d):d=t[10];let f;return t[11]!==d||t[12]!==n?(f=(0,A.jsx)(sd,{bereich:`homelab`,name:`Homelab`,verbindung:n,cockpit:`/homelab`,children:d}),t[11]=d,t[12]=n,t[13]=f):f=t[13],f}function vd(e){return e.art===`proxmox-host`}var yd={eingespielt:`gruen`,gruen:`gruen`,zurueckgerollt:`bernstein`,gelb:`bernstein`,fehler:`rot`,rot:`rot`,neustart:`cyan`,info:`cyan`};function bd(e){let t=(0,B.c)(9),{homelabAktiv:n}=e,r=js(),i=$s(n),a,o,s;if(t[0]!==r.data?.laeufe||t[1]!==i.data?.laeufe){s=Symbol.for(`react.early_return_sentinel`);bb0:{let e=[...(r.data?.laeufe??[]).slice(0,6).map(Td),...(i.data?.laeufe??[]).filter(wd).slice(0,6).map(Cd)].sort(Sd).slice(0,6);if(e.length===0){let e;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,A.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Noch keine Updates aufgezeichnet.`}),t[5]=e):e=t[5],s=e;break bb0}a=`@container m-0 flex list-none flex-col p-0`,o=e.map(xd)}t[0]=r.data?.laeufe,t[1]=i.data?.laeufe,t[2]=a,t[3]=o,t[4]=s}else a=t[2],o=t[3],s=t[4];if(s!==Symbol.for(`react.early_return_sentinel`))return s;let c;return t[6]!==a||t[7]!==o?(c=(0,A.jsx)(`ol`,{className:a,children:o}),t[6]=a,t[7]=o,t[8]=c):c=t[8],c}function xd(e){return(0,A.jsxs)(`li`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 border-t border-linie py-2.5 first:border-t-0 @md:grid-cols-[112px_minmax(0,1fr)_auto]`,children:[(0,A.jsx)(`span`,{className:`ziffern col-start-1 row-start-1 text-sm text-text-3`,children:hs(new Date(e.zeit).toISOString())}),(0,A.jsxs)(`span`,{className:`col-span-2 row-start-2 min-w-0 text-[15px] @md:col-span-1 @md:col-start-2 @md:row-start-1`,children:[(0,A.jsx)(`span`,{className:a(`schild mr-2 text-[11px]`,e.bereich===`KI-Box`?`text-box-text`:`text-lab-text`),children:e.bereich}),e.titel]}),(0,A.jsx)(`span`,{className:`col-start-2 row-start-1 justify-self-end @md:col-start-3`,children:(0,A.jsx)(Nu,{art:e.art,children:e.chip})})]},`${e.bereich}-${e.zeit}-${e.titel}`)}function Sd(e,t){return t.zeit-e.zeit}function Cd(e){return{zeit:e.start*1e3,bereich:`Homelab`,titel:e.name,chip:e.ergebnis??`unterbrochen`,art:(e.ergebnis?yd[e.ergebnis]:`grau`)??`grau`}}function wd(e){return e.status!==`laeuft`}function Td(e){return{zeit:new Date(e.start).getTime(),bereich:`KI-Box`,titel:e.anlass,chip:e.titel,art:yd[e.stufe]??`grau`}}function Ed(){let e=(0,B.c)(92),t=G(),n=ws(),r=t.homelab.verbindung===`online`,i=Qs(r),o=tc(r);if(n.isPending&&!n.data){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,A.jsx)(Pu,{text:`Die Übersicht sammelt sich gleich …`}),e[0]=t):t=e[0],t}let s,c,l;if(e[1]!==i.data?.ziele||e[2]!==o.data?.hinweise||e[3]!==t.box.updates||e[4]!==t.box.verbindung||e[5]!==t.homelab.updates||e[6]!==t.homelab.verbindung||e[7]!==n.data?.hinweise||e[8]!==n.isError){let r=[...t.box.verbindung===`getrennt`&&n.isError?[`Die KI-Box`]:[],...t.homelab.verbindung===`getrennt`?[`Der Homelab-Teil`]:[]],a=(i.data?.ziele??[]).filter(jd).map(Ad),u;e[12]===n.data?.hinweise?u=e[13]:(u=n.data?.hinweise??[],e[12]=n.data?.hinweise,e[13]=u);let d;e[14]===o.data?.hinweise?d=e[15]:(d=o.data?.hinweise??[],e[14]=o.data?.hinweise,e[15]=d);let f;e[16]!==u||e[17]!==d?(f=[...u,...d],e[16]=u,e[17]=d,e[18]=f):f=e[18],s=f,l=t.box.updates+t.homelab.updates;let p;e[19]===s?p=e[20]:(p=s.filter(kd),e[19]=s,e[20]=p),c=nd({getrennt:r,stumm:a,hinweiseRot:p.length,hinweise:s.length,updates:l}),e[1]=i.data?.ziele,e[2]=o.data?.hinweise,e[3]=t.box.updates,e[4]=t.box.verbindung,e[5]=t.homelab.updates,e[6]=t.homelab.verbindung,e[7]=n.data?.hinweise,e[8]=n.isError,e[9]=s,e[10]=c,e[11]=l}else s=e[9],c=e[10],l=e[11];let u=c,d=rd[u.stufe],f;e[21]===i.data?.ziele?f=e[22]:(f=i.data?.ziele??[],e[21]=i.data?.ziele,e[22]=f);let p=f,m;e[23]===p?m=e[24]:(m=p.filter(Od),e[23]=p,e[24]=m);let h=m.length+ +(t.box.verbindung===`online`),g=p.length+1,_=n.data?.flugplan.geplant[0],v;e[25]===d.rahmen?v=e[26]:(v=a(`grid gap-4 rounded-2xl border p-4 sm:p-5 lg:grid-cols-[minmax(0,1fr)_minmax(0,1.6fr)] lg:items-center`,d.rahmen),e[25]=d.rahmen,e[26]=v);let y=d.Symbol,b;e[27]===d.titel?b=e[28]:(b=a(`size-10 shrink-0`,d.titel),e[27]=d.titel,e[28]=b);let x;e[29]!==d.Symbol||e[30]!==b?(x=(0,A.jsx)(y,{className:b,"aria-hidden":!0}),e[29]=d.Symbol,e[30]=b,e[31]=x):x=e[31];let S;e[32]===d.titel?S=e[33]:(S=a(`font-anzeige text-[34px] leading-none font-bold tracking-[0.02em]`,d.titel),e[32]=d.titel,e[33]=S);let C;e[34]!==u.titel||e[35]!==S?(C=(0,A.jsx)(`span`,{className:S,children:u.titel}),e[34]=u.titel,e[35]=S,e[36]=C):C=e[36];let w;e[37]===u.text?w=e[38]:(w=(0,A.jsx)(`span`,{className:`text-[15px] text-text-2`,children:u.text}),e[37]=u.text,e[38]=w);let T;e[39]!==C||e[40]!==w?(T=(0,A.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[C,w]}),e[39]=C,e[40]=w,e[41]=T):T=e[41];let E;e[42]!==x||e[43]!==T?(E=(0,A.jsxs)(`div`,{className:`flex items-center gap-4 px-1`,children:[x,T]}),e[42]=x,e[43]=T,e[44]=E):E=e[44];let D=String(l),O=l?`cyan`:`gruen`,ee=`KI-Box ${t.box.updates} · Homelab ${t.homelab.updates}`,te;e[45]!==D||e[46]!==O||e[47]!==ee?(te=(0,A.jsx)(id,{label:`Updates bereit`,wert:D,art:O,zusatz:ee}),e[45]=D,e[46]=O,e[47]=ee,e[48]=te):te=e[48];let ne=String(s.length),re=s.some(Dd)?`rot`:s.length?`bernstein`:`gruen`,ie;e[49]!==ne||e[50]!==re?(ie=(0,A.jsx)(id,{label:`Hinweise`,wert:ne,art:re}),e[49]=ne,e[50]=re,e[51]=ie):ie=e[51];let ae=`${h}/${g}`,k=h(0,A.jsx)(Li,{to:`/`})}),Nd=ra({getParentRoute:()=>Md,path:`/`,component:Ed}),Pd=ra({getParentRoute:()=>Md,path:`/box`,component:R(()=>Su(()=>import(`./Start-CckdBDxR.js`),__vite__mapDeps([6,1,2,7])),`StartSeite`)}),Fd=ra({getParentRoute:()=>Md,path:`/box/updates`,component:R(()=>Su(()=>import(`./Updates-CeN6eC6c.js`),__vite__mapDeps([8,1,9,2,10,4,11])),`UpdatesSeite`)}),Id=ra({getParentRoute:()=>Md,path:`/box/modelle`,component:R(()=>Su(()=>import(`./Modelle-B9Bh3yNL.js`),__vite__mapDeps([12,1,13,14,9,15,2,3,4,10,11])),`ModelleSeite`)}),Ld=ra({getParentRoute:()=>Md,path:`/box/monitoring`,component:R(()=>Su(()=>import(`./Monitoring-BicHox4A.js`),__vite__mapDeps([16,1])),`BoxMonitoringSeite`)}),Rd=ra({getParentRoute:()=>Md,path:`/homelab`,component:R(()=>Su(()=>import(`./Homelab-BS3lis1u.js`),__vite__mapDeps([17,1,9,15,2,10,4,7])),`HomelabSeite`)}),zd=ra({getParentRoute:()=>Md,path:`/homelab/updates`,component:R(()=>Su(()=>import(`./Homelab-BS3lis1u.js`),__vite__mapDeps([17,1,9,15,2,10,4,7])),`HomelabUpdatesSeite`)}),Bd=ra({getParentRoute:()=>Md,path:`/homelab/monitoring`,component:R(()=>Su(()=>import(`./Monitoring-BicHox4A.js`),__vite__mapDeps([16,1])),`HomelabMonitoringSeite`)}),Vd=ra({getParentRoute:()=>Md,path:`/homelab/protokoll`,component:R(()=>Su(()=>import(`./HomelabProtokoll-DVx8Px-4.js`),__vite__mapDeps([18,1,9,15])),`HomelabProtokollSeite`)}),Hd=ra({getParentRoute:()=>Md,path:`/einstellungen`,component:R(()=>Su(()=>import(`./Einstellungen-DTrnYy0G.js`),__vite__mapDeps([19,1,2,10,4])),`EinstellungenSeite`)}),Ud=ra({getParentRoute:()=>Md,path:`/updates`,beforeLoad:()=>{throw ln({to:`/box/updates`})}}),Wd=ra({getParentRoute:()=>Md,path:`/modelle`,beforeLoad:({location:e})=>{throw ln({to:`/box/modelle`,hash:e.hash||void 0})}}),Gd=xa({routeTree:Md.addChildren([Nd,Pd,Fd,Id,Ld,Rd,zd,Bd,Vd,Hd,Ud,Wd]),defaultPreload:`intent`,defaultErrorComponent:Da}),Kd=`mc_neuladen_wegen_version`;function qd(){window.addEventListener(`vite:preloadError`,e=>{sessionStorage.getItem(Kd)||(e.preventDefault(),sessionStorage.setItem(Kd,`1`),window.location.reload())}),window.addEventListener(`load`,()=>{window.setTimeout(()=>sessionStorage.removeItem(Kd),5e3)})}qd();var Jd=new ft({defaultOptions:{queries:{retry:1,refetchOnWindowFocus:!1,staleTime:5e3}}});(0,Ea.createRoot)(document.getElementById(`root`)).render((0,A.jsx)(k.StrictMode,{children:(0,A.jsx)(ce,{client:Jd,children:(0,A.jsx)(wa,{router:Gd})})}));export{Ts as $,sc as A,jo as At,Qs as B,wo as Bt,Yl as C,gs as Ct,ql as D,Uo as Dt,Ul as E,is as Et,uc as F,Bo as Ft,hc as G,Ka as Gt,tc as H,co as Ht,Ns as I,Ro as It,Ys as J,ea as Jt,gc as K,Ha as Kt,nc as L,Mo as Lt,vc as M,Po as Mt,Vs as N,Fo as Nt,mc as O,No as Ot,Hs as P,Lo as Pt,Ks as Q,re as Qt,Us as R,xo as Rt,Hl as S,vs as St,Vl as T,xs as Tt,$s as U,eo as Ut,_c as V,ho as Vt,dc as W,Xa as Wt,zs as X,I as Xt,Ws as Y,Ii as Yt,Os as Z,se as Zt,Bl as _,ec as _t,Wu as a,ic as at,Xl as b,ys as bt,Yu as c,pc as ct,Lu as d,ws as dt,Es as et,Nu as f,ac as ft,_u as g,js as gt,hu as h,Rs as ht,Xu as i,qs as it,yc as j,Io as jt,cc as k,zo as kt,Ku as l,ks as lt,Su as m,rc as mt,Qu as n,Ms as nt,Gu as o,Js as ot,Pu as p,As as pt,Bs as q,Ta as qt,Zu as r,Ds as rt,Uu as s,fc as st,J as t,Xs as tt,zu as u,oc as ut,Il as v,Gs as vt,Wl as w,_s as wt,$l as x,bs as xt,Ql as y,hs as yt,Is as z,V as zt}; \ No newline at end of file +\r`.includes(e)?``:encodeURIComponent(e))),Vn(e)}function Un(e){let t=e.getLocation(),n=new Set,r=r=>{t=e.getLocation(),n.forEach(e=>e({location:t,action:r}))},i=n=>{e.notifyOnIndexChange??!0?r(n):t=e.getLocation()},a=async({task:n,navigateOpts:r,...i})=>{if(r?.ignoreBlocker??!1){n();return}let a=e.getBlockers?.()??[],o=i.type===`PUSH`||i.type===`REPLACE`;if(typeof document<`u`&&a.length&&o)for(let n of a){let r=Kn(i.path,i.state);if(await n.blockerFn({currentLocation:t,nextLocation:r,action:i.type})){e.onBlocked?.();return}}n()};return{get location(){return t},get length(){return e.getLength()},subscribers:n,subscribe:e=>(n.add(e),()=>{n.delete(e)}),push:(n,i,o)=>{let s=t.state[Ln];i=Wn(s+1,i),a({task:()=>{e.pushState(n,i),r({type:`PUSH`})},navigateOpts:o,type:`PUSH`,path:n,state:i})},replace:(n,i,o)=>{let s=t.state[Ln];i=Wn(s,i),a({task:()=>{e.replaceState(n,i),r({type:`REPLACE`})},navigateOpts:o,type:`REPLACE`,path:n,state:i})},go:(t,n)=>{a({task:()=>{e.go(t,n?.ignoreBlocker??!1),i({type:`GO`,index:t})},navigateOpts:n,type:`GO`})},back:t=>{a({task:()=>{e.back(t?.ignoreBlocker??!1),i({type:`BACK`})},navigateOpts:t,type:`BACK`})},forward:t=>{a({task:()=>{e.forward(t?.ignoreBlocker??!1),i({type:`FORWARD`})},navigateOpts:t,type:`FORWARD`})},canGoBack:()=>t.state[Ln]!==0,createHref:t=>e.createHref(t),block:t=>{if(!e.setBlockers)return()=>{};let n=e.getBlockers?.()??[];return e.setBlockers([...n,t]),()=>{let n=e.getBlockers?.()??[];e.setBlockers?.(n.filter(e=>e!==t))}},flush:()=>e.flush?.(),destroy:()=>e.destroy?.(),notify:r,_getBlockers:()=>e.getBlockers?.()??[]}}function Wn(e,t){let n=qn();return{...t,key:n,__TSR_key:n,[Ln]:e}}function Gn(e){let t=e?.window??(typeof document<`u`?window:void 0),n=t.history.pushState,r=t.history.replaceState,i=[],a=()=>i,o=e=>i=e,s=t=>Hn(e?.createHref?e.createHref(t):t),c=e?.parseLocation??(()=>Kn(`${t.location.pathname}${t.location.search}${t.location.hash}`,t.history.state));if(!t.history.state?.__TSR_key&&!t.history.state?.key){let e=qn();t.history.replaceState({[Ln]:0,key:e,__TSR_key:e},``)}let l=c(),u,d=!1,f=!1,p=!1,m=!1,h=()=>l,g,_=()=>{g&&(S._ignoreSubscribers=!0,(g[2]?t.history.pushState:t.history.replaceState)(g[1],``,g[0]),S._ignoreSubscribers=!1,g=void 0,u=void 0)},v=(t,n,r)=>{let i=e?.createHref?s(n):void 0,a=!!g;a||(u=l),l=Kn(n,r),g=[i??l.href,r,g?.[2]||t],a||queueMicrotask(()=>_())},y=e=>{l=c(),S.notify({type:e})},b=async()=>{if(m=!1,f){f=!1;return}let e=c(),n=e.state[Ln]-l.state[Ln],r=n===1,i=n===-1,o=!r&&!i||d;d=!1;let s=o?`GO`:i?`BACK`:`FORWARD`,u=o?{type:`GO`,index:n}:{type:i?`BACK`:`FORWARD`};if(p)p=!1;else{let r=a();if(typeof document<`u`&&r.length){for(let i of r)if(await i.blockerFn({currentLocation:l,nextLocation:e,action:s})){f=!0,t.history.go(-n),S.notify(u);return}}}l=c(),S.notify(u)},x=e=>{if(m){m=!1;return}let t=!1,n=a();if(typeof document<`u`&&n.length)for(let e of n){let n=e.enableBeforeUnload??!0;if(n===!0){t=!0;break}if(typeof n==`function`&&n()===!0){t=!0;break}}if(t)return e.preventDefault(),e.returnValue=``},S=Un({getLocation:h,getLength:()=>t.history.length,pushState:(e,t)=>v(!0,e,t),replaceState:(e,t)=>v(!1,e,t),back:e=>(e&&(p=!0,m=!0),t.history.back()),forward:e=>{e&&(p=!0,m=!0),t.history.forward()},go:(e,n)=>{d=!0,n&&(p=!0,m=!0),t.history.go(e)},createHref:e=>s(e),flush:_,destroy:()=>{t.history.pushState=n,t.history.replaceState=r,t.removeEventListener(zn,x,{capture:!0}),t.removeEventListener(Rn,b)},onBlocked:()=>{u&&l!==u&&(l=u)},getBlockers:a,setBlockers:o,notifyOnIndexChange:!1});return S._ignoreNextBeforeUnload=e=>{m=!1;try{e=new URL(e,t.document.baseURI).href,m=/^https?:/.test(e)&&(!e.includes(`#`)||e.split(`#`)[0]!==t.location.href.split(`#`)[0])}catch{}},t.addEventListener(zn,x,{capture:!0}),t.addEventListener(Rn,b),t.history.pushState=function(...e){let r=n.apply(t.history,e);return S._ignoreSubscribers||y(`PUSH`),r},t.history.replaceState=function(...e){let n=r.apply(t.history,e);return S._ignoreSubscribers||y(`REPLACE`),n},S}function Kn(e,t){let n=Hn(e),r=n.indexOf(`#`),i=n.indexOf(`?`);if(!t){let e=qn();t={[Ln]:0,key:e,__TSR_key:e}}return{href:n,pathname:n.substring(0,r>0?i>0?Math.min(r,i):r:i>0?i:n.length),hash:r>-1?n.substring(r):``,search:i>-1?n.slice(i,r===-1?void 0:r):``,state:t}}function qn(){return(Math.random()+1).toString(36).substring(7)}function Jn(e,t){return e.protocol!==`http:`&&e.protocol!==`https:`||e.origin!==t||!!e.username||!!e.password}function Yn(e){return e.pathname+e.search+e.hash}function Xn(e){return e.options.loader||e.options.beforeLoad||e.lazyFn||e.options.component?.preload||e.options.pendingComponent?.preload}function Zn(e,t){return{fromLocation:t,toLocation:e,pathChanged:t?.pathname!==e.pathname,hrefChanged:t?.href!==e.href,hashChanged:t?.hash!==e.hash}}function Qn({key:e,__TSR_key:t,__TSR_index:n,__hashScrollIntoViewOptions:r,...i}){return i}function $n(e){return e.findIndex(e=>e.status===`error`||e.status===`notFound`||e._notFound)+1}function er(e,t,n,r,i,a){r&&(t=t.slice(0,r)),i&&(n=n.slice(0,i));for(let r of t){if(a&&e._tx!==a)return;n.some(e=>e.routeId===r.routeId)||e.routesById[r.routeId].options.onLeave?.(r)}for(let r of n){if(a&&e._tx!==a)return;e.routesById[r.routeId].options[t.some(e=>e.routeId===r.routeId)?`onStay`:`onEnter`]?.(r)}}var tr=class{constructor(e,t){this.tempLocationKey=`${Math.round(Math.random()*1e7)}`,this._scroll={next:!0},this.subscribers=new Set,this._cache=new Map,this._committed=[],this.startTransition=async e=>(e(),!1),this.update=e=>{let t=this.options;this.options={...t,...e},this.isServer=this.options.isServer??!1??typeof document>`u`,this.staticLocations=new WeakMap,this.protocolAllowlist=new Set(this.options.protocolAllowlist),(!this.history||this.options.history&&this.options.history!==this.history)&&(this.history=this.options.history?this.options.history:Gn()),this.origin=this.options.origin,this.origin||=window?.origin&&window.origin!==`null`?window.origin:`http://localhost`;let n=this.options.basepath??`/`,r=this.options.rewrite,i=this.basepath!==n||t?.rewrite!==r||t?.caseSensitive!==this.options.caseSensitive;if(i&&(this.basepath=n,this.rewrite=n!==`/`&&Mt(n)?Nn(n,this.options.caseSensitive,r):r),this.history&&this.updateLatestLocation(),this.options.routeTree!==this.routeTree){this.routeTree=this.options.routeTree;let e;e=this.buildRouteTree(),this.setRoutes(e)}if(this.stores)i&&this.stores.location.set(this.latestLocation);else if(this.latestLocation){let e=this.getStoreConfig(this);this.batch=e.batch,this.stores=In(this.latestLocation,e),Qt(this)}},this.updateLatestLocation=()=>{this.latestLocation=this.parseLocation(this.history.location,this.latestLocation)},this.buildRouteTree=()=>{let e=Cn(this.routeTree,this.options.caseSensitive);return this.options.routeMasks&&yn(this.options.routeMasks,e.processedTree),{...e,resolvePathCache:dn(1e3)}},this.subscribe=(e,t)=>{let n={eventType:e,fn:t};return this.subscribers.add(n),()=>{this.subscribers.delete(n)}},this.emit=e=>{for(let t of this.subscribers)if(t.eventType===e.type)try{t.fn(e)}catch(e){console.error(e)}},this.parseLocation=(e,t)=>{let n=({pathname:e,search:n,hash:r,href:i},a)=>{if(!this.rewrite&&!/[ \x00-\x1f\x7f\u0080-\uffff]/.test(e)){let i=this.options.parseSearch(n),s=this.options.stringifySearch(i);return{href:e+s+r,publicHref:e+s+r,pathname:b(e),external:!1,searchStr:s,search:o(t?.search,i),hash:b(r.slice(1)),state:w(t?.state,a)}}let s=Pn(this.rewrite,new URL(i,this.origin)),c=this.options.parseSearch(s.search),l=this.options.stringifySearch(c);return s.search=l,{href:s.href.replace(s.origin,``),publicHref:i,pathname:b(Vn(s.pathname)),external:!!this.rewrite&&Jn(s,this.origin),searchStr:l,search:o(t?.search,c),hash:b(s.hash.slice(1)),state:w(t?.state,a)}},r=n(e,e.state),{__tempLocation:i,__tempKey:a}=r.state;if(i&&(!a||a===this.tempLocationKey)){let e=n(i,{...i.state,__tempLocation:void 0,key:r.state.key,__TSR_key:r.state.__TSR_key});return e.maskedLocation=r,e}return r},this.matchRoutes=(e,t,n)=>typeof e==`string`?this.matchRoutesInternal({pathname:e,search:t},n):this.matchRoutesInternal(e,t),this.getMatchedRoutes=e=>{let t=Object.create(null),n=Sn(jt(e),this.processedTree,!0);return n&&Object.assign(t,n.rawParams),[n?.branch||[this.routesById.__root__],t,n?.route]},this.buildLocation=e=>{{let t=this.staticLocations.get(e);if(t)return t}let t=!1,n=(n={})=>{if(n.href){let e=Kn(n.href,{});n={...n,to:Pn(this.rewrite,new URL(e.pathname,this.origin)).pathname,search:this.options.parseSearch(e.search),hash:e.hash.slice(1)}}let r=n._fromLocation||this._pendingLocation||this.latestLocation,i,a=()=>(t=!0,r),o=()=>(t=!0,i??=this.matchRoutesLightweight(r)),s=n.to?`${n.to}`:`.`,c=Pt(s[0]===`/`?``:n.unsafeRelative===`path`?a().pathname:n.from??o()[1],s,this.options.trailingSlash,this.resolvePathCache),l=this.routesByPath[jt(c)],d=c.includes(`$`),f;if(l)f=l._branch??=En(l);else if(d)f=[];else{let[e,t,n]=this.getMatchedRoutes(c);f=e,this.options.notFoundRoute&&(!n||n.path!==`/`&&t[`**`])&&(f=[...f,this.options.notFoundRoute])}let p=d?l?._interpolation??gn(!1,{fullPath:c},0):void 0,h;for(let e of f){let t=e.options.params?.stringify??e.options.stringifyParams;if(t){let e=o()[3];if(h??=or(n.params,e),!u(h))break;h===e&&(h=Object.assign(_(),h));try{Object.assign(h,t(h))}catch{}}}h??=or(n.params,sr(n.params,p)?o()[3]:cr);let g=e.leaveParams?c:Vn(b(p?Rt(c,p,h,this.pathParamsDecoder):c)),v=lr(f,e._includeValidateSearch),y=()=>{let t=o()[2];if(e._includeValidateSearch&&this.options.search?.strict){let e={};f.forEach(n=>{if(n.options.validateSearch)try{Object.assign(e,ar(n.options.validateSearch,{...e,...t}))}catch{}}),t=e}return t},x=v.length?ur(v,y(),n):n.search===!0?y():typeof n.search==`function`?n.search(y()):n.search||cr,S=this.options.stringifySearch(x),C=n.hash===!0?a().hash:typeof n.hash==`function`?n.hash(a().hash):n.hash||void 0,w=C?`#${C}`:``,T=n.state?n.state===!0?a().state:typeof n.state==`function`?n.state(a().state):n.state:cr,E=`${g}${S}${w}`,D,O,ee=!1;if(this.rewrite){let e=new URL(E,this.origin),t=e.origin,n=Fn(this.rewrite,e);D=Yn(e),Jn(n,t)?(O=n.href,ee=!0):O=Vn(Yn(n))}else D=m(E),O=D;return{publicHref:O,href:D,pathname:g,search:x,searchStr:S,state:T,hash:C??``,external:ee,unmaskOnReload:n.unmaskOnReload}},r=n(e);if(e.mask)r.maskedLocation=n({from:e.from,...e.mask});else if(this.options.routeMasks){let t=bn(r.pathname,this.processedTree);if(t){let i=Object.assign(_(),t.rawParams),{from:a,params:o,...s}=t.route,c=or(o,i);r.maskedLocation=n({from:e.from,...s,params:c})}}return!t&&e._fromLocation&&!r.maskedLocation&&this.staticLocations.set(e,r),r},this.commitLocation=async({viewTransition:e,ignoreBlocker:t,...n})=>{let r=n.maskedLocation??n;if(r.external)return nr(this,r.publicHref,{replace:n.replace,ignoreBlocker:t});let i,a=jt(this.latestLocation.href)===jt(n.href)&&c(Qn(n.state),Qn(this.latestLocation.state)),o=this._commitPromise,s,l=new Promise(e=>{s=e});if(l.resolve=()=>{s(),o?.resolve()},this._commitPromise=l,a)this.load();else{let{maskedLocation:r,hashScrollIntoView:a,...o}=n;r&&(o={...r,state:{...r.state,__tempKey:void 0,__tempLocation:{...o,search:o.searchStr,state:{...o.state,__tempKey:void 0,__tempLocation:void 0,__TSR_key:void 0,key:void 0}}}},(o.unmaskOnReload??this.options.unmaskOnReload??!1)&&(o.state.__tempKey=this.tempLocationKey)),o.state={...o.state,__hashScrollIntoViewOptions:a??this.options.defaultHashScrollIntoView??!0},this.shouldViewTransition=e,i=n.replace?`REPLACE`:`PUSH`,this.history[i===`REPLACE`?`replace`:`push`](o.publicHref,o.state,{ignoreBlocker:t}),this.history.subscribers.size||this.load({action:{type:i}})}return this._scroll.next=n.resetScroll??!0,this._commitPromise},this.buildAndCommitLocation=({replace:e,resetScroll:t,hashScrollIntoView:n,viewTransition:r,ignoreBlocker:i,...a}={})=>{let o=this.buildLocation({...a,_includeValidateSearch:!0});this._pendingLocation=o;let s=this.commitLocation({...o,viewTransition:r,replace:e,resetScroll:t,hashScrollIntoView:n,ignoreBlocker:i});return queueMicrotask(()=>{this._pendingLocation===o&&(this._pendingLocation=void 0)}),s},this.navigate=async({to:e,reloadDocument:t,href:n,publicHref:r,...i})=>{let a=n?l(n):void 0;if(a||t){if(e!==void 0||!n){let t=this.buildLocation({to:e,...i}),a=t.maskedLocation??t;n??=a.publicHref,r??=a.publicHref}let t=!a&&r?r:n;return nr(this,t,i)}return this.buildAndCommitLocation({...i,href:n,to:e,_isNavigate:!0})},this.load=async e=>{this.updateLatestLocation(),e?.action&&(this._scroll.hash=e.action.type===`PUSH`||e.action.type===`REPLACE`),await ni(this,e)},this.startViewTransition=e=>{let t=this.shouldViewTransition??this.options.defaultViewTransition;if(this.shouldViewTransition=void 0,t&&typeof document.startViewTransition==`function`){let n;if(typeof t==`object`&&window.CSS?.supports?.(`selector(:active-view-transition-type(a))`)){let r=this.latestLocation,i=this.stores.resolvedLocation.get(),a=typeof t.types==`function`?t.types(Zn(r,i)):t.types;if(a===!1)return e();n={update:e,types:a}}else n=e;return document.startViewTransition(n).updateCallbackDone}return e()},this.invalidate=e=>{let t=this._committed,n=e?.filter,r=this._preloads,i=new Set,a=e=>{(!n||n(e))&&i.add(e.id)};t.forEach(a),this._cache.forEach(a),r?.forEach(e=>e.forEach(a)),this._tx?.[3].forEach(a);let o=[];for(let[e,t]of r??[])t.some(e=>i.has(e.id))&&(r.delete(e),o.push(e));let s=t=>{if(i.has(t.id)){let n=this.routesById[t.routeId],r={...t,invalid:!0,...(e?.forcePending||t.status===`error`||t.status===`notFound`)&&Xn(n)?{status:`pending`,error:void 0}:void 0};return t._flight=void 0,r}return t};this._committed=t.map(s);for(let[t,n]of this._cache)i.has(t)&&(n.invalid=!0,e?.forcePending&&(n.status=`pending`));for(let e of i)this._flights?.delete(e);for(let e of o)e.abort();return this.shouldViewTransition=!1,this.load({sync:e?.sync})},this.resolveRedirect=e=>{let t=e.options,n=e.headers.get(`Location`)||t.href;if(!n){let e=this.buildLocation(t);n=(e.maskedLocation??e).publicHref||`/`}let r;if(C.test(n)||(r=l(n))&&!this.protocolAllowlist.has(r))throw Error(`Redirect blocked: unsafe protocol`);if(r===`http:`||r===`https:`){let e=new URL(n);e.pathname.startsWith(`//`)?n=e.href:Jn(e,this.origin)||(n=Yn(e),r=void 0)}return r&&(t.reloadDocument=!0),t.href=n,e.headers.set(`Location`,n),e},this.clearCache=e=>{let t=this._cache,n=this._preloads,r=e?.filter,i=[],a=[];for(let[e,n]of t)(!r||r(n))&&(a.push(e),i.push(n));let o=[];for(let[e,t]of n??[])(!r||t.some(r))&&(o.push(e),i.push(...t));for(let e of a)t.delete(e);for(let e of o)n.delete(e);for(let e of i){let t=e._flight;e._flight=void 0,t&&!--t[2]&&(this._flights?.get(e.id)===t&&this._flights.delete(e.id),o.push(t[1]))}for(let e of o)e.abort()},this.loadRouteChunk=hr,this.preloadRoute=e=>ri(this,e),this.matchRoute=(e,t)=>{let n={...e,to:e.to?Pt(e.from||``,e.to,this.options.trailingSlash,this.resolvePathCache):void 0,params:e.params||{},leaveParams:!0},r=this.buildLocation(n),i=this.stores.status.get()===`pending`;if(t?.pending&&!i)return!1;let a=t?.pending??!i?this.latestLocation:this.stores.resolvedLocation.get()||this.stores.location.get(),o=xn(r.pathname,t?.caseSensitive??!1,t?.fuzzy??!1,a.pathname,this.processedTree);return!o||e.params&&!c(o.rawParams,e.params,!0)?!1:t?.includeSearch??!0?c(a.search,r.search,!0)?o.rawParams:!1:o.rawParams},this.getStoreConfig=t,e.pathParamsAllowedCharacters?.length&&(this.pathParamsDecoder=Ft(e.pathParamsAllowedCharacters)),this.update({defaultPreloadDelay:50,defaultPendingMs:1e3,defaultPendingMinMs:500,context:void 0,...e,caseSensitive:e.caseSensitive??!1,notFoundMode:e.notFoundMode??`fuzzy`,stringifySearch:e.stringifySearch??an,parseSearch:e.parseSearch??rn,protocolAllowlist:e.protocolAllowlist??p}),self.__TSR_ROUTER__=this}isShell(){return!!this.options.isShell}get state(){return this.stores.__store.get()}setRoutes(e){Object.assign(this,e),this.lightweightCache=new WeakMap,this.staticLocations=new WeakMap;let t=this.options.notFoundRoute;t&&(t.init(99999999999),this.routesById[t.id]!==t&&(t._interpolation=gn(!1,t,0)),this.routesById[t.id]=t)}matchRoutesInternal(e,t){let[n,r,i]=this.getMatchedRoutes(e.pathname),a=n,s=!1;(i?i.path!==`/`&&r[`**`]:jt(e.pathname))&&(this.options.notFoundRoute?a=[...a,this.options.notFoundRoute]:s=!0);let c=s?dr(this.options.notFoundMode,a):void 0,l=Array(a.length),u=this._committed,d=(e,t)=>{let n=u[t];return n?.routeId===e.id?n:e===this.options.notFoundRoute?u.find(t=>t.routeId===e.id):void 0},f;for(let n=0;ntypeof t!=`string`&&!v.call(e,t[1]))}var cr=Object.freeze({});function lr(e,t){let n=[];for(let r=0;r{let n=t(i.preSearchFilters?i.preSearchFilters.reduce((e,t)=>t(e),e):e);return i.postSearchFilters?i.postSearchFilters.reduce((e,t)=>t(e),n):n});let a=i.validateSearch;t&&a&&n.push(({search:e,next:t,meta:n})=>{let r=t(e);try{let e=ar(a,r);if(n&&e)for(let t in e)t in r||(n.defaulted||=new Map).set(t,e[t]);return{...r,...e}}catch{}return r})}return n}function ur(e,t,n){let r=(t,i,a)=>{if(t>=e.length){if(!n.search)return{};if(n.search===!0)return i;let e=S(n.search,i);return a&&(a.explicit=e),e}return e[t]({search:i,next:(e,n)=>{if(n){let n=a||{};return{search:r(t+1,e,n),meta:n}}return r(t+1,e,a)},meta:a})};return r(0,t)}function dr(e,t){if(e!==`root`){let e;for(let n=t.length-1;n>=0;n--){let r=t[n];if(r.options.notFoundComponent)return r.id;e||=r.children&&r.id}if(e)return e}return cn}function fr(e,t){let n=e.options.params?.parse??e.options.parseParams;n&&Object.assign(t,n(t))}function pr(e,t){return e.options[t]?.preload?.()}function mr(e,t){let n=pr(e,`component`),r=pr(e,`pendingComponent`);return t&&(r?r=r.then(t):t()),n&&r?Promise.all([n,r]).then(()=>{}):n??r}function hr(e,t,n){let r=()=>t===!1?void 0:t?pr(e,t):mr(e,n),i=e._lazy;if(i)return i===!0?r():i.then(r);if(!e.lazyFn)return r();let a=e.lazyFn().then(t=>{{let{id:n,...r}=t.options;Object.assign(e.options,r),e._lazy=!0}},t=>{throw e._lazy=void 0,t});return e._lazy=a,a.then(r)}function gr(e){let t=e.findIndex(e=>e.status!==`success`||e._notFound)+1;return t&&t{let i=()=>r(t);t.addEventListener(`abort`,i,{once:!0}),Promise.resolve(e).then(n,r).then(()=>t.removeEventListener(`abort`,i))})}function wr(e,t){return e.routesById[t.routeId]}function Tr(e,t,n){return un(e)?[br,e]:zt(e)?(e.routeId||=n,[yr,e]):t?(typeof e?.then==`function`&&(e=Error(`A Promise was thrown`,{cause:e})),[vr,e]):[_r,e]}function Er(e,t){let n=Tr(t,!0,e.id);if(n[0]!==vr)return n;try{e.options.onError?.(n[1])}catch(t){n=Tr(t,!0,e.id)}return n}function Dr(e,t,n,r,i){return i[0].signal.aborted?xr:Ur(e,t,n,Er(n,r),i)}async function Or(e,t,n,r,i,a){let[o,s]=t,c=n[0].signal,l=!!n[3];for(let i=n[6]??0;ie.navigate({...t,_fromLocation:o}),buildLocation:e.buildLocation,cause:l?`preload`:r.cause,abortController:n[0],preload:l,matches:s,routeId:u.id};try{let e=r._ctx||=u.options.context?u.options.context({...f,deps:r.loaderDeps,context:d})||{}:void 0;r.context={...d,...e}}catch(a){return Ar(e,r),[i,Dr(e,t,u,a,n)]}if(c.aborted)return[i,xr];let p=r.paramsError??r.searchError;if(p!==void 0)return Ar(e,r),[i,Dr(e,t,u,p,n)];let m=u.options.beforeLoad;if(!m)continue;let h=r.status;i>=a&&(r.status=`pending`,n[7]?.());try{Nr(e,r,`beforeLoad`,n[0]);let a=m({...f,search:r.search,context:r.context,...e.options.additionalContext}),o=await(typeof a?.then==`function`?Cr(a,c):a);if(c.aborted)return[i,xr];let s=Ur(e,t,u,Tr(o,!1,u.id),n);if(s[0]!==_r)return Ar(e,r),[i,s];r.context={...r.context,...o}}catch(a){return Ar(e,r),[i,Dr(e,t,u,a,n)]}finally{r.status=h,Nr(e,r,!1,n[0])}}i()}function kr(e,t,n){if(!(!n||--n[2])){if(e._flights?.get(t.id)===n){let n=e._tx;if(n&&!n[0].signal.aborted&&!n[3].includes(t)&&n[3].some(e=>e.id===t.id)&&n[3].some(e=>e.isFetching===`beforeLoad`))return;e._flights.delete(t.id)}return n[1]}}function Ar(e,t){let n=t._flight;t._flight=void 0,kr(e,t,n)?.abort()}function jr(e,t,n,r){let i=[];for(let a of t)if(!n?.includes(a)){let t=a._flight;if(a._flight=void 0,r&&t?.[2]===1&&e._flights?.get(a.id)===t&&n?.some(e=>e.id===a.id))t[2]=0;else{let n=kr(e,a,t);n&&i.push(n)}}for(let e of i)e.abort()}function Mr(e){for(let t of e){let e=t._flight;e&&e[2]++}}function Nr(e,t,n,r){if(t.isFetching=n,r&&e._tx?.[0]!==r)return;let i=e.stores.byRoute.get(t.routeId),a=i?.get();a?.id===t.id&&i.set({...a,isFetching:n})}function Pr(e,t,n,r,i,a,o){let s=t[0];return{params:n.params,location:s,navigate:t=>e.navigate({...t,_fromLocation:s}),cause:o?`preload`:n.cause,abortController:i,preload:o,deps:n.loaderDeps,parentMatchPromise:a,context:n.context,route:r,...e.options.additionalContext}}async function Fr(e,t,n,r,i,a,o){let s=o[0],c=s.signal;if(c.aborted)return xr;if(!i)return[_r,void 0];let l=n._flight;Nr(e,n,`loader`,s);try{if(!l){let s=new AbortController;l=[Promise.resolve().then(()=>i(Pr(e,t,n,r,s,a,!!o[3]))).then(e=>Tr(e,!1,r.id),e=>Tr(e,!0,r.id)).then(t=>(t[0]!==_r&&e._flights?.get(n.id)===l&&(e._flights.delete(n.id),l[2]||s.abort()),t[0]===vr&&l[2]?Er(r,t[1]):t)),s,1],(e._flights??=new Map).set(n.id,l)}return n._flight=l,n.abortController=l[1],Ur(e,t,r,await Cr(l[0],c),o)}catch(t){if(t!==c||!c.aborted)throw t;return Ar(e,n),xr}finally{Nr(e,n,!1,s)}}function Ir(e,t,n){t[0]!==br&&(e.status=`success`,e.error=void 0,t[0]===_r?(e.loaderData=t[1],e.invalid=!1,e.updatedAt=Date.now(),e.preload=n):e.invalid=!0)}function Lr(e,t,n){let r=e._cache.get(t.id);if(r!==n||e._committed.some(e=>e.id===t.id&&e._flight===t._flight))return;let i={...t,_notFound:void 0,context:{}};i._flight&&i._flight[2]++,e._cache.set(t.id,i),r&&Ar(e,r)}function Rr(e,t){return t[0]===vr||t[0]===yr?{...e,status:t[0]===vr?`error`:`notFound`,error:t[1],_flight:void 0}:e}function zr(e,t,n,r,i,a,o){let s=t[1][n],c=wr(e,s),l=!!a[3],u=e._cache.get(s.id),d,f=!1,p;try{if(s.status===`success`&&(d=c.options.shouldReload,typeof d==`function`&&(d=d(Pr(e,t,s,c,a[0],i,l))),a[0].signal.aborted&&(p=xr)),!p){if(s.status!==`success`)f=!0;else{let t=l||s.preload?c.options.preloadStaleTime??e.options.defaultPreloadStaleTime??3e4:c.options.staleTime??e.options.defaultStaleTime??0;f=!!(s.invalid||d||d===void 0&&Date.now()-s.updatedAt>=t&&(a[5]||s.cause===`enter`||a[2].some(e=>e.routeId===s.routeId&&e.id!==s.id)))}}}catch(n){s.invalid=!0,Ar(e,s),p=Dr(e,t,c,n,a)}let m=c.options.loader,h=typeof m==`function`,g=h?m:m?.handler,_=!l||c.options.preload!==!1,v=_&&m?e._flights?.get(s.id):void 0;v===s._flight||p?v=void 0:v&&!f&&!l&&d===void 0?f=!0:f||(v=void 0);let y=!(!m||!f||s.status!==`success`||l||a[4]||((h?void 0:m.staleReloadMode)??e.options.defaultStaleReloadMode)===`blocking`),b=f&&_,x=b&&!y&&(s.status!==`success`||!!m),S=n>=o?a[7]:void 0,C=c.lazyFn&&c._lazy!==!0?S:void 0;if(b&&!m&&(s.invalid=!1,s.updatedAt=Date.now()),v&&v[2]++,x){let t=s._flight;s._flight=v,kr(e,s,t)?.abort(),n>=o&&(s.status=`pending`),S?.()}b||(s.isFetching=!1);let w=!p&&x?Fr(e,t,s,c,g,i,a).then(t=>(Ir(s,t,l),t[0]===_r&&(m&&!a[0].signal.aborted&&Lr(e,s,u),n>=o&&(s.status=`pending`)),t)):Promise.resolve(p??[_r,s.loaderData]),T=(async()=>{try{let e=hr(c,void 0,C);e&&await Cr(e,a[0].signal)}catch(r){if(!t[1].some((e,t)=>t<=n&&(e.status===`error`||e.status===`notFound`||e._notFound)))return[n,Dr(e,t,c,r,a)]}let r=await w;x&&r[0]===_r&&s.status===`pending`&&!a[0].signal.aborted&&(s.status=`success`,S?.())})();if(r.push([n,w,T]),!y)return w.then(e=>Rr(s,e));let E={...s,status:`pending`,preload:!1,_flight:v};s.invalid=!1,s.isFetching=`loader`;let D=Fr(e,t,E,c,g,i,a).then(e=>(s.isFetching=!1,Ir(E,e,!1),e));return(t[2]??=[]).push([n,D,T,E]),D.then(e=>Rr(E,e))}async function Br(e,t,n,r,i=0){let a=n?.[1][1],o=a?.routeId?t.findIndex(e=>e.routeId===a.routeId):n?.[0]??t.length-1;o<0&&(o=0);for(let n=o;n>=0;n--){let i=wr(e,t[n]);try{let e=hr(i,!1);e&&await Cr(e,r)}catch(e){if(e===r&&r.aborted)throw e}if(i.options.notFoundComponent)return n}return a?.routeId?o:i}function Vr(e,t){t[2]&&=(jr(e,t[2].map(e=>e[3])),void 0)}async function Hr(e,t,n,r){let i;try{await Promise.all(e.map(e=>e[1].then(async t=>{let a=e[0];if(!(r&&a>=await r)){if(t[0]>=br)throw[a,t];!i&&t[0]!==_r&&(i=[a,t],await Promise.all((n??[]).map(e=>{if(!(e[0]<=a))return e[1].then(t=>{if(t[0]===br)throw[e[0],t]})})))}})))}catch(e){return e}return t??i}function Ur(e,t,n,r,i,a){for(;r[0]===br;){let o=r[1],s=o.options;try{if((s.href||o.headers.has(`Location`))&&(e.resolveRedirect(o),s.reloadDocument)||(s.reloadDocument?i[3]:i[1]>=20))return r;let n=e.buildLocation({...s,_fromLocation:t[0],_includeValidateSearch:!0}),a=n.maskedLocation??n;if(a.external){let t=o.clone();return t.options={...s},t.headers.set(`Location`,a.publicHref),e.resolveRedirect(t),i[3]?[br,t]:[br,t,a]}return[br,o,n]}catch(e){r=a?[vr,e]:Er(n,e),a=!0}}return r}async function Wr(e,t,n,r,i,a){let o=t[1],s=await i,c=!1,l=o.findIndex(e=>e._notFound),u=t=>t[1][0]===yr?Br(e,o,t,r.signal):t[0],d=l<0?o.length:l;if((s?.[1][0]??0)>=br)d=0;else if(s){d=s[2]??=await u(s);for(let e of n){if(e[0]>=d)break;let t=await e[1];if(t[0]!==_r&&t[0]=d)break;let t=await e[2];if(t){s=t;break}}if((s?.[1][0]??0)>=br){let n=s[1];if(n[0]!==br||n[1].options.reloadDocument||n[2])return Vr(e,t),n;c=!0,s=[0,[vr,Error(`Too many redirects`)]]}let f=s?s[2]??await u(s):l;if(f>=0){let i=s?.[1],l=i?.[0],u=o[f],d=i?.[1],p=()=>{i&&(u._notFound=void 0,l===vr?u.status=`error`:(d.routeId=u.routeId,u.routeId===e.routeTree.id?(u.status=`success`,u._notFound=!0):u.status=`notFound`),u.error=d,u.isFetching=!1)};p(),i||a?.();let m=wr(e,u);try{await Cr(i?Promise.resolve().then(()=>hr(m,l===vr?`errorComponent`:`notFoundComponent`)):Promise.all([hr(m),hr(m,`notFoundComponent`)]),r.signal)}catch(n){if(n===r.signal&&r.signal.aborted)return Vr(e,t),xr}i?c&&(r.abort(),await Promise.all([...n.map(e=>e[1]),...n.map(e=>e[2]),...(t[2]??[]).map(e=>e[1])]),Vr(e,t),jr(e,o),p()):u.status=`success`}return t}async function Gr(e,t,n,r=0,i=t[1].length){let a=t[1];for(let t=r;te._notFound);if(e.options.notFoundMode!==`root`&&s>=0){let t=await Br(e,n,void 0,a,s);n[s]._notFound=void 0,n[t]._notFound=!0,s=t}let c=s<0?n.length:s+1,l=0;for(;l{for(let t=d;t=br&&(c=0);p()}if(!a.aborted&&!r[3]){let t=[];for(let[n,r]of e._flights??[])r[2]||(e._flights.delete(n),t.push(r[1]));for(let e of t)e.abort()}let h=Wr(e,i,u,r[0],Hr(u,m,i[2]),r[7]);i[2]?.length&&(i[3]=Hr(i[2],void 0,void 0,h.then(e=>Sr(e)?0:gr(n).length,()=>0))),o=await h}catch(t){if(Vr(e,i),t===a&&a.aborted)return xr;throw t}return Sr(o)?o:Gr(e,o,a,r[6]===n.length?r[6]:0)}function qr(e,t){if(e._tx!==t)return;let n=t[3],r=e.stores.matches.get(),i=e._pending;for(let a=0;a0){i[3]=setTimeout(()=>qr(e,t),n);return}i[2]=0}let m=n.map(e=>({...e,_flight:void 0}));m[a].status=`pending`;let h=i[4]=e.startTransition(()=>e.stores.setMatches(m),m).then(t=>(t&&e._pending===i&&i[4]===h&&!i[2]&&(i[2]=Date.now()+f),t));return}}function Jr(e,t){let n=e._pending;(e._tx===t||!e._tx?.[3].some(e=>e.id===n?.[1]))&&(clearTimeout(n?.[3]),e._pending=void 0)}async function Yr(e,t){let n=e._pending;if(!n)return;clearTimeout(n[3]);let r=n[2]-Date.now();if(!n[4]||r<=0||!gr(t[3]).some(e=>e.id===n[1]))return;let i;try{await Cr(new Promise(e=>{i=setTimeout(e,r)}),t[0].signal)}catch{}clearTimeout(i)}function Xr(e,t){e._committed=t,e.stores.setMatches(t)}function Zr(e,t,n,r){let i=e._committed,a=e._lifecycleEnd,o=e._cache;for(let e of n)e.preload=!1,r&&(e._assetEnd=void 0);let s=gr(n).length,c=new Map;{let t=Date.now(),r=new Set;for(let e=0;e=(n.preload?i.options.preloadGcTime??e.options.defaultPreloadGcTime??3e5:i.options.gcTime??e.options.defaultGcTime??3e5)||c.set(n.id,o.get(n.id)===n?n:{...n,_flight:void 0,isFetching:!1,context:{}})}}t[3]=[],e._cache=c;let l=e._lifecycleEnd=$n(n);Xr(e,n),jr(e,[...o.values(),...i].filter(e=>e._flight&&c.get(e.id)!==e),n),er(e,i,n,a,l,t)}async function Qr(e,t){let n=e._tx;for(;n&&n!==t;)t=n,await n[5],n=e._tx}function $r(e,t,n){let r=n[1].options,i=n[2];if(!i)return e.navigate({...r,replace:!0,ignoreBlocker:!0});if(r.reloadDocument)return e.navigate({href:(i.maskedLocation??i).publicHref,reloadDocument:!0,replace:!0,ignoreBlocker:!0});i._redirects=t[1]+1,e._pendingLocation=i;let a=e.commitLocation({...i,viewTransition:r.viewTransition,replace:!0,resetScroll:r.resetScroll,hashScrollIntoView:r.hashScrollIntoView,ignoreBlocker:!0});return queueMicrotask(()=>{e._pendingLocation===i&&(e._pendingLocation=void 0)}),a}async function ei(e,t,n,r,i){let a=n.map(e=>({...e}));Mr(a);for(let t of r)Ar(e,a[t[0]]),a[t[0]]=t[3];let o=[t[2],a],s;try{s=await Wr(e,o,r,t[0],i)}catch(t){throw jr(e,a),t}if(Sr(s)){jr(e,a),s[0]===br&&e._tx===t&&e._committed===n&&await $r(e,t,s);return}if(await Gr(e,s,t[0].signal),e._tx!==t||e._committed!==n){jr(e,a);return}for(let t of a){let n=e._cache.get(t.id);n?._flight&&n._flight===t._flight&&(e._cache.delete(t.id),Ar(e,n))}Xr(e,a),jr(e,n,a)}async function ti(e,t,n,r,i,a){let o=await Kr(e,t[2],t[3],[t[0],t[1],e._committed,void 0,i,n,a,r]);if(Sr(o)){let n=o[0]===br&&e._tx===t;if((!n||o[1].options.reloadDocument)&&Jr(e,t),jr(e,t[3]),t[3]=[],!n)return;if(e._tx!==t){Jr(e,t);return}await $r(e,t,o);return}let s=o[1];if(e._tx===t&&await Yr(e,t),e._tx!==t){Jr(e,t),jr(e,s),Vr(e,o);return}let c=t[2],l=Zn(c,e.stores.resolvedLocation.get()),u=o[2];await e.startViewTransition(async()=>{if(e._tx===t&&await Yr(e,t),e._tx!==t){Jr(e,t),jr(e,s),Vr(e,o);return}let n=await e.startTransition(()=>{Jr(e,t),Zr(e,t,s,a),e._tx===t&&(e.emit({type:`onLoad`,...l}),e._tx===t&&e.emit({type:`onBeforeRouteMount`,...l}))},s);if(e._tx!==t){Vr(e,o);return}u?.length&&ei(e,t,s,u,o[3]).catch(console.error),e.batch(()=>{e.stores.resolvedLocation.set(c),e.stores.status.set(`idle`),e._tx===t&&e.emit({type:`onResolved`,...l}),n&&e._tx===t&&e.emit({type:`onRendered`,...l})}),e._tx===t&&(e._commitPromise?.resolve(),e._commitPromise=void 0)})}async function ni(e,t){let n=e._tx,r=e.stores.resolvedLocation.get(),i=r??e.stores.location.get(),a=e.latestLocation,o=e._pendingLocation,s=o?.href===a.href?o._redirects??0:0,c=e._handoff,l=c?.[0](),u=new AbortController,d=e._preflight;if(e._preflight=u,l||c?.[1](),d?.abort(),!u.signal.aborted){let t=Zn(a,r);e.emit({type:`onBeforeNavigate`,...t}),u.signal.aborted||e.emit({type:`onBeforeLoad`,...t})}if(u.signal.aborted){await Qr(e,n);return}let f=i.href===a.href,p=u,m=e.matchRoutes(a,{_controller:u});Mr(m);let h=l?c[1](m):void 0;if(h?p=l:l?.abort(),u.signal.aborted){jr(e,m),await Qr(e,n);return}e._preflight=void 0;let g,_=()=>ti(e,y,f,()=>qr(e,y),t?.sync,h),v=t?.sync?new Promise(e=>g=e):Promise.resolve().then(_),y=[p,s,a,m,Date.now(),v.then(()=>Qr(e,y))];if(e._tx=y,n){for(let t of e.stores.matches.get()){if(e._tx!==y)break;t.isFetching&&Nr(e,t,!1)}n[0].abort(),jr(e,n[3],y[3],!0)}if(e._tx!==y){jr(e,y[3]),y[3]=[],g?.(),await Qr(e,y);return}e.batch(()=>{e.stores.status.set(`pending`),e.stores.location.set(a)}),(h||!e._committed.length&&m[0]?.status!==`success`&&!m.some(e=>e._notFound))&&qr(e,y),g?.(_()),await y[5]}async function ri(e,t){let n=e.buildLocation(t);for(let t=0;;t++){let r=e._committed,i=new AbortController,a,o,s;try{try{a=e.matchRoutes(n,{_controller:i}),Mr(a),o=(e._preloads??=new Map).set(i,a),s=await Kr(e,n,a,[i,t,r,!0])}finally{o&&(o=o.delete(i),jr(e,a)),i.abort()}if(!Sr(s))return s[1];if(!o||s.length<3)return;n=s[2]}catch(e){zt(e)||console.error(e);return}}}var ii=`Error preloading route! ☝️`,ai=class{get to(){return this._to}get id(){return this._id}get path(){return this._path}get fullPath(){return this._fullPath}constructor(e){if(this.init=e=>{this.originalIndex=e,this._branch=void 0;let t=this.options,n=!t?.path&&!t?.id;this.parentRoute=this.options.getParentRoute?.(),n?this._path=cn:this.parentRoute||T();let r=n?cn:t?.path;r&&r!==`/`&&(r=At(r));let i=t?.id||r,a=n?cn:kt((this.parentRoute.id===`__root__`?``:this.parentRoute.id)+`/`+(i??``));r===`__root__`&&(r=`/`);let o=a===`__root__`?`/`:r===void 0?this.parentRoute.fullPath:kt(this.parentRoute.fullPath+`/`+r);this._path=r,this._id=a,this._fullPath=o,this._to=jt(o)},this.addChildren=e=>this._addFileChildren(e),this._addFileChildren=e=>(Array.isArray(e)&&(this.children=e),typeof e==`object`&&e&&(this.children=Object.values(e)),this),this._addFileTypes=()=>this,this.updateLoader=e=>(Object.assign(this.options,e),this),this.update=e=>(Object.assign(this.options,e),this),this.lazy=e=>(this.lazyFn=e,this),this.redirect=e=>ln({from:this.fullPath,...e}),this.options=e||{},this.isRoot=!e?.getParentRoute,e?.id&&e?.path)throw Error(`Route cannot have both an 'id' and a 'path' option.`)}},oi=class extends ai{constructor(e){super(e)}},si=class extends k.Component{constructor(...e){super(...e),this.state={error:0},this.reset=()=>{this.setState({error:0})}}static getDerivedStateFromProps(e,t){let n=e.getResetKey();return t.error&&t.resetKey!==n?{resetKey:n,error:0}:{resetKey:n}}static getDerivedStateFromError(e){return{error:[e]}}componentDidCatch(e,t){this.props.onCatch?.(e,t)}render(){let e=this.state.error;return e?k.createElement(this.props.errorComponent??ci,{error:e[0],reset:this.reset}):this.props.children}};function ci({error:e}){let[t,n]=k.useState(!1);return(0,A.jsxs)(`div`,{style:{padding:`.5rem`,maxWidth:`100%`},children:[(0,A.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`.5rem`},children:[(0,A.jsx)(`strong`,{style:{fontSize:`1rem`},children:`Something went wrong!`}),(0,A.jsx)(`button`,{style:{appearance:`none`,fontSize:`.6em`,border:`1px solid currentColor`,padding:`.1rem .2rem`,fontWeight:`bold`,borderRadius:`.25rem`},onClick:()=>n(e=>!e),children:t?`Hide Error`:`Show Error`})]}),(0,A.jsx)(`div`,{style:{height:`.25rem`}}),t?(0,A.jsx)(`div`,{children:(0,A.jsx)(`pre`,{style:{fontSize:`.7em`,border:`1px solid red`,borderRadius:`.25rem`,padding:`.3rem`,color:`red`,overflow:`auto`},children:e?.message?(0,A.jsx)(`code`,{children:e.message}):null})}):null]})}var li=()=>!0,ui=()=>!1;function di({children:e,fallback:t=null}){return(0,A.jsx)(k.Fragment,{children:fi()?e:t})}function fi(e=!0){return k.useSyncExternalStore(pi,li,e?ui:li)}function pi(){return()=>{}}function mi({update:e,notify:t,unwatched:n}){return{link:r,unlink:i,propagate:a,checkDirty:o,shallowPropagate:s};function r(e,t,n){let r=t.depsTail;if(r!==void 0&&r.dep===e)return;let i=r===void 0?t.deps:r.nextDep;if(i!==void 0&&i.dep===e){i.version=n,t.depsTail=i;return}let a=e.subsTail;if(a!==void 0&&a.version===n&&a.sub===t)return;let o=t.depsTail=e.subsTail={version:n,dep:e,sub:t,prevDep:r,nextDep:i,prevSub:a,nextSub:void 0};i!==void 0&&(i.prevDep=o),r===void 0?t.deps=o:r.nextDep=o,a===void 0?e.subs=o:a.nextSub=o}function i(e,t=e.sub){let r=e.dep,i=e.prevDep,a=e.nextDep,o=e.nextSub,s=e.prevSub;return a===void 0?t.depsTail=i:a.prevDep=i,i===void 0?t.deps=a:i.nextDep=a,o===void 0?r.subsTail=s:o.prevSub=s,s===void 0?(r.subs=o)===void 0&&n(r):s.nextSub=o,a}function a(e){let n=e.nextSub,r;top:do{let i=e.sub,a=i.flags;if(a&60?a&12?a&4?!(a&48)&&c(e,i)?(i.flags=a|40,a&=1):a=0:i.flags=a&-9|32:a=0:i.flags=a|32,a&2&&t(i),a&1){let t=i.subs;if(t!==void 0){let i=(e=t).nextSub;i!==void 0&&(r={value:n,prev:r},n=i);continue}}if((e=n)!==void 0){n=e.nextSub;continue}for(;r!==void 0;)if(e=r.value,r=r.prev,e!==void 0){n=e.nextSub;continue top}break}while(1)}function o(t,n){let r,i=0,a=!1;top:do{let o=t.dep,c=o.flags;if(n.flags&16)a=!0;else if((c&17)==17){if(e(o)){let e=o.subs;e.nextSub!==void 0&&s(e),a=!0}}else if((c&33)==33){(t.nextSub!==void 0||t.prevSub!==void 0)&&(r={value:t,prev:r}),t=o.deps,n=o,++i;continue}if(!a){let e=t.nextDep;if(e!==void 0){t=e;continue}}for(;i--;){let i=n.subs,o=i.nextSub!==void 0;if(o?(t=r.value,r=r.prev):t=i,a){if(e(n)){o&&s(i),n=t.sub;continue}a=!1}else n.flags&=-33;n=t.sub;let c=t.nextDep;if(c!==void 0){t=c;continue top}}return a}while(1)}function s(e){do{let n=e.sub,r=n.flags;(r&48)==32&&(n.flags=r|16,(r&6)==2&&t(n))}while((e=e.nextSub)!==void 0)}function c(e,t){let n=t.depsTail;for(;n!==void 0;){if(n===e)return!0;n=n.prevDep}return!1}}function hi(e,t,n){let r=typeof e==`object`,i=r?e:void 0;return{next:(r?e.next:e)?.bind(i),error:(r?e.error:t)?.bind(i),complete:(r?e.complete:n)?.bind(i)}}var gi=[],_i=0,{link:vi,unlink:yi,propagate:bi,checkDirty:xi,shallowPropagate:Si}=mi({update(e){return e._update()},notify(e){gi[wi++]=e,e.flags&=-3},unwatched(e){e.depsTail!==void 0&&(e.depsTail=void 0,e.flags=17,Oi(e))}}),Ci=0,wi=0,Ti,Ei=0;function Di(e){try{++Ei,e()}finally{--Ei||ki()}}function Oi(e){let t=e.depsTail,n=t===void 0?e.deps:t.nextDep;for(;n!==void 0;)n=yi(n,e)}function ki(){if(!(Ei>0)){for(;Ci{i.get(),n.current?t.next?.(i._snapshot):n.current=!0});return{unsubscribe:()=>{r.stop()}}},_update(e){let a=Ti,o=t?.compare??Object.is;if(n)Ti=i,++_i,i.depsTail=void 0;else if(e===void 0)return!1;n&&(i.flags=5);try{let t=i._snapshot,a=typeof e==`function`?e(t):e===void 0&&n?r(t):e;return t===void 0||!o(t,a)?(i._snapshot=a,!0):!1}finally{Ti=a,n&&(i.flags&=-5),Oi(i)}}};return n?(i.flags=17,i.get=function(){let e=i.flags;if(e&16||e&32&&xi(i.deps,i)){if(i._update()){let e=i.subs;e!==void 0&&Si(e)}}else e&32&&(i.flags=e&-33);return Ti!==void 0&&vi(i,Ti,_i),i._snapshot}):i.set=function(e){if(i._update(e)){let e=i.subs;e!==void 0&&(bi(e),Si(e),ki())}},i}function ji(e){let t=()=>{let t=Ti;Ti=n,++_i,n.depsTail=void 0,n.flags=6;try{return e()}finally{Ti=t,n.flags&=-5,Oi(n)}},n={deps:void 0,depsTail:void 0,subs:void 0,subsTail:void 0,flags:6,notify(){let e=this.flags;e&16||e&32&&xi(this.deps,this)?t():this.flags=2},stop(){this.flags=0,this.depsTail=void 0,Oi(this)}};return t(),n}function Mi(e){return O({from:e.from,strict:e.strict,structuralSharing:e.structuralSharing,select:t=>e.select?e.select(t.loaderData):t.loaderData})}function Ni(e){let{select:t,...n}=e;return O({...n,select:e=>t?t(e.loaderDeps):e.loaderDeps})}function Pi(e){return O({from:e.from,shouldThrow:e.shouldThrow,structuralSharing:e.structuralSharing,strict:e.strict,select:t=>{let n=e.strict===!1?t.params:t._strictParams;return e.select?e.select(n):n}})}function Fi(e){return O({from:e.from,strict:e.strict,shouldThrow:e.shouldThrow,structuralSharing:e.structuralSharing,select:t=>e.select?e.select(t.search):t.search})}function Ii(e){let t=g();return k.useCallback(n=>t.navigate({...n,from:n.from??e?.from}),[e?.from,t])}function Li(e){let t=g(),n=Ii(),r=k.useRef(null);return Ot(()=>{r.current!==e&&(n(e),r.current=e)},[t,e,n]),null}function Ri(e){return O({...e,select:t=>e.select?e.select(t.context):t.context})}function zi(...e){let t=k.useRef(e),n=t.current;return e.forEach((e,t)=>{c(n[t],e,!1,!0)||(n[t]=e)}),t.current}function Bi(e,t){e.preloadRoute(t).catch(e=>{console.warn(e),console.warn(ii)})}var Vi={compare:(e,t)=>e[0]===t[0]&&e[1]===t[1]};function Hi(e,t){let n=typeof e==`string`&&l(e);if(n)return t.has(n)?e:null}function Ui(e,t,n,r,i){let a=Nt(e.pathname,r),o=Nt(t.pathname,r);return(n?.exact?a!==o:!a.startsWith(o)||a.length!==o.length&&a[o.length]!==`/`)||(n?.includeSearch??!0)&&!c(e.search,t.search,!n?.exact,n?.explicitUndefined)?!1:!n?.includeHash||i&&e.hash===t.hash}function Wi(e,t,n){let r=g(),i=k.useRef(null),a=k.useCallback(e=>{if(i.current=e,typeof t==`function`)return t(e);t&&(t.current=e)},[t]),{activeOptions:o,to:s,preload:c,preloadDelay:u,hashScrollIntoView:d,replace:f,startTransition:p,resetScroll:m,viewTransition:h,ignoreBlocker:_,disabled:v,target:y,onClick:b,onBlur:S,onFocus:C,onMouseEnter:w,onMouseLeave:T,onTouchStart:E}=e,D=fi(!!o?.includeHash),[O,ee,te]=zi(e.search,e.params,o),[ne,re]=k.useMemo(()=>[e,{...e}],[r,e.from,e._fromLocation,e.hash,e.to,O,ee,e.state,e.mask,e.unsafeRelative]),ie=k.useCallback(e=>{let t=Hi(s,r.protocolAllowlist);if(t!==void 0)return[t??void 0];ne._fromLocation||(re._fromLocation=e);let n=r.buildLocation(re),i=$i(n,r,v);return[i,!v&&(!i||l(i))?void 0:Ui(e,n,te,r.basepath,D)]},[te,v,D,ne,re,r,s]),[ae,A]=x(r.stores.location,ie,Vi),oe=A===void 0?ae:void 0,se=v||ae===void 0,ce=k.useRef(!1),le=e.reloadDocument||oe||se?!1:c??r.options.defaultPreload,ue=u??r.options.defaultPreloadDelay??0,de=k.useCallback(e=>{let t=e?.isIntersecting;if(!(t??le===`intent`)){t===!1&&Zi(i);return}if(!ue){Bi(r,ne);return}Xi.has(i)||Xi.set(i,setTimeout(()=>{Xi.delete(i),Bi(r,ne)},ue))},[r,ne,i,le,ue]);k.useEffect(()=>{le===`render`&&!ce.current&&(ce.current=!0,Bi(r,ne));let e;return le===`viewport`&&i.current&&typeof IntersectionObserver==`function`&&(e=new IntersectionObserver(e=>de(e.pop()),{rootMargin:`100px`}),e.observe(i.current)),()=>{e?.disconnect(),Zi(i)}},[r,ne,le,de,i]);let fe=Ji(e,n);if(fe.ref=t?a:i,oe)return fe.href=oe,fe;let j=e=>{let t=y??e.currentTarget.getAttribute(`target`);!se&&!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&(!t||t===`_self`)&&e.button===0&&(e.preventDefault(),r.navigate({...ne,replace:f,resetScroll:m,hashScrollIntoView:d,startTransition:p,viewTransition:h,ignoreBlocker:_}))},pe=()=>{le===`intent`&&Bi(r,ne)},me=()=>{le===`intent`&&Zi(i)};return fe.onClick=Qi(b,j),fe.onBlur=Qi(S,me),fe.onFocus=Qi(C,de),fe.onMouseEnter=Qi(w,de),fe.onMouseLeave=Qi(T,me),fe.onTouchStart=Qi(E,pe),Yi(fe,e,A,ae,se,n)}var Gi={},Ki={className:`active`},qi=new Set([`to`,`params`,`search`,`hash`,`state`,`mask`,`from`,`unsafeRelative`,`_fromLocation`,`reloadDocument`,`preload`,`preloadDelay`,`preloadIntentProximity`,`hashScrollIntoView`,`replace`,`startTransition`,`resetScroll`,`viewTransition`,`ignoreBlocker`,`activeProps`,`inactiveProps`,`activeOptions`,`_asChild`]);function Ji(e,t){let n={};for(let r in e)qi.has(r)||r===`type`&&t!==void 0||r===`disabled`&&t===`a`||(n[r]=e[r]);return n}function Yi(e,t,n,r,i,a){let{activeProps:o,inactiveProps:s,className:c,style:l,target:u}=t,d=S(n?o:s,{})??(n?Ki:Gi);Object.assign(e,d),e.href=r,a!==`a`&&(e.disabled=i),e.target=u;let f=d.style;(l||f)&&(e.style=l&&f?{...l,...f}:l||f);let p=d.className;return(c||p)&&(e.className=c?p?`${c} ${p}`:c:p),i&&(e.role=`link`,e[`aria-disabled`]=!0),n&&(e[`data-status`]=`active`,e[`aria-current`]=`page`),e}var Xi=new WeakMap,Zi=e=>{clearTimeout(Xi.get(e)),Xi.delete(e)},Qi=(e,t)=>e?n=>n.defaultPrevented||(e(n),n.defaultPrevented||t(n)):t;function $i(e,t,n){if(n)return;let r=e.maskedLocation??e,i=r.external?r.publicHref:t.history.createHref(r.publicHref)||`/`;if(!r.external&&i===r.publicHref||!h(i,t.protocolAllowlist))return i}var ea=k.memo(k.forwardRef((e,t)=>{let n=e._asChild||`a`,r=Wi(e,t,n),i=typeof e.children==`function`?e.children({isActive:r[`data-status`]===`active`}):e.children;return k.createElement(n,r,i)}),ta);function ta(e,t){let n=0;for(let r in t)if(n++,e[r]!==t[r]&&(!qi.has(r)||!c(e[r],t[r],!1,!0)))return!1;for(let t in e)n--;return n===0}var na=class extends ai{constructor(e){super(e),this.useMatch=e=>O({...e,from:this.id}),this.useRouteContext=e=>Ri({...e,from:this.id}),this.useSearch=e=>Fi({...e,from:this.id}),this.useParams=e=>Pi({...e,from:this.id}),this.useLoaderDeps=e=>Ni({...e,from:this.id}),this.useLoaderData=e=>Mi({...e,from:this.id}),this.useNavigate=()=>Ii({from:this.fullPath}),this.Link=k.forwardRef((e,t)=>(0,A.jsx)(ea,{ref:t,from:this.fullPath,...e}))}};function ra(e){return new na(e)}var ia=class extends oi{constructor(e){super(e),this.useMatch=e=>O({...e,from:this.id}),this.useRouteContext=e=>Ri({...e,from:this.id}),this.useSearch=e=>Fi({...e,from:this.id}),this.useParams=e=>Pi({...e,from:this.id}),this.useLoaderDeps=e=>Ni({...e,from:this.id}),this.useLoaderData=e=>Mi({...e,from:this.id}),this.useNavigate=()=>Ii({from:this.fullPath}),this.Link=k.forwardRef((e,t)=>(0,A.jsx)(ea,{ref:t,from:this.fullPath,...e}))}};function aa(e){return new ia(e)}function R(e,t){let n,r,i,a=()=>(n||=(i=void 0,e().then(e=>{n=void 0,o.preload=void 0,r=e[t??`default`]}).catch(e=>{n=void 0,i=e})),n),o=function(e){if(i){if(f(i)&&typeof sessionStorage<`u`){let e=`tanstack_router_reload:${i.message}`;if(!sessionStorage.getItem(e))throw sessionStorage.setItem(e,`1`),window.location.reload(),new Promise(()=>{})}throw i}if(!r){if(Dt)Dt(a());else throw a()}return k.createElement(r,e)};return o.preload=a,o}function z(e){let t=g(),n=`not-found-${x(t.stores.location,e=>e.pathname)}-${x(t.stores.status)}`;return(0,A.jsx)(si,{getResetKey:()=>n,onCatch:(t,n)=>{if(zt(t))e.onCatch?.(t,n);else throw t},errorComponent:({error:t})=>{if(zt(t))return e.fallback?.(t);throw t},children:e.children})}function oa(){return(0,A.jsx)(`p`,{children:`Not Found`})}function sa(e){return(0,A.jsx)(A.Fragment,{children:e.children})}function ca(e,t,n){return t.options.notFoundComponent?(0,A.jsx)(t.options.notFoundComponent,{...n}):e.options.defaultNotFoundComponent?(0,A.jsx)(e.options.defaultNotFoundComponent,{...n}):(0,A.jsx)(oa,{})}function la(e,t){let n=t?.options.pendingComponent??e.options.defaultPendingComponent;return n?(0,A.jsx)(n,{}):null}var ua=(e,t)=>e[0]===t[0]&&e[1]===t[1],da=(e,t,n)=>!t.isRoot||t.options.shellComponent||t.options.wrapInSuspense||n===!1||n===`data-only`||!e.ssr,fa=k.memo(function({routeId:e}){let t=g();return(0,A.jsx)(pa,{router:t,match:x(t.stores.getMatchStore(e))})});function pa({router:e,match:t}){let n=e.routesById[t.routeId],r=la(e,n),i=n.options.errorComponent??e.options.defaultErrorComponent,a=n.options.onCatch??e.options.defaultOnCatch,o=n.isRoot?n.options.notFoundComponent??e.options.notFoundRoute?.options.component:n.options.notFoundComponent,s=t.ssr===!1||t.ssr===`data-only`,c=da(e,n,t.ssr)&&(n.options.wrapInSuspense??r??(n.options.errorComponent?.preload||s))?k.Suspense:sa,l=i?si:sa,u=o?z:sa;return(0,A.jsxs)(n.isRoot?n.options.shellComponent??sa:sa,{children:[(0,A.jsx)(D.Provider,{value:t.routeId,children:(0,A.jsx)(c,{fallback:r,children:(0,A.jsx)(l,{getResetKey:()=>t,errorComponent:i,onCatch:(e,n)=>{if(zt(e))throw e.routeId??=t.routeId,e;a?.(e,n)},children:(0,A.jsx)(u,{fallback:e=>{if(e.routeId??=t.routeId,e.routeId!==t.routeId)throw e;return k.createElement(o,e)},children:s?(0,A.jsx)(di,{fallback:r,children:(0,A.jsx)(ma,{match:t})}):(0,A.jsx)(ma,{match:t})})})})}),null]})}var ma=k.memo(function({match:e}){let t=g(),n=e.routeId,r=t.routesById[n],i=k.useMemo(()=>{let i=(r.options.remountDeps??t.options.defaultRemountDeps)?.({routeId:n,loaderDeps:e.loaderDeps,params:e._strictParams,search:e._strictSearch});return i?JSON.stringify(i):void 0},[n,e.loaderDeps,e._strictParams,e._strictSearch,r.options.remountDeps,t.options.defaultRemountDeps]),a=k.useMemo(()=>{let e=r.options.component??t.options.defaultComponent;return e?(0,A.jsx)(e,{},i):(0,A.jsx)(ha,{})},[i,r.options.component,t.options.defaultComponent]);if(e.status===`pending`){if(t.ssr&&!da(t,r,e.ssr))return a;if(t._tx)throw t._tx[5];return la(t,r)}if(e.status===`notFound`)return ca(t,r,e.error);if(e.status===`error`)throw e.error;return a}),ha=k.memo(function(){let e=g(),t=k.useContext(D),n,r,i;{let a=e.stores.getMatchStore(t);[n,r]=x(a,e=>[!!e._notFound,e.error],{compare:ua}),i=x(e.stores.ids,e=>e[e.indexOf(t)+1])}if(n)return ca(e,e.routesById[t],r);if(!i)return null;let a=(0,A.jsx)(fa,{routeId:i});return t===`__root__`?(0,A.jsx)(k.Suspense,{fallback:la(e),children:a}):a});function ga(e,t){let n=e[1];e.length=0,n?.(t)}function _a({t:e}){let t=g(),n=t._rendered??=[];return t.startTransition=(r,i)=>new Promise(a=>{ga(n,!1),n.push(i,a),e(t),k.startTransition(r)}),Ot(()=>{let e=t.history.subscribe(t.load);t.updateLatestLocation();let r=t.latestLocation,i=t.buildLocation({to:r.pathname,search:!0,params:!0,hash:!0,state:!0,_includeValidateSearch:!0});if(jt(r.publicHref)!==jt(i.publicHref))return t.commitLocation({...i,replace:!0,ignoreBlocker:!0}),e;let a=t.stores.resolvedLocation.get();return a?.href===r.href&&a.state.__TSR_key===r.state.__TSR_key?n.push(t.stores.matches.get(),e=>{e&&t.emit({type:`onRendered`,...Zn(a,a)})}):t._tx||t.load({sync:!0}).catch(console.error),e},[t,t.history]),null}function va(){let e=g(),t=e.routesById[cn],n=la(e,t),r=e.ssr?sa:k.Suspense,i=(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(_a,{t:k.useState()[1]}),(0,A.jsx)(r,{fallback:n,children:(0,A.jsx)(ya,{})})]});return e.options.InnerWrap?(0,A.jsx)(e.options.InnerWrap,{children:i}):i}function ya(){let e=g(),t=e._rendered,n=x(e.stores.matches,e=>t[0]??e),r=n[0],i=r?.routeId;Ot(()=>{t[0]===n&&ga(t,!0)},[t,n]);let a=i?(0,A.jsx)(fa,{routeId:i}):null;return(0,A.jsx)(D.Provider,{value:i,children:e.options.disableGlobalCatchBoundary?a:(0,A.jsx)(si,{getResetKey:()=>r,onCatch:void 0,children:a})})}var ba=e=>({createMutableStore:Ai,createReadonlyStore:Ai,batch:Di}),xa=e=>new Sa(e),Sa=class extends tr{constructor(e){super(e,ba)}};function Ca({router:e,children:t,...n}){u(n)&&e.update({...e.options,...n,context:{...e.options.context,...n.context}});let r=(0,A.jsx)(y.Provider,{value:e,children:t});return e.options.Wrap?(0,A.jsx)(e.options.Wrap,{children:r}):r}function wa({router:e,...t}){return(0,A.jsx)(Ca,{router:e,...t,children:(0,A.jsx)(va,{})})}function Ta(e){let t=g({warn:e?.router===void 0}),n=e?.router||t;return x(n.stores.__store,E(e,n))}var Ea=ae(),B=n();function Da(e){let t=(0,B.c)(6),{error:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,A.jsx)(`p`,{className:`schild text-lg text-rot`,children:`Diese Ansicht ist abgestürzt`}),t[0]=r):r=t[0];let i=n instanceof Error?n.message:String(n),a;t[1]===i?a=t[2]:(a=(0,A.jsx)(`p`,{className:`text-[15px]`,children:i}),t[1]=i,t[2]=a);let o;t[3]===Symbol.for(`react.memo_cache_sentinel`)?(o=(0,A.jsx)(`button`,{type:`button`,onClick:Oa,className:`schild h-11 rounded-lg border border-rot-rand px-5 text-sm text-foreground hover:bg-[#3a1512]`,children:`Neu laden`}),t[3]=o):o=t[3];let s;return t[4]===a?s=t[5]:(s=(0,A.jsxs)(`div`,{role:`alert`,className:`flex flex-col items-start gap-3 rounded-2xl border border-rot-rand bg-rot-grund p-6 text-rot-text`,children:[r,a,o]}),t[4]=a,t[5]=s),s}function Oa(){return window.location.reload()}var ka=e=>e?.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase();function Aa(e,t,n=[]){if(t==null)throw Error(`[lucide]: iconNode is required when icon name is used`);return{name:ka(e),size:24,node:t,...n.length>0?{aliases:n}:{}}}var ja=e=>{let t=``,n=!1;for(let r of e){if(r===`-`||r===`_`||r<=` `){n=t.length>0;continue}t.length===0?t+=r.toLowerCase():t+=n?r.toUpperCase():r,n=!1}return t},Ma=e=>{let t=ja(e);return t.charAt(0).toUpperCase()+t.slice(1)},Na=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),Pa={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`};function Fa(e){return e!=null}function Ia(e,t={}){let n=t.attributeNames??{},r=e=>n[e]??e,i=e.size??e.width??Pa.width,a=e.size??e.height??Pa.height,o=e.aliases?.filter(e=>typeof e==`string`&&e.trim()!==``).map(e=>`lucide-${e}`)??[],s=[...e.name?[`lucide-${e.name}`]:[],...o],c=t.className?.split(` `).filter(Boolean)??[],l=t.includeDefaultClasses===!1?Na(...c):Na(`lucide`,...s,...c),u=t.absoluteStrokeWidth?Number(t.strokeWidth??Pa[`stroke-width`])*Number(e.size??e.width??Pa.width)/Number(t.size??t.width??Pa.width):t.strokeWidth??Pa[`stroke-width`];return[`svg`,{...Object.entries(Pa).reduce((e,[t,n])=>(e[r(t)]=n,e),{}),...`color`in t&&t.color&&{[r(`stroke`)]:t.color},...`size`in t&&Fa(t.size)&&{[r(`width`)]:t.size,[r(`height`)]:t.size},...`width`in t&&Fa(t.width)&&{[r(`width`)]:t.width},...`height`in t&&Fa(t.height)&&{[r(`height`)]:t.height},[r(`stroke-width`)]:u,...l&&{[r(`class`)]:l},[r(`viewBox`)]:`0 0 ${i} ${a}`,...t.hasA11yProp===!1?{[r(`aria-hidden`)]:`true`}:{},...`attributes`in t&&t.attributes},e.node.map(e=>{let[n,i,a]=e,o=t.nonScalingStroke?{[r(`vector-effect`)]:`non-scaling-stroke`,...i}:i;return a?[n,o,a]:[n,o]})]}function La(e,t={}){return Ia(e,{...t,attributeNames:{...t.attributeNames,class:`className`,"stroke-width":`strokeWidth`,"stroke-linecap":`strokeLinecap`,"stroke-linejoin":`strokeLinejoin`,"vector-effect":`vectorEffect`}})}var Ra=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},za=(0,k.createContext)({}),Ba=()=>(0,k.useContext)(za),Va=(0,k.forwardRef)(({color:e,size:t,width:n,height:r,strokeWidth:i,absoluteStrokeWidth:a,nonScalingStroke:o,className:s=``,children:c,iconNode:l=[],icon:u={node:l,aliases:[],size:24},...d},f)=>{let{size:p=24,strokeWidth:m=2,absoluteStrokeWidth:h=!1,nonScalingStroke:g=!1,color:_=`currentColor`,className:v=``}=Ba()??{},y=!!c||Ra(d),[b,x,S=[]]=La(u,{color:e??_,width:n??t??p,height:r??t??p,strokeWidth:i??m,absoluteStrokeWidth:a??h,nonScalingStroke:o??g,className:Na(v,s),hasA11yProp:y,attributes:d});return(0,k.createElement)(b,{ref:f,...x},[...S.map(([e,t])=>(0,k.createElement)(e,t)),...Array.isArray(c)?c:[c]])});function Ha(e,t=[],n=[]){let r=typeof e==`string`?Aa(e,t,n):e,i=(0,k.forwardRef)(({className:e,...t},n)=>(0,k.createElement)(Va,{ref:n,icon:r,className:e,...t}));return r.name&&(i.displayName=Ma(r.name)),i}var Ua={name:`activity`,size:24,node:[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]};Ua.node;var Wa=Ha(Ua),Ga={name:`arrow-right`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]};Ga.node;var Ka=Ha(Ga),qa={name:`circle-alert`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]],aliases:[`alert-circle`]};qa.node;var Ja=Ha(qa),Ya={name:`circle-check`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m16 9-5.5 5.5L8 12`,key:`xofnsj`}]],aliases:[`check-circle-2`]};Ya.node;var Xa=Ha(Ya),Za={name:`cpu`,size:24,node:[[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M17 20v2`,key:`1rnc9c`}],[`path`,{d:`M17 2v2`,key:`11trls`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M2 17h2`,key:`7oei6x`}],[`path`,{d:`M2 7h2`,key:`asdhe0`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`M20 17h2`,key:`1fpfkl`}],[`path`,{d:`M20 7h2`,key:`1o8tra`}],[`path`,{d:`M7 20v2`,key:`4gnj0m`}],[`path`,{d:`M7 2v2`,key:`1i4yhu`}],[`rect`,{x:`4`,y:`4`,width:`16`,height:`16`,rx:`2`,key:`1vbyd7`}],[`rect`,{x:`8`,y:`8`,width:`8`,height:`8`,rx:`1`,key:`z9xiuo`}]]};Za.node;var Qa=Ha(Za),$a={name:`external-link`,size:24,node:[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]};$a.node;var eo=Ha($a),to={name:`gauge`,size:24,node:[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]};to.node;var no=Ha(to),ro={name:`layout-grid`,size:24,node:[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`1g98yp`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`3`,rx:`1`,key:`6d4xhi`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`14`,rx:`1`,key:`nxv5o0`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`1bb6yr`}]]};ro.node;var io=Ha(ro),ao={name:`menu`,size:24,node:[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]};ao.node;var oo=Ha(ao),so={name:`refresh-cw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]};so.node;var co=Ha(so),lo={name:`scroll-text`,size:24,node:[[`path`,{d:`M15 12h-5`,key:`r7krc0`}],[`path`,{d:`M15 8h-5`,key:`1khuty`}],[`path`,{d:`M19 17V5a2 2 0 0 0-2-2H4`,key:`zz82l3`}],[`path`,{d:`M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3`,key:`1ph1d7`}]]};lo.node;var uo=Ha(lo),fo={name:`settings`,size:24,node:[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]};fo.node;var po=Ha(fo),mo={name:`x`,size:24,node:[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]};mo.node;var ho=Ha(mo),go=[`/api/instanz`,`/api/partner`,`/api/health`],_o=(e,t)=>e===t||e.startsWith(`${t}/`)||e.startsWith(`${t}?`);function vo(e,t){return!e.startsWith(`/api/`)||go.some(t=>_o(e,t))||(_o(e,`/api/homelab`)?`homelab`:`box`)===t?e:`/api/partner${e.slice(4)}`}var yo=null;function bo(){return yo??=fetch(`/api/instanz`,{headers:{Accept:`application/json`}}).then(e=>e.ok?e.json():Promise.reject(Error(String(e.status)))).then(e=>e.rolle===`homelab`?`homelab`:`box`).catch(()=>(yo=null,`box`)),yo}var xo=class extends Error{status;detail;constructor(e,t){super(t),this.status=e,this.detail=t,this.name=`ApiFehler`}};function So(e,t){if(e&&typeof e==`object`&&`detail`in e){let t=e.detail;if(typeof t==`string`)return t;if(Array.isArray(t))return t.map(e=>e.msg??String(e)).join(`; `)}return`Die Box antwortet mit Fehler ${t}.`}async function V(e,t={}){let n=vo(e,await bo()),r;try{r=await fetch(n,{...t,headers:{"Content-Type":`application/json`,Accept:`application/json`,...t.headers}})}catch{throw new xo(0,`MC2 ist nicht erreichbar. Läuft die Box?`)}let i=await r.text(),a=i?Co(i):null;if(!r.ok)throw new xo(r.status,So(a,r.status));if(typeof a==`string`)throw new xo(r.status,`Die Box antwortet nicht mit Daten.`);return a}function Co(e){try{return JSON.parse(e)}catch{return e}}var wo=(e,t)=>V(e,{method:`POST`,body:t===void 0?void 0:JSON.stringify(t)}),To=100,Eo=95,Do=210,Oo=240;function ko(e,t){let n=e*Math.PI/180;return[To+t*Math.cos(n),Eo-t*Math.sin(n)]}var Ao=e=>Math.round(e*100)/100;function jo(e,t,n){let r=Math.max(0,Math.min(1,e)),i=Math.max(r,Math.min(1,t)),[a,o]=ko(Do-Oo*r,n),[s,c]=ko(Do-Oo*i,n),l=+((i-r)*Oo>180);return`M ${Ao(a)} ${Ao(o)} A ${n} ${n} 0 ${l} 1 ${Ao(s)} ${Ao(c)}`}function Mo(e){return e==null?`var(--text-3)`:e>=85?`var(--rot)`:e>=70?`var(--bernstein)`:`var(--gruen)`}var No={ok:`border-gruen-rand bg-gruen-grund text-gruen`,info:`border-cyan-rand bg-cyan-grund text-cyan`,stumm:`border-aus-rand bg-aus-grund text-aus-text`,gelb:`border-2 border-bernstein bg-bernstein-grund text-bernstein-hell lampe-atmet`,rot:`border-2 border-rot bg-rot-grund text-rot shadow-[0_0_32px_rgba(255,90,79,0.3)]`};function Po(e){if(!e.waechter_wach)return{art:`stumm`,oben:`Wächter`,mitte:`SCHWEIGT`,unten:`Seit über 5 Minuten kein Prüflauf`};if(e.update_laeuft)return{art:`info`,oben:`Wartung`,mitte:`UPDATE LÄUFT`,unten:`Hinweise ruhen bis zum Ende`};if(e.anzahl===0)return{art:`ok`,oben:`Alles`,mitte:`IN ORDNUNG`,unten:`Keine offenen Hinweise`};let t=`${e.anzahl} HINWEIS${e.anzahl===1?``:`E`}`;return e.stufe===`rot`?{art:`rot`,oben:`Störung`,mitte:t,unten:`Drücken zum Ansehen`}:{art:`gelb`,oben:`Achtung`,mitte:t,unten:`Drücken zum Ansehen`}}function Fo(e,t){let n=`„${e.titel}“:`;switch(t.id){case`protokoll`:return null;case`neustart`:return e.id.startsWith(`timer:`)?{titel:`${t.label}?`,text:`${n} Der Dienst läuft sofort noch einmal.`,knopf:t.label}:{titel:`${t.label}?`,text:`${n} Der Dienst wird ${/^starten/i.test(t.label)?`gestartet`:`neu gestartet`} und ist dabei kurz nicht erreichbar.`,knopf:t.label};case`job-wiederholen`:return{titel:`Job erneut ausführen?`,text:`${n} Hermes führt den Job sofort noch einmal aus, mit allem, was er sonst auch tut — etwa Nachrichten verschicken.`,knopf:t.label};case`freigeben`:return{titel:`Update freigeben?`,text:`${n} Nach dem Freigeben versucht der nächste Sonntags-Lauf das Update wieder.`,knopf:t.label};default:return{titel:`${t.label}?`,text:`${n} ${t.label}.`,knopf:t.label}}}function Io(e){return e?.status===`busy`?e.running?`Es läuft schon ein Update („${e.running}“). Warte, bis es fertig ist.`:`Es läuft schon ein Update. Warte, bis es fertig ist.`:e?.detail||e?.err||e?.error||e?.text||`Das hat nicht geklappt.`}var Lo=e=>e.state===`running`||e.state===`queued`;function Ro(e){let t=e.aliases.map(e=>e.toLowerCase());return t.includes(`hermes`)||t.includes(`fast`)?`hirn`:t.includes(`coder`)?`coder`:null}var zo={neu:`Neu`,wartet:`Wartet`,getestet:`Gemessen`,bestanden:`Bestanden`,durchgefallen:`Durchgefallen`,uebernommen:`Übernommen`,verworfen:`Verworfen`};function Bo(e,t=``){if(e==null||e===``)return`–`;let n=typeof e==`number`?e.toLocaleString(`de-DE`,{maximumFractionDigits:+(e<10)}):String(e);return t?`${n} ${t}`:n}var Vo=[],H=1,U=new Set,Ho=()=>U.forEach(e=>e());function Uo(e,t){let n=H++;Vo=[...Vo,{id:n,art:e,text:t}].slice(-4),Ho(),e!==`fehler`&&window.setTimeout(()=>Wo(n),6e3)}function Wo(e){Vo=Vo.filter(t=>t.id!==e),Ho()}var Go=()=>(0,k.useSyncExternalStore)(Ko,qo);function Ko(e){return U.add(e),()=>{U.delete(e)}}function qo(){return Vo}var Jo=2e3,Yo=3e4,Xo=2e4,Zo=`verbinde`,Qo=null,$o=new Set,es=()=>$o.forEach(e=>e());function ts(e){return $o.add(e),()=>{$o.delete(e)}}var ns=()=>Zo===`live`,rs=()=>(0,k.useSyncExternalStore)(ts,ss),is=()=>(0,k.useSyncExternalStore)(ts,cs);function as(e){e!==Zo&&(Zo=e,es())}function os(){let e=se();(0,k.useEffect)(()=>{let t=null,n,r,i=Date.now(),a=Jo,o=!1;function s(){o||(window.clearTimeout(n),n=window.setTimeout(l,a),a=Math.min(a*2,Yo))}function c(){i=Date.now(),window.clearTimeout(r),r=window.setTimeout(()=>{t?.close(),as(`getrennt`),s()},Xo)}function l(){window.clearTimeout(n),window.clearTimeout(r),t?.close();let i=new EventSource(`/api/stream`);t=i,i.onopen=()=>{a=Jo,as(`live`),c(),e.invalidateQueries()},i.onerror=()=>{as(`getrennt`),i.readyState===EventSource.CLOSED&&(window.clearTimeout(r),s())},i.addEventListener(`invalidate`,t=>{c();try{let n=JSON.parse(t.data)?.keys??[];for(let t of n)e.invalidateQueries({queryKey:[t]})}catch{}}),i.addEventListener(`metrik`,e=>{c();try{Qo=JSON.parse(e.data),es()}catch{}})}let u=()=>{o||document.visibilityState!==`visible`||(t?.readyState===EventSource.CLOSED||Date.now()-i>5e3)&&(a=Jo,l())};return l(),window.addEventListener(`online`,u),document.addEventListener(`visibilitychange`,u),()=>{o=!0,window.clearTimeout(n),window.clearTimeout(r),window.removeEventListener(`online`,u),document.removeEventListener(`visibilitychange`,u),t?.close(),as(`getrennt`)}},[e])}function ss(){return Zo}function cs(){return Qo}var ls=`Europe/Berlin`,us=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,timeZone:ls}),ds=new Intl.DateTimeFormat(`de-DE`,{weekday:`short`,timeZone:ls}),fs=new Intl.DateTimeFormat(`de-DE`,{day:`2-digit`,month:`2-digit`,timeZone:ls}),ps=new Intl.DateTimeFormat(`en-CA`,{timeZone:ls});function ms(e){return ps.format(e)}function hs(e,t=new Date){let n=new Date(e);if(Number.isNaN(n.getTime()))return`–`;let r=ms(t),i=ms(new Date(t.getTime()-864e5)),a=ms(new Date(t.getTime()+864e5)),o=ms(n),s=us.format(n);return o===r?`HEUTE ${s}`:o===i?`GESTERN ${s}`:o===a?`MORGEN ${s}`:Math.abs(n.getTime()-t.getTime())<5616e5?`${ds.format(n).replace(`.`,``).toUpperCase()} ${s}`:`${fs.format(n)} ${s}`}function gs(e,t=new Date){let n=new Date(e*1e3);return ms(n)===ms(t)?`seit heute ${us.format(n)}`:`seit ${fs.format(n)}, ${us.format(n)}`}function _s(e,t=Date.now()){let n=Math.max(0,Math.round(t/1e3-e));if(n<60)return`vor ${n} s`;if(n<3600)return`vor ${Math.round(n/60)} min`;if(n<86400)return`vor ${Math.round(n/3600)} h`;let r=Math.round(n/86400);return`vor ${r} ${r===1?`Tag`:`Tagen`}`}function vs(e){return e==null||e<0?null:[Math.floor(e/86400),Math.floor(e%86400/3600)]}var ys=e=>e==null?null:e/1024**3;function bs(e,t=0){let n=ys(e);return n==null?`–`:n>=1e3?`${(n/1024).toFixed(1).replace(`.`,`,`)} TB`:`${n.toFixed(t).replace(`.`,`,`)} GB`}var xs=e=>e.toLocaleString(`de-DE`),Ss=e=>()=>ns()?e*5:e;function Cs(e,t){let n=e.getQueryData([`jobs`])?.jobs??[],r=t.filter(e=>!Lo(e)&&n.some(t=>t.id===e.id&&Lo(t)));if(r.length===0)return;let i=new Set([`start`]);for(let e of r){let t=e.group===`download`||/^download\s/i.test(e.label);for(let e of t?[`models`,`aufraeumen`]:[`update-details`,`updates-verlauf`,`sicherungen`])i.add(e)}for(let t of i)e.invalidateQueries({queryKey:[t]})}var ws=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`start`],queryFn:bc,refetchInterval:xc},e[0]=t):t=e[0],I(t)},Ts=()=>{let e=(0,B.c)(2),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[`models`],e[0]=t):t=e[0];let n;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n={queryKey:t,queryFn:Sc,refetchInterval:Ss(3e4)},e[1]=n):n=e[1],I(n)},Es=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`nutzung`],queryFn:Cc,refetchInterval:6e5},e[0]=t):t=e[0],I(t)},Ds=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`radar`],queryFn:wc,retry:!1,refetchInterval:3e5},e[0]=t):t=e[0],I(t)},Os=()=>{let e=(0,B.c)(3),t=se(),n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`jobs`],e[0]=n):n=e[0];let r;return e[1]===t?r=e[2]:(r={queryKey:n,queryFn:async()=>{let e=await V(`/api/jobs`);return Cs(t,e.jobs),e},refetchInterval:Tc},e[1]=t,e[2]=r),I(r)},ks=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`sicherungen`],queryFn:Ec},e[0]=t):t=e[0],I(t)},As=e=>{let t=(0,B.c)(4),n;t[0]===e?n=t[1]:(n=e.map(Dc),t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r={queries:n},t[2]=n,t[3]=r),wt(r)},js=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`updates-verlauf`],queryFn:Oc},e[0]=t):t=e[0],I(t)},Ms=e=>{let t=(0,B.c)(7),n,r;t[0]===e?(n=t[1],r=t[2]):(n=[`protokoll`,e],r=()=>V(`/api/maintenance/logs?service=${encodeURIComponent(e??``)}&lines=200`),t[0]=e,t[1]=n,t[2]=r);let i=!!e,a;return t[3]!==n||t[4]!==r||t[5]!==i?(a={queryKey:n,queryFn:r,enabled:i},t[3]=n,t[4]=r,t[5]=i,t[6]=a):a=t[6],I(a)},Ns=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`dienste`],queryFn:kc},e[0]=t):t=e[0],I(t)};function Ps(e,t){let n=(0,B.c)(6),r=se(),i;n[0]!==t||n[1]!==r?(i=(e,n)=>{let i=e;i&&i.ok===!1?Uo(`fehler`,t.fehler?.(n,i)??Io(i)):Uo(`erfolg`,t.erfolg(n,e));for(let e of t.neuLaden)r.invalidateQueries({queryKey:[e]})},n[0]=t,n[1]=r,n[2]=i):i=n[2];let a;return n[3]!==e||n[4]!==i?(a={mutationFn:e,onSuccess:i,onError:Fs},n[3]=e,n[4]=i,n[5]=a):a=n[5],Et(a)}function Fs(e){return Uo(`fehler`,e.message)}var Is=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:jc,neuLaden:[`start`]},e[0]=t):t=e[0],Ps(Ac,t)},Ls={alle:`/api/maintenance/update-all`,pruefen:`/api/maintenance/check-updates`,os:`/api/maintenance/os-update`,engine:`/api/maintenance/engine-update`,swap:`/api/maintenance/swap-update`,hermes:`/api/maintenance/hermes-update`},Rs=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Nc,neuLaden:[`jobs`,`start`]},e[0]=t):t=e[0],Ps(Mc,t)},zs=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Fc,fehler:Ic,neuLaden:[`jobs`]},e[0]=t):t=e[0],Ps(Pc,t)},Bs=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Rc,neuLaden:[`jobs`,`models`]},e[0]=t):t=e[0],Ps(Lc,t)},Vs=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`aufraeumen`],queryFn:zc,staleTime:6e4},e[0]=t):t=e[0],I(t)},Hs=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Vc,neuLaden:[`aufraeumen`,`models`,`start`]},e[0]=t):t=e[0],Ps(Bc,t)},Us=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Uc,neuLaden:[`start`]},e[0]=t):t=e[0],Ps(Hc,t)},Ws=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Gc,fehler:Kc,neuLaden:[`sicherungen`,`start`]},e[0]=t):t=e[0],Ps(Wc,t)},Gs=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Jc,neuLaden:[`sicherungen`]},e[0]=t):t=e[0],Ps(qc,t)},Ks=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Xc,neuLaden:[`models`,`start`]},e[0]=t):t=e[0],Ps(Yc,t)},qs=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Qc,neuLaden:[`radar`,`models`,`start`]},e[0]=t):t=e[0],Ps(Zc,t)},Js=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:el,neuLaden:[`jobs`]},e[0]=t):t=e[0],Ps($c,t)},Ys=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`instanz`],queryFn:tl,staleTime:1/0},e[0]=t):t=e[0],I(t)},Xs=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`partner`],queryFn:nl,refetchInterval:3e4},e[0]=t):t=e[0],I(t)},Zs=()=>{let e=(0,B.c)(2),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=[`ziele-box`],e[0]=t):t=e[0];let n;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n={queryKey:t,queryFn:rl,refetchInterval:Ss(3e4)},e[1]=n):n=e[1],I(n)},Qs=e=>{let t=(0,B.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:il,enabled:e,refetchInterval:3e4},t[1]=e,t[2]=r),I(r)},$s=e=>{let t=(0,B.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-laeufe`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:al,enabled:e,refetchInterval:sl},t[1]=e,t[2]=r),I(r)},ec=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:ll,neuLaden:[`homelab`,`homelab-laeufe`,`ziele-box`,`jobs`,`start`]},e[0]=t):t=e[0],Ps(cl,t)},tc=e=>{let t=(0,B.c)(4),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-hinweise`],t[0]=n):n=t[0];let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=Ss(6e4),t[1]=r):r=t[1];let i;return t[2]===e?i=t[3]:(i={queryKey:n,queryFn:ul,enabled:e,refetchInterval:r},t[2]=e,t[3]=i),I(i)},nc=e=>{let t=(0,B.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`einstellungen`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:dl,enabled:e,retry:!1},t[1]=e,t[2]=r),I(r)},rc=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:pl,neuLaden:[`einstellungen`,`start`]},e[0]=t):t=e[0],Ps(fl,t)},ic=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:hl,neuLaden:[`einstellungen`,`start`,`radar`]},e[0]=t):t=e[0],Ps(ml,t)},ac=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:_l,neuLaden:[]},e[0]=t):t=e[0],Ps(gl,t)},oc=(e,t)=>{let n=(0,B.c)(9),r;n[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=[`stand`,`hier`],n[0]=r):r=n[0];let i;n[1]===e?i=n[2]:(i={queryKey:r,queryFn:W,enabled:e},n[1]=e,n[2]=i);let a;n[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=[`stand`,`partner`],n[3]=a):a=n[3];let o=e&&t,s;n[4]===o?s=n[5]:(s={queryKey:a,queryFn:vl,enabled:o,retry:!1},n[4]=o,n[5]=s);let c;return n[6]!==i||n[7]!==s?(c={queries:[i,s]},n[6]=i,n[7]=s,n[8]=c):c=n[8],wt(c)},sc=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={queryKey:[`altreste`],queryFn:yl,staleTime:6e4},e[0]=t):t=e[0],I(t)},cc=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:xl,neuLaden:[`altreste`,`start`]},e[0]=t):t=e[0],Ps(bl,t)},lc={"1h":6e4,"24h":3e5,"7d":9e5},uc=(e,t)=>{let n=(0,B.c)(8),r=t===void 0||t,i,a;n[0]===e?(i=n[1],a=n[2]):(i=[`messwerte`,`box`,e],a=()=>V(`/api/messwerte?zeitraum=${e}`),n[0]=e,n[1]=i,n[2]=a);let o=lc[e],s;return n[3]!==r||n[4]!==i||n[5]!==a||n[6]!==o?(s={queryKey:i,queryFn:a,enabled:r,refetchInterval:o,placeholderData:Sl,retry:!1},n[3]=r,n[4]=i,n[5]=a,n[6]=o,n[7]=s):s=n[7],I(s)},dc=(e,t)=>{let n=(0,B.c)(8),r,i;n[0]===e?(r=n[1],i=n[2]):(r=[`messwerte`,`homelab`,e],i=()=>V(`/api/homelab/messwerte?zeitraum=${e}`),n[0]=e,n[1]=r,n[2]=i);let a=lc[e],o;return n[3]!==t||n[4]!==r||n[5]!==i||n[6]!==a?(o={queryKey:r,queryFn:i,enabled:t,refetchInterval:a,placeholderData:Cl,retry:!1},n[3]=t,n[4]=r,n[5]=i,n[6]=a,n[7]=o):o=n[7],I(o)},fc=e=>{let t=(0,B.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-sammelplan`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:wl,enabled:e,retry:!1},t[1]=e,t[2]=r),I(r)},pc=e=>{let t=(0,B.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-sammellauf`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:Tl,enabled:e,refetchInterval:El,retry:!1},t[1]=e,t[2]=r),I(r)},mc=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Ol,neuLaden:[`homelab-sammellauf`,`homelab-laeufe`,`homelab`]},e[0]=t):t=e[0],Ps(Dl,t)},hc=(e,t)=>{let n=(0,B.c)(8),r,i;n[0]===t?(r=n[1],i=n[2]):(r=[`homelab-protokoll`,t],i=()=>V(`/api/homelab/protokoll?grenze=300&berichte=${+!!t}`),n[0]=t,n[1]=r,n[2]=i);let a;n[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=Ss(3e4),n[3]=a):a=n[3];let o;return n[4]!==e||n[5]!==r||n[6]!==i?(o={queryKey:r,queryFn:i,enabled:e,refetchInterval:a,retry:!1},n[4]=e,n[5]=r,n[6]=i,n[7]=o):o=n[7],I(o)},gc=e=>{let t=(0,B.c)(4),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-speicher`],t[0]=n):n=t[0];let r;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(r=Ss(6e4),t[1]=r):r=t[1];let i;return t[2]===e?i=t[3]:(i={queryKey:n,queryFn:kl,enabled:e,refetchInterval:r,retry:!1},t[2]=e,t[3]=i),I(i)},_c=e=>{let t=(0,B.c)(3),n;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(n=[`homelab-einstellungen`],t[0]=n):n=t[0];let r;return t[1]===e?r=t[2]:(r={queryKey:n,queryFn:Al,enabled:e,retry:!1},t[1]=e,t[2]=r),I(r)},vc=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Ml,neuLaden:[`homelab-einstellungen`,`homelab`]},e[0]=t):t=e[0],Ps(jl,t)},yc=()=>{let e=(0,B.c)(1),t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={erfolg:Pl,neuLaden:[`homelab-einstellungen`,`homelab`]},e[0]=t):t=e[0],Ps(Nl,t)};function bc(){return V(`/api/start`)}function xc(e){return e.state.data&&!e.state.data.updates.gelesen?4e3:Ss(2e4)()}function Sc(){return V(`/api/models`)}function Cc(){return V(`/api/modelle/nutzung`)}function wc(){return V(`/api/radar`)}function Tc(e){return e.state.data?.jobs.some(Lo)?2e3:Ss(3e4)()}function Ec(){return V(`/api/zeitmaschine`)}function Dc(e){return{queryKey:[`update-details`,e],queryFn:()=>V(`/api/maintenance/update-details?kind=${encodeURIComponent(e)}`),staleTime:6e5}}function Oc(){return V(`/api/updates/verlauf`)}function kc(){return V(`/api/system/services`)}function Ac(e){let{hinweis:t,aktion:n}=e;return wo(`/api/hinweise/${encodeURIComponent(t)}/aktion/${n}`)}function jc(e,t){return e.aktion===`freigeben`&&t.text?t.text:`${e.label}: erledigt. Der Wächter prüft in einer Minute nach.`}function Mc(e){return wo(Ls[e])}function Nc(e){return e===`pruefen`?`Die Suche nach Neuem läuft. Den Fortschritt siehst du unten bei den Aufträgen.`:`Das Update läuft. Den Fortschritt siehst du unten bei den Aufträgen.`}function Pc(e){let{id:t}=e;return wo(`/api/jobs/${encodeURIComponent(t)}/cancel`)}function Fc(e){return`${e.titel}: wird abgebrochen.`}function Ic(e){return`${e.titel} lief schon nicht mehr.`}function Lc(e){let{repo:t,quant:n,rolle:r}=e;return wo(`/api/models/install`,{repo:t,quant:n,role:r})}function Rc(e,t){return`${e.repo} (${e.quant}) wird heruntergeladen${t.total_bytes?`, ${bs(t.total_bytes,1)}`:``}. Den Fortschritt siehst du unter Aufträge.`}function zc(){return V(`/api/modelle/aufraeumen`)}function Bc(e){return wo(`/api/modelle/aufraeumen/loeschen`,{art:e.art,name:e.name})}function Vc(e,t){return t.text??`Gelöscht.`}function Hc(e){return wo(`/api/updates/festgehalten/${encodeURIComponent(e)}/freigeben`)}function Uc(e,t){return t.text??`Freigegeben.`}function Wc(){return wo(`/api/system/backup`)}function Gc(e,t){return t.size_mb==null?`Sicherung erstellt.`:`Sicherung erstellt (${t.size_mb.toLocaleString(`de-DE`)} MB).`}function Kc(e,t){return`Die Sicherung ging nicht: ${Io(t)}`}function qc(e){return wo(`/api/zeitmaschine/restore`,{file:e})}function Jc(){return`Zurückspielen läuft. Die Dienste starten gleich neu.`}function Yc(e){return wo(`/api/models/${encodeURIComponent(e)}/load`)}function Xc(e){return`${e} wird geladen.`}function Zc(e){let{id:t,aktion:n}=e;return wo(`/api/radar/${encodeURIComponent(t)}/${n}`)}function Qc(e){return e.aktion===`uebernehmen`?`${e.name} übernommen.`:`${e.name} verworfen.`}function $c(){return wo(`/api/radar/suche`)}function el(e,t){return t.text??`Das Radar sucht jetzt nach neuen Modellen.`}function tl(){return V(`/api/instanz`)}function nl(){return V(`/api/partner`)}function rl(){return V(`/api/ziele`)}function il(){return V(`/api/homelab/ziele`)}function al(){return V(`/api/homelab/laeufe`)}function ol(e){return e.status===`laeuft`}function sl(e){return e.state.data?.laeufe.some(ol)?3e3:3e4}function cl(e){return V(e.pfad,{method:e.methode})}function ll(e){return`${e.label}: gestartet. Das Ergebnis kommt als Meldung.`}function ul(){return V(`/api/homelab/hinweise`)}function dl(){return V(`/api/einstellungen`)}function fl(e){return wo(`/api/einstellungen/update-fenster`,e)}function pl(e,t){return t.text??`Gespeichert.`}function ml(e){return wo(`/api/einstellungen/radar`,{an:e})}function hl(e,t){return t.text??`Geschaltet.`}function gl(e){return wo(e===`homelab`?`/api/homelab/einstellungen/telegram-test`:`/api/einstellungen/telegram-test`)}function _l(e,t){return t.text??`Die Testmeldung ist raus.`}function W(){return V(`/api/instanz`)}function vl(){return V(`/api/partner/instanz`)}function yl(){return V(`/api/aufraeumen/altreste`)}function bl(e){return wo(`/api/aufraeumen/altreste/loeschen`,{id:e.id})}function xl(e,t){return t.text??`Gelöscht.`}function Sl(e){return e}function Cl(e){return e}function wl(){return V(`/api/homelab/alle/plan`)}function Tl(){return V(`/api/homelab/sammellauf`)}function El(e){return e.state.data?.sammellauf?.status===`laeuft`?5e3:6e4}function Dl(){return wo(`/api/homelab/alle`)}function Ol(){return`Alle aktualisieren: gestartet. Die Schritte laufen nacheinander; das Ergebnis kommt als Meldung.`}function kl(){return V(`/api/homelab/speicher`)}function Al(){return V(`/api/homelab/einstellungen`)}function jl(e){return e===null?V(`/api/homelab/einstellungen/arcane-schluessel`,{method:`DELETE`}):wo(`/api/homelab/einstellungen/arcane-schluessel`,{schluessel:e})}function Ml(e,t){return t.text??(e===null?`Arcane-Schlüssel entfernt.`:`Arcane-Schlüssel gespeichert.`)}function Nl(e){return wo(`/api/homelab/einstellungen/arcane-echt`,{an:e})}function Pl(e){return e?`Docker-Updates über Arcane laufen jetzt echt.`:`Docker-Updates über Arcane sind wieder nur ein Probelauf.`}var Fl={"ki-box":`KI-Box`,"proxmox-host":`Proxmox-Host`,container:`Container`,vm:`VM`};function Il(e){let t=e.id.match(/-(\d+)$/)?.[1],n=Fl[e.art]??e.art;return t?`${n} ${t}`:n}var Ll={"Proxmox-Host":`Proxmox`,"AdGuard Home":`AdGuard`,"PVE Scripts Local":`PVE Scripts`,"Proxmox Backup Server":`PBS`,"Arcane (Docker)":`Arcane`},Rl=e=>Ll[e.name]??e.name,zl=new Set([`app`,`arcane`]),Bl=e=>e.bausteine.find(e=>zl.has(e.id))??null,Vl=e=>e.bausteine.find(e=>!zl.has(e.id))??null;function Hl(e){let t=e.flatMap(e=>e.bausteine.filter(e=>e.zustand===`neu`).map(t=>({ziel:e,baustein:t})));return[...t.filter(e=>e.baustein.aktion),...t.filter(e=>!e.baustein.aktion)]}function Ul(e){let t=e.bausteine.filter(e=>e.zustand===`neu`);return t.some(e=>e.aktion)?0:t.length>0?1:e.bausteine.some(e=>e.zustand===`unbekannt`)?2:3}function Wl(e){let t=e.rueckweg_art??Gl(e.rueckweg);return t===`snapshot`?`Snapshot vorher, bei Rot zurück`:t===`sicherung`?`Sicherung vorher, bei Rot zurück`:e.art===`proxmox-host`?`Kein Rückweg, Neustart getrennt`:`Kein automatischer Rückweg`}function Gl(e){let t=(e??``).toLowerCase();return t.startsWith(`snapshot vor`)?`snapshot`:t.startsWith(`sicherung`)?`sicherung`:`keiner`}var Kl=e=>zl.has(e.id),ql=e=>e.replace(/^Image vom /,``);function Jl(e){return Kl(e)&&e.verfuegbar?e.verfuegbar:e.kurz||e.verfuegbar||`neu`}function Yl(e){let t=e.platte;return t&&t.gesamt>0?t.belegt/t.gesamt:null}function Xl(e,t){let n=Rl(e),r=Yl(e);if(e.erreichbar===!1)return{id:e.id,label:n,zustand:`fehler`,wert:`antwortet nicht`};if(r!==null&&r>=.9)return{id:e.id,label:n,zustand:`fehler`,wert:`Platte voll`};if(t)return{id:e.id,label:n,zustand:`info`,wert:`Update läuft`};if(r!==null&&r>=.8)return{id:e.id,label:n,zustand:`warn`,wert:`Platte ${Math.round(r*100)} %`};let i=e.bausteine.filter(e=>e.zustand===`neu`);if(i.length>0){let t=i.find(e=>zl.has(e.id))??i[0];return{id:e.id,label:n,zustand:`info`,wert:zl.has(t.id)&&t.verfuegbar?`→ ${t.verfuegbar}`:Jl(t)}}let a=Bl(e);return{id:e.id,label:n,zustand:`ok`,wert:a?.installiert?ql(a.installiert):`aktuell`}}var Zl=e=>`${e} HINWEIS${e===1?``:`E`}`;function Ql(e,t,n,r){let i=e.ziele.filter(e=>e.erreichbar===!1);if(i.length>0)return{art:`rot`,oben:`Störung`,mitte:i.length===1?`1 GERÄT STUMM`:`${i.length} GERÄTE STUMM`,unten:i.map(Rl).join(`, `),ziel:`geraete`};if(t.some(e=>e.stufe===`rot`))return{art:`rot`,oben:`Störung`,mitte:Zl(t.length),unten:`Drücken zum Ansehen`,ziel:`hinweise`};if(!e.ausfuehrer.verbunden)return{art:`gelb`,oben:`Achtung`,mitte:`AUSFÜHRER STUMM`,unten:`Die Geräte zeigen den letzten Stand`,ziel:null};if(t.length>0)return{art:`gelb`,oben:`Achtung`,mitte:Zl(t.length),unten:`Drücken zum Ansehen`,ziel:`hinweise`};if(n>0)return{art:`info`,oben:`Wartung`,mitte:`UPDATE LÄUFT`,unten:`Das Ergebnis kommt als Meldung`,ziel:`updates`};let a=Hl(e.ziele).filter(e=>e.baustein.aktion).length;return a>0?{art:`info`,oben:`Homelab`,mitte:`${a} UPDATE${a===1?``:`S`}`,unten:`Drücken zum Ansehen`,ziel:`updates`}:{art:`ok`,oben:`Homelab`,mitte:`ALLES AKTUELL`,unten:r?`Stand ${r}`:`Keine offenen Updates`,ziel:null}}function $l(e){return e?.match(/vom (\d{2}\.\d{2}\.\d{4})/)?.[1]??null}var eu=[{id:`box`,name:`KI-Box`},{id:`homelab`,name:`Homelab`}],tu=[{to:`/`,label:`Übersicht`,Icon:io,ort:`uebersicht`},{to:`/box`,label:`Cockpit`,Icon:no,ort:`box`},{to:`/box/updates`,label:`Updates`,Icon:co,ort:`box`,zaehlt:!0},{to:`/box/modelle`,label:`Modelle`,Icon:Qa,ort:`box`},{to:`/box/monitoring`,label:`Monitoring`,Icon:Wa,ort:`box`},{to:`/homelab`,label:`Cockpit`,Icon:no,ort:`homelab`},{to:`/homelab/updates`,label:`Updates`,Icon:co,ort:`homelab`,zaehlt:!0},{to:`/homelab/monitoring`,label:`Monitoring`,Icon:Wa,ort:`homelab`},{to:`/homelab/protokoll`,label:`Protokoll`,Icon:uo,ort:`homelab`},{to:`/einstellungen`,label:`Einstellungen`,Icon:po,ort:`system`}],nu={uebersicht:`Auf einen Blick`,box:`KI-Box`,homelab:`Homelab`,system:`Beide Instanzen`};function ru(){let e=(0,B.c)(2),t=Ta({select:iu}).replace(/\/+$/,``)||`/`,n;return e[0]===t?n=e[1]:(n=tu.find(e=>e.to===t)??tu[0],e[0]=t,e[1]=n),n}function iu(e){return e.location.pathname}function G(){let e=(0,B.c)(19),t=Ys(),n=Xs(),r=rs(),i=t.data?.rolle===`homelab`?`homelab`:`box`,a=r===`live`?`online`:r,o=n.data,s=o?o.eingerichtet?o.erreichbar?`online`:`getrennt`:`fehlt`:`verbinde`,c;e[0]!==a||e[1]!==s||e[2]!==i?(c=i===`box`?{box:a,homelab:s}:{box:s,homelab:a},e[0]=a,e[1]=s,e[2]=i,e[3]=c):c=e[3];let l=c,u=Zs(),d=Qs(l.homelab===`online`),f;e[4]===u.data?.ziele?f=e[5]:(f=u.data?.ziele??[],e[4]=u.data?.ziele,e[5]=f);let p;e[6]===f?p=e[7]:(p=f.reduce(ou,0),e[6]=f,e[7]=p);let m=p,h;e[8]===d.data?.ziele?h=e[9]:(h=Hl(d.data?.ziele??[]).filter(au),e[8]=d.data?.ziele,e[9]=h);let g=h.length,_;e[10]!==m||e[11]!==l.box?(_={verbindung:l.box,updates:m},e[10]=m,e[11]=l.box,e[12]=_):_=e[12];let v;e[13]!==g||e[14]!==l.homelab?(v={verbindung:l.homelab,updates:g},e[13]=g,e[14]=l.homelab,e[15]=v):v=e[15];let y;return e[16]!==_||e[17]!==v?(y={box:_,homelab:v},e[16]=_,e[17]=v,e[18]=y):y=e[18],y}function au(e){return e.baustein.aktion}function ou(e,t){return e+t.bausteine.filter(su).length}function su(e){return e.zustand===`neu`&&e.aktion}var cu={erfolg:`border-gruen-rand bg-gruen-grund text-gruen-text`,fehler:`border-rot-rand bg-rot-grund text-rot-text`,info:`border-cyan-rand bg-cyan-grund text-cyan-text`};function lu(){let e=(0,B.c)(4),t=Go(),n;e[0]===t?n=e[1]:(n=t.map(uu),e[0]=t,e[1]=n);let r;return e[2]===n?r=e[3]:(r=(0,A.jsx)(`div`,{"aria-live":`polite`,className:`pointer-events-none fixed right-4 bottom-24 left-4 z-50 flex flex-col items-end gap-2 md:left-auto md:w-[420px] lg:bottom-6`,children:n}),e[2]=n,e[3]=r),r}function uu(e){return(0,A.jsxs)(`div`,{role:e.art===`fehler`?`alert`:`status`,className:a(`pointer-events-auto flex w-full items-start gap-3 rounded-xl border px-4 py-3 text-[15px] shadow-lg`,cu[e.art]),children:[(0,A.jsx)(`span`,{className:`min-w-0 flex-1`,children:e.text}),(0,A.jsx)(`button`,{type:`button`,onClick:()=>Wo(e.id),"aria-label":`Meldung schließen`,className:`-m-2 p-2 opacity-70 hover:opacity-100`,children:(0,A.jsx)(ho,{className:`size-4`})})]},e.id)}var du={online:{punkt:`bg-gruen shadow-[0_0_8px_rgba(61,220,138,0.7)]`,text:`online`},verbinde:{punkt:`bg-bernstein`,text:`verbinde`},getrennt:{punkt:`bg-rot`,text:`getrennt`},fehlt:{punkt:`bg-text-3`,text:`nicht eingerichtet`}},fu={uebersicht:{aktiv:`!border-bernstein bg-bernstein-grund`,symbol:`group-data-[status=active]:text-bernstein`},box:{aktiv:`!border-box bg-box-grund`,symbol:`group-data-[status=active]:text-box`},homelab:{aktiv:`!border-lab bg-lab-grund`,symbol:`group-data-[status=active]:text-lab`},system:{aktiv:`!border-text-2 bg-erhaben`,symbol:`group-data-[status=active]:text-foreground`}},pu={box:{text:`text-box-text`,balken:`bg-box`},homelab:{text:`text-lab-text`,balken:`bg-lab`}},mu=`group flex h-11 items-center gap-3 rounded-lg border-l-2 border-transparent pr-3 pl-3 text-[15px] text-text-2 hover:bg-erhaben hover:text-foreground`;function hu(){let e=(0,B.c)(2),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,A.jsx)(`img`,{src:`/favicon.svg`,alt:``,width:36,height:36,className:`size-9 shrink-0`}),e[0]=t):t=e[0];let n;return e[1]===Symbol.for(`react.memo_cache_sentinel`)?(n=(0,A.jsxs)(`div`,{className:`flex items-center gap-3 px-1`,children:[t,(0,A.jsxs)(`span`,{className:`flex flex-col leading-none`,children:[(0,A.jsx)(`span`,{className:`font-anzeige text-[22px] font-bold tracking-[0.06em]`,children:`Homelab`}),(0,A.jsx)(`span`,{className:`schild text-[13px] tracking-[0.22em] text-text-3`,children:`Orchestrator`})]})]}),e[1]=n):n=e[1],n}function gu(e){let t=(0,B.c)(21),{s:n,zahl:r,onGewaehlt:i}=e,o=fu[n.ort],s=n.to,c;t[0]===o.aktiv?c=t[1]:(c=a(o.aktiv,`!text-foreground`),t[0]=o.aktiv,t[1]=c);let l;t[2]===c?l=t[3]:(l={className:c},t[2]=c,t[3]=l);let u;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(u={exact:!0},t[4]=u):u=t[4];let d=n.Icon,f;t[5]===o.symbol?f=t[6]:(f=a(`size-[18px] shrink-0 text-text-3 group-hover:text-text-2`,o.symbol),t[5]=o.symbol,t[6]=f);let p;t[7]!==n.Icon||t[8]!==f?(p=(0,A.jsx)(d,{className:f,"aria-hidden":!0}),t[7]=n.Icon,t[8]=f,t[9]=p):p=t[9];let m;t[10]===n.label?m=t[11]:(m=(0,A.jsx)(`span`,{className:`flex-1`,children:n.label}),t[10]=n.label,t[11]=m);let h;t[12]===r?h=t[13]:(h=!!r&&(0,A.jsxs)(`span`,{className:`ziffern rounded-full border border-cyan-rand bg-cyan-grund px-2 text-xs leading-5 text-cyan`,children:[r,(0,A.jsxs)(`span`,{className:`sr-only`,children:[` `,r===1?`Update`:`Updates`,` bereit`]})]}),t[12]=r,t[13]=h);let g;return t[14]!==i||t[15]!==n.to||t[16]!==l||t[17]!==p||t[18]!==m||t[19]!==h?(g=(0,A.jsxs)(ea,{to:s,onClick:i,className:mu,activeProps:l,activeOptions:u,children:[p,m,h]}),t[14]=i,t[15]=n.to,t[16]=l,t[17]=p,t[18]=m,t[19]=h,t[20]=g):g=t[20],g}function _u(e){let t=(0,B.c)(15),{onDienste:n,onGewaehlt:r}=e,i=G(),o=Ys().data?.rolle!==`homelab`,s=vu,c;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(c=s(`/`),t[0]=c):c=t[0];let l;t[1]===r?l=t[2]:(l=(0,A.jsx)(gu,{s:c,onGewaehlt:r}),t[1]=r,t[2]=l);let u;t[3]!==o||t[4]!==n||t[5]!==r||t[6]!==i?(u=eu.map(e=>{let t=du[i[e.id].verbindung],s=pu[e.id];return(0,A.jsxs)(`section`,{"aria-label":e.name,className:`flex flex-col gap-1`,children:[(0,A.jsxs)(`div`,{className:`flex items-center justify-between gap-2 pr-3 pb-1.5`,children:[(0,A.jsxs)(`h2`,{className:a(`schild flex items-center gap-2.5 text-sm font-bold tracking-[0.24em]`,s.text),children:[(0,A.jsx)(`span`,{"aria-hidden":!0,className:a(`h-4 w-1 rounded-full`,s.balken)}),e.name]}),(0,A.jsxs)(`span`,{className:`flex items-center gap-1.5 text-xs text-text-3`,children:[(0,A.jsx)(`span`,{"aria-hidden":!0,className:a(`size-2 rounded-full`,t.punkt)}),t.text]})]}),tu.filter(t=>t.ort===e.id).map(t=>(0,A.jsx)(gu,{s:t,zahl:t.zaehlt?i[e.id].updates:0,onGewaehlt:r},t.to)),e.id===`box`&&(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)(`button`,{type:`button`,onClick:()=>{r?.(),n()},className:a(mu,`text-left`),children:[(0,A.jsx)(uo,{className:`size-[18px] shrink-0 text-text-3`,"aria-hidden":!0}),`Dienste und Protokolle`]}),o&&(0,A.jsxs)(`a`,{href:`/hermes-ui/`,target:`_blank`,rel:`noopener`,className:mu,children:[(0,A.jsx)(eo,{className:`size-[18px] shrink-0 text-text-3`,"aria-hidden":!0}),`Hermes-Dashboard`]})]})]},e.id)}),t[3]=o,t[4]=n,t[5]=r,t[6]=i,t[7]=u):u=t[7];let d;t[8]===Symbol.for(`react.memo_cache_sentinel`)?(d=s(`/einstellungen`),t[8]=d):d=t[8];let f;t[9]===r?f=t[10]:(f=(0,A.jsx)(`div`,{className:`mt-auto border-t border-linie pt-4`,children:(0,A.jsx)(gu,{s:d,onGewaehlt:r})}),t[9]=r,t[10]=f);let p;return t[11]!==l||t[12]!==u||t[13]!==f?(p=(0,A.jsxs)(`nav`,{"aria-label":`Hauptnavigation`,className:`flex flex-1 flex-col gap-6`,children:[l,u,f]}),t[11]=l,t[12]=u,t[13]=f,t[14]=p):p=t[14],p}function vu(e){return tu.find(t=>t.to===e)}var yu=`modulepreload`,bu=function(e){return`/`+e},xu={},Su=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=bu(t,n),t=s(t),t in xu)return;xu[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:yu,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}).filter(e=>e!==void 0))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},Cu=(0,k.lazy)(()=>Su(()=>import(`./Dienste-BGWmtSYR.js`).then(e=>({default:e.Dienste})),__vite__mapDeps([0,1,2,3,4]))),wu=(0,k.lazy)(()=>Su(()=>import(`./MenueSchublade-CC8GVOLn.js`).then(e=>({default:e.MenueSchublade})),__vite__mapDeps([5,1,3,2,4]))),Tu=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,timeZone:`Europe/Berlin`}),Eu=new Intl.DateTimeFormat(`de-DE`,{weekday:`short`,day:`2-digit`,month:`2-digit`,timeZone:`Europe/Berlin`});function Du(){let e=(0,B.c)(13),[t,n]=(0,k.useState)(Ou),r,i;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>{let e=window.setInterval(()=>n(new Date),2e4);return()=>window.clearInterval(e)},i=[],e[0]=r,e[1]=i):(r=e[0],i=e[1]),(0,k.useEffect)(r,i);let a;e[2]===t?a=e[3]:(a=Tu.format(t),e[2]=t,e[3]=a);let o;e[4]===a?o=e[5]:(o=(0,A.jsx)(`span`,{className:`ziffern text-2xl font-medium`,children:a}),e[4]=a,e[5]=o);let s;e[6]===t?s=e[7]:(s=Eu.format(t).replace(`,`,``),e[6]=t,e[7]=s);let c;e[8]===s?c=e[9]:(c=(0,A.jsx)(`span`,{className:`schild text-[13px] text-text-3`,children:s}),e[8]=s,e[9]=c);let l;return e[10]!==o||e[11]!==c?(l=(0,A.jsxs)(`div`,{className:`flex flex-col items-end leading-tight`,children:[o,c]}),e[10]=o,e[11]=c,e[12]=l):l=e[12],l}function Ou(){return new Date}function ku(){let e=(0,B.c)(14),t=rs(),n=t===`live`,r=n?`Verbunden`:t===`verbinde`?`Verbinde`:`Getrennt`,i=n?`text-text-3`:`text-bernstein`,o;e[0]===i?o=e[1]:(o=a(`schild flex items-center gap-1.5 text-[13px]`,i),e[0]=i,e[1]=o);let s=n?`bg-gruen shadow-[0_0_8px_rgba(61,220,138,0.7)]`:`bg-bernstein`,c;e[2]===s?c=e[3]:(c=a(`size-2 rounded-full`,s),e[2]=s,e[3]=c);let l;e[4]===c?l=e[5]:(l=(0,A.jsx)(`span`,{"aria-hidden":!0,className:c}),e[4]=c,e[5]=l);let u=n?`sr-only`:void 0,d=n?`Verbunden`:t===`verbinde`?`Verbinde`:`Getrennt`,f;e[6]!==u||e[7]!==d?(f=(0,A.jsx)(`span`,{className:u,children:d}),e[6]=u,e[7]=d,e[8]=f):f=e[8];let p;return e[9]!==r||e[10]!==o||e[11]!==l||e[12]!==f?(p=(0,A.jsxs)(`span`,{role:`status`,title:r,className:o,children:[l,f]}),e[9]=r,e[10]=o,e[11]=l,e[12]=f,e[13]=p):p=e[13],p}var Au={uebersicht:`text-bernstein`,box:`text-box-text`,homelab:`text-lab-text`,system:`text-text-3`};function ju(){let e=(0,B.c)(32);os();let[t,n]=(0,k.useState)(null),r;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=()=>n(null),e[0]=r):r=e[0];let i=r,o=ru(),s;e[1]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,A.jsx)(hu,{}),e[1]=s):s=e[1];let c;e[2]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,A.jsxs)(`aside`,{className:`sticky top-0 hidden h-dvh flex-col gap-8 overflow-y-auto border-r border-linie bg-[#0c0f12] px-4 py-7 lg:flex`,children:[s,(0,A.jsx)(_u,{onDienste:()=>n(`dienste`)})]}),e[2]=c):c=e[2];let l;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(l=()=>n(`menue`),e[3]=l):l=e[3];let u;e[4]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,A.jsx)(`button`,{type:`button`,onClick:l,className:`-ml-2 flex size-11 shrink-0 items-center justify-center rounded-lg text-text-2 hover:bg-erhaben hover:text-foreground lg:hidden`,"aria-label":`Menü öffnen`,children:(0,A.jsx)(oo,{className:`size-6`})}),e[4]=u):u=e[4];let d=Au[o.ort],f;e[5]===d?f=e[6]:(f=a(`schild text-[13px] tracking-[0.24em]`,d),e[5]=d,e[6]=f);let p=nu[o.ort],m;e[7]!==f||e[8]!==p?(m=(0,A.jsx)(`span`,{className:f,children:p}),e[7]=f,e[8]=p,e[9]=m):m=e[9];let h;e[10]===o.label?h=e[11]:(h=(0,A.jsx)(`h1`,{className:`font-anzeige text-[26px] leading-none font-bold tracking-[0.04em]`,children:o.label}),e[10]=o.label,e[11]=h);let g;e[12]!==m||e[13]!==h?(g=(0,A.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[u,(0,A.jsxs)(`div`,{className:`flex min-w-0 flex-col leading-tight`,children:[m,h]})]}),e[12]=m,e[13]=h,e[14]=g):g=e[14];let _;e[15]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,A.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,A.jsx)(`span`,{className:`lg:hidden`,children:(0,A.jsx)(ku,{})}),(0,A.jsx)(Du,{})]}),e[15]=_):_=e[15];let v;e[16]===g?v=e[17]:(v=(0,A.jsxs)(`header`,{className:`flex items-center justify-between gap-4`,children:[g,_]}),e[16]=g,e[17]=v);let y;e[18]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,A.jsx)(`main`,{className:`flex min-w-0 flex-col gap-5 md:gap-6`,children:(0,A.jsx)(ha,{})}),e[18]=y):y=e[18];let b;e[19]===v?b=e[20]:(b=(0,A.jsxs)(`div`,{className:`mx-auto flex w-full max-w-[1320px] min-w-0 flex-col gap-5 px-4 pt-4 pb-10 sm:px-6 md:gap-6 md:px-10 md:pt-8`,children:[v,y]}),e[19]=v,e[20]=b);let x;e[21]===t?x=e[22]:(x=t===`menue`&&(0,A.jsx)(wu,{onDienste:()=>n(`dienste`),onSchliessen:i}),e[21]=t,e[22]=x);let S;e[23]===t?S=e[24]:(S=t===`dienste`&&(0,A.jsx)(Cu,{offen:!0,onSchliessen:i}),e[23]=t,e[24]=S);let C;e[25]!==x||e[26]!==S?(C=(0,A.jsxs)(k.Suspense,{fallback:null,children:[x,S]}),e[25]=x,e[26]=S,e[27]=C):C=e[27];let w;e[28]===Symbol.for(`react.memo_cache_sentinel`)?(w=(0,A.jsx)(lu,{}),e[28]=w):w=e[28];let T;return e[29]!==b||e[30]!==C?(T=(0,A.jsxs)(`div`,{className:`min-h-dvh lg:grid lg:grid-cols-[272px_minmax(0,1fr)]`,children:[c,b,C,w]}),e[29]=b,e[30]=C,e[31]=T):T=e[31],T}var Mu={gruen:`border-gruen-rand bg-gruen-grund text-gruen`,bernstein:`border-bernstein/60 bg-bernstein-grund text-bernstein`,cyan:`border-cyan-rand bg-cyan-grund text-cyan`,rot:`border-rot-rand bg-rot-grund text-rot-text`,grau:`border-linie bg-erhaben text-text-2`};function Nu(e){let t=(0,B.c)(5),{art:n,children:r}=e,i=Mu[n===void 0?`grau`:n],o;t[0]===i?o=t[1]:(o=a(`schild inline-flex h-7 items-center rounded-full border px-2.5 text-xs whitespace-nowrap`,i),t[0]=i,t[1]=o);let s;return t[2]!==r||t[3]!==o?(s=(0,A.jsx)(`span`,{className:o,children:r}),t[2]=r,t[3]=o,t[4]=s):s=t[4],s}function Pu(e){let t=(0,B.c)(6),{fehler:n,text:r}=e,i=n?`alert`:`status`,o=n?`border-rot-rand bg-rot-grund text-rot-text`:`border-linie bg-panel text-text-2`,s;t[0]===o?s=t[1]:(s=a(`rounded-2xl border px-5 py-8 text-center text-[15px]`,o),t[0]=o,t[1]=s);let c;return t[2]!==i||t[3]!==s||t[4]!==r?(c=(0,A.jsx)(`div`,{role:i,className:s,children:r}),t[2]=i,t[3]=s,t[4]=r,t[5]=c):c=t[5],c}var Fu={erledigt:{text:`Erledigt`,farbe:`text-gruen`},fehler:{text:`Fehler`,farbe:`text-rot`},geplant:{text:`Geplant`,farbe:`text-text-3`}};function Iu(e){let t=(0,B.c)(18),{e:n}=e,r=Fu[n.status]??Fu.geplant,i=n.status===`geplant`&&/update/i.test(n.titel)?`text-cyan`:r.farbe,o;t[0]===n.zeit?o=t[1]:(o=hs(n.zeit),t[0]=n.zeit,t[1]=o);let s;t[2]===o?s=t[3]:(s=(0,A.jsx)(`span`,{className:`ziffern col-start-1 row-start-1 text-sm text-text-3`,children:o}),t[2]=o,t[3]=s);let c;t[4]===n.text?c=t[5]:(c=n.text&&(0,A.jsxs)(`span`,{className:`text-text-3`,children:[`, `,n.text]}),t[4]=n.text,t[5]=c);let l;t[6]!==n.titel||t[7]!==c?(l=(0,A.jsxs)(`span`,{className:`col-span-2 row-start-2 min-w-0 text-base break-words @sm:col-span-1 @sm:col-start-2 @sm:row-start-1`,children:[n.titel,c]}),t[6]=n.titel,t[7]=c,t[8]=l):l=t[8];let u;t[9]===i?u=t[10]:(u=a(`schild col-start-2 row-start-1 justify-self-end text-[13px] @sm:col-start-3`,i),t[9]=i,t[10]=u);let d;t[11]!==r.text||t[12]!==u?(d=(0,A.jsx)(`span`,{className:u,children:r.text}),t[11]=r.text,t[12]=u,t[13]=d):d=t[13];let f;return t[14]!==s||t[15]!==l||t[16]!==d?(f=(0,A.jsxs)(`li`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 border-t border-linie py-2.5 @sm:grid-cols-[112px_minmax(0,1fr)_auto]`,children:[s,l,d]}),t[14]=s,t[15]=l,t[16]=d,t[17]=f):f=t[17],f}function Lu(e){let t=(0,B.c)(6),{gelaufen:n,geplant:r}=e,i;t[0]!==n||t[1]!==r?(i=[...n,...r.slice(0,5)],t[0]=n,t[1]=r,t[2]=i):i=t[2];let a=i;if(a.length===0){let e;return t[3]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,A.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Heute ist noch nichts gelaufen, und nichts ist geplant.`}),t[3]=e):e=t[3],e}let o;return t[4]===a?o=t[5]:(o=(0,A.jsx)(`ol`,{className:`@container m-0 flex list-none flex-col p-0`,children:a.map(Ru)}),t[4]=a,t[5]=o),o}function Ru(e){return(0,A.jsx)(Iu,{e},`${e.titel}-${e.zeit}`)}function zu(e){let t=(0,B.c)(11),{titel:n,rechts:r,children:i,className:o,id:s}=e,c;t[0]===o?c=t[1]:(c=a(`flex min-w-0 flex-col gap-4 rounded-2xl border border-linie bg-panel p-5 sm:p-6`,o),t[0]=o,t[1]=c);let l;t[2]!==r||t[3]!==n?(l=(n||r)&&(0,A.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[n&&(0,A.jsx)(`h2`,{className:`schild text-lg font-bold tracking-[0.22em] text-foreground`,children:n}),r]}),t[2]=r,t[3]=n,t[4]=l):l=t[4];let u;return t[5]!==i||t[6]!==s||t[7]!==c||t[8]!==l||t[9]!==n?(u=(0,A.jsxs)(`section`,{id:s,"aria-label":n,className:c,children:[l,i]}),t[5]=i,t[6]=s,t[7]=c,t[8]=l,t[9]=n,t[10]=u):u=t[10],u}var Bu=new Intl.NumberFormat(`de-DE`,{maximumFractionDigits:1}),Vu=new Intl.NumberFormat(`de-DE`,{maximumFractionDigits:0});function Hu(e){return e<1e3?`${Vu.format(e)} B/s`:e<1e6?`${Bu.format(e/1e3)} KB/s`:e<1e9?`${Bu.format(e/1e6)} MB/s`:`${Bu.format(e/1e9)} GB/s`}function Uu(e,t){return e==null||Number.isNaN(e)?`–`:t===`prozent`?`${Vu.format(e)} %`:t===`grad`?`${Vu.format(e)} °C`:t===`bytes_s`?Hu(e):Vu.format(e)}function Wu(e){if(!e)return null;for(let t=e.length-1;t>=0;t--){let n=e[t][1];if(n!==null)return n}return null}function Gu(e,t){if(t===`prozent`)return 100;let n=0;for(let t of e)for(let[,e]of t??[])e!==null&&e>n&&(n=e);if(t===`grad`)return Math.max(60,Math.ceil((n+5)/10)*10);if(n<=0)return 1;let r=10**Math.floor(Math.log10(n));for(let e of[1,2,2.5,5,10])if(e*r>=n)return e*r;return 10*r}function Ku(e,t,n){return e===null?`ruhig`:e>=n?`rot`:e>=t?`gelb`:`ruhig`}var qu=new Intl.DateTimeFormat(`de-DE`,{hour:`2-digit`,minute:`2-digit`,timeZone:`Europe/Berlin`}),Ju=new Intl.DateTimeFormat(`de-DE`,{weekday:`short`,hour:`2-digit`,minute:`2-digit`,timeZone:`Europe/Berlin`});function Yu(e,t){let n=new Date(e*1e3);return(t?Ju:qu).format(n).replace(`,`,``)}function Xu(e){if(!e||e<0)return`–`;let t=Math.floor(e/86400),n=Math.floor(e%86400/3600),r=Math.floor(e%3600/60);return t>0?`${t} T ${n} h`:n>0?`${n} h ${r} min`:`${r} min`}function Zu(e,t,n){let r=``,i=!1;for(let[a,o]of e){if(o===null){i=!1;continue}r+=`${i?`L`:`M`}${t(a).toFixed(1)},${n(o).toFixed(1)}`,i=!0}return r}function Qu(e,t,n,r){let i=``,a=[],o=()=>{a.length>1&&(i+=`M${a[0][0].toFixed(1)},${r}`+a.map(([e,t])=>`L${e.toFixed(1)},${t.toFixed(1)}`).join(``)+`L${a[a.length-1][0].toFixed(1)},${r}Z`),a=[]};for(let[r,i]of e)i===null?o():a.push([t(r),n(i)]);return o(),i}function $u(e){let t=(0,B.c)(22),{punkte:n,max:r,farbe:i,hoehe:a,beschriftung:o}=e,s=i===void 0?`var(--reihe-1)`:i,c=a===void 0?36:a,l=n[0]?.[0]??0,u=n[n.length-1]?.[0]??1,d;t[0]!==l||t[1]!==u?(d=e=>u>l?(e-l)/(u-l)*100:0,t[0]=l,t[1]=u,t[2]=d):d=t[2];let f=d,p;t[3]!==c||t[4]!==r?(p=e=>c-2-Math.min(e,r)/(r||1)*(c-4),t[3]=c,t[4]=r,t[5]=p):p=t[5];let m=p,h;t[6]===n?h=t[7]:(h=n.some(K),t[6]=n,t[7]=h);let g=h,_=`0 0 100 ${c}`,v;t[8]===c?v=t[9]:(v={height:c},t[8]=c,t[9]=v);let y;t[10]!==s||t[11]!==g||t[12]!==c||t[13]!==n||t[14]!==f||t[15]!==m?(y=g&&(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(`path`,{d:Qu(n,f,m,c),fill:s,opacity:.12}),(0,A.jsx)(`path`,{d:Zu(n,f,m),fill:`none`,stroke:s,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`,vectorEffect:`non-scaling-stroke`})]}),t[10]=s,t[11]=g,t[12]=c,t[13]=n,t[14]=f,t[15]=m,t[16]=y):y=t[16];let b;return t[17]!==o||t[18]!==_||t[19]!==v||t[20]!==y?(b=(0,A.jsx)(`svg`,{role:`img`,"aria-label":o,viewBox:_,preserveAspectRatio:`none`,className:`block w-full`,style:v,children:y}),t[17]=o,t[18]=_,t[19]=v,t[20]=y,t[21]=b):b=t[21],b}function K(e){let[,t]=e;return t!==null}var q={ruhig:{wert:`text-foreground`,marke:null},gelb:{wert:`text-bernstein`,marke:`hoch`},rot:{wert:`text-rot-text`,marke:`kritisch`}};function J(e){let t=(0,B.c)(29),{label:n,wert:r,einheit:i,punkte:o,max:s,zustand:c,farbe:l,zeitraumText:u}=e,d=q[c===void 0?`ruhig`:c],f;t[0]===n?f=t[1]:(f=(0,A.jsx)(`span`,{className:`schild text-xs tracking-[0.18em] text-text-3`,children:n}),t[0]=n,t[1]=f);let p;t[2]===d.wert?p=t[3]:(p=a(`font-anzeige text-[28px] leading-none font-bold`,d.wert),t[2]=d.wert,t[3]=p);let m;t[4]!==i||t[5]!==r?(m=Uu(r,i),t[4]=i,t[5]=r,t[6]=m):m=t[6];let h;t[7]!==p||t[8]!==m?(h=(0,A.jsx)(`span`,{className:p,children:m}),t[7]=p,t[8]=m,t[9]=h):h=t[9];let g;t[10]!==d.marke||t[11]!==d.wert?(g=d.marke&&(0,A.jsx)(`span`,{className:a(`schild text-[11px]`,d.wert),children:d.marke}),t[10]=d.marke,t[11]=d.wert,t[12]=g):g=t[12];let _;t[13]!==h||t[14]!==g?(_=(0,A.jsxs)(`span`,{className:`flex items-baseline gap-2`,children:[h,g]}),t[13]=h,t[14]=g,t[15]=_):_=t[15];let v;t[16]!==l||t[17]!==n||t[18]!==s||t[19]!==o||t[20]!==u?(v=o&&o.length>1&&(0,A.jsx)($u,{punkte:o,max:s,farbe:l,beschriftung:`${n}, ${u}`}),t[16]=l,t[17]=n,t[18]=s,t[19]=o,t[20]=u,t[21]=v):v=t[21];let y;t[22]===o?y=t[23]:(y=o&&o.length<=1&&(0,A.jsx)(`span`,{className:`h-9`,"aria-hidden":!0}),t[22]=o,t[23]=y);let b;return t[24]!==f||t[25]!==_||t[26]!==v||t[27]!==y?(b=(0,A.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1.5 rounded-xl border border-linie bg-erhaben/50 px-3.5 pt-3 pb-2`,children:[f,_,v,y]}),t[24]=f,t[25]=_,t[26]=v,t[27]=y,t[28]=b):b=t[28],b}function Y(e){if(e.aktion)return null;let t=e.grund??``,n=t.match(/erst ab (\d{2}\.\d{2}\.(?:\d{4})? ?\d{2}:\d{2})/)?.[1];return n?`ab ${n}`:/eigene Oberfläche|eigenen Oberfläche|eigenes Update/i.test(t)?`über die App`:null}function X(e){let t=e.bausteine.filter(e=>e.zustand===`neu`);if(t.length===0)return null;let n=[],r=Bl(e);if(r?.zustand===`neu`){let e=Y(r);n.push(`App → ${r.verfuegbar??`neu`}${e?` (${e})`:``}`)}let i=Vl(e);i?.zustand===`neu`&&n.push(i.kurz||(i.id===`docker`?`Images`:`Pakete`));for(let e of t)e!==r&&e!==i&&n.push(`${e.name}${e.kurz?` · ${e.kurz}`:``}`);return{id:e.id,name:e.name,teile:n,knopf:t.some(e=>!!e.aktion)}}function ed(e){return e.bausteine.filter(e=>e.zustand===`neu`).map(t=>({id:`${e.id}-${t.id}`,name:t.name,teile:[t.kurz||t.verfuegbar||`neu`],knopf:!!t.aktion}))}function td(e){let t=e.flatMap(e=>e.art===`ki-box`?ed(e):[X(e)]).filter(e=>e!==null);return[...t.filter(e=>e.knopf),...t.filter(e=>!e.knopf)]}function nd(e){return e.getrennt.length>0?{stufe:`rot`,titel:`Verbindung weg`,text:`${e.getrennt.join(` und `)} antwortet nicht.`}:e.stumm.length>0||e.hinweiseRot>0?{stufe:`rot`,titel:`Störung`,text:`${e.stumm.length>0?`${e.stumm.join(`, `)} antwortet nicht`:`Ein roter Hinweis wartet`}.`}:e.hinweise>0?{stufe:`gelb`,titel:e.hinweise===1?`1 Hinweis`:`${e.hinweise} Hinweise`,text:`Bei Gelegenheit ansehen.`}:e.updates>0?{stufe:`info`,titel:`Alles läuft`,text:`${e.updates} ${e.updates===1?`Update steht`:`Updates stehen`} bereit.`}:{stufe:`ok`,titel:`Alles läuft`,text:`Keine Hinweise, keine offenen Updates.`}}var rd={ok:{rahmen:`border-gruen-rand bg-gruen-grund`,titel:`text-gruen`,Symbol:Xa},info:{rahmen:`border-cyan-rand bg-cyan-grund`,titel:`text-cyan`,Symbol:co},gelb:{rahmen:`border-bernstein/70 bg-bernstein-grund`,titel:`text-bernstein`,Symbol:Ja},rot:{rahmen:`border-rot bg-rot-grund`,titel:`text-rot`,Symbol:Ja}};function id(e){let t=(0,B.c)(17),{label:n,wert:r,zusatz:i,art:o}=e,s,c,l;t[0]!==o||t[1]!==n?(c=`flex min-w-0 flex-col gap-1 rounded-xl border border-linie bg-panel/70 px-4 py-3`,t[5]===n?l=t[6]:(l=(0,A.jsx)(`span`,{className:`schild text-xs tracking-[0.18em] text-text-3`,children:n}),t[5]=n,t[6]=l),s=a(`font-anzeige text-[32px] leading-none font-bold`,{gruen:`text-gruen`,bernstein:`text-bernstein`,cyan:`text-cyan`,rot:`text-rot-text`,grau:`text-foreground`}[o]),t[0]=o,t[1]=n,t[2]=s,t[3]=c,t[4]=l):(s=t[2],c=t[3],l=t[4]);let u;t[7]!==s||t[8]!==r?(u=(0,A.jsx)(`span`,{className:s,children:r}),t[7]=s,t[8]=r,t[9]=u):u=t[9];let d;t[10]===i?d=t[11]:(d=i&&(0,A.jsx)(`span`,{className:`truncate text-xs text-text-3`,children:i}),t[10]=i,t[11]=d);let f;return t[12]!==c||t[13]!==l||t[14]!==u||t[15]!==d?(f=(0,A.jsxs)(`div`,{className:c,children:[l,u,d]}),t[12]=c,t[13]=l,t[14]=u,t[15]=d,t[16]=f):f=t[16],f}var ad={online:`bg-gruen shadow-[0_0_8px_rgba(61,220,138,0.7)]`,verbinde:`bg-bernstein`,getrennt:`bg-rot`,fehlt:`bg-text-3`},od={online:`online`,verbinde:`verbinde`,getrennt:`getrennt`,fehlt:`nicht eingerichtet`};function sd(e){let t=(0,B.c)(43),{bereich:n,name:r,verbindung:i,cockpit:o,children:s}=e,c,l,u,d,f,p,m,h,g;if(t[0]!==n||t[1]!==o||t[2]!==r){let e=n===`box`?{rand:`border-box-rand`,kopf:`from-box-grund`,text:`text-box-text`,balken:`bg-box`}:{rand:`border-lab-rand`,kopf:`from-lab-grund`,text:`text-lab-text`,balken:`bg-lab`};h=r,g=a(`flex min-w-0 flex-col overflow-hidden rounded-2xl border bg-panel`,e.rand),c=ea,p=o,m=a(`group flex items-center justify-between gap-3 bg-gradient-to-r to-transparent px-5 py-4 sm:px-6`,e.kopf),d=`flex items-center gap-3`,f=(0,A.jsx)(`span`,{"aria-hidden":!0,className:a(`h-7 w-1.5 rounded-full`,e.balken)}),u=`flex flex-col leading-tight`,l=a(`schild text-lg font-bold tracking-[0.22em]`,e.text),t[0]=n,t[1]=o,t[2]=r,t[3]=c,t[4]=l,t[5]=u,t[6]=d,t[7]=f,t[8]=p,t[9]=m,t[10]=h,t[11]=g}else c=t[3],l=t[4],u=t[5],d=t[6],f=t[7],p=t[8],m=t[9],h=t[10],g=t[11];let _;t[12]!==r||t[13]!==l?(_=(0,A.jsx)(`span`,{className:l,children:r}),t[12]=r,t[13]=l,t[14]=_):_=t[14];let v=ad[i],y;t[15]===v?y=t[16]:(y=a(`size-2 rounded-full`,v),t[15]=v,t[16]=y);let b;t[17]===y?b=t[18]:(b=(0,A.jsx)(`span`,{"aria-hidden":!0,className:y}),t[17]=y,t[18]=b);let x=od[i],S;t[19]!==b||t[20]!==x?(S=(0,A.jsxs)(`span`,{className:`flex items-center gap-1.5 text-xs text-text-3`,children:[b,x]}),t[19]=b,t[20]=x,t[21]=S):S=t[21];let C;t[22]!==S||t[23]!==u||t[24]!==_?(C=(0,A.jsxs)(`span`,{className:u,children:[_,S]}),t[22]=S,t[23]=u,t[24]=_,t[25]=C):C=t[25];let w;t[26]!==C||t[27]!==d||t[28]!==f?(w=(0,A.jsxs)(`span`,{className:d,children:[f,C]}),t[26]=C,t[27]=d,t[28]=f,t[29]=w):w=t[29];let T;t[30]===Symbol.for(`react.memo_cache_sentinel`)?(T=(0,A.jsxs)(`span`,{className:`flex items-center gap-1.5 text-sm text-text-2 group-hover:text-foreground`,children:[`Cockpit `,(0,A.jsx)(Ka,{className:`size-4 transition-transform group-hover:translate-x-0.5`,"aria-hidden":!0})]}),t[30]=T):T=t[30];let E;t[31]!==c||t[32]!==w||t[33]!==p||t[34]!==m?(E=(0,A.jsxs)(c,{to:p,className:m,children:[w,T]}),t[31]=c,t[32]=w,t[33]=p,t[34]=m,t[35]=E):E=t[35];let D;t[36]===s?D=t[37]:(D=(0,A.jsx)(`div`,{className:`flex flex-col gap-5 px-5 pt-1 pb-5 sm:px-6`,children:s}),t[36]=s,t[37]=D);let O;return t[38]!==E||t[39]!==D||t[40]!==h||t[41]!==g?(O=(0,A.jsxs)(`section`,{"aria-label":h,className:g,children:[E,D]}),t[38]=E,t[39]=D,t[40]=h,t[41]=g,t[42]=O):O=t[42],O}function cd(e){let t=(0,B.c)(5),{titel:n,rechts:r}=e,i;t[0]===n?i=t[1]:(i=(0,A.jsx)(`h3`,{className:`schild text-sm tracking-[0.2em] text-text-2`,children:n}),t[0]=n,t[1]=i);let a;return t[2]!==r||t[3]!==i?(a=(0,A.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[i,r]}),t[2]=r,t[3]=i,t[4]=a):a=t[4],a}function ld(e){let t=(0,B.c)(13),{zeilen:n,ziel:r,laedt:i,alleAktuell:o}=e,s;t[0]===n?s=t[1]:(s=n.filter(ud),t[0]=n,t[1]=s);let c=s.length,l;t[2]!==c||t[3]!==n.length?(l=(0,A.jsx)(cd,{titel:`Updates`,rechts:c>0?(0,A.jsxs)(Nu,{art:`cyan`,children:[c,` bereit`]}):n.length>0?(0,A.jsx)(Nu,{children:`wartet`}):(0,A.jsx)(Nu,{art:`gruen`,children:`aktuell`})}),t[2]=c,t[3]=n.length,t[4]=l):l=t[4];let u;t[5]!==o||t[6]!==i||t[7]!==n||t[8]!==r?(u=i?(0,A.jsx)(`p`,{className:`text-sm text-text-3`,children:`Wird gelesen …`}):n.length===0?(0,A.jsxs)(`p`,{className:`flex items-center gap-2 text-sm text-gruen-text`,children:[(0,A.jsx)(Xa,{className:`size-4`,"aria-hidden":!0}),o]}):(0,A.jsx)(`ul`,{className:`m-0 flex list-none flex-col p-0`,children:n.map(e=>(0,A.jsx)(`li`,{children:(0,A.jsxs)(ea,{to:r,className:`group -mx-2 grid grid-cols-[minmax(0,9rem)_minmax(0,1fr)_auto] items-baseline gap-3 rounded-lg px-2 py-1.5 hover:bg-erhaben`,children:[(0,A.jsx)(`span`,{className:`truncate text-[15px] font-medium`,children:e.name}),(0,A.jsx)(`span`,{className:a(`min-w-0 text-sm`,e.knopf?`text-cyan`:`text-text-3`),children:e.teile.join(` · `)}),(0,A.jsx)(Ka,{className:`size-3.5 self-center text-text-3 opacity-0 group-hover:opacity-100`,"aria-hidden":!0})]})},e.id))}),t[5]=o,t[6]=i,t[7]=n,t[8]=r,t[9]=u):u=t[9];let d;return t[10]!==l||t[11]!==u?(d=(0,A.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[l,u]}),t[10]=l,t[11]=u,t[12]=d):d=t[12],d}function ud(e){return e.knopf}function dd(e){let t=(0,B.c)(18),{hinweise:n,ziel:r}=e;if(n.length===0)return null;let i,o,s,c;if(t[0]!==n||t[1]!==r){let e=[...n].sort(pd);s=`flex flex-col gap-2`;let l=n.some(fd)?`rot`:`bernstein`;t[6]!==n.length||t[7]!==l?(c=(0,A.jsx)(cd,{titel:`Hinweise`,rechts:(0,A.jsx)(Nu,{art:l,children:n.length})}),t[6]=n.length,t[7]=l,t[8]=c):c=t[8],i=`m-0 flex list-none flex-col gap-1 p-0`;let u;t[9]===r?u=t[10]:(u=e=>(0,A.jsx)(`li`,{children:(0,A.jsxs)(ea,{to:r,className:`-mx-2 flex items-start gap-2 rounded-lg px-2 py-1.5 hover:bg-erhaben`,children:[(0,A.jsx)(`span`,{"aria-hidden":!0,className:a(`mt-1.5 size-2 shrink-0 rounded-full`,e.stufe===`rot`?`bg-rot`:`bg-bernstein`)}),(0,A.jsx)(`span`,{className:a(`text-sm`,e.stufe===`rot`?`text-rot-text`:`text-bernstein`),children:e.titel})]})},e.id),t[9]=r,t[10]=u),o=e.slice(0,3).map(u),t[0]=n,t[1]=r,t[2]=i,t[3]=o,t[4]=s,t[5]=c}else i=t[2],o=t[3],s=t[4],c=t[5];let l;t[11]!==i||t[12]!==o?(l=(0,A.jsx)(`ul`,{className:i,children:o}),t[11]=i,t[12]=o,t[13]=l):l=t[13];let u;return t[14]!==s||t[15]!==c||t[16]!==l?(u=(0,A.jsxs)(`div`,{className:s,children:[c,l]}),t[14]=s,t[15]=c,t[16]=l,t[17]=u):u=t[17],u}function fd(e){return e.stufe===`rot`}function pd(e,t){return Number(t.stufe===`rot`)-Number(e.stufe===`rot`)}function md(e){let t=(0,B.c)(4),{werte:n}=e,r;t[0]===n?r=t[1]:(r=n.map(hd),t[0]=n,t[1]=r);let i;return t[2]===r?i=t[3]:(i=(0,A.jsx)(`div`,{className:`grid grid-cols-2 gap-2.5 sm:grid-cols-4 xl:grid-cols-2 2xl:grid-cols-4`,children:r}),t[2]=r,t[3]=i),i}function hd(e){return(0,A.jsx)(J,{label:e.label,wert:e.wert,einheit:e.einheit,punkte:e.punkte,max:(e.einheit,100),zustand:Ku(e.wert??null,e.gelb,e.rot),zeitraumText:`letzte Stunde`},e.label)}function gd(e){let t=(0,B.c)(33),{verbindung:n}=e,r=ws(),i=Zs(),a=uc(`1h`),o=is(),s=a.data?.reihen,c=r.data?.box,l=o?.ram??(c?.ram_used&&c.ram_total?c.ram_used/c.ram_total*100:null),u=o?.cpu??a.data?.aktuell.cpu,d=s?.cpu,f;t[0]!==u||t[1]!==d?(f={label:`CPU`,wert:u,einheit:`prozent`,punkte:d,gelb:85,rot:95},t[0]=u,t[1]=d,t[2]=f):f=t[2];let p=s?.ram,m;t[3]!==l||t[4]!==p?(m={label:`Speicher`,wert:l,einheit:`prozent`,punkte:p,gelb:85,rot:95},t[3]=l,t[4]=p,t[5]=m):m=t[5];let h=o?.temp_cpu??c?.temp_cpu,g=s?.temp_cpu,_;t[6]!==h||t[7]!==g?(_={label:`Temperatur`,wert:h,einheit:`grad`,punkte:g,gelb:80,rot:90},t[6]=h,t[7]=g,t[8]=_):_=t[8];let v=o?.disk??c?.platte?.percent,y=s?.platte,b;t[9]!==y||t[10]!==v?(b={label:`Platte`,wert:v,einheit:`prozent`,punkte:y,gelb:80,rot:90},t[9]=y,t[10]=v,t[11]=b):b=t[11];let x;t[12]!==b||t[13]!==f||t[14]!==m||t[15]!==_?(x=(0,A.jsx)(md,{werte:[f,m,_,b]}),t[12]=b,t[13]=f,t[14]=m,t[15]=_,t[16]=x):x=t[16];let S;t[17]===i.data?.ziele?S=t[18]:(S=i.data?.ziele??[],t[17]=i.data?.ziele,t[18]=S);let C;t[19]===S?C=t[20]:(C=td(S),t[19]=S,t[20]=C);let w;t[21]!==C||t[22]!==i.isPending?(w=(0,A.jsx)(ld,{zeilen:C,ziel:`/box/updates`,laedt:i.isPending,alleAktuell:`Betriebssystem, Motor, llama-swap und Hermes sind aktuell.`}),t[21]=C,t[22]=i.isPending,t[23]=w):w=t[23];let T;t[24]===r.data?.hinweise?T=t[25]:(T=r.data?.hinweise??[],t[24]=r.data?.hinweise,t[25]=T);let E;t[26]===T?E=t[27]:(E=(0,A.jsx)(dd,{hinweise:T,ziel:`/box`}),t[26]=T,t[27]=E);let D;return t[28]!==x||t[29]!==w||t[30]!==E||t[31]!==n?(D=(0,A.jsxs)(sd,{bereich:`box`,name:`KI-Box`,verbindung:n,cockpit:`/box`,children:[x,w,E]}),t[28]=x,t[29]=w,t[30]=E,t[31]=n,t[32]=D):D=t[32],D}function _d(e){let t=(0,B.c)(14),{verbindung:n}=e,r=n===`online`,i=Qs(r),a=tc(r),o=dc(`1h`,r),s;t[0]===o.data?.geraete?s=t[1]:(s=o.data?.geraete.find(vd),t[0]=o.data?.geraete,t[1]=s);let c=s,l;t[2]===i.data?.ziele?l=t[3]:(l=i.data?.ziele??[],t[2]=i.data?.ziele,t[3]=l);let u=l,d;t[4]!==r||t[5]!==a||t[6]!==i.isPending||t[7]!==c?.aktuell||t[8]!==c?.reihen||t[9]!==u?(d=r?(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,A.jsx)(cd,{titel:`Proxmox-Host`}),(0,A.jsx)(md,{werte:[{label:`CPU`,wert:c?.aktuell.cpu,einheit:`prozent`,punkte:c?.reihen.cpu,gelb:85,rot:95},{label:`Speicher`,wert:c?.aktuell.ram,einheit:`prozent`,punkte:c?.reihen.ram,gelb:90,rot:95},{label:`Temperatur`,wert:c?.aktuell.temp_cpu,einheit:`grad`,punkte:c?.reihen.temp_cpu,gelb:80,rot:90},{label:`Platte`,wert:c?.aktuell.platte,einheit:`prozent`,punkte:c?.reihen.platte,gelb:80,rot:90}]})]}),(0,A.jsx)(ld,{zeilen:td(u),ziel:`/homelab/updates`,laedt:i.isPending,alleAktuell:`Alle Geräte sind aktuell.`}),(0,A.jsx)(dd,{hinweise:a.data?.hinweise??[],ziel:`/homelab`})]}):(0,A.jsx)(`p`,{className:`text-sm text-text-2`,children:`Der Homelab-Teil antwortet gerade nicht; die Karte zeigt nichts Veraltetes.`}),t[4]=r,t[5]=a,t[6]=i.isPending,t[7]=c?.aktuell,t[8]=c?.reihen,t[9]=u,t[10]=d):d=t[10];let f;return t[11]!==d||t[12]!==n?(f=(0,A.jsx)(sd,{bereich:`homelab`,name:`Homelab`,verbindung:n,cockpit:`/homelab`,children:d}),t[11]=d,t[12]=n,t[13]=f):f=t[13],f}function vd(e){return e.art===`proxmox-host`}var yd={eingespielt:`gruen`,gruen:`gruen`,zurueckgerollt:`bernstein`,gelb:`bernstein`,fehler:`rot`,rot:`rot`,neustart:`cyan`,info:`cyan`,aufgeraeumt:`gruen`};function bd(e){let t=(0,B.c)(9),{homelabAktiv:n}=e,r=js(),i=$s(n),a,o,s;if(t[0]!==r.data?.laeufe||t[1]!==i.data?.laeufe){s=Symbol.for(`react.early_return_sentinel`);bb0:{let e=[...(r.data?.laeufe??[]).slice(0,6).map(Td),...(i.data?.laeufe??[]).filter(wd).slice(0,6).map(Cd)].sort(Sd).slice(0,6);if(e.length===0){let e;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,A.jsx)(`p`,{className:`text-[15px] text-text-2`,children:`Noch keine Updates aufgezeichnet.`}),t[5]=e):e=t[5],s=e;break bb0}a=`@container m-0 flex list-none flex-col p-0`,o=e.map(xd)}t[0]=r.data?.laeufe,t[1]=i.data?.laeufe,t[2]=a,t[3]=o,t[4]=s}else a=t[2],o=t[3],s=t[4];if(s!==Symbol.for(`react.early_return_sentinel`))return s;let c;return t[6]!==a||t[7]!==o?(c=(0,A.jsx)(`ol`,{className:a,children:o}),t[6]=a,t[7]=o,t[8]=c):c=t[8],c}function xd(e){return(0,A.jsxs)(`li`,{className:`grid grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 border-t border-linie py-2.5 first:border-t-0 @md:grid-cols-[112px_minmax(0,1fr)_auto]`,children:[(0,A.jsx)(`span`,{className:`ziffern col-start-1 row-start-1 text-sm text-text-3`,children:hs(new Date(e.zeit).toISOString())}),(0,A.jsxs)(`span`,{className:`col-span-2 row-start-2 min-w-0 text-[15px] @md:col-span-1 @md:col-start-2 @md:row-start-1`,children:[(0,A.jsx)(`span`,{className:a(`schild mr-2 text-[11px]`,e.bereich===`KI-Box`?`text-box-text`:`text-lab-text`),children:e.bereich}),e.titel]}),(0,A.jsx)(`span`,{className:`col-start-2 row-start-1 justify-self-end @md:col-start-3`,children:(0,A.jsx)(Nu,{art:e.art,children:e.chip})})]},`${e.bereich}-${e.zeit}-${e.titel}`)}function Sd(e,t){return t.zeit-e.zeit}function Cd(e){return{zeit:e.start*1e3,bereich:`Homelab`,titel:e.name,chip:e.ergebnis??`unterbrochen`,art:(e.ergebnis?yd[e.ergebnis]:`grau`)??`grau`}}function wd(e){return e.status!==`laeuft`}function Td(e){return{zeit:new Date(e.start).getTime(),bereich:`KI-Box`,titel:e.anlass,chip:e.titel,art:yd[e.stufe]??`grau`}}function Ed(){let e=(0,B.c)(92),t=G(),n=ws(),r=t.homelab.verbindung===`online`,i=Qs(r),o=tc(r);if(n.isPending&&!n.data){let t;return e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,A.jsx)(Pu,{text:`Die Übersicht sammelt sich gleich …`}),e[0]=t):t=e[0],t}let s,c,l;if(e[1]!==i.data?.ziele||e[2]!==o.data?.hinweise||e[3]!==t.box.updates||e[4]!==t.box.verbindung||e[5]!==t.homelab.updates||e[6]!==t.homelab.verbindung||e[7]!==n.data?.hinweise||e[8]!==n.isError){let r=[...t.box.verbindung===`getrennt`&&n.isError?[`Die KI-Box`]:[],...t.homelab.verbindung===`getrennt`?[`Der Homelab-Teil`]:[]],a=(i.data?.ziele??[]).filter(jd).map(Ad),u;e[12]===n.data?.hinweise?u=e[13]:(u=n.data?.hinweise??[],e[12]=n.data?.hinweise,e[13]=u);let d;e[14]===o.data?.hinweise?d=e[15]:(d=o.data?.hinweise??[],e[14]=o.data?.hinweise,e[15]=d);let f;e[16]!==u||e[17]!==d?(f=[...u,...d],e[16]=u,e[17]=d,e[18]=f):f=e[18],s=f,l=t.box.updates+t.homelab.updates;let p;e[19]===s?p=e[20]:(p=s.filter(kd),e[19]=s,e[20]=p),c=nd({getrennt:r,stumm:a,hinweiseRot:p.length,hinweise:s.length,updates:l}),e[1]=i.data?.ziele,e[2]=o.data?.hinweise,e[3]=t.box.updates,e[4]=t.box.verbindung,e[5]=t.homelab.updates,e[6]=t.homelab.verbindung,e[7]=n.data?.hinweise,e[8]=n.isError,e[9]=s,e[10]=c,e[11]=l}else s=e[9],c=e[10],l=e[11];let u=c,d=rd[u.stufe],f;e[21]===i.data?.ziele?f=e[22]:(f=i.data?.ziele??[],e[21]=i.data?.ziele,e[22]=f);let p=f,m;e[23]===p?m=e[24]:(m=p.filter(Od),e[23]=p,e[24]=m);let h=m.length+ +(t.box.verbindung===`online`),g=p.length+1,_=n.data?.flugplan.geplant[0],v;e[25]===d.rahmen?v=e[26]:(v=a(`grid gap-4 rounded-2xl border p-4 sm:p-5 lg:grid-cols-[minmax(0,1fr)_minmax(0,1.6fr)] lg:items-center`,d.rahmen),e[25]=d.rahmen,e[26]=v);let y=d.Symbol,b;e[27]===d.titel?b=e[28]:(b=a(`size-10 shrink-0`,d.titel),e[27]=d.titel,e[28]=b);let x;e[29]!==d.Symbol||e[30]!==b?(x=(0,A.jsx)(y,{className:b,"aria-hidden":!0}),e[29]=d.Symbol,e[30]=b,e[31]=x):x=e[31];let S;e[32]===d.titel?S=e[33]:(S=a(`font-anzeige text-[34px] leading-none font-bold tracking-[0.02em]`,d.titel),e[32]=d.titel,e[33]=S);let C;e[34]!==u.titel||e[35]!==S?(C=(0,A.jsx)(`span`,{className:S,children:u.titel}),e[34]=u.titel,e[35]=S,e[36]=C):C=e[36];let w;e[37]===u.text?w=e[38]:(w=(0,A.jsx)(`span`,{className:`text-[15px] text-text-2`,children:u.text}),e[37]=u.text,e[38]=w);let T;e[39]!==C||e[40]!==w?(T=(0,A.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[C,w]}),e[39]=C,e[40]=w,e[41]=T):T=e[41];let E;e[42]!==x||e[43]!==T?(E=(0,A.jsxs)(`div`,{className:`flex items-center gap-4 px-1`,children:[x,T]}),e[42]=x,e[43]=T,e[44]=E):E=e[44];let D=String(l),O=l?`cyan`:`gruen`,ee=`KI-Box ${t.box.updates} · Homelab ${t.homelab.updates}`,te;e[45]!==D||e[46]!==O||e[47]!==ee?(te=(0,A.jsx)(id,{label:`Updates bereit`,wert:D,art:O,zusatz:ee}),e[45]=D,e[46]=O,e[47]=ee,e[48]=te):te=e[48];let ne=String(s.length),re=s.some(Dd)?`rot`:s.length?`bernstein`:`gruen`,ie;e[49]!==ne||e[50]!==re?(ie=(0,A.jsx)(id,{label:`Hinweise`,wert:ne,art:re}),e[49]=ne,e[50]=re,e[51]=ie):ie=e[51];let ae=`${h}/${g}`,k=h(0,A.jsx)(Li,{to:`/`})}),Nd=ra({getParentRoute:()=>Md,path:`/`,component:Ed}),Pd=ra({getParentRoute:()=>Md,path:`/box`,component:R(()=>Su(()=>import(`./Start-DEaEpevw.js`),__vite__mapDeps([6,1,2,7])),`StartSeite`)}),Fd=ra({getParentRoute:()=>Md,path:`/box/updates`,component:R(()=>Su(()=>import(`./Updates-DhRqQqvO.js`),__vite__mapDeps([8,1,9,2,10,4,11])),`UpdatesSeite`)}),Id=ra({getParentRoute:()=>Md,path:`/box/modelle`,component:R(()=>Su(()=>import(`./Modelle-CuuF8BGB.js`),__vite__mapDeps([12,1,13,14,9,15,2,3,4,10,11])),`ModelleSeite`)}),Ld=ra({getParentRoute:()=>Md,path:`/box/monitoring`,component:R(()=>Su(()=>import(`./Monitoring-Dh_DGery.js`),__vite__mapDeps([16,1])),`BoxMonitoringSeite`)}),Rd=ra({getParentRoute:()=>Md,path:`/homelab`,component:R(()=>Su(()=>import(`./Homelab-Ba-06aFa.js`),__vite__mapDeps([17,1,9,15,2,10,4,7])),`HomelabSeite`)}),zd=ra({getParentRoute:()=>Md,path:`/homelab/updates`,component:R(()=>Su(()=>import(`./Homelab-Ba-06aFa.js`),__vite__mapDeps([17,1,9,15,2,10,4,7])),`HomelabUpdatesSeite`)}),Bd=ra({getParentRoute:()=>Md,path:`/homelab/monitoring`,component:R(()=>Su(()=>import(`./Monitoring-Dh_DGery.js`),__vite__mapDeps([16,1])),`HomelabMonitoringSeite`)}),Vd=ra({getParentRoute:()=>Md,path:`/homelab/protokoll`,component:R(()=>Su(()=>import(`./HomelabProtokoll-NgNeh7ai.js`),__vite__mapDeps([18,1,9,15])),`HomelabProtokollSeite`)}),Hd=ra({getParentRoute:()=>Md,path:`/einstellungen`,component:R(()=>Su(()=>import(`./Einstellungen-B5hDXuZV.js`),__vite__mapDeps([19,1,2,10,4])),`EinstellungenSeite`)}),Ud=ra({getParentRoute:()=>Md,path:`/updates`,beforeLoad:()=>{throw ln({to:`/box/updates`})}}),Wd=ra({getParentRoute:()=>Md,path:`/modelle`,beforeLoad:({location:e})=>{throw ln({to:`/box/modelle`,hash:e.hash||void 0})}}),Gd=xa({routeTree:Md.addChildren([Nd,Pd,Fd,Id,Ld,Rd,zd,Bd,Vd,Hd,Ud,Wd]),defaultPreload:`intent`,defaultErrorComponent:Da}),Kd=`mc_neuladen_wegen_version`;function qd(){window.addEventListener(`vite:preloadError`,e=>{sessionStorage.getItem(Kd)||(e.preventDefault(),sessionStorage.setItem(Kd,`1`),window.location.reload())}),window.addEventListener(`load`,()=>{window.setTimeout(()=>sessionStorage.removeItem(Kd),5e3)})}qd();var Jd=new ft({defaultOptions:{queries:{retry:1,refetchOnWindowFocus:!1,staleTime:5e3}}});(0,Ea.createRoot)(document.getElementById(`root`)).render((0,A.jsx)(k.StrictMode,{children:(0,A.jsx)(ce,{client:Jd,children:(0,A.jsx)(wa,{router:Gd})})}));export{Ts as $,sc as A,jo as At,Qs as B,wo as Bt,Yl as C,gs as Ct,ql as D,Uo as Dt,Ul as E,is as Et,uc as F,Bo as Ft,hc as G,Ka as Gt,tc as H,co as Ht,Ns as I,Ro as It,Ys as J,ea as Jt,gc as K,Ha as Kt,nc as L,Mo as Lt,vc as M,Po as Mt,Vs as N,Fo as Nt,mc as O,No as Ot,Hs as P,Lo as Pt,Ks as Q,re as Qt,Us as R,xo as Rt,Hl as S,vs as St,Vl as T,xs as Tt,$s as U,eo as Ut,_c as V,ho as Vt,dc as W,Xa as Wt,zs as X,I as Xt,Ws as Y,Ii as Yt,Os as Z,se as Zt,Bl as _,ec as _t,Wu as a,ic as at,Xl as b,ys as bt,Yu as c,pc as ct,Lu as d,ws as dt,Es as et,Nu as f,ac as ft,_u as g,js as gt,hu as h,Rs as ht,Xu as i,qs as it,yc as j,Io as jt,cc as k,zo as kt,Ku as l,ks as lt,Su as m,rc as mt,Qu as n,Ms as nt,Gu as o,Js as ot,Pu as p,As as pt,Bs as q,Ta as qt,Zu as r,Ds as rt,Uu as s,fc as st,J as t,Xs as tt,zu as u,oc as ut,Il as v,Gs as vt,Wl as w,_s as wt,$l as x,bs as xt,Ql as y,hs as yt,Is as z,V as zt}; \ No newline at end of file diff --git a/frontend/dist/assets/index-tY0RgKNN.css b/frontend/dist/assets/index-tY0RgKNN.css new file mode 100644 index 0000000..45ba085 --- /dev/null +++ b/frontend/dist/assets/index-tY0RgKNN.css @@ -0,0 +1,2 @@ +/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */ +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){:root,:host{--shimmer-angle:20deg}*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0;--scroll-fade-t:0px;--scroll-fade-b:0px;--scroll-fade-s:0px;--scroll-fade-e:0px;--scroll-fade-mask:initial;--shimmer-image:initial;--shimmer-text-fill:initial}}}@layer theme{:root,:host{--font-mono:"JetBrains Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;--color-black:#000;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-normal:0em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-xs:4px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:"Barlow", "Segoe UI", system-ui, sans-serif;--default-mono-font-family:"JetBrains Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;--font-anzeige:"Barlow Condensed", "Barlow", "Segoe UI", sans-serif}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}html{-webkit-font-smoothing:antialiased;font-family:Barlow,Segoe UI,system-ui,sans-serif}body{background-color:var(--background);color:var(--foreground);margin:0}:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}}@layer components;@layer utilities{.\@container{container-type:inline-size}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{inset-inline:0}.inset-y-0{inset-block:0}.-top-1\.5{top:calc(var(--spacing) * -1.5)}.top-0{top:0}.top-1{top:var(--spacing)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.-bottom-1\.5{bottom:calc(var(--spacing) * -1.5)}.bottom-0{bottom:0}.bottom-24{bottom:calc(var(--spacing) * 24)}.left-0{left:0}.left-1\/2{left:50%}.left-3{left:calc(var(--spacing) * 3)}.left-4{left:calc(var(--spacing) * 4)}.left-\[80\%\]{left:80%}.left-\[90\%\]{left:90%}.isolate{isolation:isolate}.z-10{z-index:10}.z-50{z-index:50}.col-span-2{grid-column:span 2/span 2}.col-start-1{grid-column-start:1}.col-start-2{grid-column-start:2}.row-start-1{grid-row-start:1}.row-start-2{grid-row-start:2}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.-m-2{margin:calc(var(--spacing) * -2)}.m-0{margin:0}.-mx-2{margin-inline:calc(var(--spacing) * -2)}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-auto{margin-inline:auto}.-my-2{margin-block:calc(var(--spacing) * -2)}.-mt-1{margin-top:calc(var(--spacing) * -1)}.-mt-2{margin-top:calc(var(--spacing) * -2)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-auto{margin-top:auto}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-\[0\.444em\]{margin-right:.444em}.-mb-2{margin-bottom:calc(var(--spacing) * -2)}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-0{margin-bottom:0}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.-ml-2{margin-left:calc(var(--spacing) * -2)}.ml-\[0\.111em\]{margin-left:.111em}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.size-\[18px\]{width:18px;height:18px}.h-0{height:0}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-\[1\.75em\]{height:1.75em}.h-\[min\(75cqw\,150px\)\]{height:min(75cqw,150px)}.h-auto{height:auto}.h-dvh{height:100dvh}.h-full{height:100%}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-\[50vh\]{max-height:50vh}.max-h-\[calc\(100dvh-2rem\)\]{max-height:calc(100dvh - 2rem)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-\[58px\]{min-height:58px}.min-h-\[130px\]{min-height:130px}.min-h-dvh{min-height:100dvh}.w-0\.5{width:calc(var(--spacing) * .5)}.w-1{width:var(--spacing)}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-\[1\.1875em\]{width:1.1875em}.w-full{width:100%}.w-px{width:1px}.max-w-40{max-width:calc(var(--spacing) * 40)}.max-w-\[200px\]{max-width:200px}.max-w-\[1320px\]{max-width:1320px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-full{max-width:100%}.max-w-md{max-width:var(--container-md)}.min-w-0{min-width:0}.min-w-36{min-width:calc(var(--spacing) * 36)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.basis-full{flex-basis:100%}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-px{--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.resize{resize:both}.scroll-mt-4{scroll-margin-top:calc(var(--spacing) * 4)}.scroll-mt-6{scroll-margin-top:calc(var(--spacing) * 6)}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[1\.5rem_minmax\(0\,1fr\)_auto\]{grid-template-columns:1.5rem minmax(0,1fr) auto}.grid-cols-\[64px_18px_minmax\(0\,1fr\)\]{grid-template-columns:64px 18px minmax(0,1fr)}.grid-cols-\[170px_100px_170px_minmax\(0\,1fr\)_auto\]{grid-template-columns:170px 100px 170px minmax(0,1fr) auto}.grid-cols-\[auto_minmax\(0\,1fr\)\]{grid-template-columns:auto minmax(0,1fr)}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-cols-\[minmax\(0\,1fr\)_auto_auto\]{grid-template-columns:minmax(0,1fr) auto auto}.grid-cols-\[minmax\(0\,9rem\)_minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,9rem) minmax(0,1fr) auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-3\.5{gap:calc(var(--spacing) * 3.5)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-\[0\.1875em\]{gap:.1875em}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-1{row-gap:var(--spacing)}.gap-y-1\.5{row-gap:calc(var(--spacing) * 1.5)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-6{row-gap:calc(var(--spacing) * 6)}.self-center{align-self:center}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:calc(var(--radius) * 1.8)}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) * .8)}.rounded-sm{border-radius:calc(var(--radius) * .6)}.rounded-xl{border-radius:calc(var(--radius) * 1.4)}.rounded-b-xl{border-bottom-right-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-dotted{--tw-border-style:dotted;border-style:dotted}.\!border-bernstein{border-color:var(--bernstein)!important}.\!border-box{border-color:var(--box)!important}.\!border-lab{border-color:var(--lab)!important}.\!border-text-2{border-color:var(--text-2)!important}.border-\[\#2a3036\]{border-color:#2a3036}.border-aus-rand{border-color:var(--aus-rand)}.border-bernstein,.border-bernstein\/60{border-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.border-bernstein\/60{border-color:color-mix(in oklab, var(--bernstein) 60%, transparent)}}.border-bernstein\/70{border-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.border-bernstein\/70{border-color:color-mix(in oklab, var(--bernstein) 70%, transparent)}}.border-box-rand{border-color:var(--box-rand)}.border-cyan-rand,.border-cyan-rand\/60{border-color:var(--cyan-rand)}@supports (color:color-mix(in lab, red, red)){.border-cyan-rand\/60{border-color:color-mix(in oklab, var(--cyan-rand) 60%, transparent)}}.border-gruen-rand{border-color:var(--gruen-rand)}.border-lab-rand{border-color:var(--lab-rand)}.border-linie{border-color:var(--linie)}.border-linie-stark{border-color:var(--linie-stark)}.border-rot{border-color:var(--rot)}.border-rot-rand{border-color:var(--rot-rand)}.border-transparent{border-color:#0000}.bg-\[\#0b0d0f\]{background-color:#0b0d0f}.bg-\[\#0c0f12\]{background-color:#0c0f12}.bg-aus-grund{background-color:var(--aus-grund)}.bg-bernstein{background-color:var(--bernstein)}.bg-bernstein-grund{background-color:var(--bernstein-grund)}.bg-bernstein-lampe{background-color:var(--bernstein-lampe)}.bg-bernstein\/70{background-color:var(--bernstein)}@supports (color:color-mix(in lab, red, red)){.bg-bernstein\/70{background-color:color-mix(in oklab, var(--bernstein) 70%, transparent)}}.bg-black\/10{background-color:#0000001a}@supports (color:color-mix(in lab, red, red)){.bg-black\/10{background-color:color-mix(in oklab, var(--color-black) 10%, transparent)}}.bg-box{background-color:var(--box)}.bg-box-grund{background-color:var(--box-grund)}.bg-cyan{background-color:var(--cyan)}.bg-cyan-grund,.bg-cyan-grund\/40{background-color:var(--cyan-grund)}@supports (color:color-mix(in lab, red, red)){.bg-cyan-grund\/40{background-color:color-mix(in oklab, var(--cyan-grund) 40%, transparent)}}.bg-cyan\/35{background-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.bg-cyan\/35{background-color:color-mix(in oklab, var(--cyan) 35%, transparent)}}.bg-erhaben,.bg-erhaben\/40{background-color:var(--erhaben)}@supports (color:color-mix(in lab, red, red)){.bg-erhaben\/40{background-color:color-mix(in oklab, var(--erhaben) 40%, transparent)}}.bg-erhaben\/50{background-color:var(--erhaben)}@supports (color:color-mix(in lab, red, red)){.bg-erhaben\/50{background-color:color-mix(in oklab, var(--erhaben) 50%, transparent)}}.bg-gruen{background-color:var(--gruen)}.bg-gruen-grund{background-color:var(--gruen-grund)}.bg-lab{background-color:var(--lab)}.bg-lab-grund{background-color:var(--lab-grund)}.bg-linie{background-color:var(--linie)}.bg-linie-stark{background-color:var(--linie-stark)}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/50{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.bg-panel,.bg-panel\/70{background-color:var(--panel)}@supports (color:color-mix(in lab, red, red)){.bg-panel\/70{background-color:color-mix(in oklab, var(--panel) 70%, transparent)}}.bg-popover{background-color:var(--popover)}.bg-rot{background-color:var(--rot)}.bg-rot-grund{background-color:var(--rot-grund)}.bg-rot\/80{background-color:var(--rot)}@supports (color:color-mix(in lab, red, red)){.bg-rot\/80{background-color:color-mix(in oklab, var(--rot) 80%, transparent)}}.bg-text-3{background-color:var(--text-3)}.bg-transparent{background-color:#0000}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-box-grund{--tw-gradient-from:var(--box-grund);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-lab-grund{--tw-gradient-from:var(--lab-grund);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.bg-clip-padding{background-clip:padding-box}.fill-text-3{fill:var(--text-3)}.p-0{padding:0}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-0{padding-inline:0}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-7{padding-block:calc(var(--spacing) * 7)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:var(--spacing)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-0{padding-bottom:0}.pb-1{padding-bottom:var(--spacing)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-10{padding-bottom:calc(var(--spacing) * 10)}.pb-\[calc\(1\.25rem\+env\(safe-area-inset-bottom\)\)\]{padding-bottom:calc(1.25rem + env(safe-area-inset-bottom))}.pb-\[min\(10cqw\,20px\)\]{padding-bottom:min(10cqw,20px)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-anzeige,.font-heading{font-family:Barlow Condensed,Barlow,Segoe UI,sans-serif}.font-mono{font-family:JetBrains Mono,ui-monospace,Cascadia Mono,Consolas,monospace}.font-sans{font-family:Barlow,Segoe UI,system-ui,sans-serif}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.5625em\]{font-size:.5625em}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.text-\[17px\]{font-size:17px}.text-\[22px\]{font-size:22px}.text-\[26px\]{font-size:26px}.text-\[28px\]{font-size:28px}.text-\[32px\]{font-size:32px}.text-\[34px\]{font-size:34px}.text-\[40px\]{font-size:40px}.text-\[length\:clamp\(14px\,14\.5cqw\,32px\)\]{font-size:clamp(14px,14.5cqw,32px)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.02em\]{--tw-tracking:.02em;letter-spacing:.02em}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-\[0\.04em\]{--tw-tracking:.04em;letter-spacing:.04em}.tracking-\[0\.06em\]{--tw-tracking:.06em;letter-spacing:.06em}.tracking-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\[0\.18em\]{--tw-tracking:.18em;letter-spacing:.18em}.tracking-\[0\.22em\]{--tw-tracking:.22em;letter-spacing:.22em}.tracking-\[0\.24em\]{--tw-tracking:.24em;letter-spacing:.24em}.tracking-\[0\.26em\]{--tw-tracking:.26em;letter-spacing:.26em}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.\!text-foreground{color:var(--foreground)!important}.text-\[\#f2c46b\]{color:#f2c46b}.text-aus-text{color:var(--aus-text)}.text-bernstein{color:var(--bernstein)}.text-bernstein-hell{color:var(--bernstein-hell)}.text-box-text{color:var(--box-text)}.text-cyan{color:var(--cyan)}.text-cyan-text{color:var(--cyan-text)}.text-foreground{color:var(--foreground)}.text-gruen{color:var(--gruen)}.text-gruen-text{color:var(--gruen-text)}.text-lab-text{color:var(--lab-text)}.text-muted-foreground{color:var(--muted-foreground)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary-foreground{color:var(--primary-foreground)}.text-rot{color:var(--rot)}.text-rot-text{color:var(--rot-text)}.text-text-2{color:var(--text-2)}.text-text-3{color:var(--text-3)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.no-underline{text-decoration-line:none}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.accent-\[var\(--lab\)\]{accent-color:var(--lab)}.opacity-0{opacity:0}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_8px_rgba\(61\,220\,138\,0\.7\)\]{--tw-shadow:0 0 8px var(--tw-shadow-color,#3ddc8ab3);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_18px_rgba\(255\,90\,79\,0\.35\)\]{--tw-shadow:0 0 18px var(--tw-shadow-color,#ff5a4f59);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_0_32px_rgba\(255\,90\,79\,0\.3\)\]{--tw-shadow:0 0 32px var(--tw-shadow-color,#ff5a4f4d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-foreground\/10{--tw-ring-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.ring-foreground\/10{--tw-ring-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter\!{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)!important}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.paused{animation-play-state:paused}.running{animation-play-state:running}.zoom-in{--tw-enter-scale:0}.group-open\:rotate-90:is(:where(.group):is([open],:popover-open,:open) *){rotate:90deg}@media (hover:hover){.group-hover\:translate-x-0\.5:is(:where(.group):hover *){--tw-translate-x:calc(var(--spacing) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}.group-hover\:text-foreground:is(:where(.group):hover *){color:var(--foreground)}.group-hover\:text-text-2:is(:where(.group):hover *){color:var(--text-2)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-data-\[status\=active\]\:text-bernstein:is(:where(.group)[data-status=active] *){color:var(--bernstein)}.group-data-\[status\=active\]\:text-box:is(:where(.group)[data-status=active] *){color:var(--box)}.group-data-\[status\=active\]\:text-foreground:is(:where(.group)[data-status=active] *){color:var(--foreground)}.group-data-\[status\=active\]\:text-lab:is(:where(.group)[data-status=active] *){color:var(--lab)}.first\:border-t-0:first-child{border-top-style:var(--tw-border-style);border-top-width:0}.first\:pt-0:first-child{padding-top:0}.first\:pt-1:first-child{padding-top:var(--spacing)}.open\:pb-2:is([open],:popover-open,:open){padding-bottom:calc(var(--spacing) * 2)}.open\:pb-3:is([open],:popover-open,:open){padding-bottom:calc(var(--spacing) * 3)}@media (hover:hover){.hover\:border-linie-stark:hover{border-color:var(--linie-stark)}.hover\:border-text-3:hover{border-color:var(--text-3)}.hover\:bg-\[\#3a1512\]:hover{background-color:#3a1512}.hover\:bg-\[\#232931\]:hover{background-color:#232931}.hover\:bg-bernstein-hell:hover{background-color:var(--bernstein-hell)}.hover\:bg-cyan-grund:hover{background-color:var(--cyan-grund)}.hover\:bg-erhaben:hover{background-color:var(--erhaben)}.hover\:bg-rot-grund:hover{background-color:var(--rot-grund)}.hover\:text-cyan:hover{color:var(--cyan)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-lab-text:hover{color:var(--lab-text)}.hover\:text-rot-text:hover{color:var(--rot-text)}.hover\:text-text-2:hover{color:var(--text-2)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}}.focus\:border-cyan:focus{border-color:var(--cyan)}.focus\:border-lab:focus{border-color:var(--lab)}.focus-visible\:rounded-md:focus-visible{border-radius:calc(var(--radius) * .8)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-3:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-cyan\/60:focus-visible{--tw-ring-color:var(--cyan)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-cyan\/60:focus-visible{--tw-ring-color:color-mix(in oklab, var(--cyan) 60%, transparent)}}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.active\:not-aria-\[haspopup\]\:translate-y-px:active:not([aria-haspopup]){--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-45:disabled{opacity:.45}.data-\[side\=bottom\]\:inset-x-0[data-side=bottom]{inset-inline:0}.data-\[side\=bottom\]\:bottom-0[data-side=bottom]{bottom:0}.data-\[side\=bottom\]\:h-auto[data-side=bottom]{height:auto}.data-\[side\=bottom\]\:border-t[data-side=bottom]{border-top-style:var(--tw-border-style);border-top-width:1px}.data-\[side\=left\]\:inset-y-0[data-side=left]{inset-block:0}.data-\[side\=left\]\:left-0[data-side=left]{left:0}.data-\[side\=left\]\:h-full[data-side=left]{height:100%}.data-\[side\=left\]\:w-3\/4[data-side=left]{width:75%}.data-\[side\=left\]\:w-\[300px\][data-side=left]{width:300px}.data-\[side\=left\]\:border-r[data-side=left]{border-right-style:var(--tw-border-style);border-right-width:1px}.data-\[side\=right\]\:inset-y-0[data-side=right]{inset-block:0}.data-\[side\=right\]\:right-0[data-side=right]{right:0}.data-\[side\=right\]\:h-full[data-side=right]{height:100%}.data-\[side\=right\]\:w-3\/4[data-side=right]{width:75%}.data-\[side\=right\]\:w-full[data-side=right]{width:100%}.data-\[side\=right\]\:border-l[data-side=right]{border-left-style:var(--tw-border-style);border-left-width:1px}.data-\[side\=top\]\:inset-x-0[data-side=top]{inset-inline:0}.data-\[side\=top\]\:top-0[data-side=top]{top:0}.data-\[side\=top\]\:h-auto[data-side=top]{height:auto}.data-\[side\=top\]\:border-b[data-side=top]{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.supports-backdrop-filter\:backdrop-blur-xs{--tw-backdrop-blur:blur(var(--blur-xs));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}}@media (prefers-reduced-motion:no-preference){.motion-safe\:animate-pulse{animation:var(--animate-pulse)}.motion-safe\:animate-spin{animation:var(--animate-spin)}}@media (width>=40rem){.sm\:block{display:block}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-\[minmax\(0\,1fr\)_120px_160px\]{grid-template-columns:minmax(0,1fr) 120px 160px}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:gap-2{gap:calc(var(--spacing) * 2)}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:text-\[38px\]{font-size:38px}.sm\:text-\[44px\]{font-size:44px}.data-\[side\=left\]\:sm\:max-w-sm[data-side=left]{max-width:var(--container-sm)}.data-\[side\=right\]\:sm\:max-w-2xl[data-side=right]{max-width:var(--container-2xl)}.data-\[side\=right\]\:sm\:max-w-sm[data-side=right]{max-width:var(--container-sm)}.data-\[side\=right\]\:sm\:max-w-xl[data-side=right]{max-width:var(--container-xl)}}@media (width>=48rem){.md\:left-auto{left:auto}.md\:col-span-1{grid-column:span 1/span 1}.md\:block{display:block}.md\:grid{display:grid}.md\:hidden{display:none}.md\:w-\[420px\]{width:420px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-\[170px_100px_170px_minmax\(0\,1fr\)_auto\]{grid-template-columns:170px 100px 170px minmax(0,1fr) auto}.md\:grid-cols-\[260px_minmax\(0\,1fr\)\]{grid-template-columns:260px minmax(0,1fr)}.md\:grid-cols-\[minmax\(0\,1\.1fr\)_minmax\(0\,1\.3fr\)_minmax\(0\,1fr\)_minmax\(0\,0\.9fr\)_11\.5rem\]{grid-template-columns:minmax(0,1.1fr) minmax(0,1.3fr) minmax(0,1fr) minmax(0,.9fr) 11.5rem}.md\:grid-cols-\[minmax\(0\,1\.3fr\)_110px_minmax\(0\,1fr\)_minmax\(0\,1\.2fr\)_minmax\(0\,1fr\)_90px\]{grid-template-columns:minmax(0,1.3fr) 110px minmax(0,1fr) minmax(0,1.2fr) minmax(0,1fr) 90px}.md\:flex-col{flex-direction:column}.md\:items-center{align-items:center}.md\:items-end{align-items:flex-end}.md\:items-start{align-items:flex-start}.md\:items-stretch{align-items:stretch}.md\:gap-5{gap:calc(var(--spacing) * 5)}.md\:gap-6{gap:calc(var(--spacing) * 6)}.md\:px-10{padding-inline:calc(var(--spacing) * 10)}.md\:pt-8{padding-top:calc(var(--spacing) * 8)}}@media (width>=64rem){.lg\:bottom-6{bottom:calc(var(--spacing) * 6)}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-\[272px_minmax\(0\,1fr\)\]{grid-template-columns:272px minmax(0,1fr)}.lg\:grid-cols-\[minmax\(0\,1\.4fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}.lg\:grid-cols-\[minmax\(0\,1\.35fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}.lg\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,1\.3fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr)}.lg\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,1\.6fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,1.6fr)}.lg\:items-center{align-items:center}.lg\:px-6{padding-inline:calc(var(--spacing) * 6)}}@media (width>=80rem){.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}}@media (width>=96rem){.\32 xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@container (width>=24rem){.\@sm\:col-span-1{grid-column:span 1/span 1}.\@sm\:col-start-2{grid-column-start:2}.\@sm\:col-start-3{grid-column-start:3}.\@sm\:row-start-1{grid-row-start:1}.\@sm\:grid-cols-\[112px_minmax\(0\,1fr\)_auto\]{grid-template-columns:112px minmax(0,1fr) auto}.\@sm\:pl-\[124px\]{padding-left:124px}}@container (width>=28rem){.\@md\:col-span-1{grid-column:span 1/span 1}.\@md\:col-start-2{grid-column-start:2}.\@md\:col-start-3{grid-column-start:3}.\@md\:row-start-1{grid-row-start:1}.\@md\:grid-cols-\[112px_minmax\(0\,1fr\)_auto\]{grid-template-columns:112px minmax(0,1fr) auto}}.data-open\:animate-in:where([data-state=open]),.data-open\:animate-in:where([data-open]:not([data-open=false])){animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-open\:fade-in-0:where([data-state=open]),.data-open\:fade-in-0:where([data-open]:not([data-open=false])){--tw-enter-opacity:0}.data-open\:zoom-in-95:where([data-state=open]),.data-open\:zoom-in-95:where([data-open]:not([data-open=false])){--tw-enter-scale:.95}.data-\[side\=bottom\]\:data-open\:slide-in-from-bottom-10[data-side=bottom]:where([data-state=open]),.data-\[side\=bottom\]\:data-open\:slide-in-from-bottom-10[data-side=bottom]:where([data-open]:not([data-open=false])){--tw-enter-translate-y:calc(.1*100%)}.data-\[side\=left\]\:data-open\:slide-in-from-left-10[data-side=left]:where([data-state=open]),.data-\[side\=left\]\:data-open\:slide-in-from-left-10[data-side=left]:where([data-open]:not([data-open=false])){--tw-enter-translate-x:calc(.1*-100%)}.data-\[side\=right\]\:data-open\:slide-in-from-right-10[data-side=right]:where([data-state=open]),.data-\[side\=right\]\:data-open\:slide-in-from-right-10[data-side=right]:where([data-open]:not([data-open=false])){--tw-enter-translate-x:calc(.1*100%)}.data-\[side\=top\]\:data-open\:slide-in-from-top-10[data-side=top]:where([data-state=open]),.data-\[side\=top\]\:data-open\:slide-in-from-top-10[data-side=top]:where([data-open]:not([data-open=false])){--tw-enter-translate-y:calc(.1*-100%)}.data-closed\:animate-out:where([data-state=closed]),.data-closed\:animate-out:where([data-closed]:not([data-closed=false])){animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-closed\:fade-out-0:where([data-state=closed]),.data-closed\:fade-out-0:where([data-closed]:not([data-closed=false])){--tw-exit-opacity:0}.data-closed\:zoom-out-95:where([data-state=closed]),.data-closed\:zoom-out-95:where([data-closed]:not([data-closed=false])){--tw-exit-scale:.95}.data-\[side\=bottom\]\:data-closed\:slide-out-to-bottom-10[data-side=bottom]:where([data-state=closed]),.data-\[side\=bottom\]\:data-closed\:slide-out-to-bottom-10[data-side=bottom]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-y:calc(.1*100%)}.data-\[side\=left\]\:data-closed\:slide-out-to-left-10[data-side=left]:where([data-state=closed]),.data-\[side\=left\]\:data-closed\:slide-out-to-left-10[data-side=left]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-x:calc(.1*-100%)}.data-\[side\=right\]\:data-closed\:slide-out-to-right-10[data-side=right]:where([data-state=closed]),.data-\[side\=right\]\:data-closed\:slide-out-to-right-10[data-side=right]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-x:calc(.1*100%)}.data-\[side\=top\]\:data-closed\:slide-out-to-top-10[data-side=top]:where([data-state=closed]),.data-\[side\=top\]\:data-closed\:slide-out-to-top-10[data-side=top]:where([data-closed]:not([data-closed=false])){--tw-exit-translate-y:calc(.1*-100%)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{display:none}:is(.\*\:\[a\]\:underline>*):is(a){text-decoration-line:underline}:is(.\*\:\[a\]\:underline-offset-3>*):is(a){text-underline-offset:3px}@media (hover:hover){:is(.\*\:\[a\]\:hover\:text-foreground>*):is(a):hover{color:var(--foreground)}}.schild{font-family:var(--font-anzeige);text-transform:uppercase;letter-spacing:.16em;font-weight:600}.ziffern{font-family:var(--font-mono);font-variant-numeric:tabular-nums}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@property --scroll-fade-t{syntax:"";inherits:false;initial-value:0}@property --scroll-fade-b{syntax:"";inherits:false;initial-value:0}@property --scroll-fade-s{syntax:"";inherits:false;initial-value:0}@property --scroll-fade-e{syntax:"";inherits:false;initial-value:0}@property --scroll-fade-mask{syntax:"*";inherits:false}@property --shimmer-angle{syntax:"";inherits:true;initial-value:20deg}@property --shimmer-image{syntax:"*";inherits:false}@property --shimmer-text-fill{syntax:"*";inherits:false}@media (prefers-reduced-motion:reduce){.shimmer{-webkit-text-fill-color:currentColor;background-image:none;animation:none}}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-vietnamese-400-normal-Dpl4UHAZ.woff2)format("woff2"),url(/assets/barlow-vietnamese-400-normal-BFeobeCK.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-latin-ext-400-normal-HxX4XjxC.woff2)format("woff2"),url(/assets/barlow-latin-ext-400-normal-CvBsJvxq.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-latin-400-normal-qiz4-Cze.woff2)format("woff2"),url(/assets/barlow-latin-400-normal-fsAxiSwU.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-vietnamese-500-normal-zTViEIzf.woff2)format("woff2"),url(/assets/barlow-vietnamese-500-normal-GNfB7rCE.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-latin-ext-500-normal-DOaysfXq.woff2)format("woff2"),url(/assets/barlow-latin-ext-500-normal-CJPcKP2Q.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-latin-500-normal-BPAOfeC8.woff2)format("woff2"),url(/assets/barlow-latin-500-normal-C1h8hMer.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-vietnamese-600-normal-DcjprdFV.woff2)format("woff2"),url(/assets/barlow-vietnamese-600-normal-CA_GiK2e.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-latin-ext-600-normal-B8NK_A3D.woff2)format("woff2"),url(/assets/barlow-latin-ext-600-normal-DMVRjfRT.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-latin-600-normal-DILqtrty.woff2)format("woff2"),url(/assets/barlow-latin-600-normal-CNwfPWQD.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-condensed-vietnamese-500-normal-DjeaNLFD.woff2)format("woff2"),url(/assets/barlow-condensed-vietnamese-500-normal-CsrJDWc5.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-condensed-latin-ext-500-normal-yA5ONLQ9.woff2)format("woff2"),url(/assets/barlow-condensed-latin-ext-500-normal-B1RE8WP7.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-condensed-latin-500-normal-BgYH2mbd.woff2)format("woff2"),url(/assets/barlow-condensed-latin-500-normal-HIEiP5Ov.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-vietnamese-600-normal-A5AYRdjN.woff2)format("woff2"),url(/assets/barlow-condensed-vietnamese-600-normal-CNlPk46_.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-latin-ext-600-normal-18ESti3H.woff2)format("woff2"),url(/assets/barlow-condensed-latin-ext-600-normal-Clv9cIcR.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-latin-600-normal-DepVgxBB.woff2)format("woff2"),url(/assets/barlow-condensed-latin-600-normal-BFJEwTuo.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-vietnamese-700-normal-DYeBwlKR.woff2)format("woff2"),url(/assets/barlow-condensed-vietnamese-700-normal-DhIzd8Tb.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-latin-ext-700-normal-CwuXbfVR.woff2)format("woff2"),url(/assets/barlow-condensed-latin-ext-700-normal-BIHFfxf0.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-latin-700-normal-v1xN8_Wq.woff2)format("woff2"),url(/assets/barlow-condensed-latin-700-normal-Dmwat-ge.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAASIABAAAAAACQQAAAQuAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVF4AdBEICoRkhAALIAABNgIkAzoEIAWFAAeBFAwHG2oHKJ6DceNW4lJEFHn9tEOE37LNsvkjHr7f739rn3u+OSrSxLQytE91Dw2PYtNVq3Qaw/vJ7fUBMdOj/u2ImB98cT5WUx9F13ZKt06mU7tG1sAYcM26yCRX4f/0904bmwq8hwkUUMTRX61pa9C3xlpAGYw1vOu8C2SBZZFlld7DAW82RJWmwYMI1AJCKBNCIASqdZGFmtPSNQRhMpR0EKjWTwm6z6sJ+4jqhxjovTinVdRpZaQjaQzAYjI8NgAKDJCokgunCn9oUQE8VZd/F//+v6P4F1U9gLr58yNI/dJX9BAshEoJbTDogz7ocKoUsPvES8UK/aQIUQgpGgECBVLkOEV6iASTYgNAPKdNXayhDPL7IJuAZnEYSZ0eOLc9i5Rv5/+lEi3sW/kfnCf/+fTe0sxS7CKLx5erRJkKOixEqQaoqrvx5HN4iz4VhX0gS6DjFIWUzn/fIXJRVFY1NFRVNVeFt+SYmrK6vCU6eJsnKnJj5HTESMTQZOTI3Y/tzr3rUcOsiRy/ciP50s3Mycgxmhz9GMXhjzVH30ut796NHP0UUa31/Zoa6vCH6iPvdIM0IRANaT60FablmZlZd+UKNFy9NrvnFGxb5NC2CRxR0/rIyF/WNn+35sv9r+tHVhkseuWGKkCPPh96+GXt8Lc/Sh24ujfjf+tNw1lZWreiPuHb/PSpyjdv2rf/++ZE5TSKjFdZxYsBvr1sEHl5STuHZqYR7jGYGvGBBdjcaB5bODY1GAxMjsd0wDMIzXAXODRd74DxNMtO4YuYHclgLQRzp9KlUmxptCwv9bYgvWGD2xBW7r9413fdJu+mxzvzAUYeeONQvZP4kgfqZle4jhH/MWh+UbxgtJdrLdXLymNL53PRU0D3Q6FcXTfGqGcul6vrqhgLGAVSv+IVIfZOHpu+mlLqSlnj903j8mazXDsba/wbxhS/4Oubh1c5/uXDgt4j5KtnGEy5BIJHo0ur+jD+r2qCkuP1aRVM8EpUoRYSJyqNRA38uwDvHBNo0AejO2Z+ZYLLal1QiFyFh1EDQOgSCSCpjwwKU8yDbIjroEwne0G5Qca49cYp4AlqtQNZfWTQoFb1tRpFYAmRD+HXTkV4uQhG2bg4OKmyoypAsUGtWgQXyFxYrkpODeUxvGqIZA61erXo0sFG1UBGuPgpuon8RNUG2DhovAjZCBuZwtXrU3mQGki9+pm0eVZAXoWxLWTQoYHBPrJR4WunNxIFbCHfkTyPK+sqxjxDmGArZvf79JGJ3GwEqjwc7a7NIrl/7bJ7Nzu4+n1Ow6shEPnUrtVo7cnd5Wi5qCUbBIQbNKCP95FMCSZylEV5VCiiMqqiOmrKZ/I/C0gI1fyuulVcM2E1r4MhtcV/fbCD+HwEvVzH1dGNAzFE0FTbKzyQz3gootrNbN2a4PuG0j0JOgE=)format("woff2"),url(data:font/woff;base64,d09GRgABAAAAAAbUAA8AAAAACOgAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHREVGAAABWAAAABgAAAAcABQABEdQT1MAAAFwAAAAHgAAAB5EdEx1R1NVQgAAAZAAAAAnAAAAKLj8uOpPUy8yAAABuAAAAFEAAABgFwRca1NUQVQAAAIMAAAARgAAAF7mY9MfY21hcAAAAlQAAABRAAAAdAyHCodnYXNwAAACqAAAAAgAAAAIAAAAEGdseWYAAAKwAAAB6QAAAl7g5OpvaGVhZAAABJwAAAA2AAAANhSQ8UNoaGVhAAAE1AAAAB8AAAAkAcoBImhtdHgAAAT0AAAAHgAAADofBAM2bG9jYQAABRQAAAAgAAAAIATcBZ9tYXhwAAAFNAAAABwAAAAgAIcCb25hbWUAAAVQAAABEgAAAoA4pV3kcG9zdAAABmQAAABwAAAAlNdzMTB42mNgZGBg4GGAAEYgZAWTjCAeAAG0ABkAAQAAAAoAHAAcAAFERkxUAAgABAAAAAD//wAAAAAAAHjaY2BkYGDgYlADQiYXN58QBqGcxJI8Bj4GEGABEf//g0gAWkkFVQB42mNgYYpinMDAysDA1MUUwcDA4A2hGeMYjBgdgKIMDJwMUMDEzoAEvJyAxAEGXpaXzH/+XWFgYP7DqKPAwDj//nWgSjWmW0BZBQZWABNDDdYAAAB42kXIIQIBARQFwHl/QQIkWXInUAANXMOBJCcTd+KIGCjMNViq9/H0CM6P/S0j0bOwUqh08iEb8kPTXn3RiMoYhD90Nwc3AAB42lXIRwHCQBAF0JceehWAlTjhjikUgAVQA4mJLbdk5neUqHBVKWSv3XF2VCnt3AyevkVZv+sxBBbbq/6HfFP4hEcYQgEK82v1aHQ5RTs3FRQAAAAAAQAB//8AD3jabZA1tNRAFEDfTGDdfXHI2QQnZJJvK5ngDs13Welwt/78CtcS7xvcrcHKbXCtceh+wgtu437nXRCgC4BY9AGOXOAFYNHR0dzoKCGju8gJ6xiZaF3DWqcPBiSV5i2geaCgAlAJ77ghgjfiLC7KojvOZEmSXS63emXr5W7lsTLtXFMkRmks4ly+cYOEnvO2YLDNANv+9oJwhkpAAJAcHPG/1RC2BERc1ZGGMxYVWDyVSjc0NMaZELUf9e4JhCgNB3b2PiJRctuqZ0WPR8zilxutN/ji97vUBYMAnGjtzxjtK3wrDaMABo+R9KjWwNRUMppwuWS1QdfFZCIlMF2TxDGuJJlYW7OmVlvD+sx86b1hvC/l8yXf2hqZ66xbZ80yWzyD9/fzGaRzA58+nSOzYC+gw9AP+vyNqUAUhoD4lSnputbgUFPJ5O9Y+ReWlxkrc96naX08b3zk/KORb+E+VjYPmH1M6+UHeVlDtCzzGZ9FY8YMA8gPMsQA0jqaGkHT6cYSdVwl7Zs9Wzx+DyWUugPujd03T52ikrUvM26kF9PIcRmycuDBKcd3XRhPDgtnQACINzJ3fVl1tTB++3bc2S7kyD3cCQIQNMcSKaY2YOciE+d0zFbGjps6u0PILTFlRZHNJfAFnfeHtgAAAAABAAAAAjYEro52gl8PPPUAAwPoAAAAANvSppoAAAAA29rQ8vk5/tQEkgP8AAAABgACAAAAAAAAeNpjYGRgYP7z7woDA8uGn5Z/+1kmAUVQAR8Ar8AG6gB42mOKYIgCYiMkrAzCUHEbJJoBikHgCkMPAPDwCFUAAAAAABoAOwBGAFEAbwB3AKkAsQDmAQkBCQEJAQkBFgEveNpjYGRgYOBn3MGQx7CFgQ3MQwBmBiYALRoB+HjajJADbgVQEEXPZ20bQW3bthvXbr8Vp4to1KV0AV1Wb9JvZzJvzhvcB6CQL0wYzHnAj6E/yAYaDeVBNlJsMAfZxCy/QTbTy3eQLdTzGWQr3VwGuZhx2v/ZAIVUB9kc0TSUKJ8f5FIRHGPjnWs+2MKt+MYzt1xwr/jIk3JymR0X0wzIXKo7VbXjFvfLn3lTtCn7qPoB6+yyzb3qy8pdq/6hrj11fMj7OFbtEY+mrlU/516rVFCdVobplw/JEjVaCaqIYlUiUzOaW9aa/Q1idmlPXZHbCagW/B10XwaRi06VuVdMf+9DnIov6rlF8yzhUXxC/4c66Uz48UepqEN9N/Tzt2RwjOljsUUfj581AbaEXsIAAHjaY2BiAIP/qQxGQIqRAR3wA7EKw0lGJgYbRmZGFkZWRjZGdgZmRg5GTkYuRm42x6Si1LJU9tK8TAMTR1cI7WoB5btB+Zas6Ym5uYlgnoGjAZNzEF9icmlJanJ+bpJecmJxKg9IxtjADMwBAKDtHJg=)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2)format("woff2"),url(/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2)format("woff2"),url(/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAA9UABAAAAAALMAAAA7zAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGnAbhWocghYGYD9TVEFUXgCDBBEICrBAp3ILgjgAATYCJAOEKAQgBYUAB4xODAcbIiYzo8LGAQCKfn4o/usELQ4rdj22ABHwitFYjZPqB3XSqAbV3C5dFkHYtTehxpeGbU+3+QexdERCkxARw9oNxAyetvXzdhdjl/7aiBiHgcqBjZywaGPSh4mNFccpF3DHlfyO8Jc/OiSe/kb7/iQYRAE23iScpHngiRRBFETNiZzQwc2HOllJ0fqXIjTY8RTYbDsklKc81hGPQcOJojhD/w80ll1aG/qiQErbzqOXjmvOVKd14tuv+Hxrlbarq/5xH7CiMPjaZXlrfNSp7uqaroZXvYAzc8A0kH2zs3MvHQBUORcJ2GG2cdFRgArh+Sgb7yOsjImpmgM0kq1FwhQCQzQ1Mt+j7at5GSAAIQAAKFLk6uMul4pIl4HIpEEUK0dUMiCMmhFWNoSDC+Exghgzi5i3hNhtN9qaINo+EbQj1tEIgJVLj5oebQ6I1/fyLMQYALYgALKS0yEOQCJG89uIiEPKyeRDVCmC0HgZ203jIg7kk6cHxfEKeBSDXtxd6n5yJzqpfSgXs9xMri1fPezlKMAVcCGEIhmwHiDRtJOyKfXkGsAVqI7ohIZs0rsDM/IU4fuQgkppCk2n+VRHy6mFttJ26t16mBjQPyIeYhvZnyXaiDSeaAYYXLiKPIm4uKh1zIq6gSRVU7WNPIV5v1PwBOy07RrrT6skwoEAtYyZeYgpBUABaDEmtPWRGP/UGABFgUUjchFXAghAgAYQpyPkCIBBoRwQgU/g3kQcyqTY9KSDItmjjmmkP+qJHG3C66hjXhtlhzwglI+1+4Be+T77hYQxxeNkCIDaKU+ANXhkMqePOVAQr7uwCjoBlCdtHQE8TNRd17//A/evkhSpkOMDA9VTmwAVAbLNlwMkoAG5qG2bWCYA/h3uEYgEhFqSmJJPpCIFbJHg1Aw5GaAujjqMzIHc8NrIHBEJJjGZP3cuFQZD9PvzLvZIaCIjBcTvEnIzTWiGjqdzlD+VAO2TUERK8smEi8lNNOguiAM9P6Gfo6bX8bD0v7V/cPwA/fDBi0BaGgUllWy5AATy6X9gAZqRVIsMLuVmqQ3QmrBbiFgTiWbxLDj1hBqINGLVYewQwySWWRyeQK1kXVJ0S2UjZ5WgXaIOSTodp42CUzqHXH226ZfJI4tXth45eqnslGdQgSGFhmmMyOdTbEyJcdv56U0pNa3MDJ1JVRZUmldtkcESglQkAOA8AMgAoBeYLQi+wDxAtwAAGlXJUdVLPLmo/TLRystE3SsqO29LUY0hsrtvBoXUw1Fy+XjIhqbj4rEZISsUysW1L68PlGRwyWImjWXjS9LFyUzjC7v7Z5hYsYKRhIH49EyxTJxutwOy2PRxp1R63SVViB+eNFYRywlEzJBIMDIl5Aa4PtbFOno416WTTkfVQwSPgIve66BCbLAuLmpCh59ln5uFECODSuUIJ2CJCCzDwbf+DV2/3yTtan5J1gEVuilcVASHULO9Bt+nWkIEHMMit5gOxaO4JpWjvdzOcySeFek9q4dy3jxi2BxHwsuuo2CzbQ+KJWxyqPUJljVCU3WT8JwlhZyLkKODRhZkQByHu8ERJIcGBexSmdwGPfMPbjnC0SwRUTyCAIwY4Mdr9zxJTKE5yp0mcEe9s3Umm/TZp2s4X/27cQUmhrd4Ow4ibPOTOxxT6w+S8ENc9AGE7meFOlNbuzjngJtzjFKcrMsxtf4G4UIPcNGXbvwNaeDea6+1L7kaYG+M13a455pruOh5Ww0HlhllPy/PsqS9Zr7ZV9cSLODAoItzBt2cI5i1brCxQRIcH6yr9wV5+XjhtlxuziH7LiqGTXVnkfCZntd1doJ5liyIno6X3GqH56fcnGNwE2IXvYhw5a/MJGsMns/TOawd+2HX5kOXxQZFsYkwmMetzGtqKDKSe+h9h7jX77z2Snb98vyL7rjmil1N3B/cCBfsC5rymA/ExpPlni/DL9i7eflmn66oxrSlMRRB/8Dbq/e/3aN95L3BG+dFd1d+uCVzKhQy5/+I77CmWJ/o2Hygaay8yleXU1c1NH2IpqHOYUtriyWHf3iZwxjZvNxm/Ti/O5+22uC3nVFxhu1wvQc08ZZ+nb5/9oBF38ehJXaKPt7K6/v34Ltqai21rbXDXI3BRDa+9XDSGp8gzZZarV2ag9v3RBzSNfFjU/M+uVduNDTsMNY0GCOHDU3O4dazeb3zFXjg0rlPuiV75+m+kzV3v5qc/PHdJ2j6pI+wDP+U7mFPW/uw23ltZemTVTo+3+KNa1yyuwdmfI41j1/yvbG3oaLR3G3Sd1xdrNOUfAou3jYw0z860D9jr+9sqU1IIHve9W56/fIEU2fztvaqHQ213trhKauqjXVmr/kFxP1m7bdCE88Plpb1m840l/VNQz72QvvMPlc5z9fvKPt1xBtXv9yVZ9nGmxscXiDfwGcI4LQ9duBaG7Nxjw2aWMuArp7In2qxObTwKfr40/iy/j34zhqeN59qHuZqDBaysQWiL/PZsk4cyV13mvbwWw7phfEDC/O+fm9/ram+sspcXxs5hm9pHjufSujGRbKXaTPmBAPPfMm45bau15+jR/bbBx80mR7sCth94rfB6Q6sngJcuO1v4a7Lu157ad9GKIlypuEea9GDnXs0IytDmZ2Rka2cVv4jrIHmaFZ3O9OWlWX7gLuRH1mMjsxE8VrEH/XNRrErsh61R6PD3e2d7dDsb3Z38k15W/kFkrwmHk+PhWNKx3nLMhHkSl5ZLMvHWPGPfwRB9AKr2QoSUb4qSlB18X715zkqwRI0G3lvUOptugtcID+tsKQForrC+pqxS4X1dcof21bf4OQcbZ2Le6y53kKao3rxNWE9f1a+S3t2tiIu5yej2d/W12RozBwrLh7LbDT0NkUDi+HBQPj0xIlAoKHFFxAMPB8Vce+KKo28Rq0SHV3LUk6MNLv35DMrCzVNmbxBeCGCKzMtu20y8f+SVD4h31Sosky03Upl9YJxzh+L0ZFANLR4LOpYj452tne145E/wok2e6JX/xBX/vH8WaFQojdWlrhzuOXjs1Zn3cCkT4qWSmZeqX/B4tciE4HBmUBZwGxtMDaqnCpdllPVaIzdNw9ZqfDU30ppYDgw2B+A5JP5L8bj4tgWoy/t6WRRcO2P8uFDakiP2fMWaviyaOYFr94gE0nEsXysWligOuHRC2TiH0XSJ/4WqQcjE4GxmUAocKlG+jECgZHFwGX8vabVzf8f4KQSi8Gp6laIdgV0q8OzbmjyaWdnW1MQXZoJDb7ZaEdzVzMoNQiAGESUwszDAIzTDIqSxGFoxoRZ/vTKM8CfyZ9V/ZAPfzZ/Ds4tMHm0dSxCkOPaNpKlK8/KwGQVCdzqbPDn1HKuiT8WHUnStEQYZB2TC6WJ6spymNIjBV7JK5lSs1C5qDoRSYBUSlgH31LlM7X5O4o8eBxrX3MDwtOG1iZdZ/NjXsu0gBJohRVmlQNfwVfQmsReAdZEAahljqkMaxLHg/gT+BONkwxcgT0CH/5k/pQrcCpMUYiGtPqbDGvVgALfitYyTHyI7iP25WqsSqAlstCbcmZ3k0PcRZlgbs0KCrwb7lImBTqQCCawVEpMWHur0DRm3+9sVAOK6UQiqESr8NaEtY8Vu86AIjK3KRZhXNwqD34Oc38umLZM7/33+38/uOj7///Z9yMAAHqAUtN3Bsa/l9rSiKVxlONqqbKozYWfYMRMRkicEE2FhIs4TuWQJL0RDNwCPy0hP1CbGAVY9Mb6W+DZ2p14CIQoIBjqGKpe6lOONhDJTUFBXMgZYOPct8C7Ffmf2jR2ksQ72U7f6SBu5gywoW8x2Qhy1APl1CZGAQ4ksGGD8loGsjY0UQKXmhdvpBboCNglmiU2XUCieL2dF1bDaTacoykaTjgFAhquyoFkiSk0LZyooeM7gQDVIlmNOwCPlICNKQpatkhBhUQJpdLCVwFqWj3FQ8sWeajTWbJiLeRJQlRmsyh1YLRZtAzVNr0dAoCqYN6wXLhzQGL8LY6mvwSAd1698ly88s2Xfwa7FbVA/wsgBhQAgABfG3dQHs2o/066DhB0wWo68NIlpR8Rtqkj9flbwtMc3oZyWoIn3n+L86o5vA1V8ng6L4C9+Ax3YgMBHN8Er4rV97ZRXgdo2vF244hH35wAzlOM0Y1BABGNnNCZ4UFNPID7U9KeSCgiP5EiDnMizejpExlFzj9RIM2BE2MU8pwgViH7TAQQSqpgnDuJJAk2kHIaYDNnhs+sFsvBuaf5DXMbXT9uwvLIbk49b4mBNm3JsEV+85YtKUHWb5rT5ywap9WpUZtWo6q5Fot8W89a0m4OaXOK2Ywat2KaD3NdRi1S/+eloldCT0fn1K5q61Mpa6eaNrKMB6WMQqn83IfXmTNv1eIRiaKj7aOsikMmoxej+EfqsmjOpFHDLnneylGLQxT66vnHnh/n12VXDN1Hw6/bcNpctWo3vrwApZvfrdEDiP8IzgPkeiYUoQlzDvYWB0cnZ6uLq5t7+aRk5I6TIFGS5IqkSJWWXjqFDEqZVLJky5FrG7W8quQrUEijSLESWtsz0tErVVa9chUqValmUMNoh1omZjxSM4s69Ro0atKspTe1smrLpl2HTl262dg5OLm4eezMw6tHrz79BgzyGarXsBGjxqJtJvhNmjJtxqw58xYsWrJsxS4Bu61aE7THXvvsFxJ2wEERhxx2xFHHrIs6fuE/r+1vm6/8jhhtDCwnASDGR1h4SGhYwEGU1Y/Xffk5G4u9XgIAYtxyGpZ5y9sDdNbyP142W5DgAhoE7i3q0c5x2vm9v24aZuNohdcxqSEAz8up00My03HSwmqPa8bMecG3Tjzb+f9EelEtg2vpzPeiIEEBwSA8IEDBwAE9F5Z6vQIQjAnLGTgWLO+uZTL/qwGEAYOAQpg3TefgwBCQgBDzqukKDBAOoU3KVtqIbBXK9XpEAAujuudkZN724kIGmrtVaS38ZZLrS9/4fsKMQhN3yXK5gvSBvJ2Y9/Nydbcvb0bm58+e3FhmGfGLJ9u7axl1F1LQTbaCeyrbu7wFCsorFgV4qnh+GUrWtaczqkSBB96AEeKRB94k2SyLuyw3qwrxeg3P5FNR1Av1Gsq2/ds6dPPkBAAA)format("woff2"),url(/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(data:font/woff2;base64,d09GMgABAAAAAASUABAAAAAACRAAAAQ3AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVEwAdBEICoRkg3oLIAABNgIkAzoEIAWFHgeBFAwHG3AHKB4HzukrRjyF5Gb4kQ/B873d17mv8TWkoqUUGaHodJCtoqntw7m8tiPWyGkfWDU/IMpzVk4zAs9Czv3c7Os5NvKFG1Ht9vBVXySRZpJc4tTrbM3sTRFcLa3zVboKWRIoAksKSKgqUQWEwlSoqjp44V5J9/kjd0+Fi5xaFjwJArgBAIJgIAgCCAI4CdNMqGuYXYUKdADLAkAAJwl6iX0+bZqEm1AH0Hu9rvrJHwxQG1Q/gFYwWYbgTRWgwEESVzbmtjQAt3DXO7Tu/+9Q/KNKWhTCgZ8fQSWoL0CUUgTBjgL8iEAcce7YHBeA8ZvogieCnxI0BCVeACCAAhBD/oDcAdUPABSgAX4kBPBTwjCAjwYSCneiqF65LUo/qXdYFrRwTujtMrKm07plTbSqLQFAiHBN7E4DG5wkiGXhCYBNETh3K/AciHN69iFfQjFOr9EXQQAAQXRNszs8PR0OH4fDV/dwGe76CHdj1MQa11DXYGcfZ6+B1X0OfwjY+i7KpQ1w9d+1z3/HydCB1f3U8A0fRFv+0bXxPWrZu3d9Nn4UcbLs/QCXLH/j3PCKblKOiZxLOR78W9brPo7eGTLz/F27ZPmePQdCB1YP4nJU91o4gU9cy64L3c3SPu8GfDn6ZXD2cGmllVqSxtD5vCXHm5xaeHlnpffx7DcPvXog5NnjA//cPz2btsz3yf+0MI8ri33tuv7upNbYmW5STbosW8bYItV/SPzxvXC0KnpWnFdC91oojit5Lyo6WcJQ1YzwBYbi52ohJVpcxfcHBqsv0nFz8U74rzS6M7r0RVlXZ3jJC4G92O//7Lm78VOtnUx+aQxAzsqPnrRr1t9zDrezKePvZ027x+fGte4s4NXu7/jEp3G9cM1bICYgACbuETUUD5wmenGXA/IBpAKVrl0AEJ5cqr6Q89tGq+SpqkDfX2DtG+pZ9teuae0AX98c301CX179InyErnSG8WCiABB4HFbVrw/lpTdBIOk82nXbpHKoQGyBpUovAAD4XQA8ZTUCeBJHIpI0v0FRrgcnckV3ANckrwYJKXEihQfdSKPER6XeExmEeEMmSe6QBwWmkZdmSOSthhibgIkBlUYreBKd/0NeVAE9WAyEaQpH6KikDWlUVg43Jy2FOmaYlsZhDEGZXO3mWEyWHI6zuaJkMlcSQ9k4F+KidIiFyZItGDc7r1pUj6wP6zrWB0/fbeeFeHl4YOvETMNiM8Ny+7OO6Qh2wur20YVxFts5dlORdl5Kwd5utR7SRcxqX8RA5Ehacha76hg7c6yzNm/Xf6vOLNrv544lIEkWg7xWo/ItBAeIJEmt0XgBwgM8gTifoiiLJroYYooNTeziEKe4zOoR/wvIKp89hSr+6jFAqw/LaonjmZHSscMNg4iPlWpFrO1RN3zkMU+/xUP+JQ99TbvTl1Vg0gtirT6lbwYAAAA=)format("woff2"),url(data:font/woff;base64,d09GRgABAAAAAAbQAA8AAAAACMAAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHREVGAAABWAAAABgAAAAcABQABEdQT1MAAAFwAAAAHgAAAB5EdEx1R1NVQgAAAZAAAAAnAAAAKLj8uOpPUy8yAAABuAAAAFEAAABgF2hca1NUQVQAAAIMAAAAPQAAAEzpM8woY21hcAAAAkwAAABRAAAAdAyHCodnYXNwAAACoAAAAAgAAAAIAAAAEGdseWYAAAKoAAAB8AAAAl604cJFaGVhZAAABJgAAAA2AAAANhSS8UNoaGVhAAAE0AAAAB8AAAAkAcwBEGhtdHgAAATwAAAAHwAAADoe/QLmbG9jYQAABRAAAAAgAAAAIATcBZ9tYXhwAAAFMAAAABwAAAAgAIcCb25hbWUAAAVMAAABEwAAAmo0OV08cG9zdAAABmAAAABwAAAAlNdzMTB42mNgZGBg4GGAAEYgZAWTjCAeAAG0ABkAAQAAAAoAHAAcAAFERkxUAAgABAAAAAD//wAAAAAAAHjaY2BkYGDgYlADQiYXN58QBqGcxJI8Bj4GEGABEf//g0gAWkkFVQB42mNgYYpi/MLAysDA1MUUwcDA4A2hGeMYjBgdgKIMDJwMUMDEzoAEvJyAxAEGXpaXzH/+XWFgYP7DqKPAwDj//nWgSjWmW0BZBQZWADbPDjoAAAB42gXBsQ1AABQFwHsfiY5CYQBDaVVIlBL7mckA7kT0CpPCop79uIPz3q4MojUrSJePvNSKRlRGEH74hwYNAAAAeNpVyEcBwkAQBdCXHnoVgJU44Y4pFIAFUAOJiS23ZOZ3lKhwVSlkr91xdlQp7dwMnr5FWb/rMQQW26v+h3xT+IRHGEIBCvNr9Wh0OUU7NxUUAAAAAAEAAf//AA942mzQNZTUQAAG4H9mIDlbySoOt5I9HHZiL+vS4VDh7u40OFRo3+FQ464V7tbiUmHdJczicsm4fe/9YBgDEIc+BYOEeoArzUqyWSGkeQzZ6+wmfZwLot6nT1vVNM04oBlQ9AZoX3FHhh/gQR6Mp+JykKdUNSVJcu9T20/N73OrT3F/2qMw5vfWLp88SQL3rFE+3ygTrvv9BXaMqiCAkD3d2lr1ipagK4QqNDHjCuPBSCRqGGaQM+XLk0XrPX5GlaY1i54QD7nhvO/c3+Pp35mEHO58dN2fd6mEdgAYRrhfqEyfi7ei6AG0j6m6ohk8HQkrIUlKpQ1dj4dDEcZ1TY3HpDDpM3PZspkzl+lTqlbmZUYUy8o0LJtKSlOXLp3qnC9N1ieU7FWr7BIZPssuFm1hpt3BVBW/yPMPcwAUdEL8m6nqumbU1Eg4/Ceb+s2WpxrG1HKtnVKxcm9zolhWrkGbVN5RmqQJdGdpkj6ukGluzhTed7ULBRvkp4wAENVFUt1oNGrmaS2r8JcrCxfJjXWUUCo3yvMXXDlyhKrO3mhLj/qGhvoeLREyvvXpEYDgGutFDrFjYEDQ5PK1OcsWs15bt4JgM0uQe2LHAxCRHA9FeNoQnUS+Tsc7JkRXVV03JIZZJcBJRUdHxSmAAQCFZYU3AAEAAAACNgQJCtdkXw889QADA+gAAAAA29KmmgAAAADb2tDy+Tv+1ASSA/wAAAAGAAIAAAAAAAB42mNgZGBg/vPvCgMDy4af1n9rWSYBRVABHwCudAbaAHjaY4pgiAJibSQsC8WBQGyERDNAMQicZmgFAOeFB/4AAAAAGgA7AEYAUQBvAHcAqQCxAOYBCQEJAQkBCQEWAS942mNgZGBg4GfcwZDHsIWBDcxDAGYGJgAtGgH4eNqM0IFGQ2EUB/DfqqJMBZLAFUh0V0MoUBGllKQArHVtN9vu3HuH3iEAPUJP0cP0BD1D3D6zKQqHH9/5n885qHs1qza3iPfaenDNts/gGcs+gmcdeAuem+iZt+EleMGWx+Bl++Jv16jbDJ5Xtxa8om4peNUSbmT6WgbOlFp6Um2XEo9SI333EqmOrrKq0lDhQENDoS2XGioVYoVUTyyT62i4curCuUTpWK4lNVC4lBnI7Ez9dCeRK6TVa6Qp1rRnb0KHzh07/PfMG4mOkZ6W/JdUNM5FU7kTmaFn+Xj3SNNuVZFbXYnoj3nXcpkniXaVPzKqbpjJq86tH/fsSKuOkQextkzf1/Sx2KKPx/+aADN1XKsAeNpjYGIAg/+pDEZAipEBHfADsQrDSUYmBhtGZkYWRlZGNkZ2BmZGDkZORi5GbjbHpKLUslT20rxMAxNHVwjtagHlu0H5lqzpibm5iWCegaMBk3MQX2JyaUlqcn5ukl5yYnEqD0jG2MAMzAEAoO0cmA==)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-cyrillic-500-normal-DmUKJPL_.woff2)format("woff2"),url(/assets/jetbrains-mono-cyrillic-500-normal-DJqRU3vO.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-greek-500-normal-JpySY46c.woff2)format("woff2"),url(/assets/jetbrains-mono-greek-500-normal-D7SFKleX.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(data:font/woff2;base64,d09GMgABAAAAAA/IABAAAAAALMwAAA9mAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGnAbhXAcghYGYD9TVEFUTACDBBEICrA8p1ILgjgAATYCJAOEKAQgBYUeB4xODAcbFCYzA/aDkxp0RMXmTMH/IcEUkaXZhe7qAVQoRhtRmOhkzaUYXs3lyzTUlwptwwNGy28PLP/oZewn39g4Jjp8YusISWZ9eNpW788MNQMI7jZprgsqRiJ7imCBYlEWIBhgoWjj7uJGcddednnRIQ/fX77n7i8NtLf08UwEQl3jq59XJCShypU4lMyz3Hb3X0omkAkZCYVNhfN/c3Pmf1nJcDqnj2VE35fYAx+8WYIJhZj4znn1Qbjp9+f4Pab0wOi7JSECzG0o6DRWu/MBgfu/NdPu5O8cUssKSJ1wUyTjq6oWZic7nUsKuIEySsIkzXvdKzArVNkCwvP1lQCgK4yu0BVWFp6vrWVm/6Nt7H82JGhxDyAteCbHZLRdzTsxJqNEUxb+txHysoxjwQzz2p8tU5uFtC4RmcGouCRX3v1195cCAYgBAECRIWSIVNsQCiqEhh6RpxRRzogwaUTYdSCc3AivAcSQCcSkacSCBbQlcbQ9DqAddgyNAFiZilAX9c1OSB/6ZyYgxQCwDgGQoVQGIYAIRvVlRAiR7Ax+jsqKIDacjVExNGWA/MQLk8VzJshTmOztrVbySNyHVnaAiUVpcgdvmnh9FNeAYYXkMl4AqisEoDtIZK0zs6lsSM8yAboEhZ5CFVqD23kNfor49QgAGWwFBeRAIZRCLdigBbqPFSIF+ABeQAfotUU0g+rL1gCMOnSNn4S0PWEL5Nw2QBqyIVvBT2Fe9wCSYDa3QH3Vt4cSaWSAug+NT0JKDgAKQOMLa96EFIKf/gOUWDQiE3EFgAB4aACxikhFAAwKZZ8DgHeiRQixRghm5n4HrCOOSrQAtqJU3LzpFAr/6TAHnDo8QQgszNHZ77FXwgom85JfwQOqMC8Ae/gYkSsURQ1AgQgAQAutAAoAALCdA3gIkv619L//vwb0H8nVgjz+bwLUlFoDaPGQkfqBjQcpc4R8ODxDAPwurhVJMbRRa7ksFTJAUJERK+RXgDxDi8az0D39NBJmMjGZP5MWgyH5+mYXeZg0kZOdJEIu5k1OaIYW0Rnqv/S2DtQxKCIjOSRMLuKNDjpwIXDRE0Y407zODF3/W/ovnvbiAz6YIOC0nZKaVrpMADK9/g8sQDORaaLiVmpCNj+DsAUJUg1SNBKpxbESqyNRj2XB2IWvmkANITOe42zRZqt223RIZbdRi00cNmu1QTMlFwWnTH2y+Gh4pemWrkeGXlpddgjYKUgnRG9Ajn55huQbViCiyKhiY0qMKzSiwpRykyrFGE0jSCIFAJwLADkD0AtMDvBegHkHug0AoFGJVK2qhCXG61AIrWWr8aYYT2zhWkVVD6EX62dQyHJqVGLicdAyTQtFjJgVi1Olw0wdI6eouC1SZjvL3umikG5h3BSHrTOMQKpkUgQu/aGoVC5VKLOjXKBIrWSy2FqmlB+dTKAUcDwJE5TwBkbFnJ/rY92ss4dzXxKbV1/T9hAJvBUu+bwOaq/XWDeXTEKvBMv+HYDYtSMXHI8lErBlDv1FvCF2yDfJcie3f1oWe+wCtb9HCZdshHBIfLC9FrNf60J4HGMKYkfC5TJ+lSNHd3NdZ5dNZ96o6OG8lOvpt5IcR3r2z61suaFBNQmrT0wrCXkvwKkNWenURddyk4+u1FuSiQRtRvQxxhEfxFo411PBvfbTQ1aCPSbA0yIczRIJRXEEQyYS4ocX/of1WiiyaY7SI3Z54u6pUe8m+30ZXB4f13V23XbupYoeLhwa5QqcRIKRdhwtDjdHX7sj8SSWqhgd2s25/B7OuTu4WLdz9FgQLtG55HhMlbFN/J5rrmGPXQWwZOVVLnn31VevgnPrfKt+IsHWeS5ZYVnCJZ9HIqem3z+aeAsjx92cK+7hnPGyVcarN47i9QctdADS864Xl+f2cM6E6W7jwyDLmWTlDNfAWRtN3eLupy1VuUoXA0Y9nDMwDm0aWWy8vkY6yniPTKmax1mFMSPTY+OyNo5gvPrMaWh+d6Yocqzobrh2BM+xO665gj12WQPSixm3X325OHNpey4+FiI+ViG4n+0mtkeDT6J77bK1vsLcqur1aMyF/u63T4xFx/V3vXhzq+VXFL7ypKwjPz+l4w2I7O1b21+wrz3XGCkzhqwKi3EwUtbo7w+YrLVVCuM8U1MAvrXrA5YXtX7tt5YAgoHTtp8WWF0eGHqRNVhUEjBba0v8h+bWaAV+c525JPC7Y/GXH19hrUyWl51baa04D0cn7Sp5qsze1VrwV7OyZHfSiyJTsZB0TFoerSjfW97MUD0Yt59oL3Kd4SNndY35u+St5yYTG575P1cpvWf3hskypgS/yB30tjjC3t6zi/Om4l/vjtYRYdOcpyc4FXQtRAZTN5h66vUdRpsxv/FMnSRHdzIYUWcg6vcHAtFOq8NmDm+l9r49tjYS2RI2O2zqvuITK5wVJxaXLhudxmXyUWt/K/Qiy0BJqb/mZHOpb6DEYg2VlPrMQWf+rheNhpOjo1zdfIfKkm6qMhsrTeZd234B2oMPB68Kyh+7OQi90BoqLvWbT6wt9YWKrdEKfLUnmkv9J2fxld9XeaLx3vKyZ40nVj6HfU/YdfKw79i9rQU1lSWHXuzBSScKzcZC3WPdlRcUl9xQeTh2aC6G9md6xnorxgsKd1f0dvkr/e7KQtNT/YHYFK691fHqc7z5WGnoTXPhm6HR0mnubTCFnYEJf7bfP+G0Ouw1k4QvuOw/rPsO97uflSxXKCuWS0rjlcrKePHlrYZWnH9AY9VoL03tATMa+kB/IGO1LLqakbF6sqvQHJhOLowm8cyBSHJmMonogaPJATpOOOweE/o99p7WWmfms1k7ns101lZHxtRBTefZMzIJkSsaNIZ6PReT/ohVl1uGg2e7ml3474DkI8kGTVtDZOe2TO2ONujXMk7TagqPrtGehm2f5GksNUqWOMsAC1JpXVMB8a265dwCWrecb+qjmcuF3pKhX/qEodrl80v5RPPuq9xGdUu9x3B2pnqrdvnB6Pe2BBpN7ap0nS5d1W7yN56QiB0YXTzQIWMqsVit2E1IJJ65TsI+KzVZbHmN6dJzkiro99t7Gqscyl/8nbTSUVWdjOByTedCSCZdr0kNW3MHcrWWxWmp1cp+yE6c98d0jC0lz4gdGXjRaLO92ffUHysp8pF3giv+eOcGjvsbGa11hkiW+PB5hmPdht38S67pmA9my+IbNmXULvS3VG07Lq136q4xnKz01oPhuZGJueMWrK31JofKklae1qlqKba7vg5yWnz3hzAuBOeGe+aQ8ur03gWhSNxQ3a/htqUcWzqxZsgptuwTcY3NaGzZLlTUKP8UW4zHk6oxHFFf9+F9MrFUwq/n52j06vNeGlmS9eyJU7A8ejA8F5uYO2Oh2i5K+uDcaxPRubvf6vbTxu85m5WnWqo9WbdqJUcOf3tSoNvCbrn09HJ9io6MjZ4Xny5qb2puApUNggl8KLVU1ACQTpMomG2HoEriLLkaejrIM8gzIx90Is8iz8bnjGNjNLQADHJcM4VcEXqXkOUhG7nIA5BvNJ+N9MKmYbuN05Tq5ZrWhcjqhmQ1IzdINamW1V4WrBhk29RG6FoDqfIt9wjkbNfvcq4XYOw1PHUJmquCZ03r3q6PSYNswHBLUJbKWbcHWUaWQZUN89AnAsi+EPxQrrIlEJnJIlUJM7HMcyIb2WdiwCYYhdkKuBjZ5gUYSBu2TYSNZEBQZ/dsLMogZAlqcMnlTpcszNOWC7LHy0oMpAd7JmhjAL8NbmRdayAVvDU+WxL5XR70AowhbINbkc7/KgLwLmPqTfwNBEUHCMBxmUhdQj6WUlkZlKnxu6pO1d9/v//3Q7rw+///2fMjAAB6oDb0HaH0b6GUJU8Y0eR64ojqUqm14Od8duRDHPKhFfZpiGupUNnzetjxdgRbK/5+l4IJ5JeSir8t3R+1IaFaa9AZitANXTvqUxavQ2TYeNmrYwP4det2tGuWgFpDejL9euYAfQfK28gGGIvbgQRcpXesotZIABUK/LoCMgX5tBzoUFiWbADfCNfMu98PsCghbdyeq6jgel07qoCDJjjsyIFY7MAODSYL1alQ9phCIRt3Ri4tbQVgE5dpkfhjGAkZMAWRYzPLNioh68Amvwwd4zGzodCRGaTlUjZqVdaBTSBDfJ6vWzoqG6lZhQKbFK6EAKgz5unB00f9KabfIE1/CcA764pzcPbvSz+DTdl+/xcAHwUACHwM3JK6lBL+d88HxAVfFHh3m1b6a8TWqK9qwVrRVjPaq6WqFSbUXqOOqrXXCkfN6KhWPgnndsCsD3CdZzHpoEPOX6wjz67FHso9aAqWW+ynpyeAc+VhtGMQgKDhk7pBGKUsAnBflEhlCV2wnFLxv2VpRo+QTFme7a4qy5cjUVaqjK2sjFJ+GTmx9FYE4M2hvDRKwSyXLSegQ9S4fhOazOT8YyJCPAaHHhY2o8XyD4iYNc7mNKNWTL+ICdO0Go+aiFqsGZM3ZyMDg2khMRGTZqrMfNN8LD/nqJhhBq3qNXN2r8LzGkBuHpMgYmkV2dpFChUKu08Vm1pVR9TBh+FjevSxMYZr7aNbRE1aFJsrvS1RcG1pOS9ocBJ8rTYx4yMuQj6W2WwW4VnSDJFz5tU/LKK0ZgWXCD2/qRmKRWuYh+47US6adX1FAOIfwbmATE+T2t4wLVab3eF0uT1eXz6MQKLQGCyuGE8gVpLIFCqNzmCy2Bwur54vEIrEEqlM3qxQqtTdSrU6vcFoMlusNjsz0q+WhVWdeg0aNfUmG7vmOrRwaNWmXYdOTi5uHl5deXXr0auPj19Av2C9QgYMGor2C4sYMWrMuAlRk6bETJsxa868BYuWxC3bbY+9EjhBUjTDcrwgSih88/y+eq/C13kHnXKhbTUDgISUCgNDoABXKLCL+2X27E/c2jAAQEKsFigx1qgLEbSeu+NyhcJGIECQNm9L567c3l7uZ5Wo3pkx4tYOhJANKw9dEonovRqVDb5dMKz515Ng+hci23hm4UQEs8eChwPB0BZYOBINbH3Erw0HECzUaokWa42eyGD3PIBIMBSOrfryBQ3G4oHQKi+/kEA0tuaDV40GP3h0+wuAAgXTKy0v5428xUDwksfm538juY9ni9fz2Ggy4iWLMz4qLklle7kcZvOLwy5bXp7fdYrRJlP4l5NDdZPiKVeLnJV7Ohg2VAs/aQwZNVtodX2jki6RU1e/j6GkgZbgAmmogZafuF4mZlb1t+COUyrcnF/CCZzS4MO/dX1T6QQAAAA=)format("woff2"),url(/assets/jetbrains-mono-vietnamese-500-normal-DNRqzVM1.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-latin-ext-500-normal-Cut-4mMH.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-ext-500-normal-ckzbgY84.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2)format("woff2"),url(/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--radius:.625rem;--background:#0e1012;--foreground:#e6eaee;--card:#15181b;--card-foreground:#e6eaee;--popover:#15181b;--popover-foreground:#e6eaee;--primary:#ffb020;--primary-foreground:#1a1300;--secondary:#1c2126;--secondary-foreground:#e6eaee;--muted:#1c2126;--muted-foreground:#8b949e;--accent:#1c2126;--accent-foreground:#e6eaee;--destructive:#ff5a4f;--border:#262b30;--input:#3a4148;--ring:#5cc8ff;--panel:#15181b;--erhaben:#1c2126;--linie:#262b30;--linie-stark:#3a4148;--text-2:#aeb6bf;--text-3:#8b949e;--bernstein:#ffb020;--bernstein-hell:#ffc24d;--bernstein-grund:#2a1e05;--bernstein-lampe:#3a2a08;--gruen:#3ddc8a;--gruen-text:#7cc9a0;--gruen-grund:#0f2319;--gruen-rand:#1f5a3b;--cyan:#5cc8ff;--cyan-text:#93d5f8;--cyan-grund:#0c2230;--cyan-rand:#2f7fb0;--rot:#ff5a4f;--rot-text:#ff9a92;--rot-grund:#2e0f0d;--rot-rand:#a33a33;--box:#8b95ff;--box-text:#b4bbff;--box-grund:#151a36;--box-rand:#3f4aa8;--lab:#c98bff;--lab-text:#deb8ff;--lab-grund:#22163a;--lab-rand:#6d44a6;--reihe-1:#3987e5;--reihe-2:#d55181;--aus-grund:#171b1f;--aus-rand:#2e343a;--aus-text:#9aa3ad}@keyframes lampe-atmen{0%,to{box-shadow:0 0 10px color-mix(in srgb, var(--bernstein) 25%, transparent)}50%{box-shadow:0 0 22px color-mix(in srgb, var(--bernstein) 45%, transparent)}}@media (prefers-reduced-motion:no-preference){.lampe-atmet{animation:3.2s ease-in-out infinite lampe-atmen}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}} diff --git a/frontend/dist/assets/search-_IbVYCuo.js b/frontend/dist/assets/search-B5rIIYDK.js similarity index 68% rename from frontend/dist/assets/search-_IbVYCuo.js rename to frontend/dist/assets/search-B5rIIYDK.js index 5b6d0d3..9f6539a 100644 --- a/frontend/dist/assets/search-_IbVYCuo.js +++ b/frontend/dist/assets/search-B5rIIYDK.js @@ -1 +1 @@ -import{Kt as e}from"./index-COh3_SSc.js";var t={name:`search`,size:24,node:[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]};t.node;var n=e(t);export{n as t}; \ No newline at end of file +import{Kt as e}from"./index-FvHAYExN.js";var t={name:`search`,size:24,node:[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]};t.node;var n=e(t);export{n as t}; \ No newline at end of file diff --git a/frontend/dist/assets/sheet-06g2D7J7.js b/frontend/dist/assets/sheet-CB1NvtKC.js similarity index 96% rename from frontend/dist/assets/sheet-06g2D7J7.js rename to frontend/dist/assets/sheet-CB1NvtKC.js index 115210e..053cc8c 100644 --- a/frontend/dist/assets/sheet-06g2D7J7.js +++ b/frontend/dist/assets/sheet-CB1NvtKC.js @@ -1 +1 @@ -import{i as e,n as t,r as n,t as r}from"./dist-D4CVSex9.js";import{Vt as i}from"./index-COh3_SSc.js";import{t as a}from"./button-D8rvET0Z.js";import{a as o,i as s,n as c,o as l,r as u,s as d,t as f}from"./dist-D9JSQbGO.js";var p=t();e();var m=n();function h(e){let t=(0,p.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,m.jsx)(f,{"data-slot":`sheet`,...n}),t[2]=n,t[3]=r),r}function g(e){let t=(0,p.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,m.jsx)(l,{"data-slot":`sheet-portal`,...n}),t[2]=n,t[3]=r),r}function _(e){let t=(0,p.c)(8),n,i;t[0]===e?(n=t[1],i=t[2]):({className:n,...i}=e,t[0]=e,t[1]=n,t[2]=i);let a;t[3]===n?a=t[4]:(a=r(`fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,n),t[3]=n,t[4]=a);let s;return t[5]!==i||t[6]!==a?(s=(0,m.jsx)(o,{"data-slot":`sheet-overlay`,className:a,...i}),t[5]=i,t[6]=a,t[7]=s):s=t[7],s}function v(e){let t=(0,p.c)(17),n,o,s,l,d;t[0]===e?(n=t[1],o=t[2],s=t[3],l=t[4],d=t[5]):({className:o,children:n,side:l,showCloseButton:d,...s}=e,t[0]=e,t[1]=n,t[2]=o,t[3]=s,t[4]=l,t[5]=d);let f=l===void 0?`right`:l,h=d===void 0||d,v;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,m.jsx)(_,{}),t[6]=v):v=t[6];let y;t[7]===o?y=t[8]:(y=r(`fixed z-50 flex flex-col gap-4 bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-[side=bottom]:data-open:slide-in-from-bottom-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:animate-out data-closed:fade-out-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=right]:data-closed:slide-out-to-right-10 data-[side=top]:data-closed:slide-out-to-top-10`,o),t[7]=o,t[8]=y);let b;t[9]===h?b=t[10]:(b=h&&(0,m.jsx)(c,{"data-slot":`sheet-close`,asChild:!0,children:(0,m.jsxs)(a,{variant:`ghost`,className:`absolute top-3 right-3`,size:`icon-sm`,children:[(0,m.jsx)(i,{}),(0,m.jsx)(`span`,{className:`sr-only`,children:`Schließen`})]})}),t[9]=h,t[10]=b);let x;return t[11]!==n||t[12]!==s||t[13]!==f||t[14]!==y||t[15]!==b?(x=(0,m.jsxs)(g,{children:[v,(0,m.jsxs)(u,{"data-slot":`sheet-content`,"data-side":f,className:y,...s,children:[n,b]})]}),t[11]=n,t[12]=s,t[13]=f,t[14]=y,t[15]=b,t[16]=x):x=t[16],x}function y(e){let t=(0,p.c)(8),n,i;t[0]===e?(n=t[1],i=t[2]):({className:n,...i}=e,t[0]=e,t[1]=n,t[2]=i);let a;t[3]===n?a=t[4]:(a=r(`flex flex-col gap-0.5 p-4`,n),t[3]=n,t[4]=a);let o;return t[5]!==i||t[6]!==a?(o=(0,m.jsx)(`div`,{"data-slot":`sheet-header`,className:a,...i}),t[5]=i,t[6]=a,t[7]=o):o=t[7],o}function b(e){let t=(0,p.c)(8),n,i;t[0]===e?(n=t[1],i=t[2]):({className:n,...i}=e,t[0]=e,t[1]=n,t[2]=i);let a;t[3]===n?a=t[4]:(a=r(`font-heading text-base font-medium text-foreground`,n),t[3]=n,t[4]=a);let o;return t[5]!==i||t[6]!==a?(o=(0,m.jsx)(d,{"data-slot":`sheet-title`,className:a,...i}),t[5]=i,t[6]=a,t[7]=o):o=t[7],o}function x(e){let t=(0,p.c)(8),n,i;t[0]===e?(n=t[1],i=t[2]):({className:n,...i}=e,t[0]=e,t[1]=n,t[2]=i);let a;t[3]===n?a=t[4]:(a=r(`text-sm text-muted-foreground`,n),t[3]=n,t[4]=a);let o;return t[5]!==i||t[6]!==a?(o=(0,m.jsx)(s,{"data-slot":`sheet-description`,className:a,...i}),t[5]=i,t[6]=a,t[7]=o):o=t[7],o}export{b as a,y as i,v as n,x as r,h as t}; \ No newline at end of file +import{i as e,n as t,r as n,t as r}from"./dist-D4CVSex9.js";import{Vt as i}from"./index-FvHAYExN.js";import{t as a}from"./button-D8rvET0Z.js";import{a as o,i as s,n as c,o as l,r as u,s as d,t as f}from"./dist-LMCPoT8k.js";var p=t();e();var m=n();function h(e){let t=(0,p.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,m.jsx)(f,{"data-slot":`sheet`,...n}),t[2]=n,t[3]=r),r}function g(e){let t=(0,p.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,m.jsx)(l,{"data-slot":`sheet-portal`,...n}),t[2]=n,t[3]=r),r}function _(e){let t=(0,p.c)(8),n,i;t[0]===e?(n=t[1],i=t[2]):({className:n,...i}=e,t[0]=e,t[1]=n,t[2]=i);let a;t[3]===n?a=t[4]:(a=r(`fixed inset-0 z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0`,n),t[3]=n,t[4]=a);let s;return t[5]!==i||t[6]!==a?(s=(0,m.jsx)(o,{"data-slot":`sheet-overlay`,className:a,...i}),t[5]=i,t[6]=a,t[7]=s):s=t[7],s}function v(e){let t=(0,p.c)(17),n,o,s,l,d;t[0]===e?(n=t[1],o=t[2],s=t[3],l=t[4],d=t[5]):({className:o,children:n,side:l,showCloseButton:d,...s}=e,t[0]=e,t[1]=n,t[2]=o,t[3]=s,t[4]=l,t[5]=d);let f=l===void 0?`right`:l,h=d===void 0||d,v;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(v=(0,m.jsx)(_,{}),t[6]=v):v=t[6];let y;t[7]===o?y=t[8]:(y=r(`fixed z-50 flex flex-col gap-4 bg-popover bg-clip-padding text-sm text-popover-foreground shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-[side=bottom]:data-open:slide-in-from-bottom-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:animate-out data-closed:fade-out-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=right]:data-closed:slide-out-to-right-10 data-[side=top]:data-closed:slide-out-to-top-10`,o),t[7]=o,t[8]=y);let b;t[9]===h?b=t[10]:(b=h&&(0,m.jsx)(c,{"data-slot":`sheet-close`,asChild:!0,children:(0,m.jsxs)(a,{variant:`ghost`,className:`absolute top-3 right-3`,size:`icon-sm`,children:[(0,m.jsx)(i,{}),(0,m.jsx)(`span`,{className:`sr-only`,children:`Schließen`})]})}),t[9]=h,t[10]=b);let x;return t[11]!==n||t[12]!==s||t[13]!==f||t[14]!==y||t[15]!==b?(x=(0,m.jsxs)(g,{children:[v,(0,m.jsxs)(u,{"data-slot":`sheet-content`,"data-side":f,className:y,...s,children:[n,b]})]}),t[11]=n,t[12]=s,t[13]=f,t[14]=y,t[15]=b,t[16]=x):x=t[16],x}function y(e){let t=(0,p.c)(8),n,i;t[0]===e?(n=t[1],i=t[2]):({className:n,...i}=e,t[0]=e,t[1]=n,t[2]=i);let a;t[3]===n?a=t[4]:(a=r(`flex flex-col gap-0.5 p-4`,n),t[3]=n,t[4]=a);let o;return t[5]!==i||t[6]!==a?(o=(0,m.jsx)(`div`,{"data-slot":`sheet-header`,className:a,...i}),t[5]=i,t[6]=a,t[7]=o):o=t[7],o}function b(e){let t=(0,p.c)(8),n,i;t[0]===e?(n=t[1],i=t[2]):({className:n,...i}=e,t[0]=e,t[1]=n,t[2]=i);let a;t[3]===n?a=t[4]:(a=r(`font-heading text-base font-medium text-foreground`,n),t[3]=n,t[4]=a);let o;return t[5]!==i||t[6]!==a?(o=(0,m.jsx)(d,{"data-slot":`sheet-title`,className:a,...i}),t[5]=i,t[6]=a,t[7]=o):o=t[7],o}function x(e){let t=(0,p.c)(8),n,i;t[0]===e?(n=t[1],i=t[2]):({className:n,...i}=e,t[0]=e,t[1]=n,t[2]=i);let a;t[3]===n?a=t[4]:(a=r(`text-sm text-muted-foreground`,n),t[3]=n,t[4]=a);let o;return t[5]!==i||t[6]!==a?(o=(0,m.jsx)(s,{"data-slot":`sheet-description`,className:a,...i}),t[5]=i,t[6]=a,t[7]=o):o=t[7],o}export{b as a,y as i,v as n,x as r,h as t}; \ No newline at end of file diff --git a/frontend/dist/index.html b/frontend/dist/index.html index 86b2384..0612dd7 100644 --- a/frontend/dist/index.html +++ b/frontend/dist/index.html @@ -9,11 +9,11 @@ Homelab Orchestrator - + - +
diff --git a/frontend/src/components/homelab/Speicher.test.tsx b/frontend/src/components/homelab/Speicher.test.tsx index 5d70d89..568a2be 100644 --- a/frontend/src/components/homelab/Speicher.test.tsx +++ b/frontend/src/components/homelab/Speicher.test.tsx @@ -1,4 +1,4 @@ -import { render, screen, within } from "@testing-library/react" +import { fireEvent, render, screen, within } from "@testing-library/react" import { auftraegeText, groesse, zeitplanText } from "@/lib/speicher" import type { HomelabSpeicher } from "@/lib/typen" import { Speicher } from "./Speicher" @@ -8,6 +8,7 @@ const daten: HomelabSpeicher = { bericht: true, pools: [{ speicher: "local-lvm", belegt: 184_123_256_523, gesamt: 374_538_764_288, frei: 190_415_507_765, anteil: 0.4916, meta_anteil: 0.0209, aktiv: true, stufe: "ok" }], + systemplatte: { belegt: 47_000_000_000, gesamt: 94_000_000_000, frei: 47_000_000_000, anteil: 0.5, stufe: "ok" }, nas: [{ server: "192.168.178.62", ziel: "/mnt/qnap-backup", quelle: "192.168.178.62:/Backup", art: "nfs", eingebunden: true, zustand: "ok", erreichbar: true, belegt: 1_517_685_571_584, gesamt: 3_847_503_609_856, anteil: 0.3945, stufe: "ok", problem: null }], @@ -58,6 +59,33 @@ describe("Speicher", () => { }) }) +describe("Alte Kernel", () => { + const kernel = { + art: "kernel" as const, ort: "systemplatte" as const, titel: "Proxmox-Host: 20 alte Kernel entfernen", + platz: 18_300_000_000, kurz: "18 GB alte Kernel auf dem Proxmox-Host", text: "Liegen auf der Systemplatte …", + aktion: { methode: "POST", pfad: "/api/homelab/ziele/pve/kernel-aufraeumen", label: "Alte Kernel entfernen", + frage: "20 alte Kernel vom Proxmox-Host entfernen (etwa 18 GB)? Es bleiben 7.0.14-12, 7.0.14-19." }, + } + + it("fragt vor dem Entfernen und zeigt die Systemplatte", () => { + const start = vi.fn() + render() + expect(screen.getByRole("meter", { name: "Systemplatte des Proxmox-Hosts: 50 % belegt" })).toBeInTheDocument() + expect(screen.getByText("Systemplatte des Hosts")).toBeInTheDocument() + fireEvent.click(screen.getByRole("button", { name: "Alte Kernel entfernen" })) + const dialog = screen.getByRole("dialog") + expect(within(dialog).getByText(/Es bleiben 7.0.14-12, 7.0.14-19/)).toBeInTheDocument() + fireEvent.click(within(dialog).getByRole("button", { name: "Alte Kernel entfernen" })) + expect(start).toHaveBeenCalledWith(kernel.aktion) + }) + + it("zeigt den laufenden Schritt statt des Knopfs", () => { + render( {}} />) + expect(screen.getByRole("status")).toHaveTextContent("Läuft: kernel_aufraeumen …") + expect(screen.queryByRole("button", { name: "Alte Kernel entfernen" })).not.toBeInTheDocument() + }) +}) + describe("Speicher-Texte", () => { it("rundet Größen und liest den Zeitplan", () => { expect(groesse(5_200_000_000)).toBe("5,2 GB") diff --git a/frontend/src/components/homelab/Speicher.tsx b/frontend/src/components/homelab/Speicher.tsx index 2c419cb..6488f9c 100644 --- a/frontend/src/components/homelab/Speicher.tsx +++ b/frontend/src/components/homelab/Speicher.tsx @@ -1,9 +1,13 @@ -import type { ReactNode } from "react" +import { type ReactNode, useState } from "react" import { ChevronRight } from "lucide-react" import { cn } from "cn" +import { Bestaetigen } from "@/components/cockpit/Bestaetigen" import { Chip, type ChipArt } from "@/components/cockpit/Chip" +import { Button } from "@/components/ui/button" import { auftraegeText, groesse, STUFE_TEXT } from "@/lib/speicher" -import type { HomelabSpeicher, NasStand, SicherungsLage, SpeicherPool, SpeicherStufe } from "@/lib/typen" +import type { + HomelabSpeicher, NasStand, SicherungsLage, SpeicherEmpfehlung, SpeicherPool, SpeicherStufe, Systemplatte, ZielAktion, +} from "@/lib/typen" import { flugplanZeit } from "@/lib/zeit" const CHIP: Record = { ok: "gruen", gelb: "bernstein", rot: "rot", keine: "grau" } @@ -65,6 +69,17 @@ function PoolKachel({ p }: { p: SpeicherPool }) { ) } +function SystemplatteKachel({ s }: { s: Systemplatte }) { + return ( + + +

+ {Math.round(s.anteil * 100)} % · {groesse(s.belegt)} von {groesse(s.gesamt)} · {groesse(s.frei)} frei +

+
+ ) +} + function NasKachel({ n }: { n: NasStand }) { const chipText = n.problem ? (n.stufe === "rot" ? "gestört" : "unklar") : STUFE_TEXT[n.stufe] return ( @@ -122,13 +137,21 @@ function SicherungsKachel({ s }: { s: SicherungsLage }) { * Speicher und Sicherungen des Homelabs: Speicherpool, NAS und die nächtlichen Sicherungen, darunter was im Pool * Platz bringt. Die Vorschläge sind aufgeklappt, sobald der Pool knapp wird (ab 80 %). */ -export function Speicher({ daten }: { daten: HomelabSpeicher }) { - const knapp = daten.pools.some((p) => p.stufe !== "ok") +export function Speicher({ daten, laeuft = null, gesperrt = false, onAktion }: { + daten: HomelabSpeicher + /** Läuft auf dem Proxmox-Host gerade etwas (Update, Kernel-Aufräumen)? Dann kein Knopf. */ + laeuft?: string | null + gesperrt?: boolean + onAktion?: (a: ZielAktion) => void +}) { + const [frage, setFrage] = useState(null) + const knapp = daten.pools.some((p) => p.stufe !== "ok") || (daten.systemplatte?.stufe ?? "ok") !== "ok" const summe = daten.empfehlungen.reduce((n, e) => n + (e.platz ?? 0), 0) return (
-
+
{daten.pools.map((p) => )} + {daten.systemplatte && } {daten.nas.length > 0 ? ( daten.nas.map((n) => ) ) : ( @@ -143,7 +166,7 @@ export function Speicher({ daten }: { daten: HomelabSpeicher }) { - Was im Speicherpool Platz bringt + Was Platz bringt {daten.empfehlungen.length} {daten.empfehlungen.length === 1 ? "Vorschlag" : "Vorschläge"} @@ -152,17 +175,50 @@ export function Speicher({ daten }: { daten: HomelabSpeicher }) {
    {daten.empfehlungen.map((e) => ( -
  1. -
    - {e.titel} - {e.platz ? `≈ ${groesse(e.platz)}` : "Größe unbekannt"} -
    -

    {e.text}

    -
  2. + ))}
)} + { + if (frage && onAktion) onAktion(frage) + setFrage(null) + }} + onNein={() => setFrage(null)} + />
) } + +const ORT: Record = { pool: "Speicherpool", systemplatte: "Systemplatte des Hosts" } + +function Vorschlag({ e, laeuft, gesperrt, onFrage }: { + e: SpeicherEmpfehlung + laeuft: string | null + gesperrt: boolean + onFrage: (a: ZielAktion) => void +}) { + return ( +
  • +
    + {e.titel} + {e.platz ? `≈ ${groesse(e.platz)}` : "Größe unbekannt"} +
    + {e.ort && {ORT[e.ort] ?? e.ort}} +

    {e.text}

    + {e.aktion && (laeuft ? ( +

    Läuft: {laeuft}

    + ) : ( + + ))} +
  • + ) +} diff --git a/frontend/src/lib/typen.ts b/frontend/src/lib/typen.ts index a96f2d6..49d7a0b 100644 --- a/frontend/src/lib/typen.ts +++ b/frontend/src/lib/typen.ts @@ -302,7 +302,7 @@ export interface HomelabLauf { status: "laeuft" | "fertig" | "unterbrochen" start: number ende: number | null - ergebnis: "eingespielt" | "zurueckgerollt" | "fehler" | "neustart" | null + ergebnis: "eingespielt" | "zurueckgerollt" | "fehler" | "neustart" | "aufgeraeumt" | null text: string | null schritte: string[] } @@ -503,16 +503,29 @@ export interface SicherungsLage { } export interface SpeicherEmpfehlung { - art: "trim" | "trim-vm" | "ungenutzt" | "verwaist" | "snapshot" + art: "trim" | "trim-vm" | "ungenutzt" | "verwaist" | "snapshot" | "kernel" + /** Wo der Platz frei wird: im Speicherpool oder auf der Systemplatte des Proxmox-Hosts. */ + ort?: "pool" | "systemplatte" titel: string text: string kurz: string platz: number | null + /** Nur wo es einen Knopf gibt (alte Kernel). */ + aktion?: ZielAktion | null +} + +export interface Systemplatte { + belegt: number + gesamt: number + frei: number + anteil: number + stufe: SpeicherStufe } export interface HomelabSpeicher { bericht: boolean pools: SpeicherPool[] + systemplatte: Systemplatte | null nas: NasStand[] sicherungen: SicherungsLage empfehlungen: SpeicherEmpfehlung[] diff --git a/frontend/src/views/Homelab.tsx b/frontend/src/views/Homelab.tsx index 42842ba..9ea74be 100644 --- a/frontend/src/views/Homelab.tsx +++ b/frontend/src/views/Homelab.tsx @@ -28,6 +28,7 @@ const ERGEBNIS: Record = { zurueckgerollt: { art: "bernstein", text: "zurückgerollt" }, fehler: { art: "rot", text: "Fehler" }, neustart: { art: "cyan", text: "Neustart" }, + aufgeraeumt: { art: "gruen", text: "aufgeräumt" }, } const zeitAus = (sekunden: number) => flugplanZeit(new Date(sekunden * 1000).toISOString()) @@ -187,7 +188,7 @@ function useHomelabBereich() { /** Homelab · Cockpit: die Lage auf einen Blick, Hinweise und wie es jedem Gerät geht. */ export function HomelabSeite() { const navigate = useNavigate() - const { ersatz, stand, laufend, hinweise } = useHomelabBereich() + const { ersatz, stand, laufend, hinweise, aktion } = useHomelabBereich() const mess = useHomelabMesswerte("1h", !!stand) const speicher = useHomelabSpeicher(!!stand) if (ersatz || !stand) return ersatz @@ -225,7 +226,12 @@ export function HomelabSeite() { {speicher.data?.bericht && ( - + aktion.mutate(a)} + /> )} diff --git a/frontend/src/views/Uebersicht.tsx b/frontend/src/views/Uebersicht.tsx index 7e8f4de..4e9fa01 100644 --- a/frontend/src/views/Uebersicht.tsx +++ b/frontend/src/views/Uebersicht.tsx @@ -225,7 +225,7 @@ function HomelabKarte({ verbindung }: { verbindung: Verbindung }) { const ERGEBNIS: Record = { eingespielt: "gruen", gruen: "gruen", zurueckgerollt: "bernstein", gelb: "bernstein", fehler: "rot", rot: "rot", - neustart: "cyan", info: "cyan", + neustart: "cyan", info: "cyan", aufgeraeumt: "gruen", } /** Was zuletzt eingespielt wurde, aus beiden Bereichen, neueste zuerst. */