@thingd/cli 0.70.0 → 0.72.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/package.json +2 -2
  2. package/dist/commands/cloud.d.ts +0 -3
  3. package/dist/commands/cloud.d.ts.map +0 -1
  4. package/dist/commands/cloud.js +0 -648
  5. package/dist/commands/mcp-connect.d.ts +0 -3
  6. package/dist/commands/mcp-connect.d.ts.map +0 -1
  7. package/dist/commands/mcp-connect.js +0 -154
  8. package/dist/dashboard/public/assets/favicon-CgGFvG_0.svg +0 -4
  9. package/dist/dashboard/public/assets/index-C6PkDB7y.css +0 -1
  10. package/dist/dashboard/public/assets/index-CsLTLPTP.js +0 -4
  11. package/dist/dashboard/public/index.html +0 -19
  12. package/dist/dashboard/server.d.ts +0 -6
  13. package/dist/dashboard/server.d.ts.map +0 -1
  14. package/dist/dashboard/server.js +0 -663
  15. package/dist/data-movement.d.ts +0 -6
  16. package/dist/data-movement.d.ts.map +0 -1
  17. package/dist/data-movement.js +0 -475
  18. package/dist/doctor.d.ts +0 -3
  19. package/dist/doctor.d.ts.map +0 -1
  20. package/dist/doctor.js +0 -108
  21. package/dist/index.d.ts +0 -47
  22. package/dist/index.d.ts.map +0 -1
  23. package/dist/index.js +0 -1221
  24. package/dist/install.d.ts +0 -3
  25. package/dist/install.d.ts.map +0 -1
  26. package/dist/install.js +0 -229
  27. package/dist/interactive.d.ts +0 -2
  28. package/dist/interactive.d.ts.map +0 -1
  29. package/dist/interactive.js +0 -3036
  30. package/dist/lib/cloud-api.d.ts +0 -143
  31. package/dist/lib/cloud-api.d.ts.map +0 -1
  32. package/dist/lib/cloud-api.js +0 -207
  33. package/dist/lib/cloud-config.d.ts +0 -33
  34. package/dist/lib/cloud-config.d.ts.map +0 -1
  35. package/dist/lib/cloud-config.js +0 -42
  36. package/dist/lib/mcp-config-writer.d.ts +0 -26
  37. package/dist/lib/mcp-config-writer.d.ts.map +0 -1
  38. package/dist/lib/mcp-config-writer.js +0 -86
  39. package/dist/logo.d.ts +0 -3
  40. package/dist/logo.d.ts.map +0 -1
  41. package/dist/logo.js +0 -8
  42. package/dist/mcp/cluster.d.ts +0 -69
  43. package/dist/mcp/cluster.d.ts.map +0 -1
  44. package/dist/mcp/cluster.js +0 -304
  45. package/dist/mcp/config.d.ts +0 -14
  46. package/dist/mcp/config.d.ts.map +0 -1
  47. package/dist/mcp/config.js +0 -67
  48. package/dist/mcp/http.d.ts +0 -25
  49. package/dist/mcp/http.d.ts.map +0 -1
  50. package/dist/mcp/http.js +0 -597
  51. package/dist/mcp/index.d.ts +0 -5
  52. package/dist/mcp/index.d.ts.map +0 -1
  53. package/dist/mcp/index.js +0 -3
  54. package/dist/mcp-http.d.ts +0 -3
  55. package/dist/mcp-http.d.ts.map +0 -1
  56. package/dist/mcp-http.js +0 -42
  57. package/dist/mcp.d.ts +0 -3
  58. package/dist/mcp.d.ts.map +0 -1
  59. package/dist/mcp.js +0 -28
  60. package/dist/paths.d.ts +0 -4
  61. package/dist/paths.d.ts.map +0 -1
  62. package/dist/paths.js +0 -14
@@ -1,154 +0,0 @@
1
- import { createInterface } from "node:readline/promises";
2
- import pc from "picocolors";
3
- import { listInstances, listProjects } from "../lib/cloud-api.js";
4
- import { readCloudConfig } from "../lib/cloud-config.js";
5
- import { printMcpConfigJson, updateAntigravityConfig, updateClaudeDesktopConfig, } from "../lib/mcp-config-writer.js";
6
- async function askQuestion(query) {
7
- const rl = createInterface({
8
- input: process.stdin,
9
- output: process.stderr,
10
- });
11
- try {
12
- return await rl.question(query);
13
- }
14
- finally {
15
- rl.close();
16
- }
17
- }
18
- export async function runMcpConnect(context) {
19
- const config = readCloudConfig();
20
- if (!config?.token || !config.url) {
21
- context.stderr.write(`${pc.red("Not logged in.")} Run ${pc.cyan("thingd cloud login")} first.\n`);
22
- return;
23
- }
24
- // ── Fetch projects ────────────────────────────────────────────────
25
- let projects;
26
- try {
27
- const result = await listProjects(config);
28
- projects = result.projects;
29
- }
30
- catch (err) {
31
- context.stderr.write(pc.red(`Failed to fetch projects: ${err}\n`));
32
- return;
33
- }
34
- if (projects.length === 0) {
35
- context.stderr.write(`${pc.red("No projects found.")} Create one with ${pc.cyan("thingd cloud project create <name>")}.\n`);
36
- return;
37
- }
38
- context.stderr.write(`\n${pc.bold("Select a project")}\n`);
39
- for (let i = 0; i < projects.length; i++) {
40
- const p = projects[i];
41
- if (p) {
42
- context.stderr.write(` [${i + 1}] ${pc.cyan(p.slug)} ${p.name}\n`);
43
- }
44
- }
45
- const projectChoice = await askQuestion(`Select project [1-${projects.length}] (default 1): `);
46
- const projectIndex = Math.max(0, Math.min(projects.length - 1, (Number(projectChoice.trim()) || 1) - 1));
47
- const selectedProject = projects[projectIndex];
48
- if (!selectedProject) {
49
- return;
50
- }
51
- context.stderr.write("\n");
52
- // ── Fetch instances ───────────────────────────────────────────────
53
- let instances;
54
- try {
55
- const result = await listInstances(config, selectedProject.id);
56
- instances = result.instances;
57
- }
58
- catch (err) {
59
- context.stderr.write(pc.red(`Failed to fetch instances: ${err}\n`));
60
- return;
61
- }
62
- if (instances.length === 0) {
63
- context.stderr.write(`${pc.red("No instances found for project.")} Create one with ${pc.cyan(`thingd cloud instance create ${selectedProject.slug} <name>`)}.\n`);
64
- return;
65
- }
66
- context.stderr.write(`${pc.bold("Select an instance")}\n`);
67
- for (let i = 0; i < instances.length; i++) {
68
- const inst = instances[i];
69
- if (inst) {
70
- context.stderr.write(` [${i + 1}] ${pc.cyan(inst.slug)} ${inst.name} ${pc.dim(inst.mcpUrl || "no URL")}\n`);
71
- }
72
- }
73
- const instanceChoice = await askQuestion(`Select instance [1-${instances.length}] (default 1): `);
74
- const instanceIndex = Math.max(0, Math.min(instances.length - 1, (Number(instanceChoice.trim()) || 1) - 1));
75
- const selectedInstance = instances[instanceIndex];
76
- if (!selectedInstance) {
77
- return;
78
- }
79
- context.stderr.write("\n");
80
- // ── Pre-fill URL and token ────────────────────────────────────────
81
- let mcpUrl = selectedInstance.mcpUrl || `${config.url}/mcp/${selectedProject.slug}/${selectedInstance.slug}`;
82
- let authToken = config.token;
83
- context.stderr.write(`${pc.bold("MCP Connection Details")}\n`);
84
- const urlAnswer = await askQuestion(`MCP URL (default ${pc.cyan(mcpUrl)}): `);
85
- if (urlAnswer.trim()) {
86
- mcpUrl = urlAnswer.trim();
87
- }
88
- const tokenAnswer = await askQuestion(`Auth Token (default ${pc.cyan(`${authToken.slice(0, 8)}...`)}): `);
89
- if (tokenAnswer.trim()) {
90
- authToken = tokenAnswer.trim();
91
- }
92
- context.stderr.write("\n");
93
- // ── Build config ──────────────────────────────────────────────────
94
- const mcpConfig = {
95
- url: mcpUrl,
96
- headers: {
97
- Authorization: `Bearer ${authToken}`,
98
- },
99
- };
100
- // ── Preview ───────────────────────────────────────────────────────
101
- context.stderr.write(`${pc.bold("Generated Config:")}\n`);
102
- context.stderr.write(` ${pc.dim(printMcpConfigJson(mcpConfig).replace(/\n/g, "\n "))}\n\n`);
103
- // ── Where to install ──────────────────────────────────────────────
104
- context.stderr.write(`${pc.bold("Where would you like to write the MCP configuration?")}\n`);
105
- context.stderr.write(` [1] Claude Desktop & Antigravity (Default)\n`);
106
- context.stderr.write(` [2] Claude Desktop only\n`);
107
- context.stderr.write(` [3] Antigravity only\n`);
108
- context.stderr.write(` [4] Print raw JSON only\n`);
109
- context.stderr.write(` [5] Print Cursor-compatible JSON\n\n`);
110
- const choice = (await askQuestion("Select option [1-5] (default 1): ")).trim() || "1";
111
- const showClaude = choice === "1" || choice === "2";
112
- const showAntigravity = choice === "1" || choice === "3";
113
- const showRaw = choice === "4";
114
- const showCursor = choice === "5";
115
- if (showClaude) {
116
- const result = updateClaudeDesktopConfig(mcpConfig);
117
- if (result.updated) {
118
- context.stderr.write(` ${pc.bold("Claude Desktop:")}\n`);
119
- context.stderr.write(` ${pc.green("✓")} Updated ${pc.cyan(result.path)}\n\n`);
120
- }
121
- else if (result.skipped) {
122
- context.stderr.write(` ${pc.bold("Claude Desktop:")}\n`);
123
- context.stderr.write(` ${pc.yellow("⊘")} Skipped: ${result.reason}\n\n`);
124
- }
125
- }
126
- if (showAntigravity) {
127
- const result = updateAntigravityConfig(mcpConfig);
128
- if (result.updated) {
129
- context.stderr.write(` ${pc.bold("Antigravity IDE:")}\n`);
130
- context.stderr.write(` ${pc.green("✓")} Updated ${pc.cyan(result.path)}\n\n`);
131
- }
132
- else if (result.skipped) {
133
- context.stderr.write(` ${pc.bold("Antigravity IDE:")}\n`);
134
- context.stderr.write(` ${pc.yellow("⊘")} Skipped: ${result.reason}\n\n`);
135
- }
136
- }
137
- if (showCursor) {
138
- context.stderr.write(` ${pc.bold("Cursor:")}\n`);
139
- context.stderr.write(` Paste this into Cursor Settings → Features → MCP → Add New MCP Server:\n\n`);
140
- context.stdout.write(`${printMcpConfigJson(mcpConfig)}\n`);
141
- }
142
- if (showRaw) {
143
- context.stdout.write(`${printMcpConfigJson(mcpConfig)}\n`);
144
- }
145
- if (showClaude) {
146
- context.stderr.write(`\n Restart Claude Desktop or Antigravity to activate.\n\n`);
147
- }
148
- else if (showCursor) {
149
- context.stderr.write(`\n Cursor activates immediately after pasting.\n\n`);
150
- }
151
- else if (showRaw) {
152
- context.stderr.write("\n");
153
- }
154
- }
@@ -1,4 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" role="img" aria-label="thingd">
2
- <rect width="48" height="48" rx="9" fill="#0b0d19"/>
3
- <text x="24" y="32" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="17" font-weight="700" text-anchor="middle"><tspan fill="#6366f1">{</tspan><tspan fill="#06b6d4">t</tspan><tspan fill="#a855f7">:d}</tspan></text>
4
- </svg>
@@ -1 +0,0 @@
1
- :root{--bg-base:#0b0d19;--bg-sidebar:#0a0c1ad9;--glass-bg:#111428a6;--glass-border:#ffffff14;--glass-highlight:#ffffff0a;--color-primary:#6366f1;--color-primary-glow:#6366f140;--color-primary-hover:#4f46e5;--color-accent:#a855f7;--color-cyan:#06b6d4;--text-main:#f3f4f6;--text-muted:#9ca3af;--text-dark:#6b7280;--color-success:#10b981;--color-success-glow:#10b98126;--color-warning:#f59e0b;--color-warning-glow:#f59e0b26;--color-danger:#ef4444;--color-danger-glow:#ef444426;--font-sans:"Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono:"JetBrains Mono", source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--shadow-premium:0 8px 32px 0 #0000005e;--shadow-glow:0 0 15px #6366f166}*{box-sizing:border-box;font-family:var(--font-sans);margin:0;padding:0}body,html{background-color:var(--bg-base);height:100%;color:var(--text-main);background-image:radial-gradient(circle at 10% 20%,#6366f114 0%,#0000 40%),radial-gradient(circle at 85% 80%,#a855f712 0%,#0000 45%);background-attachment:fixed;font-size:14px;overflow:hidden}.app-container{width:100vw;height:100vh;display:flex;position:relative}.sidebar{background:var(--bg-sidebar);border-right:1px solid var(--glass-border);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);z-index:10;flex-direction:column;width:260px;display:flex}.sidebar-brand{border-bottom:1px solid var(--glass-border);align-items:center;gap:12px;padding:24px;display:flex}.brand-logo{background:linear-gradient(135deg, var(--color-primary), var(--color-accent));color:#fff;text-transform:uppercase;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;font-size:14px;font-weight:700;display:flex;box-shadow:0 4px 12px #6366f14d}.brand-text{letter-spacing:-.5px;align-items:center;gap:6px;font-size:18px;font-weight:700;display:flex}.version-badge{color:var(--text-muted);background:#ffffff14;border-radius:4px;padding:2px 6px;font-size:10px;font-weight:500}.sidebar-nav{flex-direction:column;flex:1;gap:6px;padding:20px 12px;display:flex}.nav-item{color:var(--text-muted);border-radius:var(--radius-sm);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:12px;width:100%;padding:12px 16px;font-size:13.5px;font-weight:500;transition:all .25s;display:flex}.nav-item:hover{background:var(--glass-highlight);color:var(--text-main)}.nav-item.active{background:var(--color-primary-glow);color:#fff;font-weight:600;box-shadow:inset 0 0 0 1px #6366f14d}.nav-icon{fill:currentColor;opacity:.85;width:18px;height:18px}.sidebar-footer{border-top:1px solid var(--glass-border);padding:16px 20px}.status-indicator{color:var(--text-muted);align-items:center;gap:10px;font-size:12px;display:flex}.pulse-dot{background-color:var(--color-success);border-radius:50%;width:8px;height:8px;position:relative}.pulse-dot:after{content:"";background-color:var(--color-success);border-radius:50%;width:100%;height:100%;animation:1.8s infinite pulse-ring;position:absolute;top:0;left:0}@keyframes pulse-ring{0%{opacity:.8;transform:scale(1)}to{opacity:0;transform:scale(2.8)}}.main-panel{flex-direction:column;flex:1;height:100%;display:flex;position:relative;overflow:hidden}.topbar{border-bottom:1px solid var(--glass-border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:5;background:#0b0d1966;justify-content:space-between;align-items:center;height:70px;min-height:70px;padding:0 32px;display:flex}.topbar h1{letter-spacing:-.3px;font-size:20px;font-weight:700}.connection-meta{background:var(--glass-highlight);border:1px solid var(--glass-border);color:var(--text-muted);white-space:nowrap;border-radius:30px;align-items:center;gap:8px;padding:6px 16px;font-size:12px;display:flex;box-shadow:inset 0 1px #ffffff0d}.meta-label{color:var(--text-dark);text-transform:uppercase;letter-spacing:.5px;font-size:10px;font-weight:500}.meta-val{color:var(--text-main);font-weight:600}.meta-val.path-val{text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;max-width:260px;transition:max-width .2s;display:inline-block;overflow:hidden}@media (width<=1024px){.meta-val.path-val{max-width:160px}}@media (width<=768px){.meta-val.path-val{max-width:100px}}.meta-sep{opacity:.2;margin:0 4px}.topbar-right{align-items:center;gap:16px;display:flex}.view-viewport{flex:1;padding:32px;position:relative;overflow:hidden}.tab-panel{opacity:0;height:100%;transition:all .35s cubic-bezier(.16,1,.3,1);display:none;transform:translateY(8px)}.tab-panel.active{opacity:1;flex-direction:column;gap:24px;display:flex;transform:translateY(0)}.card{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-premium);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);flex-direction:column;display:flex;position:relative;overflow:hidden}.card:before{content:"";background:linear-gradient(90deg,#ffffff1f,#0000);height:1px;position:absolute;top:0;left:0;right:0}.card-header{border-bottom:1px solid var(--glass-border);padding:20px 24px}.card-header h2,.card-header h3{color:#fff;font-size:16px;font-weight:600}.card-body{flex:1;padding:24px}.card.fill-height{height:100%}.split-layout{flex:1;gap:24px;height:100%;display:flex;overflow:hidden}.list-side{flex-direction:column;width:280px;min-width:280px;display:flex}.inspect-side{flex-direction:column;flex:1;display:flex}.scroll-y{overflow-y:auto}.scroll-x{overflow-x:auto}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:#fff3}.btn{border-radius:var(--radius-sm);cursor:pointer;color:#fff;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:8px 16px;font-size:13px;font-weight:600;text-decoration:none;transition:all .2s;display:inline-flex}.btn-sm{padding:5px 10px;font-size:11px}.btn-primary{background:linear-gradient(135deg, var(--color-primary), var(--color-accent));box-shadow:0 4px 14px #6366f14d}.btn-primary:hover:not(:disabled){box-shadow:0 6px 18px #6366f173, var(--shadow-glow);transform:translateY(-1px)}.btn-secondary{background:var(--glass-highlight);border-color:var(--glass-border);color:var(--text-main)}.btn-secondary:hover:not(:disabled){background:#ffffff14;border-color:#fff3}.btn-success{background:linear-gradient(135deg, var(--color-success), #059669);box-shadow:0 4px 12px #10b98133}.btn-success:hover{box-shadow:0 6px 16px #10b98159}.btn-warning{background:linear-gradient(135deg, var(--color-warning), #d97706);box-shadow:0 4px 12px #f59e0b33}.btn-warning:hover{box-shadow:0 6px 16px #f59e0b59}.btn-danger{background:linear-gradient(135deg, var(--color-danger), #dc2626);box-shadow:0 4px 12px #ef444433}.btn-danger:hover{box-shadow:0 6px 16px #ef444459}.btn:disabled{opacity:.4;cursor:not-allowed}.metrics-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:20px;display:grid}.metric-card{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-premium);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);align-items:center;gap:20px;padding:24px;display:flex;position:relative;overflow:hidden}.metric-card:before{content:"";background:linear-gradient(90deg,#ffffff0f,#0000);height:1px;position:absolute;top:0;left:0;right:0}.metric-icon{border-radius:var(--radius-md);justify-content:center;align-items:center;width:48px;height:48px;display:flex}.metric-icon svg{fill:#fff;width:24px;height:24px}.objects-icon{background:#6366f126;border:1px solid #6366f14d}.objects-icon svg{fill:var(--color-primary)}.events-icon{background:#a855f726;border:1px solid #a855f74d}.events-icon svg{fill:var(--color-accent)}.queues-icon{background:#06b6d426;border:1px solid #06b6d44d}.queues-icon svg{fill:var(--color-cyan)}.dead-icon{background:#ef444426;border:1px solid #ef44444d}.dead-icon svg{fill:var(--color-danger)}.metric-body{flex-direction:column;display:flex}.metric-num{color:#fff;letter-spacing:-.5px;font-size:28px;font-weight:700;line-height:1.1}.metric-title{color:var(--text-muted);margin-top:4px;font-size:12px;font-weight:500}.row-flex{gap:24px;display:flex}.gap-lg{gap:24px}.gap-md{gap:16px}.gap-sm{gap:8px}.flex-1{flex:1}.flex-2{flex:2}.flex-3{flex:3}.flex-column{flex-direction:column;display:flex}.flex-header,.side-header{justify-content:space-between;align-items:center;display:flex}.info-table{flex-direction:column;gap:16px;display:flex}.info-row{border-bottom:1px solid #ffffff0a;justify-content:space-between;align-items:center;padding-bottom:12px;display:flex}.info-row:last-child{border-bottom:none;padding-bottom:0}.info-label{color:var(--text-muted);font-weight:500}.info-val{color:#fff;font-weight:600}.info-val.code{font-family:var(--font-mono);word-break:break-all;background:#00000040;border-radius:4px;padding:4px 8px;font-size:12px}.terminal-panel{border:1px solid var(--glass-border);font-family:var(--font-mono);background:#05060c99;flex-direction:column;display:flex;padding:0!important}.terminal-header{background:#ffffff08;border-bottom:1px solid #ffffff0d;align-items:center;gap:6px;padding:8px 16px;display:flex}.terminal-dot{border-radius:50%;width:10px;height:10px}.terminal-dot.red{background-color:var(--color-danger)}.terminal-dot.yellow{background-color:var(--color-warning)}.terminal-dot.green{background-color:var(--color-success)}.terminal-title{color:var(--text-dark);text-transform:uppercase;margin-left:6px;font-size:11px;font-weight:600}.terminal-body{flex:1;padding:16px;font-size:12px;line-height:1.6;overflow-y:auto}.log-line{color:var(--text-main);word-break:break-all;margin-bottom:6px}.text-muted{color:var(--text-muted)!important}.text-success{color:var(--color-success)!important}.text-warning{color:var(--color-warning)!important}.text-danger{color:var(--color-danger)!important}.text-center{text-align:center}.sidebar-list-item{border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;width:100%;margin-bottom:4px;padding:12px 16px;font-weight:500;transition:all .2s;display:flex}.sidebar-list-item:hover{color:var(--text-main);background:#ffffff0a}.sidebar-list-item.active{color:#fff;background:#ffffff0f;border:1px solid #ffffff14;font-weight:600}.item-count-badge{font-family:var(--font-mono);color:var(--color-cyan);background:#0000004d;border-radius:10px;padding:2px 6px;font-size:11px}.scroll-table-wrapper{flex:1;width:100%;overflow:auto}.data-table{border-collapse:collapse;text-align:left;width:100%;font-size:13px}.data-table th{color:var(--text-muted);border-bottom:1px solid var(--glass-border);z-index:1;background:#0000001a;padding:14px 16px;font-weight:600;position:sticky;top:0}.data-table td{color:var(--text-main);vertical-align:middle;border-bottom:1px solid #ffffff08;padding:14px 16px}.data-table tr:hover td{background:#ffffff05}.data-table .code-cell{font-family:var(--font-mono);text-overflow:ellipsis;white-space:nowrap;max-width:250px;font-size:11.5px;overflow:hidden}.data-table .text-cell{white-space:nowrap;text-overflow:ellipsis;max-width:320px;overflow:hidden}.timeline-viewport{padding:12px}.timeline{flex-direction:column;gap:16px;padding-left:20px;display:flex;position:relative}.timeline:before{content:"";background:#ffffff0d;width:2px;position:absolute;top:8px;bottom:8px;left:5px}.timeline-item{position:relative}.timeline-marker{background:var(--bg-base);border:2px solid var(--color-primary);z-index:2;border-radius:50%;width:12px;height:12px;transition:all .2s;position:absolute;top:6px;left:-20px}.timeline-item:hover .timeline-marker{box-shadow:0 0 10px var(--color-primary);transform:scale(1.3)}.timeline-card{border-radius:var(--radius-md);background:#ffffff05;border:1px solid #ffffff0a;padding:16px;transition:all .2s}.timeline-card:hover{background:#ffffff08;border-color:#ffffff14}.timeline-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.timeline-title{align-items:center;gap:10px;display:flex}.timeline-badge{text-transform:uppercase;letter-spacing:.3px;background:#ffffff0f;border-radius:30px;padding:2px 8px;font-size:11px;font-weight:700}.timeline-time{color:var(--text-dark);font-size:11px}.timeline-text{color:var(--text-main);margin-bottom:8px;font-size:13.5px;line-height:1.5}.timeline-data{font-family:var(--font-mono);border-radius:var(--radius-sm);color:var(--text-muted);white-space:pre-wrap;background:#00000040;border:1px solid #ffffff08;padding:8px 12px;font-size:11px}.timeline-empty{text-align:center;color:var(--text-muted);padding:40px}.tabs-subnav{border-bottom:1px solid var(--glass-border);gap:8px;margin-bottom:20px;display:flex}.subnav-item{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:10px 16px;font-size:13px;font-weight:600;transition:all .2s}.subnav-item:hover{color:var(--text-main)}.subnav-item.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.subtab-content{flex:1;display:none}.subtab-content.active{flex-direction:column;display:flex}.badge{text-transform:uppercase;border-radius:20px;align-items:center;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.badge-ready{background-color:var(--color-success-glow);color:var(--color-success)}.badge-leased{color:#818cf8;background-color:#6366f126}.badge-dead{background-color:var(--color-danger-glow);color:var(--color-danger)}.search-form-grid{gap:16px;margin-bottom:20px;display:flex}.form-group{flex-direction:column;gap:8px;margin-bottom:16px;display:flex}.form-group label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:12px;font-weight:600}.form-input{border:1px solid var(--glass-border);border-radius:var(--radius-sm);color:#fff;background:#00000040;outline:none;padding:10px 14px;font-size:13px;transition:all .2s}.form-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-glow)}.form-input.code{font-family:var(--font-mono);font-size:12px}.search-input-group{gap:10px;display:flex}.search-input{flex:1}.search-results-section{border-top:1px solid var(--glass-border);flex-direction:column;flex:1;margin-top:8px;padding-top:24px;display:flex}.section-title{color:var(--text-muted);margin-bottom:16px;font-size:13.5px;font-weight:600}.highlighted-match{color:var(--color-warning);background:#f59e0b33;border-radius:4px;padding:2px 4px;font-weight:600}.modal-overlay{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:100;opacity:0;pointer-events:none;background:#04050ab3;justify-content:center;align-items:center;transition:all .3s cubic-bezier(.16,1,.3,1);display:flex;position:fixed;inset:0}.modal-overlay.active{opacity:1;pointer-events:auto}.modal-card{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-lg);width:480px;max-width:90%;box-shadow:var(--shadow-premium);flex-direction:column;transition:all .3s cubic-bezier(.16,1,.3,1);display:flex;transform:translateY(20px)}.modal-overlay.active .modal-card{transform:translateY(0)}.modal-card.wide{width:680px}.modal-header{border-bottom:1px solid var(--glass-border);justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.modal-header h3{color:#fff;font-size:16px;font-weight:600}.modal-close-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;font-size:24px;line-height:1;transition:color .2s}.modal-close-btn:hover{color:#fff}.modal-body{padding:24px}.modal-footer{justify-content:flex-end;gap:12px;margin-top:24px;display:flex}.input-tip{color:var(--text-dark);margin-top:4px;font-size:11.5px}.code-view{font-family:var(--font-mono);border-radius:var(--radius-sm);border:1px solid var(--glass-border);color:var(--text-main);white-space:pre-wrap;background:#0000004d;padding:12px;font-size:11.5px}.job-detail-card{border-radius:var(--radius-md);background:#ffffff04;border:1px solid #ffffff08;flex-direction:column;gap:14px;margin-bottom:20px;padding:16px;display:flex}.info-group{flex-direction:column;gap:6px;display:flex}.info-group label{color:var(--text-dark);text-transform:uppercase;font-size:11px;font-weight:700}.ops-section-title{color:var(--text-muted);text-transform:uppercase;margin-bottom:12px;font-size:12.5px;font-weight:600}.queue-stats-bar{gap:8px;margin-top:4px;display:flex}.toast-container{z-index:1000;flex-direction:column;gap:10px;display:flex;position:fixed;bottom:24px;right:24px}.toast{background:var(--glass-bg);border-left:4px solid var(--color-primary);border-top:1px solid var(--glass-border);border-bottom:1px solid var(--glass-border);border-right:1px solid var(--glass-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-premium);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);align-items:center;gap:12px;min-width:250px;max-width:380px;padding:14px 20px;animation:.3s cubic-bezier(.16,1,.3,1) forwards slide-in;display:flex}.toast.success{border-left-color:var(--color-success)}.toast.warning{border-left-color:var(--color-warning)}.toast.error{border-left-color:var(--color-danger)}.toast-message{color:#fff;font-size:13px;font-weight:500}@keyframes slide-in{0%{opacity:0;transform:translate(50px)}to{opacity:1;transform:translate(0)}}.loader{border:2.5px solid #ffffff0d;border-top:2.5px solid var(--color-primary);border-radius:50%;width:24px;height:24px;margin:20px auto;animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.empty-state{text-align:center;color:var(--text-muted);padding:40px}.mt-md{margin-top:16px}@keyframes flash-highlight{0%{background-color:#ffd54f66}to{background-color:#0000}}.flash-highlight{animation:1.5s ease-out flash-highlight}tbody tr,.sidebar-list-item,.timeline-item,.log-line{will-change:transform, opacity}.json-editor-container.svelte-1w5oz74{flex-direction:column;width:100%;margin-bottom:8px;display:flex}.json-editor-header.svelte-1w5oz74{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.json-editor-label.svelte-1w5oz74{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:12px;font-weight:600}.json-editor-tabs.svelte-1w5oz74{border-radius:var(--radius-sm);border:1px solid var(--glass-border);background:#00000040;gap:4px;padding:2px;display:flex}.json-tab-btn.svelte-1w5oz74{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;gap:6px;padding:4px 10px;font-size:11.5px;font-weight:600;transition:all .2s;display:inline-flex}.json-tab-btn.svelte-1w5oz74:hover{color:var(--text-main);background:#ffffff08}.json-tab-btn.active.svelte-1w5oz74{color:#fff;background:#6366f126;box-shadow:inset 0 0 0 1px #6366f140}.tab-icon.svelte-1w5oz74{fill:currentColor;width:12px;height:12px}.json-editor-content.svelte-1w5oz74{width:100%}.raw-editor-view.svelte-1w5oz74{flex-direction:column;width:100%;display:flex}.raw-textarea.svelte-1w5oz74{resize:vertical;width:100%;min-height:110px}.raw-textarea.invalid-border.svelte-1w5oz74{border-color:#ef444480}.raw-textarea.invalid-border.svelte-1w5oz74:focus{border-color:var(--color-danger);box-shadow:0 0 0 3px var(--color-danger-glow)}.json-editor-status-bar.svelte-1w5oz74{justify-content:space-between;align-items:center;margin-top:6px;padding:0 2px;display:flex}.status-badge.svelte-1w5oz74{align-items:center;gap:6px;font-size:11.5px;font-weight:600;display:flex}.status-dot.svelte-1w5oz74{border-radius:50%;width:6px;height:6px}.status-badge.valid.svelte-1w5oz74{color:var(--color-success)}.status-badge.valid.svelte-1w5oz74 .status-dot:where(.svelte-1w5oz74){background-color:var(--color-success);box-shadow:0 0 6px var(--color-success)}.status-badge.invalid.svelte-1w5oz74{color:var(--color-danger);cursor:help}.status-badge.invalid.svelte-1w5oz74 .status-dot:where(.svelte-1w5oz74){background-color:var(--color-danger);box-shadow:0 0 6px var(--color-danger)}.error-msg-banner.svelte-1w5oz74{border-radius:var(--radius-sm);color:#fca5a5;font-size:11.5px;font-family:var(--font-mono);word-break:break-all;background:#ef444414;border:1px solid #ef444426;margin-top:8px;padding:8px 12px;line-height:1.4}.visual-editor-view.svelte-1w5oz74{width:100%}.error-visual-fallback.svelte-1w5oz74{background:#ef444408;border-color:#ef44441a}.visual-rows-container.svelte-1w5oz74{border:1px solid var(--glass-border);border-radius:var(--radius-sm);background:#00000026;flex-direction:column;gap:8px;max-height:280px;padding:12px;display:flex;overflow-y:auto}.empty-rows-state.svelte-1w5oz74{text-align:center;color:var(--text-muted);padding:24px 12px;font-size:12px}.rows-header-grid.svelte-1w5oz74{border-bottom:1px solid var(--glass-border);grid-template-columns:140px 100px 1fr 34px;gap:8px;padding:0 4px 6px;display:grid}.header-col.svelte-1w5oz74{color:var(--text-dark);text-transform:uppercase;letter-spacing:.5px;font-size:10px;font-weight:700}.rows-list.svelte-1w5oz74{flex-direction:column;gap:8px;margin-top:8px;display:flex}.row-builder-item.svelte-1w5oz74{grid-template-columns:140px 100px 1fr 34px;align-items:center;gap:8px;display:grid}.row-builder-item.svelte-1w5oz74 .form-input{padding:6px 10px;font-size:12.5px}.key-input.svelte-1w5oz74{font-family:var(--font-mono)}.type-select.svelte-1w5oz74{cursor:pointer}.value-input-wrapper.svelte-1w5oz74{width:100%;display:flex}.val-input.svelte-1w5oz74,.value-select.svelte-1w5oz74{width:100%}.null-placeholder.svelte-1w5oz74{width:100%;color:var(--text-dark);border:1px dashed var(--glass-border);border-radius:var(--radius-sm);background:#00000026;padding:6px 10px;font-size:12.5px;font-style:italic}.val-textarea.svelte-1w5oz74{resize:vertical;width:100%;min-height:31px;padding-top:6px;padding-bottom:6px}.remove-row-btn.svelte-1w5oz74{border-radius:var(--radius-sm);justify-content:center;align-items:center;width:32px;height:32px;padding:0;display:flex}.remove-row-btn.svelte-1w5oz74:hover{background:var(--color-danger-glow);color:var(--color-danger);border-color:#ef44444d}.visual-actions-footer.svelte-1w5oz74{border-top:1px solid #ffffff0a;justify-content:flex-start;margin-top:10px;padding-top:10px;display:flex}
@@ -1,4 +0,0 @@
1
- (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),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=Array.isArray,t=Array.prototype.indexOf,n=Array.prototype.includes,r=Array.from,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyDescriptors,s=Object.prototype,c=Array.prototype,l=Object.getPrototypeOf,u=Object.isExtensible;function d(e){return typeof e==`function`}var f=()=>{};function p(e){return e()}function m(e){for(var t=0;t<e.length;t++)e[t]()}function h(){var e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var g=1024,_=2048,v=4096,y=8192,b=16384,x=32768,S=1<<25,C=65536,w=1<<19,ee=1<<20,T=1<<25,te=65536,ne=1<<21,re=1<<22,ie=1<<23,E=Symbol(`$state`),ae=Symbol(`legacy props`),oe=Symbol(``),D=Symbol(`attributes`),se=Symbol(`class`),ce=Symbol(`style`),le=Symbol(`text`),ue=Symbol(`form reset`),de=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},fe=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`);function pe(e){throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function me(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function he(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function ge(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function _e(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function ve(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function ye(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function be(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function xe(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function Se(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function Ce(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function we(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var Te={},O=Symbol(`uninitialized`),Ee=`http://www.w3.org/1999/xhtml`,De=`http://www.w3.org/2000/svg`,Oe=`http://www.w3.org/1998/Math/MathML`;function ke(){console.warn(`https://svelte.dev/e/derived_inert`)}function Ae(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function je(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function Me(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var k=!1;function Ne(e){k=e}var A;function j(e){if(e===null)throw Ae(),Te;return A=e}function Pe(){return j(fn(A))}function M(e){if(k){if(fn(A)!==null)throw Ae(),Te;A=e}}function N(e=1){if(k){for(var t=e,n=A;t--;)n=fn(n);A=n}}function Fe(e=!0){for(var t=0,n=A;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else(r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=fn(n);e&&n.remove(),n=i}}function Ie(e){if(!e||e.nodeType!==8)throw Ae(),Te;return e.data}function Le(e){return e===this.v}function P(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function Re(e){return!P(e,this.v)}var ze=!1;function Be(){ze=!0}var F=null;function Ve(e){F=e}function He(e,t=!1,n){F={p:F,i:!1,c:null,e:null,s:e,x:null,r:W,l:ze&&!t?{s:null,u:null,$:[]}:null}}function Ue(e){var t=F,n=t.e;if(n!==null){t.e=null;for(var r of n)wn(r)}return e!==void 0&&(t.x=e),t.i=!0,F=t.p,e??{}}function We(){return!ze||F!==null&&F.l===null}var Ge=[];function Ke(){var e=Ge;Ge=[],m(e)}function qe(e){if(Ge.length===0&&!At){var t=Ge;queueMicrotask(()=>{t===Ge&&Ke()})}Ge.push(e)}function Je(){for(;Ge.length>0;)Ke()}function Ye(e){var t=W;if(t===null)return U.f|=ie,e;if(!(t.f&32768)&&!(t.f&4))throw e;Xe(e,t)}function Xe(e,t){if(!(t!==null&&t.f&16384)){for(;t!==null;){if(t.f&128){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}}var Ze=~(_|v|g);function I(e,t){e.f=e.f&Ze|t}function Qe(e){e.f&512||e.deps===null?I(e,g):I(e,v)}function $e(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=te,$e(t.deps))}function et(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),$e(e.deps),I(e,g)}var tt=!1;function nt(e){var t=tt;try{return tt=!1,[e(),tt]}finally{tt=t}}function rt(e){k&&dn(e)!==null&&mn(e)}var it=!1;function at(){it||(it=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[ue]?.()})},{capture:!0}))}function ot(e){var t=U,n=W;Qn(null),$n(null);try{return e()}finally{Qn(t),$n(n)}}function st(e,t,n,r=n){e.addEventListener(t,()=>ot(n));let i=e[ue];i?e[ue]=()=>{i(),r(!0)}:e[ue]=()=>r(!0),at()}function ct(e){let t=0,n=Yt(0),r;return()=>{xn()&&(G(n),jn(()=>(t===0&&(r=br(()=>e(()=>$t(n)))),t+=1,()=>{qe(()=>{--t,t===0&&(r?.(),r=void 0,$t(n))})})))}}var lt=C|w;function ut(e,t,n,r){new dt(e,t,n,r)}var dt=class{parent;is_pending=!1;transform_error;#e;#t=k?A:null;#n;#r;#i;#a=null;#o=null;#s=null;#c=null;#l=0;#u=0;#d=!1;#f=new Set;#p=new Set;#m=null;#h=ct(()=>(this.#m=Yt(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=W;t.b=this,t.f|=128,n(e)},this.parent=W.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=Mn(()=>{if(k){let e=this.#t;Pe();let t=e.data===`[!`;if(e.data.startsWith(`[?`)){let t=JSON.parse(e.data.slice(2));this.#_(t)}else t?this.#v():this.#g()}else this.#y()},lt),k&&(this.#e=A)}#g(){try{this.#a=Nn(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed;t&&(this.#s=Nn(()=>{t(this.#e,()=>e,()=>()=>{})}))}#v(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=Nn(()=>e(this.#e)),qe(()=>{var e=this.#c=document.createDocumentFragment(),t=un();e.append(t),this.#a=this.#x(()=>Nn(()=>this.#r(t))),this.#u===0&&(this.#e.before(e),this.#c=null,Bn(this.#o,()=>{this.#o=null}),this.#b(L))}))}#y(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=Nn(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();Wn(this.#a,e);let t=this.#n.pending;this.#o=Nn(()=>t(this.#e))}else this.#b(L)}catch(e){this.error(e)}}#b(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){et(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#x(e){var t=W,n=U,r=F;$n(this.#i),Qn(this.#i),Ve(this.#i.ctx);try{return It.ensure(),e()}catch(e){return Ye(e),null}finally{$n(t),Qn(n),Ve(r)}}#S(e,t){if(!this.has_pending_snippet()){this.parent&&this.parent.#S(e,t);return}this.#u+=e,this.#u===0&&(this.#b(t),this.#o&&Bn(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))}update_pending_count(e,t){this.#S(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,qe(()=>{this.#d=!1,this.#m&&Zt(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),G(this.#m)}error(e){if(!this.#n.onerror&&!this.#n.failed)throw e;L?.is_fork?(this.#a&&L.skip_effect(this.#a),this.#o&&L.skip_effect(this.#o),this.#s&&L.skip_effect(this.#s),L.oncommit(()=>{this.#C(e)})):this.#C(e)}#C(e){this.#a&&=(Ln(this.#a),null),this.#o&&=(Ln(this.#o),null),this.#s&&=(Ln(this.#s),null),k&&(j(this.#t),N(),j(Fe()));var t=this.#n.onerror;let n=this.#n.failed;var r=!1,i=!1;let a=()=>{if(r){Me();return}r=!0,i&&we(),this.#s!==null&&Bn(this.#s,()=>{this.#s=null}),this.#x(()=>{this.#y()})},o=e=>{try{i=!0,t?.(e,a),i=!1}catch(e){Xe(e,this.#i&&this.#i.parent)}n&&(this.#s=this.#x(()=>{try{return Nn(()=>{var t=W;t.b=this,t.f|=128,n(this.#e,()=>e,()=>a)})}catch(e){return Xe(e,this.#i.parent),null}}))};qe(()=>{var t;try{t=this.transform_error(e)}catch(e){Xe(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>Xe(e,this.#i&&this.#i.parent)):o(t)})}};function ft(e,t,n,r){let i=We()?gt:bt;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=W,c=pt(),l=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function u(e){if(!(s.f&16384)){c();try{r([...o,...e])}catch(e){Xe(e,s)}mt()}}var d=ht();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>vt(e))).then(u).catch(e=>Xe(e,s)).finally(d)}l?l.then(()=>{c(),f(),mt()}):f()}function pt(){var e=W,t=U,n=F,r=L;return function(i=!0){$n(e),Qn(t),Ve(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function mt(e=!0){$n(null),Qn(null),Ve(null),e&&L?.deactivate()}function ht(){var e=W,t=e.b,n=L,r=!!t?.is_rendered();return t?.update_pending_count(1,n),n.increment(r,e),()=>{t?.update_pending_count(-1,n),n.decrement(r,e)}}function gt(e){var t=2|_;return W!==null&&(W.f|=w),{ctx:F,deps:null,effects:null,equals:Le,f:t,fn:e,reactions:null,rv:0,v:O,wv:0,parent:W,ac:null}}var _t=Symbol(`obsolete`);function vt(e,t,n){let r=W;r===null&&me();var i=void 0,a=Yt(O),o=!U,s=new Set;return An(()=>{var t=W,n=h();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==de&&n.reject(e)}).finally(mt)}catch(e){n.reject(e),mt()}var c=L;if(o){if(t.f&32768)var l=ht();if(r.b?.is_rendered())c.async_deriveds.get(t)?.reject(_t);else for(let e of s.values())e.reject(_t);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==_t&&(c.activate(),t?(a.f|=ie,Zt(a,t)):(a.f&8388608&&(a.f^=ie),Zt(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),Sn(()=>{for(let e of s)e.reject(_t)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function yt(e){let t=gt(e);return tr(t),t}function bt(e){let t=gt(e);return t.equals=Re,t}function xt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)Ln(t[n])}}function St(e){var t,n=W,r=e.parent;if(!Yn&&r!==null&&e.v!==O&&r.f&24576)return ke(),e.v;$n(r);try{e.f&=~te,xt(e),t=pr(e)}finally{$n(n)}return t}function Ct(e){var t=St(e);if(!e.equals(t)&&(e.wv=ur(),(!L?.is_fork||e.deps===null)&&(L===null?e.v=t:(L.capture(e,t,!0),Dt?.capture(e,t,!0)),e.deps===null))){I(e,g);return}Yn||(Ot===null?Qe(e):(xn()||L?.is_fork)&&Ot.set(e,t))}function wt(e){if(e.effects!==null)for(let t of e.effects)(t.teardown||t.ac)&&(t.teardown?.(),t.ac!==null&&ot(()=>{t.ac.abort(de),t.ac=null}),t.fn!==null&&(t.teardown=f),hr(t,0),Fn(t))}function Tt(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&gr(t)}var Et=null,L=null,Dt=null,Ot=null,kt=null,At=!1,jt=!1,Mt=null,Nt=null,Pt=0,Ft=1,It=class e{id=Ft++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;#r=new Set;#i=new Set;#a=0;#o=new Map;#s=null;#c=[];#l=[];#u=new Set;#d=new Set;#f=new Map;#p=new Set;is_fork=!1;#m=!1;constructor(){Et===null?Et=this:(Et.#n=this,this.#t=Et),Et=this}#h(){if(this.is_fork)return!0;for(let n of this.#o.keys()){for(var e=n,t=!1;e.parent!==null;){if(this.#f.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#p.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#f.get(e);if(n){this.#f.delete(e);for(var r of n.d)I(r,_),t(r);for(r of n.m)I(r,v),t(r)}this.#p.add(e)}#g(){this.#e=!0,Pt++>1e3&&(this.#x(),Rt());for(let e of this.#u)this.#d.delete(e),I(e,_),this.schedule(e);for(let e of this.#d)I(e,v),this.schedule(e);let t=this.#c;this.#c=[],this.apply();var n=Mt=[],r=[],i=Nt=[];for(let e of t)try{this.#_(e,n,r)}catch(t){throw Gt(e),this.#h()||this.discard(),t}if(L=null,i.length>0){var a=e.ensure();for(let e of i)a.schedule(e)}if(Mt=null,Nt=null,this.#h()){this.#b(r),this.#b(n);for(let[e,t]of this.#f)Wt(e,t);i.length>0&&L.#g();return}let o=this.#v();if(o){this.#b(r),this.#b(n),o.#y(this);return}this.#u.clear(),this.#d.clear();for(let e of this.#r)e(this);this.#r.clear(),Dt=this,Bt(r),Bt(n),Dt=null,this.#s?.resolve();var s=L;if(this.#a===0&&(this.#c.length===0||s!==null)&&this.#x(),this.#c.length>0)if(s!==null){let e=s;e.#c.push(...this.#c.filter(t=>!e.#c.includes(t)))}else s=this;s!==null&&s.#g()}#_(e,t,n){e.f^=g;for(var r=e.first;r!==null;){var i=r.f,a=(i&96)!=0;if(!(a&&i&1024||i&8192||this.#f.has(r))&&r.fn!==null){a?r.f^=g:i&4?t.push(r):dr(r)&&(i&16&&this.#d.add(r),gr(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#v(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=e.#t}return null}#y(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#u,e.#d);let t=e=>{var n=e.reactions;if(n!==null&&!(e.f&2&&!(e.f&6144)))for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(this.#d.delete(i),I(i,_),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#x(),L=this,this.#g()}#b(e){for(var t=0;t<e.length;t+=1)et(e[t],this.#u,this.#d)}capture(e,t,n=!1){e.v!==O&&!this.previous.has(e)&&this.previous.set(e,e.v),e.f&8388608||(this.current.set(e,[t,n]),Ot?.set(e,t)),this.is_fork||(e.v=t)}activate(){L=this}deactivate(){L=null,Ot=null}flush(){try{jt=!0,L=this,this.#g()}finally{Pt=0,kt=null,Mt=null,Nt=null,jt=!1,L=null,Ot=null,qt.clear()}}discard(){for(let e of this.#i)e(this);this.#i.clear();for(let e of this.async_deriveds.values())e.reject(_t);this.#x(),this.#s?.resolve()}register_created_effect(e){this.#l.push(e)}increment(e,t){if(this.#a+=1,e){let e=this.#o.get(t)??0;this.#o.set(t,e+1)}}decrement(e,t){if(--this.#a,e){let e=this.#o.get(t)??0;e===1?this.#o.delete(t):this.#o.set(t,e-1)}this.#m||(this.#m=!0,qe(()=>{this.#m=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)this.#u.add(t);for(let e of t)this.#d.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#i.add(e)}settled(){return(this.#s??=h()).promise}static ensure(){if(L===null){let t=L=new e;!jt&&!At&&qe(()=>{t.#e||t.flush()})}return L}apply(){Ot=null}schedule(e){if(kt=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)){e.b.defer_effect(e);return}for(var t=e;t.parent!==null;){t=t.parent;var n=t.f;if(Mt!==null&&t===W&&(U===null||!(U.f&2)))return;if(n&96){if(!(n&1024))return;t.f^=g}}this.#c.push(t)}#x(){if(this.linked){var e=this.#t,t=this.#n;e===null||(e.#n=t),t===null?Et=e:t.#t=e,this.linked=!1}}};function Lt(e){var t=At;At=!0;try{var n;for(e&&(L!==null&&!L.is_fork&&L.flush(),n=e());;){if(Je(),L===null)return n;L.flush()}}finally{At=t}}function Rt(){try{ye()}catch(e){Xe(e,kt)}}var zt=null;function Bt(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var r=e[n++];if(!(r.f&24576)&&dr(r)&&(zt=new Set,gr(r),r.deps===null&&r.first===null&&r.nodes===null&&r.teardown===null&&r.ac===null&&zn(r),zt?.size>0)){qt.clear();for(let e of zt){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)zt.has(n)&&(zt.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||gr(n)}}zt.clear()}}zt=null}}function Vt(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(let i of e.reactions){let e=i.f;e&2?Vt(i,t,n,r):e&4194320&&!(e&2048)&&Ht(i,t,r)&&(I(i,_),Ut(i))}}function Ht(e,t,r){let i=r.get(e);if(i!==void 0)return i;if(e.deps!==null)for(let i of e.deps){if(n.call(t,i))return!0;if(i.f&2&&Ht(i,t,r))return r.set(i,!0),!0}return r.set(e,!1),!1}function Ut(e){L.schedule(e)}function Wt(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),I(e,g);for(var n=e.first;n!==null;)Wt(n,t),n=n.next}}function Gt(e){I(e,g);for(var t=e.first;t!==null;)Gt(t),t=t.next}var Kt=new Set,qt=new Map,Jt=!1;function Yt(e,t){return{f:0,v:e,reactions:null,equals:Le,rv:0,wv:0}}function Xt(e,t){let n=Yt(e,t);return tr(n),n}function R(e,t=!1,n=!0){let r=Yt(e);return t||(r.equals=Re),ze&&n&&F!==null&&F.l!==null&&(F.l.s??=[]).push(r),r}function z(e,t,n=!1){return U!==null&&(!Zn||U.f&131072)&&We()&&U.f&4325394&&(er===null||!er.has(e))&&Ce(),Zt(e,n?tn(t):t,Nt)}function Zt(e,t,n=null){if(!e.equals(t)){qt.set(e,Yn?t:e.v);var r=It.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&St(t),Ot===null&&Qe(t)}e.wv=ur(),en(e,_,n),We()&&W!==null&&W.f&1024&&!(W.f&96)&&(ir===null?ar([e]):ir.push(e)),!r.is_fork&&Kt.size>0&&!Jt&&Qt()}return t}function Qt(){Jt=!1;for(let e of Kt){e.f&1024&&I(e,v);let t;try{t=dr(e)}catch{t=!0}t&&gr(e)}Kt.clear()}function $t(e){z(e,e.v+1)}function en(e,t,n){var r=e.reactions;if(r!==null)for(var i=We(),a=r.length,o=0;o<a;o++){var s=r[o],c=s.f;if(!(!i&&s===W)){var l=(c&_)===0;if(l&&I(s,t),c&131072)Kt.add(s);else if(c&2){var u=s;Ot?.delete(u),c&65536||(c&512&&(W===null||!(W.f&2097152))&&(s.f|=te),en(u,v,n))}else if(l){var d=s;c&16&&zt!==null&&zt.add(d),n===null?Ut(d):n.push(d)}}}}function tn(t){if(typeof t!=`object`||!t||E in t)return t;let n=l(t);if(n!==s&&n!==c)return t;var r=new Map,i=e(t),o=Xt(0),u=null,d=cr,f=e=>{if(cr===d)return e();var t=U,n=cr;Qn(null),lr(d);var r=e();return Qn(t),lr(n),r};return i&&r.set(`length`,Xt(t.length,u)),new Proxy(t,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&xe();var i=r.get(t);return i===void 0?f(()=>{var e=Xt(n.value,u);return r.set(t,e),e}):z(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>Xt(O,u));r.set(t,e),$t(o)}}else z(n,O),$t(o);return!0},get(e,n,i){if(n===E)return t;var o=r.get(n),s=n in e;if(o===void 0&&(!s||a(e,n)?.writable)&&(o=f(()=>Xt(tn(s?e[n]:O),u)),r.set(n,o)),o!==void 0){var c=G(o);return c===O?void 0:c}return Reflect.get(e,n,i)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&`value`in n){var i=r.get(t);i&&(n.value=G(i))}else if(n===void 0){var a=r.get(t),o=a?.v;if(a!==void 0&&o!==O)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,t){if(t===E)return!0;var n=r.get(t),i=n!==void 0&&n.v!==O||Reflect.has(e,t);return(n!==void 0||W!==null&&(!i||a(e,t)?.writable))&&(n===void 0&&(n=f(()=>Xt(i?tn(e[t]):O,u)),r.set(t,n)),G(n)===O)?!1:i},set(e,t,n,s){var c=r.get(t),l=t in e;if(i&&t===`length`)for(var d=n;d<c.v;d+=1){var p=r.get(d+``);p===void 0?d in e&&(p=f(()=>Xt(O,u)),r.set(d+``,p)):z(p,O)}if(c===void 0)(!l||a(e,t)?.writable)&&(c=f(()=>Xt(void 0,u)),z(c,tn(n)),r.set(t,c));else{l=c.v!==O;var m=f(()=>tn(n));z(c,m)}var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(s,n),!l){if(i&&typeof t==`string`){var g=r.get(`length`),_=Number(t);Number.isInteger(_)&&_>=g.v&&z(g,_+1)}$t(o)}return!0},ownKeys(e){G(o);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==O});for(var[n,i]of r)i.v!==O&&!(n in e)&&t.push(n);return t},setPrototypeOf(){Se()}})}function nn(e){try{if(typeof e==`object`&&e&&E in e)return e[E]}catch{}return e}function rn(e,t){return Object.is(nn(e),nn(t))}var an,on,sn,cn;function ln(){if(an===void 0){an=window,on=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;sn=a(t,`firstChild`).get,cn=a(t,`nextSibling`).get,u(e)&&(e[se]=void 0,e[D]=null,e[ce]=void 0,e.__e=void 0),u(n)&&(n[le]=void 0)}}function un(e=``){return document.createTextNode(e)}function dn(e){return sn.call(e)}function fn(e){return cn.call(e)}function B(e,t){if(!k)return dn(e);var n=dn(A);if(n===null)n=A.appendChild(un());else if(t&&n.nodeType!==3){var r=un();return n?.before(r),j(r),r}return t&&_n(n),j(n),n}function pn(e,t=!1){if(!k){var n=dn(e);return n instanceof Comment&&n.data===``?fn(n):n}if(t){if(A?.nodeType!==3){var r=un();return A?.before(r),j(r),r}_n(A)}return A}function V(e,t=1,n=!1){let r=k?A:e;for(var i;t--;)i=r,r=fn(r);if(!k)return r;if(n){if(r?.nodeType!==3){var a=un();return r===null?i?.after(a):r.before(a),j(a),a}_n(r)}return j(r),r}function mn(e){e.textContent=``}function hn(){return!1}function gn(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function _n(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function vn(e){W===null&&(U===null&&ve(e),_e()),Yn&&ge(e)}function yn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function bn(e,t){var n=W;n!==null&&n.f&8192&&(e|=y);var r={ctx:F,deps:null,nodes:null,f:e|_|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};L?.register_created_effect(r);var i=r;if(e&4)Mt===null?It.ensure().schedule(r):Mt.push(r);else if(t!==null){try{gr(r)}catch(e){throw Ln(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=C))}if(i!==null&&(i.parent=n,n!==null&&yn(i,n),U!==null&&U.f&2&&!(e&64))){var a=U;(a.effects??=[]).push(i)}return r}function xn(){return U!==null&&!Zn}function Sn(e){let t=bn(8,null);return I(t,g),t.teardown=e,t}function Cn(e){vn(`$effect`);var t=W.f;if(!U&&t&32&&F!==null&&!F.i){var n=F;(n.e??=[]).push(e)}else return wn(e)}function wn(e){return bn(4|ee,e)}function Tn(e){return vn(`$effect.pre`),bn(8|ee,e)}function En(e){It.ensure();let t=bn(64|w,e);return(e={})=>new Promise(n=>{e.outro?Bn(t,()=>{Ln(t),n(void 0)}):(Ln(t),n(void 0))})}function Dn(e){return bn(4,e)}function On(e,t){var n=F,r={effect:null,ran:!1,deps:e};n.l.$.push(r),r.effect=jn(()=>{if(e(),!r.ran){r.ran=!0;var n=W;try{$n(n.parent),br(t)}finally{$n(n)}}})}function kn(){var e=F;jn(()=>{for(var t of e.l.$){t.deps();var n=t.effect;n.f&1024&&n.deps!==null&&I(n,v),dr(n)&&gr(n),t.ran=!1}})}function An(e){return bn(re|w,e)}function jn(e,t=0){return bn(8|t,e)}function H(e,t=[],n=[],r=[]){ft(r,t,n,t=>{bn(8,()=>{e(...t.map(G))})})}function Mn(e,t=0){return bn(16|t,e)}function Nn(e){return bn(32|w,e)}function Pn(e){var t=e.teardown;if(t!==null){let e=Yn,n=U;Xn(!0),Qn(null);try{t.call(null)}finally{Xn(e),Qn(n)}}}function Fn(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&ot(()=>{e.abort(de)});var r=n.next;n.f&64?n.parent=null:Ln(n,t),n=r}}function In(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||Ln(t),t=n}}function Ln(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(Rn(e.nodes.start,e.nodes.end),n=!0),e.f|=S,Fn(e,t&&!n),hr(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();Pn(e),e.f^=S,e.f|=b;var i=e.parent;i!==null&&i.first!==null&&zn(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Rn(e,t){for(;e!==null;){var n=e===t?null:fn(e);e.remove(),e=n}}function zn(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Bn(e,t,n=!0){var r=[];Vn(e,r,!0);var i=()=>{n&&Ln(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function Vn(e,t,n){if(!(e.f&8192)){e.f^=y;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=(i.f&65536)!=0||(i.f&32)!=0&&(e.f&16)!=0;Vn(i,t,o?n:!1)}i=a}}}function Hn(e){Un(e,!0)}function Un(e,t){if(e.f&8192){e.f^=y,e.f&1024||(I(e,_),It.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&65536)!=0||(n.f&32)!=0;Un(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function Wn(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:fn(n);t.append(n),n=i}}var Gn=null;function Kn(e){var t=Gn;try{if(Gn=new Set,br(e),t!==null)for(var n of Gn)t.add(n);return Gn}finally{Gn=t}}function qn(e){for(var t of Kn(e))Zt(t,t.v)}var Jn=!1,Yn=!1;function Xn(e){Yn=e}var U=null,Zn=!1;function Qn(e){U=e}var W=null;function $n(e){W=e}var er=null;function tr(e){U!==null&&(er??=new Set).add(e)}var nr=null,rr=0,ir=null;function ar(e){ir=e}var or=1,sr=0,cr=sr;function lr(e){cr=e}function ur(){return++or}function dr(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~te),t&4096){for(var n=e.deps,r=n.length,i=0;i<r;i++){var a=n[i];if(dr(a)&&Ct(a),a.wv>e.wv)return!0}t&512&&Ot===null&&I(e,g)}return!1}function fr(e,t,n=!0){var r=e.reactions;if(r!==null&&!(er!==null&&er.has(e)))for(var i=0;i<r.length;i++){var a=r[i];a.f&2?fr(a,t,!1):t===a&&(n?I(a,_):a.f&1024&&I(a,v),Ut(a))}}function pr(e){var t=nr,n=rr,r=ir,i=U,a=er,o=F,s=Zn,c=cr,l=e.f;nr=null,rr=0,ir=null,U=l&96?null:e,er=null,Ve(e.ctx),Zn=!1,cr=++sr,e.ac!==null&&(ot(()=>{e.ac.abort(de)}),e.ac=null);try{e.f|=ne;var u=e.fn,d=u();e.f|=x;var f=e.deps,p=L?.is_fork;if(nr!==null){var m;if(p||hr(e,rr),f!==null&&rr>0)for(f.length=rr+nr.length,m=0;m<nr.length;m++)f[rr+m]=nr[m];else e.deps=f=nr;if(xn()&&e.f&512)for(m=rr;m<f.length;m++)(f[m].reactions??=[]).push(e)}else!p&&f!==null&&rr<f.length&&(hr(e,rr),f.length=rr);if(We()&&ir!==null&&!Zn&&f!==null&&!(e.f&6146))for(m=0;m<ir.length;m++)fr(ir[m],e);if(i!==null&&i!==e){if(sr++,i.deps!==null)for(let e=0;e<n;e+=1)i.deps[e].rv=sr;if(t!==null)for(let e of t)e.rv=sr;ir!==null&&(r===null?r=ir:r.push(...ir))}return e.f&8388608&&(e.f^=ie),d}catch(e){return Ye(e)}finally{e.f^=ne,nr=t,rr=n,ir=r,U=i,er=a,Ve(o),Zn=s,cr=c}}function mr(e,r){let i=r.reactions;if(i!==null){var a=t.call(i,e);if(a!==-1){var o=i.length-1;o===0?i=r.reactions=null:(i[a]=i[o],i.pop())}}if(i===null&&r.f&2&&(nr===null||!n.call(nr,r))){var s=r;s.f&512&&(s.f^=512,s.f&=~te),s.v!==O&&Qe(s),s.ac!==null&&ot(()=>{s.ac.abort(de),s.ac=null,I(s,_)}),wt(s),hr(s,0)}}function hr(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)mr(e,n[r])}function gr(e){var t=e.f;if(!(t&16384)){I(e,g);var n=W,r=Jn;W=e,Jn=(t&96)==0;try{t&16777232?In(e):Fn(e),Pn(e);var i=pr(e);e.teardown=typeof i==`function`?i:null,e.wv=or}finally{Jn=r,W=n}}}async function _r(){await Promise.resolve(),Lt()}function G(e){var t=(e.f&2)!=0;if(Gn?.add(e),U!==null&&!Zn&&!(W!==null&&W.f&16384)&&(er===null||!er.has(e))){var r=U.deps;if(U.f&2097152)e.rv<sr&&(e.rv=sr,nr===null&&r!==null&&r[rr]===e?rr++:nr===null?nr=[e]:nr.push(e));else{U.deps??=[],n.call(U.deps,e)||U.deps.push(e);var i=e.reactions;i===null?e.reactions=[U]:n.call(i,U)||i.push(U)}}if(Yn&&qt.has(e))return qt.get(e);if(t){var a=e;if(Yn){var o=a.v;return(!(a.f&1024)&&a.reactions!==null||yr(a))&&(o=St(a)),qt.set(a,o),o}var s=(a.f&512)==0&&!Zn&&U!==null&&(Jn||(U.f&512)!=0),c=(a.f&x)===0;dr(a)&&(s&&(a.f|=512),Ct(a)),s&&!c&&(Tt(a),vr(a))}if(Ot?.has(e))return Ot.get(e);if(e.f&8388608)throw e.v;return e.v}function vr(e){if(e.f|=512,e.deps!==null)for(let t of e.deps)(t.reactions??=[]).push(e),t.f&2&&!(t.f&512)&&(Tt(t),vr(t))}function yr(e){if(e.v===O)return!0;if(e.deps===null)return!1;for(let t of e.deps)if(qt.has(t)||t.f&2&&yr(t))return!0;return!1}function br(e){var t=Zn;try{return Zn=!0,e()}finally{Zn=t}}function xr(e){if(!(typeof e!=`object`||!e||e instanceof EventTarget)){if(E in e)Sr(e);else if(!Array.isArray(e))for(let t in e){let n=e[t];typeof n==`object`&&n&&E in n&&Sr(n)}}}function Sr(e,t=new Set){if(typeof e==`object`&&e&&!(e instanceof EventTarget)&&!t.has(e)){t.add(e),e instanceof Date&&e.getTime();for(let n in e)try{Sr(e[n],t)}catch{}let n=l(e);if(n!==Object.prototype&&n!==Array.prototype&&n!==Map.prototype&&n!==Set.prototype&&n!==Date.prototype){let t=o(n);for(let n in t){let r=t[n].get;if(r)try{r.call(e)}catch{}}}}}[...`allowfullscreen.async.autofocus.autoplay.checked.controls.default.disabled.formnovalidate.indeterminate.inert.ismap.loop.multiple.muted.nomodule.novalidate.open.playsinline.readonly.required.reversed.seamless.selected.webkitdirectory.defer.disablepictureinpicture.disableremoteplayback`.split(`.`)];var Cr=[`touchstart`,`touchmove`];function wr(e){return Cr.includes(e)}var Tr=Symbol(`events`),Er=new Set,Dr=new Set;function Or(e,t,n,r={}){function i(e){if(r.capture||Ar.call(t,e),!e.cancelBubble)return ot(()=>n?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?qe(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function K(e,t,n,r,i){var a={capture:r,passive:i},o=Or(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&Sn(()=>{t.removeEventListener(e,o,a)})}var kr=null;function Ar(e){var t=this,n=t.ownerDocument,r=e.type,a=e.composedPath?.()||[],o=a[0]||e.target;kr=e;var s=0,c=kr===e&&e[Tr];if(c){var l=a.indexOf(c);if(l!==-1&&(t===document||t===window)){e[Tr]=t;return}var u=a.indexOf(t);if(u===-1)return;l<=u&&(s=l)}if(o=a[s]||e.target,o!==t){i(e,`currentTarget`,{configurable:!0,get(){return o||n}});var d=U,f=W;Qn(null),$n(null);try{for(var p,m=[];o!==null&&o!==t;){try{var h=o[Tr]?.[r];h!=null&&(!o.disabled||e.target===o)&&h.call(o,e)}catch(e){p?m.push(e):p=e}if(e.cancelBubble)break;s++,o=s<a.length?a[s]:null}if(p){for(let e of m)queueMicrotask(()=>{throw e});throw p}}finally{e[Tr]=t,delete e.currentTarget,Qn(d),$n(f)}}}var jr=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function Mr(e){return jr?.createHTML(e)??e}function Nr(e){var t=gn(`template`);return t.innerHTML=Mr(e.replaceAll(`<!>`,`<!---->`)),t.content}function Pr(e,t){var n=W;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function q(e,t){var n=(t&1)!=0,r=(t&2)!=0,i,a=!e.startsWith(`<!>`);return()=>{if(k)return Pr(A,null),A;i===void 0&&(i=Nr(a?e:`<!>`+e),n||(i=dn(i)));var t=r||on?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=dn(t),s=t.lastChild;Pr(o,s)}else Pr(t,t);return t}}function Fr(e=``){if(!k){var t=un(e+``);return Pr(t,t),t}var n=A;return n.nodeType===3?_n(n):(n.before(n=un()),j(n)),Pr(n,n),n}function Ir(){if(k)return Pr(A,null),A;var e=document.createDocumentFragment(),t=document.createComment(``),n=un();return e.append(t,n),Pr(t,n),e}function J(e,t){if(k){var n=W;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=A),Pe();return}e!==null&&e.before(t)}var Lr=!0;function Y(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[le]??=e.nodeValue)&&(e[le]=n,e.nodeValue=`${n}`)}function Rr(e,t){return Br(e,t)}var zr=new Map;function Br(e,{target:t,anchor:n,props:i={},events:a,context:o,intro:s=!0,transformError:c}){ln();var l=void 0,u=En(()=>{var u=n??t.appendChild(un());ut(u,{pending:()=>{}},t=>{He({});var n=F;if(o&&(n.c=o),a&&(i.$$events=a),k&&Pr(t,null),Lr=s,l=e(t,i)||{},Lr=!0,k&&(W.nodes.end=A,A===null||A.nodeType!==8||A.data!==`]`))throw Ae(),Te;Ue()},c);var d=new Set,f=e=>{for(var n=0;n<e.length;n++){var r=e[n];if(!d.has(r)){d.add(r);var i=wr(r);for(let e of[t,document]){var a=zr.get(e);a===void 0&&(a=new Map,zr.set(e,a));var o=a.get(r);o===void 0?(e.addEventListener(r,Ar,{passive:i}),a.set(r,1)):a.set(r,o+1)}}}};return f(r(Er)),Dr.add(f),()=>{for(var e of d)for(let n of[t,document]){var r=zr.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,Ar),r.delete(e),r.size===0&&zr.delete(n)):r.set(e,i)}Dr.delete(f),u!==n&&u.parentNode?.removeChild(u)}});return Vr.set(l,u),l}var Vr=new WeakMap,Hr=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)Hn(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(Hn(r.effect),this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(Ln(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();Wn(r,t),t.append(un()),this.#n.set(e,{effect:r,fragment:t})}else Ln(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),Bn(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(Ln(n.effect),this.#n.delete(e))};ensure(e,t){var n=L,r=hn();if(t&&!this.#t.has(e)&&!this.#n.has(e))if(r){var i=document.createDocumentFragment(),a=un();i.append(a),this.#n.set(e,{effect:Nn(()=>t(a)),fragment:i})}else this.#t.set(e,Nn(()=>t(this.anchor)));if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else k&&(this.anchor=A),this.#a(n)}};function X(e,t,n=!1){var r;k&&(r=A,Pe());var i=new Hr(e),a=n?C:0;function o(e,t){if(k){var n=Ie(r);if(e!==parseInt(n.substring(1))){var a=Fe();j(a),i.anchor=a,Ne(!1),i.ensure(e,t),Ne(!0);return}}i.ensure(e,t)}Mn(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function Ur(e,t){return t}function Wr(e,t,n){for(var i=[],a=t.length,o,s=t.length,c=0;c<a;c++){let n=t[c];Bn(n,()=>{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;Gr(e,r(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else--s},!1)}if(s===0){var l=i.length===0&&n!==null;if(l){var u=n,d=u.parentNode;mn(d),d.append(u),e.items.clear()}Gr(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function Gr(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i<t.length;i++){var a=t[i];r?.has(a)?(a.f|=T,Wn(a,document.createDocumentFragment())):Ln(t[i],n)}}var Kr;function qr(t,n,i,a,o,s=null){var c=t,l=new Map;if(n&4){var u=t;c=k?j(dn(u)):u.appendChild(un())}k&&Pe();var d=null,f=bt(()=>{var t=i();return e(t)?t:t==null?[]:r(t)}),p,m=new Map,h=!0;function g(e){v.effect.f&16384||(v.pending.delete(e),v.fallback=d,Yr(v,p,c,n,a),d!==null&&(p.length===0?d.f&33554432?(d.f^=T,Zr(d,null,c)):Hn(d):Bn(d,()=>{d=null})))}function _(e){v.pending.delete(e)}var v={effect:Mn(()=>{p=G(f);var e=p.length;let t=!1;k&&Ie(c)===`[!`!=(e===0)&&(c=Fe(),j(c),Ne(!1),t=!0);for(var r=new Set,u=L,v=hn(),y=0;y<e;y+=1){k&&A.nodeType===8&&A.data===`]`&&(c=A,t=!0,Ne(!1));var b=p[y],x=a(b,y),S=h?null:l.get(x);S?(S.v&&Zt(S.v,b),S.i&&Zt(S.i,y),v&&u.unskip_effect(S.e)):(S=Xr(l,h?c:Kr??=un(),b,x,y,o,n,i),h||(S.e.f|=T),l.set(x,S)),r.add(x)}if(e===0&&s&&!d&&(h?d=Nn(()=>s(c)):(d=Nn(()=>s(Kr??=un())),d.f|=T)),e>r.size&&he(``,``,``),k&&e>0&&j(Fe()),!h)if(m.set(u,r),v){for(let[e,t]of l)r.has(e)||u.skip_effect(t.e);u.oncommit(g),u.ondiscard(_)}else g(u);t&&Ne(!0),G(f)}),flags:n,items:l,pending:m,outrogroups:null,fallback:d};h=!1,k&&(c=A)}function Jr(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function Yr(e,t,n,i,a){var o=(i&8)!=0,s=t.length,c=e.items,l=Jr(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o)for(v=0;v<s;v+=1)h=t[v],g=a(h,v),_=c.get(g).e,_.f&33554432||(_.nodes?.a?.measure(),(f??=new Set).add(_));for(v=0;v<s;v+=1){if(h=t[v],g=a(h,v),_=c.get(g).e,e.outrogroups!==null)for(let t of e.outrogroups)t.pending.delete(_),t.done.delete(_);if(_.f&8192&&(Hn(_),o&&(_.nodes?.a?.unfix(),(f??=new Set).delete(_))),_.f&33554432)if(_.f^=T,_===l)Zr(_,null,n);else{var y=d?d.next:l;_===e.effect.last&&(e.effect.last=_.prev),_.prev&&(_.prev.next=_.next),_.next&&(_.next.prev=_.prev),Qr(e,d,_),Qr(e,_,y),Zr(_,y,n),d=_,p=[],m=[],l=Jr(d.next);continue}if(_!==l){if(u!==void 0&&u.has(_)){if(p.length<m.length){var b=m[0],x;d=b.prev;var S=p[0],C=p[p.length-1];for(x=0;x<p.length;x+=1)Zr(p[x],b,n);for(x=0;x<m.length;x+=1)u.delete(m[x]);Qr(e,S.prev,C.next),Qr(e,d,S),Qr(e,C,b),l=b,d=C,--v,p=[],m=[]}else u.delete(_),Zr(_,l,n),Qr(e,_.prev,_.next),Qr(e,_,d===null?e.effect.first:d.next),Qr(e,d,_),d=_;continue}for(p=[],m=[];l!==null&&l!==_;)(u??=new Set).add(l),m.push(l),l=Jr(l.next);if(l===null)continue}_.f&33554432||p.push(_),d=_,l=Jr(_.next)}if(e.outrogroups!==null){for(let t of e.outrogroups)t.pending.size===0&&(Gr(e,r(t.done)),e.outrogroups?.delete(t));e.outrogroups.size===0&&(e.outrogroups=null)}if(l!==null||u!==void 0){var w=[];if(u!==void 0)for(_ of u)_.f&8192||w.push(_);for(;l!==null;)!(l.f&8192)&&l!==e.fallback&&w.push(l),l=Jr(l.next);var ee=w.length;if(ee>0){var te=i&4&&s===0?n:null;if(o){for(v=0;v<ee;v+=1)w[v].nodes?.a?.measure();for(v=0;v<ee;v+=1)w[v].nodes?.a?.fix()}Wr(e,w,te)}}o&&qe(()=>{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function Xr(e,t,n,r,i,a,o,s){var c=o&1?o&16?Yt(n):R(n,!1,!1):null,l=o&2?Yt(i):null;return{v:c,i:l,e:Nn(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function Zr(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=fn(r);if(a.before(r),r===i)return;r=o}}function Qr(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function $r(e,t,n=!1,r=!1,i=!1,a=!1){var o=e,s=``;if(n){var c=e;k&&(o=j(dn(c)))}H(()=>{var e=W;if(s===(s=t()??``)){k&&Pe();return}if(n&&!k){e.nodes=null,c.innerHTML=s,s!==``&&Pr(dn(c),c.lastChild);return}if(e.nodes!==null&&(Rn(e.nodes.start,e.nodes.end),e.nodes=null),s!==``){if(k){for(var a=A.data,l=Pe(),u=l;l!==null&&(l.nodeType!==8||l.data!==``);)u=l,l=fn(l);if(l===null)throw Ae(),Te;Pr(A,u),o=j(l);return}var d=gn(r?`svg`:i?`math`:`template`,r?De:i?Oe:void 0);d.innerHTML=s;var f=r||i?d:d.content;if(Pr(dn(f),f.lastChild),r||i)for(;dn(f);)o.before(dn(f));else o.before(f)}})}var ei=()=>performance.now(),ti={tick:e=>requestAnimationFrame(e),now:()=>ei(),tasks:new Set};function ni(){let e=ti.now();ti.tasks.forEach(t=>{t.c(e)||(ti.tasks.delete(t),t.f())}),ti.tasks.size!==0&&ti.tick(ni)}function ri(e){let t;return ti.tasks.size===0&&ti.tick(ni),{promise:new Promise(n=>{ti.tasks.add(t={c:e,f:n})}),abort(){ti.tasks.delete(t)}}}function ii(e,t){ot(()=>{e.dispatchEvent(new CustomEvent(t))})}function ai(e){if(e===`float`)return`cssFloat`;if(e===`offset`)return`cssOffset`;if(e.startsWith(`--`))return e;let t=e.split(`-`);return t.length===1?t[0]:t[0]+t.slice(1).map(e=>e[0].toUpperCase()+e.slice(1)).join(``)}function oi(e){let t={},n=e.split(`;`);for(let e of n){let[n,r]=e.split(`:`);if(!n||r===void 0)break;let i=ai(n.trim());t[i]=r.trim()}return t}var si=e=>e,ci=null;function li(e,t,n){var r=(ci??W).nodes,i,a,o,s=null;r.a??={element:e,measure(){i=this.element.getBoundingClientRect()},apply(){if(o?.abort(),a=this.element.getBoundingClientRect(),i.left!==a.left||i.right!==a.right||i.top!==a.top||i.bottom!==a.bottom){let e=t()(this.element,{from:i,to:a},n?.());o=di(this.element,e,void 0,1,()=>{},()=>{o?.abort(),o=void 0})}},fix(){if(!e.getAnimations().length){var{position:t,width:n,height:r}=getComputedStyle(e);if(t!==`absolute`&&t!==`fixed`){var a=e.style;s={position:a.position,width:a.width,height:a.height,transform:a.transform},a.position=`absolute`,a.width=n,a.height=r;var o=e.getBoundingClientRect();if(i.left!==o.left||i.top!==o.top){var c=`translate(${i.left-o.left}px, ${i.top-o.top}px)`;a.transform=a.transform?`${a.transform} ${c}`:c}}}},unfix(){if(s){var t=e.style;t.position=s.position,t.width=s.width,t.height=s.height,t.transform=s.transform}}},r.a.element=e}function ui(e,t,n,r){var i=(e&1)!=0,a=(e&2)!=0,o=i&&a,s=(e&4)!=0,c=o?`both`:i?`in`:`out`,l,u=t.inert,d=t.style.overflow,f,p;function m(){return ot(()=>l??=n()(t,r?.()??{},{direction:c}))}var h={is_global:s,in(){if(t.inert=u,!i){p?.abort(),p?.reset?.();return}a||f?.abort(),f=di(t,m(),p,1,()=>{ii(t,`introstart`)},()=>{ii(t,`introend`),f?.abort(),f=l=void 0,t.style.overflow=d})},out(e){if(!a){e?.(),l=void 0;return}t.inert=!0,p=di(t,m(),f,0,()=>{ii(t,`outrostart`)},()=>{ii(t,`outroend`),e?.()})},stop:()=>{f?.abort(),p?.abort()}},g=W;if((g.nodes.t??=[]).push(h),i&&Lr){var _=s;if(!_){for(var v=g.parent;v&&v.f&65536;)for(;(v=v.parent)&&!(v.f&16););_=!v||(v.f&32768)!=0}_&&Dn(()=>{br(()=>h.in())})}}function di(e,t,n,r,i,a){var o=r===1;if(d(t)){var s,c=!1;return qe(()=>{c||(s=di(e,t({direction:o?`in`:`out`}),n,r,i,a))}),{abort:()=>{c=!0,s?.abort()},deactivate:()=>s.deactivate(),reset:()=>s.reset(),t:()=>s.t()}}if(n?.deactivate(),!t?.duration&&!t?.delay)return i(),a(),{abort:f,deactivate:f,reset:f,t:()=>r};let{delay:l=0,css:u,tick:p,easing:m=si}=t;var h=[];if(o&&n===void 0&&(p&&p(0,1),u)){var g=oi(u(0,1));h.push(g,g)}var _=()=>1-r,v=e.animate(h,{duration:l,fill:`forwards`});return v.onfinish=()=>{v.cancel(),i();var o=n?.t()??1-r;n?.abort();var s=r-o,c=t.duration*Math.abs(s),l=[];if(c>0){var d=!1;if(u)for(var f=Math.ceil(c/(1e3/60)),h=0;h<=f;h+=1){var g=o+s*m(h/f),y=oi(u(g,1-g));l.push(y),d||=y.overflow===`hidden`}d&&(e.style.overflow=`hidden`),_=()=>{var e=v.currentTime;return o+s*m(e/c)},p&&ri(()=>{if(v.playState!==`running`)return!1;var e=_();return p(e,1-e),!0})}v=e.animate(l,{duration:c,fill:`forwards`}),v.onfinish=()=>{_=()=>r,p?.(r,1-r),a()}},{abort:()=>{v&&(v.cancel(),v.effect=null,v.onfinish=f)},deactivate:()=>{a=f},reset:()=>{r===0&&p?.(1,0)},t:()=>_()}}function fi(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=fi(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function pi(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=fi(e))&&(r&&(r+=` `),r+=t);return r}function mi(e){return typeof e==`object`?pi(e):e??``}var hi=[...`
2
- \r\f\xA0\v`];function gi(e,t,n){var r=e==null?``:``+e;if(t&&(r=r?r+` `+t:t),n){for(var i of Object.keys(n))if(n[i])r=r?r+` `+i:i;else if(r.length)for(var a=i.length,o=0;(o=r.indexOf(i,o))>=0;){var s=o+a;(o===0||hi.includes(r[o-1]))&&(s===r.length||hi.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function Z(e,t,n,r,i,a){var o=e[se];if(k||o!==n||o===void 0){var s=gi(n,r,a);(!k||s!==e.getAttribute(`class`))&&(s==null?e.removeAttribute(`class`):t?e.className=s:e.setAttribute(`class`,s)),e[se]=n}else if(a&&i!==a)for(var c in a){var l=!!a[c];(i==null||l!==!!i[c])&&e.classList.toggle(c,l)}return a}function _i(t,n,r=!1){if(t.multiple){if(n==null)return;if(!e(n))return je();for(var i of t.options)i.selected=n.includes(bi(i));return}for(i of t.options)if(rn(bi(i),n)){i.selected=!0;return}(!r||n!==void 0)&&(t.selectedIndex=-1)}function vi(e){var t=new MutationObserver(()=>{_i(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),Sn(()=>{t.disconnect()})}function yi(e,t,n=t){var r=new WeakSet,i=!0;st(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),bi);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&bi(o)}n(a),e.__value=a,L!==null&&r.add(L)}),Dn(()=>{var a=t();if(e===document.activeElement){var o=L;if(r.has(o))return}if(_i(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=bi(s),n(a))}e.__value=a,i=!1}),vi(e)}function bi(e){return`__value`in e?e.__value:e.value}var xi=Symbol(`is custom element`),Si=Symbol(`is html`),Ci=fe?`link`:`LINK`;function Q(e){if(k){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;wi(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;wi(e,`checked`,null),e.checked=r}}};e[ue]=n,qe(n),at()}}function wi(e,t,n,r){var i=Ti(e);k&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===Ci)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[oe]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&Di(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function Ti(e){return e[D]??={[xi]:e.nodeName.includes(`-`),[Si]:e.namespaceURI===Ee}}var Ei=new Map;function Di(e){var t=e.getAttribute(`is`)||e.nodeName,n=Ei.get(t);if(n)return n;Ei.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var s in r=o(i),r)r[s].set&&s!==`innerHTML`&&s!==`textContent`&&s!==`innerText`&&n.push(s);i=l(i)}return n}function $(e,t,n=t){var r=new WeakSet;st(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=Oi(e)?ki(a):a,n(a),L!==null&&r.add(L),await _r(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(k&&e.defaultValue!==e.value||br(t)==null&&e.value)&&(n(Oi(e)?ki(e.value):e.value),L!==null&&r.add(L)),jn(()=>{var n=t();if(e===document.activeElement){var i=L;if(r.has(i))return}Oi(e)&&n===ki(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function Oi(e){var t=e.type;return t===`number`||t===`range`}function ki(e){return e===``?null:+e}function Ai(e=!1){let t=F,n=t.l.u;if(!n)return;let r=()=>xr(t.s);if(e){let e=0,n={},i=gt(()=>{let r=!1,i=t.s;for(let e in i)i[e]!==n[e]&&(n[e]=i[e],r=!0);return r&&e++,e});r=()=>G(i)}n.b.length&&Tn(()=>{ji(t,r),m(n.b)}),Cn(()=>{let e=br(()=>n.m.map(p));return()=>{for(let t of e)typeof t==`function`&&t()}}),n.a.length&&Cn(()=>{ji(t,r),m(n.a)})}function ji(e,t){if(e.l.s)for(let t of e.l.s)G(t);t()}function Mi(e,t,n,r){var i=!ze||(n&2)!=0,o=(n&8)!=0,s=(n&16)!=0,c=r,l=!0,u=void 0,d=()=>s&&i?(u??=gt(r),G(u)):(l&&(l=!1,c=s?br(r):r),c);let f;if(o){var p=E in e||ae in e;f=a(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;o?[m,h]=nt(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&be(t),f(m)));var g=i?()=>{var n=e[t];return n===void 0?d():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return g;if(f){var _=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||_||h)&&f(t?g():e),e):g()})}var v=!1,y=(n&1?gt:bt)(()=>(v=!1,g()));o&&G(y);var b=W;return(function(e,t){if(arguments.length>0){let n=t?G(y):i&&o?tn(e):e;return z(y,n),v=!0,c!==void 0&&(c=n),e}return Yn&&v||b.f&16384?y.v:G(y)})}function Ni(e){F===null&&pe(`onMount`),ze&&F.l!==null?Fi(F).m.push(e):Cn(()=>{let t=br(e);if(typeof t==`function`)return t})}function Pi(e){F===null&&pe(`onDestroy`),Ni(()=>()=>br(e))}function Fi(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`),Be();function Ii(e){let t=e-1;return t*t*t+1}function Li(e,{from:t,to:n},r={}){var{delay:i=0,duration:a=e=>Math.sqrt(e)*120,easing:o=Ii}=r,s=getComputedStyle(e),c=s.transform===`none`?``:s.transform,[l,u]=s.transformOrigin.split(` `).map(parseFloat);l/=e.clientWidth,u/=e.clientHeight;var d=Ri(e),f=e.clientWidth/n.width/d,p=e.clientHeight/n.height/d,m=t.left+t.width*l,h=t.top+t.height*u,g=n.left+n.width*l,_=n.top+n.height*u,v=(m-g)*f,y=(h-_)*p,b=t.width/n.width,x=t.height/n.height;return{delay:i,duration:typeof a==`function`?a(Math.sqrt(v*v+y*y)):a,easing:o,css:(e,t)=>`transform: ${c} translate(${t*v}px, ${t*y}px) scale(${e+t*b}, ${e+t*x});`}}function Ri(e){if(`currentCSSZoom`in e)return e.currentCSSZoom;for(var t=e,n=1;t!==null;)n*=+getComputedStyle(t).zoom,t=t.parentElement;return n}var zi=e=>e;function Bi(e){let t=e-1;return t*t*t+1}function Vi(e){let t=typeof e==`string`&&e.match(/^\s*(-?[\d.]+)([^\s]*)\s*$/);return t?[parseFloat(t[1]),t[2]||`px`]:[e,`px`]}function Hi(e,{delay:t=0,duration:n=400,easing:r=zi}={}){let i=+getComputedStyle(e).opacity;return{delay:t,duration:n,easing:r,css:e=>`opacity: ${e*i}`}}function Ui(e,{delay:t=0,duration:n=400,easing:r=Bi,x:i=0,y:a=0,opacity:o=0}={}){let s=getComputedStyle(e),c=+s.opacity,l=s.transform===`none`?``:s.transform,u=c*(1-o),[d,f]=Vi(i),[p,m]=Vi(a);return{delay:t,duration:n,easing:r,css:(e,t)=>`
3
- transform: ${l} translate(${(1-e)*d}${f}, ${(1-e)*p}${m});
4
- opacity: ${c-u*t}`}}var Wi=q(`<span class="json-editor-label svelte-1w5oz74"> </span>`),Gi=q(`<div class="status-badge valid svelte-1w5oz74"><span class="status-dot svelte-1w5oz74"></span> Valid JSON</div>`),Ki=q(`<div class="status-badge invalid svelte-1w5oz74"><span class="status-dot svelte-1w5oz74"></span> Malformed JSON</div>`),qi=q(`<div class="error-msg-banner svelte-1w5oz74"> </div>`),Ji=q(`<div class="raw-editor-view svelte-1w5oz74"><textarea rows="5"></textarea> <div class="json-editor-status-bar svelte-1w5oz74"><!> <div class="status-actions"><button type="button" class="btn btn-secondary btn-sm"><svg viewBox="0 0 24 24" width="12" height="12" style="fill: currentColor; margin-right: 4px;"><path d="M4 6h16v2H4zm0 5h16v2H4zm0 5h16v2H4z"></path></svg> Format</button></div></div> <!></div>`),Yi=q(`<div class="error-visual-fallback card svelte-1w5oz74"><div class="card-body text-center"><svg viewBox="0 0 24 24" width="32" height="32" class="text-danger" style="margin-bottom: 12px; fill: currentColor;"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"></path></svg> <h4>Cannot Parse Object</h4> <p class="text-muted" style="font-size: 12px; margin: 8px 0 16px;">The current text has formatting errors or is not a valid JSON object. Please fix it in the Raw JSON tab or reset to an empty object.</p> <button type="button" class="btn btn-primary btn-sm">Reset to Empty Object</button></div></div>`),Xi=q(`<div class="empty-rows-state svelte-1w5oz74">No custom key-value attributes defined. Click "Add Property" to build your JSON.</div>`),Zi=q(`<select class="form-input value-select svelte-1w5oz74"><option>False</option><option>True</option></select>`),Qi=q(`<div class="null-placeholder svelte-1w5oz74">null</div>`),$i=q(`<input type="number" class="form-input val-input svelte-1w5oz74"/>`),ea=q(`<textarea rows="1" class="form-input val-textarea code svelte-1w5oz74" placeholder="e.g. {&quot;nested&quot;: 1}"></textarea>`),ta=q(`<input type="text" placeholder="value" class="form-input val-input svelte-1w5oz74"/>`),na=q(`<div class="row-builder-item svelte-1w5oz74"><input type="text" placeholder="key" class="form-input key-input svelte-1w5oz74"/> <select class="form-input type-select svelte-1w5oz74"><option>String</option><option>Number</option><option>Boolean</option><option>Null</option><option>JSON / Object</option></select> <div class="value-input-wrapper svelte-1w5oz74"><!></div> <button type="button" class="btn btn-secondary btn-icon remove-row-btn svelte-1w5oz74" title="Remove Row"><svg viewBox="0 0 24 24" width="14" height="14" style="fill: currentColor;"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"></path></svg></button></div>`),ra=q(`<div class="rows-header-grid svelte-1w5oz74"><span class="header-col svelte-1w5oz74">Property Name</span> <span class="header-col svelte-1w5oz74">Type</span> <span class="header-col svelte-1w5oz74">Value</span> <span class="header-col action-col svelte-1w5oz74"></span></div> <div class="rows-list svelte-1w5oz74"></div>`,1),ia=q(`<div class="visual-rows-container svelte-1w5oz74"><!> <div class="visual-actions-footer svelte-1w5oz74"><button type="button" class="btn btn-secondary btn-sm"><svg viewBox="0 0 24 24" width="14" height="14" style="fill: currentColor; margin-right: 4px;"><path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path></svg> Add Property</button></div></div>`),aa=q(`<div class="visual-editor-view svelte-1w5oz74"><!></div>`),oa=q(`<div class="json-editor-container svelte-1w5oz74"><div class="json-editor-header svelte-1w5oz74"><!> <div class="json-editor-tabs svelte-1w5oz74"><button type="button"><svg viewBox="0 0 24 24" class="tab-icon svelte-1w5oz74"><path d="M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"></path></svg> Raw JSON</button> <button type="button"><svg viewBox="0 0 24 24" class="tab-icon svelte-1w5oz74"><path d="M4 14h6v-4H4v4zm0 5h6v-4H4v4zM4 9h6V5H4v4zm10 5h6v-4h-6v4zm0 5h6v-4h-6v4zM14 5v4h6V5h-6z"></path></svg> Visual Builder</button></div></div> <div class="json-editor-content svelte-1w5oz74"><!></div></div>`);function sa(e,t){He(t,!1);let n=Mi(t,`value`,12,``),r=Mi(t,`placeholder`,8,`e.g. {"status": "active"}`),i=Mi(t,`label`,8,``),a=Mi(t,`required`,8,!1),o=R(`raw`),s=R(n()||``),c=R(!0),l=R(``),u=R([]);function d(){return Math.random().toString(36).substring(2,9)}function f(){if(!G(s).trim()){z(c,!0),z(l,``),z(u,[]);return}try{let e=JSON.parse(G(s));z(c,!0),z(l,``),e&&typeof e==`object`&&!Array.isArray(e)?z(u,Object.entries(e).map(([e,t])=>{let n=`string`,r=t;return t===null?(n=`null`,r=``):typeof t==`number`?n=`number`:typeof t==`boolean`?n=`boolean`:typeof t==`object`&&(n=`json`,r=JSON.stringify(t)),{id:d(),key:e,val:r,type:n}})):z(u,[])}catch(e){z(c,!1),z(l,e.message)}}function p(){n(G(s)),f()}function m(){if(G(s).trim())try{let e=JSON.parse(G(s));z(s,JSON.stringify(e,null,2)),n(G(s)),z(c,!0),z(l,``),f()}catch(e){z(c,!1),z(l,e.message)}}function h(){let e={};for(let t of G(u)){if(!t.key.trim())continue;let n;if(t.type===`number`)n=t.val===``?0:Number(t.val);else if(t.type===`boolean`)n=t.val===!0||t.val===`true`;else if(t.type===`null`)n=null;else if(t.type===`json`)try{n=JSON.parse(t.val)}catch{n=t.val}else n=t.val;e[t.key]=n}z(s,JSON.stringify(e,null,2)),n(G(s)),z(c,!0),z(l,``)}function g(){z(u,[...G(u),{id:d(),key:``,val:``,type:`string`}])}function _(e){z(u,G(u).filter(t=>t.id!==e)),h()}function v(){h()}function y(e,t){let n=t.target.value;e.type=n,n===`boolean`?e.val=!1:n===`null`?e.val=``:n===`number`?e.val=0:n===`json`?e.val=`{}`:e.val=``,h()}function b(e){z(o,e),e===`visual`&&f()}function x(){z(s,`{}`),n(`{}`),z(c,!0),z(l,``),z(u,[]),z(o,`visual`),f()}Ni(()=>{f()}),On(()=>(xr(n()),G(s)),()=>{n()!==G(s)&&(z(s,n()||``),f())}),kn(),Ai();var S=oa(),C=B(S),w=B(C),ee=e=>{var t=Wi(),n=B(t);M(t),H(()=>Y(n,`${i()??``} ${a()?`*`:``}`)),J(e,t)};X(w,e=>{i()&&e(ee)});var T=V(w,2),te=B(T),ne=V(te,2);M(T),M(C);var re=V(C,2),ie=B(re),E=e=>{var t=Ji(),n=B(t);rt(n);var i=V(n,2),o=B(i),u=e=>{J(e,Gi())},d=e=>{var t=Ki();H(()=>wi(t,`title`,G(l))),J(e,t)};X(o,e=>{G(c)?e(u):e(d,-1)});var f=V(o,2),h=B(f);M(f),M(i);var g=V(i,2),_=e=>{var t=qi(),n=B(t,!0);M(t),H(()=>Y(n,G(l))),J(e,t)};X(g,e=>{!G(c)&&G(l)&&e(_)}),M(t),H(()=>{Z(n,1,`form-input code raw-textarea ${G(c)?``:`invalid-border`}`,`svelte-1w5oz74`),wi(n,`placeholder`,r()),n.required=a()}),$(n,()=>G(s),e=>z(s,e)),K(`input`,n,p),K(`click`,h,m),J(e,t)},ae=e=>{var t=aa(),n=B(t),r=e=>{var t=Yi(),n=B(t),r=V(B(n),6);M(n),M(t),K(`click`,r,x),J(e,t)},i=e=>{var t=ia(),n=B(t),r=e=>{J(e,Xi())},i=e=>{var t=ra(),n=V(pn(t),2);qr(n,5,()=>G(u),e=>e.id,(e,t,n)=>{var r=na(),i=B(r);Q(i);var a=V(i,2),o=B(a);o.value=o.__value=`string`;var s=V(o);s.value=s.__value=`number`;var c=V(s);c.value=c.__value=`boolean`;var l=V(c);l.value=l.__value=`null`;var d=V(l);d.value=d.__value=`json`,M(a);var f;vi(a);var p=V(a,2),m=B(p),h=e=>{var n=Zi(),r=B(n);r.value=r.__value=!1;var i=V(r);i.value=i.__value=!0,M(n),yi(n,()=>G(t).val,e=>(G(t).val=e,qn(()=>G(u)),qn(()=>{}))),K(`change`,n,v),J(e,n)},g=e=>{J(e,Qi())},b=e=>{var n=$i();Q(n),$(n,()=>G(t).val,e=>(G(t).val=e,qn(()=>G(u)),qn(()=>{}))),K(`input`,n,v),J(e,n)},x=e=>{var n=ea();rt(n),$(n,()=>G(t).val,e=>(G(t).val=e,qn(()=>G(u)),qn(()=>{}))),K(`input`,n,v),J(e,n)},S=e=>{var n=ta();Q(n),$(n,()=>G(t).val,e=>(G(t).val=e,qn(()=>G(u)),qn(()=>{}))),K(`input`,n,v),J(e,n)};X(m,e=>{G(t),br(()=>G(t).type===`boolean`)?e(h):(G(t),br(()=>G(t).type===`null`)?e(g,1):(G(t),br(()=>G(t).type===`number`)?e(b,2):(G(t),br(()=>G(t).type===`json`)?e(x,3):e(S,-1))))}),M(p);var C=V(p,2);M(r),H(()=>{f!==(f=(G(t),br(()=>G(t).type)))&&(a.value=(a.__value=(G(t),br(()=>G(t).type)))??``,_i(a,(G(t),br(()=>G(t).type))))}),$(i,()=>G(t).key,e=>(G(t).key=e,qn(()=>G(u)),qn(()=>{}))),K(`input`,i,v),K(`change`,a,e=>y(G(t),e)),K(`click`,C,()=>_(G(t).id)),J(e,r)}),M(n),J(e,t)};X(n,e=>{G(u),br(()=>G(u).length===0)?e(r):e(i,-1)});var a=V(n,2),o=B(a);M(a),M(t),K(`click`,o,g),J(e,t)};X(n,e=>{G(c)?e(i,-1):e(r)}),M(t),J(e,t)};X(ie,e=>{G(o)===`raw`?e(E):e(ae,-1)}),M(re),M(S),H(()=>{Z(te,1,`json-tab-btn ${G(o)===`raw`?`active`:``}`,`svelte-1w5oz74`),Z(ne,1,`json-tab-btn ${G(o)===`visual`?`active`:``}`,`svelte-1w5oz74`)}),K(`click`,te,()=>b(`raw`)),K(`click`,ne,()=>b(`visual`)),J(e,S),Ue()}var ca=q(`<div class="modal-overlay active" style="z-index: 10000; background: rgba(5, 6, 12, 0.95);"><div class="modal-card" style="border-color: rgba(99, 102, 241, 0.3); box-shadow: 0 0 40px rgba(99, 102, 241, 0.25);"><div class="modal-header" style="justify-content: center; border-bottom: none; padding-top: 30px;"><span class="brand-logo" style="width: 44px; height: 44px; font-size: 18px;">tg</span></div> <div class="modal-body" style="padding-top: 10px;"><h2 class="text-center" style="font-size: 20px; font-weight: 700; margin-bottom: 8px;">thingd Security Shield</h2> <p class="text-muted text-center" style="font-size: 13.5px; margin-bottom: 24px;">This database instance is protected. Enter the authorization bearer token to gain access.</p> <form><div class="form-group"><label for="auth-key">Authorization Bearer Token *</label> <input type="password" id="auth-key" placeholder="Enter auth token..." class="form-input text-center" style="letter-spacing: 2px;" required=""/></div> <div class="modal-footer" style="justify-content: center; margin-top: 20px;"><button type="submit" class="btn btn-primary" style="width: 100%; height: 42px;">Unlock Dashboard</button></div></form></div></div></div>`),la=q(`<button class="btn btn-sm btn-secondary" style="width: 100%;">Lock Session</button>`),ua=q(`<div class="log-line"><span class="text-muted"> </span> <span> </span></div>`),da=q(`<div class="tab-panel active"><div class="metrics-grid"><div class="metric-card"><div class="metric-icon objects-icon"><svg viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H7c0-2.76 2.24-5 5-5s5 2.24 5 5c0 1.04-.42 1.99-1.07 2.75z"></path></svg></div> <div class="metric-body"><span class="metric-num"> </span> <span class="metric-title">Total Memory Objects</span></div></div> <div class="metric-card"><div class="metric-icon events-icon"><svg viewBox="0 0 24 24"><path d="M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z"></path></svg></div> <div class="metric-body"><span class="metric-num"> </span> <span class="metric-title">Appended Events</span></div></div> <div class="metric-card"><div class="metric-icon queues-icon"><svg viewBox="0 0 24 24"><path d="M19 15v3H5v-3h14m2-2H3v7h18v-7zM19 5v3H5V5h14m2-2H3v7h18V3z"></path></svg></div> <div class="metric-body"><span class="metric-num"> </span> <span class="metric-title">Active Queue Jobs</span></div></div> <div class="metric-card"><div class="metric-icon dead-icon"><svg viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"></path></svg></div> <div class="metric-body"><span class="metric-num"> </span> <span class="metric-title">Dead / Poison Jobs</span></div></div></div> <div class="row-flex"><div class="card glass flex-2"><div class="card-header"><h2>Memory Engine Overview</h2></div> <div class="card-body"><div class="info-table"><div class="info-row"><span class="info-label">Active Connection</span> <span class="info-val code"> </span></div> <div class="info-row"><span class="info-label">Storage Engine</span> <span class="info-val"> </span></div> <div class="info-row"><span class="info-label">Database Disk Size</span> <span class="info-val"> </span></div> <div class="info-row"><span class="info-label">Local Host Port</span> <span class="info-val">8758</span></div></div></div></div> <div class="card glass flex-1"><div class="card-header"><h2>Developer Console</h2></div> <div class="card-body terminal-panel"><div class="terminal-header"><span class="terminal-dot red"></span> <span class="terminal-dot yellow"></span> <span class="terminal-dot green"></span> <span class="terminal-title">quick diagnostics</span></div> <div class="terminal-body" style="max-height: 180px; overflow-y: auto;"></div></div></div></div></div>`),fa=q(`<div class="empty-state">No collections found.</div>`),pa=q(`<button><span class="item-name"> </span> <span class="item-count-badge">coll</span></button>`),ma=q(`<tr><td colspan="5" class="text-center text-muted">Please select a collection from the sidebar to inspect items.</td></tr>`),ha=q(`<tr><td colspan="5" class="text-center text-muted">This collection is currently empty.</td></tr>`),ga=q(`<tr><td class="code-cell font-weight-bold"> </td><td class="text-cell"> </td><td class="code-cell"> </td><td class="text-muted" style="font-size: 11px;"> </td><td><div class="btn-group gap-sm"><button class="btn btn-sm btn-secondary">Edit</button> <button class="btn btn-sm btn-danger">Delete</button></div></td></tr>`),_a=q(`<div class="tab-panel active"><div class="split-layout"><div class="list-side panel-sidebar card glass"><div class="card-header side-header"><h3>Collections</h3></div> <div class="card-body scroll-y"><!></div></div> <div class="inspect-side panel-main card glass"><div class="card-header flex-header"><h3> </h3> <div class="header-actions"><button class="btn btn-primary">Add Memory Object</button></div></div> <div class="card-body flex-column scroll-y"><div class="scroll-table-wrapper"><table class="data-table"><thead><tr><th>Object ID</th><th>Text Content</th><th>Custom Data</th><th>Created At</th><th>Actions</th></tr></thead><tbody><!></tbody></table></div></div></div></div></div>`),va=q(`<div class="empty-state">No event streams found.</div>`),ya=q(`<button><span class="item-name"> </span> <span class="item-count-badge">stream</span></button>`),ba=q(`<div class="timeline-empty">Please choose a stream from the sidebar.</div>`),xa=q(`<div class="timeline-empty">This stream has no logged events yet.</div>`),Sa=q(`<pre class="timeline-data scroll-x"> </pre>`),Ca=q(`<div><div class="timeline-marker"></div> <div class="timeline-card"><div class="timeline-header"><div class="timeline-title"><span class="timeline-badge"> </span> <span class="text-dark font-weight-bold" style="font-size: 11px;"> </span></div> <span class="timeline-time"> </span></div> <div class="timeline-text"> </div> <!></div></div>`),wa=q(`<div class="tab-panel active"><div class="split-layout"><div class="list-side panel-sidebar card glass"><div class="card-header"><h3>Event Streams</h3></div> <div class="card-body scroll-y"><!></div></div> <div class="inspect-side panel-main card glass"><div class="card-header flex-header"><h3> </h3> <div class="header-actions"><button class="btn btn-primary">Append Event</button></div></div> <div class="card-body scroll-y timeline-viewport"><div class="timeline"><!></div></div></div></div></div>`),Ta=q(`<div class="empty-state">No active queues found.</div>`),Ea=q(`<button><span class="item-name"> </span> <span class="item-count-badge">queue</span></button>`),Da=q(`<div class="queue-stats-bar"><span class="badge badge-ready"> </span> <span class="badge badge-leased"> </span> <span class="badge badge-dead"> </span></div>`),Oa=q(`<tr><td colspan="7" class="text-center text-muted">No queue selected.</td></tr>`),ka=q(`<tr><td colspan="7" class="text-center text-muted">No active jobs in this queue.</td></tr>`),Aa=q(`<tr><td class="code-cell font-weight-bold"> </td><td><span> </span></td><td class="text-center"> </td><td class="text-center"> </td><td class="code-cell"> </td><td class="text-muted" style="font-size: 11px;"> </td><td><button class="btn btn-sm btn-secondary">Inspect Ops</button></td></tr>`),ja=q(`<div class="scroll-table-wrapper"><table class="data-table"><thead><tr><th>Job ID</th><th>Status</th><th>Attempts</th><th>Max Attempts</th><th>Payload</th><th>Available At</th><th>Actions</th></tr></thead><tbody><!></tbody></table></div>`),Ma=q(`<tr><td colspan="6" class="text-center text-muted">No queue selected.</td></tr>`),Na=q(`<tr><td colspan="6" class="text-center text-muted">No poison or dead jobs reported.</td></tr>`),Pa=q(`<tr><td class="code-cell font-weight-bold"> </td><td class="text-center"> </td><td class="text-center"> </td><td class="text-muted" style="font-size: 11px;"> </td><td class="text-danger"> </td><td class="code-cell"> </td></tr>`),Fa=q(`<div class="scroll-table-wrapper"><table class="data-table"><thead><tr><th>Job ID</th><th>Attempts</th><th>Max Attempts</th><th>Dead At</th><th>Last Error</th><th>Payload</th></tr></thead><tbody><!></tbody></table></div>`),Ia=q(`<div class="tab-panel active"><div class="split-layout"><div class="list-side panel-sidebar card glass"><div class="card-header"><h3>Queues</h3></div> <div class="card-body scroll-y"><!></div></div> <div class="inspect-side panel-main card glass"><div class="card-header flex-header flex-column-mobile"><div class="header-details"><h3> </h3> <!></div> <div class="header-actions gap-sm"><button class="btn btn-secondary">Push Job</button> <button class="btn btn-secondary">Claim Next</button></div></div> <div class="card-body flex-column scroll-y"><div class="tabs-subnav"><button> </button> <button> </button></div> <!></div></div></div></div>`),La=q(`<tr><td colspan="5" class="text-center text-muted">Enter a search query above and click 'Run Search' to inspect FTS5 matching.</td></tr>`),Ra=q(`<tr><td><span class="badge badge-leased"> </span></td><td class="code-cell font-weight-bold"> </td><td style="font-size: 13px;"></td><td class="code-cell"> </td><td class="font-weight-bold text-success"> </td></tr>`),za=q(`<div class="tab-panel active"><div class="card glass fill-height flex-column"><div class="card-header"><h2>Stemming Search Tester (FTS5 Engine)</h2></div> <div class="card-body flex-column scroll-y"><div class="search-form-grid"><div class="form-group flex-3"><label for="search-query">Stemmed Search Query</label> <div class="search-input-group"><input type="text" id="search-query" placeholder="e.g. agent memory, scheduler OR heartbeat..." class="form-input search-input"/> <button class="btn btn-primary">Run Search</button></div></div> <div class="form-group flex-1"><label for="search-limit">Limit</label> <input type="number" id="search-limit" class="form-input" min="1"/></div></div> <div class="row-flex gap-lg"><div class="form-group flex-1"><label for="search-cols">Filter Collections (optional comma list)</label> <input type="text" id="search-cols" placeholder="e.g. system, schedules" class="form-input"/></div> <div class="form-group flex-1"><label for="search-meta">Metadata Filter JSON (optional)</label> <input type="text" id="search-meta" placeholder="e.g. {&quot;status&quot;:&quot;active&quot;}" class="form-input"/></div></div> <div class="search-results-section"><h4 class="section-title"> </h4> <div class="scroll-table-wrapper"><table class="data-table"><thead><tr><th>Collection</th><th>Object ID</th><th>Stemmed / Highlighted Text Match</th><th>Custom Metadata</th><th>Score</th></tr></thead><tbody><!></tbody></table></div></div></div></div></div>`),Ba=q(`<div class="card glass" style="margin: 12px 0; padding: 16px;"><h4 style="margin: 0 0 12px 0;">LLM Configuration</h4> <div class="row-flex gap-lg"><div class="form-group flex-1"><label for="nlq-model">Model</label> <input type="text" id="nlq-model" placeholder="llama3" class="form-input"/></div> <div class="form-group flex-2"><label for="nlq-endpoint">Endpoint</label> <input type="text" id="nlq-endpoint" placeholder="http://localhost:11434/v1" class="form-input"/></div> <div class="form-group flex-1"><label for="nlq-apikey">API Key (optional)</label> <input type="password" id="nlq-apikey" placeholder="sk-..." class="form-input"/></div></div> <button class="btn btn-sm btn-primary" style="margin-top: 8px;">Save Settings</button></div>`),Va=q(`<span class="badge badge-queued" style="margin: 2px;"> <span class="text-muted"> </span></span>`),Ha=q(`<div style="margin-bottom: 12px;"><strong style="color: var(--color-primary);"> </strong> <span class="text-muted" style="margin-left: 8px;"> </span> <div style="margin-top: 4px; font-size: 12px;"></div></div>`),Ua=q(`<div class="card glass" style="margin: 12px 0; padding: 16px;"><h4 style="margin: 0 0 12px 0;">Schema</h4> <!></div>`),Wa=q(`<p class="text-muted" style="margin: 12px 0;">Click "Show Schema" to load schema.</p>`),Ga=q(`<div class="search-results-section"><p class="text-muted">Querying LLM and executing...</p></div>`),Ka=q(`<th>Group</th> <th>Value</th>`,1),qa=q(`<td colspan="2"></td>`),Ja=q(`<tr><td></td><td><span class="badge badge-leased"> </span></td><td class="font-weight-bold"> </td></tr>`),Ya=q(`<div class="scroll-table-wrapper"><table class="data-table"><thead><tr><th>Total</th><!></tr></thead><tbody><tr><td class="font-weight-bold text-success"> </td><!></tr><!></tbody></table></div>`),Xa=q(`<tr><td> </td><td class="font-weight-bold"> </td></tr>`),Za=q(`<div class="scroll-table-wrapper"><table class="data-table"><thead><tr><th>Bucket</th><th>Value</th></tr></thead><tbody></tbody></table></div>`),Qa=q(`<tr><td><span class="badge badge-leased"> </span></td><td class="code-cell"> </td><td class="font-weight-bold text-success"> </td></tr>`),$a=q(`<div class="scroll-table-wrapper"><table class="data-table"><thead><tr><th>Collection</th><th>ID</th><th>Score</th></tr></thead><tbody></tbody></table></div>`),eo=q(`<div class="search-results-section"><div class="card glass" style="margin-bottom: 12px; padding: 16px;"><h4 style="margin: 0 0 4px 0;">Answer</h4> <p style="font-size: 16px;"> </p></div> <!> <details style="margin-top: 12px;"><summary style="cursor: pointer; color: var(--text-muted); font-size: 12px;">Raw JSON</summary> <pre class="code-block" style="margin-top: 8px;"> </pre></details></div>`),to=q(`<div class="search-results-section"><p class="text-muted">Ask a question above to query your data using natural language.</p></div>`),no=q(`<div class="tab-panel active"><div class="card glass fill-height flex-column"><div class="card-header" style="display: flex; justify-content: space-between; align-items: center;"><h2>Natural Language Query</h2> <div style="display: flex; gap: 8px;"><button class="btn btn-sm btn-secondary"> </button> <button class="btn btn-sm btn-secondary">⚙️ Settings</button></div></div> <div class="card-body flex-column scroll-y"><div class="search-form-grid"><div class="form-group flex-3"><label for="nlq-question">Ask a question about your data</label> <div class="search-input-group"><input type="text" id="nlq-question" placeholder="e.g. total revenue by region, most recent events, count of all objects..." class="form-input search-input"/> <button class="btn btn-primary"> </button></div></div> <div class="form-group flex-1"><label for="nlq-collection">Collection (optional)</label> <input type="text" id="nlq-collection" placeholder="e.g. orders" class="form-input"/></div></div> <!> <!> <!></div></div></div>`),ro=q(`<span> </span>`),io=q(`<div class="tab-panel active"><div class="card glass fill-height flex-column"><div class="card-header"><h2>Database Health</h2></div> <div class="card-body scroll-y"><div class="metrics-grid"><div class="metric-card glass"><div class="metric-value"> </div> <div class="metric-label">Integrity Check</div> <div class="metric-detail"> </div> <button class="btn btn-sm btn-secondary" style="margin-top: 8px;">Run Check</button></div> <div class="metric-card glass"><div class="metric-value"> </div> <div class="metric-label">WAL Mode</div> <div class="metric-detail"> </div> <button class="btn btn-sm btn-secondary" style="margin-top: 8px;">Run Checkpoint</button></div> <div class="metric-card glass"><div class="metric-value"> </div> <div class="metric-label">Last Backup</div> <div class="metric-detail"><!></div> <button class="btn btn-sm btn-secondary" style="margin-top: 8px;">Create Backup</button></div></div></div></div></div>`),ao=q(`<div class="modal-overlay active"><div class="modal-card"><div class="modal-header"><h3> </h3> <button class="modal-close-btn">&times;</button></div> <div class="modal-body"><form><div class="form-group"><label for="obj-id">Object ID *</label> <input type="text" id="obj-id" placeholder="e.g. config-123" class="form-input" required=""/></div> <div class="form-group"><label for="obj-text">Text Content (indexed for stemming search)</label> <textarea id="obj-text" placeholder="Enter text..." class="form-input" rows="4"></textarea></div> <div class="form-group"><!></div> <div class="modal-footer"><button type="button" class="btn btn-secondary">Cancel</button> <button type="submit" class="btn btn-primary">Save Object</button></div></form></div></div></div>`),oo=q(`<div class="modal-overlay active"><div class="modal-card"><div class="modal-header"><h3>Append Memory Event</h3> <button class="modal-close-btn">&times;</button></div> <div class="modal-body"><form><div class="form-group"><label for="ev-stream">Stream Name *</label> <input type="text" id="ev-stream" placeholder="e.g. logs" class="form-input" required=""/></div> <div class="form-group"><label for="ev-type">Event Type *</label> <input type="text" id="ev-type" placeholder="e.g. decision" class="form-input" required=""/></div> <div class="form-group"><label for="ev-text">Event Text</label> <input type="text" id="ev-text" placeholder="Enter message..." class="form-input"/></div> <div class="form-group"><!></div> <div class="modal-footer"><button type="button" class="btn btn-secondary">Cancel</button> <button type="submit" class="btn btn-primary">Append Event</button></div></form></div></div></div>`),so=q(`<div class="modal-overlay active"><div class="modal-card"><div class="modal-header"><h3>Push Job onto Queue</h3> <button class="modal-close-btn">&times;</button></div> <div class="modal-body"><form><div class="form-group"><!></div> <div class="row-flex gap-md"><div class="form-group flex-1"><label for="job-delay">Delay (ms)</label> <input type="number" id="job-delay" placeholder="0" class="form-input" min="0"/></div> <div class="form-group flex-1"><label for="job-attempts">Max Attempts</label> <input type="number" id="job-attempts" class="form-input" min="1"/></div></div> <div class="form-group"><label for="job-idempotency">Idempotency Key (optional)</label> <input type="text" id="job-idempotency" placeholder="e.g. lock-1" class="form-input"/></div> <div class="modal-footer"><button type="button" class="btn btn-secondary">Cancel</button> <button type="submit" class="btn btn-primary">Push Job</button></div></form></div></div></div>`),co=q(`<div class="modal-overlay active"><div class="modal-card"><div class="modal-header"><h3>Claim Next Queue Job</h3> <button class="modal-close-btn">&times;</button></div> <div class="modal-body"><form><div class="form-group"><label for="claim-lease">Lease Duration (ms)</label> <input type="number" id="claim-lease" placeholder="60000" class="form-input" min="1000"/> <span class="input-tip">Lock period in ms.</span></div> <div class="modal-footer"><button type="button" class="btn btn-secondary">Cancel</button> <button type="submit" class="btn btn-primary">Claim Job</button></div></form></div></div></div>`),lo=q(`<div class="modal-overlay active"><div class="modal-card"><div class="modal-header"><h3>Connection Settings</h3> <button class="modal-close-btn">&times;</button></div> <div class="modal-body"><form><div class="form-group"><label for="conn-drv">Storage Driver *</label> <select id="conn-drv" class="form-input" style="background: rgba(0, 0, 0, 0.4);"><option>In-Memory Store</option><option>Native SQLite (FTS5)</option><option>Cloud Endpoint</option></select></div> <div class="form-group"><label for="conn-pth">Database Path / Endpoint URL *</label> <input type="text" id="conn-pth" placeholder="e.g. :memory: or database.db" class="form-input" required=""/></div> <div class="form-group"><label for="conn-tok">Bearer Security Token (optional)</label> <input type="password" id="conn-tok" placeholder="Security authorization key..." class="form-input"/></div> <div class="modal-footer"><button type="button" class="btn btn-secondary">Cancel</button> <button type="submit" class="btn btn-primary">Connect</button></div></form></div></div></div>`),uo=q(`<form class="nack-details-form form-group mt-md"><div class="form-group"><label for="nack-err">Error Message (optional)</label> <input type="text" id="nack-err" placeholder="e.g. failure..." class="form-input"/></div> <div class="form-group"><label for="nack-del">Retry Delay (ms)</label> <input type="number" id="nack-del" class="form-input"/></div> <button type="submit" class="btn btn-primary">Submit Nack</button></form>`),fo=q(`<div class="ops-controls"><h4 class="ops-section-title">Ack / Nack Supervisor (Resolve Job)</h4> <div class="btn-group gap-md" style="display: flex;"><button class="btn btn-success flex-1">Acknowledge Job (Ack)</button> <button class="btn btn-warning flex-1">Reject / Fail Job (Nack)</button></div> <!></div>`),po=q(`<div class="modal-overlay active"><div class="modal-card wide"><div class="modal-header"><h3>Queue Job Operations</h3> <button class="modal-close-btn">&times;</button></div> <div class="modal-body flex-column"><div class="job-detail-card"><div class="info-row"><span class="info-label">Job ID</span> <span class="info-val code"> </span></div> <div class="info-row"><span class="info-label">Queue</span> <span class="info-val code"> </span></div> <div class="info-row"><span class="info-label">Status</span> <span class="info-val"> </span></div> <div class="info-row"><span class="info-label">Attempts</span> <span class="info-val"> </span></div> <div class="info-group"><label for="payload-ops-view">Payload JSON</label> <pre id="payload-ops-view" class="code-view block scroll-x"> </pre></div></div> <!></div></div></div>`),mo=q(`<div><div class="toast-message"> </div></div>`),ho=q(`<!> <div class="app-container"><aside class="sidebar"><div class="sidebar-brand"><span class="brand-logo">tg</span> <span class="brand-text">thingd<span class="version-badge"> </span></span></div> <nav class="sidebar-nav"><button><svg class="nav-icon" viewBox="0 0 24 24"><path d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z"></path></svg> Dashboard Status</button> <button><svg class="nav-icon" viewBox="0 0 24 24"><path d="M4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm16-4H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0-2-.9-2-2V4c0-1.1-.9-2-2-2zm0 14H8V4h12v12z"></path></svg> Collections & Objects</button> <button><svg class="nav-icon" viewBox="0 0 24 24"><path d="M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z"></path></svg> Event Log Stream</button> <button><svg class="nav-icon" viewBox="0 0 24 24"><path d="M19 15v3H5v-3h14m2-2H3v7h18v-7zM19 5v3H5V5h14m2-2H3v7h18V3z"></path></svg> Queues & Background Jobs</button> <button><svg class="nav-icon" viewBox="0 0 24 24"><path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path></svg> Stemming FTS5 Tester</button> <button><svg class="nav-icon" viewBox="0 0 24 24"><path d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H5.17L4 17.17V4h16v12z"></path></svg> NLQ Query</button> <button><svg class="nav-icon" viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"></path></svg> Database Health</button></nav> <div class="sidebar-footer" style="display: flex; flex-direction: column; gap: 10px;"><div class="status-indicator"><span class="pulse-dot"></span> <span class="status-text"> </span></div> <!></div></aside> <main class="main-panel"><header class="topbar"><div class="topbar-left"><h1><!> <!> <!> <!> <!> <!> <!></h1></div> <div class="topbar-right"><div class="connection-meta"><span class="meta-label">Driver:</span> <span class="meta-val"> </span> <span class="meta-sep">|</span> <span class="meta-label">Path:</span> <span class="meta-val path-val"> </span> <span class="meta-sep">|</span> <span class="meta-label">Size:</span> <span class="meta-val"> </span></div> <button class="btn btn-secondary btn-icon"><svg viewBox="0 0 24 24" width="16" height="16" style="fill: currentColor;"><path d="M19.14,12.94c0.04-0.3,0.06-0.61,0.06-0.94c0-0.32-0.02-0.64-0.07-0.94l2.03-1.58c0.18-0.14,0.23-0.41,0.12-0.61l-1.92-3.32c-0.12-0.22-0.37-0.29-0.59-0.22l-2.39,0.96c-0.5-0.38-1.03-0.7-1.62-0.94L14.4,2.81c-0.04-0.24-0.24-0.41-0.48-0.41h-3.84c-0.24,0-0.43,0.17-0.47,0.41L9.25,5.35C8.66,5.59,8.12,5.92,7.63,6.29L5.24,5.33c-0.22-0.08-0.47,0-0.59,0.22L2.74,8.87c-0.12,0.21-0.08,0.47,0.12,0.61l2.03,1.58C4.84,11.36,4.8,11.69,4.8,12c0,0.31,0.04,0.64,0.09,0.94l-2.03,1.58c-0.18,0.14-0.23,0.41-0.12,0.61l1.92,3.32c0.12,0.22,0.37,0.29,0.59,0.22l2.39-0.96c0.5,0.38,1.03,0.7,1.62,0.94l0.36,2.54c0.05,0.24,0.24,0.41,0.48,0.41h3.84c0.24,0,0.44-0.17,0.47-0.41l0.36-2.54c0.59-0.24,1.13-0.56,1.62-0.94l2.39,0.96c0.22,0.08,0.47,0,0.59-0.22l1.92-3.32c0.12-0.22,0.07-0.47-0.12-0.61L19.14,12.94z M12,15.6c-1.98,0-3.6-1.62-3.6-3.6c0-1.98,1.62-3.6,3.6-3.6s3.6,1.62,3.6,3.6C15.6,13.98,13.98,15.6,12,15.6z"></path></svg> Settings</button> <button class="btn btn-secondary btn-icon"><svg viewBox="0 0 24 24" width="16" height="16" style="fill: currentColor;"><path d="M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"></path></svg> Refresh</button></div></header> <div class="view-viewport"><!> <!> <!> <!> <!> <!> <!></div></main></div> <!> <!> <!> <!> <!> <!> <div class="toast-container" id="toast-container"></div>`,1);function go(e,t){He(t,!1);let n=R(`metrics`),r=R(`Connecting...`),i=R(`-`),a=R(`-`),o=R(`N/A`),s=R({objects:0,events:0,activeJobs:0,deadJobs:0}),c=R({integrityOk:!1,integrityMessage:`Not checked`,walMode:`-`,walFrames:0,backupPath:``,backupSize:0}),l=R(``),u=R([{time:new Date().toLocaleTimeString(),text:`Svelte Dashboard loaded successfully.`,type:`muted`},{time:new Date().toLocaleTimeString(),text:`Establishing database connections...`,type:`info`}]),d=R(localStorage.getItem(`thingd_auth_token`)||``),f=R(!1),p=R(``),m=R([]),h=R(null),g=R([]),_=R([]),v=R(null),y=R([]),b=R([]),x=R(null),S=R({queue:``,totalActive:0,ready:0,leased:0,dead:0}),C=R([]),w=R([]),ee=R(`active`),T=R(null),te=R(``),ne=R(20),re=R(``),ie=R(``),E=R([]),ae=R(``),oe=R(``),D=R(null),se=R(!1),ce=R(null),le=R(!1),ue=R(localStorage.getItem(`thingd_nlq_model`)||`llama3`),de=R(localStorage.getItem(`thingd_nlq_endpoint`)||`http://localhost:11434/v1`),fe=R(localStorage.getItem(`thingd_nlq_api_key`)||``),pe=R(!1),me=R(new Set);function he(e){G(me).add(e),z(me,G(me)),setTimeout(()=>{G(me).delete(e),z(me,G(me))},1500)}let ge=R(!1),_e=R(!1),ve=R(!1),ye=R(!1),be=R(!1),xe=R(!1),Se=R(!1),Ce=R(!1),we=R(``),Te=R(``),O=R(``),Ee=R(``),De=R(``),Oe=R(``),ke=R(``),Ae=R(``),je=R(0),Me=R(5),k=R(``),Ne=R(6e4),A=R(``),j=R(0),Pe=R(`memory`),Fe=R(`:memory:`),Ie=R(``),Le=R([]);function P(e,t=`info`){let n=Date.now()+Math.random();z(Le,[...G(Le),{id:n,message:e,type:t}]),setTimeout(()=>{z(Le,G(Le).filter(e=>e.id!==n))},4e3)}function Re(e,t=``){let n=new Date().toLocaleTimeString();z(u,[...G(u),{time:n,text:e,type:t}]),G(u).length>50&&z(u,G(u).slice(-50))}function ze(e){return e instanceof Error?e.message:String(e)}function Be(e){return e?e.toString().replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#039;`):``}async function F(e,t={}){let n={"Content-Type":`application/json`};G(d)&&(n.Authorization=`Bearer ${G(d)}`);try{let r=await fetch(e,{headers:n,...t});if(r.status===401)throw z(f,!0),P(`Authentication token required.`,`warning`),Error(`Unauthorized`);let i=r.headers.get(`content-type`)?.includes(`application/json`)?await r.json():await r.text();if(!r.ok)throw Error(i?.error||`HTTP ${r.status}: ${r.statusText}`);return i}catch(t){throw ze(t)!==`Unauthorized`&&Re(`API request failed (${e}): ${ze(t)}`,`danger`),t}}async function Ve(){try{let e=await F(`/api/status`);z(r,`Active (Localhost)`),z(i,e.driver===`memory`?`In-Memory Store`:e.driver===`native`?`Native SQLite (FTS5)`:`Cloud Endpoint`),z(a,e.path),z(o,e.metrics.dbSize||`N/A`),z(s,e.metrics),z(l,e.version||``),z(f,!1)}catch(e){e.message!==`Unauthorized`&&(z(r,`Disconnected`),z(i,`Disconnected`),z(a,`-`),z(o,`N/A`),Re(`Status synchronization failed: ${e.message}`,`danger`))}}function We(e){if(e.preventDefault(),!G(p).trim()){P(`Token is required.`,`warning`);return}z(d,G(p).trim()),localStorage.setItem(`thingd_auth_token`,G(d)),z(f,!1),P(`Token registered successfully.`,`success`),Re(`Custom security authorization key set.`),Ke()}function Ge(){z(d,``),localStorage.removeItem(`thingd_auth_token`),z(f,!0),P(`Secure session logged out.`,`info`)}function Ke(){Ve(),G(n)===`collections`&&Je(),G(n)===`events`&&et(),G(n)===`queues`&&ot()}function qe(e){z(n,e),e===`collections`?Je():e===`events`?et():e===`queues`&&ot()}async function Je(){try{z(m,await F(`/api/collections`))}catch(e){e.message!==`Unauthorized`&&P(`Failed to fetch collections: ${e.message}`,`error`)}}async function Ye(e){z(h,e),Xe()}async function Xe(){if(G(h))try{z(g,await F(`/api/objects?collection=${encodeURIComponent(G(h))}`))}catch(e){e.message!==`Unauthorized`&&P(`Failed to load objects: ${e.message}`,`error`)}}function Ze(){z(Se,!1),z(we,``),z(Te,``),z(O,``),z(ge,!0)}function I(e){z(Se,!0),z(we,e.id),z(Te,e.text||``);let t={...e};delete t.id,delete t.text,delete t.collection,delete t.createdAt,delete t.updatedAt,delete t.version,z(O,Object.keys(t).length>0?JSON.stringify(t,null,2):``),z(ge,!0)}async function Qe(e){e.preventDefault();let t={};if(G(O).trim())try{t=JSON.parse(G(O))}catch{P(`Custom data must be valid JSON.`,`error`);return}try{await F(`/api/objects`,{method:`POST`,body:JSON.stringify({collection:G(h),id:G(we),text:G(Te),data:t})}),P(`Object "${G(we)}" saved successfully.`,`success`),Re(`Saved object "${G(we)}" in collection "${G(h)}".`),z(ge,!1),he(G(we)),Xe(),Ve()}catch(e){P(`Save failed: ${e.message}`,`error`)}}async function $e(e){if(confirm(`Are you sure you want to delete object "${e}"?`))try{await F(`/api/objects?collection=${encodeURIComponent(G(h))}&id=${encodeURIComponent(e)}`,{method:`DELETE`}),P(`Object "${e}" deleted.`,`success`),Re(`Deleted object "${e}" from collection "${G(h)}".`,`warning`),Xe(),Ve()}catch(e){P(`Deletion failed: ${e.message}`,`error`)}}async function et(){try{z(_,await F(`/api/events/streams`))}catch(e){e.message!==`Unauthorized`&&P(`Failed to fetch event streams: ${e.message}`,`error`)}}function tt(e){z(v,e),nt()}async function nt(){if(G(v))try{z(y,await F(`/api/events?stream=${encodeURIComponent(G(v))}`))}catch(e){e.message!==`Unauthorized`&&P(`Failed to load event timeline: ${e.message}`,`error`)}}function it(){z(Ee,G(v)||``),z(De,``),z(Oe,``),z(ke,``),z(_e,!0)}async function at(e){e.preventDefault();let t={};if(G(ke).trim())try{t=JSON.parse(G(ke))}catch{P(`Event payload must be valid JSON.`,`error`);return}try{await F(`/api/events`,{method:`POST`,body:JSON.stringify({stream:G(Ee),type:G(De),text:G(Oe),data:t})}),P(`Event logged successfully.`,`success`),Re(`Appended event [${G(De)}] to stream "${G(Ee)}".`),z(_e,!1),he(G(Ee)),et(),G(v)===G(Ee)?nt():tt(G(Ee)),Ve()}catch(e){P(`Failed to append event: ${e.message}`,`error`)}}async function ot(){try{z(b,await F(`/api/queues`))}catch(e){e.message!==`Unauthorized`&&P(`Failed to fetch queues: ${e.message}`,`error`)}}async function st(e){z(x,e),ct(),lt()}async function ct(){if(G(x))try{z(S,await F(`/api/queues/stats?queue=${encodeURIComponent(G(x))}`))}catch(e){Re(`Queue stats failed: ${ze(e)}`,`danger`),ze(e)!==`Unauthorized`&&P(`Failed to load queue stats: ${ze(e)}`,`error`)}}async function lt(){if(G(x))try{let[e,t]=await Promise.all([F(`/api/queues/jobs?queue=${encodeURIComponent(G(x))}&status=active`),F(`/api/queues/jobs?queue=${encodeURIComponent(G(x))}&status=dead`)]);z(C,e),z(w,t)}catch(e){e.message!==`Unauthorized`&&P(`Failed to load jobs list: ${e.message}`,`error`)}}function ut(){z(Ae,``),z(je,0),z(Me,5),z(k,``),z(ve,!0)}async function dt(e){e.preventDefault();let t={};try{t=JSON.parse(G(Ae))}catch{P(`Payload must be valid JSON object.`,`error`);return}try{let e=await F(`/api/queues/push`,{method:`POST`,body:JSON.stringify({queue:G(x),payload:t,delayMs:G(je),maxAttempts:G(Me),idempotencyKey:G(k)||void 0})});P(`Job "${e.id}" pushed onto queue.`,`success`),Re(`Pushed job ID "${e.id}" onto queue "${G(x)}".`),z(ve,!1),he(e.id),ct(),lt(),Ve()}catch(e){P(`Failed to push job: ${e.message}`,`error`)}}function ft(){z(Ne,6e4),z(ye,!0)}async function pt(e){e.preventDefault();try{let e=await F(`/api/queues/claim`,{method:`POST`,body:JSON.stringify({queue:G(x),leaseMs:G(Ne)})});if(!e){P(`No ready jobs available in queue.`,`warning`),Re(`No ready jobs available in queue "${G(x)}".`,`warning`),z(ye,!1);return}P(`Claimed job ID: "${e.id}"`,`success`),Re(`Claimed job ID "${e.id}" from queue "${G(x)}".`,`success`),z(ye,!1),ct(),lt(),Ve(),mt(e)}catch(e){P(`Claim failed: ${e.message}`,`error`)}}function mt(e){z(T,e),z(Ce,!1),z(A,``),z(j,0),z(be,!0)}async function ht(){if(!G(T))return;let e=G(T).id;try{await F(`/api/queues/ack`,{method:`POST`,body:JSON.stringify({queue:G(x),jobId:e})}),P(`Job "${e}" acknowledged (ACK).`,`success`),Re(`Acknowledged (ACK) job "${e}" from queue "${G(x)}".`,`success`),z(be,!1),ct(),lt(),Ve()}catch(e){P(`ACK failed: ${e.message}`,`error`)}}async function gt(e){if(e.preventDefault(),!G(T))return;let t=G(T).id;try{await F(`/api/queues/nack`,{method:`POST`,body:JSON.stringify({queue:G(x),jobId:t,error:G(A)||void 0,delayMs:G(j)})}),P(`Job "${t}" rejected (NACK).`,`warning`),Re(`Rejected (NACK) job "${t}" from queue "${G(x)}".`,`warning`),z(be,!1),ct(),lt(),Ve()}catch(e){P(`NACK failed: ${e.message}`,`error`)}}async function _t(){let e=G(te).trim();if(!e){P(`Search query is required.`,`warning`);return}z(E,[]);let t=`/api/search?query=${encodeURIComponent(e)}&limit=${G(ne)}`;if(G(re).trim()&&(t+=`&collections=${encodeURIComponent(G(re))}`),G(ie).trim())try{JSON.parse(G(ie)),t+=`&filter=${encodeURIComponent(G(ie))}`}catch{P(`Metadata filter must be a valid JSON.`,`error`);return}try{z(E,await F(t))}catch(e){e.message!==`Unauthorized`&&P(`Search failed: ${e.message}`,`error`)}}async function vt(){let e=G(ae).trim();if(!e){P(`Please enter a question.`,`warning`);return}z(se,!0),z(D,null),xt();try{let t=await fetch(`/api/nlq`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({question:e,collection:G(oe)||void 0,model:G(ue),endpoint:G(de),apiKey:G(fe)})}),n=await t.json();if(!t.ok){P(n.error||`NLQ request failed`,`error`);return}z(D,n)}catch(e){P(`NLQ failed: ${e.message}`,`error`)}finally{z(se,!1)}}async function bt(){try{let e=G(oe)?`/api/schema?collection=${encodeURIComponent(G(oe))}`:`/api/schema`;z(ce,await F(e))}catch(e){P(`Schema fetch failed: ${e.message}`,`error`)}}function xt(){localStorage.setItem(`thingd_nlq_model`,G(ue)),localStorage.setItem(`thingd_nlq_endpoint`,G(de)),localStorage.setItem(`thingd_nlq_api_key`,G(fe))}function St(e){return typeof e==`number`?e.toLocaleString():String(e??``)}function Ct(e,t){if(!e)return`-`;let n=Be(e);try{t.replace(/[^\w\s]/g,``).split(/\s+/).filter(e=>e.length>2).forEach(e=>{let t=RegExp(`(${e})`,`gi`);n=n.replace(t,`<span class="highlighted-match">$1</span>`)})}catch{}return n}async function wt(){try{let e=await F(`/api/db/integrity`);z(c,{...G(c),integrityOk:e.ok,integrityMessage:e.message}),P(e.ok?`Integrity check passed`:`Integrity check failed: ${e.message}`,e.ok?`success`:`error`)}catch(e){P(`Integrity check failed: ${e.message}`,`error`)}}async function Tt(){try{let e=await F(`/api/db/checkpoint`);z(c,{...G(c),walFrames:e.framesAfter||0}),P(`WAL checkpoint complete (${e.framesBefore||0} frames before)`,`success`)}catch(e){P(`WAL checkpoint failed: ${e.message}`,`error`)}}async function Et(){let e=prompt(`Enter backup file path:`,`thingd-backup-${Date.now()}.db`);if(e)try{let t=await F(`/api/backup`,{method:`POST`,body:JSON.stringify({path:e})});z(c,{...G(c),backupPath:t.path,backupSize:t.sizeBytes}),P(`Backup created: ${t.path}`,`success`)}catch(e){P(`Backup failed: ${e.message}`,`error`)}}function L(){z(Pe,G(i).includes(`In-Memory`)?`memory`:G(i).includes(`FTS5`)?`native`:`cloud`),z(Fe,G(a)),z(Ie,G(d)),z(xe,!0)}async function Dt(e){e.preventDefault();try{await F(`/api/connect`,{method:`POST`,body:JSON.stringify({path:G(Fe),driver:G(Pe),authToken:G(Ie)||void 0})}),z(d,G(Ie)),G(d)?localStorage.setItem(`thingd_auth_token`,G(d)):localStorage.removeItem(`thingd_auth_token`),P(`Database connection swapped successfully.`,`success`),Re(`Swapped database connection to: [${G(Pe)}] ${G(Fe)}`),z(xe,!1),z(h,null),z(v,null),z(x,null),Ke()}catch(e){P(`Connection failed: ${e.message}`,`error`)}}let Ot=null,kt=null;Ni(()=>{Ve(),Re(`DB Connection resolved: Active local SQLite stemming context.`,`success`),Ot=setInterval(Ve,4e3),kt=setInterval(()=>{G(n)===`events`&&G(v)&&nt(),G(n)===`queues`&&G(x)&&(ct(),lt())},3e3)}),Pi(()=>{Ot&&clearInterval(Ot),kt&&clearInterval(kt)}),Ai();var At=ho(),jt=pn(At),Mt=e=>{var t=ca(),n=B(t),r=V(B(n),2),i=V(B(r),4),a=B(i),o=V(B(a),2);Q(o),M(a),N(2),M(i),M(r),M(n),M(t),$(o,()=>G(p),e=>z(p,e)),K(`submit`,i,We),J(e,t)};X(jt,e=>{G(f)&&e(Mt)});var Nt=V(jt,2),Pt=B(Nt),Ft=B(Pt),It=V(B(Ft),2),Lt=V(B(It)),Rt=B(Lt,!0);M(Lt),M(It),M(Ft);var zt=V(Ft,2),Bt=B(zt),Vt=V(Bt,2),Ht=V(Vt,2),Ut=V(Ht,2),Wt=V(Ut,2),Gt=V(Wt,2),Kt=V(Gt,2);M(zt);var qt=V(zt,2),Jt=B(qt),Yt=V(B(Jt),2),Xt=B(Yt,!0);M(Yt),M(Jt);var Zt=V(Jt,2),Qt=e=>{var t=la();K(`click`,t,Ge),J(e,t)};X(Zt,e=>{G(d)&&e(Qt)}),M(qt),M(Pt);var $t=V(Pt,2),en=B($t),tn=B(en),nn=B(tn),rn=B(nn),an=e=>{J(e,Fr(`Dashboard Status`))};X(rn,e=>{G(n)===`metrics`&&e(an)});var on=V(rn,2),sn=e=>{J(e,Fr(`Collections & Objects`))};X(on,e=>{G(n)===`collections`&&e(sn)});var cn=V(on,2),ln=e=>{J(e,Fr(`Event Log Stream`))};X(cn,e=>{G(n)===`events`&&e(ln)});var un=V(cn,2),dn=e=>{J(e,Fr(`Queues & Background Jobs`))};X(un,e=>{G(n)===`queues`&&e(dn)});var fn=V(un,2),mn=e=>{J(e,Fr(`Stemming FTS5 Tester`))};X(fn,e=>{G(n)===`search`&&e(mn)});var hn=V(fn,2),gn=e=>{J(e,Fr(`NLQ Query`))};X(hn,e=>{G(n)===`nlq`&&e(gn)});var _n=V(hn,2),vn=e=>{J(e,Fr(`Database Health`))};X(_n,e=>{G(n)===`health`&&e(vn)}),M(nn),M(tn);var yn=V(tn,2),bn=B(yn),xn=V(B(bn),2),Sn=B(xn,!0);M(xn);var Cn=V(xn,6),wn=B(Cn,!0);M(Cn);var Tn=V(Cn,6),En=B(Tn,!0);M(Tn),M(bn);var Dn=V(bn,2),On=V(Dn,2);M(yn),M(en);var kn=V(en,2),An=B(kn),jn=e=>{var t=da(),n=B(t),r=B(n),c=V(B(r),2),l=B(c),d=B(l,!0);M(l),N(2),M(c),M(r);var f=V(r,2),p=V(B(f),2),m=B(p),h=B(m,!0);M(m),N(2),M(p),M(f);var g=V(f,2),_=V(B(g),2),v=B(_),y=B(v,!0);M(v),N(2),M(_),M(g);var b=V(g,2),x=V(B(b),2),S=B(x),C=B(S,!0);M(S),N(2),M(x),M(b),M(n);var w=V(n,2),ee=B(w),T=V(B(ee),2),te=B(T),ne=B(te),re=V(B(ne),2),ie=B(re,!0);M(re),M(ne);var E=V(ne,2),ae=V(B(E),2),oe=B(ae,!0);M(ae),M(E);var D=V(E,2),se=V(B(D),2),ce=B(se,!0);M(se),M(D),N(2),M(te),M(T),M(ee);var le=V(ee,2),ue=V(B(le),2),de=V(B(ue),2);qr(de,5,()=>G(u),e=>e.time,(e,t)=>{var n=ua(),r=B(n),i=B(r);M(r);var a=V(r,2),o=B(a,!0);M(a),M(n),H(()=>{Y(i,`[${G(t).time??``}]`),Z(a,1,mi(G(t).type?`text-${G(t).type}`:``)),Y(o,G(t).text)}),ui(1,n,()=>Ui,()=>({y:10,duration:200})),J(e,n)}),M(de),M(ue),M(le),M(w),M(t),H(()=>{Y(d,G(s).objects),Y(h,G(s).events),Y(y,G(s).activeJobs),Y(C,G(s).deadJobs),wi(re,`title`,G(a)),Y(ie,G(a)),Y(oe,G(i)),Y(ce,G(o))}),J(e,t)};X(An,e=>{G(n)===`metrics`&&e(jn)});var Mn=V(An,2),Nn=e=>{var t=_a(),n=B(t),r=B(n),i=V(B(r),2),a=B(i),o=e=>{J(e,fa())},s=e=>{var t=Ir();qr(pn(t),9,()=>G(m),e=>e,(e,t)=>{var n=pa(),r=B(n),i=B(r,!0);M(r),N(2),M(n),H(e=>{Z(n,1,`sidebar-list-item ${G(h)===G(t)?`active`:``} ${e??``}`),Y(i,G(t))},[()=>G(me).has(G(t))?`flash-highlight`:``]),K(`click`,n,()=>Ye(G(t))),li(n,()=>Li,()=>({duration:250})),ui(1,n,()=>Ui,()=>({x:-20,duration:250})),ui(2,n,()=>Hi,()=>({duration:150})),J(e,n)}),J(e,t)};X(a,e=>{G(m).length===0?e(o):e(s,-1)}),M(i),M(r);var c=V(r,2),l=B(c),u=B(l),d=B(u,!0);M(u);var f=V(u,2),p=B(f);M(f),M(l);var _=V(l,2),v=B(_),y=B(v),b=V(B(y)),x=B(b),S=e=>{J(e,ma())},C=e=>{J(e,ha())},w=e=>{var t=Ir();qr(pn(t),9,()=>G(g),e=>e.id,(e,t)=>{var n=ga(),r=B(n),i=B(r,!0);M(r);var a=V(r),o=B(a,!0);M(a);var s=V(a),c=B(s,!0);M(s);var l=V(s),u=B(l,!0);M(l);var d=V(l),f=B(d),p=B(f),m=V(p,2);M(f),M(d),M(n),H((e,l,d,f)=>{Z(n,1,e),wi(r,`title`,G(t).id),Y(i,G(t).id),wi(a,`title`,G(t).text||``),Y(o,G(t).text||`-`),wi(s,`title`,l),Y(c,d),Y(u,f)},[()=>G(me).has(G(t).id)?`flash-highlight`:``,()=>JSON.stringify(G(t)),()=>JSON.stringify(G(t)),()=>G(t).createdAt?new Date(G(t).createdAt).toLocaleString():`-`]),K(`click`,p,()=>I(G(t))),K(`click`,m,()=>$e(G(t).id)),li(n,()=>Li,()=>({duration:300})),ui(1,n,()=>Ui,()=>({y:20,duration:300})),ui(2,n,()=>Hi,()=>({duration:150})),J(e,n)}),J(e,t)};X(x,e=>{G(h)?G(g).length===0?e(C,1):e(w,-1):e(S)}),M(b),M(y),M(v),M(_),M(c),M(n),M(t),H(()=>{Y(d,G(h)?G(h):`Select a collection`),p.disabled=!G(h)}),K(`click`,p,Ze),J(e,t)};X(Mn,e=>{G(n)===`collections`&&e(Nn)});var Pn=V(Mn,2),Fn=e=>{var t=wa(),n=B(t),r=B(n),i=V(B(r),2),a=B(i),o=e=>{J(e,va())},s=e=>{var t=Ir();qr(pn(t),9,()=>G(_),e=>e,(e,t)=>{var n=ya(),r=B(n),i=B(r,!0);M(r),N(2),M(n),H(e=>{Z(n,1,`sidebar-list-item ${G(v)===G(t)?`active`:``} ${e??``}`),Y(i,G(t))},[()=>G(me).has(G(t))?`flash-highlight`:``]),K(`click`,n,()=>tt(G(t))),li(n,()=>Li,()=>({duration:250})),ui(1,n,()=>Ui,()=>({x:-20,duration:250})),ui(2,n,()=>Hi,()=>({duration:150})),J(e,n)}),J(e,t)};X(a,e=>{G(_).length===0?e(o):e(s,-1)}),M(i),M(r);var c=V(r,2),l=B(c),u=B(l),d=B(u,!0);M(u);var f=V(u,2),p=B(f);M(f),M(l);var m=V(l,2),h=B(m),g=B(h),b=e=>{J(e,ba())},x=e=>{J(e,xa())},S=e=>{var t=Ir();qr(pn(t),9,()=>G(y),e=>e.id,(e,t)=>{var n=Ca(),r=V(B(n),2),i=B(r),a=B(i),o=B(a),s=B(o,!0);M(o);var c=V(o,2),l=B(c);M(c),M(a);var u=V(a,2),d=B(u,!0);M(u),M(i);var f=V(i,2),p=B(f,!0);M(f);var m=V(f,2),h=e=>{var n=Sa(),r=B(n,!0);M(n),H(e=>Y(r,e),[()=>JSON.stringify(Object.fromEntries(Object.entries(G(t)).filter(([e])=>![`id`,`type`,`text`,`createdAt`,`stream`].includes(e))),null,2)]),J(e,n)},g=yt(()=>Object.keys(G(t)).filter(e=>![`id`,`type`,`text`,`createdAt`,`stream`].includes(e)).length>0);X(m,e=>{G(g)&&e(h)}),M(r),M(n),H((e,r)=>{Z(n,1,`timeline-item ${e??``}`),Y(s,G(t).type),Y(l,`#${G(t).id??``}`),Y(d,r),Y(p,G(t).text||`Logged message.`)},[()=>G(me).has(G(t).id)?`flash-highlight`:``,()=>G(t).createdAt?new Date(G(t).createdAt).toLocaleString():``]),li(n,()=>Li,()=>({duration:300})),ui(1,n,()=>Ui,()=>({y:20,duration:300})),ui(2,n,()=>Hi,()=>({duration:150})),J(e,n)}),J(e,t)};X(g,e=>{G(v)?G(y).length===0?e(x,1):e(S,-1):e(b)}),M(h),M(m),M(c),M(n),M(t),H(()=>Y(d,G(v)?`Timeline: ${G(v)}`:`All Event Timelines`)),K(`click`,p,it),J(e,t)};X(Pn,e=>{G(n)===`events`&&e(Fn)});var In=V(Pn,2),Ln=e=>{var t=Ia(),n=B(t),r=B(n),i=V(B(r),2),a=B(i),o=e=>{J(e,Ta())},s=e=>{var t=Ir();qr(pn(t),9,()=>G(b),e=>e,(e,t)=>{var n=Ea(),r=B(n),i=B(r,!0);M(r),N(2),M(n),H(e=>{Z(n,1,`sidebar-list-item ${G(x)===G(t)?`active`:``} ${e??``}`),Y(i,G(t))},[()=>G(me).has(G(t))?`flash-highlight`:``]),K(`click`,n,()=>st(G(t))),li(n,()=>Li,()=>({duration:250})),ui(1,n,()=>Ui,()=>({x:-20,duration:250})),ui(2,n,()=>Hi,()=>({duration:150})),J(e,n)}),J(e,t)};X(a,e=>{G(b).length===0?e(o):e(s,-1)}),M(i),M(r);var c=V(r,2),l=B(c),u=B(l),d=B(u),f=B(d,!0);M(d);var p=V(d,2),m=e=>{var t=Da(),n=B(t),r=B(n);M(n);var i=V(n,2),a=B(i);M(i);var o=V(i,2),s=B(o);M(o),M(t),H(()=>{Y(r,`Ready: ${G(S).ready??``}`),Y(a,`Leased: ${G(S).leased??``}`),Y(s,`Dead: ${G(S).dead??``}`)}),J(e,t)};X(p,e=>{G(x)&&e(m)}),M(u);var h=V(u,2),g=B(h),_=V(g,2);M(h),M(l);var v=V(l,2),y=B(v),T=B(y),te=B(T);M(T);var ne=V(T,2),re=B(ne);M(ne),M(y);var ie=V(y,2),E=e=>{var t=ja(),n=B(t),r=V(B(n)),i=B(r),a=e=>{J(e,Oa())},o=e=>{J(e,ka())},s=e=>{var t=Ir();qr(pn(t),9,()=>G(C),e=>e.id,(e,t)=>{var n=Aa(),r=B(n),i=B(r,!0);M(r);var a=V(r),o=B(a),s=B(o,!0);M(o),M(a);var c=V(a),l=B(c,!0);M(c);var u=V(c),d=B(u,!0);M(u);var f=V(u),p=B(f,!0);M(f);var m=V(f),h=B(m,!0);M(m);var g=V(m),_=B(g);M(g),M(n),H((e,a,c,u)=>{Z(n,1,e),wi(r,`title`,G(t).id),Y(i,G(t).id),Z(o,1,`badge ${G(t).status===`leased`?`badge-leased`:`badge-ready`}`),Y(s,G(t).status),Y(l,G(t).attempts),Y(d,G(t).maxAttempts),wi(f,`title`,a),Y(p,c),Y(h,u)},[()=>G(me).has(G(t).id)?`flash-highlight`:``,()=>JSON.stringify(G(t).payload),()=>JSON.stringify(G(t).payload),()=>G(t).availableAt?new Date(G(t).availableAt).toLocaleString():`-`]),K(`click`,_,()=>mt(G(t))),li(n,()=>Li,()=>({duration:300})),ui(1,n,()=>Ui,()=>({y:20,duration:300})),ui(2,n,()=>Hi,()=>({duration:150})),J(e,n)}),J(e,t)};X(i,e=>{G(x)?G(C).length===0?e(o,1):e(s,-1):e(a)}),M(r),M(n),M(t),J(e,t)},ae=e=>{var t=Fa(),n=B(t),r=V(B(n)),i=B(r),a=e=>{J(e,Ma())},o=e=>{J(e,Na())},s=e=>{var t=Ir();qr(pn(t),9,()=>G(w),e=>e.id,(e,t)=>{var n=Pa(),r=B(n),i=B(r,!0);M(r);var a=V(r),o=B(a,!0);M(a);var s=V(a),c=B(s,!0);M(s);var l=V(s),u=B(l,!0);M(l);var d=V(l),f=B(d,!0);M(d);var p=V(d),m=B(p,!0);M(p),M(n),H((e,n,a)=>{wi(r,`title`,G(t).id),Y(i,G(t).id),Y(o,G(t).attempts),Y(c,G(t).maxAttempts),Y(u,e),wi(d,`title`,G(t).lastError||``),Y(f,G(t).lastError||`None`),wi(p,`title`,n),Y(m,a)},[()=>G(t).deadAt?new Date(G(t).deadAt).toLocaleString():`-`,()=>JSON.stringify(G(t).payload),()=>JSON.stringify(G(t).payload)]),li(n,()=>Li,()=>({duration:300})),ui(1,n,()=>Ui,()=>({y:20,duration:300})),ui(2,n,()=>Hi,()=>({duration:150})),J(e,n)}),J(e,t)};X(i,e=>{G(x)?G(w).length===0?e(o,1):e(s,-1):e(a)}),M(r),M(n),M(t),J(e,t)};X(ie,e=>{G(ee)===`active`?e(E):e(ae,-1)}),M(v),M(c),M(n),M(t),H(()=>{Y(f,G(x)?G(x):`Select a Queue`),g.disabled=!G(x),_.disabled=!G(x),Z(T,1,`subnav-item ${G(ee)===`active`?`active`:``}`),Y(te,`Active Jobs (${G(C).length??``})`),Z(ne,1,`subnav-item ${G(ee)===`dead`?`active`:``}`),Y(re,`Dead / Poison Jobs (${G(w).length??``})`)}),K(`click`,g,ut),K(`click`,_,ft),K(`click`,T,()=>z(ee,`active`)),K(`click`,ne,()=>z(ee,`dead`)),J(e,t)};X(In,e=>{G(n)===`queues`&&e(Ln)});var Rn=V(In,2),zn=e=>{var t=za(),n=B(t),r=V(B(n),2),i=B(r),a=B(i),o=V(B(a),2),s=B(o);Q(s);var c=V(s,2);M(o),M(a);var l=V(a,2),u=V(B(l),2);Q(u),M(l),M(i);var d=V(i,2),f=B(d),p=V(B(f),2);Q(p),M(f);var m=V(f,2),h=V(B(m),2);Q(h),M(m),M(d);var g=V(d,2),_=B(g),v=B(_);M(_);var y=V(_,2),b=B(y),x=V(B(b)),S=B(x),C=e=>{J(e,La())},w=e=>{var t=Ir();qr(pn(t),9,()=>G(E),e=>e.id,(e,t)=>{var n=Ra(),r=B(n),i=B(r),a=B(i,!0);M(i),M(r);var o=V(r),s=B(o,!0);M(o);var c=V(o);$r(c,()=>Ct(G(t).text,G(te)),!0),M(c);var l=V(c),u=B(l,!0);M(l);var d=V(l),f=B(d,!0);M(d),M(n),H((e,n,r)=>{Y(a,G(t).collection),wi(o,`title`,G(t).id),Y(s,G(t).id),wi(l,`title`,e),Y(u,n),Y(f,r)},[()=>JSON.stringify(G(t)),()=>JSON.stringify(G(t)),()=>G(t).score?G(t).score.toFixed(3):`1.000`]),li(n,()=>Li,()=>({duration:300})),ui(1,n,()=>Ui,()=>({y:20,duration:300})),ui(2,n,()=>Hi,()=>({duration:150})),J(e,n)}),J(e,t)};X(S,e=>{G(E).length===0?e(C):e(w,-1)}),M(x),M(b),M(y),M(g),M(r),M(n),M(t),H(()=>Y(v,`Search Results (${G(E).length??``} matching objects found)`)),$(s,()=>G(te),e=>z(te,e)),K(`keydown`,s,e=>e.key===`Enter`&&_t()),K(`click`,c,_t),$(u,()=>G(ne),e=>z(ne,e)),$(p,()=>G(re),e=>z(re,e)),$(h,()=>G(ie),e=>z(ie,e)),J(e,t)};X(Rn,e=>{G(n)===`search`&&e(zn)});var Bn=V(Rn,2),Vn=e=>{var t=no(),n=B(t),r=B(n),i=V(B(r),2),a=B(i),o=B(a);M(a);var s=V(a,2);M(i),M(r);var c=V(r,2),l=B(c),u=B(l),d=V(B(u),2),f=B(d);Q(f);var p=V(f,2),m=B(p,!0);M(p),M(d),M(u);var h=V(u,2),g=V(B(h),2);Q(g),M(h),M(l);var _=V(l,2),v=e=>{var t=Ba(),n=V(B(t),2),r=B(n),i=V(B(r),2);Q(i),M(r);var a=V(r,2),o=V(B(a),2);Q(o),M(a);var s=V(a,2),c=V(B(s),2);Q(c),M(s),M(n);var l=V(n,2);M(t),$(i,()=>G(ue),e=>z(ue,e)),$(o,()=>G(de),e=>z(de,e)),$(c,()=>G(fe),e=>z(fe,e)),K(`click`,l,xt),J(e,t)};X(_,e=>{G(pe)&&e(v)});var y=V(_,2),b=e=>{var t=Ua();qr(V(B(t),2),1,()=>G(ce),Ur,(e,t)=>{var n=Ha(),r=B(n),i=B(r,!0);M(r);var a=V(r,2),o=B(a);M(a);var s=V(a,2);qr(s,5,()=>G(t).fields,Ur,(e,t)=>{var n=Va(),r=B(n),i=V(r),a=B(i,!0);M(i),M(n),H(()=>{Y(r,`${G(t).name??``}: `),Y(a,G(t).type)}),J(e,n)}),M(s),M(n),H(()=>{Y(i,G(t).name),Y(o,`(${G(t).objectCount??``} objects)`)}),J(e,n)}),M(t),J(e,t)},x=e=>{J(e,Wa())};X(y,e=>{G(le)&&G(ce)?e(b):G(le)&&e(x,1)});var S=V(y,2),C=e=>{J(e,Ga())},w=e=>{var t=eo(),n=B(t),r=V(B(n),2),i=B(r,!0);M(r),M(n);var a=V(n,2),o=e=>{var t=Ya(),n=B(t),r=B(n),i=B(r),a=V(B(i)),o=e=>{var t=Ka();N(2),J(e,t)};X(a,e=>{G(D).data.groups&&G(D).data.groups.length>0&&e(o)}),M(i),M(r);var s=V(r),c=B(s),l=B(c),u=B(l,!0);M(l);var d=V(l),f=e=>{J(e,qa())};X(d,e=>{G(D).data.groups&&G(D).data.groups.length>0&&e(f)}),M(c);var p=V(c),m=e=>{var t=Ir();qr(pn(t),1,()=>G(D).data.groups,Ur,(e,t)=>{var n=Ja(),r=V(B(n)),i=B(r),a=B(i,!0);M(i),M(r);var o=V(r),s=B(o,!0);M(o),M(n),H(e=>{Y(a,G(t).key),Y(s,e)},[()=>St(G(t).value)]),J(e,n)}),J(e,t)};X(p,e=>{G(D).data.groups&&e(m)}),M(s),M(n),M(t),H(e=>Y(u,e),[()=>St(G(D).data.total)]),J(e,t)},s=e=>{var t=Za(),n=B(t),r=V(B(n));qr(r,5,()=>G(D).data.buckets,Ur,(e,t)=>{var n=Xa(),r=B(n),i=B(r,!0);M(r);var a=V(r),o=B(a,!0);M(a),M(n),H(e=>{Y(i,G(t).label),Y(o,e)},[()=>St(G(t).value)]),J(e,n)}),M(r),M(n),M(t),J(e,t)},c=e=>{var t=$a(),n=B(t),r=V(B(n));qr(r,5,()=>G(D).data,Ur,(e,t)=>{var n=Qa(),r=B(n),i=B(r),a=B(i,!0);M(i),M(r);var o=V(r),s=B(o,!0);M(o);var c=V(o),l=B(c,!0);M(c),M(n),H(e=>{Y(a,G(t).collection||G(t).stream),Y(s,G(t).id),Y(l,e)},[()=>G(t).score?.toFixed(3)??`-`]),J(e,n)}),M(r),M(n),M(t),J(e,t)},l=yt(()=>G(D).data&&Array.isArray(G(D).data));X(a,e=>{G(D).data&&G(D).data.total!==void 0?e(o):G(D).data&&G(D).data.buckets?e(s,1):G(l)&&e(c,2)});var u=V(a,2),d=V(B(u),2),f=B(d,!0);M(d),M(u),M(t),H(e=>{Y(i,G(D).answer),Y(f,e)},[()=>JSON.stringify(G(D),null,2)]),J(e,t)},ee=e=>{J(e,to())};X(S,e=>{G(se)?e(C):G(D)?e(w,1):e(ee,-1)}),M(c),M(n),M(t),H(()=>{Y(o,`${G(le)?`Hide`:`Show`} Schema`),p.disabled=G(se),Y(m,G(se)?`Thinking...`:`Ask`)}),K(`click`,a,async()=>{await bt(),z(le,!G(le))}),K(`click`,s,()=>z(pe,!G(pe))),$(f,()=>G(ae),e=>z(ae,e)),K(`keydown`,f,e=>e.key===`Enter`&&vt()),K(`click`,p,vt),$(g,()=>G(oe),e=>z(oe,e)),J(e,t)};X(Bn,e=>{G(n)===`nlq`&&e(Vn)});var Hn=V(Bn,2),Un=e=>{var t=io(),n=B(t),r=V(B(n),2),i=B(r),a=B(i),o=B(a),s=B(o,!0);M(o);var l=V(o,4),u=B(l,!0);M(l);var d=V(l,2);M(a);var f=V(a,2),p=B(f),m=B(p,!0);M(p);var h=V(p,4),g=B(h);M(h);var _=V(h,2);M(f);var v=V(f,2),y=B(v),b=B(y,!0);M(y);var x=V(y,4),S=B(x),C=e=>{var t=ro(),n=B(t);M(t),H(e=>Y(n,`${e??``} MB`),[()=>(G(c).backupSize/1024/1024).toFixed(2)]),J(e,t)};X(S,e=>{G(c).backupSize&&e(C)}),M(x);var w=V(x,2);M(v),M(i),M(r),M(n),M(t),H(()=>{Y(s,G(c).integrityOk?`✓`:`✗`),Y(u,G(c).integrityMessage),Y(m,G(c).walMode),Y(g,`Frames: ${G(c).walFrames??``}`),Y(b,G(c).backupPath||`N/A`)}),K(`click`,d,wt),K(`click`,_,Tt),K(`click`,w,Et),J(e,t)};X(Hn,e=>{G(n)===`health`&&e(Un)}),M(kn),M($t),M(Nt);var Wn=V(Nt,2),Gn=e=>{var t=ao(),n=B(t),r=B(n),i=B(r),a=B(i,!0);M(i);var o=V(i,2);M(r);var s=V(r,2),c=B(s),l=B(c),u=V(B(l),2);Q(u),M(l);var d=V(l,2),f=V(B(d),2);rt(f),M(d);var p=V(d,2);sa(B(p),{label:`Custom Metadata`,placeholder:`{"status": "active"}`,get value(){return G(O)},set value(e){z(O,e)},$$legacy:!0}),M(p);var m=V(p,2),h=B(m);N(2),M(m),M(c),M(s),M(n),M(t),H(()=>{Y(a,G(Se)?`Edit Memory Object`:`Add Memory Object`),u.disabled=G(Se)}),K(`click`,o,()=>z(ge,!1)),$(u,()=>G(we),e=>z(we,e)),$(f,()=>G(Te),e=>z(Te,e)),K(`click`,h,()=>z(ge,!1)),K(`submit`,c,Qe),J(e,t)};X(Wn,e=>{G(ge)&&e(Gn)});var Kn=V(Wn,2),qn=e=>{var t=oo(),n=B(t),r=B(n),i=V(B(r),2);M(r);var a=V(r,2),o=B(a),s=B(o),c=V(B(s),2);Q(c),M(s);var l=V(s,2),u=V(B(l),2);Q(u),M(l);var d=V(l,2),f=V(B(d),2);Q(f),M(d);var p=V(d,2);sa(B(p),{label:`Event Payload`,placeholder:`{"success": true}`,get value(){return G(ke)},set value(e){z(ke,e)},$$legacy:!0}),M(p);var m=V(p,2),h=B(m);N(2),M(m),M(o),M(a),M(n),M(t),K(`click`,i,()=>z(_e,!1)),$(c,()=>G(Ee),e=>z(Ee,e)),$(u,()=>G(De),e=>z(De,e)),$(f,()=>G(Oe),e=>z(Oe,e)),K(`click`,h,()=>z(_e,!1)),K(`submit`,o,at),J(e,t)};X(Kn,e=>{G(_e)&&e(qn)});var Jn=V(Kn,2),Yn=e=>{var t=so(),n=B(t),r=B(n),i=V(B(r),2);M(r);var a=V(r,2),o=B(a),s=B(o);sa(B(s),{label:`Payload`,placeholder:`{"action": "build"}`,required:!0,get value(){return G(Ae)},set value(e){z(Ae,e)},$$legacy:!0}),M(s);var c=V(s,2),l=B(c),u=V(B(l),2);Q(u),M(l);var d=V(l,2),f=V(B(d),2);Q(f),M(d),M(c);var p=V(c,2),m=V(B(p),2);Q(m),M(p);var h=V(p,2),g=B(h);N(2),M(h),M(o),M(a),M(n),M(t),K(`click`,i,()=>z(ve,!1)),$(u,()=>G(je),e=>z(je,e)),$(f,()=>G(Me),e=>z(Me,e)),$(m,()=>G(k),e=>z(k,e)),K(`click`,g,()=>z(ve,!1)),K(`submit`,o,dt),J(e,t)};X(Jn,e=>{G(ve)&&e(Yn)});var Xn=V(Jn,2),U=e=>{var t=co(),n=B(t),r=B(n),i=V(B(r),2);M(r);var a=V(r,2),o=B(a),s=B(o),c=V(B(s),2);Q(c),N(2),M(s);var l=V(s,2),u=B(l);N(2),M(l),M(o),M(a),M(n),M(t),K(`click`,i,()=>z(ye,!1)),$(c,()=>G(Ne),e=>z(Ne,e)),K(`click`,u,()=>z(ye,!1)),K(`submit`,o,pt),J(e,t)};X(Xn,e=>{G(ye)&&e(U)});var Zn=V(Xn,2),Qn=e=>{var t=lo(),n=B(t),r=B(n),i=V(B(r),2);M(r);var a=V(r,2),o=B(a),s=B(o),c=V(B(s),2),l=B(c);l.value=l.__value=`memory`;var u=V(l);u.value=u.__value=`native`;var d=V(u);d.value=d.__value=`cloud`,M(c),M(s);var f=V(s,2),p=V(B(f),2);Q(p),M(f);var m=V(f,2),h=V(B(m),2);Q(h),M(m);var g=V(m,2),_=B(g);N(2),M(g),M(o),M(a),M(n),M(t),K(`click`,i,()=>z(xe,!1)),yi(c,()=>G(Pe),e=>z(Pe,e)),$(p,()=>G(Fe),e=>z(Fe,e)),$(h,()=>G(Ie),e=>z(Ie,e)),K(`click`,_,()=>z(xe,!1)),K(`submit`,o,Dt),J(e,t)};X(Zn,e=>{G(xe)&&e(Qn)});var W=V(Zn,2),$n=e=>{var t=po(),n=B(t),r=B(n),i=V(B(r),2);M(r);var a=V(r,2),o=B(a),s=B(o),c=V(B(s),2),l=B(c,!0);M(c),M(s);var u=V(s,2),d=V(B(u),2),f=B(d,!0);M(d),M(u);var p=V(u,2),m=V(B(p),2),h=B(m,!0);M(m),M(p);var g=V(p,2),_=V(B(g),2),v=B(_);M(_),M(g);var y=V(g,2),b=V(B(y),2),S=B(b,!0);M(b),M(y),M(o);var C=V(o,2),w=e=>{var t=fo(),n=V(B(t),2),r=B(n),i=V(r,2);M(n);var a=V(n,2),o=e=>{var t=uo(),n=B(t),r=V(B(n),2);Q(r),M(n);var i=V(n,2),a=V(B(i),2);Q(a),M(i),N(2),M(t),$(r,()=>G(A),e=>z(A,e)),$(a,()=>G(j),e=>z(j,e)),K(`submit`,t,gt),J(e,t)};X(a,e=>{G(Ce)&&e(o)}),M(t),K(`click`,r,ht),K(`click`,i,()=>z(Ce,!G(Ce))),J(e,t)};X(C,e=>{G(T).status===`leased`&&e(w)}),M(a),M(n),M(t),H(e=>{Y(l,G(T).id),Y(f,G(x)),Y(h,G(T).status),Y(v,`${G(T).attempts??``} of ${G(T).maxAttempts??``}`),Y(S,e)},[()=>JSON.stringify(G(T).payload,null,2)]),K(`click`,i,()=>z(be,!1)),J(e,t)};X(W,e=>{G(be)&&G(T)&&e($n)});var er=V(W,2);qr(er,5,()=>G(Le),Ur,(e,t)=>{var n=mo(),r=B(n),i=B(r,!0);M(r),M(n),H(()=>{Z(n,1,`toast ${G(t).type??``}`),Y(i,G(t).message)}),J(e,n)}),M(er),H(()=>{Y(Rt,G(l)||`v0.3.0`),Z(Bt,1,`nav-item ${G(n)===`metrics`?`active`:``}`),Z(Vt,1,`nav-item ${G(n)===`collections`?`active`:``}`),Z(Ht,1,`nav-item ${G(n)===`events`?`active`:``}`),Z(Ut,1,`nav-item ${G(n)===`queues`?`active`:``}`),Z(Wt,1,`nav-item ${G(n)===`search`?`active`:``}`),Z(Gt,1,`nav-item ${G(n)===`nlq`?`active`:``}`),Z(Kt,1,`nav-item ${G(n)===`health`?`active`:``}`),Y(Xt,G(r)),Y(Sn,G(i)),wi(Cn,`title`,G(a)),Y(wn,G(a)),Y(En,G(o))}),K(`click`,Bt,()=>qe(`metrics`)),K(`click`,Vt,()=>qe(`collections`)),K(`click`,Ht,()=>qe(`events`)),K(`click`,Ut,()=>qe(`queues`)),K(`click`,Wt,()=>qe(`search`)),K(`click`,Gt,()=>qe(`nlq`)),K(`click`,Kt,()=>qe(`health`)),K(`click`,Dn,L),K(`click`,On,Ke),J(e,At),Ue()}Rr(go,{target:document.getElementById(`app`)});
@@ -1,19 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <meta name="theme-color" content="#0b0d19">
7
- <meta name="description" content="thingd Inspector Dashboard — inspect objects, queues, streams, and search.">
8
- <link rel="icon" type="image/svg+xml" href="/assets/favicon-CgGFvG_0.svg">
9
- <title>thingd | Inspector Dashboard</title>
10
- <link rel="preconnect" href="https://fonts.googleapis.com">
11
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
12
- <link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
13
- <script type="module" crossorigin src="/assets/index-CsLTLPTP.js"></script>
14
- <link rel="stylesheet" crossorigin href="/assets/index-C6PkDB7y.css">
15
- </head>
16
- <body>
17
- <div id="app"></div>
18
- </body>
19
- </html>
@@ -1,6 +0,0 @@
1
- import type { ConnectionOptions } from "../index.js";
2
- export declare function startDashboardServer(connectionOptions: ConnectionOptions, port: number): Promise<{
3
- server: import("node:http").Server;
4
- close: () => Promise<void>;
5
- }>;
6
- //# sourceMappingURL=server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/dashboard/server.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAuErD,wBAAsB,oBAAoB,CACxC,iBAAiB,EAAE,iBAAiB,EACpC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CA4nB7E"}