<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>React Artifact</title>
  <style>*,:after,:before{--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:rgba(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:rgba(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: }/*! tailwindcss v3.4.18 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{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{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,pre,samp{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,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{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}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{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}}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.top-0{top:0}.z-10{z-index:10}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.-mt-1{margin-top:-.25rem}.mb-3{margin-bottom:.75rem}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-7{margin-top:1.75rem}.mt-8{margin-top:2rem}.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}.aspect-\[16\/9\]{aspect-ratio:16/9}.aspect-square{aspect-ratio:1/1}.h-14{height:3.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-5{height:1.25rem}.h-7{height:1.75rem}.h-9{height:2.25rem}.h-\[64px\]{height:64px}.h-\[84px\]{height:84px}.h-\[96px\]{height:96px}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-14{width:3.5rem}.w-2{width:.5rem}.w-24{width:6rem}.w-5{width:1.25rem}.w-7{width:1.75rem}.w-9{width:2.25rem}.w-\[120px\]{width:120px}.w-\[160px\]{width:160px}.w-\[90px\]{width:90px}.w-full{width:100%}.max-w-\[1280px\]{max-width:1280px}.flex-1{flex:1 1 0%}.scale-110{--tw-scale-x:1.1;--tw-scale-y:1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-\[3px\]{gap:3px}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.whitespace-pre-wrap{white-space:pre-wrap}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-\[10px\]{border-radius:10px}.rounded-\[14px\]{border-radius:14px}.rounded-\[18px\]{border-radius:18px}.rounded-\[20px\]{border-radius:20px}.rounded-\[4px\]{border-radius:4px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-\[3px\]{border-width:3px}.border-b{border-bottom-width:1px}.border-dashed{border-style:dashed}.border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity,1))}.border-emerald-200{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity,1))}.border-emerald-300{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity,1))}.border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity,1))}.border-sky-500{--tw-border-opacity:1;border-color:rgb(14 165 233/var(--tw-border-opacity,1))}.border-violet-200{--tw-border-opacity:1;border-color:rgb(221 214 254/var(--tw-border-opacity,1))}.border-zinc-200{--tw-border-opacity:1;border-color:rgb(228 228 231/var(--tw-border-opacity,1))}.border-zinc-300{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity,1))}.border-zinc-700{--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity,1))}.border-zinc-800{--tw-border-opacity:1;border-color:rgb(39 39 42/var(--tw-border-opacity,1))}.border-zinc-900{--tw-border-opacity:1;border-color:rgb(24 24 27/var(--tw-border-opacity,1))}.bg-\[\#FFB84C\]{--tw-bg-opacity:1;background-color:rgb(255 184 76/var(--tw-bg-opacity,1))}.bg-\[\#f6f8ff\]{--tw-bg-opacity:1;background-color:rgb(246 248 255/var(--tw-bg-opacity,1))}.bg-\[\#fbfaf8\]{--tw-bg-opacity:1;background-color:rgb(251 250 248/var(--tw-bg-opacity,1))}.bg-\[\#fcfcfb\]{--tw-bg-opacity:1;background-color:rgb(252 252 251/var(--tw-bg-opacity,1))}.bg-\[\#fcfdf8\]{--tw-bg-opacity:1;background-color:rgb(252 253 248/var(--tw-bg-opacity,1))}.bg-\[\#fffbf0\]{--tw-bg-opacity:1;background-color:rgb(255 251 240/var(--tw-bg-opacity,1))}.bg-amber-100{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity,1))}.bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.bg-amber-600{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity,1))}.bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity,1))}.bg-emerald-400{--tw-bg-opacity:1;background-color:rgb(52 211 153/var(--tw-bg-opacity,1))}.bg-emerald-50{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity,1))}.bg-emerald-500{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity,1))}.bg-emerald-600{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity,1))}.bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity,1))}.bg-sky-600{--tw-bg-opacity:1;background-color:rgb(2 132 199/var(--tw-bg-opacity,1))}.bg-violet-50{--tw-bg-opacity:1;background-color:rgb(245 243 255/var(--tw-bg-opacity,1))}.bg-violet-600{--tw-bg-opacity:1;background-color:rgb(124 58 237/var(--tw-bg-opacity,1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.bg-zinc-50{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.bg-zinc-700{--tw-bg-opacity:1;background-color:rgb(63 63 70/var(--tw-bg-opacity,1))}.bg-zinc-800{--tw-bg-opacity:1;background-color:rgb(39 39 42/var(--tw-bg-opacity,1))}.bg-zinc-900{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.bg-zinc-900\/60{background-color:rgba(24,24,27,.6)}.bg-zinc-950{--tw-bg-opacity:1;background-color:rgb(9 9 11/var(--tw-bg-opacity,1))}.object-cover{-o-object-fit:cover;object-fit:cover}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem}.pb-8,.py-8{padding-bottom:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[28px\]{font-size:28px}.text-\[48px\]{font-size:48px}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-\[0\.95\]{line-height:.95}.leading-none{line-height:1}.leading-tight{line-height:1.25}.tracking-\[0\.14em\]{letter-spacing:.14em}.tracking-\[0\.18em\]{letter-spacing:.18em}.tracking-tight{letter-spacing:-.025em}.tracking-widest{letter-spacing:.1em}.text-\[\#334155\]{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1))}.text-amber-200{--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.text-emerald-400{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity,1))}.text-emerald-800{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity,1))}.text-emerald-900\/80{color:rgba(6,78,59,.8)}.text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.text-red-900\/80{color:rgba(127,29,29,.8)}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-zinc-100{--tw-text-opacity:1;color:rgb(244 244 245/var(--tw-text-opacity,1))}.text-zinc-200{--tw-text-opacity:1;color:rgb(228 228 231/var(--tw-text-opacity,1))}.text-zinc-400{--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.text-zinc-600{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity,1))}.text-zinc-900{--tw-text-opacity:1;color:rgb(24 24 27/var(--tw-text-opacity,1))}.text-zinc-950{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.opacity-20{opacity:.2}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow-\[0_6px_18px_rgba\(0\2c 0\2c 0\2c 0\.04\)\]{--tw-shadow:0 6px 18px rgba(0,0,0,.04);--tw-shadow-colored:0 6px 18px 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-\[0_8px_24px_rgba\(0\2c 0\2c 0\2c 0\.04\)\]{--tw-shadow:0 8px 24px rgba(0,0,0,.04);--tw-shadow-colored:0 8px 24px 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-2{--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)}.ring-zinc-900{--tw-ring-opacity:1;--tw-ring-color:rgb(24 24 27/var(--tw-ring-opacity,1))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur:blur(8px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{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}#root,body,html{min-height:100%}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}[role=button]:not([aria-disabled=true]),button:not(:disabled),label[for],select:not(:disabled),summary{cursor:pointer}.selection\:bg-amber-200 ::-moz-selection{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity,1))}.selection\:bg-amber-200 ::selection{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity,1))}.selection\:bg-amber-200::-moz-selection{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity,1))}.selection\:bg-amber-200::selection{--tw-bg-opacity:1;background-color:rgb(253 230 138/var(--tw-bg-opacity,1))}.last\:border-0:last-child{border-width:0}.hover\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-zinc-300:hover{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity,1))}.hover\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.hover\:bg-zinc-50:hover{--tw-bg-opacity:1;background-color:rgb(250 250 250/var(--tw-bg-opacity,1))}.hover\:bg-zinc-900:hover{--tw-bg-opacity:1;background-color:rgb(24 24 27/var(--tw-bg-opacity,1))}.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-amber-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(252 211 77/var(--tw-ring-opacity,1))}@media (min-width:768px){.md\:block{display:block}.md\:flex{display:flex}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-\[1\.1fr_0\.9fr\]{grid-template-columns:1.1fr .9fr}.md\:p-8{padding:2rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:py-10{padding-top:2.5rem;padding-bottom:2.5rem}.md\:text-\[36px\]{font-size:36px}}@media (min-width:1024px){.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-\[0\.9fr_1\.1fr\]{grid-template-columns:.9fr 1.1fr}.lg\:grid-cols-\[1\.1fr_0\.9fr\]{grid-template-columns:1.1fr .9fr}}</style>
</head>
<body>
  <div id="root"></div>
  
  <script type="module">var ff=Object.create;var{getPrototypeOf:df,defineProperty:Bl,getOwnPropertyNames:pf}=Object;var vf=Object.prototype.hasOwnProperty;var Rn=(e,n,t)=>{t=e!=null?ff(df(e)):{};let r=n||!e||!e.__esModule?Bl(t,"default",{value:e,enumerable:!0}):t;for(let l of pf(e))if(!vf.call(r,l))Bl(r,l,{get:()=>e[l],enumerable:!0});return r};var Cr=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var mf=(e,n)=>{for(var t in n)Bl(e,t,{get:n[t],enumerable:!0,configurable:!0,set:(r)=>n[t]=()=>r})};var hf=(e,n)=>()=>(e&&(n=e(e=0)),n);var zt=Cr((Df)=>{var Nt=Symbol.for("react.element"),yf=Symbol.for("react.portal"),gf=Symbol.for("react.fragment"),kf=Symbol.for("react.strict_mode"),Sf=Symbol.for("react.profiler"),wf=Symbol.for("react.provider"),Ef=Symbol.for("react.context"),Cf=Symbol.for("react.forward_ref"),_f=Symbol.for("react.suspense"),Pf=Symbol.for("react.memo"),Nf=Symbol.for("react.lazy"),yi=Symbol.iterator;function zf(e){if(e===null||typeof e!=="object")return null;return e=yi&&e[yi]||e["@@iterator"],typeof e==="function"?e:null}var Si={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},wi=Object.assign,Ei={};function Bn(e,n,t){this.props=e,this.context=n,this.refs=Ei,this.updater=t||Si}Bn.prototype.isReactComponent={};Bn.prototype.setState=function(e,n){if(typeof e!=="object"&&typeof e!=="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,n,"setState")};Bn.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Ci(){}Ci.prototype=Bn.prototype;function Jl(e,n,t){this.props=e,this.context=n,this.refs=Ei,this.updater=t||Si}var Kl=Jl.prototype=new Ci;Kl.constructor=Jl;wi(Kl,Bn.prototype);Kl.isPureReactComponent=!0;var gi=Array.isArray,_i=Object.prototype.hasOwnProperty,ql={current:null},Pi={key:!0,ref:!0,__self:!0,__source:!0};function Ni(e,n,t){var r,l={},o=null,u=null;if(n!=null)for(r in n.ref!==void 0&&(u=n.ref),n.key!==void 0&&(o=""+n.key),n)_i.call(n,r)&&!Pi.hasOwnProperty(r)&&(l[r]=n[r]);var i=arguments.length-2;if(i===1)l.children=t;else if(1<i){for(var a=Array(i),c=0;c<i;c++)a[c]=arguments[c+2];l.children=a}if(e&&e.defaultProps)for(r in i=e.defaultProps,i)l[r]===void 0&&(l[r]=i[r]);return{$$typeof:Nt,type:e,key:o,ref:u,props:l,_owner:ql.current}}function Lf(e,n){return{$$typeof:Nt,type:e.type,key:n,ref:e.ref,props:e.props,_owner:e._owner}}function jl(e){return typeof e==="object"&&e!==null&&e.$$typeof===Nt}function Rf(e){var n={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(t){return n[t]})}var ki=/\/+/g;function Zl(e,n){return typeof e==="object"&&e!==null&&e.key!=null?Rf(""+e.key):n.toString(36)}function Pr(e,n,t,r,l){var o=typeof e;if(o==="undefined"||o==="boolean")e=null;var u=!1;if(e===null)u=!0;else switch(o){case"string":case"number":u=!0;break;case"object":switch(e.$$typeof){case Nt:case yf:u=!0}}if(u)return u=e,l=l(u),e=r===""?"."+Zl(u,0):r,gi(l)?(t="",e!=null&&(t=e.replace(ki,"$&/")+"/"),Pr(l,n,t,"",function(c){return c})):l!=null&&(jl(l)&&(l=Lf(l,t+(!l.key||u&&u.key===l.key?"":(""+l.key).replace(ki,"$&/")+"/")+e)),n.push(l)),1;if(u=0,r=r===""?".":r+":",gi(e))for(var i=0;i<e.length;i++){o=e[i];var a=r+Zl(o,i);u+=Pr(o,n,t,a,l)}else if(a=zf(e),typeof a==="function")for(e=a.call(e),i=0;!(o=e.next()).done;)o=o.value,a=r+Zl(o,i++),u+=Pr(o,n,t,a,l);else if(o==="object")throw n=String(e),Error("Objects are not valid as a React child (found: "+(n==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":n)+"). If you meant to render a collection of children, use an array instead.");return u}function _r(e,n,t){if(e==null)return e;var r=[],l=0;return Pr(e,r,"","",function(o){return n.call(t,o,l++)}),r}function If(e){if(e._status===-1){var n=e._result;n=n(),n.then(function(t){if(e._status===0||e._status===-1)e._status=1,e._result=t},function(t){if(e._status===0||e._status===-1)e._status=2,e._result=t}),e._status===-1&&(e._status=0,e._result=n)}if(e._status===1)return e._result.default;throw e._result}var fe={current:null},Nr={transition:null},Ff={ReactCurrentDispatcher:fe,ReactCurrentBatchConfig:Nr,ReactCurrentOwner:ql};function zi(){throw Error("act(...) is not supported in production builds of React.")}Df.Children={map:_r,forEach:function(e,n,t){_r(e,function(){n.apply(this,arguments)},t)},count:function(e){var n=0;return _r(e,function(){n++}),n},toArray:function(e){return _r(e,function(n){return n})||[]},only:function(e){if(!jl(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};Df.Component=Bn;Df.Fragment=gf;Df.Profiler=Sf;Df.PureComponent=Jl;Df.StrictMode=kf;Df.Suspense=_f;Df.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Ff;Df.act=zi;Df.cloneElement=function(e,n,t){if(e===null||e===void 0)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var r=wi({},e.props),l=e.key,o=e.ref,u=e._owner;if(n!=null){if(n.ref!==void 0&&(o=n.ref,u=ql.current),n.key!==void 0&&(l=""+n.key),e.type&&e.type.defaultProps)var i=e.type.defaultProps;for(a in n)_i.call(n,a)&&!Pi.hasOwnProperty(a)&&(r[a]=n[a]===void 0&&i!==void 0?i[a]:n[a])}var a=arguments.length-2;if(a===1)r.children=t;else if(1<a){i=Array(a);for(var c=0;c<a;c++)i[c]=arguments[c+2];r.children=i}return{$$typeof:Nt,type:e.type,key:l,ref:o,props:r,_owner:u}};Df.createContext=function(e){return e={$$typeof:Ef,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},e.Provider={$$typeof:wf,_context:e},e.Consumer=e};Df.createElement=Ni;Df.createFactory=function(e){var n=Ni.bind(null,e);return n.type=e,n};Df.createRef=function(){return{current:null}};Df.forwardRef=function(e){return{$$typeof:Cf,render:e}};Df.isValidElement=jl;Df.lazy=function(e){return{$$typeof:Nf,_payload:{_status:-1,_result:e},_init:If}};Df.memo=function(e,n){return{$$typeof:Pf,type:e,compare:n===void 0?null:n}};Df.startTransition=function(e){var n=Nr.transition;Nr.transition={};try{e()}finally{Nr.transition=n}};Df.unstable_act=zi;Df.useCallback=function(e,n){return fe.current.useCallback(e,n)};Df.useContext=function(e){return fe.current.useContext(e)};Df.useDebugValue=function(){};Df.useDeferredValue=function(e){return fe.current.useDeferredValue(e)};Df.useEffect=function(e,n){return fe.current.useEffect(e,n)};Df.useId=function(){return fe.current.useId()};Df.useImperativeHandle=function(e,n,t){return fe.current.useImperativeHandle(e,n,t)};Df.useInsertionEffect=function(e,n){return fe.current.useInsertionEffect(e,n)};Df.useLayoutEffect=function(e,n){return fe.current.useLayoutEffect(e,n)};Df.useMemo=function(e,n){return fe.current.useMemo(e,n)};Df.useReducer=function(e,n,t){return fe.current.useReducer(e,n,t)};Df.useRef=function(e){return fe.current.useRef(e)};Df.useState=function(e){return fe.current.useState(e)};Df.useSyncExternalStore=function(e,n,t){return fe.current.useSyncExternalStore(e,n,t)};Df.useTransition=function(){return fe.current.useTransition()};Df.version="18.3.1"});var Mi=Cr((hd)=>{function eo(e,n){var t=e.length;e.push(n);e:for(;0<t;){var r=t-1>>>1,l=e[r];if(0<zr(l,n))e[r]=n,e[t]=l,t=r;else break e}}function xe(e){return e.length===0?null:e[0]}function Fr(e){if(e.length===0)return null;var n=e[0],t=e.pop();if(t!==n){e[0]=t;e:for(var r=0,l=e.length,o=l>>>1;r<o;){var u=2*(r+1)-1,i=e[u],a=u+1,c=e[a];if(0>zr(i,t))a<l&&0>zr(c,i)?(e[r]=c,e[a]=t,r=a):(e[r]=i,e[u]=t,r=u);else if(a<l&&0>zr(c,t))e[r]=c,e[a]=t,r=a;else break e}}return n}function zr(e,n){var t=e.sortIndex-n.sortIndex;return t!==0?t:e.id-n.id}if(typeof performance==="object"&&typeof performance.now==="function")no=performance,hd.unstable_now=function(){return no.now()};else Lr=Date,to=Lr.now(),hd.unstable_now=function(){return Lr.now()-to};var no,Lr,to,Ye=[],an=[],md=1,Ne=null,ue=3,Dr=!1,In=!1,Rt=!1,Ri=typeof setTimeout==="function"?setTimeout:null,Ii=typeof clearTimeout==="function"?clearTimeout:null,Li=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function ro(e){for(var n=xe(an);n!==null;){if(n.callback===null)Fr(an);else if(n.startTime<=e)Fr(an),n.sortIndex=n.expirationTime,eo(Ye,n);else break;n=xe(an)}}function oo(e){if(Rt=!1,ro(e),!In)if(xe(Ye)!==null)In=!0,io(uo);else{var n=xe(an);n!==null&&ao(oo,n.startTime-e)}}function uo(e,n){In=!1,Rt&&(Rt=!1,Ii(It),It=-1),Dr=!0;var t=ue;try{ro(n);for(Ne=xe(Ye);Ne!==null&&(!(Ne.expirationTime>n)||e&&!Ti());){var r=Ne.callback;if(typeof r==="function"){Ne.callback=null,ue=Ne.priorityLevel;var l=r(Ne.expirationTime<=n);n=hd.unstable_now(),typeof l==="function"?Ne.callback=l:Ne===xe(Ye)&&Fr(Ye),ro(n)}else Fr(Ye);Ne=xe(Ye)}if(Ne!==null)var o=!0;else{var u=xe(an);u!==null&&ao(oo,u.startTime-n),o=!1}return o}finally{Ne=null,ue=t,Dr=!1}}var Tr=!1,Rr=null,It=-1,Fi=5,Di=-1;function Ti(){return hd.unstable_now()-Di<Fi?!1:!0}function bl(){if(Rr!==null){var e=hd.unstable_now();Di=e;var n=!0;try{n=Rr(!0,e)}finally{n?Lt():(Tr=!1,Rr=null)}}else Tr=!1}var Lt;if(typeof Li==="function")Lt=function(){Li(bl)};else if(typeof MessageChannel<"u")Ir=new MessageChannel,lo=Ir.port2,Ir.port1.onmessage=bl,Lt=function(){lo.postMessage(null)};else Lt=function(){Ri(bl,0)};var Ir,lo;function io(e){Rr=e,Tr||(Tr=!0,Lt())}function ao(e,n){It=Ri(function(){e(hd.unstable_now())},n)}hd.unstable_IdlePriority=5;hd.unstable_ImmediatePriority=1;hd.unstable_LowPriority=4;hd.unstable_NormalPriority=3;hd.unstable_Profiling=null;hd.unstable_UserBlockingPriority=2;hd.unstable_cancelCallback=function(e){e.callback=null};hd.unstable_continueExecution=function(){In||Dr||(In=!0,io(uo))};hd.unstable_forceFrameRate=function(e){0>e||125<e?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):Fi=0<e?Math.floor(1000/e):5};hd.unstable_getCurrentPriorityLevel=function(){return ue};hd.unstable_getFirstCallbackNode=function(){return xe(Ye)};hd.unstable_next=function(e){switch(ue){case 1:case 2:case 3:var n=3;break;default:n=ue}var t=ue;ue=n;try{return e()}finally{ue=t}};hd.unstable_pauseExecution=function(){};hd.unstable_requestPaint=function(){};hd.unstable_runWithPriority=function(e,n){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var t=ue;ue=e;try{return n()}finally{ue=t}};hd.unstable_scheduleCallback=function(e,n,t){var r=hd.unstable_now();switch(typeof t==="object"&&t!==null?(t=t.delay,t=typeof t==="number"&&0<t?r+t:r):t=r,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=1073741823;break;case 4:l=1e4;break;default:l=5000}return l=t+l,e={id:md++,callback:n,priorityLevel:e,startTime:t,expirationTime:l,sortIndex:-1},t>r?(e.sortIndex=t,eo(an,e),xe(Ye)===null&&e===xe(an)&&(Rt?(Ii(It),It=-1):Rt=!0,ao(oo,t-r))):(e.sortIndex=l,eo(Ye,e),In||Dr||(In=!0,io(uo))),e};hd.unstable_shouldYield=Ti;hd.unstable_wrapCallback=function(e){var n=ue;return function(){var t=ue;ue=n;try{return e.apply(this,arguments)}finally{ue=t}}}});var mi={};mf(mi,{version:()=>Zc,unstable_renderSubtreeIntoContainer:()=>Bc,unstable_batchedUpdates:()=>Gc,unmountComponentAtNode:()=>Xc,render:()=>Yc,hydrateRoot:()=>Ac,hydrate:()=>Oc,flushSync:()=>Hc,findDOMNode:()=>Wc,createRoot:()=>Qc,createPortal:()=>$c,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:()=>Vc});function k(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,t=1;t<arguments.length;t++)n+="&args[]="+encodeURIComponent(arguments[t]);return"Minified React error #"+e+"; visit "+n+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function Yn(e,n){mt(e,n),mt(e+"Capture",n)}function mt(e,n){nr[e]=n;for(e=0;e<n.length;e++)Wa.add(n[e])}function xd(e){if(Fo.call(xi,e))return!0;if(Fo.call(Ui,e))return!1;if(Ud.test(e))return xi[e]=!0;return Ui[e]=!0,!1}function Vd(e,n,t,r){if(t!==null&&t.type===0)return!1;switch(typeof n){case"function":case"symbol":return!0;case"boolean":if(r)return!1;if(t!==null)return!t.acceptsBooleans;return e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-";default:return!1}}function $d(e,n,t,r){if(n===null||typeof n>"u"||Vd(e,n,t,r))return!0;if(r)return!1;if(t!==null)switch(t.type){case 3:return!n;case 4:return n===!1;case 5:return isNaN(n);case 6:return isNaN(n)||1>n}return!1}function ve(e,n,t,r,l,o,u){this.acceptsBooleans=n===2||n===3||n===4,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=t,this.propertyName=e,this.type=n,this.sanitizeURL=o,this.removeEmptyString=u}function Nu(e){return e[1].toUpperCase()}function zu(e,n,t,r){var l=oe.hasOwnProperty(n)?oe[n]:null;if(l!==null?l.type!==0:r||!(2<n.length)||n[0]!=="o"&&n[0]!=="O"||n[1]!=="n"&&n[1]!=="N")$d(n,t,l,r)&&(t=null),r||l===null?xd(n)&&(t===null?e.removeAttribute(n):e.setAttribute(n,""+t)):l.mustUseProperty?e[l.propertyName]=t===null?l.type===3?!1:"":t:(n=l.attributeName,r=l.attributeNamespace,t===null?e.removeAttribute(n):(l=l.type,t=l===3||l===4&&t===!0?"":""+t,r?e.setAttributeNS(r,n,t):e.setAttribute(n,t)))}function Ft(e){if(e===null||typeof e!=="object")return null;return e=Vi&&e[Vi]||e["@@iterator"],typeof e==="function"?e:null}function $t(e){if(so===void 0)try{throw Error()}catch(t){var n=t.stack.trim().match(/\n( *(at )?)/);so=n&&n[1]||""}return`
`+so+e}function fo(e,n){if(!e||co)return"";co=!0;var t=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(n)if(n=function(){throw Error()},Object.defineProperty(n.prototype,"props",{set:function(){throw Error()}}),typeof Reflect==="object"&&Reflect.construct){try{Reflect.construct(n,[])}catch(c){var r=c}Reflect.construct(e,[],n)}else{try{n.call()}catch(c){r=c}e.call(n.prototype)}else{try{throw Error()}catch(c){r=c}e()}}catch(c){if(c&&r&&typeof c.stack==="string"){for(var l=c.stack.split(`
`),o=r.stack.split(`
`),u=l.length-1,i=o.length-1;1<=u&&0<=i&&l[u]!==o[i];)i--;for(;1<=u&&0<=i;u--,i--)if(l[u]!==o[i]){if(u!==1||i!==1)do if(u--,i--,0>i||l[u]!==o[i]){var a=`
`+l[u].replace(" at new "," at ");return e.displayName&&a.includes("<anonymous>")&&(a=a.replace("<anonymous>",e.displayName)),a}while(1<=u&&0<=i);break}}}finally{co=!1,Error.prepareStackTrace=t}return(e=e?e.displayName||e.name:"")?$t(e):""}function Qd(e){switch(e.tag){case 5:return $t(e.type);case 16:return $t("Lazy");case 13:return $t("Suspense");case 19:return $t("SuspenseList");case 0:case 2:case 15:return e=fo(e.type,!1),e;case 11:return e=fo(e.type.render,!1),e;case 1:return e=fo(e.type,!0),e;default:return""}}function Uo(e){if(e==null)return null;if(typeof e==="function")return e.displayName||e.name||null;if(typeof e==="string")return e;switch(e){case jn:return"Fragment";case qn:return"Portal";case Do:return"Profiler";case Lu:return"StrictMode";case To:return"Suspense";case Mo:return"SuspenseList"}if(typeof e==="object")switch(e.$$typeof){case Oa:return(e.displayName||"Context")+".Consumer";case Ha:return(e._context.displayName||"Context")+".Provider";case Ru:var n=e.render;return e=e.displayName,e||(e=n.displayName||n.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Iu:return n=e.displayName||null,n!==null?n:Uo(e.type)||"Memo";case cn:n=e._payload,e=e._init;try{return Uo(e(n))}catch(t){}}return null}function Wd(e){var n=e.type;switch(e.tag){case 24:return"Cache";case 9:return(n.displayName||"Context")+".Consumer";case 10:return(n._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=n.render,e=e.displayName||e.name||"",n.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return n;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return Uo(n);case 8:return n===Lu?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof n==="function")return n.displayName||n.name||null;if(typeof n==="string")return n}return null}function _n(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Ya(e){var n=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(n==="checkbox"||n==="radio")}function Hd(e){var n=Ya(e)?"checked":"value",t=Object.getOwnPropertyDescriptor(e.constructor.prototype,n),r=""+e[n];if(!e.hasOwnProperty(n)&&typeof t<"u"&&typeof t.get==="function"&&typeof t.set==="function"){var{get:l,set:o}=t;return Object.defineProperty(e,n,{configurable:!0,get:function(){return l.call(this)},set:function(u){r=""+u,o.call(this,u)}}),Object.defineProperty(e,n,{enumerable:t.enumerable}),{getValue:function(){return r},setValue:function(u){r=""+u},stopTracking:function(){e._valueTracker=null,delete e[n]}}}}function Ur(e){e._valueTracker||(e._valueTracker=Hd(e))}function Xa(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var t=n.getValue(),r="";return e&&(r=Ya(e)?e.checked?"true":"false":e.value),e=r,e!==t?(n.setValue(e),!0):!1}function ul(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch(n){return e.body}}function xo(e,n){var t=n.checked;return X({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:t!=null?t:e._wrapperState.initialChecked})}function $i(e,n){var t=n.defaultValue==null?"":n.defaultValue,r=n.checked!=null?n.checked:n.defaultChecked;t=_n(n.value!=null?n.value:t),e._wrapperState={initialChecked:r,initialValue:t,controlled:n.type==="checkbox"||n.type==="radio"?n.checked!=null:n.value!=null}}function Ga(e,n){n=n.checked,n!=null&&zu(e,"checked",n,!1)}function Vo(e,n){Ga(e,n);var t=_n(n.value),r=n.type;if(t!=null)if(r==="number"){if(t===0&&e.value===""||e.value!=t)e.value=""+t}else e.value!==""+t&&(e.value=""+t);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}n.hasOwnProperty("value")?$o(e,n.type,t):n.hasOwnProperty("defaultValue")&&$o(e,n.type,_n(n.defaultValue)),n.checked==null&&n.defaultChecked!=null&&(e.defaultChecked=!!n.defaultChecked)}function Qi(e,n,t){if(n.hasOwnProperty("value")||n.hasOwnProperty("defaultValue")){var r=n.type;if(!(r!=="submit"&&r!=="reset"||n.value!==void 0&&n.value!==null))return;n=""+e._wrapperState.initialValue,t||n===e.value||(e.value=n),e.defaultValue=n}t=e.name,t!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,t!==""&&(e.name=t)}function $o(e,n,t){if(n!=="number"||ul(e.ownerDocument)!==e)t==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+t&&(e.defaultValue=""+t)}function st(e,n,t,r){if(e=e.options,n){n={};for(var l=0;l<t.length;l++)n["$"+t[l]]=!0;for(t=0;t<e.length;t++)l=n.hasOwnProperty("$"+e[t].value),e[t].selected!==l&&(e[t].selected=l),l&&r&&(e[t].defaultSelected=!0)}else{t=""+_n(t),n=null;for(l=0;l<e.length;l++){if(e[l].value===t){e[l].selected=!0,r&&(e[l].defaultSelected=!0);return}n!==null||e[l].disabled||(n=e[l])}n!==null&&(n.selected=!0)}}function Qo(e,n){if(n.dangerouslySetInnerHTML!=null)throw Error(k(91));return X({},n,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue})}function Wi(e,n){var t=n.value;if(t==null){if(t=n.children,n=n.defaultValue,t!=null){if(n!=null)throw Error(k(92));if(Qt(t)){if(1<t.length)throw Error(k(93));t=t[0]}n=t}n==null&&(n=""),t=n}e._wrapperState={initialValue:_n(t)}}function Ba(e,n){var t=_n(n.value),r=_n(n.defaultValue);t!=null&&(t=""+t,t!==e.value&&(e.value=t),n.defaultValue==null&&e.defaultValue!==t&&(e.defaultValue=t)),r!=null&&(e.defaultValue=""+r)}function Hi(e){var n=e.textContent;n===e._wrapperState.initialValue&&n!==""&&n!==null&&(e.value=n)}function Za(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function Wo(e,n){return e==null||e==="http://www.w3.org/1999/xhtml"?Za(n):e==="http://www.w3.org/2000/svg"&&n==="foreignObject"?"http://www.w3.org/1999/xhtml":e}function tr(e,n){if(n){var t=e.firstChild;if(t&&t===e.lastChild&&t.nodeType===3){t.nodeValue=n;return}}e.textContent=n}function Ka(e,n,t){return n==null||typeof n==="boolean"||n===""?"":t||typeof n!=="number"||n===0||Gt.hasOwnProperty(e)&&Gt[e]?(""+n).trim():n+"px"}function qa(e,n){e=e.style;for(var t in n)if(n.hasOwnProperty(t)){var r=t.indexOf("--")===0,l=Ka(t,n[t],r);t==="float"&&(t="cssFloat"),r?e.setProperty(t,l):e[t]=l}}function Ho(e,n){if(n){if(Ad[e]&&(n.children!=null||n.dangerouslySetInnerHTML!=null))throw Error(k(137,e));if(n.dangerouslySetInnerHTML!=null){if(n.children!=null)throw Error(k(60));if(typeof n.dangerouslySetInnerHTML!=="object"||!("__html"in n.dangerouslySetInnerHTML))throw Error(k(61))}if(n.style!=null&&typeof n.style!=="object")throw Error(k(62))}}function Oo(e,n){if(e.indexOf("-")===-1)return typeof n.is==="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function Fu(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}function Oi(e){if(e=Sr(e)){if(typeof Yo!=="function")throw Error(k(280));var n=e.stateNode;n&&(n=Ml(n),Yo(e.stateNode,e.type,n))}}function ja(e){ct?ft?ft.push(e):ft=[e]:ct=e}function ba(){if(ct){var e=ct,n=ft;if(ft=ct=null,Oi(e),n)for(e=0;e<n.length;e++)Oi(n[e])}}function es(e,n){return e(n)}function ns(){}function ts(e,n,t){if(po)return e(n,t);po=!0;try{return es(e,n,t)}finally{if(po=!1,ct!==null||ft!==null)ns(),ba()}}function rr(e,n){var t=e.stateNode;if(t===null)return null;var r=Ml(t);if(r===null)return null;t=r[n];e:switch(n){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(r=!r.disabled)||(e=e.type,r=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!r;break e;default:e=!1}if(e)return null;if(t&&typeof t!=="function")throw Error(k(231,n,typeof t));return t}function Yd(e,n,t,r,l,o,u,i,a){var c=Array.prototype.slice.call(arguments,3);try{n.apply(t,c)}catch(h){this.onError(h)}}function Gd(e,n,t,r,l,o,u,i,a){Bt=!1,il=null,Yd.apply(Xd,arguments)}function Bd(e,n,t,r,l,o,u,i,a){if(Gd.apply(this,arguments),Bt){if(Bt){var c=il;Bt=!1,il=null}else throw Error(k(198));al||(al=!0,Go=c)}}function Xn(e){var n=e,t=e;if(e.alternate)for(;n.return;)n=n.return;else{e=n;do n=e,(n.flags&4098)!==0&&(t=n.return),e=n.return;while(e)}return n.tag===3?t:null}function rs(e){if(e.tag===13){var n=e.memoizedState;if(n===null&&(e=e.alternate,e!==null&&(n=e.memoizedState)),n!==null)return n.dehydrated}return null}function Ai(e){if(Xn(e)!==e)throw Error(k(188))}function Zd(e){var n=e.alternate;if(!n){if(n=Xn(e),n===null)throw Error(k(188));return n!==e?null:e}for(var t=e,r=n;;){var l=t.return;if(l===null)break;var o=l.alternate;if(o===null){if(r=l.return,r!==null){t=r;continue}break}if(l.child===o.child){for(o=l.child;o;){if(o===t)return Ai(l),e;if(o===r)return Ai(l),n;o=o.sibling}throw Error(k(188))}if(t.return!==r.return)t=l,r=o;else{for(var u=!1,i=l.child;i;){if(i===t){u=!0,t=l,r=o;break}if(i===r){u=!0,r=l,t=o;break}i=i.sibling}if(!u){for(i=o.child;i;){if(i===t){u=!0,t=o,r=l;break}if(i===r){u=!0,r=o,t=l;break}i=i.sibling}if(!u)throw Error(k(189))}}if(t.alternate!==r)throw Error(k(190))}if(t.tag!==3)throw Error(k(188));return t.stateNode.current===t?e:n}function ls(e){return e=Zd(e),e!==null?os(e):null}function os(e){if(e.tag===5||e.tag===6)return e;for(e=e.child;e!==null;){var n=os(e);if(n!==null)return n;e=e.sibling}return null}function bd(e){if(Ze&&typeof Ze.onCommitFiberRoot==="function")try{Ze.onCommitFiberRoot(Il,e,void 0,(e.current.flags&128)===128)}catch(n){}}function tp(e){return e>>>=0,e===0?32:31-(ep(e)/np|0)|0}function Wt(e){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:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function cl(e,n){var t=e.pendingLanes;if(t===0)return 0;var r=0,l=e.suspendedLanes,o=e.pingedLanes,u=t&268435455;if(u!==0){var i=u&~l;i!==0?r=Wt(i):(o&=u,o!==0&&(r=Wt(o)))}else u=t&~l,u!==0?r=Wt(u):o!==0&&(r=Wt(o));if(r===0)return 0;if(n!==0&&n!==r&&(n&l)===0&&(l=r&-r,o=n&-n,l>=o||l===16&&(o&4194240)!==0))return n;if((r&4)!==0&&(r|=t&16),n=e.entangledLanes,n!==0)for(e=e.entanglements,n&=r;0<n;)t=31-He(n),l=1<<t,r|=e[t],n&=~l;return r}function rp(e,n){switch(e){case 1:case 2:case 4:return n+250;case 8:case 16:case 32:case 64: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 n+5000;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function lp(e,n){for(var{suspendedLanes:t,pingedLanes:r,expirationTimes:l,pendingLanes:o}=e;0<o;){var u=31-He(o),i=1<<u,a=l[u];if(a===-1){if((i&t)===0||(i&r)!==0)l[u]=rp(i,n)}else a<=n&&(e.expiredLanes|=i);o&=~i}}function Bo(e){return e=e.pendingLanes&-1073741825,e!==0?e:e&1073741824?1073741824:0}function ss(){var e=Vr;return Vr<<=1,(Vr&4194240)===0&&(Vr=64),e}function vo(e){for(var n=[],t=0;31>t;t++)n.push(e);return n}function gr(e,n,t){e.pendingLanes|=n,n!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,n=31-He(n),e[n]=t}function op(e,n){var t=e.pendingLanes&~n;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=n,e.mutableReadLanes&=n,e.entangledLanes&=n,n=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0<t;){var l=31-He(t),o=1<<l;n[l]=0,r[l]=-1,e[l]=-1,t&=~o}}function Tu(e,n){var t=e.entangledLanes|=n;for(e=e.entanglements;t;){var r=31-He(t),l=1<<r;l&n|e[r]&n&&(e[r]|=n),t&=~l}}function cs(e){return e&=-e,1<e?4<e?(e&268435455)!==0?16:536870912:4:1}function Xi(e,n){switch(e){case"focusin":case"focusout":hn=null;break;case"dragenter":case"dragleave":yn=null;break;case"mouseover":case"mouseout":gn=null;break;case"pointerover":case"pointerout":lr.delete(n.pointerId);break;case"gotpointercapture":case"lostpointercapture":or.delete(n.pointerId)}}function Dt(e,n,t,r,l,o){if(e===null||e.nativeEvent!==o)return e={blockedOn:n,domEventName:t,eventSystemFlags:r,nativeEvent:o,targetContainers:[l]},n!==null&&(n=Sr(n),n!==null&&Mu(n)),e;return e.eventSystemFlags|=r,n=e.targetContainers,l!==null&&n.indexOf(l)===-1&&n.push(l),e}function ip(e,n,t,r,l){switch(n){case"focusin":return hn=Dt(hn,e,n,t,r,l),!0;case"dragenter":return yn=Dt(yn,e,n,t,r,l),!0;case"mouseover":return gn=Dt(gn,e,n,t,r,l),!0;case"pointerover":var o=l.pointerId;return lr.set(o,Dt(lr.get(o)||null,e,n,t,r,l)),!0;case"gotpointercapture":return o=l.pointerId,or.set(o,Dt(or.get(o)||null,e,n,t,r,l)),!0}return!1}function ms(e){var n=Mn(e.target);if(n!==null){var t=Xn(n);if(t!==null){if(n=t.tag,n===13){if(n=rs(t),n!==null){e.blockedOn=n,vs(e.priority,function(){ds(t)});return}}else if(n===3&&t.stateNode.current.memoizedState.isDehydrated){e.blockedOn=t.tag===3?t.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Jr(e){if(e.blockedOn!==null)return!1;for(var n=e.targetContainers;0<n.length;){var t=Jo(e.domEventName,e.eventSystemFlags,n[0],e.nativeEvent);if(t===null){t=e.nativeEvent;var r=new t.constructor(t.type,t);Ao=r,t.target.dispatchEvent(r),Ao=null}else return n=Sr(t),n!==null&&Mu(n),e.blockedOn=t,!1;n.shift()}return!0}function Gi(e,n,t){Jr(e)&&t.delete(n)}function ap(){Zo=!1,hn!==null&&Jr(hn)&&(hn=null),yn!==null&&Jr(yn)&&(yn=null),gn!==null&&Jr(gn)&&(gn=null),lr.forEach(Gi),or.forEach(Gi)}function Tt(e,n){e.blockedOn===n&&(e.blockedOn=null,Zo||(Zo=!0,W.unstable_scheduleCallback(W.unstable_NormalPriority,ap)))}function ur(e){function n(l){return Tt(l,e)}if(0<Qr.length){Tt(Qr[0],e);for(var t=1;t<Qr.length;t++){var r=Qr[t];r.blockedOn===e&&(r.blockedOn=null)}}hn!==null&&Tt(hn,e),yn!==null&&Tt(yn,e),gn!==null&&Tt(gn,e),lr.forEach(n),or.forEach(n);for(t=0;t<dn.length;t++)r=dn[t],r.blockedOn===e&&(r.blockedOn=null);for(;0<dn.length&&(t=dn[0],t.blockedOn===null);)ms(t),t.blockedOn===null&&dn.shift()}function sp(e,n,t,r){var l=T,o=dt.transition;dt.transition=null;try{T=1,Uu(e,n,t,r)}finally{T=l,dt.transition=o}}function cp(e,n,t,r){var l=T,o=dt.transition;dt.transition=null;try{T=4,Uu(e,n,t,r)}finally{T=l,dt.transition=o}}function Uu(e,n,t,r){if(fl){var l=Jo(e,n,t,r);if(l===null)So(e,n,r,dl,t),Xi(e,r);else if(ip(l,e,n,t,r))r.stopPropagation();else if(Xi(e,r),n&4&&-1<up.indexOf(e)){for(;l!==null;){var o=Sr(l);if(o!==null&&fs(o),o=Jo(e,n,t,r),o===null&&So(e,n,r,dl,t),o===l)break;l=o}l!==null&&r.stopPropagation()}else So(e,n,r,null,t)}}function Jo(e,n,t,r){if(dl=null,e=Fu(r),e=Mn(e),e!==null)if(n=Xn(e),n===null)e=null;else if(t=n.tag,t===13){if(e=rs(n),e!==null)return e;e=null}else if(t===3){if(n.stateNode.current.memoizedState.isDehydrated)return n.tag===3?n.stateNode.containerInfo:null;e=null}else n!==e&&(e=null);return dl=e,null}function hs(e){switch(e){case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 1;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"toggle":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 4;case"message":switch(qd()){case Du:return 1;case is:return 4;case sl:case jd:return 16;case as:return 536870912;default:return 16}default:return 16}}function ys(){if(Kr)return Kr;var e,n=xu,t=n.length,r,l="value"in vn?vn.value:vn.textContent,o=l.length;for(e=0;e<t&&n[e]===l[e];e++);var u=t-e;for(r=1;r<=u&&n[t-r]===l[o-r];r++);return Kr=l.slice(e,1<r?1-r:void 0)}function qr(e){var n=e.keyCode;return"charCode"in e?(e=e.charCode,e===0&&n===13&&(e=13)):e=n,e===10&&(e=13),32<=e||e===13?e:0}function Wr(){return!0}function Bi(){return!1}function Pe(e){function n(t,r,l,o,u){this._reactName=t,this._targetInst=l,this.type=r,this.nativeEvent=o,this.target=u,this.currentTarget=null;for(var i in e)e.hasOwnProperty(i)&&(t=e[i],this[i]=t?t(o):o[i]);return this.isDefaultPrevented=(o.defaultPrevented!=null?o.defaultPrevented:o.returnValue===!1)?Wr:Bi,this.isPropagationStopped=Bi,this}return X(n.prototype,{preventDefault:function(){this.defaultPrevented=!0;var t=this.nativeEvent;t&&(t.preventDefault?t.preventDefault():typeof t.returnValue!=="unknown"&&(t.returnValue=!1),this.isDefaultPrevented=Wr)},stopPropagation:function(){var t=this.nativeEvent;t&&(t.stopPropagation?t.stopPropagation():typeof t.cancelBubble!=="unknown"&&(t.cancelBubble=!0),this.isPropagationStopped=Wr)},persist:function(){},isPersistent:Wr}),n}function Cp(e){var n=this.nativeEvent;return n.getModifierState?n.getModifierState(e):(e=Ep[e])?!!n[e]:!1}function $u(){return Cp}function ks(e,n){switch(e){case"keyup":return Tp.indexOf(n.keyCode)!==-1;case"keydown":return n.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Ss(e){return e=e.detail,typeof e==="object"&&"data"in e?e.data:null}function Up(e,n){switch(e){case"compositionend":return Ss(n);case"keypress":if(n.which!==32)return null;return ji=!0,qi;case"textInput":return e=n.data,e===qi&&ji?null:e;default:return null}}function xp(e,n){if(bn)return e==="compositionend"||!Qu&&ks(e,n)?(e=ys(),Kr=xu=vn=null,bn=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(n.ctrlKey||n.altKey||n.metaKey)||n.ctrlKey&&n.altKey){if(n.char&&1<n.char.length)return n.char;if(n.which)return String.fromCharCode(n.which)}return null;case"compositionend":return gs&&n.locale!=="ko"?null:n.data;default:return null}}function bi(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n==="input"?!!Vp[e.type]:n==="textarea"?!0:!1}function ws(e,n,t,r){ja(r),n=pl(n,"onChange"),0<n.length&&(t=new Vu("onChange","change",null,t,r),e.push({event:t,listeners:n}))}function $p(e){Ds(e,0)}function Dl(e){var n=tt(e);if(Xa(n))return e}function Qp(e,n){if(e==="change")return n}function ea(){Jt&&(Jt.detachEvent("onpropertychange",Cs),ir=Jt=null)}function Cs(e){if(e.propertyName==="value"&&Dl(ir)){var n=[];ws(n,ir,e,Fu(e)),ts($p,n)}}function Wp(e,n,t){e==="focusin"?(ea(),Jt=n,ir=t,Jt.attachEvent("onpropertychange",Cs)):e==="focusout"&&ea()}function Hp(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return Dl(ir)}function Op(e,n){if(e==="click")return Dl(n)}function Ap(e,n){if(e==="input"||e==="change")return Dl(n)}function Yp(e,n){return e===n&&(e!==0||1/e===1/n)||e!==e&&n!==n}function ar(e,n){if(Ae(e,n))return!0;if(typeof e!=="object"||e===null||typeof n!=="object"||n===null)return!1;var t=Object.keys(e),r=Object.keys(n);if(t.length!==r.length)return!1;for(r=0;r<t.length;r++){var l=t[r];if(!Fo.call(n,l)||!Ae(e[l],n[l]))return!1}return!0}function na(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function ta(e,n){var t=na(e);e=0;for(var r;t;){if(t.nodeType===3){if(r=e+t.textContent.length,e<=n&&r>=n)return{node:t,offset:n-e};e=r}e:{for(;t;){if(t.nextSibling){t=t.nextSibling;break e}t=t.parentNode}t=void 0}t=na(t)}}function _s(e,n){return e&&n?e===n?!0:e&&e.nodeType===3?!1:n&&n.nodeType===3?_s(e,n.parentNode):("contains"in e)?e.contains(n):e.compareDocumentPosition?!!(e.compareDocumentPosition(n)&16):!1:!1}function Ps(){for(var e=window,n=ul();n instanceof e.HTMLIFrameElement;){try{var t=typeof n.contentWindow.location.href==="string"}catch(r){t=!1}if(t)e=n.contentWindow;else break;n=ul(e.document)}return n}function Wu(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&(n==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||n==="textarea"||e.contentEditable==="true")}function Xp(e){var n=Ps(),t=e.focusedElem,r=e.selectionRange;if(n!==t&&t&&t.ownerDocument&&_s(t.ownerDocument.documentElement,t)){if(r!==null&&Wu(t)){if(n=r.start,e=r.end,e===void 0&&(e=n),"selectionStart"in t)t.selectionStart=n,t.selectionEnd=Math.min(e,t.value.length);else if(e=(n=t.ownerDocument||document)&&n.defaultView||window,e.getSelection){e=e.getSelection();var l=t.textContent.length,o=Math.min(r.start,l);r=r.end===void 0?o:Math.min(r.end,l),!e.extend&&o>r&&(l=r,r=o,o=l),l=ta(t,o);var u=ta(t,r);l&&u&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==u.node||e.focusOffset!==u.offset)&&(n=n.createRange(),n.setStart(l.node,l.offset),e.removeAllRanges(),o>r?(e.addRange(n),e.extend(u.node,u.offset)):(n.setEnd(u.node,u.offset),e.addRange(n)))}}n=[];for(e=t;e=e.parentNode;)e.nodeType===1&&n.push({element:e,left:e.scrollLeft,top:e.scrollTop});typeof t.focus==="function"&&t.focus();for(t=0;t<n.length;t++)e=n[t],e.element.scrollLeft=e.left,e.element.scrollTop=e.top}}function ra(e,n,t){var r=t.window===t?t.document:t.nodeType===9?t:t.ownerDocument;qo||et==null||et!==ul(r)||(r=et,("selectionStart"in r)&&Wu(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Kt&&ar(Kt,r)||(Kt=r,r=pl(Ko,"onSelect"),0<r.length&&(n=new Vu("onSelect","select",null,n,t),e.push({event:n,listeners:r}),n.target=et)))}function Hr(e,n){var t={};return t[e.toLowerCase()]=n.toLowerCase(),t["Webkit"+e]="webkit"+n,t["Moz"+e]="moz"+n,t}function Tl(e){if(go[e])return go[e];if(!nt[e])return e;var n=nt[e],t;for(t in n)if(n.hasOwnProperty(t)&&t in Ns)return go[e]=n[t];return e}function Nn(e,n){Fs.set(e,n),Yn(n,[e])}function oa(e,n,t){var r=e.type||"unknown-event";e.currentTarget=t,Bd(r,n,void 0,e),e.currentTarget=null}function Ds(e,n){n=(n&4)!==0;for(var t=0;t<e.length;t++){var r=e[t],l=r.event;r=r.listeners;e:{var o=void 0;if(n)for(var u=r.length-1;0<=u;u--){var i=r[u],a=i.instance,c=i.currentTarget;if(i=i.listener,a!==o&&l.isPropagationStopped())break e;oa(l,i,c),o=a}else for(u=0;u<r.length;u++){if(i=r[u],a=i.instance,c=i.currentTarget,i=i.listener,a!==o&&l.isPropagationStopped())break e;oa(l,i,c),o=a}}}if(al)throw e=Go,al=!1,Go=null,e}function V(e,n){var t=n[lu];t===void 0&&(t=n[lu]=new Set);var r=e+"__bubble";t.has(r)||(Ts(n,e,2,!1),t.add(r))}function ko(e,n,t){var r=0;n&&(r|=4),Ts(t,e,r,n)}function sr(e){if(!e[Or]){e[Or]=!0,Wa.forEach(function(t){t!=="selectionchange"&&(Bp.has(t)||ko(t,!1,e),ko(t,!0,e))});var n=e.nodeType===9?e:e.ownerDocument;n===null||n[Or]||(n[Or]=!0,ko("selectionchange",!1,n))}}function Ts(e,n,t,r){switch(hs(n)){case 1:var l=sp;break;case 4:l=cp;break;default:l=Uu}t=l.bind(null,n,t,e),l=void 0,!Xo||n!=="touchstart"&&n!=="touchmove"&&n!=="wheel"||(l=!0),r?l!==void 0?e.addEventListener(n,t,{capture:!0,passive:l}):e.addEventListener(n,t,!0):l!==void 0?e.addEventListener(n,t,{passive:l}):e.addEventListener(n,t,!1)}function So(e,n,t,r,l){var o=r;if((n&1)===0&&(n&2)===0&&r!==null)e:for(;;){if(r===null)return;var u=r.tag;if(u===3||u===4){var i=r.stateNode.containerInfo;if(i===l||i.nodeType===8&&i.parentNode===l)break;if(u===4)for(u=r.return;u!==null;){var a=u.tag;if(a===3||a===4){if(a=u.stateNode.containerInfo,a===l||a.nodeType===8&&a.parentNode===l)return}u=u.return}for(;i!==null;){if(u=Mn(i),u===null)return;if(a=u.tag,a===5||a===6){r=o=u;continue e}i=i.parentNode}}r=r.return}ts(function(){var c=o,h=Fu(t),y=[];e:{var m=Fs.get(e);if(m!==void 0){var w=Vu,E=e;switch(e){case"keypress":if(qr(t)===0)break e;case"keydown":case"keyup":w=Pp;break;case"focusin":E="focus",w=yo;break;case"focusout":E="blur",w=yo;break;case"beforeblur":case"afterblur":w=yo;break;case"click":if(t.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":w=Zi;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":w=pp;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":w=Lp;break;case zs:case Ls:case Rs:w=hp;break;case Is:w=Ip;break;case"scroll":w=fp;break;case"wheel":w=Dp;break;case"copy":case"cut":case"paste":w=gp;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":w=Ki}var _=(n&4)!==0,x=!_&&e==="scroll",f=_?m!==null?m+"Capture":null:m;_=[];for(var s=c,d;s!==null;){d=s;var S=d.stateNode;if(d.tag===5&&S!==null&&(d=S,f!==null&&(S=rr(s,f),S!=null&&_.push(cr(s,S,d)))),x)break;s=s.return}0<_.length&&(m=new w(m,E,null,t,h),y.push({event:m,listeners:_}))}}if((n&7)===0){e:{if(m=e==="mouseover"||e==="pointerover",w=e==="mouseout"||e==="pointerout",m&&t!==Ao&&(E=t.relatedTarget||t.fromElement)&&(Mn(E)||E[rn]))break e;if(w||m){if(m=h.window===h?h:(m=h.ownerDocument)?m.defaultView||m.parentWindow:window,w){if(E=t.relatedTarget||t.toElement,w=c,E=E?Mn(E):null,E!==null&&(x=Xn(E),E!==x||E.tag!==5&&E.tag!==6))E=null}else w=null,E=c;if(w!==E){if(_=Zi,S="onMouseLeave",f="onMouseEnter",s="mouse",e==="pointerout"||e==="pointerover")_=Ki,S="onPointerLeave",f="onPointerEnter",s="pointer";if(x=w==null?m:tt(w),d=E==null?m:tt(E),m=new _(S,s+"leave",w,t,h),m.target=x,m.relatedTarget=d,S=null,Mn(h)===c&&(_=new _(f,s+"enter",E,t,h),_.target=d,_.relatedTarget=x,S=_),x=S,w&&E)n:{_=w,f=E,s=0;for(d=_;d;d=Jn(d))s++;d=0;for(S=f;S;S=Jn(S))d++;for(;0<s-d;)_=Jn(_),s--;for(;0<d-s;)f=Jn(f),d--;for(;s--;){if(_===f||f!==null&&_===f.alternate)break n;_=Jn(_),f=Jn(f)}_=null}else _=null;w!==null&&ua(y,m,w,_,!1),E!==null&&x!==null&&ua(y,x,E,_,!0)}}}e:{if(m=c?tt(c):window,w=m.nodeName&&m.nodeName.toLowerCase(),w==="select"||w==="input"&&m.type==="file")var P=Qp;else if(bi(m))if(Es)P=Ap;else{P=Hp;var z=Wp}else(w=m.nodeName)&&w.toLowerCase()==="input"&&(m.type==="checkbox"||m.type==="radio")&&(P=Op);if(P&&(P=P(e,c))){ws(y,P,t,h);break e}z&&z(e,m,c),e==="focusout"&&(z=m._wrapperState)&&z.controlled&&m.type==="number"&&$o(m,"number",m.value)}switch(z=c?tt(c):window,e){case"focusin":if(bi(z)||z.contentEditable==="true")et=z,Ko=c,Kt=null;break;case"focusout":Kt=Ko=et=null;break;case"mousedown":qo=!0;break;case"contextmenu":case"mouseup":case"dragend":qo=!1,ra(y,t,h);break;case"selectionchange":if(Gp)break;case"keydown":case"keyup":ra(y,t,h)}var L;if(Qu)e:{switch(e){case"compositionstart":var R="onCompositionStart";break e;case"compositionend":R="onCompositionEnd";break e;case"compositionupdate":R="onCompositionUpdate";break e}R=void 0}else bn?ks(e,t)&&(R="onCompositionEnd"):e==="keydown"&&t.keyCode===229&&(R="onCompositionStart");if(R&&(gs&&t.locale!=="ko"&&(bn||R!=="onCompositionStart"?R==="onCompositionEnd"&&bn&&(L=ys()):(vn=h,xu=("value"in vn)?vn.value:vn.textContent,bn=!0)),z=pl(c,R),0<z.length&&(R=new Ji(R,e,null,t,h),y.push({event:R,listeners:z}),L?R.data=L:(L=Ss(t),L!==null&&(R.data=L)))),L=Mp?Up(e,t):xp(e,t))c=pl(c,"onBeforeInput"),0<c.length&&(h=new Ji("onBeforeInput","beforeinput",null,t,h),y.push({event:h,listeners:c}),h.data=L)}Ds(y,n)})}function cr(e,n,t){return{instance:e,listener:n,currentTarget:t}}function pl(e,n){for(var t=n+"Capture",r=[];e!==null;){var l=e,o=l.stateNode;l.tag===5&&o!==null&&(l=o,o=rr(e,t),o!=null&&r.unshift(cr(e,o,l)),o=rr(e,n),o!=null&&r.push(cr(e,o,l))),e=e.return}return r}function Jn(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5);return e?e:null}function ua(e,n,t,r,l){for(var o=n._reactName,u=[];t!==null&&t!==r;){var i=t,a=i.alternate,c=i.stateNode;if(a!==null&&a===r)break;i.tag===5&&c!==null&&(i=c,l?(a=rr(t,o),a!=null&&u.unshift(cr(t,a,i))):l||(a=rr(t,o),a!=null&&u.push(cr(t,a,i)))),t=t.return}u.length!==0&&e.push({event:n,listeners:u})}function ia(e){return(typeof e==="string"?e:""+e).replace(Zp,`
`).replace(Jp,"")}function Ar(e,n,t){if(n=ia(n),ia(e)!==n&&t)throw Error(k(425))}function vl(){}function tu(e,n){return e==="textarea"||e==="noscript"||typeof n.children==="string"||typeof n.children==="number"||typeof n.dangerouslySetInnerHTML==="object"&&n.dangerouslySetInnerHTML!==null&&n.dangerouslySetInnerHTML.__html!=null}function jp(e){setTimeout(function(){throw e})}function wo(e,n){var t=n,r=0;do{var l=t.nextSibling;if(e.removeChild(t),l&&l.nodeType===8)if(t=l.data,t==="/$"){if(r===0){e.removeChild(l),ur(n);return}r--}else t!=="$"&&t!=="$?"&&t!=="$!"||r++;t=l}while(t);ur(n)}function kn(e){for(;e!=null;e=e.nextSibling){var n=e.nodeType;if(n===1||n===3)break;if(n===8){if(n=e.data,n==="$"||n==="$!"||n==="$?")break;if(n==="/$")return null}}return e}function sa(e){e=e.previousSibling;for(var n=0;e;){if(e.nodeType===8){var t=e.data;if(t==="$"||t==="$!"||t==="$?"){if(n===0)return e;n--}else t==="/$"&&n++}e=e.previousSibling}return null}function Mn(e){var n=e[Be];if(n)return n;for(var t=e.parentNode;t;){if(n=t[rn]||t[Be]){if(t=n.alternate,n.child!==null||t!==null&&t.child!==null)for(e=sa(e);e!==null;){if(t=e[Be])return t;e=sa(e)}return n}e=t,t=e.parentNode}return null}function Sr(e){return e=e[Be]||e[rn],!e||e.tag!==5&&e.tag!==6&&e.tag!==13&&e.tag!==3?null:e}function tt(e){if(e.tag===5||e.tag===6)return e.stateNode;throw Error(k(33))}function Ml(e){return e[fr]||null}function zn(e){return{current:e}}function $(e){0>rt||(e.current=ou[rt],ou[rt]=null,rt--)}function U(e,n){rt++,ou[rt]=e.current,e.current=n}function ht(e,n){var t=e.type.contextTypes;if(!t)return Pn;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===n)return r.__reactInternalMemoizedMaskedChildContext;var l={},o;for(o in t)l[o]=n[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=n,e.__reactInternalMemoizedMaskedChildContext=l),l}function ke(e){return e=e.childContextTypes,e!==null&&e!==void 0}function ml(){$(ge),$(ce)}function ca(e,n,t){if(ce.current!==Pn)throw Error(k(168));U(ce,n),U(ge,t)}function Ms(e,n,t){var r=e.stateNode;if(n=n.childContextTypes,typeof r.getChildContext!=="function")return t;r=r.getChildContext();for(var l in r)if(!(l in n))throw Error(k(108,Wd(e)||"Unknown",l));return X({},t,r)}function hl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Pn,Qn=ce.current,U(ce,e),U(ge,ge.current),!0}function fa(e,n,t){var r=e.stateNode;if(!r)throw Error(k(169));t?(e=Ms(e,n,Qn),r.__reactInternalMemoizedMergedChildContext=e,$(ge),$(ce),U(ce,e)):$(ge),U(ge,t)}function Us(e){je===null?je=[e]:je.push(e)}function n0(e){Ul=!0,Us(e)}function Ln(){if(!Eo&&je!==null){Eo=!0;var e=0,n=T;try{var t=je;for(T=1;e<t.length;e++){var r=t[e];do r=r(!0);while(r!==null)}je=null,Ul=!1}catch(l){throw je!==null&&(je=je.slice(e+1)),us(Du,Ln),l}finally{T=n,Eo=!1}}return null}function Dn(e,n){lt[ot++]=gl,lt[ot++]=yl,yl=e,gl=n}function xs(e,n,t){ze[Le++]=be,ze[Le++]=en,ze[Le++]=Wn,Wn=e;var r=be;e=en;var l=32-He(r)-1;r&=~(1<<l),t+=1;var o=32-He(n)+l;if(30<o){var u=l-l%5;o=(r&(1<<u)-1).toString(32),r>>=u,l-=u,be=1<<32-He(n)+l|t<<l|r,en=o+e}else be=1<<o|t<<l|r,en=e}function Hu(e){e.return!==null&&(Dn(e,1),xs(e,1,0))}function Ou(e){for(;e===yl;)yl=lt[--ot],lt[ot]=null,gl=lt[--ot],lt[ot]=null;for(;e===Wn;)Wn=ze[--Le],ze[Le]=null,en=ze[--Le],ze[Le]=null,be=ze[--Le],ze[Le]=null}function Vs(e,n){var t=Re(5,null,null,0);t.elementType="DELETED",t.stateNode=n,t.return=e,n=e.deletions,n===null?(e.deletions=[t],e.flags|=16):n.push(t)}function da(e,n){switch(e.tag){case 5:var t=e.type;return n=n.nodeType!==1||t.toLowerCase()!==n.nodeName.toLowerCase()?null:n,n!==null?(e.stateNode=n,_e=e,Ce=kn(n.firstChild),!0):!1;case 6:return n=e.pendingProps===""||n.nodeType!==3?null:n,n!==null?(e.stateNode=n,_e=e,Ce=null,!0):!1;case 13:return n=n.nodeType!==8?null:n,n!==null?(t=Wn!==null?{id:be,overflow:en}:null,e.memoizedState={dehydrated:n,treeContext:t,retryLane:1073741824},t=Re(18,null,null,0),t.stateNode=n,t.return=e,e.child=t,_e=e,Ce=null,!0):!1;default:return!1}}function uu(e){return(e.mode&1)!==0&&(e.flags&128)===0}function iu(e){if(Q){var n=Ce;if(n){var t=n;if(!da(e,n)){if(uu(e))throw Error(k(418));n=kn(t.nextSibling);var r=_e;n&&da(e,n)?Vs(r,t):(e.flags=e.flags&-4097|2,Q=!1,_e=e)}}else{if(uu(e))throw Error(k(418));e.flags=e.flags&-4097|2,Q=!1,_e=e}}}function pa(e){for(e=e.return;e!==null&&e.tag!==5&&e.tag!==3&&e.tag!==13;)e=e.return;_e=e}function Yr(e){if(e!==_e)return!1;if(!Q)return pa(e),Q=!0,!1;var n;if((n=e.tag!==3)&&!(n=e.tag!==5)&&(n=e.type,n=n!=="head"&&n!=="body"&&!tu(e.type,e.memoizedProps)),n&&(n=Ce)){if(uu(e))throw $s(),Error(k(418));for(;n;)Vs(e,n),n=kn(n.nextSibling)}if(pa(e),e.tag===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(k(317));e:{e=e.nextSibling;for(n=0;e;){if(e.nodeType===8){var t=e.data;if(t==="/$"){if(n===0){Ce=kn(e.nextSibling);break e}n--}else t!=="$"&&t!=="$!"&&t!=="$?"||n++}e=e.nextSibling}Ce=null}}else Ce=_e?kn(e.stateNode.nextSibling):null;return!0}function $s(){for(var e=Ce;e;)e=kn(e.nextSibling)}function yt(){Ce=_e=null,Q=!1}function Au(e){We===null?We=[e]:We.push(e)}function Ut(e,n,t){if(e=t.ref,e!==null&&typeof e!=="function"&&typeof e!=="object"){if(t._owner){if(t=t._owner,t){if(t.tag!==1)throw Error(k(309));var r=t.stateNode}if(!r)throw Error(k(147,e));var l=r,o=""+e;if(n!==null&&n.ref!==null&&typeof n.ref==="function"&&n.ref._stringRef===o)return n.ref;return n=function(u){var i=l.refs;u===null?delete i[o]:i[o]=u},n._stringRef=o,n}if(typeof e!=="string")throw Error(k(284));if(!t._owner)throw Error(k(290,e))}return e}function Xr(e,n){throw e=Object.prototype.toString.call(n),Error(k(31,e==="[object Object]"?"object with keys {"+Object.keys(n).join(", ")+"}":e))}function va(e){var n=e._init;return n(e._payload)}function Qs(e){function n(f,s){if(e){var d=f.deletions;d===null?(f.deletions=[s],f.flags|=16):d.push(s)}}function t(f,s){if(!e)return null;for(;s!==null;)n(f,s),s=s.sibling;return null}function r(f,s){for(f=new Map;s!==null;)s.key!==null?f.set(s.key,s):f.set(s.index,s),s=s.sibling;return f}function l(f,s){return f=Cn(f,s),f.index=0,f.sibling=null,f}function o(f,s,d){if(f.index=d,!e)return f.flags|=1048576,s;if(d=f.alternate,d!==null)return d=d.index,d<s?(f.flags|=2,s):d;return f.flags|=2,s}function u(f){return e&&f.alternate===null&&(f.flags|=2),f}function i(f,s,d,S){if(s===null||s.tag!==6)return s=Ro(d,f.mode,S),s.return=f,s;return s=l(s,d),s.return=f,s}function a(f,s,d,S){var P=d.type;if(P===jn)return h(f,s,d.props.children,S,d.key);if(s!==null&&(s.elementType===P||typeof P==="object"&&P!==null&&P.$$typeof===cn&&va(P)===s.type))return S=l(s,d.props),S.ref=Ut(f,s,d),S.return=f,S;return S=ol(d.type,d.key,d.props,null,f.mode,S),S.ref=Ut(f,s,d),S.return=f,S}function c(f,s,d,S){if(s===null||s.tag!==4||s.stateNode.containerInfo!==d.containerInfo||s.stateNode.implementation!==d.implementation)return s=Io(d,f.mode,S),s.return=f,s;return s=l(s,d.children||[]),s.return=f,s}function h(f,s,d,S,P){if(s===null||s.tag!==7)return s=$n(d,f.mode,S,P),s.return=f,s;return s=l(s,d),s.return=f,s}function y(f,s,d){if(typeof s==="string"&&s!==""||typeof s==="number")return s=Ro(""+s,f.mode,d),s.return=f,s;if(typeof s==="object"&&s!==null){switch(s.$$typeof){case Mr:return d=ol(s.type,s.key,s.props,null,f.mode,d),d.ref=Ut(f,null,s),d.return=f,d;case qn:return s=Io(s,f.mode,d),s.return=f,s;case cn:var S=s._init;return y(f,S(s._payload),d)}if(Qt(s)||Ft(s))return s=$n(s,f.mode,d,null),s.return=f,s;Xr(f,s)}return null}function m(f,s,d,S){var P=s!==null?s.key:null;if(typeof d==="string"&&d!==""||typeof d==="number")return P!==null?null:i(f,s,""+d,S);if(typeof d==="object"&&d!==null){switch(d.$$typeof){case Mr:return d.key===P?a(f,s,d,S):null;case qn:return d.key===P?c(f,s,d,S):null;case cn:return P=d._init,m(f,s,P(d._payload),S)}if(Qt(d)||Ft(d))return P!==null?null:h(f,s,d,S,null);Xr(f,d)}return null}function w(f,s,d,S,P){if(typeof S==="string"&&S!==""||typeof S==="number")return f=f.get(d)||null,i(s,f,""+S,P);if(typeof S==="object"&&S!==null){switch(S.$$typeof){case Mr:return f=f.get(S.key===null?d:S.key)||null,a(s,f,S,P);case qn:return f=f.get(S.key===null?d:S.key)||null,c(s,f,S,P);case cn:var z=S._init;return w(f,s,d,z(S._payload),P)}if(Qt(S)||Ft(S))return f=f.get(d)||null,h(s,f,S,P,null);Xr(s,S)}return null}function E(f,s,d,S){for(var P=null,z=null,L=s,R=s=0,J=null;L!==null&&R<d.length;R++){L.index>R?(J=L,L=null):J=L.sibling;var F=m(f,L,d[R],S);if(F===null){L===null&&(L=J);break}e&&L&&F.alternate===null&&n(f,L),s=o(F,s,R),z===null?P=F:z.sibling=F,z=F,L=J}if(R===d.length)return t(f,L),Q&&Dn(f,R),P;if(L===null){for(;R<d.length;R++)L=y(f,d[R],S),L!==null&&(s=o(L,s,R),z===null?P=L:z.sibling=L,z=L);return Q&&Dn(f,R),P}for(L=r(f,L);R<d.length;R++)J=w(L,f,R,d[R],S),J!==null&&(e&&J.alternate!==null&&L.delete(J.key===null?R:J.key),s=o(J,s,R),z===null?P=J:z.sibling=J,z=J);return e&&L.forEach(function(Te){return n(f,Te)}),Q&&Dn(f,R),P}function _(f,s,d,S){var P=Ft(d);if(typeof P!=="function")throw Error(k(150));if(d=P.call(d),d==null)throw Error(k(151));for(var z=P=null,L=s,R=s=0,J=null,F=d.next();L!==null&&!F.done;R++,F=d.next()){L.index>R?(J=L,L=null):J=L.sibling;var Te=m(f,L,F.value,S);if(Te===null){L===null&&(L=J);break}e&&L&&Te.alternate===null&&n(f,L),s=o(Te,s,R),z===null?P=Te:z.sibling=Te,z=Te,L=J}if(F.done)return t(f,L),Q&&Dn(f,R),P;if(L===null){for(;!F.done;R++,F=d.next())F=y(f,F.value,S),F!==null&&(s=o(F,s,R),z===null?P=F:z.sibling=F,z=F);return Q&&Dn(f,R),P}for(L=r(f,L);!F.done;R++,F=d.next())F=w(L,f,R,F.value,S),F!==null&&(e&&F.alternate!==null&&L.delete(F.key===null?R:F.key),s=o(F,s,R),z===null?P=F:z.sibling=F,z=F);return e&&L.forEach(function(Xl){return n(f,Xl)}),Q&&Dn(f,R),P}function x(f,s,d,S){if(typeof d==="object"&&d!==null&&d.type===jn&&d.key===null&&(d=d.props.children),typeof d==="object"&&d!==null){switch(d.$$typeof){case Mr:e:{for(var P=d.key,z=s;z!==null;){if(z.key===P){if(P=d.type,P===jn){if(z.tag===7){t(f,z.sibling),s=l(z,d.props.children),s.return=f,f=s;break e}}else if(z.elementType===P||typeof P==="object"&&P!==null&&P.$$typeof===cn&&va(P)===z.type){t(f,z.sibling),s=l(z,d.props),s.ref=Ut(f,z,d),s.return=f,f=s;break e}t(f,z);break}else n(f,z);z=z.sibling}d.type===jn?(s=$n(d.props.children,f.mode,S,d.key),s.return=f,f=s):(S=ol(d.type,d.key,d.props,null,f.mode,S),S.ref=Ut(f,s,d),S.return=f,f=S)}return u(f);case qn:e:{for(z=d.key;s!==null;){if(s.key===z)if(s.tag===4&&s.stateNode.containerInfo===d.containerInfo&&s.stateNode.implementation===d.implementation){t(f,s.sibling),s=l(s,d.children||[]),s.return=f,f=s;break e}else{t(f,s);break}else n(f,s);s=s.sibling}s=Io(d,f.mode,S),s.return=f,f=s}return u(f);case cn:return z=d._init,x(f,s,z(d._payload),S)}if(Qt(d))return E(f,s,d,S);if(Ft(d))return _(f,s,d,S);Xr(f,d)}return typeof d==="string"&&d!==""||typeof d==="number"?(d=""+d,s!==null&&s.tag===6?(t(f,s.sibling),s=l(s,d),s.return=f,f=s):(t(f,s),s=Ro(d,f.mode,S),s.return=f,f=s),u(f)):t(f,s)}return x}function Xu(){Yu=ut=Sl=null}function Gu(e){var n=kl.current;$(kl),e._currentValue=n}function au(e,n,t){for(;e!==null;){var r=e.alternate;if((e.childLanes&n)!==n?(e.childLanes|=n,r!==null&&(r.childLanes|=n)):r!==null&&(r.childLanes&n)!==n&&(r.childLanes|=n),e===t)break;e=e.return}}function pt(e,n){Sl=e,Yu=ut=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&n)!==0&&(ye=!0),e.firstContext=null)}function Fe(e){var n=e._currentValue;if(Yu!==e)if(e={context:e,memoizedValue:n,next:null},ut===null){if(Sl===null)throw Error(k(308));ut=e,Sl.dependencies={lanes:0,firstContext:e}}else ut=ut.next=e;return n}function Bu(e){Un===null?Un=[e]:Un.push(e)}function Hs(e,n,t,r){var l=n.interleaved;return l===null?(t.next=t,Bu(n)):(t.next=l.next,l.next=t),n.interleaved=t,ln(e,r)}function ln(e,n){e.lanes|=n;var t=e.alternate;t!==null&&(t.lanes|=n),t=e;for(e=e.return;e!==null;)e.childLanes|=n,t=e.alternate,t!==null&&(t.childLanes|=n),t=e,e=e.return;return t.tag===3?t.stateNode:null}function Zu(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Os(e,n){e=e.updateQueue,n.updateQueue===e&&(n.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function nn(e,n){return{eventTime:e,lane:n,tag:0,payload:null,callback:null,next:null}}function Sn(e,n,t){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,(D&2)!==0){var l=r.pending;return l===null?n.next=n:(n.next=l.next,l.next=n),r.pending=n,ln(e,t)}return l=r.interleaved,l===null?(n.next=n,Bu(r)):(n.next=l.next,l.next=n),r.interleaved=n,ln(e,t)}function br(e,n,t){if(n=n.updateQueue,n!==null&&(n=n.shared,(t&4194240)!==0)){var r=n.lanes;r&=e.pendingLanes,t|=r,n.lanes=t,Tu(e,t)}}function ma(e,n){var{updateQueue:t,alternate:r}=e;if(r!==null&&(r=r.updateQueue,t===r)){var l=null,o=null;if(t=t.firstBaseUpdate,t!==null){do{var u={eventTime:t.eventTime,lane:t.lane,tag:t.tag,payload:t.payload,callback:t.callback,next:null};o===null?l=o=u:o=o.next=u,t=t.next}while(t!==null);o===null?l=o=n:o=o.next=n}else l=o=n;t={baseState:r.baseState,firstBaseUpdate:l,lastBaseUpdate:o,shared:r.shared,effects:r.effects},e.updateQueue=t;return}e=t.lastBaseUpdate,e===null?t.firstBaseUpdate=n:e.next=n,t.lastBaseUpdate=n}function wl(e,n,t,r){var l=e.updateQueue;fn=!1;var{firstBaseUpdate:o,lastBaseUpdate:u}=l,i=l.shared.pending;if(i!==null){l.shared.pending=null;var a=i,c=a.next;a.next=null,u===null?o=c:u.next=c,u=a;var h=e.alternate;h!==null&&(h=h.updateQueue,i=h.lastBaseUpdate,i!==u&&(i===null?h.firstBaseUpdate=c:i.next=c,h.lastBaseUpdate=a))}if(o!==null){var y=l.baseState;u=0,h=c=a=null,i=o;do{var{lane:m,eventTime:w}=i;if((r&m)===m){h!==null&&(h=h.next={eventTime:w,lane:0,tag:i.tag,payload:i.payload,callback:i.callback,next:null});e:{var E=e,_=i;switch(m=n,w=t,_.tag){case 1:if(E=_.payload,typeof E==="function"){y=E.call(w,y,m);break e}y=E;break e;case 3:E.flags=E.flags&-65537|128;case 0:if(E=_.payload,m=typeof E==="function"?E.call(w,y,m):E,m===null||m===void 0)break e;y=X({},y,m);break e;case 2:fn=!0}}i.callback!==null&&i.lane!==0&&(e.flags|=64,m=l.effects,m===null?l.effects=[i]:m.push(i))}else w={eventTime:w,lane:m,tag:i.tag,payload:i.payload,callback:i.callback,next:null},h===null?(c=h=w,a=y):h=h.next=w,u|=m;if(i=i.next,i===null)if(i=l.shared.pending,i===null)break;else m=i,i=m.next,m.next=null,l.lastBaseUpdate=m,l.shared.pending=null}while(1);if(h===null&&(a=y),l.baseState=a,l.firstBaseUpdate=c,l.lastBaseUpdate=h,n=l.shared.interleaved,n!==null){l=n;do u|=l.lane,l=l.next;while(l!==n)}else o===null&&(l.shared.lanes=0);On|=u,e.lanes=u,e.memoizedState=y}}function ha(e,n,t){if(e=n.effects,n.effects=null,e!==null)for(n=0;n<e.length;n++){var r=e[n],l=r.callback;if(l!==null){if(r.callback=null,r=t,typeof l!=="function")throw Error(k(191,l));l.call(r)}}}function xn(e){if(e===wr)throw Error(k(174));return e}function Ju(e,n){switch(U(pr,n),U(dr,e),U(Je,wr),e=n.nodeType,e){case 9:case 11:n=(n=n.documentElement)?n.namespaceURI:Wo(null,"");break;default:e=e===8?n.parentNode:n,n=e.namespaceURI||null,e=e.tagName,n=Wo(n,e)}$(Je),U(Je,n)}function kt(){$(Je),$(dr),$(pr)}function As(e){xn(pr.current);var n=xn(Je.current),t=Wo(n,e.type);n!==t&&(U(dr,e),U(Je,t))}function Ku(e){dr.current===e&&($(Je),$(dr))}function El(e){for(var n=e;n!==null;){if(n.tag===13){var t=n.memoizedState;if(t!==null&&(t=t.dehydrated,t===null||t.data==="$?"||t.data==="$!"))return n}else if(n.tag===19&&n.memoizedProps.revealOrder!==void 0){if((n.flags&128)!==0)return n}else if(n.child!==null){n.child.return=n,n=n.child;continue}if(n===e)break;for(;n.sibling===null;){if(n.return===null||n.return===e)return null;n=n.return}n.sibling.return=n.return,n=n.sibling}return null}function qu(){for(var e=0;e<Co.length;e++)Co[e]._workInProgressVersionPrimary=null;Co.length=0}function ie(){throw Error(k(321))}function ju(e,n){if(n===null)return!1;for(var t=0;t<n.length&&t<e.length;t++)if(!Ae(e[t],n[t]))return!1;return!0}function bu(e,n,t,r,l,o){if(Hn=o,Y=n,n.memoizedState=null,n.updateQueue=null,n.lanes=0,el.current=e===null||e.memoizedState===null?i0:a0,e=t(r,l),qt){o=0;do{if(qt=!1,vr=0,25<=o)throw Error(k(301));o+=1,ne=b=null,n.updateQueue=null,el.current=s0,e=t(r,l)}while(qt)}if(el.current=_l,n=b!==null&&b.next!==null,Hn=0,ne=b=Y=null,Cl=!1,n)throw Error(k(300));return e}function ei(){var e=vr!==0;return vr=0,e}function Ge(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return ne===null?Y.memoizedState=ne=e:ne=ne.next=e,ne}function De(){if(b===null){var e=Y.alternate;e=e!==null?e.memoizedState:null}else e=b.next;var n=ne===null?Y.memoizedState:ne.next;if(n!==null)ne=n,b=e;else{if(e===null)throw Error(k(310));b=e,e={memoizedState:b.memoizedState,baseState:b.baseState,baseQueue:b.baseQueue,queue:b.queue,next:null},ne===null?Y.memoizedState=ne=e:ne=ne.next=e}return ne}function mr(e,n){return typeof n==="function"?n(e):n}function Po(e){var n=De(),t=n.queue;if(t===null)throw Error(k(311));t.lastRenderedReducer=e;var r=b,l=r.baseQueue,o=t.pending;if(o!==null){if(l!==null){var u=l.next;l.next=o.next,o.next=u}r.baseQueue=l=o,t.pending=null}if(l!==null){o=l.next,r=r.baseState;var i=u=null,a=null,c=o;do{var h=c.lane;if((Hn&h)===h)a!==null&&(a=a.next={lane:0,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null}),r=c.hasEagerState?c.eagerState:e(r,c.action);else{var y={lane:h,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null};a===null?(i=a=y,u=r):a=a.next=y,Y.lanes|=h,On|=h}c=c.next}while(c!==null&&c!==o);a===null?u=r:a.next=i,Ae(r,n.memoizedState)||(ye=!0),n.memoizedState=r,n.baseState=u,n.baseQueue=a,t.lastRenderedState=r}if(e=t.interleaved,e!==null){l=e;do o=l.lane,Y.lanes|=o,On|=o,l=l.next;while(l!==e)}else l===null&&(t.lanes=0);return[n.memoizedState,t.dispatch]}function No(e){var n=De(),t=n.queue;if(t===null)throw Error(k(311));t.lastRenderedReducer=e;var{dispatch:r,pending:l}=t,o=n.memoizedState;if(l!==null){t.pending=null;var u=l=l.next;do o=e(o,u.action),u=u.next;while(u!==l);Ae(o,n.memoizedState)||(ye=!0),n.memoizedState=o,n.baseQueue===null&&(n.baseState=o),t.lastRenderedState=o}return[o,r]}function Ys(){}function Xs(e,n){var t=Y,r=De(),l=n(),o=!Ae(r.memoizedState,l);if(o&&(r.memoizedState=l,ye=!0),r=r.queue,ni(Zs.bind(null,t,r,e),[e]),r.getSnapshot!==n||o||ne!==null&&ne.memoizedState.tag&1){if(t.flags|=2048,hr(9,Bs.bind(null,t,r,l,n),void 0,null),te===null)throw Error(k(349));(Hn&30)!==0||Gs(t,n,l)}return l}function Gs(e,n,t){e.flags|=16384,e={getSnapshot:n,value:t},n=Y.updateQueue,n===null?(n={lastEffect:null,stores:null},Y.updateQueue=n,n.stores=[e]):(t=n.stores,t===null?n.stores=[e]:t.push(e))}function Bs(e,n,t,r){n.value=t,n.getSnapshot=r,Js(n)&&Ks(e)}function Zs(e,n,t){return t(function(){Js(n)&&Ks(e)})}function Js(e){var n=e.getSnapshot;e=e.value;try{var t=n();return!Ae(e,t)}catch(r){return!0}}function Ks(e){var n=ln(e,1);n!==null&&Oe(n,e,1,-1)}function ya(e){var n=Ge();return typeof e==="function"&&(e=e()),n.memoizedState=n.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:mr,lastRenderedState:e},n.queue=e,e=e.dispatch=u0.bind(null,Y,e),[n.memoizedState,e]}function hr(e,n,t,r){return e={tag:e,create:n,destroy:t,deps:r,next:null},n=Y.updateQueue,n===null?(n={lastEffect:null,stores:null},Y.updateQueue=n,n.lastEffect=e.next=e):(t=n.lastEffect,t===null?n.lastEffect=e.next=e:(r=t.next,t.next=e,e.next=r,n.lastEffect=e)),e}function qs(){return De().memoizedState}function nl(e,n,t,r){var l=Ge();Y.flags|=e,l.memoizedState=hr(1|n,t,void 0,r===void 0?null:r)}function xl(e,n,t,r){var l=De();r=r===void 0?null:r;var o=void 0;if(b!==null){var u=b.memoizedState;if(o=u.destroy,r!==null&&ju(r,u.deps)){l.memoizedState=hr(n,t,o,r);return}}Y.flags|=e,l.memoizedState=hr(1|n,t,o,r)}function ga(e,n){return nl(8390656,8,e,n)}function ni(e,n){return xl(2048,8,e,n)}function js(e,n){return xl(4,2,e,n)}function bs(e,n){return xl(4,4,e,n)}function ec(e,n){if(typeof n==="function")return e=e(),n(e),function(){n(null)};if(n!==null&&n!==void 0)return e=e(),n.current=e,function(){n.current=null}}function nc(e,n,t){return t=t!==null&&t!==void 0?t.concat([e]):null,xl(4,4,ec.bind(null,n,e),t)}function ti(){}function tc(e,n){var t=De();n=n===void 0?null:n;var r=t.memoizedState;if(r!==null&&n!==null&&ju(n,r[1]))return r[0];return t.memoizedState=[e,n],e}function rc(e,n){var t=De();n=n===void 0?null:n;var r=t.memoizedState;if(r!==null&&n!==null&&ju(n,r[1]))return r[0];return e=e(),t.memoizedState=[e,n],e}function lc(e,n,t){if((Hn&21)===0)return e.baseState&&(e.baseState=!1,ye=!0),e.memoizedState=t;return Ae(t,n)||(t=ss(),Y.lanes|=t,On|=t,e.baseState=!0),n}function l0(e,n){var t=T;T=t!==0&&4>t?t:4,e(!0);var r=_o.transition;_o.transition={};try{e(!1),n()}finally{T=t,_o.transition=r}}function oc(){return De().memoizedState}function o0(e,n,t){var r=En(e);if(t={lane:r,action:t,hasEagerState:!1,eagerState:null,next:null},uc(e))ic(n,t);else if(t=Hs(e,n,t,r),t!==null){var l=pe();Oe(t,e,r,l),ac(t,n,r)}}function u0(e,n,t){var r=En(e),l={lane:r,action:t,hasEagerState:!1,eagerState:null,next:null};if(uc(e))ic(n,l);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=n.lastRenderedReducer,o!==null))try{var u=n.lastRenderedState,i=o(u,t);if(l.hasEagerState=!0,l.eagerState=i,Ae(i,u)){var a=n.interleaved;a===null?(l.next=l,Bu(n)):(l.next=a.next,a.next=l),n.interleaved=l;return}}catch(c){}finally{}t=Hs(e,n,l,r),t!==null&&(l=pe(),Oe(t,e,r,l),ac(t,n,r))}}function uc(e){var n=e.alternate;return e===Y||n!==null&&n===Y}function ic(e,n){qt=Cl=!0;var t=e.pending;t===null?n.next=n:(n.next=t.next,t.next=n),e.pending=n}function ac(e,n,t){if((t&4194240)!==0){var r=n.lanes;r&=e.pendingLanes,t|=r,n.lanes=t,Tu(e,t)}}function $e(e,n){if(e&&e.defaultProps){n=X({},n),e=e.defaultProps;for(var t in e)n[t]===void 0&&(n[t]=e[t]);return n}return n}function su(e,n,t,r){n=e.memoizedState,t=t(r,n),t=t===null||t===void 0?n:X({},n,t),e.memoizedState=t,e.lanes===0&&(e.updateQueue.baseState=t)}function ka(e,n,t,r,l,o,u){return e=e.stateNode,typeof e.shouldComponentUpdate==="function"?e.shouldComponentUpdate(r,o,u):n.prototype&&n.prototype.isPureReactComponent?!ar(t,r)||!ar(l,o):!0}function sc(e,n,t){var r=!1,l=Pn,o=n.contextType;return typeof o==="object"&&o!==null?o=Fe(o):(l=ke(n)?Qn:ce.current,r=n.contextTypes,o=(r=r!==null&&r!==void 0)?ht(e,l):Pn),n=new n(t,o),e.memoizedState=n.state!==null&&n.state!==void 0?n.state:null,n.updater=Vl,e.stateNode=n,n._reactInternals=e,r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=l,e.__reactInternalMemoizedMaskedChildContext=o),n}function Sa(e,n,t,r){e=n.state,typeof n.componentWillReceiveProps==="function"&&n.componentWillReceiveProps(t,r),typeof n.UNSAFE_componentWillReceiveProps==="function"&&n.UNSAFE_componentWillReceiveProps(t,r),n.state!==e&&Vl.enqueueReplaceState(n,n.state,null)}function cu(e,n,t,r){var l=e.stateNode;l.props=t,l.state=e.memoizedState,l.refs={},Zu(e);var o=n.contextType;typeof o==="object"&&o!==null?l.context=Fe(o):(o=ke(n)?Qn:ce.current,l.context=ht(e,o)),l.state=e.memoizedState,o=n.getDerivedStateFromProps,typeof o==="function"&&(su(e,n,o,t),l.state=e.memoizedState),typeof n.getDerivedStateFromProps==="function"||typeof l.getSnapshotBeforeUpdate==="function"||typeof l.UNSAFE_componentWillMount!=="function"&&typeof l.componentWillMount!=="function"||(n=l.state,typeof l.componentWillMount==="function"&&l.componentWillMount(),typeof l.UNSAFE_componentWillMount==="function"&&l.UNSAFE_componentWillMount(),n!==l.state&&Vl.enqueueReplaceState(l,l.state,null),wl(e,t,l,r),l.state=e.memoizedState),typeof l.componentDidMount==="function"&&(e.flags|=4194308)}function St(e,n){try{var t="",r=n;do t+=Qd(r),r=r.return;while(r);var l=t}catch(o){l=`
Error generating stack: `+o.message+`
`+o.stack}return{value:e,source:n,stack:l,digest:null}}function zo(e,n,t){return{value:e,source:null,stack:t!=null?t:null,digest:n!=null?n:null}}function fu(e,n){try{console.error(n.value)}catch(t){setTimeout(function(){throw t})}}function cc(e,n,t){t=nn(-1,t),t.tag=3,t.payload={element:null};var r=n.value;return t.callback=function(){Nl||(Nl=!0,wu=r),fu(e,n)},t}function fc(e,n,t){t=nn(-1,t),t.tag=3;var r=e.type.getDerivedStateFromError;if(typeof r==="function"){var l=n.value;t.payload=function(){return r(l)},t.callback=function(){fu(e,n)}}var o=e.stateNode;return o!==null&&typeof o.componentDidCatch==="function"&&(t.callback=function(){fu(e,n),typeof r!=="function"&&(wn===null?wn=new Set([this]):wn.add(this));var u=n.stack;this.componentDidCatch(n.value,{componentStack:u!==null?u:""})}),t}function wa(e,n,t){var r=e.pingCache;if(r===null){r=e.pingCache=new c0;var l=new Set;r.set(n,l)}else l=r.get(n),l===void 0&&(l=new Set,r.set(n,l));l.has(t)||(l.add(t),e=_0.bind(null,e,n,t),n.then(e,e))}function Ea(e){do{var n;if(n=e.tag===13)n=e.memoizedState,n=n!==null?n.dehydrated!==null?!0:!1:!0;if(n)return e;e=e.return}while(e!==null);return null}function Ca(e,n,t,r,l){if((e.mode&1)===0)return e===n?e.flags|=65536:(e.flags|=128,t.flags|=131072,t.flags&=-52805,t.tag===1&&(t.alternate===null?t.tag=17:(n=nn(-1,1),n.tag=2,Sn(t,n,1))),t.lanes|=1),e;return e.flags|=65536,e.lanes=l,e}function de(e,n,t,r){n.child=e===null?Ws(n,null,t,r):gt(n,e.child,t,r)}function _a(e,n,t,r,l){t=t.render;var o=n.ref;if(pt(n,l),r=bu(e,n,t,r,o,l),t=ei(),e!==null&&!ye)return n.updateQueue=e.updateQueue,n.flags&=-2053,e.lanes&=~l,on(e,n,l);return Q&&t&&Hu(n),n.flags|=1,de(e,n,r,l),n.child}function Pa(e,n,t,r,l){if(e===null){var o=t.type;if(typeof o==="function"&&!ci(o)&&o.defaultProps===void 0&&t.compare===null&&t.defaultProps===void 0)return n.tag=15,n.type=o,dc(e,n,o,r,l);return e=ol(t.type,null,r,n,n.mode,l),e.ref=n.ref,e.return=n,n.child=e}if(o=e.child,(e.lanes&l)===0){var u=o.memoizedProps;if(t=t.compare,t=t!==null?t:ar,t(u,r)&&e.ref===n.ref)return on(e,n,l)}return n.flags|=1,e=Cn(o,r),e.ref=n.ref,e.return=n,n.child=e}function dc(e,n,t,r,l){if(e!==null){var o=e.memoizedProps;if(ar(o,r)&&e.ref===n.ref)if(ye=!1,n.pendingProps=r=o,(e.lanes&l)!==0)(e.flags&131072)!==0&&(ye=!0);else return n.lanes=e.lanes,on(e,n,l)}return du(e,n,t,r,l)}function pc(e,n,t){var r=n.pendingProps,l=r.children,o=e!==null?e.memoizedState:null;if(r.mode==="hidden")if((n.mode&1)===0)n.memoizedState={baseLanes:0,cachePool:null,transitions:null},U(at,Ee),Ee|=t;else{if((t&1073741824)===0)return e=o!==null?o.baseLanes|t:t,n.lanes=n.childLanes=1073741824,n.memoizedState={baseLanes:e,cachePool:null,transitions:null},n.updateQueue=null,U(at,Ee),Ee|=e,null;n.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=o!==null?o.baseLanes:t,U(at,Ee),Ee|=r}else o!==null?(r=o.baseLanes|t,n.memoizedState=null):r=t,U(at,Ee),Ee|=r;return de(e,n,l,t),n.child}function vc(e,n){var t=n.ref;if(e===null&&t!==null||e!==null&&e.ref!==t)n.flags|=512,n.flags|=2097152}function du(e,n,t,r,l){var o=ke(t)?Qn:ce.current;if(o=ht(n,o),pt(n,l),t=bu(e,n,t,r,o,l),r=ei(),e!==null&&!ye)return n.updateQueue=e.updateQueue,n.flags&=-2053,e.lanes&=~l,on(e,n,l);return Q&&r&&Hu(n),n.flags|=1,de(e,n,t,l),n.child}function Na(e,n,t,r,l){if(ke(t)){var o=!0;hl(n)}else o=!1;if(pt(n,l),n.stateNode===null)tl(e,n),sc(n,t,r),cu(n,t,r,l),r=!0;else if(e===null){var{stateNode:u,memoizedProps:i}=n;u.props=i;var a=u.context,c=t.contextType;typeof c==="object"&&c!==null?c=Fe(c):(c=ke(t)?Qn:ce.current,c=ht(n,c));var h=t.getDerivedStateFromProps,y=typeof h==="function"||typeof u.getSnapshotBeforeUpdate==="function";y||typeof u.UNSAFE_componentWillReceiveProps!=="function"&&typeof u.componentWillReceiveProps!=="function"||(i!==r||a!==c)&&Sa(n,u,r,c),fn=!1;var m=n.memoizedState;u.state=m,wl(n,r,u,l),a=n.memoizedState,i!==r||m!==a||ge.current||fn?(typeof h==="function"&&(su(n,t,h,r),a=n.memoizedState),(i=fn||ka(n,t,i,r,m,a,c))?(y||typeof u.UNSAFE_componentWillMount!=="function"&&typeof u.componentWillMount!=="function"||(typeof u.componentWillMount==="function"&&u.componentWillMount(),typeof u.UNSAFE_componentWillMount==="function"&&u.UNSAFE_componentWillMount()),typeof u.componentDidMount==="function"&&(n.flags|=4194308)):(typeof u.componentDidMount==="function"&&(n.flags|=4194308),n.memoizedProps=r,n.memoizedState=a),u.props=r,u.state=a,u.context=c,r=i):(typeof u.componentDidMount==="function"&&(n.flags|=4194308),r=!1)}else{u=n.stateNode,Os(e,n),i=n.memoizedProps,c=n.type===n.elementType?i:$e(n.type,i),u.props=c,y=n.pendingProps,m=u.context,a=t.contextType,typeof a==="object"&&a!==null?a=Fe(a):(a=ke(t)?Qn:ce.current,a=ht(n,a));var w=t.getDerivedStateFromProps;(h=typeof w==="function"||typeof u.getSnapshotBeforeUpdate==="function")||typeof u.UNSAFE_componentWillReceiveProps!=="function"&&typeof u.componentWillReceiveProps!=="function"||(i!==y||m!==a)&&Sa(n,u,r,a),fn=!1,m=n.memoizedState,u.state=m,wl(n,r,u,l);var E=n.memoizedState;i!==y||m!==E||ge.current||fn?(typeof w==="function"&&(su(n,t,w,r),E=n.memoizedState),(c=fn||ka(n,t,c,r,m,E,a)||!1)?(h||typeof u.UNSAFE_componentWillUpdate!=="function"&&typeof u.componentWillUpdate!=="function"||(typeof u.componentWillUpdate==="function"&&u.componentWillUpdate(r,E,a),typeof u.UNSAFE_componentWillUpdate==="function"&&u.UNSAFE_componentWillUpdate(r,E,a)),typeof u.componentDidUpdate==="function"&&(n.flags|=4),typeof u.getSnapshotBeforeUpdate==="function"&&(n.flags|=1024)):(typeof u.componentDidUpdate!=="function"||i===e.memoizedProps&&m===e.memoizedState||(n.flags|=4),typeof u.getSnapshotBeforeUpdate!=="function"||i===e.memoizedProps&&m===e.memoizedState||(n.flags|=1024),n.memoizedProps=r,n.memoizedState=E),u.props=r,u.state=E,u.context=a,r=c):(typeof u.componentDidUpdate!=="function"||i===e.memoizedProps&&m===e.memoizedState||(n.flags|=4),typeof u.getSnapshotBeforeUpdate!=="function"||i===e.memoizedProps&&m===e.memoizedState||(n.flags|=1024),r=!1)}return pu(e,n,t,r,o,l)}function pu(e,n,t,r,l,o){vc(e,n);var u=(n.flags&128)!==0;if(!r&&!u)return l&&fa(n,t,!1),on(e,n,o);r=n.stateNode,f0.current=n;var i=u&&typeof t.getDerivedStateFromError!=="function"?null:r.render();return n.flags|=1,e!==null&&u?(n.child=gt(n,e.child,null,o),n.child=gt(n,null,i,o)):de(e,n,i,o),n.memoizedState=r.state,l&&fa(n,t,!0),n.child}function mc(e){var n=e.stateNode;n.pendingContext?ca(e,n.pendingContext,n.pendingContext!==n.context):n.context&&ca(e,n.context,!1),Ju(e,n.containerInfo)}function za(e,n,t,r,l){return yt(),Au(l),n.flags|=256,de(e,n,t,r),n.child}function mu(e){return{baseLanes:e,cachePool:null,transitions:null}}function hc(e,n,t){var r=n.pendingProps,l=A.current,o=!1,u=(n.flags&128)!==0,i;if((i=u)||(i=e!==null&&e.memoizedState===null?!1:(l&2)!==0),i)o=!0,n.flags&=-129;else if(e===null||e.memoizedState!==null)l|=1;if(U(A,l&1),e===null){if(iu(n),e=n.memoizedState,e!==null&&(e=e.dehydrated,e!==null))return(n.mode&1)===0?n.lanes=1:e.data==="$!"?n.lanes=8:n.lanes=1073741824,null;return u=r.children,e=r.fallback,o?(r=n.mode,o=n.child,u={mode:"hidden",children:u},(r&1)===0&&o!==null?(o.childLanes=0,o.pendingProps=u):o=Wl(u,r,0,null),e=$n(e,r,t,null),o.return=n,e.return=n,o.sibling=e,n.child=o,n.child.memoizedState=mu(t),n.memoizedState=vu,e):ri(n,u)}if(l=e.memoizedState,l!==null&&(i=l.dehydrated,i!==null))return d0(e,n,u,r,i,l,t);if(o){o=r.fallback,u=n.mode,l=e.child,i=l.sibling;var a={mode:"hidden",children:r.children};return(u&1)===0&&n.child!==l?(r=n.child,r.childLanes=0,r.pendingProps=a,n.deletions=null):(r=Cn(l,a),r.subtreeFlags=l.subtreeFlags&14680064),i!==null?o=Cn(i,o):(o=$n(o,u,t,null),o.flags|=2),o.return=n,r.return=n,r.sibling=o,n.child=r,r=o,o=n.child,u=e.child.memoizedState,u=u===null?mu(t):{baseLanes:u.baseLanes|t,cachePool:null,transitions:u.transitions},o.memoizedState=u,o.childLanes=e.childLanes&~t,n.memoizedState=vu,r}return o=e.child,e=o.sibling,r=Cn(o,{mode:"visible",children:r.children}),(n.mode&1)===0&&(r.lanes=t),r.return=n,r.sibling=null,e!==null&&(t=n.deletions,t===null?(n.deletions=[e],n.flags|=16):t.push(e)),n.child=r,n.memoizedState=null,r}function ri(e,n){return n=Wl({mode:"visible",children:n},e.mode,0,null),n.return=e,e.child=n}function Gr(e,n,t,r){return r!==null&&Au(r),gt(n,e.child,null,t),e=ri(n,n.pendingProps.children),e.flags|=2,n.memoizedState=null,e}function d0(e,n,t,r,l,o,u){if(t){if(n.flags&256)return n.flags&=-257,r=zo(Error(k(422))),Gr(e,n,u,r);if(n.memoizedState!==null)return n.child=e.child,n.flags|=128,null;return o=r.fallback,l=n.mode,r=Wl({mode:"visible",children:r.children},l,0,null),o=$n(o,l,u,null),o.flags|=2,r.return=n,o.return=n,r.sibling=o,n.child=r,(n.mode&1)!==0&&gt(n,e.child,null,u),n.child.memoizedState=mu(u),n.memoizedState=vu,o}if((n.mode&1)===0)return Gr(e,n,u,null);if(l.data==="$!"){if(r=l.nextSibling&&l.nextSibling.dataset,r)var i=r.dgst;return r=i,o=Error(k(419)),r=zo(o,r,void 0),Gr(e,n,u,r)}if(i=(u&e.childLanes)!==0,ye||i){if(r=te,r!==null){switch(u&-u){case 4:l=2;break;case 16:l=8;break;case 64: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:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:l=32;break;case 536870912:l=268435456;break;default:l=0}l=(l&(r.suspendedLanes|u))!==0?0:l,l!==0&&l!==o.retryLane&&(o.retryLane=l,ln(e,l),Oe(r,e,l,-1))}return si(),r=zo(Error(k(421))),Gr(e,n,u,r)}if(l.data==="$?")return n.flags|=128,n.child=e.child,n=P0.bind(null,e),l._reactRetry=n,null;return e=o.treeContext,Ce=kn(l.nextSibling),_e=n,Q=!0,We=null,e!==null&&(ze[Le++]=be,ze[Le++]=en,ze[Le++]=Wn,be=e.id,en=e.overflow,Wn=n),n=ri(n,r.children),n.flags|=4096,n}function La(e,n,t){e.lanes|=n;var r=e.alternate;r!==null&&(r.lanes|=n),au(e.return,n,t)}function Lo(e,n,t,r,l){var o=e.memoizedState;o===null?e.memoizedState={isBackwards:n,rendering:null,renderingStartTime:0,last:r,tail:t,tailMode:l}:(o.isBackwards=n,o.rendering=null,o.renderingStartTime=0,o.last=r,o.tail=t,o.tailMode=l)}function yc(e,n,t){var r=n.pendingProps,l=r.revealOrder,o=r.tail;if(de(e,n,r.children,t),r=A.current,(r&2)!==0)r=r&1|2,n.flags|=128;else{if(e!==null&&(e.flags&128)!==0)e:for(e=n.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&La(e,t,n);else if(e.tag===19)La(e,t,n);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===n)break e;for(;e.sibling===null;){if(e.return===null||e.return===n)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(U(A,r),(n.mode&1)===0)n.memoizedState=null;else switch(l){case"forwards":t=n.child;for(l=null;t!==null;)e=t.alternate,e!==null&&El(e)===null&&(l=t),t=t.sibling;t=l,t===null?(l=n.child,n.child=null):(l=t.sibling,t.sibling=null),Lo(n,!1,l,t,o);break;case"backwards":t=null,l=n.child;for(n.child=null;l!==null;){if(e=l.alternate,e!==null&&El(e)===null){n.child=l;break}e=l.sibling,l.sibling=t,t=l,l=e}Lo(n,!0,t,null,o);break;case"together":Lo(n,!1,null,null,void 0);break;default:n.memoizedState=null}return n.child}function tl(e,n){(n.mode&1)===0&&e!==null&&(e.alternate=null,n.alternate=null,n.flags|=2)}function on(e,n,t){if(e!==null&&(n.dependencies=e.dependencies),On|=n.lanes,(t&n.childLanes)===0)return null;if(e!==null&&n.child!==e.child)throw Error(k(153));if(n.child!==null){e=n.child,t=Cn(e,e.pendingProps),n.child=t;for(t.return=n;e.sibling!==null;)e=e.sibling,t=t.sibling=Cn(e,e.pendingProps),t.return=n;t.sibling=null}return n.child}function p0(e,n,t){switch(n.tag){case 3:mc(n),yt();break;case 5:As(n);break;case 1:ke(n.type)&&hl(n);break;case 4:Ju(n,n.stateNode.containerInfo);break;case 10:var r=n.type._context,l=n.memoizedProps.value;U(kl,r._currentValue),r._currentValue=l;break;case 13:if(r=n.memoizedState,r!==null){if(r.dehydrated!==null)return U(A,A.current&1),n.flags|=128,null;if((t&n.child.childLanes)!==0)return hc(e,n,t);return U(A,A.current&1),e=on(e,n,t),e!==null?e.sibling:null}U(A,A.current&1);break;case 19:if(r=(t&n.childLanes)!==0,(e.flags&128)!==0){if(r)return yc(e,n,t);n.flags|=128}if(l=n.memoizedState,l!==null&&(l.rendering=null,l.tail=null,l.lastEffect=null),U(A,A.current),r)break;else return null;case 22:case 23:return n.lanes=0,pc(e,n,t)}return on(e,n,t)}function xt(e,n){if(!Q)switch(e.tailMode){case"hidden":n=e.tail;for(var t=null;n!==null;)n.alternate!==null&&(t=n),n=n.sibling;t===null?e.tail=null:t.sibling=null;break;case"collapsed":t=e.tail;for(var r=null;t!==null;)t.alternate!==null&&(r=t),t=t.sibling;r===null?n||e.tail===null?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ae(e){var n=e.alternate!==null&&e.alternate.child===e.child,t=0,r=0;if(n)for(var l=e.child;l!==null;)t|=l.lanes|l.childLanes,r|=l.subtreeFlags&14680064,r|=l.flags&14680064,l.return=e,l=l.sibling;else for(l=e.child;l!==null;)t|=l.lanes|l.childLanes,r|=l.subtreeFlags,r|=l.flags,l.return=e,l=l.sibling;return e.subtreeFlags|=r,e.childLanes=t,n}function v0(e,n,t){var r=n.pendingProps;switch(Ou(n),n.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return ae(n),null;case 1:return ke(n.type)&&ml(),ae(n),null;case 3:if(r=n.stateNode,kt(),$(ge),$(ce),qu(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),e===null||e.child===null)Yr(n)?n.flags|=4:e===null||e.memoizedState.isDehydrated&&(n.flags&256)===0||(n.flags|=1024,We!==null&&(_u(We),We=null));return hu(e,n),ae(n),null;case 5:Ku(n);var l=xn(pr.current);if(t=n.type,e!==null&&n.stateNode!=null)kc(e,n,t,r,l),e.ref!==n.ref&&(n.flags|=512,n.flags|=2097152);else{if(!r){if(n.stateNode===null)throw Error(k(166));return ae(n),null}if(e=xn(Je.current),Yr(n)){r=n.stateNode,t=n.type;var o=n.memoizedProps;switch(r[Be]=n,r[fr]=o,e=(n.mode&1)!==0,t){case"dialog":V("cancel",r),V("close",r);break;case"iframe":case"object":case"embed":V("load",r);break;case"video":case"audio":for(l=0;l<Xt.length;l++)V(Xt[l],r);break;case"source":V("error",r);break;case"img":case"image":case"link":V("error",r),V("load",r);break;case"details":V("toggle",r);break;case"input":$i(r,o),V("invalid",r);break;case"select":r._wrapperState={wasMultiple:!!o.multiple},V("invalid",r);break;case"textarea":Wi(r,o),V("invalid",r)}Ho(t,o),l=null;for(var u in o)if(o.hasOwnProperty(u)){var i=o[u];u==="children"?typeof i==="string"?r.textContent!==i&&(o.suppressHydrationWarning!==!0&&Ar(r.textContent,i,e),l=["children",i]):typeof i==="number"&&r.textContent!==""+i&&(o.suppressHydrationWarning!==!0&&Ar(r.textContent,i,e),l=["children",""+i]):nr.hasOwnProperty(u)&&i!=null&&u==="onScroll"&&V("scroll",r)}switch(t){case"input":Ur(r),Qi(r,o,!0);break;case"textarea":Ur(r),Hi(r);break;case"select":case"option":break;default:typeof o.onClick==="function"&&(r.onclick=vl)}r=l,n.updateQueue=r,r!==null&&(n.flags|=4)}else{u=l.nodeType===9?l:l.ownerDocument,e==="http://www.w3.org/1999/xhtml"&&(e=Za(t)),e==="http://www.w3.org/1999/xhtml"?t==="script"?(e=u.createElement("div"),e.innerHTML="<script><\/script>",e=e.removeChild(e.firstChild)):typeof r.is==="string"?e=u.createElement(t,{is:r.is}):(e=u.createElement(t),t==="select"&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,t),e[Be]=n,e[fr]=r,gc(e,n,!1,!1),n.stateNode=e;e:{switch(u=Oo(t,r),t){case"dialog":V("cancel",e),V("close",e),l=r;break;case"iframe":case"object":case"embed":V("load",e),l=r;break;case"video":case"audio":for(l=0;l<Xt.length;l++)V(Xt[l],e);l=r;break;case"source":V("error",e),l=r;break;case"img":case"image":case"link":V("error",e),V("load",e),l=r;break;case"details":V("toggle",e),l=r;break;case"input":$i(e,r),l=xo(e,r),V("invalid",e);break;case"option":l=r;break;case"select":e._wrapperState={wasMultiple:!!r.multiple},l=X({},r,{value:void 0}),V("invalid",e);break;case"textarea":Wi(e,r),l=Qo(e,r),V("invalid",e);break;default:l=r}Ho(t,l),i=l;for(o in i)if(i.hasOwnProperty(o)){var a=i[o];o==="style"?qa(e,a):o==="dangerouslySetInnerHTML"?(a=a?a.__html:void 0,a!=null&&Ja(e,a)):o==="children"?typeof a==="string"?(t!=="textarea"||a!=="")&&tr(e,a):typeof a==="number"&&tr(e,""+a):o!=="suppressContentEditableWarning"&&o!=="suppressHydrationWarning"&&o!=="autoFocus"&&(nr.hasOwnProperty(o)?a!=null&&o==="onScroll"&&V("scroll",e):a!=null&&zu(e,o,a,u))}switch(t){case"input":Ur(e),Qi(e,r,!1);break;case"textarea":Ur(e),Hi(e);break;case"option":r.value!=null&&e.setAttribute("value",""+_n(r.value));break;case"select":e.multiple=!!r.multiple,o=r.value,o!=null?st(e,!!r.multiple,o,!1):r.defaultValue!=null&&st(e,!!r.multiple,r.defaultValue,!0);break;default:typeof l.onClick==="function"&&(e.onclick=vl)}switch(t){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break e;case"img":r=!0;break e;default:r=!1}}r&&(n.flags|=4)}n.ref!==null&&(n.flags|=512,n.flags|=2097152)}return ae(n),null;case 6:if(e&&n.stateNode!=null)Sc(e,n,e.memoizedProps,r);else{if(typeof r!=="string"&&n.stateNode===null)throw Error(k(166));if(t=xn(pr.current),xn(Je.current),Yr(n)){if(r=n.stateNode,t=n.memoizedProps,r[Be]=n,o=r.nodeValue!==t){if(e=_e,e!==null)switch(e.tag){case 3:Ar(r.nodeValue,t,(e.mode&1)!==0);break;case 5:e.memoizedProps.suppressHydrationWarning!==!0&&Ar(r.nodeValue,t,(e.mode&1)!==0)}}o&&(n.flags|=4)}else r=(t.nodeType===9?t:t.ownerDocument).createTextNode(r),r[Be]=n,n.stateNode=r}return ae(n),null;case 13:if($(A),r=n.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(Q&&Ce!==null&&(n.mode&1)!==0&&(n.flags&128)===0)$s(),yt(),n.flags|=98560,o=!1;else if(o=Yr(n),r!==null&&r.dehydrated!==null){if(e===null){if(!o)throw Error(k(318));if(o=n.memoizedState,o=o!==null?o.dehydrated:null,!o)throw Error(k(317));o[Be]=n}else yt(),(n.flags&128)===0&&(n.memoizedState=null),n.flags|=4;ae(n),o=!1}else We!==null&&(_u(We),We=null),o=!0;if(!o)return n.flags&65536?n:null}if((n.flags&128)!==0)return n.lanes=t,n;return r=r!==null,r!==(e!==null&&e.memoizedState!==null)&&r&&(n.child.flags|=8192,(n.mode&1)!==0&&(e===null||(A.current&1)!==0?ee===0&&(ee=3):si())),n.updateQueue!==null&&(n.flags|=4),ae(n),null;case 4:return kt(),hu(e,n),e===null&&sr(n.stateNode.containerInfo),ae(n),null;case 10:return Gu(n.type._context),ae(n),null;case 17:return ke(n.type)&&ml(),ae(n),null;case 19:if($(A),o=n.memoizedState,o===null)return ae(n),null;if(r=(n.flags&128)!==0,u=o.rendering,u===null)if(r)xt(o,!1);else{if(ee!==0||e!==null&&(e.flags&128)!==0)for(e=n.child;e!==null;){if(u=El(e),u!==null){n.flags|=128,xt(o,!1),r=u.updateQueue,r!==null&&(n.updateQueue=r,n.flags|=4),n.subtreeFlags=0,r=t;for(t=n.child;t!==null;)o=t,e=r,o.flags&=14680066,u=o.alternate,u===null?(o.childLanes=0,o.lanes=e,o.child=null,o.subtreeFlags=0,o.memoizedProps=null,o.memoizedState=null,o.updateQueue=null,o.dependencies=null,o.stateNode=null):(o.childLanes=u.childLanes,o.lanes=u.lanes,o.child=u.child,o.subtreeFlags=0,o.deletions=null,o.memoizedProps=u.memoizedProps,o.memoizedState=u.memoizedState,o.updateQueue=u.updateQueue,o.type=u.type,e=u.dependencies,o.dependencies=e===null?null:{lanes:e.lanes,firstContext:e.firstContext}),t=t.sibling;return U(A,A.current&1|2),n.child}e=e.sibling}o.tail!==null&&Z()>wt&&(n.flags|=128,r=!0,xt(o,!1),n.lanes=4194304)}else{if(!r)if(e=El(u),e!==null){if(n.flags|=128,r=!0,t=e.updateQueue,t!==null&&(n.updateQueue=t,n.flags|=4),xt(o,!0),o.tail===null&&o.tailMode==="hidden"&&!u.alternate&&!Q)return ae(n),null}else 2*Z()-o.renderingStartTime>wt&&t!==1073741824&&(n.flags|=128,r=!0,xt(o,!1),n.lanes=4194304);o.isBackwards?(u.sibling=n.child,n.child=u):(t=o.last,t!==null?t.sibling=u:n.child=u,o.last=u)}if(o.tail!==null)return n=o.tail,o.rendering=n,o.tail=n.sibling,o.renderingStartTime=Z(),n.sibling=null,t=A.current,U(A,r?t&1|2:t&1),n;return ae(n),null;case 22:case 23:return ai(),r=n.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(n.flags|=8192),r&&(n.mode&1)!==0?(Ee&1073741824)!==0&&(ae(n),n.subtreeFlags&6&&(n.flags|=8192)):ae(n),null;case 24:return null;case 25:return null}throw Error(k(156,n.tag))}function m0(e,n){switch(Ou(n),n.tag){case 1:return ke(n.type)&&ml(),e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 3:return kt(),$(ge),$(ce),qu(),e=n.flags,(e&65536)!==0&&(e&128)===0?(n.flags=e&-65537|128,n):null;case 5:return Ku(n),null;case 13:if($(A),e=n.memoizedState,e!==null&&e.dehydrated!==null){if(n.alternate===null)throw Error(k(340));yt()}return e=n.flags,e&65536?(n.flags=e&-65537|128,n):null;case 19:return $(A),null;case 4:return kt(),null;case 10:return Gu(n.type._context),null;case 22:case 23:return ai(),null;case 24:return null;default:return null}}function it(e,n){var t=e.ref;if(t!==null)if(typeof t==="function")try{t(null)}catch(r){B(e,n,r)}else t.current=null}function yu(e,n,t){try{t()}catch(r){B(e,n,r)}}function y0(e,n){if(eu=fl,e=Ps(),Wu(e)){if("selectionStart"in e)var t={start:e.selectionStart,end:e.selectionEnd};else e:{t=(t=e.ownerDocument)&&t.defaultView||window;var r=t.getSelection&&t.getSelection();if(r&&r.rangeCount!==0){t=r.anchorNode;var{anchorOffset:l,focusNode:o}=r;r=r.focusOffset;try{t.nodeType,o.nodeType}catch(S){t=null;break e}var u=0,i=-1,a=-1,c=0,h=0,y=e,m=null;n:for(;;){for(var w;;){if(y!==t||l!==0&&y.nodeType!==3||(i=u+l),y!==o||r!==0&&y.nodeType!==3||(a=u+r),y.nodeType===3&&(u+=y.nodeValue.length),(w=y.firstChild)===null)break;m=y,y=w}for(;;){if(y===e)break n;if(m===t&&++c===l&&(i=u),m===o&&++h===r&&(a=u),(w=y.nextSibling)!==null)break;y=m,m=y.parentNode}y=w}t=i===-1||a===-1?null:{start:i,end:a}}else t=null}t=t||{start:0,end:0}}else t=null;nu={focusedElem:e,selectionRange:t},fl=!1;for(C=n;C!==null;)if(n=C,e=n.child,(n.subtreeFlags&1028)!==0&&e!==null)e.return=n,C=e;else for(;C!==null;){n=C;try{var E=n.alternate;if((n.flags&1024)!==0)switch(n.tag){case 0:case 11:case 15:break;case 1:if(E!==null){var{memoizedProps:_,memoizedState:x}=E,f=n.stateNode,s=f.getSnapshotBeforeUpdate(n.elementType===n.type?_:$e(n.type,_),x);f.__reactInternalSnapshotBeforeUpdate=s}break;case 3:var d=n.stateNode.containerInfo;d.nodeType===1?d.textContent="":d.nodeType===9&&d.documentElement&&d.removeChild(d.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(k(163))}}catch(S){B(n,n.return,S)}if(e=n.sibling,e!==null){e.return=n.return,C=e;break}C=n.return}return E=Ra,Ra=!1,E}function jt(e,n,t){var r=n.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var l=r=r.next;do{if((l.tag&e)===e){var o=l.destroy;l.destroy=void 0,o!==void 0&&yu(n,t,o)}l=l.next}while(l!==r)}}function $l(e,n){if(n=n.updateQueue,n=n!==null?n.lastEffect:null,n!==null){var t=n=n.next;do{if((t.tag&e)===e){var r=t.create;t.destroy=r()}t=t.next}while(t!==n)}}function gu(e){var n=e.ref;if(n!==null){var t=e.stateNode;switch(e.tag){case 5:e=t;break;default:e=t}typeof n==="function"?n(e):n.current=e}}function wc(e){var n=e.alternate;n!==null&&(e.alternate=null,wc(n)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(n=e.stateNode,n!==null&&(delete n[Be],delete n[fr],delete n[lu],delete n[bp],delete n[e0])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Ec(e){return e.tag===5||e.tag===3||e.tag===4}function Ia(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Ec(e.return))return null;e=e.return}e.sibling.return=e.return;for(e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2)continue e;if(e.child===null||e.tag===4)continue e;else e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function ku(e,n,t){var r=e.tag;if(r===5||r===6)e=e.stateNode,n?t.nodeType===8?t.parentNode.insertBefore(e,n):t.insertBefore(e,n):(t.nodeType===8?(n=t.parentNode,n.insertBefore(e,t)):(n=t,n.appendChild(e)),t=t._reactRootContainer,t!==null&&t!==void 0||n.onclick!==null||(n.onclick=vl));else if(r!==4&&(e=e.child,e!==null))for(ku(e,n,t),e=e.sibling;e!==null;)ku(e,n,t),e=e.sibling}function Su(e,n,t){var r=e.tag;if(r===5||r===6)e=e.stateNode,n?t.insertBefore(e,n):t.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Su(e,n,t),e=e.sibling;e!==null;)Su(e,n,t),e=e.sibling}function sn(e,n,t){for(t=t.child;t!==null;)Cc(e,n,t),t=t.sibling}function Cc(e,n,t){if(Ze&&typeof Ze.onCommitFiberUnmount==="function")try{Ze.onCommitFiberUnmount(Il,t)}catch(i){}switch(t.tag){case 5:se||it(t,n);case 6:var r=re,l=Qe;re=null,sn(e,n,t),re=r,Qe=l,re!==null&&(Qe?(e=re,t=t.stateNode,e.nodeType===8?e.parentNode.removeChild(t):e.removeChild(t)):re.removeChild(t.stateNode));break;case 18:re!==null&&(Qe?(e=re,t=t.stateNode,e.nodeType===8?wo(e.parentNode,t):e.nodeType===1&&wo(e,t),ur(e)):wo(re,t.stateNode));break;case 4:r=re,l=Qe,re=t.stateNode.containerInfo,Qe=!0,sn(e,n,t),re=r,Qe=l;break;case 0:case 11:case 14:case 15:if(!se&&(r=t.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var o=l,u=o.destroy;o=o.tag,u!==void 0&&((o&2)!==0?yu(t,n,u):(o&4)!==0&&yu(t,n,u)),l=l.next}while(l!==r)}sn(e,n,t);break;case 1:if(!se&&(it(t,n),r=t.stateNode,typeof r.componentWillUnmount==="function"))try{r.props=t.memoizedProps,r.state=t.memoizedState,r.componentWillUnmount()}catch(i){B(t,n,i)}sn(e,n,t);break;case 21:sn(e,n,t);break;case 22:t.mode&1?(se=(r=se)||t.memoizedState!==null,sn(e,n,t),se=r):sn(e,n,t);break;default:sn(e,n,t)}}function Fa(e){var n=e.updateQueue;if(n!==null){e.updateQueue=null;var t=e.stateNode;t===null&&(t=e.stateNode=new h0),n.forEach(function(r){var l=N0.bind(null,e,r);t.has(r)||(t.add(r),r.then(l,l))})}}function Ve(e,n){var t=n.deletions;if(t!==null)for(var r=0;r<t.length;r++){var l=t[r];try{var o=e,u=n,i=u;e:for(;i!==null;){switch(i.tag){case 5:re=i.stateNode,Qe=!1;break e;case 3:re=i.stateNode.containerInfo,Qe=!0;break e;case 4:re=i.stateNode.containerInfo,Qe=!0;break e}i=i.return}if(re===null)throw Error(k(160));Cc(o,u,l),re=null,Qe=!1;var a=l.alternate;a!==null&&(a.return=null),l.return=null}catch(c){B(l,n,c)}}if(n.subtreeFlags&12854)for(n=n.child;n!==null;)_c(n,e),n=n.sibling}function _c(e,n){var{alternate:t,flags:r}=e;switch(e.tag){case 0:case 11:case 14:case 15:if(Ve(n,e),Xe(e),r&4){try{jt(3,e,e.return),$l(3,e)}catch(_){B(e,e.return,_)}try{jt(5,e,e.return)}catch(_){B(e,e.return,_)}}break;case 1:Ve(n,e),Xe(e),r&512&&t!==null&&it(t,t.return);break;case 5:if(Ve(n,e),Xe(e),r&512&&t!==null&&it(t,t.return),e.flags&32){var l=e.stateNode;try{tr(l,"")}catch(_){B(e,e.return,_)}}if(r&4&&(l=e.stateNode,l!=null)){var o=e.memoizedProps,u=t!==null?t.memoizedProps:o,i=e.type,a=e.updateQueue;if(e.updateQueue=null,a!==null)try{i==="input"&&o.type==="radio"&&o.name!=null&&Ga(l,o),Oo(i,u);var c=Oo(i,o);for(u=0;u<a.length;u+=2){var h=a[u],y=a[u+1];h==="style"?qa(l,y):h==="dangerouslySetInnerHTML"?Ja(l,y):h==="children"?tr(l,y):zu(l,h,y,c)}switch(i){case"input":Vo(l,o);break;case"textarea":Ba(l,o);break;case"select":var m=l._wrapperState.wasMultiple;l._wrapperState.wasMultiple=!!o.multiple;var w=o.value;w!=null?st(l,!!o.multiple,w,!1):m!==!!o.multiple&&(o.defaultValue!=null?st(l,!!o.multiple,o.defaultValue,!0):st(l,!!o.multiple,o.multiple?[]:"",!1))}l[fr]=o}catch(_){B(e,e.return,_)}}break;case 6:if(Ve(n,e),Xe(e),r&4){if(e.stateNode===null)throw Error(k(162));l=e.stateNode,o=e.memoizedProps;try{l.nodeValue=o}catch(_){B(e,e.return,_)}}break;case 3:if(Ve(n,e),Xe(e),r&4&&t!==null&&t.memoizedState.isDehydrated)try{ur(n.containerInfo)}catch(_){B(e,e.return,_)}break;case 4:Ve(n,e),Xe(e);break;case 13:Ve(n,e),Xe(e),l=e.child,l.flags&8192&&(o=l.memoizedState!==null,l.stateNode.isHidden=o,!o||l.alternate!==null&&l.alternate.memoizedState!==null||(ui=Z())),r&4&&Fa(e);break;case 22:if(h=t!==null&&t.memoizedState!==null,e.mode&1?(se=(c=se)||h,Ve(n,e),se=c):Ve(n,e),Xe(e),r&8192){if(c=e.memoizedState!==null,(e.stateNode.isHidden=c)&&!h&&(e.mode&1)!==0)for(C=e,h=e.child;h!==null;){for(y=C=h;C!==null;){switch(m=C,w=m.child,m.tag){case 0:case 11:case 14:case 15:jt(4,m,m.return);break;case 1:it(m,m.return);var E=m.stateNode;if(typeof E.componentWillUnmount==="function"){r=m,t=m.return;try{n=r,E.props=n.memoizedProps,E.state=n.memoizedState,E.componentWillUnmount()}catch(_){B(r,t,_)}}break;case 5:it(m,m.return);break;case 22:if(m.memoizedState!==null){Ta(y);continue}}w!==null?(w.return=m,C=w):Ta(y)}h=h.sibling}e:for(h=null,y=e;;){if(y.tag===5){if(h===null){h=y;try{l=y.stateNode,c?(o=l.style,typeof o.setProperty==="function"?o.setProperty("display","none","important"):o.display="none"):(i=y.stateNode,a=y.memoizedProps.style,u=a!==void 0&&a!==null&&a.hasOwnProperty("display")?a.display:null,i.style.display=Ka("display",u))}catch(_){B(e,e.return,_)}}}else if(y.tag===6){if(h===null)try{y.stateNode.nodeValue=c?"":y.memoizedProps}catch(_){B(e,e.return,_)}}else if((y.tag!==22&&y.tag!==23||y.memoizedState===null||y===e)&&y.child!==null){y.child.return=y,y=y.child;continue}if(y===e)break e;for(;y.sibling===null;){if(y.return===null||y.return===e)break e;h===y&&(h=null),y=y.return}h===y&&(h=null),y.sibling.return=y.return,y=y.sibling}}break;case 19:Ve(n,e),Xe(e),r&4&&Fa(e);break;case 21:break;default:Ve(n,e),Xe(e)}}function Xe(e){var n=e.flags;if(n&2){try{e:{for(var t=e.return;t!==null;){if(Ec(t)){var r=t;break e}t=t.return}throw Error(k(160))}switch(r.tag){case 5:var l=r.stateNode;r.flags&32&&(tr(l,""),r.flags&=-33);var o=Ia(e);Su(e,o,l);break;case 3:case 4:var u=r.stateNode.containerInfo,i=Ia(e);ku(e,i,u);break;default:throw Error(k(161))}}catch(a){B(e,e.return,a)}e.flags&=-3}n&4096&&(e.flags&=-4097)}function g0(e,n,t){C=e,Pc(e,n,t)}function Pc(e,n,t){for(var r=(e.mode&1)!==0;C!==null;){var l=C,o=l.child;if(l.tag===22&&r){var u=l.memoizedState!==null||Br;if(!u){var i=l.alternate,a=i!==null&&i.memoizedState!==null||se;i=Br;var c=se;if(Br=u,(se=a)&&!c)for(C=l;C!==null;)u=C,a=u.child,u.tag===22&&u.memoizedState!==null?Ma(l):a!==null?(a.return=u,C=a):Ma(l);for(;o!==null;)C=o,Pc(o,n,t),o=o.sibling;C=l,Br=i,se=c}Da(e,n,t)}else(l.subtreeFlags&8772)!==0&&o!==null?(o.return=l,C=o):Da(e,n,t)}}function Da(e){for(;C!==null;){var n=C;if((n.flags&8772)!==0){var t=n.alternate;try{if((n.flags&8772)!==0)switch(n.tag){case 0:case 11:case 15:se||$l(5,n);break;case 1:var r=n.stateNode;if(n.flags&4&&!se)if(t===null)r.componentDidMount();else{var l=n.elementType===n.type?t.memoizedProps:$e(n.type,t.memoizedProps);r.componentDidUpdate(l,t.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var o=n.updateQueue;o!==null&&ha(n,o,r);break;case 3:var u=n.updateQueue;if(u!==null){if(t=null,n.child!==null)switch(n.child.tag){case 5:t=n.child.stateNode;break;case 1:t=n.child.stateNode}ha(n,u,t)}break;case 5:var i=n.stateNode;if(t===null&&n.flags&4){t=i;var a=n.memoizedProps;switch(n.type){case"button":case"input":case"select":case"textarea":a.autoFocus&&t.focus();break;case"img":a.src&&(t.src=a.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(n.memoizedState===null){var c=n.alternate;if(c!==null){var h=c.memoizedState;if(h!==null){var y=h.dehydrated;y!==null&&ur(y)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;default:throw Error(k(163))}se||n.flags&512&&gu(n)}catch(m){B(n,n.return,m)}}if(n===e){C=null;break}if(t=n.sibling,t!==null){t.return=n.return,C=t;break}C=n.return}}function Ta(e){for(;C!==null;){var n=C;if(n===e){C=null;break}var t=n.sibling;if(t!==null){t.return=n.return,C=t;break}C=n.return}}function Ma(e){for(;C!==null;){var n=C;try{switch(n.tag){case 0:case 11:case 15:var t=n.return;try{$l(4,n)}catch(a){B(n,t,a)}break;case 1:var r=n.stateNode;if(typeof r.componentDidMount==="function"){var l=n.return;try{r.componentDidMount()}catch(a){B(n,l,a)}}var o=n.return;try{gu(n)}catch(a){B(n,o,a)}break;case 5:var u=n.return;try{gu(n)}catch(a){B(n,u,a)}}}catch(a){B(n,n.return,a)}if(n===e){C=null;break}var i=n.sibling;if(i!==null){i.return=n.return,C=i;break}C=n.return}}function pe(){return(D&6)!==0?Z():rl!==-1?rl:rl=Z()}function En(e){if((e.mode&1)===0)return 1;if((D&2)!==0&&le!==0)return le&-le;if(t0.transition!==null)return ll===0&&(ll=ss()),ll;if(e=T,e!==0)return e;return e=window.event,e=e===void 0?16:hs(e.type),e}function Oe(e,n,t,r){if(50<er)throw er=0,Eu=null,Error(k(185));if(gr(e,t,r),(D&2)===0||e!==te)e===te&&((D&2)===0&&(Ql|=t),ee===4&&pn(e,le)),Se(e,r),t===1&&D===0&&(n.mode&1)===0&&(wt=Z()+500,Ul&&Ln())}function Se(e,n){var t=e.callbackNode;lp(e,n);var r=cl(e,e===te?le:0);if(r===0)t!==null&&Yi(t),e.callbackNode=null,e.callbackPriority=0;else if(n=r&-r,e.callbackPriority!==n){if(t!=null&&Yi(t),n===1)e.tag===0?n0(Ua.bind(null,e)):Us(Ua.bind(null,e)),qp(function(){(D&6)===0&&Ln()}),t=null;else{switch(cs(r)){case 1:t=Du;break;case 4:t=is;break;case 16:t=sl;break;case 536870912:t=as;break;default:t=sl}t=Tc(t,Nc.bind(null,e))}e.callbackPriority=n,e.callbackNode=t}}function Nc(e,n){if(rl=-1,ll=0,(D&6)!==0)throw Error(k(327));var t=e.callbackNode;if(vt()&&e.callbackNode!==t)return null;var r=cl(e,e===te?le:0);if(r===0)return null;if((r&30)!==0||(r&e.expiredLanes)!==0||n)n=Ll(e,r);else{n=r;var l=D;D|=2;var o=Lc();if(te!==e||le!==n)qe=null,wt=Z()+500,Vn(e,n);do try{E0();break}catch(i){zc(e,i)}while(1);Xu(),Pl.current=o,D=l,j!==null?n=0:(te=null,le=0,n=ee)}if(n!==0){if(n===2&&(l=Bo(e),l!==0&&(r=l,n=Cu(e,l))),n===1)throw t=yr,Vn(e,0),pn(e,r),Se(e,Z()),t;if(n===6)pn(e,r);else{if(l=e.current.alternate,(r&30)===0&&!S0(l)&&(n=Ll(e,r),n===2&&(o=Bo(e),o!==0&&(r=o,n=Cu(e,o))),n===1))throw t=yr,Vn(e,0),pn(e,r),Se(e,Z()),t;switch(e.finishedWork=l,e.finishedLanes=r,n){case 0:case 1:throw Error(k(345));case 2:Tn(e,he,qe);break;case 3:if(pn(e,r),(r&130023424)===r&&(n=ui+500-Z(),10<n)){if(cl(e,0)!==0)break;if(l=e.suspendedLanes,(l&r)!==r){pe(),e.pingedLanes|=e.suspendedLanes&l;break}e.timeoutHandle=ru(Tn.bind(null,e,he,qe),n);break}Tn(e,he,qe);break;case 4:if(pn(e,r),(r&4194240)===r)break;n=e.eventTimes;for(l=-1;0<r;){var u=31-He(r);o=1<<u,u=n[u],u>l&&(l=u),r&=~o}if(r=l,r=Z()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3000>r?3000:4320>r?4320:1960*k0(r/1960))-r,10<r){e.timeoutHandle=ru(Tn.bind(null,e,he,qe),r);break}Tn(e,he,qe);break;case 5:Tn(e,he,qe);break;default:throw Error(k(329))}}}return Se(e,Z()),e.callbackNode===t?Nc.bind(null,e):null}function Cu(e,n){var t=bt;return e.current.memoizedState.isDehydrated&&(Vn(e,n).flags|=256),e=Ll(e,n),e!==2&&(n=he,he=t,n!==null&&_u(n)),e}function _u(e){he===null?he=e:he.push.apply(he,e)}function S0(e){for(var n=e;;){if(n.flags&16384){var t=n.updateQueue;if(t!==null&&(t=t.stores,t!==null))for(var r=0;r<t.length;r++){var l=t[r],o=l.getSnapshot;l=l.value;try{if(!Ae(o(),l))return!1}catch(u){return!1}}}if(t=n.child,n.subtreeFlags&16384&&t!==null)t.return=n,n=t;else{if(n===e)break;for(;n.sibling===null;){if(n.return===null||n.return===e)return!0;n=n.return}n.sibling.return=n.return,n=n.sibling}}return!0}function pn(e,n){n&=~oi,n&=~Ql,e.suspendedLanes|=n,e.pingedLanes&=~n;for(e=e.expirationTimes;0<n;){var t=31-He(n),r=1<<t;e[t]=-1,n&=~r}}function Ua(e){if((D&6)!==0)throw Error(k(327));vt();var n=cl(e,0);if((n&1)===0)return Se(e,Z()),null;var t=Ll(e,n);if(e.tag!==0&&t===2){var r=Bo(e);r!==0&&(n=r,t=Cu(e,r))}if(t===1)throw t=yr,Vn(e,0),pn(e,n),Se(e,Z()),t;if(t===6)throw Error(k(345));return e.finishedWork=e.current.alternate,e.finishedLanes=n,Tn(e,he,qe),Se(e,Z()),null}function ii(e,n){var t=D;D|=1;try{return e(n)}finally{D=t,D===0&&(wt=Z()+500,Ul&&Ln())}}function An(e){mn!==null&&mn.tag===0&&(D&6)===0&&vt();var n=D;D|=1;var t=Ie.transition,r=T;try{if(Ie.transition=null,T=1,e)return e()}finally{T=r,Ie.transition=t,D=n,(D&6)===0&&Ln()}}function ai(){Ee=at.current,$(at)}function Vn(e,n){e.finishedWork=null,e.finishedLanes=0;var t=e.timeoutHandle;if(t!==-1&&(e.timeoutHandle=-1,Kp(t)),j!==null)for(t=j.return;t!==null;){var r=t;switch(Ou(r),r.tag){case 1:r=r.type.childContextTypes,r!==null&&r!==void 0&&ml();break;case 3:kt(),$(ge),$(ce),qu();break;case 5:Ku(r);break;case 4:kt();break;case 13:$(A);break;case 19:$(A);break;case 10:Gu(r.type._context);break;case 22:case 23:ai()}t=t.return}if(te=e,j=e=Cn(e.current,null),le=Ee=n,ee=0,yr=null,oi=Ql=On=0,he=bt=null,Un!==null){for(n=0;n<Un.length;n++)if(t=Un[n],r=t.interleaved,r!==null){t.interleaved=null;var l=r.next,o=t.pending;if(o!==null){var u=o.next;o.next=l,r.next=u}t.pending=r}Un=null}return e}function zc(e,n){do{var t=j;try{if(Xu(),el.current=_l,Cl){for(var r=Y.memoizedState;r!==null;){var l=r.queue;l!==null&&(l.pending=null),r=r.next}Cl=!1}if(Hn=0,ne=b=Y=null,qt=!1,vr=0,li.current=null,t===null||t.return===null){ee=1,yr=n,j=null;break}e:{var o=e,u=t.return,i=t,a=n;if(n=le,i.flags|=32768,a!==null&&typeof a==="object"&&typeof a.then==="function"){var c=a,h=i,y=h.tag;if((h.mode&1)===0&&(y===0||y===11||y===15)){var m=h.alternate;m?(h.updateQueue=m.updateQueue,h.memoizedState=m.memoizedState,h.lanes=m.lanes):(h.updateQueue=null,h.memoizedState=null)}var w=Ea(u);if(w!==null){w.flags&=-257,Ca(w,u,i,o,n),w.mode&1&&wa(o,c,n),n=w,a=c;var E=n.updateQueue;if(E===null){var _=new Set;_.add(a),n.updateQueue=_}else E.add(a);break e}else{if((n&1)===0){wa(o,c,n),si();break e}a=Error(k(426))}}else if(Q&&i.mode&1){var x=Ea(u);if(x!==null){(x.flags&65536)===0&&(x.flags|=256),Ca(x,u,i,o,n),Au(St(a,i));break e}}o=a=St(a,i),ee!==4&&(ee=2),bt===null?bt=[o]:bt.push(o),o=u;do{switch(o.tag){case 3:o.flags|=65536,n&=-n,o.lanes|=n;var f=cc(o,a,n);ma(o,f);break e;case 1:i=a;var{type:s,stateNode:d}=o;if((o.flags&128)===0&&(typeof s.getDerivedStateFromError==="function"||d!==null&&typeof d.componentDidCatch==="function"&&(wn===null||!wn.has(d)))){o.flags|=65536,n&=-n,o.lanes|=n;var S=fc(o,i,n);ma(o,S);break e}}o=o.return}while(o!==null)}Ic(t)}catch(P){n=P,j===t&&t!==null&&(j=t=t.return);continue}break}while(1)}function Lc(){var e=Pl.current;return Pl.current=_l,e===null?_l:e}function si(){if(ee===0||ee===3||ee===2)ee=4;te===null||(On&268435455)===0&&(Ql&268435455)===0||pn(te,le)}function Ll(e,n){var t=D;D|=2;var r=Lc();if(te!==e||le!==n)qe=null,Vn(e,n);do try{w0();break}catch(l){zc(e,l)}while(1);if(Xu(),D=t,Pl.current=r,j!==null)throw Error(k(261));return te=null,le=0,ee}function w0(){for(;j!==null;)Rc(j)}function E0(){for(;j!==null&&!Jd();)Rc(j)}function Rc(e){var n=Dc(e.alternate,e,Ee);e.memoizedProps=e.pendingProps,n===null?Ic(e):j=n,li.current=null}function Ic(e){var n=e;do{var t=n.alternate;if(e=n.return,(n.flags&32768)===0){if(t=v0(t,n,Ee),t!==null){j=t;return}}else{if(t=m0(t,n),t!==null){t.flags&=32767,j=t;return}if(e!==null)e.flags|=32768,e.subtreeFlags=0,e.deletions=null;else{ee=6,j=null;return}}if(n=n.sibling,n!==null){j=n;return}j=n=e}while(n!==null);ee===0&&(ee=5)}function Tn(e,n,t){var r=T,l=Ie.transition;try{Ie.transition=null,T=1,C0(e,n,t,r)}finally{Ie.transition=l,T=r}return null}function C0(e,n,t,r){do vt();while(mn!==null);if((D&6)!==0)throw Error(k(327));t=e.finishedWork;var l=e.finishedLanes;if(t===null)return null;if(e.finishedWork=null,e.finishedLanes=0,t===e.current)throw Error(k(177));e.callbackNode=null,e.callbackPriority=0;var o=t.lanes|t.childLanes;if(op(e,o),e===te&&(j=te=null,le=0),(t.subtreeFlags&2064)===0&&(t.flags&2064)===0||Zr||(Zr=!0,Tc(sl,function(){return vt(),null})),o=(t.flags&15990)!==0,(t.subtreeFlags&15990)!==0||o){o=Ie.transition,Ie.transition=null;var u=T;T=1;var i=D;D|=4,li.current=null,y0(e,t),_c(t,e),Xp(nu),fl=!!eu,nu=eu=null,e.current=t,g0(t,e,l),Kd(),D=i,T=u,Ie.transition=o}else e.current=t;if(Zr&&(Zr=!1,mn=e,zl=l),o=e.pendingLanes,o===0&&(wn=null),bd(t.stateNode,r),Se(e,Z()),n!==null)for(r=e.onRecoverableError,t=0;t<n.length;t++)l=n[t],r(l.value,{componentStack:l.stack,digest:l.digest});if(Nl)throw Nl=!1,e=wu,wu=null,e;return(zl&1)!==0&&e.tag!==0&&vt(),o=e.pendingLanes,(o&1)!==0?e===Eu?er++:(er=0,Eu=e):er=0,Ln(),null}function vt(){if(mn!==null){var e=cs(zl),n=Ie.transition,t=T;try{if(Ie.transition=null,T=16>e?16:e,mn===null)var r=!1;else{if(e=mn,mn=null,zl=0,(D&6)!==0)throw Error(k(331));var l=D;D|=4;for(C=e.current;C!==null;){var o=C,u=o.child;if((C.flags&16)!==0){var i=o.deletions;if(i!==null){for(var a=0;a<i.length;a++){var c=i[a];for(C=c;C!==null;){var h=C;switch(h.tag){case 0:case 11:case 15:jt(8,h,o)}var y=h.child;if(y!==null)y.return=h,C=y;else for(;C!==null;){h=C;var{sibling:m,return:w}=h;if(wc(h),h===c){C=null;break}if(m!==null){m.return=w,C=m;break}C=w}}}var E=o.alternate;if(E!==null){var _=E.child;if(_!==null){E.child=null;do{var x=_.sibling;_.sibling=null,_=x}while(_!==null)}}C=o}}if((o.subtreeFlags&2064)!==0&&u!==null)u.return=o,C=u;else e:for(;C!==null;){if(o=C,(o.flags&2048)!==0)switch(o.tag){case 0:case 11:case 15:jt(9,o,o.return)}var f=o.sibling;if(f!==null){f.return=o.return,C=f;break e}C=o.return}}var s=e.current;for(C=s;C!==null;){u=C;var d=u.child;if((u.subtreeFlags&2064)!==0&&d!==null)d.return=u,C=d;else e:for(u=s;C!==null;){if(i=C,(i.flags&2048)!==0)try{switch(i.tag){case 0:case 11:case 15:$l(9,i)}}catch(P){B(i,i.return,P)}if(i===u){C=null;break e}var S=i.sibling;if(S!==null){S.return=i.return,C=S;break e}C=i.return}}if(D=l,Ln(),Ze&&typeof Ze.onPostCommitFiberRoot==="function")try{Ze.onPostCommitFiberRoot(Il,e)}catch(P){}r=!0}return r}finally{T=t,Ie.transition=n}}return!1}function xa(e,n,t){n=St(t,n),n=cc(e,n,1),e=Sn(e,n,1),n=pe(),e!==null&&(gr(e,1,n),Se(e,n))}function B(e,n,t){if(e.tag===3)xa(e,e,t);else for(;n!==null;){if(n.tag===3){xa(n,e,t);break}else if(n.tag===1){var r=n.stateNode;if(typeof n.type.getDerivedStateFromError==="function"||typeof r.componentDidCatch==="function"&&(wn===null||!wn.has(r))){e=St(t,e),e=fc(n,e,1),n=Sn(n,e,1),e=pe(),n!==null&&(gr(n,1,e),Se(n,e));break}}n=n.return}}function _0(e,n,t){var r=e.pingCache;r!==null&&r.delete(n),n=pe(),e.pingedLanes|=e.suspendedLanes&t,te===e&&(le&t)===t&&(ee===4||ee===3&&(le&130023424)===le&&500>Z()-ui?Vn(e,0):oi|=t),Se(e,n)}function Fc(e,n){n===0&&((e.mode&1)===0?n=1:(n=$r,$r<<=1,($r&130023424)===0&&($r=4194304)));var t=pe();e=ln(e,n),e!==null&&(gr(e,n,t),Se(e,t))}function P0(e){var n=e.memoizedState,t=0;n!==null&&(t=n.retryLane),Fc(e,t)}function N0(e,n){var t=0;switch(e.tag){case 13:var{stateNode:r,memoizedState:l}=e;l!==null&&(t=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(k(314))}r!==null&&r.delete(n),Fc(e,t)}function Tc(e,n){return us(e,n)}function z0(e,n,t,r){this.tag=e,this.key=t,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=n,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Re(e,n,t,r){return new z0(e,n,t,r)}function ci(e){return e=e.prototype,!(!e||!e.isReactComponent)}function L0(e){if(typeof e==="function")return ci(e)?1:0;if(e!==void 0&&e!==null){if(e=e.$$typeof,e===Ru)return 11;if(e===Iu)return 14}return 2}function Cn(e,n){var t=e.alternate;return t===null?(t=Re(e.tag,n,e.key,e.mode),t.elementType=e.elementType,t.type=e.type,t.stateNode=e.stateNode,t.alternate=e,e.alternate=t):(t.pendingProps=n,t.type=e.type,t.flags=0,t.subtreeFlags=0,t.deletions=null),t.flags=e.flags&14680064,t.childLanes=e.childLanes,t.lanes=e.lanes,t.child=e.child,t.memoizedProps=e.memoizedProps,t.memoizedState=e.memoizedState,t.updateQueue=e.updateQueue,n=e.dependencies,t.dependencies=n===null?null:{lanes:n.lanes,firstContext:n.firstContext},t.sibling=e.sibling,t.index=e.index,t.ref=e.ref,t}function ol(e,n,t,r,l,o){var u=2;if(r=e,typeof e==="function")ci(e)&&(u=1);else if(typeof e==="string")u=5;else e:switch(e){case jn:return $n(t.children,l,o,n);case Lu:u=8,l|=8;break;case Do:return e=Re(12,t,n,l|2),e.elementType=Do,e.lanes=o,e;case To:return e=Re(13,t,n,l),e.elementType=To,e.lanes=o,e;case Mo:return e=Re(19,t,n,l),e.elementType=Mo,e.lanes=o,e;case Aa:return Wl(t,l,o,n);default:if(typeof e==="object"&&e!==null)switch(e.$$typeof){case Ha:u=10;break e;case Oa:u=9;break e;case Ru:u=11;break e;case Iu:u=14;break e;case cn:u=16,r=null;break e}throw Error(k(130,e==null?e:typeof e,""))}return n=Re(u,t,n,l),n.elementType=e,n.type=r,n.lanes=o,n}function $n(e,n,t,r){return e=Re(7,e,r,n),e.lanes=t,e}function Wl(e,n,t,r){return e=Re(22,e,r,n),e.elementType=Aa,e.lanes=t,e.stateNode={isHidden:!1},e}function Ro(e,n,t){return e=Re(6,e,null,n),e.lanes=t,e}function Io(e,n,t){return n=Re(4,e.children!==null?e.children:[],e.key,n),n.lanes=t,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function R0(e,n,t,r,l){this.tag=n,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=vo(0),this.expirationTimes=vo(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=vo(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function fi(e,n,t,r,l,o,u,i,a){return e=new R0(e,n,t,i,a),n===1?(n=1,o===!0&&(n|=8)):n=0,o=Re(3,null,null,n),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:t,cache:null,transitions:null,pendingSuspenseBoundaries:null},Zu(o),e}function I0(e,n,t){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:qn,key:r==null?null:""+r,children:e,containerInfo:n,implementation:t}}function Mc(e){if(!e)return Pn;e=e._reactInternals;e:{if(Xn(e)!==e||e.tag!==1)throw Error(k(170));var n=e;do{switch(n.tag){case 3:n=n.stateNode.context;break e;case 1:if(ke(n.type)){n=n.stateNode.__reactInternalMemoizedMergedChildContext;break e}}n=n.return}while(n!==null);throw Error(k(171))}if(e.tag===1){var t=e.type;if(ke(t))return Ms(e,t,n)}return n}function Uc(e,n,t,r,l,o,u,i,a){return e=fi(t,r,!0,e,l,o,u,i,a),e.context=Mc(null),t=e.current,r=pe(),l=En(t),o=nn(r,l),o.callback=n!==void 0&&n!==null?n:null,Sn(t,o,l),e.current.lanes=l,gr(e,l,r),Se(e,r),e}function Hl(e,n,t,r){var l=n.current,o=pe(),u=En(l);return t=Mc(t),n.context===null?n.context=t:n.pendingContext=t,n=nn(o,u),n.payload={element:e},r=r===void 0?null:r,r!==null&&(n.callback=r),e=Sn(l,n,u),e!==null&&(Oe(e,l,u,o),br(e,l,u)),u}function Rl(e){if(e=e.current,!e.child)return null;switch(e.child.tag){case 5:return e.child.stateNode;default:return e.child.stateNode}}function Va(e,n){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var t=e.retryLane;e.retryLane=t!==0&&t<n?t:n}}function di(e,n){Va(e,n),(e=e.alternate)&&Va(e,n)}function F0(){return null}function pi(e){this._internalRoot=e}function Ol(e){this._internalRoot=e}function vi(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function Al(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11&&(e.nodeType!==8||e.nodeValue!==" react-mount-point-unstable "))}function $a(){}function D0(e,n,t,r,l){if(l){if(typeof r==="function"){var o=r;r=function(){var c=Rl(u);o.call(c)}}var u=Uc(n,r,e,0,null,!1,!1,"",$a);return e._reactRootContainer=u,e[rn]=u.current,sr(e.nodeType===8?e.parentNode:e),An(),u}for(;l=e.lastChild;)e.removeChild(l);if(typeof r==="function"){var i=r;r=function(){var c=Rl(a);i.call(c)}}var a=fi(e,0,!1,null,null,!1,!1,"",$a);return e._reactRootContainer=a,e[rn]=a.current,sr(e.nodeType===8?e.parentNode:e),An(function(){Hl(n,a,t,r)}),a}function Yl(e,n,t,r,l){var o=t._reactRootContainer;if(o){var u=o;if(typeof l==="function"){var i=l;l=function(){var a=Rl(u);i.call(a)}}Hl(n,u,e,l)}else u=D0(t,n,e,l,r);return Rl(u)}var Qa,W,Wa,nr,tn,Fo,Ud,Ui,xi,oe,Pu,un,Mr,qn,jn,Lu,Do,Ha,Oa,Ru,To,Mo,Iu,cn,Aa,Vi,X,so,co=!1,Qt,xr,Ja,Gt,Od,Ad,Ao=null,Yo=null,ct=null,ft=null,po=!1,Xo=!1,Fn,Bt=!1,il=null,al=!1,Go=null,Xd,us,Yi,Jd,Kd,Z,qd,Du,is,sl,jd,as,Il=null,Ze=null,He,ep,np,Vr=64,$r=4194304,T=0,fs,Mu,ds,ps,vs,Zo=!1,Qr,hn=null,yn=null,gn=null,lr,or,dn,up,dt,fl=!0,dl=null,vn=null,xu=null,Kr=null,Et,Vu,kr,fp,mo,ho,Mt,Fl,Zi,dp,pp,vp,yo,mp,hp,yp,gp,kp,Ji,Sp,wp,Ep,_p,Pp,Np,Ki,zp,Lp,Rp,Ip,Fp,Dp,Tp,Qu,Zt=null,Mp,gs,qi,ji=!1,bn=!1,Vp,Jt=null,ir=null,Es=!1,Ht,Ot,jr,Ae,Gp,et=null,Ko=null,Kt=null,qo=!1,nt,go,Ns,zs,Ls,Rs,Is,Fs,la,Yt,jo,bo,At,Xt,Bp,Or,Zp,Jp,eu=null,nu=null,ru,Kp,aa,qp,Ct,Be,fr,rn,lu,bp,e0,ou,rt=-1,Pn,ce,ge,Qn,je=null,Ul=!1,Eo=!1,lt,ot=0,yl=null,gl=0,ze,Le=0,Wn=null,be=1,en="",_e=null,Ce=null,Q=!1,We=null,t0,gt,Ws,kl,Sl=null,ut=null,Yu=null,Un=null,fn=!1,wr,Je,dr,pr,A,Co,el,_o,Hn=0,Y=null,b=null,ne=null,Cl=!1,qt=!1,vr=0,r0=0,_l,i0,a0,s0,Vl,c0,f0,ye=!1,vu,gc,hu,kc,Sc,Br=!1,se=!1,h0,C=null,Ra=!1,re=null,Qe=!1,k0,Pl,li,Ie,D=0,te=null,j=null,le=0,Ee=0,at,ee=0,yr=null,On=0,Ql=0,oi=0,bt=null,he=null,ui=0,wt=1/0,qe=null,Nl=!1,wu=null,wn=null,Zr=!1,mn=null,zl=0,er=0,Eu=null,rl=-1,ll=0,Dc,xc,T0,Vt,M0,Kn,Vc,$c=function(e,n){var t=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!vi(n))throw Error(k(200));return I0(e,n,null,t)},Qc=function(e,n){if(!vi(e))throw Error(k(299));var t=!1,r="",l=xc;return n!==null&&n!==void 0&&(n.unstable_strictMode===!0&&(t=!0),n.identifierPrefix!==void 0&&(r=n.identifierPrefix),n.onRecoverableError!==void 0&&(l=n.onRecoverableError)),n=fi(e,1,!1,null,null,t,!1,r,l),e[rn]=n.current,sr(e.nodeType===8?e.parentNode:e),new pi(n)},Wc=function(e){if(e==null)return null;if(e.nodeType===1)return e;var n=e._reactInternals;if(n===void 0){if(typeof e.render==="function")throw Error(k(188));throw e=Object.keys(e).join(","),Error(k(268,e))}return e=ls(n),e=e===null?null:e.stateNode,e},Hc=function(e){return An(e)},Oc=function(e,n,t){if(!Al(n))throw Error(k(200));return Yl(null,e,n,!0,t)},Ac=function(e,n,t){if(!vi(e))throw Error(k(405));var r=t!=null&&t.hydratedSources||null,l=!1,o="",u=xc;if(t!==null&&t!==void 0&&(t.unstable_strictMode===!0&&(l=!0),t.identifierPrefix!==void 0&&(o=t.identifierPrefix),t.onRecoverableError!==void 0&&(u=t.onRecoverableError)),n=Uc(n,null,e,1,t!=null?t:null,l,!1,o,u),e[rn]=n.current,sr(e),r)for(e=0;e<r.length;e++)t=r[e],l=t._getVersion,l=l(t._source),n.mutableSourceEagerHydrationData==null?n.mutableSourceEagerHydrationData=[t,l]:n.mutableSourceEagerHydrationData.push(t,l);return new Ol(n)},Yc=function(e,n,t){if(!Al(n))throw Error(k(200));return Yl(null,e,n,!1,t)},Xc=function(e){if(!Al(e))throw Error(k(40));return e._reactRootContainer?(An(function(){Yl(null,null,e,!1,function(){e._reactRootContainer=null,e[rn]=null})}),!0):!1},Gc,Bc=function(e,n,t,r){if(!Al(t))throw Error(k(200));if(e==null||e._reactInternals===void 0)throw Error(k(38));return Yl(e,n,t,!1,r)},Zc="18.3.1-next-f1338f8080-20240426";var Jc=hf(()=>{Qa=Rn(zt(),1),W=Rn(Mi(),1);Wa=new Set,nr={};tn=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Fo=Object.prototype.hasOwnProperty,Ud=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Ui={},xi={};oe={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){oe[e]=new ve(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var n=e[0];oe[n]=new ve(n,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){oe[e]=new ve(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){oe[e]=new ve(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){oe[e]=new ve(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){oe[e]=new ve(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){oe[e]=new ve(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){oe[e]=new ve(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){oe[e]=new ve(e,5,!1,e.toLowerCase(),null,!1,!1)});Pu=/[\-:]([a-z])/g;"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var n=e.replace(Pu,Nu);oe[n]=new ve(n,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var n=e.replace(Pu,Nu);oe[n]=new ve(n,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var n=e.replace(Pu,Nu);oe[n]=new ve(n,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){oe[e]=new ve(e,1,!1,e.toLowerCase(),null,!1,!1)});oe.xlinkHref=new ve("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){oe[e]=new ve(e,1,!1,e.toLowerCase(),null,!0,!0)});un=Qa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,Mr=Symbol.for("react.element"),qn=Symbol.for("react.portal"),jn=Symbol.for("react.fragment"),Lu=Symbol.for("react.strict_mode"),Do=Symbol.for("react.profiler"),Ha=Symbol.for("react.provider"),Oa=Symbol.for("react.context"),Ru=Symbol.for("react.forward_ref"),To=Symbol.for("react.suspense"),Mo=Symbol.for("react.suspense_list"),Iu=Symbol.for("react.memo"),cn=Symbol.for("react.lazy"),Aa=Symbol.for("react.offscreen"),Vi=Symbol.iterator;X=Object.assign;Qt=Array.isArray;Ja=function(e){return typeof MSApp<"u"&&MSApp.execUnsafeLocalFunction?function(n,t,r,l){MSApp.execUnsafeLocalFunction(function(){return e(n,t,r,l)})}:e}(function(e,n){if(e.namespaceURI!=="http://www.w3.org/2000/svg"||"innerHTML"in e)e.innerHTML=n;else{xr=xr||document.createElement("div"),xr.innerHTML="<svg>"+n.valueOf().toString()+"</svg>";for(n=xr.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;n.firstChild;)e.appendChild(n.firstChild)}});Gt={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Od=["Webkit","ms","Moz","O"];Object.keys(Gt).forEach(function(e){Od.forEach(function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1),Gt[n]=Gt[e]})});Ad=X({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});if(tn)try{Fn={},Object.defineProperty(Fn,"passive",{get:function(){Xo=!0}}),window.addEventListener("test",Fn,Fn),window.removeEventListener("test",Fn,Fn)}catch(e){Xo=!1}Xd={onError:function(e){Bt=!0,il=e}};us=W.unstable_scheduleCallback,Yi=W.unstable_cancelCallback,Jd=W.unstable_shouldYield,Kd=W.unstable_requestPaint,Z=W.unstable_now,qd=W.unstable_getCurrentPriorityLevel,Du=W.unstable_ImmediatePriority,is=W.unstable_UserBlockingPriority,sl=W.unstable_NormalPriority,jd=W.unstable_LowPriority,as=W.unstable_IdlePriority;He=Math.clz32?Math.clz32:tp,ep=Math.log,np=Math.LN2;Qr=[],lr=new Map,or=new Map,dn=[],up="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" ");dt=un.ReactCurrentBatchConfig;Et={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Vu=Pe(Et),kr=X({},Et,{view:0,detail:0}),fp=Pe(kr),Fl=X({},kr,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:$u,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){if("movementX"in e)return e.movementX;return e!==Mt&&(Mt&&e.type==="mousemove"?(mo=e.screenX-Mt.screenX,ho=e.screenY-Mt.screenY):ho=mo=0,Mt=e),mo},movementY:function(e){return"movementY"in e?e.movementY:ho}}),Zi=Pe(Fl),dp=X({},Fl,{dataTransfer:0}),pp=Pe(dp),vp=X({},kr,{relatedTarget:0}),yo=Pe(vp),mp=X({},Et,{animationName:0,elapsedTime:0,pseudoElement:0}),hp=Pe(mp),yp=X({},Et,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),gp=Pe(yp),kp=X({},Et,{data:0}),Ji=Pe(kp),Sp={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},wp={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},Ep={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};_p=X({},kr,{key:function(e){if(e.key){var n=Sp[e.key]||e.key;if(n!=="Unidentified")return n}return e.type==="keypress"?(e=qr(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?wp[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:$u,charCode:function(e){return e.type==="keypress"?qr(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?qr(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),Pp=Pe(_p),Np=X({},Fl,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Ki=Pe(Np),zp=X({},kr,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:$u}),Lp=Pe(zp),Rp=X({},Et,{propertyName:0,elapsedTime:0,pseudoElement:0}),Ip=Pe(Rp),Fp=X({},Fl,{deltaX:function(e){return"deltaX"in e?e.deltaX:("wheelDeltaX"in e)?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:("wheelDeltaY"in e)?-e.wheelDeltaY:("wheelDelta"in e)?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Dp=Pe(Fp),Tp=[9,13,27,32],Qu=tn&&"CompositionEvent"in window;tn&&"documentMode"in document&&(Zt=document.documentMode);Mp=tn&&"TextEvent"in window&&!Zt,gs=tn&&(!Qu||Zt&&8<Zt&&11>=Zt),qi=String.fromCharCode(32);Vp={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};if(tn){if(tn){if(Ot="oninput"in document,!Ot)jr=document.createElement("div"),jr.setAttribute("oninput","return;"),Ot=typeof jr.oninput==="function";Ht=Ot}else Ht=!1;Es=Ht&&(!document.documentMode||9<document.documentMode)}Ae=typeof Object.is==="function"?Object.is:Yp;Gp=tn&&"documentMode"in document&&11>=document.documentMode;nt={animationend:Hr("Animation","AnimationEnd"),animationiteration:Hr("Animation","AnimationIteration"),animationstart:Hr("Animation","AnimationStart"),transitionend:Hr("Transition","TransitionEnd")},go={},Ns={};tn&&(Ns=document.createElement("div").style,("AnimationEvent"in window)||(delete nt.animationend.animation,delete nt.animationiteration.animation,delete nt.animationstart.animation),("TransitionEvent"in window)||delete nt.transitionend.transition);zs=Tl("animationend"),Ls=Tl("animationiteration"),Rs=Tl("animationstart"),Is=Tl("transitionend"),Fs=new Map,la="abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");for(At=0;At<la.length;At++)Yt=la[At],jo=Yt.toLowerCase(),bo=Yt[0].toUpperCase()+Yt.slice(1),Nn(jo,"on"+bo);Nn(zs,"onAnimationEnd");Nn(Ls,"onAnimationIteration");Nn(Rs,"onAnimationStart");Nn("dblclick","onDoubleClick");Nn("focusin","onFocus");Nn("focusout","onBlur");Nn(Is,"onTransitionEnd");mt("onMouseEnter",["mouseout","mouseover"]);mt("onMouseLeave",["mouseout","mouseover"]);mt("onPointerEnter",["pointerout","pointerover"]);mt("onPointerLeave",["pointerout","pointerover"]);Yn("onChange","change click focusin focusout input keydown keyup selectionchange".split(" "));Yn("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" "));Yn("onBeforeInput",["compositionend","keypress","textInput","paste"]);Yn("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" "));Yn("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" "));Yn("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));Xt="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Bp=new Set("cancel close invalid load scroll toggle".split(" ").concat(Xt));Or="_reactListening"+Math.random().toString(36).slice(2);Zp=/\r\n?/g,Jp=/\u0000|\uFFFD/g;ru=typeof setTimeout==="function"?setTimeout:void 0,Kp=typeof clearTimeout==="function"?clearTimeout:void 0,aa=typeof Promise==="function"?Promise:void 0,qp=typeof queueMicrotask==="function"?queueMicrotask:typeof aa<"u"?function(e){return aa.resolve(null).then(e).catch(jp)}:ru;Ct=Math.random().toString(36).slice(2),Be="__reactFiber$"+Ct,fr="__reactProps$"+Ct,rn="__reactContainer$"+Ct,lu="__reactEvents$"+Ct,bp="__reactListeners$"+Ct,e0="__reactHandles$"+Ct;ou=[];Pn={},ce=zn(Pn),ge=zn(!1),Qn=Pn;lt=[],ze=[];t0=un.ReactCurrentBatchConfig;gt=Qs(!0),Ws=Qs(!1),kl=zn(null);wr={},Je=zn(wr),dr=zn(wr),pr=zn(wr);A=zn(0);Co=[];el=un.ReactCurrentDispatcher,_o=un.ReactCurrentBatchConfig;_l={readContext:Fe,useCallback:ie,useContext:ie,useEffect:ie,useImperativeHandle:ie,useInsertionEffect:ie,useLayoutEffect:ie,useMemo:ie,useReducer:ie,useRef:ie,useState:ie,useDebugValue:ie,useDeferredValue:ie,useTransition:ie,useMutableSource:ie,useSyncExternalStore:ie,useId:ie,unstable_isNewReconciler:!1},i0={readContext:Fe,useCallback:function(e,n){return Ge().memoizedState=[e,n===void 0?null:n],e},useContext:Fe,useEffect:ga,useImperativeHandle:function(e,n,t){return t=t!==null&&t!==void 0?t.concat([e]):null,nl(4194308,4,ec.bind(null,n,e),t)},useLayoutEffect:function(e,n){return nl(4194308,4,e,n)},useInsertionEffect:function(e,n){return nl(4,2,e,n)},useMemo:function(e,n){var t=Ge();return n=n===void 0?null:n,e=e(),t.memoizedState=[e,n],e},useReducer:function(e,n,t){var r=Ge();return n=t!==void 0?t(n):n,r.memoizedState=r.baseState=n,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:n},r.queue=e,e=e.dispatch=o0.bind(null,Y,e),[r.memoizedState,e]},useRef:function(e){var n=Ge();return e={current:e},n.memoizedState=e},useState:ya,useDebugValue:ti,useDeferredValue:function(e){return Ge().memoizedState=e},useTransition:function(){var e=ya(!1),n=e[0];return e=l0.bind(null,e[1]),Ge().memoizedState=e,[n,e]},useMutableSource:function(){},useSyncExternalStore:function(e,n,t){var r=Y,l=Ge();if(Q){if(t===void 0)throw Error(k(407));t=t()}else{if(t=n(),te===null)throw Error(k(349));(Hn&30)!==0||Gs(r,n,t)}l.memoizedState=t;var o={value:t,getSnapshot:n};return l.queue=o,ga(Zs.bind(null,r,o,e),[e]),r.flags|=2048,hr(9,Bs.bind(null,r,o,t,n),void 0,null),t},useId:function(){var e=Ge(),n=te.identifierPrefix;if(Q){var t=en,r=be;t=(r&~(1<<32-He(r)-1)).toString(32)+t,n=":"+n+"R"+t,t=vr++,0<t&&(n+="H"+t.toString(32)),n+=":"}else t=r0++,n=":"+n+"r"+t.toString(32)+":";return e.memoizedState=n},unstable_isNewReconciler:!1},a0={readContext:Fe,useCallback:tc,useContext:Fe,useEffect:ni,useImperativeHandle:nc,useInsertionEffect:js,useLayoutEffect:bs,useMemo:rc,useReducer:Po,useRef:qs,useState:function(){return Po(mr)},useDebugValue:ti,useDeferredValue:function(e){var n=De();return lc(n,b.memoizedState,e)},useTransition:function(){var e=Po(mr)[0],n=De().memoizedState;return[e,n]},useMutableSource:Ys,useSyncExternalStore:Xs,useId:oc,unstable_isNewReconciler:!1},s0={readContext:Fe,useCallback:tc,useContext:Fe,useEffect:ni,useImperativeHandle:nc,useInsertionEffect:js,useLayoutEffect:bs,useMemo:rc,useReducer:No,useRef:qs,useState:function(){return No(mr)},useDebugValue:ti,useDeferredValue:function(e){var n=De();return b===null?n.memoizedState=e:lc(n,b.memoizedState,e)},useTransition:function(){var e=No(mr)[0],n=De().memoizedState;return[e,n]},useMutableSource:Ys,useSyncExternalStore:Xs,useId:oc,unstable_isNewReconciler:!1};Vl={isMounted:function(e){return(e=e._reactInternals)?Xn(e)===e:!1},enqueueSetState:function(e,n,t){e=e._reactInternals;var r=pe(),l=En(e),o=nn(r,l);o.payload=n,t!==void 0&&t!==null&&(o.callback=t),n=Sn(e,o,l),n!==null&&(Oe(n,e,l,r),br(n,e,l))},enqueueReplaceState:function(e,n,t){e=e._reactInternals;var r=pe(),l=En(e),o=nn(r,l);o.tag=1,o.payload=n,t!==void 0&&t!==null&&(o.callback=t),n=Sn(e,o,l),n!==null&&(Oe(n,e,l,r),br(n,e,l))},enqueueForceUpdate:function(e,n){e=e._reactInternals;var t=pe(),r=En(e),l=nn(t,r);l.tag=2,n!==void 0&&n!==null&&(l.callback=n),n=Sn(e,l,r),n!==null&&(Oe(n,e,r,t),br(n,e,r))}};c0=typeof WeakMap==="function"?WeakMap:Map;f0=un.ReactCurrentOwner;vu={dehydrated:null,treeContext:null,retryLane:0};gc=function(e,n){for(var t=n.child;t!==null;){if(t.tag===5||t.tag===6)e.appendChild(t.stateNode);else if(t.tag!==4&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===n)break;for(;t.sibling===null;){if(t.return===null||t.return===n)return;t=t.return}t.sibling.return=t.return,t=t.sibling}};hu=function(){};kc=function(e,n,t,r){var l=e.memoizedProps;if(l!==r){e=n.stateNode,xn(Je.current);var o=null;switch(t){case"input":l=xo(e,l),r=xo(e,r),o=[];break;case"select":l=X({},l,{value:void 0}),r=X({},r,{value:void 0}),o=[];break;case"textarea":l=Qo(e,l),r=Qo(e,r),o=[];break;default:typeof l.onClick!=="function"&&typeof r.onClick==="function"&&(e.onclick=vl)}Ho(t,r);var u;t=null;for(c in l)if(!r.hasOwnProperty(c)&&l.hasOwnProperty(c)&&l[c]!=null)if(c==="style"){var i=l[c];for(u in i)i.hasOwnProperty(u)&&(t||(t={}),t[u]="")}else c!=="dangerouslySetInnerHTML"&&c!=="children"&&c!=="suppressContentEditableWarning"&&c!=="suppressHydrationWarning"&&c!=="autoFocus"&&(nr.hasOwnProperty(c)?o||(o=[]):(o=o||[]).push(c,null));for(c in r){var a=r[c];if(i=l!=null?l[c]:void 0,r.hasOwnProperty(c)&&a!==i&&(a!=null||i!=null))if(c==="style")if(i){for(u in i)!i.hasOwnProperty(u)||a&&a.hasOwnProperty(u)||(t||(t={}),t[u]="");for(u in a)a.hasOwnProperty(u)&&i[u]!==a[u]&&(t||(t={}),t[u]=a[u])}else t||(o||(o=[]),o.push(c,t)),t=a;else c==="dangerouslySetInnerHTML"?(a=a?a.__html:void 0,i=i?i.__html:void 0,a!=null&&i!==a&&(o=o||[]).push(c,a)):c==="children"?typeof a!=="string"&&typeof a!=="number"||(o=o||[]).push(c,""+a):c!=="suppressContentEditableWarning"&&c!=="suppressHydrationWarning"&&(nr.hasOwnProperty(c)?(a!=null&&c==="onScroll"&&V("scroll",e),o||i===a||(o=[])):(o=o||[]).push(c,a))}t&&(o=o||[]).push("style",t);var c=o;if(n.updateQueue=c)n.flags|=4}};Sc=function(e,n,t,r){t!==r&&(n.flags|=4)};h0=typeof WeakSet==="function"?WeakSet:Set;k0=Math.ceil,Pl=un.ReactCurrentDispatcher,li=un.ReactCurrentOwner,Ie=un.ReactCurrentBatchConfig,at=zn(0);Dc=function(e,n,t){if(e!==null)if(e.memoizedProps!==n.pendingProps||ge.current)ye=!0;else{if((e.lanes&t)===0&&(n.flags&128)===0)return ye=!1,p0(e,n,t);ye=(e.flags&131072)!==0?!0:!1}else ye=!1,Q&&(n.flags&1048576)!==0&&xs(n,gl,n.index);switch(n.lanes=0,n.tag){case 2:var r=n.type;tl(e,n),e=n.pendingProps;var l=ht(n,ce.current);pt(n,t),l=bu(null,n,r,e,l,t);var o=ei();return n.flags|=1,typeof l==="object"&&l!==null&&typeof l.render==="function"&&l.$$typeof===void 0?(n.tag=1,n.memoizedState=null,n.updateQueue=null,ke(r)?(o=!0,hl(n)):o=!1,n.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,Zu(n),l.updater=Vl,n.stateNode=l,l._reactInternals=n,cu(n,r,e,t),n=pu(null,n,r,!0,o,t)):(n.tag=0,Q&&o&&Hu(n),de(null,n,l,t),n=n.child),n;case 16:r=n.elementType;e:{switch(tl(e,n),e=n.pendingProps,l=r._init,r=l(r._payload),n.type=r,l=n.tag=L0(r),e=$e(r,e),l){case 0:n=du(null,n,r,e,t);break e;case 1:n=Na(null,n,r,e,t);break e;case 11:n=_a(null,n,r,e,t);break e;case 14:n=Pa(null,n,r,$e(r.type,e),t);break e}throw Error(k(306,r,""))}return n;case 0:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:$e(r,l),du(e,n,r,l,t);case 1:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:$e(r,l),Na(e,n,r,l,t);case 3:e:{if(mc(n),e===null)throw Error(k(387));r=n.pendingProps,o=n.memoizedState,l=o.element,Os(e,n),wl(n,r,null,t);var u=n.memoizedState;if(r=u.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:u.cache,pendingSuspenseBoundaries:u.pendingSuspenseBoundaries,transitions:u.transitions},n.updateQueue.baseState=o,n.memoizedState=o,n.flags&256){l=St(Error(k(423)),n),n=za(e,n,r,t,l);break e}else if(r!==l){l=St(Error(k(424)),n),n=za(e,n,r,t,l);break e}else for(Ce=kn(n.stateNode.containerInfo.firstChild),_e=n,Q=!0,We=null,t=Ws(n,null,r,t),n.child=t;t;)t.flags=t.flags&-3|4096,t=t.sibling;else{if(yt(),r===l){n=on(e,n,t);break e}de(e,n,r,t)}n=n.child}return n;case 5:return As(n),e===null&&iu(n),r=n.type,l=n.pendingProps,o=e!==null?e.memoizedProps:null,u=l.children,tu(r,l)?u=null:o!==null&&tu(r,o)&&(n.flags|=32),vc(e,n),de(e,n,u,t),n.child;case 6:return e===null&&iu(n),null;case 13:return hc(e,n,t);case 4:return Ju(n,n.stateNode.containerInfo),r=n.pendingProps,e===null?n.child=gt(n,null,r,t):de(e,n,r,t),n.child;case 11:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:$e(r,l),_a(e,n,r,l,t);case 7:return de(e,n,n.pendingProps,t),n.child;case 8:return de(e,n,n.pendingProps.children,t),n.child;case 12:return de(e,n,n.pendingProps.children,t),n.child;case 10:e:{if(r=n.type._context,l=n.pendingProps,o=n.memoizedProps,u=l.value,U(kl,r._currentValue),r._currentValue=u,o!==null)if(Ae(o.value,u)){if(o.children===l.children&&!ge.current){n=on(e,n,t);break e}}else for(o=n.child,o!==null&&(o.return=n);o!==null;){var i=o.dependencies;if(i!==null){u=o.child;for(var a=i.firstContext;a!==null;){if(a.context===r){if(o.tag===1){a=nn(-1,t&-t),a.tag=2;var c=o.updateQueue;if(c!==null){c=c.shared;var h=c.pending;h===null?a.next=a:(a.next=h.next,h.next=a),c.pending=a}}o.lanes|=t,a=o.alternate,a!==null&&(a.lanes|=t),au(o.return,t,n),i.lanes|=t;break}a=a.next}}else if(o.tag===10)u=o.type===n.type?null:o.child;else if(o.tag===18){if(u=o.return,u===null)throw Error(k(341));u.lanes|=t,i=u.alternate,i!==null&&(i.lanes|=t),au(u,t,n),u=o.sibling}else u=o.child;if(u!==null)u.return=o;else for(u=o;u!==null;){if(u===n){u=null;break}if(o=u.sibling,o!==null){o.return=u.return,u=o;break}u=u.return}o=u}de(e,n,l.children,t),n=n.child}return n;case 9:return l=n.type,r=n.pendingProps.children,pt(n,t),l=Fe(l),r=r(l),n.flags|=1,de(e,n,r,t),n.child;case 14:return r=n.type,l=$e(r,n.pendingProps),l=$e(r.type,l),Pa(e,n,r,l,t);case 15:return dc(e,n,n.type,n.pendingProps,t);case 17:return r=n.type,l=n.pendingProps,l=n.elementType===r?l:$e(r,l),tl(e,n),n.tag=1,ke(r)?(e=!0,hl(n)):e=!1,pt(n,t),sc(n,r,l),cu(n,r,l,t),pu(null,n,r,!0,e,t);case 19:return yc(e,n,t);case 22:return pc(e,n,t)}throw Error(k(156,n.tag))};xc=typeof reportError==="function"?reportError:function(e){console.error(e)};Ol.prototype.render=pi.prototype.render=function(e){var n=this._internalRoot;if(n===null)throw Error(k(409));Hl(e,n,null,null)};Ol.prototype.unmount=pi.prototype.unmount=function(){var e=this._internalRoot;if(e!==null){this._internalRoot=null;var n=e.containerInfo;An(function(){Hl(null,e,null,null)}),n[rn]=null}};Ol.prototype.unstable_scheduleHydration=function(e){if(e){var n=ps();e={blockedOn:null,target:e,priority:n};for(var t=0;t<dn.length&&n!==0&&n<dn[t].priority;t++);dn.splice(t,0,e),t===0&&ms(e)}};fs=function(e){switch(e.tag){case 3:var n=e.stateNode;if(n.current.memoizedState.isDehydrated){var t=Wt(n.pendingLanes);t!==0&&(Tu(n,t|1),Se(n,Z()),(D&6)===0&&(wt=Z()+500,Ln()))}break;case 13:An(function(){var r=ln(e,1);if(r!==null){var l=pe();Oe(r,e,1,l)}}),di(e,1)}};Mu=function(e){if(e.tag===13){var n=ln(e,134217728);if(n!==null){var t=pe();Oe(n,e,134217728,t)}di(e,134217728)}};ds=function(e){if(e.tag===13){var n=En(e),t=ln(e,n);if(t!==null){var r=pe();Oe(t,e,n,r)}di(e,n)}};ps=function(){return T};vs=function(e,n){var t=T;try{return T=e,n()}finally{T=t}};Yo=function(e,n,t){switch(n){case"input":if(Vo(e,t),n=t.name,t.type==="radio"&&n!=null){for(t=e;t.parentNode;)t=t.parentNode;t=t.querySelectorAll("input[name="+JSON.stringify(""+n)+'][type="radio"]');for(n=0;n<t.length;n++){var r=t[n];if(r!==e&&r.form===e.form){var l=Ml(r);if(!l)throw Error(k(90));Xa(r),Vo(r,l)}}}break;case"textarea":Ba(e,t);break;case"select":n=t.value,n!=null&&st(e,!!t.multiple,n,!1)}};es=ii;ns=An;T0={usingClientEntryPoint:!1,Events:[Sr,tt,Ml,ja,ba,ii]},Vt={findFiberByHostInstance:Mn,bundleType:0,version:"18.3.1",rendererPackageName:"react-dom"},M0={bundleType:Vt.bundleType,version:Vt.version,rendererPackageName:Vt.rendererPackageName,rendererConfig:Vt.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:un.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return e=ls(e),e===null?null:e.stateNode},findFiberByHostInstance:Vt.findFiberByHostInstance||F0,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:"18.3.1-next-f1338f8080-20240426"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){if(Kn=__REACT_DEVTOOLS_GLOBAL_HOOK__,!Kn.isDisabled&&Kn.supportsFiber)try{Il=Kn.inject(M0),Ze=Kn}catch(e){}}Vc=T0,Gc=ii});var jc=Cr((B0,qc)=>{Jc();function Kc(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=="function")return;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Kc)}catch(e){console.error(e)}}Kc(),qc.exports=mi});var bc=Cr((x0)=>{var Er=Rn(jc(),1);x0.createRoot=Er.createRoot,x0.hydrateRoot=Er.hydrateRoot;var U0});var of=Rn(zt(),1),uf=Rn(bc(),1);var H=Rn(zt(),1);var ef=Rn(zt(),1),V0=Symbol.for("react.element");var $0=Object.prototype.hasOwnProperty,Q0=ef.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,W0={key:!0,ref:!0,__self:!0,__source:!0};function nf(e,n,t){var r,l={},o=null,u=null;t!==void 0&&(o=""+t),n.key!==void 0&&(o=""+n.key),n.ref!==void 0&&(u=n.ref);for(r in n)$0.call(n,r)&&!W0.hasOwnProperty(r)&&(l[r]=n[r]);if(e&&e.defaultProps)for(r in n=e.defaultProps,n)l[r]===void 0&&(l[r]=n[r]);return{$$typeof:V0,type:e,key:o,ref:u,props:l,_owner:Q0.current}}var p=nf,g=nf;var M={title:"Python for Data Analysis",subtitle:"Third Edition — Data Wrangling with pandas, NumPy & Jupyter",author:"Wes McKinney • O'Reilly Media",isbn:"978-1-098-10403-0",pages:604,edition:"3rd / 2022",language:"Python 3.11+",catalog:"e0654719998601a3"},_t=[{ch:1,name:"Preliminaries",pages:"1-28",methods:42},{ch:2,name:"Python Language Basics, IPython & Jupyter",pages:"29-68",methods:67},{ch:3,name:"Built-in Data Structures, Functions, Files",pages:"69-112",methods:89},{ch:4,name:"NumPy Basics: Arrays & Vectorized Computation",pages:"113-156",methods:124},{ch:5,name:"Getting Started with pandas",pages:"157-206",methods:142},{ch:6,name:"Data Loading, Storage & File Formats",pages:"207-252",methods:96},{ch:7,name:"Data Cleaning & Preparation",pages:"253-310",methods:118},{ch:8,name:"Data Wrangling: Join, Combine & Reshape",pages:"311-356",methods:105},{ch:9,name:"Plotting & Visualization",pages:"357-398",methods:78},{ch:10,name:"Data Aggregation & Group Operations",pages:"399-444",methods:92},{ch:11,name:"Time Series",pages:"445-512",methods:110},{ch:12,name:"Advanced pandas + Applications",pages:"513-604",methods:156}],Gn=[{id:9,title:"Data Loading",subtitle:"Unit 9 • File I/O",icon:"◫",color:"#0ea5e9",methods:96,lessons:[{name:"CSV Ingest",type:"See",english:"Load table from comma-separated file",code:"df = pd.read_csv('sales.csv')",wasm:"(func $load_csv (param $ptr i32) (result i32) (call $parse_delim (i32.const 44)))"},{name:"JSON Parse",type:"Write",english:"Read nested records as DataFrame",code:"df = pd.read_json('logs.json', lines=True)",wasm:"(func $load_json (call $lex_json) (call $flatten))"},{name:"Parquet Fast",type:"Speak",english:"Columnar zero-copy scan",code:"df = pd.read_parquet('data.parquet', engine='pyarrow')",wasm:"(func $load_parquet (call $arrow_decode))"},{name:"SQL Bridge",type:"Test",english:"Query database into memory",code:"pd.read_sql('SELECT * FROM users WHERE active', conn)",wasm:"(func $sql_bridge (param $q i32) (call $db_exec))"}]},{id:10,title:"Cleaning",subtitle:"Unit 10 • Nulls & Dupes",icon:"◧",color:"#10b981",methods:118,lessons:[{name:"Drop NA",type:"See",english:"Remove rows with missing values",code:"df.dropna(subset=['age','salary'])",wasm:"(func $dropna (call $filter_null_mask))"},{name:"Fill Forward",type:"Write",english:"Propagate last valid observation",code:"df.fillna(method='ffill').fillna(0)",wasm:"(func $fill (call $scan_forward))"},{name:"De-duplicate",type:"Speak",english:"Keep first unique key",code:"df.drop_duplicates(subset='id', keep='first')",wasm:"(func $dedup (call $hash_set_insert))"},{name:"Type Cast",type:"Test",english:"Convert string to datetime",code:"df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')",wasm:"(func $cast (call $chrono_parse))"}]},{id:11,title:"Pandas Core",subtitle:"Unit 11 • Selection",icon:"⬔",color:"#8b5cf6",methods:142,lessons:[{name:"Filter Row",type:"See",english:"Keep where x greater than five",code:"df[df.x > 5]",wasm:"(func $filter (param $thr f64) (if (f64.gt (local.get $x) (local.get $thr))))"},{name:"Group Sum",type:"Write",english:"Add values by category",code:"df.groupby('dept')['salary'].sum()",wasm:"(func $group_sum (call $hash_agg) (call $reduce_add))"},{name:"Merge Join",type:"Speak",english:"Combine left and right on key",code:"pd.merge(left, right, on='user_id', how='inner')",wasm:"(func $merge (call $sort_merge_join))"},{name:"Pivot Wide",type:"Test",english:"Reshape long to wide table",code:"df.pivot_table(index='date', columns='product', values='sales')",wasm:"(func $pivot (call $transpose_hash))"}]},{id:12,title:"Visualization",subtitle:"Unit 12 • Grammar",icon:"◩",color:"#f59e0b",methods:78,lessons:[{name:"Line Trace",type:"See",english:"Plot time series trend",code:"df.plot(x='date', y='price', kind='line', figsize=(10,4))",wasm:"(func $line (call $path_stroke))"},{name:"Histogram",type:"Write",english:"Count values in bins",code:"df['age'].hist(bins=30, color='#0ea5e9', edgecolor='white')",wasm:"(func $hist (call $bin_count) (call $rect_fill))"},{name:"Scatter Map",type:"Speak",english:"Show correlation two variables",code:"plt.scatter(df['height'], df['weight'], c=df['bmi'], cmap='viridis')",wasm:"(func $scatter (call $point_splat))"},{name:"Facet Grid",type:"Test",english:"Small multiples by category",code:"sns.FacetGrid(df, col='region').map(plt.hist, 'sales')",wasm:"(func $facet (call $grid_tile))"}]}],H0=[{file:"numpy_core.py",size:"18.4 MB",raw:18400000,pushable:!0,note:"chunked ndarray"},{file:"pandas_frame.py",size:"42.7 MB",raw:42700000,pushable:!0,note:"DataFrame engine"},{file:"data_loading_full.py",size:"89.3 MB",raw:89300000,pushable:!0,note:"warn >50MB"},{file:"cleaning_master.py",size:"96.1 MB",raw:96100000,pushable:!1,note:" >100MB hard limit"},{file:"time_series_10y.csv",size:"312 MB",raw:312000000,pushable:!1,note:"use Git LFS"},{file:"book_full_bundle.py",size:"1.2 GB",raw:1200000000,pushable:!1,note:">1GB repo soft cap"}];function O0(e){let n=[];do{let t=e&127;if(e>>>=7,e!==0)t|=128;n.push(t)}while(e!==0);return n}function tf(e,n){let t=(w)=>O0(w),r=[],l=(...w)=>r.push(...w);l(0,97,115,109,1,0,0,0);let o=[];o.push(...t(2)),o.push(96,0,1,127),o.push(96,1,127,1,127),l(1,...t(o.length),...o);let u=[...t(6),0,0,0,1,1,0];l(3,...t(u.length),...u);let i=[...t(1),1,...t(10),...t(20)];l(5,...t(i.length),...i);let a=[],c=[{name:"memory",kind:2,idx:0},{name:"get_unit_count",kind:0,idx:0},{name:"get_lesson_count",kind:0,idx:1},{name:"get_method_count",kind:0,idx:2},{name:"get_chapter",kind:0,idx:3},{name:"get_method",kind:0,idx:4},{name:"decompress",kind:0,idx:5},{name:"get_data_size",kind:0,idx:5}];a.push(...t(c.length));for(let w of c){a.push(...t(w.name.length));for(let E=0;E<w.name.length;E++)a.push(w.name.charCodeAt(E));a.push(w.kind,...t(w.idx))}l(7,...t(a.length),...a);let h=[];h.push([0,65,...t(12),11]),h.push([0,65,...t(48),11]),h.push([0,65,...t(n),11]),h.push([0,32,0,65,...t(256),108,11]),h.push([0,32,0,65,...t(128),108,11]),h.push([0,65,...t(e.length),11]);let y=[...t(h.length)];for(let w of h)y.push(...t(w.length),...w);l(10,...t(y.length),...y);let m=[];return m.push(...t(1)),m.push(0),m.push(65,...t(0),11),m.push(...t(e.length),...Array.from(e)),l(11,...t(m.length),...m),new Uint8Array(r)}function A0(e,n=128){return Array.from(e.slice(0,n)).map((t)=>t.toString(16).padStart(2,"0")).join(" ").replace(/(.{48})/g,`$1
`).trim()}async function rf(e){if(typeof globalThis.CompressionStream<"u"){let n=new globalThis.CompressionStream("deflate"),t=n.writable.getWriter();t.write(e),t.close();let l=await new Response(n.readable).arrayBuffer();return new Uint8Array(l)}else return e}async function lf(e){let n=await crypto.subtle.digest("SHA-256",e);return Array.from(new Uint8Array(n)).map((t)=>t.toString(16).padStart(2,"0")).join("")}function hi(){let[e,n]=H.useState(Gn[2].lessons[0].code),[t,r]=H.useState(Gn[2].lessons[0]),[l,o]=H.useState({streak:12,mastery:68,units:3}),[u,i]=H.useState(null),[a,c]=H.useState(null),[h,y]=H.useState(0),[m,w]=H.useState(""),[E,_]=H.useState(null),[x,f]=H.useState(null),[s,d]=H.useState(""),[S,P]=H.useState([]),[z,L]=H.useState(11),[R,J]=H.useState(0),F=H.useRef(null),[Te,Xl]=H.useState(null),Pt=H.useMemo(()=>{let v=`# Python for Data Analysis - Complete Source Bundle
# Catalog ${M.catalog}

`;for(let N of _t){v+=`
# CHAPTER ${N.ch} ${N.name}
`,v+=`"""${N.name} - ${N.pages} - methods:${N.methods} """
`;for(let I=0;I<N.methods/2;I++)v+=`def ch${N.ch}_func_${I}(df: pd.DataFrame) -> pd.DataFrame:
    return df.query('x > @i').groupby('key').agg({'y':'sum'}).reset_index()

`}return v+=`
# APPENDIX NUMPY VECTORIZATION
import numpy as np
arr = np.random.randn(10000, 50)
result = np.einsum('ij,jk->ik', arr, arr.T[:50])
`,v},[]),Gl=H.useMemo(()=>new TextEncoder().encode(Pt),[Pt]);H.useEffect(()=>{y(Gl.length),(async()=>{let v=await rf(Gl);c(v);let N=tf(v,_t.reduce((I,G)=>I+G.methods,0));i(N),w(await lf(N));try{let I=await WebAssembly.instantiate(N,{}),G=I.instance?.exports||I.exports,K=typeof G.get_unit_count==="function"&&G.get_unit_count()===12;if(_(K),K){let O=G.memory,q=new Uint8Array(O.buffer,0,v.length),Me=q.length===v.length&&q.every((we,Ue)=>we===v[Ue]);f(Me)}}catch{_(!1)}})()},[Gl]),H.useEffect(()=>{if(!F.current)return;let v=F.current,N=768,I=432;v.width=N,v.height=I;let G=v.getContext("2d");if(!G)return;let K=G.createImageData(N,I);for(let O=0;O<I;O++)for(let q=0;q<N;q++){let Me=(O*N+q)*4,we=(q^O)&255,Ue=Math.sin(q*0.02)*20+O*0.3;K.data[Me]=(we+Ue)%255,K.data[Me+1]=q*0.7%255,K.data[Me+2]=O*0.9%255,K.data[Me+3]=255}G.putImageData(K,0,0)},[]);let af=async(v)=>{let N=v.target.files?.[0];if(!N)return;d(N.name);let I=await N.text();d(`${N.name} • ${I.length} chars`);let G=/def\s+([a-zA-Z_]\w*)\s*\(/g,K=/BT[\s\S]*?ET/g,O,q=[];while((O=G.exec(I))!==null)q.push(O[1]);if(K.test(I))q.push(...["pdf_extract_bt_et"]);P(q.slice(0,64));let Me=new TextEncoder().encode(I.slice(0,200000));y(Me.length);let we=await rf(Me);c(we);let Ue=tf(we,q.length||156);i(Ue),w(await lf(Ue))},Ke=H.useMemo(()=>{let v=h||1,N=a?.length||Math.floor(v*0.28),I=Math.ceil(N*1.333),G=v*4,K=u?.length||N+1024,O=Math.floor(N*0.82);return{raw:v,zip:N,b64:I,fasta:G,wasmSize:K,xz:O}},[h,a,u]),me=(v,N,I="application/octet-stream")=>{let G=new Blob([N],{type:I}),K=URL.createObjectURL(G),O=document.createElement("a");O.href=K,O.download=v,O.click(),URL.revokeObjectURL(K)},sf=()=>{let v=`(module
  (memory (export "memory") 10 20)
  (data (i32.const 0) "${a?`${a.length} bytes compressed book`:"empty"}")
  (func (export "get_unit_count") (result i32) i32.const 12)
  (func (export "get_lesson_count") (result i32) i32.const 48)
  (func (export "get_method_count") (result i32) i32.const ${_t.reduce((N,I)=>N+I.methods,0)})
  (func (export "get_chapter") (param i32) (result i32) local.get 0 i32.const 256 i32.mul)
  (func (export "get_method") (param i32) (result i32) local.get 0 i32.const 128 i32.mul)
  (func (export "decompress") (result i32) i32.const ${a?.length||0})
)`;me(`python_rosetta_${M.catalog}.wat`,v,"text/plain")},cf=()=>{if(!u)return;let v=["A","C","G","T"],N=`>WASM_COMPRESSED|${M.catalog}|len=${u.length}
`,I="";for(let G=0;G<Math.min(u.length,2048);G++){let K=u[G];for(let O=6;O>=0;O-=2)I+=v[K>>O&3];if(I.length>=80)N+=I.slice(0,80)+`
`,I=I.slice(80)}if(I)N+=I+`
`;me(`python_rosetta_${M.catalog}.fasta`,N,"text/plain")};return g("div",{className:"min-h-screen bg-[#fbfaf8] text-zinc-900 selection:bg-amber-200",style:{fontFamily:"'IBM Plex Mono', ui-monospace, monospace"},children:[p("style",{children:"@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&display=swap');"}),p("header",{className:"sticky top-0 z-50 backdrop-blur bg-zinc-950 text-white border-b border-zinc-800",style:{paddingTop:"var(--safe-area-inset-top)"},children:g("div",{className:"max-w-[1280px] mx-auto px-5 md:px-8 h-[64px] flex items-center justify-between",children:[g("div",{className:"flex items-center gap-4",children:[p("div",{className:"w-9 h-9 rounded-[10px] bg-[#FFB84C] flex items-center justify-center text-zinc-950 font-bold tracking-tight",children:"E"}),g("div",{children:[p("div",{className:"font-semibold tracking-[0.14em] text-[13px]",children:"EYEOVERTHINK"}),p("div",{className:"text-[10px] tracking-widest opacity-60 -mt-1",children:"PYTHON ROSETTA STONE • THIRD PRODUCT"})]})]}),g("div",{className:"flex items-center gap-3",children:[g("div",{className:"hidden md:flex items-center gap-2 text-[10px] px-3 py-1.5 rounded-full bg-zinc-900 border border-zinc-800",children:[p("span",{className:"w-2 h-2 rounded-full bg-emerald-400 animate-pulse"})," WASM LIVE • ",E===null?"CHECKING":E?"VALID TRUE":"INVALID"]}),p("div",{className:"text-[10px] px-2.5 py-1 rounded bg-[#FFB84C] text-zinc-900 font-semibold",children:"ONE LANGUAGE • PYTHON ONLY"})]})]})}),g("main",{className:"max-w-[1280px] mx-auto px-5 md:px-8 py-8 md:py-10",children:[g("div",{className:"grid md:grid-cols-[1.1fr_0.9fr] gap-6 items-start",children:[g("div",{className:"bg-white rounded-[20px] border border-zinc-200 p-6 md:p-8 shadow-[0_8px_24px_rgba(0,0,0,0.04)]",children:[g("div",{className:"flex items-start justify-between gap-4",children:[g("div",{children:[g("h1",{className:"text-[28px] md:text-[36px] leading-[0.95] font-semibold tracking-tight",children:["Python for Data Analysis",p("br",{}),p("span",{className:"text-zinc-400",children:"Rosetta Stone WASM Compressor"})]}),p("div",{className:"mt-3 text-[12px] leading-5 text-zinc-600",children:g("span",{className:"inline-flex gap-2 flex-wrap",children:[p("span",{className:"px-2 py-0.5 rounded bg-zinc-900 text-white",children:M.author}),g("span",{className:"px-2 py-0.5 rounded bg-zinc-100 border",children:["ISBN ",M.isbn]}),g("span",{className:"px-2 py-0.5 rounded bg-zinc-100 border",children:[M.pages," PAGES"]}),p("span",{className:"px-2 py-0.5 rounded bg-amber-100 border border-amber-200 text-amber-900",children:M.edition}),g("span",{className:"px-2 py-0.5 rounded bg-emerald-50 border border-emerald-200 text-emerald-800",children:["CATALOG ",M.catalog]})]})})]}),g("div",{className:"hidden md:block text-right",children:[p("div",{className:"text-[10px] tracking-widest text-zinc-500",children:"PROGRESS"}),g("div",{className:"mt-2 flex gap-3",children:[g("div",{className:"text-center",children:[g("div",{className:"w-14 h-14 rounded-full border-[3px] border-zinc-200 relative grid place-items-center",children:[p("div",{className:"absolute inset-0 rounded-full border-[3px] border-sky-500",style:{clipPath:`inset(0 ${100-l.mastery}% 0 0)`}}),g("span",{className:"text-[12px] font-semibold",children:[l.mastery,"%"]})]}),p("div",{className:"text-[9px] mt-1 tracking-widest text-zinc-500",children:"MASTERY"})]}),g("div",{className:"text-center",children:[g("div",{className:"w-14 h-14 rounded-full bg-zinc-900 text-white grid place-items-center text-[12px] font-semibold",children:[l.streak,"\uD83D\uDD25"]}),p("div",{className:"text-[9px] mt-1 tracking-widest text-zinc-500",children:"STREAK"})]})]})]})]}),p("div",{className:"mt-7 grid grid-cols-1 md:grid-cols-2 gap-2",children:_t.map((v)=>g("div",{className:"group flex items-center justify-between px-3 py-2.5 rounded-xl border bg-[#fcfcfb] hover:bg-white hover:border-zinc-300 transition",children:[g("div",{className:"flex items-center gap-3",children:[p("div",{className:"w-7 h-7 rounded-full bg-zinc-900 text-white grid place-items-center text-[11px]",children:v.ch}),g("div",{className:"text-[12px] leading-tight",children:[p("div",{className:"font-medium",children:v.name}),g("div",{className:"text-[10px] text-zinc-500",children:[v.pages," • ",v.methods," methods"]})]})]}),g("div",{className:"text-[10px] px-2 py-1 rounded bg-zinc-100 border",children:["pp ",v.pages]})]},v.ch))})]}),g("div",{className:"space-y-4",children:[g("div",{className:"bg-white rounded-[20px] border border-zinc-200 p-5 shadow-[0_8px_24px_rgba(0,0,0,0.04)]",children:[g("div",{className:"flex items-center justify-between",children:[p("h3",{className:"text-[12px] font-semibold tracking-widest",children:"GITHUB SOURCE SIZE / PUSHABLE TABLE"}),p("span",{className:"text-[10px] px-2 py-1 rounded bg-zinc-900 text-white",children:"LIMITS: 50MB WARN • 100MB HARD • 1GB REPO"})]}),p("div",{className:"mt-3 overflow-x-auto",children:g("table",{className:"w-full text-[11px]",children:[p("thead",{className:"text-zinc-500",children:g("tr",{className:"border-b",children:[p("th",{className:"text-left py-1 font-normal",children:"FILE"}),p("th",{className:"text-left py-1 font-normal",children:"SIZE"}),p("th",{className:"text-left py-1 font-normal",children:"PUSH"}),p("th",{className:"text-left py-1 font-normal",children:"NOTE"})]})}),p("tbody",{children:H0.map((v)=>g("tr",{className:"border-b last:border-0",children:[p("td",{className:"py-2 font-medium",children:v.file}),p("td",{className:"py-2",children:v.size}),p("td",{className:"py-2",children:p("span",{className:`px-2 py-0.5 rounded-full text-[10px] ${v.pushable?"bg-emerald-100 text-emerald-800 border border-emerald-200":"bg-red-100 text-red-800 border border-red-200"}`,children:v.pushable?"PUSHABLE":"BLOCKED"})}),p("td",{className:"py-2 text-zinc-500",children:v.note})]},v.file))})]})}),p("div",{className:"mt-3 text-[10px] text-zinc-500",children:"Tip: Use Git LFS or WASM data-section bundling for >100MB Python modules. Our WASM container splits into 10 pages (640KB) logical, but physical file holds compressed payload + 1KB header."})]}),g("div",{className:"bg-zinc-950 text-white rounded-[20px] border border-zinc-800 p-5",children:[g("div",{className:"flex items-center justify-between",children:[p("h3",{className:"text-[12px] font-semibold tracking-widest",children:"REAL FILE INPUT • PARSER"}),p("span",{className:"text-[10px] px-2 py-1 rounded bg-zinc-800 border border-zinc-700",children:"BT / ET • regex def"})]}),g("label",{className:"mt-3 block w-full cursor-pointer rounded-xl border border-dashed border-zinc-700 bg-zinc-900/60 hover:bg-zinc-900 px-4 py-4 text-[12px] text-center",children:[p("input",{type:"file",className:"hidden",accept:".py,.txt,.pdf,.csv,.json",onChange:af}),p("div",{className:"font-medium",children:"Drop Python PDF / .py here or click"}),p("div",{className:"text-[11px] text-zinc-400 mt-1",children:"FileReader → BT/ET parse → CompressionStream deflate → WASM embed → instantiate"})]}),s&&p("div",{className:"mt-3 text-[11px] text-amber-200",children:s}),S.length>0&&p("div",{className:"mt-3 flex flex-wrap gap-1.5",children:S.slice(0,24).map((v,N)=>g("span",{className:"text-[10px] px-2 py-1 rounded bg-zinc-800 border border-zinc-700",children:[v,"()"]},N))})]})]})]}),g("section",{className:"mt-8",children:[g("div",{className:"flex items-center justify-between mb-3",children:[p("h2",{className:"text-[13px] font-semibold tracking-[0.18em]",children:"ROSETTA STONE IMMERSIVE • UNITS 9-12 • SEE / WRITE / SPEAK / TEST"}),p("div",{className:"text-[10px] text-zinc-500",children:"Clean white cards • Large images • No translation • Learn by seeing"})]}),p("div",{className:"grid md:grid-cols-4 gap-4",children:Gn.map((v)=>g("div",{className:`rounded-[18px] border bg-white p-4 shadow-[0_6px_18px_rgba(0,0,0,0.04)] ${z===v.id?"ring-2 ring-zinc-900":""}`,children:[g("div",{className:"flex items-center justify-between",children:[g("div",{className:"flex items-center gap-2",children:[p("div",{className:"w-9 h-9 rounded-xl grid place-items-center text-white",style:{background:v.color},children:v.icon}),g("div",{children:[p("div",{className:"text-[11px] tracking-widest text-zinc-500",children:v.subtitle}),p("div",{className:"text-[13px] font-semibold -mt-1",children:v.title})]})]}),p("button",{onClick:()=>L(v.id),className:"text-[10px] px-2 py-1 rounded bg-zinc-900 text-white",children:"OPEN"})]}),p("div",{className:"mt-3 grid grid-cols-4 gap-1.5",children:v.lessons.map((N)=>g("button",{onClick:()=>{r(N),n(N.code),o((I)=>({...I,mastery:Math.min(100,I.mastery+1)}))},className:`rounded-lg border px-2 py-2 text-left hover:bg-zinc-50 ${t.name===N.name?"bg-zinc-900 text-white border-zinc-900":""}`,children:[p("div",{className:"text-[9px] tracking-widest opacity-70",children:N.type}),p("div",{className:"text-[11px] font-medium leading-tight",children:N.name})]},N.name))}),p("div",{className:"mt-3 h-[84px] rounded-xl bg-[#fbfaf8] border grid place-items-center",children:p("div",{className:"text-[48px] leading-none opacity-20",children:v.icon.repeat(2)})})]},v.id))})]}),g("section",{className:"mt-8 grid lg:grid-cols-[1.1fr_0.9fr] gap-4",children:[g("div",{className:"bg-white rounded-[20px] border border-zinc-200 p-5 shadow-[0_8px_24px_rgba(0,0,0,0.04)]",children:[g("div",{className:"flex items-center justify-between",children:[p("h3",{className:"text-[12px] font-semibold tracking-widest",children:"THREE SCRIPTS STONE TABLET • HIEROGLYPHIC • DEMOTIC • GREEK"}),p("div",{className:"flex gap-1",children:["EN","PY","WASM"].map((v)=>p("span",{className:"text-[9px] px-2 py-1 rounded bg-zinc-100 border",children:v},v))})]}),g("div",{className:"mt-4 grid grid-cols-1 md:grid-cols-3 gap-3",children:[g("div",{className:"rounded-[14px] border bg-[#fcfdf8] p-4",children:[p("div",{className:"text-[10px] tracking-widest text-zinc-500",children:"ENGLISH DESCRIPTION"}),p("div",{className:"mt-2 text-[13px] leading-6 font-medium",children:t.english}),p("div",{className:"mt-3 text-[10px] text-zinc-500",children:"Learn by seeing image, not translation. Rosetta method."}),g("div",{className:"mt-3 inline-flex items-center gap-2 text-[11px] px-2 py-1 rounded bg-white border",children:[p("span",{className:"w-2 h-2 rounded-full bg-emerald-500"})," Speak: “Filter rows where x greater than five”"]})]}),g("div",{className:"rounded-[14px] border bg-zinc-950 text-zinc-100 p-4 font-mono",children:[p("div",{className:"text-[10px] tracking-widest text-zinc-400",children:"PYTHON CODE • EXECUTABLE"}),p("pre",{className:"mt-2 text-[12px] whitespace-pre-wrap leading-6",children:e}),g("div",{className:"mt-3 flex gap-2",children:[p("button",{onClick:()=>{o((v)=>({...v,mastery:Math.min(100,v.mastery+2)}))},className:"text-[10px] px-2.5 py-1.5 rounded bg-white text-zinc-900 font-semibold",children:"RUN TEST ✓"}),p("button",{onClick:()=>navigator.clipboard.writeText(e),className:"text-[10px] px-2.5 py-1.5 rounded bg-zinc-800 border border-zinc-700",children:"COPY"})]})]}),g("div",{className:"rounded-[14px] border bg-[#f6f8ff] p-4 font-mono",children:[p("div",{className:"text-[10px] tracking-widest text-zinc-500",children:"WASM ASM • DATA SECTION"}),p("pre",{className:"mt-2 text-[11px] whitespace-pre-wrap leading-5 text-[#334155]",children:t.wasm}),p("div",{className:"mt-3 text-[10px] px-2 py-1 rounded bg-white border inline-block",children:"func $filter • memory 10 pages • export code"})]})]}),g("div",{className:"mt-5 grid md:grid-cols-2 gap-3",children:[g("div",{className:"rounded-xl border border-red-200 bg-red-50 p-4",children:[p("div",{className:"text-[11px] font-semibold tracking-widest text-red-800",children:"PREVIOUS 277-BYTE RECEIPT ≠ CONTAINER"}),p("div",{className:"mt-2 text-[11px] leading-5 text-red-900/80",children:"Old version stored only SHA ledger + URL pointer. Size 277 bytes. Verification required external fetch. Not a real container. If URL blocked → book lost. Rosetta Stone destroyed."}),p("div",{className:"mt-2 font-mono text-[10px] bg-white border rounded px-2 py-1",children:"00 61 73 6D … (header only) + external https://cdn…/book.json"})]}),g("div",{className:"rounded-xl border border-emerald-200 bg-emerald-50 p-4",children:[p("div",{className:"text-[11px] font-semibold tracking-widest text-emerald-800",children:"NOW REAL • DATA SECTION CONTAINER"}),p("div",{className:"mt-2 text-[11px] leading-5 text-emerald-900/80",children:"Compress Python book text + code with CompressionStream('deflate'), embed in WASM data section (id 0x0B). Memory 10 pages (640KB logical). Actual file holds payload + ~1KB header. WebAssembly.instantiate verification, SHA256 round-trip valid true. No external URL."}),g("div",{className:"mt-2 flex gap-2 text-[10px]",children:[g("span",{className:`px-2 py-1 rounded border ${E?"bg-white border-emerald-300 text-emerald-800":"bg-white border-zinc-300"}`,children:["instantiate: ",E===null?"…":E?"true":"false"]}),g("span",{className:`px-2 py-1 rounded border ${x?"bg-white border-emerald-300 text-emerald-800":"bg-white border-zinc-300"}`,children:["round-trip: ",x===null?"…":x?"valid true":"false"]})]})]})]})]}),g("div",{className:"bg-white rounded-[20px] border border-zinc-200 p-5 shadow-[0_8px_24px_rgba(0,0,0,0.04)]",children:[p("h3",{className:"text-[12px] font-semibold tracking-widest",children:"COMPRESS CHAIN • REAL SIZES"}),p("div",{className:"mt-4 space-y-3",children:[{k:"Raw",v:Ke.raw,note:"BOOK_TEXT utf8",color:"bg-zinc-900"},{k:"Zip / Deflate",v:Ke.zip,note:`${((1-Ke.zip/Ke.raw)*100).toFixed(1)}% saved`,color:"bg-sky-600"},{k:"Base64",v:Ke.b64,note:"+33% overhead",color:"bg-amber-600"},{k:"FASTA TGCA",v:Ke.fasta,note:"4× raw A=00 C=01 G=10 T=11",color:"bg-violet-600"},{k:"WASM Real Container",v:Ke.wasmSize,note:"payload + 1KB header • magic 00 61 73 6D • LEB128",color:"bg-emerald-600"},{k:"xz -9",v:Ke.xz,note:"18% better than zip",color:"bg-zinc-700"}].map((v)=>g("div",{className:"flex items-center gap-3",children:[p("div",{className:"w-[120px] text-[11px] font-medium",children:v.k}),p("div",{className:"flex-1 h-2.5 rounded-full bg-zinc-100 border overflow-hidden",children:p("div",{className:`h-full ${v.color}`,style:{width:`${Math.min(100,v.v/Ke.fasta*100)}%`}})}),g("div",{className:"w-[90px] text-right text-[11px]",children:[(v.v/1024).toFixed(1)," KB"]}),p("div",{className:"w-[160px] text-[10px] text-zinc-500 hidden md:block",children:v.note})]},v.k))}),g("div",{className:"mt-5 rounded-xl border bg-zinc-950 text-zinc-200 p-3 font-mono text-[10px] leading-4",children:[g("div",{className:"flex justify-between",children:[p("span",{children:"HEX DUMP WASM HEADER (128B)"}),p("span",{className:"text-zinc-500",children:"00 61 73 6D = \\\\0asm"})]}),p("pre",{className:"mt-2 whitespace-pre-wrap break-all",children:u?A0(u):"loading..."}),g("div",{className:"mt-3 grid grid-cols-2 gap-2 text-[10px]",children:[g("div",{className:"rounded bg-zinc-900 border border-zinc-800 p-2",children:["DISASSEMBLY",p("br",{}),"(module",p("br",{})," (memory 10 20)",p("br",{})," (data (i32.const 0) ...",a?.length," bytes)",p("br",{}),' (export "decompress"))']}),g("div",{className:"rounded bg-zinc-900 border border-zinc-800 p-2",children:["SHA256",p("br",{}),m.slice(0,32),p("br",{}),m.slice(32,64),p("br",{}),p("span",{className:"text-emerald-400",children:"ledger 64 hex"})]})]})]}),g("div",{className:"mt-4 rounded-xl border bg-[#fffbf0] p-3",children:[p("div",{className:"text-[11px] font-semibold tracking-widest",children:"19.7 MB REAL CONTAINER EXAMPLE"}),p("div",{className:"mt-1 text-[11px] text-zinc-600",children:"If full O'Reilly book + code + images 19.7 MB deflate, WASM container = 19.7 MB + 1KB header, holds data in data section, not receipt. xz -9 → ~16.1 MB (18% better than zip)."})]})]})]}),g("section",{className:"mt-8 grid lg:grid-cols-[0.9fr_1.1fr] gap-4",children:[g("div",{className:"bg-white rounded-[20px] border border-zinc-200 p-5 shadow-[0_8px_24px_rgba(0,0,0,0.04)]",children:[p("h3",{className:"text-[12px] font-semibold tracking-widest",children:"ABSTRACTED EXPORTS • WASM API"}),p("div",{className:"mt-3 grid grid-cols-2 gap-2",children:[{name:"get_unit_count",sig:"()→i32",ret:"12",tip:"Number of Rosetta units"},{name:"get_lesson_count",sig:"()→i32",ret:"48",tip:"4 lessons × 12 units"},{name:"get_method_count",sig:"()→i32",ret:`${_t.reduce((v,N)=>v+N.methods,0)}`,tip:"Python methods in book"},{name:"get_chapter",sig:"(i32)→i32",ret:"ptr",tip:"Return chapter offset = idx*256"},{name:"get_method",sig:"(i32)→i32",ret:"ptr",tip:"Return method offset = idx*128"},{name:"decompress",sig:"()→i32",ret:`${a?.length||0}`,tip:"Size of decompressed payload / data_size"}].map((v)=>g("div",{className:"rounded-xl border bg-[#fcfcfb] p-3 hover:bg-white",children:[g("div",{className:"flex items-center justify-between",children:[p("div",{className:"text-[11px] font-semibold font-mono",children:v.name}),p("button",{onClick:()=>Xl(Te===v.name?null:v.name),className:"w-5 h-5 rounded-full bg-zinc-900 text-white grid place-items-center text-[10px]",children:"?"})]}),g("div",{className:"text-[10px] text-zinc-500",children:[v.sig," → ",v.ret]}),Te===v.name&&p("div",{className:"mt-2 text-[10px] p-2 rounded bg-zinc-900 text-white",children:v.tip})]},v.name))}),g("div",{className:"mt-5",children:[p("h4",{className:"text-[11px] font-semibold tracking-widest",children:"MEMORY BOXES • PYTHON OBJECTS"}),p("div",{className:"mt-2 grid grid-cols-3 gap-2",children:[{t:"list",addr:"0x00a0",size:"56B",color:"bg-sky-50 border-sky-200"},{t:"dict",addr:"0x01c0",size:"72B",color:"bg-amber-50 border-amber-200"},{t:"DataFrame",addr:"0x0400",size:"1.2KB",color:"bg-emerald-50 border-emerald-200"},{t:"ndarray",addr:"0x0900",size:"640KB",color:"bg-violet-50 border-violet-200"},{t:"Series",addr:"0x1200",size:"480B",color:"bg-zinc-50 border-zinc-200"},{t:"Index",addr:"0x1400",size:"256B",color:"bg-orange-50 border-orange-200"}].map((v)=>g("div",{className:`rounded-xl border p-2.5 ${v.color}`,children:[p("div",{className:"text-[10px] tracking-widest",children:v.addr}),p("div",{className:"text-[12px] font-semibold",children:v.t}),p("div",{className:"text-[10px]",children:v.size})]},v.t))}),p("div",{className:"mt-3 text-[10px] text-zinc-500",children:"WASM linear memory 10 pages = 655360 bytes • Python objects mapped as boxes • GC via refcount in imported memory"})]})]}),g("div",{className:"bg-white rounded-[20px] border border-zinc-200 p-5 shadow-[0_8px_24px_rgba(0,0,0,0.04)]",children:[g("div",{className:"flex items-center justify-between",children:[p("h3",{className:"text-[12px] font-semibold tracking-widest",children:"16×16×16 CUBE • PYTHON UNITS • CLICK POPULATES EDITOR (setEditorContent fixed)"}),g("div",{className:"flex items-center gap-2",children:[p("span",{className:"text-[10px] text-zinc-500",children:"SLICE"}),p("input",{type:"range",min:0,max:15,value:R,onChange:(v)=>J(parseInt(v.target.value)),className:"w-24"}),p("span",{className:"text-[10px] px-2 py-1 rounded bg-zinc-900 text-white",children:R})]})]}),p("div",{className:"mt-4 grid grid-cols-16 gap-[3px]",style:{gridTemplateColumns:"repeat(16, minmax(0,1fr))"},children:Array.from({length:256}).map((v,N)=>{let I=N%16,G=Math.floor(N/16),K=R,O=(I+G+K)%Gn.length,q=Gn[O],Me=(I*G+K)%4,we=q.lessons[Me],Ue=e===we.code;return p("button",{onClick:()=>{n(we.code),r(we)},title:`${q.title} • ${we.name} • ${we.type}`,className:`aspect-square rounded-[4px] border text-[8px] grid place-items-center transition-all ${Ue?"ring-2 ring-zinc-900 scale-110 z-10":"hover:scale-105"}`,style:{background:Ue?"#111":`${q.color}18`,borderColor:Ue?"#111":`${q.color}40`,color:Ue?"white":q.color},children:we.type[0]},N)})}),p("div",{className:"mt-3 flex flex-wrap gap-1.5",children:Gn.map((v)=>g("span",{className:"text-[10px] px-2 py-1 rounded-full border",style:{background:`${v.color}14`,borderColor:`${v.color}30`,color:v.color},children:["Unit ",v.id," ",v.title]},v.id))}),g("div",{className:"mt-4 rounded-xl border bg-zinc-950 text-white p-3",children:[g("div",{className:"flex items-center justify-between",children:[p("div",{className:"text-[10px] tracking-widest opacity-60",children:"CODE EDITOR • REAL setEditorContent"}),p("div",{className:"text-[10px] px-2 py-1 rounded bg-zinc-800 border border-zinc-700",children:"16×16×16 = 4096 voxels"})]}),p("textarea",{value:e,onChange:(v)=>n(v.target.value),className:"mt-2 w-full h-[96px] bg-zinc-900 border border-zinc-800 rounded-xl p-3 text-[12px] font-mono focus:outline-none focus:ring-2 focus:ring-amber-300"})]})]})]}),g("section",{className:"mt-8 bg-white rounded-[20px] border border-zinc-200 p-5 shadow-[0_8px_24px_rgba(0,0,0,0.04)]",children:[g("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[p("h3",{className:"text-[12px] font-semibold tracking-widest",children:"EXPORT MANY • REAL CONTAINER FORMATS • NO EXTERNAL URLS • OWN LIBRARY"}),g("div",{className:"text-[10px] px-2 py-1 rounded bg-amber-100 border border-amber-200",children:["catalog_id ",M.catalog," • ledger 64 hex • DNA vault blocked URL"]})]}),p("div",{className:"mt-4 grid md:grid-cols-4 lg:grid-cols-6 gap-2",children:[{label:"WASM",ext:"wasm",action:()=>u&&me(`python_rosetta_${M.catalog}.wasm`,u)},{label:"WAT",ext:"wat",action:sf},{label:"ZIP",ext:"zip",action:()=>a&&me(`python_rosetta_${M.catalog}.zip`,a)},{label:"JAR",ext:"jar",action:()=>a&&me(`python_rosetta_${M.catalog}.jar`,a)},{label:"FASTA",ext:"fasta",action:cf},{label:"TGCA BINARY",ext:"tgca.txt",action:()=>{if(!u)return;let v=["00","01","10","11"],N="";for(let I=0;I<Math.min(512,u.length);I++)N+=v[u[I]&3];me(`python_rosetta_${M.catalog}.tgca.txt`,N)}},{label:"JSON Manifest",ext:"json",action:()=>me(`python_rosetta_${M.catalog}.json`,JSON.stringify({catalog:M.catalog,title:M.title,units:Gn.length,methods:_t.reduce((v,N)=>v+N.methods,0),wasm_size:u?.length,sha256:m,memory_pages:10,exports:["get_unit_count","get_lesson_count","get_method_count","get_chapter","get_method","decompress"]},null,2),"application/json")},{label:"MD",ext:"md",action:()=>me(`python_rosetta_${M.catalog}.md`,`# ${M.title}
Catalog ${M.catalog}
SHA ${m}
`,"text/markdown")},{label:"TXT",ext:"txt",action:()=>me(`python_rosetta_${M.catalog}.txt`,Pt.slice(0,20000),"text/plain")},{label:"PY",ext:"py",action:()=>me(`python_rosetta_${M.catalog}.py`,Pt.slice(0,20000),"text/x-python")},{label:"HEX",ext:"hex",action:()=>u&&me(`python_rosetta_${M.catalog}.hex`,Array.from(u.slice(0,1024)).map((v)=>v.toString(16).padStart(2,"0")).join(""),"text/plain")},{label:"B64",ext:"b64",action:()=>u&&me(`python_rosetta_${M.catalog}.b64`,btoa(String.fromCharCode(...u.slice(0,4096))),"text/plain")},{label:"8K PNG 7680×4320",ext:"png",action:()=>{if(!F.current)return;F.current.toBlob((v)=>{if(v){let N=URL.createObjectURL(v),I=document.createElement("a");I.href=N,I.download=`python_rosetta_${M.catalog}_8k.png`,I.click(),URL.revokeObjectURL(N)}})}},{label:"HTML",ext:"html",action:()=>me(`python_rosetta_${M.catalog}.html`,`<!doctype html><meta charset=utf-8><title>${M.title}</title><pre>${Pt.slice(0,5000)}</pre>`,"text/html")},{label:"ImageData low-level",ext:"bin",action:()=>{let v=F.current;if(!v)return;let N=v.getContext("2d");if(!N)return;let I=N.getImageData(0,0,v.width,v.height).data;me(`python_rosetta_${M.catalog}_imagedata.bin`,I)}}].map((v)=>g("button",{onClick:v.action,className:"text-left rounded-xl border bg-[#fcfcfb] hover:bg-white hover:border-zinc-300 p-3 transition",children:[p("div",{className:"text-[11px] font-semibold",children:v.label}),g("div",{className:"text-[10px] text-zinc-500",children:[".",v.ext," • real container"]})]},v.label))}),g("div",{className:"mt-6 grid md:grid-cols-3 gap-4",children:[g("div",{className:"rounded-xl border bg-[#fbfaf8] p-3",children:[p("div",{className:"text-[11px] font-semibold",children:"INLINE HELP TOOLTIPS EVERYWHERE"}),p("div",{className:"mt-2 text-[11px] leading-5 text-zinc-600",children:"Hover ? icons, cube squares show tooltip: unit + lesson + type. No external URLs visible. Static programmed DNA vault blocked URL list implemented locally."})]}),g("div",{className:"rounded-xl border bg-white p-3",children:[p("div",{className:"text-[11px] font-semibold",children:"MCP TOOLS"}),p("div",{className:"mt-2 flex flex-wrap gap-1.5 text-[10px]",children:["compress_book","decompress_book","get_chapter","get_method","validate_wasm","export_fasta","build_image","parse_py"].map((v)=>p("span",{className:"px-2 py-1 rounded bg-zinc-900 text-white",children:v},v))}),p("div",{className:"mt-2 text-[10px] text-zinc-500",children:"Model Context Protocol tools exposed as local functions, no network."})]}),g("div",{className:"rounded-xl border bg-zinc-950 text-white p-3",children:[p("div",{className:"text-[11px] font-semibold tracking-widest",children:"8K PREVIEW • ImageData low-level"}),p("canvas",{ref:F,className:"mt-2 w-full rounded-lg border border-zinc-800 aspect-[16/9] object-cover"}),p("div",{className:"mt-2 text-[10px] text-zinc-400",children:"7680×4320 simulated via 768×432 ImageData loop • real pixel manipulation"})]})]}),g("div",{className:"mt-6 flex flex-wrap gap-2 text-[10px]",children:[p("span",{className:"px-2.5 py-1 rounded-full bg-zinc-900 text-white",children:"PERFECT THIRD PRODUCT • PYTHON ONLY"}),p("span",{className:"px-2.5 py-1 rounded-full bg-white border",children:"C++ DONE • JAVA DONE • NOW PYTHON"}),p("span",{className:"px-2.5 py-1 rounded-full bg-[#FFB84C] text-zinc-900 font-semibold border border-amber-300",children:"EYEOVERTHINK • IBM Plex Mono • No watermarks • Own library • No prices on others material"})]})]}),g("footer",{className:"mt-10 pb-8 text-center text-[10px] tracking-widest text-zinc-400",children:["EYEOVERTHINK PYTHON ROSETTA STONE WASM COMPRESSOR • PERFECT ONE LANGUAGE • THIRD PRODUCT • CATALOG ",M.catalog," • WASM MAGIC 00 61 73 6D • LEB128 • 10 PAGES • DATA SECTION REAL CONTAINER"]})]})]})}uf.createRoot(document.getElementById("root")).render(p(of.default.StrictMode,{children:p(hi,{})}));
</script>
  <script>(function(){function m(a){var h=a.getAttribute("href");if(!h)return;try{var u=new URL(h,document.baseURI);if((u.protocol==="http:"||u.protocol==="https:")&&u.host!==location.host){a.target="_blank";a.rel="noopener noreferrer";}}catch(e){}}function s(){document.querySelectorAll("a[href]").forEach(m);}if(document.readyState!=="loading"){s();}else{document.addEventListener("DOMContentLoaded",s);}document.addEventListener("click",function(e){var a=e.target&&e.target.closest&&e.target.closest("a[href]");if(a){m(a);}},true);})();</script>
  
</body>
</html>