From f9350587fef4a4970c74a0608228e04d3e533532 Mon Sep 17 00:00:00 2001 From: Philipp Date: Thu, 21 May 2026 08:53:21 +0200 Subject: [PATCH] added progress bar and scheduler --- backend/.env | 7 + backend/src/executor.js | 25 +++- backend/src/index.js | 7 + backend/src/jobs.js | 24 ++++ backend/src/routes/backup.js | 53 ++++++- backend/src/routes/restore.js | 38 ++++- backend/src/routes/schedules.js | 17 +++ backend/src/routes/vms.js | 1 + backend/src/scheduler.js | 103 +++++++++++++ frontend/dist/assets/index-BhslfNoW.css | 1 + frontend/dist/assets/index-Dw_yq1Cq.css | 1 - frontend/dist/assets/index-IGuLjsuH.js | 148 +++++++++++++++++++ frontend/dist/assets/index-JZykJ0Bp.js | 143 ------------------ frontend/dist/index.html | 4 +- frontend/src/App.jsx | 23 ++- frontend/src/components/Dashboard.jsx | 14 +- frontend/src/components/JobStatusPanel.jsx | 20 ++- frontend/src/components/Scheduler.jsx | 160 +++++++++++++++++++++ 18 files changed, 624 insertions(+), 165 deletions(-) create mode 100644 backend/.env create mode 100644 backend/src/routes/schedules.js create mode 100644 backend/src/scheduler.js create mode 100644 frontend/dist/assets/index-BhslfNoW.css delete mode 100644 frontend/dist/assets/index-Dw_yq1Cq.css create mode 100644 frontend/dist/assets/index-IGuLjsuH.js delete mode 100644 frontend/dist/assets/index-JZykJ0Bp.js create mode 100644 frontend/src/components/Scheduler.jsx diff --git a/backend/.env b/backend/.env new file mode 100644 index 0000000..40cbacf --- /dev/null +++ b/backend/.env @@ -0,0 +1,7 @@ +AWS_ACCESS_KEY_ID="FYL6LIS897TPMCMB9SIH" +AWS_SECRET_ACCESS_KEY="TGeYji4XfYohBN4Ut5UYoP6WvU8wq1Hm7fLcbnoR" +RESTIC_REPOSITORY="s3:https://nbg1.your-objectstorage.com/incus001" +RESTIC_PASSWORD="Wwmmsbc#223" +ZFS_POOL_NAME="incus-pool" +PORT=3000 +API_TOKEN="" diff --git a/backend/src/executor.js b/backend/src/executor.js index e9e0668..3016924 100644 --- a/backend/src/executor.js +++ b/backend/src/executor.js @@ -1,5 +1,5 @@ import { spawn } from 'node:child_process'; -import { PassThrough } from 'node:stream'; +import { PassThrough, Transform } from 'node:stream'; import { resticProcessEnv } from './config.js'; export class CommandError extends Error { @@ -74,7 +74,22 @@ export function runRestic(args, options = {}) { }); } -export function streamResticDumpToDd(snapshotId, filename, outputPath, log) { +export function createProgressStream(totalBytes, onProgress) { + let currentBytes = 0; + return new Transform({ + transform(chunk, _encoding, callback) { + currentBytes += chunk.length; + onProgress?.({ + currentBytes, + totalBytes, + percent: totalBytes ? (currentBytes / totalBytes) * 100 : 0, + }); + callback(null, chunk); + }, + }); +} + +export function streamResticDumpToDd(snapshotId, filename, outputPath, log, progress = null) { return new Promise((resolve, reject) => { const restic = spawn('restic', ['dump', snapshotId, filename], { env: resticProcessEnv(), @@ -91,7 +106,11 @@ export function streamResticDumpToDd(snapshotId, filename, outputPath, log) { let resticClosed = false; let ddClosed = false; const pipe = new PassThrough(); - restic.stdout.pipe(pipe).pipe(dd.stdin); + let restoreStream = restic.stdout.pipe(pipe); + if (progress) { + restoreStream = restoreStream.pipe(createProgressStream(progress.totalBytes, progress.onProgress)); + } + restoreStream.pipe(dd.stdin); restic.stderr.on('data', (chunk) => log?.(chunk.toString().trimEnd())); dd.stderr.on('data', (chunk) => log?.(chunk.toString().trimEnd())); diff --git a/backend/src/index.js b/backend/src/index.js index b1491ce..a5c5815 100644 --- a/backend/src/index.js +++ b/backend/src/index.js @@ -5,9 +5,11 @@ import { backupRouter } from './routes/backup.js'; import { healthRouter } from './routes/health.js'; import { jobsRouter } from './routes/jobs.js'; import { restoreRouter } from './routes/restore.js'; +import { schedulesRouter } from './routes/schedules.js'; import { settingsRouter } from './routes/settings.js'; import { snapshotsRouter } from './routes/snapshots.js'; import { vmsRouter } from './routes/vms.js'; +import { startScheduler } from './scheduler.js'; const app = express(); @@ -33,6 +35,7 @@ app.use('/api/snapshots', snapshotsRouter); app.use('/api/jobs', jobsRouter); app.use('/api/backup', backupRouter); app.use('/api/restore', restoreRouter); +app.use('/api/schedules', schedulesRouter); app.use('/api/settings', settingsRouter); app.use((error, _req, res, _next) => { @@ -43,3 +46,7 @@ app.use((error, _req, res, _next) => { app.listen(config.port, () => { console.log(`Incus backup API listening on http://localhost:${config.port}`); }); + +startScheduler().catch((error) => { + console.error(`Failed to start scheduler: ${error.message}`); +}); diff --git a/backend/src/jobs.js b/backend/src/jobs.js index 9d530d0..ad9e5fc 100644 --- a/backend/src/jobs.js +++ b/backend/src/jobs.js @@ -22,6 +22,12 @@ export function createJob(type, vmName) { startedAt: now, finishedAt: null, currentStep: 'Queued', + progress: { + percent: 0, + detail: 'Queued', + currentBytes: 0, + totalBytes: null, + }, logs: [], error: null, }; @@ -56,9 +62,22 @@ export function setJobRunning(job, step) { export function setJobStep(job, step) { job.currentStep = step; + job.progress = { + ...job.progress, + detail: step, + }; appendJobLog(job, `==> ${step}`); } +export function setJobProgress(job, progress = {}) { + const nextPercent = progress.percent ?? job.progress?.percent ?? 0; + job.progress = { + ...job.progress, + ...progress, + percent: Math.max(0, Math.min(100, Number(nextPercent) || 0)), + }; +} + export function appendJobLog(job, line) { if (!line) return; job.logs.push(...String(line).split('\n').filter(Boolean)); @@ -71,6 +90,11 @@ export function finishJob(job, status, error = null) { job.status = status; job.finishedAt = new Date().toISOString(); job.currentStep = status === 'success' ? 'Completed' : 'Failed'; + job.progress = { + ...job.progress, + percent: status === 'success' ? 100 : job.progress?.percent || 0, + detail: status === 'success' ? 'Completed' : 'Failed', + }; job.error = error ? String(error.message || error) : null; locks.delete(job.vmName); } diff --git a/backend/src/routes/backup.js b/backend/src/routes/backup.js index df1f4d4..c665346 100644 --- a/backend/src/routes/backup.js +++ b/backend/src/routes/backup.js @@ -2,8 +2,8 @@ import { Router } from 'express'; import { finished } from 'node:stream/promises'; import { setTimeout as delay } from 'node:timers/promises'; import { config } from '../config.js'; -import { spawnCommand, runRestic } from '../executor.js'; -import { appendJobLog, createJob, finishJob, setJobRunning, setJobStep } from '../jobs.js'; +import { createProgressStream, spawnCommand, runRestic } from '../executor.js'; +import { appendJobLog, createJob, finishJob, setJobProgress, setJobRunning, setJobStep } from '../jobs.js'; import { validateVmExists } from '../validators.js'; export const backupRouter = Router(); @@ -11,37 +11,55 @@ export const backupRouter = Router(); backupRouter.post('/:vmName', async (req, res, next) => { try { const vmName = req.params.vmName; - await validateVmExists(vmName); - const job = createJob('backup', vmName); - runBackupJob(job).catch(() => {}); + const job = await startBackupForVm(vmName); res.status(202).json({ jobId: job.id, message: 'Backup job started.' }); } catch (error) { next(error); } }); -async function runBackupJob(job) { +export async function startBackupForVm(vmName) { + await validateVmExists(vmName); + const job = createJob('backup', vmName); + runBackupJob(job).catch(() => {}); + return job; +} + +export async function runBackupJob(job) { const timestamp = new Date().toISOString().replace(/[-:.TZ]/g, '').slice(0, 14); const snapshotName = `s3-backup-${timestamp}`; const zvol = `${config.zfsPoolName}/virtual-machines/${job.vmName}.block`; const snapshotDevice = `/dev/zvol/${zvol}@snapshot-${snapshotName}`; try { + const totalBytes = await zfsVolumeSize(zvol); + setJobRunning(job, 'Creating Incus snapshot'); + setJobProgress(job, { percent: 2 }); await spawnCommand('incus', ['snapshot', 'create', job.vmName, snapshotName], { log: (line) => appendJobLog(job, line) }); setJobStep(job, 'Making ZFS snapshot device visible'); + setJobProgress(job, { percent: 5 }); await spawnCommand('zfs', ['set', 'snapdev=visible', zvol], { log: (line) => appendJobLog(job, line) }); setJobStep(job, 'Waiting for snapshot device'); + setJobProgress(job, { percent: 8 }); await new Promise((resolve) => setTimeout(resolve, 2000)); setJobStep(job, 'Streaming block device to Restic'); const snapshotStream = await deviceReadStream(snapshotDevice); + const progressStream = createProgressStream(totalBytes, ({ currentBytes, totalBytes: bytesTotal, percent }) => { + setJobProgress(job, { + currentBytes, + totalBytes: bytesTotal, + percent: 10 + percent * 0.78, + detail: `Streaming ${formatBytes(currentBytes)} of ${formatBytes(bytesTotal)}`, + }); + }); try { await spawnCommand('restic', ['backup', '--stdin', '--stdin-filename', `${job.vmName}.raw`, '--tag', job.vmName], { env: { ...process.env, ...config.resticEnv }, - input: snapshotStream, + input: snapshotStream.pipe(progressStream), log: (line) => appendJobLog(job, line), }); } finally { @@ -52,13 +70,16 @@ async function runBackupJob(job) { } setJobStep(job, 'Hiding ZFS snapshot device'); + setJobProgress(job, { percent: 90 }); await spawnCommand('zfs', ['set', 'snapdev=hidden', zvol], { log: (line) => appendJobLog(job, line) }); await settleUdev(job); setJobStep(job, 'Deleting temporary Incus snapshot'); + setJobProgress(job, { percent: 93 }); await deleteIncusSnapshotWithRetry(job, snapshotName); setJobStep(job, 'Applying Restic retention policy'); + setJobProgress(job, { percent: 96 }); await runRestic(['forget', '--tag', job.vmName, '--keep-daily', '7', '--prune'], { log: (line) => appendJobLog(job, line), }); @@ -76,6 +97,24 @@ async function deviceReadStream(path) { return createReadStream(path); } +async function zfsVolumeSize(zvol) { + const result = await spawnCommand('zfs', ['get', '-Hp', '-o', 'value', 'volsize', zvol]); + const size = Number(result.stdout.trim()); + return Number.isFinite(size) && size > 0 ? size : null; +} + +function formatBytes(value) { + if (!value) return '-'; + const units = ['B', 'KiB', 'MiB', 'GiB', 'TiB']; + let size = Number(value); + let unitIndex = 0; + while (size >= 1024 && unitIndex < units.length - 1) { + size /= 1024; + unitIndex += 1; + } + return `${size.toFixed(unitIndex === 0 ? 0 : 1)} ${units[unitIndex]}`; +} + async function cleanupBackup(job, zvol, snapshotName) { setJobStep(job, 'Running cleanup'); await spawnCommand('zfs', ['set', 'snapdev=hidden', zvol], { diff --git a/backend/src/routes/restore.js b/backend/src/routes/restore.js index 96497f8..6a3a02f 100644 --- a/backend/src/routes/restore.js +++ b/backend/src/routes/restore.js @@ -1,7 +1,7 @@ import { Router } from 'express'; import { config } from '../config.js'; import { spawnCommand, streamResticDumpToDd } from '../executor.js'; -import { appendJobLog, createJob, finishJob, setJobRunning, setJobStep } from '../jobs.js'; +import { appendJobLog, createJob, finishJob, setJobProgress, setJobRunning, setJobStep } from '../jobs.js'; import { validateSnapshotForVm, validateVmExists } from '../validators.js'; export const restoreRouter = Router(); @@ -34,29 +34,45 @@ async function runRestoreJob(job, snapshotId) { try { setJobRunning(job, 'Stopping VM'); + setJobProgress(job, { percent: 3 }); await spawnCommand('incus', ['stop', job.vmName, '--force'], { ignoreExitCode: true, log: (line) => appendJobLog(job, line), }); setJobStep(job, 'Setting ZFS volume to device mode'); + setJobProgress(job, { percent: 8 }); await spawnCommand('zfs', ['set', 'volmode=dev', zvol], { log: (line) => appendJobLog(job, line) }); volmodeDev = true; setJobStep(job, 'Settling device nodes'); + setJobProgress(job, { percent: 12 }); await spawnCommand('udevadm', ['trigger'], { log: (line) => appendJobLog(job, line) }); await spawnCommand('udevadm', ['settle'], { log: (line) => appendJobLog(job, line) }); await new Promise((resolve) => setTimeout(resolve, 2000)); setJobStep(job, 'Writing Restic snapshot to block device'); - await streamResticDumpToDd(snapshotId, `${job.vmName}.raw`, device, (line) => appendJobLog(job, line)); + const totalBytes = await zfsVolumeSize(zvol); + await streamResticDumpToDd(snapshotId, `${job.vmName}.raw`, device, (line) => appendJobLog(job, line), { + totalBytes, + onProgress: ({ currentBytes, totalBytes: bytesTotal, percent }) => { + setJobProgress(job, { + currentBytes, + totalBytes: bytesTotal, + percent: 15 + percent * 0.78, + detail: `Writing ${formatBytes(currentBytes)} of ${formatBytes(bytesTotal)}`, + }); + }, + }); diskWriteOk = true; setJobStep(job, 'Restoring ZFS volume mode'); + setJobProgress(job, { percent: 94 }); await spawnCommand('zfs', ['set', 'volmode=none', zvol], { log: (line) => appendJobLog(job, line) }); volmodeDev = false; setJobStep(job, 'Starting VM'); + setJobProgress(job, { percent: 97 }); await spawnCommand('incus', ['start', job.vmName], { log: (line) => appendJobLog(job, line) }); finishJob(job, 'success'); @@ -75,3 +91,21 @@ async function runRestoreJob(job, snapshotId) { finishJob(job, 'failed', error); } } + +async function zfsVolumeSize(zvol) { + const result = await spawnCommand('zfs', ['get', '-Hp', '-o', 'value', 'volsize', zvol]); + const size = Number(result.stdout.trim()); + return Number.isFinite(size) && size > 0 ? size : null; +} + +function formatBytes(value) { + if (!value) return '-'; + const units = ['B', 'KiB', 'MiB', 'GiB', 'TiB']; + let size = Number(value); + let unitIndex = 0; + while (size >= 1024 && unitIndex < units.length - 1) { + size /= 1024; + unitIndex += 1; + } + return `${size.toFixed(unitIndex === 0 ? 0 : 1)} ${units[unitIndex]}`; +} diff --git a/backend/src/routes/schedules.js b/backend/src/routes/schedules.js new file mode 100644 index 0000000..ddc9dad --- /dev/null +++ b/backend/src/routes/schedules.js @@ -0,0 +1,17 @@ +import { Router } from 'express'; +import { listSchedules, replaceSchedules } from '../scheduler.js'; + +export const schedulesRouter = Router(); + +schedulesRouter.get('/', (_req, res) => { + res.json(listSchedules()); +}); + +schedulesRouter.put('/', async (req, res, next) => { + try { + const schedules = await replaceSchedules(req.body?.schedules || []); + res.json(schedules); + } catch (error) { + next(error); + } +}); diff --git a/backend/src/routes/vms.js b/backend/src/routes/vms.js index 55ec60e..1203b84 100644 --- a/backend/src/routes/vms.js +++ b/backend/src/routes/vms.js @@ -28,5 +28,6 @@ function summarizeJob(job) { type: job.type, status: job.status, currentStep: job.currentStep, + progress: job.progress, }; } diff --git a/backend/src/scheduler.js b/backend/src/scheduler.js new file mode 100644 index 0000000..a488a1d --- /dev/null +++ b/backend/src/scheduler.js @@ -0,0 +1,103 @@ +import crypto from 'node:crypto'; +import { readFile, rename, writeFile } from 'node:fs/promises'; +import path from 'node:path'; +import { startBackupForVm } from './routes/backup.js'; + +const schedulesPath = path.resolve(process.cwd(), 'schedules.json'); +const checkIntervalMs = 30 * 1000; +let schedules = []; +let timer = null; + +export async function startScheduler() { + await loadSchedules(); + if (timer) return; + timer = setInterval(runDueSchedules, checkIntervalMs); + timer.unref?.(); + runDueSchedules(); +} + +export function listSchedules() { + return schedules + .map((schedule) => ({ ...schedule })) + .sort((a, b) => a.vmName.localeCompare(b.vmName)); +} + +export async function replaceSchedules(nextSchedules) { + schedules = normalizeSchedules(nextSchedules); + await saveSchedules(); + return listSchedules(); +} + +async function runDueSchedules() { + const now = new Date(); + let changed = false; + + for (const schedule of schedules) { + if (!schedule.enabled) continue; + if (!schedule.nextRunAt) { + schedule.nextRunAt = nextRunFrom(now, schedule.intervalHours); + changed = true; + continue; + } + if (new Date(schedule.nextRunAt) > now) continue; + + try { + await startBackupForVm(schedule.vmName); + schedule.lastRunAt = now.toISOString(); + schedule.lastError = ''; + schedule.nextRunAt = nextRunFrom(now, schedule.intervalHours); + } catch (error) { + schedule.lastError = String(error.message || error); + schedule.nextRunAt = nextRunFrom(new Date(now.getTime() + 5 * 60 * 1000), schedule.intervalHours); + } + changed = true; + } + + if (changed) { + await saveSchedules(); + } +} + +async function loadSchedules() { + try { + const content = await readFile(schedulesPath, 'utf8'); + schedules = normalizeSchedules(JSON.parse(content)); + } catch (error) { + if (error.code === 'ENOENT') { + schedules = []; + return; + } + throw error; + } +} + +async function saveSchedules() { + const tempPath = `${schedulesPath}.tmp`; + await writeFile(tempPath, `${JSON.stringify(schedules, null, 2)}\n`, { mode: 0o600 }); + await rename(tempPath, schedulesPath); +} + +function normalizeSchedules(values) { + const seen = new Set(); + return (Array.isArray(values) ? values : []) + .map((value) => { + const vmName = String(value.vmName || '').trim(); + const intervalHours = Math.max(1, Number(value.intervalHours) || 24); + if (!vmName || seen.has(vmName)) return null; + seen.add(vmName); + return { + id: value.id || `schedule_${crypto.randomBytes(8).toString('hex')}`, + vmName, + enabled: Boolean(value.enabled), + intervalHours, + nextRunAt: value.nextRunAt || nextRunFrom(new Date(), intervalHours), + lastRunAt: value.lastRunAt || null, + lastError: value.lastError || '', + }; + }) + .filter(Boolean); +} + +function nextRunFrom(date, intervalHours) { + return new Date(date.getTime() + intervalHours * 60 * 60 * 1000).toISOString(); +} diff --git a/frontend/dist/assets/index-BhslfNoW.css b/frontend/dist/assets/index-BhslfNoW.css new file mode 100644 index 0000000..0b5dff2 --- /dev/null +++ b/frontend/dist/assets/index-BhslfNoW.css @@ -0,0 +1 @@ +*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.fixed{position:fixed}.inset-0{top:0;right:0;bottom:0;left:0}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-full{height:100%}.max-h-80{max-height:20rem}.min-h-screen{min-height:100vh}.w-10{width:2.5rem}.w-2\.5{width:.625rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-9{width:2.25rem}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-\[680px\]{min-width:680px}.min-w-\[760px\]{min-width:760px}.max-w-3xl{max-width:48rem}.max-w-7xl{max-width:80rem}.max-w-lg{max-width:32rem}.flex-1{flex:1 1 0%}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-zinc-800>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(39 39 42 / var(--tw-divide-opacity, 1))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-t{border-top-width:1px}.border-amber-900{--tw-border-opacity: 1;border-color:rgb(120 53 15 / var(--tw-border-opacity, 1))}.border-cyan-800{--tw-border-opacity: 1;border-color:rgb(21 94 117 / var(--tw-border-opacity, 1))}.border-emerald-800{--tw-border-opacity: 1;border-color:rgb(6 95 70 / var(--tw-border-opacity, 1))}.border-emerald-900{--tw-border-opacity: 1;border-color:rgb(6 78 59 / var(--tw-border-opacity, 1))}.border-red-700{--tw-border-opacity: 1;border-color:rgb(185 28 28 / var(--tw-border-opacity, 1))}.border-red-800{--tw-border-opacity: 1;border-color:rgb(153 27 27 / var(--tw-border-opacity, 1))}.border-red-900{--tw-border-opacity: 1;border-color:rgb(127 29 29 / var(--tw-border-opacity, 1))}.border-red-950{--tw-border-opacity: 1;border-color:rgb(69 10 10 / var(--tw-border-opacity, 1))}.border-zinc-700{--tw-border-opacity: 1;border-color:rgb(63 63 70 / var(--tw-border-opacity, 1))}.border-zinc-800{--tw-border-opacity: 1;border-color:rgb(39 39 42 / var(--tw-border-opacity, 1))}.bg-amber-950\/50{background-color:#451a0380}.bg-black\/70{background-color:#000000b3}.bg-cyan-400{--tw-bg-opacity: 1;background-color:rgb(34 211 238 / var(--tw-bg-opacity, 1))}.bg-cyan-950{--tw-bg-opacity: 1;background-color:rgb(8 51 68 / var(--tw-bg-opacity, 1))}.bg-emerald-950{--tw-bg-opacity: 1;background-color:rgb(2 44 34 / var(--tw-bg-opacity, 1))}.bg-emerald-950\/50{background-color:#022c2280}.bg-red-950{--tw-bg-opacity: 1;background-color:rgb(69 10 10 / var(--tw-bg-opacity, 1))}.bg-red-950\/50{background-color:#450a0a80}.bg-transparent{background-color:transparent}.bg-zinc-800{--tw-bg-opacity: 1;background-color:rgb(39 39 42 / var(--tw-bg-opacity, 1))}.bg-zinc-900{--tw-bg-opacity: 1;background-color:rgb(24 24 27 / var(--tw-bg-opacity, 1))}.bg-zinc-900\/70{background-color:#18181bb3}.bg-zinc-950{--tw-bg-opacity: 1;background-color:rgb(9 9 11 / var(--tw-bg-opacity, 1))}.bg-zinc-950\/95{background-color:#09090bf2}.fill-current{fill:currentColor}.p-1{padding:.25rem}.p-3{padding:.75rem}.p-4{padding:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-5{padding-bottom:1.25rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.tracking-wide{letter-spacing:.025em}.text-amber-200{--tw-text-opacity: 1;color:rgb(253 230 138 / var(--tw-text-opacity, 1))}.text-amber-300{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.text-cyan-100{--tw-text-opacity: 1;color:rgb(207 250 254 / var(--tw-text-opacity, 1))}.text-cyan-300{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.text-emerald-100{--tw-text-opacity: 1;color:rgb(209 250 229 / var(--tw-text-opacity, 1))}.text-emerald-200{--tw-text-opacity: 1;color:rgb(167 243 208 / var(--tw-text-opacity, 1))}.text-emerald-300{--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity, 1))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.text-red-100{--tw-text-opacity: 1;color:rgb(254 226 226 / var(--tw-text-opacity, 1))}.text-red-200{--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity, 1))}.text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-zinc-100{--tw-text-opacity: 1;color:rgb(244 244 245 / var(--tw-text-opacity, 1))}.text-zinc-200{--tw-text-opacity: 1;color:rgb(228 228 231 / var(--tw-text-opacity, 1))}.text-zinc-300{--tw-text-opacity: 1;color:rgb(212 212 216 / var(--tw-text-opacity, 1))}.text-zinc-400{--tw-text-opacity: 1;color:rgb(161 161 170 / var(--tw-text-opacity, 1))}.text-zinc-500{--tw-text-opacity: 1;color:rgb(113 113 122 / var(--tw-text-opacity, 1))}.accent-cyan-500{accent-color:#06b6d4}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:root{color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#09090b}body{min-width:320px;min-height:100vh;margin:0;background:#09090b}button,input{font:inherit}button:disabled{cursor:not-allowed;opacity:.55}.focus-within\:border-cyan-600:focus-within{--tw-border-opacity: 1;border-color:rgb(8 145 178 / var(--tw-border-opacity, 1))}.hover\:border-cyan-500:hover{--tw-border-opacity: 1;border-color:rgb(6 182 212 / var(--tw-border-opacity, 1))}.hover\:border-red-600:hover{--tw-border-opacity: 1;border-color:rgb(220 38 38 / var(--tw-border-opacity, 1))}.hover\:border-zinc-700:hover{--tw-border-opacity: 1;border-color:rgb(63 63 70 / var(--tw-border-opacity, 1))}.hover\:bg-cyan-900:hover{--tw-bg-opacity: 1;background-color:rgb(22 78 99 / var(--tw-bg-opacity, 1))}.hover\:bg-emerald-900:hover{--tw-bg-opacity: 1;background-color:rgb(6 78 59 / var(--tw-bg-opacity, 1))}.hover\:bg-red-900:hover{--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity, 1))}.hover\:bg-zinc-900:hover{--tw-bg-opacity: 1;background-color:rgb(24 24 27 / var(--tw-bg-opacity, 1))}.hover\:text-cyan-200:hover{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1))}.hover\:text-red-200:hover{--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity, 1))}.hover\:text-zinc-100:hover{--tw-text-opacity: 1;color:rgb(244 244 245 / var(--tw-text-opacity, 1))}.focus\:border-red-500:focus{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.disabled\:hover\:bg-red-950:hover:disabled{--tw-bg-opacity: 1;background-color:rgb(69 10 10 / var(--tw-bg-opacity, 1))}@media(min-width:640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-end{align-items:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}}@media(min-width:1024px){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-\[280px_1fr\]{grid-template-columns:280px 1fr}} diff --git a/frontend/dist/assets/index-Dw_yq1Cq.css b/frontend/dist/assets/index-Dw_yq1Cq.css deleted file mode 100644 index 6f30479..0000000 --- a/frontend/dist/assets/index-Dw_yq1Cq.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.fixed{position:fixed}.inset-0{top:0;right:0;bottom:0;left:0}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.mb-4{margin-bottom:1rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.h-10{height:2.5rem}.h-2\.5{height:.625rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-8{height:2rem}.h-9{height:2.25rem}.max-h-80{max-height:20rem}.min-h-screen{min-height:100vh}.w-10{width:2.5rem}.w-2\.5{width:.625rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-9{width:2.25rem}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-\[680px\]{min-width:680px}.min-w-\[760px\]{min-width:760px}.max-w-3xl{max-width:48rem}.max-w-7xl{max-width:80rem}.max-w-lg{max-width:32rem}.flex-1{flex:1 1 0%}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-zinc-800>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(39 39 42 / var(--tw-divide-opacity, 1))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.break-words{overflow-wrap:break-word}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-t{border-top-width:1px}.border-amber-900{--tw-border-opacity: 1;border-color:rgb(120 53 15 / var(--tw-border-opacity, 1))}.border-cyan-800{--tw-border-opacity: 1;border-color:rgb(21 94 117 / var(--tw-border-opacity, 1))}.border-emerald-800{--tw-border-opacity: 1;border-color:rgb(6 95 70 / var(--tw-border-opacity, 1))}.border-emerald-900{--tw-border-opacity: 1;border-color:rgb(6 78 59 / var(--tw-border-opacity, 1))}.border-red-700{--tw-border-opacity: 1;border-color:rgb(185 28 28 / var(--tw-border-opacity, 1))}.border-red-800{--tw-border-opacity: 1;border-color:rgb(153 27 27 / var(--tw-border-opacity, 1))}.border-red-900{--tw-border-opacity: 1;border-color:rgb(127 29 29 / var(--tw-border-opacity, 1))}.border-red-950{--tw-border-opacity: 1;border-color:rgb(69 10 10 / var(--tw-border-opacity, 1))}.border-zinc-700{--tw-border-opacity: 1;border-color:rgb(63 63 70 / var(--tw-border-opacity, 1))}.border-zinc-800{--tw-border-opacity: 1;border-color:rgb(39 39 42 / var(--tw-border-opacity, 1))}.bg-amber-950\/50{background-color:#451a0380}.bg-black\/70{background-color:#000000b3}.bg-cyan-950{--tw-bg-opacity: 1;background-color:rgb(8 51 68 / var(--tw-bg-opacity, 1))}.bg-emerald-950{--tw-bg-opacity: 1;background-color:rgb(2 44 34 / var(--tw-bg-opacity, 1))}.bg-emerald-950\/50{background-color:#022c2280}.bg-red-950{--tw-bg-opacity: 1;background-color:rgb(69 10 10 / var(--tw-bg-opacity, 1))}.bg-red-950\/50{background-color:#450a0a80}.bg-transparent{background-color:transparent}.bg-zinc-900{--tw-bg-opacity: 1;background-color:rgb(24 24 27 / var(--tw-bg-opacity, 1))}.bg-zinc-900\/70{background-color:#18181bb3}.bg-zinc-950{--tw-bg-opacity: 1;background-color:rgb(9 9 11 / var(--tw-bg-opacity, 1))}.bg-zinc-950\/95{background-color:#09090bf2}.fill-current{fill:currentColor}.p-1{padding:.25rem}.p-3{padding:.75rem}.p-4{padding:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-5{padding-bottom:1.25rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.tracking-wide{letter-spacing:.025em}.text-amber-200{--tw-text-opacity: 1;color:rgb(253 230 138 / var(--tw-text-opacity, 1))}.text-amber-300{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity, 1))}.text-cyan-100{--tw-text-opacity: 1;color:rgb(207 250 254 / var(--tw-text-opacity, 1))}.text-cyan-300{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity, 1))}.text-emerald-100{--tw-text-opacity: 1;color:rgb(209 250 229 / var(--tw-text-opacity, 1))}.text-emerald-200{--tw-text-opacity: 1;color:rgb(167 243 208 / var(--tw-text-opacity, 1))}.text-emerald-300{--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity, 1))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.text-red-100{--tw-text-opacity: 1;color:rgb(254 226 226 / var(--tw-text-opacity, 1))}.text-red-200{--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity, 1))}.text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-zinc-100{--tw-text-opacity: 1;color:rgb(244 244 245 / var(--tw-text-opacity, 1))}.text-zinc-200{--tw-text-opacity: 1;color:rgb(228 228 231 / var(--tw-text-opacity, 1))}.text-zinc-300{--tw-text-opacity: 1;color:rgb(212 212 216 / var(--tw-text-opacity, 1))}.text-zinc-400{--tw-text-opacity: 1;color:rgb(161 161 170 / var(--tw-text-opacity, 1))}.text-zinc-500{--tw-text-opacity: 1;color:rgb(113 113 122 / var(--tw-text-opacity, 1))}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}:root{color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#09090b}body{min-width:320px;min-height:100vh;margin:0;background:#09090b}button,input{font:inherit}button:disabled{cursor:not-allowed;opacity:.55}.focus-within\:border-cyan-600:focus-within{--tw-border-opacity: 1;border-color:rgb(8 145 178 / var(--tw-border-opacity, 1))}.hover\:border-cyan-500:hover{--tw-border-opacity: 1;border-color:rgb(6 182 212 / var(--tw-border-opacity, 1))}.hover\:border-red-600:hover{--tw-border-opacity: 1;border-color:rgb(220 38 38 / var(--tw-border-opacity, 1))}.hover\:border-zinc-700:hover{--tw-border-opacity: 1;border-color:rgb(63 63 70 / var(--tw-border-opacity, 1))}.hover\:bg-cyan-900:hover{--tw-bg-opacity: 1;background-color:rgb(22 78 99 / var(--tw-bg-opacity, 1))}.hover\:bg-emerald-900:hover{--tw-bg-opacity: 1;background-color:rgb(6 78 59 / var(--tw-bg-opacity, 1))}.hover\:bg-red-900:hover{--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity, 1))}.hover\:bg-zinc-900:hover{--tw-bg-opacity: 1;background-color:rgb(24 24 27 / var(--tw-bg-opacity, 1))}.hover\:text-cyan-200:hover{--tw-text-opacity: 1;color:rgb(165 243 252 / var(--tw-text-opacity, 1))}.hover\:text-red-200:hover{--tw-text-opacity: 1;color:rgb(254 202 202 / var(--tw-text-opacity, 1))}.hover\:text-zinc-100:hover{--tw-text-opacity: 1;color:rgb(244 244 245 / var(--tw-text-opacity, 1))}.focus\:border-red-500:focus{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.disabled\:hover\:bg-red-950:hover:disabled{--tw-bg-opacity: 1;background-color:rgb(69 10 10 / var(--tw-bg-opacity, 1))}@media(min-width:640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-end{align-items:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}}@media(min-width:1024px){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-\[280px_1fr\]{grid-template-columns:280px 1fr}} diff --git a/frontend/dist/assets/index-IGuLjsuH.js b/frontend/dist/assets/index-IGuLjsuH.js new file mode 100644 index 0000000..22c493c --- /dev/null +++ b/frontend/dist/assets/index-IGuLjsuH.js @@ -0,0 +1,148 @@ +(function(){const f=document.createElement("link").relList;if(f&&f.supports&&f.supports("modulepreload"))return;for(const d of document.querySelectorAll('link[rel="modulepreload"]'))c(d);new MutationObserver(d=>{for(const m of d)if(m.type==="childList")for(const y of m.addedNodes)y.tagName==="LINK"&&y.rel==="modulepreload"&&c(y)}).observe(document,{childList:!0,subtree:!0});function r(d){const m={};return d.integrity&&(m.integrity=d.integrity),d.referrerPolicy&&(m.referrerPolicy=d.referrerPolicy),d.crossOrigin==="use-credentials"?m.credentials="include":d.crossOrigin==="anonymous"?m.credentials="omit":m.credentials="same-origin",m}function c(d){if(d.ep)return;d.ep=!0;const m=r(d);fetch(d.href,m)}})();function By(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var Vf={exports:{}},Ya={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var m0;function qy(){if(m0)return Ya;m0=1;var i=Symbol.for("react.transitional.element"),f=Symbol.for("react.fragment");function r(c,d,m){var y=null;if(m!==void 0&&(y=""+m),d.key!==void 0&&(y=""+d.key),"key"in d){m={};for(var x in d)x!=="key"&&(m[x]=d[x])}else m=d;return d=m.ref,{$$typeof:i,type:c,key:y,ref:d!==void 0?d:null,props:m}}return Ya.Fragment=f,Ya.jsx=r,Ya.jsxs=r,Ya}var h0;function wy(){return h0||(h0=1,Vf.exports=qy()),Vf.exports}var p=wy(),Qf={exports:{}},et={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var y0;function Ly(){if(y0)return et;y0=1;var i=Symbol.for("react.transitional.element"),f=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),c=Symbol.for("react.strict_mode"),d=Symbol.for("react.profiler"),m=Symbol.for("react.consumer"),y=Symbol.for("react.context"),x=Symbol.for("react.forward_ref"),S=Symbol.for("react.suspense"),v=Symbol.for("react.memo"),N=Symbol.for("react.lazy"),C=Symbol.for("react.activity"),Y=Symbol.iterator;function V(b){return b===null||typeof b!="object"?null:(b=Y&&b[Y]||b["@@iterator"],typeof b=="function"?b:null)}var K={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},w=Object.assign,R={};function B(b,H,q){this.props=b,this.context=H,this.refs=R,this.updater=q||K}B.prototype.isReactComponent={},B.prototype.setState=function(b,H){if(typeof b!="object"&&typeof b!="function"&&b!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,b,H,"setState")},B.prototype.forceUpdate=function(b){this.updater.enqueueForceUpdate(this,b,"forceUpdate")};function k(){}k.prototype=B.prototype;function X(b,H,q){this.props=b,this.context=H,this.refs=R,this.updater=q||K}var W=X.prototype=new k;W.constructor=X,w(W,B.prototype),W.isPureReactComponent=!0;var at=Array.isArray;function Ot(){}var tt={H:null,A:null,T:null,S:null},Ht=Object.prototype.hasOwnProperty;function de(b,H,q){var G=q.ref;return{$$typeof:i,type:b,key:H,ref:G!==void 0?G:null,props:q}}function Pt(b,H){return de(b.type,H,b.props)}function Vt(b){return typeof b=="object"&&b!==null&&b.$$typeof===i}function Xt(b){var H={"=":"=0",":":"=2"};return"$"+b.replace(/[=:]/g,function(q){return H[q]})}var Ye=/\/+/g;function Bt(b,H){return typeof b=="object"&&b!==null&&b.key!=null?Xt(""+b.key):H.toString(36)}function te(b){switch(b.status){case"fulfilled":return b.value;case"rejected":throw b.reason;default:switch(typeof b.status=="string"?b.then(Ot,Ot):(b.status="pending",b.then(function(H){b.status==="pending"&&(b.status="fulfilled",b.value=H)},function(H){b.status==="pending"&&(b.status="rejected",b.reason=H)})),b.status){case"fulfilled":return b.value;case"rejected":throw b.reason}}throw b}function D(b,H,q,G,$){var ut=typeof b;(ut==="undefined"||ut==="boolean")&&(b=null);var ft=!1;if(b===null)ft=!0;else switch(ut){case"bigint":case"string":case"number":ft=!0;break;case"object":switch(b.$$typeof){case i:case f:ft=!0;break;case N:return ft=b._init,D(ft(b._payload),H,q,G,$)}}if(ft)return $=$(b),ft=G===""?"."+Bt(b,0):G,at($)?(q="",ft!=null&&(q=ft.replace(Ye,"$&/")+"/"),D($,H,q,"",function(Xe){return Xe})):$!=null&&(Vt($)&&($=Pt($,q+($.key==null||b&&b.key===$.key?"":(""+$.key).replace(Ye,"$&/")+"/")+ft)),H.push($)),1;ft=0;var lt=G===""?".":G+":";if(at(b))for(var xt=0;xt>>1,ct=D[rt];if(0>>1;rtd(q,I))Gd($,q)?(D[rt]=$,D[G]=I,rt=G):(D[rt]=q,D[H]=I,rt=H);else if(Gd($,I))D[rt]=$,D[G]=I,rt=G;else break t}}return L}function d(D,L){var I=D.sortIndex-L.sortIndex;return I!==0?I:D.id-L.id}if(i.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var m=performance;i.unstable_now=function(){return m.now()}}else{var y=Date,x=y.now();i.unstable_now=function(){return y.now()-x}}var S=[],v=[],N=1,C=null,Y=3,V=!1,K=!1,w=!1,R=!1,B=typeof setTimeout=="function"?setTimeout:null,k=typeof clearTimeout=="function"?clearTimeout:null,X=typeof setImmediate<"u"?setImmediate:null;function W(D){for(var L=r(v);L!==null;){if(L.callback===null)c(v);else if(L.startTime<=D)c(v),L.sortIndex=L.expirationTime,f(S,L);else break;L=r(v)}}function at(D){if(w=!1,W(D),!K)if(r(S)!==null)K=!0,Ot||(Ot=!0,Xt());else{var L=r(v);L!==null&&te(at,L.startTime-D)}}var Ot=!1,tt=-1,Ht=5,de=-1;function Pt(){return R?!0:!(i.unstable_now()-deD&&Pt());){var rt=C.callback;if(typeof rt=="function"){C.callback=null,Y=C.priorityLevel;var ct=rt(C.expirationTime<=D);if(D=i.unstable_now(),typeof ct=="function"){C.callback=ct,W(D),L=!0;break e}C===r(S)&&c(S),W(D)}else c(S);C=r(S)}if(C!==null)L=!0;else{var b=r(v);b!==null&&te(at,b.startTime-D),L=!1}}break t}finally{C=null,Y=I,V=!1}L=void 0}}finally{L?Xt():Ot=!1}}}var Xt;if(typeof X=="function")Xt=function(){X(Vt)};else if(typeof MessageChannel<"u"){var Ye=new MessageChannel,Bt=Ye.port2;Ye.port1.onmessage=Vt,Xt=function(){Bt.postMessage(null)}}else Xt=function(){B(Vt,0)};function te(D,L){tt=B(function(){D(i.unstable_now())},L)}i.unstable_IdlePriority=5,i.unstable_ImmediatePriority=1,i.unstable_LowPriority=4,i.unstable_NormalPriority=3,i.unstable_Profiling=null,i.unstable_UserBlockingPriority=2,i.unstable_cancelCallback=function(D){D.callback=null},i.unstable_forceFrameRate=function(D){0>D||125rt?(D.sortIndex=I,f(v,D),r(S)===null&&D===r(v)&&(w?(k(tt),tt=-1):w=!0,te(at,I-rt))):(D.sortIndex=ct,f(S,D),K||V||(K=!0,Ot||(Ot=!0,Xt()))),D},i.unstable_shouldYield=Pt,i.unstable_wrapCallback=function(D){var L=Y;return function(){var I=Y;Y=L;try{return D.apply(this,arguments)}finally{Y=I}}}})(Kf)),Kf}var b0;function Gy(){return b0||(b0=1,Jf.exports=Xy()),Jf.exports}var kf={exports:{}},Wt={};/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var g0;function Vy(){if(g0)return Wt;g0=1;var i=us();function f(S){var v="https://react.dev/errors/"+S;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(f){console.error(f)}}return i(),kf.exports=Vy(),kf.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var x0;function Zy(){if(x0)return Xa;x0=1;var i=Gy(),f=us(),r=Qy();function c(t){var e="https://react.dev/errors/"+t;if(1ct||(t.current=rt[ct],rt[ct]=null,ct--)}function q(t,e){ct++,rt[ct]=t.current,t.current=e}var G=b(null),$=b(null),ut=b(null),ft=b(null);function lt(t,e){switch(q(ut,e),q($,t),q(G,null),e.nodeType){case 9:case 11:t=(t=e.documentElement)&&(t=t.namespaceURI)?Bd(t):0;break;default:if(t=e.tagName,e=e.namespaceURI)e=Bd(e),t=qd(e,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}H(G),q(G,t)}function xt(){H(G),H($),H(ut)}function Xe(t){t.memoizedState!==null&&q(ft,t);var e=G.current,l=qd(e,t.type);e!==l&&(q($,t),q(G,l))}function Je(t){$.current===t&&(H(G),H($)),ft.current===t&&(H(ft),Ba._currentValue=I)}var an,$a;function me(t){if(an===void 0)try{throw Error()}catch(l){var e=l.stack.trim().match(/\n( *(at )?)/);an=e&&e[1]||"",$a=-1)":-1a||h[n]!==T[a]){var M=` +`+h[n].replace(" at new "," at ");return t.displayName&&M.includes("")&&(M=M.replace("",t.displayName)),M}while(1<=n&&0<=a);break}}}finally{Ti=!1,Error.prepareStackTrace=l}return(l=t?t.displayName||t.name:"")?me(l):""}function mm(t,e){switch(t.tag){case 26:case 27:case 5:return me(t.type);case 16:return me("Lazy");case 13:return t.child!==e&&e!==null?me("Suspense Fallback"):me("Suspense");case 19:return me("SuspenseList");case 0:case 15:return Oi(t.type,!1);case 11:return Oi(t.type.render,!1);case 1:return Oi(t.type,!0);case 31:return me("Activity");default:return""}}function ds(t){try{var e="",l=null;do e+=mm(t,l),l=t,t=t.return;while(t);return e}catch(n){return` +Error generating stack: `+n.message+` +`+n.stack}}var Ni=Object.prototype.hasOwnProperty,_i=i.unstable_scheduleCallback,Ri=i.unstable_cancelCallback,hm=i.unstable_shouldYield,ym=i.unstable_requestPaint,he=i.unstable_now,vm=i.unstable_getCurrentPriorityLevel,ms=i.unstable_ImmediatePriority,hs=i.unstable_UserBlockingPriority,Wa=i.unstable_NormalPriority,pm=i.unstable_LowPriority,ys=i.unstable_IdlePriority,bm=i.log,gm=i.unstable_setDisableYieldValue,kn=null,ye=null;function ol(t){if(typeof bm=="function"&&gm(t),ye&&typeof ye.setStrictMode=="function")try{ye.setStrictMode(kn,t)}catch{}}var ve=Math.clz32?Math.clz32:Em,Sm=Math.log,xm=Math.LN2;function Em(t){return t>>>=0,t===0?32:31-(Sm(t)/xm|0)|0}var Ia=256,Pa=262144,tu=4194304;function ql(t){var e=t&42;if(e!==0)return e;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&261888;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function eu(t,e,l){var n=t.pendingLanes;if(n===0)return 0;var a=0,u=t.suspendedLanes,s=t.pingedLanes;t=t.warmLanes;var o=n&134217727;return o!==0?(n=o&~u,n!==0?a=ql(n):(s&=o,s!==0?a=ql(s):l||(l=o&~t,l!==0&&(a=ql(l))))):(o=n&~u,o!==0?a=ql(o):s!==0?a=ql(s):l||(l=n&~t,l!==0&&(a=ql(l)))),a===0?0:e!==0&&e!==a&&(e&u)===0&&(u=a&-a,l=e&-e,u>=l||u===32&&(l&4194048)!==0)?e:a}function Fn(t,e){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&e)===0}function zm(t,e){switch(t){case 1:case 2:case 4:case 8:case 64:return e+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function vs(){var t=tu;return tu<<=1,(tu&62914560)===0&&(tu=4194304),t}function Di(t){for(var e=[],l=0;31>l;l++)e.push(t);return e}function $n(t,e){t.pendingLanes|=e,e!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function Am(t,e,l,n,a,u){var s=t.pendingLanes;t.pendingLanes=l,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=l,t.entangledLanes&=l,t.errorRecoveryDisabledLanes&=l,t.shellSuspendCounter=0;var o=t.entanglements,h=t.expirationTimes,T=t.hiddenUpdates;for(l=s&~l;0"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var Dm=/[\n"\\]/g;function Oe(t){return t.replace(Dm,function(e){return"\\"+e.charCodeAt(0).toString(16)+" "})}function Bi(t,e,l,n,a,u,s,o){t.name="",s!=null&&typeof s!="function"&&typeof s!="symbol"&&typeof s!="boolean"?t.type=s:t.removeAttribute("type"),e!=null?s==="number"?(e===0&&t.value===""||t.value!=e)&&(t.value=""+Te(e)):t.value!==""+Te(e)&&(t.value=""+Te(e)):s!=="submit"&&s!=="reset"||t.removeAttribute("value"),e!=null?qi(t,s,Te(e)):l!=null?qi(t,s,Te(l)):n!=null&&t.removeAttribute("value"),a==null&&u!=null&&(t.defaultChecked=!!u),a!=null&&(t.checked=a&&typeof a!="function"&&typeof a!="symbol"),o!=null&&typeof o!="function"&&typeof o!="symbol"&&typeof o!="boolean"?t.name=""+Te(o):t.removeAttribute("name")}function Rs(t,e,l,n,a,u,s,o){if(u!=null&&typeof u!="function"&&typeof u!="symbol"&&typeof u!="boolean"&&(t.type=u),e!=null||l!=null){if(!(u!=="submit"&&u!=="reset"||e!=null)){Hi(t);return}l=l!=null?""+Te(l):"",e=e!=null?""+Te(e):l,o||e===t.value||(t.value=e),t.defaultValue=e}n=n??a,n=typeof n!="function"&&typeof n!="symbol"&&!!n,t.checked=o?t.checked:!!n,t.defaultChecked=!!n,s!=null&&typeof s!="function"&&typeof s!="symbol"&&typeof s!="boolean"&&(t.name=s),Hi(t)}function qi(t,e,l){e==="number"&&au(t.ownerDocument)===t||t.defaultValue===""+l||(t.defaultValue=""+l)}function on(t,e,l,n){if(t=t.options,e){e={};for(var a=0;a"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Gi=!1;if(Fe)try{var ta={};Object.defineProperty(ta,"passive",{get:function(){Gi=!0}}),window.addEventListener("test",ta,ta),window.removeEventListener("test",ta,ta)}catch{Gi=!1}var ml=null,Vi=null,iu=null;function Bs(){if(iu)return iu;var t,e=Vi,l=e.length,n,a="value"in ml?ml.value:ml.textContent,u=a.length;for(t=0;t=na),Gs=" ",Vs=!1;function Qs(t,e){switch(t){case"keyup":return ah.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Zs(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var yn=!1;function ih(t,e){switch(t){case"compositionend":return Zs(e);case"keypress":return e.which!==32?null:(Vs=!0,Gs);case"textInput":return t=e.data,t===Gs&&Vs?null:t;default:return null}}function ch(t,e){if(yn)return t==="compositionend"||!ki&&Qs(t,e)?(t=Bs(),iu=Vi=ml=null,yn=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:l,offset:e-t};t=n}t:{for(;l;){if(l.nextSibling){l=l.nextSibling;break t}l=l.parentNode}l=void 0}l=Ps(l)}}function er(t,e){return t&&e?t===e?!0:t&&t.nodeType===3?!1:e&&e.nodeType===3?er(t,e.parentNode):"contains"in t?t.contains(e):t.compareDocumentPosition?!!(t.compareDocumentPosition(e)&16):!1:!1}function lr(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var e=au(t.document);e instanceof t.HTMLIFrameElement;){try{var l=typeof e.contentWindow.location.href=="string"}catch{l=!1}if(l)t=e.contentWindow;else break;e=au(t.document)}return e}function Wi(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return e&&(e==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||e==="textarea"||t.contentEditable==="true")}var yh=Fe&&"documentMode"in document&&11>=document.documentMode,vn=null,Ii=null,ca=null,Pi=!1;function nr(t,e,l){var n=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;Pi||vn==null||vn!==au(n)||(n=vn,"selectionStart"in n&&Wi(n)?n={start:n.selectionStart,end:n.selectionEnd}:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection(),n={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}),ca&&ia(ca,n)||(ca=n,n=Pu(Ii,"onSelect"),0>=s,a-=s,Ge=1<<32-ve(e)+a|l<it?(ht=J,J=null):ht=J.sibling;var pt=O(E,J,A[it],U);if(pt===null){J===null&&(J=ht);break}t&&J&&pt.alternate===null&&e(E,J),g=u(pt,g,it),vt===null?F=pt:vt.sibling=pt,vt=pt,J=ht}if(it===A.length)return l(E,J),yt&&We(E,it),F;if(J===null){for(;itit?(ht=J,J=null):ht=J.sibling;var Hl=O(E,J,pt.value,U);if(Hl===null){J===null&&(J=ht);break}t&&J&&Hl.alternate===null&&e(E,J),g=u(Hl,g,it),vt===null?F=Hl:vt.sibling=Hl,vt=Hl,J=ht}if(pt.done)return l(E,J),yt&&We(E,it),F;if(J===null){for(;!pt.done;it++,pt=A.next())pt=j(E,pt.value,U),pt!==null&&(g=u(pt,g,it),vt===null?F=pt:vt.sibling=pt,vt=pt);return yt&&We(E,it),F}for(J=n(J);!pt.done;it++,pt=A.next())pt=_(J,E,it,pt.value,U),pt!==null&&(t&&pt.alternate!==null&&J.delete(pt.key===null?it:pt.key),g=u(pt,g,it),vt===null?F=pt:vt.sibling=pt,vt=pt);return t&&J.forEach(function(Hy){return e(E,Hy)}),yt&&We(E,it),F}function At(E,g,A,U){if(typeof A=="object"&&A!==null&&A.type===w&&A.key===null&&(A=A.props.children),typeof A=="object"&&A!==null){switch(A.$$typeof){case V:t:{for(var F=A.key;g!==null;){if(g.key===F){if(F=A.type,F===w){if(g.tag===7){l(E,g.sibling),U=a(g,A.props.children),U.return=E,E=U;break t}}else if(g.elementType===F||typeof F=="object"&&F!==null&&F.$$typeof===Ht&&kl(F)===g.type){l(E,g.sibling),U=a(g,A.props),ma(U,A),U.return=E,E=U;break t}l(E,g);break}else e(E,g);g=g.sibling}A.type===w?(U=Vl(A.props.children,E.mode,U,A.key),U.return=E,E=U):(U=vu(A.type,A.key,A.props,null,E.mode,U),ma(U,A),U.return=E,E=U)}return s(E);case K:t:{for(F=A.key;g!==null;){if(g.key===F)if(g.tag===4&&g.stateNode.containerInfo===A.containerInfo&&g.stateNode.implementation===A.implementation){l(E,g.sibling),U=a(g,A.children||[]),U.return=E,E=U;break t}else{l(E,g);break}else e(E,g);g=g.sibling}U=ic(A,E.mode,U),U.return=E,E=U}return s(E);case Ht:return A=kl(A),At(E,g,A,U)}if(te(A))return Q(E,g,A,U);if(Xt(A)){if(F=Xt(A),typeof F!="function")throw Error(c(150));return A=F.call(A),P(E,g,A,U)}if(typeof A.then=="function")return At(E,g,zu(A),U);if(A.$$typeof===X)return At(E,g,gu(E,A),U);Au(E,A)}return typeof A=="string"&&A!==""||typeof A=="number"||typeof A=="bigint"?(A=""+A,g!==null&&g.tag===6?(l(E,g.sibling),U=a(g,A),U.return=E,E=U):(l(E,g),U=uc(A,E.mode,U),U.return=E,E=U),s(E)):l(E,g)}return function(E,g,A,U){try{da=0;var F=At(E,g,A,U);return Nn=null,F}catch(J){if(J===On||J===xu)throw J;var vt=be(29,J,null,E.mode);return vt.lanes=U,vt.return=E,vt}finally{}}}var $l=Or(!0),Nr=Or(!1),bl=!1;function bc(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function gc(t,e){t=t.updateQueue,e.updateQueue===t&&(e.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function gl(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function Sl(t,e,l){var n=t.updateQueue;if(n===null)return null;if(n=n.shared,(bt&2)!==0){var a=n.pending;return a===null?e.next=e:(e.next=a.next,a.next=e),n.pending=e,e=yu(t),rr(t,null,l),e}return hu(t,n,e,l),yu(t)}function ha(t,e,l){if(e=e.updateQueue,e!==null&&(e=e.shared,(l&4194048)!==0)){var n=e.lanes;n&=t.pendingLanes,l|=n,e.lanes=l,bs(t,l)}}function Sc(t,e){var l=t.updateQueue,n=t.alternate;if(n!==null&&(n=n.updateQueue,l===n)){var a=null,u=null;if(l=l.firstBaseUpdate,l!==null){do{var s={lane:l.lane,tag:l.tag,payload:l.payload,callback:null,next:null};u===null?a=u=s:u=u.next=s,l=l.next}while(l!==null);u===null?a=u=e:u=u.next=e}else a=u=e;l={baseState:n.baseState,firstBaseUpdate:a,lastBaseUpdate:u,shared:n.shared,callbacks:n.callbacks},t.updateQueue=l;return}t=l.lastBaseUpdate,t===null?l.firstBaseUpdate=e:t.next=e,l.lastBaseUpdate=e}var xc=!1;function ya(){if(xc){var t=Tn;if(t!==null)throw t}}function va(t,e,l,n){xc=!1;var a=t.updateQueue;bl=!1;var u=a.firstBaseUpdate,s=a.lastBaseUpdate,o=a.shared.pending;if(o!==null){a.shared.pending=null;var h=o,T=h.next;h.next=null,s===null?u=T:s.next=T,s=h;var M=t.alternate;M!==null&&(M=M.updateQueue,o=M.lastBaseUpdate,o!==s&&(o===null?M.firstBaseUpdate=T:o.next=T,M.lastBaseUpdate=h))}if(u!==null){var j=a.baseState;s=0,M=T=h=null,o=u;do{var O=o.lane&-536870913,_=O!==o.lane;if(_?(mt&O)===O:(n&O)===O){O!==0&&O===An&&(xc=!0),M!==null&&(M=M.next={lane:0,tag:o.tag,payload:o.payload,callback:null,next:null});t:{var Q=t,P=o;O=e;var At=l;switch(P.tag){case 1:if(Q=P.payload,typeof Q=="function"){j=Q.call(At,j,O);break t}j=Q;break t;case 3:Q.flags=Q.flags&-65537|128;case 0:if(Q=P.payload,O=typeof Q=="function"?Q.call(At,j,O):Q,O==null)break t;j=C({},j,O);break t;case 2:bl=!0}}O=o.callback,O!==null&&(t.flags|=64,_&&(t.flags|=8192),_=a.callbacks,_===null?a.callbacks=[O]:_.push(O))}else _={lane:O,tag:o.tag,payload:o.payload,callback:o.callback,next:null},M===null?(T=M=_,h=j):M=M.next=_,s|=O;if(o=o.next,o===null){if(o=a.shared.pending,o===null)break;_=o,o=_.next,_.next=null,a.lastBaseUpdate=_,a.shared.pending=null}}while(!0);M===null&&(h=j),a.baseState=h,a.firstBaseUpdate=T,a.lastBaseUpdate=M,u===null&&(a.shared.lanes=0),Tl|=s,t.lanes=s,t.memoizedState=j}}function _r(t,e){if(typeof t!="function")throw Error(c(191,t));t.call(e)}function Rr(t,e){var l=t.callbacks;if(l!==null)for(t.callbacks=null,t=0;tu?u:8;var s=D.T,o={};D.T=o,Yc(t,!1,e,l);try{var h=a(),T=D.S;if(T!==null&&T(o,h),h!==null&&typeof h=="object"&&typeof h.then=="function"){var M=Ah(h,n);ga(t,e,M,ze(t))}else ga(t,e,n,ze(t))}catch(j){ga(t,e,{then:function(){},status:"rejected",reason:j},ze())}finally{L.p=u,s!==null&&o.types!==null&&(s.types=o.types),D.T=s}}function Dh(){}function wc(t,e,l,n){if(t.tag!==5)throw Error(c(476));var a=co(t).queue;io(t,a,e,I,l===null?Dh:function(){return fo(t),l(n)})}function co(t){var e=t.memoizedState;if(e!==null)return e;e={memoizedState:I,baseState:I,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:el,lastRenderedState:I},next:null};var l={};return e.next={memoizedState:l,baseState:l,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:el,lastRenderedState:l},next:null},t.memoizedState=e,t=t.alternate,t!==null&&(t.memoizedState=e),e}function fo(t){var e=co(t);e.next===null&&(e=t.alternate.memoizedState),ga(t,e.next.queue,{},ze())}function Lc(){return kt(Ba)}function so(){return Ct().memoizedState}function ro(){return Ct().memoizedState}function Mh(t){for(var e=t.return;e!==null;){switch(e.tag){case 24:case 3:var l=ze();t=gl(l);var n=Sl(e,t,l);n!==null&&(se(n,e,l),ha(n,e,l)),e={cache:hc()},t.payload=e;return}e=e.return}}function Uh(t,e,l){var n=ze();l={lane:n,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},ju(t)?mo(e,l):(l=nc(t,e,l,n),l!==null&&(se(l,t,n),ho(l,e,n)))}function oo(t,e,l){var n=ze();ga(t,e,l,n)}function ga(t,e,l,n){var a={lane:n,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null};if(ju(t))mo(e,a);else{var u=t.alternate;if(t.lanes===0&&(u===null||u.lanes===0)&&(u=e.lastRenderedReducer,u!==null))try{var s=e.lastRenderedState,o=u(s,l);if(a.hasEagerState=!0,a.eagerState=o,pe(o,s))return hu(t,e,a,0),Tt===null&&mu(),!1}catch{}finally{}if(l=nc(t,e,a,n),l!==null)return se(l,t,n),ho(l,e,n),!0}return!1}function Yc(t,e,l,n){if(n={lane:2,revertLane:gf(),gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},ju(t)){if(e)throw Error(c(479))}else e=nc(t,l,n,2),e!==null&&se(e,t,2)}function ju(t){var e=t.alternate;return t===nt||e!==null&&e===nt}function mo(t,e){Rn=Nu=!0;var l=t.pending;l===null?e.next=e:(e.next=l.next,l.next=e),t.pending=e}function ho(t,e,l){if((l&4194048)!==0){var n=e.lanes;n&=t.pendingLanes,l|=n,e.lanes=l,bs(t,l)}}var Sa={readContext:kt,use:Du,useCallback:Dt,useContext:Dt,useEffect:Dt,useImperativeHandle:Dt,useLayoutEffect:Dt,useInsertionEffect:Dt,useMemo:Dt,useReducer:Dt,useRef:Dt,useState:Dt,useDebugValue:Dt,useDeferredValue:Dt,useTransition:Dt,useSyncExternalStore:Dt,useId:Dt,useHostTransitionStatus:Dt,useFormState:Dt,useActionState:Dt,useOptimistic:Dt,useMemoCache:Dt,useCacheRefresh:Dt};Sa.useEffectEvent=Dt;var yo={readContext:kt,use:Du,useCallback:function(t,e){return ee().memoizedState=[t,e===void 0?null:e],t},useContext:kt,useEffect:Wr,useImperativeHandle:function(t,e,l){l=l!=null?l.concat([t]):null,Uu(4194308,4,eo.bind(null,e,t),l)},useLayoutEffect:function(t,e){return Uu(4194308,4,t,e)},useInsertionEffect:function(t,e){Uu(4,2,t,e)},useMemo:function(t,e){var l=ee();e=e===void 0?null:e;var n=t();if(Wl){ol(!0);try{t()}finally{ol(!1)}}return l.memoizedState=[n,e],n},useReducer:function(t,e,l){var n=ee();if(l!==void 0){var a=l(e);if(Wl){ol(!0);try{l(e)}finally{ol(!1)}}}else a=e;return n.memoizedState=n.baseState=a,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:a},n.queue=t,t=t.dispatch=Uh.bind(null,nt,t),[n.memoizedState,t]},useRef:function(t){var e=ee();return t={current:t},e.memoizedState=t},useState:function(t){t=Cc(t);var e=t.queue,l=oo.bind(null,nt,e);return e.dispatch=l,[t.memoizedState,l]},useDebugValue:Bc,useDeferredValue:function(t,e){var l=ee();return qc(l,t,e)},useTransition:function(){var t=Cc(!1);return t=io.bind(null,nt,t.queue,!0,!1),ee().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,e,l){var n=nt,a=ee();if(yt){if(l===void 0)throw Error(c(407));l=l()}else{if(l=e(),Tt===null)throw Error(c(349));(mt&127)!==0||Hr(n,e,l)}a.memoizedState=l;var u={value:l,getSnapshot:e};return a.queue=u,Wr(qr.bind(null,n,u,t),[t]),n.flags|=2048,Mn(9,{destroy:void 0},Br.bind(null,n,u,l,e),null),l},useId:function(){var t=ee(),e=Tt.identifierPrefix;if(yt){var l=Ve,n=Ge;l=(n&~(1<<32-ve(n)-1)).toString(32)+l,e="_"+e+"R_"+l,l=_u++,0<\/script>",u=u.removeChild(u.firstChild);break;case"select":u=typeof n.is=="string"?s.createElement("select",{is:n.is}):s.createElement("select"),n.multiple?u.multiple=!0:n.size&&(u.size=n.size);break;default:u=typeof n.is=="string"?s.createElement(a,{is:n.is}):s.createElement(a)}}u[Jt]=e,u[ne]=n;t:for(s=e.child;s!==null;){if(s.tag===5||s.tag===6)u.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===e)break t;for(;s.sibling===null;){if(s.return===null||s.return===e)break t;s=s.return}s.sibling.return=s.return,s=s.sibling}e.stateNode=u;t:switch($t(u,a,n),a){case"button":case"input":case"select":case"textarea":n=!!n.autoFocus;break t;case"img":n=!0;break t;default:n=!1}n&&nl(e)}}return _t(e),tf(e,e.type,t===null?null:t.memoizedProps,e.pendingProps,l),null;case 6:if(t&&e.stateNode!=null)t.memoizedProps!==n&&nl(e);else{if(typeof n!="string"&&e.stateNode===null)throw Error(c(166));if(t=ut.current,En(e)){if(t=e.stateNode,l=e.memoizedProps,n=null,a=Kt,a!==null)switch(a.tag){case 27:case 5:n=a.memoizedProps}t[Jt]=e,t=!!(t.nodeValue===l||n!==null&&n.suppressHydrationWarning===!0||jd(t.nodeValue,l)),t||vl(e,!0)}else t=ti(t).createTextNode(n),t[Jt]=e,e.stateNode=t}return _t(e),null;case 31:if(l=e.memoizedState,t===null||t.memoizedState!==null){if(n=En(e),l!==null){if(t===null){if(!n)throw Error(c(318));if(t=e.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(c(557));t[Jt]=e}else Ql(),(e.flags&128)===0&&(e.memoizedState=null),e.flags|=4;_t(e),t=!1}else l=rc(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=l),t=!0;if(!t)return e.flags&256?(Se(e),e):(Se(e),null);if((e.flags&128)!==0)throw Error(c(558))}return _t(e),null;case 13:if(n=e.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(a=En(e),n!==null&&n.dehydrated!==null){if(t===null){if(!a)throw Error(c(318));if(a=e.memoizedState,a=a!==null?a.dehydrated:null,!a)throw Error(c(317));a[Jt]=e}else Ql(),(e.flags&128)===0&&(e.memoizedState=null),e.flags|=4;_t(e),a=!1}else a=rc(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=a),a=!0;if(!a)return e.flags&256?(Se(e),e):(Se(e),null)}return Se(e),(e.flags&128)!==0?(e.lanes=l,e):(l=n!==null,t=t!==null&&t.memoizedState!==null,l&&(n=e.child,a=null,n.alternate!==null&&n.alternate.memoizedState!==null&&n.alternate.memoizedState.cachePool!==null&&(a=n.alternate.memoizedState.cachePool.pool),u=null,n.memoizedState!==null&&n.memoizedState.cachePool!==null&&(u=n.memoizedState.cachePool.pool),u!==a&&(n.flags|=2048)),l!==t&&l&&(e.child.flags|=8192),Lu(e,e.updateQueue),_t(e),null);case 4:return xt(),t===null&&zf(e.stateNode.containerInfo),_t(e),null;case 10:return Pe(e.type),_t(e),null;case 19:if(H(Ut),n=e.memoizedState,n===null)return _t(e),null;if(a=(e.flags&128)!==0,u=n.rendering,u===null)if(a)Ea(n,!1);else{if(Mt!==0||t!==null&&(t.flags&128)!==0)for(t=e.child;t!==null;){if(u=Ou(t),u!==null){for(e.flags|=128,Ea(n,!1),t=u.updateQueue,e.updateQueue=t,Lu(e,t),e.subtreeFlags=0,t=l,l=e.child;l!==null;)or(l,t),l=l.sibling;return q(Ut,Ut.current&1|2),yt&&We(e,n.treeForkCount),e.child}t=t.sibling}n.tail!==null&&he()>Qu&&(e.flags|=128,a=!0,Ea(n,!1),e.lanes=4194304)}else{if(!a)if(t=Ou(u),t!==null){if(e.flags|=128,a=!0,t=t.updateQueue,e.updateQueue=t,Lu(e,t),Ea(n,!0),n.tail===null&&n.tailMode==="hidden"&&!u.alternate&&!yt)return _t(e),null}else 2*he()-n.renderingStartTime>Qu&&l!==536870912&&(e.flags|=128,a=!0,Ea(n,!1),e.lanes=4194304);n.isBackwards?(u.sibling=e.child,e.child=u):(t=n.last,t!==null?t.sibling=u:e.child=u,n.last=u)}return n.tail!==null?(t=n.tail,n.rendering=t,n.tail=t.sibling,n.renderingStartTime=he(),t.sibling=null,l=Ut.current,q(Ut,a?l&1|2:l&1),yt&&We(e,n.treeForkCount),t):(_t(e),null);case 22:case 23:return Se(e),zc(),n=e.memoizedState!==null,t!==null?t.memoizedState!==null!==n&&(e.flags|=8192):n&&(e.flags|=8192),n?(l&536870912)!==0&&(e.flags&128)===0&&(_t(e),e.subtreeFlags&6&&(e.flags|=8192)):_t(e),l=e.updateQueue,l!==null&&Lu(e,l.retryQueue),l=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(l=t.memoizedState.cachePool.pool),n=null,e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),n!==l&&(e.flags|=2048),t!==null&&H(Kl),null;case 24:return l=null,t!==null&&(l=t.memoizedState.cache),e.memoizedState.cache!==l&&(e.flags|=2048),Pe(qt),_t(e),null;case 25:return null;case 30:return null}throw Error(c(156,e.tag))}function qh(t,e){switch(fc(e),e.tag){case 1:return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 3:return Pe(qt),xt(),t=e.flags,(t&65536)!==0&&(t&128)===0?(e.flags=t&-65537|128,e):null;case 26:case 27:case 5:return Je(e),null;case 31:if(e.memoizedState!==null){if(Se(e),e.alternate===null)throw Error(c(340));Ql()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 13:if(Se(e),t=e.memoizedState,t!==null&&t.dehydrated!==null){if(e.alternate===null)throw Error(c(340));Ql()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 19:return H(Ut),null;case 4:return xt(),null;case 10:return Pe(e.type),null;case 22:case 23:return Se(e),zc(),t!==null&&H(Kl),t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 24:return Pe(qt),null;case 25:return null;default:return null}}function Lo(t,e){switch(fc(e),e.tag){case 3:Pe(qt),xt();break;case 26:case 27:case 5:Je(e);break;case 4:xt();break;case 31:e.memoizedState!==null&&Se(e);break;case 13:Se(e);break;case 19:H(Ut);break;case 10:Pe(e.type);break;case 22:case 23:Se(e),zc(),t!==null&&H(Kl);break;case 24:Pe(qt)}}function za(t,e){try{var l=e.updateQueue,n=l!==null?l.lastEffect:null;if(n!==null){var a=n.next;l=a;do{if((l.tag&t)===t){n=void 0;var u=l.create,s=l.inst;n=u(),s.destroy=n}l=l.next}while(l!==a)}}catch(o){St(e,e.return,o)}}function zl(t,e,l){try{var n=e.updateQueue,a=n!==null?n.lastEffect:null;if(a!==null){var u=a.next;n=u;do{if((n.tag&t)===t){var s=n.inst,o=s.destroy;if(o!==void 0){s.destroy=void 0,a=e;var h=l,T=o;try{T()}catch(M){St(a,h,M)}}}n=n.next}while(n!==u)}}catch(M){St(e,e.return,M)}}function Yo(t){var e=t.updateQueue;if(e!==null){var l=t.stateNode;try{Rr(e,l)}catch(n){St(t,t.return,n)}}}function Xo(t,e,l){l.props=Il(t.type,t.memoizedProps),l.state=t.memoizedState;try{l.componentWillUnmount()}catch(n){St(t,e,n)}}function Aa(t,e){try{var l=t.ref;if(l!==null){switch(t.tag){case 26:case 27:case 5:var n=t.stateNode;break;case 30:n=t.stateNode;break;default:n=t.stateNode}typeof l=="function"?t.refCleanup=l(n):l.current=n}}catch(a){St(t,e,a)}}function Qe(t,e){var l=t.ref,n=t.refCleanup;if(l!==null)if(typeof n=="function")try{n()}catch(a){St(t,e,a)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof l=="function")try{l(null)}catch(a){St(t,e,a)}else l.current=null}function Go(t){var e=t.type,l=t.memoizedProps,n=t.stateNode;try{t:switch(e){case"button":case"input":case"select":case"textarea":l.autoFocus&&n.focus();break t;case"img":l.src?n.src=l.src:l.srcSet&&(n.srcset=l.srcSet)}}catch(a){St(t,t.return,a)}}function ef(t,e,l){try{var n=t.stateNode;uy(n,t.type,l,e),n[ne]=e}catch(a){St(t,t.return,a)}}function Vo(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&Dl(t.type)||t.tag===4}function lf(t){t:for(;;){for(;t.sibling===null;){if(t.return===null||Vo(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.tag===27&&Dl(t.type)||t.flags&2||t.child===null||t.tag===4)continue t;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function nf(t,e,l){var n=t.tag;if(n===5||n===6)t=t.stateNode,e?(l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l).insertBefore(t,e):(e=l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l,e.appendChild(t),l=l._reactRootContainer,l!=null||e.onclick!==null||(e.onclick=ke));else if(n!==4&&(n===27&&Dl(t.type)&&(l=t.stateNode,e=null),t=t.child,t!==null))for(nf(t,e,l),t=t.sibling;t!==null;)nf(t,e,l),t=t.sibling}function Yu(t,e,l){var n=t.tag;if(n===5||n===6)t=t.stateNode,e?l.insertBefore(t,e):l.appendChild(t);else if(n!==4&&(n===27&&Dl(t.type)&&(l=t.stateNode),t=t.child,t!==null))for(Yu(t,e,l),t=t.sibling;t!==null;)Yu(t,e,l),t=t.sibling}function Qo(t){var e=t.stateNode,l=t.memoizedProps;try{for(var n=t.type,a=e.attributes;a.length;)e.removeAttributeNode(a[0]);$t(e,n,l),e[Jt]=t,e[ne]=l}catch(u){St(t,t.return,u)}}var al=!1,Yt=!1,af=!1,Zo=typeof WeakSet=="function"?WeakSet:Set,Zt=null;function wh(t,e){if(t=t.containerInfo,Of=ci,t=lr(t),Wi(t)){if("selectionStart"in t)var l={start:t.selectionStart,end:t.selectionEnd};else t:{l=(l=t.ownerDocument)&&l.defaultView||window;var n=l.getSelection&&l.getSelection();if(n&&n.rangeCount!==0){l=n.anchorNode;var a=n.anchorOffset,u=n.focusNode;n=n.focusOffset;try{l.nodeType,u.nodeType}catch{l=null;break t}var s=0,o=-1,h=-1,T=0,M=0,j=t,O=null;e:for(;;){for(var _;j!==l||a!==0&&j.nodeType!==3||(o=s+a),j!==u||n!==0&&j.nodeType!==3||(h=s+n),j.nodeType===3&&(s+=j.nodeValue.length),(_=j.firstChild)!==null;)O=j,j=_;for(;;){if(j===t)break e;if(O===l&&++T===a&&(o=s),O===u&&++M===n&&(h=s),(_=j.nextSibling)!==null)break;j=O,O=j.parentNode}j=_}l=o===-1||h===-1?null:{start:o,end:h}}else l=null}l=l||{start:0,end:0}}else l=null;for(Nf={focusedElem:t,selectionRange:l},ci=!1,Zt=e;Zt!==null;)if(e=Zt,t=e.child,(e.subtreeFlags&1028)!==0&&t!==null)t.return=e,Zt=t;else for(;Zt!==null;){switch(e=Zt,u=e.alternate,t=e.flags,e.tag){case 0:if((t&4)!==0&&(t=e.updateQueue,t=t!==null?t.events:null,t!==null))for(l=0;l title"))),$t(u,n,l),u[Jt]=t,Qt(u),n=u;break t;case"link":var s=Wd("link","href",a).get(n+(l.href||""));if(s){for(var o=0;oAt&&(s=At,At=P,P=s);var E=tr(o,P),g=tr(o,At);if(E&&g&&(_.rangeCount!==1||_.anchorNode!==E.node||_.anchorOffset!==E.offset||_.focusNode!==g.node||_.focusOffset!==g.offset)){var A=j.createRange();A.setStart(E.node,E.offset),_.removeAllRanges(),P>At?(_.addRange(A),_.extend(g.node,g.offset)):(A.setEnd(g.node,g.offset),_.addRange(A))}}}}for(j=[],_=o;_=_.parentNode;)_.nodeType===1&&j.push({element:_,left:_.scrollLeft,top:_.scrollTop});for(typeof o.focus=="function"&&o.focus(),o=0;ol?32:l,D.T=null,l=df,df=null;var u=Nl,s=sl;if(Gt=0,Bn=Nl=null,sl=0,(bt&6)!==0)throw Error(c(331));var o=bt;if(bt|=4,ld(u.current),Po(u,u.current,s,l),bt=o,Da(0,!1),ye&&typeof ye.onPostCommitFiberRoot=="function")try{ye.onPostCommitFiberRoot(kn,u)}catch{}return!0}finally{L.p=a,D.T=n,Sd(t,e)}}function Ed(t,e,l){e=_e(l,e),e=Qc(t.stateNode,e,2),t=Sl(t,e,2),t!==null&&($n(t,2),Ze(t))}function St(t,e,l){if(t.tag===3)Ed(t,t,l);else for(;e!==null;){if(e.tag===3){Ed(e,t,l);break}else if(e.tag===1){var n=e.stateNode;if(typeof e.type.getDerivedStateFromError=="function"||typeof n.componentDidCatch=="function"&&(Ol===null||!Ol.has(n))){t=_e(l,t),l=zo(2),n=Sl(e,l,2),n!==null&&(Ao(l,n,e,t),$n(n,2),Ze(n));break}}e=e.return}}function vf(t,e,l){var n=t.pingCache;if(n===null){n=t.pingCache=new Xh;var a=new Set;n.set(e,a)}else a=n.get(e),a===void 0&&(a=new Set,n.set(e,a));a.has(l)||(ff=!0,a.add(l),t=Jh.bind(null,t,e,l),e.then(t,t))}function Jh(t,e,l){var n=t.pingCache;n!==null&&n.delete(e),t.pingedLanes|=t.suspendedLanes&l,t.warmLanes&=~l,Tt===t&&(mt&l)===l&&(Mt===4||Mt===3&&(mt&62914560)===mt&&300>he()-Vu?(bt&2)===0&&qn(t,0):sf|=l,Hn===mt&&(Hn=0)),Ze(t)}function zd(t,e){e===0&&(e=vs()),t=Gl(t,e),t!==null&&($n(t,e),Ze(t))}function Kh(t){var e=t.memoizedState,l=0;e!==null&&(l=e.retryLane),zd(t,l)}function kh(t,e){var l=0;switch(t.tag){case 31:case 13:var n=t.stateNode,a=t.memoizedState;a!==null&&(l=a.retryLane);break;case 19:n=t.stateNode;break;case 22:n=t.stateNode._retryCache;break;default:throw Error(c(314))}n!==null&&n.delete(e),zd(t,l)}function Fh(t,e){return _i(t,e)}var $u=null,Ln=null,pf=!1,Wu=!1,bf=!1,Rl=0;function Ze(t){t!==Ln&&t.next===null&&(Ln===null?$u=Ln=t:Ln=Ln.next=t),Wu=!0,pf||(pf=!0,Wh())}function Da(t,e){if(!bf&&Wu){bf=!0;do for(var l=!1,n=$u;n!==null;){if(t!==0){var a=n.pendingLanes;if(a===0)var u=0;else{var s=n.suspendedLanes,o=n.pingedLanes;u=(1<<31-ve(42|t)+1)-1,u&=a&~(s&~o),u=u&201326741?u&201326741|1:u?u|2:0}u!==0&&(l=!0,Nd(n,u))}else u=mt,u=eu(n,n===Tt?u:0,n.cancelPendingCommit!==null||n.timeoutHandle!==-1),(u&3)===0||Fn(n,u)||(l=!0,Nd(n,u));n=n.next}while(l);bf=!1}}function $h(){Ad()}function Ad(){Wu=pf=!1;var t=0;Rl!==0&&cy()&&(t=Rl);for(var e=he(),l=null,n=$u;n!==null;){var a=n.next,u=Td(n,e);u===0?(n.next=null,l===null?$u=a:l.next=a,a===null&&(Ln=l)):(l=n,(t!==0||(u&3)!==0)&&(Wu=!0)),n=a}Gt!==0&&Gt!==5||Da(t),Rl!==0&&(Rl=0)}function Td(t,e){for(var l=t.suspendedLanes,n=t.pingedLanes,a=t.expirationTimes,u=t.pendingLanes&-62914561;0o)break;var M=h.transferSize,j=h.initiatorType;M&&Hd(j)&&(h=h.responseEnd,s+=M*(h"u"?null:document;function Kd(t,e,l){var n=Yn;if(n&&typeof e=="string"&&e){var a=Oe(e);a='link[rel="'+t+'"][href="'+a+'"]',typeof l=="string"&&(a+='[crossorigin="'+l+'"]'),Jd.has(a)||(Jd.add(a),t={rel:t,crossOrigin:l,href:e},n.querySelector(a)===null&&(e=n.createElement("link"),$t(e,"link",t),Qt(e),n.head.appendChild(e)))}}function vy(t){rl.D(t),Kd("dns-prefetch",t,null)}function py(t,e){rl.C(t,e),Kd("preconnect",t,e)}function by(t,e,l){rl.L(t,e,l);var n=Yn;if(n&&t&&e){var a='link[rel="preload"][as="'+Oe(e)+'"]';e==="image"&&l&&l.imageSrcSet?(a+='[imagesrcset="'+Oe(l.imageSrcSet)+'"]',typeof l.imageSizes=="string"&&(a+='[imagesizes="'+Oe(l.imageSizes)+'"]')):a+='[href="'+Oe(t)+'"]';var u=a;switch(e){case"style":u=Xn(t);break;case"script":u=Gn(t)}je.has(u)||(t=C({rel:"preload",href:e==="image"&&l&&l.imageSrcSet?void 0:t,as:e},l),je.set(u,t),n.querySelector(a)!==null||e==="style"&&n.querySelector(ja(u))||e==="script"&&n.querySelector(Ha(u))||(e=n.createElement("link"),$t(e,"link",t),Qt(e),n.head.appendChild(e)))}}function gy(t,e){rl.m(t,e);var l=Yn;if(l&&t){var n=e&&typeof e.as=="string"?e.as:"script",a='link[rel="modulepreload"][as="'+Oe(n)+'"][href="'+Oe(t)+'"]',u=a;switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":u=Gn(t)}if(!je.has(u)&&(t=C({rel:"modulepreload",href:t},e),je.set(u,t),l.querySelector(a)===null)){switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(l.querySelector(Ha(u)))return}n=l.createElement("link"),$t(n,"link",t),Qt(n),l.head.appendChild(n)}}}function Sy(t,e,l){rl.S(t,e,l);var n=Yn;if(n&&t){var a=sn(n).hoistableStyles,u=Xn(t);e=e||"default";var s=a.get(u);if(!s){var o={loading:0,preload:null};if(s=n.querySelector(ja(u)))o.loading=5;else{t=C({rel:"stylesheet",href:t,"data-precedence":e},l),(l=je.get(u))&&jf(t,l);var h=s=n.createElement("link");Qt(h),$t(h,"link",t),h._p=new Promise(function(T,M){h.onload=T,h.onerror=M}),h.addEventListener("load",function(){o.loading|=1}),h.addEventListener("error",function(){o.loading|=2}),o.loading|=4,li(s,e,n)}s={type:"stylesheet",instance:s,count:1,state:o},a.set(u,s)}}}function xy(t,e){rl.X(t,e);var l=Yn;if(l&&t){var n=sn(l).hoistableScripts,a=Gn(t),u=n.get(a);u||(u=l.querySelector(Ha(a)),u||(t=C({src:t,async:!0},e),(e=je.get(a))&&Hf(t,e),u=l.createElement("script"),Qt(u),$t(u,"link",t),l.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},n.set(a,u))}}function Ey(t,e){rl.M(t,e);var l=Yn;if(l&&t){var n=sn(l).hoistableScripts,a=Gn(t),u=n.get(a);u||(u=l.querySelector(Ha(a)),u||(t=C({src:t,async:!0,type:"module"},e),(e=je.get(a))&&Hf(t,e),u=l.createElement("script"),Qt(u),$t(u,"link",t),l.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},n.set(a,u))}}function kd(t,e,l,n){var a=(a=ut.current)?ei(a):null;if(!a)throw Error(c(446));switch(t){case"meta":case"title":return null;case"style":return typeof l.precedence=="string"&&typeof l.href=="string"?(e=Xn(l.href),l=sn(a).hoistableStyles,n=l.get(e),n||(n={type:"style",instance:null,count:0,state:null},l.set(e,n)),n):{type:"void",instance:null,count:0,state:null};case"link":if(l.rel==="stylesheet"&&typeof l.href=="string"&&typeof l.precedence=="string"){t=Xn(l.href);var u=sn(a).hoistableStyles,s=u.get(t);if(s||(a=a.ownerDocument||a,s={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},u.set(t,s),(u=a.querySelector(ja(t)))&&!u._p&&(s.instance=u,s.state.loading=5),je.has(t)||(l={rel:"preload",as:"style",href:l.href,crossOrigin:l.crossOrigin,integrity:l.integrity,media:l.media,hrefLang:l.hrefLang,referrerPolicy:l.referrerPolicy},je.set(t,l),u||zy(a,t,l,s.state))),e&&n===null)throw Error(c(528,""));return s}if(e&&n!==null)throw Error(c(529,""));return null;case"script":return e=l.async,l=l.src,typeof l=="string"&&e&&typeof e!="function"&&typeof e!="symbol"?(e=Gn(l),l=sn(a).hoistableScripts,n=l.get(e),n||(n={type:"script",instance:null,count:0,state:null},l.set(e,n)),n):{type:"void",instance:null,count:0,state:null};default:throw Error(c(444,t))}}function Xn(t){return'href="'+Oe(t)+'"'}function ja(t){return'link[rel="stylesheet"]['+t+"]"}function Fd(t){return C({},t,{"data-precedence":t.precedence,precedence:null})}function zy(t,e,l,n){t.querySelector('link[rel="preload"][as="style"]['+e+"]")?n.loading=1:(e=t.createElement("link"),n.preload=e,e.addEventListener("load",function(){return n.loading|=1}),e.addEventListener("error",function(){return n.loading|=2}),$t(e,"link",l),Qt(e),t.head.appendChild(e))}function Gn(t){return'[src="'+Oe(t)+'"]'}function Ha(t){return"script[async]"+t}function $d(t,e,l){if(e.count++,e.instance===null)switch(e.type){case"style":var n=t.querySelector('style[data-href~="'+Oe(l.href)+'"]');if(n)return e.instance=n,Qt(n),n;var a=C({},l,{"data-href":l.href,"data-precedence":l.precedence,href:null,precedence:null});return n=(t.ownerDocument||t).createElement("style"),Qt(n),$t(n,"style",a),li(n,l.precedence,t),e.instance=n;case"stylesheet":a=Xn(l.href);var u=t.querySelector(ja(a));if(u)return e.state.loading|=4,e.instance=u,Qt(u),u;n=Fd(l),(a=je.get(a))&&jf(n,a),u=(t.ownerDocument||t).createElement("link"),Qt(u);var s=u;return s._p=new Promise(function(o,h){s.onload=o,s.onerror=h}),$t(u,"link",n),e.state.loading|=4,li(u,l.precedence,t),e.instance=u;case"script":return u=Gn(l.src),(a=t.querySelector(Ha(u)))?(e.instance=a,Qt(a),a):(n=l,(a=je.get(u))&&(n=C({},l),Hf(n,a)),t=t.ownerDocument||t,a=t.createElement("script"),Qt(a),$t(a,"link",n),t.head.appendChild(a),e.instance=a);case"void":return null;default:throw Error(c(443,e.type))}else e.type==="stylesheet"&&(e.state.loading&4)===0&&(n=e.instance,e.state.loading|=4,li(n,l.precedence,t));return e.instance}function li(t,e,l){for(var n=l.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),a=n.length?n[n.length-1]:null,u=a,s=0;s title"):null)}function Ay(t,e,l){if(l===1||e.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof e.precedence!="string"||typeof e.href!="string"||e.href==="")break;return!0;case"link":if(typeof e.rel!="string"||typeof e.href!="string"||e.href===""||e.onLoad||e.onError)break;switch(e.rel){case"stylesheet":return t=e.disabled,typeof e.precedence=="string"&&t==null;default:return!0}case"script":if(e.async&&typeof e.async!="function"&&typeof e.async!="symbol"&&!e.onLoad&&!e.onError&&e.src&&typeof e.src=="string")return!0}return!1}function Pd(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function Ty(t,e,l,n){if(l.type==="stylesheet"&&(typeof n.media!="string"||matchMedia(n.media).matches!==!1)&&(l.state.loading&4)===0){if(l.instance===null){var a=Xn(n.href),u=e.querySelector(ja(a));if(u){e=u._p,e!==null&&typeof e=="object"&&typeof e.then=="function"&&(t.count++,t=ai.bind(t),e.then(t,t)),l.state.loading|=4,l.instance=u,Qt(u);return}u=e.ownerDocument||e,n=Fd(n),(a=je.get(a))&&jf(n,a),u=u.createElement("link"),Qt(u);var s=u;s._p=new Promise(function(o,h){s.onload=o,s.onerror=h}),$t(u,"link",n),l.instance=u}t.stylesheets===null&&(t.stylesheets=new Map),t.stylesheets.set(l,e),(e=l.state.preload)&&(l.state.loading&3)===0&&(t.count++,l=ai.bind(t),e.addEventListener("load",l),e.addEventListener("error",l))}}var Bf=0;function Oy(t,e){return t.stylesheets&&t.count===0&&ii(t,t.stylesheets),0Bf?50:800)+e);return t.unsuspend=l,function(){t.unsuspend=null,clearTimeout(n),clearTimeout(a)}}:null}function ai(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)ii(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var ui=null;function ii(t,e){t.stylesheets=null,t.unsuspend!==null&&(t.count++,ui=new Map,e.forEach(Ny,t),ui=null,ai.call(t))}function Ny(t,e){if(!(e.state.loading&4)){var l=ui.get(t);if(l)var n=l.get(null);else{l=new Map,ui.set(t,l);for(var a=t.querySelectorAll("link[data-precedence],style[data-precedence]"),u=0;u"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(f){console.error(f)}}return i(),Zf.exports=Zy(),Zf.exports}var Ky=Jy();/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ky=i=>i.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),X0=(...i)=>i.filter((f,r,c)=>!!f&&f.trim()!==""&&c.indexOf(f)===r).join(" ").trim();/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */var Fy={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const $y=st.forwardRef(({color:i="currentColor",size:f=24,strokeWidth:r=2,absoluteStrokeWidth:c,className:d="",children:m,iconNode:y,...x},S)=>st.createElement("svg",{ref:S,...Fy,width:f,height:f,stroke:i,strokeWidth:c?Number(r)*24/Number(f):r,className:X0("lucide",d),...x},[...y.map(([v,N])=>st.createElement(v,N)),...Array.isArray(m)?m:[m]]));/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const oe=(i,f)=>{const r=st.forwardRef(({className:c,...d},m)=>st.createElement($y,{ref:m,iconNode:f,className:X0(`lucide-${ky(i)}`,c),...d}));return r.displayName=`${i}`,r};/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Wy=oe("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Iy=oe("CalendarClock",[["path",{d:"M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5",key:"1osxxc"}],["path",{d:"M16 2v4",key:"4m81vk"}],["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M3 10h5",key:"r794hk"}],["path",{d:"M17.5 17.5 16 16.3V14",key:"akvzfd"}],["circle",{cx:"16",cy:"16",r:"6",key:"qoo3c4"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Py=oe("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const t1=oe("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const e1=oe("DatabaseBackup",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 12a9 3 0 0 0 5 2.69",key:"1ui2ym"}],["path",{d:"M21 9.3V5",key:"6k6cib"}],["path",{d:"M3 5v14a9 3 0 0 0 6.47 2.88",key:"i62tjy"}],["path",{d:"M12 12v4h4",key:"1bxaet"}],["path",{d:"M13 20a5 5 0 0 0 9-3 4.5 4.5 0 0 0-4.5-4.5c-1.33 0-2.54.54-3.41 1.41L12 16",key:"1f4ei9"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const l1=oe("EyeOff",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const n1=oe("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const a1=oe("Play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const G0=oe("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const u1=oe("RotateCcw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const V0=oe("Save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const i1=oe("Settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Q0=oe("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const c1=oe("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);function Z0(i,f){return function(){return i.apply(f,arguments)}}const{toString:f1}=Object.prototype,{getPrototypeOf:gi}=Object,{iterator:Si,toStringTag:J0}=Symbol,xi=(i=>f=>{const r=f1.call(f);return i[r]||(i[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),Le=i=>(i=i.toLowerCase(),f=>xi(f)===i),Ei=i=>f=>typeof f===i,{isArray:Kn}=Array,Jn=Ei("undefined");function Za(i){return i!==null&&!Jn(i)&&i.constructor!==null&&!Jn(i.constructor)&&re(i.constructor.isBuffer)&&i.constructor.isBuffer(i)}const K0=Le("ArrayBuffer");function s1(i){let f;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?f=ArrayBuffer.isView(i):f=i&&i.buffer&&K0(i.buffer),f}const r1=Ei("string"),re=Ei("function"),k0=Ei("number"),Ja=i=>i!==null&&typeof i=="object",o1=i=>i===!0||i===!1,yi=i=>{if(xi(i)!=="object")return!1;const f=gi(i);return(f===null||f===Object.prototype||Object.getPrototypeOf(f)===null)&&!(J0 in i)&&!(Si in i)},d1=i=>{if(!Ja(i)||Za(i))return!1;try{return Object.keys(i).length===0&&Object.getPrototypeOf(i)===Object.prototype}catch{return!1}},m1=Le("Date"),h1=Le("File"),y1=i=>!!(i&&typeof i.uri<"u"),v1=i=>i&&typeof i.getParts<"u",p1=Le("Blob"),b1=Le("FileList"),g1=i=>Ja(i)&&re(i.pipe);function S1(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}const z0=S1(),A0=typeof z0.FormData<"u"?z0.FormData:void 0,x1=i=>{if(!i)return!1;if(A0&&i instanceof A0)return!0;const f=gi(i);if(!f||f===Object.prototype||!re(i.append))return!1;const r=xi(i);return r==="formdata"||r==="object"&&re(i.toString)&&i.toString()==="[object FormData]"},E1=Le("URLSearchParams"),[z1,A1,T1,O1]=["ReadableStream","Request","Response","Headers"].map(Le),N1=i=>i.trim?i.trim():i.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Ka(i,f,{allOwnKeys:r=!1}={}){if(i===null||typeof i>"u")return;let c,d;if(typeof i!="object"&&(i=[i]),Kn(i))for(c=0,d=i.length;c0;)if(d=r[c],f===d.toLowerCase())return d;return null}const en=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,$0=i=>!Jn(i)&&i!==en;function ts(...i){const{caseless:f,skipUndefined:r}=$0(this)&&this||{},c={},d=(m,y)=>{if(y==="__proto__"||y==="constructor"||y==="prototype")return;const x=f&&F0(c,y)||y,S=es(c,x)?c[x]:void 0;yi(S)&&yi(m)?c[x]=ts(S,m):yi(m)?c[x]=ts({},m):Kn(m)?c[x]=m.slice():(!r||!Jn(m))&&(c[x]=m)};for(let m=0,y=i.length;m(Ka(f,(d,m)=>{r&&re(d)?Object.defineProperty(i,m,{__proto__:null,value:Z0(d,r),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(i,m,{__proto__:null,value:d,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:c}),i),R1=i=>(i.charCodeAt(0)===65279&&(i=i.slice(1)),i),D1=(i,f,r,c)=>{i.prototype=Object.create(f.prototype,c),Object.defineProperty(i.prototype,"constructor",{__proto__:null,value:i,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(i,"super",{__proto__:null,value:f.prototype}),r&&Object.assign(i.prototype,r)},M1=(i,f,r,c)=>{let d,m,y;const x={};if(f=f||{},i==null)return f;do{for(d=Object.getOwnPropertyNames(i),m=d.length;m-- >0;)y=d[m],(!c||c(y,i,f))&&!x[y]&&(f[y]=i[y],x[y]=!0);i=r!==!1&&gi(i)}while(i&&(!r||r(i,f))&&i!==Object.prototype);return f},U1=(i,f,r)=>{i=String(i),(r===void 0||r>i.length)&&(r=i.length),r-=f.length;const c=i.indexOf(f,r);return c!==-1&&c===r},C1=i=>{if(!i)return null;if(Kn(i))return i;let f=i.length;if(!k0(f))return null;const r=new Array(f);for(;f-- >0;)r[f]=i[f];return r},j1=(i=>f=>i&&f instanceof i)(typeof Uint8Array<"u"&&gi(Uint8Array)),H1=(i,f)=>{const c=(i&&i[Si]).call(i);let d;for(;(d=c.next())&&!d.done;){const m=d.value;f.call(i,m[0],m[1])}},B1=(i,f)=>{let r;const c=[];for(;(r=i.exec(f))!==null;)c.push(r);return c},q1=Le("HTMLFormElement"),w1=i=>i.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(r,c,d){return c.toUpperCase()+d}),es=(({hasOwnProperty:i})=>(f,r)=>i.call(f,r))(Object.prototype),L1=Le("RegExp"),W0=(i,f)=>{const r=Object.getOwnPropertyDescriptors(i),c={};Ka(r,(d,m)=>{let y;(y=f(d,m,i))!==!1&&(c[m]=y||d)}),Object.defineProperties(i,c)},Y1=i=>{W0(i,(f,r)=>{if(re(i)&&["arguments","caller","callee"].includes(r))return!1;const c=i[r];if(re(c)){if(f.enumerable=!1,"writable"in f){f.writable=!1;return}f.set||(f.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")})}})},X1=(i,f)=>{const r={},c=d=>{d.forEach(m=>{r[m]=!0})};return Kn(i)?c(i):c(String(i).split(f)),r},G1=()=>{},V1=(i,f)=>i!=null&&Number.isFinite(i=+i)?i:f;function Q1(i){return!!(i&&re(i.append)&&i[J0]==="FormData"&&i[Si])}const Z1=i=>{const f=new WeakSet,r=c=>{if(Ja(c)){if(f.has(c))return;if(Za(c))return c;if(!("toJSON"in c)){f.add(c);const d=Kn(c)?[]:{};return Ka(c,(m,y)=>{const x=r(m);!Jn(x)&&(d[y]=x)}),f.delete(c),d}}return c};return r(i)},J1=Le("AsyncFunction"),K1=i=>i&&(Ja(i)||re(i))&&re(i.then)&&re(i.catch),I0=((i,f)=>i?setImmediate:f?((r,c)=>(en.addEventListener("message",({source:d,data:m})=>{d===en&&m===r&&c.length&&c.shift()()},!1),d=>{c.push(d),en.postMessage(r,"*")}))(`axios@${Math.random()}`,[]):r=>setTimeout(r))(typeof setImmediate=="function",re(en.postMessage)),k1=typeof queueMicrotask<"u"?queueMicrotask.bind(en):typeof process<"u"&&process.nextTick||I0,F1=i=>i!=null&&re(i[Si]),z={isArray:Kn,isArrayBuffer:K0,isBuffer:Za,isFormData:x1,isArrayBufferView:s1,isString:r1,isNumber:k0,isBoolean:o1,isObject:Ja,isPlainObject:yi,isEmptyObject:d1,isReadableStream:z1,isRequest:A1,isResponse:T1,isHeaders:O1,isUndefined:Jn,isDate:m1,isFile:h1,isReactNativeBlob:y1,isReactNative:v1,isBlob:p1,isRegExp:L1,isFunction:re,isStream:g1,isURLSearchParams:E1,isTypedArray:j1,isFileList:b1,forEach:Ka,merge:ts,extend:_1,trim:N1,stripBOM:R1,inherits:D1,toFlatObject:M1,kindOf:xi,kindOfTest:Le,endsWith:U1,toArray:C1,forEachEntry:H1,matchAll:B1,isHTMLForm:q1,hasOwnProperty:es,hasOwnProp:es,reduceDescriptors:W0,freezeMethods:Y1,toObjectSet:X1,toCamelCase:w1,noop:G1,toFiniteNumber:V1,findKey:F0,global:en,isContextDefined:$0,isSpecCompliantForm:Q1,toJSONObject:Z1,isAsyncFn:J1,isThenable:K1,setImmediate:I0,asap:k1,isIterable:F1},$1=z.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),W1=i=>{const f={};let r,c,d;return i&&i.split(` +`).forEach(function(y){d=y.indexOf(":"),r=y.substring(0,d).trim().toLowerCase(),c=y.substring(d+1).trim(),!(!r||f[r]&&$1[r])&&(r==="set-cookie"?f[r]?f[r].push(c):f[r]=[c]:f[r]=f[r]?f[r]+", "+c:c)}),f};function I1(i){let f=0,r=i.length;for(;ff;){const c=i.charCodeAt(r-1);if(c!==9&&c!==32)break;r-=1}return f===0&&r===i.length?i:i.slice(f,r)}const P1=new RegExp("[\\u0000-\\u0008\\u000a-\\u001f\\u007f]+","g"),tv=new RegExp("[^\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+","g");function is(i,f){return z.isArray(i)?i.map(r=>is(r,f)):I1(String(i).replace(f,""))}const ev=i=>is(i,P1),lv=i=>is(i,tv);function P0(i){const f=Object.create(null);return z.forEach(i.toJSON(),(r,c)=>{f[c]=lv(r)}),f}const T0=Symbol("internals");function Ga(i){return i&&String(i).trim().toLowerCase()}function vi(i){return i===!1||i==null?i:z.isArray(i)?i.map(vi):ev(String(i))}function nv(i){const f=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let c;for(;c=r.exec(i);)f[c[1]]=c[2];return f}const av=i=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(i.trim());function Ff(i,f,r,c,d){if(z.isFunction(c))return c.call(this,f,r);if(d&&(f=r),!!z.isString(f)){if(z.isString(c))return f.indexOf(c)!==-1;if(z.isRegExp(c))return c.test(f)}}function uv(i){return i.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(f,r,c)=>r.toUpperCase()+c)}function iv(i,f){const r=z.toCamelCase(" "+f);["get","set","has"].forEach(c=>{Object.defineProperty(i,c+r,{__proto__:null,value:function(d,m,y){return this[c].call(this,f,d,m,y)},configurable:!0})})}let le=class{constructor(f){f&&this.set(f)}set(f,r,c){const d=this;function m(x,S,v){const N=Ga(S);if(!N)throw new Error("header name must be a non-empty string");const C=z.findKey(d,N);(!C||d[C]===void 0||v===!0||v===void 0&&d[C]!==!1)&&(d[C||S]=vi(x))}const y=(x,S)=>z.forEach(x,(v,N)=>m(v,N,S));if(z.isPlainObject(f)||f instanceof this.constructor)y(f,r);else if(z.isString(f)&&(f=f.trim())&&!av(f))y(W1(f),r);else if(z.isObject(f)&&z.isIterable(f)){let x={},S,v;for(const N of f){if(!z.isArray(N))throw TypeError("Object iterator must return a key-value pair");x[v=N[0]]=(S=x[v])?z.isArray(S)?[...S,N[1]]:[S,N[1]]:N[1]}y(x,r)}else f!=null&&m(r,f,c);return this}get(f,r){if(f=Ga(f),f){const c=z.findKey(this,f);if(c){const d=this[c];if(!r)return d;if(r===!0)return nv(d);if(z.isFunction(r))return r.call(this,d,c);if(z.isRegExp(r))return r.exec(d);throw new TypeError("parser must be boolean|regexp|function")}}}has(f,r){if(f=Ga(f),f){const c=z.findKey(this,f);return!!(c&&this[c]!==void 0&&(!r||Ff(this,this[c],c,r)))}return!1}delete(f,r){const c=this;let d=!1;function m(y){if(y=Ga(y),y){const x=z.findKey(c,y);x&&(!r||Ff(c,c[x],x,r))&&(delete c[x],d=!0)}}return z.isArray(f)?f.forEach(m):m(f),d}clear(f){const r=Object.keys(this);let c=r.length,d=!1;for(;c--;){const m=r[c];(!f||Ff(this,this[m],m,f,!0))&&(delete this[m],d=!0)}return d}normalize(f){const r=this,c={};return z.forEach(this,(d,m)=>{const y=z.findKey(c,m);if(y){r[y]=vi(d),delete r[m];return}const x=f?uv(m):String(m).trim();x!==m&&delete r[m],r[x]=vi(d),c[x]=!0}),this}concat(...f){return this.constructor.concat(this,...f)}toJSON(f){const r=Object.create(null);return z.forEach(this,(c,d)=>{c!=null&&c!==!1&&(r[d]=f&&z.isArray(c)?c.join(", "):c)}),r}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([f,r])=>f+": "+r).join(` +`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(f){return f instanceof this?f:new this(f)}static concat(f,...r){const c=new this(f);return r.forEach(d=>c.set(d)),c}static accessor(f){const c=(this[T0]=this[T0]={accessors:{}}).accessors,d=this.prototype;function m(y){const x=Ga(y);c[x]||(iv(d,y),c[x]=!0)}return z.isArray(f)?f.forEach(m):m(f),this}};le.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);z.reduceDescriptors(le.prototype,({value:i},f)=>{let r=f[0].toUpperCase()+f.slice(1);return{get:()=>i,set(c){this[r]=c}}});z.freezeMethods(le);const cv="[REDACTED ****]";function fv(i){if(z.hasOwnProp(i,"toJSON"))return!0;let f=Object.getPrototypeOf(i);for(;f&&f!==Object.prototype;){if(z.hasOwnProp(f,"toJSON"))return!0;f=Object.getPrototypeOf(f)}return!1}function sv(i,f){const r=new Set(f.map(m=>String(m).toLowerCase())),c=[],d=m=>{if(m===null||typeof m!="object"||z.isBuffer(m))return m;if(c.indexOf(m)!==-1)return;m instanceof le&&(m=m.toJSON()),c.push(m);let y;if(z.isArray(m))y=[],m.forEach((x,S)=>{const v=d(x);z.isUndefined(v)||(y[S]=v)});else{if(!z.isPlainObject(m)&&fv(m))return c.pop(),m;y=Object.create(null);for(const[x,S]of Object.entries(m)){const v=r.has(x.toLowerCase())?cv:d(S);z.isUndefined(v)||(y[x]=v)}}return c.pop(),y};return d(i)}let Z=class tm extends Error{static from(f,r,c,d,m,y){const x=new tm(f.message,r||f.code,c,d,m);return x.cause=f,x.name=f.name,f.status!=null&&x.status==null&&(x.status=f.status),y&&Object.assign(x,y),x}constructor(f,r,c,d,m){super(f),Object.defineProperty(this,"message",{__proto__:null,value:f,enumerable:!0,writable:!0,configurable:!0}),this.name="AxiosError",this.isAxiosError=!0,r&&(this.code=r),c&&(this.config=c),d&&(this.request=d),m&&(this.response=m,this.status=m.status)}toJSON(){const f=this.config,r=f&&z.hasOwnProp(f,"redact")?f.redact:void 0,c=z.isArray(r)&&r.length>0?sv(f,r):z.toJSONObject(f);return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:c,code:this.code,status:this.status}}};Z.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE";Z.ERR_BAD_OPTION="ERR_BAD_OPTION";Z.ECONNABORTED="ECONNABORTED";Z.ETIMEDOUT="ETIMEDOUT";Z.ECONNREFUSED="ECONNREFUSED";Z.ERR_NETWORK="ERR_NETWORK";Z.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS";Z.ERR_DEPRECATED="ERR_DEPRECATED";Z.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE";Z.ERR_BAD_REQUEST="ERR_BAD_REQUEST";Z.ERR_CANCELED="ERR_CANCELED";Z.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT";Z.ERR_INVALID_URL="ERR_INVALID_URL";Z.ERR_FORM_DATA_DEPTH_EXCEEDED="ERR_FORM_DATA_DEPTH_EXCEEDED";const rv=null;function ls(i){return z.isPlainObject(i)||z.isArray(i)}function em(i){return z.endsWith(i,"[]")?i.slice(0,-2):i}function $f(i,f,r){return i?i.concat(f).map(function(d,m){return d=em(d),!r&&m?"["+d+"]":d}).join(r?".":""):f}function ov(i){return z.isArray(i)&&!i.some(ls)}const dv=z.toFlatObject(z,{},null,function(f){return/^is[A-Z]/.test(f)});function zi(i,f,r){if(!z.isObject(i))throw new TypeError("target must be an object");f=f||new FormData,r=z.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,function(R,B){return!z.isUndefined(B[R])});const c=r.metaTokens,d=r.visitor||C,m=r.dots,y=r.indexes,x=r.Blob||typeof Blob<"u"&&Blob,S=r.maxDepth===void 0?100:r.maxDepth,v=x&&z.isSpecCompliantForm(f);if(!z.isFunction(d))throw new TypeError("visitor must be a function");function N(w){if(w===null)return"";if(z.isDate(w))return w.toISOString();if(z.isBoolean(w))return w.toString();if(!v&&z.isBlob(w))throw new Z("Blob is not supported. Use a Buffer instead.");return z.isArrayBuffer(w)||z.isTypedArray(w)?v&&typeof Blob=="function"?new Blob([w]):Buffer.from(w):w}function C(w,R,B){let k=w;if(z.isReactNative(f)&&z.isReactNativeBlob(w))return f.append($f(B,R,m),N(w)),!1;if(w&&!B&&typeof w=="object"){if(z.endsWith(R,"{}"))R=c?R:R.slice(0,-2),w=JSON.stringify(w);else if(z.isArray(w)&&ov(w)||(z.isFileList(w)||z.endsWith(R,"[]"))&&(k=z.toArray(w)))return R=em(R),k.forEach(function(W,at){!(z.isUndefined(W)||W===null)&&f.append(y===!0?$f([R],at,m):y===null?R:R+"[]",N(W))}),!1}return ls(w)?!0:(f.append($f(B,R,m),N(w)),!1)}const Y=[],V=Object.assign(dv,{defaultVisitor:C,convertValue:N,isVisitable:ls});function K(w,R,B=0){if(!z.isUndefined(w)){if(B>S)throw new Z("Object is too deeply nested ("+B+" levels). Max depth: "+S,Z.ERR_FORM_DATA_DEPTH_EXCEEDED);if(Y.indexOf(w)!==-1)throw Error("Circular reference detected in "+R.join("."));Y.push(w),z.forEach(w,function(X,W){(!(z.isUndefined(X)||X===null)&&d.call(f,X,z.isString(W)?W.trim():W,R,V))===!0&&K(X,R?R.concat(W):[W],B+1)}),Y.pop()}}if(!z.isObject(i))throw new TypeError("data must be an object");return K(i),f}function O0(i){const f={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"};return encodeURIComponent(i).replace(/[!'()~]|%20/g,function(c){return f[c]})}function cs(i,f){this._pairs=[],i&&zi(i,this,f)}const lm=cs.prototype;lm.append=function(f,r){this._pairs.push([f,r])};lm.toString=function(f){const r=f?function(c){return f.call(this,c,O0)}:O0;return this._pairs.map(function(d){return r(d[0])+"="+r(d[1])},"").join("&")};function mv(i){return encodeURIComponent(i).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function nm(i,f,r){if(!f)return i;const c=r&&r.encode||mv,d=z.isFunction(r)?{serialize:r}:r,m=d&&d.serialize;let y;if(m?y=m(f,d):y=z.isURLSearchParams(f)?f.toString():new cs(f,d).toString(c),y){const x=i.indexOf("#");x!==-1&&(i=i.slice(0,x)),i+=(i.indexOf("?")===-1?"?":"&")+y}return i}class N0{constructor(){this.handlers=[]}use(f,r,c){return this.handlers.push({fulfilled:f,rejected:r,synchronous:c?c.synchronous:!1,runWhen:c?c.runWhen:null}),this.handlers.length-1}eject(f){this.handlers[f]&&(this.handlers[f]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(f){z.forEach(this.handlers,function(c){c!==null&&f(c)})}}const fs={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0},hv=typeof URLSearchParams<"u"?URLSearchParams:cs,yv=typeof FormData<"u"?FormData:null,vv=typeof Blob<"u"?Blob:null,pv={isBrowser:!0,classes:{URLSearchParams:hv,FormData:yv,Blob:vv},protocols:["http","https","file","blob","url","data"]},ss=typeof window<"u"&&typeof document<"u",ns=typeof navigator=="object"&&navigator||void 0,bv=ss&&(!ns||["ReactNative","NativeScript","NS"].indexOf(ns.product)<0),gv=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",Sv=ss&&window.location.href||"http://localhost",xv=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:ss,hasStandardBrowserEnv:bv,hasStandardBrowserWebWorkerEnv:gv,navigator:ns,origin:Sv},Symbol.toStringTag,{value:"Module"})),It={...xv,...pv};function Ev(i,f){return zi(i,new It.classes.URLSearchParams,{visitor:function(r,c,d,m){return It.isNode&&z.isBuffer(r)?(this.append(c,r.toString("base64")),!1):m.defaultVisitor.apply(this,arguments)},...f})}function zv(i){return z.matchAll(/\w+|\[(\w*)]/g,i).map(f=>f[0]==="[]"?"":f[1]||f[0])}function Av(i){const f={},r=Object.keys(i);let c;const d=r.length;let m;for(c=0;c=r.length;return y=!y&&z.isArray(d)?d.length:y,S?(z.hasOwnProp(d,y)?d[y]=z.isArray(d[y])?d[y].concat(c):[d[y],c]:d[y]=c,!x):((!z.hasOwnProp(d,y)||!z.isObject(d[y]))&&(d[y]=[]),f(r,c,d[y],m)&&z.isArray(d[y])&&(d[y]=Av(d[y])),!x)}if(z.isFormData(i)&&z.isFunction(i.entries)){const r={};return z.forEachEntry(i,(c,d)=>{f(zv(c),d,r,0)}),r}return null}const Qn=(i,f)=>i!=null&&z.hasOwnProp(i,f)?i[f]:void 0;function Tv(i,f,r){if(z.isString(i))try{return(f||JSON.parse)(i),z.trim(i)}catch(c){if(c.name!=="SyntaxError")throw c}return(r||JSON.stringify)(i)}const ka={transitional:fs,adapter:["xhr","http","fetch"],transformRequest:[function(f,r){const c=r.getContentType()||"",d=c.indexOf("application/json")>-1,m=z.isObject(f);if(m&&z.isHTMLForm(f)&&(f=new FormData(f)),z.isFormData(f))return d?JSON.stringify(am(f)):f;if(z.isArrayBuffer(f)||z.isBuffer(f)||z.isStream(f)||z.isFile(f)||z.isBlob(f)||z.isReadableStream(f))return f;if(z.isArrayBufferView(f))return f.buffer;if(z.isURLSearchParams(f))return r.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),f.toString();let x;if(m){const S=Qn(this,"formSerializer");if(c.indexOf("application/x-www-form-urlencoded")>-1)return Ev(f,S).toString();if((x=z.isFileList(f))||c.indexOf("multipart/form-data")>-1){const v=Qn(this,"env"),N=v&&v.FormData;return zi(x?{"files[]":f}:f,N&&new N,S)}}return m||d?(r.setContentType("application/json",!1),Tv(f)):f}],transformResponse:[function(f){const r=Qn(this,"transitional")||ka.transitional,c=r&&r.forcedJSONParsing,d=Qn(this,"responseType"),m=d==="json";if(z.isResponse(f)||z.isReadableStream(f))return f;if(f&&z.isString(f)&&(c&&!d||m)){const x=!(r&&r.silentJSONParsing)&&m;try{return JSON.parse(f,Qn(this,"parseReviver"))}catch(S){if(x)throw S.name==="SyntaxError"?Z.from(S,Z.ERR_BAD_RESPONSE,this,null,Qn(this,"response")):S}}return f}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:It.classes.FormData,Blob:It.classes.Blob},validateStatus:function(f){return f>=200&&f<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};z.forEach(["delete","get","head","post","put","patch","query"],i=>{ka.headers[i]={}});function Wf(i,f){const r=this||ka,c=f||r,d=le.from(c.headers);let m=c.data;return z.forEach(i,function(x){m=x.call(r,m,d.normalize(),f?f.status:void 0)}),d.normalize(),m}function um(i){return!!(i&&i.__CANCEL__)}let Fa=class extends Z{constructor(f,r,c){super(f??"canceled",Z.ERR_CANCELED,r,c),this.name="CanceledError",this.__CANCEL__=!0}};function im(i,f,r){const c=r.config.validateStatus;!r.status||!c||c(r.status)?i(r):f(new Z("Request failed with status code "+r.status,r.status>=400&&r.status<500?Z.ERR_BAD_REQUEST:Z.ERR_BAD_RESPONSE,r.config,r.request,r))}function Ov(i){const f=/^([-+\w]{1,25}):(?:\/\/)?/.exec(i);return f&&f[1]||""}function Nv(i,f){i=i||10;const r=new Array(i),c=new Array(i);let d=0,m=0,y;return f=f!==void 0?f:1e3,function(S){const v=Date.now(),N=c[m];y||(y=v),r[d]=S,c[d]=v;let C=m,Y=0;for(;C!==d;)Y+=r[C++],C=C%i;if(d=(d+1)%i,d===m&&(m=(m+1)%i),v-y{r=N,d=null,m&&(clearTimeout(m),m=null),i(...v)};return[(...v)=>{const N=Date.now(),C=N-r;C>=c?y(v,N):(d=v,m||(m=setTimeout(()=>{m=null,y(d)},c-C)))},()=>d&&y(d)]}const bi=(i,f,r=3)=>{let c=0;const d=Nv(50,250);return _v(m=>{if(!m||typeof m.loaded!="number")return;const y=m.loaded,x=m.lengthComputable?m.total:void 0,S=x!=null?Math.min(y,x):y,v=Math.max(0,S-c),N=d(v);c=Math.max(c,S);const C={loaded:S,total:x,progress:x?S/x:void 0,bytes:v,rate:N||void 0,estimated:N&&x?(x-S)/N:void 0,event:m,lengthComputable:x!=null,[f?"download":"upload"]:!0};i(C)},r)},_0=(i,f)=>{const r=i!=null;return[c=>f[0]({lengthComputable:r,total:i,loaded:c}),f[1]]},R0=i=>(...f)=>z.asap(()=>i(...f)),Rv=It.hasStandardBrowserEnv?((i,f)=>r=>(r=new URL(r,It.origin),i.protocol===r.protocol&&i.host===r.host&&(f||i.port===r.port)))(new URL(It.origin),It.navigator&&/(msie|trident)/i.test(It.navigator.userAgent)):()=>!0,Dv=It.hasStandardBrowserEnv?{write(i,f,r,c,d,m,y){if(typeof document>"u")return;const x=[`${i}=${encodeURIComponent(f)}`];z.isNumber(r)&&x.push(`expires=${new Date(r).toUTCString()}`),z.isString(c)&&x.push(`path=${c}`),z.isString(d)&&x.push(`domain=${d}`),m===!0&&x.push("secure"),z.isString(y)&&x.push(`SameSite=${y}`),document.cookie=x.join("; ")},read(i){if(typeof document>"u")return null;const f=document.cookie.split(";");for(let r=0;ri instanceof le?{...i}:i;function nn(i,f){f=f||{};const r=Object.create(null);Object.defineProperty(r,"hasOwnProperty",{__proto__:null,value:Object.prototype.hasOwnProperty,enumerable:!1,writable:!0,configurable:!0});function c(v,N,C,Y){return z.isPlainObject(v)&&z.isPlainObject(N)?z.merge.call({caseless:Y},v,N):z.isPlainObject(N)?z.merge({},N):z.isArray(N)?N.slice():N}function d(v,N,C,Y){if(z.isUndefined(N)){if(!z.isUndefined(v))return c(void 0,v,C,Y)}else return c(v,N,C,Y)}function m(v,N){if(!z.isUndefined(N))return c(void 0,N)}function y(v,N){if(z.isUndefined(N)){if(!z.isUndefined(v))return c(void 0,v)}else return c(void 0,N)}function x(v,N,C){if(z.hasOwnProp(f,C))return c(v,N);if(z.hasOwnProp(i,C))return c(void 0,v)}const S={url:m,method:m,data:m,baseURL:y,transformRequest:y,transformResponse:y,paramsSerializer:y,timeout:y,timeoutMessage:y,withCredentials:y,withXSRFToken:y,adapter:y,responseType:y,xsrfCookieName:y,xsrfHeaderName:y,onUploadProgress:y,onDownloadProgress:y,decompress:y,maxContentLength:y,maxBodyLength:y,beforeRedirect:y,transport:y,httpAgent:y,httpsAgent:y,cancelToken:y,socketPath:y,allowedSocketPaths:y,responseEncoding:y,validateStatus:x,headers:(v,N,C)=>d(D0(v),D0(N),C,!0)};return z.forEach(Object.keys({...i,...f}),function(N){if(N==="__proto__"||N==="constructor"||N==="prototype")return;const C=z.hasOwnProp(S,N)?S[N]:d,Y=z.hasOwnProp(i,N)?i[N]:void 0,V=z.hasOwnProp(f,N)?f[N]:void 0,K=C(Y,V,N);z.isUndefined(K)&&C!==x||(r[N]=K)}),r}const Cv=["content-type","content-length"];function jv(i,f,r){if(r!=="content-only"){i.set(f);return}Object.entries(f).forEach(([c,d])=>{Cv.includes(c.toLowerCase())&&i.set(c,d)})}const Hv=i=>encodeURIComponent(i).replace(/%([0-9A-F]{2})/gi,(f,r)=>String.fromCharCode(parseInt(r,16))),fm=i=>{const f=nn({},i),r=Y=>z.hasOwnProp(f,Y)?f[Y]:void 0,c=r("data");let d=r("withXSRFToken");const m=r("xsrfHeaderName"),y=r("xsrfCookieName");let x=r("headers");const S=r("auth"),v=r("baseURL"),N=r("allowAbsoluteUrls"),C=r("url");if(f.headers=x=le.from(x),f.url=nm(cm(v,C,N),i.params,i.paramsSerializer),S&&x.set("Authorization","Basic "+btoa((S.username||"")+":"+(S.password?Hv(S.password):""))),z.isFormData(c)&&(It.hasStandardBrowserEnv||It.hasStandardBrowserWebWorkerEnv?x.setContentType(void 0):z.isFunction(c.getHeaders)&&jv(x,c.getHeaders(),r("formDataHeaderPolicy"))),It.hasStandardBrowserEnv&&(z.isFunction(d)&&(d=d(f)),d===!0||d==null&&Rv(f.url))){const V=m&&y&&Dv.read(y);V&&x.set(m,V)}return f},Bv=typeof XMLHttpRequest<"u",qv=Bv&&function(i){return new Promise(function(r,c){const d=fm(i);let m=d.data;const y=le.from(d.headers).normalize();let{responseType:x,onUploadProgress:S,onDownloadProgress:v}=d,N,C,Y,V,K;function w(){V&&V(),K&&K(),d.cancelToken&&d.cancelToken.unsubscribe(N),d.signal&&d.signal.removeEventListener("abort",N)}let R=new XMLHttpRequest;R.open(d.method.toUpperCase(),d.url,!0),R.timeout=d.timeout;function B(){if(!R)return;const X=le.from("getAllResponseHeaders"in R&&R.getAllResponseHeaders()),at={data:!x||x==="text"||x==="json"?R.responseText:R.response,status:R.status,statusText:R.statusText,headers:X,config:i,request:R};im(function(tt){r(tt),w()},function(tt){c(tt),w()},at),R=null}"onloadend"in R?R.onloadend=B:R.onreadystatechange=function(){!R||R.readyState!==4||R.status===0&&!(R.responseURL&&R.responseURL.startsWith("file:"))||setTimeout(B)},R.onabort=function(){R&&(c(new Z("Request aborted",Z.ECONNABORTED,i,R)),w(),R=null)},R.onerror=function(W){const at=W&&W.message?W.message:"Network Error",Ot=new Z(at,Z.ERR_NETWORK,i,R);Ot.event=W||null,c(Ot),w(),R=null},R.ontimeout=function(){let W=d.timeout?"timeout of "+d.timeout+"ms exceeded":"timeout exceeded";const at=d.transitional||fs;d.timeoutErrorMessage&&(W=d.timeoutErrorMessage),c(new Z(W,at.clarifyTimeoutError?Z.ETIMEDOUT:Z.ECONNABORTED,i,R)),w(),R=null},m===void 0&&y.setContentType(null),"setRequestHeader"in R&&z.forEach(P0(y),function(W,at){R.setRequestHeader(at,W)}),z.isUndefined(d.withCredentials)||(R.withCredentials=!!d.withCredentials),x&&x!=="json"&&(R.responseType=d.responseType),v&&([Y,K]=bi(v,!0),R.addEventListener("progress",Y)),S&&R.upload&&([C,V]=bi(S),R.upload.addEventListener("progress",C),R.upload.addEventListener("loadend",V)),(d.cancelToken||d.signal)&&(N=X=>{R&&(c(!X||X.type?new Fa(null,i,R):X),R.abort(),w(),R=null)},d.cancelToken&&d.cancelToken.subscribe(N),d.signal&&(d.signal.aborted?N():d.signal.addEventListener("abort",N)));const k=Ov(d.url);if(k&&!It.protocols.includes(k)){c(new Z("Unsupported protocol "+k+":",Z.ERR_BAD_REQUEST,i));return}R.send(m||null)})},wv=(i,f)=>{if(i=i?i.filter(Boolean):[],!f&&!i.length)return;const r=new AbortController;let c=!1;const d=function(S){if(!c){c=!0,y();const v=S instanceof Error?S:this.reason;r.abort(v instanceof Z?v:new Fa(v instanceof Error?v.message:v))}};let m=f&&setTimeout(()=>{m=null,d(new Z(`timeout of ${f}ms exceeded`,Z.ETIMEDOUT))},f);const y=()=>{i&&(m&&clearTimeout(m),m=null,i.forEach(S=>{S.unsubscribe?S.unsubscribe(d):S.removeEventListener("abort",d)}),i=null)};i.forEach(S=>S.addEventListener("abort",d));const{signal:x}=r;return x.unsubscribe=()=>z.asap(y),x},Lv=function*(i,f){let r=i.byteLength;if(r{const d=Yv(i,f);let m=0,y,x=S=>{y||(y=!0,c&&c(S))};return new ReadableStream({async pull(S){try{const{done:v,value:N}=await d.next();if(v){x(),S.close();return}let C=N.byteLength;if(r){let Y=m+=C;r(Y)}S.enqueue(new Uint8Array(N))}catch(v){throw x(v),v}},cancel(S){return x(S),d.return()}},{highWaterMark:2})};function Gv(i){if(!i||typeof i!="string"||!i.startsWith("data:"))return 0;const f=i.indexOf(",");if(f<0)return 0;const r=i.slice(5,f),c=i.slice(f+1);if(/;base64/i.test(r)){let y=c.length;const x=c.length;for(let V=0;V=48&&K<=57||K>=65&&K<=70||K>=97&&K<=102)&&(w>=48&&w<=57||w>=65&&w<=70||w>=97&&w<=102)&&(y-=2,V+=2)}let S=0,v=x-1;const N=V=>V>=2&&c.charCodeAt(V-2)===37&&c.charCodeAt(V-1)===51&&(c.charCodeAt(V)===68||c.charCodeAt(V)===100);v>=0&&(c.charCodeAt(v)===61?(S++,v--):N(v)&&(S++,v-=3)),S===1&&v>=0&&(c.charCodeAt(v)===61||N(v))&&S++;const Y=Math.floor(y/4)*3-(S||0);return Y>0?Y:0}if(typeof Buffer<"u"&&typeof Buffer.byteLength=="function")return Buffer.byteLength(c,"utf8");let m=0;for(let y=0,x=c.length;y=55296&&S<=56319&&y+1=56320&&v<=57343?(m+=4,y++):m+=3}else m+=3}return m}const rs="1.16.1",U0=64*1024,{isFunction:hi}=z,C0=(i,...f)=>{try{return!!i(...f)}catch{return!1}},Vv=i=>{const f=z.global!==void 0&&z.global!==null?z.global:globalThis,{ReadableStream:r,TextEncoder:c}=f;i=z.merge.call({skipUndefined:!0},{Request:f.Request,Response:f.Response},i);const{fetch:d,Request:m,Response:y}=i,x=d?hi(d):typeof fetch=="function",S=hi(m),v=hi(y);if(!x)return!1;const N=x&&hi(r),C=x&&(typeof c=="function"?(B=>k=>B.encode(k))(new c):async B=>new Uint8Array(await new m(B).arrayBuffer())),Y=S&&N&&C0(()=>{let B=!1;const k=new m(It.origin,{body:new r,method:"POST",get duplex(){return B=!0,"half"}}),X=k.headers.has("Content-Type");return k.body!=null&&k.body.cancel(),B&&!X}),V=v&&N&&C0(()=>z.isReadableStream(new y("").body)),K={stream:V&&(B=>B.body)};x&&["text","arrayBuffer","blob","formData","stream"].forEach(B=>{!K[B]&&(K[B]=(k,X)=>{let W=k&&k[B];if(W)return W.call(k);throw new Z(`Response type '${B}' is not supported`,Z.ERR_NOT_SUPPORT,X)})});const w=async B=>{if(B==null)return 0;if(z.isBlob(B))return B.size;if(z.isSpecCompliantForm(B))return(await new m(It.origin,{method:"POST",body:B}).arrayBuffer()).byteLength;if(z.isArrayBufferView(B)||z.isArrayBuffer(B))return B.byteLength;if(z.isURLSearchParams(B)&&(B=B+""),z.isString(B))return(await C(B)).byteLength},R=async(B,k)=>{const X=z.toFiniteNumber(B.getContentLength());return X??w(k)};return async B=>{let{url:k,method:X,data:W,signal:at,cancelToken:Ot,timeout:tt,onDownloadProgress:Ht,onUploadProgress:de,responseType:Pt,headers:Vt,withCredentials:Xt="same-origin",fetchOptions:Ye,maxContentLength:Bt,maxBodyLength:te}=fm(B);const D=z.isNumber(Bt)&&Bt>-1,L=z.isNumber(te)&&te>-1;let I=d||fetch;Pt=Pt?(Pt+"").toLowerCase():"text";let rt=wv([at,Ot&&Ot.toAbortSignal()],tt),ct=null;const b=rt&&rt.unsubscribe&&(()=>{rt.unsubscribe()});let H;try{if(D&&typeof k=="string"&&k.startsWith("data:")&&Gv(k)>Bt)throw new Z("maxContentLength size of "+Bt+" exceeded",Z.ERR_BAD_RESPONSE,B,ct);if(L&&X!=="get"&&X!=="head"){const lt=await R(Vt,W);if(typeof lt=="number"&&isFinite(lt)&<>te)throw new Z("Request body larger than maxBodyLength limit",Z.ERR_BAD_REQUEST,B,ct)}if(de&&Y&&X!=="get"&&X!=="head"&&(H=await R(Vt,W))!==0){let lt=new m(k,{method:"POST",body:W,duplex:"half"}),xt;if(z.isFormData(W)&&(xt=lt.headers.get("content-type"))&&Vt.setContentType(xt),lt.body){const[Xe,Je]=_0(H,bi(R0(de)));W=M0(lt.body,U0,Xe,Je)}}z.isString(Xt)||(Xt=Xt?"include":"omit");const q=S&&"credentials"in m.prototype;if(z.isFormData(W)){const lt=Vt.getContentType();lt&&/^multipart\/form-data/i.test(lt)&&!/boundary=/i.test(lt)&&Vt.delete("content-type")}Vt.set("User-Agent","axios/"+rs,!1);const G={...Ye,signal:rt,method:X.toUpperCase(),headers:P0(Vt.normalize()),body:W,duplex:"half",credentials:q?Xt:void 0};ct=S&&new m(k,G);let $=await(S?I(ct,Ye):I(k,G));if(D){const lt=z.toFiniteNumber($.headers.get("content-length"));if(lt!=null&<>Bt)throw new Z("maxContentLength size of "+Bt+" exceeded",Z.ERR_BAD_RESPONSE,B,ct)}const ut=V&&(Pt==="stream"||Pt==="response");if(V&&$.body&&(Ht||D||ut&&b)){const lt={};["status","statusText","headers"].forEach(me=>{lt[me]=$[me]});const xt=z.toFiniteNumber($.headers.get("content-length")),[Xe,Je]=Ht&&_0(xt,bi(R0(Ht),!0))||[];let an=0;const $a=me=>{if(D&&(an=me,an>Bt))throw new Z("maxContentLength size of "+Bt+" exceeded",Z.ERR_BAD_RESPONSE,B,ct);Xe&&Xe(me)};$=new y(M0($.body,U0,$a,()=>{Je&&Je(),b&&b()}),lt)}Pt=Pt||"text";let ft=await K[z.findKey(K,Pt)||"text"]($,B);if(D&&!V&&!ut){let lt;if(ft!=null&&(typeof ft.byteLength=="number"?lt=ft.byteLength:typeof ft.size=="number"?lt=ft.size:typeof ft=="string"&&(lt=typeof c=="function"?new c().encode(ft).byteLength:ft.length)),typeof lt=="number"&<>Bt)throw new Z("maxContentLength size of "+Bt+" exceeded",Z.ERR_BAD_RESPONSE,B,ct)}return!ut&&b&&b(),await new Promise((lt,xt)=>{im(lt,xt,{data:ft,headers:le.from($.headers),status:$.status,statusText:$.statusText,config:B,request:ct})})}catch(q){if(b&&b(),rt&&rt.aborted&&rt.reason instanceof Z){const G=rt.reason;throw G.config=B,ct&&(G.request=ct),q!==G&&(G.cause=q),G}throw q&&q.name==="TypeError"&&/Load failed|fetch/i.test(q.message)?Object.assign(new Z("Network Error",Z.ERR_NETWORK,B,ct,q&&q.response),{cause:q.cause||q}):Z.from(q,q&&q.code,B,ct,q&&q.response)}}},Qv=new Map,sm=i=>{let f=i&&i.env||{};const{fetch:r,Request:c,Response:d}=f,m=[c,d,r];let y=m.length,x=y,S,v,N=Qv;for(;x--;)S=m[x],v=N.get(S),v===void 0&&N.set(S,v=x?new Map:Vv(f)),N=v;return v};sm();const os={http:rv,xhr:qv,fetch:{get:sm}};z.forEach(os,(i,f)=>{if(i){try{Object.defineProperty(i,"name",{__proto__:null,value:f})}catch{}Object.defineProperty(i,"adapterName",{__proto__:null,value:f})}});const j0=i=>`- ${i}`,Zv=i=>z.isFunction(i)||i===null||i===!1;function Jv(i,f){i=z.isArray(i)?i:[i];const{length:r}=i;let c,d;const m={};for(let y=0;y`adapter ${S} `+(v===!1?"is not supported by the environment":"is not available in the build"));let x=r?y.length>1?`since : +`+y.map(j0).join(` +`):" "+j0(y[0]):"as no adapter specified";throw new Z("There is no suitable adapter to dispatch the request "+x,"ERR_NOT_SUPPORT")}return d}const rm={getAdapter:Jv,adapters:os};function If(i){if(i.cancelToken&&i.cancelToken.throwIfRequested(),i.signal&&i.signal.aborted)throw new Fa(null,i)}function H0(i){return If(i),i.headers=le.from(i.headers),i.data=Wf.call(i,i.transformRequest),["post","put","patch"].indexOf(i.method)!==-1&&i.headers.setContentType("application/x-www-form-urlencoded",!1),rm.getAdapter(i.adapter||ka.adapter,i)(i).then(function(c){If(i),i.response=c;try{c.data=Wf.call(i,i.transformResponse,c)}finally{delete i.response}return c.headers=le.from(c.headers),c},function(c){if(!um(c)&&(If(i),c&&c.response)){i.response=c.response;try{c.response.data=Wf.call(i,i.transformResponse,c.response)}finally{delete i.response}c.response.headers=le.from(c.response.headers)}return Promise.reject(c)})}const Ai={};["object","boolean","number","function","string","symbol"].forEach((i,f)=>{Ai[i]=function(c){return typeof c===i||"a"+(f<1?"n ":" ")+i}});const B0={};Ai.transitional=function(f,r,c){function d(m,y){return"[Axios v"+rs+"] Transitional option '"+m+"'"+y+(c?". "+c:"")}return(m,y,x)=>{if(f===!1)throw new Z(d(y," has been removed"+(r?" in "+r:"")),Z.ERR_DEPRECATED);return r&&!B0[y]&&(B0[y]=!0,console.warn(d(y," has been deprecated since v"+r+" and will be removed in the near future"))),f?f(m,y,x):!0}};Ai.spelling=function(f){return(r,c)=>(console.warn(`${c} is likely a misspelling of ${f}`),!0)};function Kv(i,f,r){if(typeof i!="object")throw new Z("options must be an object",Z.ERR_BAD_OPTION_VALUE);const c=Object.keys(i);let d=c.length;for(;d-- >0;){const m=c[d],y=Object.prototype.hasOwnProperty.call(f,m)?f[m]:void 0;if(y){const x=i[m],S=x===void 0||y(x,m,i);if(S!==!0)throw new Z("option "+m+" must be "+S,Z.ERR_BAD_OPTION_VALUE);continue}if(r!==!0)throw new Z("Unknown option "+m,Z.ERR_BAD_OPTION)}}const pi={assertOptions:Kv,validators:Ai},He=pi.validators;let ln=class{constructor(f){this.defaults=f||{},this.interceptors={request:new N0,response:new N0}}async request(f,r){try{return await this._request(f,r)}catch(c){if(c instanceof Error){let d={};Error.captureStackTrace?Error.captureStackTrace(d):d=new Error;const m=(()=>{if(!d.stack)return"";const y=d.stack.indexOf(` +`);return y===-1?"":d.stack.slice(y+1)})();try{if(!c.stack)c.stack=m;else if(m){const y=m.indexOf(` +`),x=y===-1?-1:m.indexOf(` +`,y+1),S=x===-1?"":m.slice(x+1);String(c.stack).endsWith(S)||(c.stack+=` +`+m)}}catch{}}throw c}}_request(f,r){typeof f=="string"?(r=r||{},r.url=f):r=f||{},r=nn(this.defaults,r);const{transitional:c,paramsSerializer:d,headers:m}=r;c!==void 0&&pi.assertOptions(c,{silentJSONParsing:He.transitional(He.boolean),forcedJSONParsing:He.transitional(He.boolean),clarifyTimeoutError:He.transitional(He.boolean),legacyInterceptorReqResOrdering:He.transitional(He.boolean)},!1),d!=null&&(z.isFunction(d)?r.paramsSerializer={serialize:d}:pi.assertOptions(d,{encode:He.function,serialize:He.function},!0)),r.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?r.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:r.allowAbsoluteUrls=!0),pi.assertOptions(r,{baseUrl:He.spelling("baseURL"),withXsrfToken:He.spelling("withXSRFToken")},!0),r.method=(r.method||this.defaults.method||"get").toLowerCase();let y=m&&z.merge(m.common,m[r.method]);m&&z.forEach(["delete","get","head","post","put","patch","query","common"],K=>{delete m[K]}),r.headers=le.concat(y,m);const x=[];let S=!0;this.interceptors.request.forEach(function(w){if(typeof w.runWhen=="function"&&w.runWhen(r)===!1)return;S=S&&w.synchronous;const R=r.transitional||fs;R&&R.legacyInterceptorReqResOrdering?x.unshift(w.fulfilled,w.rejected):x.push(w.fulfilled,w.rejected)});const v=[];this.interceptors.response.forEach(function(w){v.push(w.fulfilled,w.rejected)});let N,C=0,Y;if(!S){const K=[H0.bind(this),void 0];for(K.unshift(...x),K.push(...v),Y=K.length,N=Promise.resolve(r);C{if(!c._listeners)return;let m=c._listeners.length;for(;m-- >0;)c._listeners[m](d);c._listeners=null}),this.promise.then=d=>{let m;const y=new Promise(x=>{c.subscribe(x),m=x}).then(d);return y.cancel=function(){c.unsubscribe(m)},y},f(function(m,y,x){c.reason||(c.reason=new Fa(m,y,x),r(c.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(f){if(this.reason){f(this.reason);return}this._listeners?this._listeners.push(f):this._listeners=[f]}unsubscribe(f){if(!this._listeners)return;const r=this._listeners.indexOf(f);r!==-1&&this._listeners.splice(r,1)}toAbortSignal(){const f=new AbortController,r=c=>{f.abort(c)};return this.subscribe(r),f.signal.unsubscribe=()=>this.unsubscribe(r),f.signal}static source(){let f;return{token:new om(function(d){f=d}),cancel:f}}};function Fv(i){return function(r){return i.apply(null,r)}}function $v(i){return z.isObject(i)&&i.isAxiosError===!0}const as={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(as).forEach(([i,f])=>{as[f]=i});function dm(i){const f=new ln(i),r=Z0(ln.prototype.request,f);return z.extend(r,ln.prototype,f,{allOwnKeys:!0}),z.extend(r,f,null,{allOwnKeys:!0}),r.create=function(d){return dm(nn(i,d))},r}const jt=dm(ka);jt.Axios=ln;jt.CanceledError=Fa;jt.CancelToken=kv;jt.isCancel=um;jt.VERSION=rs;jt.toFormData=zi;jt.AxiosError=Z;jt.Cancel=jt.CanceledError;jt.all=function(f){return Promise.all(f)};jt.spread=Fv;jt.isAxiosError=$v;jt.mergeConfig=nn;jt.AxiosHeaders=le;jt.formToJSON=i=>am(z.isHTMLForm(i)?new FormData(i):i);jt.getAdapter=rm.getAdapter;jt.HttpStatusCode=as;jt.default=jt;const{Axios:hp,AxiosError:yp,CanceledError:vp,isCancel:pp,CancelToken:bp,VERSION:gp,all:Sp,Cancel:xp,isAxiosError:Ep,spread:zp,toFormData:Ap,AxiosHeaders:Tp,HttpStatusCode:Op,formToJSON:Np,getAdapter:_p,mergeConfig:Rp,create:Dp}=jt,Ae=jt.create({baseURL:"http://localhost:3000/api",timeout:15e3}),q0=window.localStorage.getItem("incusBackupApiToken")||void 0;q0&&(Ae.defaults.headers.common.Authorization=`Bearer ${q0}`);function Wv(i){const f=String(i||"");if(f){window.localStorage.setItem("incusBackupApiToken",f),Ae.defaults.headers.common.Authorization=`Bearer ${f}`;return}window.localStorage.removeItem("incusBackupApiToken"),delete Ae.defaults.headers.common.Authorization}function Bl(i){var f,r;return((r=(f=i.response)==null?void 0:f.data)==null?void 0:r.error)||i.message||"Request failed."}function Va({label:i,value:f,tone:r="neutral"}){const c={neutral:"text-zinc-100",good:"text-emerald-300",warn:"text-amber-300",bad:"text-red-300",active:"text-cyan-300"};return p.jsxs("div",{className:"rounded-md border border-zinc-800 bg-zinc-900/70 p-4",children:[p.jsx("div",{className:"text-xs uppercase tracking-wide text-zinc-500",children:i}),p.jsx("div",{className:`mt-2 text-2xl font-semibold ${c[r]}`,children:f})]})}function Iv({health:i,jobs:f,loading:r,onManage:c,vms:d}){const m=f.filter(S=>["queued","running"].includes(S.status)),y=d.filter(S=>S.status==="Running"),x=f.find(S=>S.status==="success");return p.jsxs("section",{className:"space-y-5",children:[p.jsxs("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-5",children:[p.jsx(Va,{label:"Total VMs",value:r?"...":d.length}),p.jsx(Va,{label:"Running VMs",value:y.length,tone:"good"}),p.jsx(Va,{label:"Active Jobs",value:m.length,tone:m.length?"active":"neutral"}),p.jsx(Va,{label:"Last Success",value:x?Pv(x.finishedAt):"None",tone:"good"}),p.jsx(Va,{label:"Repository",value:i!=null&&i.ok?"Ready":"Check",tone:i!=null&&i.ok?"good":"warn"})]}),p.jsxs("div",{className:"overflow-hidden rounded-md border border-zinc-800 bg-zinc-900/70",children:[p.jsxs("div",{className:"flex items-center justify-between border-b border-zinc-800 px-4 py-3",children:[p.jsx("h1",{className:"text-sm font-semibold text-zinc-100",children:"VM Backup Status"}),p.jsx("span",{className:"text-xs text-zinc-500",children:tp(i)})]}),p.jsx("div",{className:"overflow-x-auto",children:p.jsxs("table",{className:"w-full min-w-[760px] text-left text-sm",children:[p.jsx("thead",{className:"border-b border-zinc-800 text-xs uppercase tracking-wide text-zinc-500",children:p.jsxs("tr",{children:[p.jsx("th",{className:"px-4 py-3 font-medium",children:"VM"}),p.jsx("th",{className:"px-4 py-3 font-medium",children:"Incus"}),p.jsx("th",{className:"px-4 py-3 font-medium",children:"Last Job"}),p.jsx("th",{className:"px-4 py-3 font-medium",children:"Active Job"}),p.jsx("th",{className:"px-4 py-3 text-right font-medium",children:"Actions"})]})}),p.jsxs("tbody",{className:"divide-y divide-zinc-800",children:[d.map(S=>{var v,N;return p.jsxs("tr",{className:"hover:bg-zinc-900",children:[p.jsx("td",{className:"px-4 py-3 font-medium text-zinc-100",children:S.name}),p.jsx("td",{className:"px-4 py-3",children:p.jsxs("span",{className:"inline-flex items-center gap-2 text-zinc-300",children:[p.jsx(t1,{className:`h-2.5 w-2.5 fill-current ${S.status==="Running"?"text-emerald-400":"text-red-400"}`}),S.status||"Unknown"]})}),p.jsx("td",{className:"px-4 py-3 text-zinc-300",children:S.lastJobStatus||"None"}),p.jsx("td",{className:"px-4 py-3 text-zinc-400",children:S.activeJob?p.jsxs("div",{className:"min-w-0",children:[p.jsxs("div",{className:"flex items-center justify-between gap-2",children:[p.jsx("span",{className:"truncate",children:S.activeJob.currentStep}),p.jsxs("span",{className:"font-mono text-xs text-zinc-500",children:[Math.round(((v=S.activeJob.progress)==null?void 0:v.percent)||0),"%"]})]}),p.jsx("div",{className:"mt-2 h-1.5 overflow-hidden rounded-md bg-zinc-800",children:p.jsx("div",{className:"h-full bg-cyan-400",style:{width:`${Math.round(((N=S.activeJob.progress)==null?void 0:N.percent)||0)}%`}})})]}):"Idle"}),p.jsx("td",{className:"px-4 py-3 text-right",children:p.jsxs("button",{className:"inline-flex h-8 items-center gap-1 rounded-md border border-zinc-700 px-2.5 text-xs text-zinc-100 hover:border-cyan-500 hover:text-cyan-200",onClick:()=>c(S.name),type:"button",children:["Manage ",p.jsx(Py,{className:"h-4 w-4"})]})})]},S.name)}),d.length?null:p.jsx("tr",{children:p.jsx("td",{className:"px-4 py-8 text-center text-zinc-500",colSpan:"5",children:"No VMs loaded."})})]})]})})]})]})}function Pv(i){return i?new Intl.DateTimeFormat(void 0,{dateStyle:"short",timeStyle:"short"}).format(new Date(i)):"None"}function tp(i){return i?i.ok?"All checks ok":Object.entries(i.checks||{}).filter(([,f])=>f!=="ok").map(([f])=>f).join(", ")||"Health degraded":"Health loading"}function ep({onChanged:i,schedules:f,vms:r}){const[c,d]=st.useState(()=>Qa(r,f)),[m,y]=st.useState(!1),[x,S]=st.useState(!1),[v,N]=st.useState(""),[C,Y]=st.useState(""),V=st.useMemo(()=>Qa(r,c),[c,r]);st.useEffect(()=>{m||d(Qa(r,f))},[m,f,r]);async function K(R){R.preventDefault(),S(!0),N(""),Y("");try{const B=V.filter(X=>X.enabled).map(X=>({id:X.id,vmName:X.vmName,enabled:X.enabled,intervalHours:Number(X.intervalHours)||24,nextRunAt:X.nextRunAt,lastRunAt:X.lastRunAt,lastError:X.lastError})),k=await Ae.put("/schedules",{schedules:B});d(Qa(r,k.data)),y(!1),N("Scheduler saved."),await(i==null?void 0:i())}catch(B){Y(Bl(B))}finally{S(!1)}}function w(R,B){y(!0),d(k=>Qa(r,k).map(X=>X.vmName===R?{...X,...B}:X))}return p.jsxs("section",{className:"space-y-5",children:[p.jsxs("div",{className:"border-b border-zinc-800 pb-5",children:[p.jsx("h1",{className:"text-2xl font-semibold text-zinc-100",children:"Scheduler"}),p.jsx("p",{className:"mt-2 max-w-3xl text-sm leading-6 text-zinc-500",children:"Configure automatic backups per VM. Schedules are stored on the backend and run while the backend service is active."})]}),C?p.jsx(w0,{tone:"bad",text:C}):null,v?p.jsx(w0,{tone:"good",text:v}):null,p.jsxs("form",{className:"overflow-hidden rounded-md border border-zinc-800 bg-zinc-900/70",onSubmit:K,children:[p.jsx("div",{className:"overflow-x-auto",children:p.jsxs("table",{className:"w-full min-w-[760px] text-left text-sm",children:[p.jsx("thead",{className:"border-b border-zinc-800 text-xs uppercase text-zinc-500",children:p.jsxs("tr",{children:[p.jsx("th",{className:"px-4 py-3 font-medium",children:"Enabled"}),p.jsx("th",{className:"px-4 py-3 font-medium",children:"VM"}),p.jsx("th",{className:"px-4 py-3 font-medium",children:"Interval"}),p.jsx("th",{className:"px-4 py-3 font-medium",children:"Next Run"}),p.jsx("th",{className:"px-4 py-3 font-medium",children:"Last Run"}),p.jsx("th",{className:"px-4 py-3 font-medium",children:"Last Error"})]})}),p.jsxs("tbody",{className:"divide-y divide-zinc-800",children:[V.map(R=>p.jsxs("tr",{children:[p.jsx("td",{className:"px-4 py-3",children:p.jsx("input",{checked:R.enabled,className:"h-4 w-4 accent-cyan-500",onChange:B=>w(R.vmName,{enabled:B.target.checked}),type:"checkbox"})}),p.jsx("td",{className:"px-4 py-3 font-medium text-zinc-100",children:R.vmName}),p.jsx("td",{className:"px-4 py-3",children:p.jsxs("select",{className:"h-9 rounded-md border border-zinc-700 bg-zinc-950 px-2 text-zinc-100 outline-none",onChange:B=>w(R.vmName,{intervalHours:Number(B.target.value),nextRunAt:null}),value:R.intervalHours,children:[p.jsx("option",{value:6,children:"Every 6 hours"}),p.jsx("option",{value:12,children:"Every 12 hours"}),p.jsx("option",{value:24,children:"Daily"}),p.jsx("option",{value:168,children:"Weekly"})]})}),p.jsx("td",{className:"px-4 py-3 text-zinc-300",children:L0(R.nextRunAt)}),p.jsx("td",{className:"px-4 py-3 text-zinc-300",children:L0(R.lastRunAt)}),p.jsx("td",{className:"px-4 py-3 text-red-300",children:R.lastError||"-"})]},R.vmName)),V.length?null:p.jsx("tr",{children:p.jsx("td",{className:"px-4 py-8 text-center text-zinc-500",colSpan:"6",children:"No VMs loaded."})})]})]})}),p.jsx("div",{className:"flex justify-end border-t border-zinc-800 px-4 py-3",children:p.jsxs("button",{className:"inline-flex h-9 items-center gap-2 rounded-md border border-cyan-800 bg-cyan-950 px-3 text-sm text-cyan-100 hover:bg-cyan-900",disabled:x,type:"submit",children:[p.jsx(V0,{className:"h-4 w-4"}),"Save Scheduler"]})})]})]})}function Qa(i,f){const r=new Map((f||[]).map(c=>[c.vmName,c]));return(i||[]).map(c=>{var d,m,y,x,S,v;return{id:(d=r.get(c.name))==null?void 0:d.id,vmName:c.name,enabled:!!((m=r.get(c.name))!=null&&m.enabled),intervalHours:((y=r.get(c.name))==null?void 0:y.intervalHours)||24,nextRunAt:((x=r.get(c.name))==null?void 0:x.nextRunAt)||null,lastRunAt:((S=r.get(c.name))==null?void 0:S.lastRunAt)||null,lastError:((v=r.get(c.name))==null?void 0:v.lastError)||""}})}function w0({text:i,tone:f}){const r={bad:"border-red-900 bg-red-950/50 text-red-200",good:"border-emerald-900 bg-emerald-950/50 text-emerald-200"};return p.jsx("div",{className:`rounded-md border px-4 py-3 text-sm ${r[f]}`,children:i})}function L0(i){return i?new Intl.DateTimeFormat(void 0,{dateStyle:"short",timeStyle:"short"}).format(new Date(i)):"-"}function lp({onChanged:i}){const[f,r]=st.useState([]),[c,d]=st.useState({}),[m,y]=st.useState({}),[x,S]=st.useState(!1),[v,N]=st.useState(""),[C,Y]=st.useState(""),V=st.useMemo(()=>f.filter(R=>R.required&&!String(c[R.key]||"").trim()),[f,c]);async function K(){Y("");try{const R=await Ae.get("/settings");r(R.data.fields||[]),d(Object.fromEntries((R.data.fields||[]).map(B=>[B.key,B.value||""])))}catch(R){Y(Bl(R))}}st.useEffect(()=>{K()},[]);async function w(R){R.preventDefault(),S(!0),N(""),Y("");try{Wv(c.API_TOKEN);const B=await Ae.put("/settings",{values:c});r(B.data.fields||[]),d(Object.fromEntries((B.data.fields||[]).map(k=>[k.key,k.value||""]))),N("Settings saved. Running jobs use the updated values; a changed PORT still needs a backend restart."),await(i==null?void 0:i())}catch(B){Y(Bl(B))}finally{S(!1)}}return p.jsxs("section",{className:"space-y-5",children:[p.jsxs("div",{className:"border-b border-zinc-800 pb-5",children:[p.jsx("h1",{className:"text-2xl font-semibold text-zinc-100",children:"Settings"}),p.jsxs("p",{className:"mt-2 max-w-3xl text-sm leading-6 text-zinc-500",children:["Values are written to ",p.jsx("span",{className:"font-mono text-zinc-400",children:"backend/.env"}),". Keep access to this UI restricted because secrets are editable here."]})]}),C?p.jsx(Pf,{tone:"bad",text:C}):null,v?p.jsx(Pf,{tone:"good",text:v}):null,V.length?p.jsx(Pf,{tone:"warn",text:`Missing required values: ${V.map(R=>R.key).join(", ")}`}):null,p.jsxs("form",{className:"rounded-md border border-zinc-800 bg-zinc-900/70",onSubmit:w,children:[p.jsx("div",{className:"grid gap-4 p-4 lg:grid-cols-2",children:f.map(R=>{const B=m[R.key];return p.jsxs("label",{className:"block text-sm text-zinc-300",children:[p.jsxs("span",{className:"flex items-center justify-between gap-3",children:[p.jsxs("span",{children:[R.label,R.required?p.jsx("span",{className:"text-red-300",children:" *"}):null]}),p.jsx("span",{className:"font-mono text-xs text-zinc-500",children:R.key})]}),p.jsxs("span",{className:"mt-2 flex rounded-md border border-zinc-700 bg-zinc-950 focus-within:border-cyan-600",children:[p.jsx("input",{className:"h-10 min-w-0 flex-1 bg-transparent px-3 text-zinc-100 outline-none",onChange:k=>d(X=>({...X,[R.key]:k.target.value})),type:R.secret&&!B?"password":"text",value:c[R.key]||""}),R.secret?p.jsx("button",{className:"flex h-10 w-10 items-center justify-center border-l border-zinc-800 text-zinc-400 hover:text-zinc-100",onClick:()=>y(k=>({...k,[R.key]:!k[R.key]})),type:"button",children:B?p.jsx(l1,{className:"h-4 w-4"}):p.jsx(n1,{className:"h-4 w-4"})}):null]})]},R.key)})}),p.jsx("div",{className:"flex justify-end border-t border-zinc-800 px-4 py-3",children:p.jsxs("button",{className:"inline-flex h-9 items-center gap-2 rounded-md border border-cyan-800 bg-cyan-950 px-3 text-sm text-cyan-100 hover:bg-cyan-900",disabled:x,type:"submit",children:[p.jsx(V0,{className:"h-4 w-4"}),"Save Settings"]})})]})]})}function Pf({text:i,tone:f}){const r={bad:"border-red-900 bg-red-950/50 text-red-200",good:"border-emerald-900 bg-emerald-950/50 text-emerald-200",warn:"border-amber-900 bg-amber-950/50 text-amber-200"};return p.jsx("div",{className:`rounded-md border px-4 py-3 text-sm ${r[f]}`,children:i})}function np({job:i}){var r,c;const f=Math.round(((r=i==null?void 0:i.progress)==null?void 0:r.percent)||0);return p.jsxs("section",{className:"rounded-md border border-zinc-800 bg-zinc-900/70",children:[p.jsxs("div",{className:"flex items-center justify-between border-b border-zinc-800 px-4 py-3",children:[p.jsx("h2",{className:"text-sm font-semibold",children:"Job Status"}),p.jsx("span",{className:`rounded-md border px-2 py-1 text-xs ${ap(i==null?void 0:i.status)}`,children:(i==null?void 0:i.status)||"idle"})]}),p.jsxs("div",{className:"grid gap-4 p-4 lg:grid-cols-[280px_1fr]",children:[p.jsxs("dl",{className:"space-y-3 text-sm",children:[p.jsx(Zn,{label:"Type",value:(i==null?void 0:i.type)||"-"}),p.jsx(Zn,{label:"Current Step",value:(i==null?void 0:i.currentStep)||"No active job"}),p.jsx(Zn,{label:"Progress",value:i?`${f}%`:"-"}),p.jsx(Zn,{label:"Started",value:Y0(i==null?void 0:i.startedAt)}),p.jsx(Zn,{label:"Finished",value:Y0(i==null?void 0:i.finishedAt)}),i!=null&&i.error?p.jsx(Zn,{label:"Error",value:i.error,tone:"text-red-300"}):null]}),p.jsxs("div",{className:"space-y-3",children:[p.jsxs("div",{className:"rounded-md border border-zinc-800 bg-zinc-950 p-3",children:[p.jsxs("div",{className:"mb-2 flex items-center justify-between gap-3 text-xs text-zinc-400",children:[p.jsx("span",{children:((c=i==null?void 0:i.progress)==null?void 0:c.detail)||(i==null?void 0:i.currentStep)||"No active job"}),p.jsx("span",{className:"font-mono text-zinc-300",children:i?`${f}%`:"-"})]}),p.jsx("div",{className:"h-2 overflow-hidden rounded-md bg-zinc-800",children:p.jsx("div",{className:"h-full bg-cyan-400 transition-all",style:{width:`${i?f:0}%`}})})]}),p.jsx("pre",{className:"max-h-80 overflow-auto rounded-md border border-zinc-800 bg-zinc-950 p-3 text-xs leading-5 text-zinc-300",children:((i==null?void 0:i.logs)||["No logs yet."]).join(` +`)})]})]})]})}function Zn({label:i,value:f,tone:r="text-zinc-300"}){return p.jsxs("div",{children:[p.jsx("dt",{className:"text-xs uppercase tracking-wide text-zinc-500",children:i}),p.jsx("dd",{className:`mt-1 break-words ${r}`,children:f})]})}function ap(i){return i==="success"?"border-emerald-800 bg-emerald-950 text-emerald-300":i==="failed"?"border-red-800 bg-red-950 text-red-300":i==="running"||i==="queued"?"border-cyan-800 bg-cyan-950 text-cyan-300":"border-zinc-800 bg-zinc-950 text-zinc-400"}function Y0(i){return i?new Intl.DateTimeFormat(void 0,{dateStyle:"medium",timeStyle:"medium"}).format(new Date(i)):"-"}function up({snapshot:i,vmName:f,confirmText:r,onCancel:c,onConfirm:d,onTextChange:m,busy:y}){if(!i)return null;const x=r===f&&!y;return p.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/70 p-4",children:p.jsxs("div",{className:"w-full max-w-lg rounded-md border border-red-900 bg-zinc-950 shadow-2xl",children:[p.jsxs("div",{className:"flex items-center justify-between border-b border-red-950 px-4 py-3",children:[p.jsxs("div",{className:"flex items-center gap-2 text-red-300",children:[p.jsx(Q0,{className:"h-5 w-5"}),p.jsx("h2",{className:"text-sm font-semibold",children:"Destructive Restore"})]}),p.jsx("button",{className:"rounded-md p-1 text-zinc-400 hover:text-zinc-100",onClick:c,type:"button",children:p.jsx(c1,{className:"h-5 w-5"})})]}),p.jsxs("div",{className:"space-y-4 p-4",children:[p.jsxs("p",{className:"text-sm leading-6 text-zinc-300",children:["Warning: The VM will be stopped and the current disk will be irreversibly overwritten with snapshot ",p.jsx("span",{className:"font-mono text-red-200",children:i.id.slice(0,8)}),"."]}),p.jsxs("label",{className:"block text-sm text-zinc-300",children:["Type ",p.jsx("span",{className:"font-mono text-zinc-100",children:f})," to confirm.",p.jsx("input",{className:"mt-2 h-10 w-full rounded-md border border-zinc-700 bg-zinc-900 px-3 text-zinc-100 outline-none focus:border-red-500",onChange:S=>m(S.target.value),value:r})]}),p.jsxs("div",{className:"flex justify-end gap-2",children:[p.jsx("button",{className:"h-9 rounded-md border border-zinc-700 px-3 text-sm text-zinc-200",onClick:c,type:"button",children:"Cancel"}),p.jsx("button",{className:"h-9 rounded-md border border-red-700 bg-red-950 px-3 text-sm text-red-100 hover:bg-red-900 disabled:hover:bg-red-950",disabled:!x,onClick:d,type:"button",children:"Confirm Restore"})]})]})]})})}function ip({onRestore:i,snapshots:f}){return p.jsxs("section",{className:"overflow-hidden rounded-md border border-zinc-800 bg-zinc-900/70",children:[p.jsx("div",{className:"border-b border-zinc-800 px-4 py-3",children:p.jsx("h2",{className:"text-sm font-semibold",children:"Snapshots"})}),p.jsx("div",{className:"overflow-x-auto",children:p.jsxs("table",{className:"w-full min-w-[680px] text-left text-sm",children:[p.jsx("thead",{className:"border-b border-zinc-800 text-xs uppercase tracking-wide text-zinc-500",children:p.jsxs("tr",{children:[p.jsx("th",{className:"px-4 py-3 font-medium",children:"ID"}),p.jsx("th",{className:"px-4 py-3 font-medium",children:"Date & Time"}),p.jsx("th",{className:"px-4 py-3 font-medium",children:"Tags"}),p.jsx("th",{className:"px-4 py-3 text-right font-medium",children:"Actions"})]})}),p.jsxs("tbody",{className:"divide-y divide-zinc-800",children:[f.map(r=>p.jsxs("tr",{className:"hover:bg-zinc-900",children:[p.jsx("td",{className:"px-4 py-3 font-mono text-zinc-100",children:r.id.slice(0,8)}),p.jsx("td",{className:"px-4 py-3 text-zinc-300",children:cp(r.time)}),p.jsx("td",{className:"px-4 py-3 text-zinc-400",children:(r.tags||[]).join(", ")||"-"}),p.jsx("td",{className:"px-4 py-3 text-right",children:p.jsxs("button",{className:"inline-flex h-8 items-center gap-2 rounded-md border border-red-900 px-2.5 text-xs text-red-300 hover:border-red-600 hover:text-red-200",onClick:()=>i(r),type:"button",children:[p.jsx(u1,{className:"h-4 w-4"}),"Restore"]})})]},r.id)),f.length?null:p.jsx("tr",{children:p.jsx("td",{className:"px-4 py-8 text-center text-zinc-500",colSpan:"4",children:"No snapshots found."})})]})]})})]})}function cp(i){return i?new Intl.DateTimeFormat(void 0,{dateStyle:"medium",timeStyle:"medium"}).format(new Date(i)):"-"}function fp({jobs:i,onBack:f,onChanged:r,vm:c}){var W;const[d,m]=st.useState([]),[y,x]=st.useState(null),[S,v]=st.useState(""),[N,C]=st.useState(!1),[Y,V]=st.useState(""),K=st.useMemo(()=>i.filter(at=>at.vmName===c.name),[i,c.name]),w=K.find(at=>["queued","running"].includes(at.status))||K[0]||null,R=(W=d[0])==null?void 0:W.time;async function B(){V("");try{const at=await Ae.get(`/snapshots/${encodeURIComponent(c.name)}`);m(at.data)}catch(at){V(Bl(at))}}st.useEffect(()=>{B()},[c.name]);async function k(){C(!0),V("");try{await Ae.post(`/backup/${encodeURIComponent(c.name)}`),await r()}catch(at){V(Bl(at))}finally{C(!1)}}async function X(){C(!0),V("");try{await Ae.post(`/restore/${encodeURIComponent(c.name)}`,{snapshotId:y.id,confirmVmName:S}),x(null),v(""),await r()}catch(at){V(Bl(at))}finally{C(!1)}}return p.jsxs("section",{className:"space-y-5",children:[p.jsxs("div",{className:"flex flex-col gap-4 border-b border-zinc-800 pb-5 sm:flex-row sm:items-end sm:justify-between",children:[p.jsxs("div",{children:[p.jsxs("button",{className:"mb-4 inline-flex items-center gap-2 text-sm text-zinc-400 hover:text-zinc-100",onClick:f,type:"button",children:[p.jsx(Wy,{className:"h-4 w-4"}),"Back"]}),p.jsxs("div",{className:"flex items-center gap-3",children:[p.jsx("h1",{className:"text-2xl font-semibold text-zinc-100",children:c.name}),p.jsx("span",{className:"rounded-md border border-zinc-800 px-2 py-1 text-xs text-zinc-300",children:c.status||"Unknown"})]}),p.jsxs("p",{className:"mt-2 text-sm text-zinc-500",children:["Latest snapshot: ",R?sp(R):"None"]})]}),p.jsxs("div",{className:"flex gap-2",children:[p.jsxs("button",{className:"inline-flex h-9 items-center gap-2 rounded-md border border-zinc-700 px-3 text-sm text-zinc-100",onClick:B,type:"button",children:[p.jsx(G0,{className:"h-4 w-4"}),"Snapshots"]}),p.jsxs("button",{className:"inline-flex h-9 items-center gap-2 rounded-md border border-emerald-800 bg-emerald-950 px-3 text-sm text-emerald-100 hover:bg-emerald-900",disabled:N||!!(w&&["queued","running"].includes(w.status)),onClick:k,type:"button",children:[p.jsx(a1,{className:"h-4 w-4"}),"Create Backup"]})]})]}),Y?p.jsx("div",{className:"rounded-md border border-amber-900 bg-amber-950/50 px-4 py-3 text-sm text-amber-200",children:Y}):null,p.jsx(np,{job:w}),p.jsx(ip,{snapshots:d,onRestore:at=>x(at)}),p.jsx(up,{busy:N,confirmText:S,onCancel:()=>{x(null),v("")},onConfirm:X,onTextChange:v,snapshot:y,vmName:c.name})]})}function sp(i){return new Intl.DateTimeFormat(void 0,{dateStyle:"medium",timeStyle:"medium"}).format(new Date(i))}function rp(){const[i,f]=st.useState(null),[r,c]=st.useState([]),[d,m]=st.useState([]),[y,x]=st.useState([]),[S,v]=st.useState(null),[N,C]=st.useState("dashboard"),[Y,V]=st.useState(""),[K,w]=st.useState(!0);async function R(){var k;V("");try{const[X,W,at,Ot]=await Promise.allSettled([Ae.get("/health"),Ae.get("/vms"),Ae.get("/jobs"),Ae.get("/schedules")]);X.status==="fulfilled"?f(X.value.data):f(((k=X.reason.response)==null?void 0:k.data)||{ok:!1,checks:{}}),W.status==="fulfilled"&&c(W.value.data),at.status==="fulfilled"&&m(at.value.data),Ot.status==="fulfilled"&&x(Ot.value.data);const tt=[X,W,at,Ot].find(Ht=>Ht.status==="rejected");tt&&V(Bl(tt.reason))}catch(X){V(Bl(X))}finally{w(!1)}}st.useEffect(()=>{R();const k=window.setInterval(R,5e3);return()=>window.clearInterval(k)},[]);const B=st.useMemo(()=>r.find(k=>k.name===S)||null,[S,r]);return p.jsxs("main",{className:"min-h-screen bg-zinc-950 text-zinc-100",children:[p.jsx("header",{className:"border-b border-zinc-800 bg-zinc-950/95",children:p.jsxs("div",{className:"mx-auto flex max-w-7xl items-center justify-between gap-4 px-4 py-4 sm:px-6",children:[p.jsxs("button",{className:"flex items-center gap-3 text-left",onClick:()=>{v(null),C("dashboard")},type:"button",children:[p.jsx("span",{className:"flex h-9 w-9 items-center justify-center rounded-md border border-zinc-800 bg-zinc-900",children:p.jsx(e1,{className:"h-5 w-5 text-cyan-300"})}),p.jsxs("span",{children:[p.jsx("span",{className:"block text-sm font-semibold tracking-wide text-zinc-100",children:"Incus Backup Control"}),p.jsx("span",{className:"block text-xs text-zinc-500",children:"ZFS block-level Restic operations"})]})]}),p.jsxs("div",{className:"flex items-center gap-2",children:[p.jsxs("button",{className:"inline-flex h-9 items-center gap-2 rounded-md border border-zinc-800 bg-zinc-900 px-3 text-sm text-zinc-200 hover:border-zinc-700",onClick:()=>{v(null),C("scheduler")},type:"button",children:[p.jsx(Iy,{className:"h-4 w-4"}),"Scheduler"]}),p.jsxs("button",{className:"inline-flex h-9 items-center gap-2 rounded-md border border-zinc-800 bg-zinc-900 px-3 text-sm text-zinc-200 hover:border-zinc-700",onClick:()=>{v(null),C("settings")},type:"button",children:[p.jsx(i1,{className:"h-4 w-4"}),"Settings"]}),p.jsxs("button",{className:"inline-flex h-9 items-center gap-2 rounded-md border border-zinc-800 bg-zinc-900 px-3 text-sm text-zinc-200 hover:border-zinc-700",onClick:R,type:"button",children:[p.jsx(G0,{className:"h-4 w-4"}),"Refresh"]})]})]})}),Y?p.jsxs("div",{className:"mx-auto mt-4 flex max-w-7xl items-center gap-2 px-4 text-sm text-amber-300 sm:px-6",children:[p.jsx(Q0,{className:"h-4 w-4"}),Y]}):null,p.jsx("div",{className:"mx-auto max-w-7xl px-4 py-6 sm:px-6",children:N==="settings"?p.jsx(lp,{onChanged:R}):N==="scheduler"?p.jsx(ep,{onChanged:R,schedules:y,vms:r}):B?p.jsx(fp,{vm:B,jobs:d,onBack:()=>v(null),onChanged:R}):p.jsx(Iv,{health:i,jobs:d,loading:K,onManage:k=>{v(k),C("dashboard")},vms:r})})]})}Ky.createRoot(document.getElementById("root")).render(p.jsx(Yy.StrictMode,{children:p.jsx(rp,{})})); diff --git a/frontend/dist/assets/index-JZykJ0Bp.js b/frontend/dist/assets/index-JZykJ0Bp.js deleted file mode 100644 index 10988a7..0000000 --- a/frontend/dist/assets/index-JZykJ0Bp.js +++ /dev/null @@ -1,143 +0,0 @@ -(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const d of document.querySelectorAll('link[rel="modulepreload"]'))f(d);new MutationObserver(d=>{for(const m of d)if(m.type==="childList")for(const y of m.addedNodes)y.tagName==="LINK"&&y.rel==="modulepreload"&&f(y)}).observe(document,{childList:!0,subtree:!0});function r(d){const m={};return d.integrity&&(m.integrity=d.integrity),d.referrerPolicy&&(m.referrerPolicy=d.referrerPolicy),d.crossOrigin==="use-credentials"?m.credentials="include":d.crossOrigin==="anonymous"?m.credentials="omit":m.credentials="same-origin",m}function f(d){if(d.ep)return;d.ep=!0;const m=r(d);fetch(d.href,m)}})();function Uy(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var Gf={exports:{}},La={};/** - * @license React - * react-jsx-runtime.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var d0;function Cy(){if(d0)return La;d0=1;var i=Symbol.for("react.transitional.element"),s=Symbol.for("react.fragment");function r(f,d,m){var y=null;if(m!==void 0&&(y=""+m),d.key!==void 0&&(y=""+d.key),"key"in d){m={};for(var b in d)b!=="key"&&(m[b]=d[b])}else m=d;return d=m.ref,{$$typeof:i,type:f,key:y,ref:d!==void 0?d:null,props:m}}return La.Fragment=s,La.jsx=r,La.jsxs=r,La}var m0;function jy(){return m0||(m0=1,Gf.exports=Cy()),Gf.exports}var z=jy(),Qf={exports:{}},tt={};/** - * @license React - * react.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var h0;function Hy(){if(h0)return tt;h0=1;var i=Symbol.for("react.transitional.element"),s=Symbol.for("react.portal"),r=Symbol.for("react.fragment"),f=Symbol.for("react.strict_mode"),d=Symbol.for("react.profiler"),m=Symbol.for("react.consumer"),y=Symbol.for("react.context"),b=Symbol.for("react.forward_ref"),E=Symbol.for("react.suspense"),v=Symbol.for("react.memo"),R=Symbol.for("react.lazy"),H=Symbol.for("react.activity"),X=Symbol.iterator;function Q(p){return p===null||typeof p!="object"?null:(p=X&&p[X]||p["@@iterator"],typeof p=="function"?p:null)}var Z={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},w=Object.assign,U={};function B(p,j,q){this.props=p,this.context=j,this.refs=U,this.updater=q||Z}B.prototype.isReactComponent={},B.prototype.setState=function(p,j){if(typeof p!="object"&&typeof p!="function"&&p!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,p,j,"setState")},B.prototype.forceUpdate=function(p){this.updater.enqueueForceUpdate(this,p,"forceUpdate")};function I(){}I.prototype=B.prototype;function k(p,j,q){this.props=p,this.context=j,this.refs=U,this.updater=q||Z}var P=k.prototype=new I;P.constructor=k,w(P,B.prototype),P.isPureReactComponent=!0;var ft=Array.isArray;function Nt(){}var nt={H:null,A:null,T:null,S:null},Gt=Object.prototype.hasOwnProperty;function oe(p,j,q){var Y=q.ref;return{$$typeof:i,type:p,key:j,ref:Y!==void 0?Y:null,props:q}}function Pt(p,j){return oe(p.type,j,p.props)}function Qt(p){return typeof p=="object"&&p!==null&&p.$$typeof===i}function Yt(p){var j={"=":"=0",":":"=2"};return"$"+p.replace(/[=:]/g,function(q){return j[q]})}var Ye=/\/+/g;function Ht(p,j){return typeof p=="object"&&p!==null&&p.key!=null?Yt(""+p.key):j.toString(36)}function te(p){switch(p.status){case"fulfilled":return p.value;case"rejected":throw p.reason;default:switch(typeof p.status=="string"?p.then(Nt,Nt):(p.status="pending",p.then(function(j){p.status==="pending"&&(p.status="fulfilled",p.value=j)},function(j){p.status==="pending"&&(p.status="rejected",p.reason=j)})),p.status){case"fulfilled":return p.value;case"rejected":throw p.reason}}throw p}function N(p,j,q,Y,F){var at=typeof p;(at==="undefined"||at==="boolean")&&(p=null);var ct=!1;if(p===null)ct=!0;else switch(at){case"bigint":case"string":case"number":ct=!0;break;case"object":switch(p.$$typeof){case i:case s:ct=!0;break;case R:return ct=p._init,N(ct(p._payload),j,q,Y,F)}}if(ct)return F=F(p),ct=Y===""?"."+Ht(p,0):Y,ft(F)?(q="",ct!=null&&(q=ct.replace(Ye,"$&/")+"/"),N(F,j,q,"",function(Xe){return Xe})):F!=null&&(Qt(F)&&(F=Pt(F,q+(F.key==null||p&&p.key===F.key?"":(""+F.key).replace(Ye,"$&/")+"/")+ct)),j.push(F)),1;ct=0;var et=Y===""?".":Y+":";if(ft(p))for(var Et=0;Et>>1,it=N[st];if(0>>1;std(q,$))Yd(F,q)?(N[st]=F,N[Y]=$,st=Y):(N[st]=q,N[j]=$,st=j);else if(Yd(F,$))N[st]=F,N[Y]=$,st=Y;else break t}}return L}function d(N,L){var $=N.sortIndex-L.sortIndex;return $!==0?$:N.id-L.id}if(i.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var m=performance;i.unstable_now=function(){return m.now()}}else{var y=Date,b=y.now();i.unstable_now=function(){return y.now()-b}}var E=[],v=[],R=1,H=null,X=3,Q=!1,Z=!1,w=!1,U=!1,B=typeof setTimeout=="function"?setTimeout:null,I=typeof clearTimeout=="function"?clearTimeout:null,k=typeof setImmediate<"u"?setImmediate:null;function P(N){for(var L=r(v);L!==null;){if(L.callback===null)f(v);else if(L.startTime<=N)f(v),L.sortIndex=L.expirationTime,s(E,L);else break;L=r(v)}}function ft(N){if(w=!1,P(N),!Z)if(r(E)!==null)Z=!0,Nt||(Nt=!0,Yt());else{var L=r(v);L!==null&&te(ft,L.startTime-N)}}var Nt=!1,nt=-1,Gt=5,oe=-1;function Pt(){return U?!0:!(i.unstable_now()-oeN&&Pt());){var st=H.callback;if(typeof st=="function"){H.callback=null,X=H.priorityLevel;var it=st(H.expirationTime<=N);if(N=i.unstable_now(),typeof it=="function"){H.callback=it,P(N),L=!0;break e}H===r(E)&&f(E),P(N)}else f(E);H=r(E)}if(H!==null)L=!0;else{var p=r(v);p!==null&&te(ft,p.startTime-N),L=!1}}break t}finally{H=null,X=$,Q=!1}L=void 0}}finally{L?Yt():Nt=!1}}}var Yt;if(typeof k=="function")Yt=function(){k(Qt)};else if(typeof MessageChannel<"u"){var Ye=new MessageChannel,Ht=Ye.port2;Ye.port1.onmessage=Qt,Yt=function(){Ht.postMessage(null)}}else Yt=function(){B(Qt,0)};function te(N,L){nt=B(function(){N(i.unstable_now())},L)}i.unstable_IdlePriority=5,i.unstable_ImmediatePriority=1,i.unstable_LowPriority=4,i.unstable_NormalPriority=3,i.unstable_Profiling=null,i.unstable_UserBlockingPriority=2,i.unstable_cancelCallback=function(N){N.callback=null},i.unstable_forceFrameRate=function(N){0>N||125st?(N.sortIndex=$,s(v,N),r(E)===null&&N===r(v)&&(w?(I(nt),nt=-1):w=!0,te(ft,$-st))):(N.sortIndex=it,s(E,N),Z||Q||(Z=!0,Nt||(Nt=!0,Yt()))),N},i.unstable_shouldYield=Pt,i.unstable_wrapCallback=function(N){var L=X;return function(){var $=X;X=L;try{return N.apply(this,arguments)}finally{X=$}}}})(Kf)),Kf}var p0;function wy(){return p0||(p0=1,Zf.exports=qy()),Zf.exports}var Jf={exports:{}},Wt={};/** - * @license React - * react-dom.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var g0;function Ly(){if(g0)return Wt;g0=1;var i=as();function s(E){var v="https://react.dev/errors/"+E;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(s){console.error(s)}}return i(),Jf.exports=Ly(),Jf.exports}/** - * @license React - * react-dom-client.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var S0;function Xy(){if(S0)return Ya;S0=1;var i=wy(),s=as(),r=Yy();function f(t){var e="https://react.dev/errors/"+t;if(1it||(t.current=st[it],st[it]=null,it--)}function q(t,e){it++,st[it]=t.current,t.current=e}var Y=p(null),F=p(null),at=p(null),ct=p(null);function et(t,e){switch(q(at,e),q(F,t),q(Y,null),e.nodeType){case 9:case 11:t=(t=e.documentElement)&&(t=t.namespaceURI)?Hd(t):0;break;default:if(t=e.tagName,e=e.namespaceURI)e=Hd(e),t=Bd(e,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}j(Y),q(Y,t)}function Et(){j(Y),j(F),j(at)}function Xe(t){t.memoizedState!==null&&q(ct,t);var e=Y.current,l=Bd(e,t.type);e!==l&&(q(F,t),q(Y,l))}function Ke(t){F.current===t&&(j(Y),j(F)),ct.current===t&&(j(ct),Ha._currentValue=$)}var an,Fa;function de(t){if(an===void 0)try{throw Error()}catch(l){var e=l.stack.trim().match(/\n( *(at )?)/);an=e&&e[1]||"",Fa=-1)":-1a||h[n]!==A[a]){var D=` -`+h[n].replace(" at new "," at ");return t.displayName&&D.includes("")&&(D=D.replace("",t.displayName)),D}while(1<=n&&0<=a);break}}}finally{Ai=!1,Error.prepareStackTrace=l}return(l=t?t.displayName||t.name:"")?de(l):""}function sm(t,e){switch(t.tag){case 26:case 27:case 5:return de(t.type);case 16:return de("Lazy");case 13:return t.child!==e&&e!==null?de("Suspense Fallback"):de("Suspense");case 19:return de("SuspenseList");case 0:case 15:return zi(t.type,!1);case 11:return zi(t.type.render,!1);case 1:return zi(t.type,!0);case 31:return de("Activity");default:return""}}function os(t){try{var e="",l=null;do e+=sm(t,l),l=t,t=t.return;while(t);return e}catch(n){return` -Error generating stack: `+n.message+` -`+n.stack}}var Oi=Object.prototype.hasOwnProperty,_i=i.unstable_scheduleCallback,Ri=i.unstable_cancelCallback,rm=i.unstable_shouldYield,om=i.unstable_requestPaint,me=i.unstable_now,dm=i.unstable_getCurrentPriorityLevel,ds=i.unstable_ImmediatePriority,ms=i.unstable_UserBlockingPriority,$a=i.unstable_NormalPriority,mm=i.unstable_LowPriority,hs=i.unstable_IdlePriority,hm=i.log,ym=i.unstable_setDisableYieldValue,Jn=null,he=null;function ol(t){if(typeof hm=="function"&&ym(t),he&&typeof he.setStrictMode=="function")try{he.setStrictMode(Jn,t)}catch{}}var ye=Math.clz32?Math.clz32:gm,vm=Math.log,pm=Math.LN2;function gm(t){return t>>>=0,t===0?32:31-(vm(t)/pm|0)|0}var Wa=256,Ia=262144,Pa=4194304;function Bl(t){var e=t&42;if(e!==0)return e;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&261888;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function tu(t,e,l){var n=t.pendingLanes;if(n===0)return 0;var a=0,u=t.suspendedLanes,c=t.pingedLanes;t=t.warmLanes;var o=n&134217727;return o!==0?(n=o&~u,n!==0?a=Bl(n):(c&=o,c!==0?a=Bl(c):l||(l=o&~t,l!==0&&(a=Bl(l))))):(o=n&~u,o!==0?a=Bl(o):c!==0?a=Bl(c):l||(l=n&~t,l!==0&&(a=Bl(l)))),a===0?0:e!==0&&e!==a&&(e&u)===0&&(u=a&-a,l=e&-e,u>=l||u===32&&(l&4194048)!==0)?e:a}function kn(t,e){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&e)===0}function bm(t,e){switch(t){case 1:case 2:case 4:case 8:case 64:return e+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function ys(){var t=Pa;return Pa<<=1,(Pa&62914560)===0&&(Pa=4194304),t}function Ni(t){for(var e=[],l=0;31>l;l++)e.push(t);return e}function Fn(t,e){t.pendingLanes|=e,e!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function Sm(t,e,l,n,a,u){var c=t.pendingLanes;t.pendingLanes=l,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=l,t.entangledLanes&=l,t.errorRecoveryDisabledLanes&=l,t.shellSuspendCounter=0;var o=t.entanglements,h=t.expirationTimes,A=t.hiddenUpdates;for(l=c&~l;0"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var Om=/[\n"\\]/g;function ze(t){return t.replace(Om,function(e){return"\\"+e.charCodeAt(0).toString(16)+" "})}function Hi(t,e,l,n,a,u,c,o){t.name="",c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?t.type=c:t.removeAttribute("type"),e!=null?c==="number"?(e===0&&t.value===""||t.value!=e)&&(t.value=""+Ae(e)):t.value!==""+Ae(e)&&(t.value=""+Ae(e)):c!=="submit"&&c!=="reset"||t.removeAttribute("value"),e!=null?Bi(t,c,Ae(e)):l!=null?Bi(t,c,Ae(l)):n!=null&&t.removeAttribute("value"),a==null&&u!=null&&(t.defaultChecked=!!u),a!=null&&(t.checked=a&&typeof a!="function"&&typeof a!="symbol"),o!=null&&typeof o!="function"&&typeof o!="symbol"&&typeof o!="boolean"?t.name=""+Ae(o):t.removeAttribute("name")}function Rs(t,e,l,n,a,u,c,o){if(u!=null&&typeof u!="function"&&typeof u!="symbol"&&typeof u!="boolean"&&(t.type=u),e!=null||l!=null){if(!(u!=="submit"&&u!=="reset"||e!=null)){ji(t);return}l=l!=null?""+Ae(l):"",e=e!=null?""+Ae(e):l,o||e===t.value||(t.value=e),t.defaultValue=e}n=n??a,n=typeof n!="function"&&typeof n!="symbol"&&!!n,t.checked=o?t.checked:!!n,t.defaultChecked=!!n,c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(t.name=c),ji(t)}function Bi(t,e,l){e==="number"&&nu(t.ownerDocument)===t||t.defaultValue===""+l||(t.defaultValue=""+l)}function on(t,e,l,n){if(t=t.options,e){e={};for(var a=0;a"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Xi=!1;if(Fe)try{var Pn={};Object.defineProperty(Pn,"passive",{get:function(){Xi=!0}}),window.addEventListener("test",Pn,Pn),window.removeEventListener("test",Pn,Pn)}catch{Xi=!1}var ml=null,Gi=null,uu=null;function Hs(){if(uu)return uu;var t,e=Gi,l=e.length,n,a="value"in ml?ml.value:ml.textContent,u=a.length;for(t=0;t=la),Xs=" ",Gs=!1;function Qs(t,e){switch(t){case"keyup":return th.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Vs(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var yn=!1;function lh(t,e){switch(t){case"compositionend":return Vs(e);case"keypress":return e.which!==32?null:(Gs=!0,Xs);case"textInput":return t=e.data,t===Xs&&Gs?null:t;default:return null}}function nh(t,e){if(yn)return t==="compositionend"||!Ji&&Qs(t,e)?(t=Hs(),uu=Gi=ml=null,yn=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:l,offset:e-t};t=n}t:{for(;l;){if(l.nextSibling){l=l.nextSibling;break t}l=l.parentNode}l=void 0}l=Is(l)}}function tr(t,e){return t&&e?t===e?!0:t&&t.nodeType===3?!1:e&&e.nodeType===3?tr(t,e.parentNode):"contains"in t?t.contains(e):t.compareDocumentPosition?!!(t.compareDocumentPosition(e)&16):!1:!1}function er(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var e=nu(t.document);e instanceof t.HTMLIFrameElement;){try{var l=typeof e.contentWindow.location.href=="string"}catch{l=!1}if(l)t=e.contentWindow;else break;e=nu(t.document)}return e}function $i(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return e&&(e==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||e==="textarea"||t.contentEditable==="true")}var oh=Fe&&"documentMode"in document&&11>=document.documentMode,vn=null,Wi=null,ia=null,Ii=!1;function lr(t,e,l){var n=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;Ii||vn==null||vn!==nu(n)||(n=vn,"selectionStart"in n&&$i(n)?n={start:n.selectionStart,end:n.selectionEnd}:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection(),n={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}),ia&&ua(ia,n)||(ia=n,n=Iu(Wi,"onSelect"),0>=c,a-=c,Ge=1<<32-ye(e)+a|l<ut?(mt=K,K=null):mt=K.sibling;var vt=O(S,K,T[ut],M);if(vt===null){K===null&&(K=mt);break}t&&K&&vt.alternate===null&&e(S,K),g=u(vt,g,ut),yt===null?J=vt:yt.sibling=vt,yt=vt,K=mt}if(ut===T.length)return l(S,K),ht&&We(S,ut),J;if(K===null){for(;utut?(mt=K,K=null):mt=K.sibling;var Hl=O(S,K,vt.value,M);if(Hl===null){K===null&&(K=mt);break}t&&K&&Hl.alternate===null&&e(S,K),g=u(Hl,g,ut),yt===null?J=Hl:yt.sibling=Hl,yt=Hl,K=mt}if(vt.done)return l(S,K),ht&&We(S,ut),J;if(K===null){for(;!vt.done;ut++,vt=T.next())vt=C(S,vt.value,M),vt!==null&&(g=u(vt,g,ut),yt===null?J=vt:yt.sibling=vt,yt=vt);return ht&&We(S,ut),J}for(K=n(K);!vt.done;ut++,vt=T.next())vt=_(K,S,ut,vt.value,M),vt!==null&&(t&&vt.alternate!==null&&K.delete(vt.key===null?ut:vt.key),g=u(vt,g,ut),yt===null?J=vt:yt.sibling=vt,yt=vt);return t&&K.forEach(function(My){return e(S,My)}),ht&&We(S,ut),J}function At(S,g,T,M){if(typeof T=="object"&&T!==null&&T.type===w&&T.key===null&&(T=T.props.children),typeof T=="object"&&T!==null){switch(T.$$typeof){case Q:t:{for(var J=T.key;g!==null;){if(g.key===J){if(J=T.type,J===w){if(g.tag===7){l(S,g.sibling),M=a(g,T.props.children),M.return=S,S=M;break t}}else if(g.elementType===J||typeof J=="object"&&J!==null&&J.$$typeof===Gt&&Jl(J)===g.type){l(S,g.sibling),M=a(g,T.props),da(M,T),M.return=S,S=M;break t}l(S,g);break}else e(S,g);g=g.sibling}T.type===w?(M=Gl(T.props.children,S.mode,M,T.key),M.return=S,S=M):(M=yu(T.type,T.key,T.props,null,S.mode,M),da(M,T),M.return=S,S=M)}return c(S);case Z:t:{for(J=T.key;g!==null;){if(g.key===J)if(g.tag===4&&g.stateNode.containerInfo===T.containerInfo&&g.stateNode.implementation===T.implementation){l(S,g.sibling),M=a(g,T.children||[]),M.return=S,S=M;break t}else{l(S,g);break}else e(S,g);g=g.sibling}M=uc(T,S.mode,M),M.return=S,S=M}return c(S);case Gt:return T=Jl(T),At(S,g,T,M)}if(te(T))return G(S,g,T,M);if(Yt(T)){if(J=Yt(T),typeof J!="function")throw Error(f(150));return T=J.call(T),W(S,g,T,M)}if(typeof T.then=="function")return At(S,g,xu(T),M);if(T.$$typeof===k)return At(S,g,gu(S,T),M);Tu(S,T)}return typeof T=="string"&&T!==""||typeof T=="number"||typeof T=="bigint"?(T=""+T,g!==null&&g.tag===6?(l(S,g.sibling),M=a(g,T),M.return=S,S=M):(l(S,g),M=ac(T,S.mode,M),M.return=S,S=M),c(S)):l(S,g)}return function(S,g,T,M){try{oa=0;var J=At(S,g,T,M);return _n=null,J}catch(K){if(K===On||K===Su)throw K;var yt=pe(29,K,null,S.mode);return yt.lanes=M,yt.return=S,yt}finally{}}}var Fl=zr(!0),Or=zr(!1),gl=!1;function pc(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function gc(t,e){t=t.updateQueue,e.updateQueue===t&&(e.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function bl(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function Sl(t,e,l){var n=t.updateQueue;if(n===null)return null;if(n=n.shared,(pt&2)!==0){var a=n.pending;return a===null?e.next=e:(e.next=a.next,a.next=e),n.pending=e,e=hu(t),sr(t,null,l),e}return mu(t,n,e,l),hu(t)}function ma(t,e,l){if(e=e.updateQueue,e!==null&&(e=e.shared,(l&4194048)!==0)){var n=e.lanes;n&=t.pendingLanes,l|=n,e.lanes=l,ps(t,l)}}function bc(t,e){var l=t.updateQueue,n=t.alternate;if(n!==null&&(n=n.updateQueue,l===n)){var a=null,u=null;if(l=l.firstBaseUpdate,l!==null){do{var c={lane:l.lane,tag:l.tag,payload:l.payload,callback:null,next:null};u===null?a=u=c:u=u.next=c,l=l.next}while(l!==null);u===null?a=u=e:u=u.next=e}else a=u=e;l={baseState:n.baseState,firstBaseUpdate:a,lastBaseUpdate:u,shared:n.shared,callbacks:n.callbacks},t.updateQueue=l;return}t=l.lastBaseUpdate,t===null?l.firstBaseUpdate=e:t.next=e,l.lastBaseUpdate=e}var Sc=!1;function ha(){if(Sc){var t=zn;if(t!==null)throw t}}function ya(t,e,l,n){Sc=!1;var a=t.updateQueue;gl=!1;var u=a.firstBaseUpdate,c=a.lastBaseUpdate,o=a.shared.pending;if(o!==null){a.shared.pending=null;var h=o,A=h.next;h.next=null,c===null?u=A:c.next=A,c=h;var D=t.alternate;D!==null&&(D=D.updateQueue,o=D.lastBaseUpdate,o!==c&&(o===null?D.firstBaseUpdate=A:o.next=A,D.lastBaseUpdate=h))}if(u!==null){var C=a.baseState;c=0,D=A=h=null,o=u;do{var O=o.lane&-536870913,_=O!==o.lane;if(_?(dt&O)===O:(n&O)===O){O!==0&&O===An&&(Sc=!0),D!==null&&(D=D.next={lane:0,tag:o.tag,payload:o.payload,callback:null,next:null});t:{var G=t,W=o;O=e;var At=l;switch(W.tag){case 1:if(G=W.payload,typeof G=="function"){C=G.call(At,C,O);break t}C=G;break t;case 3:G.flags=G.flags&-65537|128;case 0:if(G=W.payload,O=typeof G=="function"?G.call(At,C,O):G,O==null)break t;C=H({},C,O);break t;case 2:gl=!0}}O=o.callback,O!==null&&(t.flags|=64,_&&(t.flags|=8192),_=a.callbacks,_===null?a.callbacks=[O]:_.push(O))}else _={lane:O,tag:o.tag,payload:o.payload,callback:o.callback,next:null},D===null?(A=D=_,h=C):D=D.next=_,c|=O;if(o=o.next,o===null){if(o=a.shared.pending,o===null)break;_=o,o=_.next,_.next=null,a.lastBaseUpdate=_,a.shared.pending=null}}while(!0);D===null&&(h=C),a.baseState=h,a.firstBaseUpdate=A,a.lastBaseUpdate=D,u===null&&(a.shared.lanes=0),zl|=c,t.lanes=c,t.memoizedState=C}}function _r(t,e){if(typeof t!="function")throw Error(f(191,t));t.call(e)}function Rr(t,e){var l=t.callbacks;if(l!==null)for(t.callbacks=null,t=0;tu?u:8;var c=N.T,o={};N.T=o,Lc(t,!1,e,l);try{var h=a(),A=N.S;if(A!==null&&A(o,h),h!==null&&typeof h=="object"&&typeof h.then=="function"){var D=Sh(h,n);ga(t,e,D,xe(t))}else ga(t,e,n,xe(t))}catch(C){ga(t,e,{then:function(){},status:"rejected",reason:C},xe())}finally{L.p=u,c!==null&&o.types!==null&&(c.types=o.types),N.T=c}}function Oh(){}function qc(t,e,l,n){if(t.tag!==5)throw Error(f(476));var a=io(t).queue;uo(t,a,e,$,l===null?Oh:function(){return co(t),l(n)})}function io(t){var e=t.memoizedState;if(e!==null)return e;e={memoizedState:$,baseState:$,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:el,lastRenderedState:$},next:null};var l={};return e.next={memoizedState:l,baseState:l,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:el,lastRenderedState:l},next:null},t.memoizedState=e,t=t.alternate,t!==null&&(t.memoizedState=e),e}function co(t){var e=io(t);e.next===null&&(e=t.alternate.memoizedState),ga(t,e.next.queue,{},xe())}function wc(){return kt(Ha)}function fo(){return Ct().memoizedState}function so(){return Ct().memoizedState}function _h(t){for(var e=t.return;e!==null;){switch(e.tag){case 24:case 3:var l=xe();t=bl(l);var n=Sl(e,t,l);n!==null&&(se(n,e,l),ma(n,e,l)),e={cache:mc()},t.payload=e;return}e=e.return}}function Rh(t,e,l){var n=xe();l={lane:n,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},Cu(t)?oo(e,l):(l=lc(t,e,l,n),l!==null&&(se(l,t,n),mo(l,e,n)))}function ro(t,e,l){var n=xe();ga(t,e,l,n)}function ga(t,e,l,n){var a={lane:n,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null};if(Cu(t))oo(e,a);else{var u=t.alternate;if(t.lanes===0&&(u===null||u.lanes===0)&&(u=e.lastRenderedReducer,u!==null))try{var c=e.lastRenderedState,o=u(c,l);if(a.hasEagerState=!0,a.eagerState=o,ve(o,c))return mu(t,e,a,0),zt===null&&du(),!1}catch{}finally{}if(l=lc(t,e,a,n),l!==null)return se(l,t,n),mo(l,e,n),!0}return!1}function Lc(t,e,l,n){if(n={lane:2,revertLane:gf(),gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Cu(t)){if(e)throw Error(f(479))}else e=lc(t,l,n,2),e!==null&&se(e,t,2)}function Cu(t){var e=t.alternate;return t===lt||e!==null&&e===lt}function oo(t,e){Nn=Ou=!0;var l=t.pending;l===null?e.next=e:(e.next=l.next,l.next=e),t.pending=e}function mo(t,e,l){if((l&4194048)!==0){var n=e.lanes;n&=t.pendingLanes,l|=n,e.lanes=l,ps(t,l)}}var ba={readContext:kt,use:Nu,useCallback:Dt,useContext:Dt,useEffect:Dt,useImperativeHandle:Dt,useLayoutEffect:Dt,useInsertionEffect:Dt,useMemo:Dt,useReducer:Dt,useRef:Dt,useState:Dt,useDebugValue:Dt,useDeferredValue:Dt,useTransition:Dt,useSyncExternalStore:Dt,useId:Dt,useHostTransitionStatus:Dt,useFormState:Dt,useActionState:Dt,useOptimistic:Dt,useMemoCache:Dt,useCacheRefresh:Dt};ba.useEffectEvent=Dt;var ho={readContext:kt,use:Nu,useCallback:function(t,e){return ee().memoizedState=[t,e===void 0?null:e],t},useContext:kt,useEffect:$r,useImperativeHandle:function(t,e,l){l=l!=null?l.concat([t]):null,Mu(4194308,4,to.bind(null,e,t),l)},useLayoutEffect:function(t,e){return Mu(4194308,4,t,e)},useInsertionEffect:function(t,e){Mu(4,2,t,e)},useMemo:function(t,e){var l=ee();e=e===void 0?null:e;var n=t();if($l){ol(!0);try{t()}finally{ol(!1)}}return l.memoizedState=[n,e],n},useReducer:function(t,e,l){var n=ee();if(l!==void 0){var a=l(e);if($l){ol(!0);try{l(e)}finally{ol(!1)}}}else a=e;return n.memoizedState=n.baseState=a,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:a},n.queue=t,t=t.dispatch=Rh.bind(null,lt,t),[n.memoizedState,t]},useRef:function(t){var e=ee();return t={current:t},e.memoizedState=t},useState:function(t){t=Uc(t);var e=t.queue,l=ro.bind(null,lt,e);return e.dispatch=l,[t.memoizedState,l]},useDebugValue:Hc,useDeferredValue:function(t,e){var l=ee();return Bc(l,t,e)},useTransition:function(){var t=Uc(!1);return t=uo.bind(null,lt,t.queue,!0,!1),ee().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,e,l){var n=lt,a=ee();if(ht){if(l===void 0)throw Error(f(407));l=l()}else{if(l=e(),zt===null)throw Error(f(349));(dt&127)!==0||jr(n,e,l)}a.memoizedState=l;var u={value:l,getSnapshot:e};return a.queue=u,$r(Br.bind(null,n,u,t),[t]),n.flags|=2048,Mn(9,{destroy:void 0},Hr.bind(null,n,u,l,e),null),l},useId:function(){var t=ee(),e=zt.identifierPrefix;if(ht){var l=Qe,n=Ge;l=(n&~(1<<32-ye(n)-1)).toString(32)+l,e="_"+e+"R_"+l,l=_u++,0<\/script>",u=u.removeChild(u.firstChild);break;case"select":u=typeof n.is=="string"?c.createElement("select",{is:n.is}):c.createElement("select"),n.multiple?u.multiple=!0:n.size&&(u.size=n.size);break;default:u=typeof n.is=="string"?c.createElement(a,{is:n.is}):c.createElement(a)}}u[Kt]=e,u[ne]=n;t:for(c=e.child;c!==null;){if(c.tag===5||c.tag===6)u.appendChild(c.stateNode);else if(c.tag!==4&&c.tag!==27&&c.child!==null){c.child.return=c,c=c.child;continue}if(c===e)break t;for(;c.sibling===null;){if(c.return===null||c.return===e)break t;c=c.return}c.sibling.return=c.return,c=c.sibling}e.stateNode=u;t:switch($t(u,a,n),a){case"button":case"input":case"select":case"textarea":n=!!n.autoFocus;break t;case"img":n=!0;break t;default:n=!1}n&&nl(e)}}return _t(e),Pc(e,e.type,t===null?null:t.memoizedProps,e.pendingProps,l),null;case 6:if(t&&e.stateNode!=null)t.memoizedProps!==n&&nl(e);else{if(typeof n!="string"&&e.stateNode===null)throw Error(f(166));if(t=at.current,xn(e)){if(t=e.stateNode,l=e.memoizedProps,n=null,a=Jt,a!==null)switch(a.tag){case 27:case 5:n=a.memoizedProps}t[Kt]=e,t=!!(t.nodeValue===l||n!==null&&n.suppressHydrationWarning===!0||Cd(t.nodeValue,l)),t||vl(e,!0)}else t=Pu(t).createTextNode(n),t[Kt]=e,e.stateNode=t}return _t(e),null;case 31:if(l=e.memoizedState,t===null||t.memoizedState!==null){if(n=xn(e),l!==null){if(t===null){if(!n)throw Error(f(318));if(t=e.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(f(557));t[Kt]=e}else Ql(),(e.flags&128)===0&&(e.memoizedState=null),e.flags|=4;_t(e),t=!1}else l=sc(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=l),t=!0;if(!t)return e.flags&256?(be(e),e):(be(e),null);if((e.flags&128)!==0)throw Error(f(558))}return _t(e),null;case 13:if(n=e.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(a=xn(e),n!==null&&n.dehydrated!==null){if(t===null){if(!a)throw Error(f(318));if(a=e.memoizedState,a=a!==null?a.dehydrated:null,!a)throw Error(f(317));a[Kt]=e}else Ql(),(e.flags&128)===0&&(e.memoizedState=null),e.flags|=4;_t(e),a=!1}else a=sc(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=a),a=!0;if(!a)return e.flags&256?(be(e),e):(be(e),null)}return be(e),(e.flags&128)!==0?(e.lanes=l,e):(l=n!==null,t=t!==null&&t.memoizedState!==null,l&&(n=e.child,a=null,n.alternate!==null&&n.alternate.memoizedState!==null&&n.alternate.memoizedState.cachePool!==null&&(a=n.alternate.memoizedState.cachePool.pool),u=null,n.memoizedState!==null&&n.memoizedState.cachePool!==null&&(u=n.memoizedState.cachePool.pool),u!==a&&(n.flags|=2048)),l!==t&&l&&(e.child.flags|=8192),wu(e,e.updateQueue),_t(e),null);case 4:return Et(),t===null&&xf(e.stateNode.containerInfo),_t(e),null;case 10:return Pe(e.type),_t(e),null;case 19:if(j(Ut),n=e.memoizedState,n===null)return _t(e),null;if(a=(e.flags&128)!==0,u=n.rendering,u===null)if(a)Ea(n,!1);else{if(Mt!==0||t!==null&&(t.flags&128)!==0)for(t=e.child;t!==null;){if(u=zu(t),u!==null){for(e.flags|=128,Ea(n,!1),t=u.updateQueue,e.updateQueue=t,wu(e,t),e.subtreeFlags=0,t=l,l=e.child;l!==null;)rr(l,t),l=l.sibling;return q(Ut,Ut.current&1|2),ht&&We(e,n.treeForkCount),e.child}t=t.sibling}n.tail!==null&&me()>Qu&&(e.flags|=128,a=!0,Ea(n,!1),e.lanes=4194304)}else{if(!a)if(t=zu(u),t!==null){if(e.flags|=128,a=!0,t=t.updateQueue,e.updateQueue=t,wu(e,t),Ea(n,!0),n.tail===null&&n.tailMode==="hidden"&&!u.alternate&&!ht)return _t(e),null}else 2*me()-n.renderingStartTime>Qu&&l!==536870912&&(e.flags|=128,a=!0,Ea(n,!1),e.lanes=4194304);n.isBackwards?(u.sibling=e.child,e.child=u):(t=n.last,t!==null?t.sibling=u:e.child=u,n.last=u)}return n.tail!==null?(t=n.tail,n.rendering=t,n.tail=t.sibling,n.renderingStartTime=me(),t.sibling=null,l=Ut.current,q(Ut,a?l&1|2:l&1),ht&&We(e,n.treeForkCount),t):(_t(e),null);case 22:case 23:return be(e),xc(),n=e.memoizedState!==null,t!==null?t.memoizedState!==null!==n&&(e.flags|=8192):n&&(e.flags|=8192),n?(l&536870912)!==0&&(e.flags&128)===0&&(_t(e),e.subtreeFlags&6&&(e.flags|=8192)):_t(e),l=e.updateQueue,l!==null&&wu(e,l.retryQueue),l=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(l=t.memoizedState.cachePool.pool),n=null,e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),n!==l&&(e.flags|=2048),t!==null&&j(Kl),null;case 24:return l=null,t!==null&&(l=t.memoizedState.cache),e.memoizedState.cache!==l&&(e.flags|=2048),Pe(Bt),_t(e),null;case 25:return null;case 30:return null}throw Error(f(156,e.tag))}function Ch(t,e){switch(cc(e),e.tag){case 1:return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 3:return Pe(Bt),Et(),t=e.flags,(t&65536)!==0&&(t&128)===0?(e.flags=t&-65537|128,e):null;case 26:case 27:case 5:return Ke(e),null;case 31:if(e.memoizedState!==null){if(be(e),e.alternate===null)throw Error(f(340));Ql()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 13:if(be(e),t=e.memoizedState,t!==null&&t.dehydrated!==null){if(e.alternate===null)throw Error(f(340));Ql()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 19:return j(Ut),null;case 4:return Et(),null;case 10:return Pe(e.type),null;case 22:case 23:return be(e),xc(),t!==null&&j(Kl),t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 24:return Pe(Bt),null;case 25:return null;default:return null}}function wo(t,e){switch(cc(e),e.tag){case 3:Pe(Bt),Et();break;case 26:case 27:case 5:Ke(e);break;case 4:Et();break;case 31:e.memoizedState!==null&&be(e);break;case 13:be(e);break;case 19:j(Ut);break;case 10:Pe(e.type);break;case 22:case 23:be(e),xc(),t!==null&&j(Kl);break;case 24:Pe(Bt)}}function xa(t,e){try{var l=e.updateQueue,n=l!==null?l.lastEffect:null;if(n!==null){var a=n.next;l=a;do{if((l.tag&t)===t){n=void 0;var u=l.create,c=l.inst;n=u(),c.destroy=n}l=l.next}while(l!==a)}}catch(o){St(e,e.return,o)}}function Tl(t,e,l){try{var n=e.updateQueue,a=n!==null?n.lastEffect:null;if(a!==null){var u=a.next;n=u;do{if((n.tag&t)===t){var c=n.inst,o=c.destroy;if(o!==void 0){c.destroy=void 0,a=e;var h=l,A=o;try{A()}catch(D){St(a,h,D)}}}n=n.next}while(n!==u)}}catch(D){St(e,e.return,D)}}function Lo(t){var e=t.updateQueue;if(e!==null){var l=t.stateNode;try{Rr(e,l)}catch(n){St(t,t.return,n)}}}function Yo(t,e,l){l.props=Wl(t.type,t.memoizedProps),l.state=t.memoizedState;try{l.componentWillUnmount()}catch(n){St(t,e,n)}}function Ta(t,e){try{var l=t.ref;if(l!==null){switch(t.tag){case 26:case 27:case 5:var n=t.stateNode;break;case 30:n=t.stateNode;break;default:n=t.stateNode}typeof l=="function"?t.refCleanup=l(n):l.current=n}}catch(a){St(t,e,a)}}function Ve(t,e){var l=t.ref,n=t.refCleanup;if(l!==null)if(typeof n=="function")try{n()}catch(a){St(t,e,a)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof l=="function")try{l(null)}catch(a){St(t,e,a)}else l.current=null}function Xo(t){var e=t.type,l=t.memoizedProps,n=t.stateNode;try{t:switch(e){case"button":case"input":case"select":case"textarea":l.autoFocus&&n.focus();break t;case"img":l.src?n.src=l.src:l.srcSet&&(n.srcset=l.srcSet)}}catch(a){St(t,t.return,a)}}function tf(t,e,l){try{var n=t.stateNode;ey(n,t.type,l,e),n[ne]=e}catch(a){St(t,t.return,a)}}function Go(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&Dl(t.type)||t.tag===4}function ef(t){t:for(;;){for(;t.sibling===null;){if(t.return===null||Go(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.tag===27&&Dl(t.type)||t.flags&2||t.child===null||t.tag===4)continue t;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function lf(t,e,l){var n=t.tag;if(n===5||n===6)t=t.stateNode,e?(l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l).insertBefore(t,e):(e=l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l,e.appendChild(t),l=l._reactRootContainer,l!=null||e.onclick!==null||(e.onclick=ke));else if(n!==4&&(n===27&&Dl(t.type)&&(l=t.stateNode,e=null),t=t.child,t!==null))for(lf(t,e,l),t=t.sibling;t!==null;)lf(t,e,l),t=t.sibling}function Lu(t,e,l){var n=t.tag;if(n===5||n===6)t=t.stateNode,e?l.insertBefore(t,e):l.appendChild(t);else if(n!==4&&(n===27&&Dl(t.type)&&(l=t.stateNode),t=t.child,t!==null))for(Lu(t,e,l),t=t.sibling;t!==null;)Lu(t,e,l),t=t.sibling}function Qo(t){var e=t.stateNode,l=t.memoizedProps;try{for(var n=t.type,a=e.attributes;a.length;)e.removeAttributeNode(a[0]);$t(e,n,l),e[Kt]=t,e[ne]=l}catch(u){St(t,t.return,u)}}var al=!1,Lt=!1,nf=!1,Vo=typeof WeakSet=="function"?WeakSet:Set,Zt=null;function jh(t,e){if(t=t.containerInfo,zf=ii,t=er(t),$i(t)){if("selectionStart"in t)var l={start:t.selectionStart,end:t.selectionEnd};else t:{l=(l=t.ownerDocument)&&l.defaultView||window;var n=l.getSelection&&l.getSelection();if(n&&n.rangeCount!==0){l=n.anchorNode;var a=n.anchorOffset,u=n.focusNode;n=n.focusOffset;try{l.nodeType,u.nodeType}catch{l=null;break t}var c=0,o=-1,h=-1,A=0,D=0,C=t,O=null;e:for(;;){for(var _;C!==l||a!==0&&C.nodeType!==3||(o=c+a),C!==u||n!==0&&C.nodeType!==3||(h=c+n),C.nodeType===3&&(c+=C.nodeValue.length),(_=C.firstChild)!==null;)O=C,C=_;for(;;){if(C===t)break e;if(O===l&&++A===a&&(o=c),O===u&&++D===n&&(h=c),(_=C.nextSibling)!==null)break;C=O,O=C.parentNode}C=_}l=o===-1||h===-1?null:{start:o,end:h}}else l=null}l=l||{start:0,end:0}}else l=null;for(Of={focusedElem:t,selectionRange:l},ii=!1,Zt=e;Zt!==null;)if(e=Zt,t=e.child,(e.subtreeFlags&1028)!==0&&t!==null)t.return=e,Zt=t;else for(;Zt!==null;){switch(e=Zt,u=e.alternate,t=e.flags,e.tag){case 0:if((t&4)!==0&&(t=e.updateQueue,t=t!==null?t.events:null,t!==null))for(l=0;l title"))),$t(u,n,l),u[Kt]=t,Vt(u),n=u;break t;case"link":var c=$d("link","href",a).get(n+(l.href||""));if(c){for(var o=0;oAt&&(c=At,At=W,W=c);var S=Ps(o,W),g=Ps(o,At);if(S&&g&&(_.rangeCount!==1||_.anchorNode!==S.node||_.anchorOffset!==S.offset||_.focusNode!==g.node||_.focusOffset!==g.offset)){var T=C.createRange();T.setStart(S.node,S.offset),_.removeAllRanges(),W>At?(_.addRange(T),_.extend(g.node,g.offset)):(T.setEnd(g.node,g.offset),_.addRange(T))}}}}for(C=[],_=o;_=_.parentNode;)_.nodeType===1&&C.push({element:_,left:_.scrollLeft,top:_.scrollTop});for(typeof o.focus=="function"&&o.focus(),o=0;ol?32:l,N.T=null,l=of,of=null;var u=_l,c=sl;if(Xt=0,Bn=_l=null,sl=0,(pt&6)!==0)throw Error(f(331));var o=pt;if(pt|=4,ed(u.current),Io(u,u.current,c,l),pt=o,Na(0,!1),he&&typeof he.onPostCommitFiberRoot=="function")try{he.onPostCommitFiberRoot(Jn,u)}catch{}return!0}finally{L.p=a,N.T=n,bd(t,e)}}function Ed(t,e,l){e=_e(l,e),e=Qc(t.stateNode,e,2),t=Sl(t,e,2),t!==null&&(Fn(t,2),Ze(t))}function St(t,e,l){if(t.tag===3)Ed(t,t,l);else for(;e!==null;){if(e.tag===3){Ed(e,t,l);break}else if(e.tag===1){var n=e.stateNode;if(typeof e.type.getDerivedStateFromError=="function"||typeof n.componentDidCatch=="function"&&(Ol===null||!Ol.has(n))){t=_e(l,t),l=xo(2),n=Sl(e,l,2),n!==null&&(To(l,n,e,t),Fn(n,2),Ze(n));break}}e=e.return}}function yf(t,e,l){var n=t.pingCache;if(n===null){n=t.pingCache=new qh;var a=new Set;n.set(e,a)}else a=n.get(e),a===void 0&&(a=new Set,n.set(e,a));a.has(l)||(cf=!0,a.add(l),t=Gh.bind(null,t,e,l),e.then(t,t))}function Gh(t,e,l){var n=t.pingCache;n!==null&&n.delete(e),t.pingedLanes|=t.suspendedLanes&l,t.warmLanes&=~l,zt===t&&(dt&l)===l&&(Mt===4||Mt===3&&(dt&62914560)===dt&&300>me()-Gu?(pt&2)===0&&qn(t,0):ff|=l,Hn===dt&&(Hn=0)),Ze(t)}function xd(t,e){e===0&&(e=ys()),t=Xl(t,e),t!==null&&(Fn(t,e),Ze(t))}function Qh(t){var e=t.memoizedState,l=0;e!==null&&(l=e.retryLane),xd(t,l)}function Vh(t,e){var l=0;switch(t.tag){case 31:case 13:var n=t.stateNode,a=t.memoizedState;a!==null&&(l=a.retryLane);break;case 19:n=t.stateNode;break;case 22:n=t.stateNode._retryCache;break;default:throw Error(f(314))}n!==null&&n.delete(e),xd(t,l)}function Zh(t,e){return _i(t,e)}var Fu=null,Ln=null,vf=!1,$u=!1,pf=!1,Nl=0;function Ze(t){t!==Ln&&t.next===null&&(Ln===null?Fu=Ln=t:Ln=Ln.next=t),$u=!0,vf||(vf=!0,Jh())}function Na(t,e){if(!pf&&$u){pf=!0;do for(var l=!1,n=Fu;n!==null;){if(t!==0){var a=n.pendingLanes;if(a===0)var u=0;else{var c=n.suspendedLanes,o=n.pingedLanes;u=(1<<31-ye(42|t)+1)-1,u&=a&~(c&~o),u=u&201326741?u&201326741|1:u?u|2:0}u!==0&&(l=!0,Od(n,u))}else u=dt,u=tu(n,n===zt?u:0,n.cancelPendingCommit!==null||n.timeoutHandle!==-1),(u&3)===0||kn(n,u)||(l=!0,Od(n,u));n=n.next}while(l);pf=!1}}function Kh(){Td()}function Td(){$u=vf=!1;var t=0;Nl!==0&&ny()&&(t=Nl);for(var e=me(),l=null,n=Fu;n!==null;){var a=n.next,u=Ad(n,e);u===0?(n.next=null,l===null?Fu=a:l.next=a,a===null&&(Ln=l)):(l=n,(t!==0||(u&3)!==0)&&($u=!0)),n=a}Xt!==0&&Xt!==5||Na(t),Nl!==0&&(Nl=0)}function Ad(t,e){for(var l=t.suspendedLanes,n=t.pingedLanes,a=t.expirationTimes,u=t.pendingLanes&-62914561;0o)break;var D=h.transferSize,C=h.initiatorType;D&&jd(C)&&(h=h.responseEnd,c+=D*(h"u"?null:document;function Kd(t,e,l){var n=Yn;if(n&&typeof e=="string"&&e){var a=ze(e);a='link[rel="'+t+'"][href="'+a+'"]',typeof l=="string"&&(a+='[crossorigin="'+l+'"]'),Zd.has(a)||(Zd.add(a),t={rel:t,crossOrigin:l,href:e},n.querySelector(a)===null&&(e=n.createElement("link"),$t(e,"link",t),Vt(e),n.head.appendChild(e)))}}function dy(t){rl.D(t),Kd("dns-prefetch",t,null)}function my(t,e){rl.C(t,e),Kd("preconnect",t,e)}function hy(t,e,l){rl.L(t,e,l);var n=Yn;if(n&&t&&e){var a='link[rel="preload"][as="'+ze(e)+'"]';e==="image"&&l&&l.imageSrcSet?(a+='[imagesrcset="'+ze(l.imageSrcSet)+'"]',typeof l.imageSizes=="string"&&(a+='[imagesizes="'+ze(l.imageSizes)+'"]')):a+='[href="'+ze(t)+'"]';var u=a;switch(e){case"style":u=Xn(t);break;case"script":u=Gn(t)}Ce.has(u)||(t=H({rel:"preload",href:e==="image"&&l&&l.imageSrcSet?void 0:t,as:e},l),Ce.set(u,t),n.querySelector(a)!==null||e==="style"&&n.querySelector(Ca(u))||e==="script"&&n.querySelector(ja(u))||(e=n.createElement("link"),$t(e,"link",t),Vt(e),n.head.appendChild(e)))}}function yy(t,e){rl.m(t,e);var l=Yn;if(l&&t){var n=e&&typeof e.as=="string"?e.as:"script",a='link[rel="modulepreload"][as="'+ze(n)+'"][href="'+ze(t)+'"]',u=a;switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":u=Gn(t)}if(!Ce.has(u)&&(t=H({rel:"modulepreload",href:t},e),Ce.set(u,t),l.querySelector(a)===null)){switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(l.querySelector(ja(u)))return}n=l.createElement("link"),$t(n,"link",t),Vt(n),l.head.appendChild(n)}}}function vy(t,e,l){rl.S(t,e,l);var n=Yn;if(n&&t){var a=sn(n).hoistableStyles,u=Xn(t);e=e||"default";var c=a.get(u);if(!c){var o={loading:0,preload:null};if(c=n.querySelector(Ca(u)))o.loading=5;else{t=H({rel:"stylesheet",href:t,"data-precedence":e},l),(l=Ce.get(u))&&Cf(t,l);var h=c=n.createElement("link");Vt(h),$t(h,"link",t),h._p=new Promise(function(A,D){h.onload=A,h.onerror=D}),h.addEventListener("load",function(){o.loading|=1}),h.addEventListener("error",function(){o.loading|=2}),o.loading|=4,ei(c,e,n)}c={type:"stylesheet",instance:c,count:1,state:o},a.set(u,c)}}}function py(t,e){rl.X(t,e);var l=Yn;if(l&&t){var n=sn(l).hoistableScripts,a=Gn(t),u=n.get(a);u||(u=l.querySelector(ja(a)),u||(t=H({src:t,async:!0},e),(e=Ce.get(a))&&jf(t,e),u=l.createElement("script"),Vt(u),$t(u,"link",t),l.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},n.set(a,u))}}function gy(t,e){rl.M(t,e);var l=Yn;if(l&&t){var n=sn(l).hoistableScripts,a=Gn(t),u=n.get(a);u||(u=l.querySelector(ja(a)),u||(t=H({src:t,async:!0,type:"module"},e),(e=Ce.get(a))&&jf(t,e),u=l.createElement("script"),Vt(u),$t(u,"link",t),l.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},n.set(a,u))}}function Jd(t,e,l,n){var a=(a=at.current)?ti(a):null;if(!a)throw Error(f(446));switch(t){case"meta":case"title":return null;case"style":return typeof l.precedence=="string"&&typeof l.href=="string"?(e=Xn(l.href),l=sn(a).hoistableStyles,n=l.get(e),n||(n={type:"style",instance:null,count:0,state:null},l.set(e,n)),n):{type:"void",instance:null,count:0,state:null};case"link":if(l.rel==="stylesheet"&&typeof l.href=="string"&&typeof l.precedence=="string"){t=Xn(l.href);var u=sn(a).hoistableStyles,c=u.get(t);if(c||(a=a.ownerDocument||a,c={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},u.set(t,c),(u=a.querySelector(Ca(t)))&&!u._p&&(c.instance=u,c.state.loading=5),Ce.has(t)||(l={rel:"preload",as:"style",href:l.href,crossOrigin:l.crossOrigin,integrity:l.integrity,media:l.media,hrefLang:l.hrefLang,referrerPolicy:l.referrerPolicy},Ce.set(t,l),u||by(a,t,l,c.state))),e&&n===null)throw Error(f(528,""));return c}if(e&&n!==null)throw Error(f(529,""));return null;case"script":return e=l.async,l=l.src,typeof l=="string"&&e&&typeof e!="function"&&typeof e!="symbol"?(e=Gn(l),l=sn(a).hoistableScripts,n=l.get(e),n||(n={type:"script",instance:null,count:0,state:null},l.set(e,n)),n):{type:"void",instance:null,count:0,state:null};default:throw Error(f(444,t))}}function Xn(t){return'href="'+ze(t)+'"'}function Ca(t){return'link[rel="stylesheet"]['+t+"]"}function kd(t){return H({},t,{"data-precedence":t.precedence,precedence:null})}function by(t,e,l,n){t.querySelector('link[rel="preload"][as="style"]['+e+"]")?n.loading=1:(e=t.createElement("link"),n.preload=e,e.addEventListener("load",function(){return n.loading|=1}),e.addEventListener("error",function(){return n.loading|=2}),$t(e,"link",l),Vt(e),t.head.appendChild(e))}function Gn(t){return'[src="'+ze(t)+'"]'}function ja(t){return"script[async]"+t}function Fd(t,e,l){if(e.count++,e.instance===null)switch(e.type){case"style":var n=t.querySelector('style[data-href~="'+ze(l.href)+'"]');if(n)return e.instance=n,Vt(n),n;var a=H({},l,{"data-href":l.href,"data-precedence":l.precedence,href:null,precedence:null});return n=(t.ownerDocument||t).createElement("style"),Vt(n),$t(n,"style",a),ei(n,l.precedence,t),e.instance=n;case"stylesheet":a=Xn(l.href);var u=t.querySelector(Ca(a));if(u)return e.state.loading|=4,e.instance=u,Vt(u),u;n=kd(l),(a=Ce.get(a))&&Cf(n,a),u=(t.ownerDocument||t).createElement("link"),Vt(u);var c=u;return c._p=new Promise(function(o,h){c.onload=o,c.onerror=h}),$t(u,"link",n),e.state.loading|=4,ei(u,l.precedence,t),e.instance=u;case"script":return u=Gn(l.src),(a=t.querySelector(ja(u)))?(e.instance=a,Vt(a),a):(n=l,(a=Ce.get(u))&&(n=H({},l),jf(n,a)),t=t.ownerDocument||t,a=t.createElement("script"),Vt(a),$t(a,"link",n),t.head.appendChild(a),e.instance=a);case"void":return null;default:throw Error(f(443,e.type))}else e.type==="stylesheet"&&(e.state.loading&4)===0&&(n=e.instance,e.state.loading|=4,ei(n,l.precedence,t));return e.instance}function ei(t,e,l){for(var n=l.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),a=n.length?n[n.length-1]:null,u=a,c=0;c title"):null)}function Sy(t,e,l){if(l===1||e.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof e.precedence!="string"||typeof e.href!="string"||e.href==="")break;return!0;case"link":if(typeof e.rel!="string"||typeof e.href!="string"||e.href===""||e.onLoad||e.onError)break;switch(e.rel){case"stylesheet":return t=e.disabled,typeof e.precedence=="string"&&t==null;default:return!0}case"script":if(e.async&&typeof e.async!="function"&&typeof e.async!="symbol"&&!e.onLoad&&!e.onError&&e.src&&typeof e.src=="string")return!0}return!1}function Id(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function Ey(t,e,l,n){if(l.type==="stylesheet"&&(typeof n.media!="string"||matchMedia(n.media).matches!==!1)&&(l.state.loading&4)===0){if(l.instance===null){var a=Xn(n.href),u=e.querySelector(Ca(a));if(u){e=u._p,e!==null&&typeof e=="object"&&typeof e.then=="function"&&(t.count++,t=ni.bind(t),e.then(t,t)),l.state.loading|=4,l.instance=u,Vt(u);return}u=e.ownerDocument||e,n=kd(n),(a=Ce.get(a))&&Cf(n,a),u=u.createElement("link"),Vt(u);var c=u;c._p=new Promise(function(o,h){c.onload=o,c.onerror=h}),$t(u,"link",n),l.instance=u}t.stylesheets===null&&(t.stylesheets=new Map),t.stylesheets.set(l,e),(e=l.state.preload)&&(l.state.loading&3)===0&&(t.count++,l=ni.bind(t),e.addEventListener("load",l),e.addEventListener("error",l))}}var Hf=0;function xy(t,e){return t.stylesheets&&t.count===0&&ui(t,t.stylesheets),0Hf?50:800)+e);return t.unsuspend=l,function(){t.unsuspend=null,clearTimeout(n),clearTimeout(a)}}:null}function ni(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)ui(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var ai=null;function ui(t,e){t.stylesheets=null,t.unsuspend!==null&&(t.count++,ai=new Map,e.forEach(Ty,t),ai=null,ni.call(t))}function Ty(t,e){if(!(e.state.loading&4)){var l=ai.get(t);if(l)var n=l.get(null);else{l=new Map,ai.set(t,l);for(var a=t.querySelectorAll("link[data-precedence],style[data-precedence]"),u=0;u"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(s){console.error(s)}}return i(),Vf.exports=Xy(),Vf.exports}var Qy=Gy();/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Vy=i=>i.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),w0=(...i)=>i.filter((s,r,f)=>!!s&&s.trim()!==""&&f.indexOf(s)===r).join(" ").trim();/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */var Zy={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Ky=gt.forwardRef(({color:i="currentColor",size:s=24,strokeWidth:r=2,absoluteStrokeWidth:f,className:d="",children:m,iconNode:y,...b},E)=>gt.createElement("svg",{ref:E,...Zy,width:s,height:s,stroke:i,strokeWidth:f?Number(r)*24/Number(s):r,className:w0("lucide",d),...b},[...y.map(([v,R])=>gt.createElement(v,R)),...Array.isArray(m)?m:[m]]));/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Te=(i,s)=>{const r=gt.forwardRef(({className:f,...d},m)=>gt.createElement(Ky,{ref:m,iconNode:s,className:w0(`lucide-${Vy(i)}`,f),...d}));return r.displayName=`${i}`,r};/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Jy=Te("ArrowLeft",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const ky=Te("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Fy=Te("Circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const $y=Te("DatabaseBackup",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 12a9 3 0 0 0 5 2.69",key:"1ui2ym"}],["path",{d:"M21 9.3V5",key:"6k6cib"}],["path",{d:"M3 5v14a9 3 0 0 0 6.47 2.88",key:"i62tjy"}],["path",{d:"M12 12v4h4",key:"1bxaet"}],["path",{d:"M13 20a5 5 0 0 0 9-3 4.5 4.5 0 0 0-4.5-4.5c-1.33 0-2.54.54-3.41 1.41L12 16",key:"1f4ei9"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Wy=Te("EyeOff",[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Iy=Te("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Py=Te("Play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const L0=Te("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const t1=Te("RotateCcw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const e1=Te("Save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const l1=Te("Settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const Y0=Te("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/** - * @license lucide-react v0.468.0 - ISC - * - * This source code is licensed under the ISC license. - * See the LICENSE file in the root directory of this source tree. - */const n1=Te("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);function X0(i,s){return function(){return i.apply(s,arguments)}}const{toString:a1}=Object.prototype,{getPrototypeOf:gi}=Object,{iterator:bi,toStringTag:G0}=Symbol,Si=(i=>s=>{const r=a1.call(s);return i[r]||(i[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),Le=i=>(i=i.toLowerCase(),s=>Si(s)===i),Ei=i=>s=>typeof s===i,{isArray:Kn}=Array,Zn=Ei("undefined");function Va(i){return i!==null&&!Zn(i)&&i.constructor!==null&&!Zn(i.constructor)&&re(i.constructor.isBuffer)&&i.constructor.isBuffer(i)}const Q0=Le("ArrayBuffer");function u1(i){let s;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?s=ArrayBuffer.isView(i):s=i&&i.buffer&&Q0(i.buffer),s}const i1=Ei("string"),re=Ei("function"),V0=Ei("number"),Za=i=>i!==null&&typeof i=="object",c1=i=>i===!0||i===!1,hi=i=>{if(Si(i)!=="object")return!1;const s=gi(i);return(s===null||s===Object.prototype||Object.getPrototypeOf(s)===null)&&!(G0 in i)&&!(bi in i)},f1=i=>{if(!Za(i)||Va(i))return!1;try{return Object.keys(i).length===0&&Object.getPrototypeOf(i)===Object.prototype}catch{return!1}},s1=Le("Date"),r1=Le("File"),o1=i=>!!(i&&typeof i.uri<"u"),d1=i=>i&&typeof i.getParts<"u",m1=Le("Blob"),h1=Le("FileList"),y1=i=>Za(i)&&re(i.pipe);function v1(){return typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{}}const x0=v1(),T0=typeof x0.FormData<"u"?x0.FormData:void 0,p1=i=>{if(!i)return!1;if(T0&&i instanceof T0)return!0;const s=gi(i);if(!s||s===Object.prototype||!re(i.append))return!1;const r=Si(i);return r==="formdata"||r==="object"&&re(i.toString)&&i.toString()==="[object FormData]"},g1=Le("URLSearchParams"),[b1,S1,E1,x1]=["ReadableStream","Request","Response","Headers"].map(Le),T1=i=>i.trim?i.trim():i.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Ka(i,s,{allOwnKeys:r=!1}={}){if(i===null||typeof i>"u")return;let f,d;if(typeof i!="object"&&(i=[i]),Kn(i))for(f=0,d=i.length;f0;)if(d=r[f],s===d.toLowerCase())return d;return null}const tn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,K0=i=>!Zn(i)&&i!==tn;function Pf(...i){const{caseless:s,skipUndefined:r}=K0(this)&&this||{},f={},d=(m,y)=>{if(y==="__proto__"||y==="constructor"||y==="prototype")return;const b=s&&Z0(f,y)||y,E=ts(f,b)?f[b]:void 0;hi(E)&&hi(m)?f[b]=Pf(E,m):hi(m)?f[b]=Pf({},m):Kn(m)?f[b]=m.slice():(!r||!Zn(m))&&(f[b]=m)};for(let m=0,y=i.length;m(Ka(s,(d,m)=>{r&&re(d)?Object.defineProperty(i,m,{__proto__:null,value:X0(d,r),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(i,m,{__proto__:null,value:d,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:f}),i),z1=i=>(i.charCodeAt(0)===65279&&(i=i.slice(1)),i),O1=(i,s,r,f)=>{i.prototype=Object.create(s.prototype,f),Object.defineProperty(i.prototype,"constructor",{__proto__:null,value:i,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(i,"super",{__proto__:null,value:s.prototype}),r&&Object.assign(i.prototype,r)},_1=(i,s,r,f)=>{let d,m,y;const b={};if(s=s||{},i==null)return s;do{for(d=Object.getOwnPropertyNames(i),m=d.length;m-- >0;)y=d[m],(!f||f(y,i,s))&&!b[y]&&(s[y]=i[y],b[y]=!0);i=r!==!1&&gi(i)}while(i&&(!r||r(i,s))&&i!==Object.prototype);return s},R1=(i,s,r)=>{i=String(i),(r===void 0||r>i.length)&&(r=i.length),r-=s.length;const f=i.indexOf(s,r);return f!==-1&&f===r},N1=i=>{if(!i)return null;if(Kn(i))return i;let s=i.length;if(!V0(s))return null;const r=new Array(s);for(;s-- >0;)r[s]=i[s];return r},D1=(i=>s=>i&&s instanceof i)(typeof Uint8Array<"u"&&gi(Uint8Array)),M1=(i,s)=>{const f=(i&&i[bi]).call(i);let d;for(;(d=f.next())&&!d.done;){const m=d.value;s.call(i,m[0],m[1])}},U1=(i,s)=>{let r;const f=[];for(;(r=i.exec(s))!==null;)f.push(r);return f},C1=Le("HTMLFormElement"),j1=i=>i.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(r,f,d){return f.toUpperCase()+d}),ts=(({hasOwnProperty:i})=>(s,r)=>i.call(s,r))(Object.prototype),H1=Le("RegExp"),J0=(i,s)=>{const r=Object.getOwnPropertyDescriptors(i),f={};Ka(r,(d,m)=>{let y;(y=s(d,m,i))!==!1&&(f[m]=y||d)}),Object.defineProperties(i,f)},B1=i=>{J0(i,(s,r)=>{if(re(i)&&["arguments","caller","callee"].includes(r))return!1;const f=i[r];if(re(f)){if(s.enumerable=!1,"writable"in s){s.writable=!1;return}s.set||(s.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")})}})},q1=(i,s)=>{const r={},f=d=>{d.forEach(m=>{r[m]=!0})};return Kn(i)?f(i):f(String(i).split(s)),r},w1=()=>{},L1=(i,s)=>i!=null&&Number.isFinite(i=+i)?i:s;function Y1(i){return!!(i&&re(i.append)&&i[G0]==="FormData"&&i[bi])}const X1=i=>{const s=new WeakSet,r=f=>{if(Za(f)){if(s.has(f))return;if(Va(f))return f;if(!("toJSON"in f)){s.add(f);const d=Kn(f)?[]:{};return Ka(f,(m,y)=>{const b=r(m);!Zn(b)&&(d[y]=b)}),s.delete(f),d}}return f};return r(i)},G1=Le("AsyncFunction"),Q1=i=>i&&(Za(i)||re(i))&&re(i.then)&&re(i.catch),k0=((i,s)=>i?setImmediate:s?((r,f)=>(tn.addEventListener("message",({source:d,data:m})=>{d===tn&&m===r&&f.length&&f.shift()()},!1),d=>{f.push(d),tn.postMessage(r,"*")}))(`axios@${Math.random()}`,[]):r=>setTimeout(r))(typeof setImmediate=="function",re(tn.postMessage)),V1=typeof queueMicrotask<"u"?queueMicrotask.bind(tn):typeof process<"u"&&process.nextTick||k0,Z1=i=>i!=null&&re(i[bi]),x={isArray:Kn,isArrayBuffer:Q0,isBuffer:Va,isFormData:p1,isArrayBufferView:u1,isString:i1,isNumber:V0,isBoolean:c1,isObject:Za,isPlainObject:hi,isEmptyObject:f1,isReadableStream:b1,isRequest:S1,isResponse:E1,isHeaders:x1,isUndefined:Zn,isDate:s1,isFile:r1,isReactNativeBlob:o1,isReactNative:d1,isBlob:m1,isRegExp:H1,isFunction:re,isStream:y1,isURLSearchParams:g1,isTypedArray:D1,isFileList:h1,forEach:Ka,merge:Pf,extend:A1,trim:T1,stripBOM:z1,inherits:O1,toFlatObject:_1,kindOf:Si,kindOfTest:Le,endsWith:R1,toArray:N1,forEachEntry:M1,matchAll:U1,isHTMLForm:C1,hasOwnProperty:ts,hasOwnProp:ts,reduceDescriptors:J0,freezeMethods:B1,toObjectSet:q1,toCamelCase:j1,noop:w1,toFiniteNumber:L1,findKey:Z0,global:tn,isContextDefined:K0,isSpecCompliantForm:Y1,toJSONObject:X1,isAsyncFn:G1,isThenable:Q1,setImmediate:k0,asap:V1,isIterable:Z1},K1=x.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),J1=i=>{const s={};let r,f,d;return i&&i.split(` -`).forEach(function(y){d=y.indexOf(":"),r=y.substring(0,d).trim().toLowerCase(),f=y.substring(d+1).trim(),!(!r||s[r]&&K1[r])&&(r==="set-cookie"?s[r]?s[r].push(f):s[r]=[f]:s[r]=s[r]?s[r]+", "+f:f)}),s};function k1(i){let s=0,r=i.length;for(;ss;){const f=i.charCodeAt(r-1);if(f!==9&&f!==32)break;r-=1}return s===0&&r===i.length?i:i.slice(s,r)}const F1=new RegExp("[\\u0000-\\u0008\\u000a-\\u001f\\u007f]+","g"),$1=new RegExp("[^\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+","g");function us(i,s){return x.isArray(i)?i.map(r=>us(r,s)):k1(String(i).replace(s,""))}const W1=i=>us(i,F1),I1=i=>us(i,$1);function F0(i){const s=Object.create(null);return x.forEach(i.toJSON(),(r,f)=>{s[f]=I1(r)}),s}const A0=Symbol("internals");function Xa(i){return i&&String(i).trim().toLowerCase()}function yi(i){return i===!1||i==null?i:x.isArray(i)?i.map(yi):W1(String(i))}function P1(i){const s=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let f;for(;f=r.exec(i);)s[f[1]]=f[2];return s}const tv=i=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(i.trim());function kf(i,s,r,f,d){if(x.isFunction(f))return f.call(this,s,r);if(d&&(s=r),!!x.isString(s)){if(x.isString(f))return s.indexOf(f)!==-1;if(x.isRegExp(f))return f.test(s)}}function ev(i){return i.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(s,r,f)=>r.toUpperCase()+f)}function lv(i,s){const r=x.toCamelCase(" "+s);["get","set","has"].forEach(f=>{Object.defineProperty(i,f+r,{__proto__:null,value:function(d,m,y){return this[f].call(this,s,d,m,y)},configurable:!0})})}let le=class{constructor(s){s&&this.set(s)}set(s,r,f){const d=this;function m(b,E,v){const R=Xa(E);if(!R)throw new Error("header name must be a non-empty string");const H=x.findKey(d,R);(!H||d[H]===void 0||v===!0||v===void 0&&d[H]!==!1)&&(d[H||E]=yi(b))}const y=(b,E)=>x.forEach(b,(v,R)=>m(v,R,E));if(x.isPlainObject(s)||s instanceof this.constructor)y(s,r);else if(x.isString(s)&&(s=s.trim())&&!tv(s))y(J1(s),r);else if(x.isObject(s)&&x.isIterable(s)){let b={},E,v;for(const R of s){if(!x.isArray(R))throw TypeError("Object iterator must return a key-value pair");b[v=R[0]]=(E=b[v])?x.isArray(E)?[...E,R[1]]:[E,R[1]]:R[1]}y(b,r)}else s!=null&&m(r,s,f);return this}get(s,r){if(s=Xa(s),s){const f=x.findKey(this,s);if(f){const d=this[f];if(!r)return d;if(r===!0)return P1(d);if(x.isFunction(r))return r.call(this,d,f);if(x.isRegExp(r))return r.exec(d);throw new TypeError("parser must be boolean|regexp|function")}}}has(s,r){if(s=Xa(s),s){const f=x.findKey(this,s);return!!(f&&this[f]!==void 0&&(!r||kf(this,this[f],f,r)))}return!1}delete(s,r){const f=this;let d=!1;function m(y){if(y=Xa(y),y){const b=x.findKey(f,y);b&&(!r||kf(f,f[b],b,r))&&(delete f[b],d=!0)}}return x.isArray(s)?s.forEach(m):m(s),d}clear(s){const r=Object.keys(this);let f=r.length,d=!1;for(;f--;){const m=r[f];(!s||kf(this,this[m],m,s,!0))&&(delete this[m],d=!0)}return d}normalize(s){const r=this,f={};return x.forEach(this,(d,m)=>{const y=x.findKey(f,m);if(y){r[y]=yi(d),delete r[m];return}const b=s?ev(m):String(m).trim();b!==m&&delete r[m],r[b]=yi(d),f[b]=!0}),this}concat(...s){return this.constructor.concat(this,...s)}toJSON(s){const r=Object.create(null);return x.forEach(this,(f,d)=>{f!=null&&f!==!1&&(r[d]=s&&x.isArray(f)?f.join(", "):f)}),r}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([s,r])=>s+": "+r).join(` -`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(s){return s instanceof this?s:new this(s)}static concat(s,...r){const f=new this(s);return r.forEach(d=>f.set(d)),f}static accessor(s){const f=(this[A0]=this[A0]={accessors:{}}).accessors,d=this.prototype;function m(y){const b=Xa(y);f[b]||(lv(d,y),f[b]=!0)}return x.isArray(s)?s.forEach(m):m(s),this}};le.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);x.reduceDescriptors(le.prototype,({value:i},s)=>{let r=s[0].toUpperCase()+s.slice(1);return{get:()=>i,set(f){this[r]=f}}});x.freezeMethods(le);const nv="[REDACTED ****]";function av(i){if(x.hasOwnProp(i,"toJSON"))return!0;let s=Object.getPrototypeOf(i);for(;s&&s!==Object.prototype;){if(x.hasOwnProp(s,"toJSON"))return!0;s=Object.getPrototypeOf(s)}return!1}function uv(i,s){const r=new Set(s.map(m=>String(m).toLowerCase())),f=[],d=m=>{if(m===null||typeof m!="object"||x.isBuffer(m))return m;if(f.indexOf(m)!==-1)return;m instanceof le&&(m=m.toJSON()),f.push(m);let y;if(x.isArray(m))y=[],m.forEach((b,E)=>{const v=d(b);x.isUndefined(v)||(y[E]=v)});else{if(!x.isPlainObject(m)&&av(m))return f.pop(),m;y=Object.create(null);for(const[b,E]of Object.entries(m)){const v=r.has(b.toLowerCase())?nv:d(E);x.isUndefined(v)||(y[b]=v)}}return f.pop(),y};return d(i)}let V=class $0 extends Error{static from(s,r,f,d,m,y){const b=new $0(s.message,r||s.code,f,d,m);return b.cause=s,b.name=s.name,s.status!=null&&b.status==null&&(b.status=s.status),y&&Object.assign(b,y),b}constructor(s,r,f,d,m){super(s),Object.defineProperty(this,"message",{__proto__:null,value:s,enumerable:!0,writable:!0,configurable:!0}),this.name="AxiosError",this.isAxiosError=!0,r&&(this.code=r),f&&(this.config=f),d&&(this.request=d),m&&(this.response=m,this.status=m.status)}toJSON(){const s=this.config,r=s&&x.hasOwnProp(s,"redact")?s.redact:void 0,f=x.isArray(r)&&r.length>0?uv(s,r):x.toJSONObject(s);return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:f,code:this.code,status:this.status}}};V.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE";V.ERR_BAD_OPTION="ERR_BAD_OPTION";V.ECONNABORTED="ECONNABORTED";V.ETIMEDOUT="ETIMEDOUT";V.ECONNREFUSED="ECONNREFUSED";V.ERR_NETWORK="ERR_NETWORK";V.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS";V.ERR_DEPRECATED="ERR_DEPRECATED";V.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE";V.ERR_BAD_REQUEST="ERR_BAD_REQUEST";V.ERR_CANCELED="ERR_CANCELED";V.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT";V.ERR_INVALID_URL="ERR_INVALID_URL";V.ERR_FORM_DATA_DEPTH_EXCEEDED="ERR_FORM_DATA_DEPTH_EXCEEDED";const iv=null;function es(i){return x.isPlainObject(i)||x.isArray(i)}function W0(i){return x.endsWith(i,"[]")?i.slice(0,-2):i}function Ff(i,s,r){return i?i.concat(s).map(function(d,m){return d=W0(d),!r&&m?"["+d+"]":d}).join(r?".":""):s}function cv(i){return x.isArray(i)&&!i.some(es)}const fv=x.toFlatObject(x,{},null,function(s){return/^is[A-Z]/.test(s)});function xi(i,s,r){if(!x.isObject(i))throw new TypeError("target must be an object");s=s||new FormData,r=x.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,function(U,B){return!x.isUndefined(B[U])});const f=r.metaTokens,d=r.visitor||H,m=r.dots,y=r.indexes,b=r.Blob||typeof Blob<"u"&&Blob,E=r.maxDepth===void 0?100:r.maxDepth,v=b&&x.isSpecCompliantForm(s);if(!x.isFunction(d))throw new TypeError("visitor must be a function");function R(w){if(w===null)return"";if(x.isDate(w))return w.toISOString();if(x.isBoolean(w))return w.toString();if(!v&&x.isBlob(w))throw new V("Blob is not supported. Use a Buffer instead.");return x.isArrayBuffer(w)||x.isTypedArray(w)?v&&typeof Blob=="function"?new Blob([w]):Buffer.from(w):w}function H(w,U,B){let I=w;if(x.isReactNative(s)&&x.isReactNativeBlob(w))return s.append(Ff(B,U,m),R(w)),!1;if(w&&!B&&typeof w=="object"){if(x.endsWith(U,"{}"))U=f?U:U.slice(0,-2),w=JSON.stringify(w);else if(x.isArray(w)&&cv(w)||(x.isFileList(w)||x.endsWith(U,"[]"))&&(I=x.toArray(w)))return U=W0(U),I.forEach(function(P,ft){!(x.isUndefined(P)||P===null)&&s.append(y===!0?Ff([U],ft,m):y===null?U:U+"[]",R(P))}),!1}return es(w)?!0:(s.append(Ff(B,U,m),R(w)),!1)}const X=[],Q=Object.assign(fv,{defaultVisitor:H,convertValue:R,isVisitable:es});function Z(w,U,B=0){if(!x.isUndefined(w)){if(B>E)throw new V("Object is too deeply nested ("+B+" levels). Max depth: "+E,V.ERR_FORM_DATA_DEPTH_EXCEEDED);if(X.indexOf(w)!==-1)throw Error("Circular reference detected in "+U.join("."));X.push(w),x.forEach(w,function(k,P){(!(x.isUndefined(k)||k===null)&&d.call(s,k,x.isString(P)?P.trim():P,U,Q))===!0&&Z(k,U?U.concat(P):[P],B+1)}),X.pop()}}if(!x.isObject(i))throw new TypeError("data must be an object");return Z(i),s}function z0(i){const s={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"};return encodeURIComponent(i).replace(/[!'()~]|%20/g,function(f){return s[f]})}function is(i,s){this._pairs=[],i&&xi(i,this,s)}const I0=is.prototype;I0.append=function(s,r){this._pairs.push([s,r])};I0.toString=function(s){const r=s?function(f){return s.call(this,f,z0)}:z0;return this._pairs.map(function(d){return r(d[0])+"="+r(d[1])},"").join("&")};function sv(i){return encodeURIComponent(i).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function P0(i,s,r){if(!s)return i;const f=r&&r.encode||sv,d=x.isFunction(r)?{serialize:r}:r,m=d&&d.serialize;let y;if(m?y=m(s,d):y=x.isURLSearchParams(s)?s.toString():new is(s,d).toString(f),y){const b=i.indexOf("#");b!==-1&&(i=i.slice(0,b)),i+=(i.indexOf("?")===-1?"?":"&")+y}return i}class O0{constructor(){this.handlers=[]}use(s,r,f){return this.handlers.push({fulfilled:s,rejected:r,synchronous:f?f.synchronous:!1,runWhen:f?f.runWhen:null}),this.handlers.length-1}eject(s){this.handlers[s]&&(this.handlers[s]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(s){x.forEach(this.handlers,function(f){f!==null&&s(f)})}}const cs={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0},rv=typeof URLSearchParams<"u"?URLSearchParams:is,ov=typeof FormData<"u"?FormData:null,dv=typeof Blob<"u"?Blob:null,mv={isBrowser:!0,classes:{URLSearchParams:rv,FormData:ov,Blob:dv},protocols:["http","https","file","blob","url","data"]},fs=typeof window<"u"&&typeof document<"u",ls=typeof navigator=="object"&&navigator||void 0,hv=fs&&(!ls||["ReactNative","NativeScript","NS"].indexOf(ls.product)<0),yv=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",vv=fs&&window.location.href||"http://localhost",pv=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:fs,hasStandardBrowserEnv:hv,hasStandardBrowserWebWorkerEnv:yv,navigator:ls,origin:vv},Symbol.toStringTag,{value:"Module"})),It={...pv,...mv};function gv(i,s){return xi(i,new It.classes.URLSearchParams,{visitor:function(r,f,d,m){return It.isNode&&x.isBuffer(r)?(this.append(f,r.toString("base64")),!1):m.defaultVisitor.apply(this,arguments)},...s})}function bv(i){return x.matchAll(/\w+|\[(\w*)]/g,i).map(s=>s[0]==="[]"?"":s[1]||s[0])}function Sv(i){const s={},r=Object.keys(i);let f;const d=r.length;let m;for(f=0;f=r.length;return y=!y&&x.isArray(d)?d.length:y,E?(x.hasOwnProp(d,y)?d[y]=x.isArray(d[y])?d[y].concat(f):[d[y],f]:d[y]=f,!b):((!x.hasOwnProp(d,y)||!x.isObject(d[y]))&&(d[y]=[]),s(r,f,d[y],m)&&x.isArray(d[y])&&(d[y]=Sv(d[y])),!b)}if(x.isFormData(i)&&x.isFunction(i.entries)){const r={};return x.forEachEntry(i,(f,d)=>{s(bv(f),d,r,0)}),r}return null}const Vn=(i,s)=>i!=null&&x.hasOwnProp(i,s)?i[s]:void 0;function Ev(i,s,r){if(x.isString(i))try{return(s||JSON.parse)(i),x.trim(i)}catch(f){if(f.name!=="SyntaxError")throw f}return(r||JSON.stringify)(i)}const Ja={transitional:cs,adapter:["xhr","http","fetch"],transformRequest:[function(s,r){const f=r.getContentType()||"",d=f.indexOf("application/json")>-1,m=x.isObject(s);if(m&&x.isHTMLForm(s)&&(s=new FormData(s)),x.isFormData(s))return d?JSON.stringify(tm(s)):s;if(x.isArrayBuffer(s)||x.isBuffer(s)||x.isStream(s)||x.isFile(s)||x.isBlob(s)||x.isReadableStream(s))return s;if(x.isArrayBufferView(s))return s.buffer;if(x.isURLSearchParams(s))return r.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),s.toString();let b;if(m){const E=Vn(this,"formSerializer");if(f.indexOf("application/x-www-form-urlencoded")>-1)return gv(s,E).toString();if((b=x.isFileList(s))||f.indexOf("multipart/form-data")>-1){const v=Vn(this,"env"),R=v&&v.FormData;return xi(b?{"files[]":s}:s,R&&new R,E)}}return m||d?(r.setContentType("application/json",!1),Ev(s)):s}],transformResponse:[function(s){const r=Vn(this,"transitional")||Ja.transitional,f=r&&r.forcedJSONParsing,d=Vn(this,"responseType"),m=d==="json";if(x.isResponse(s)||x.isReadableStream(s))return s;if(s&&x.isString(s)&&(f&&!d||m)){const b=!(r&&r.silentJSONParsing)&&m;try{return JSON.parse(s,Vn(this,"parseReviver"))}catch(E){if(b)throw E.name==="SyntaxError"?V.from(E,V.ERR_BAD_RESPONSE,this,null,Vn(this,"response")):E}}return s}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:It.classes.FormData,Blob:It.classes.Blob},validateStatus:function(s){return s>=200&&s<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};x.forEach(["delete","get","head","post","put","patch","query"],i=>{Ja.headers[i]={}});function $f(i,s){const r=this||Ja,f=s||r,d=le.from(f.headers);let m=f.data;return x.forEach(i,function(b){m=b.call(r,m,d.normalize(),s?s.status:void 0)}),d.normalize(),m}function em(i){return!!(i&&i.__CANCEL__)}let ka=class extends V{constructor(s,r,f){super(s??"canceled",V.ERR_CANCELED,r,f),this.name="CanceledError",this.__CANCEL__=!0}};function lm(i,s,r){const f=r.config.validateStatus;!r.status||!f||f(r.status)?i(r):s(new V("Request failed with status code "+r.status,r.status>=400&&r.status<500?V.ERR_BAD_REQUEST:V.ERR_BAD_RESPONSE,r.config,r.request,r))}function xv(i){const s=/^([-+\w]{1,25}):(?:\/\/)?/.exec(i);return s&&s[1]||""}function Tv(i,s){i=i||10;const r=new Array(i),f=new Array(i);let d=0,m=0,y;return s=s!==void 0?s:1e3,function(E){const v=Date.now(),R=f[m];y||(y=v),r[d]=E,f[d]=v;let H=m,X=0;for(;H!==d;)X+=r[H++],H=H%i;if(d=(d+1)%i,d===m&&(m=(m+1)%i),v-y{r=R,d=null,m&&(clearTimeout(m),m=null),i(...v)};return[(...v)=>{const R=Date.now(),H=R-r;H>=f?y(v,R):(d=v,m||(m=setTimeout(()=>{m=null,y(d)},f-H)))},()=>d&&y(d)]}const pi=(i,s,r=3)=>{let f=0;const d=Tv(50,250);return Av(m=>{if(!m||typeof m.loaded!="number")return;const y=m.loaded,b=m.lengthComputable?m.total:void 0,E=b!=null?Math.min(y,b):y,v=Math.max(0,E-f),R=d(v);f=Math.max(f,E);const H={loaded:E,total:b,progress:b?E/b:void 0,bytes:v,rate:R||void 0,estimated:R&&b?(b-E)/R:void 0,event:m,lengthComputable:b!=null,[s?"download":"upload"]:!0};i(H)},r)},_0=(i,s)=>{const r=i!=null;return[f=>s[0]({lengthComputable:r,total:i,loaded:f}),s[1]]},R0=i=>(...s)=>x.asap(()=>i(...s)),zv=It.hasStandardBrowserEnv?((i,s)=>r=>(r=new URL(r,It.origin),i.protocol===r.protocol&&i.host===r.host&&(s||i.port===r.port)))(new URL(It.origin),It.navigator&&/(msie|trident)/i.test(It.navigator.userAgent)):()=>!0,Ov=It.hasStandardBrowserEnv?{write(i,s,r,f,d,m,y){if(typeof document>"u")return;const b=[`${i}=${encodeURIComponent(s)}`];x.isNumber(r)&&b.push(`expires=${new Date(r).toUTCString()}`),x.isString(f)&&b.push(`path=${f}`),x.isString(d)&&b.push(`domain=${d}`),m===!0&&b.push("secure"),x.isString(y)&&b.push(`SameSite=${y}`),document.cookie=b.join("; ")},read(i){if(typeof document>"u")return null;const s=document.cookie.split(";");for(let r=0;ri instanceof le?{...i}:i;function nn(i,s){s=s||{};const r=Object.create(null);Object.defineProperty(r,"hasOwnProperty",{__proto__:null,value:Object.prototype.hasOwnProperty,enumerable:!1,writable:!0,configurable:!0});function f(v,R,H,X){return x.isPlainObject(v)&&x.isPlainObject(R)?x.merge.call({caseless:X},v,R):x.isPlainObject(R)?x.merge({},R):x.isArray(R)?R.slice():R}function d(v,R,H,X){if(x.isUndefined(R)){if(!x.isUndefined(v))return f(void 0,v,H,X)}else return f(v,R,H,X)}function m(v,R){if(!x.isUndefined(R))return f(void 0,R)}function y(v,R){if(x.isUndefined(R)){if(!x.isUndefined(v))return f(void 0,v)}else return f(void 0,R)}function b(v,R,H){if(x.hasOwnProp(s,H))return f(v,R);if(x.hasOwnProp(i,H))return f(void 0,v)}const E={url:m,method:m,data:m,baseURL:y,transformRequest:y,transformResponse:y,paramsSerializer:y,timeout:y,timeoutMessage:y,withCredentials:y,withXSRFToken:y,adapter:y,responseType:y,xsrfCookieName:y,xsrfHeaderName:y,onUploadProgress:y,onDownloadProgress:y,decompress:y,maxContentLength:y,maxBodyLength:y,beforeRedirect:y,transport:y,httpAgent:y,httpsAgent:y,cancelToken:y,socketPath:y,allowedSocketPaths:y,responseEncoding:y,validateStatus:b,headers:(v,R,H)=>d(N0(v),N0(R),H,!0)};return x.forEach(Object.keys({...i,...s}),function(R){if(R==="__proto__"||R==="constructor"||R==="prototype")return;const H=x.hasOwnProp(E,R)?E[R]:d,X=x.hasOwnProp(i,R)?i[R]:void 0,Q=x.hasOwnProp(s,R)?s[R]:void 0,Z=H(X,Q,R);x.isUndefined(Z)&&H!==b||(r[R]=Z)}),r}const Nv=["content-type","content-length"];function Dv(i,s,r){if(r!=="content-only"){i.set(s);return}Object.entries(s).forEach(([f,d])=>{Nv.includes(f.toLowerCase())&&i.set(f,d)})}const Mv=i=>encodeURIComponent(i).replace(/%([0-9A-F]{2})/gi,(s,r)=>String.fromCharCode(parseInt(r,16))),am=i=>{const s=nn({},i),r=X=>x.hasOwnProp(s,X)?s[X]:void 0,f=r("data");let d=r("withXSRFToken");const m=r("xsrfHeaderName"),y=r("xsrfCookieName");let b=r("headers");const E=r("auth"),v=r("baseURL"),R=r("allowAbsoluteUrls"),H=r("url");if(s.headers=b=le.from(b),s.url=P0(nm(v,H,R),i.params,i.paramsSerializer),E&&b.set("Authorization","Basic "+btoa((E.username||"")+":"+(E.password?Mv(E.password):""))),x.isFormData(f)&&(It.hasStandardBrowserEnv||It.hasStandardBrowserWebWorkerEnv?b.setContentType(void 0):x.isFunction(f.getHeaders)&&Dv(b,f.getHeaders(),r("formDataHeaderPolicy"))),It.hasStandardBrowserEnv&&(x.isFunction(d)&&(d=d(s)),d===!0||d==null&&zv(s.url))){const Q=m&&y&&Ov.read(y);Q&&b.set(m,Q)}return s},Uv=typeof XMLHttpRequest<"u",Cv=Uv&&function(i){return new Promise(function(r,f){const d=am(i);let m=d.data;const y=le.from(d.headers).normalize();let{responseType:b,onUploadProgress:E,onDownloadProgress:v}=d,R,H,X,Q,Z;function w(){Q&&Q(),Z&&Z(),d.cancelToken&&d.cancelToken.unsubscribe(R),d.signal&&d.signal.removeEventListener("abort",R)}let U=new XMLHttpRequest;U.open(d.method.toUpperCase(),d.url,!0),U.timeout=d.timeout;function B(){if(!U)return;const k=le.from("getAllResponseHeaders"in U&&U.getAllResponseHeaders()),ft={data:!b||b==="text"||b==="json"?U.responseText:U.response,status:U.status,statusText:U.statusText,headers:k,config:i,request:U};lm(function(nt){r(nt),w()},function(nt){f(nt),w()},ft),U=null}"onloadend"in U?U.onloadend=B:U.onreadystatechange=function(){!U||U.readyState!==4||U.status===0&&!(U.responseURL&&U.responseURL.startsWith("file:"))||setTimeout(B)},U.onabort=function(){U&&(f(new V("Request aborted",V.ECONNABORTED,i,U)),w(),U=null)},U.onerror=function(P){const ft=P&&P.message?P.message:"Network Error",Nt=new V(ft,V.ERR_NETWORK,i,U);Nt.event=P||null,f(Nt),w(),U=null},U.ontimeout=function(){let P=d.timeout?"timeout of "+d.timeout+"ms exceeded":"timeout exceeded";const ft=d.transitional||cs;d.timeoutErrorMessage&&(P=d.timeoutErrorMessage),f(new V(P,ft.clarifyTimeoutError?V.ETIMEDOUT:V.ECONNABORTED,i,U)),w(),U=null},m===void 0&&y.setContentType(null),"setRequestHeader"in U&&x.forEach(F0(y),function(P,ft){U.setRequestHeader(ft,P)}),x.isUndefined(d.withCredentials)||(U.withCredentials=!!d.withCredentials),b&&b!=="json"&&(U.responseType=d.responseType),v&&([X,Z]=pi(v,!0),U.addEventListener("progress",X)),E&&U.upload&&([H,Q]=pi(E),U.upload.addEventListener("progress",H),U.upload.addEventListener("loadend",Q)),(d.cancelToken||d.signal)&&(R=k=>{U&&(f(!k||k.type?new ka(null,i,U):k),U.abort(),w(),U=null)},d.cancelToken&&d.cancelToken.subscribe(R),d.signal&&(d.signal.aborted?R():d.signal.addEventListener("abort",R)));const I=xv(d.url);if(I&&!It.protocols.includes(I)){f(new V("Unsupported protocol "+I+":",V.ERR_BAD_REQUEST,i));return}U.send(m||null)})},jv=(i,s)=>{if(i=i?i.filter(Boolean):[],!s&&!i.length)return;const r=new AbortController;let f=!1;const d=function(E){if(!f){f=!0,y();const v=E instanceof Error?E:this.reason;r.abort(v instanceof V?v:new ka(v instanceof Error?v.message:v))}};let m=s&&setTimeout(()=>{m=null,d(new V(`timeout of ${s}ms exceeded`,V.ETIMEDOUT))},s);const y=()=>{i&&(m&&clearTimeout(m),m=null,i.forEach(E=>{E.unsubscribe?E.unsubscribe(d):E.removeEventListener("abort",d)}),i=null)};i.forEach(E=>E.addEventListener("abort",d));const{signal:b}=r;return b.unsubscribe=()=>x.asap(y),b},Hv=function*(i,s){let r=i.byteLength;if(r{const d=Bv(i,s);let m=0,y,b=E=>{y||(y=!0,f&&f(E))};return new ReadableStream({async pull(E){try{const{done:v,value:R}=await d.next();if(v){b(),E.close();return}let H=R.byteLength;if(r){let X=m+=H;r(X)}E.enqueue(new Uint8Array(R))}catch(v){throw b(v),v}},cancel(E){return b(E),d.return()}},{highWaterMark:2})};function wv(i){if(!i||typeof i!="string"||!i.startsWith("data:"))return 0;const s=i.indexOf(",");if(s<0)return 0;const r=i.slice(5,s),f=i.slice(s+1);if(/;base64/i.test(r)){let y=f.length;const b=f.length;for(let Q=0;Q=48&&Z<=57||Z>=65&&Z<=70||Z>=97&&Z<=102)&&(w>=48&&w<=57||w>=65&&w<=70||w>=97&&w<=102)&&(y-=2,Q+=2)}let E=0,v=b-1;const R=Q=>Q>=2&&f.charCodeAt(Q-2)===37&&f.charCodeAt(Q-1)===51&&(f.charCodeAt(Q)===68||f.charCodeAt(Q)===100);v>=0&&(f.charCodeAt(v)===61?(E++,v--):R(v)&&(E++,v-=3)),E===1&&v>=0&&(f.charCodeAt(v)===61||R(v))&&E++;const X=Math.floor(y/4)*3-(E||0);return X>0?X:0}if(typeof Buffer<"u"&&typeof Buffer.byteLength=="function")return Buffer.byteLength(f,"utf8");let m=0;for(let y=0,b=f.length;y=55296&&E<=56319&&y+1=56320&&v<=57343?(m+=4,y++):m+=3}else m+=3}return m}const ss="1.16.1",M0=64*1024,{isFunction:mi}=x,U0=(i,...s)=>{try{return!!i(...s)}catch{return!1}},Lv=i=>{const s=x.global!==void 0&&x.global!==null?x.global:globalThis,{ReadableStream:r,TextEncoder:f}=s;i=x.merge.call({skipUndefined:!0},{Request:s.Request,Response:s.Response},i);const{fetch:d,Request:m,Response:y}=i,b=d?mi(d):typeof fetch=="function",E=mi(m),v=mi(y);if(!b)return!1;const R=b&&mi(r),H=b&&(typeof f=="function"?(B=>I=>B.encode(I))(new f):async B=>new Uint8Array(await new m(B).arrayBuffer())),X=E&&R&&U0(()=>{let B=!1;const I=new m(It.origin,{body:new r,method:"POST",get duplex(){return B=!0,"half"}}),k=I.headers.has("Content-Type");return I.body!=null&&I.body.cancel(),B&&!k}),Q=v&&R&&U0(()=>x.isReadableStream(new y("").body)),Z={stream:Q&&(B=>B.body)};b&&["text","arrayBuffer","blob","formData","stream"].forEach(B=>{!Z[B]&&(Z[B]=(I,k)=>{let P=I&&I[B];if(P)return P.call(I);throw new V(`Response type '${B}' is not supported`,V.ERR_NOT_SUPPORT,k)})});const w=async B=>{if(B==null)return 0;if(x.isBlob(B))return B.size;if(x.isSpecCompliantForm(B))return(await new m(It.origin,{method:"POST",body:B}).arrayBuffer()).byteLength;if(x.isArrayBufferView(B)||x.isArrayBuffer(B))return B.byteLength;if(x.isURLSearchParams(B)&&(B=B+""),x.isString(B))return(await H(B)).byteLength},U=async(B,I)=>{const k=x.toFiniteNumber(B.getContentLength());return k??w(I)};return async B=>{let{url:I,method:k,data:P,signal:ft,cancelToken:Nt,timeout:nt,onDownloadProgress:Gt,onUploadProgress:oe,responseType:Pt,headers:Qt,withCredentials:Yt="same-origin",fetchOptions:Ye,maxContentLength:Ht,maxBodyLength:te}=am(B);const N=x.isNumber(Ht)&&Ht>-1,L=x.isNumber(te)&&te>-1;let $=d||fetch;Pt=Pt?(Pt+"").toLowerCase():"text";let st=jv([ft,Nt&&Nt.toAbortSignal()],nt),it=null;const p=st&&st.unsubscribe&&(()=>{st.unsubscribe()});let j;try{if(N&&typeof I=="string"&&I.startsWith("data:")&&wv(I)>Ht)throw new V("maxContentLength size of "+Ht+" exceeded",V.ERR_BAD_RESPONSE,B,it);if(L&&k!=="get"&&k!=="head"){const et=await U(Qt,P);if(typeof et=="number"&&isFinite(et)&&et>te)throw new V("Request body larger than maxBodyLength limit",V.ERR_BAD_REQUEST,B,it)}if(oe&&X&&k!=="get"&&k!=="head"&&(j=await U(Qt,P))!==0){let et=new m(I,{method:"POST",body:P,duplex:"half"}),Et;if(x.isFormData(P)&&(Et=et.headers.get("content-type"))&&Qt.setContentType(Et),et.body){const[Xe,Ke]=_0(j,pi(R0(oe)));P=D0(et.body,M0,Xe,Ke)}}x.isString(Yt)||(Yt=Yt?"include":"omit");const q=E&&"credentials"in m.prototype;if(x.isFormData(P)){const et=Qt.getContentType();et&&/^multipart\/form-data/i.test(et)&&!/boundary=/i.test(et)&&Qt.delete("content-type")}Qt.set("User-Agent","axios/"+ss,!1);const Y={...Ye,signal:st,method:k.toUpperCase(),headers:F0(Qt.normalize()),body:P,duplex:"half",credentials:q?Yt:void 0};it=E&&new m(I,Y);let F=await(E?$(it,Ye):$(I,Y));if(N){const et=x.toFiniteNumber(F.headers.get("content-length"));if(et!=null&&et>Ht)throw new V("maxContentLength size of "+Ht+" exceeded",V.ERR_BAD_RESPONSE,B,it)}const at=Q&&(Pt==="stream"||Pt==="response");if(Q&&F.body&&(Gt||N||at&&p)){const et={};["status","statusText","headers"].forEach(de=>{et[de]=F[de]});const Et=x.toFiniteNumber(F.headers.get("content-length")),[Xe,Ke]=Gt&&_0(Et,pi(R0(Gt),!0))||[];let an=0;const Fa=de=>{if(N&&(an=de,an>Ht))throw new V("maxContentLength size of "+Ht+" exceeded",V.ERR_BAD_RESPONSE,B,it);Xe&&Xe(de)};F=new y(D0(F.body,M0,Fa,()=>{Ke&&Ke(),p&&p()}),et)}Pt=Pt||"text";let ct=await Z[x.findKey(Z,Pt)||"text"](F,B);if(N&&!Q&&!at){let et;if(ct!=null&&(typeof ct.byteLength=="number"?et=ct.byteLength:typeof ct.size=="number"?et=ct.size:typeof ct=="string"&&(et=typeof f=="function"?new f().encode(ct).byteLength:ct.length)),typeof et=="number"&&et>Ht)throw new V("maxContentLength size of "+Ht+" exceeded",V.ERR_BAD_RESPONSE,B,it)}return!at&&p&&p(),await new Promise((et,Et)=>{lm(et,Et,{data:ct,headers:le.from(F.headers),status:F.status,statusText:F.statusText,config:B,request:it})})}catch(q){if(p&&p(),st&&st.aborted&&st.reason instanceof V){const Y=st.reason;throw Y.config=B,it&&(Y.request=it),q!==Y&&(Y.cause=q),Y}throw q&&q.name==="TypeError"&&/Load failed|fetch/i.test(q.message)?Object.assign(new V("Network Error",V.ERR_NETWORK,B,it,q&&q.response),{cause:q.cause||q}):V.from(q,q&&q.code,B,it,q&&q.response)}}},Yv=new Map,um=i=>{let s=i&&i.env||{};const{fetch:r,Request:f,Response:d}=s,m=[f,d,r];let y=m.length,b=y,E,v,R=Yv;for(;b--;)E=m[b],v=R.get(E),v===void 0&&R.set(E,v=b?new Map:Lv(s)),R=v;return v};um();const rs={http:iv,xhr:Cv,fetch:{get:um}};x.forEach(rs,(i,s)=>{if(i){try{Object.defineProperty(i,"name",{__proto__:null,value:s})}catch{}Object.defineProperty(i,"adapterName",{__proto__:null,value:s})}});const C0=i=>`- ${i}`,Xv=i=>x.isFunction(i)||i===null||i===!1;function Gv(i,s){i=x.isArray(i)?i:[i];const{length:r}=i;let f,d;const m={};for(let y=0;y`adapter ${E} `+(v===!1?"is not supported by the environment":"is not available in the build"));let b=r?y.length>1?`since : -`+y.map(C0).join(` -`):" "+C0(y[0]):"as no adapter specified";throw new V("There is no suitable adapter to dispatch the request "+b,"ERR_NOT_SUPPORT")}return d}const im={getAdapter:Gv,adapters:rs};function Wf(i){if(i.cancelToken&&i.cancelToken.throwIfRequested(),i.signal&&i.signal.aborted)throw new ka(null,i)}function j0(i){return Wf(i),i.headers=le.from(i.headers),i.data=$f.call(i,i.transformRequest),["post","put","patch"].indexOf(i.method)!==-1&&i.headers.setContentType("application/x-www-form-urlencoded",!1),im.getAdapter(i.adapter||Ja.adapter,i)(i).then(function(f){Wf(i),i.response=f;try{f.data=$f.call(i,i.transformResponse,f)}finally{delete i.response}return f.headers=le.from(f.headers),f},function(f){if(!em(f)&&(Wf(i),f&&f.response)){i.response=f.response;try{f.response.data=$f.call(i,i.transformResponse,f.response)}finally{delete i.response}f.response.headers=le.from(f.response.headers)}return Promise.reject(f)})}const Ti={};["object","boolean","number","function","string","symbol"].forEach((i,s)=>{Ti[i]=function(f){return typeof f===i||"a"+(s<1?"n ":" ")+i}});const H0={};Ti.transitional=function(s,r,f){function d(m,y){return"[Axios v"+ss+"] Transitional option '"+m+"'"+y+(f?". "+f:"")}return(m,y,b)=>{if(s===!1)throw new V(d(y," has been removed"+(r?" in "+r:"")),V.ERR_DEPRECATED);return r&&!H0[y]&&(H0[y]=!0,console.warn(d(y," has been deprecated since v"+r+" and will be removed in the near future"))),s?s(m,y,b):!0}};Ti.spelling=function(s){return(r,f)=>(console.warn(`${f} is likely a misspelling of ${s}`),!0)};function Qv(i,s,r){if(typeof i!="object")throw new V("options must be an object",V.ERR_BAD_OPTION_VALUE);const f=Object.keys(i);let d=f.length;for(;d-- >0;){const m=f[d],y=Object.prototype.hasOwnProperty.call(s,m)?s[m]:void 0;if(y){const b=i[m],E=b===void 0||y(b,m,i);if(E!==!0)throw new V("option "+m+" must be "+E,V.ERR_BAD_OPTION_VALUE);continue}if(r!==!0)throw new V("Unknown option "+m,V.ERR_BAD_OPTION)}}const vi={assertOptions:Qv,validators:Ti},je=vi.validators;let en=class{constructor(s){this.defaults=s||{},this.interceptors={request:new O0,response:new O0}}async request(s,r){try{return await this._request(s,r)}catch(f){if(f instanceof Error){let d={};Error.captureStackTrace?Error.captureStackTrace(d):d=new Error;const m=(()=>{if(!d.stack)return"";const y=d.stack.indexOf(` -`);return y===-1?"":d.stack.slice(y+1)})();try{if(!f.stack)f.stack=m;else if(m){const y=m.indexOf(` -`),b=y===-1?-1:m.indexOf(` -`,y+1),E=b===-1?"":m.slice(b+1);String(f.stack).endsWith(E)||(f.stack+=` -`+m)}}catch{}}throw f}}_request(s,r){typeof s=="string"?(r=r||{},r.url=s):r=s||{},r=nn(this.defaults,r);const{transitional:f,paramsSerializer:d,headers:m}=r;f!==void 0&&vi.assertOptions(f,{silentJSONParsing:je.transitional(je.boolean),forcedJSONParsing:je.transitional(je.boolean),clarifyTimeoutError:je.transitional(je.boolean),legacyInterceptorReqResOrdering:je.transitional(je.boolean)},!1),d!=null&&(x.isFunction(d)?r.paramsSerializer={serialize:d}:vi.assertOptions(d,{encode:je.function,serialize:je.function},!0)),r.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?r.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:r.allowAbsoluteUrls=!0),vi.assertOptions(r,{baseUrl:je.spelling("baseURL"),withXsrfToken:je.spelling("withXSRFToken")},!0),r.method=(r.method||this.defaults.method||"get").toLowerCase();let y=m&&x.merge(m.common,m[r.method]);m&&x.forEach(["delete","get","head","post","put","patch","query","common"],Z=>{delete m[Z]}),r.headers=le.concat(y,m);const b=[];let E=!0;this.interceptors.request.forEach(function(w){if(typeof w.runWhen=="function"&&w.runWhen(r)===!1)return;E=E&&w.synchronous;const U=r.transitional||cs;U&&U.legacyInterceptorReqResOrdering?b.unshift(w.fulfilled,w.rejected):b.push(w.fulfilled,w.rejected)});const v=[];this.interceptors.response.forEach(function(w){v.push(w.fulfilled,w.rejected)});let R,H=0,X;if(!E){const Z=[j0.bind(this),void 0];for(Z.unshift(...b),Z.push(...v),X=Z.length,R=Promise.resolve(r);H{if(!f._listeners)return;let m=f._listeners.length;for(;m-- >0;)f._listeners[m](d);f._listeners=null}),this.promise.then=d=>{let m;const y=new Promise(b=>{f.subscribe(b),m=b}).then(d);return y.cancel=function(){f.unsubscribe(m)},y},s(function(m,y,b){f.reason||(f.reason=new ka(m,y,b),r(f.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(s){if(this.reason){s(this.reason);return}this._listeners?this._listeners.push(s):this._listeners=[s]}unsubscribe(s){if(!this._listeners)return;const r=this._listeners.indexOf(s);r!==-1&&this._listeners.splice(r,1)}toAbortSignal(){const s=new AbortController,r=f=>{s.abort(f)};return this.subscribe(r),s.signal.unsubscribe=()=>this.unsubscribe(r),s.signal}static source(){let s;return{token:new cm(function(d){s=d}),cancel:s}}};function Zv(i){return function(r){return i.apply(null,r)}}function Kv(i){return x.isObject(i)&&i.isAxiosError===!0}const ns={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(ns).forEach(([i,s])=>{ns[s]=i});function fm(i){const s=new en(i),r=X0(en.prototype.request,s);return x.extend(r,en.prototype,s,{allOwnKeys:!0}),x.extend(r,s,null,{allOwnKeys:!0}),r.create=function(d){return fm(nn(i,d))},r}const jt=fm(Ja);jt.Axios=en;jt.CanceledError=ka;jt.CancelToken=Vv;jt.isCancel=em;jt.VERSION=ss;jt.toFormData=xi;jt.AxiosError=V;jt.Cancel=jt.CanceledError;jt.all=function(s){return Promise.all(s)};jt.spread=Zv;jt.isAxiosError=Kv;jt.mergeConfig=nn;jt.AxiosHeaders=le;jt.formToJSON=i=>tm(x.isHTMLForm(i)?new FormData(i):i);jt.getAdapter=im.getAdapter;jt.HttpStatusCode=ns;jt.default=jt;const{Axios:sp,AxiosError:rp,CanceledError:op,isCancel:dp,CancelToken:mp,VERSION:hp,all:yp,Cancel:vp,isAxiosError:pp,spread:gp,toFormData:bp,AxiosHeaders:Sp,HttpStatusCode:Ep,formToJSON:xp,getAdapter:Tp,mergeConfig:Ap,create:zp}=jt,we=jt.create({baseURL:"http://localhost:3000/api",timeout:15e3}),B0=window.localStorage.getItem("incusBackupApiToken")||void 0;B0&&(we.defaults.headers.common.Authorization=`Bearer ${B0}`);function Jv(i){const s=String(i||"");if(s){window.localStorage.setItem("incusBackupApiToken",s),we.defaults.headers.common.Authorization=`Bearer ${s}`;return}window.localStorage.removeItem("incusBackupApiToken"),delete we.defaults.headers.common.Authorization}function ln(i){var s,r;return((r=(s=i.response)==null?void 0:s.data)==null?void 0:r.error)||i.message||"Request failed."}function Ga({label:i,value:s,tone:r="neutral"}){const f={neutral:"text-zinc-100",good:"text-emerald-300",warn:"text-amber-300",bad:"text-red-300",active:"text-cyan-300"};return z.jsxs("div",{className:"rounded-md border border-zinc-800 bg-zinc-900/70 p-4",children:[z.jsx("div",{className:"text-xs uppercase tracking-wide text-zinc-500",children:i}),z.jsx("div",{className:`mt-2 text-2xl font-semibold ${f[r]}`,children:s})]})}function kv({health:i,jobs:s,loading:r,onManage:f,vms:d}){const m=s.filter(E=>["queued","running"].includes(E.status)),y=d.filter(E=>E.status==="Running"),b=s.find(E=>E.status==="success");return z.jsxs("section",{className:"space-y-5",children:[z.jsxs("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-5",children:[z.jsx(Ga,{label:"Total VMs",value:r?"...":d.length}),z.jsx(Ga,{label:"Running VMs",value:y.length,tone:"good"}),z.jsx(Ga,{label:"Active Jobs",value:m.length,tone:m.length?"active":"neutral"}),z.jsx(Ga,{label:"Last Success",value:b?Fv(b.finishedAt):"None",tone:"good"}),z.jsx(Ga,{label:"Repository",value:i!=null&&i.ok?"Ready":"Check",tone:i!=null&&i.ok?"good":"warn"})]}),z.jsxs("div",{className:"overflow-hidden rounded-md border border-zinc-800 bg-zinc-900/70",children:[z.jsxs("div",{className:"flex items-center justify-between border-b border-zinc-800 px-4 py-3",children:[z.jsx("h1",{className:"text-sm font-semibold text-zinc-100",children:"VM Backup Status"}),z.jsx("span",{className:"text-xs text-zinc-500",children:$v(i)})]}),z.jsx("div",{className:"overflow-x-auto",children:z.jsxs("table",{className:"w-full min-w-[760px] text-left text-sm",children:[z.jsx("thead",{className:"border-b border-zinc-800 text-xs uppercase tracking-wide text-zinc-500",children:z.jsxs("tr",{children:[z.jsx("th",{className:"px-4 py-3 font-medium",children:"VM"}),z.jsx("th",{className:"px-4 py-3 font-medium",children:"Incus"}),z.jsx("th",{className:"px-4 py-3 font-medium",children:"Last Job"}),z.jsx("th",{className:"px-4 py-3 font-medium",children:"Active Job"}),z.jsx("th",{className:"px-4 py-3 text-right font-medium",children:"Actions"})]})}),z.jsxs("tbody",{className:"divide-y divide-zinc-800",children:[d.map(E=>{var v;return z.jsxs("tr",{className:"hover:bg-zinc-900",children:[z.jsx("td",{className:"px-4 py-3 font-medium text-zinc-100",children:E.name}),z.jsx("td",{className:"px-4 py-3",children:z.jsxs("span",{className:"inline-flex items-center gap-2 text-zinc-300",children:[z.jsx(Fy,{className:`h-2.5 w-2.5 fill-current ${E.status==="Running"?"text-emerald-400":"text-red-400"}`}),E.status||"Unknown"]})}),z.jsx("td",{className:"px-4 py-3 text-zinc-300",children:E.lastJobStatus||"None"}),z.jsx("td",{className:"px-4 py-3 text-zinc-400",children:((v=E.activeJob)==null?void 0:v.currentStep)||"Idle"}),z.jsx("td",{className:"px-4 py-3 text-right",children:z.jsxs("button",{className:"inline-flex h-8 items-center gap-1 rounded-md border border-zinc-700 px-2.5 text-xs text-zinc-100 hover:border-cyan-500 hover:text-cyan-200",onClick:()=>f(E.name),type:"button",children:["Manage ",z.jsx(ky,{className:"h-4 w-4"})]})})]},E.name)}),d.length?null:z.jsx("tr",{children:z.jsx("td",{className:"px-4 py-8 text-center text-zinc-500",colSpan:"5",children:"No VMs loaded."})})]})]})})]})]})}function Fv(i){return i?new Intl.DateTimeFormat(void 0,{dateStyle:"short",timeStyle:"short"}).format(new Date(i)):"None"}function $v(i){return i?i.ok?"All checks ok":Object.entries(i.checks||{}).filter(([,s])=>s!=="ok").map(([s])=>s).join(", ")||"Health degraded":"Health loading"}function Wv({onChanged:i}){const[s,r]=gt.useState([]),[f,d]=gt.useState({}),[m,y]=gt.useState({}),[b,E]=gt.useState(!1),[v,R]=gt.useState(""),[H,X]=gt.useState(""),Q=gt.useMemo(()=>s.filter(U=>U.required&&!String(f[U.key]||"").trim()),[s,f]);async function Z(){X("");try{const U=await we.get("/settings");r(U.data.fields||[]),d(Object.fromEntries((U.data.fields||[]).map(B=>[B.key,B.value||""])))}catch(U){X(ln(U))}}gt.useEffect(()=>{Z()},[]);async function w(U){U.preventDefault(),E(!0),R(""),X("");try{Jv(f.API_TOKEN);const B=await we.put("/settings",{values:f});r(B.data.fields||[]),d(Object.fromEntries((B.data.fields||[]).map(I=>[I.key,I.value||""]))),R("Settings saved. Running jobs use the updated values; a changed PORT still needs a backend restart."),await(i==null?void 0:i())}catch(B){X(ln(B))}finally{E(!1)}}return z.jsxs("section",{className:"space-y-5",children:[z.jsxs("div",{className:"border-b border-zinc-800 pb-5",children:[z.jsx("h1",{className:"text-2xl font-semibold text-zinc-100",children:"Settings"}),z.jsxs("p",{className:"mt-2 max-w-3xl text-sm leading-6 text-zinc-500",children:["Values are written to ",z.jsx("span",{className:"font-mono text-zinc-400",children:"backend/.env"}),". Keep access to this UI restricted because secrets are editable here."]})]}),H?z.jsx(If,{tone:"bad",text:H}):null,v?z.jsx(If,{tone:"good",text:v}):null,Q.length?z.jsx(If,{tone:"warn",text:`Missing required values: ${Q.map(U=>U.key).join(", ")}`}):null,z.jsxs("form",{className:"rounded-md border border-zinc-800 bg-zinc-900/70",onSubmit:w,children:[z.jsx("div",{className:"grid gap-4 p-4 lg:grid-cols-2",children:s.map(U=>{const B=m[U.key];return z.jsxs("label",{className:"block text-sm text-zinc-300",children:[z.jsxs("span",{className:"flex items-center justify-between gap-3",children:[z.jsxs("span",{children:[U.label,U.required?z.jsx("span",{className:"text-red-300",children:" *"}):null]}),z.jsx("span",{className:"font-mono text-xs text-zinc-500",children:U.key})]}),z.jsxs("span",{className:"mt-2 flex rounded-md border border-zinc-700 bg-zinc-950 focus-within:border-cyan-600",children:[z.jsx("input",{className:"h-10 min-w-0 flex-1 bg-transparent px-3 text-zinc-100 outline-none",onChange:I=>d(k=>({...k,[U.key]:I.target.value})),type:U.secret&&!B?"password":"text",value:f[U.key]||""}),U.secret?z.jsx("button",{className:"flex h-10 w-10 items-center justify-center border-l border-zinc-800 text-zinc-400 hover:text-zinc-100",onClick:()=>y(I=>({...I,[U.key]:!I[U.key]})),type:"button",children:B?z.jsx(Wy,{className:"h-4 w-4"}):z.jsx(Iy,{className:"h-4 w-4"})}):null]})]},U.key)})}),z.jsx("div",{className:"flex justify-end border-t border-zinc-800 px-4 py-3",children:z.jsxs("button",{className:"inline-flex h-9 items-center gap-2 rounded-md border border-cyan-800 bg-cyan-950 px-3 text-sm text-cyan-100 hover:bg-cyan-900",disabled:b,type:"submit",children:[z.jsx(e1,{className:"h-4 w-4"}),"Save Settings"]})})]})]})}function If({text:i,tone:s}){const r={bad:"border-red-900 bg-red-950/50 text-red-200",good:"border-emerald-900 bg-emerald-950/50 text-emerald-200",warn:"border-amber-900 bg-amber-950/50 text-amber-200"};return z.jsx("div",{className:`rounded-md border px-4 py-3 text-sm ${r[s]}`,children:i})}function Iv({job:i}){return z.jsxs("section",{className:"rounded-md border border-zinc-800 bg-zinc-900/70",children:[z.jsxs("div",{className:"flex items-center justify-between border-b border-zinc-800 px-4 py-3",children:[z.jsx("h2",{className:"text-sm font-semibold",children:"Job Status"}),z.jsx("span",{className:`rounded-md border px-2 py-1 text-xs ${Pv(i==null?void 0:i.status)}`,children:(i==null?void 0:i.status)||"idle"})]}),z.jsxs("div",{className:"grid gap-4 p-4 lg:grid-cols-[280px_1fr]",children:[z.jsxs("dl",{className:"space-y-3 text-sm",children:[z.jsx(Qa,{label:"Type",value:(i==null?void 0:i.type)||"-"}),z.jsx(Qa,{label:"Current Step",value:(i==null?void 0:i.currentStep)||"No active job"}),z.jsx(Qa,{label:"Started",value:q0(i==null?void 0:i.startedAt)}),z.jsx(Qa,{label:"Finished",value:q0(i==null?void 0:i.finishedAt)}),i!=null&&i.error?z.jsx(Qa,{label:"Error",value:i.error,tone:"text-red-300"}):null]}),z.jsx("pre",{className:"max-h-80 overflow-auto rounded-md border border-zinc-800 bg-zinc-950 p-3 text-xs leading-5 text-zinc-300",children:((i==null?void 0:i.logs)||["No logs yet."]).join(` -`)})]})]})}function Qa({label:i,value:s,tone:r="text-zinc-300"}){return z.jsxs("div",{children:[z.jsx("dt",{className:"text-xs uppercase tracking-wide text-zinc-500",children:i}),z.jsx("dd",{className:`mt-1 break-words ${r}`,children:s})]})}function Pv(i){return i==="success"?"border-emerald-800 bg-emerald-950 text-emerald-300":i==="failed"?"border-red-800 bg-red-950 text-red-300":i==="running"||i==="queued"?"border-cyan-800 bg-cyan-950 text-cyan-300":"border-zinc-800 bg-zinc-950 text-zinc-400"}function q0(i){return i?new Intl.DateTimeFormat(void 0,{dateStyle:"medium",timeStyle:"medium"}).format(new Date(i)):"-"}function tp({snapshot:i,vmName:s,confirmText:r,onCancel:f,onConfirm:d,onTextChange:m,busy:y}){if(!i)return null;const b=r===s&&!y;return z.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/70 p-4",children:z.jsxs("div",{className:"w-full max-w-lg rounded-md border border-red-900 bg-zinc-950 shadow-2xl",children:[z.jsxs("div",{className:"flex items-center justify-between border-b border-red-950 px-4 py-3",children:[z.jsxs("div",{className:"flex items-center gap-2 text-red-300",children:[z.jsx(Y0,{className:"h-5 w-5"}),z.jsx("h2",{className:"text-sm font-semibold",children:"Destructive Restore"})]}),z.jsx("button",{className:"rounded-md p-1 text-zinc-400 hover:text-zinc-100",onClick:f,type:"button",children:z.jsx(n1,{className:"h-5 w-5"})})]}),z.jsxs("div",{className:"space-y-4 p-4",children:[z.jsxs("p",{className:"text-sm leading-6 text-zinc-300",children:["Warning: The VM will be stopped and the current disk will be irreversibly overwritten with snapshot ",z.jsx("span",{className:"font-mono text-red-200",children:i.id.slice(0,8)}),"."]}),z.jsxs("label",{className:"block text-sm text-zinc-300",children:["Type ",z.jsx("span",{className:"font-mono text-zinc-100",children:s})," to confirm.",z.jsx("input",{className:"mt-2 h-10 w-full rounded-md border border-zinc-700 bg-zinc-900 px-3 text-zinc-100 outline-none focus:border-red-500",onChange:E=>m(E.target.value),value:r})]}),z.jsxs("div",{className:"flex justify-end gap-2",children:[z.jsx("button",{className:"h-9 rounded-md border border-zinc-700 px-3 text-sm text-zinc-200",onClick:f,type:"button",children:"Cancel"}),z.jsx("button",{className:"h-9 rounded-md border border-red-700 bg-red-950 px-3 text-sm text-red-100 hover:bg-red-900 disabled:hover:bg-red-950",disabled:!b,onClick:d,type:"button",children:"Confirm Restore"})]})]})]})})}function ep({onRestore:i,snapshots:s}){return z.jsxs("section",{className:"overflow-hidden rounded-md border border-zinc-800 bg-zinc-900/70",children:[z.jsx("div",{className:"border-b border-zinc-800 px-4 py-3",children:z.jsx("h2",{className:"text-sm font-semibold",children:"Snapshots"})}),z.jsx("div",{className:"overflow-x-auto",children:z.jsxs("table",{className:"w-full min-w-[680px] text-left text-sm",children:[z.jsx("thead",{className:"border-b border-zinc-800 text-xs uppercase tracking-wide text-zinc-500",children:z.jsxs("tr",{children:[z.jsx("th",{className:"px-4 py-3 font-medium",children:"ID"}),z.jsx("th",{className:"px-4 py-3 font-medium",children:"Date & Time"}),z.jsx("th",{className:"px-4 py-3 font-medium",children:"Tags"}),z.jsx("th",{className:"px-4 py-3 text-right font-medium",children:"Actions"})]})}),z.jsxs("tbody",{className:"divide-y divide-zinc-800",children:[s.map(r=>z.jsxs("tr",{className:"hover:bg-zinc-900",children:[z.jsx("td",{className:"px-4 py-3 font-mono text-zinc-100",children:r.id.slice(0,8)}),z.jsx("td",{className:"px-4 py-3 text-zinc-300",children:lp(r.time)}),z.jsx("td",{className:"px-4 py-3 text-zinc-400",children:(r.tags||[]).join(", ")||"-"}),z.jsx("td",{className:"px-4 py-3 text-right",children:z.jsxs("button",{className:"inline-flex h-8 items-center gap-2 rounded-md border border-red-900 px-2.5 text-xs text-red-300 hover:border-red-600 hover:text-red-200",onClick:()=>i(r),type:"button",children:[z.jsx(t1,{className:"h-4 w-4"}),"Restore"]})})]},r.id)),s.length?null:z.jsx("tr",{children:z.jsx("td",{className:"px-4 py-8 text-center text-zinc-500",colSpan:"4",children:"No snapshots found."})})]})]})})]})}function lp(i){return i?new Intl.DateTimeFormat(void 0,{dateStyle:"medium",timeStyle:"medium"}).format(new Date(i)):"-"}function np({jobs:i,onBack:s,onChanged:r,vm:f}){var P;const[d,m]=gt.useState([]),[y,b]=gt.useState(null),[E,v]=gt.useState(""),[R,H]=gt.useState(!1),[X,Q]=gt.useState(""),Z=gt.useMemo(()=>i.filter(ft=>ft.vmName===f.name),[i,f.name]),w=Z.find(ft=>["queued","running"].includes(ft.status))||Z[0]||null,U=(P=d[0])==null?void 0:P.time;async function B(){Q("");try{const ft=await we.get(`/snapshots/${encodeURIComponent(f.name)}`);m(ft.data)}catch(ft){Q(ln(ft))}}gt.useEffect(()=>{B()},[f.name]);async function I(){H(!0),Q("");try{await we.post(`/backup/${encodeURIComponent(f.name)}`),await r()}catch(ft){Q(ln(ft))}finally{H(!1)}}async function k(){H(!0),Q("");try{await we.post(`/restore/${encodeURIComponent(f.name)}`,{snapshotId:y.id,confirmVmName:E}),b(null),v(""),await r()}catch(ft){Q(ln(ft))}finally{H(!1)}}return z.jsxs("section",{className:"space-y-5",children:[z.jsxs("div",{className:"flex flex-col gap-4 border-b border-zinc-800 pb-5 sm:flex-row sm:items-end sm:justify-between",children:[z.jsxs("div",{children:[z.jsxs("button",{className:"mb-4 inline-flex items-center gap-2 text-sm text-zinc-400 hover:text-zinc-100",onClick:s,type:"button",children:[z.jsx(Jy,{className:"h-4 w-4"}),"Back"]}),z.jsxs("div",{className:"flex items-center gap-3",children:[z.jsx("h1",{className:"text-2xl font-semibold text-zinc-100",children:f.name}),z.jsx("span",{className:"rounded-md border border-zinc-800 px-2 py-1 text-xs text-zinc-300",children:f.status||"Unknown"})]}),z.jsxs("p",{className:"mt-2 text-sm text-zinc-500",children:["Latest snapshot: ",U?ap(U):"None"]})]}),z.jsxs("div",{className:"flex gap-2",children:[z.jsxs("button",{className:"inline-flex h-9 items-center gap-2 rounded-md border border-zinc-700 px-3 text-sm text-zinc-100",onClick:B,type:"button",children:[z.jsx(L0,{className:"h-4 w-4"}),"Snapshots"]}),z.jsxs("button",{className:"inline-flex h-9 items-center gap-2 rounded-md border border-emerald-800 bg-emerald-950 px-3 text-sm text-emerald-100 hover:bg-emerald-900",disabled:R||!!(w&&["queued","running"].includes(w.status)),onClick:I,type:"button",children:[z.jsx(Py,{className:"h-4 w-4"}),"Create Backup"]})]})]}),X?z.jsx("div",{className:"rounded-md border border-amber-900 bg-amber-950/50 px-4 py-3 text-sm text-amber-200",children:X}):null,z.jsx(Iv,{job:w}),z.jsx(ep,{snapshots:d,onRestore:ft=>b(ft)}),z.jsx(tp,{busy:R,confirmText:E,onCancel:()=>{b(null),v("")},onConfirm:k,onTextChange:v,snapshot:y,vmName:f.name})]})}function ap(i){return new Intl.DateTimeFormat(void 0,{dateStyle:"medium",timeStyle:"medium"}).format(new Date(i))}function up(){const[i,s]=gt.useState(null),[r,f]=gt.useState([]),[d,m]=gt.useState([]),[y,b]=gt.useState(null),[E,v]=gt.useState("dashboard"),[R,H]=gt.useState(""),[X,Q]=gt.useState(!0);async function Z(){var U;H("");try{const[B,I,k]=await Promise.allSettled([we.get("/health"),we.get("/vms"),we.get("/jobs")]);B.status==="fulfilled"?s(B.value.data):s(((U=B.reason.response)==null?void 0:U.data)||{ok:!1,checks:{}}),I.status==="fulfilled"&&f(I.value.data),k.status==="fulfilled"&&m(k.value.data);const P=[B,I,k].find(ft=>ft.status==="rejected");P&&H(ln(P.reason))}catch(B){H(ln(B))}finally{Q(!1)}}gt.useEffect(()=>{Z();const U=window.setInterval(Z,5e3);return()=>window.clearInterval(U)},[]);const w=gt.useMemo(()=>r.find(U=>U.name===y)||null,[y,r]);return z.jsxs("main",{className:"min-h-screen bg-zinc-950 text-zinc-100",children:[z.jsx("header",{className:"border-b border-zinc-800 bg-zinc-950/95",children:z.jsxs("div",{className:"mx-auto flex max-w-7xl items-center justify-between gap-4 px-4 py-4 sm:px-6",children:[z.jsxs("button",{className:"flex items-center gap-3 text-left",onClick:()=>{b(null),v("dashboard")},type:"button",children:[z.jsx("span",{className:"flex h-9 w-9 items-center justify-center rounded-md border border-zinc-800 bg-zinc-900",children:z.jsx($y,{className:"h-5 w-5 text-cyan-300"})}),z.jsxs("span",{children:[z.jsx("span",{className:"block text-sm font-semibold tracking-wide text-zinc-100",children:"Incus Backup Control"}),z.jsx("span",{className:"block text-xs text-zinc-500",children:"ZFS block-level Restic operations"})]})]}),z.jsxs("div",{className:"flex items-center gap-2",children:[z.jsxs("button",{className:"inline-flex h-9 items-center gap-2 rounded-md border border-zinc-800 bg-zinc-900 px-3 text-sm text-zinc-200 hover:border-zinc-700",onClick:()=>{b(null),v("settings")},type:"button",children:[z.jsx(l1,{className:"h-4 w-4"}),"Settings"]}),z.jsxs("button",{className:"inline-flex h-9 items-center gap-2 rounded-md border border-zinc-800 bg-zinc-900 px-3 text-sm text-zinc-200 hover:border-zinc-700",onClick:Z,type:"button",children:[z.jsx(L0,{className:"h-4 w-4"}),"Refresh"]})]})]})}),R?z.jsxs("div",{className:"mx-auto mt-4 flex max-w-7xl items-center gap-2 px-4 text-sm text-amber-300 sm:px-6",children:[z.jsx(Y0,{className:"h-4 w-4"}),R]}):null,z.jsx("div",{className:"mx-auto max-w-7xl px-4 py-6 sm:px-6",children:E==="settings"?z.jsx(Wv,{onChanged:Z}):w?z.jsx(np,{vm:w,jobs:d,onBack:()=>b(null),onChanged:Z}):z.jsx(kv,{health:i,jobs:d,loading:X,onManage:U=>{b(U),v("dashboard")},vms:r})})]})}Qy.createRoot(document.getElementById("root")).render(z.jsx(By.StrictMode,{children:z.jsx(up,{})})); diff --git a/frontend/dist/index.html b/frontend/dist/index.html index 0612cad..e728e0e 100644 --- a/frontend/dist/index.html +++ b/frontend/dist/index.html @@ -4,8 +4,8 @@ Incus Backup UI - - + +
diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index ffe4444..5431d5a 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -1,7 +1,8 @@ import { useEffect, useMemo, useState } from 'react'; -import { AlertTriangle, DatabaseBackup, RefreshCw, Settings as SettingsIcon } from 'lucide-react'; +import { AlertTriangle, CalendarClock, DatabaseBackup, RefreshCw, Settings as SettingsIcon } from 'lucide-react'; import { api, errorMessage } from './api.js'; import { Dashboard } from './components/Dashboard.jsx'; +import { Scheduler } from './components/Scheduler.jsx'; import { Settings } from './components/Settings.jsx'; import { VMDetail } from './components/VMDetail.jsx'; @@ -9,6 +10,7 @@ export default function App() { const [health, setHealth] = useState(null); const [vms, setVms] = useState([]); const [jobs, setJobs] = useState([]); + const [schedules, setSchedules] = useState([]); const [selectedVm, setSelectedVm] = useState(null); const [view, setView] = useState('dashboard'); const [error, setError] = useState(''); @@ -17,10 +19,11 @@ export default function App() { async function refresh() { setError(''); try { - const [healthResult, vmsResult, jobsResult] = await Promise.allSettled([ + const [healthResult, vmsResult, jobsResult, schedulesResult] = await Promise.allSettled([ api.get('/health'), api.get('/vms'), api.get('/jobs'), + api.get('/schedules'), ]); if (healthResult.status === 'fulfilled') { @@ -31,8 +34,9 @@ export default function App() { if (vmsResult.status === 'fulfilled') setVms(vmsResult.value.data); if (jobsResult.status === 'fulfilled') setJobs(jobsResult.value.data); + if (schedulesResult.status === 'fulfilled') setSchedules(schedulesResult.value.data); - const firstFailure = [healthResult, vmsResult, jobsResult].find((result) => result.status === 'rejected'); + const firstFailure = [healthResult, vmsResult, jobsResult, schedulesResult].find((result) => result.status === 'rejected'); if (firstFailure) setError(errorMessage(firstFailure.reason)); } catch (requestError) { setError(errorMessage(requestError)); @@ -73,6 +77,17 @@ export default function App() {
+ +
+ + + ); +} + +function mergeSchedules(vms, schedules) { + const byVm = new Map((schedules || []).map((schedule) => [schedule.vmName, schedule])); + return (vms || []).map((vm) => ({ + id: byVm.get(vm.name)?.id, + vmName: vm.name, + enabled: Boolean(byVm.get(vm.name)?.enabled), + intervalHours: byVm.get(vm.name)?.intervalHours || 24, + nextRunAt: byVm.get(vm.name)?.nextRunAt || null, + lastRunAt: byVm.get(vm.name)?.lastRunAt || null, + lastError: byVm.get(vm.name)?.lastError || '', + })); +} + +function Notice({ text, tone }) { + const classes = { + bad: 'border-red-900 bg-red-950/50 text-red-200', + good: 'border-emerald-900 bg-emerald-950/50 text-emerald-200', + }; + + return
{text}
; +} + +function formatTime(value) { + if (!value) return '-'; + return new Intl.DateTimeFormat(undefined, { dateStyle: 'short', timeStyle: 'short' }).format(new Date(value)); +}