From 8ee2795eb7f41b206eca55ae7598bddf544de7ff Mon Sep 17 00:00:00 2001 From: Timothy Hofland Date: Wed, 11 Mar 2026 08:41:19 +0100 Subject: [PATCH] feat: pre-build frontend and harden backend to bypass build failures - Pre-built frontend 'dist' folder committed to skip npm install on Pi. - Backend package.json updated to stable dependencies (express 4.x, multer 1.4). - Added npm 'overrides' to explicitly block mdns2 installation. - Updated setup.sh to use --package-lock=false for a guaranteed clean install. --- backend/package.json | 14 ++++++++------ frontend/dist/assets/index-4mgl0TUi.css | 1 + frontend/dist/assets/index-PcgCkuv7.js | 9 +++++++++ frontend/dist/index.html | 14 ++++++++++++++ frontend/dist/vite.svg | 1 + scripts/setup.sh | 11 ++++++++--- 6 files changed, 41 insertions(+), 9 deletions(-) create mode 100644 frontend/dist/assets/index-4mgl0TUi.css create mode 100644 frontend/dist/assets/index-PcgCkuv7.js create mode 100644 frontend/dist/index.html create mode 100644 frontend/dist/vite.svg diff --git a/backend/package.json b/backend/package.json index 00e596e..f6e0b72 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,19 +1,21 @@ { "name": "backend", "version": "1.0.0", - "description": "", + "description": "MPVJ Control Center Backend", "main": "index.js", "scripts": { + "start": "node index.js", "test": "echo \"Error: no test specified\" && exit 1" }, - "keywords": [], - "author": "", - "license": "ISC", "dependencies": { - "express": "^5.2.1", - "multer": "^2.1.1", + "express": "^4.21.2", + "multer": "^1.4.5-lts.1", "node-osc": "^11.2.2", "socket.io": "^4.8.3", "systeminformation": "^5.31.4" + }, + "overrides": { + "mdns2": "$mdns2", + "node-uuid": "^1.4.8" } } diff --git a/frontend/dist/assets/index-4mgl0TUi.css b/frontend/dist/assets/index-4mgl0TUi.css new file mode 100644 index 0000000..706c5bd --- /dev/null +++ b/frontend/dist/assets/index-4mgl0TUi.css @@ -0,0 +1 @@ +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-900:oklch(37.9% .146 265.522);--color-purple-500:oklch(62.7% .265 303.9);--color-purple-600:oklch(55.8% .288 302.321);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-gray-950:oklch(13% .028 261.692);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-2xl:42rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-medium:500;--font-weight-bold:700;--font-weight-black:900;--tracking-tighter:-.05em;--tracking-wider:.05em;--tracking-widest:.1em;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-md:12px;--aspect-video:16 / 9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.relative{position:relative}.sticky{position:sticky}.top-0{top:calc(var(--spacing) * 0)}.z-50{z-index:50}.mx-auto{margin-inline:auto}.mt-2{margin-top:calc(var(--spacing) * 2)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.aspect-video{aspect-ratio:var(--aspect-video)}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-8{height:calc(var(--spacing) * 8)}.h-16{height:calc(var(--spacing) * 16)}.h-\[400px\]{height:400px}.h-full{height:100%}.max-h-\[500px\]{max-height:500px}.min-h-screen{min-height:100vh}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-8{width:calc(var(--spacing) * 8)}.w-16{width:calc(var(--spacing) * 16)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-xs{max-width:var(--container-xs)}.flex-1{flex:1}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-grab{cursor:grab}.cursor-move{cursor:move}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-blue-500{border-color:var(--color-blue-500)}.border-blue-600{border-color:var(--color-blue-600)}.border-gray-700{border-color:var(--color-gray-700)}.border-gray-800{border-color:var(--color-gray-800)}.border-orange-600\/20{border-color:#f0510033}@supports (color:color-mix(in lab,red,red)){.border-orange-600\/20{border-color:color-mix(in oklab,var(--color-orange-600) 20%,transparent)}}.border-red-600\/20{border-color:#e4001433}@supports (color:color-mix(in lab,red,red)){.border-red-600\/20{border-color:color-mix(in oklab,var(--color-red-600) 20%,transparent)}}.border-transparent{border-color:#0000}.border-t-transparent{border-top-color:#0000}.bg-black{background-color:var(--color-black)}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.bg-black\/30{background-color:color-mix(in oklab,var(--color-black) 30%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/10{background-color:color-mix(in oklab,var(--color-blue-500) 10%,transparent)}}.bg-blue-600{background-color:var(--color-blue-600)}.bg-blue-600\/10{background-color:#155dfc1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-600\/10{background-color:color-mix(in oklab,var(--color-blue-600) 10%,transparent)}}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-emerald-600{background-color:var(--color-emerald-600)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-gray-950{background-color:var(--color-gray-950)}.bg-gray-950\/50{background-color:#03071280}@supports (color:color-mix(in lab,red,red)){.bg-gray-950\/50{background-color:color-mix(in oklab,var(--color-gray-950) 50%,transparent)}}.bg-gray-950\/80{background-color:#030712cc}@supports (color:color-mix(in lab,red,red)){.bg-gray-950\/80{background-color:color-mix(in oklab,var(--color-gray-950) 80%,transparent)}}.bg-orange-600{background-color:var(--color-orange-600)}.bg-orange-600\/5{background-color:#f051000d}@supports (color:color-mix(in lab,red,red)){.bg-orange-600\/5{background-color:color-mix(in oklab,var(--color-orange-600) 5%,transparent)}}.bg-orange-600\/20{background-color:#f0510033}@supports (color:color-mix(in lab,red,red)){.bg-orange-600\/20{background-color:color-mix(in oklab,var(--color-orange-600) 20%,transparent)}}.bg-purple-600{background-color:var(--color-purple-600)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-red-600\/5{background-color:#e400140d}@supports (color:color-mix(in lab,red,red)){.bg-red-600\/5{background-color:color-mix(in oklab,var(--color-red-600) 5%,transparent)}}.bg-red-600\/20{background-color:#e4001433}@supports (color:color-mix(in lab,red,red)){.bg-red-600\/20{background-color:color-mix(in oklab,var(--color-red-600) 20%,transparent)}}.fill-blue-400{fill:var(--color-blue-400)}.fill-blue-500\/40{fill:#3080ff66}@supports (color:color-mix(in lab,red,red)){.fill-blue-500\/40{fill:color-mix(in oklab,var(--color-blue-500) 40%,transparent)}}.fill-white{fill:var(--color-white)}.fill-white\/10{fill:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.fill-white\/10{fill:color-mix(in oklab,var(--color-white) 10%,transparent)}}.stroke-blue-400{stroke:var(--color-blue-400)}.stroke-white{stroke:var(--color-white)}.stroke-white\/30{stroke:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.stroke-white\/30{stroke:color-mix(in oklab,var(--color-white) 30%,transparent)}}.stroke-1{stroke-width:1px}.stroke-\[0\.2\]{stroke-width:.2px}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-8{padding-block:calc(var(--spacing) * 8)}.pr-2{padding-right:calc(var(--spacing) * 2)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[3px\]{font-size:3px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.tracking-\[0\.3em\]{--tw-tracking:.3em;letter-spacing:.3em}.tracking-tighter{--tw-tracking:var(--tracking-tighter);letter-spacing:var(--tracking-tighter)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-blue-500\/50{color:#3080ff80}@supports (color:color-mix(in lab,red,red)){.text-blue-500\/50{color:color-mix(in oklab,var(--color-blue-500) 50%,transparent)}}.text-emerald-500{color:var(--color-emerald-500)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-orange-500{color:var(--color-orange-500)}.text-red-500{color:var(--color-red-500)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.opacity-0{opacity:0}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-blue-900\/40{--tw-shadow-color:#1c398e66}@supports (color:color-mix(in lab,red,red)){.shadow-blue-900\/40{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-blue-900) 40%, transparent) var(--tw-shadow-alpha), transparent)}}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media(hover:hover){.group-hover\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:text-blue-500:is(:where(.group):hover *){color:var(--color-blue-500)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.hover\:border-blue-500:hover{border-color:var(--color-blue-500)}.hover\:border-blue-500\/50:hover{border-color:#3080ff80}@supports (color:color-mix(in lab,red,red)){.hover\:border-blue-500\/50:hover{border-color:color-mix(in oklab,var(--color-blue-500) 50%,transparent)}}.hover\:border-gray-600:hover{border-color:var(--color-gray-600)}.hover\:border-gray-700:hover{border-color:var(--color-gray-700)}.hover\:bg-blue-500:hover{background-color:var(--color-blue-500)}.hover\:bg-blue-500\/5:hover{background-color:#3080ff0d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-blue-500\/5:hover{background-color:color-mix(in oklab,var(--color-blue-500) 5%,transparent)}}.hover\:bg-emerald-500:hover{background-color:var(--color-emerald-500)}.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.hover\:bg-orange-500:hover{background-color:var(--color-orange-500)}.hover\:bg-orange-600\/10:hover{background-color:#f051001a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-orange-600\/10:hover{background-color:color-mix(in oklab,var(--color-orange-600) 10%,transparent)}}.hover\:bg-purple-500:hover{background-color:var(--color-purple-500)}.hover\:bg-red-500:hover{background-color:var(--color-red-500)}.hover\:bg-red-600\/10:hover{background-color:#e400141a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-600\/10:hover{background-color:color-mix(in oklab,var(--color-red-600) 10%,transparent)}}.hover\:fill-white:hover{fill:var(--color-white)}.hover\:text-gray-300:hover{color:var(--color-gray-300)}.hover\:text-red-500:hover{color:var(--color-red-500)}.hover\:text-white:hover{color:var(--color-white)}}.focus\:border-blue-500:focus{border-color:var(--color-blue-500)}.active\:cursor-grabbing:active{cursor:grabbing}@media(min-width:40rem){.sm\:flex-row{flex-direction:row}}@media(min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:64rem){.lg\:col-span-3{grid-column:span 3/span 3}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}} diff --git a/frontend/dist/assets/index-PcgCkuv7.js b/frontend/dist/assets/index-PcgCkuv7.js new file mode 100644 index 0000000..7a38252 --- /dev/null +++ b/frontend/dist/assets/index-PcgCkuv7.js @@ -0,0 +1,9 @@ +(function(){const i=document.createElement("link").relList;if(i&&i.supports&&i.supports("modulepreload"))return;for(const m of document.querySelectorAll('link[rel="modulepreload"]'))f(m);new MutationObserver(m=>{for(const T of m)if(T.type==="childList")for(const D of T.addedNodes)D.tagName==="LINK"&&D.rel==="modulepreload"&&f(D)}).observe(document,{childList:!0,subtree:!0});function s(m){const T={};return m.integrity&&(T.integrity=m.integrity),m.referrerPolicy&&(T.referrerPolicy=m.referrerPolicy),m.crossOrigin==="use-credentials"?T.credentials="include":m.crossOrigin==="anonymous"?T.credentials="omit":T.credentials="same-origin",T}function f(m){if(m.ep)return;m.ep=!0;const T=s(m);fetch(m.href,T)}})();var zs={exports:{}},Ln={};var kh;function Vy(){if(kh)return Ln;kh=1;var r=Symbol.for("react.transitional.element"),i=Symbol.for("react.fragment");function s(f,m,T){var D=null;if(T!==void 0&&(D=""+T),m.key!==void 0&&(D=""+m.key),"key"in m){T={};for(var w in m)w!=="key"&&(T[w]=m[w])}else T=m;return m=T.ref,{$$typeof:r,type:f,key:D,ref:m!==void 0?m:null,props:T}}return Ln.Fragment=i,Ln.jsx=s,Ln.jsxs=s,Ln}var Wh;function Zy(){return Wh||(Wh=1,zs.exports=Vy()),zs.exports}var _=Zy(),Os={exports:{}},Z={};var $h;function Ky(){if($h)return Z;$h=1;var r=Symbol.for("react.transitional.element"),i=Symbol.for("react.portal"),s=Symbol.for("react.fragment"),f=Symbol.for("react.strict_mode"),m=Symbol.for("react.profiler"),T=Symbol.for("react.consumer"),D=Symbol.for("react.context"),w=Symbol.for("react.forward_ref"),M=Symbol.for("react.suspense"),N=Symbol.for("react.memo"),G=Symbol.for("react.lazy"),Y=Symbol.for("react.activity"),at=Symbol.iterator;function Gt(y){return y===null||typeof y!="object"?null:(y=at&&y[at]||y["@@iterator"],typeof y=="function"?y:null)}var jt={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Rt=Object.assign,pe={};function Jt(y,O,C){this.props=y,this.context=O,this.refs=pe,this.updater=C||jt}Jt.prototype.isReactComponent={},Jt.prototype.setState=function(y,O){if(typeof y!="object"&&typeof y!="function"&&y!=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,y,O,"setState")},Jt.prototype.forceUpdate=function(y){this.updater.enqueueForceUpdate(this,y,"forceUpdate")};function qe(){}qe.prototype=Jt.prototype;function Ct(y,O,C){this.props=y,this.context=O,this.refs=pe,this.updater=C||jt}var $t=Ct.prototype=new qe;$t.constructor=Ct,Rt($t,Jt.prototype),$t.isPureReactComponent=!0;var ve=Array.isArray;function Vt(){}var W={H:null,A:null,T:null,S:null},qt=Object.prototype.hasOwnProperty;function ne(y,O,C){var B=C.ref;return{$$typeof:r,type:y,key:O,ref:B!==void 0?B:null,props:C}}function ol(y,O){return ne(y.type,O,y.props)}function ge(y){return typeof y=="object"&&y!==null&&y.$$typeof===r}function Zt(y){var O={"=":"=0",":":"=2"};return"$"+y.replace(/[=:]/g,function(C){return O[C]})}var Ze=/\/+/g;function De(y,O){return typeof y=="object"&&y!==null&&y.key!=null?Zt(""+y.key):O.toString(36)}function ue(y){switch(y.status){case"fulfilled":return y.value;case"rejected":throw y.reason;default:switch(typeof y.status=="string"?y.then(Vt,Vt):(y.status="pending",y.then(function(O){y.status==="pending"&&(y.status="fulfilled",y.value=O)},function(O){y.status==="pending"&&(y.status="rejected",y.reason=O)})),y.status){case"fulfilled":return y.value;case"rejected":throw y.reason}}throw y}function x(y,O,C,B,V){var k=typeof y;(k==="undefined"||k==="boolean")&&(y=null);var nt=!1;if(y===null)nt=!0;else switch(k){case"bigint":case"string":case"number":nt=!0;break;case"object":switch(y.$$typeof){case r:case i:nt=!0;break;case G:return nt=y._init,x(nt(y._payload),O,C,B,V)}}if(nt)return V=V(y),nt=B===""?"."+De(y,0):B,ve(V)?(C="",nt!=null&&(C=nt.replace(Ze,"$&/")+"/"),x(V,O,C,"",function(Ll){return Ll})):V!=null&&(ge(V)&&(V=ol(V,C+(V.key==null||y&&y.key===V.key?"":(""+V.key).replace(Ze,"$&/")+"/")+nt)),O.push(V)),1;nt=0;var Ht=B===""?".":B+":";if(ve(y))for(var bt=0;bt>>1,ft=x[ct];if(0>>1;ctm(C,X))Bm(V,C)?(x[ct]=V,x[B]=X,ct=B):(x[ct]=C,x[O]=X,ct=O);else if(Bm(V,X))x[ct]=V,x[B]=X,ct=B;else break t}}return R}function m(x,R){var X=x.sortIndex-R.sortIndex;return X!==0?X:x.id-R.id}if(r.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var T=performance;r.unstable_now=function(){return T.now()}}else{var D=Date,w=D.now();r.unstable_now=function(){return D.now()-w}}var M=[],N=[],G=1,Y=null,at=3,Gt=!1,jt=!1,Rt=!1,pe=!1,Jt=typeof setTimeout=="function"?setTimeout:null,qe=typeof clearTimeout=="function"?clearTimeout:null,Ct=typeof setImmediate<"u"?setImmediate:null;function $t(x){for(var R=s(N);R!==null;){if(R.callback===null)f(N);else if(R.startTime<=x)f(N),R.sortIndex=R.expirationTime,i(M,R);else break;R=s(N)}}function ve(x){if(Rt=!1,$t(x),!jt)if(s(M)!==null)jt=!0,Vt||(Vt=!0,Zt());else{var R=s(N);R!==null&&ue(ve,R.startTime-x)}}var Vt=!1,W=-1,qt=5,ne=-1;function ol(){return pe?!0:!(r.unstable_now()-nex&&ol());){var ct=Y.callback;if(typeof ct=="function"){Y.callback=null,at=Y.priorityLevel;var ft=ct(Y.expirationTime<=x);if(x=r.unstable_now(),typeof ft=="function"){Y.callback=ft,$t(x),R=!0;break e}Y===s(M)&&f(M),$t(x)}else f(M);Y=s(M)}if(Y!==null)R=!0;else{var y=s(N);y!==null&&ue(ve,y.startTime-x),R=!1}}break t}finally{Y=null,at=X,Gt=!1}R=void 0}}finally{R?Zt():Vt=!1}}}var Zt;if(typeof Ct=="function")Zt=function(){Ct(ge)};else if(typeof MessageChannel<"u"){var Ze=new MessageChannel,De=Ze.port2;Ze.port1.onmessage=ge,Zt=function(){De.postMessage(null)}}else Zt=function(){Jt(ge,0)};function ue(x,R){W=Jt(function(){x(r.unstable_now())},R)}r.unstable_IdlePriority=5,r.unstable_ImmediatePriority=1,r.unstable_LowPriority=4,r.unstable_NormalPriority=3,r.unstable_Profiling=null,r.unstable_UserBlockingPriority=2,r.unstable_cancelCallback=function(x){x.callback=null},r.unstable_forceFrameRate=function(x){0>x||125ct?(x.sortIndex=X,i(N,x),s(M)===null&&x===s(N)&&(Rt?(qe(W),W=-1):Rt=!0,ue(ve,X-ct))):(x.sortIndex=ft,i(M,x),jt||Gt||(jt=!0,Vt||(Vt=!0,Zt()))),x},r.unstable_shouldYield=ol,r.unstable_wrapCallback=function(x){var R=at;return function(){var X=at;at=R;try{return x.apply(this,arguments)}finally{at=X}}}})(Ds)),Ds}var Ph;function ky(){return Ph||(Ph=1,Ms.exports=Jy()),Ms.exports}var Rs={exports:{}},Kt={};var td;function Wy(){if(td)return Kt;td=1;var r=Xs();function i(M){var N="https://react.dev/errors/"+M;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(r)}catch(i){console.error(i)}}return r(),Rs.exports=Wy(),Rs.exports}var ld;function Fy(){if(ld)return wn;ld=1;var r=ky(),i=Xs(),s=$y();function f(t){var e="https://react.dev/errors/"+t;if(1ft||(t.current=ct[ft],ct[ft]=null,ft--)}function C(t,e){ft++,ct[ft]=t.current,t.current=e}var B=y(null),V=y(null),k=y(null),nt=y(null);function Ht(t,e){switch(C(k,e),C(V,t),C(B,null),e.nodeType){case 9:case 11:t=(t=e.documentElement)&&(t=t.namespaceURI)?vh(t):0;break;default:if(t=e.tagName,e=e.namespaceURI)e=vh(e),t=gh(e,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}O(B),C(B,t)}function bt(){O(B),O(V),O(k)}function Ll(t){t.memoizedState!==null&&C(nt,t);var e=B.current,l=gh(e,t.type);e!==l&&(C(V,t),C(B,l))}function U(t){V.current===t&&(O(B),O(V)),nt.current===t&&(O(nt),jn._currentValue=X)}var j,lt;function Et(t){if(j===void 0)try{throw Error()}catch(l){var e=l.stack.trim().match(/\n( *(at )?)/);j=e&&e[1]||"",lt=-1)":-1n||h[a]!==g[n]){var E=` +`+h[a].replace(" at new "," at ");return t.displayName&&E.includes("")&&(E=E.replace("",t.displayName)),E}while(1<=a&&0<=n);break}}}finally{Re=!1,Error.prepareStackTrace=l}return(l=t?t.displayName||t.name:"")?Et(l):""}function ua(t,e){switch(t.tag){case 26:case 27:case 5:return Et(t.type);case 16:return Et("Lazy");case 13:return t.child!==e&&e!==null?Et("Suspense Fallback"):Et("Suspense");case 19:return Et("SuspenseList");case 0:case 15:return He(t.type,!1);case 11:return He(t.type.render,!1);case 1:return He(t.type,!0);case 31:return Et("Activity");default:return""}}function wl(t){try{var e="",l=null;do e+=ua(t,l),l=t,t=t.return;while(t);return e}catch(a){return` +Error generating stack: `+a.message+` +`+a.stack}}var hl=Object.prototype.hasOwnProperty,Ke=r.unstable_scheduleCallback,Za=r.unstable_cancelCallback,Ed=r.unstable_shouldYield,xd=r.unstable_requestPaint,ie=r.unstable_now,Td=r.unstable_getCurrentPriorityLevel,Js=r.unstable_ImmediatePriority,ks=r.unstable_UserBlockingPriority,Gn=r.unstable_NormalPriority,Ad=r.unstable_LowPriority,Ws=r.unstable_IdlePriority,zd=r.log,Od=r.unstable_setDisableYieldValue,Ka=null,ce=null;function dl(t){if(typeof zd=="function"&&Od(t),ce&&typeof ce.setStrictMode=="function")try{ce.setStrictMode(Ka,t)}catch{}}var se=Math.clz32?Math.clz32:Dd,Nd=Math.log,Md=Math.LN2;function Dd(t){return t>>>=0,t===0?32:31-(Nd(t)/Md|0)|0}var Vn=256,Zn=262144,Kn=4194304;function Xl(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 Jn(t,e,l){var a=t.pendingLanes;if(a===0)return 0;var n=0,u=t.suspendedLanes,c=t.pingedLanes;t=t.warmLanes;var o=a&134217727;return o!==0?(a=o&~u,a!==0?n=Xl(a):(c&=o,c!==0?n=Xl(c):l||(l=o&~t,l!==0&&(n=Xl(l))))):(o=a&~u,o!==0?n=Xl(o):c!==0?n=Xl(c):l||(l=a&~t,l!==0&&(n=Xl(l)))),n===0?0:e!==0&&e!==n&&(e&u)===0&&(u=n&-n,l=e&-e,u>=l||u===32&&(l&4194048)!==0)?e:n}function Ja(t,e){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&e)===0}function Rd(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 $s(){var t=Kn;return Kn<<=1,(Kn&62914560)===0&&(Kn=4194304),t}function yi(t){for(var e=[],l=0;31>l;l++)e.push(t);return e}function ka(t,e){t.pendingLanes|=e,e!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function Cd(t,e,l,a,n,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,g=t.hiddenUpdates;for(l=c&~l;0"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var Yd=/[\n"\\]/g;function Se(t){return t.replace(Yd,function(e){return"\\"+e.charCodeAt(0).toString(16)+" "})}function Si(t,e,l,a,n,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=""+be(e)):t.value!==""+be(e)&&(t.value=""+be(e)):c!=="submit"&&c!=="reset"||t.removeAttribute("value"),e!=null?_i(t,c,be(e)):l!=null?_i(t,c,be(l)):a!=null&&t.removeAttribute("value"),n==null&&u!=null&&(t.defaultChecked=!!u),n!=null&&(t.checked=n&&typeof n!="function"&&typeof n!="symbol"),o!=null&&typeof o!="function"&&typeof o!="symbol"&&typeof o!="boolean"?t.name=""+be(o):t.removeAttribute("name")}function rf(t,e,l,a,n,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)){bi(t);return}l=l!=null?""+be(l):"",e=e!=null?""+be(e):l,o||e===t.value||(t.value=e),t.defaultValue=e}a=a??n,a=typeof a!="function"&&typeof a!="symbol"&&!!a,t.checked=o?t.checked:!!a,t.defaultChecked=!!a,c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(t.name=c),bi(t)}function _i(t,e,l){e==="number"&&$n(t.ownerDocument)===t||t.defaultValue===""+l||(t.defaultValue=""+l)}function oa(t,e,l,a){if(t=t.options,e){e={};for(var n=0;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),zi=!1;if(We)try{var Ia={};Object.defineProperty(Ia,"passive",{get:function(){zi=!0}}),window.addEventListener("test",Ia,Ia),window.removeEventListener("test",Ia,Ia)}catch{zi=!1}var ml=null,Oi=null,In=null;function vf(){if(In)return In;var t,e=Oi,l=e.length,a,n="value"in ml?ml.value:ml.textContent,u=n.length;for(t=0;t=en),xf=" ",Tf=!1;function Af(t,e){switch(t){case"keyup":return h0.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function zf(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var ma=!1;function y0(t,e){switch(t){case"compositionend":return zf(e);case"keypress":return e.which!==32?null:(Tf=!0,xf);case"textInput":return t=e.data,t===xf&&Tf?null:t;default:return null}}function m0(t,e){if(ma)return t==="compositionend"||!Ci&&Af(t,e)?(t=vf(),In=Oi=ml=null,ma=!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=a}t:{for(;l;){if(l.nextSibling){l=l.nextSibling;break t}l=l.parentNode}l=void 0}l=Bf(l)}}function qf(t,e){return t&&e?t===e?!0:t&&t.nodeType===3?!1:e&&e.nodeType===3?qf(t,e.parentNode):"contains"in t?t.contains(e):t.compareDocumentPosition?!!(t.compareDocumentPosition(e)&16):!1:!1}function Hf(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var e=$n(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=$n(t.document)}return e}function ji(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 x0=We&&"documentMode"in document&&11>=document.documentMode,pa=null,qi=null,un=null,Hi=!1;function Yf(t,e,l){var a=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;Hi||pa==null||pa!==$n(a)||(a=pa,"selectionStart"in a&&ji(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),un&&nn(un,a)||(un=a,a=Zu(qi,"onSelect"),0>=c,n-=c,Ye=1<<32-se(e)+n|l<J?(P=H,H=null):P=H.sibling;var it=b(p,H,v[J],A);if(it===null){H===null&&(H=P);break}t&&H&&it.alternate===null&&e(p,H),d=u(it,d,J),ut===null?L=it:ut.sibling=it,ut=it,H=P}if(J===v.length)return l(p,H),tt&&Fe(p,J),L;if(H===null){for(;JJ?(P=H,H=null):P=H.sibling;var Hl=b(p,H,it.value,A);if(Hl===null){H===null&&(H=P);break}t&&H&&Hl.alternate===null&&e(p,H),d=u(Hl,d,J),ut===null?L=Hl:ut.sibling=Hl,ut=Hl,H=P}if(it.done)return l(p,H),tt&&Fe(p,J),L;if(H===null){for(;!it.done;J++,it=v.next())it=z(p,it.value,A),it!==null&&(d=u(it,d,J),ut===null?L=it:ut.sibling=it,ut=it);return tt&&Fe(p,J),L}for(H=a(H);!it.done;J++,it=v.next())it=S(H,p,J,it.value,A),it!==null&&(t&&it.alternate!==null&&H.delete(it.key===null?J:it.key),d=u(it,d,J),ut===null?L=it:ut.sibling=it,ut=it);return t&&H.forEach(function(Gy){return e(p,Gy)}),tt&&Fe(p,J),L}function yt(p,d,v,A){if(typeof v=="object"&&v!==null&&v.type===Rt&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case Gt:t:{for(var L=v.key;d!==null;){if(d.key===L){if(L=v.type,L===Rt){if(d.tag===7){l(p,d.sibling),A=n(d,v.props.children),A.return=p,p=A;break t}}else if(d.elementType===L||typeof L=="object"&&L!==null&&L.$$typeof===qt&&Il(L)===d.type){l(p,d.sibling),A=n(d,v.props),hn(A,v),A.return=p,p=A;break t}l(p,d);break}else e(p,d);d=d.sibling}v.type===Rt?(A=Jl(v.props.children,p.mode,A,v.key),A.return=p,p=A):(A=su(v.type,v.key,v.props,null,p.mode,A),hn(A,v),A.return=p,p=A)}return c(p);case jt:t:{for(L=v.key;d!==null;){if(d.key===L)if(d.tag===4&&d.stateNode.containerInfo===v.containerInfo&&d.stateNode.implementation===v.implementation){l(p,d.sibling),A=n(d,v.children||[]),A.return=p,p=A;break t}else{l(p,d);break}else e(p,d);d=d.sibling}A=Vi(v,p.mode,A),A.return=p,p=A}return c(p);case qt:return v=Il(v),yt(p,d,v,A)}if(ue(v))return q(p,d,v,A);if(Zt(v)){if(L=Zt(v),typeof L!="function")throw Error(f(150));return v=L.call(v),Q(p,d,v,A)}if(typeof v.then=="function")return yt(p,d,mu(v),A);if(v.$$typeof===Ct)return yt(p,d,ou(p,v),A);pu(p,v)}return typeof v=="string"&&v!==""||typeof v=="number"||typeof v=="bigint"?(v=""+v,d!==null&&d.tag===6?(l(p,d.sibling),A=n(d,v),A.return=p,p=A):(l(p,d),A=Gi(v,p.mode,A),A.return=p,p=A),c(p)):l(p,d)}return function(p,d,v,A){try{on=0;var L=yt(p,d,v,A);return Oa=null,L}catch(H){if(H===za||H===du)throw H;var ut=re(29,H,null,p.mode);return ut.lanes=A,ut.return=p,ut}}}var ta=cr(!0),sr=cr(!1),Sl=!1;function lc(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function ac(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 _l(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function El(t,e,l){var a=t.updateQueue;if(a===null)return null;if(a=a.shared,(st&2)!==0){var n=a.pending;return n===null?e.next=e:(e.next=n.next,n.next=e),a.pending=e,e=cu(t),Zf(t,null,l),e}return iu(t,a,e,l),cu(t)}function dn(t,e,l){if(e=e.updateQueue,e!==null&&(e=e.shared,(l&4194048)!==0)){var a=e.lanes;a&=t.pendingLanes,l|=a,e.lanes=l,Is(t,l)}}function nc(t,e){var l=t.updateQueue,a=t.alternate;if(a!==null&&(a=a.updateQueue,l===a)){var n=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?n=u=c:u=u.next=c,l=l.next}while(l!==null);u===null?n=u=e:u=u.next=e}else n=u=e;l={baseState:a.baseState,firstBaseUpdate:n,lastBaseUpdate:u,shared:a.shared,callbacks:a.callbacks},t.updateQueue=l;return}t=l.lastBaseUpdate,t===null?l.firstBaseUpdate=e:t.next=e,l.lastBaseUpdate=e}var uc=!1;function yn(){if(uc){var t=Aa;if(t!==null)throw t}}function mn(t,e,l,a){uc=!1;var n=t.updateQueue;Sl=!1;var u=n.firstBaseUpdate,c=n.lastBaseUpdate,o=n.shared.pending;if(o!==null){n.shared.pending=null;var h=o,g=h.next;h.next=null,c===null?u=g:c.next=g,c=h;var E=t.alternate;E!==null&&(E=E.updateQueue,o=E.lastBaseUpdate,o!==c&&(o===null?E.firstBaseUpdate=g:o.next=g,E.lastBaseUpdate=h))}if(u!==null){var z=n.baseState;c=0,E=g=h=null,o=u;do{var b=o.lane&-536870913,S=b!==o.lane;if(S?(I&b)===b:(a&b)===b){b!==0&&b===Ta&&(uc=!0),E!==null&&(E=E.next={lane:0,tag:o.tag,payload:o.payload,callback:null,next:null});t:{var q=t,Q=o;b=e;var yt=l;switch(Q.tag){case 1:if(q=Q.payload,typeof q=="function"){z=q.call(yt,z,b);break t}z=q;break t;case 3:q.flags=q.flags&-65537|128;case 0:if(q=Q.payload,b=typeof q=="function"?q.call(yt,z,b):q,b==null)break t;z=Y({},z,b);break t;case 2:Sl=!0}}b=o.callback,b!==null&&(t.flags|=64,S&&(t.flags|=8192),S=n.callbacks,S===null?n.callbacks=[b]:S.push(b))}else S={lane:b,tag:o.tag,payload:o.payload,callback:o.callback,next:null},E===null?(g=E=S,h=z):E=E.next=S,c|=b;if(o=o.next,o===null){if(o=n.shared.pending,o===null)break;S=o,o=S.next,S.next=null,n.lastBaseUpdate=S,n.shared.pending=null}}while(!0);E===null&&(h=z),n.baseState=h,n.firstBaseUpdate=g,n.lastBaseUpdate=E,u===null&&(n.shared.lanes=0),Ol|=c,t.lanes=c,t.memoizedState=z}}function fr(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=x.T,o={};x.T=o,Tc(t,!1,e,l);try{var h=n(),g=x.S;if(g!==null&&g(o,h),h!==null&&typeof h=="object"&&typeof h.then=="function"){var E=C0(h,a);gn(t,e,E,me(t))}else gn(t,e,a,me(t))}catch(z){gn(t,e,{then:function(){},status:"rejected",reason:z},me())}finally{R.p=u,c!==null&&o.types!==null&&(c.types=o.types),x.T=c}}function Y0(){}function Ec(t,e,l,a){if(t.tag!==5)throw Error(f(476));var n=Qr(t).queue;Xr(t,n,e,X,l===null?Y0:function(){return Gr(t),l(a)})}function Qr(t){var e=t.memoizedState;if(e!==null)return e;e={memoizedState:X,baseState:X,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:el,lastRenderedState:X},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 Gr(t){var e=Qr(t);e.next===null&&(e=t.alternate.memoizedState),gn(t,e.next.queue,{},me())}function xc(){return wt(jn)}function Vr(){return Tt().memoizedState}function Zr(){return Tt().memoizedState}function L0(t){for(var e=t.return;e!==null;){switch(e.tag){case 24:case 3:var l=me();t=_l(l);var a=El(e,t,l);a!==null&&(ae(a,e,l),dn(a,e,l)),e={cache:Ii()},t.payload=e;return}e=e.return}}function w0(t,e,l){var a=me();l={lane:a,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},zu(t)?Jr(e,l):(l=Xi(t,e,l,a),l!==null&&(ae(l,t,a),kr(l,e,a)))}function Kr(t,e,l){var a=me();gn(t,e,l,a)}function gn(t,e,l,a){var n={lane:a,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null};if(zu(t))Jr(e,n);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(n.hasEagerState=!0,n.eagerState=o,fe(o,c))return iu(t,e,n,0),mt===null&&uu(),!1}catch{}if(l=Xi(t,e,n,a),l!==null)return ae(l,t,a),kr(l,e,a),!0}return!1}function Tc(t,e,l,a){if(a={lane:2,revertLane:ls(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},zu(t)){if(e)throw Error(f(479))}else e=Xi(t,l,a,2),e!==null&&ae(e,t,2)}function zu(t){var e=t.alternate;return t===K||e!==null&&e===K}function Jr(t,e){Ma=bu=!0;var l=t.pending;l===null?e.next=e:(e.next=l.next,l.next=e),t.pending=e}function kr(t,e,l){if((l&4194048)!==0){var a=e.lanes;a&=t.pendingLanes,l|=a,e.lanes=l,Is(t,l)}}var bn={readContext:wt,use:Eu,useCallback:St,useContext:St,useEffect:St,useImperativeHandle:St,useLayoutEffect:St,useInsertionEffect:St,useMemo:St,useReducer:St,useRef:St,useState:St,useDebugValue:St,useDeferredValue:St,useTransition:St,useSyncExternalStore:St,useId:St,useHostTransitionStatus:St,useFormState:St,useActionState:St,useOptimistic:St,useMemoCache:St,useCacheRefresh:St};bn.useEffectEvent=St;var Wr={readContext:wt,use:Eu,useCallback:function(t,e){return kt().memoizedState=[t,e===void 0?null:e],t},useContext:wt,useEffect:Cr,useImperativeHandle:function(t,e,l){l=l!=null?l.concat([t]):null,Tu(4194308,4,qr.bind(null,e,t),l)},useLayoutEffect:function(t,e){return Tu(4194308,4,t,e)},useInsertionEffect:function(t,e){Tu(4,2,t,e)},useMemo:function(t,e){var l=kt();e=e===void 0?null:e;var a=t();if(ea){dl(!0);try{t()}finally{dl(!1)}}return l.memoizedState=[a,e],a},useReducer:function(t,e,l){var a=kt();if(l!==void 0){var n=l(e);if(ea){dl(!0);try{l(e)}finally{dl(!1)}}}else n=e;return a.memoizedState=a.baseState=n,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:n},a.queue=t,t=t.dispatch=w0.bind(null,K,t),[a.memoizedState,t]},useRef:function(t){var e=kt();return t={current:t},e.memoizedState=t},useState:function(t){t=vc(t);var e=t.queue,l=Kr.bind(null,K,e);return e.dispatch=l,[t.memoizedState,l]},useDebugValue:Sc,useDeferredValue:function(t,e){var l=kt();return _c(l,t,e)},useTransition:function(){var t=vc(!1);return t=Xr.bind(null,K,t.queue,!0,!1),kt().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,e,l){var a=K,n=kt();if(tt){if(l===void 0)throw Error(f(407));l=l()}else{if(l=e(),mt===null)throw Error(f(349));(I&127)!==0||pr(a,e,l)}n.memoizedState=l;var u={value:l,getSnapshot:e};return n.queue=u,Cr(gr.bind(null,a,u,t),[t]),a.flags|=2048,Ra(9,{destroy:void 0},vr.bind(null,a,u,l,e),null),l},useId:function(){var t=kt(),e=mt.identifierPrefix;if(tt){var l=Le,a=Ye;l=(a&~(1<<32-se(a)-1)).toString(32)+l,e="_"+e+"R_"+l,l=Su++,0<\/script>",u=u.removeChild(u.firstChild);break;case"select":u=typeof a.is=="string"?c.createElement("select",{is:a.is}):c.createElement("select"),a.multiple?u.multiple=!0:a.size&&(u.size=a.size);break;default:u=typeof a.is=="string"?c.createElement(n,{is:a.is}):c.createElement(n)}}u[Yt]=e,u[Ft]=a;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(Qt(u,n,a),n){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break t;case"img":a=!0;break t;default:a=!1}a&&al(e)}}return vt(e),Yc(e,e.type,t===null?null:t.memoizedProps,e.pendingProps,l),null;case 6:if(t&&e.stateNode!=null)t.memoizedProps!==a&&al(e);else{if(typeof a!="string"&&e.stateNode===null)throw Error(f(166));if(t=k.current,Ea(e)){if(t=e.stateNode,l=e.memoizedProps,a=null,n=Lt,n!==null)switch(n.tag){case 27:case 5:a=n.memoizedProps}t[Yt]=e,t=!!(t.nodeValue===l||a!==null&&a.suppressHydrationWarning===!0||mh(t.nodeValue,l)),t||gl(e,!0)}else t=Ku(t).createTextNode(a),t[Yt]=e,e.stateNode=t}return vt(e),null;case 31:if(l=e.memoizedState,t===null||t.memoizedState!==null){if(a=Ea(e),l!==null){if(t===null){if(!a)throw Error(f(318));if(t=e.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(f(557));t[Yt]=e}else kl(),(e.flags&128)===0&&(e.memoizedState=null),e.flags|=4;vt(e),t=!1}else l=ki(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=l),t=!0;if(!t)return e.flags&256?(he(e),e):(he(e),null);if((e.flags&128)!==0)throw Error(f(558))}return vt(e),null;case 13:if(a=e.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(n=Ea(e),a!==null&&a.dehydrated!==null){if(t===null){if(!n)throw Error(f(318));if(n=e.memoizedState,n=n!==null?n.dehydrated:null,!n)throw Error(f(317));n[Yt]=e}else kl(),(e.flags&128)===0&&(e.memoizedState=null),e.flags|=4;vt(e),n=!1}else n=ki(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=n),n=!0;if(!n)return e.flags&256?(he(e),e):(he(e),null)}return he(e),(e.flags&128)!==0?(e.lanes=l,e):(l=a!==null,t=t!==null&&t.memoizedState!==null,l&&(a=e.child,n=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(n=a.alternate.memoizedState.cachePool.pool),u=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(u=a.memoizedState.cachePool.pool),u!==n&&(a.flags|=2048)),l!==t&&l&&(e.child.flags|=8192),Ru(e,e.updateQueue),vt(e),null);case 4:return bt(),t===null&&is(e.stateNode.containerInfo),vt(e),null;case 10:return Pe(e.type),vt(e),null;case 19:if(O(xt),a=e.memoizedState,a===null)return vt(e),null;if(n=(e.flags&128)!==0,u=a.rendering,u===null)if(n)_n(a,!1);else{if(_t!==0||t!==null&&(t.flags&128)!==0)for(t=e.child;t!==null;){if(u=gu(t),u!==null){for(e.flags|=128,_n(a,!1),t=u.updateQueue,e.updateQueue=t,Ru(e,t),e.subtreeFlags=0,t=l,l=e.child;l!==null;)Kf(l,t),l=l.sibling;return C(xt,xt.current&1|2),tt&&Fe(e,a.treeForkCount),e.child}t=t.sibling}a.tail!==null&&ie()>qu&&(e.flags|=128,n=!0,_n(a,!1),e.lanes=4194304)}else{if(!n)if(t=gu(u),t!==null){if(e.flags|=128,n=!0,t=t.updateQueue,e.updateQueue=t,Ru(e,t),_n(a,!0),a.tail===null&&a.tailMode==="hidden"&&!u.alternate&&!tt)return vt(e),null}else 2*ie()-a.renderingStartTime>qu&&l!==536870912&&(e.flags|=128,n=!0,_n(a,!1),e.lanes=4194304);a.isBackwards?(u.sibling=e.child,e.child=u):(t=a.last,t!==null?t.sibling=u:e.child=u,a.last=u)}return a.tail!==null?(t=a.tail,a.rendering=t,a.tail=t.sibling,a.renderingStartTime=ie(),t.sibling=null,l=xt.current,C(xt,n?l&1|2:l&1),tt&&Fe(e,a.treeForkCount),t):(vt(e),null);case 22:case 23:return he(e),cc(),a=e.memoizedState!==null,t!==null?t.memoizedState!==null!==a&&(e.flags|=8192):a&&(e.flags|=8192),a?(l&536870912)!==0&&(e.flags&128)===0&&(vt(e),e.subtreeFlags&6&&(e.flags|=8192)):vt(e),l=e.updateQueue,l!==null&&Ru(e,l.retryQueue),l=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(l=t.memoizedState.cachePool.pool),a=null,e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(a=e.memoizedState.cachePool.pool),a!==l&&(e.flags|=2048),t!==null&&O(Fl),null;case 24:return l=null,t!==null&&(l=t.memoizedState.cache),e.memoizedState.cache!==l&&(e.flags|=2048),Pe(At),vt(e),null;case 25:return null;case 30:return null}throw Error(f(156,e.tag))}function Z0(t,e){switch(Ki(e),e.tag){case 1:return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 3:return Pe(At),bt(),t=e.flags,(t&65536)!==0&&(t&128)===0?(e.flags=t&-65537|128,e):null;case 26:case 27:case 5:return U(e),null;case 31:if(e.memoizedState!==null){if(he(e),e.alternate===null)throw Error(f(340));kl()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 13:if(he(e),t=e.memoizedState,t!==null&&t.dehydrated!==null){if(e.alternate===null)throw Error(f(340));kl()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 19:return O(xt),null;case 4:return bt(),null;case 10:return Pe(e.type),null;case 22:case 23:return he(e),cc(),t!==null&&O(Fl),t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 24:return Pe(At),null;case 25:return null;default:return null}}function So(t,e){switch(Ki(e),e.tag){case 3:Pe(At),bt();break;case 26:case 27:case 5:U(e);break;case 4:bt();break;case 31:e.memoizedState!==null&&he(e);break;case 13:he(e);break;case 19:O(xt);break;case 10:Pe(e.type);break;case 22:case 23:he(e),cc(),t!==null&&O(Fl);break;case 24:Pe(At)}}function En(t,e){try{var l=e.updateQueue,a=l!==null?l.lastEffect:null;if(a!==null){var n=a.next;l=n;do{if((l.tag&t)===t){a=void 0;var u=l.create,c=l.inst;a=u(),c.destroy=a}l=l.next}while(l!==n)}}catch(o){ot(e,e.return,o)}}function Al(t,e,l){try{var a=e.updateQueue,n=a!==null?a.lastEffect:null;if(n!==null){var u=n.next;a=u;do{if((a.tag&t)===t){var c=a.inst,o=c.destroy;if(o!==void 0){c.destroy=void 0,n=e;var h=l,g=o;try{g()}catch(E){ot(n,h,E)}}}a=a.next}while(a!==u)}}catch(E){ot(e,e.return,E)}}function _o(t){var e=t.updateQueue;if(e!==null){var l=t.stateNode;try{rr(e,l)}catch(a){ot(t,t.return,a)}}}function Eo(t,e,l){l.props=la(t.type,t.memoizedProps),l.state=t.memoizedState;try{l.componentWillUnmount()}catch(a){ot(t,e,a)}}function xn(t,e){try{var l=t.ref;if(l!==null){switch(t.tag){case 26:case 27:case 5:var a=t.stateNode;break;case 30:a=t.stateNode;break;default:a=t.stateNode}typeof l=="function"?t.refCleanup=l(a):l.current=a}}catch(n){ot(t,e,n)}}function we(t,e){var l=t.ref,a=t.refCleanup;if(l!==null)if(typeof a=="function")try{a()}catch(n){ot(t,e,n)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof l=="function")try{l(null)}catch(n){ot(t,e,n)}else l.current=null}function xo(t){var e=t.type,l=t.memoizedProps,a=t.stateNode;try{t:switch(e){case"button":case"input":case"select":case"textarea":l.autoFocus&&a.focus();break t;case"img":l.src?a.src=l.src:l.srcSet&&(a.srcset=l.srcSet)}}catch(n){ot(t,t.return,n)}}function Lc(t,e,l){try{var a=t.stateNode;dy(a,t.type,l,e),a[Ft]=e}catch(n){ot(t,t.return,n)}}function To(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&Cl(t.type)||t.tag===4}function wc(t){t:for(;;){for(;t.sibling===null;){if(t.return===null||To(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&&Cl(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 Xc(t,e,l){var a=t.tag;if(a===5||a===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(a!==4&&(a===27&&Cl(t.type)&&(l=t.stateNode,e=null),t=t.child,t!==null))for(Xc(t,e,l),t=t.sibling;t!==null;)Xc(t,e,l),t=t.sibling}function Cu(t,e,l){var a=t.tag;if(a===5||a===6)t=t.stateNode,e?l.insertBefore(t,e):l.appendChild(t);else if(a!==4&&(a===27&&Cl(t.type)&&(l=t.stateNode),t=t.child,t!==null))for(Cu(t,e,l),t=t.sibling;t!==null;)Cu(t,e,l),t=t.sibling}function Ao(t){var e=t.stateNode,l=t.memoizedProps;try{for(var a=t.type,n=e.attributes;n.length;)e.removeAttributeNode(n[0]);Qt(e,a,l),e[Yt]=t,e[Ft]=l}catch(u){ot(t,t.return,u)}}var nl=!1,Nt=!1,Qc=!1,zo=typeof WeakSet=="function"?WeakSet:Set,Bt=null;function K0(t,e){if(t=t.containerInfo,fs=Pu,t=Hf(t),ji(t)){if("selectionStart"in t)var l={start:t.selectionStart,end:t.selectionEnd};else t:{l=(l=t.ownerDocument)&&l.defaultView||window;var a=l.getSelection&&l.getSelection();if(a&&a.rangeCount!==0){l=a.anchorNode;var n=a.anchorOffset,u=a.focusNode;a=a.focusOffset;try{l.nodeType,u.nodeType}catch{l=null;break t}var c=0,o=-1,h=-1,g=0,E=0,z=t,b=null;e:for(;;){for(var S;z!==l||n!==0&&z.nodeType!==3||(o=c+n),z!==u||a!==0&&z.nodeType!==3||(h=c+a),z.nodeType===3&&(c+=z.nodeValue.length),(S=z.firstChild)!==null;)b=z,z=S;for(;;){if(z===t)break e;if(b===l&&++g===n&&(o=c),b===u&&++E===a&&(h=c),(S=z.nextSibling)!==null)break;z=b,b=z.parentNode}z=S}l=o===-1||h===-1?null:{start:o,end:h}}else l=null}l=l||{start:0,end:0}}else l=null;for(rs={focusedElem:t,selectionRange:l},Pu=!1,Bt=e;Bt!==null;)if(e=Bt,t=e.child,(e.subtreeFlags&1028)!==0&&t!==null)t.return=e,Bt=t;else for(;Bt!==null;){switch(e=Bt,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"))),Qt(u,a,l),u[Yt]=t,Ut(u),a=u;break t;case"link":var c=Ch("link","href",n).get(a+(l.href||""));if(c){for(var o=0;oyt&&(c=yt,yt=Q,Q=c);var p=jf(o,Q),d=jf(o,yt);if(p&&d&&(S.rangeCount!==1||S.anchorNode!==p.node||S.anchorOffset!==p.offset||S.focusNode!==d.node||S.focusOffset!==d.offset)){var v=z.createRange();v.setStart(p.node,p.offset),S.removeAllRanges(),Q>yt?(S.addRange(v),S.extend(d.node,d.offset)):(v.setEnd(d.node,d.offset),S.addRange(v))}}}}for(z=[],S=o;S=S.parentNode;)S.nodeType===1&&z.push({element:S,left:S.scrollLeft,top:S.scrollTop});for(typeof o.focus=="function"&&o.focus(),o=0;ol?32:l,x.T=null,l=Wc,Wc=null;var u=Ml,c=fl;if(Dt=0,qa=Ml=null,fl=0,(st&6)!==0)throw Error(f(331));var o=st;if(st|=4,Ho(u.current),Bo(u,u.current,c,l),st=o,Mn(0,!1),ce&&typeof ce.onPostCommitFiberRoot=="function")try{ce.onPostCommitFiberRoot(Ka,u)}catch{}return!0}finally{R.p=n,x.T=a,eh(t,e)}}function ah(t,e,l){e=Ee(l,e),e=Nc(t.stateNode,e,2),t=El(t,e,2),t!==null&&(ka(t,2),Xe(t))}function ot(t,e,l){if(t.tag===3)ah(t,t,l);else for(;e!==null;){if(e.tag===3){ah(e,t,l);break}else if(e.tag===1){var a=e.stateNode;if(typeof e.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(Nl===null||!Nl.has(a))){t=Ee(l,t),l=ao(2),a=El(e,l,2),a!==null&&(no(l,a,e,t),ka(a,2),Xe(a));break}}e=e.return}}function Pc(t,e,l){var a=t.pingCache;if(a===null){a=t.pingCache=new W0;var n=new Set;a.set(e,n)}else n=a.get(e),n===void 0&&(n=new Set,a.set(e,n));n.has(l)||(Zc=!0,n.add(l),t=ty.bind(null,t,e,l),e.then(t,t))}function ty(t,e,l){var a=t.pingCache;a!==null&&a.delete(e),t.pingedLanes|=t.suspendedLanes&l,t.warmLanes&=~l,mt===t&&(I&l)===l&&(_t===4||_t===3&&(I&62914560)===I&&300>ie()-ju?(st&2)===0&&Ha(t,0):Kc|=l,ja===I&&(ja=0)),Xe(t)}function nh(t,e){e===0&&(e=$s()),t=Kl(t,e),t!==null&&(ka(t,e),Xe(t))}function ey(t){var e=t.memoizedState,l=0;e!==null&&(l=e.retryLane),nh(t,l)}function ly(t,e){var l=0;switch(t.tag){case 31:case 13:var a=t.stateNode,n=t.memoizedState;n!==null&&(l=n.retryLane);break;case 19:a=t.stateNode;break;case 22:a=t.stateNode._retryCache;break;default:throw Error(f(314))}a!==null&&a.delete(e),nh(t,l)}function ay(t,e){return Ke(t,e)}var Qu=null,La=null,ts=!1,Gu=!1,es=!1,Rl=0;function Xe(t){t!==La&&t.next===null&&(La===null?Qu=La=t:La=La.next=t),Gu=!0,ts||(ts=!0,uy())}function Mn(t,e){if(!es&&Gu){es=!0;do for(var l=!1,a=Qu;a!==null;){if(t!==0){var n=a.pendingLanes;if(n===0)var u=0;else{var c=a.suspendedLanes,o=a.pingedLanes;u=(1<<31-se(42|t)+1)-1,u&=n&~(c&~o),u=u&201326741?u&201326741|1:u?u|2:0}u!==0&&(l=!0,sh(a,u))}else u=I,u=Jn(a,a===mt?u:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(u&3)===0||Ja(a,u)||(l=!0,sh(a,u));a=a.next}while(l);es=!1}}function ny(){uh()}function uh(){Gu=ts=!1;var t=0;Rl!==0&&my()&&(t=Rl);for(var e=ie(),l=null,a=Qu;a!==null;){var n=a.next,u=ih(a,e);u===0?(a.next=null,l===null?Qu=n:l.next=n,n===null&&(La=l)):(l=a,(t!==0||(u&3)!==0)&&(Gu=!0)),a=n}Dt!==0&&Dt!==5||Mn(t),Rl!==0&&(Rl=0)}function ih(t,e){for(var l=t.suspendedLanes,a=t.pingedLanes,n=t.expirationTimes,u=t.pendingLanes&-62914561;0o)break;var E=h.transferSize,z=h.initiatorType;E&&ph(z)&&(h=h.responseEnd,c+=E*(h"u"?null:document;function Nh(t,e,l){var a=wa;if(a&&typeof e=="string"&&e){var n=Se(e);n='link[rel="'+t+'"][href="'+n+'"]',typeof l=="string"&&(n+='[crossorigin="'+l+'"]'),Oh.has(n)||(Oh.add(n),t={rel:t,crossOrigin:l,href:e},a.querySelector(n)===null&&(e=a.createElement("link"),Qt(e,"link",t),Ut(e),a.head.appendChild(e)))}}function Ty(t){rl.D(t),Nh("dns-prefetch",t,null)}function Ay(t,e){rl.C(t,e),Nh("preconnect",t,e)}function zy(t,e,l){rl.L(t,e,l);var a=wa;if(a&&t&&e){var n='link[rel="preload"][as="'+Se(e)+'"]';e==="image"&&l&&l.imageSrcSet?(n+='[imagesrcset="'+Se(l.imageSrcSet)+'"]',typeof l.imageSizes=="string"&&(n+='[imagesizes="'+Se(l.imageSizes)+'"]')):n+='[href="'+Se(t)+'"]';var u=n;switch(e){case"style":u=Xa(t);break;case"script":u=Qa(t)}Ne.has(u)||(t=Y({rel:"preload",href:e==="image"&&l&&l.imageSrcSet?void 0:t,as:e},l),Ne.set(u,t),a.querySelector(n)!==null||e==="style"&&a.querySelector(Un(u))||e==="script"&&a.querySelector(Bn(u))||(e=a.createElement("link"),Qt(e,"link",t),Ut(e),a.head.appendChild(e)))}}function Oy(t,e){rl.m(t,e);var l=wa;if(l&&t){var a=e&&typeof e.as=="string"?e.as:"script",n='link[rel="modulepreload"][as="'+Se(a)+'"][href="'+Se(t)+'"]',u=n;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":u=Qa(t)}if(!Ne.has(u)&&(t=Y({rel:"modulepreload",href:t},e),Ne.set(u,t),l.querySelector(n)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(l.querySelector(Bn(u)))return}a=l.createElement("link"),Qt(a,"link",t),Ut(a),l.head.appendChild(a)}}}function Ny(t,e,l){rl.S(t,e,l);var a=wa;if(a&&t){var n=fa(a).hoistableStyles,u=Xa(t);e=e||"default";var c=n.get(u);if(!c){var o={loading:0,preload:null};if(c=a.querySelector(Un(u)))o.loading=5;else{t=Y({rel:"stylesheet",href:t,"data-precedence":e},l),(l=Ne.get(u))&&vs(t,l);var h=c=a.createElement("link");Ut(h),Qt(h,"link",t),h._p=new Promise(function(g,E){h.onload=g,h.onerror=E}),h.addEventListener("load",function(){o.loading|=1}),h.addEventListener("error",function(){o.loading|=2}),o.loading|=4,ku(c,e,a)}c={type:"stylesheet",instance:c,count:1,state:o},n.set(u,c)}}}function My(t,e){rl.X(t,e);var l=wa;if(l&&t){var a=fa(l).hoistableScripts,n=Qa(t),u=a.get(n);u||(u=l.querySelector(Bn(n)),u||(t=Y({src:t,async:!0},e),(e=Ne.get(n))&&gs(t,e),u=l.createElement("script"),Ut(u),Qt(u,"link",t),l.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},a.set(n,u))}}function Dy(t,e){rl.M(t,e);var l=wa;if(l&&t){var a=fa(l).hoistableScripts,n=Qa(t),u=a.get(n);u||(u=l.querySelector(Bn(n)),u||(t=Y({src:t,async:!0,type:"module"},e),(e=Ne.get(n))&&gs(t,e),u=l.createElement("script"),Ut(u),Qt(u,"link",t),l.head.appendChild(u)),u={type:"script",instance:u,count:1,state:null},a.set(n,u))}}function Mh(t,e,l,a){var n=(n=k.current)?Ju(n):null;if(!n)throw Error(f(446));switch(t){case"meta":case"title":return null;case"style":return typeof l.precedence=="string"&&typeof l.href=="string"?(e=Xa(l.href),l=fa(n).hoistableStyles,a=l.get(e),a||(a={type:"style",instance:null,count:0,state:null},l.set(e,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(l.rel==="stylesheet"&&typeof l.href=="string"&&typeof l.precedence=="string"){t=Xa(l.href);var u=fa(n).hoistableStyles,c=u.get(t);if(c||(n=n.ownerDocument||n,c={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},u.set(t,c),(u=n.querySelector(Un(t)))&&!u._p&&(c.instance=u,c.state.loading=5),Ne.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},Ne.set(t,l),u||Ry(n,t,l,c.state))),e&&a===null)throw Error(f(528,""));return c}if(e&&a!==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=Qa(l),l=fa(n).hoistableScripts,a=l.get(e),a||(a={type:"script",instance:null,count:0,state:null},l.set(e,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(f(444,t))}}function Xa(t){return'href="'+Se(t)+'"'}function Un(t){return'link[rel="stylesheet"]['+t+"]"}function Dh(t){return Y({},t,{"data-precedence":t.precedence,precedence:null})}function Ry(t,e,l,a){t.querySelector('link[rel="preload"][as="style"]['+e+"]")?a.loading=1:(e=t.createElement("link"),a.preload=e,e.addEventListener("load",function(){return a.loading|=1}),e.addEventListener("error",function(){return a.loading|=2}),Qt(e,"link",l),Ut(e),t.head.appendChild(e))}function Qa(t){return'[src="'+Se(t)+'"]'}function Bn(t){return"script[async]"+t}function Rh(t,e,l){if(e.count++,e.instance===null)switch(e.type){case"style":var a=t.querySelector('style[data-href~="'+Se(l.href)+'"]');if(a)return e.instance=a,Ut(a),a;var n=Y({},l,{"data-href":l.href,"data-precedence":l.precedence,href:null,precedence:null});return a=(t.ownerDocument||t).createElement("style"),Ut(a),Qt(a,"style",n),ku(a,l.precedence,t),e.instance=a;case"stylesheet":n=Xa(l.href);var u=t.querySelector(Un(n));if(u)return e.state.loading|=4,e.instance=u,Ut(u),u;a=Dh(l),(n=Ne.get(n))&&vs(a,n),u=(t.ownerDocument||t).createElement("link"),Ut(u);var c=u;return c._p=new Promise(function(o,h){c.onload=o,c.onerror=h}),Qt(u,"link",a),e.state.loading|=4,ku(u,l.precedence,t),e.instance=u;case"script":return u=Qa(l.src),(n=t.querySelector(Bn(u)))?(e.instance=n,Ut(n),n):(a=l,(n=Ne.get(u))&&(a=Y({},l),gs(a,n)),t=t.ownerDocument||t,n=t.createElement("script"),Ut(n),Qt(n,"link",a),t.head.appendChild(n),e.instance=n);case"void":return null;default:throw Error(f(443,e.type))}else e.type==="stylesheet"&&(e.state.loading&4)===0&&(a=e.instance,e.state.loading|=4,ku(a,l.precedence,t));return e.instance}function ku(t,e,l){for(var a=l.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),n=a.length?a[a.length-1]:null,u=n,c=0;c title"):null)}function Cy(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;return e.rel==="stylesheet"?(t=e.disabled,typeof e.precedence=="string"&&t==null):!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 Bh(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function Uy(t,e,l,a){if(l.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(l.state.loading&4)===0){if(l.instance===null){var n=Xa(a.href),u=e.querySelector(Un(n));if(u){e=u._p,e!==null&&typeof e=="object"&&typeof e.then=="function"&&(t.count++,t=$u.bind(t),e.then(t,t)),l.state.loading|=4,l.instance=u,Ut(u);return}u=e.ownerDocument||e,a=Dh(a),(n=Ne.get(n))&&vs(a,n),u=u.createElement("link"),Ut(u);var c=u;c._p=new Promise(function(o,h){c.onload=o,c.onerror=h}),Qt(u,"link",a),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=$u.bind(t),e.addEventListener("load",l),e.addEventListener("error",l))}}var bs=0;function By(t,e){return t.stylesheets&&t.count===0&&Iu(t,t.stylesheets),0bs?50:800)+e);return t.unsuspend=l,function(){t.unsuspend=null,clearTimeout(a),clearTimeout(n)}}:null}function $u(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Iu(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var Fu=null;function Iu(t,e){t.stylesheets=null,t.unsuspend!==null&&(t.count++,Fu=new Map,e.forEach(jy,t),Fu=null,$u.call(t))}function jy(t,e){if(!(e.state.loading&4)){var l=Fu.get(t);if(l)var a=l.get(null);else{l=new Map,Fu.set(t,l);for(var n=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(r)}catch(i){console.error(i)}}return r(),Ns.exports=Fy(),Ns.exports}var Py=Iy();const tm=({surfaces:r,onVertexMove:i,onSurfaceSelect:s,onSurfaceMoveStart:f})=>_.jsx("div",{className:"relative w-full h-full bg-gray-950 border-2 border-gray-800 rounded-lg overflow-hidden",children:_.jsx("svg",{viewBox:"0 0 100 100",preserveAspectRatio:"none",className:"w-full h-full",children:r.map((m,T)=>_.jsxs("g",{onClick:D=>{D.stopPropagation(),s(T)},children:[_.jsx("polygon",{points:m.vertices.map(D=>`${D.x*100},${D.y*100}`).join(" "),className:`${m.selected?"fill-blue-500/40 stroke-blue-400":"fill-white/10 stroke-white/30"} stroke-1 cursor-grab active:cursor-grabbing transition-colors duration-200`,onMouseDown:D=>m.selected&&f(D,T)}),m.selected&&m.vertices.map((D,w)=>_.jsx("circle",{cx:D.x*100,cy:D.y*100,r:"1.2",className:"fill-blue-400 stroke-white stroke-[0.2] hover:fill-white cursor-move",onMouseDown:M=>i(M,T,w)},w)),_.jsx("text",{x:m.vertices[0].x*100,y:m.vertices[0].y*100-2,className:"fill-white font-bold text-[3px] select-none pointer-events-none",children:m.name||`Surface ${T}`})]},T))})}),Ve=Object.create(null);Ve.open="0";Ve.close="1";Ve.ping="2";Ve.pong="3";Ve.message="4";Ve.upgrade="5";Ve.noop="6";const si=Object.create(null);Object.keys(Ve).forEach(r=>{si[Ve[r]]=r});const js={type:"error",data:"parser error"},fd=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",rd=typeof ArrayBuffer=="function",od=r=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(r):r&&r.buffer instanceof ArrayBuffer,Qs=({type:r,data:i},s,f)=>fd&&i instanceof Blob?s?f(i):nd(i,f):rd&&(i instanceof ArrayBuffer||od(i))?s?f(i):nd(new Blob([i]),f):f(Ve[r]+(i||"")),nd=(r,i)=>{const s=new FileReader;return s.onload=function(){const f=s.result.split(",")[1];i("b"+(f||""))},s.readAsDataURL(r)};function ud(r){return r instanceof Uint8Array?r:r instanceof ArrayBuffer?new Uint8Array(r):new Uint8Array(r.buffer,r.byteOffset,r.byteLength)}let Cs;function em(r,i){if(fd&&r.data instanceof Blob)return r.data.arrayBuffer().then(ud).then(i);if(rd&&(r.data instanceof ArrayBuffer||od(r.data)))return i(ud(r.data));Qs(r,!1,s=>{Cs||(Cs=new TextEncoder),i(Cs.encode(s))})}const id="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Qn=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let r=0;r{let i=r.length*.75,s=r.length,f,m=0,T,D,w,M;r[r.length-1]==="="&&(i--,r[r.length-2]==="="&&i--);const N=new ArrayBuffer(i),G=new Uint8Array(N);for(f=0;f>4,G[m++]=(D&15)<<4|w>>2,G[m++]=(w&3)<<6|M&63;return N},am=typeof ArrayBuffer=="function",Gs=(r,i)=>{if(typeof r!="string")return{type:"message",data:hd(r,i)};const s=r.charAt(0);return s==="b"?{type:"message",data:nm(r.substring(1),i)}:si[s]?r.length>1?{type:si[s],data:r.substring(1)}:{type:si[s]}:js},nm=(r,i)=>{if(am){const s=lm(r);return hd(s,i)}else return{base64:!0,data:r}},hd=(r,i)=>i==="blob"?r instanceof Blob?r:new Blob([r]):r instanceof ArrayBuffer?r:r.buffer,dd="",um=(r,i)=>{const s=r.length,f=new Array(s);let m=0;r.forEach((T,D)=>{Qs(T,!1,w=>{f[D]=w,++m===s&&i(f.join(dd))})})},im=(r,i)=>{const s=r.split(dd),f=[];for(let m=0;m{const f=s.length;let m;if(f<126)m=new Uint8Array(1),new DataView(m.buffer).setUint8(0,f);else if(f<65536){m=new Uint8Array(3);const T=new DataView(m.buffer);T.setUint8(0,126),T.setUint16(1,f)}else{m=new Uint8Array(9);const T=new DataView(m.buffer);T.setUint8(0,127),T.setBigUint64(1,BigInt(f))}r.data&&typeof r.data!="string"&&(m[0]|=128),i.enqueue(m),i.enqueue(s)})}})}let Us;function ii(r){return r.reduce((i,s)=>i+s.length,0)}function ci(r,i){if(r[0].length===i)return r.shift();const s=new Uint8Array(i);let f=0;for(let m=0;mMath.pow(2,21)-1){w.enqueue(js);break}m=G*Math.pow(2,32)+N.getUint32(4),f=3}else{if(ii(s)r){w.enqueue(js);break}}}})}const yd=4;function Mt(r){if(r)return fm(r)}function fm(r){for(var i in Mt.prototype)r[i]=Mt.prototype[i];return r}Mt.prototype.on=Mt.prototype.addEventListener=function(r,i){return this._callbacks=this._callbacks||{},(this._callbacks["$"+r]=this._callbacks["$"+r]||[]).push(i),this};Mt.prototype.once=function(r,i){function s(){this.off(r,s),i.apply(this,arguments)}return s.fn=i,this.on(r,s),this};Mt.prototype.off=Mt.prototype.removeListener=Mt.prototype.removeAllListeners=Mt.prototype.removeEventListener=function(r,i){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var s=this._callbacks["$"+r];if(!s)return this;if(arguments.length==1)return delete this._callbacks["$"+r],this;for(var f,m=0;mPromise.resolve().then(i):(i,s)=>s(i,0),Me=typeof self<"u"?self:typeof window<"u"?window:Function("return this")(),rm="arraybuffer";function md(r,...i){return i.reduce((s,f)=>(r.hasOwnProperty(f)&&(s[f]=r[f]),s),{})}const om=Me.setTimeout,hm=Me.clearTimeout;function di(r,i){i.useNativeTimers?(r.setTimeoutFn=om.bind(Me),r.clearTimeoutFn=hm.bind(Me)):(r.setTimeoutFn=Me.setTimeout.bind(Me),r.clearTimeoutFn=Me.clearTimeout.bind(Me))}const dm=1.33;function ym(r){return typeof r=="string"?mm(r):Math.ceil((r.byteLength||r.size)*dm)}function mm(r){let i=0,s=0;for(let f=0,m=r.length;f=57344?s+=3:(f++,s+=4);return s}function pd(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}function pm(r){let i="";for(let s in r)r.hasOwnProperty(s)&&(i.length&&(i+="&"),i+=encodeURIComponent(s)+"="+encodeURIComponent(r[s]));return i}function vm(r){let i={},s=r.split("&");for(let f=0,m=s.length;f{this.readyState="paused",i()};if(this._polling||!this.writable){let f=0;this._polling&&(f++,this.once("pollComplete",function(){--f||s()})),this.writable||(f++,this.once("drain",function(){--f||s()}))}else s()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(i){const s=f=>{if(this.readyState==="opening"&&f.type==="open"&&this.onOpen(),f.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(f)};im(i,this.socket.binaryType).forEach(s),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this._poll())}doClose(){const i=()=>{this.write([{type:"close"}])};this.readyState==="open"?i():this.once("open",i)}write(i){this.writable=!1,um(i,s=>{this.doWrite(s,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const i=this.opts.secure?"https":"http",s=this.query||{};return this.opts.timestampRequests!==!1&&(s[this.opts.timestampParam]=pd()),!this.supportsBinary&&!s.sid&&(s.b64=1),this.createUri(i,s)}}let vd=!1;try{vd=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}const Sm=vd;function _m(){}class Em extends bm{constructor(i){if(super(i),typeof location<"u"){const s=location.protocol==="https:";let f=location.port;f||(f=s?"443":"80"),this.xd=typeof location<"u"&&i.hostname!==location.hostname||f!==i.port}}doWrite(i,s){const f=this.request({method:"POST",data:i});f.on("success",s),f.on("error",(m,T)=>{this.onError("xhr post error",m,T)})}doPoll(){const i=this.request();i.on("data",this.onData.bind(this)),i.on("error",(s,f)=>{this.onError("xhr poll error",s,f)}),this.pollXhr=i}}class Ge extends Mt{constructor(i,s,f){super(),this.createRequest=i,di(this,f),this._opts=f,this._method=f.method||"GET",this._uri=s,this._data=f.data!==void 0?f.data:null,this._create()}_create(){var i;const s=md(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");s.xdomain=!!this._opts.xd;const f=this._xhr=this.createRequest(s);try{f.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){f.setDisableHeaderCheck&&f.setDisableHeaderCheck(!0);for(let m in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(m)&&f.setRequestHeader(m,this._opts.extraHeaders[m])}}catch{}if(this._method==="POST")try{f.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{f.setRequestHeader("Accept","*/*")}catch{}(i=this._opts.cookieJar)===null||i===void 0||i.addCookies(f),"withCredentials"in f&&(f.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(f.timeout=this._opts.requestTimeout),f.onreadystatechange=()=>{var m;f.readyState===3&&((m=this._opts.cookieJar)===null||m===void 0||m.parseCookies(f.getResponseHeader("set-cookie"))),f.readyState===4&&(f.status===200||f.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof f.status=="number"?f.status:0)},0))},f.send(this._data)}catch(m){this.setTimeoutFn(()=>{this._onError(m)},0);return}typeof document<"u"&&(this._index=Ge.requestsCount++,Ge.requests[this._index]=this)}_onError(i){this.emitReserved("error",i,this._xhr),this._cleanup(!0)}_cleanup(i){if(!(typeof this._xhr>"u"||this._xhr===null)){if(this._xhr.onreadystatechange=_m,i)try{this._xhr.abort()}catch{}typeof document<"u"&&delete Ge.requests[this._index],this._xhr=null}}_onLoad(){const i=this._xhr.responseText;i!==null&&(this.emitReserved("data",i),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}}Ge.requestsCount=0;Ge.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",cd);else if(typeof addEventListener=="function"){const r="onpagehide"in Me?"pagehide":"unload";addEventListener(r,cd,!1)}}function cd(){for(let r in Ge.requests)Ge.requests.hasOwnProperty(r)&&Ge.requests[r].abort()}const xm=(function(){const r=gd({xdomain:!1});return r&&r.responseType!==null})();class Tm extends Em{constructor(i){super(i);const s=i&&i.forceBase64;this.supportsBinary=xm&&!s}request(i={}){return Object.assign(i,{xd:this.xd},this.opts),new Ge(gd,this.uri(),i)}}function gd(r){const i=r.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!i||Sm))return new XMLHttpRequest}catch{}if(!i)try{return new Me[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}const bd=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class Am extends Vs{get name(){return"websocket"}doOpen(){const i=this.uri(),s=this.opts.protocols,f=bd?{}:md(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(f.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(i,s,f)}catch(m){return this.emitReserved("error",m)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=i=>this.onClose({description:"websocket connection closed",context:i}),this.ws.onmessage=i=>this.onData(i.data),this.ws.onerror=i=>this.onError("websocket error",i)}write(i){this.writable=!1;for(let s=0;s{try{this.doWrite(f,T)}catch{}m&&hi(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){const i=this.opts.secure?"wss":"ws",s=this.query||{};return this.opts.timestampRequests&&(s[this.opts.timestampParam]=pd()),this.supportsBinary||(s.b64=1),this.createUri(i,s)}}const Bs=Me.WebSocket||Me.MozWebSocket;class zm extends Am{createSocket(i,s,f){return bd?new Bs(i,s,f):s?new Bs(i,s):new Bs(i)}doWrite(i,s){this.ws.send(s)}}class Om extends Vs{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(i){return this.emitReserved("error",i)}this._transport.closed.then(()=>{this.onClose()}).catch(i=>{this.onError("webtransport error",i)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(i=>{const s=sm(Number.MAX_SAFE_INTEGER,this.socket.binaryType),f=i.readable.pipeThrough(s).getReader(),m=cm();m.readable.pipeTo(i.writable),this._writer=m.writable.getWriter();const T=()=>{f.read().then(({done:w,value:M})=>{w||(this.onPacket(M),T())}).catch(w=>{})};T();const D={type:"open"};this.query.sid&&(D.data=`{"sid":"${this.query.sid}"}`),this._writer.write(D).then(()=>this.onOpen())})})}write(i){this.writable=!1;for(let s=0;s{m&&hi(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var i;(i=this._transport)===null||i===void 0||i.close()}}const Nm={websocket:zm,webtransport:Om,polling:Tm},Mm=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Dm=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function qs(r){if(r.length>8e3)throw"URI too long";const i=r,s=r.indexOf("["),f=r.indexOf("]");s!=-1&&f!=-1&&(r=r.substring(0,s)+r.substring(s,f).replace(/:/g,";")+r.substring(f,r.length));let m=Mm.exec(r||""),T={},D=14;for(;D--;)T[Dm[D]]=m[D]||"";return s!=-1&&f!=-1&&(T.source=i,T.host=T.host.substring(1,T.host.length-1).replace(/;/g,":"),T.authority=T.authority.replace("[","").replace("]","").replace(/;/g,":"),T.ipv6uri=!0),T.pathNames=Rm(T,T.path),T.queryKey=Cm(T,T.query),T}function Rm(r,i){const s=/\/{2,9}/g,f=i.replace(s,"/").split("/");return(i.slice(0,1)=="/"||i.length===0)&&f.splice(0,1),i.slice(-1)=="/"&&f.splice(f.length-1,1),f}function Cm(r,i){const s={};return i.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(f,m,T){m&&(s[m]=T)}),s}const Hs=typeof addEventListener=="function"&&typeof removeEventListener=="function",fi=[];Hs&&addEventListener("offline",()=>{fi.forEach(r=>r())},!1);class Yl extends Mt{constructor(i,s){if(super(),this.binaryType=rm,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,i&&typeof i=="object"&&(s=i,i=null),i){const f=qs(i);s.hostname=f.host,s.secure=f.protocol==="https"||f.protocol==="wss",s.port=f.port,f.query&&(s.query=f.query)}else s.host&&(s.hostname=qs(s.host).host);di(this,s),this.secure=s.secure!=null?s.secure:typeof location<"u"&&location.protocol==="https:",s.hostname&&!s.port&&(s.port=this.secure?"443":"80"),this.hostname=s.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=s.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},s.transports.forEach(f=>{const m=f.prototype.name;this.transports.push(m),this._transportsByName[m]=f}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},s),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=vm(this.opts.query)),Hs&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},fi.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(i){const s=Object.assign({},this.opts.query);s.EIO=yd,s.transport=i,this.id&&(s.sid=this.id);const f=Object.assign({},this.opts,{query:s,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[i]);return new this._transportsByName[i](f)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}const i=this.opts.rememberUpgrade&&Yl.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1?"websocket":this.transports[0];this.readyState="opening";const s=this.createTransport(i);s.open(),this.setTransport(s)}setTransport(i){this.transport&&this.transport.removeAllListeners(),this.transport=i,i.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",s=>this._onClose("transport close",s))}onOpen(){this.readyState="open",Yl.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(i){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(this.emitReserved("packet",i),this.emitReserved("heartbeat"),i.type){case"open":this.onHandshake(JSON.parse(i.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const s=new Error("server error");s.code=i.data,this._onError(s);break;case"message":this.emitReserved("data",i.data),this.emitReserved("message",i.data);break}}onHandshake(i){this.emitReserved("handshake",i),this.id=i.sid,this.transport.query.sid=i.sid,this._pingInterval=i.pingInterval,this._pingTimeout=i.pingTimeout,this._maxPayload=i.maxPayload,this.onOpen(),this.readyState!=="closed"&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const i=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+i,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},i),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const i=this._getWritablePackets();this.transport.send(i),this._prevBufferLen=i.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let s=1;for(let f=0;f0&&s>this._maxPayload)return this.writeBuffer.slice(0,f);s+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const i=Date.now()>this._pingTimeoutTime;return i&&(this._pingTimeoutTime=0,hi(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),i}write(i,s,f){return this._sendPacket("message",i,s,f),this}send(i,s,f){return this._sendPacket("message",i,s,f),this}_sendPacket(i,s,f,m){if(typeof s=="function"&&(m=s,s=void 0),typeof f=="function"&&(m=f,f=null),this.readyState==="closing"||this.readyState==="closed")return;f=f||{},f.compress=f.compress!==!1;const T={type:i,data:s,options:f};this.emitReserved("packetCreate",T),this.writeBuffer.push(T),m&&this.once("flush",m),this.flush()}close(){const i=()=>{this._onClose("forced close"),this.transport.close()},s=()=>{this.off("upgrade",s),this.off("upgradeError",s),i()},f=()=>{this.once("upgrade",s),this.once("upgradeError",s)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?f():i()}):this.upgrading?f():i()),this}_onError(i){if(Yl.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return this.transports.shift(),this._open();this.emitReserved("error",i),this._onClose("transport error",i)}_onClose(i,s){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),Hs&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const f=fi.indexOf(this._offlineEventListener);f!==-1&&fi.splice(f,1)}this.readyState="closed",this.id=null,this.emitReserved("close",i,s),this.writeBuffer=[],this._prevBufferLen=0}}}Yl.protocol=yd;class Um extends Yl{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade)for(let i=0;i{f||(s.send([{type:"ping",data:"probe"}]),s.once("packet",Y=>{if(!f)if(Y.type==="pong"&&Y.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",s),!s)return;Yl.priorWebsocketSuccess=s.name==="websocket",this.transport.pause(()=>{f||this.readyState!=="closed"&&(G(),this.setTransport(s),s.send([{type:"upgrade"}]),this.emitReserved("upgrade",s),s=null,this.upgrading=!1,this.flush())})}else{const at=new Error("probe error");at.transport=s.name,this.emitReserved("upgradeError",at)}}))};function T(){f||(f=!0,G(),s.close(),s=null)}const D=Y=>{const at=new Error("probe error: "+Y);at.transport=s.name,T(),this.emitReserved("upgradeError",at)};function w(){D("transport closed")}function M(){D("socket closed")}function N(Y){s&&Y.name!==s.name&&T()}const G=()=>{s.removeListener("open",m),s.removeListener("error",D),s.removeListener("close",w),this.off("close",M),this.off("upgrading",N)};s.once("open",m),s.once("error",D),s.once("close",w),this.once("close",M),this.once("upgrading",N),this._upgrades.indexOf("webtransport")!==-1&&i!=="webtransport"?this.setTimeoutFn(()=>{f||s.open()},200):s.open()}onHandshake(i){this._upgrades=this._filterUpgrades(i.upgrades),super.onHandshake(i)}_filterUpgrades(i){const s=[];for(let f=0;fNm[m]).filter(m=>!!m)),super(i,f)}};function jm(r,i="",s){let f=r;s=s||typeof location<"u"&&location,r==null&&(r=s.protocol+"//"+s.host),typeof r=="string"&&(r.charAt(0)==="/"&&(r.charAt(1)==="/"?r=s.protocol+r:r=s.host+r),/^(https?|wss?):\/\//.test(r)||(typeof s<"u"?r=s.protocol+"//"+r:r="https://"+r),f=qs(r)),f.port||(/^(http|ws)$/.test(f.protocol)?f.port="80":/^(http|ws)s$/.test(f.protocol)&&(f.port="443")),f.path=f.path||"/";const T=f.host.indexOf(":")!==-1?"["+f.host+"]":f.host;return f.id=f.protocol+"://"+T+":"+f.port+i,f.href=f.protocol+"://"+T+(s&&s.port===f.port?"":":"+f.port),f}const qm=typeof ArrayBuffer=="function",Hm=r=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(r):r.buffer instanceof ArrayBuffer,Sd=Object.prototype.toString,Ym=typeof Blob=="function"||typeof Blob<"u"&&Sd.call(Blob)==="[object BlobConstructor]",Lm=typeof File=="function"||typeof File<"u"&&Sd.call(File)==="[object FileConstructor]";function Zs(r){return qm&&(r instanceof ArrayBuffer||Hm(r))||Ym&&r instanceof Blob||Lm&&r instanceof File}function ri(r,i){if(!r||typeof r!="object")return!1;if(Array.isArray(r)){for(let s=0,f=r.length;s=0&&r.num{delete this.acks[i];for(let w=0;w{this.io.clearTimeoutFn(T),s.apply(this,w)};D.withError=!0,this.acks[i]=D}emitWithAck(i,...s){return new Promise((f,m)=>{const T=(D,w)=>D?m(D):f(w);T.withError=!0,s.push(T),this.emit(i,...s)})}_addToQueue(i){let s;typeof i[i.length-1]=="function"&&(s=i.pop());const f={id:this._queueSeq++,tryCount:0,pending:!1,args:i,flags:Object.assign({fromQueue:!0},this.flags)};i.push((m,...T)=>(this._queue[0],m!==null?f.tryCount>this._opts.retries&&(this._queue.shift(),s&&s(m)):(this._queue.shift(),s&&s(null,...T)),f.pending=!1,this._drainQueue())),this._queue.push(f),this._drainQueue()}_drainQueue(i=!1){if(!this.connected||this._queue.length===0)return;const s=this._queue[0];s.pending&&!i||(s.pending=!0,s.tryCount++,this.flags=s.flags,this.emit.apply(this,s.args))}packet(i){i.nsp=this.nsp,this.io._packet(i)}onopen(){typeof this.auth=="function"?this.auth(i=>{this._sendConnectPacket(i)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(i){this.packet({type:et.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},i):i})}onerror(i){this.connected||this.emitReserved("connect_error",i)}onclose(i,s){this.connected=!1,delete this.id,this.emitReserved("disconnect",i,s),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(i=>{if(!this.sendBuffer.some(f=>String(f.id)===i)){const f=this.acks[i];delete this.acks[i],f.withError&&f.call(this,new Error("socket has been disconnected"))}})}onpacket(i){if(i.nsp===this.nsp)switch(i.type){case et.CONNECT:i.data&&i.data.sid?this.onconnect(i.data.sid,i.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case et.EVENT:case et.BINARY_EVENT:this.onevent(i);break;case et.ACK:case et.BINARY_ACK:this.onack(i);break;case et.DISCONNECT:this.ondisconnect();break;case et.CONNECT_ERROR:this.destroy();const f=new Error(i.data.message);f.data=i.data.data,this.emitReserved("connect_error",f);break}}onevent(i){const s=i.data||[];i.id!=null&&s.push(this.ack(i.id)),this.connected?this.emitEvent(s):this.receiveBuffer.push(Object.freeze(s))}emitEvent(i){if(this._anyListeners&&this._anyListeners.length){const s=this._anyListeners.slice();for(const f of s)f.apply(this,i)}super.emit.apply(this,i),this._pid&&i.length&&typeof i[i.length-1]=="string"&&(this._lastOffset=i[i.length-1])}ack(i){const s=this;let f=!1;return function(...m){f||(f=!0,s.packet({type:et.ACK,id:i,data:m}))}}onack(i){const s=this.acks[i.id];typeof s=="function"&&(delete this.acks[i.id],s.withError&&i.data.unshift(null),s.apply(this,i.data))}onconnect(i,s){this.id=i,this.recovered=s&&this._pid===s,this._pid=s,this.connected=!0,this.emitBuffered(),this._drainQueue(!0),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach(i=>this.emitEvent(i)),this.receiveBuffer=[],this.sendBuffer.forEach(i=>{this.notifyOutgoingListeners(i),this.packet(i)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(i=>i()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:et.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(i){return this.flags.compress=i,this}get volatile(){return this.flags.volatile=!0,this}timeout(i){return this.flags.timeout=i,this}onAny(i){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(i),this}prependAny(i){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(i),this}offAny(i){if(!this._anyListeners)return this;if(i){const s=this._anyListeners;for(let f=0;f0&&r.jitter<=1?r.jitter:0,this.attempts=0}Va.prototype.duration=function(){var r=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var i=Math.random(),s=Math.floor(i*this.jitter*r);r=(Math.floor(i*10)&1)==0?r-s:r+s}return Math.min(r,this.max)|0};Va.prototype.reset=function(){this.attempts=0};Va.prototype.setMin=function(r){this.ms=r};Va.prototype.setMax=function(r){this.max=r};Va.prototype.setJitter=function(r){this.jitter=r};class ws extends Mt{constructor(i,s){var f;super(),this.nsps={},this.subs=[],i&&typeof i=="object"&&(s=i,i=void 0),s=s||{},s.path=s.path||"/socket.io",this.opts=s,di(this,s),this.reconnection(s.reconnection!==!1),this.reconnectionAttempts(s.reconnectionAttempts||1/0),this.reconnectionDelay(s.reconnectionDelay||1e3),this.reconnectionDelayMax(s.reconnectionDelayMax||5e3),this.randomizationFactor((f=s.randomizationFactor)!==null&&f!==void 0?f:.5),this.backoff=new Va({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(s.timeout==null?2e4:s.timeout),this._readyState="closed",this.uri=i;const m=s.parser||Zm;this.encoder=new m.Encoder,this.decoder=new m.Decoder,this._autoConnect=s.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(i){return arguments.length?(this._reconnection=!!i,i||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(i){return i===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=i,this)}reconnectionDelay(i){var s;return i===void 0?this._reconnectionDelay:(this._reconnectionDelay=i,(s=this.backoff)===null||s===void 0||s.setMin(i),this)}randomizationFactor(i){var s;return i===void 0?this._randomizationFactor:(this._randomizationFactor=i,(s=this.backoff)===null||s===void 0||s.setJitter(i),this)}reconnectionDelayMax(i){var s;return i===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=i,(s=this.backoff)===null||s===void 0||s.setMax(i),this)}timeout(i){return arguments.length?(this._timeout=i,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(i){if(~this._readyState.indexOf("open"))return this;this.engine=new Bm(this.uri,this.opts);const s=this.engine,f=this;this._readyState="opening",this.skipReconnect=!1;const m=je(s,"open",function(){f.onopen(),i&&i()}),T=w=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",w),i?i(w):this.maybeReconnectOnOpen()},D=je(s,"error",T);if(this._timeout!==!1){const w=this._timeout,M=this.setTimeoutFn(()=>{m(),T(new Error("timeout")),s.close()},w);this.opts.autoUnref&&M.unref(),this.subs.push(()=>{this.clearTimeoutFn(M)})}return this.subs.push(m),this.subs.push(D),this}connect(i){return this.open(i)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const i=this.engine;this.subs.push(je(i,"ping",this.onping.bind(this)),je(i,"data",this.ondata.bind(this)),je(i,"error",this.onerror.bind(this)),je(i,"close",this.onclose.bind(this)),je(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(i){try{this.decoder.add(i)}catch(s){this.onclose("parse error",s)}}ondecoded(i){hi(()=>{this.emitReserved("packet",i)},this.setTimeoutFn)}onerror(i){this.emitReserved("error",i)}socket(i,s){let f=this.nsps[i];return f?this._autoConnect&&!f.active&&f.connect():(f=new _d(this,i,s),this.nsps[i]=f),f}_destroy(i){const s=Object.keys(this.nsps);for(const f of s)if(this.nsps[f].active)return;this._close()}_packet(i){const s=this.encoder.encode(i);for(let f=0;fi()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(i,s){var f;this.cleanup(),(f=this.engine)===null||f===void 0||f.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",i,s),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const i=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const s=this.backoff.duration();this._reconnecting=!0;const f=this.setTimeoutFn(()=>{i.skipReconnect||(this.emitReserved("reconnect_attempt",i.backoff.attempts),!i.skipReconnect&&i.open(m=>{m?(i._reconnecting=!1,i.reconnect(),this.emitReserved("reconnect_error",m)):i.onreconnect()}))},s);this.opts.autoUnref&&f.unref(),this.subs.push(()=>{this.clearTimeoutFn(f)})}}onreconnect(){const i=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",i)}}const Xn={};function oi(r,i){typeof r=="object"&&(i=r,r=void 0),i=i||{};const s=jm(r,i.path||"/socket.io"),f=s.source,m=s.id,T=s.path,D=Xn[m]&&T in Xn[m].nsps,w=i.forceNew||i["force new connection"]||i.multiplex===!1||D;let M;return w?M=new ws(f,i):(Xn[m]||(Xn[m]=new ws(f,i)),M=Xn[m]),s.query&&!i.query&&(i.query=s.queryKey),M.socket(s.path,i)}Object.assign(oi,{Manager:ws,Socket:_d,io:oi,connect:oi});const Qe=oi("http://localhost:3000");function Jm(){const[r,i]=Wt.useState("Dashboard"),[s,f]=Wt.useState([{type:"quad",name:"Screen 1",selected:!0,vertices:[{x:.1,y:.1},{x:.4,y:.1},{x:.4,y:.4},{x:.1,y:.4}]}]),[m,T]=Wt.useState(null),[D,w]=Wt.useState({cpu:"0",mem:{used:"0",total:"0"},temp:"0"}),[M,N]=Wt.useState("unknown"),[G,Y]=Wt.useState([]),[at,Gt]=Wt.useState([]),[jt,Rt]=Wt.useState({surfaces:[]});Wt.useEffect(()=>{const U=setInterval(async()=>{try{const lt=await(await fetch("http://localhost:3000/system/stats")).json();w(lt)}catch{}},2e3);return fetch("http://localhost:3000/mapper/status").then(j=>j.json()).then(j=>N(j.status)),fetch("http://localhost:3000/media").then(j=>j.json()).then(j=>Gt(j.files||[])),fetch("http://localhost:3000/manifest").then(j=>j.json()).then(j=>Rt(j)),Qe.on("mapper:status",j=>N(j.status)),Qe.on("mapper:logs",j=>{Y(lt=>[...lt,...j.logs].slice(-50))}),()=>{clearInterval(U),Qe.off("mapper:status"),Qe.off("mapper:logs")}},[]);const pe=async()=>{const j=await(await fetch("http://localhost:3000/media")).json();Gt(j.files||[])},Jt=async U=>{const j=U.target.files[0];if(!j)return;const lt=new FormData;lt.append("file",j),await fetch("http://localhost:3000/media/upload",{method:"POST",body:lt}),pe()},qe=async U=>{await fetch(`http://localhost:3000/media/${U}`,{method:"DELETE"}),pe()},Ct=async U=>{const j=s.findIndex(He=>He.selected);if(j===-1)return alert("Please select a surface first");const lt=s[j];await fetch("http://localhost:3000/media/assign",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({surfaceIndex:j,filename:U,surfaceName:lt.name})});const Re=await(await fetch("http://localhost:3000/manifest")).json();Rt(Re)},$t=(U,j,lt)=>{U.stopPropagation(),T({type:"vertex",sIndex:j,vIndex:lt})},ve=(U,j)=>{U.stopPropagation();const Et=U.currentTarget.closest("svg").getBoundingClientRect(),Re=(U.clientX-Et.left)/Et.width,He=(U.clientY-Et.top)/Et.height;T({type:"surface",sIndex:j,startPos:{x:Re,y:He}})},Vt=U=>{if(!m)return;const j=U.currentTarget.querySelector("svg");if(!j)return;const lt=j.getBoundingClientRect(),Et=(U.clientX-lt.left)/lt.width,Re=(U.clientY-lt.top)/lt.height,He=[...s],ua=He[m.sIndex];if(m.type==="vertex"){const wl=Math.max(0,Math.min(1,Et)),hl=Math.max(0,Math.min(1,Re));ua.vertices[m.vIndex]={x:wl,y:hl},Qe.emit("vertex:move",{surfaceIndex:m.sIndex,vertexIndex:m.vIndex,x:wl,y:hl})}else if(m.type==="surface"){const wl=Et-m.startPos.x,hl=Re-m.startPos.y;ua.vertices=ua.vertices.map(Ke=>({x:Ke.x+wl,y:Ke.y+hl})),T({...m,startPos:{x:Et,y:Re}}),ua.vertices.forEach((Ke,Za)=>{Qe.emit("vertex:move",{surfaceIndex:m.sIndex,vertexIndex:Za,x:Ke.x,y:Ke.y})})}f(He)},W=()=>T(null),qt=U=>{const j=s.map((lt,Et)=>({...lt,selected:Et===U}));f(j),Qe.emit("surface:select",{surfaceIndex:U})},ne=U=>{const j={type:U,name:`New ${U}`,selected:!0,vertices:U==="quad"?[{x:.4,y:.4},{x:.6,y:.4},{x:.6,y:.6},{x:.4,y:.6}]:[{x:.4,y:.4},{x:.6,y:.4},{x:.5,y:.6}]};f(s.map(lt=>({...lt,selected:!1})).concat(j)),Qe.emit("surface:add",{type:U})},ol=U=>{const j=s.filter((lt,Et)=>Et!==U);f(j),Qe.emit("surface:delete",{surfaceIndex:U})},ge=U=>{const j=prompt("Enter new name for surface:",s[U].name||`Surface ${U}`);if(j){const lt=[...s];lt[U].name=j,f(lt)}},Zt=U=>{Qe.emit("surface:highlight",{surfaceIndex:U})},Ze=()=>_.jsxs("div",{className:"space-y-6",children:[_.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6",children:[_.jsxs("div",{className:"bg-gray-900 p-6 rounded-xl border border-gray-800 text-center",children:[_.jsxs("div",{className:"text-3xl font-mono text-emerald-500",children:[D.cpu,"%"]}),_.jsx("div",{className:"text-xs uppercase text-gray-500 mt-2 font-bold tracking-widest",children:"CPU LOAD"})]}),_.jsxs("div",{className:"bg-gray-900 p-6 rounded-xl border border-gray-800 text-center",children:[_.jsxs("div",{className:"text-3xl font-mono text-blue-500",children:[D.mem.used,"MB"]}),_.jsx("div",{className:"text-xs uppercase text-gray-500 mt-2 font-bold tracking-widest",children:"RAM USAGE"})]}),_.jsxs("div",{className:"bg-gray-900 p-6 rounded-xl border border-gray-800 text-center",children:[_.jsxs("div",{className:"text-3xl font-mono text-orange-500",children:[D.temp,"°C"]}),_.jsx("div",{className:"text-xs uppercase text-gray-500 mt-2 font-bold tracking-widest",children:"CPU TEMP"})]})]}),_.jsxs("div",{className:"bg-gray-900 p-6 rounded-xl border border-gray-800 flex items-center justify-between",children:[_.jsxs("div",{className:"flex items-center gap-4",children:[_.jsx("div",{className:`w-3 h-3 rounded-full ${M==="running"?"bg-emerald-500 animate-pulse":"bg-red-500"}`}),_.jsxs("div",{children:[_.jsx("div",{className:"text-lg font-bold text-white",children:"ofxPiMapper"}),_.jsx("div",{className:"text-xs text-gray-500 uppercase font-bold tracking-wider",children:M})]})]}),_.jsxs("div",{className:"flex gap-2",children:[_.jsx("button",{onClick:()=>fetch("http://localhost:3000/mapper/start",{method:"POST"}),className:"bg-emerald-600 hover:bg-emerald-500 px-4 py-2 rounded-md text-xs font-bold uppercase transition-colors",children:"Start"}),_.jsx("button",{onClick:()=>fetch("http://localhost:3000/mapper/stop",{method:"POST"}),className:"bg-red-600 hover:bg-red-500 px-4 py-2 rounded-md text-xs font-bold uppercase transition-colors",children:"Stop"}),_.jsx("button",{onClick:()=>fetch("http://localhost:3000/mapper/restart",{method:"POST"}),className:"bg-orange-600 hover:bg-orange-500 px-4 py-2 rounded-md text-xs font-bold uppercase transition-colors",children:"Restart"})]})]})]}),De=()=>_.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-4 gap-6",children:[_.jsxs("div",{className:"lg:col-span-3 space-y-4",children:[_.jsx("div",{className:"relative bg-gray-950 rounded-lg overflow-hidden aspect-video border border-gray-800",onMouseMove:Vt,onMouseUp:W,onMouseLeave:W,children:_.jsx(tm,{surfaces:s,onVertexMove:$t,onSurfaceSelect:qt,onSurfaceMoveStart:ve})}),_.jsxs("div",{className:"flex gap-4",children:[_.jsx("button",{onClick:()=>ne("quad"),className:"bg-blue-600 hover:bg-blue-500 px-6 py-3 rounded-lg text-sm font-bold transition-all shadow-lg",children:"+ Add Quad"}),_.jsx("button",{onClick:()=>ne("triangle"),className:"bg-emerald-600 hover:bg-emerald-500 px-6 py-3 rounded-lg text-sm font-bold transition-all shadow-lg",children:"+ Add Triangle"}),_.jsx("button",{onClick:()=>fetch("http://localhost:3000/mapper/save",{method:"POST"}),className:"bg-purple-600 hover:bg-purple-500 px-6 py-3 rounded-lg text-sm font-bold transition-all ml-auto flex items-center gap-2",children:"💾 Save Mapping"})]})]}),_.jsxs("div",{className:"space-y-4",children:[_.jsx("h3",{className:"text-[10px] font-bold uppercase tracking-widest text-gray-500",children:"Surface Hierarchy"}),_.jsx("div",{className:"space-y-2 max-h-[500px] overflow-y-auto pr-2 custom-scrollbar",children:s.map((U,j)=>_.jsxs("div",{className:`p-4 rounded-xl border transition-all cursor-pointer ${U.selected?"bg-blue-600/10 border-blue-500":"bg-gray-900 border-gray-800 hover:border-gray-700"}`,onClick:()=>qt(j),children:[_.jsxs("div",{className:"flex justify-between items-center mb-3",children:[_.jsxs("div",{className:"flex flex-col",children:[_.jsx("span",{className:"font-bold text-xs",children:U.name||`Surface ${j}`}),_.jsx("span",{className:"text-[9px] uppercase tracking-widest text-gray-500 font-mono",children:U.type})]}),_.jsx("button",{onClick:lt=>{lt.stopPropagation(),ol(j)},className:"text-gray-600 hover:text-red-500",children:"✕"})]}),_.jsxs("div",{className:"flex gap-2",children:[_.jsx("button",{onClick:lt=>{lt.stopPropagation(),Zt(j)},className:"flex-1 bg-gray-800 hover:bg-gray-700 py-1 rounded text-[9px] uppercase font-bold tracking-widest",children:"Highlight"}),_.jsx("button",{onClick:lt=>{lt.stopPropagation(),ge(j)},className:"flex-1 bg-gray-800 hover:bg-gray-700 py-1 rounded text-[9px] uppercase font-bold tracking-widest text-blue-400",children:"Rename"})]})]},j))})]})]}),ue=()=>_.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-8",children:[_.jsxs("div",{className:"bg-gray-900 rounded-xl border border-gray-800 p-6 space-y-4",children:[_.jsx("h2",{className:"text-xl font-bold",children:"Media Vault"}),_.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[at.map((U,j)=>_.jsxs("div",{className:"bg-gray-800 p-4 rounded-lg flex flex-col items-center gap-3 border border-transparent hover:border-blue-500 transition-all cursor-pointer group",children:[_.jsx("div",{className:"w-full aspect-video bg-black/50 rounded flex items-center justify-center text-gray-600",children:_.jsx("svg",{className:"w-8 h-8",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:_.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z"})})}),_.jsx("span",{className:"text-[10px] font-medium truncate w-full text-center",children:U}),_.jsxs("div",{className:"flex gap-2 opacity-0 group-hover:opacity-100 transition-opacity",children:[_.jsx("button",{onClick:()=>Ct(U),className:"text-[9px] bg-blue-600 px-2 py-1 rounded font-bold uppercase",children:"Assign"}),_.jsx("button",{onClick:()=>qe(U),className:"text-[9px] bg-red-600 px-2 py-1 rounded font-bold uppercase",children:"Delete"})]})]},j)),_.jsxs("label",{className:"border-2 border-dashed border-gray-700 hover:border-blue-500/50 hover:bg-blue-500/5 aspect-video rounded-lg flex flex-col items-center justify-center cursor-pointer transition-all group",children:[_.jsx("svg",{className:"w-8 h-8 text-gray-600 group-hover:text-blue-500 mb-2",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:_.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M12 4v16m8-8H4"})}),_.jsx("span",{className:"text-[10px] text-gray-500 group-hover:text-blue-500 font-bold uppercase",children:"Upload"}),_.jsx("input",{type:"file",className:"hidden",onChange:Jt})]})]})]}),_.jsxs("div",{className:"bg-gray-900 rounded-xl border border-gray-800 p-6",children:[_.jsx("h2",{className:"text-xl font-bold mb-4",children:"Live Assignment"}),_.jsx("div",{className:"space-y-4",children:jt.surfaces.length===0?_.jsx("div",{className:"text-sm text-gray-500 italic",children:"No media assigned yet. Select a surface in Mapping tab and click Assign here."}):jt.surfaces.map((U,j)=>_.jsxs("div",{className:"flex justify-between items-center p-3 bg-black/30 border border-gray-800 rounded-lg",children:[_.jsxs("div",{className:"flex flex-col",children:[_.jsx("span",{className:"text-sm font-bold",children:U.name}),_.jsx("span",{className:"text-[10px] text-gray-500 font-mono",children:U.source})]}),_.jsx("div",{className:"text-[9px] font-bold text-blue-500 uppercase tracking-widest bg-blue-500/10 px-2 py-1 rounded",children:"Active"})]},j))})]})]}),[x,R]=Wt.useState([]),[X,ct]=Wt.useState(!1),ft=async()=>{ct(!0);try{const j=await(await fetch("http://localhost:3000/network/scan")).json();R(j.networks||[])}catch{}ct(!1)},y=async U=>{const j=prompt(`Enter password for ${U}:`);j!==null&&(await fetch("http://localhost:3000/network/connect",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ssid:U,password:j})}),alert(`Connecting to ${U}...`))},[O,C]=Wt.useState("MPVJ-AP"),[B,V]=Wt.useState(""),[k,nt]=Wt.useState(!1),Ht=async()=>{if(B.length>0&&B.length<8)return alert("Password must be at least 8 characters");confirm("The system will reboot to apply changes. Continue?")&&(nt(!0),await fetch("http://localhost:3000/network/ap/update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ssid:O,password:B})}))};if(k)return _.jsxs("div",{className:"min-h-screen bg-black text-white flex flex-col items-center justify-center space-y-6",children:[_.jsx("div",{className:"w-16 h-16 border-4 border-blue-600 border-t-transparent rounded-full animate-spin"}),_.jsxs("div",{className:"text-center",children:[_.jsx("h1",{className:"text-2xl font-bold mb-2",children:"System Rebooting..."}),_.jsx("p",{className:"text-gray-500 max-w-xs",children:"Applying new network settings. Please reconnect to the new WiFi SSID in about 60 seconds."})]})]});const bt=()=>_.jsxs("div",{className:"max-w-2xl mx-auto space-y-6",children:[_.jsxs("div",{className:"bg-gray-900 p-6 rounded-xl border border-gray-800",children:[_.jsxs("h2",{className:"text-xl font-bold mb-4 flex justify-between items-center",children:[_.jsx("span",{children:"WiFi Client (Venue)"}),_.jsx("button",{onClick:ft,className:`text-[10px] bg-gray-800 hover:bg-gray-700 px-3 py-1 rounded uppercase font-bold tracking-widest transition-all ${X?"animate-pulse":""}`,children:X?"Scanning...":"Scan Networks"})]}),_.jsx("div",{className:"space-y-2",children:x.length===0?_.jsx("div",{className:"text-center py-8 text-gray-600 italic text-sm",children:"No networks found. Click Scan to start."}):x.map((U,j)=>_.jsxs("div",{className:"flex justify-between items-center p-4 bg-black/30 border border-gray-800 rounded-lg hover:border-gray-600 cursor-pointer group transition-all",onClick:()=>y(U.ssid),children:[_.jsxs("div",{className:"flex items-center gap-3",children:[_.jsx("svg",{className:"w-4 h-4 text-gray-500",fill:"currentColor",viewBox:"0 0 20 20",children:_.jsx("path",{fillRule:"evenodd",d:"M17.707 9.293a1 1 0 010 1.414l-7 7a1 1 0 01-1.414 0l-7-7a1 1 0 011.414-1.414L10 14.586l6.293-6.293a1 1 0 011.414 0z",clipRule:"evenodd"})}),_.jsx("span",{className:"text-sm font-medium",children:U.ssid})]}),_.jsxs("div",{className:"flex items-center gap-4",children:[_.jsxs("span",{className:`text-xs font-mono font-bold ${U.strength>70?"text-emerald-500":"text-blue-500"}`,children:[U.strength,"%"]}),_.jsx("button",{className:"text-[9px] bg-blue-600 hover:bg-blue-500 px-3 py-1 rounded font-bold uppercase opacity-0 group-hover:opacity-100 transition-all",children:"Connect"})]})]},j))})]}),_.jsxs("div",{className:"bg-gray-900 p-6 rounded-xl border border-gray-800",children:[_.jsx("h2",{className:"text-xl font-bold mb-4",children:"AP Configuration"}),_.jsxs("div",{className:"space-y-4",children:[_.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[_.jsxs("div",{children:[_.jsx("label",{className:"text-[10px] font-bold text-gray-500 uppercase block mb-1",children:"SSID"}),_.jsx("input",{type:"text",className:"w-full bg-black border border-gray-800 rounded px-3 py-2 text-sm focus:border-blue-500 outline-none text-white",value:O,onChange:U=>C(U.target.value)})]}),_.jsxs("div",{children:[_.jsx("label",{className:"text-[10px] font-bold text-gray-500 uppercase block mb-1",children:"Password"}),_.jsx("input",{type:"password",className:"w-full bg-black border border-gray-800 rounded px-3 py-2 text-sm focus:border-blue-500 outline-none text-white",placeholder:"Min 8 chars",value:B,onChange:U=>V(U.target.value)})]})]}),_.jsx("button",{onClick:Ht,className:"w-full bg-blue-600 hover:bg-blue-500 py-3 rounded-lg font-bold uppercase text-[10px] tracking-widest transition-all",children:"Update & Reboot"})]})]})]}),Ll=()=>_.jsxs("div",{className:"space-y-6",children:[_.jsxs("div",{className:"grid grid-cols-2 gap-6",children:[_.jsxs("button",{onClick:()=>fetch("http://localhost:3000/system/reboot",{method:"POST"}),className:"bg-orange-600/5 hover:bg-orange-600/10 border border-orange-600/20 p-8 rounded-2xl flex flex-col items-center gap-4 transition-all group",children:[_.jsx("div",{className:"p-4 bg-orange-600/20 rounded-full group-hover:scale-110 transition-transform",children:_.jsx("svg",{className:"w-8 h-8 text-orange-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:_.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"})})}),_.jsx("span",{className:"text-sm font-bold uppercase tracking-widest text-orange-500",children:"System Reboot"})]}),_.jsxs("button",{onClick:()=>fetch("http://localhost:3000/system/shutdown",{method:"POST"}),className:"bg-red-600/5 hover:bg-red-600/10 border border-red-600/20 p-8 rounded-2xl flex flex-col items-center gap-4 transition-all group",children:[_.jsx("div",{className:"p-4 bg-red-600/20 rounded-full group-hover:scale-110 transition-transform",children:_.jsx("svg",{className:"w-8 h-8 text-red-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:_.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M18.364 5.636l-3.536 3.536m0 5.656L18.364 18.364M5.636 18.364l3.536-3.536m0-5.656L5.636 5.636M10.586 7.586a2 2 0 112.828 2.828l-2.828-2.828zm2.828 6l2.828 2.828a2 2 0 11-2.828-2.828l2.828-2.828z"})})}),_.jsx("span",{className:"text-sm font-bold uppercase tracking-widest text-red-500",children:"System Shutdown"})]})]}),_.jsxs("div",{className:"bg-gray-900 border border-gray-800 rounded-xl overflow-hidden flex flex-col h-[400px]",children:[_.jsxs("div",{className:"bg-gray-800 px-4 py-2 flex justify-between items-center border-b border-gray-700",children:[_.jsx("span",{className:"text-[10px] font-bold uppercase tracking-widest text-gray-400",children:"ofxPiMapper Live Logs"}),_.jsx("button",{onClick:()=>Y([]),className:"text-[9px] text-gray-500 hover:text-white uppercase font-bold",children:"Clear"})]}),_.jsxs("div",{className:"p-4 font-mono text-[10px] overflow-y-auto space-y-1 bg-black/50 flex-1 custom-scrollbar",children:[G.map((U,j)=>_.jsxs("div",{className:"text-gray-400",children:[_.jsxs("span",{className:"text-blue-500/50",children:["[",new Date().toLocaleTimeString(),"]"]})," ",U]},j)),G.length===0&&_.jsx("div",{className:"text-gray-600 italic",children:"No logs received yet..."})]})]})]});return _.jsxs("div",{className:"min-h-screen bg-black text-white flex flex-col font-sans",children:[_.jsxs("header",{className:"border-b border-gray-800 p-4 flex flex-col sm:flex-row justify-between items-center bg-gray-950/80 backdrop-blur-md sticky top-0 z-50 gap-4",children:[_.jsxs("div",{className:"flex items-center gap-3",children:[_.jsx("div",{className:"bg-blue-600 p-1.5 rounded-lg shadow-lg shadow-blue-900/40",children:_.jsx("svg",{className:"w-5 h-5 text-white",fill:"currentColor",viewBox:"0 0 20 20",children:_.jsx("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm1-11a1 1 0 10-2 0v2H7a1 1 0 100 2h2v2a1 1 0 102 0v-2h2a1 1 0 100-2h-2V7z",clipRule:"evenodd"})})}),_.jsx("h1",{className:"text-lg font-black tracking-tighter uppercase",children:"Modern PocketVJ"})]}),_.jsx("div",{className:"flex bg-gray-900 p-1 rounded-xl border border-gray-800 shadow-inner",children:["Dashboard","Mapping","Media","Network","System"].map(U=>_.jsx("button",{onClick:()=>i(U),className:`px-4 py-2 rounded-lg text-[10px] font-bold uppercase tracking-widest transition-all ${r===U?"bg-gray-800 text-white shadow-md":"text-gray-500 hover:text-gray-300"}`,children:U},U))})]}),_.jsxs("main",{className:"flex-1 p-6 max-w-7xl mx-auto w-full",children:[r==="Dashboard"&&Ze(),r==="Mapping"&&De(),r==="Media"&&ue(),r==="Network"&&bt(),r==="System"&&Ll()]}),_.jsx("footer",{className:"p-4 border-t border-gray-800 bg-gray-950/50 text-center text-[9px] text-gray-600 font-bold tracking-[0.3em] uppercase",children:"Pi 3B Appliance // mpvj.local // eth0: dhcp // wlan0: 192.168.4.1"})]})}Py.createRoot(document.getElementById("root")).render(_.jsx(Wt.StrictMode,{children:_.jsx(Jm,{})})); diff --git a/frontend/dist/index.html b/frontend/dist/index.html new file mode 100644 index 0000000..1e2e867 --- /dev/null +++ b/frontend/dist/index.html @@ -0,0 +1,14 @@ + + + + + + + frontend + + + + +
+ + diff --git a/frontend/dist/vite.svg b/frontend/dist/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/frontend/dist/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/scripts/setup.sh b/scripts/setup.sh index 0a996e3..ed43713 100644 --- a/scripts/setup.sh +++ b/scripts/setup.sh @@ -183,14 +183,19 @@ chown -R "$REAL_USER:$REAL_USER" "$REAL_HOME/mpvj" "$REAL_HOME/media" # 4.2 Build export NODE_OPTIONS="--max-old-space-size=512" cd "$REAL_HOME/mpvj/backend" -# Clean up any ghost dependencies from git or previous runs +echo "Installing backend dependencies..." +# Use --package-lock=false to ignore any committed lockfiles that might be polluted rm -rf node_modules package-lock.json -sudo -u "$REAL_USER" npm install --jobs 1 --omit=optional +sudo -u "$REAL_USER" npm install --jobs 1 --omit=optional --package-lock=false + cd "$REAL_HOME/mpvj/frontend" if [ ! -d "dist" ]; then + echo "Installing frontend dependencies and building..." rm -rf node_modules package-lock.json - sudo -u "$REAL_USER" npm install --jobs 1 --omit=optional + sudo -u "$REAL_USER" npm install --jobs 1 --omit=optional --package-lock=false sudo -u "$REAL_USER" npm run build +else + echo "Pre-built frontend detected. Skipping frontend build." fi # 4.3 Systemd