From b9d7a62b0ed04c22bedc7b151fafa830add2913a Mon Sep 17 00:00:00 2001 From: legop3 Date: Fri, 26 Dec 2025 20:04:21 -0500 Subject: [PATCH] new dock / drive / docking buttons and dialog --- server/public/assets/index-B88Ix9u6.css | 1 - server/public/assets/index-Bfcf31QB.js | 12 - server/public/assets/index-CL1kOB9m.js | 12 + server/public/assets/index-D2GpvMU5.css | 1 + server/public/index.html | 4 +- webui/src/components/ControlSummary.jsx | 99 +------- webui/src/components/DriveDockAction.jsx | 281 +++++++++++++++++++++++ webui/src/components/MobileControls.jsx | 89 +++---- 8 files changed, 355 insertions(+), 144 deletions(-) delete mode 100644 server/public/assets/index-B88Ix9u6.css delete mode 100644 server/public/assets/index-Bfcf31QB.js create mode 100644 server/public/assets/index-CL1kOB9m.js create mode 100644 server/public/assets/index-D2GpvMU5.css create mode 100644 webui/src/components/DriveDockAction.jsx diff --git a/server/public/assets/index-B88Ix9u6.css b/server/public/assets/index-B88Ix9u6.css deleted file mode 100644 index 90000763..00000000 --- a/server/public/assets/index-B88Ix9u6.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.panel{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity));padding:.125rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.panel-section{--tw-bg-opacity: 1;background-color:rgb(23 23 23 / var(--tw-bg-opacity));padding:.125rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.panel-muted{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}.surface{--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity));padding:.125rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.surface-muted{--tw-bg-opacity: 1;background-color:rgb(64 64 64 / var(--tw-bg-opacity));padding:.125rem;--tw-text-opacity: 1;color:rgb(245 245 245 / var(--tw-text-opacity))}.field-input{--tw-bg-opacity: 1;background-color:rgb(38 38 38 / var(--tw-bg-opacity));padding:.125rem;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.field-input:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1;--tw-ring-color: rgb(14 165 233 / var(--tw-ring-opacity))}.button-dark{--tw-bg-opacity: 1;background-color:rgb(2 132 199 / var(--tw-bg-opacity));padding:.125rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.button-dark:hover{--tw-bg-opacity: 1;background-color:rgb(14 165 233 / var(--tw-bg-opacity))}.button-danger{--tw-bg-opacity: 1;background-color:rgb(225 29 72 / var(--tw-bg-opacity));padding:.125rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.button-danger:hover{--tw-bg-opacity: 1;background-color:rgb(244 63 94 / var(--tw-bg-opacity))}.rainbow-animate-bg{background:linear-gradient(270deg,red,#ff7f00,#ffff00b3,#0f0,#00f,indigo,#8b00ff);background-size:1400% 1400%;animation:rainbowBG 300s ease infinite}@keyframes rainbowBG{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.\!visible{visibility:visible!important}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.bottom-0{bottom:0}.bottom-0\.5{bottom:.125rem}.bottom-1{bottom:.25rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.right-1{right:.25rem}.top-0{top:0}.top-0\.5{top:.125rem}.top-1{top:.25rem}.top-1\/2{top:50%}.top-10{top:2.5rem}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.col-span-full{grid-column:1 / -1}.m-0\.5{margin:.125rem}.mx-auto{margin-left:auto;margin-right:auto}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-2{margin-top:.5rem}.\!block{display:block!important}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:16 / 9}.h-10{height:2.5rem}.h-12{height:3rem}.h-2{height:.5rem}.h-28{height:7rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-52{height:13rem}.h-64{height:16rem}.h-\[220px\]{height:220px}.h-\[260px\]{height:260px}.h-\[70\%\]{height:70%}.h-full{height:100%}.h-screen{height:100vh}.max-h-40{max-height:10rem}.max-h-80{max-height:20rem}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.min-h-0{min-height:0px}.min-h-\[14rem\]{min-height:14rem}.min-h-\[16rem\]{min-height:16rem}.min-h-screen{min-height:100vh}.w-1\/2{width:50%}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-28{width:7rem}.w-4{width:1rem}.w-full{width:100%}.w-screen{width:100vw}.min-w-0{min-width:0px}.min-w-\[10rem\]{min-width:10rem}.min-w-\[12rem\]{min-width:12rem}.max-w-4xl{max-width:56rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.flex-\[1\.1\]{flex:1.1}.flex-\[1\.8\]{flex:1.8}.basis-full{flex-basis:100%}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-not-allowed{cursor:not-allowed}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[minmax\(0\,0\.7fr\)_minmax\(0\,2\.1fr\)_minmax\(0\,0\.7fr\)\]{grid-template-columns:minmax(0,.7fr) minmax(0,2.1fr) minmax(0,.7fr)}.grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.grid-rows-\[1fr_1fr_auto\]{grid-template-rows:1fr 1fr auto}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.content-center{align-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.self-start{align-self:flex-start}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-amber-400\/30{border-color:#fbbf244d}.border-cyan-500\/40{border-color:#06b6d466}.border-emerald-700{--tw-border-opacity: 1;border-color:rgb(4 120 87 / var(--tw-border-opacity))}.border-indigo-400\/30{border-color:#818cf84d}.border-rose-800{--tw-border-opacity: 1;border-color:rgb(159 18 57 / var(--tw-border-opacity))}.border-slate-600{--tw-border-opacity: 1;border-color:rgb(71 85 105 / var(--tw-border-opacity))}.border-slate-700{--tw-border-opacity: 1;border-color:rgb(51 65 85 / var(--tw-border-opacity))}.border-slate-800{--tw-border-opacity: 1;border-color:rgb(30 41 59 / var(--tw-border-opacity))}.border-white\/40{border-color:#fff6}.bg-amber-400{--tw-bg-opacity: 1;background-color:rgb(251 191 36 / var(--tw-bg-opacity))}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity))}.bg-amber-500\/30{background-color:#f59e0b4d}.bg-amber-600{--tw-bg-opacity: 1;background-color:rgb(217 119 6 / var(--tw-bg-opacity))}.bg-amber-700{--tw-bg-opacity: 1;background-color:rgb(180 83 9 / var(--tw-bg-opacity))}.bg-amber-900{--tw-bg-opacity: 1;background-color:rgb(120 53 15 / var(--tw-bg-opacity))}.bg-amber-900\/60{background-color:#78350f99}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-black\/20{background-color:#0003}.bg-black\/30{background-color:#0000004d}.bg-black\/60{background-color:#0009}.bg-black\/70{background-color:#000000b3}.bg-black\/80{background-color:#000c}.bg-black\/85{background-color:#000000d9}.bg-cyan-300\/80{background-color:#67e8f9cc}.bg-cyan-400\/10{background-color:#22d3ee1a}.bg-cyan-500{--tw-bg-opacity: 1;background-color:rgb(6 182 212 / var(--tw-bg-opacity))}.bg-cyan-600{--tw-bg-opacity: 1;background-color:rgb(8 145 178 / var(--tw-bg-opacity))}.bg-cyan-800{--tw-bg-opacity: 1;background-color:rgb(21 94 117 / var(--tw-bg-opacity))}.bg-emerald-400{--tw-bg-opacity: 1;background-color:rgb(52 211 153 / var(--tw-bg-opacity))}.bg-emerald-500{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity))}.bg-emerald-500\/30{background-color:#10b9814d}.bg-emerald-600{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity))}.bg-emerald-700{--tw-bg-opacity: 1;background-color:rgb(4 120 87 / var(--tw-bg-opacity))}.bg-emerald-800{--tw-bg-opacity: 1;background-color:rgb(6 95 70 / var(--tw-bg-opacity))}.bg-emerald-900{--tw-bg-opacity: 1;background-color:rgb(6 78 59 / var(--tw-bg-opacity))}.bg-emerald-900\/80{background-color:#064e3bcc}.bg-fuchsia-600{--tw-bg-opacity: 1;background-color:rgb(192 38 211 / var(--tw-bg-opacity))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity))}.bg-indigo-500\/30{background-color:#6366f14d}.bg-indigo-600{--tw-bg-opacity: 1;background-color:rgb(79 70 229 / var(--tw-bg-opacity))}.bg-indigo-700{--tw-bg-opacity: 1;background-color:rgb(67 56 202 / var(--tw-bg-opacity))}.bg-indigo-900\/20{background-color:#312e8133}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity))}.bg-red-500\/30{background-color:#ef44444d}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.bg-red-900\/40{background-color:#7f1d1d66}.bg-red-900\/60{background-color:#7f1d1d99}.bg-rose-900\/80{background-color:#881337cc}.bg-sky-600{--tw-bg-opacity: 1;background-color:rgb(2 132 199 / var(--tw-bg-opacity))}.bg-sky-700{--tw-bg-opacity: 1;background-color:rgb(3 105 161 / var(--tw-bg-opacity))}.bg-slate-500{--tw-bg-opacity: 1;background-color:rgb(100 116 139 / var(--tw-bg-opacity))}.bg-slate-600{--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity))}.bg-slate-700{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity))}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity))}.bg-slate-900\/40{background-color:#0f172a66}.bg-transparent{background-color:transparent}.bg-zinc-900{--tw-bg-opacity: 1;background-color:rgb(24 24 27 / var(--tw-bg-opacity))}.bg-zinc-950{--tw-bg-opacity: 1;background-color:rgb(9 9 11 / var(--tw-bg-opacity))}.bg-zinc-950\/95{background-color:#09090bf2}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-purple-500{--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #a855f7 var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-pink-500{--tw-gradient-to: #ec4899 var(--tw-gradient-to-position)}.fill-slate-200{fill:#e2e8f0}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-\[2px\]{padding-top:2px;padding-bottom:2px}.pb-0\.5{padding-bottom:.125rem}.pb-1{padding-bottom:.25rem}.pr-0\.5{padding-right:.125rem}.pt-1{padding-top:.25rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[0\.65rem\]{font-size:.65rem}.text-\[0\.6rem\]{font-size:.6rem}.text-\[0\.75rem\]{font-size:.75rem}.text-\[0\.7rem\]{font-size:.7rem}.text-\[0\.85rem\]{font-size:.85rem}.text-\[0\.8rem\]{font-size:.8rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.text-amber-100{--tw-text-opacity: 1;color:rgb(254 243 199 / var(--tw-text-opacity))}.text-amber-200{--tw-text-opacity: 1;color:rgb(253 230 138 / var(--tw-text-opacity))}.text-amber-300{--tw-text-opacity: 1;color:rgb(252 211 77 / var(--tw-text-opacity))}.text-amber-400{--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity))}.text-amber-50{--tw-text-opacity: 1;color:rgb(255 251 235 / var(--tw-text-opacity))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity))}.text-amber-950{--tw-text-opacity: 1;color:rgb(69 26 3 / var(--tw-text-opacity))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-black\/80{color:#000c}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity))}.text-emerald-100{--tw-text-opacity: 1;color:rgb(209 250 229 / var(--tw-text-opacity))}.text-emerald-200{--tw-text-opacity: 1;color:rgb(167 243 208 / var(--tw-text-opacity))}.text-emerald-300{--tw-text-opacity: 1;color:rgb(110 231 183 / var(--tw-text-opacity))}.text-emerald-400{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity))}.text-emerald-50{--tw-text-opacity: 1;color:rgb(236 253 245 / var(--tw-text-opacity))}.text-emerald-50\/80{color:#ecfdf5cc}.text-emerald-950{--tw-text-opacity: 1;color:rgb(2 44 34 / var(--tw-text-opacity))}.text-indigo-100{--tw-text-opacity: 1;color:rgb(224 231 255 / var(--tw-text-opacity))}.text-indigo-200{--tw-text-opacity: 1;color:rgb(199 210 254 / var(--tw-text-opacity))}.text-indigo-50{--tw-text-opacity: 1;color:rgb(238 242 255 / var(--tw-text-opacity))}.text-lime-300{--tw-text-opacity: 1;color:rgb(190 242 100 / var(--tw-text-opacity))}.text-lime-400{--tw-text-opacity: 1;color:rgb(163 230 53 / var(--tw-text-opacity))}.text-red-100{--tw-text-opacity: 1;color:rgb(254 226 226 / var(--tw-text-opacity))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity))}.text-rose-50{--tw-text-opacity: 1;color:rgb(255 241 242 / var(--tw-text-opacity))}.text-sky-300{--tw-text-opacity: 1;color:rgb(125 211 252 / var(--tw-text-opacity))}.text-slate-100{--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity))}.text-slate-200{--tw-text-opacity: 1;color:rgb(226 232 240 / var(--tw-text-opacity))}.text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity))}.text-slate-400{--tw-text-opacity: 1;color:rgb(148 163 184 / var(--tw-text-opacity))}.text-slate-500{--tw-text-opacity: 1;color:rgb(100 116 139 / var(--tw-text-opacity))}.text-slate-900{--tw-text-opacity: 1;color:rgb(15 23 42 / var(--tw-text-opacity))}.text-teal-400{--tw-text-opacity: 1;color:rgb(45 212 191 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-white\/90{color:#ffffffe6}.underline{text-decoration-line:underline}.accent-cyan-400{accent-color:#22d3ee}.accent-cyan-500{accent-color:#06b6d4}.accent-emerald-400{accent-color:#34d399}.accent-emerald-500{accent-color:#10b981}.opacity-50{opacity:.5}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-inner{--tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / .05);--tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-black\/40{--tw-shadow-color: rgb(0 0 0 / .4);--tw-shadow: var(--tw-shadow-colored)}.outline{outline-style:solid}.outline-2{outline-width:2px}.outline-cyan-400\/60{outline-color:#22d3ee99}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[height\]{transition-property:height;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\]{transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.no-touch-select{-moz-user-select:none;user-select:none;-webkit-user-select:none;-ms-user-select:none;-webkit-touch-callout:none}.\[clip-path\:circle\(50\%\)\]{clip-path:circle(50%)}:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity))}body{margin:0;min-height:100vh;--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(241 245 249 / var(--tw-text-opacity))}*{scrollbar-width:thin;scrollbar-color:#3b82f6 rgba(255,255,255,.08)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}*::-webkit-scrollbar{width:1px;height:1px}*::-webkit-scrollbar-track{background:#ffffff14}*::-webkit-scrollbar-thumb{background-color:#3b82f6;border-radius:9999px}.hover\:bg-amber-300:hover{--tw-bg-opacity: 1;background-color:rgb(252 211 77 / var(--tw-bg-opacity))}.hover\:bg-amber-500:hover{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity))}.hover\:bg-cyan-400:hover{--tw-bg-opacity: 1;background-color:rgb(34 211 238 / var(--tw-bg-opacity))}.hover\:bg-emerald-400:hover{--tw-bg-opacity: 1;background-color:rgb(52 211 153 / var(--tw-bg-opacity))}.hover\:bg-emerald-500:hover{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity))}.hover\:bg-emerald-600:hover{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity))}.hover\:bg-emerald-800:hover{--tw-bg-opacity: 1;background-color:rgb(6 95 70 / var(--tw-bg-opacity))}.hover\:bg-indigo-500:hover{--tw-bg-opacity: 1;background-color:rgb(99 102 241 / var(--tw-bg-opacity))}.hover\:bg-indigo-600:hover{--tw-bg-opacity: 1;background-color:rgb(79 70 229 / var(--tw-bg-opacity))}.hover\:bg-rose-800:hover{--tw-bg-opacity: 1;background-color:rgb(159 18 57 / var(--tw-bg-opacity))}.hover\:bg-sky-500:hover{--tw-bg-opacity: 1;background-color:rgb(14 165 233 / var(--tw-bg-opacity))}.hover\:from-indigo-600:hover{--tw-gradient-from: #4f46e5 var(--tw-gradient-from-position);--tw-gradient-to: rgb(79 70 229 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.hover\:via-purple-600:hover{--tw-gradient-to: rgb(147 51 234 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), #9333ea var(--tw-gradient-via-position), var(--tw-gradient-to)}.hover\:to-pink-600:hover{--tw-gradient-to: #db2777 var(--tw-gradient-to-position)}.hover\:text-blue-500:hover{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.hover\:brightness-110:hover{--tw-brightness: brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:outline:focus-visible{outline-style:solid}.focus-visible\:outline-1:focus-visible{outline-width:1px}.focus-visible\:outline-offset-1:focus-visible{outline-offset:1px}.focus-visible\:outline-slate-500:focus-visible{outline-color:#64748b}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-emerald-400:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(52 211 153 / var(--tw-ring-opacity))}.focus-visible\:ring-indigo-400:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(129 140 248 / var(--tw-ring-opacity))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.disabled\:hover\:bg-inherit:hover:disabled{background-color:inherit}@media(min-width:640px){.sm\:min-h-\[18rem\]{min-height:18rem}.sm\:basis-auto{flex-basis:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:items-center{align-items:center}}@media(min-width:768px){.md\:h-full{height:100%}.md\:h-screen{height:100vh}.md\:min-h-0{min-height:0px}.md\:min-h-\[22rem\]{min-height:22rem}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-\[minmax\(0\,1fr\)_18rem\]{grid-template-columns:minmax(0,1fr) 18rem}.md\:grid-cols-\[minmax\(0\,2fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.md\:overflow-hidden{overflow:hidden}.md\:overflow-y-auto{overflow-y:auto}}@media(min-width:1024px){.lg\:grid-cols-\[minmax\(0\,1fr\)_20rem\]{grid-template-columns:minmax(0,1fr) 20rem}} diff --git a/server/public/assets/index-Bfcf31QB.js b/server/public/assets/index-Bfcf31QB.js deleted file mode 100644 index 2c04f50e..00000000 --- a/server/public/assets/index-Bfcf31QB.js +++ /dev/null @@ -1,12 +0,0 @@ -(function(){const i=document.createElement("link").relList;if(i&&i.supports&&i.supports("modulepreload"))return;for(const f of document.querySelectorAll('link[rel="modulepreload"]'))r(f);new MutationObserver(f=>{for(const h of f)if(h.type==="childList")for(const m of h.addedNodes)m.tagName==="LINK"&&m.rel==="modulepreload"&&r(m)}).observe(document,{childList:!0,subtree:!0});function s(f){const h={};return f.integrity&&(h.integrity=f.integrity),f.referrerPolicy&&(h.referrerPolicy=f.referrerPolicy),f.crossOrigin==="use-credentials"?h.credentials="include":f.crossOrigin==="anonymous"?h.credentials="omit":h.credentials="same-origin",h}function r(f){if(f.ep)return;f.ep=!0;const h=s(f);fetch(f.href,h)}})();function xv(l){return l&&l.__esModule&&Object.prototype.hasOwnProperty.call(l,"default")?l.default:l}var Dc={exports:{}},ri={};var Gm;function bv(){if(Gm)return ri;Gm=1;var l=Symbol.for("react.transitional.element"),i=Symbol.for("react.fragment");function s(r,f,h){var m=null;if(h!==void 0&&(m=""+h),f.key!==void 0&&(m=""+f.key),"key"in f){h={};for(var g in f)g!=="key"&&(h[g]=f[g])}else h=f;return f=h.ref,{$$typeof:l,type:r,key:m,ref:f!==void 0?f:null,props:h}}return ri.Fragment=i,ri.jsx=s,ri.jsxs=s,ri}var Xm;function Av(){return Xm||(Xm=1,Dc.exports=bv()),Dc.exports}var o=Av(),kc={exports:{}},fe={};var Km;function Sv(){if(Km)return fe;Km=1;var l=Symbol.for("react.transitional.element"),i=Symbol.for("react.portal"),s=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),f=Symbol.for("react.profiler"),h=Symbol.for("react.consumer"),m=Symbol.for("react.context"),g=Symbol.for("react.forward_ref"),y=Symbol.for("react.suspense"),v=Symbol.for("react.memo"),b=Symbol.for("react.lazy"),A=Symbol.for("react.activity"),M=Symbol.iterator;function E(S){return S===null||typeof S!="object"?null:(S=M&&S[M]||S["@@iterator"],typeof S=="function"?S:null)}var T={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,j={};function w(S,L,X){this.props=S,this.context=L,this.refs=j,this.updater=X||T}w.prototype.isReactComponent={},w.prototype.setState=function(S,L){if(typeof S!="object"&&typeof S!="function"&&S!=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,S,L,"setState")},w.prototype.forceUpdate=function(S){this.updater.enqueueForceUpdate(this,S,"forceUpdate")};function _(){}_.prototype=w.prototype;function G(S,L,X){this.props=S,this.context=L,this.refs=j,this.updater=X||T}var I=G.prototype=new _;I.constructor=G,C(I,w.prototype),I.isPureReactComponent=!0;var P=Array.isArray;function J(){}var V={H:null,A:null,T:null,S:null},F=Object.prototype.hasOwnProperty;function te(S,L,X){var K=X.ref;return{$$typeof:l,type:S,key:L,ref:K!==void 0?K:null,props:X}}function ce(S,L){return te(S.type,L,S.props)}function qe(S){return typeof S=="object"&&S!==null&&S.$$typeof===l}function pe(S){var L={"=":"=0",":":"=2"};return"$"+S.replace(/[=:]/g,function(X){return L[X]})}var Z=/\/+/g;function ne(S,L){return typeof S=="object"&&S!==null&&S.key!=null?pe(""+S.key):L.toString(36)}function oe(S){switch(S.status){case"fulfilled":return S.value;case"rejected":throw S.reason;default:switch(typeof S.status=="string"?S.then(J,J):(S.status="pending",S.then(function(L){S.status==="pending"&&(S.status="fulfilled",S.value=L)},function(L){S.status==="pending"&&(S.status="rejected",S.reason=L)})),S.status){case"fulfilled":return S.value;case"rejected":throw S.reason}}throw S}function z(S,L,X,K,ee){var se=typeof S;(se==="undefined"||se==="boolean")&&(S=null);var me=!1;if(S===null)me=!0;else switch(se){case"bigint":case"string":case"number":me=!0;break;case"object":switch(S.$$typeof){case l:case i:me=!0;break;case b:return me=S._init,z(me(S._payload),L,X,K,ee)}}if(me)return ee=ee(S),me=K===""?"."+ne(S,0):K,P(ee)?(X="",me!=null&&(X=me.replace(Z,"$&/")+"/"),z(ee,L,X,"",function(en){return en})):ee!=null&&(qe(ee)&&(ee=ce(ee,X+(ee.key==null||S&&S.key===ee.key?"":(""+ee.key).replace(Z,"$&/")+"/")+me)),L.push(ee)),1;me=0;var Ye=K===""?".":K+":";if(P(S))for(var Oe=0;Oe>>1,le=z[$];if(0>>1;$f(X,W))Kf(ee,X)?(z[$]=ee,z[K]=W,$=K):(z[$]=X,z[L]=W,$=L);else if(Kf(ee,W))z[$]=ee,z[K]=W,$=K;else break e}}return U}function f(z,U){var W=z.sortIndex-U.sortIndex;return W!==0?W:z.id-U.id}if(l.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var h=performance;l.unstable_now=function(){return h.now()}}else{var m=Date,g=m.now();l.unstable_now=function(){return m.now()-g}}var y=[],v=[],b=1,A=null,M=3,E=!1,T=!1,C=!1,j=!1,w=typeof setTimeout=="function"?setTimeout:null,_=typeof clearTimeout=="function"?clearTimeout:null,G=typeof setImmediate<"u"?setImmediate:null;function I(z){for(var U=s(v);U!==null;){if(U.callback===null)r(v);else if(U.startTime<=z)r(v),U.sortIndex=U.expirationTime,i(y,U);else break;U=s(v)}}function P(z){if(C=!1,I(z),!T)if(s(y)!==null)T=!0,J||(J=!0,pe());else{var U=s(v);U!==null&&oe(P,U.startTime-z)}}var J=!1,V=-1,F=5,te=-1;function ce(){return j?!0:!(l.unstable_now()-tez&&ce());){var $=A.callback;if(typeof $=="function"){A.callback=null,M=A.priorityLevel;var le=$(A.expirationTime<=z);if(z=l.unstable_now(),typeof le=="function"){A.callback=le,I(z),U=!0;break t}A===s(y)&&r(y),I(z)}else r(y);A=s(y)}if(A!==null)U=!0;else{var S=s(v);S!==null&&oe(P,S.startTime-z),U=!1}}break e}finally{A=null,M=W,E=!1}U=void 0}}finally{U?pe():J=!1}}}var pe;if(typeof G=="function")pe=function(){G(qe)};else if(typeof MessageChannel<"u"){var Z=new MessageChannel,ne=Z.port2;Z.port1.onmessage=qe,pe=function(){ne.postMessage(null)}}else pe=function(){w(qe,0)};function oe(z,U){V=w(function(){z(l.unstable_now())},U)}l.unstable_IdlePriority=5,l.unstable_ImmediatePriority=1,l.unstable_LowPriority=4,l.unstable_NormalPriority=3,l.unstable_Profiling=null,l.unstable_UserBlockingPriority=2,l.unstable_cancelCallback=function(z){z.callback=null},l.unstable_forceFrameRate=function(z){0>z||125$?(z.sortIndex=W,i(v,z),s(y)===null&&z===s(v)&&(C?(_(V),V=-1):C=!0,oe(P,W-$))):(z.sortIndex=le,i(y,z),T||E||(T=!0,J||(J=!0,pe()))),z},l.unstable_shouldYield=ce,l.unstable_wrapCallback=function(z){var U=M;return function(){var W=M;M=U;try{return z.apply(this,arguments)}finally{M=W}}}})(Uc)),Uc}var Fm;function Ev(){return Fm||(Fm=1,Bc.exports=qv()),Bc.exports}var Lc={exports:{}},ot={};var $m;function jv(){if($m)return ot;$m=1;var l=yo();function i(y){var v="https://react.dev/errors/"+y;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(l)}catch(i){console.error(i)}}return l(),Lc.exports=jv(),Lc.exports}var Im;function Cv(){if(Im)return ui;Im=1;var l=Ev(),i=yo(),s=Nv();function r(e){var t="https://react.dev/errors/"+e;if(1le||(e.current=$[le],$[le]=null,le--)}function X(e,t){le++,$[le]=e.current,e.current=t}var K=S(null),ee=S(null),se=S(null),me=S(null);function Ye(e,t){switch(X(se,t),X(ee,e),X(K,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?hm(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=hm(t),e=mm(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}L(K),X(K,e)}function Oe(){L(K),L(ee),L(se)}function en(e){e.memoizedState!==null&&X(me,e);var t=K.current,n=mm(t,e.type);t!==n&&(X(ee,e),X(K,n))}function Cn(e){ee.current===e&&(L(K),L(ee)),me.current===e&&(L(me),ai._currentValue=W)}var tn,be;function Le(e){if(tn===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);tn=t&&t[1]||"",be=-1)":-1u||q[a]!==D[u]){var H=` -`+q[a].replace(" at new "," at ");return e.displayName&&H.includes("")&&(H=H.replace("",e.displayName)),H}while(1<=a&&0<=u);break}}}finally{Ke=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?Le(n):""}function He(e,t){switch(e.tag){case 26:case 27:case 5:return Le(e.type);case 16:return Le("Lazy");case 13:return e.child!==t&&t!==null?Le("Suspense Fallback"):Le("Suspense");case 19:return Le("SuspenseList");case 0:case 15:return Ne(e.type,!1);case 11:return Ne(e.type.render,!1);case 1:return Ne(e.type,!0);case 31:return Le("Activity");default:return""}}function ke(e){try{var t="",n=null;do t+=He(e,n),n=e,e=e.return;while(e);return t}catch(a){return` -Error generating stack: `+a.message+` -`+a.stack}}var ml=Object.prototype.hasOwnProperty,br=l.unstable_scheduleCallback,Ar=l.unstable_cancelCallback,W0=l.unstable_shouldYield,I0=l.unstable_requestPaint,xt=l.unstable_now,P0=l.unstable_getCurrentPriorityLevel,Go=l.unstable_ImmediatePriority,Xo=l.unstable_UserBlockingPriority,Ni=l.unstable_NormalPriority,ey=l.unstable_LowPriority,Ko=l.unstable_IdlePriority,ty=l.log,ny=l.unstable_setDisableYieldValue,pl=null,bt=null;function wn(e){if(typeof ty=="function"&&ny(e),bt&&typeof bt.setStrictMode=="function")try{bt.setStrictMode(pl,e)}catch{}}var At=Math.clz32?Math.clz32:iy,ay=Math.log,ly=Math.LN2;function iy(e){return e>>>=0,e===0?32:31-(ay(e)/ly|0)|0}var Ci=256,wi=262144,Ti=4194304;function ea(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Mi(e,t,n){var a=e.pendingLanes;if(a===0)return 0;var u=0,c=e.suspendedLanes,d=e.pingedLanes;e=e.warmLanes;var x=a&134217727;return x!==0?(a=x&~c,a!==0?u=ea(a):(d&=x,d!==0?u=ea(d):n||(n=x&~e,n!==0&&(u=ea(n))))):(x=a&~c,x!==0?u=ea(x):d!==0?u=ea(d):n||(n=a&~e,n!==0&&(u=ea(n)))),u===0?0:t!==0&&t!==u&&(t&c)===0&&(c=u&-u,n=t&-t,c>=n||c===32&&(n&4194048)!==0)?t:u}function yl(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function sy(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+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 t+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 Zo(){var e=Ti;return Ti<<=1,(Ti&62914560)===0&&(Ti=4194304),e}function Sr(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function gl(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function ry(e,t,n,a,u,c){var d=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var x=e.entanglements,q=e.expirationTimes,D=e.hiddenUpdates;for(n=d&~n;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var hy=/[\n"\\]/g;function Rt(e){return e.replace(hy,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function wr(e,t,n,a,u,c,d,x){e.name="",d!=null&&typeof d!="function"&&typeof d!="symbol"&&typeof d!="boolean"?e.type=d:e.removeAttribute("type"),t!=null?d==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+Mt(t)):e.value!==""+Mt(t)&&(e.value=""+Mt(t)):d!=="submit"&&d!=="reset"||e.removeAttribute("value"),t!=null?Tr(e,d,Mt(t)):n!=null?Tr(e,d,Mt(n)):a!=null&&e.removeAttribute("value"),u==null&&c!=null&&(e.defaultChecked=!!c),u!=null&&(e.checked=u&&typeof u!="function"&&typeof u!="symbol"),x!=null&&typeof x!="function"&&typeof x!="symbol"&&typeof x!="boolean"?e.name=""+Mt(x):e.removeAttribute("name")}function rf(e,t,n,a,u,c,d,x){if(c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(e.type=c),t!=null||n!=null){if(!(c!=="submit"&&c!=="reset"||t!=null)){Cr(e);return}n=n!=null?""+Mt(n):"",t=t!=null?""+Mt(t):n,x||t===e.value||(e.value=t),e.defaultValue=t}a=a??u,a=typeof a!="function"&&typeof a!="symbol"&&!!a,e.checked=x?e.checked:!!a,e.defaultChecked=!!a,d!=null&&typeof d!="function"&&typeof d!="symbol"&&typeof d!="boolean"&&(e.name=d),Cr(e)}function Tr(e,t,n){t==="number"&&Oi(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function Ta(e,t,n,a){if(e=e.options,t){t={};for(var u=0;u"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Dr=!1;if(ln)try{var Al={};Object.defineProperty(Al,"passive",{get:function(){Dr=!0}}),window.addEventListener("test",Al,Al),window.removeEventListener("test",Al,Al)}catch{Dr=!1}var Mn=null,kr=null,ki=null;function mf(){if(ki)return ki;var e,t=kr,n=t.length,a,u="value"in Mn?Mn.value:Mn.textContent,c=u.length;for(e=0;e=El),bf=" ",Af=!1;function Sf(e,t){switch(e){case"keyup":return Vy.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function qf(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Oa=!1;function Qy(e,t){switch(e){case"compositionend":return qf(t);case"keypress":return t.which!==32?null:(Af=!0,bf);case"textInput":return e=t.data,e===bf&&Af?null:e;default:return null}}function Gy(e,t){if(Oa)return e==="compositionend"||!Hr&&Sf(e,t)?(e=mf(),ki=kr=Mn=null,Oa=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=a}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Rf(n)}}function Of(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Of(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Df(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Oi(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Oi(e.document)}return t}function Qr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var Iy=ln&&"documentMode"in document&&11>=document.documentMode,Da=null,Gr=null,wl=null,Xr=!1;function kf(e,t,n){var a=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Xr||Da==null||Da!==Oi(a)||(a=Da,"selectionStart"in a&&Qr(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}),wl&&Cl(wl,a)||(wl=a,a=ws(Gr,"onSelect"),0>=d,u-=d,Zt=1<<32-At(t)+u|n<he?(xe=ie,ie=null):xe=ie.sibling;var je=k(R,ie,O[he],Y);if(je===null){ie===null&&(ie=xe);break}e&&ie&&je.alternate===null&&t(R,ie),N=c(je,N,he),Ee===null?re=je:Ee.sibling=je,Ee=je,ie=xe}if(he===O.length)return n(R,ie),Ae&&rn(R,he),re;if(ie===null){for(;hehe?(xe=ie,ie=null):xe=ie.sibling;var In=k(R,ie,je.value,Y);if(In===null){ie===null&&(ie=xe);break}e&&ie&&In.alternate===null&&t(R,ie),N=c(In,N,he),Ee===null?re=In:Ee.sibling=In,Ee=In,ie=xe}if(je.done)return n(R,ie),Ae&&rn(R,he),re;if(ie===null){for(;!je.done;he++,je=O.next())je=Q(R,je.value,Y),je!==null&&(N=c(je,N,he),Ee===null?re=je:Ee.sibling=je,Ee=je);return Ae&&rn(R,he),re}for(ie=a(ie);!je.done;he++,je=O.next())je=B(ie,R,he,je.value,Y),je!==null&&(e&&je.alternate!==null&&ie.delete(je.key===null?he:je.key),N=c(je,N,he),Ee===null?re=je:Ee.sibling=je,Ee=je);return e&&ie.forEach(function(vv){return t(R,vv)}),Ae&&rn(R,he),re}function _e(R,N,O,Y){if(typeof O=="object"&&O!==null&&O.type===C&&O.key===null&&(O=O.props.children),typeof O=="object"&&O!==null){switch(O.$$typeof){case E:e:{for(var re=O.key;N!==null;){if(N.key===re){if(re=O.type,re===C){if(N.tag===7){n(R,N.sibling),Y=u(N,O.props.children),Y.return=R,R=Y;break e}}else if(N.elementType===re||typeof re=="object"&&re!==null&&re.$$typeof===F&&fa(re)===N.type){n(R,N.sibling),Y=u(N,O.props),Dl(Y,O),Y.return=R,R=Y;break e}n(R,N);break}else t(R,N);N=N.sibling}O.type===C?(Y=sa(O.props.children,R.mode,Y,O.key),Y.return=R,R=Y):(Y=Xi(O.type,O.key,O.props,null,R.mode,Y),Dl(Y,O),Y.return=R,R=Y)}return d(R);case T:e:{for(re=O.key;N!==null;){if(N.key===re)if(N.tag===4&&N.stateNode.containerInfo===O.containerInfo&&N.stateNode.implementation===O.implementation){n(R,N.sibling),Y=u(N,O.children||[]),Y.return=R,R=Y;break e}else{n(R,N);break}else t(R,N);N=N.sibling}Y=Ir(O,R.mode,Y),Y.return=R,R=Y}return d(R);case F:return O=fa(O),_e(R,N,O,Y)}if(oe(O))return ae(R,N,O,Y);if(pe(O)){if(re=pe(O),typeof re!="function")throw Error(r(150));return O=re.call(O),ue(R,N,O,Y)}if(typeof O.then=="function")return _e(R,N,Ii(O),Y);if(O.$$typeof===G)return _e(R,N,Ji(R,O),Y);Pi(R,O)}return typeof O=="string"&&O!==""||typeof O=="number"||typeof O=="bigint"?(O=""+O,N!==null&&N.tag===6?(n(R,N.sibling),Y=u(N,O),Y.return=R,R=Y):(n(R,N),Y=Wr(O,R.mode,Y),Y.return=R,R=Y),d(R)):n(R,N)}return function(R,N,O,Y){try{Ol=0;var re=_e(R,N,O,Y);return Xa=null,re}catch(ie){if(ie===Ga||ie===$i)throw ie;var Ee=qt(29,ie,null,R.mode);return Ee.lanes=Y,Ee.return=R,Ee}finally{}}}var ha=ld(!0),id=ld(!1),kn=!1;function ou(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function fu(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function zn(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Bn(e,t,n){var a=e.updateQueue;if(a===null)return null;if(a=a.shared,(Ce&2)!==0){var u=a.pending;return u===null?t.next=t:(t.next=u.next,u.next=t),a.pending=t,t=Gi(e),Yf(e,null,n),t}return Qi(e,a,t,n),Gi(e)}function kl(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194048)!==0)){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,Fo(e,n)}}function du(e,t){var n=e.updateQueue,a=e.alternate;if(a!==null&&(a=a.updateQueue,n===a)){var u=null,c=null;if(n=n.firstBaseUpdate,n!==null){do{var d={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};c===null?u=c=d:c=c.next=d,n=n.next}while(n!==null);c===null?u=c=t:c=c.next=t}else u=c=t;n={baseState:a.baseState,firstBaseUpdate:u,lastBaseUpdate:c,shared:a.shared,callbacks:a.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var hu=!1;function zl(){if(hu){var e=Qa;if(e!==null)throw e}}function Bl(e,t,n,a){hu=!1;var u=e.updateQueue;kn=!1;var c=u.firstBaseUpdate,d=u.lastBaseUpdate,x=u.shared.pending;if(x!==null){u.shared.pending=null;var q=x,D=q.next;q.next=null,d===null?c=D:d.next=D,d=q;var H=e.alternate;H!==null&&(H=H.updateQueue,x=H.lastBaseUpdate,x!==d&&(x===null?H.firstBaseUpdate=D:x.next=D,H.lastBaseUpdate=q))}if(c!==null){var Q=u.baseState;d=0,H=D=q=null,x=c;do{var k=x.lane&-536870913,B=k!==x.lane;if(B?(ve&k)===k:(a&k)===k){k!==0&&k===Ya&&(hu=!0),H!==null&&(H=H.next={lane:0,tag:x.tag,payload:x.payload,callback:null,next:null});e:{var ae=e,ue=x;k=t;var _e=n;switch(ue.tag){case 1:if(ae=ue.payload,typeof ae=="function"){Q=ae.call(_e,Q,k);break e}Q=ae;break e;case 3:ae.flags=ae.flags&-65537|128;case 0:if(ae=ue.payload,k=typeof ae=="function"?ae.call(_e,Q,k):ae,k==null)break e;Q=A({},Q,k);break e;case 2:kn=!0}}k=x.callback,k!==null&&(e.flags|=64,B&&(e.flags|=8192),B=u.callbacks,B===null?u.callbacks=[k]:B.push(k))}else B={lane:k,tag:x.tag,payload:x.payload,callback:x.callback,next:null},H===null?(D=H=B,q=Q):H=H.next=B,d|=k;if(x=x.next,x===null){if(x=u.shared.pending,x===null)break;B=x,x=B.next,B.next=null,u.lastBaseUpdate=B,u.shared.pending=null}}while(!0);H===null&&(q=Q),u.baseState=q,u.firstBaseUpdate=D,u.lastBaseUpdate=H,c===null&&(u.shared.lanes=0),Yn|=d,e.lanes=d,e.memoizedState=Q}}function sd(e,t){if(typeof e!="function")throw Error(r(191,e));e.call(t)}function rd(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ec?c:8;var d=z.T,x={};z.T=x,_u(e,!1,t,n);try{var q=u(),D=z.S;if(D!==null&&D(x,q),q!==null&&typeof q=="object"&&typeof q.then=="function"){var H=rg(q,a);Hl(e,t,H,wt(e))}else Hl(e,t,a,wt(e))}catch(Q){Hl(e,t,{then:function(){},status:"rejected",reason:Q},wt())}finally{U.p=c,d!==null&&x.types!==null&&(d.types=x.types),z.T=d}}function hg(){}function Mu(e,t,n,a){if(e.tag!==5)throw Error(r(476));var u=Ld(e).queue;Ud(e,u,t,W,n===null?hg:function(){return Hd(e),n(a)})}function Ld(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:W,baseState:W,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:fn,lastRenderedState:W},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:fn,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Hd(e){var t=Ld(e);t.next===null&&(t=e.alternate.memoizedState),Hl(e,t.next.queue,{},wt())}function Ru(){return st(ai)}function Vd(){return Je().memoizedState}function Yd(){return Je().memoizedState}function mg(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=wt();e=zn(n);var a=Bn(t,e,n);a!==null&&(vt(a,t,n),kl(a,t,n)),t={cache:su()},e.payload=t;return}t=t.return}}function pg(e,t,n){var a=wt();n={lane:a,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},cs(e)?Gd(t,n):(n=Fr(e,t,n,a),n!==null&&(vt(n,e,a),Xd(n,t,a)))}function Qd(e,t,n){var a=wt();Hl(e,t,n,a)}function Hl(e,t,n,a){var u={lane:a,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(cs(e))Gd(t,u);else{var c=e.alternate;if(e.lanes===0&&(c===null||c.lanes===0)&&(c=t.lastRenderedReducer,c!==null))try{var d=t.lastRenderedState,x=c(d,n);if(u.hasEagerState=!0,u.eagerState=x,St(x,d))return Qi(e,t,u,0),De===null&&Yi(),!1}catch{}finally{}if(n=Fr(e,t,u,a),n!==null)return vt(n,e,a),Xd(n,t,a),!0}return!1}function _u(e,t,n,a){if(a={lane:2,revertLane:oc(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},cs(e)){if(t)throw Error(r(479))}else t=Fr(e,n,a,2),t!==null&&vt(t,e,2)}function cs(e){var t=e.alternate;return e===de||t!==null&&t===de}function Gd(e,t){Za=ns=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Xd(e,t,n){if((n&4194048)!==0){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,Fo(e,n)}}var Vl={readContext:st,use:is,useCallback:Qe,useContext:Qe,useEffect:Qe,useImperativeHandle:Qe,useLayoutEffect:Qe,useInsertionEffect:Qe,useMemo:Qe,useReducer:Qe,useRef:Qe,useState:Qe,useDebugValue:Qe,useDeferredValue:Qe,useTransition:Qe,useSyncExternalStore:Qe,useId:Qe,useHostTransitionStatus:Qe,useFormState:Qe,useActionState:Qe,useOptimistic:Qe,useMemoCache:Qe,useCacheRefresh:Qe};Vl.useEffectEvent=Qe;var Kd={readContext:st,use:is,useCallback:function(e,t){return ft().memoizedState=[e,t===void 0?null:t],e},useContext:st,useEffect:Td,useImperativeHandle:function(e,t,n){n=n!=null?n.concat([e]):null,rs(4194308,4,Od.bind(null,t,e),n)},useLayoutEffect:function(e,t){return rs(4194308,4,e,t)},useInsertionEffect:function(e,t){rs(4,2,e,t)},useMemo:function(e,t){var n=ft();t=t===void 0?null:t;var a=e();if(ma){wn(!0);try{e()}finally{wn(!1)}}return n.memoizedState=[a,t],a},useReducer:function(e,t,n){var a=ft();if(n!==void 0){var u=n(t);if(ma){wn(!0);try{n(t)}finally{wn(!1)}}}else u=t;return a.memoizedState=a.baseState=u,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:u},a.queue=e,e=e.dispatch=pg.bind(null,de,e),[a.memoizedState,e]},useRef:function(e){var t=ft();return e={current:e},t.memoizedState=e},useState:function(e){e=ju(e);var t=e.queue,n=Qd.bind(null,de,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:wu,useDeferredValue:function(e,t){var n=ft();return Tu(n,e,t)},useTransition:function(){var e=ju(!1);return e=Ud.bind(null,de,e.queue,!0,!1),ft().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var a=de,u=ft();if(Ae){if(n===void 0)throw Error(r(407));n=n()}else{if(n=t(),De===null)throw Error(r(349));(ve&127)!==0||hd(a,t,n)}u.memoizedState=n;var c={value:n,getSnapshot:t};return u.queue=c,Td(pd.bind(null,a,c,e),[e]),a.flags|=2048,Fa(9,{destroy:void 0},md.bind(null,a,c,n,t),null),n},useId:function(){var e=ft(),t=De.identifierPrefix;if(Ae){var n=Jt,a=Zt;n=(a&~(1<<32-At(a)-1)).toString(32)+n,t="_"+t+"R_"+n,n=as++,0<\/script>",c=c.removeChild(c.firstChild);break;case"select":c=typeof a.is=="string"?d.createElement("select",{is:a.is}):d.createElement("select"),a.multiple?c.multiple=!0:a.size&&(c.size=a.size);break;default:c=typeof a.is=="string"?d.createElement(u,{is:a.is}):d.createElement(u)}}c[lt]=t,c[dt]=a;e:for(d=t.child;d!==null;){if(d.tag===5||d.tag===6)c.appendChild(d.stateNode);else if(d.tag!==4&&d.tag!==27&&d.child!==null){d.child.return=d,d=d.child;continue}if(d===t)break e;for(;d.sibling===null;){if(d.return===null||d.return===t)break e;d=d.return}d.sibling.return=d.return,d=d.sibling}t.stateNode=c;e:switch(ut(c,u,a),u){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break e;case"img":a=!0;break e;default:a=!1}a&&hn(t)}}return Be(t),Ku(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==a&&hn(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(r(166));if(e=se.current,Ha(t)){if(e=t.stateNode,n=t.memoizedProps,a=null,u=it,u!==null)switch(u.tag){case 27:case 5:a=u.memoizedProps}e[lt]=t,e=!!(e.nodeValue===n||a!==null&&a.suppressHydrationWarning===!0||fm(e.nodeValue,n)),e||On(t,!0)}else e=Ts(e).createTextNode(a),e[lt]=t,t.stateNode=e}return Be(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(a=Ha(t),n!==null){if(e===null){if(!a)throw Error(r(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(r(557));e[lt]=t}else ra(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Be(t),e=!1}else n=nu(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(jt(t),t):(jt(t),null);if((t.flags&128)!==0)throw Error(r(558))}return Be(t),null;case 13:if(a=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(u=Ha(t),a!==null&&a.dehydrated!==null){if(e===null){if(!u)throw Error(r(318));if(u=t.memoizedState,u=u!==null?u.dehydrated:null,!u)throw Error(r(317));u[lt]=t}else ra(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Be(t),u=!1}else u=nu(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=u),u=!0;if(!u)return t.flags&256?(jt(t),t):(jt(t),null)}return jt(t),(t.flags&128)!==0?(t.lanes=n,t):(n=a!==null,e=e!==null&&e.memoizedState!==null,n&&(a=t.child,u=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(u=a.alternate.memoizedState.cachePool.pool),c=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(c=a.memoizedState.cachePool.pool),c!==u&&(a.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),ms(t,t.updateQueue),Be(t),null);case 4:return Oe(),e===null&&mc(t.stateNode.containerInfo),Be(t),null;case 10:return cn(t.type),Be(t),null;case 19:if(L(Ze),a=t.memoizedState,a===null)return Be(t),null;if(u=(t.flags&128)!==0,c=a.rendering,c===null)if(u)Ql(a,!1);else{if(Ge!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(c=ts(e),c!==null){for(t.flags|=128,Ql(a,!1),e=c.updateQueue,t.updateQueue=e,ms(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Qf(n,e),n=n.sibling;return X(Ze,Ze.current&1|2),Ae&&rn(t,a.treeForkCount),t.child}e=e.sibling}a.tail!==null&&xt()>xs&&(t.flags|=128,u=!0,Ql(a,!1),t.lanes=4194304)}else{if(!u)if(e=ts(c),e!==null){if(t.flags|=128,u=!0,e=e.updateQueue,t.updateQueue=e,ms(t,e),Ql(a,!0),a.tail===null&&a.tailMode==="hidden"&&!c.alternate&&!Ae)return Be(t),null}else 2*xt()-a.renderingStartTime>xs&&n!==536870912&&(t.flags|=128,u=!0,Ql(a,!1),t.lanes=4194304);a.isBackwards?(c.sibling=t.child,t.child=c):(e=a.last,e!==null?e.sibling=c:t.child=c,a.last=c)}return a.tail!==null?(e=a.tail,a.rendering=e,a.tail=e.sibling,a.renderingStartTime=xt(),e.sibling=null,n=Ze.current,X(Ze,u?n&1|2:n&1),Ae&&rn(t,a.treeForkCount),e):(Be(t),null);case 22:case 23:return jt(t),pu(),a=t.memoizedState!==null,e!==null?e.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(n&536870912)!==0&&(t.flags&128)===0&&(Be(t),t.subtreeFlags&6&&(t.flags|=8192)):Be(t),n=t.updateQueue,n!==null&&ms(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==n&&(t.flags|=2048),e!==null&&L(oa),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),cn(Fe),Be(t),null;case 25:return null;case 30:return null}throw Error(r(156,t.tag))}function bg(e,t){switch(eu(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return cn(Fe),Oe(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Cn(t),null;case 31:if(t.memoizedState!==null){if(jt(t),t.alternate===null)throw Error(r(340));ra()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(jt(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(r(340));ra()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return L(Ze),null;case 4:return Oe(),null;case 10:return cn(t.type),null;case 22:case 23:return jt(t),pu(),e!==null&&L(oa),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return cn(Fe),null;case 25:return null;default:return null}}function yh(e,t){switch(eu(t),t.tag){case 3:cn(Fe),Oe();break;case 26:case 27:case 5:Cn(t);break;case 4:Oe();break;case 31:t.memoizedState!==null&&jt(t);break;case 13:jt(t);break;case 19:L(Ze);break;case 10:cn(t.type);break;case 22:case 23:jt(t),pu(),e!==null&&L(oa);break;case 24:cn(Fe)}}function Gl(e,t){try{var n=t.updateQueue,a=n!==null?n.lastEffect:null;if(a!==null){var u=a.next;n=u;do{if((n.tag&e)===e){a=void 0;var c=n.create,d=n.inst;a=c(),d.destroy=a}n=n.next}while(n!==u)}}catch(x){Te(t,t.return,x)}}function Hn(e,t,n){try{var a=t.updateQueue,u=a!==null?a.lastEffect:null;if(u!==null){var c=u.next;a=c;do{if((a.tag&e)===e){var d=a.inst,x=d.destroy;if(x!==void 0){d.destroy=void 0,u=t;var q=n,D=x;try{D()}catch(H){Te(u,q,H)}}}a=a.next}while(a!==c)}}catch(H){Te(t,t.return,H)}}function gh(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{rd(t,n)}catch(a){Te(e,e.return,a)}}}function vh(e,t,n){n.props=pa(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(a){Te(e,t,a)}}function Xl(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var a=e.stateNode;break;case 30:a=e.stateNode;break;default:a=e.stateNode}typeof n=="function"?e.refCleanup=n(a):n.current=a}}catch(u){Te(e,t,u)}}function Ft(e,t){var n=e.ref,a=e.refCleanup;if(n!==null)if(typeof a=="function")try{a()}catch(u){Te(e,t,u)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n=="function")try{n(null)}catch(u){Te(e,t,u)}else n.current=null}function xh(e){var t=e.type,n=e.memoizedProps,a=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&a.focus();break e;case"img":n.src?a.src=n.src:n.srcSet&&(a.srcset=n.srcSet)}}catch(u){Te(e,e.return,u)}}function Zu(e,t,n){try{var a=e.stateNode;Yg(a,e.type,n,t),a[dt]=t}catch(u){Te(e,e.return,u)}}function bh(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Zn(e.type)||e.tag===4}function Ju(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||bh(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Zn(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Fu(e,t,n){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=an));else if(a!==4&&(a===27&&Zn(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Fu(e,t,n),e=e.sibling;e!==null;)Fu(e,t,n),e=e.sibling}function ps(e,t,n){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(a!==4&&(a===27&&Zn(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(ps(e,t,n),e=e.sibling;e!==null;)ps(e,t,n),e=e.sibling}function Ah(e){var t=e.stateNode,n=e.memoizedProps;try{for(var a=e.type,u=t.attributes;u.length;)t.removeAttributeNode(u[0]);ut(t,a,n),t[lt]=e,t[dt]=n}catch(c){Te(e,e.return,c)}}var mn=!1,Ie=!1,$u=!1,Sh=typeof WeakSet=="function"?WeakSet:Set,at=null;function Ag(e,t){if(e=e.containerInfo,gc=zs,e=Df(e),Qr(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var a=n.getSelection&&n.getSelection();if(a&&a.rangeCount!==0){n=a.anchorNode;var u=a.anchorOffset,c=a.focusNode;a=a.focusOffset;try{n.nodeType,c.nodeType}catch{n=null;break e}var d=0,x=-1,q=-1,D=0,H=0,Q=e,k=null;t:for(;;){for(var B;Q!==n||u!==0&&Q.nodeType!==3||(x=d+u),Q!==c||a!==0&&Q.nodeType!==3||(q=d+a),Q.nodeType===3&&(d+=Q.nodeValue.length),(B=Q.firstChild)!==null;)k=Q,Q=B;for(;;){if(Q===e)break t;if(k===n&&++D===u&&(x=d),k===c&&++H===a&&(q=d),(B=Q.nextSibling)!==null)break;Q=k,k=Q.parentNode}Q=B}n=x===-1||q===-1?null:{start:x,end:q}}else n=null}n=n||{start:0,end:0}}else n=null;for(vc={focusedElem:e,selectionRange:n},zs=!1,at=t;at!==null;)if(t=at,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,at=e;else for(;at!==null;){switch(t=at,c=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(n=0;n title"))),ut(c,a,n),c[lt]=e,nt(c),a=c;break e;case"link":var d=wm("link","href",u).get(a+(n.href||""));if(d){for(var x=0;x_e&&(d=_e,_e=ue,ue=d);var R=_f(x,ue),N=_f(x,_e);if(R&&N&&(B.rangeCount!==1||B.anchorNode!==R.node||B.anchorOffset!==R.offset||B.focusNode!==N.node||B.focusOffset!==N.offset)){var O=Q.createRange();O.setStart(R.node,R.offset),B.removeAllRanges(),ue>_e?(B.addRange(O),B.extend(N.node,N.offset)):(O.setEnd(N.node,N.offset),B.addRange(O))}}}}for(Q=[],B=x;B=B.parentNode;)B.nodeType===1&&Q.push({element:B,left:B.scrollLeft,top:B.scrollTop});for(typeof x.focus=="function"&&x.focus(),x=0;xn?32:n,z.T=null,n=ac,ac=null;var c=Gn,d=xn;if(tt=0,el=Gn=null,xn=0,(Ce&6)!==0)throw Error(r(331));var x=Ce;if(Ce|=4,Oh(c.current),Mh(c,c.current,d,n),Ce=x,Wl(0,!1),bt&&typeof bt.onPostCommitFiberRoot=="function")try{bt.onPostCommitFiberRoot(pl,c)}catch{}return!0}finally{U.p=u,z.T=a,Wh(e,t)}}function Ph(e,t,n){t=Ot(n,t),t=zu(e.stateNode,t,2),e=Bn(e,t,2),e!==null&&(gl(e,2),$t(e))}function Te(e,t,n){if(e.tag===3)Ph(e,e,n);else for(;t!==null;){if(t.tag===3){Ph(t,e,n);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(Qn===null||!Qn.has(a))){e=Ot(n,e),n=eh(2),a=Bn(t,n,2),a!==null&&(th(n,a,t,e),gl(a,2),$t(a));break}}t=t.return}}function rc(e,t,n){var a=e.pingCache;if(a===null){a=e.pingCache=new Eg;var u=new Set;a.set(t,u)}else u=a.get(t),u===void 0&&(u=new Set,a.set(t,u));u.has(n)||(Pu=!0,u.add(n),e=Tg.bind(null,e,t,n),t.then(e,e))}function Tg(e,t,n){var a=e.pingCache;a!==null&&a.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,De===e&&(ve&n)===n&&(Ge===4||Ge===3&&(ve&62914560)===ve&&300>xt()-vs?(Ce&2)===0&&tl(e,0):ec|=n,Pa===ve&&(Pa=0)),$t(e)}function em(e,t){t===0&&(t=Zo()),e=ia(e,t),e!==null&&(gl(e,t),$t(e))}function Mg(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),em(e,n)}function Rg(e,t){var n=0;switch(e.tag){case 31:case 13:var a=e.stateNode,u=e.memoizedState;u!==null&&(n=u.retryLane);break;case 19:a=e.stateNode;break;case 22:a=e.stateNode._retryCache;break;default:throw Error(r(314))}a!==null&&a.delete(t),em(e,n)}function _g(e,t){return br(e,t)}var js=null,al=null,uc=!1,Ns=!1,cc=!1,Kn=0;function $t(e){e!==al&&e.next===null&&(al===null?js=al=e:al=al.next=e),Ns=!0,uc||(uc=!0,Dg())}function Wl(e,t){if(!cc&&Ns){cc=!0;do for(var n=!1,a=js;a!==null;){if(e!==0){var u=a.pendingLanes;if(u===0)var c=0;else{var d=a.suspendedLanes,x=a.pingedLanes;c=(1<<31-At(42|e)+1)-1,c&=u&~(d&~x),c=c&201326741?c&201326741|1:c?c|2:0}c!==0&&(n=!0,lm(a,c))}else c=ve,c=Mi(a,a===De?c:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(c&3)===0||yl(a,c)||(n=!0,lm(a,c));a=a.next}while(n);cc=!1}}function Og(){tm()}function tm(){Ns=uc=!1;var e=0;Kn!==0&&Gg()&&(e=Kn);for(var t=xt(),n=null,a=js;a!==null;){var u=a.next,c=nm(a,t);c===0?(a.next=null,n===null?js=u:n.next=u,u===null&&(al=n)):(n=a,(e!==0||(c&3)!==0)&&(Ns=!0)),a=u}tt!==0&&tt!==5||Wl(e),Kn!==0&&(Kn=0)}function nm(e,t){for(var n=e.suspendedLanes,a=e.pingedLanes,u=e.expirationTimes,c=e.pendingLanes&-62914561;0x)break;var H=q.transferSize,Q=q.initiatorType;H&&dm(Q)&&(q=q.responseEnd,d+=H*(q"u"?null:document;function Em(e,t,n){var a=ll;if(a&&typeof t=="string"&&t){var u=Rt(t);u='link[rel="'+e+'"][href="'+u+'"]',typeof n=="string"&&(u+='[crossorigin="'+n+'"]'),qm.has(u)||(qm.add(u),e={rel:e,crossOrigin:n,href:t},a.querySelector(u)===null&&(t=a.createElement("link"),ut(t,"link",e),nt(t),a.head.appendChild(t)))}}function Pg(e){bn.D(e),Em("dns-prefetch",e,null)}function ev(e,t){bn.C(e,t),Em("preconnect",e,t)}function tv(e,t,n){bn.L(e,t,n);var a=ll;if(a&&e&&t){var u='link[rel="preload"][as="'+Rt(t)+'"]';t==="image"&&n&&n.imageSrcSet?(u+='[imagesrcset="'+Rt(n.imageSrcSet)+'"]',typeof n.imageSizes=="string"&&(u+='[imagesizes="'+Rt(n.imageSizes)+'"]')):u+='[href="'+Rt(e)+'"]';var c=u;switch(t){case"style":c=il(e);break;case"script":c=sl(e)}Lt.has(c)||(e=A({rel:"preload",href:t==="image"&&n&&n.imageSrcSet?void 0:e,as:t},n),Lt.set(c,e),a.querySelector(u)!==null||t==="style"&&a.querySelector(ti(c))||t==="script"&&a.querySelector(ni(c))||(t=a.createElement("link"),ut(t,"link",e),nt(t),a.head.appendChild(t)))}}function nv(e,t){bn.m(e,t);var n=ll;if(n&&e){var a=t&&typeof t.as=="string"?t.as:"script",u='link[rel="modulepreload"][as="'+Rt(a)+'"][href="'+Rt(e)+'"]',c=u;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":c=sl(e)}if(!Lt.has(c)&&(e=A({rel:"modulepreload",href:e},t),Lt.set(c,e),n.querySelector(u)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(n.querySelector(ni(c)))return}a=n.createElement("link"),ut(a,"link",e),nt(a),n.head.appendChild(a)}}}function av(e,t,n){bn.S(e,t,n);var a=ll;if(a&&e){var u=Ca(a).hoistableStyles,c=il(e);t=t||"default";var d=u.get(c);if(!d){var x={loading:0,preload:null};if(d=a.querySelector(ti(c)))x.loading=5;else{e=A({rel:"stylesheet",href:e,"data-precedence":t},n),(n=Lt.get(c))&&jc(e,n);var q=d=a.createElement("link");nt(q),ut(q,"link",e),q._p=new Promise(function(D,H){q.onload=D,q.onerror=H}),q.addEventListener("load",function(){x.loading|=1}),q.addEventListener("error",function(){x.loading|=2}),x.loading|=4,Rs(d,t,a)}d={type:"stylesheet",instance:d,count:1,state:x},u.set(c,d)}}}function lv(e,t){bn.X(e,t);var n=ll;if(n&&e){var a=Ca(n).hoistableScripts,u=sl(e),c=a.get(u);c||(c=n.querySelector(ni(u)),c||(e=A({src:e,async:!0},t),(t=Lt.get(u))&&Nc(e,t),c=n.createElement("script"),nt(c),ut(c,"link",e),n.head.appendChild(c)),c={type:"script",instance:c,count:1,state:null},a.set(u,c))}}function iv(e,t){bn.M(e,t);var n=ll;if(n&&e){var a=Ca(n).hoistableScripts,u=sl(e),c=a.get(u);c||(c=n.querySelector(ni(u)),c||(e=A({src:e,async:!0,type:"module"},t),(t=Lt.get(u))&&Nc(e,t),c=n.createElement("script"),nt(c),ut(c,"link",e),n.head.appendChild(c)),c={type:"script",instance:c,count:1,state:null},a.set(u,c))}}function jm(e,t,n,a){var u=(u=se.current)?Ms(u):null;if(!u)throw Error(r(446));switch(e){case"meta":case"title":return null;case"style":return typeof n.precedence=="string"&&typeof n.href=="string"?(t=il(n.href),n=Ca(u).hoistableStyles,a=n.get(t),a||(a={type:"style",instance:null,count:0,state:null},n.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(n.rel==="stylesheet"&&typeof n.href=="string"&&typeof n.precedence=="string"){e=il(n.href);var c=Ca(u).hoistableStyles,d=c.get(e);if(d||(u=u.ownerDocument||u,d={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},c.set(e,d),(c=u.querySelector(ti(e)))&&!c._p&&(d.instance=c,d.state.loading=5),Lt.has(e)||(n={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},Lt.set(e,n),c||sv(u,e,n,d.state))),t&&a===null)throw Error(r(528,""));return d}if(t&&a!==null)throw Error(r(529,""));return null;case"script":return t=n.async,n=n.src,typeof n=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=sl(n),n=Ca(u).hoistableScripts,a=n.get(t),a||(a={type:"script",instance:null,count:0,state:null},n.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,e))}}function il(e){return'href="'+Rt(e)+'"'}function ti(e){return'link[rel="stylesheet"]['+e+"]"}function Nm(e){return A({},e,{"data-precedence":e.precedence,precedence:null})}function sv(e,t,n,a){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=e.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),ut(t,"link",n),nt(t),e.head.appendChild(t))}function sl(e){return'[src="'+Rt(e)+'"]'}function ni(e){return"script[async]"+e}function Cm(e,t,n){if(t.count++,t.instance===null)switch(t.type){case"style":var a=e.querySelector('style[data-href~="'+Rt(n.href)+'"]');if(a)return t.instance=a,nt(a),a;var u=A({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return a=(e.ownerDocument||e).createElement("style"),nt(a),ut(a,"style",u),Rs(a,n.precedence,e),t.instance=a;case"stylesheet":u=il(n.href);var c=e.querySelector(ti(u));if(c)return t.state.loading|=4,t.instance=c,nt(c),c;a=Nm(n),(u=Lt.get(u))&&jc(a,u),c=(e.ownerDocument||e).createElement("link"),nt(c);var d=c;return d._p=new Promise(function(x,q){d.onload=x,d.onerror=q}),ut(c,"link",a),t.state.loading|=4,Rs(c,n.precedence,e),t.instance=c;case"script":return c=sl(n.src),(u=e.querySelector(ni(c)))?(t.instance=u,nt(u),u):(a=n,(u=Lt.get(c))&&(a=A({},n),Nc(a,u)),e=e.ownerDocument||e,u=e.createElement("script"),nt(u),ut(u,"link",a),e.head.appendChild(u),t.instance=u);case"void":return null;default:throw Error(r(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,Rs(a,n.precedence,e));return t.instance}function Rs(e,t,n){for(var a=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),u=a.length?a[a.length-1]:null,c=u,d=0;d title"):null)}function rv(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Mm(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function uv(e,t,n,a){if(n.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(n.state.loading&4)===0){if(n.instance===null){var u=il(a.href),c=t.querySelector(ti(u));if(c){t=c._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=Os.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=c,nt(c);return}c=t.ownerDocument||t,a=Nm(a),(u=Lt.get(u))&&jc(a,u),c=c.createElement("link"),nt(c);var d=c;d._p=new Promise(function(x,q){d.onload=x,d.onerror=q}),ut(c,"link",a),n.instance=c}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&(n.state.loading&3)===0&&(e.count++,n=Os.bind(e),t.addEventListener("load",n),t.addEventListener("error",n))}}var Cc=0;function cv(e,t){return e.stylesheets&&e.count===0&&ks(e,e.stylesheets),0Cc?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(a),clearTimeout(u)}}:null}function Os(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)ks(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Ds=null;function ks(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Ds=new Map,t.forEach(ov,e),Ds=null,Os.call(e))}function ov(e,t){if(!(t.state.loading&4)){var n=Ds.get(e);if(n)var a=n.get(null);else{n=new Map,Ds.set(e,n);for(var u=e.querySelectorAll("link[data-precedence],style[data-precedence]"),c=0;c"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(l)}catch(i){console.error(i)}}return l(),zc.exports=Cv(),zc.exports}var Tv=wv();var ep="popstate";function Mv(l={}){function i(r,f){let{pathname:h,search:m,hash:g}=r.location;return eo("",{pathname:h,search:m,hash:g},f.state&&f.state.usr||null,f.state&&f.state.key||"default")}function s(r,f){return typeof f=="string"?f:yi(f)}return _v(i,s,null,l)}function Ve(l,i){if(l===!1||l===null||typeof l>"u")throw new Error(i)}function Kt(l,i){if(!l){typeof console<"u"&&console.warn(i);try{throw new Error(i)}catch{}}}function Rv(){return Math.random().toString(36).substring(2,10)}function tp(l,i){return{usr:l.state,key:l.key,idx:i}}function eo(l,i,s=null,r){return{pathname:typeof l=="string"?l:l.pathname,search:"",hash:"",...typeof i=="string"?ol(i):i,state:s,key:i&&i.key||r||Rv()}}function yi({pathname:l="/",search:i="",hash:s=""}){return i&&i!=="?"&&(l+=i.charAt(0)==="?"?i:"?"+i),s&&s!=="#"&&(l+=s.charAt(0)==="#"?s:"#"+s),l}function ol(l){let i={};if(l){let s=l.indexOf("#");s>=0&&(i.hash=l.substring(s),l=l.substring(0,s));let r=l.indexOf("?");r>=0&&(i.search=l.substring(r),l=l.substring(0,r)),l&&(i.pathname=l)}return i}function _v(l,i,s,r={}){let{window:f=document.defaultView,v5Compat:h=!1}=r,m=f.history,g="POP",y=null,v=b();v==null&&(v=0,m.replaceState({...m.state,idx:v},""));function b(){return(m.state||{idx:null}).idx}function A(){g="POP";let j=b(),w=j==null?null:j-v;v=j,y&&y({action:g,location:C.location,delta:w})}function M(j,w){g="PUSH";let _=eo(C.location,j,w);v=b()+1;let G=tp(_,v),I=C.createHref(_);try{m.pushState(G,"",I)}catch(P){if(P instanceof DOMException&&P.name==="DataCloneError")throw P;f.location.assign(I)}h&&y&&y({action:g,location:C.location,delta:1})}function E(j,w){g="REPLACE";let _=eo(C.location,j,w);v=b();let G=tp(_,v),I=C.createHref(_);m.replaceState(G,"",I),h&&y&&y({action:g,location:C.location,delta:0})}function T(j){return Ov(j)}let C={get action(){return g},get location(){return l(f,m)},listen(j){if(y)throw new Error("A history only accepts one active listener");return f.addEventListener(ep,A),y=j,()=>{f.removeEventListener(ep,A),y=null}},createHref(j){return i(f,j)},createURL:T,encodeLocation(j){let w=T(j);return{pathname:w.pathname,search:w.search,hash:w.hash}},push:M,replace:E,go(j){return m.go(j)}};return C}function Ov(l,i=!1){let s="http://localhost";typeof window<"u"&&(s=window.location.origin!=="null"?window.location.origin:window.location.href),Ve(s,"No window.location.(origin|href) available to create URL");let r=typeof l=="string"?l:yi(l);return r=r.replace(/ $/,"%20"),!i&&r.startsWith("//")&&(r=s+r),new URL(r,s)}function Lp(l,i,s="/"){return Dv(l,i,s,!1)}function Dv(l,i,s,r){let f=typeof i=="string"?ol(i):i,h=jn(f.pathname||"/",s);if(h==null)return null;let m=Hp(l);kv(m);let g=null;for(let y=0;g==null&&y{let b={relativePath:v===void 0?m.path||"":v,caseSensitive:m.caseSensitive===!0,childrenIndex:g,route:m};if(b.relativePath.startsWith("/")){if(!b.relativePath.startsWith(r)&&y)return;Ve(b.relativePath.startsWith(r),`Absolute route path "${b.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),b.relativePath=b.relativePath.slice(r.length)}let A=qn([r,b.relativePath]),M=s.concat(b);m.children&&m.children.length>0&&(Ve(m.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${A}".`),Hp(m.children,i,M,A,y)),!(m.path==null&&!m.index)&&i.push({path:A,score:Yv(A,m.index),routesMeta:M})};return l.forEach((m,g)=>{if(m.path===""||!m.path?.includes("?"))h(m,g);else for(let y of Vp(m.path))h(m,g,!0,y)}),i}function Vp(l){let i=l.split("/");if(i.length===0)return[];let[s,...r]=i,f=s.endsWith("?"),h=s.replace(/\?$/,"");if(r.length===0)return f?[h,""]:[h];let m=Vp(r.join("/")),g=[];return g.push(...m.map(y=>y===""?h:[h,y].join("/"))),f&&g.push(...m),g.map(y=>l.startsWith("/")&&y===""?"/":y)}function kv(l){l.sort((i,s)=>i.score!==s.score?s.score-i.score:Qv(i.routesMeta.map(r=>r.childrenIndex),s.routesMeta.map(r=>r.childrenIndex)))}var zv=/^:[\w-]+$/,Bv=3,Uv=2,Lv=1,Hv=10,Vv=-2,np=l=>l==="*";function Yv(l,i){let s=l.split("/"),r=s.length;return s.some(np)&&(r+=Vv),i&&(r+=Uv),s.filter(f=>!np(f)).reduce((f,h)=>f+(zv.test(h)?Bv:h===""?Lv:Hv),r)}function Qv(l,i){return l.length===i.length&&l.slice(0,-1).every((r,f)=>r===i[f])?l[l.length-1]-i[i.length-1]:0}function Gv(l,i,s=!1){let{routesMeta:r}=l,f={},h="/",m=[];for(let g=0;g{if(b==="*"){let T=g[M]||"";m=h.slice(0,h.length-T.length).replace(/(.)\/+$/,"$1")}const E=g[M];return A&&!E?v[b]=void 0:v[b]=(E||"").replace(/%2F/g,"/"),v},{}),pathname:h,pathnameBase:m,pattern:l}}function Xv(l,i=!1,s=!0){Kt(l==="*"||!l.endsWith("*")||l.endsWith("/*"),`Route path "${l}" will be treated as if it were "${l.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${l.replace(/\*$/,"/*")}".`);let r=[],f="^"+l.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(m,g,y)=>(r.push({paramName:g,isOptional:y!=null}),y?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return l.endsWith("*")?(r.push({paramName:"*"}),f+=l==="*"||l==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):s?f+="\\/*$":l!==""&&l!=="/"&&(f+="(?:(?=\\/|$))"),[new RegExp(f,i?void 0:"i"),r]}function Kv(l){try{return l.split("/").map(i=>decodeURIComponent(i).replace(/\//g,"%2F")).join("/")}catch(i){return Kt(!1,`The URL path "${l}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${i}).`),l}}function jn(l,i){if(i==="/")return l;if(!l.toLowerCase().startsWith(i.toLowerCase()))return null;let s=i.endsWith("/")?i.length-1:i.length,r=l.charAt(s);return r&&r!=="/"?null:l.slice(s)||"/"}var Zv=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Jv=l=>Zv.test(l);function Fv(l,i="/"){let{pathname:s,search:r="",hash:f=""}=typeof l=="string"?ol(l):l,h;if(s)if(Jv(s))h=s;else{if(s.includes("//")){let m=s;s=s.replace(/\/\/+/g,"/"),Kt(!1,`Pathnames cannot have embedded double slashes - normalizing ${m} -> ${s}`)}s.startsWith("/")?h=ap(s.substring(1),"/"):h=ap(s,i)}else h=i;return{pathname:h,search:Iv(r),hash:Pv(f)}}function ap(l,i){let s=i.replace(/\/+$/,"").split("/");return l.split("/").forEach(f=>{f===".."?s.length>1&&s.pop():f!=="."&&s.push(f)}),s.length>1?s.join("/"):"/"}function Hc(l,i,s,r){return`Cannot include a '${l}' character in a manually specified \`to.${i}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${s}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function $v(l){return l.filter((i,s)=>s===0||i.route.path&&i.route.path.length>0)}function Yp(l){let i=$v(l);return i.map((s,r)=>r===i.length-1?s.pathname:s.pathnameBase)}function Qp(l,i,s,r=!1){let f;typeof l=="string"?f=ol(l):(f={...l},Ve(!f.pathname||!f.pathname.includes("?"),Hc("?","pathname","search",f)),Ve(!f.pathname||!f.pathname.includes("#"),Hc("#","pathname","hash",f)),Ve(!f.search||!f.search.includes("#"),Hc("#","search","hash",f)));let h=l===""||f.pathname==="",m=h?"/":f.pathname,g;if(m==null)g=s;else{let A=i.length-1;if(!r&&m.startsWith("..")){let M=m.split("/");for(;M[0]==="..";)M.shift(),A-=1;f.pathname=M.join("/")}g=A>=0?i[A]:"/"}let y=Fv(f,g),v=m&&m!=="/"&&m.endsWith("/"),b=(h||m===".")&&s.endsWith("/");return!y.pathname.endsWith("/")&&(v||b)&&(y.pathname+="/"),y}var qn=l=>l.join("/").replace(/\/\/+/g,"/"),Wv=l=>l.replace(/\/+$/,"").replace(/^\/*/,"/"),Iv=l=>!l||l==="?"?"":l.startsWith("?")?l:"?"+l,Pv=l=>!l||l==="#"?"":l.startsWith("#")?l:"#"+l;function ex(l){return l!=null&&typeof l.status=="number"&&typeof l.statusText=="string"&&typeof l.internal=="boolean"&&"data"in l}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var Gp=["POST","PUT","PATCH","DELETE"];new Set(Gp);var tx=["GET",...Gp];new Set(tx);var fl=p.createContext(null);fl.displayName="DataRouter";var dr=p.createContext(null);dr.displayName="DataRouterState";p.createContext(!1);var Xp=p.createContext({isTransitioning:!1});Xp.displayName="ViewTransition";var nx=p.createContext(new Map);nx.displayName="Fetchers";var ax=p.createContext(null);ax.displayName="Await";var Pt=p.createContext(null);Pt.displayName="Navigation";var Si=p.createContext(null);Si.displayName="Location";var Nn=p.createContext({outlet:null,matches:[],isDataRoute:!1});Nn.displayName="Route";var go=p.createContext(null);go.displayName="RouteError";function lx(l,{relative:i}={}){Ve(qi(),"useHref() may be used only in the context of a component.");let{basename:s,navigator:r}=p.useContext(Pt),{hash:f,pathname:h,search:m}=Ei(l,{relative:i}),g=h;return s!=="/"&&(g=h==="/"?s:qn([s,h])),r.createHref({pathname:g,search:m,hash:f})}function qi(){return p.useContext(Si)!=null}function Sa(){return Ve(qi(),"useLocation() may be used only in the context of a component."),p.useContext(Si).location}var Kp="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Zp(l){p.useContext(Pt).static||p.useLayoutEffect(l)}function ix(){let{isDataRoute:l}=p.useContext(Nn);return l?vx():sx()}function sx(){Ve(qi(),"useNavigate() may be used only in the context of a component.");let l=p.useContext(fl),{basename:i,navigator:s}=p.useContext(Pt),{matches:r}=p.useContext(Nn),{pathname:f}=Sa(),h=JSON.stringify(Yp(r)),m=p.useRef(!1);return Zp(()=>{m.current=!0}),p.useCallback((y,v={})=>{if(Kt(m.current,Kp),!m.current)return;if(typeof y=="number"){s.go(y);return}let b=Qp(y,JSON.parse(h),f,v.relative==="path");l==null&&i!=="/"&&(b.pathname=b.pathname==="/"?i:qn([i,b.pathname])),(v.replace?s.replace:s.push)(b,v.state,v)},[i,s,h,f,l])}p.createContext(null);function Ei(l,{relative:i}={}){let{matches:s}=p.useContext(Nn),{pathname:r}=Sa(),f=JSON.stringify(Yp(s));return p.useMemo(()=>Qp(l,JSON.parse(f),r,i==="path"),[l,f,r,i])}function rx(l,i){return Jp(l,i)}function Jp(l,i,s,r,f){Ve(qi(),"useRoutes() may be used only in the context of a component.");let{navigator:h}=p.useContext(Pt),{matches:m}=p.useContext(Nn),g=m[m.length-1],y=g?g.params:{},v=g?g.pathname:"/",b=g?g.pathnameBase:"/",A=g&&g.route;{let _=A&&A.path||"";Fp(v,!A||_.endsWith("*")||_.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${v}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. - -Please change the parent to .`)}let M=Sa(),E;if(i){let _=typeof i=="string"?ol(i):i;Ve(b==="/"||_.pathname?.startsWith(b),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${b}" but pathname "${_.pathname}" was given in the \`location\` prop.`),E=_}else E=M;let T=E.pathname||"/",C=T;if(b!=="/"){let _=b.replace(/^\//,"").split("/");C="/"+T.replace(/^\//,"").split("/").slice(_.length).join("/")}let j=Lp(l,{pathname:C});Kt(A||j!=null,`No routes matched location "${E.pathname}${E.search}${E.hash}" `),Kt(j==null||j[j.length-1].route.element!==void 0||j[j.length-1].route.Component!==void 0||j[j.length-1].route.lazy!==void 0,`Matched leaf route at location "${E.pathname}${E.search}${E.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let w=dx(j&&j.map(_=>Object.assign({},_,{params:Object.assign({},y,_.params),pathname:qn([b,h.encodeLocation?h.encodeLocation(_.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:_.pathname]),pathnameBase:_.pathnameBase==="/"?b:qn([b,h.encodeLocation?h.encodeLocation(_.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:_.pathnameBase])})),m,s,r,f);return i&&w?p.createElement(Si.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...E},navigationType:"POP"}},w):w}function ux(){let l=gx(),i=ex(l)?`${l.status} ${l.statusText}`:l instanceof Error?l.message:JSON.stringify(l),s=l instanceof Error?l.stack:null,r="rgba(200,200,200, 0.5)",f={padding:"0.5rem",backgroundColor:r},h={padding:"2px 4px",backgroundColor:r},m=null;return console.error("Error handled by React Router default ErrorBoundary:",l),m=p.createElement(p.Fragment,null,p.createElement("p",null,"💿 Hey developer 👋"),p.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",p.createElement("code",{style:h},"ErrorBoundary")," or"," ",p.createElement("code",{style:h},"errorElement")," prop on your route.")),p.createElement(p.Fragment,null,p.createElement("h2",null,"Unexpected Application Error!"),p.createElement("h3",{style:{fontStyle:"italic"}},i),s?p.createElement("pre",{style:f},s):null,m)}var cx=p.createElement(ux,null),ox=class extends p.Component{constructor(l){super(l),this.state={location:l.location,revalidation:l.revalidation,error:l.error}}static getDerivedStateFromError(l){return{error:l}}static getDerivedStateFromProps(l,i){return i.location!==l.location||i.revalidation!=="idle"&&l.revalidation==="idle"?{error:l.error,location:l.location,revalidation:l.revalidation}:{error:l.error!==void 0?l.error:i.error,location:i.location,revalidation:l.revalidation||i.revalidation}}componentDidCatch(l,i){this.props.onError?this.props.onError(l,i):console.error("React Router caught the following error during render",l)}render(){return this.state.error!==void 0?p.createElement(Nn.Provider,{value:this.props.routeContext},p.createElement(go.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function fx({routeContext:l,match:i,children:s}){let r=p.useContext(fl);return r&&r.static&&r.staticContext&&(i.route.errorElement||i.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=i.route.id),p.createElement(Nn.Provider,{value:l},s)}function dx(l,i=[],s=null,r=null,f=null){if(l==null){if(!s)return null;if(s.errors)l=s.matches;else if(i.length===0&&!s.initialized&&s.matches.length>0)l=s.matches;else return null}let h=l,m=s?.errors;if(m!=null){let b=h.findIndex(A=>A.route.id&&m?.[A.route.id]!==void 0);Ve(b>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(m).join(",")}`),h=h.slice(0,Math.min(h.length,b+1))}let g=!1,y=-1;if(s)for(let b=0;b=0?h=h.slice(0,y+1):h=[h[0]];break}}}let v=s&&r?(b,A)=>{r(b,{location:s.location,params:s.matches?.[0]?.params??{},errorInfo:A})}:void 0;return h.reduceRight((b,A,M)=>{let E,T=!1,C=null,j=null;s&&(E=m&&A.route.id?m[A.route.id]:void 0,C=A.route.errorElement||cx,g&&(y<0&&M===0?(Fp("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),T=!0,j=null):y===M&&(T=!0,j=A.route.hydrateFallbackElement||null)));let w=i.concat(h.slice(0,M+1)),_=()=>{let G;return E?G=C:T?G=j:A.route.Component?G=p.createElement(A.route.Component,null):A.route.element?G=A.route.element:G=b,p.createElement(fx,{match:A,routeContext:{outlet:b,matches:w,isDataRoute:s!=null},children:G})};return s&&(A.route.ErrorBoundary||A.route.errorElement||M===0)?p.createElement(ox,{location:s.location,revalidation:s.revalidation,component:C,error:E,children:_(),routeContext:{outlet:null,matches:w,isDataRoute:!0},onError:v}):_()},null)}function vo(l){return`${l} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function hx(l){let i=p.useContext(fl);return Ve(i,vo(l)),i}function mx(l){let i=p.useContext(dr);return Ve(i,vo(l)),i}function px(l){let i=p.useContext(Nn);return Ve(i,vo(l)),i}function xo(l){let i=px(l),s=i.matches[i.matches.length-1];return Ve(s.route.id,`${l} can only be used on routes that contain a unique "id"`),s.route.id}function yx(){return xo("useRouteId")}function gx(){let l=p.useContext(go),i=mx("useRouteError"),s=xo("useRouteError");return l!==void 0?l:i.errors?.[s]}function vx(){let{router:l}=hx("useNavigate"),i=xo("useNavigate"),s=p.useRef(!1);return Zp(()=>{s.current=!0}),p.useCallback(async(f,h={})=>{Kt(s.current,Kp),s.current&&(typeof f=="number"?l.navigate(f):await l.navigate(f,{fromRouteId:i,...h}))},[l,i])}var lp={};function Fp(l,i,s){!i&&!lp[l]&&(lp[l]=!0,Kt(!1,s))}p.memo(xx);function xx({routes:l,future:i,state:s,unstable_onError:r}){return Jp(l,void 0,s,r,i)}function Is(l){Ve(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function bx({basename:l="/",children:i=null,location:s,navigationType:r="POP",navigator:f,static:h=!1}){Ve(!qi(),"You cannot render a inside another . You should never have more than one in your app.");let m=l.replace(/^\/*/,"/"),g=p.useMemo(()=>({basename:m,navigator:f,static:h,future:{}}),[m,f,h]);typeof s=="string"&&(s=ol(s));let{pathname:y="/",search:v="",hash:b="",state:A=null,key:M="default"}=s,E=p.useMemo(()=>{let T=jn(y,m);return T==null?null:{location:{pathname:T,search:v,hash:b,state:A,key:M},navigationType:r}},[m,y,v,b,A,M,r]);return Kt(E!=null,` is not able to match the URL "${y}${v}${b}" because it does not start with the basename, so the won't render anything.`),E==null?null:p.createElement(Pt.Provider,{value:g},p.createElement(Si.Provider,{children:i,value:E}))}function Ax({children:l,location:i}){return rx(to(l),i)}function to(l,i=[]){let s=[];return p.Children.forEach(l,(r,f)=>{if(!p.isValidElement(r))return;let h=[...i,f];if(r.type===p.Fragment){s.push.apply(s,to(r.props.children,h));return}Ve(r.type===Is,`[${typeof r.type=="string"?r.type:r.type.name}] is not a component. All component children of must be a or `),Ve(!r.props.index||!r.props.children,"An index route cannot have child routes.");let m={id:r.props.id||h.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,middleware:r.props.middleware,loader:r.props.loader,action:r.props.action,hydrateFallbackElement:r.props.hydrateFallbackElement,HydrateFallback:r.props.HydrateFallback,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.hasErrorBoundary===!0||r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(m.children=to(r.props.children,h)),s.push(m)}),s}var Ps="get",er="application/x-www-form-urlencoded";function hr(l){return l!=null&&typeof l.tagName=="string"}function Sx(l){return hr(l)&&l.tagName.toLowerCase()==="button"}function qx(l){return hr(l)&&l.tagName.toLowerCase()==="form"}function Ex(l){return hr(l)&&l.tagName.toLowerCase()==="input"}function jx(l){return!!(l.metaKey||l.altKey||l.ctrlKey||l.shiftKey)}function Nx(l,i){return l.button===0&&(!i||i==="_self")&&!jx(l)}var Qs=null;function Cx(){if(Qs===null)try{new FormData(document.createElement("form"),0),Qs=!1}catch{Qs=!0}return Qs}var wx=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Vc(l){return l!=null&&!wx.has(l)?(Kt(!1,`"${l}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${er}"`),null):l}function Tx(l,i){let s,r,f,h,m;if(qx(l)){let g=l.getAttribute("action");r=g?jn(g,i):null,s=l.getAttribute("method")||Ps,f=Vc(l.getAttribute("enctype"))||er,h=new FormData(l)}else if(Sx(l)||Ex(l)&&(l.type==="submit"||l.type==="image")){let g=l.form;if(g==null)throw new Error('Cannot submit a - ); -} - -function KeyPill({ label }) { - return {label}; -} - -function StatusPill({ label, active }) { - return ( - - {label} - - ); -} - function InlineCameraTilt({ keymap }) { const { state: { roverId, camera }, @@ -226,6 +145,10 @@ function InlineCameraTilt({ keymap }) { ); } +function KeyPill({ label }) { + return {label}; +} + function formatDegrees(value) { if (typeof value !== 'number' || Number.isNaN(value)) return '—'; return `${value > 0 ? '+' : ''}${value.toFixed(1)}°`; diff --git a/webui/src/components/DriveDockAction.jsx b/webui/src/components/DriveDockAction.jsx new file mode 100644 index 00000000..3d648c04 --- /dev/null +++ b/webui/src/components/DriveDockAction.jsx @@ -0,0 +1,281 @@ +import { useMemo, useState } from 'react'; +import { useControlSystem } from '../controls/index.js'; +import { useTelemetryFrame } from '../context/TelemetryContext.jsx'; +import { formatKeyLabel } from '../controls/keymapUtils.js'; + +export function deriveDriveDockState(frame) { + const sensors = frame?.sensors || {}; + const oiLabel = sensors.oiMode?.label || 'Unknown'; + const oiNormalized = oiLabel.toLowerCase(); + const chargingLabel = sensors.chargingState?.label || ''; + const docked = Boolean(sensors.chargingSources?.homeBase); + const charging = docked && chargingLabel.toLowerCase() !== 'not charging' && chargingLabel !== ''; + const driving = oiNormalized === 'full'; + const dockedNotCharging = docked && !charging; + const dockingInProgress = !docked && !charging && oiNormalized === 'passive'; + return { driving, docked, charging, dockedNotCharging, dockingInProgress, oiLabel, chargingLabel }; +} + +export function useDriveDockState(roverId) { + const frame = useTelemetryFrame(roverId); + return useMemo(() => deriveDriveDockState(frame), [frame]); +} + +function StatusPill({ label, active }) { + return ( + + {label} + + ); +} + +function KeyPill({ label }) { + if (!label) return null; + return {label}; +} + +function DockModal({ instructions, onConfirm, onCancel, pending }) { + return ( +
+
+
+

Dock Rover

+

{instructions.summary}

+ +
+
+ + +
+
+
+ ); +} + +export default function DriveDockAction({ layout = 'desktop', expand = false, driveDockState }) { + const isMobile = layout === 'mobile'; + const { + state: { roverId, keymap }, + actions, + } = useControlSystem(); + const frame = useTelemetryFrame(roverId); + const state = driveDockState ?? deriveDriveDockState(frame); + const { driving, docked, charging, dockedNotCharging, dockingInProgress, oiLabel } = state; + const [pending, setPending] = useState(null); + const [confirmOpen, setConfirmOpen] = useState(false); + const [showModal, setShowModal] = useState(false); + + const driveDisabled = !roverId || pending !== null; + const dockDisabled = !roverId || pending !== null; + + const driveKeyLabel = formatKeyLabel(keymap?.driveMacro?.[0]); + const dockKeyLabel = formatKeyLabel(keymap?.dockMacro?.[0]); + + const dockInstructions = { + summary: 'You are about to trigger an automatic docking attempt! To have a successful dock:', + steps: ['Line up the rover straight in front of the dock', 'Make sure the rover is about one foot or half a meter away from the dock', 'Press Confirm Dock to begin the docking process'], + }; + const dockButtonCaption = 'Click this button to initate auto-dock.'; + + const startDriveInstructions = { + summary: 'You must enable driving mode before you can move the rover.', + steps: ['Press the keybind or tap this button to enable driving mode', 'Once ready (should be instant), this dialog will change, and you will be able to move'], + }; + + const handleReturnToDrive = async () => { + if (!roverId || pending) return; + setPending('drive'); + try { + actions.setMode('drive'); + await actions.runMacro('drive-sequence'); + } catch (err) { + alert(err.message); + } finally { + setPending(null); + } + }; + + const handleStartDrive = async () => { + if (!roverId || pending) return; + setConfirmOpen(false); + setShowModal(false); + setPending('drive'); + try { + actions.setMode('drive'); + await actions.runMacro('drive-sequence'); + } catch (err) { + alert(err.message); + } finally { + setPending(null); + } + }; + + const handleConfirmDock = async () => { + if (!roverId || pending) return; + setPending('dock'); + try { + actions.setMode('dock'); + await actions.runMacro('seek-dock'); + } catch (err) { + alert(err.message); + } finally { + setPending(null); + setConfirmOpen(false); + setShowModal(false); + } + }; + + const handleOpenDock = () => { + if (dockDisabled) return; + setShowModal(true); + setConfirmOpen(true); + }; + + const baseCardClasses = + 'flex w-full flex-col gap-0.5 border border-slate-700 px-0.75 py-0.75 text-slate-100 shadow'; + const filledHeight = expand ? 'h-full flex-1' : ''; + + if (!driving && !dockingInProgress) { + return ( + + ); + } + + if (dockingInProgress) { + const inProgressCopy = { + summary: 'Docking attempt in progress.', + steps: ['The rover should be slowly wiggling towards the dock', 'If it is obviously not working, press this button to enter driving mode and try again'], + }; + + return ( + + ); + } + + return ( + <> + + {showModal || (!isMobile && confirmOpen) ? ( + { + setShowModal(false); + setConfirmOpen(false); + }} + onConfirm={handleConfirmDock} + /> + ) : null} + + ); +} + +function StepList({ steps, tone = 'emerald' }) { + const container = + tone === 'emerald' + ? 'bg-emerald-900/60 text-emerald-50/90 border-emerald-700/60' + : tone === 'amber' + ? 'bg-amber-900/60 text-amber-50/90 border-amber-700/60' + : 'bg-indigo-900/60 text-indigo-50/90 border-indigo-700/60'; + const numberColor = + tone === 'emerald' + ? 'text-emerald-200' + : tone === 'amber' + ? 'text-amber-200' + : 'text-indigo-200'; + return ( +
+ {steps.map((step, idx) => ( +
+
+ {idx + 1}. + {step} +
+ {idx < steps.length - 1 ?
: null} +
+ ))} +
+ ); +} diff --git a/webui/src/components/MobileControls.jsx b/webui/src/components/MobileControls.jsx index a280cb03..8577bac1 100644 --- a/webui/src/components/MobileControls.jsx +++ b/webui/src/components/MobileControls.jsx @@ -1,7 +1,7 @@ import { useCallback, useEffect, useRef, useState } from 'react'; import { useControlSystem } from '../controls/index.js'; import { clampUnit } from '../controls/controlMath.js'; -import DriveModeToggle from './controls/DriveModeToggle.jsx'; +import DriveDockAction, { useDriveDockState } from './DriveDockAction.jsx'; const SOURCE = 'mobile-joystick'; const JOYSTICK_RADIUS = 80; @@ -134,8 +134,10 @@ function MobileJoystickPanel({ layout }) { const { state: { roverId, camera }, pipeline, - actions: { setDriveVector, registerInputState, stopAllMotion, setServoAngle, toggleNightVision }, + actions: { setDriveVector, registerInputState, setServoAngle, toggleNightVision }, } = useControlSystem(); + const driveDockState = useDriveDockState(roverId); + const dockedNotDriving = driveDockState.docked && !driveDockState.driving; const disabled = !roverId; const cameraConfig = camera?.config; const cameraEnabled = Boolean(roverId && camera?.enabled && cameraConfig); @@ -196,47 +198,52 @@ function MobileJoystickPanel({ layout }) { setServoAngle(next); }; + const containerClass = `flex flex-col gap-0.5 text-slate-100 ${ + dockedNotDriving ? 'h-screen max-h-screen' : '' + }`; + return ( -
- - - {nightVisionAvailable && ( - - )} - {cameraEnabled && ( -
-
- Camera Tilt - {cameraValue.toFixed(1)}° -
- + + {!dockedNotDriving ? ( + <> + {nightVisionAvailable && ( + + )} + {cameraEnabled && ( +
+
+ Camera Tilt + {cameraValue.toFixed(1)}° +
+ +
+ )} + -
- )} - - {/* */} + + ) : null} + {/* Panic stop button can be re-enabled here if needed */}
);