From 3e9a193d080aed94e114322af8e91b5af7d7bac5 Mon Sep 17 00:00:00 2001 From: Evan Reichard Date: Mon, 16 Mar 2026 08:03:03 -0400 Subject: [PATCH] wip 4 --- ...{index-C8sHRJp6.css => index-BfBW0EJh.css} | 2 +- frontend/dist/assets/index-CAfunjs7.js | 145 ++++++++++++++++++ frontend/dist/assets/index-DiNL9yHX.js | 65 -------- frontend/dist/index.html | 4 +- frontend/dist/manifest.json | 17 ++ frontend/package-lock.json | 10 ++ frontend/package.json | 1 + frontend/src/auth/AuthContext.tsx | 75 +++++---- frontend/src/auth/ProtectedRoute.tsx | 7 +- frontend/src/components/Button.tsx | 52 +++++++ frontend/src/components/Layout.tsx | 131 +++++++++++----- frontend/src/index.css | 55 +++++++ frontend/src/pages/DocumentsPage.tsx | 70 ++------- frontend/src/pages/HomePage.tsx | 2 +- frontend/src/pages/LoginPage.tsx | 27 +++- frontend/src/pages/SearchPage.tsx | 48 +----- frontend/src/pages/SettingsPage.tsx | 54 +------ frontend/tailwind.config.js | 2 +- frontend/vite.config.ts | 4 + 19 files changed, 467 insertions(+), 304 deletions(-) rename frontend/dist/assets/{index-C8sHRJp6.css => index-BfBW0EJh.css} (70%) create mode 100644 frontend/dist/assets/index-CAfunjs7.js delete mode 100644 frontend/dist/assets/index-DiNL9yHX.js create mode 100644 frontend/dist/manifest.json create mode 100644 frontend/src/components/Button.tsx diff --git a/frontend/dist/assets/index-C8sHRJp6.css b/frontend/dist/assets/index-BfBW0EJh.css similarity index 70% rename from frontend/dist/assets/index-C8sHRJp6.css rename to frontend/dist/assets/index-BfBW0EJh.css index 566faaa..1a52deb 100644 --- a/frontend/dist/assets/index-C8sHRJp6.css +++ b/frontend/dist/assets/index-BfBW0EJh.css @@ -1 +1 @@ -*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.-bottom-5{bottom:-1.25rem}.-top-2{top:-.5rem}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.bottom-6{bottom:1.5rem}.bottom-full{bottom:100%}.left-0{left:0}.left-5{left:1.25rem}.right-0{right:0}.right-4{right:1rem}.right-6{right:1.5rem}.top-0{top:0}.top-16{top:4rem}.top-3{top:.75rem}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.float-left{float:left}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.mx-4{margin-left:1rem;margin-right:1rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.my-auto{margin-top:auto;margin-bottom:auto}.-ml-6{margin-left:-1.5rem}.mb-1{margin-bottom:.25rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.ml-6{margin-left:1.5rem}.mr-4{margin-right:1rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-0\.5{height:.125rem}.h-16{height:4rem}.h-20{height:5rem}.h-24{height:6rem}.h-48{height:12rem}.h-60{height:15rem}.h-7{height:1.75rem}.h-\[100dvh\]{height:100dvh}.h-full{height:100%}.h-screen{height:100vh}.min-h-screen{min-height:100vh}.w-1\/2{width:50%}.w-12{width:3rem}.w-16{width:4rem}.w-20{width:5rem}.w-24{width:6rem}.w-40{width:10rem}.w-44{width:11rem}.w-56{width:14rem}.w-60{width:15rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.min-w-\[12em\]{min-width:12em}.min-w-\[50\%\]{min-width:50%}.min-w-fit{min-width:-moz-fit-content;min-width:fit-content}.min-w-full{min-width:100%}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.origin-top-right{transform-origin:top right}.cursor-pointer{cursor:pointer}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.hyphens-auto{-webkit-hyphens:auto;hyphens:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-4{border-left-width:4px}.border-t{border-top-width:1px}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.border-purple-500{--tw-border-opacity: 1;border-color:rgb(168 85 247 / var(--tw-border-opacity, 1))}.border-transparent{border-color:transparent}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-700{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity, 1))}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.object-cover{-o-object-fit:cover;object-fit:cover}.object-fill{-o-object-fit:fill;object-fit:fill}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-12{padding-bottom:3rem}.pb-2{padding-bottom:.5rem}.pb-4{padding-bottom:1rem}.pl-0{padding-left:0}.pl-6{padding-left:1.5rem}.pr-8{padding-right:2rem}.pt-12{padding-top:3rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.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-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-normal{line-height:1.5}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity, 1))}.placeholder-gray-400::placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity, 1))}.opacity-0{opacity:0}.opacity-30{opacity:.3}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px 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-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-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-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px 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-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 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)}.ring-1{--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)}.ring-black{--tw-ring-opacity: 1;--tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity, 1))}.ring-opacity-5{--tw-ring-opacity: .05}.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-all{transition-property:all;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}.duration-200{transition-duration:.2s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}html,body{overscroll-behavior-y:none;margin:0}html{height:calc(100% + env(safe-area-inset-bottom));padding:env(safe-area-inset-top) env(safe-area-inset-right) 0 env(safe-area-inset-left)}main{height:calc(100dvh - 4rem - env(safe-area-inset-top))}#container{padding-bottom:calc(5em + env(safe-area-inset-bottom)*2)}*{-ms-overflow-style:none;scrollbar-width:none}*::-webkit-scrollbar{display:none}.css-button:checked+div{visibility:visible;opacity:1}.css-button+div{visibility:hidden;opacity:0}.hover\:bg-blue-600:hover{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-800:hover{--tw-bg-opacity: 1;background-color:rgb(30 64 175 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-400:hover{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.hover\:bg-white:hover{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.hover\:text-black:hover{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.hover\:text-gray-800:hover{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.hover\:text-purple-600:hover{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.focus\:border-transparent:focus{border-color:transparent}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--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(2px + 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\:ring-purple-600:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(147 51 234 / var(--tw-ring-opacity, 1))}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:opacity-100{opacity:1}.dark\:border-gray-500:is(.dark *){--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity, 1))}.dark\:border-gray-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1))}.dark\:border-gray-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.dark\:bg-blue-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-200:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-white:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.dark\:text-black:is(.dark *){--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-500:is(.dark *){--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.dark\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.dark\:shadow-gray-800:is(.dark *){--tw-shadow-color: #1f2937;--tw-shadow: var(--tw-shadow-colored)}.dark\:hover\:bg-blue-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-600:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:hover\:text-gray-100:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:hover\:text-white:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}@media(min-width:640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:768px){.md\:mr-2{margin-right:.5rem}.md\:block{display:block}.md\:table-cell{display:table-cell}.md\:w-1\/2{width:50%}.md\:w-60{width:15rem}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:justify-start{justify-content:flex-start}.md\:px-24{padding-left:6rem;padding-right:6rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:pt-0{padding-top:0}.md\:pt-8{padding-top:2rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}}@media(min-width:1024px){.lg\:ml-44{margin-left:11rem}.lg\:ml-48{margin-left:12rem}.lg\:hidden{display:none}.lg\:w-48{width:12rem}.lg\:w-60{width:15rem}.lg\:w-80{width:20rem}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:justify-around{justify-content:space-around}.lg\:px-32{padding-left:8rem;padding-right:8rem}.lg\:pr-0{padding-right: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%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.-bottom-5{bottom:-1.25rem}.-top-2{top:-.5rem}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.bottom-6{bottom:1.5rem}.bottom-full{bottom:100%}.left-0{left:0}.left-5{left:1.25rem}.right-0{right:0}.right-4{right:1rem}.right-6{right:1.5rem}.top-0{top:0}.top-16{top:4rem}.top-3{top:.75rem}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.float-left{float:left}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.mx-4{margin-left:1rem;margin-right:1rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.my-auto{margin-top:auto;margin-bottom:auto}.-ml-6{margin-left:-1.5rem}.mb-1{margin-bottom:.25rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.ml-6{margin-left:1.5rem}.mr-4{margin-right:1rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-0\.5{height:.125rem}.h-16{height:4rem}.h-20{height:5rem}.h-24{height:6rem}.h-48{height:12rem}.h-60{height:15rem}.h-7{height:1.75rem}.h-\[100dvh\]{height:100dvh}.h-full{height:100%}.h-screen{height:100vh}.min-h-screen{min-height:100vh}.w-1\/2{width:50%}.w-12{width:3rem}.w-16{width:4rem}.w-20{width:5rem}.w-24{width:6rem}.w-40{width:10rem}.w-44{width:11rem}.w-56{width:14rem}.w-60{width:15rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.min-w-\[12em\]{min-width:12em}.min-w-\[50\%\]{min-width:50%}.min-w-fit{min-width:-moz-fit-content;min-width:fit-content}.min-w-full{min-width:100%}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.origin-top-right{transform-origin:top right}.cursor-pointer{cursor:pointer}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-around{justify-content:space-around}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-4{gap:1rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.hyphens-auto{-webkit-hyphens:auto;hyphens:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-4{border-left-width:4px}.border-t{border-top-width:1px}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.border-purple-500{--tw-border-opacity: 1;border-color:rgb(168 85 247 / var(--tw-border-opacity, 1))}.border-transparent{border-color:transparent}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-700{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity, 1))}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity, 1))}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.object-cover{-o-object-fit:cover;object-fit:cover}.object-fill{-o-object-fit:fill;object-fit:fill}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-12{padding-bottom:3rem}.pb-2{padding-bottom:.5rem}.pb-4{padding-bottom:1rem}.pl-0{padding-left:0}.pl-6{padding-left:1.5rem}.pr-8{padding-right:2rem}.pt-12{padding-top:3rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.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-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-normal{line-height:1.5}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity, 1))}.placeholder-gray-400::placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity, 1))}.opacity-0{opacity:0}.opacity-30{opacity:.3}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px 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-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-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-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px 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-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 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)}.ring-1{--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)}.ring-black{--tw-ring-opacity: 1;--tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity, 1))}.ring-opacity-5{--tw-ring-opacity: .05}.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-all{transition-property:all;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}.duration-200{transition-duration:.2s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}html,body{overscroll-behavior-y:none;margin:0}html{height:calc(100% + env(safe-area-inset-bottom));padding:env(safe-area-inset-top) env(safe-area-inset-right) 0 env(safe-area-inset-left)}main{height:calc(100dvh - 4rem - env(safe-area-inset-top))}#container{padding-bottom:calc(5em + env(safe-area-inset-bottom)*2)}*{-ms-overflow-style:none;scrollbar-width:none}*::-webkit-scrollbar{display:none}.css-button:checked+div{visibility:visible;opacity:1}.css-button+div{visibility:hidden;opacity:0}#mobile-nav-button span{transform-origin:5px 0px;transition:transform .5s cubic-bezier(.77,.2,.05,1),background .5s cubic-bezier(.77,.2,.05,1),opacity .55s ease}#mobile-nav-button span:first-child{transform-origin:0% 0%}#mobile-nav-button span:nth-last-child(2){transform-origin:0% 100%}#mobile-nav-button:checked~span{opacity:1;transform:rotate(45deg) translate(2px,-2px)}#mobile-nav-button:checked~span:nth-last-child(3){opacity:0;transform:rotate(0) scale(.2)}#mobile-nav-button:checked~span:nth-last-child(2){transform:rotate(-45deg) translateY(6px)}#mobile-nav-button:checked~#menu{transform:translate(0)!important}@media(min-width:1024px){#mobile-nav-button~#menu{transform:none}}#menu{top:0;padding-top:env(safe-area-inset-top);transform-origin:0% 0%;transform:translate(-100%);transition:transform .5s cubic-bezier(.77,.2,.05,1)}@media(orientation:landscape){#menu{transform:translate(calc(-1*(env(safe-area-inset-left) + 100%)))}}.hover\:bg-blue-600:hover{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.hover\:bg-blue-800:hover{--tw-bg-opacity: 1;background-color:rgb(30 64 175 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-400:hover{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.hover\:bg-white:hover{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.hover\:text-black:hover{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.hover\:text-gray-800:hover{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.hover\:text-purple-600:hover{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.focus\:border-transparent:focus{border-color:transparent}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--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(2px + 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\:ring-purple-600:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(147 51 234 / var(--tw-ring-opacity, 1))}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:opacity-100{opacity:1}.dark\:border-gray-500:is(.dark *){--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity, 1))}.dark\:border-gray-600:is(.dark *){--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1))}.dark\:border-gray-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.dark\:bg-blue-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-200:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-600:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-white:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.dark\:text-black:is(.dark *){--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-500:is(.dark *){--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.dark\:text-white:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.dark\:shadow-gray-800:is(.dark *){--tw-shadow-color: #1f2937;--tw-shadow: var(--tw-shadow-colored)}.dark\:hover\:bg-blue-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-600:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-700:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:hover\:text-gray-100:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:hover\:text-white:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}@media(min-width:640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:768px){.md\:mr-2{margin-right:.5rem}.md\:block{display:block}.md\:table-cell{display:table-cell}.md\:w-1\/2{width:50%}.md\:w-60{width:15rem}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:justify-start{justify-content:flex-start}.md\:px-24{padding-left:6rem;padding-right:6rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:pt-0{padding-top:0}.md\:pt-8{padding-top:2rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}}@media(min-width:1024px){.lg\:ml-44{margin-left:11rem}.lg\:ml-48{margin-left:12rem}.lg\:hidden{display:none}.lg\:w-48{width:12rem}.lg\:w-60{width:15rem}.lg\:w-80{width:20rem}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:justify-around{justify-content:space-around}.lg\:px-32{padding-left:8rem;padding-right:8rem}.lg\:pr-0{padding-right:0}} diff --git a/frontend/dist/assets/index-CAfunjs7.js b/frontend/dist/assets/index-CAfunjs7.js new file mode 100644 index 0000000..b95430a --- /dev/null +++ b/frontend/dist/assets/index-CAfunjs7.js @@ -0,0 +1,145 @@ +var My=l=>{throw TypeError(l)};var jo=(l,i,u)=>i.has(l)||My("Cannot "+u);var E=(l,i,u)=>(jo(l,i,"read from private field"),u?u.call(l):i.get(l)),te=(l,i,u)=>i.has(l)?My("Cannot add the same private member more than once"):i instanceof WeakSet?i.add(l):i.set(l,u),J=(l,i,u,r)=>(jo(l,i,"write to private field"),r?r.call(l,u):i.set(l,u),u),de=(l,i,u)=>(jo(l,i,"access private method"),u);var Qs=(l,i,u,r)=>({set _(o){J(l,i,o,u)},get _(){return E(l,i,r)}});(function(){const i=document.createElement("link").relList;if(i&&i.supports&&i.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))r(o);new MutationObserver(o=>{for(const f of o)if(f.type==="childList")for(const h of f.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&r(h)}).observe(document,{childList:!0,subtree:!0});function u(o){const f={};return o.integrity&&(f.integrity=o.integrity),o.referrerPolicy&&(f.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?f.credentials="include":o.crossOrigin==="anonymous"?f.credentials="omit":f.credentials="same-origin",f}function r(o){if(o.ep)return;o.ep=!0;const f=u(o);fetch(o.href,f)}})();function Qp(l){return l&&l.__esModule&&Object.prototype.hasOwnProperty.call(l,"default")?l.default:l}var Co={exports:{}},nu={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Uy;function mb(){if(Uy)return nu;Uy=1;var l=Symbol.for("react.transitional.element"),i=Symbol.for("react.fragment");function u(r,o,f){var h=null;if(f!==void 0&&(h=""+f),o.key!==void 0&&(h=""+o.key),"key"in o){f={};for(var g in o)g!=="key"&&(f[g]=o[g])}else f=o;return o=f.ref,{$$typeof:l,type:r,key:h,ref:o!==void 0?o:null,props:f}}return nu.Fragment=i,nu.jsx=u,nu.jsxs=u,nu}var qy;function yb(){return qy||(qy=1,Co.exports=mb()),Co.exports}var m=yb(),_o={exports:{}},re={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Ly;function pb(){if(Ly)return re;Ly=1;var l=Symbol.for("react.transitional.element"),i=Symbol.for("react.portal"),u=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),f=Symbol.for("react.consumer"),h=Symbol.for("react.context"),g=Symbol.for("react.forward_ref"),v=Symbol.for("react.suspense"),y=Symbol.for("react.memo"),b=Symbol.for("react.lazy"),x=Symbol.for("react.activity"),j=Symbol.iterator;function G(R){return R===null||typeof R!="object"?null:(R=j&&R[j]||R["@@iterator"],typeof R=="function"?R:null)}var N={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},D=Object.assign,O={};function H(R,Q,Z){this.props=R,this.context=Q,this.refs=O,this.updater=Z||N}H.prototype.isReactComponent={},H.prototype.setState=function(R,Q){if(typeof R!="object"&&typeof R!="function"&&R!=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,R,Q,"setState")},H.prototype.forceUpdate=function(R){this.updater.enqueueForceUpdate(this,R,"forceUpdate")};function X(){}X.prototype=H.prototype;function K(R,Q,Z){this.props=R,this.context=Q,this.refs=O,this.updater=Z||N}var k=K.prototype=new X;k.constructor=K,D(k,H.prototype),k.isPureReactComponent=!0;var F=Array.isArray;function ae(){}var $={H:null,A:null,T:null,S:null},le=Object.prototype.hasOwnProperty;function fe(R,Q,Z){var W=Z.ref;return{$$typeof:l,type:R,key:Q,ref:W!==void 0?W:null,props:Z}}function Oe(R,Q){return fe(R.type,Q,R.props)}function Qe(R){return typeof R=="object"&&R!==null&&R.$$typeof===l}function qe(R){var Q={"=":"=0",":":"=2"};return"$"+R.replace(/[=:]/g,function(Z){return Q[Z]})}var Ie=/\/+/g;function Le(R,Q){return typeof R=="object"&&R!==null&&R.key!=null?qe(""+R.key):Q.toString(36)}function _e(R){switch(R.status){case"fulfilled":return R.value;case"rejected":throw R.reason;default:switch(typeof R.status=="string"?R.then(ae,ae):(R.status="pending",R.then(function(Q){R.status==="pending"&&(R.status="fulfilled",R.value=Q)},function(Q){R.status==="pending"&&(R.status="rejected",R.reason=Q)})),R.status){case"fulfilled":return R.value;case"rejected":throw R.reason}}throw R}function q(R,Q,Z,W,se){var he=typeof R;(he==="undefined"||he==="boolean")&&(R=null);var Ne=!1;if(R===null)Ne=!0;else switch(he){case"bigint":case"string":case"number":Ne=!0;break;case"object":switch(R.$$typeof){case l:case i:Ne=!0;break;case b:return Ne=R._init,q(Ne(R._payload),Q,Z,W,se)}}if(Ne)return se=se(R),Ne=W===""?"."+Le(R,0):W,F(se)?(Z="",Ne!=null&&(Z=Ne.replace(Ie,"$&/")+"/"),q(se,Q,Z,"",function(oi){return oi})):se!=null&&(Qe(se)&&(se=Oe(se,Z+(se.key==null||R&&R.key===se.key?"":(""+se.key).replace(Ie,"$&/")+"/")+Ne)),Q.push(se)),1;Ne=0;var ht=W===""?".":W+":";if(F(R))for(var Ve=0;Ve>>1,we=q[Re];if(0>>1;Reo(Z,ee))Wo(se,Z)?(q[Re]=se,q[W]=ee,Re=W):(q[Re]=Z,q[Q]=ee,Re=Q);else if(Wo(se,ee))q[Re]=se,q[W]=ee,Re=W;else break e}}return V}function o(q,V){var ee=q.sortIndex-V.sortIndex;return ee!==0?ee:q.id-V.id}if(l.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var f=performance;l.unstable_now=function(){return f.now()}}else{var h=Date,g=h.now();l.unstable_now=function(){return h.now()-g}}var v=[],y=[],b=1,x=null,j=3,G=!1,N=!1,D=!1,O=!1,H=typeof setTimeout=="function"?setTimeout:null,X=typeof clearTimeout=="function"?clearTimeout:null,K=typeof setImmediate<"u"?setImmediate:null;function k(q){for(var V=u(y);V!==null;){if(V.callback===null)r(y);else if(V.startTime<=q)r(y),V.sortIndex=V.expirationTime,i(v,V);else break;V=u(y)}}function F(q){if(D=!1,k(q),!N)if(u(v)!==null)N=!0,ae||(ae=!0,qe());else{var V=u(y);V!==null&&_e(F,V.startTime-q)}}var ae=!1,$=-1,le=5,fe=-1;function Oe(){return O?!0:!(l.unstable_now()-feq&&Oe());){var Re=x.callback;if(typeof Re=="function"){x.callback=null,j=x.priorityLevel;var we=Re(x.expirationTime<=q);if(q=l.unstable_now(),typeof we=="function"){x.callback=we,k(q),V=!0;break t}x===u(v)&&r(v),k(q)}else r(v);x=u(v)}if(x!==null)V=!0;else{var R=u(y);R!==null&&_e(F,R.startTime-q),V=!1}}break e}finally{x=null,j=ee,G=!1}V=void 0}}finally{V?qe():ae=!1}}}var qe;if(typeof K=="function")qe=function(){K(Qe)};else if(typeof MessageChannel<"u"){var Ie=new MessageChannel,Le=Ie.port2;Ie.port1.onmessage=Qe,qe=function(){Le.postMessage(null)}}else qe=function(){H(Qe,0)};function _e(q,V){$=H(function(){q(l.unstable_now())},V)}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(q){q.callback=null},l.unstable_forceFrameRate=function(q){0>q||125Re?(q.sortIndex=ee,i(y,q),u(v)===null&&q===u(y)&&(D?(X($),$=-1):D=!0,_e(F,ee-Re))):(q.sortIndex=we,i(v,q),N||G||(N=!0,ae||(ae=!0,qe()))),q},l.unstable_shouldYield=Oe,l.unstable_wrapCallback=function(q){var V=j;return function(){var ee=j;j=V;try{return q.apply(this,arguments)}finally{j=ee}}}})(Mo)),Mo}var Qy;function bb(){return Qy||(Qy=1,zo.exports=vb()),zo.exports}var Uo={exports:{}},ot={};/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Gy;function xb(){if(Gy)return ot;Gy=1;var l=hf();function i(v){var y="https://react.dev/errors/"+v;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(l)}catch(i){console.error(i)}}return l(),Uo.exports=xb(),Uo.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Ky;function Eb(){if(Ky)return lu;Ky=1;var l=bb(),i=hf(),u=Sb();function r(e){var t="https://react.dev/errors/"+e;if(1we||(e.current=Re[we],Re[we]=null,we--)}function Z(e,t){we++,Re[we]=e.current,e.current=t}var W=R(null),se=R(null),he=R(null),Ne=R(null);function ht(e,t){switch(Z(he,t),Z(se,e),Z(W,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?ny(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=ny(t),e=ly(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}Q(W),Z(W,e)}function Ve(){Q(W),Q(se),Q(he)}function oi(e){e.memoizedState!==null&&Z(Ne,e);var t=W.current,a=ly(t,e.type);t!==a&&(Z(se,e),Z(W,a))}function Eu(e){se.current===e&&(Q(W),Q(se)),Ne.current===e&&(Q(Ne),Ii._currentValue=ee)}var or,zf;function On(e){if(or===void 0)try{throw Error()}catch(a){var t=a.stack.trim().match(/\n( *(at )?)/);or=t&&t[1]||"",zf=-1)":-1s||S[n]!==_[s]){var L=` +`+S[n].replace(" at new "," at ");return e.displayName&&L.includes("")&&(L=L.replace("",e.displayName)),L}while(1<=n&&0<=s);break}}}finally{fr=!1,Error.prepareStackTrace=a}return(a=e?e.displayName||e.name:"")?On(a):""}function X0(e,t){switch(e.tag){case 26:case 27:case 5:return On(e.type);case 16:return On("Lazy");case 13:return e.child!==t&&t!==null?On("Suspense Fallback"):On("Suspense");case 19:return On("SuspenseList");case 0:case 15:return dr(e.type,!1);case 11:return dr(e.type.render,!1);case 1:return dr(e.type,!0);case 31:return On("Activity");default:return""}}function Mf(e){try{var t="",a=null;do t+=X0(e,a),a=e,e=e.return;while(e);return t}catch(n){return` +Error generating stack: `+n.message+` +`+n.stack}}var hr=Object.prototype.hasOwnProperty,mr=l.unstable_scheduleCallback,yr=l.unstable_cancelCallback,V0=l.unstable_shouldYield,Z0=l.unstable_requestPaint,wt=l.unstable_now,J0=l.unstable_getCurrentPriorityLevel,Uf=l.unstable_ImmediatePriority,qf=l.unstable_UserBlockingPriority,Ru=l.unstable_NormalPriority,F0=l.unstable_LowPriority,Lf=l.unstable_IdlePriority,$0=l.log,W0=l.unstable_setDisableYieldValue,fi=null,jt=null;function Ka(e){if(typeof $0=="function"&&W0(e),jt&&typeof jt.setStrictMode=="function")try{jt.setStrictMode(fi,e)}catch{}}var Ct=Math.clz32?Math.clz32:eg,P0=Math.log,I0=Math.LN2;function eg(e){return e>>>=0,e===0?32:31-(P0(e)/I0|0)|0}var Tu=256,Nu=262144,Au=4194304;function wn(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 Ou(e,t,a){var n=e.pendingLanes;if(n===0)return 0;var s=0,c=e.suspendedLanes,d=e.pingedLanes;e=e.warmLanes;var p=n&134217727;return p!==0?(n=p&~c,n!==0?s=wn(n):(d&=p,d!==0?s=wn(d):a||(a=p&~e,a!==0&&(s=wn(a))))):(p=n&~c,p!==0?s=wn(p):d!==0?s=wn(d):a||(a=n&~e,a!==0&&(s=wn(a)))),s===0?0:t!==0&&t!==s&&(t&c)===0&&(c=s&-s,a=t&-t,c>=a||c===32&&(a&4194048)!==0)?t:s}function di(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function tg(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 Hf(){var e=Au;return Au<<=1,(Au&62914560)===0&&(Au=4194304),e}function pr(e){for(var t=[],a=0;31>a;a++)t.push(e);return t}function hi(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function ag(e,t,a,n,s,c){var d=e.pendingLanes;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=a,e.entangledLanes&=a,e.errorRecoveryDisabledLanes&=a,e.shellSuspendCounter=0;var p=e.entanglements,S=e.expirationTimes,_=e.hiddenUpdates;for(a=d&~a;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var rg=/[\n"\\]/g;function Qt(e){return e.replace(rg,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Er(e,t,a,n,s,c,d,p){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=""+Bt(t)):e.value!==""+Bt(t)&&(e.value=""+Bt(t)):d!=="submit"&&d!=="reset"||e.removeAttribute("value"),t!=null?Rr(e,d,Bt(t)):a!=null?Rr(e,d,Bt(a)):n!=null&&e.removeAttribute("value"),s==null&&c!=null&&(e.defaultChecked=!!c),s!=null&&(e.checked=s&&typeof s!="function"&&typeof s!="symbol"),p!=null&&typeof p!="function"&&typeof p!="symbol"&&typeof p!="boolean"?e.name=""+Bt(p):e.removeAttribute("name")}function Wf(e,t,a,n,s,c,d,p){if(c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(e.type=c),t!=null||a!=null){if(!(c!=="submit"&&c!=="reset"||t!=null)){Sr(e);return}a=a!=null?""+Bt(a):"",t=t!=null?""+Bt(t):a,p||t===e.value||(e.value=t),e.defaultValue=t}n=n??s,n=typeof n!="function"&&typeof n!="symbol"&&!!n,e.checked=p?e.checked:!!n,e.defaultChecked=!!n,d!=null&&typeof d!="function"&&typeof d!="symbol"&&typeof d!="boolean"&&(e.name=d),Sr(e)}function Rr(e,t,a){t==="number"&&Cu(e.ownerDocument)===e||e.defaultValue===""+a||(e.defaultValue=""+a)}function hl(e,t,a,n){if(e=e.options,t){t={};for(var s=0;s"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),wr=!1;if(ba)try{var gi={};Object.defineProperty(gi,"passive",{get:function(){wr=!0}}),window.addEventListener("test",gi,gi),window.removeEventListener("test",gi,gi)}catch{wr=!1}var Xa=null,jr=null,Du=null;function ld(){if(Du)return Du;var e,t=jr,a=t.length,n,s="value"in Xa?Xa.value:Xa.textContent,c=s.length;for(e=0;e=xi),od=" ",fd=!1;function dd(e,t){switch(e){case"keyup":return qg.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function hd(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var gl=!1;function Hg(e,t){switch(e){case"compositionend":return hd(t);case"keypress":return t.which!==32?null:(fd=!0,od);case"textInput":return e=t.data,e===od&&fd?null:e;default:return null}}function Bg(e,t){if(gl)return e==="compositionend"||!Mr&&dd(e,t)?(e=ld(),Du=jr=Xa=null,gl=!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:a,offset:t-e};e=n}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=Sd(a)}}function Rd(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Rd(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Td(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Cu(e.document);t instanceof e.HTMLIFrameElement;){try{var a=typeof t.contentWindow.location.href=="string"}catch{a=!1}if(a)e=t.contentWindow;else break;t=Cu(e.document)}return t}function Lr(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 Zg=ba&&"documentMode"in document&&11>=document.documentMode,vl=null,Hr=null,Ti=null,Br=!1;function Nd(e,t,a){var n=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;Br||vl==null||vl!==Cu(n)||(n=vl,"selectionStart"in n&&Lr(n)?n={start:n.selectionStart,end:n.selectionEnd}:(n=(n.ownerDocument&&n.ownerDocument.defaultView||window).getSelection(),n={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}),Ti&&Ri(Ti,n)||(Ti=n,n=Ns(Hr,"onSelect"),0>=d,s-=d,sa=1<<32-Ct(t)+s|a<oe?(ge=I,I=null):ge=I.sibling;var Ee=z(A,I,C[oe],B);if(Ee===null){I===null&&(I=ge);break}e&&I&&Ee.alternate===null&&t(A,I),T=c(Ee,T,oe),Se===null?ne=Ee:Se.sibling=Ee,Se=Ee,I=ge}if(oe===C.length)return a(A,I),ve&&Sa(A,oe),ne;if(I===null){for(;oeoe?(ge=I,I=null):ge=I.sibling;var mn=z(A,I,Ee.value,B);if(mn===null){I===null&&(I=ge);break}e&&I&&mn.alternate===null&&t(A,I),T=c(mn,T,oe),Se===null?ne=mn:Se.sibling=mn,Se=mn,I=ge}if(Ee.done)return a(A,I),ve&&Sa(A,oe),ne;if(I===null){for(;!Ee.done;oe++,Ee=C.next())Ee=Y(A,Ee.value,B),Ee!==null&&(T=c(Ee,T,oe),Se===null?ne=Ee:Se.sibling=Ee,Se=Ee);return ve&&Sa(A,oe),ne}for(I=n(I);!Ee.done;oe++,Ee=C.next())Ee=U(I,A,oe,Ee.value,B),Ee!==null&&(e&&Ee.alternate!==null&&I.delete(Ee.key===null?oe:Ee.key),T=c(Ee,T,oe),Se===null?ne=Ee:Se.sibling=Ee,Se=Ee);return e&&I.forEach(function(hb){return t(A,hb)}),ve&&Sa(A,oe),ne}function Me(A,T,C,B){if(typeof C=="object"&&C!==null&&C.type===D&&C.key===null&&(C=C.props.children),typeof C=="object"&&C!==null){switch(C.$$typeof){case G:e:{for(var ne=C.key;T!==null;){if(T.key===ne){if(ne=C.type,ne===D){if(T.tag===7){a(A,T.sibling),B=s(T,C.props.children),B.return=A,A=B;break e}}else if(T.elementType===ne||typeof ne=="object"&&ne!==null&&ne.$$typeof===le&&Bn(ne)===T.type){a(A,T.sibling),B=s(T,C.props),Ci(B,C),B.return=A,A=B;break e}a(A,T);break}else t(A,T);T=T.sibling}C.type===D?(B=Mn(C.props.children,A.mode,B,C.key),B.return=A,A=B):(B=Yu(C.type,C.key,C.props,null,A.mode,B),Ci(B,C),B.return=A,A=B)}return d(A);case N:e:{for(ne=C.key;T!==null;){if(T.key===ne)if(T.tag===4&&T.stateNode.containerInfo===C.containerInfo&&T.stateNode.implementation===C.implementation){a(A,T.sibling),B=s(T,C.children||[]),B.return=A,A=B;break e}else{a(A,T);break}else t(A,T);T=T.sibling}B=Vr(C,A.mode,B),B.return=A,A=B}return d(A);case le:return C=Bn(C),Me(A,T,C,B)}if(_e(C))return P(A,T,C,B);if(qe(C)){if(ne=qe(C),typeof ne!="function")throw Error(r(150));return C=ne.call(C),ie(A,T,C,B)}if(typeof C.then=="function")return Me(A,T,Fu(C),B);if(C.$$typeof===K)return Me(A,T,Xu(A,C),B);$u(A,C)}return typeof C=="string"&&C!==""||typeof C=="number"||typeof C=="bigint"?(C=""+C,T!==null&&T.tag===6?(a(A,T.sibling),B=s(T,C),B.return=A,A=B):(a(A,T),B=Xr(C,A.mode,B),B.return=A,A=B),d(A)):a(A,T)}return function(A,T,C,B){try{ji=0;var ne=Me(A,T,C,B);return jl=null,ne}catch(I){if(I===wl||I===Zu)throw I;var Se=Dt(29,I,null,A.mode);return Se.lanes=B,Se.return=A,Se}finally{}}}var Gn=Jd(!0),Fd=Jd(!1),$a=!1;function lc(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function ic(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 Wa(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Pa(e,t,a){var n=e.updateQueue;if(n===null)return null;if(n=n.shared,(Te&2)!==0){var s=n.pending;return s===null?t.next=t:(t.next=s.next,s.next=t),n.pending=t,t=Gu(e),Dd(e,null,a),t}return Qu(e,n,t,a),Gu(e)}function _i(e,t,a){if(t=t.updateQueue,t!==null&&(t=t.shared,(a&4194048)!==0)){var n=t.lanes;n&=e.pendingLanes,a|=n,t.lanes=a,Qf(e,a)}}function uc(e,t){var a=e.updateQueue,n=e.alternate;if(n!==null&&(n=n.updateQueue,a===n)){var s=null,c=null;if(a=a.firstBaseUpdate,a!==null){do{var d={lane:a.lane,tag:a.tag,payload:a.payload,callback:null,next:null};c===null?s=c=d:c=c.next=d,a=a.next}while(a!==null);c===null?s=c=t:c=c.next=t}else s=c=t;a={baseState:n.baseState,firstBaseUpdate:s,lastBaseUpdate:c,shared:n.shared,callbacks:n.callbacks},e.updateQueue=a;return}e=a.lastBaseUpdate,e===null?a.firstBaseUpdate=t:e.next=t,a.lastBaseUpdate=t}var sc=!1;function Di(){if(sc){var e=Ol;if(e!==null)throw e}}function zi(e,t,a,n){sc=!1;var s=e.updateQueue;$a=!1;var c=s.firstBaseUpdate,d=s.lastBaseUpdate,p=s.shared.pending;if(p!==null){s.shared.pending=null;var S=p,_=S.next;S.next=null,d===null?c=_:d.next=_,d=S;var L=e.alternate;L!==null&&(L=L.updateQueue,p=L.lastBaseUpdate,p!==d&&(p===null?L.firstBaseUpdate=_:p.next=_,L.lastBaseUpdate=S))}if(c!==null){var Y=s.baseState;d=0,L=_=S=null,p=c;do{var z=p.lane&-536870913,U=z!==p.lane;if(U?(pe&z)===z:(n&z)===z){z!==0&&z===Al&&(sc=!0),L!==null&&(L=L.next={lane:0,tag:p.tag,payload:p.payload,callback:null,next:null});e:{var P=e,ie=p;z=t;var Me=a;switch(ie.tag){case 1:if(P=ie.payload,typeof P=="function"){Y=P.call(Me,Y,z);break e}Y=P;break e;case 3:P.flags=P.flags&-65537|128;case 0:if(P=ie.payload,z=typeof P=="function"?P.call(Me,Y,z):P,z==null)break e;Y=x({},Y,z);break e;case 2:$a=!0}}z=p.callback,z!==null&&(e.flags|=64,U&&(e.flags|=8192),U=s.callbacks,U===null?s.callbacks=[z]:U.push(z))}else U={lane:z,tag:p.tag,payload:p.payload,callback:p.callback,next:null},L===null?(_=L=U,S=Y):L=L.next=U,d|=z;if(p=p.next,p===null){if(p=s.shared.pending,p===null)break;U=p,p=U.next,U.next=null,s.lastBaseUpdate=U,s.shared.pending=null}}while(!0);L===null&&(S=Y),s.baseState=S,s.firstBaseUpdate=_,s.lastBaseUpdate=L,c===null&&(s.shared.lanes=0),nn|=d,e.lanes=d,e.memoizedState=Y}}function $d(e,t){if(typeof e!="function")throw Error(r(191,e));e.call(t)}function Wd(e,t){var a=e.callbacks;if(a!==null)for(e.callbacks=null,e=0;ec?c:8;var d=q.T,p={};q.T=p,Ac(e,!1,t,a);try{var S=s(),_=q.S;if(_!==null&&_(p,S),S!==null&&typeof S=="object"&&typeof S.then=="function"){var L=av(S,n);qi(e,t,L,Lt(e))}else qi(e,t,n,Lt(e))}catch(Y){qi(e,t,{then:function(){},status:"rejected",reason:Y},Lt())}finally{V.p=c,d!==null&&p.types!==null&&(d.types=p.types),q.T=d}}function rv(){}function Tc(e,t,a,n){if(e.tag!==5)throw Error(r(476));var s=jh(e).queue;wh(e,s,t,ee,a===null?rv:function(){return Ch(e),a(n)})}function jh(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:ee,baseState:ee,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Na,lastRenderedState:ee},next:null};var a={};return t.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Na,lastRenderedState:a},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function Ch(e){var t=jh(e);t.next===null&&(t=e.alternate.memoizedState),qi(e,t.next.queue,{},Lt())}function Nc(){return st(Ii)}function _h(){return Je().memoizedState}function Dh(){return Je().memoizedState}function cv(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var a=Lt();e=Wa(a);var n=Pa(t,e,a);n!==null&&(Rt(n,t,a),_i(n,t,a)),t={cache:ec()},e.payload=t;return}t=t.return}}function ov(e,t,a){var n=Lt();a={lane:n,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},us(e)?Mh(t,a):(a=Kr(e,t,a,n),a!==null&&(Rt(a,e,n),Uh(a,t,n)))}function zh(e,t,a){var n=Lt();qi(e,t,a,n)}function qi(e,t,a,n){var s={lane:n,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(us(e))Mh(t,s);else{var c=e.alternate;if(e.lanes===0&&(c===null||c.lanes===0)&&(c=t.lastRenderedReducer,c!==null))try{var d=t.lastRenderedState,p=c(d,a);if(s.hasEagerState=!0,s.eagerState=p,_t(p,d))return Qu(e,t,s,0),Ue===null&&Bu(),!1}catch{}finally{}if(a=Kr(e,t,s,n),a!==null)return Rt(a,e,n),Uh(a,t,n),!0}return!1}function Ac(e,t,a,n){if(n={lane:2,revertLane:lo(),gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},us(e)){if(t)throw Error(r(479))}else t=Kr(e,a,n,2),t!==null&&Rt(t,e,2)}function us(e){var t=e.alternate;return e===ce||t!==null&&t===ce}function Mh(e,t){_l=Iu=!0;var a=e.pending;a===null?t.next=t:(t.next=a.next,a.next=t),e.pending=t}function Uh(e,t,a){if((a&4194048)!==0){var n=t.lanes;n&=e.pendingLanes,a|=n,t.lanes=a,Qf(e,a)}}var Li={readContext:st,use:as,useCallback:Ke,useContext:Ke,useEffect:Ke,useImperativeHandle:Ke,useLayoutEffect:Ke,useInsertionEffect:Ke,useMemo:Ke,useReducer:Ke,useRef:Ke,useState:Ke,useDebugValue:Ke,useDeferredValue:Ke,useTransition:Ke,useSyncExternalStore:Ke,useId:Ke,useHostTransitionStatus:Ke,useFormState:Ke,useActionState:Ke,useOptimistic:Ke,useMemoCache:Ke,useCacheRefresh:Ke};Li.useEffectEvent=Ke;var qh={readContext:st,use:as,useCallback:function(e,t){return mt().memoizedState=[e,t===void 0?null:t],e},useContext:st,useEffect:bh,useImperativeHandle:function(e,t,a){a=a!=null?a.concat([e]):null,ls(4194308,4,Rh.bind(null,t,e),a)},useLayoutEffect:function(e,t){return ls(4194308,4,e,t)},useInsertionEffect:function(e,t){ls(4,2,e,t)},useMemo:function(e,t){var a=mt();t=t===void 0?null:t;var n=e();if(Yn){Ka(!0);try{e()}finally{Ka(!1)}}return a.memoizedState=[n,t],n},useReducer:function(e,t,a){var n=mt();if(a!==void 0){var s=a(t);if(Yn){Ka(!0);try{a(t)}finally{Ka(!1)}}}else s=t;return n.memoizedState=n.baseState=s,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:s},n.queue=e,e=e.dispatch=ov.bind(null,ce,e),[n.memoizedState,e]},useRef:function(e){var t=mt();return e={current:e},t.memoizedState=e},useState:function(e){e=bc(e);var t=e.queue,a=zh.bind(null,ce,t);return t.dispatch=a,[e.memoizedState,a]},useDebugValue:Ec,useDeferredValue:function(e,t){var a=mt();return Rc(a,e,t)},useTransition:function(){var e=bc(!1);return e=wh.bind(null,ce,e.queue,!0,!1),mt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,a){var n=ce,s=mt();if(ve){if(a===void 0)throw Error(r(407));a=a()}else{if(a=t(),Ue===null)throw Error(r(349));(pe&127)!==0||nh(n,t,a)}s.memoizedState=a;var c={value:a,getSnapshot:t};return s.queue=c,bh(ih.bind(null,n,c,e),[e]),n.flags|=2048,zl(9,{destroy:void 0},lh.bind(null,n,c,a,t),null),a},useId:function(){var e=mt(),t=Ue.identifierPrefix;if(ve){var a=ra,n=sa;a=(n&~(1<<32-Ct(n)-1)).toString(32)+a,t="_"+t+"R_"+a,a=es++,0<\/script>",c=c.removeChild(c.firstChild);break;case"select":c=typeof n.is=="string"?d.createElement("select",{is:n.is}):d.createElement("select"),n.multiple?c.multiple=!0:n.size&&(c.size=n.size);break;default:c=typeof n.is=="string"?d.createElement(s,{is:n.is}):d.createElement(s)}}c[it]=t,c[gt]=n;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(ct(c,s,n),s){case"button":case"input":case"select":case"textarea":n=!!n.autoFocus;break e;case"img":n=!0;break e;default:n=!1}n&&Oa(t)}}return Be(t),Qc(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,a),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==n&&Oa(t);else{if(typeof n!="string"&&t.stateNode===null)throw Error(r(166));if(e=he.current,Tl(t)){if(e=t.stateNode,a=t.memoizedProps,n=null,s=ut,s!==null)switch(s.tag){case 27:case 5:n=s.memoizedProps}e[it]=t,e=!!(e.nodeValue===a||n!==null&&n.suppressHydrationWarning===!0||ty(e.nodeValue,a)),e||Ja(t,!0)}else e=As(e).createTextNode(n),e[it]=t,t.stateNode=e}return Be(t),null;case 31:if(a=t.memoizedState,e===null||e.memoizedState!==null){if(n=Tl(t),a!==null){if(e===null){if(!n)throw Error(r(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(r(557));e[it]=t}else Un(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Be(t),e=!1}else a=$r(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),e=!0;if(!e)return t.flags&256?(Mt(t),t):(Mt(t),null);if((t.flags&128)!==0)throw Error(r(558))}return Be(t),null;case 13:if(n=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(s=Tl(t),n!==null&&n.dehydrated!==null){if(e===null){if(!s)throw Error(r(318));if(s=t.memoizedState,s=s!==null?s.dehydrated:null,!s)throw Error(r(317));s[it]=t}else Un(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Be(t),s=!1}else s=$r(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=s),s=!0;if(!s)return t.flags&256?(Mt(t),t):(Mt(t),null)}return Mt(t),(t.flags&128)!==0?(t.lanes=a,t):(a=n!==null,e=e!==null&&e.memoizedState!==null,a&&(n=t.child,s=null,n.alternate!==null&&n.alternate.memoizedState!==null&&n.alternate.memoizedState.cachePool!==null&&(s=n.alternate.memoizedState.cachePool.pool),c=null,n.memoizedState!==null&&n.memoizedState.cachePool!==null&&(c=n.memoizedState.cachePool.pool),c!==s&&(n.flags|=2048)),a!==e&&a&&(t.child.flags|=8192),fs(t,t.updateQueue),Be(t),null);case 4:return Ve(),e===null&&ro(t.stateNode.containerInfo),Be(t),null;case 10:return Ra(t.type),Be(t),null;case 19:if(Q(Ze),n=t.memoizedState,n===null)return Be(t),null;if(s=(t.flags&128)!==0,c=n.rendering,c===null)if(s)Bi(n,!1);else{if(ke!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(c=Pu(e),c!==null){for(t.flags|=128,Bi(n,!1),e=c.updateQueue,t.updateQueue=e,fs(t,e),t.subtreeFlags=0,e=a,a=t.child;a!==null;)zd(a,e),a=a.sibling;return Z(Ze,Ze.current&1|2),ve&&Sa(t,n.treeForkCount),t.child}e=e.sibling}n.tail!==null&&wt()>ps&&(t.flags|=128,s=!0,Bi(n,!1),t.lanes=4194304)}else{if(!s)if(e=Pu(c),e!==null){if(t.flags|=128,s=!0,e=e.updateQueue,t.updateQueue=e,fs(t,e),Bi(n,!0),n.tail===null&&n.tailMode==="hidden"&&!c.alternate&&!ve)return Be(t),null}else 2*wt()-n.renderingStartTime>ps&&a!==536870912&&(t.flags|=128,s=!0,Bi(n,!1),t.lanes=4194304);n.isBackwards?(c.sibling=t.child,t.child=c):(e=n.last,e!==null?e.sibling=c:t.child=c,n.last=c)}return n.tail!==null?(e=n.tail,n.rendering=e,n.tail=e.sibling,n.renderingStartTime=wt(),e.sibling=null,a=Ze.current,Z(Ze,s?a&1|2:a&1),ve&&Sa(t,n.treeForkCount),e):(Be(t),null);case 22:case 23:return Mt(t),cc(),n=t.memoizedState!==null,e!==null?e.memoizedState!==null!==n&&(t.flags|=8192):n&&(t.flags|=8192),n?(a&536870912)!==0&&(t.flags&128)===0&&(Be(t),t.subtreeFlags&6&&(t.flags|=8192)):Be(t),a=t.updateQueue,a!==null&&fs(t,a.retryQueue),a=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(a=e.memoizedState.cachePool.pool),n=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(n=t.memoizedState.cachePool.pool),n!==a&&(t.flags|=2048),e!==null&&Q(Hn),null;case 24:return a=null,e!==null&&(a=e.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),Ra(Fe),Be(t),null;case 25:return null;case 30:return null}throw Error(r(156,t.tag))}function yv(e,t){switch(Jr(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ra(Fe),Ve(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Eu(t),null;case 31:if(t.memoizedState!==null){if(Mt(t),t.alternate===null)throw Error(r(340));Un()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Mt(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(r(340));Un()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Q(Ze),null;case 4:return Ve(),null;case 10:return Ra(t.type),null;case 22:case 23:return Mt(t),cc(),e!==null&&Q(Hn),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Ra(Fe),null;case 25:return null;default:return null}}function um(e,t){switch(Jr(t),t.tag){case 3:Ra(Fe),Ve();break;case 26:case 27:case 5:Eu(t);break;case 4:Ve();break;case 31:t.memoizedState!==null&&Mt(t);break;case 13:Mt(t);break;case 19:Q(Ze);break;case 10:Ra(t.type);break;case 22:case 23:Mt(t),cc(),e!==null&&Q(Hn);break;case 24:Ra(Fe)}}function Qi(e,t){try{var a=t.updateQueue,n=a!==null?a.lastEffect:null;if(n!==null){var s=n.next;a=s;do{if((a.tag&e)===e){n=void 0;var c=a.create,d=a.inst;n=c(),d.destroy=n}a=a.next}while(a!==s)}}catch(p){Ce(t,t.return,p)}}function tn(e,t,a){try{var n=t.updateQueue,s=n!==null?n.lastEffect:null;if(s!==null){var c=s.next;n=c;do{if((n.tag&e)===e){var d=n.inst,p=d.destroy;if(p!==void 0){d.destroy=void 0,s=t;var S=a,_=p;try{_()}catch(L){Ce(s,S,L)}}}n=n.next}while(n!==c)}}catch(L){Ce(t,t.return,L)}}function sm(e){var t=e.updateQueue;if(t!==null){var a=e.stateNode;try{Wd(t,a)}catch(n){Ce(e,e.return,n)}}}function rm(e,t,a){a.props=Kn(e.type,e.memoizedProps),a.state=e.memoizedState;try{a.componentWillUnmount()}catch(n){Ce(e,t,n)}}function Gi(e,t){try{var a=e.ref;if(a!==null){switch(e.tag){case 26:case 27:case 5:var n=e.stateNode;break;case 30:n=e.stateNode;break;default:n=e.stateNode}typeof a=="function"?e.refCleanup=a(n):a.current=n}}catch(s){Ce(e,t,s)}}function ca(e,t){var a=e.ref,n=e.refCleanup;if(a!==null)if(typeof n=="function")try{n()}catch(s){Ce(e,t,s)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(s){Ce(e,t,s)}else a.current=null}function cm(e){var t=e.type,a=e.memoizedProps,n=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":a.autoFocus&&n.focus();break e;case"img":a.src?n.src=a.src:a.srcSet&&(n.srcset=a.srcSet)}}catch(s){Ce(e,e.return,s)}}function Gc(e,t,a){try{var n=e.stateNode;Lv(n,e.type,a,t),n[gt]=t}catch(s){Ce(e,e.return,s)}}function om(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&cn(e.type)||e.tag===4}function Yc(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||om(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&&cn(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 Kc(e,t,a){var n=e.tag;if(n===5||n===6)e=e.stateNode,t?(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a).insertBefore(e,t):(t=a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,t.appendChild(e),a=a._reactRootContainer,a!=null||t.onclick!==null||(t.onclick=va));else if(n!==4&&(n===27&&cn(e.type)&&(a=e.stateNode,t=null),e=e.child,e!==null))for(Kc(e,t,a),e=e.sibling;e!==null;)Kc(e,t,a),e=e.sibling}function ds(e,t,a){var n=e.tag;if(n===5||n===6)e=e.stateNode,t?a.insertBefore(e,t):a.appendChild(e);else if(n!==4&&(n===27&&cn(e.type)&&(a=e.stateNode),e=e.child,e!==null))for(ds(e,t,a),e=e.sibling;e!==null;)ds(e,t,a),e=e.sibling}function fm(e){var t=e.stateNode,a=e.memoizedProps;try{for(var n=e.type,s=t.attributes;s.length;)t.removeAttributeNode(s[0]);ct(t,n,a),t[it]=e,t[gt]=a}catch(c){Ce(e,e.return,c)}}var wa=!1,Pe=!1,kc=!1,dm=typeof WeakSet=="function"?WeakSet:Set,nt=null;function pv(e,t){if(e=e.containerInfo,fo=zs,e=Td(e),Lr(e)){if("selectionStart"in e)var a={start:e.selectionStart,end:e.selectionEnd};else e:{a=(a=e.ownerDocument)&&a.defaultView||window;var n=a.getSelection&&a.getSelection();if(n&&n.rangeCount!==0){a=n.anchorNode;var s=n.anchorOffset,c=n.focusNode;n=n.focusOffset;try{a.nodeType,c.nodeType}catch{a=null;break e}var d=0,p=-1,S=-1,_=0,L=0,Y=e,z=null;t:for(;;){for(var U;Y!==a||s!==0&&Y.nodeType!==3||(p=d+s),Y!==c||n!==0&&Y.nodeType!==3||(S=d+n),Y.nodeType===3&&(d+=Y.nodeValue.length),(U=Y.firstChild)!==null;)z=Y,Y=U;for(;;){if(Y===e)break t;if(z===a&&++_===s&&(p=d),z===c&&++L===n&&(S=d),(U=Y.nextSibling)!==null)break;Y=z,z=Y.parentNode}Y=U}a=p===-1||S===-1?null:{start:p,end:S}}else a=null}a=a||{start:0,end:0}}else a=null;for(ho={focusedElem:e,selectionRange:a},zs=!1,nt=t;nt!==null;)if(t=nt,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,nt=e;else for(;nt!==null;){switch(t=nt,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(a=0;a title"))),ct(c,n,a),c[it]=e,at(c),n=c;break e;case"link":var d=vy("link","href",s).get(n+(a.href||""));if(d){for(var p=0;pMe&&(d=Me,Me=ie,ie=d);var A=Ed(p,ie),T=Ed(p,Me);if(A&&T&&(U.rangeCount!==1||U.anchorNode!==A.node||U.anchorOffset!==A.offset||U.focusNode!==T.node||U.focusOffset!==T.offset)){var C=Y.createRange();C.setStart(A.node,A.offset),U.removeAllRanges(),ie>Me?(U.addRange(C),U.extend(T.node,T.offset)):(C.setEnd(T.node,T.offset),U.addRange(C))}}}}for(Y=[],U=p;U=U.parentNode;)U.nodeType===1&&Y.push({element:U,left:U.scrollLeft,top:U.scrollTop});for(typeof p.focus=="function"&&p.focus(),p=0;pa?32:a,q.T=null,a=Wc,Wc=null;var c=un,d=za;if(et=0,Hl=un=null,za=0,(Te&6)!==0)throw Error(r(331));var p=Te;if(Te|=4,Rm(c.current),xm(c,c.current,d,a),Te=p,Zi(0,!1),jt&&typeof jt.onPostCommitFiberRoot=="function")try{jt.onPostCommitFiberRoot(fi,c)}catch{}return!0}finally{V.p=s,q.T=n,Gm(e,t)}}function Km(e,t,a){t=Yt(a,t),t=Cc(e.stateNode,t,2),e=Pa(e,t,2),e!==null&&(hi(e,2),oa(e))}function Ce(e,t,a){if(e.tag===3)Km(e,e,a);else for(;t!==null;){if(t.tag===3){Km(t,e,a);break}else if(t.tag===1){var n=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof n.componentDidCatch=="function"&&(ln===null||!ln.has(n))){e=Yt(a,e),a=kh(2),n=Pa(t,a,2),n!==null&&(Xh(a,n,t,e),hi(n,2),oa(n));break}}t=t.return}}function to(e,t,a){var n=e.pingCache;if(n===null){n=e.pingCache=new bv;var s=new Set;n.set(t,s)}else s=n.get(t),s===void 0&&(s=new Set,n.set(t,s));s.has(a)||(Zc=!0,s.add(a),e=Tv.bind(null,e,t,a),t.then(e,e))}function Tv(e,t,a){var n=e.pingCache;n!==null&&n.delete(t),e.pingedLanes|=e.suspendedLanes&a,e.warmLanes&=~a,Ue===e&&(pe&a)===a&&(ke===4||ke===3&&(pe&62914560)===pe&&300>wt()-ys?(Te&2)===0&&Bl(e,0):Jc|=a,Ll===pe&&(Ll=0)),oa(e)}function km(e,t){t===0&&(t=Hf()),e=zn(e,t),e!==null&&(hi(e,t),oa(e))}function Nv(e){var t=e.memoizedState,a=0;t!==null&&(a=t.retryLane),km(e,a)}function Av(e,t){var a=0;switch(e.tag){case 31:case 13:var n=e.stateNode,s=e.memoizedState;s!==null&&(a=s.retryLane);break;case 19:n=e.stateNode;break;case 22:n=e.stateNode._retryCache;break;default:throw Error(r(314))}n!==null&&n.delete(t),km(e,a)}function Ov(e,t){return mr(e,t)}var Es=null,Gl=null,ao=!1,Rs=!1,no=!1,rn=0;function oa(e){e!==Gl&&e.next===null&&(Gl===null?Es=Gl=e:Gl=Gl.next=e),Rs=!0,ao||(ao=!0,jv())}function Zi(e,t){if(!no&&Rs){no=!0;do for(var a=!1,n=Es;n!==null;){if(e!==0){var s=n.pendingLanes;if(s===0)var c=0;else{var d=n.suspendedLanes,p=n.pingedLanes;c=(1<<31-Ct(42|e)+1)-1,c&=s&~(d&~p),c=c&201326741?c&201326741|1:c?c|2:0}c!==0&&(a=!0,Jm(n,c))}else c=pe,c=Ou(n,n===Ue?c:0,n.cancelPendingCommit!==null||n.timeoutHandle!==-1),(c&3)===0||di(n,c)||(a=!0,Jm(n,c));n=n.next}while(a);no=!1}}function wv(){Xm()}function Xm(){Rs=ao=!1;var e=0;rn!==0&&Bv()&&(e=rn);for(var t=wt(),a=null,n=Es;n!==null;){var s=n.next,c=Vm(n,t);c===0?(n.next=null,a===null?Es=s:a.next=s,s===null&&(Gl=a)):(a=n,(e!==0||(c&3)!==0)&&(Rs=!0)),n=s}et!==0&&et!==5||Zi(e),rn!==0&&(rn=0)}function Vm(e,t){for(var a=e.suspendedLanes,n=e.pingedLanes,s=e.expirationTimes,c=e.pendingLanes&-62914561;0p)break;var L=S.transferSize,Y=S.initiatorType;L&&ay(Y)&&(S=S.responseEnd,d+=L*(S"u"?null:document;function my(e,t,a){var n=Yl;if(n&&typeof t=="string"&&t){var s=Qt(t);s='link[rel="'+e+'"][href="'+s+'"]',typeof a=="string"&&(s+='[crossorigin="'+a+'"]'),hy.has(s)||(hy.add(s),e={rel:e,crossOrigin:a,href:t},n.querySelector(s)===null&&(t=n.createElement("link"),ct(t,"link",e),at(t),n.head.appendChild(t)))}}function Jv(e){Ma.D(e),my("dns-prefetch",e,null)}function Fv(e,t){Ma.C(e,t),my("preconnect",e,t)}function $v(e,t,a){Ma.L(e,t,a);var n=Yl;if(n&&e&&t){var s='link[rel="preload"][as="'+Qt(t)+'"]';t==="image"&&a&&a.imageSrcSet?(s+='[imagesrcset="'+Qt(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(s+='[imagesizes="'+Qt(a.imageSizes)+'"]')):s+='[href="'+Qt(e)+'"]';var c=s;switch(t){case"style":c=Kl(e);break;case"script":c=kl(e)}Jt.has(c)||(e=x({rel:"preload",href:t==="image"&&a&&a.imageSrcSet?void 0:e,as:t},a),Jt.set(c,e),n.querySelector(s)!==null||t==="style"&&n.querySelector(Wi(c))||t==="script"&&n.querySelector(Pi(c))||(t=n.createElement("link"),ct(t,"link",e),at(t),n.head.appendChild(t)))}}function Wv(e,t){Ma.m(e,t);var a=Yl;if(a&&e){var n=t&&typeof t.as=="string"?t.as:"script",s='link[rel="modulepreload"][as="'+Qt(n)+'"][href="'+Qt(e)+'"]',c=s;switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":c=kl(e)}if(!Jt.has(c)&&(e=x({rel:"modulepreload",href:e},t),Jt.set(c,e),a.querySelector(s)===null)){switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(Pi(c)))return}n=a.createElement("link"),ct(n,"link",e),at(n),a.head.appendChild(n)}}}function Pv(e,t,a){Ma.S(e,t,a);var n=Yl;if(n&&e){var s=fl(n).hoistableStyles,c=Kl(e);t=t||"default";var d=s.get(c);if(!d){var p={loading:0,preload:null};if(d=n.querySelector(Wi(c)))p.loading=5;else{e=x({rel:"stylesheet",href:e,"data-precedence":t},a),(a=Jt.get(c))&&xo(e,a);var S=d=n.createElement("link");at(S),ct(S,"link",e),S._p=new Promise(function(_,L){S.onload=_,S.onerror=L}),S.addEventListener("load",function(){p.loading|=1}),S.addEventListener("error",function(){p.loading|=2}),p.loading|=4,ws(d,t,n)}d={type:"stylesheet",instance:d,count:1,state:p},s.set(c,d)}}}function Iv(e,t){Ma.X(e,t);var a=Yl;if(a&&e){var n=fl(a).hoistableScripts,s=kl(e),c=n.get(s);c||(c=a.querySelector(Pi(s)),c||(e=x({src:e,async:!0},t),(t=Jt.get(s))&&So(e,t),c=a.createElement("script"),at(c),ct(c,"link",e),a.head.appendChild(c)),c={type:"script",instance:c,count:1,state:null},n.set(s,c))}}function eb(e,t){Ma.M(e,t);var a=Yl;if(a&&e){var n=fl(a).hoistableScripts,s=kl(e),c=n.get(s);c||(c=a.querySelector(Pi(s)),c||(e=x({src:e,async:!0,type:"module"},t),(t=Jt.get(s))&&So(e,t),c=a.createElement("script"),at(c),ct(c,"link",e),a.head.appendChild(c)),c={type:"script",instance:c,count:1,state:null},n.set(s,c))}}function yy(e,t,a,n){var s=(s=he.current)?Os(s):null;if(!s)throw Error(r(446));switch(e){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(t=Kl(a.href),a=fl(s).hoistableStyles,n=a.get(t),n||(n={type:"style",instance:null,count:0,state:null},a.set(t,n)),n):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){e=Kl(a.href);var c=fl(s).hoistableStyles,d=c.get(e);if(d||(s=s.ownerDocument||s,d={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},c.set(e,d),(c=s.querySelector(Wi(e)))&&!c._p&&(d.instance=c,d.state.loading=5),Jt.has(e)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},Jt.set(e,a),c||tb(s,e,a,d.state))),t&&n===null)throw Error(r(528,""));return d}if(t&&n!==null)throw Error(r(529,""));return null;case"script":return t=a.async,a=a.src,typeof a=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=kl(a),a=fl(s).hoistableScripts,n=a.get(t),n||(n={type:"script",instance:null,count:0,state:null},a.set(t,n)),n):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,e))}}function Kl(e){return'href="'+Qt(e)+'"'}function Wi(e){return'link[rel="stylesheet"]['+e+"]"}function py(e){return x({},e,{"data-precedence":e.precedence,precedence:null})}function tb(e,t,a,n){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?n.loading=1:(t=e.createElement("link"),n.preload=t,t.addEventListener("load",function(){return n.loading|=1}),t.addEventListener("error",function(){return n.loading|=2}),ct(t,"link",a),at(t),e.head.appendChild(t))}function kl(e){return'[src="'+Qt(e)+'"]'}function Pi(e){return"script[async]"+e}function gy(e,t,a){if(t.count++,t.instance===null)switch(t.type){case"style":var n=e.querySelector('style[data-href~="'+Qt(a.href)+'"]');if(n)return t.instance=n,at(n),n;var s=x({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return n=(e.ownerDocument||e).createElement("style"),at(n),ct(n,"style",s),ws(n,a.precedence,e),t.instance=n;case"stylesheet":s=Kl(a.href);var c=e.querySelector(Wi(s));if(c)return t.state.loading|=4,t.instance=c,at(c),c;n=py(a),(s=Jt.get(s))&&xo(n,s),c=(e.ownerDocument||e).createElement("link"),at(c);var d=c;return d._p=new Promise(function(p,S){d.onload=p,d.onerror=S}),ct(c,"link",n),t.state.loading|=4,ws(c,a.precedence,e),t.instance=c;case"script":return c=kl(a.src),(s=e.querySelector(Pi(c)))?(t.instance=s,at(s),s):(n=a,(s=Jt.get(c))&&(n=x({},a),So(n,s)),e=e.ownerDocument||e,s=e.createElement("script"),at(s),ct(s,"link",n),e.head.appendChild(s),t.instance=s);case"void":return null;default:throw Error(r(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(n=t.instance,t.state.loading|=4,ws(n,a.precedence,e));return t.instance}function ws(e,t,a){for(var n=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),s=n.length?n[n.length-1]:null,c=s,d=0;d title"):null)}function ab(e,t,a){if(a===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 xy(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function nb(e,t,a,n){if(a.type==="stylesheet"&&(typeof n.media!="string"||matchMedia(n.media).matches!==!1)&&(a.state.loading&4)===0){if(a.instance===null){var s=Kl(n.href),c=t.querySelector(Wi(s));if(c){t=c._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=Cs.bind(e),t.then(e,e)),a.state.loading|=4,a.instance=c,at(c);return}c=t.ownerDocument||t,n=py(n),(s=Jt.get(s))&&xo(n,s),c=c.createElement("link"),at(c);var d=c;d._p=new Promise(function(p,S){d.onload=p,d.onerror=S}),ct(c,"link",n),a.instance=c}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(a,t),(t=a.state.preload)&&(a.state.loading&3)===0&&(e.count++,a=Cs.bind(e),t.addEventListener("load",a),t.addEventListener("error",a))}}var Eo=0;function lb(e,t){return e.stylesheets&&e.count===0&&Ds(e,e.stylesheets),0Eo?50:800)+t);return e.unsuspend=a,function(){e.unsuspend=null,clearTimeout(n),clearTimeout(s)}}:null}function Cs(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Ds(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var _s=null;function Ds(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,_s=new Map,t.forEach(ib,e),_s=null,Cs.call(e))}function ib(e,t){if(!(t.state.loading&4)){var a=_s.get(e);if(a)var n=a.get(null);else{a=new Map,_s.set(e,a);for(var s=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(),Do.exports=Eb(),Do.exports}var Tb=Rb();const Nb=Qp(Tb);/** + * react-router v7.13.1 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */var Xy="popstate";function Vy(l){return typeof l=="object"&&l!=null&&"pathname"in l&&"search"in l&&"hash"in l&&"state"in l&&"key"in l}function Ab(l={}){function i(r,o){var y;let f=(y=o.state)==null?void 0:y.masked,{pathname:h,search:g,hash:v}=f||r.location;return ko("",{pathname:h,search:g,hash:v},o.state&&o.state.usr||null,o.state&&o.state.key||"default",f?{pathname:r.location.pathname,search:r.location.search,hash:r.location.hash}:void 0)}function u(r,o){return typeof o=="string"?o:ru(o)}return wb(i,u,null,l)}function Ye(l,i){if(l===!1||l===null||typeof l>"u")throw new Error(i)}function la(l,i){if(!l){typeof console<"u"&&console.warn(i);try{throw new Error(i)}catch{}}}function Ob(){return Math.random().toString(36).substring(2,10)}function Zy(l,i){return{usr:l.state,key:l.key,idx:i,masked:l.unstable_mask?{pathname:l.pathname,search:l.search,hash:l.hash}:void 0}}function ko(l,i,u=null,r,o){return{pathname:typeof l=="string"?l:l.pathname,search:"",hash:"",...typeof i=="string"?ii(i):i,state:u,key:i&&i.key||r||Ob(),unstable_mask:o}}function ru({pathname:l="/",search:i="",hash:u=""}){return i&&i!=="?"&&(l+=i.charAt(0)==="?"?i:"?"+i),u&&u!=="#"&&(l+=u.charAt(0)==="#"?u:"#"+u),l}function ii(l){let i={};if(l){let u=l.indexOf("#");u>=0&&(i.hash=l.substring(u),l=l.substring(0,u));let r=l.indexOf("?");r>=0&&(i.search=l.substring(r),l=l.substring(0,r)),l&&(i.pathname=l)}return i}function wb(l,i,u,r={}){let{window:o=document.defaultView,v5Compat:f=!1}=r,h=o.history,g="POP",v=null,y=b();y==null&&(y=0,h.replaceState({...h.state,idx:y},""));function b(){return(h.state||{idx:null}).idx}function x(){g="POP";let O=b(),H=O==null?null:O-y;y=O,v&&v({action:g,location:D.location,delta:H})}function j(O,H){g="PUSH";let X=Vy(O)?O:ko(D.location,O,H);y=b()+1;let K=Zy(X,y),k=D.createHref(X.unstable_mask||X);try{h.pushState(K,"",k)}catch(F){if(F instanceof DOMException&&F.name==="DataCloneError")throw F;o.location.assign(k)}f&&v&&v({action:g,location:D.location,delta:1})}function G(O,H){g="REPLACE";let X=Vy(O)?O:ko(D.location,O,H);y=b();let K=Zy(X,y),k=D.createHref(X.unstable_mask||X);h.replaceState(K,"",k),f&&v&&v({action:g,location:D.location,delta:0})}function N(O){return jb(O)}let D={get action(){return g},get location(){return l(o,h)},listen(O){if(v)throw new Error("A history only accepts one active listener");return o.addEventListener(Xy,x),v=O,()=>{o.removeEventListener(Xy,x),v=null}},createHref(O){return i(o,O)},createURL:N,encodeLocation(O){let H=N(O);return{pathname:H.pathname,search:H.search,hash:H.hash}},push:j,replace:G,go(O){return h.go(O)}};return D}function jb(l,i=!1){let u="http://localhost";typeof window<"u"&&(u=window.location.origin!=="null"?window.location.origin:window.location.href),Ye(u,"No window.location.(origin|href) available to create URL");let r=typeof l=="string"?l:ru(l);return r=r.replace(/ $/,"%20"),!i&&r.startsWith("//")&&(r=u+r),new URL(r,u)}function Gp(l,i,u="/"){return Cb(l,i,u,!1)}function Cb(l,i,u,r){let o=typeof i=="string"?ii(i):i,f=Ga(o.pathname||"/",u);if(f==null)return null;let h=Yp(l);_b(h);let g=null;for(let v=0;g==null&&v{let b={relativePath:y===void 0?h.path||"":y,caseSensitive:h.caseSensitive===!0,childrenIndex:g,route:h};if(b.relativePath.startsWith("/")){if(!b.relativePath.startsWith(r)&&v)return;Ye(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 x=ya([r,b.relativePath]),j=u.concat(b);h.children&&h.children.length>0&&(Ye(h.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${x}".`),Yp(h.children,i,j,x,v)),!(h.path==null&&!h.index)&&i.push({path:x,score:Hb(x,h.index),routesMeta:j})};return l.forEach((h,g)=>{var v;if(h.path===""||!((v=h.path)!=null&&v.includes("?")))f(h,g);else for(let y of Kp(h.path))f(h,g,!0,y)}),i}function Kp(l){let i=l.split("/");if(i.length===0)return[];let[u,...r]=i,o=u.endsWith("?"),f=u.replace(/\?$/,"");if(r.length===0)return o?[f,""]:[f];let h=Kp(r.join("/")),g=[];return g.push(...h.map(v=>v===""?f:[f,v].join("/"))),o&&g.push(...h),g.map(v=>l.startsWith("/")&&v===""?"/":v)}function _b(l){l.sort((i,u)=>i.score!==u.score?u.score-i.score:Bb(i.routesMeta.map(r=>r.childrenIndex),u.routesMeta.map(r=>r.childrenIndex)))}var Db=/^:[\w-]+$/,zb=3,Mb=2,Ub=1,qb=10,Lb=-2,Jy=l=>l==="*";function Hb(l,i){let u=l.split("/"),r=u.length;return u.some(Jy)&&(r+=Lb),i&&(r+=Mb),u.filter(o=>!Jy(o)).reduce((o,f)=>o+(Db.test(f)?zb:f===""?Ub:qb),r)}function Bb(l,i){return l.length===i.length&&l.slice(0,-1).every((r,o)=>r===i[o])?l[l.length-1]-i[i.length-1]:0}function Qb(l,i,u=!1){let{routesMeta:r}=l,o={},f="/",h=[];for(let g=0;g{if(b==="*"){let N=g[j]||"";h=f.slice(0,f.length-N.length).replace(/(.)\/+$/,"$1")}const G=g[j];return x&&!G?y[b]=void 0:y[b]=(G||"").replace(/%2F/g,"/"),y},{}),pathname:f,pathnameBase:h,pattern:l}}function Gb(l,i=!1,u=!0){la(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=[],o="^"+l.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(h,g,v,y,b)=>{if(r.push({paramName:g,isOptional:v!=null}),v){let x=b.charAt(y+h.length);return x&&x!=="/"?"/([^\\/]*)":"(?:/([^\\/]*))?"}return"/([^\\/]+)"}).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return l.endsWith("*")?(r.push({paramName:"*"}),o+=l==="*"||l==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):u?o+="\\/*$":l!==""&&l!=="/"&&(o+="(?:(?=\\/|$))"),[new RegExp(o,i?void 0:"i"),r]}function Yb(l){try{return l.split("/").map(i=>decodeURIComponent(i).replace(/\//g,"%2F")).join("/")}catch(i){return la(!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 Ga(l,i){if(i==="/")return l;if(!l.toLowerCase().startsWith(i.toLowerCase()))return null;let u=i.endsWith("/")?i.length-1:i.length,r=l.charAt(u);return r&&r!=="/"?null:l.slice(u)||"/"}var Kb=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function kb(l,i="/"){let{pathname:u,search:r="",hash:o=""}=typeof l=="string"?ii(l):l,f;return u?(u=u.replace(/\/\/+/g,"/"),u.startsWith("/")?f=Fy(u.substring(1),"/"):f=Fy(u,i)):f=i,{pathname:f,search:Zb(r),hash:Jb(o)}}function Fy(l,i){let u=i.replace(/\/+$/,"").split("/");return l.split("/").forEach(o=>{o===".."?u.length>1&&u.pop():o!=="."&&u.push(o)}),u.length>1?u.join("/"):"/"}function qo(l,i,u,r){return`Cannot include a '${l}' character in a manually specified \`to.${i}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${u}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function Xb(l){return l.filter((i,u)=>u===0||i.route.path&&i.route.path.length>0)}function mf(l){let i=Xb(l);return i.map((u,r)=>r===i.length-1?u.pathname:u.pathnameBase)}function ar(l,i,u,r=!1){let o;typeof l=="string"?o=ii(l):(o={...l},Ye(!o.pathname||!o.pathname.includes("?"),qo("?","pathname","search",o)),Ye(!o.pathname||!o.pathname.includes("#"),qo("#","pathname","hash",o)),Ye(!o.search||!o.search.includes("#"),qo("#","search","hash",o)));let f=l===""||o.pathname==="",h=f?"/":o.pathname,g;if(h==null)g=u;else{let x=i.length-1;if(!r&&h.startsWith("..")){let j=h.split("/");for(;j[0]==="..";)j.shift(),x-=1;o.pathname=j.join("/")}g=x>=0?i[x]:"/"}let v=kb(o,g),y=h&&h!=="/"&&h.endsWith("/"),b=(f||h===".")&&u.endsWith("/");return!v.pathname.endsWith("/")&&(y||b)&&(v.pathname+="/"),v}var ya=l=>l.join("/").replace(/\/\/+/g,"/"),Vb=l=>l.replace(/\/+$/,"").replace(/^\/*/,"/"),Zb=l=>!l||l==="?"?"":l.startsWith("?")?l:"?"+l,Jb=l=>!l||l==="#"?"":l.startsWith("#")?l:"#"+l,Fb=class{constructor(l,i,u,r=!1){this.status=l,this.statusText=i||"",this.internal=r,u instanceof Error?(this.data=u.toString(),this.error=u):this.data=u}};function $b(l){return l!=null&&typeof l.status=="number"&&typeof l.statusText=="string"&&typeof l.internal=="boolean"&&"data"in l}function Wb(l){return l.map(i=>i.route.path).filter(Boolean).join("/").replace(/\/\/*/g,"/")||"/"}var kp=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Xp(l,i){let u=l;if(typeof u!="string"||!Kb.test(u))return{absoluteURL:void 0,isExternal:!1,to:u};let r=u,o=!1;if(kp)try{let f=new URL(window.location.href),h=u.startsWith("//")?new URL(f.protocol+u):new URL(u),g=Ga(h.pathname,i);h.origin===f.origin&&g!=null?u=g+h.search+h.hash:o=!0}catch{la(!1,` contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:o,to:u}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var Vp=["POST","PUT","PATCH","DELETE"];new Set(Vp);var Pb=["GET",...Vp];new Set(Pb);var ui=w.createContext(null);ui.displayName="DataRouter";var nr=w.createContext(null);nr.displayName="DataRouterState";var Ib=w.createContext(!1),Zp=w.createContext({isTransitioning:!1});Zp.displayName="ViewTransition";var ex=w.createContext(new Map);ex.displayName="Fetchers";var tx=w.createContext(null);tx.displayName="Await";var Ht=w.createContext(null);Ht.displayName="Navigation";var yu=w.createContext(null);yu.displayName="Location";var Pt=w.createContext({outlet:null,matches:[],isDataRoute:!1});Pt.displayName="Route";var yf=w.createContext(null);yf.displayName="RouteError";var Jp="REACT_ROUTER_ERROR",ax="REDIRECT",nx="ROUTE_ERROR_RESPONSE";function lx(l){if(l.startsWith(`${Jp}:${ax}:{`))try{let i=JSON.parse(l.slice(28));if(typeof i=="object"&&i&&typeof i.status=="number"&&typeof i.statusText=="string"&&typeof i.location=="string"&&typeof i.reloadDocument=="boolean"&&typeof i.replace=="boolean")return i}catch{}}function ix(l){if(l.startsWith(`${Jp}:${nx}:{`))try{let i=JSON.parse(l.slice(40));if(typeof i=="object"&&i&&typeof i.status=="number"&&typeof i.statusText=="string")return new Fb(i.status,i.statusText,i.data)}catch{}}function ux(l,{relative:i}={}){Ye(si(),"useHref() may be used only in the context of a component.");let{basename:u,navigator:r}=w.useContext(Ht),{hash:o,pathname:f,search:h}=pu(l,{relative:i}),g=f;return u!=="/"&&(g=f==="/"?u:ya([u,f])),r.createHref({pathname:g,search:h,hash:o})}function si(){return w.useContext(yu)!=null}function ia(){return Ye(si(),"useLocation() may be used only in the context of a component."),w.useContext(yu).location}var Fp="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function $p(l){w.useContext(Ht).static||w.useLayoutEffect(l)}function pf(){let{isDataRoute:l}=w.useContext(Pt);return l?Ex():sx()}function sx(){Ye(si(),"useNavigate() may be used only in the context of a component.");let l=w.useContext(ui),{basename:i,navigator:u}=w.useContext(Ht),{matches:r}=w.useContext(Pt),{pathname:o}=ia(),f=JSON.stringify(mf(r)),h=w.useRef(!1);return $p(()=>{h.current=!0}),w.useCallback((v,y={})=>{if(la(h.current,Fp),!h.current)return;if(typeof v=="number"){u.go(v);return}let b=ar(v,JSON.parse(f),o,y.relative==="path");l==null&&i!=="/"&&(b.pathname=b.pathname==="/"?i:ya([i,b.pathname])),(y.replace?u.replace:u.push)(b,y.state,y)},[i,u,f,o,l])}var rx=w.createContext(null);function cx(l){let i=w.useContext(Pt).outlet;return w.useMemo(()=>i&&w.createElement(rx.Provider,{value:l},i),[i,l])}function ox(){let{matches:l}=w.useContext(Pt),i=l[l.length-1];return i?i.params:{}}function pu(l,{relative:i}={}){let{matches:u}=w.useContext(Pt),{pathname:r}=ia(),o=JSON.stringify(mf(u));return w.useMemo(()=>ar(l,JSON.parse(o),r,i==="path"),[l,o,r,i])}function fx(l,i){return Wp(l,i)}function Wp(l,i,u){var O;Ye(si(),"useRoutes() may be used only in the context of a component.");let{navigator:r}=w.useContext(Ht),{matches:o}=w.useContext(Pt),f=o[o.length-1],h=f?f.params:{},g=f?f.pathname:"/",v=f?f.pathnameBase:"/",y=f&&f.route;{let H=y&&y.path||"";Ip(g,!y||H.endsWith("*")||H.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${g}" (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 b=ia(),x;if(i){let H=typeof i=="string"?ii(i):i;Ye(v==="/"||((O=H.pathname)==null?void 0:O.startsWith(v)),`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 "${v}" but pathname "${H.pathname}" was given in the \`location\` prop.`),x=H}else x=b;let j=x.pathname||"/",G=j;if(v!=="/"){let H=v.replace(/^\//,"").split("/");G="/"+j.replace(/^\//,"").split("/").slice(H.length).join("/")}let N=Gp(l,{pathname:G});la(y||N!=null,`No routes matched location "${x.pathname}${x.search}${x.hash}" `),la(N==null||N[N.length-1].route.element!==void 0||N[N.length-1].route.Component!==void 0||N[N.length-1].route.lazy!==void 0,`Matched leaf route at location "${x.pathname}${x.search}${x.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 D=px(N&&N.map(H=>Object.assign({},H,{params:Object.assign({},h,H.params),pathname:ya([v,r.encodeLocation?r.encodeLocation(H.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:H.pathname]),pathnameBase:H.pathnameBase==="/"?v:ya([v,r.encodeLocation?r.encodeLocation(H.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:H.pathnameBase])})),o,u);return i&&D?w.createElement(yu.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",unstable_mask:void 0,...x},navigationType:"POP"}},D):D}function dx(){let l=Sx(),i=$b(l)?`${l.status} ${l.statusText}`:l instanceof Error?l.message:JSON.stringify(l),u=l instanceof Error?l.stack:null,r="rgba(200,200,200, 0.5)",o={padding:"0.5rem",backgroundColor:r},f={padding:"2px 4px",backgroundColor:r},h=null;return console.error("Error handled by React Router default ErrorBoundary:",l),h=w.createElement(w.Fragment,null,w.createElement("p",null,"💿 Hey developer 👋"),w.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",w.createElement("code",{style:f},"ErrorBoundary")," or"," ",w.createElement("code",{style:f},"errorElement")," prop on your route.")),w.createElement(w.Fragment,null,w.createElement("h2",null,"Unexpected Application Error!"),w.createElement("h3",{style:{fontStyle:"italic"}},i),u?w.createElement("pre",{style:o},u):null,h)}var hx=w.createElement(dx,null),Pp=class extends w.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(){let l=this.state.error;if(this.context&&typeof l=="object"&&l&&"digest"in l&&typeof l.digest=="string"){const u=ix(l.digest);u&&(l=u)}let i=l!==void 0?w.createElement(Pt.Provider,{value:this.props.routeContext},w.createElement(yf.Provider,{value:l,children:this.props.component})):this.props.children;return this.context?w.createElement(mx,{error:l},i):i}};Pp.contextType=Ib;var Lo=new WeakMap;function mx({children:l,error:i}){let{basename:u}=w.useContext(Ht);if(typeof i=="object"&&i&&"digest"in i&&typeof i.digest=="string"){let r=lx(i.digest);if(r){let o=Lo.get(i);if(o)throw o;let f=Xp(r.location,u);if(kp&&!Lo.get(i))if(f.isExternal||r.reloadDocument)window.location.href=f.absoluteURL||f.to;else{const h=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(f.to,{replace:r.replace}));throw Lo.set(i,h),h}return w.createElement("meta",{httpEquiv:"refresh",content:`0;url=${f.absoluteURL||f.to}`})}}return l}function yx({routeContext:l,match:i,children:u}){let r=w.useContext(ui);return r&&r.static&&r.staticContext&&(i.route.errorElement||i.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=i.route.id),w.createElement(Pt.Provider,{value:l},u)}function px(l,i=[],u){let r=u==null?void 0:u.state;if(l==null){if(!r)return null;if(r.errors)l=r.matches;else if(i.length===0&&!r.initialized&&r.matches.length>0)l=r.matches;else return null}let o=l,f=r==null?void 0:r.errors;if(f!=null){let b=o.findIndex(x=>x.route.id&&(f==null?void 0:f[x.route.id])!==void 0);Ye(b>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(f).join(",")}`),o=o.slice(0,Math.min(o.length,b+1))}let h=!1,g=-1;if(u&&r){h=r.renderFallback;for(let b=0;b=0?o=o.slice(0,g+1):o=[o[0]];break}}}}let v=u==null?void 0:u.onError,y=r&&v?(b,x)=>{var j,G;v(b,{location:r.location,params:((G=(j=r.matches)==null?void 0:j[0])==null?void 0:G.params)??{},unstable_pattern:Wb(r.matches),errorInfo:x})}:void 0;return o.reduceRight((b,x,j)=>{let G,N=!1,D=null,O=null;r&&(G=f&&x.route.id?f[x.route.id]:void 0,D=x.route.errorElement||hx,h&&(g<0&&j===0?(Ip("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),N=!0,O=null):g===j&&(N=!0,O=x.route.hydrateFallbackElement||null)));let H=i.concat(o.slice(0,j+1)),X=()=>{let K;return G?K=D:N?K=O:x.route.Component?K=w.createElement(x.route.Component,null):x.route.element?K=x.route.element:K=b,w.createElement(yx,{match:x,routeContext:{outlet:b,matches:H,isDataRoute:r!=null},children:K})};return r&&(x.route.ErrorBoundary||x.route.errorElement||j===0)?w.createElement(Pp,{location:r.location,revalidation:r.revalidation,component:D,error:G,children:X(),routeContext:{outlet:null,matches:H,isDataRoute:!0},onError:y}):X()},null)}function gf(l){return`${l} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function gx(l){let i=w.useContext(ui);return Ye(i,gf(l)),i}function vx(l){let i=w.useContext(nr);return Ye(i,gf(l)),i}function bx(l){let i=w.useContext(Pt);return Ye(i,gf(l)),i}function vf(l){let i=bx(l),u=i.matches[i.matches.length-1];return Ye(u.route.id,`${l} can only be used on routes that contain a unique "id"`),u.route.id}function xx(){return vf("useRouteId")}function Sx(){var r;let l=w.useContext(yf),i=vx("useRouteError"),u=vf("useRouteError");return l!==void 0?l:(r=i.errors)==null?void 0:r[u]}function Ex(){let{router:l}=gx("useNavigate"),i=vf("useNavigate"),u=w.useRef(!1);return $p(()=>{u.current=!0}),w.useCallback(async(o,f={})=>{la(u.current,Fp),u.current&&(typeof o=="number"?await l.navigate(o):await l.navigate(o,{fromRouteId:i,...f}))},[l,i])}var $y={};function Ip(l,i,u){!i&&!$y[l]&&($y[l]=!0,la(!1,u))}w.memo(Rx);function Rx({routes:l,future:i,state:u,isStatic:r,onError:o}){return Wp(l,void 0,{state:u,isStatic:r,onError:o})}function e0({to:l,replace:i,state:u,relative:r}){Ye(si()," may be used only in the context of a component.");let{static:o}=w.useContext(Ht);la(!o," must not be used on the initial render in a . This is a no-op, but you should modify your code so the is only ever rendered in response to some user interaction or state change.");let{matches:f}=w.useContext(Pt),{pathname:h}=ia(),g=pf(),v=ar(l,mf(f),h,r==="path"),y=JSON.stringify(v);return w.useEffect(()=>{g(JSON.parse(y),{replace:i,state:u,relative:r})},[g,y,r,i,u]),null}function Tx(l){return cx(l.context)}function fa(l){Ye(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function Nx({basename:l="/",children:i=null,location:u,navigationType:r="POP",navigator:o,static:f=!1,unstable_useTransitions:h}){Ye(!si(),"You cannot render a inside another . You should never have more than one in your app.");let g=l.replace(/^\/*/,"/"),v=w.useMemo(()=>({basename:g,navigator:o,static:f,unstable_useTransitions:h,future:{}}),[g,o,f,h]);typeof u=="string"&&(u=ii(u));let{pathname:y="/",search:b="",hash:x="",state:j=null,key:G="default",unstable_mask:N}=u,D=w.useMemo(()=>{let O=Ga(y,g);return O==null?null:{location:{pathname:O,search:b,hash:x,state:j,key:G,unstable_mask:N},navigationType:r}},[g,y,b,x,j,G,r,N]);return la(D!=null,` is not able to match the URL "${y}${b}${x}" because it does not start with the basename, so the won't render anything.`),D==null?null:w.createElement(Ht.Provider,{value:v},w.createElement(yu.Provider,{children:i,value:D}))}function Ax({children:l,location:i}){return fx(Xo(l),i)}function Xo(l,i=[]){let u=[];return w.Children.forEach(l,(r,o)=>{if(!w.isValidElement(r))return;let f=[...i,o];if(r.type===w.Fragment){u.push.apply(u,Xo(r.props.children,f));return}Ye(r.type===fa,`[${typeof r.type=="string"?r.type:r.type.name}] is not a component. All component children of must be a or `),Ye(!r.props.index||!r.props.children,"An index route cannot have child routes.");let h={id:r.props.id||f.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&&(h.children=Xo(r.props.children,f)),u.push(h)}),u}var Vs="get",Zs="application/x-www-form-urlencoded";function lr(l){return typeof HTMLElement<"u"&&l instanceof HTMLElement}function Ox(l){return lr(l)&&l.tagName.toLowerCase()==="button"}function wx(l){return lr(l)&&l.tagName.toLowerCase()==="form"}function jx(l){return lr(l)&&l.tagName.toLowerCase()==="input"}function Cx(l){return!!(l.metaKey||l.altKey||l.ctrlKey||l.shiftKey)}function _x(l,i){return l.button===0&&(!i||i==="_self")&&!Cx(l)}var Gs=null;function Dx(){if(Gs===null)try{new FormData(document.createElement("form"),0),Gs=!1}catch{Gs=!0}return Gs}var zx=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Ho(l){return l!=null&&!zx.has(l)?(la(!1,`"${l}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${Zs}"`),null):l}function Mx(l,i){let u,r,o,f,h;if(wx(l)){let g=l.getAttribute("action");r=g?Ga(g,i):null,u=l.getAttribute("method")||Vs,o=Ho(l.getAttribute("enctype"))||Zs,f=new FormData(l)}else if(Ox(l)||jx(l)&&(l.type==="submit"||l.type==="image")){let g=l.form;if(g==null)throw new Error('Cannot submit a + ); + } +); + +Button.displayName = 'Button'; + +export const ButtonLink = forwardRef( + ({ variant = 'default', children, className = '', ...props }, ref) => { + return ( + + {children} + + ); + } +); + +ButtonLink.displayName = 'ButtonLink'; diff --git a/frontend/src/components/Layout.tsx b/frontend/src/components/Layout.tsx index 9c7f58a..c541aef 100644 --- a/frontend/src/components/Layout.tsx +++ b/frontend/src/components/Layout.tsx @@ -1,36 +1,65 @@ +import { useState, useEffect, useRef } from 'react'; import { Link, useLocation, Outlet, Navigate } from 'react-router-dom'; import { useGetMe } from '../generated/anthoLumeAPIV1'; import { useAuth } from '../auth/AuthContext'; +import { Home, FileText, Activity, Search, Settings, User, ChevronDown } from 'lucide-react'; interface NavItem { path: string; label: string; - icon: string; + icon: React.ElementType; + title: string; } const navItems: NavItem[] = [ - { path: '/', label: 'Home', icon: 'home' }, - { path: '/documents', label: 'Documents', icon: 'documents' }, - { path: '/progress', label: 'Progress', icon: 'activity' }, - { path: '/activity', label: 'Activity', icon: 'activity' }, - { path: '/search', label: 'Search', icon: 'search' }, + { path: '/', label: 'Home', icon: Home, title: 'Home' }, + { path: '/documents', label: 'Documents', icon: FileText, title: 'Documents' }, + { path: '/progress', label: 'Progress', icon: Activity, title: 'Progress' }, + { path: '/activity', label: 'Activity', icon: Activity, title: 'Activity' }, + { path: '/search', label: 'Search', icon: Search, title: 'Search' }, + { path: '/settings', label: 'Settings', icon: Settings, title: 'Settings' }, ]; export default function Layout() { const location = useLocation(); - const { isAuthenticated, user, logout } = useAuth(); + const { isAuthenticated, user, logout, isCheckingAuth } = useAuth(); const { data } = useGetMe(isAuthenticated ? {} : undefined); const userData = data?.data || user; + const [isUserDropdownOpen, setIsUserDropdownOpen] = useState(false); + const dropdownRef = useRef(null); + + const handleLogout = () => { + logout(); + setIsUserDropdownOpen(false); + }; + + // Close dropdown when clicking outside + useEffect(() => { + const handleClickOutside = (event: MouseEvent) => { + if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) { + setIsUserDropdownOpen(false); + } + }; + + document.addEventListener('mousedown', handleClickOutside); + return () => { + document.removeEventListener('mousedown', handleClickOutside); + }; + }, []); + + // Get current page title + const currentPageTitle = navItems.find(item => location.pathname === item.path)?.title || 'Documents'; + + // Show loading while checking authentication status + if (isCheckingAuth) { + return
Loading...
; + } // Redirect to login if not authenticated if (!isAuthenticated) { return ; } - const handleLogout = () => { - logout(); - }; - return (
{/* Header */} @@ -40,7 +69,7 @@ export default function Layout() { @@ -48,6 +77,7 @@ export default function Layout() { @@ -117,26 +91,9 @@ function DocumentCard({ doc }: DocumentCardProps) { ); } -// Search icon SVG -function SearchIcon() { - return ( - - - - - ); -} -// Upload icon SVG -function UploadIcon() { - return ( - - - - - - ); -} + + export default function DocumentsPage() { const [search, setSearch] = useState(''); @@ -203,7 +160,7 @@ export default function DocumentsPage() { - +
- +
@@ -265,7 +217,7 @@ export default function DocumentsPage() { onChange={() => setUploadMode(!uploadMode)} />
- +
diff --git a/frontend/src/pages/HomePage.tsx b/frontend/src/pages/HomePage.tsx index d13ddd9..33caf80 100644 --- a/frontend/src/pages/HomePage.tsx +++ b/frontend/src/pages/HomePage.tsx @@ -259,4 +259,4 @@ export default function HomePage() { ); -} \ No newline at end of file +} diff --git a/frontend/src/pages/LoginPage.tsx b/frontend/src/pages/LoginPage.tsx index 8adbea4..bb9f9ba 100644 --- a/frontend/src/pages/LoginPage.tsx +++ b/frontend/src/pages/LoginPage.tsx @@ -1,19 +1,29 @@ -import { useState, FormEvent } from 'react'; +import { useState, FormEvent, useEffect } from 'react'; +import { useNavigate } from 'react-router-dom'; import { useAuth } from '../auth/AuthContext'; +import { Button } from '../components/Button'; export default function LoginPage() { const [username, setUsername] = useState(''); const [password, setPassword] = useState(''); const [error, setError] = useState(''); const [isLoading, setIsLoading] = useState(false); - - const { login } = useAuth(); + + const { login, isAuthenticated, isCheckingAuth } = useAuth(); + const navigate = useNavigate(); + + // Redirect to home if already logged in + useEffect(() => { + if (!isCheckingAuth && isAuthenticated) { + navigate('/', { replace: true }); + } + }, [isAuthenticated, isCheckingAuth, navigate]); const handleSubmit = async (e: FormEvent) => { e.preventDefault(); setIsLoading(true); setError(''); - + try { await login(username, password); } catch (err) { @@ -59,13 +69,14 @@ export default function LoginPage() { {error} - +

diff --git a/frontend/src/pages/SearchPage.tsx b/frontend/src/pages/SearchPage.tsx index aed5d95..7334837 100644 --- a/frontend/src/pages/SearchPage.tsx +++ b/frontend/src/pages/SearchPage.tsx @@ -1,39 +1,8 @@ import { useState, FormEvent } from 'react'; import { useGetSearch } from '../generated/anthoLumeAPIV1'; import { GetSearchSource } from '../generated/model/getSearchSource'; - -// Search icon SVG -function SearchIcon() { - return ( - - - - - ); -} - -// Documents icon SVG -function DocumentsIcon() { - return ( - - - - - - - - ); -} - -// Download icon SVG -function DownloadIcon() { - return ( - - - - - ); -} +import { Search, Book, Download } from 'lucide-react'; +import { Button } from '../components/Button'; export default function SearchPage() { const [query, setQuery] = useState(''); @@ -60,7 +29,7 @@ export default function SearchPage() { - + - + - +

- +
@@ -131,7 +98,7 @@ export default function SettingsPage() { - +