diff --git a/bash.exe.stackdump b/bash.exe.stackdump new file mode 100644 index 0000000..1463029 --- /dev/null +++ b/bash.exe.stackdump @@ -0,0 +1,9 @@ +Stack trace: +Frame Function Args +000FFFF9F70 00210062B0E (00210297178, 00210275E3E, 000FFFF9F70, 000FFFF8E70) +000FFFF9F70 0021004846A (00000000000, 00000000000, 00000000000, 00000000004) +000FFFF9F70 002100484A2 (00210297229, 000FFFF9E28, 000FFFF9F70, 00000000000) +000FFFF9F70 002100D2FFE (00000000000, 00000000000, 00000000000, 00000000000) +000FFFF9F70 002100D3125 (000FFFF9F80, 00000000000, 00000000000, 00000000000) +001004F84B7 002100D46E5 (000FFFF9F80, 00000000000, 00000000000, 00000000000) +End of stack trace diff --git a/dist/assets/index-DmKezAnz.css b/dist/assets/index-BMF9Bv1T.css similarity index 62% rename from dist/assets/index-DmKezAnz.css rename to dist/assets/index-BMF9Bv1T.css index e0bf5f9..d01e2b4 100644 --- a/dist/assets/index-DmKezAnz.css +++ b/dist/assets/index-BMF9Bv1T.css @@ -1 +1 @@ -.page-layout{min-height:100vh;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem 1rem;position:relative;overflow:hidden}.page-layout:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(1px 1px at 15% 20%,rgba(0,200,255,.18) 0%,transparent 100%),radial-gradient(1px 1px at 42% 8%,rgba(0,255,204,.12) 0%,transparent 100%),radial-gradient(1px 1px at 70% 35%,rgba(0,200,255,.15) 0%,transparent 100%),radial-gradient(1px 1px at 88% 60%,rgba(0,255,204,.1) 0%,transparent 100%),radial-gradient(1px 1px at 25% 75%,rgba(0,200,255,.12) 0%,transparent 100%),radial-gradient(1px 1px at 55% 90%,rgba(0,255,204,.08) 0%,transparent 100%);pointer-events:none;z-index:0}.page-layout>*{position:relative;z-index:1}.dino-game-wrapper{width:100%;max-width:820px;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.dino-game-canvas{width:100%;height:auto;display:block;border:1px solid rgba(0,200,255,.18);border-radius:8px;box-shadow:0 0 0 1px #00000080,0 0 32px #00c8ff14}.terminal-log{width:100%;max-width:620px;background:var(--surface);border:1px solid var(--border);border-radius:8px;overflow:hidden;box-shadow:0 0 24px #00b4ff12}.terminal-header{display:flex;align-items:center;gap:6px;padding:8px 14px;background:var(--surface-alt);border-bottom:1px solid var(--border);-webkit-user-select:none;user-select:none}.terminal-dot{width:10px;height:10px;border-radius:50%}.terminal-dot.red{background:#ff5f57}.terminal-dot.yellow{background:#febc2e}.terminal-dot.green{background:#28c840}.terminal-title{margin-left:6px;font-size:.72rem;color:var(--text-muted);letter-spacing:.04em}.terminal-body{padding:12px 16px 10px;min-height:110px;display:flex;flex-direction:column;gap:3px;overflow:hidden}.terminal-line{font-size:.78rem;line-height:1.5;white-space:pre-wrap;word-break:break-all}.terminal-line--cmd{color:var(--accent)}.terminal-line--info{color:var(--cyan-dim)}.terminal-line--warn{color:var(--warning)}.terminal-line--err{color:var(--danger)}@keyframes slideInLine{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.terminal-line--new{animation:slideInLine .3s ease-out both}.terminal-cursor{display:inline-block;color:var(--accent);font-size:.85rem;animation:blink 1.1s step-end infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.nfp-container{width:100%;max-width:860px;padding:2.5rem 1.5rem 3rem;display:flex;flex-direction:column;align-items:center;gap:2rem;text-align:center}.nfp-header{display:flex;flex-direction:column;align-items:center;gap:.6rem}@keyframes glitch{0%,88%,to{transform:none;text-shadow:-2px 0 #00ffcc,2px 0 #ff4455}90%{transform:translate(-2px);color:#f45}92%{transform:translate(2px);color:#0fc}94%{transform:translate(-1px)}96%{transform:none}}@keyframes fadeInScale{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.nfp-code{font-size:clamp(5.5rem,18vw,10.5rem);font-weight:900;letter-spacing:.06em;line-height:1;color:transparent;-webkit-text-stroke:2px var(--accent);text-shadow:-2px 0 #00ffcc,2px 0 #ff4455,0 0 60px rgba(0,255,204,.25);animation:fadeInScale .7s ease-out both,glitch 5s ease-in-out 1.5s infinite}.nfp-title{font-size:clamp(1.1rem,3vw,1.6rem);font-weight:700;color:var(--text);animation:fadeInScale .7s .15s ease-out both}.nfp-subtitle{font-size:clamp(.82rem,2vw,1rem);color:var(--cyan-dim);animation:fadeInScale .7s .3s ease-out both}.nfp-kubectl{display:inline-block;font-size:.8rem;color:var(--text-muted);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:.35rem .8rem;animation:fadeInScale .7s .45s ease-out both}.nfp-kubectl .err{color:var(--danger)}.nfp-game-section{width:100%;animation:fadeInScale .7s .55s ease-out both}.nfp-game-hint{margin-top:.55rem;font-size:.72rem;color:var(--text-muted);letter-spacing:.03em}.nfp-log-section{width:100%;display:flex;justify-content:center;animation:fadeInScale .7s .65s ease-out both}.nfp-footer{display:flex;gap:.9rem;flex-wrap:wrap;justify-content:center;animation:fadeInScale .7s .75s ease-out both}.nfp-btn{display:inline-flex;align-items:center;gap:.45rem;padding:.55rem 1.4rem;border-radius:6px;font-family:var(--font-mono);font-size:.85rem;font-weight:600;text-decoration:none;cursor:pointer;transition:background .18s,border-color .18s,box-shadow .18s;border:1px solid transparent}.nfp-btn--primary{background:#00ffcc1a;border-color:#0fc6;color:var(--accent)}.nfp-btn--primary:hover{background:#00ffcc2e;border-color:var(--accent);box-shadow:0 0 18px var(--accent-glow)}.nfp-btn--secondary{background:#ffffff0d;border-color:#ffffff24;color:var(--text-muted)}.nfp-btn--secondary:hover{background:#ffffff17;border-color:#ffffff47;color:var(--text)}@media (max-width: 480px){.nfp-container{gap:1.5rem;padding:1.5rem 1rem 2rem}.nfp-footer{gap:.65rem}.nfp-btn{font-size:.8rem;padding:.5rem 1.1rem}}.bgp-container{width:100%;max-width:700px;padding:2.5rem 1.5rem 3rem;display:flex;flex-direction:column;align-items:center;gap:2rem;text-align:center}.bgp-header{display:flex;flex-direction:column;align-items:center;gap:.6rem}.bgp-code{font-size:clamp(5rem,18vw,9rem);font-weight:900;letter-spacing:.06em;line-height:1;color:transparent;-webkit-text-stroke:2px var(--warning);text-shadow:-2px 0 var(--warning),2px 0 var(--danger),0 0 60px rgba(255,170,0,.25)}.bgp-title{font-size:clamp(1.1rem,3vw,1.5rem);font-weight:700;color:var(--text)}.bgp-subtitle{font-size:.9rem;color:var(--cyan-dim)}.bgp-kubectl{font-size:.8rem;color:var(--text-muted);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:.35rem .8rem}.bgp-kubectl .err{color:var(--danger)}.bgp-log-section{width:100%;display:flex;justify-content:center}.bgp-footer{display:flex;gap:.9rem;flex-wrap:wrap;justify-content:center}.bgp-btn{display:inline-flex;align-items:center;gap:.45rem;padding:.55rem 1.4rem;border-radius:6px;font-family:var(--font-mono);font-size:.85rem;font-weight:600;text-decoration:none;cursor:pointer;transition:background .18s,border-color .18s,box-shadow .18s;border:1px solid transparent}.bgp-btn--primary{background:#ffaa001a;border-color:#fa06;color:var(--warning)}.bgp-btn--primary:hover{background:#ffaa002e;border-color:var(--warning);box-shadow:0 0 18px #ffaa004d}.bgp-btn--secondary{background:#ffffff0d;border-color:#ffffff24;color:var(--text-muted)}.bgp-btn--secondary:hover{background:#ffffff17;border-color:#ffffff47;color:var(--text)}.maint-container{width:100%;max-width:600px;padding:3rem 1.5rem;display:flex;flex-direction:column;align-items:center;gap:1.8rem;text-align:center}.maint-header{display:flex;flex-direction:column;align-items:center;gap:.7rem}.maint-icon{font-size:3.5rem}.maint-title{font-size:clamp(1.5rem,4vw,2.2rem);font-weight:800;color:var(--warning);text-shadow:0 0 30px rgba(255,170,0,.3)}.maint-subtitle{font-size:1rem;color:var(--text);min-height:1.6em}.maint-status{font-size:.78rem;color:var(--text-muted);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:.35rem .8rem}.maint-status .info{color:var(--cyan)}.maint-progress{width:100%;max-width:400px;height:4px;background:var(--surface);border-radius:2px;overflow:hidden}@keyframes indeterminate{0%{transform:translate(-100%)}to{transform:translate(400%)}}.maint-progress-bar{height:100%;width:25%;background:linear-gradient(90deg,transparent,var(--warning),transparent);animation:indeterminate 1.8s linear infinite}.maint-note{font-size:.82rem;color:var(--text-muted)}.maint-footer{display:flex;justify-content:center}.maint-btn{padding:.55rem 1.6rem;border-radius:6px;border:1px solid rgba(255,170,0,.35);background:#ffaa001a;color:var(--warning);font-family:var(--font-mono);font-size:.85rem;font-weight:600;cursor:pointer;transition:background .18s,border-color .18s,box-shadow .18s}.maint-btn:hover{background:#ffaa002e;border-color:var(--warning);box-shadow:0 0 16px #ffaa0047}.home-container{width:100%;max-width:680px;padding:3rem 1.5rem;display:flex;flex-direction:column;align-items:center;gap:2.2rem;text-align:center}.home-header{display:flex;flex-direction:column;align-items:center;gap:.6rem}.home-logo{font-size:4rem;text-shadow:0 0 30px var(--accent-glow)}.home-title{font-size:clamp(2rem,6vw,3rem);font-weight:900;color:transparent;-webkit-text-stroke:2px var(--accent);text-shadow:0 0 40px var(--accent-glow)}.home-subtitle{font-size:1rem;color:var(--cyan-dim)}.home-status{font-size:.78rem;color:var(--text-muted);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:.3rem .8rem}.home-services{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.8rem;width:100%}.home-card{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1rem .8rem;background:var(--surface);border:1px solid var(--border);border-radius:8px;text-decoration:none;color:var(--text);transition:border-color .18s,box-shadow .18s}.home-card:hover{border-color:var(--accent);box-shadow:0 0 16px var(--accent-dim)}.home-card-name{font-size:.9rem;font-weight:600}.home-card-badge{font-size:.7rem;padding:.2rem .5rem;border-radius:3px;letter-spacing:.04em}.home-card-badge--running{background:#00ff881f;color:#0f8}.home-card-badge--pending{background:#4499ff1f;color:#49f}.home-card-badge--error{background:#ff44551f;color:var(--danger)}.home-footer{margin-top:.5rem}.home-footer-text{font-size:.82rem;color:var(--text-muted)}.home-link{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.home-link:hover{color:var(--cyan)}:root{--bg: #080c14;--surface: #0d1520;--surface-alt: #111827;--border: rgba(0, 200, 255, .14);--accent: #00ffcc;--accent-dim: rgba(0, 255, 204, .25);--accent-glow: rgba(0, 255, 204, .35);--cyan: #00ccff;--cyan-dim: rgba(0, 200, 255, .5);--text: #e0e8f0;--text-muted: rgba(200, 220, 240, .45);--danger: #ff4455;--warning: #ffaa00;--font-mono: "Consolas", "Monaco", "Courier New", monospace}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;background:var(--bg);color:var(--text);font-family:var(--font-mono);-webkit-font-smoothing:antialiased;overflow-x:hidden}#root{min-height:100%;display:flex;flex-direction:column}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:#00c8ff40;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#00c8ff66} +.page-layout{min-height:100vh;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem 1rem;position:relative;overflow:hidden}.page-layout:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(1px 1px at 15% 20%,rgba(0,200,255,.18) 0%,transparent 100%),radial-gradient(1px 1px at 42% 8%,rgba(0,255,204,.12) 0%,transparent 100%),radial-gradient(1px 1px at 70% 35%,rgba(0,200,255,.15) 0%,transparent 100%),radial-gradient(1px 1px at 88% 60%,rgba(0,255,204,.1) 0%,transparent 100%),radial-gradient(1px 1px at 25% 75%,rgba(0,200,255,.12) 0%,transparent 100%),radial-gradient(1px 1px at 55% 90%,rgba(0,255,204,.08) 0%,transparent 100%);pointer-events:none;z-index:0}.page-layout>*{position:relative;z-index:1}.dino-game-wrapper{width:100%;max-width:820px;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.dino-game-canvas{width:100%;height:auto;display:block;border:1px solid rgba(0,200,255,.18);border-radius:8px;box-shadow:0 0 0 1px #00000080,0 0 32px #00c8ff14}.terminal-log{width:100%;max-width:620px;background:var(--surface);border:1px solid var(--border);border-radius:8px;overflow:hidden;box-shadow:0 0 24px #00b4ff12}.terminal-header{display:flex;align-items:center;gap:6px;padding:8px 14px;background:var(--surface-alt);border-bottom:1px solid var(--border);-webkit-user-select:none;user-select:none}.terminal-dot{width:10px;height:10px;border-radius:50%}.terminal-dot.red{background:#ff5f57}.terminal-dot.yellow{background:#febc2e}.terminal-dot.green{background:#28c840}.terminal-title{margin-left:6px;font-size:.72rem;color:var(--text-muted);letter-spacing:.04em}.terminal-body{padding:12px 16px 10px;min-height:110px;display:flex;flex-direction:column;gap:3px;overflow:hidden}.terminal-line{font-size:.78rem;line-height:1.5;white-space:pre-wrap;word-break:break-all}.terminal-line--cmd{color:var(--accent)}.terminal-line--info{color:var(--cyan-dim)}.terminal-line--warn{color:var(--warning)}.terminal-line--err{color:var(--danger)}@keyframes slideInLine{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.terminal-line--new{animation:slideInLine .3s ease-out both}.terminal-cursor{display:inline-block;color:var(--accent);font-size:.85rem;animation:blink 1.1s step-end infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.nfp-container{width:100%;max-width:860px;padding:2.5rem 1.5rem 3rem;display:flex;flex-direction:column;align-items:center;gap:2rem;text-align:center}.nfp-header{display:flex;flex-direction:column;align-items:center;gap:.6rem}@keyframes glitch{0%,88%,to{transform:none;text-shadow:-2px 0 #00ffcc,2px 0 #ff4455}90%{transform:translate(-2px);color:#f45}92%{transform:translate(2px);color:#0fc}94%{transform:translate(-1px)}96%{transform:none}}@keyframes fadeInScale{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.nfp-code{font-size:clamp(5.5rem,18vw,10.5rem);font-weight:900;letter-spacing:.06em;line-height:1;color:transparent;-webkit-text-stroke:2px var(--accent);text-shadow:-2px 0 #00ffcc,2px 0 #ff4455,0 0 60px rgba(0,255,204,.25);animation:fadeInScale .7s ease-out both,glitch 5s ease-in-out 1.5s infinite}.nfp-title{font-size:clamp(1.1rem,3vw,1.6rem);font-weight:700;color:var(--text);animation:fadeInScale .7s .15s ease-out both}.nfp-subtitle{font-size:clamp(.82rem,2vw,1rem);color:var(--cyan-dim);animation:fadeInScale .7s .3s ease-out both}.nfp-kubectl{display:inline-block;font-size:.8rem;color:var(--text-muted);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:.35rem .8rem;animation:fadeInScale .7s .45s ease-out both}.nfp-kubectl .err{color:var(--danger)}.nfp-game-section{width:100%;animation:fadeInScale .7s .55s ease-out both}.nfp-game-hint{margin-top:.55rem;font-size:.72rem;color:var(--text-muted);letter-spacing:.03em}.nfp-log-section{width:100%;display:flex;justify-content:center;animation:fadeInScale .7s .65s ease-out both}.nfp-footer{display:flex;gap:.9rem;flex-wrap:wrap;justify-content:center;animation:fadeInScale .7s .75s ease-out both}.nfp-btn{display:inline-flex;align-items:center;gap:.45rem;padding:.55rem 1.4rem;border-radius:6px;font-family:var(--font-mono);font-size:.85rem;font-weight:600;text-decoration:none;cursor:pointer;transition:background .18s,border-color .18s,box-shadow .18s;border:1px solid transparent}.nfp-btn--primary{background:#00ffcc1a;border-color:#0fc6;color:var(--accent)}.nfp-btn--primary:hover{background:#00ffcc2e;border-color:var(--accent);box-shadow:0 0 18px var(--accent-glow)}.nfp-btn--secondary{background:#ffffff0d;border-color:#ffffff24;color:var(--text-muted)}.nfp-btn--secondary:hover{background:#ffffff17;border-color:#ffffff47;color:var(--text)}@media (max-width: 480px){.nfp-container{gap:1.5rem;padding:1.5rem 1rem 2rem}.nfp-footer{gap:.65rem}.nfp-btn{font-size:.8rem;padding:.5rem 1.1rem}}.bgp-container{width:100%;max-width:700px;padding:2.5rem 1.5rem 3rem;display:flex;flex-direction:column;align-items:center;gap:2rem;text-align:center}.bgp-header{display:flex;flex-direction:column;align-items:center;gap:.6rem}.bgp-code{font-size:clamp(5rem,18vw,9rem);font-weight:900;letter-spacing:.06em;line-height:1;color:transparent;-webkit-text-stroke:2px var(--warning);text-shadow:-2px 0 var(--warning),2px 0 var(--danger),0 0 60px rgba(255,170,0,.25)}.bgp-title{font-size:clamp(1.1rem,3vw,1.5rem);font-weight:700;color:var(--text)}.bgp-subtitle{font-size:.9rem;color:var(--cyan-dim)}.bgp-kubectl{font-size:.8rem;color:var(--text-muted);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:.35rem .8rem}.bgp-kubectl .err{color:var(--danger)}.bgp-log-section{width:100%;display:flex;justify-content:center}.bgp-footer{display:flex;gap:.9rem;flex-wrap:wrap;justify-content:center}.bgp-btn{display:inline-flex;align-items:center;gap:.45rem;padding:.55rem 1.4rem;border-radius:6px;font-family:var(--font-mono);font-size:.85rem;font-weight:600;text-decoration:none;cursor:pointer;transition:background .18s,border-color .18s,box-shadow .18s;border:1px solid transparent}.bgp-btn--primary{background:#ffaa001a;border-color:#fa06;color:var(--warning)}.bgp-btn--primary:hover{background:#ffaa002e;border-color:var(--warning);box-shadow:0 0 18px #ffaa004d}.bgp-btn--secondary{background:#ffffff0d;border-color:#ffffff24;color:var(--text-muted)}.bgp-btn--secondary:hover{background:#ffffff17;border-color:#ffffff47;color:var(--text)}.maint-container{width:100%;max-width:600px;padding:3rem 1.5rem;display:flex;flex-direction:column;align-items:center;gap:1.8rem;text-align:center}.maint-header{display:flex;flex-direction:column;align-items:center;gap:.7rem}.maint-icon{font-size:3.5rem}.maint-title{font-size:clamp(1.5rem,4vw,2.2rem);font-weight:800;color:var(--warning);text-shadow:0 0 30px rgba(255,170,0,.3)}.maint-subtitle{font-size:1rem;color:var(--text);min-height:1.6em}.maint-status{font-size:.78rem;color:var(--text-muted);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:.35rem .8rem}.maint-status .info{color:var(--cyan)}.maint-progress{width:100%;max-width:400px;height:4px;background:var(--surface);border-radius:2px;overflow:hidden}@keyframes indeterminate{0%{transform:translate(-100%)}to{transform:translate(400%)}}.maint-progress-bar{height:100%;width:25%;background:linear-gradient(90deg,transparent,var(--warning),transparent);animation:indeterminate 1.8s linear infinite}.maint-note{font-size:.82rem;color:var(--text-muted)}.maint-footer{display:flex;justify-content:center}.maint-btn{padding:.55rem 1.6rem;border-radius:6px;border:1px solid rgba(255,170,0,.35);background:#ffaa001a;color:var(--warning);font-family:var(--font-mono);font-size:.85rem;font-weight:600;cursor:pointer;transition:background .18s,border-color .18s,box-shadow .18s}.maint-btn:hover{background:#ffaa002e;border-color:var(--warning);box-shadow:0 0 16px #ffaa0047}.tetris-shell{width:100%;max-width:700px;background:linear-gradient(180deg,#0a1420d9,#060c12eb);border:1px solid rgba(0,200,255,.2);border-radius:10px;padding:1rem;position:relative;box-shadow:0 0 28px #00c8ff1a}.tetris-header{display:flex;align-items:center;justify-content:space-between;gap:.8rem;margin-bottom:.9rem}.tetris-title{font-size:1rem;letter-spacing:.08em;color:var(--accent)}.tetris-metrics{display:flex;gap:.8rem;font-size:.75rem;color:var(--text-muted)}.tetris-layout{display:flex;gap:1rem;align-items:flex-start}.tetris-board{width:100%;max-width:300px;aspect-ratio:1 / 2;display:grid;grid-template-columns:repeat(10,1fr);grid-template-rows:repeat(20,1fr);gap:2px;background:#0006;border:1px solid rgba(255,255,255,.08);padding:3px}.tetris-cell{background:#ffffff06}.tetris-cell[style]{background:var(--cell-color);box-shadow:inset 0 0 0 1px #00000040}.tetris-cell--ghost{background:#ffffff1a;box-shadow:inset 0 0 0 1px #fff3}.tetris-sidebar{min-width:130px;display:flex;flex-direction:column;gap:.8rem}.tetris-label{font-size:.7rem;color:var(--text-muted);margin-bottom:.3rem}.tetris-next-grid{width:96px;height:96px;display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);gap:2px;background:#00000047;border:1px solid rgba(255,255,255,.09);padding:4px}.tetris-next-cell{background:#ffffff08}.tetris-next-cell--on{background:var(--cell-color);box-shadow:inset 0 0 0 1px #0000004d}.tetris-btn{border:1px solid var(--accent);background:#00ffcc1a;color:var(--accent);border-radius:6px;padding:.45rem .6rem;cursor:pointer;font-family:var(--font-mono);font-size:.8rem}.tetris-btn:hover{background:#00ffcc2e}.tetris-help{margin-top:.8rem;font-size:.7rem;color:var(--text-muted)}.tetris-overlay{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:10px;background:#060a108c;display:flex;align-items:center;justify-content:center;pointer-events:none}.tetris-overlay p{color:#fff;font-size:1rem;letter-spacing:.08em}@media (max-width: 640px){.tetris-layout{flex-direction:column;align-items:center}.tetris-sidebar{width:100%;min-width:0;align-items:center}}.home-container{width:100%;max-width:680px;padding:3rem 1.5rem;display:flex;flex-direction:column;align-items:center;gap:2.2rem;text-align:center}.home-header{display:flex;flex-direction:column;align-items:center;gap:.6rem}.home-logo{font-size:4rem;text-shadow:0 0 30px var(--accent-glow)}.home-title{font-size:clamp(2rem,6vw,3rem);font-weight:900;color:transparent;-webkit-text-stroke:2px var(--accent);text-shadow:0 0 40px var(--accent-glow)}.home-subtitle{font-size:1rem;color:var(--cyan-dim)}.home-status{font-size:.78rem;color:var(--text-muted);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:.3rem .8rem}.home-services{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.8rem;width:100%}.home-card{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1rem .8rem;background:var(--surface);border:1px solid var(--border);border-radius:8px;text-decoration:none;color:var(--text);transition:border-color .18s,box-shadow .18s}.home-card:hover{border-color:var(--accent);box-shadow:0 0 16px var(--accent-dim)}.home-card-name{font-size:.9rem;font-weight:600}.home-card-badge{font-size:.7rem;padding:.2rem .5rem;border-radius:3px;letter-spacing:.04em}.home-card-badge--running{background:#00ff881f;color:#0f8}.home-card-badge--pending{background:#4499ff1f;color:#49f}.home-card-badge--error{background:#ff44551f;color:var(--danger)}.home-footer{margin-top:.5rem}.home-footer-text{font-size:.82rem;color:var(--text-muted)}.home-link{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.home-link:hover{color:var(--cyan)}.home-tetris{width:100%;display:flex;flex-direction:column;align-items:center;gap:.7rem;margin-top:.3rem}.home-tetris-title{font-size:.92rem;color:var(--cyan);letter-spacing:.08em}:root{--bg: #080c14;--surface: #0d1520;--surface-alt: #111827;--border: rgba(0, 200, 255, .14);--accent: #00ffcc;--accent-dim: rgba(0, 255, 204, .25);--accent-glow: rgba(0, 255, 204, .35);--cyan: #00ccff;--cyan-dim: rgba(0, 200, 255, .5);--text: #e0e8f0;--text-muted: rgba(200, 220, 240, .45);--danger: #ff4455;--warning: #ffaa00;--font-mono: "Consolas", "Monaco", "Courier New", monospace}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;background:var(--bg);color:var(--text);font-family:var(--font-mono);-webkit-font-smoothing:antialiased;overflow-x:hidden}#root{min-height:100%;display:flex;flex-direction:column}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:#00c8ff40;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#00c8ff66} diff --git a/dist/assets/index-BmIETw7i.js b/dist/assets/index-BmIETw7i.js deleted file mode 100644 index 31e0545..0000000 --- a/dist/assets/index-BmIETw7i.js +++ /dev/null @@ -1,67 +0,0 @@ -function Qc(e,t){for(var n=0;nr[l]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))r(l);new MutationObserver(l=>{for(const o of l)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(l){const o={};return l.integrity&&(o.integrity=l.integrity),l.referrerPolicy&&(o.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?o.credentials="include":l.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(l){if(l.ep)return;l.ep=!0;const o=n(l);fetch(l.href,o)}})();function Yc(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var ws={exports:{}},fl={},Ss={exports:{}},j={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var nr=Symbol.for("react.element"),Kc=Symbol.for("react.portal"),Gc=Symbol.for("react.fragment"),Xc=Symbol.for("react.strict_mode"),Zc=Symbol.for("react.profiler"),Jc=Symbol.for("react.provider"),qc=Symbol.for("react.context"),bc=Symbol.for("react.forward_ref"),ef=Symbol.for("react.suspense"),tf=Symbol.for("react.memo"),nf=Symbol.for("react.lazy"),eu=Symbol.iterator;function rf(e){return e===null||typeof e!="object"?null:(e=eu&&e[eu]||e["@@iterator"],typeof e=="function"?e:null)}var ks={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Es=Object.assign,Cs={};function dn(e,t,n){this.props=e,this.context=t,this.refs=Cs,this.updater=n||ks}dn.prototype.isReactComponent={};dn.prototype.setState=function(e,t){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,t,"setState")};dn.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function xs(){}xs.prototype=dn.prototype;function li(e,t,n){this.props=e,this.context=t,this.refs=Cs,this.updater=n||ks}var oi=li.prototype=new xs;oi.constructor=li;Es(oi,dn.prototype);oi.isPureReactComponent=!0;var tu=Array.isArray,_s=Object.prototype.hasOwnProperty,ii={current:null},Ns={key:!0,ref:!0,__self:!0,__source:!0};function Ps(e,t,n){var r,l={},o=null,i=null;if(t!=null)for(r in t.ref!==void 0&&(i=t.ref),t.key!==void 0&&(o=""+t.key),t)_s.call(t,r)&&!Ns.hasOwnProperty(r)&&(l[r]=t[r]);var u=arguments.length-2;if(u===1)l.children=n;else if(1>>1,Z=_[Q];if(0>>1;Ql(Ol,z))Etl(sr,Ol)?(_[Q]=sr,_[Et]=z,Q=Et):(_[Q]=Ol,_[kt]=z,Q=kt);else if(Etl(sr,z))_[Q]=sr,_[Et]=z,Q=Et;else break e}}return L}function l(_,L){var z=_.sortIndex-L.sortIndex;return z!==0?z:_.id-L.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var i=Date,u=i.now();e.unstable_now=function(){return i.now()-u}}var s=[],a=[],h=1,d=null,m=3,y=!1,w=!1,S=!1,x=typeof setTimeout=="function"?setTimeout:null,f=typeof clearTimeout=="function"?clearTimeout:null,c=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function p(_){for(var L=n(a);L!==null;){if(L.callback===null)r(a);else if(L.startTime<=_)r(a),L.sortIndex=L.expirationTime,t(s,L);else break;L=n(a)}}function v(_){if(S=!1,p(_),!w)if(n(s)!==null)w=!0,zl(E);else{var L=n(a);L!==null&&jl(v,L.startTime-_)}}function E(_,L){w=!1,S&&(S=!1,f(R),R=-1),y=!0;var z=m;try{for(p(L),d=n(s);d!==null&&(!(d.expirationTime>L)||_&&!Re());){var Q=d.callback;if(typeof Q=="function"){d.callback=null,m=d.priorityLevel;var Z=Q(d.expirationTime<=L);L=e.unstable_now(),typeof Z=="function"?d.callback=Z:d===n(s)&&r(s),p(L)}else r(s);d=n(s)}if(d!==null)var ur=!0;else{var kt=n(a);kt!==null&&jl(v,kt.startTime-L),ur=!1}return ur}finally{d=null,m=z,y=!1}}var P=!1,T=null,R=-1,H=5,O=-1;function Re(){return!(e.unstable_now()-O_||125<_?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):H=0<_?Math.floor(1e3/_):5},e.unstable_getCurrentPriorityLevel=function(){return m},e.unstable_getFirstCallbackNode=function(){return n(s)},e.unstable_next=function(_){switch(m){case 1:case 2:case 3:var L=3;break;default:L=m}var z=m;m=L;try{return _()}finally{m=z}},e.unstable_pauseExecution=function(){},e.unstable_requestPaint=function(){},e.unstable_runWithPriority=function(_,L){switch(_){case 1:case 2:case 3:case 4:case 5:break;default:_=3}var z=m;m=_;try{return L()}finally{m=z}},e.unstable_scheduleCallback=function(_,L,z){var Q=e.unstable_now();switch(typeof z=="object"&&z!==null?(z=z.delay,z=typeof z=="number"&&0Q?(_.sortIndex=z,t(a,_),n(s)===null&&_===n(a)&&(S?(f(R),R=-1):S=!0,jl(v,z-Q))):(_.sortIndex=Z,t(s,_),w||y||(w=!0,zl(E))),_},e.unstable_shouldYield=Re,e.unstable_wrapCallback=function(_){var L=m;return function(){var z=m;m=L;try{return _.apply(this,arguments)}finally{m=z}}}})(Os);js.exports=Os;var vf=js.exports;/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var gf=N,Se=vf;function g(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),ao=Object.prototype.hasOwnProperty,yf=/^[: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]*$/,ru={},lu={};function wf(e){return ao.call(lu,e)?!0:ao.call(ru,e)?!1:yf.test(e)?lu[e]=!0:(ru[e]=!0,!1)}function Sf(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function kf(e,t,n,r){if(t===null||typeof t>"u"||Sf(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function ce(e,t,n,r,l,o,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var ne={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){ne[e]=new ce(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];ne[t]=new ce(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){ne[e]=new ce(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){ne[e]=new ce(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){ne[e]=new ce(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){ne[e]=new ce(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){ne[e]=new ce(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){ne[e]=new ce(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){ne[e]=new ce(e,5,!1,e.toLowerCase(),null,!1,!1)});var si=/[\-:]([a-z])/g;function ai(e){return e[1].toUpperCase()}"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 t=e.replace(si,ai);ne[t]=new ce(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(si,ai);ne[t]=new ce(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(si,ai);ne[t]=new ce(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){ne[e]=new ce(e,1,!1,e.toLowerCase(),null,!1,!1)});ne.xlinkHref=new ce("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){ne[e]=new ce(e,1,!1,e.toLowerCase(),null,!0,!0)});function ci(e,t,n,r){var l=ne.hasOwnProperty(t)?ne[t]:null;(l!==null?l.type!==0:r||!(2u||l[i]!==o[u]){var s=` -`+l[i].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=i&&0<=u);break}}}finally{Dl=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?_n(e):""}function Ef(e){switch(e.tag){case 5:return _n(e.type);case 16:return _n("Lazy");case 13:return _n("Suspense");case 19:return _n("SuspenseList");case 0:case 2:case 15:return e=Fl(e.type,!1),e;case 11:return e=Fl(e.type.render,!1),e;case 1:return e=Fl(e.type,!0),e;default:return""}}function ho(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 Bt:return"Fragment";case At:return"Portal";case co:return"Profiler";case fi:return"StrictMode";case fo:return"Suspense";case po:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Ds:return(e.displayName||"Context")+".Consumer";case Ms:return(e._context.displayName||"Context")+".Provider";case di:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case pi:return t=e.displayName||null,t!==null?t:ho(e.type)||"Memo";case tt:t=e._payload,e=e._init;try{return ho(e(t))}catch{}}return null}function Cf(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ho(t);case 8:return t===fi?"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 t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function vt(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Us(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function xf(e){var t=Us(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var l=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(i){r=""+i,o.call(this,i)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(i){r=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function fr(e){e._valueTracker||(e._valueTracker=xf(e))}function As(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Us(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Ar(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function mo(e,t){var n=t.checked;return V({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function iu(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=vt(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Bs(e,t){t=t.checked,t!=null&&ci(e,"checked",t,!1)}function vo(e,t){Bs(e,t);var n=vt(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?go(e,t.type,n):t.hasOwnProperty("defaultValue")&&go(e,t.type,vt(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function uu(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function go(e,t,n){(t!=="number"||Ar(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Nn=Array.isArray;function Jt(e,t,n,r){if(e=e.options,t){t={};for(var l=0;l"+t.valueOf().toString()+"",t=dr.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Bn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Ln={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},_f=["Webkit","ms","Moz","O"];Object.keys(Ln).forEach(function(e){_f.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Ln[t]=Ln[e]})});function Hs(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Ln.hasOwnProperty(e)&&Ln[e]?(""+t).trim():t+"px"}function Qs(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,l=Hs(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,l):e[n]=l}}var Nf=V({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});function So(e,t){if(t){if(Nf[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(g(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(g(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(g(61))}if(t.style!=null&&typeof t.style!="object")throw Error(g(62))}}function ko(e,t){if(e.indexOf("-")===-1)return typeof t.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}}var Eo=null;function hi(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Co=null,qt=null,bt=null;function cu(e){if(e=or(e)){if(typeof Co!="function")throw Error(g(280));var t=e.stateNode;t&&(t=vl(t),Co(e.stateNode,e.type,t))}}function Ys(e){qt?bt?bt.push(e):bt=[e]:qt=e}function Ks(){if(qt){var e=qt,t=bt;if(bt=qt=null,cu(e),t)for(e=0;e>>=0,e===0?32:31-(Ff(e)/Uf|0)|0}var pr=64,hr=4194304;function Pn(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 Wr(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,l=e.suspendedLanes,o=e.pingedLanes,i=n&268435455;if(i!==0){var u=i&~l;u!==0?r=Pn(u):(o&=i,o!==0&&(r=Pn(o)))}else i=n&~l,i!==0?r=Pn(i):o!==0&&(r=Pn(o));if(r===0)return 0;if(t!==0&&t!==r&&!(t&l)&&(l=r&-r,o=t&-t,l>=o||l===16&&(o&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function rr(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Ie(t),e[t]=n}function Vf(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=jn),wu=" ",Su=!1;function pa(e,t){switch(e){case"keyup":return vd.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function ha(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var $t=!1;function yd(e,t){switch(e){case"compositionend":return ha(t);case"keypress":return t.which!==32?null:(Su=!0,wu);case"textInput":return e=t.data,e===wu&&Su?null:e;default:return null}}function wd(e,t){if($t)return e==="compositionend"||!Ei&&pa(e,t)?(e=fa(),Rr=wi=ot=null,$t=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=xu(n)}}function ya(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?ya(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function wa(){for(var e=window,t=Ar();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Ar(e.document)}return t}function Ci(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function Td(e){var t=wa(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&ya(n.ownerDocument.documentElement,n)){if(r!==null&&Ci(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var l=n.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=_u(n,o);var i=_u(n,r);l&&i&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(l.node,l.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Vt=null,Ro=null,In=null,Lo=!1;function Nu(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Lo||Vt==null||Vt!==Ar(r)||(r=Vt,"selectionStart"in r&&Ci(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}),In&&Yn(In,r)||(In=r,r=Yr(Ro,"onSelect"),0Qt||(e.current=Do[Qt],Do[Qt]=null,Qt--)}function D(e,t){Qt++,Do[Qt]=e.current,e.current=t}var gt={},ie=wt(gt),pe=wt(!1),Lt=gt;function on(e,t){var n=e.type.contextTypes;if(!n)return gt;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var l={},o;for(o in n)l[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function he(e){return e=e.childContextTypes,e!=null}function Gr(){U(pe),U(ie)}function Ou(e,t,n){if(ie.current!==gt)throw Error(g(168));D(ie,t),D(pe,n)}function Ta(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var l in r)if(!(l in t))throw Error(g(108,Cf(e)||"Unknown",l));return V({},n,r)}function Xr(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||gt,Lt=ie.current,D(ie,e),D(pe,pe.current),!0}function Iu(e,t,n){var r=e.stateNode;if(!r)throw Error(g(169));n?(e=Ta(e,t,Lt),r.__reactInternalMemoizedMergedChildContext=e,U(pe),U(ie),D(ie,e)):U(pe),D(pe,n)}var Qe=null,gl=!1,Jl=!1;function Ra(e){Qe===null?Qe=[e]:Qe.push(e)}function Bd(e){gl=!0,Ra(e)}function St(){if(!Jl&&Qe!==null){Jl=!0;var e=0,t=M;try{var n=Qe;for(M=1;e>=i,l-=i,Ye=1<<32-Ie(t)+l|n<R?(H=T,T=null):H=T.sibling;var O=m(f,T,p[R],v);if(O===null){T===null&&(T=H);break}e&&T&&O.alternate===null&&t(f,T),c=o(O,c,R),P===null?E=O:P.sibling=O,P=O,T=H}if(R===p.length)return n(f,T),A&&Ct(f,R),E;if(T===null){for(;RR?(H=T,T=null):H=T.sibling;var Re=m(f,T,O.value,v);if(Re===null){T===null&&(T=H);break}e&&T&&Re.alternate===null&&t(f,T),c=o(Re,c,R),P===null?E=Re:P.sibling=Re,P=Re,T=H}if(O.done)return n(f,T),A&&Ct(f,R),E;if(T===null){for(;!O.done;R++,O=p.next())O=d(f,O.value,v),O!==null&&(c=o(O,c,R),P===null?E=O:P.sibling=O,P=O);return A&&Ct(f,R),E}for(T=r(f,T);!O.done;R++,O=p.next())O=y(T,f,R,O.value,v),O!==null&&(e&&O.alternate!==null&&T.delete(O.key===null?R:O.key),c=o(O,c,R),P===null?E=O:P.sibling=O,P=O);return e&&T.forEach(function(mn){return t(f,mn)}),A&&Ct(f,R),E}function x(f,c,p,v){if(typeof p=="object"&&p!==null&&p.type===Bt&&p.key===null&&(p=p.props.children),typeof p=="object"&&p!==null){switch(p.$$typeof){case cr:e:{for(var E=p.key,P=c;P!==null;){if(P.key===E){if(E=p.type,E===Bt){if(P.tag===7){n(f,P.sibling),c=l(P,p.props.children),c.return=f,f=c;break e}}else if(P.elementType===E||typeof E=="object"&&E!==null&&E.$$typeof===tt&&Fu(E)===P.type){n(f,P.sibling),c=l(P,p.props),c.ref=En(f,P,p),c.return=f,f=c;break e}n(f,P);break}else t(f,P);P=P.sibling}p.type===Bt?(c=Rt(p.props.children,f.mode,v,p.key),c.return=f,f=c):(v=Fr(p.type,p.key,p.props,null,f.mode,v),v.ref=En(f,c,p),v.return=f,f=v)}return i(f);case At:e:{for(P=p.key;c!==null;){if(c.key===P)if(c.tag===4&&c.stateNode.containerInfo===p.containerInfo&&c.stateNode.implementation===p.implementation){n(f,c.sibling),c=l(c,p.children||[]),c.return=f,f=c;break e}else{n(f,c);break}else t(f,c);c=c.sibling}c=oo(p,f.mode,v),c.return=f,f=c}return i(f);case tt:return P=p._init,x(f,c,P(p._payload),v)}if(Nn(p))return w(f,c,p,v);if(gn(p))return S(f,c,p,v);kr(f,p)}return typeof p=="string"&&p!==""||typeof p=="number"?(p=""+p,c!==null&&c.tag===6?(n(f,c.sibling),c=l(c,p),c.return=f,f=c):(n(f,c),c=lo(p,f.mode,v),c.return=f,f=c),i(f)):n(f,c)}return x}var sn=Oa(!0),Ia=Oa(!1),qr=wt(null),br=null,Gt=null,Pi=null;function Ti(){Pi=Gt=br=null}function Ri(e){var t=qr.current;U(qr),e._currentValue=t}function Ao(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function tn(e,t){br=e,Pi=Gt=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(de=!0),e.firstContext=null)}function Pe(e){var t=e._currentValue;if(Pi!==e)if(e={context:e,memoizedValue:t,next:null},Gt===null){if(br===null)throw Error(g(308));Gt=e,br.dependencies={lanes:0,firstContext:e}}else Gt=Gt.next=e;return t}var Nt=null;function Li(e){Nt===null?Nt=[e]:Nt.push(e)}function Ma(e,t,n,r){var l=t.interleaved;return l===null?(n.next=n,Li(t)):(n.next=l.next,l.next=n),t.interleaved=n,Je(e,r)}function Je(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var nt=!1;function zi(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Da(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Ge(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function dt(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,I&2){var l=r.pending;return l===null?t.next=t:(t.next=l.next,l.next=t),r.pending=t,Je(e,n)}return l=r.interleaved,l===null?(t.next=t,Li(r)):(t.next=l.next,l.next=t),r.interleaved=t,Je(e,n)}function zr(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,vi(e,n)}}function Uu(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var l=null,o=null;if(n=n.firstBaseUpdate,n!==null){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};o===null?l=o=i:o=o.next=i,n=n.next}while(n!==null);o===null?l=o=t:o=o.next=t}else l=o=t;n={baseState:r.baseState,firstBaseUpdate:l,lastBaseUpdate:o,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function el(e,t,n,r){var l=e.updateQueue;nt=!1;var o=l.firstBaseUpdate,i=l.lastBaseUpdate,u=l.shared.pending;if(u!==null){l.shared.pending=null;var s=u,a=s.next;s.next=null,i===null?o=a:i.next=a,i=s;var h=e.alternate;h!==null&&(h=h.updateQueue,u=h.lastBaseUpdate,u!==i&&(u===null?h.firstBaseUpdate=a:u.next=a,h.lastBaseUpdate=s))}if(o!==null){var d=l.baseState;i=0,h=a=s=null,u=o;do{var m=u.lane,y=u.eventTime;if((r&m)===m){h!==null&&(h=h.next={eventTime:y,lane:0,tag:u.tag,payload:u.payload,callback:u.callback,next:null});e:{var w=e,S=u;switch(m=t,y=n,S.tag){case 1:if(w=S.payload,typeof w=="function"){d=w.call(y,d,m);break e}d=w;break e;case 3:w.flags=w.flags&-65537|128;case 0:if(w=S.payload,m=typeof w=="function"?w.call(y,d,m):w,m==null)break e;d=V({},d,m);break e;case 2:nt=!0}}u.callback!==null&&u.lane!==0&&(e.flags|=64,m=l.effects,m===null?l.effects=[u]:m.push(u))}else y={eventTime:y,lane:m,tag:u.tag,payload:u.payload,callback:u.callback,next:null},h===null?(a=h=y,s=d):h=h.next=y,i|=m;if(u=u.next,u===null){if(u=l.shared.pending,u===null)break;m=u,u=m.next,m.next=null,l.lastBaseUpdate=m,l.shared.pending=null}}while(!0);if(h===null&&(s=d),l.baseState=s,l.firstBaseUpdate=a,l.lastBaseUpdate=h,t=l.shared.interleaved,t!==null){l=t;do i|=l.lane,l=l.next;while(l!==t)}else o===null&&(l.shared.lanes=0);Ot|=i,e.lanes=i,e.memoizedState=d}}function Au(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var r=bl.transition;bl.transition={};try{e(!1),t()}finally{M=n,bl.transition=r}}function ba(){return Te().memoizedState}function Hd(e,t,n){var r=ht(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},ec(e))tc(t,n);else if(n=Ma(e,t,n,r),n!==null){var l=se();Me(n,e,r,l),nc(n,t,r)}}function Qd(e,t,n){var r=ht(e),l={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(ec(e))tc(t,l);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var i=t.lastRenderedState,u=o(i,n);if(l.hasEagerState=!0,l.eagerState=u,De(u,i)){var s=t.interleaved;s===null?(l.next=l,Li(t)):(l.next=s.next,s.next=l),t.interleaved=l;return}}catch{}finally{}n=Ma(e,t,l,r),n!==null&&(l=se(),Me(n,e,r,l),nc(n,t,r))}}function ec(e){var t=e.alternate;return e===$||t!==null&&t===$}function tc(e,t){Mn=nl=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function nc(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,vi(e,n)}}var rl={readContext:Pe,useCallback:re,useContext:re,useEffect:re,useImperativeHandle:re,useInsertionEffect:re,useLayoutEffect:re,useMemo:re,useReducer:re,useRef:re,useState:re,useDebugValue:re,useDeferredValue:re,useTransition:re,useMutableSource:re,useSyncExternalStore:re,useId:re,unstable_isNewReconciler:!1},Yd={readContext:Pe,useCallback:function(e,t){return Ue().memoizedState=[e,t===void 0?null:t],e},useContext:Pe,useEffect:$u,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Or(4194308,4,Ga.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Or(4194308,4,e,t)},useInsertionEffect:function(e,t){return Or(4,2,e,t)},useMemo:function(e,t){var n=Ue();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Ue();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Hd.bind(null,$,e),[r.memoizedState,e]},useRef:function(e){var t=Ue();return e={current:e},t.memoizedState=e},useState:Bu,useDebugValue:Ai,useDeferredValue:function(e){return Ue().memoizedState=e},useTransition:function(){var e=Bu(!1),t=e[0];return e=Wd.bind(null,e[1]),Ue().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=$,l=Ue();if(A){if(n===void 0)throw Error(g(407));n=n()}else{if(n=t(),b===null)throw Error(g(349));jt&30||Ba(r,t,n)}l.memoizedState=n;var o={value:n,getSnapshot:t};return l.queue=o,$u(Va.bind(null,r,o,e),[e]),r.flags|=2048,er(9,$a.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=Ue(),t=b.identifierPrefix;if(A){var n=Ke,r=Ye;n=(r&~(1<<32-Ie(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=qn++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=i.createElement(n,{is:r.is}):(e=i.createElement(n),n==="select"&&(i=e,r.multiple?i.multiple=!0:r.size&&(i.size=r.size))):e=i.createElementNS(e,n),e[Ae]=t,e[Xn]=r,dc(e,t,!1,!1),t.stateNode=e;e:{switch(i=ko(n,r),n){case"dialog":F("cancel",e),F("close",e),l=r;break;case"iframe":case"object":case"embed":F("load",e),l=r;break;case"video":case"audio":for(l=0;lfn&&(t.flags|=128,r=!0,Cn(o,!1),t.lanes=4194304)}else{if(!r)if(e=tl(i),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Cn(o,!0),o.tail===null&&o.tailMode==="hidden"&&!i.alternate&&!A)return le(t),null}else 2*Y()-o.renderingStartTime>fn&&n!==1073741824&&(t.flags|=128,r=!0,Cn(o,!1),t.lanes=4194304);o.isBackwards?(i.sibling=t.child,t.child=i):(n=o.last,n!==null?n.sibling=i:t.child=i,o.last=i)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=Y(),t.sibling=null,n=B.current,D(B,r?n&1|2:n&1),t):(le(t),null);case 22:case 23:return Qi(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?ge&1073741824&&(le(t),t.subtreeFlags&6&&(t.flags|=8192)):le(t),null;case 24:return null;case 25:return null}throw Error(g(156,t.tag))}function ep(e,t){switch(_i(t),t.tag){case 1:return he(t.type)&&Gr(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return an(),U(pe),U(ie),Ii(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Oi(t),null;case 13:if(U(B),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(g(340));un()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return U(B),null;case 4:return an(),null;case 10:return Ri(t.type._context),null;case 22:case 23:return Qi(),null;case 24:return null;default:return null}}var Cr=!1,oe=!1,tp=typeof WeakSet=="function"?WeakSet:Set,C=null;function Xt(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){W(e,t,r)}else n.current=null}function Go(e,t,n){try{n()}catch(r){W(e,t,r)}}var qu=!1;function np(e,t){if(zo=Hr,e=wa(),Ci(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var l=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var i=0,u=-1,s=-1,a=0,h=0,d=e,m=null;t:for(;;){for(var y;d!==n||l!==0&&d.nodeType!==3||(u=i+l),d!==o||r!==0&&d.nodeType!==3||(s=i+r),d.nodeType===3&&(i+=d.nodeValue.length),(y=d.firstChild)!==null;)m=d,d=y;for(;;){if(d===e)break t;if(m===n&&++a===l&&(u=i),m===o&&++h===r&&(s=i),(y=d.nextSibling)!==null)break;d=m,m=d.parentNode}d=y}n=u===-1||s===-1?null:{start:u,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(jo={focusedElem:e,selectionRange:n},Hr=!1,C=t;C!==null;)if(t=C,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,C=e;else for(;C!==null;){t=C;try{var w=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(w!==null){var S=w.memoizedProps,x=w.memoizedState,f=t.stateNode,c=f.getSnapshotBeforeUpdate(t.elementType===t.type?S:ze(t.type,S),x);f.__reactInternalSnapshotBeforeUpdate=c}break;case 3:var p=t.stateNode.containerInfo;p.nodeType===1?p.textContent="":p.nodeType===9&&p.documentElement&&p.removeChild(p.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(g(163))}}catch(v){W(t,t.return,v)}if(e=t.sibling,e!==null){e.return=t.return,C=e;break}C=t.return}return w=qu,qu=!1,w}function Dn(e,t,n){var r=t.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&&Go(t,n,o)}l=l.next}while(l!==r)}}function Sl(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Xo(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function mc(e){var t=e.alternate;t!==null&&(e.alternate=null,mc(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Ae],delete t[Xn],delete t[Mo],delete t[Ud],delete t[Ad])),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 vc(e){return e.tag===5||e.tag===3||e.tag===4}function bu(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||vc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Zo(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Kr));else if(r!==4&&(e=e.child,e!==null))for(Zo(e,t,n),e=e.sibling;e!==null;)Zo(e,t,n),e=e.sibling}function Jo(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Jo(e,t,n),e=e.sibling;e!==null;)Jo(e,t,n),e=e.sibling}var ee=null,je=!1;function et(e,t,n){for(n=n.child;n!==null;)gc(e,t,n),n=n.sibling}function gc(e,t,n){if(Ve&&typeof Ve.onCommitFiberUnmount=="function")try{Ve.onCommitFiberUnmount(dl,n)}catch{}switch(n.tag){case 5:oe||Xt(n,t);case 6:var r=ee,l=je;ee=null,et(e,t,n),ee=r,je=l,ee!==null&&(je?(e=ee,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):ee.removeChild(n.stateNode));break;case 18:ee!==null&&(je?(e=ee,n=n.stateNode,e.nodeType===8?Zl(e.parentNode,n):e.nodeType===1&&Zl(e,n),Hn(e)):Zl(ee,n.stateNode));break;case 4:r=ee,l=je,ee=n.stateNode.containerInfo,je=!0,et(e,t,n),ee=r,je=l;break;case 0:case 11:case 14:case 15:if(!oe&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var o=l,i=o.destroy;o=o.tag,i!==void 0&&(o&2||o&4)&&Go(n,t,i),l=l.next}while(l!==r)}et(e,t,n);break;case 1:if(!oe&&(Xt(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(u){W(n,t,u)}et(e,t,n);break;case 21:et(e,t,n);break;case 22:n.mode&1?(oe=(r=oe)||n.memoizedState!==null,et(e,t,n),oe=r):et(e,t,n);break;default:et(e,t,n)}}function es(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new tp),t.forEach(function(r){var l=fp.bind(null,e,r);n.has(r)||(n.add(r),r.then(l,l))})}}function Le(e,t){var n=t.deletions;if(n!==null)for(var r=0;rl&&(l=i),r&=~o}if(r=l,r=Y()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*lp(r/1960))-r,10e?16:e,it===null)var r=!1;else{if(e=it,it=null,il=0,I&6)throw Error(g(331));var l=I;for(I|=4,C=e.current;C!==null;){var o=C,i=o.child;if(C.flags&16){var u=o.deletions;if(u!==null){for(var s=0;sY()-Wi?Tt(e,0):Vi|=n),me(e,t)}function _c(e,t){t===0&&(e.mode&1?(t=hr,hr<<=1,!(hr&130023424)&&(hr=4194304)):t=1);var n=se();e=Je(e,t),e!==null&&(rr(e,t,n),me(e,n))}function cp(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),_c(e,n)}function fp(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(g(314))}r!==null&&r.delete(t),_c(e,n)}var Nc;Nc=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||pe.current)de=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return de=!1,qd(e,t,n);de=!!(e.flags&131072)}else de=!1,A&&t.flags&1048576&&La(t,Jr,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Ir(e,t),e=t.pendingProps;var l=on(t,ie.current);tn(t,n),l=Di(null,t,r,e,l,n);var o=Fi();return t.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,he(r)?(o=!0,Xr(t)):o=!1,t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,zi(t),l.updater=wl,t.stateNode=l,l._reactInternals=t,$o(t,r,e,n),t=Ho(null,t,r,!0,o,n)):(t.tag=0,A&&o&&xi(t),ue(null,t,l,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Ir(e,t),e=t.pendingProps,l=r._init,r=l(r._payload),t.type=r,l=t.tag=pp(r),e=ze(r,e),l){case 0:t=Wo(null,t,r,e,n);break e;case 1:t=Xu(null,t,r,e,n);break e;case 11:t=Ku(null,t,r,e,n);break e;case 14:t=Gu(null,t,r,ze(r.type,e),n);break e}throw Error(g(306,r,""))}return t;case 0:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:ze(r,l),Wo(e,t,r,l,n);case 1:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:ze(r,l),Xu(e,t,r,l,n);case 3:e:{if(ac(t),e===null)throw Error(g(387));r=t.pendingProps,o=t.memoizedState,l=o.element,Da(e,t),el(t,r,null,n);var i=t.memoizedState;if(r=i.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){l=cn(Error(g(423)),t),t=Zu(e,t,r,n,l);break e}else if(r!==l){l=cn(Error(g(424)),t),t=Zu(e,t,r,n,l);break e}else for(ye=ft(t.stateNode.containerInfo.firstChild),we=t,A=!0,Oe=null,n=Ia(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(un(),r===l){t=qe(e,t,n);break e}ue(e,t,r,n)}t=t.child}return t;case 5:return Fa(t),e===null&&Uo(t),r=t.type,l=t.pendingProps,o=e!==null?e.memoizedProps:null,i=l.children,Oo(r,l)?i=null:o!==null&&Oo(r,o)&&(t.flags|=32),sc(e,t),ue(e,t,i,n),t.child;case 6:return e===null&&Uo(t),null;case 13:return cc(e,t,n);case 4:return ji(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=sn(t,null,r,n):ue(e,t,r,n),t.child;case 11:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:ze(r,l),Ku(e,t,r,l,n);case 7:return ue(e,t,t.pendingProps,n),t.child;case 8:return ue(e,t,t.pendingProps.children,n),t.child;case 12:return ue(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,l=t.pendingProps,o=t.memoizedProps,i=l.value,D(qr,r._currentValue),r._currentValue=i,o!==null)if(De(o.value,i)){if(o.children===l.children&&!pe.current){t=qe(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var u=o.dependencies;if(u!==null){i=o.child;for(var s=u.firstContext;s!==null;){if(s.context===r){if(o.tag===1){s=Ge(-1,n&-n),s.tag=2;var a=o.updateQueue;if(a!==null){a=a.shared;var h=a.pending;h===null?s.next=s:(s.next=h.next,h.next=s),a.pending=s}}o.lanes|=n,s=o.alternate,s!==null&&(s.lanes|=n),Ao(o.return,n,t),u.lanes|=n;break}s=s.next}}else if(o.tag===10)i=o.type===t.type?null:o.child;else if(o.tag===18){if(i=o.return,i===null)throw Error(g(341));i.lanes|=n,u=i.alternate,u!==null&&(u.lanes|=n),Ao(i,n,t),i=o.sibling}else i=o.child;if(i!==null)i.return=o;else for(i=o;i!==null;){if(i===t){i=null;break}if(o=i.sibling,o!==null){o.return=i.return,i=o;break}i=i.return}o=i}ue(e,t,l.children,n),t=t.child}return t;case 9:return l=t.type,r=t.pendingProps.children,tn(t,n),l=Pe(l),r=r(l),t.flags|=1,ue(e,t,r,n),t.child;case 14:return r=t.type,l=ze(r,t.pendingProps),l=ze(r.type,l),Gu(e,t,r,l,n);case 15:return ic(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:ze(r,l),Ir(e,t),t.tag=1,he(r)?(e=!0,Xr(t)):e=!1,tn(t,n),rc(t,r,l),$o(t,r,l,n),Ho(null,t,r,!0,e,n);case 19:return fc(e,t,n);case 22:return uc(e,t,n)}throw Error(g(156,t.tag))};function Pc(e,t){return ea(e,t)}function dp(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,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 _e(e,t,n,r){return new dp(e,t,n,r)}function Ki(e){return e=e.prototype,!(!e||!e.isReactComponent)}function pp(e){if(typeof e=="function")return Ki(e)?1:0;if(e!=null){if(e=e.$$typeof,e===di)return 11;if(e===pi)return 14}return 2}function mt(e,t){var n=e.alternate;return n===null?(n=_e(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Fr(e,t,n,r,l,o){var i=2;if(r=e,typeof e=="function")Ki(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case Bt:return Rt(n.children,l,o,t);case fi:i=8,l|=8;break;case co:return e=_e(12,n,t,l|2),e.elementType=co,e.lanes=o,e;case fo:return e=_e(13,n,t,l),e.elementType=fo,e.lanes=o,e;case po:return e=_e(19,n,t,l),e.elementType=po,e.lanes=o,e;case Fs:return El(n,l,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Ms:i=10;break e;case Ds:i=9;break e;case di:i=11;break e;case pi:i=14;break e;case tt:i=16,r=null;break e}throw Error(g(130,e==null?e:typeof e,""))}return t=_e(i,n,t,l),t.elementType=e,t.type=r,t.lanes=o,t}function Rt(e,t,n,r){return e=_e(7,e,r,t),e.lanes=n,e}function El(e,t,n,r){return e=_e(22,e,r,t),e.elementType=Fs,e.lanes=n,e.stateNode={isHidden:!1},e}function lo(e,t,n){return e=_e(6,e,null,t),e.lanes=n,e}function oo(e,t,n){return t=_e(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function hp(e,t,n,r,l){this.tag=t,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=Al(0),this.expirationTimes=Al(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Al(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function Gi(e,t,n,r,l,o,i,u,s){return e=new hp(e,t,n,u,s),t===1?(t=1,o===!0&&(t|=8)):t=0,o=_e(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},zi(o),e}function mp(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(zc)}catch(e){console.error(e)}}zc(),zs.exports=ke;var Sp=zs.exports,ss=Sp;so.createRoot=ss.createRoot,so.hydrateRoot=ss.hydrateRoot;/** - * @remix-run/router v1.23.2 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */function al(){return al=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u")throw new Error(t)}function jc(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function Ep(){return Math.random().toString(36).substr(2,8)}function cs(e,t){return{usr:e.state,key:e.key,idx:t}}function ni(e,t,n,r){return n===void 0&&(n=null),al({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?Pl(t):t,{state:n,key:t&&t.key||r||Ep()})}function Oc(e){let{pathname:t="/",search:n="",hash:r=""}=e;return n&&n!=="?"&&(t+=n.charAt(0)==="?"?n:"?"+n),r&&r!=="#"&&(t+=r.charAt(0)==="#"?r:"#"+r),t}function Pl(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function Cp(e,t,n,r){r===void 0&&(r={});let{window:l=document.defaultView,v5Compat:o=!1}=r,i=l.history,u=ut.Pop,s=null,a=h();a==null&&(a=0,i.replaceState(al({},i.state,{idx:a}),""));function h(){return(i.state||{idx:null}).idx}function d(){u=ut.Pop;let x=h(),f=x==null?null:x-a;a=x,s&&s({action:u,location:S.location,delta:f})}function m(x,f){u=ut.Push;let c=ni(S.location,x,f);a=h()+1;let p=cs(c,a),v=S.createHref(c);try{i.pushState(p,"",v)}catch(E){if(E instanceof DOMException&&E.name==="DataCloneError")throw E;l.location.assign(v)}o&&s&&s({action:u,location:S.location,delta:1})}function y(x,f){u=ut.Replace;let c=ni(S.location,x,f);a=h();let p=cs(c,a),v=S.createHref(c);i.replaceState(p,"",v),o&&s&&s({action:u,location:S.location,delta:0})}function w(x){let f=l.location.origin!=="null"?l.location.origin:l.location.href,c=typeof x=="string"?x:Oc(x);return c=c.replace(/ $/,"%20"),ve(f,"No window.location.(origin|href) available to create URL for href: "+c),new URL(c,f)}let S={get action(){return u},get location(){return e(l,i)},listen(x){if(s)throw new Error("A history only accepts one active listener");return l.addEventListener(as,d),s=x,()=>{l.removeEventListener(as,d),s=null}},createHref(x){return t(l,x)},createURL:w,encodeLocation(x){let f=w(x);return{pathname:f.pathname,search:f.search,hash:f.hash}},push:m,replace:y,go(x){return i.go(x)}};return S}var fs;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(fs||(fs={}));function xp(e,t,n){return n===void 0&&(n="/"),_p(e,t,n)}function _p(e,t,n,r){let l=typeof t=="string"?Pl(t):t,o=Dc(l.pathname||"/",n);if(o==null)return null;let i=Ic(e);Np(i);let u=null;for(let s=0;u==null&&s{let s={relativePath:u===void 0?o.path||"":u,caseSensitive:o.caseSensitive===!0,childrenIndex:i,route:o};s.relativePath.startsWith("/")&&(ve(s.relativePath.startsWith(r),'Absolute route path "'+s.relativePath+'" nested under path '+('"'+r+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),s.relativePath=s.relativePath.slice(r.length));let a=rn([r,s.relativePath]),h=n.concat(s);o.children&&o.children.length>0&&(ve(o.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+a+'".')),Ic(o.children,t,h,a)),!(o.path==null&&!o.index)&&t.push({path:a,score:Op(a,o.index),routesMeta:h})};return e.forEach((o,i)=>{var u;if(o.path===""||!((u=o.path)!=null&&u.includes("?")))l(o,i);else for(let s of Mc(o.path))l(o,i,s)}),t}function Mc(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,l=n.endsWith("?"),o=n.replace(/\?$/,"");if(r.length===0)return l?[o,""]:[o];let i=Mc(r.join("/")),u=[];return u.push(...i.map(s=>s===""?o:[o,s].join("/"))),l&&u.push(...i),u.map(s=>e.startsWith("/")&&s===""?"/":s)}function Np(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:Ip(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}const Pp=/^:[\w-]+$/,Tp=3,Rp=2,Lp=1,zp=10,jp=-2,ds=e=>e==="*";function Op(e,t){let n=e.split("/"),r=n.length;return n.some(ds)&&(r+=jp),t&&(r+=Rp),n.filter(l=>!ds(l)).reduce((l,o)=>l+(Pp.test(o)?Tp:o===""?Lp:zp),r)}function Ip(e,t){return e.length===t.length&&e.slice(0,-1).every((r,l)=>r===t[l])?e[e.length-1]-t[t.length-1]:0}function Mp(e,t,n){let{routesMeta:r}=e,l={},o="/",i=[];for(let u=0;u{let{paramName:m,isOptional:y}=h;if(m==="*"){let S=u[d]||"";i=o.slice(0,o.length-S.length).replace(/(.)\/+$/,"$1")}const w=u[d];return y&&!w?a[m]=void 0:a[m]=(w||"").replace(/%2F/g,"/"),a},{}),pathname:o,pathnameBase:i,pattern:e}}function Fp(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0),jc(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let r=[],l="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(i,u,s)=>(r.push({paramName:u,isOptional:s!=null}),s?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(r.push({paramName:"*"}),l+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?l+="\\/*$":e!==""&&e!=="/"&&(l+="(?:(?=\\/|$))"),[new RegExp(l,t?void 0:"i"),r]}function Up(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return jc(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function Dc(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}const rn=e=>e.join("/").replace(/\/\/+/g,"/"),Ap=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/");function Bp(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const Fc=["post","put","patch","delete"];new Set(Fc);const $p=["get",...Fc];new Set($p);/** - * React Router v6.30.3 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */function cl(){return cl=Object.assign?Object.assign.bind():function(e){for(var t=1;tObject.assign({},x,{params:Object.assign({},u,x.params),pathname:rn([s,l.encodeLocation?l.encodeLocation(x.pathname).pathname:x.pathname]),pathnameBase:x.pathnameBase==="/"?s:rn([s,l.encodeLocation?l.encodeLocation(x.pathnameBase).pathname:x.pathnameBase])})),o,n,r);return t&&S?N.createElement(Tl.Provider,{value:{location:cl({pathname:"/",search:"",hash:"",state:null,key:"default"},h),navigationType:ut.Pop}},S):S}function Kp(){let e=th(),t=Bp(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,l={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return N.createElement(N.Fragment,null,N.createElement("h2",null,"Unexpected Application Error!"),N.createElement("h3",{style:{fontStyle:"italic"}},t),n?N.createElement("pre",{style:l},n):null,null)}const Gp=N.createElement(Kp,null);class Xp extends N.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error!==void 0?N.createElement(Rl.Provider,{value:this.props.routeContext},N.createElement(Ac.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function Zp(e){let{routeContext:t,match:n,children:r}=e,l=N.useContext(Vp);return l&&l.static&&l.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(l.staticContext._deepestRenderedBoundaryId=n.route.id),N.createElement(Rl.Provider,{value:t},r)}function Jp(e,t,n,r){var l;if(t===void 0&&(t=[]),n===void 0&&(n=null),r===void 0&&(r=null),e==null){var o;if(!n)return null;if(n.errors)e=n.matches;else if((o=r)!=null&&o.v7_partialHydration&&t.length===0&&!n.initialized&&n.matches.length>0)e=n.matches;else return null}let i=e,u=(l=n)==null?void 0:l.errors;if(u!=null){let h=i.findIndex(d=>d.route.id&&(u==null?void 0:u[d.route.id])!==void 0);h>=0||ve(!1),i=i.slice(0,Math.min(i.length,h+1))}let s=!1,a=-1;if(n&&r&&r.v7_partialHydration)for(let h=0;h=0?i=i.slice(0,a+1):i=[i[0]];break}}}return i.reduceRight((h,d,m)=>{let y,w=!1,S=null,x=null;n&&(y=u&&d.route.id?u[d.route.id]:void 0,S=d.route.errorElement||Gp,s&&(a<0&&m===0?(nh("route-fallback"),w=!0,x=null):a===m&&(w=!0,x=d.route.hydrateFallbackElement||null)));let f=t.concat(i.slice(0,m+1)),c=()=>{let p;return y?p=S:w?p=x:d.route.Component?p=N.createElement(d.route.Component,null):d.route.element?p=d.route.element:p=h,N.createElement(Zp,{match:d,routeContext:{outlet:h,matches:f,isDataRoute:n!=null},children:p})};return n&&(d.route.ErrorBoundary||d.route.errorElement||m===0)?N.createElement(Xp,{location:n.location,revalidation:n.revalidation,component:S,error:y,children:c(),routeContext:{outlet:null,matches:f,isDataRoute:!0}}):c()},null)}var Bc=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(Bc||{});function qp(e){let t=N.useContext(Wp);return t||ve(!1),t}function bp(e){let t=N.useContext(Rl);return t||ve(!1),t}function eh(e){let t=bp(),n=t.matches[t.matches.length-1];return n.route.id||ve(!1),n.route.id}function th(){var e;let t=N.useContext(Ac),n=qp(Bc.UseRouteError),r=eh();return t!==void 0?t:(e=n.errors)==null?void 0:e[r]}const ps={};function nh(e,t,n){ps[e]||(ps[e]=!0)}function rh(e,t){e==null||e.v7_startTransition,e==null||e.v7_relativeSplatPath}function Rn(e){ve(!1)}function lh(e){let{basename:t="/",children:n=null,location:r,navigationType:l=ut.Pop,navigator:o,static:i=!1,future:u}=e;qi()&&ve(!1);let s=t.replace(/^\/*/,"/"),a=N.useMemo(()=>({basename:s,navigator:o,static:i,future:cl({v7_relativeSplatPath:!1},u)}),[s,u,o,i]);typeof r=="string"&&(r=Pl(r));let{pathname:h="/",search:d="",hash:m="",state:y=null,key:w="default"}=r,S=N.useMemo(()=>{let x=Dc(h,s);return x==null?null:{location:{pathname:x,search:d,hash:m,state:y,key:w},navigationType:l}},[s,h,d,m,y,w,l]);return S==null?null:N.createElement(Uc.Provider,{value:a},N.createElement(Tl.Provider,{children:n,value:S}))}function oh(e){let{children:t,location:n}=e;return Qp(ri(t),n)}new Promise(()=>{});function ri(e,t){t===void 0&&(t=[]);let n=[];return N.Children.forEach(e,(r,l)=>{if(!N.isValidElement(r))return;let o=[...t,l];if(r.type===N.Fragment){n.push.apply(n,ri(r.props.children,o));return}r.type!==Rn&&ve(!1),!r.props.index||!r.props.children||ve(!1);let i={id:r.props.id||o.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,loader:r.props.loader,action:r.props.action,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(i.children=ri(r.props.children,o)),n.push(i)}),n}/** - * React Router DOM v6.30.3 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */const ih="6";try{window.__reactRouterVersion=ih}catch{}const uh="startTransition",hs=af[uh];function sh(e){let{basename:t,children:n,future:r,window:l}=e,o=N.useRef();o.current==null&&(o.current=kp({window:l,v5Compat:!0}));let i=o.current,[u,s]=N.useState({action:i.action,location:i.location}),{v7_startTransition:a}=r||{},h=N.useCallback(d=>{a&&hs?hs(()=>s(d)):s(d)},[s,a]);return N.useLayoutEffect(()=>i.listen(h),[i,h]),N.useEffect(()=>rh(r),[r]),N.createElement(lh,{basename:t,children:n,location:u.location,navigationType:u.action,navigator:i,future:r})}var ms;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(ms||(ms={}));var vs;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(vs||(vs={}));function Ll({children:e,className:t=""}){return k.jsx("div",{className:`page-layout ${t}`.trim(),children:e})}const q=800,Be=220,$e=168,ah=.58,ch=-13.5,io=5.2,fh=55e-5,dh=16,$c=82,Vc=36,Ut=36,gs=340,ph=680,ys=[{lines:["Crash","Loop"],color:"#ff4455",w:46,h:52},{lines:["OOM","Killed"],color:"#ff2288",w:38,h:60},{lines:["Image","PullErr"],color:"#ff8820",w:44,h:46},{lines:["404"],color:"#00ffff",w:58,h:36},{lines:["Expired","Cert"],color:"#ffee22",w:48,h:48},{lines:["Evicted"],color:"#aaaaaa",w:40,h:34},{lines:["Pod","Failed"],color:"#ff3366",w:40,h:44},{lines:["Bad","Ingress"],color:"#ff6600",w:50,h:40},{lines:["DNS","Fail"],color:"#cc44ff",w:42,h:50},{lines:["Pending","..."],color:"#4499ff",w:52,h:32},{lines:["Timeout"],color:"#ff9944",w:48,h:42},{lines:["502"],color:"#ff4444",w:52,h:36},{lines:["No","Route"],color:"#55ff88",w:46,h:44},{lines:["Tunnel","Down"],color:"#ff55cc",w:50,h:46}];function hh(){const e=ys[Math.floor(Math.random()*ys.length)];return{...e,x:q+60,y:$e-e.h}}function mh(e,t,n,r,l,o,i,u,s=7){return e+sl+s&&t+so+s}function Ur(e,t,n,r,l,o=5){e.beginPath(),e.moveTo(t+o,n),e.lineTo(t+r-o,n),e.quadraticCurveTo(t+r,n,t+r,n+o),e.lineTo(t+r,n+l-o),e.quadraticCurveTo(t+r,n+l,t+r-o,n+l),e.lineTo(t+o,n+l),e.quadraticCurveTo(t,n+l,t,n+l-o),e.lineTo(t,n+o),e.quadraticCurveTo(t,n,t+o,n),e.closePath()}function vh(e,t){e.fillStyle="#080c14",e.fillRect(0,0,q,Be),e.fillStyle="rgba(0, 180, 255, 0.055)";const n=28,r=-t%n-n;for(let l=r;l0&&t>=n&&(e.fillStyle="#ffee22",e.font="bold 11px monospace",e.fillText("✦ new high score ✦",q/2,Be/2+16)),e.fillStyle="#00ffcc",e.font="12px monospace",e.fillText("[ SPACE / ↑ / TAP to respawn ]",q/2,Be/2+38),e.restore()}function Ch(){const e=N.useRef(null),t=N.useRef({status:"idle",playerY:$e-Ut,velocityY:0,isJumping:!1,obstacles:[],bgOffset:0,frameCount:0,distTravelled:0,nextSpawnAt:400,speed:io,score:0,highScore:parseInt(localStorage.getItem("lab404_hi")??"0",10)}),[n,r]=N.useState("idle"),l=N.useCallback(()=>{const o=t.current;o.status==="idle"?(o.status="playing",r("playing")):o.status==="playing"&&!o.isJumping?(o.velocityY=ch,o.isJumping=!0):o.status==="gameover"&&(o.status="playing",o.playerY=$e-Ut,o.velocityY=0,o.isJumping=!1,o.obstacles=[],o.bgOffset=0,o.frameCount=0,o.distTravelled=0,o.nextSpawnAt=400,o.speed=io,o.score=0,r("playing"))},[]);return N.useEffect(()=>{const o=i=>{(i.code==="Space"||i.code==="ArrowUp")&&(i.preventDefault(),l())};return window.addEventListener("keydown",o),()=>window.removeEventListener("keydown",o)},[l]),N.useEffect(()=>{const i=e.current.getContext("2d");let u;const s=()=>{const a=t.current;if(a.status==="playing"){if(a.frameCount++,a.score=Math.floor(a.frameCount/7),a.speed=Math.min(io+a.score*fh,dh),a.bgOffset=(a.bgOffset+a.speed*.35)%q,a.distTravelled+=a.speed,a.velocityY+=ah,a.playerY+=a.velocityY,a.playerY>=$e-Ut&&(a.playerY=$e-Ut,a.velocityY=0,a.isJumping=!1),a.distTravelled>=a.nextSpawnAt){a.obstacles.push(hh());const d=gs+Math.random()*(ph-gs);a.nextSpawnAt=a.distTravelled+d}for(const d of a.obstacles)d.x-=a.speed;a.obstacles=a.obstacles.filter(d=>d.x+d.w>-10),a.obstacles.some(d=>mh($c,a.playerY,Vc,Ut,d.x,d.y,d.w,d.h))&&(a.score>a.highScore&&(a.highScore=a.score,localStorage.setItem("lab404_hi",String(a.score))),a.status="gameover",r("gameover"))}else a.bgOffset=(a.bgOffset+.4)%q;vh(i,a.bgOffset),gh(i,a.bgOffset),a.obstacles.forEach(h=>wh(i,h)),yh(i,a.playerY,a.frameCount,a.isJumping),Sh(i,a.score,a.highScore),a.status==="idle"&&kh(i),a.status==="gameover"&&Eh(i,a.score,a.highScore),u=requestAnimationFrame(s)};return u=requestAnimationFrame(s),()=>cancelAnimationFrame(u)},[]),k.jsx("div",{className:"dino-game-wrapper",onClick:l,onTouchStart:o=>{o.preventDefault(),l()},children:k.jsx("canvas",{ref:e,width:q,height:Be,className:"dino-game-canvas",role:"img","aria-label":"Kubernetes pod runner mini-game. Press Space or tap to jump."})})}const uo=[{type:"cmd",text:"$ kubectl get page /this-path --namespace default"},{type:"err",text:'Error from server (NotFound): pages "this-path" not found'},{type:"cmd",text:"$ kubectl describe ingress/main-ingress"},{type:"warn",text:'[WARN] ingress-nginx: no matching rule for path "/this-path"'},{type:"cmd",text:"$ nslookup this-page.cluster.local"},{type:"err",text:"NXDOMAIN: Name does not exist."},{type:"cmd",text:"$ kubectl get pod -l app=this-page"},{type:"err",text:"No resources found in default namespace."},{type:"warn",text:"[WARN] cloudflared: tunnel endpoint unreachable"},{type:"info",text:"[INFO] attempting to reschedule pod..."},{type:"err",text:'[ERROR] ImagePullBackOff: image "this-page:latest" not found'},{type:"cmd",text:"$ kubectl rollout status deploy/this-page"},{type:"err",text:'error: deployment "this-page" not found'},{type:"warn",text:"[WARN] certificate for this-page.lab expired 42 days ago"},{type:"info",text:"[INFO] DNS TTL 30s — retrying..."},{type:"err",text:'[ERROR] upstream "this-page:8080": connection refused'},{type:"cmd",text:"$ kubectl logs -l app=this-page --tail=5"},{type:"err",text:'Error from server (NotFound): pods "this-page" not found'},{type:"warn",text:"[WARN] 3 consecutive CrashLoopBackOff events detected"},{type:"info",text:"[INFO] route table: /this-path → ??? (unresolved)"}],xh=1700;function Wc({title:e="cluster-diagnostics"}){const[t,n]=N.useState([uo[0]]),r=N.useRef(1),l=N.useRef(null);return N.useEffect(()=>{const o=setInterval(()=>{const i=uo[r.current%uo.length];r.current+=1,n(u=>[...u,i].slice(-6))},xh);return()=>clearInterval(o)},[]),N.useEffect(()=>{l.current&&(l.current.scrollTop=l.current.scrollHeight)},[t]),k.jsxs("div",{className:"terminal-log",children:[k.jsxs("div",{className:"terminal-header",children:[k.jsx("span",{className:"terminal-dot red"}),k.jsx("span",{className:"terminal-dot yellow"}),k.jsx("span",{className:"terminal-dot green"}),k.jsx("span",{className:"terminal-title",children:e})]}),k.jsxs("div",{className:"terminal-body",ref:l,children:[t.map((o,i)=>k.jsx("div",{className:`terminal-line terminal-line--${o.type}${i===t.length-1?" terminal-line--new":""}`,children:o.text},i)),k.jsx("span",{className:"terminal-cursor",children:"▋"})]})]})}function _h(){return k.jsx(Ll,{children:k.jsxs("div",{className:"nfp-container",children:[k.jsxs("header",{className:"nfp-header",children:[k.jsx("h1",{className:"nfp-code","aria-label":"Error 404",children:"404"}),k.jsx("h2",{className:"nfp-title",children:"Page Not Found"}),k.jsx("p",{className:"nfp-subtitle",children:"This route was lost somewhere in the cluster."}),k.jsxs("code",{className:"nfp-kubectl",children:["$ kubectl get page: ",k.jsx("span",{className:"err",children:"NotFound"})]})]}),k.jsxs("section",{className:"nfp-game-section","aria-label":"Mini-game",children:[k.jsx(Ch,{}),k.jsx("p",{className:"nfp-game-hint",children:"space / ↑ / tap — jump  ·  dodge the cluster faults"})]}),k.jsx("section",{className:"nfp-log-section","aria-label":"Cluster diagnostics log",children:k.jsx(Wc,{title:"cluster-diagnostics — 404"})}),k.jsxs("footer",{className:"nfp-footer",children:[k.jsx("a",{href:"/",className:"nfp-btn nfp-btn--primary",children:"← Go Home"}),k.jsx("a",{href:"https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/",className:"nfp-btn nfp-btn--secondary",target:"_blank",rel:"noopener noreferrer",children:"kubectl describe pod"})]})]})})}function Nh(){return k.jsx(Ll,{children:k.jsxs("div",{className:"bgp-container",children:[k.jsxs("header",{className:"bgp-header",children:[k.jsx("h1",{className:"bgp-code","aria-label":"Error 502",children:"502"}),k.jsx("h2",{className:"bgp-title",children:"Bad Gateway"}),k.jsx("p",{className:"bgp-subtitle",children:"The upstream service isn't responding. The proxy is confused."}),k.jsxs("code",{className:"bgp-kubectl",children:["$ curl -I https://app.lab — ",k.jsx("span",{className:"err",children:"502 Bad Gateway"})]})]}),k.jsx("section",{className:"bgp-log-section","aria-label":"Gateway diagnostics",children:k.jsx(Wc,{title:"gateway-diagnostics — 502"})}),k.jsxs("footer",{className:"bgp-footer",children:[k.jsx("a",{href:"/",className:"bgp-btn bgp-btn--primary",children:"← Go Home"}),k.jsx("a",{href:"/maintenance",className:"bgp-btn bgp-btn--secondary",children:"Check maintenance status"})]})]})})}function Ph(){const[e,t]=N.useState(".");return N.useEffect(()=>{const n=setInterval(()=>{t(r=>r.length>=3?".":r+".")},600);return()=>clearInterval(n)},[]),k.jsx(Ll,{children:k.jsxs("div",{className:"maint-container",children:[k.jsxs("header",{className:"maint-header",children:[k.jsx("div",{className:"maint-icon","aria-hidden":"true",children:"🔧"}),k.jsx("h1",{className:"maint-title",children:"Under Maintenance"}),k.jsxs("p",{className:"maint-subtitle",children:["The lab is being upgraded",e]}),k.jsxs("code",{className:"maint-status",children:["$ kubectl rollout status deploy/lab — ",k.jsx("span",{className:"info",children:"Waiting"})]})]}),k.jsx("div",{className:"maint-progress",role:"progressbar","aria-label":"Maintenance in progress",children:k.jsx("div",{className:"maint-progress-bar"})}),k.jsx("p",{className:"maint-note",children:"Services will be back shortly. Check back in a few minutes."}),k.jsx("footer",{className:"maint-footer",children:k.jsx("button",{className:"maint-btn",onClick:()=>window.location.reload(),children:"↺ Refresh"})})]})})}function Th(){return k.jsx(Ll,{children:k.jsxs("div",{className:"home-container",children:[k.jsxs("header",{className:"home-header",children:[k.jsx("div",{className:"home-logo","aria-hidden":"true",children:"⎈"}),k.jsx("h1",{className:"home-title",children:"ErrorLab"}),k.jsx("p",{className:"home-subtitle",children:"Home Lab / DevOps Dashboard"}),k.jsx("code",{className:"home-status",children:"cluster: online  ·  nodes: healthy"})]}),k.jsx("section",{className:"home-services","aria-label":"Services",children:[{name:"App",status:"running",path:"#"},{name:"Monitoring",status:"running",path:"#"},{name:"CI/CD",status:"running",path:"#"},{name:"Storage",status:"pending",path:"#"}].map(e=>k.jsxs("a",{href:e.path,className:`home-card home-card--${e.status}`,children:[k.jsx("span",{className:"home-card-name",children:e.name}),k.jsx("span",{className:`home-card-badge home-card-badge--${e.status}`,children:e.status})]},e.name))}),k.jsx("footer",{className:"home-footer",children:k.jsxs("span",{className:"home-footer-text",children:["Something broken?  ",k.jsx("a",{href:"/404",className:"home-link",children:"See the 404 game"})]})})]})})}function Rh(){return k.jsx(sh,{children:k.jsxs(oh,{children:[k.jsx(Rn,{path:"/",element:k.jsx(Th,{})}),k.jsx(Rn,{path:"/502",element:k.jsx(Nh,{})}),k.jsx(Rn,{path:"/maintenance",element:k.jsx(Ph,{})}),k.jsx(Rn,{path:"*",element:k.jsx(_h,{})})]})})}so.createRoot(document.getElementById("root")).render(k.jsx(Rs.StrictMode,{children:k.jsx(Rh,{})})); diff --git a/dist/assets/index-DavgIoPG.js b/dist/assets/index-DavgIoPG.js new file mode 100644 index 0000000..84348bd --- /dev/null +++ b/dist/assets/index-DavgIoPG.js @@ -0,0 +1,67 @@ +function ef(e,t){for(var n=0;nr[l]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))r(l);new MutationObserver(l=>{for(const o of l)if(o.type==="childList")for(const i of o.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&r(i)}).observe(document,{childList:!0,subtree:!0});function n(l){const o={};return l.integrity&&(o.integrity=l.integrity),l.referrerPolicy&&(o.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?o.credentials="include":l.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(l){if(l.ep)return;l.ep=!0;const o=n(l);fetch(l.href,o)}})();function tf(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var _s={exports:{}},ml={},Ps={exports:{}},O={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var ir=Symbol.for("react.element"),nf=Symbol.for("react.portal"),rf=Symbol.for("react.fragment"),lf=Symbol.for("react.strict_mode"),of=Symbol.for("react.profiler"),uf=Symbol.for("react.provider"),sf=Symbol.for("react.context"),af=Symbol.for("react.forward_ref"),cf=Symbol.for("react.suspense"),ff=Symbol.for("react.memo"),df=Symbol.for("react.lazy"),lu=Symbol.iterator;function pf(e){return e===null||typeof e!="object"?null:(e=lu&&e[lu]||e["@@iterator"],typeof e=="function"?e:null)}var Ts={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Rs=Object.assign,Ls={};function mn(e,t,n){this.props=e,this.context=t,this.refs=Ls,this.updater=n||Ts}mn.prototype.isReactComponent={};mn.prototype.setState=function(e,t){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,t,"setState")};mn.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function js(){}js.prototype=mn.prototype;function si(e,t,n){this.props=e,this.context=t,this.refs=Ls,this.updater=n||Ts}var ai=si.prototype=new js;ai.constructor=si;Rs(ai,mn.prototype);ai.isPureReactComponent=!0;var ou=Array.isArray,zs=Object.prototype.hasOwnProperty,ci={current:null},Os={key:!0,ref:!0,__self:!0,__source:!0};function Is(e,t,n){var r,l={},o=null,i=null;if(t!=null)for(r in t.ref!==void 0&&(i=t.ref),t.key!==void 0&&(o=""+t.key),t)zs.call(t,r)&&!Os.hasOwnProperty(r)&&(l[r]=t[r]);var u=arguments.length-2;if(u===1)l.children=n;else if(1>>1,Z=R[Q];if(0>>1;Ql(Fl,j))xtl(dr,Fl)?(R[Q]=dr,R[xt]=j,Q=xt):(R[Q]=Fl,R[Et]=j,Q=Et);else if(xtl(dr,j))R[Q]=dr,R[xt]=j,Q=xt;else break e}}return L}function l(R,L){var j=R.sortIndex-L.sortIndex;return j!==0?j:R.id-L.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var i=Date,u=i.now();e.unstable_now=function(){return i.now()-u}}var s=[],a=[],h=1,d=null,m=3,S=!1,k=!1,w=!1,_=typeof setTimeout=="function"?setTimeout:null,f=typeof clearTimeout=="function"?clearTimeout:null,c=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function p(R){for(var L=n(a);L!==null;){if(L.callback===null)r(a);else if(L.startTime<=R)r(a),L.sortIndex=L.expirationTime,t(s,L);else break;L=n(a)}}function v(R){if(w=!1,p(R),!k)if(n(s)!==null)k=!0,Ml(g);else{var L=n(a);L!==null&&Dl(v,L.startTime-R)}}function g(R,L){k=!1,w&&(w=!1,f(P),P=-1),S=!0;var j=m;try{for(p(L),d=n(s);d!==null&&(!(d.expirationTime>L)||R&&!Re());){var Q=d.callback;if(typeof Q=="function"){d.callback=null,m=d.priorityLevel;var Z=Q(d.expirationTime<=L);L=e.unstable_now(),typeof Z=="function"?d.callback=Z:d===n(s)&&r(s),p(L)}else r(s);d=n(s)}if(d!==null)var fr=!0;else{var Et=n(a);Et!==null&&Dl(v,Et.startTime-L),fr=!1}return fr}finally{d=null,m=j,S=!1}}var x=!1,C=null,P=-1,D=5,z=-1;function Re(){return!(e.unstable_now()-zR||125Q?(R.sortIndex=j,t(a,R),n(s)===null&&R===n(a)&&(w?(f(P),P=-1):w=!0,Dl(v,j-Q))):(R.sortIndex=Z,t(s,R),k||S||(k=!0,Ml(g))),R},e.unstable_shouldYield=Re,e.unstable_wrapCallback=function(R){var L=m;return function(){var j=m;m=L;try{return R.apply(this,arguments)}finally{m=j}}}})(Bs);Us.exports=Bs;var Nf=Us.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var _f=N,Se=Nf;function E(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),ho=Object.prototype.hasOwnProperty,Pf=/^[: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]*$/,uu={},su={};function Tf(e){return ho.call(su,e)?!0:ho.call(uu,e)?!1:Pf.test(e)?su[e]=!0:(uu[e]=!0,!1)}function Rf(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function Lf(e,t,n,r){if(t===null||typeof t>"u"||Rf(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function ce(e,t,n,r,l,o,i){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=i}var ne={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){ne[e]=new ce(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];ne[t]=new ce(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){ne[e]=new ce(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){ne[e]=new ce(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){ne[e]=new ce(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){ne[e]=new ce(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){ne[e]=new ce(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){ne[e]=new ce(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){ne[e]=new ce(e,5,!1,e.toLowerCase(),null,!1,!1)});var di=/[\-:]([a-z])/g;function pi(e){return e[1].toUpperCase()}"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 t=e.replace(di,pi);ne[t]=new ce(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(di,pi);ne[t]=new ce(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(di,pi);ne[t]=new ce(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){ne[e]=new ce(e,1,!1,e.toLowerCase(),null,!1,!1)});ne.xlinkHref=new ce("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){ne[e]=new ce(e,1,!1,e.toLowerCase(),null,!0,!0)});function hi(e,t,n,r){var l=ne.hasOwnProperty(t)?ne[t]:null;(l!==null?l.type!==0:r||!(2u||l[i]!==o[u]){var s=` +`+l[i].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=i&&0<=u);break}}}finally{Bl=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Rn(e):""}function jf(e){switch(e.tag){case 5:return Rn(e.type);case 16:return Rn("Lazy");case 13:return Rn("Suspense");case 19:return Rn("SuspenseList");case 0:case 2:case 15:return e=$l(e.type,!1),e;case 11:return e=$l(e.type.render,!1),e;case 1:return e=$l(e.type,!0),e;default:return""}}function yo(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 Vt:return"Fragment";case $t:return"Portal";case mo:return"Profiler";case mi:return"StrictMode";case vo:return"Suspense";case go:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case Ws:return(e.displayName||"Context")+".Consumer";case Vs:return(e._context.displayName||"Context")+".Provider";case vi:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case gi:return t=e.displayName||null,t!==null?t:yo(e.type)||"Memo";case tt:t=e._payload,e=e._init;try{return yo(e(t))}catch{}}return null}function zf(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return yo(t);case 8:return t===mi?"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 t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function gt(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Qs(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Of(e){var t=Qs(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var l=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(i){r=""+i,o.call(this,i)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(i){r=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function mr(e){e._valueTracker||(e._valueTracker=Of(e))}function Ys(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=Qs(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Wr(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function wo(e,t){var n=t.checked;return W({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function cu(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=gt(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Ks(e,t){t=t.checked,t!=null&&hi(e,"checked",t,!1)}function So(e,t){Ks(e,t);var n=gt(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?ko(e,t.type,n):t.hasOwnProperty("defaultValue")&&ko(e,t.type,gt(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function fu(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function ko(e,t,n){(t!=="number"||Wr(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Ln=Array.isArray;function bt(e,t,n,r){if(e=e.options,t){t={};for(var l=0;l"+t.valueOf().toString()+"",t=vr.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Hn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var In={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},If=["Webkit","ms","Moz","O"];Object.keys(In).forEach(function(e){If.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),In[t]=In[e]})});function Js(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||In.hasOwnProperty(e)&&In[e]?(""+t).trim():t+"px"}function qs(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,l=Js(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,l):e[n]=l}}var Mf=W({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});function Co(e,t){if(t){if(Mf[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(E(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(E(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(E(61))}if(t.style!=null&&typeof t.style!="object")throw Error(E(62))}}function No(e,t){if(e.indexOf("-")===-1)return typeof t.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}}var _o=null;function yi(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Po=null,en=null,tn=null;function hu(e){if(e=ar(e)){if(typeof Po!="function")throw Error(E(280));var t=e.stateNode;t&&(t=Sl(t),Po(e.stateNode,e.type,t))}}function bs(e){en?tn?tn.push(e):tn=[e]:en=e}function ea(){if(en){var e=en,t=tn;if(tn=en=null,hu(e),t)for(e=0;e>>=0,e===0?32:31-(Yf(e)/Kf|0)|0}var gr=64,yr=4194304;function jn(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 Kr(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,l=e.suspendedLanes,o=e.pingedLanes,i=n&268435455;if(i!==0){var u=i&~l;u!==0?r=jn(u):(o&=i,o!==0&&(r=jn(o)))}else i=n&~l,i!==0?r=jn(i):o!==0&&(r=jn(o));if(r===0)return 0;if(t!==0&&t!==r&&!(t&l)&&(l=r&-r,o=t&-t,l>=o||l===16&&(o&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function ur(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Ie(t),e[t]=n}function Jf(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Dn),xu=" ",Cu=!1;function Sa(e,t){switch(e){case"keyup":return Nd.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function ka(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Wt=!1;function Pd(e,t){switch(e){case"compositionend":return ka(t);case"keypress":return t.which!==32?null:(Cu=!0,xu);case"textInput":return e=t.data,e===xu&&Cu?null:e;default:return null}}function Td(e,t){if(Wt)return e==="compositionend"||!_i&&Sa(e,t)?(e=ya(),Or=xi=ot=null,Wt=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Tu(n)}}function Na(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Na(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function _a(){for(var e=window,t=Wr();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Wr(e.document)}return t}function Pi(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function Fd(e){var t=_a(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Na(n.ownerDocument.documentElement,n)){if(r!==null&&Pi(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var l=n.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=Ru(n,o);var i=Ru(n,r);l&&i&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==i.node||e.focusOffset!==i.offset)&&(t=t.createRange(),t.setStart(l.node,l.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(i.node,i.offset)):(t.setEnd(i.node,i.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Ht=null,Oo=null,An=null,Io=!1;function Lu(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Io||Ht==null||Ht!==Wr(r)||(r=Ht,"selectionStart"in r&&Pi(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}),An&&Zn(An,r)||(An=r,r=Zr(Oo,"onSelect"),0Kt||(e.current=Bo[Kt],Bo[Kt]=null,Kt--)}function F(e,t){Kt++,Bo[Kt]=e.current,e.current=t}var yt={},ie=St(yt),pe=St(!1),jt=yt;function sn(e,t){var n=e.type.contextTypes;if(!n)return yt;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var l={},o;for(o in n)l[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function he(e){return e=e.childContextTypes,e!=null}function qr(){U(pe),U(ie)}function Fu(e,t,n){if(ie.current!==yt)throw Error(E(168));F(ie,t),F(pe,n)}function Ma(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var l in r)if(!(l in t))throw Error(E(108,zf(e)||"Unknown",l));return W({},n,r)}function br(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||yt,jt=ie.current,F(ie,e),F(pe,pe.current),!0}function Au(e,t,n){var r=e.stateNode;if(!r)throw Error(E(169));n?(e=Ma(e,t,jt),r.__reactInternalMemoizedMergedChildContext=e,U(pe),U(ie),F(ie,e)):U(pe),F(pe,n)}var Qe=null,kl=!1,to=!1;function Da(e){Qe===null?Qe=[e]:Qe.push(e)}function Xd(e){kl=!0,Da(e)}function kt(){if(!to&&Qe!==null){to=!0;var e=0,t=M;try{var n=Qe;for(M=1;e>=i,l-=i,Ye=1<<32-Ie(t)+l|n<P?(D=C,C=null):D=C.sibling;var z=m(f,C,p[P],v);if(z===null){C===null&&(C=D);break}e&&C&&z.alternate===null&&t(f,C),c=o(z,c,P),x===null?g=z:x.sibling=z,x=z,C=D}if(P===p.length)return n(f,C),B&&Ct(f,P),g;if(C===null){for(;PP?(D=C,C=null):D=C.sibling;var Re=m(f,C,z.value,v);if(Re===null){C===null&&(C=D);break}e&&C&&Re.alternate===null&&t(f,C),c=o(Re,c,P),x===null?g=Re:x.sibling=Re,x=Re,C=D}if(z.done)return n(f,C),B&&Ct(f,P),g;if(C===null){for(;!z.done;P++,z=p.next())z=d(f,z.value,v),z!==null&&(c=o(z,c,P),x===null?g=z:x.sibling=z,x=z);return B&&Ct(f,P),g}for(C=r(f,C);!z.done;P++,z=p.next())z=S(C,f,P,z.value,v),z!==null&&(e&&z.alternate!==null&&C.delete(z.key===null?P:z.key),c=o(z,c,P),x===null?g=z:x.sibling=z,x=z);return e&&C.forEach(function(yn){return t(f,yn)}),B&&Ct(f,P),g}function _(f,c,p,v){if(typeof p=="object"&&p!==null&&p.type===Vt&&p.key===null&&(p=p.props.children),typeof p=="object"&&p!==null){switch(p.$$typeof){case hr:e:{for(var g=p.key,x=c;x!==null;){if(x.key===g){if(g=p.type,g===Vt){if(x.tag===7){n(f,x.sibling),c=l(x,p.props.children),c.return=f,f=c;break e}}else if(x.elementType===g||typeof g=="object"&&g!==null&&g.$$typeof===tt&&$u(g)===x.type){n(f,x.sibling),c=l(x,p.props),c.ref=Nn(f,x,p),c.return=f,f=c;break e}n(f,x);break}else t(f,x);x=x.sibling}p.type===Vt?(c=Lt(p.props.children,f.mode,v,p.key),c.return=f,f=c):(v=$r(p.type,p.key,p.props,null,f.mode,v),v.ref=Nn(f,c,p),v.return=f,f=v)}return i(f);case $t:e:{for(x=p.key;c!==null;){if(c.key===x)if(c.tag===4&&c.stateNode.containerInfo===p.containerInfo&&c.stateNode.implementation===p.implementation){n(f,c.sibling),c=l(c,p.children||[]),c.return=f,f=c;break e}else{n(f,c);break}else t(f,c);c=c.sibling}c=ao(p,f.mode,v),c.return=f,f=c}return i(f);case tt:return x=p._init,_(f,c,x(p._payload),v)}if(Ln(p))return k(f,c,p,v);if(Sn(p))return w(f,c,p,v);Nr(f,p)}return typeof p=="string"&&p!==""||typeof p=="number"?(p=""+p,c!==null&&c.tag===6?(n(f,c.sibling),c=l(c,p),c.return=f,f=c):(n(f,c),c=so(p,f.mode,v),c.return=f,f=c),i(f)):n(f,c)}return _}var cn=Ba(!0),$a=Ba(!1),nl=St(null),rl=null,Zt=null,ji=null;function zi(){ji=Zt=rl=null}function Oi(e){var t=nl.current;U(nl),e._currentValue=t}function Wo(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function rn(e,t){rl=e,ji=Zt=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(de=!0),e.firstContext=null)}function Pe(e){var t=e._currentValue;if(ji!==e)if(e={context:e,memoizedValue:t,next:null},Zt===null){if(rl===null)throw Error(E(308));Zt=e,rl.dependencies={lanes:0,firstContext:e}}else Zt=Zt.next=e;return t}var Pt=null;function Ii(e){Pt===null?Pt=[e]:Pt.push(e)}function Va(e,t,n,r){var l=t.interleaved;return l===null?(n.next=n,Ii(t)):(n.next=l.next,l.next=n),t.interleaved=n,Je(e,r)}function Je(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var nt=!1;function Mi(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Wa(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Ge(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function dt(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,I&2){var l=r.pending;return l===null?t.next=t:(t.next=l.next,l.next=t),r.pending=t,Je(e,n)}return l=r.interleaved,l===null?(t.next=t,Ii(r)):(t.next=l.next,l.next=t),r.interleaved=t,Je(e,n)}function Mr(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Si(e,n)}}function Vu(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var l=null,o=null;if(n=n.firstBaseUpdate,n!==null){do{var i={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};o===null?l=o=i:o=o.next=i,n=n.next}while(n!==null);o===null?l=o=t:o=o.next=t}else l=o=t;n={baseState:r.baseState,firstBaseUpdate:l,lastBaseUpdate:o,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function ll(e,t,n,r){var l=e.updateQueue;nt=!1;var o=l.firstBaseUpdate,i=l.lastBaseUpdate,u=l.shared.pending;if(u!==null){l.shared.pending=null;var s=u,a=s.next;s.next=null,i===null?o=a:i.next=a,i=s;var h=e.alternate;h!==null&&(h=h.updateQueue,u=h.lastBaseUpdate,u!==i&&(u===null?h.firstBaseUpdate=a:u.next=a,h.lastBaseUpdate=s))}if(o!==null){var d=l.baseState;i=0,h=a=s=null,u=o;do{var m=u.lane,S=u.eventTime;if((r&m)===m){h!==null&&(h=h.next={eventTime:S,lane:0,tag:u.tag,payload:u.payload,callback:u.callback,next:null});e:{var k=e,w=u;switch(m=t,S=n,w.tag){case 1:if(k=w.payload,typeof k=="function"){d=k.call(S,d,m);break e}d=k;break e;case 3:k.flags=k.flags&-65537|128;case 0:if(k=w.payload,m=typeof k=="function"?k.call(S,d,m):k,m==null)break e;d=W({},d,m);break e;case 2:nt=!0}}u.callback!==null&&u.lane!==0&&(e.flags|=64,m=l.effects,m===null?l.effects=[u]:m.push(u))}else S={eventTime:S,lane:m,tag:u.tag,payload:u.payload,callback:u.callback,next:null},h===null?(a=h=S,s=d):h=h.next=S,i|=m;if(u=u.next,u===null){if(u=l.shared.pending,u===null)break;m=u,u=m.next,m.next=null,l.lastBaseUpdate=m,l.shared.pending=null}}while(!0);if(h===null&&(s=d),l.baseState=s,l.firstBaseUpdate=a,l.lastBaseUpdate=h,t=l.shared.interleaved,t!==null){l=t;do i|=l.lane,l=l.next;while(l!==t)}else o===null&&(l.shared.lanes=0);It|=i,e.lanes=i,e.memoizedState=d}}function Wu(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var r=ro.transition;ro.transition={};try{e(!1),t()}finally{M=n,ro.transition=r}}function ic(){return Te().memoizedState}function bd(e,t,n){var r=ht(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},uc(e))sc(t,n);else if(n=Va(e,t,n,r),n!==null){var l=se();Me(n,e,r,l),ac(n,t,r)}}function ep(e,t,n){var r=ht(e),l={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(uc(e))sc(t,l);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var i=t.lastRenderedState,u=o(i,n);if(l.hasEagerState=!0,l.eagerState=u,De(u,i)){var s=t.interleaved;s===null?(l.next=l,Ii(t)):(l.next=s.next,s.next=l),t.interleaved=l;return}}catch{}finally{}n=Va(e,t,l,r),n!==null&&(l=se(),Me(n,e,r,l),ac(n,t,r))}}function uc(e){var t=e.alternate;return e===V||t!==null&&t===V}function sc(e,t){Un=il=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function ac(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Si(e,n)}}var ul={readContext:Pe,useCallback:re,useContext:re,useEffect:re,useImperativeHandle:re,useInsertionEffect:re,useLayoutEffect:re,useMemo:re,useReducer:re,useRef:re,useState:re,useDebugValue:re,useDeferredValue:re,useTransition:re,useMutableSource:re,useSyncExternalStore:re,useId:re,unstable_isNewReconciler:!1},tp={readContext:Pe,useCallback:function(e,t){return Ae().memoizedState=[e,t===void 0?null:t],e},useContext:Pe,useEffect:Qu,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Fr(4194308,4,tc.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Fr(4194308,4,e,t)},useInsertionEffect:function(e,t){return Fr(4,2,e,t)},useMemo:function(e,t){var n=Ae();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Ae();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=bd.bind(null,V,e),[r.memoizedState,e]},useRef:function(e){var t=Ae();return e={current:e},t.memoizedState=e},useState:Hu,useDebugValue:Wi,useDeferredValue:function(e){return Ae().memoizedState=e},useTransition:function(){var e=Hu(!1),t=e[0];return e=qd.bind(null,e[1]),Ae().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=V,l=Ae();if(B){if(n===void 0)throw Error(E(407));n=n()}else{if(n=t(),b===null)throw Error(E(349));Ot&30||Ka(r,t,n)}l.memoizedState=n;var o={value:n,getSnapshot:t};return l.queue=o,Qu(Xa.bind(null,r,o,e),[e]),r.flags|=2048,lr(9,Ga.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=Ae(),t=b.identifierPrefix;if(B){var n=Ke,r=Ye;n=(r&~(1<<32-Ie(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=nr++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=i.createElement(n,{is:r.is}):(e=i.createElement(n),n==="select"&&(i=e,r.multiple?i.multiple=!0:r.size&&(i.size=r.size))):e=i.createElementNS(e,n),e[Ue]=t,e[bn]=r,wc(e,t,!1,!1),t.stateNode=e;e:{switch(i=No(n,r),n){case"dialog":A("cancel",e),A("close",e),l=r;break;case"iframe":case"object":case"embed":A("load",e),l=r;break;case"video":case"audio":for(l=0;lpn&&(t.flags|=128,r=!0,_n(o,!1),t.lanes=4194304)}else{if(!r)if(e=ol(i),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),_n(o,!0),o.tail===null&&o.tailMode==="hidden"&&!i.alternate&&!B)return le(t),null}else 2*Y()-o.renderingStartTime>pn&&n!==1073741824&&(t.flags|=128,r=!0,_n(o,!1),t.lanes=4194304);o.isBackwards?(i.sibling=t.child,t.child=i):(n=o.last,n!==null?n.sibling=i:t.child=i,o.last=i)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=Y(),t.sibling=null,n=$.current,F($,r?n&1|2:n&1),t):(le(t),null);case 22:case 23:return Xi(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?ge&1073741824&&(le(t),t.subtreeFlags&6&&(t.flags|=8192)):le(t),null;case 24:return null;case 25:return null}throw Error(E(156,t.tag))}function ap(e,t){switch(Ri(t),t.tag){case 1:return he(t.type)&&qr(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return fn(),U(pe),U(ie),Ai(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Fi(t),null;case 13:if(U($),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(E(340));an()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return U($),null;case 4:return fn(),null;case 10:return Oi(t.type._context),null;case 22:case 23:return Xi(),null;case 24:return null;default:return null}}var Pr=!1,oe=!1,cp=typeof WeakSet=="function"?WeakSet:Set,T=null;function Jt(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){H(e,t,r)}else n.current=null}function qo(e,t,n){try{n()}catch(r){H(e,t,r)}}var ns=!1;function fp(e,t){if(Mo=Gr,e=_a(),Pi(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var l=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var i=0,u=-1,s=-1,a=0,h=0,d=e,m=null;t:for(;;){for(var S;d!==n||l!==0&&d.nodeType!==3||(u=i+l),d!==o||r!==0&&d.nodeType!==3||(s=i+r),d.nodeType===3&&(i+=d.nodeValue.length),(S=d.firstChild)!==null;)m=d,d=S;for(;;){if(d===e)break t;if(m===n&&++a===l&&(u=i),m===o&&++h===r&&(s=i),(S=d.nextSibling)!==null)break;d=m,m=d.parentNode}d=S}n=u===-1||s===-1?null:{start:u,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(Do={focusedElem:e,selectionRange:n},Gr=!1,T=t;T!==null;)if(t=T,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,T=e;else for(;T!==null;){t=T;try{var k=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(k!==null){var w=k.memoizedProps,_=k.memoizedState,f=t.stateNode,c=f.getSnapshotBeforeUpdate(t.elementType===t.type?w:je(t.type,w),_);f.__reactInternalSnapshotBeforeUpdate=c}break;case 3:var p=t.stateNode.containerInfo;p.nodeType===1?p.textContent="":p.nodeType===9&&p.documentElement&&p.removeChild(p.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(E(163))}}catch(v){H(t,t.return,v)}if(e=t.sibling,e!==null){e.return=t.return,T=e;break}T=t.return}return k=ns,ns=!1,k}function Bn(e,t,n){var r=t.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&&qo(t,n,o)}l=l.next}while(l!==r)}}function Cl(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function bo(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function Ec(e){var t=e.alternate;t!==null&&(e.alternate=null,Ec(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Ue],delete t[bn],delete t[Uo],delete t[Kd],delete t[Gd])),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 xc(e){return e.tag===5||e.tag===3||e.tag===4}function rs(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||xc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function ei(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Jr));else if(r!==4&&(e=e.child,e!==null))for(ei(e,t,n),e=e.sibling;e!==null;)ei(e,t,n),e=e.sibling}function ti(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(ti(e,t,n),e=e.sibling;e!==null;)ti(e,t,n),e=e.sibling}var ee=null,ze=!1;function et(e,t,n){for(n=n.child;n!==null;)Cc(e,t,n),n=n.sibling}function Cc(e,t,n){if(Ve&&typeof Ve.onCommitFiberUnmount=="function")try{Ve.onCommitFiberUnmount(vl,n)}catch{}switch(n.tag){case 5:oe||Jt(n,t);case 6:var r=ee,l=ze;ee=null,et(e,t,n),ee=r,ze=l,ee!==null&&(ze?(e=ee,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):ee.removeChild(n.stateNode));break;case 18:ee!==null&&(ze?(e=ee,n=n.stateNode,e.nodeType===8?eo(e.parentNode,n):e.nodeType===1&&eo(e,n),Gn(e)):eo(ee,n.stateNode));break;case 4:r=ee,l=ze,ee=n.stateNode.containerInfo,ze=!0,et(e,t,n),ee=r,ze=l;break;case 0:case 11:case 14:case 15:if(!oe&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var o=l,i=o.destroy;o=o.tag,i!==void 0&&(o&2||o&4)&&qo(n,t,i),l=l.next}while(l!==r)}et(e,t,n);break;case 1:if(!oe&&(Jt(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(u){H(n,t,u)}et(e,t,n);break;case 21:et(e,t,n);break;case 22:n.mode&1?(oe=(r=oe)||n.memoizedState!==null,et(e,t,n),oe=r):et(e,t,n);break;default:et(e,t,n)}}function ls(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new cp),t.forEach(function(r){var l=Sp.bind(null,e,r);n.has(r)||(n.add(r),r.then(l,l))})}}function Le(e,t){var n=t.deletions;if(n!==null)for(var r=0;rl&&(l=i),r&=~o}if(r=l,r=Y()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*pp(r/1960))-r,10e?16:e,it===null)var r=!1;else{if(e=it,it=null,cl=0,I&6)throw Error(E(331));var l=I;for(I|=4,T=e.current;T!==null;){var o=T,i=o.child;if(T.flags&16){var u=o.deletions;if(u!==null){for(var s=0;sY()-Ki?Rt(e,0):Yi|=n),me(e,t)}function zc(e,t){t===0&&(e.mode&1?(t=yr,yr<<=1,!(yr&130023424)&&(yr=4194304)):t=1);var n=se();e=Je(e,t),e!==null&&(ur(e,t,n),me(e,n))}function wp(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),zc(e,n)}function Sp(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(E(314))}r!==null&&r.delete(t),zc(e,n)}var Oc;Oc=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||pe.current)de=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return de=!1,up(e,t,n);de=!!(e.flags&131072)}else de=!1,B&&t.flags&1048576&&Fa(t,tl,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Ar(e,t),e=t.pendingProps;var l=sn(t,ie.current);rn(t,n),l=Bi(null,t,r,e,l,n);var o=$i();return t.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,he(r)?(o=!0,br(t)):o=!1,t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,Mi(t),l.updater=xl,t.stateNode=l,l._reactInternals=t,Qo(t,r,e,n),t=Go(null,t,r,!0,o,n)):(t.tag=0,B&&o&&Ti(t),ue(null,t,l,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Ar(e,t),e=t.pendingProps,l=r._init,r=l(r._payload),t.type=r,l=t.tag=Ep(r),e=je(r,e),l){case 0:t=Ko(null,t,r,e,n);break e;case 1:t=bu(null,t,r,e,n);break e;case 11:t=Ju(null,t,r,e,n);break e;case 14:t=qu(null,t,r,je(r.type,e),n);break e}throw Error(E(306,r,""))}return t;case 0:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:je(r,l),Ko(e,t,r,l,n);case 1:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:je(r,l),bu(e,t,r,l,n);case 3:e:{if(vc(t),e===null)throw Error(E(387));r=t.pendingProps,o=t.memoizedState,l=o.element,Wa(e,t),ll(t,r,null,n);var i=t.memoizedState;if(r=i.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:i.cache,pendingSuspenseBoundaries:i.pendingSuspenseBoundaries,transitions:i.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){l=dn(Error(E(423)),t),t=es(e,t,r,n,l);break e}else if(r!==l){l=dn(Error(E(424)),t),t=es(e,t,r,n,l);break e}else for(ye=ft(t.stateNode.containerInfo.firstChild),we=t,B=!0,Oe=null,n=$a(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(an(),r===l){t=qe(e,t,n);break e}ue(e,t,r,n)}t=t.child}return t;case 5:return Ha(t),e===null&&Vo(t),r=t.type,l=t.pendingProps,o=e!==null?e.memoizedProps:null,i=l.children,Fo(r,l)?i=null:o!==null&&Fo(r,o)&&(t.flags|=32),mc(e,t),ue(e,t,i,n),t.child;case 6:return e===null&&Vo(t),null;case 13:return gc(e,t,n);case 4:return Di(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=cn(t,null,r,n):ue(e,t,r,n),t.child;case 11:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:je(r,l),Ju(e,t,r,l,n);case 7:return ue(e,t,t.pendingProps,n),t.child;case 8:return ue(e,t,t.pendingProps.children,n),t.child;case 12:return ue(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,l=t.pendingProps,o=t.memoizedProps,i=l.value,F(nl,r._currentValue),r._currentValue=i,o!==null)if(De(o.value,i)){if(o.children===l.children&&!pe.current){t=qe(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var u=o.dependencies;if(u!==null){i=o.child;for(var s=u.firstContext;s!==null;){if(s.context===r){if(o.tag===1){s=Ge(-1,n&-n),s.tag=2;var a=o.updateQueue;if(a!==null){a=a.shared;var h=a.pending;h===null?s.next=s:(s.next=h.next,h.next=s),a.pending=s}}o.lanes|=n,s=o.alternate,s!==null&&(s.lanes|=n),Wo(o.return,n,t),u.lanes|=n;break}s=s.next}}else if(o.tag===10)i=o.type===t.type?null:o.child;else if(o.tag===18){if(i=o.return,i===null)throw Error(E(341));i.lanes|=n,u=i.alternate,u!==null&&(u.lanes|=n),Wo(i,n,t),i=o.sibling}else i=o.child;if(i!==null)i.return=o;else for(i=o;i!==null;){if(i===t){i=null;break}if(o=i.sibling,o!==null){o.return=i.return,i=o;break}i=i.return}o=i}ue(e,t,l.children,n),t=t.child}return t;case 9:return l=t.type,r=t.pendingProps.children,rn(t,n),l=Pe(l),r=r(l),t.flags|=1,ue(e,t,r,n),t.child;case 14:return r=t.type,l=je(r,t.pendingProps),l=je(r.type,l),qu(e,t,r,l,n);case 15:return pc(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:je(r,l),Ar(e,t),t.tag=1,he(r)?(e=!0,br(t)):e=!1,rn(t,n),cc(t,r,l),Qo(t,r,l,n),Go(null,t,r,!0,e,n);case 19:return yc(e,t,n);case 22:return hc(e,t,n)}throw Error(E(156,t.tag))};function Ic(e,t){return ua(e,t)}function kp(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,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 Ne(e,t,n,r){return new kp(e,t,n,r)}function Ji(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Ep(e){if(typeof e=="function")return Ji(e)?1:0;if(e!=null){if(e=e.$$typeof,e===vi)return 11;if(e===gi)return 14}return 2}function mt(e,t){var n=e.alternate;return n===null?(n=Ne(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function $r(e,t,n,r,l,o){var i=2;if(r=e,typeof e=="function")Ji(e)&&(i=1);else if(typeof e=="string")i=5;else e:switch(e){case Vt:return Lt(n.children,l,o,t);case mi:i=8,l|=8;break;case mo:return e=Ne(12,n,t,l|2),e.elementType=mo,e.lanes=o,e;case vo:return e=Ne(13,n,t,l),e.elementType=vo,e.lanes=o,e;case go:return e=Ne(19,n,t,l),e.elementType=go,e.lanes=o,e;case Hs:return _l(n,l,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Vs:i=10;break e;case Ws:i=9;break e;case vi:i=11;break e;case gi:i=14;break e;case tt:i=16,r=null;break e}throw Error(E(130,e==null?e:typeof e,""))}return t=Ne(i,n,t,l),t.elementType=e,t.type=r,t.lanes=o,t}function Lt(e,t,n,r){return e=Ne(7,e,r,t),e.lanes=n,e}function _l(e,t,n,r){return e=Ne(22,e,r,t),e.elementType=Hs,e.lanes=n,e.stateNode={isHidden:!1},e}function so(e,t,n){return e=Ne(6,e,null,t),e.lanes=n,e}function ao(e,t,n){return t=Ne(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function xp(e,t,n,r,l){this.tag=t,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=Wl(0),this.expirationTimes=Wl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Wl(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function qi(e,t,n,r,l,o,i,u,s){return e=new xp(e,t,n,u,s),t===1?(t=1,o===!0&&(t|=8)):t=0,o=Ne(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Mi(o),e}function Cp(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Ac)}catch(e){console.error(e)}}Ac(),As.exports=ke;var Rp=As.exports,ds=Rp;po.createRoot=ds.createRoot,po.hydrateRoot=ds.hydrateRoot;/** + * @remix-run/router v1.23.2 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function pl(){return pl=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u")throw new Error(t)}function Uc(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function jp(){return Math.random().toString(36).substr(2,8)}function hs(e,t){return{usr:e.state,key:e.key,idx:t}}function ii(e,t,n,r){return n===void 0&&(n=null),pl({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?jl(t):t,{state:n,key:t&&t.key||r||jp()})}function Bc(e){let{pathname:t="/",search:n="",hash:r=""}=e;return n&&n!=="?"&&(t+=n.charAt(0)==="?"?n:"?"+n),r&&r!=="#"&&(t+=r.charAt(0)==="#"?r:"#"+r),t}function jl(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function zp(e,t,n,r){r===void 0&&(r={});let{window:l=document.defaultView,v5Compat:o=!1}=r,i=l.history,u=ut.Pop,s=null,a=h();a==null&&(a=0,i.replaceState(pl({},i.state,{idx:a}),""));function h(){return(i.state||{idx:null}).idx}function d(){u=ut.Pop;let _=h(),f=_==null?null:_-a;a=_,s&&s({action:u,location:w.location,delta:f})}function m(_,f){u=ut.Push;let c=ii(w.location,_,f);a=h()+1;let p=hs(c,a),v=w.createHref(c);try{i.pushState(p,"",v)}catch(g){if(g instanceof DOMException&&g.name==="DataCloneError")throw g;l.location.assign(v)}o&&s&&s({action:u,location:w.location,delta:1})}function S(_,f){u=ut.Replace;let c=ii(w.location,_,f);a=h();let p=hs(c,a),v=w.createHref(c);i.replaceState(p,"",v),o&&s&&s({action:u,location:w.location,delta:0})}function k(_){let f=l.location.origin!=="null"?l.location.origin:l.location.href,c=typeof _=="string"?_:Bc(_);return c=c.replace(/ $/,"%20"),ve(f,"No window.location.(origin|href) available to create URL for href: "+c),new URL(c,f)}let w={get action(){return u},get location(){return e(l,i)},listen(_){if(s)throw new Error("A history only accepts one active listener");return l.addEventListener(ps,d),s=_,()=>{l.removeEventListener(ps,d),s=null}},createHref(_){return t(l,_)},createURL:k,encodeLocation(_){let f=k(_);return{pathname:f.pathname,search:f.search,hash:f.hash}},push:m,replace:S,go(_){return i.go(_)}};return w}var ms;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(ms||(ms={}));function Op(e,t,n){return n===void 0&&(n="/"),Ip(e,t,n)}function Ip(e,t,n,r){let l=typeof t=="string"?jl(t):t,o=Wc(l.pathname||"/",n);if(o==null)return null;let i=$c(e);Mp(i);let u=null;for(let s=0;u==null&&s{let s={relativePath:u===void 0?o.path||"":u,caseSensitive:o.caseSensitive===!0,childrenIndex:i,route:o};s.relativePath.startsWith("/")&&(ve(s.relativePath.startsWith(r),'Absolute route path "'+s.relativePath+'" nested under path '+('"'+r+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),s.relativePath=s.relativePath.slice(r.length));let a=on([r,s.relativePath]),h=n.concat(s);o.children&&o.children.length>0&&(ve(o.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+a+'".')),$c(o.children,t,h,a)),!(o.path==null&&!o.index)&&t.push({path:a,score:Vp(a,o.index),routesMeta:h})};return e.forEach((o,i)=>{var u;if(o.path===""||!((u=o.path)!=null&&u.includes("?")))l(o,i);else for(let s of Vc(o.path))l(o,i,s)}),t}function Vc(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,l=n.endsWith("?"),o=n.replace(/\?$/,"");if(r.length===0)return l?[o,""]:[o];let i=Vc(r.join("/")),u=[];return u.push(...i.map(s=>s===""?o:[o,s].join("/"))),l&&u.push(...i),u.map(s=>e.startsWith("/")&&s===""?"/":s)}function Mp(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:Wp(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}const Dp=/^:[\w-]+$/,Fp=3,Ap=2,Up=1,Bp=10,$p=-2,vs=e=>e==="*";function Vp(e,t){let n=e.split("/"),r=n.length;return n.some(vs)&&(r+=$p),t&&(r+=Ap),n.filter(l=>!vs(l)).reduce((l,o)=>l+(Dp.test(o)?Fp:o===""?Up:Bp),r)}function Wp(e,t){return e.length===t.length&&e.slice(0,-1).every((r,l)=>r===t[l])?e[e.length-1]-t[t.length-1]:0}function Hp(e,t,n){let{routesMeta:r}=e,l={},o="/",i=[];for(let u=0;u{let{paramName:m,isOptional:S}=h;if(m==="*"){let w=u[d]||"";i=o.slice(0,o.length-w.length).replace(/(.)\/+$/,"$1")}const k=u[d];return S&&!k?a[m]=void 0:a[m]=(k||"").replace(/%2F/g,"/"),a},{}),pathname:o,pathnameBase:i,pattern:e}}function Yp(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0),Uc(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let r=[],l="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(i,u,s)=>(r.push({paramName:u,isOptional:s!=null}),s?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(r.push({paramName:"*"}),l+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?l+="\\/*$":e!==""&&e!=="/"&&(l+="(?:(?=\\/|$))"),[new RegExp(l,t?void 0:"i"),r]}function Kp(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return Uc(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function Wc(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}const on=e=>e.join("/").replace(/\/\/+/g,"/"),Gp=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/");function Xp(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const Hc=["post","put","patch","delete"];new Set(Hc);const Zp=["get",...Hc];new Set(Zp);/** + * React Router v6.30.3 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function hl(){return hl=Object.assign?Object.assign.bind():function(e){for(var t=1;tObject.assign({},_,{params:Object.assign({},u,_.params),pathname:on([s,l.encodeLocation?l.encodeLocation(_.pathname).pathname:_.pathname]),pathnameBase:_.pathnameBase==="/"?s:on([s,l.encodeLocation?l.encodeLocation(_.pathnameBase).pathname:_.pathnameBase])})),o,n,r);return t&&w?N.createElement(zl.Provider,{value:{location:hl({pathname:"/",search:"",hash:"",state:null,key:"default"},h),navigationType:ut.Pop}},w):w}function nh(){let e=ch(),t=Xp(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,l={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return N.createElement(N.Fragment,null,N.createElement("h2",null,"Unexpected Application Error!"),N.createElement("h3",{style:{fontStyle:"italic"}},t),n?N.createElement("pre",{style:l},n):null,null)}const rh=N.createElement(nh,null);class lh extends N.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error!==void 0?N.createElement(Ol.Provider,{value:this.props.routeContext},N.createElement(Yc.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function oh(e){let{routeContext:t,match:n,children:r}=e,l=N.useContext(Jp);return l&&l.static&&l.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(l.staticContext._deepestRenderedBoundaryId=n.route.id),N.createElement(Ol.Provider,{value:t},r)}function ih(e,t,n,r){var l;if(t===void 0&&(t=[]),n===void 0&&(n=null),r===void 0&&(r=null),e==null){var o;if(!n)return null;if(n.errors)e=n.matches;else if((o=r)!=null&&o.v7_partialHydration&&t.length===0&&!n.initialized&&n.matches.length>0)e=n.matches;else return null}let i=e,u=(l=n)==null?void 0:l.errors;if(u!=null){let h=i.findIndex(d=>d.route.id&&(u==null?void 0:u[d.route.id])!==void 0);h>=0||ve(!1),i=i.slice(0,Math.min(i.length,h+1))}let s=!1,a=-1;if(n&&r&&r.v7_partialHydration)for(let h=0;h=0?i=i.slice(0,a+1):i=[i[0]];break}}}return i.reduceRight((h,d,m)=>{let S,k=!1,w=null,_=null;n&&(S=u&&d.route.id?u[d.route.id]:void 0,w=d.route.errorElement||rh,s&&(a<0&&m===0?(fh("route-fallback"),k=!0,_=null):a===m&&(k=!0,_=d.route.hydrateFallbackElement||null)));let f=t.concat(i.slice(0,m+1)),c=()=>{let p;return S?p=w:k?p=_:d.route.Component?p=N.createElement(d.route.Component,null):d.route.element?p=d.route.element:p=h,N.createElement(oh,{match:d,routeContext:{outlet:h,matches:f,isDataRoute:n!=null},children:p})};return n&&(d.route.ErrorBoundary||d.route.errorElement||m===0)?N.createElement(lh,{location:n.location,revalidation:n.revalidation,component:w,error:S,children:c(),routeContext:{outlet:null,matches:f,isDataRoute:!0}}):c()},null)}var Kc=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(Kc||{});function uh(e){let t=N.useContext(qp);return t||ve(!1),t}function sh(e){let t=N.useContext(Ol);return t||ve(!1),t}function ah(e){let t=sh(),n=t.matches[t.matches.length-1];return n.route.id||ve(!1),n.route.id}function ch(){var e;let t=N.useContext(Yc),n=uh(Kc.UseRouteError),r=ah();return t!==void 0?t:(e=n.errors)==null?void 0:e[r]}const gs={};function fh(e,t,n){gs[e]||(gs[e]=!0)}function dh(e,t){e==null||e.v7_startTransition,e==null||e.v7_relativeSplatPath}function On(e){ve(!1)}function ph(e){let{basename:t="/",children:n=null,location:r,navigationType:l=ut.Pop,navigator:o,static:i=!1,future:u}=e;nu()&&ve(!1);let s=t.replace(/^\/*/,"/"),a=N.useMemo(()=>({basename:s,navigator:o,static:i,future:hl({v7_relativeSplatPath:!1},u)}),[s,u,o,i]);typeof r=="string"&&(r=jl(r));let{pathname:h="/",search:d="",hash:m="",state:S=null,key:k="default"}=r,w=N.useMemo(()=>{let _=Wc(h,s);return _==null?null:{location:{pathname:_,search:d,hash:m,state:S,key:k},navigationType:l}},[s,h,d,m,S,k,l]);return w==null?null:N.createElement(Qc.Provider,{value:a},N.createElement(zl.Provider,{children:n,value:w}))}function hh(e){let{children:t,location:n}=e;return eh(ui(t),n)}new Promise(()=>{});function ui(e,t){t===void 0&&(t=[]);let n=[];return N.Children.forEach(e,(r,l)=>{if(!N.isValidElement(r))return;let o=[...t,l];if(r.type===N.Fragment){n.push.apply(n,ui(r.props.children,o));return}r.type!==On&&ve(!1),!r.props.index||!r.props.children||ve(!1);let i={id:r.props.id||o.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,loader:r.props.loader,action:r.props.action,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(i.children=ui(r.props.children,o)),n.push(i)}),n}/** + * React Router DOM v6.30.3 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */const mh="6";try{window.__reactRouterVersion=mh}catch{}const vh="startTransition",ys=yf[vh];function gh(e){let{basename:t,children:n,future:r,window:l}=e,o=N.useRef();o.current==null&&(o.current=Lp({window:l,v5Compat:!0}));let i=o.current,[u,s]=N.useState({action:i.action,location:i.location}),{v7_startTransition:a}=r||{},h=N.useCallback(d=>{a&&ys?ys(()=>s(d)):s(d)},[s,a]);return N.useLayoutEffect(()=>i.listen(h),[i,h]),N.useEffect(()=>dh(r),[r]),N.createElement(ph,{basename:t,children:n,location:u.location,navigationType:u.action,navigator:i,future:r})}var ws;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(ws||(ws={}));var Ss;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(Ss||(Ss={}));function Il({children:e,className:t=""}){return y.jsx("div",{className:`page-layout ${t}`.trim(),children:e})}const q=800,Be=220,$e=168,yh=.58,wh=-13.5,co=5.2,Sh=55e-5,kh=16,Gc=82,Xc=36,Ut=36,ks=340,Eh=680,Es=[{lines:["Crash","Loop"],color:"#ff4455",w:46,h:52},{lines:["OOM","Killed"],color:"#ff2288",w:38,h:60},{lines:["Image","PullErr"],color:"#ff8820",w:44,h:46},{lines:["404"],color:"#00ffff",w:58,h:36},{lines:["Expired","Cert"],color:"#ffee22",w:48,h:48},{lines:["Evicted"],color:"#aaaaaa",w:40,h:34},{lines:["Pod","Failed"],color:"#ff3366",w:40,h:44},{lines:["Bad","Ingress"],color:"#ff6600",w:50,h:40},{lines:["DNS","Fail"],color:"#cc44ff",w:42,h:50},{lines:["Pending","..."],color:"#4499ff",w:52,h:32},{lines:["Timeout"],color:"#ff9944",w:48,h:42},{lines:["502"],color:"#ff4444",w:52,h:36},{lines:["No","Route"],color:"#55ff88",w:46,h:44},{lines:["Tunnel","Down"],color:"#ff55cc",w:50,h:46}];function xh(){const e=Es[Math.floor(Math.random()*Es.length)];return{...e,x:q+60,y:$e-e.h}}function Ch(e,t,n,r,l,o,i,u,s=7){return e+sl+s&&t+so+s}function Vr(e,t,n,r,l,o=5){e.beginPath(),e.moveTo(t+o,n),e.lineTo(t+r-o,n),e.quadraticCurveTo(t+r,n,t+r,n+o),e.lineTo(t+r,n+l-o),e.quadraticCurveTo(t+r,n+l,t+r-o,n+l),e.lineTo(t+o,n+l),e.quadraticCurveTo(t,n+l,t,n+l-o),e.lineTo(t,n+o),e.quadraticCurveTo(t,n,t+o,n),e.closePath()}function Nh(e,t){e.fillStyle="#080c14",e.fillRect(0,0,q,Be),e.fillStyle="rgba(0, 180, 255, 0.055)";const n=28,r=-t%n-n;for(let l=r;l0&&t>=n&&(e.fillStyle="#ffee22",e.font="bold 11px monospace",e.fillText("✦ new high score ✦",q/2,Be/2+16)),e.fillStyle="#00ffcc",e.font="12px monospace",e.fillText("[ SPACE / ↑ / TAP to respawn ]",q/2,Be/2+38),e.restore()}function zh(){const e=N.useRef(null),t=N.useRef({status:"idle",playerY:$e-Ut,velocityY:0,isJumping:!1,obstacles:[],bgOffset:0,frameCount:0,distTravelled:0,nextSpawnAt:400,speed:co,score:0,highScore:parseInt(localStorage.getItem("lab404_hi")??"0",10)}),[n,r]=N.useState("idle"),l=N.useCallback(()=>{const o=t.current;o.status==="idle"?(o.status="playing",r("playing")):o.status==="playing"&&!o.isJumping?(o.velocityY=wh,o.isJumping=!0):o.status==="gameover"&&(o.status="playing",o.playerY=$e-Ut,o.velocityY=0,o.isJumping=!1,o.obstacles=[],o.bgOffset=0,o.frameCount=0,o.distTravelled=0,o.nextSpawnAt=400,o.speed=co,o.score=0,r("playing"))},[]);return N.useEffect(()=>{const o=i=>{(i.code==="Space"||i.code==="ArrowUp")&&(i.preventDefault(),l())};return window.addEventListener("keydown",o),()=>window.removeEventListener("keydown",o)},[l]),N.useEffect(()=>{const i=e.current.getContext("2d");let u;const s=()=>{const a=t.current;if(a.status==="playing"){if(a.frameCount++,a.score=Math.floor(a.frameCount/7),a.speed=Math.min(co+a.score*Sh,kh),a.bgOffset=(a.bgOffset+a.speed*.35)%q,a.distTravelled+=a.speed,a.velocityY+=yh,a.playerY+=a.velocityY,a.playerY>=$e-Ut&&(a.playerY=$e-Ut,a.velocityY=0,a.isJumping=!1),a.distTravelled>=a.nextSpawnAt){a.obstacles.push(xh());const d=ks+Math.random()*(Eh-ks);a.nextSpawnAt=a.distTravelled+d}for(const d of a.obstacles)d.x-=a.speed;a.obstacles=a.obstacles.filter(d=>d.x+d.w>-10),a.obstacles.some(d=>Ch(Gc,a.playerY,Xc,Ut,d.x,d.y,d.w,d.h))&&(a.score>a.highScore&&(a.highScore=a.score,localStorage.setItem("lab404_hi",String(a.score))),a.status="gameover",r("gameover"))}else a.bgOffset=(a.bgOffset+.4)%q;Nh(i,a.bgOffset),_h(i,a.bgOffset),a.obstacles.forEach(h=>Th(i,h)),Ph(i,a.playerY,a.frameCount,a.isJumping),Rh(i,a.score,a.highScore),a.status==="idle"&&Lh(i),a.status==="gameover"&&jh(i,a.score,a.highScore),u=requestAnimationFrame(s)};return u=requestAnimationFrame(s),()=>cancelAnimationFrame(u)},[]),y.jsx("div",{className:"dino-game-wrapper",onClick:l,onTouchStart:o=>{o.preventDefault(),l()},children:y.jsx("canvas",{ref:e,width:q,height:Be,className:"dino-game-canvas",role:"img","aria-label":"Kubernetes pod runner mini-game. Press Space or tap to jump."})})}const fo=[{type:"cmd",text:"$ kubectl get page /this-path --namespace default"},{type:"err",text:'Error from server (NotFound): pages "this-path" not found'},{type:"cmd",text:"$ kubectl describe ingress/main-ingress"},{type:"warn",text:'[WARN] ingress-nginx: no matching rule for path "/this-path"'},{type:"cmd",text:"$ nslookup this-page.cluster.local"},{type:"err",text:"NXDOMAIN: Name does not exist."},{type:"cmd",text:"$ kubectl get pod -l app=this-page"},{type:"err",text:"No resources found in default namespace."},{type:"warn",text:"[WARN] cloudflared: tunnel endpoint unreachable"},{type:"info",text:"[INFO] attempting to reschedule pod..."},{type:"err",text:'[ERROR] ImagePullBackOff: image "this-page:latest" not found'},{type:"cmd",text:"$ kubectl rollout status deploy/this-page"},{type:"err",text:'error: deployment "this-page" not found'},{type:"warn",text:"[WARN] certificate for this-page.lab expired 42 days ago"},{type:"info",text:"[INFO] DNS TTL 30s — retrying..."},{type:"err",text:'[ERROR] upstream "this-page:8080": connection refused'},{type:"cmd",text:"$ kubectl logs -l app=this-page --tail=5"},{type:"err",text:'Error from server (NotFound): pods "this-page" not found'},{type:"warn",text:"[WARN] 3 consecutive CrashLoopBackOff events detected"},{type:"info",text:"[INFO] route table: /this-path → ??? (unresolved)"}],Oh=1700;function Zc({title:e="cluster-diagnostics"}){const[t,n]=N.useState([fo[0]]),r=N.useRef(1),l=N.useRef(null);return N.useEffect(()=>{const o=setInterval(()=>{const i=fo[r.current%fo.length];r.current+=1,n(u=>[...u,i].slice(-6))},Oh);return()=>clearInterval(o)},[]),N.useEffect(()=>{l.current&&(l.current.scrollTop=l.current.scrollHeight)},[t]),y.jsxs("div",{className:"terminal-log",children:[y.jsxs("div",{className:"terminal-header",children:[y.jsx("span",{className:"terminal-dot red"}),y.jsx("span",{className:"terminal-dot yellow"}),y.jsx("span",{className:"terminal-dot green"}),y.jsx("span",{className:"terminal-title",children:e})]}),y.jsxs("div",{className:"terminal-body",ref:l,children:[t.map((o,i)=>y.jsx("div",{className:`terminal-line terminal-line--${o.type}${i===t.length-1?" terminal-line--new":""}`,children:o.text},i)),y.jsx("span",{className:"terminal-cursor",children:"▋"})]})]})}function Ih(){return y.jsx(Il,{children:y.jsxs("div",{className:"nfp-container",children:[y.jsxs("header",{className:"nfp-header",children:[y.jsx("h1",{className:"nfp-code","aria-label":"Error 404",children:"404"}),y.jsx("h2",{className:"nfp-title",children:"Page Not Found"}),y.jsx("p",{className:"nfp-subtitle",children:"This route was lost somewhere in the cluster."}),y.jsxs("code",{className:"nfp-kubectl",children:["$ kubectl get page: ",y.jsx("span",{className:"err",children:"NotFound"})]})]}),y.jsxs("section",{className:"nfp-game-section","aria-label":"Mini-game",children:[y.jsx(zh,{}),y.jsx("p",{className:"nfp-game-hint",children:"space / ↑ / tap — jump  ·  dodge the cluster faults"})]}),y.jsx("section",{className:"nfp-log-section","aria-label":"Cluster diagnostics log",children:y.jsx(Zc,{title:"cluster-diagnostics — 404"})}),y.jsxs("footer",{className:"nfp-footer",children:[y.jsx("a",{href:"/",className:"nfp-btn nfp-btn--primary",children:"← Go Home"}),y.jsx("a",{href:"https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/",className:"nfp-btn nfp-btn--secondary",target:"_blank",rel:"noopener noreferrer",children:"kubectl describe pod"})]})]})})}function Mh(){return y.jsx(Il,{children:y.jsxs("div",{className:"bgp-container",children:[y.jsxs("header",{className:"bgp-header",children:[y.jsx("h1",{className:"bgp-code","aria-label":"Error 502",children:"502"}),y.jsx("h2",{className:"bgp-title",children:"Bad Gateway"}),y.jsx("p",{className:"bgp-subtitle",children:"The upstream service isn't responding. The proxy is confused."}),y.jsxs("code",{className:"bgp-kubectl",children:["$ curl -I https://app.lab — ",y.jsx("span",{className:"err",children:"502 Bad Gateway"})]})]}),y.jsx("section",{className:"bgp-log-section","aria-label":"Gateway diagnostics",children:y.jsx(Zc,{title:"gateway-diagnostics — 502"})}),y.jsxs("footer",{className:"bgp-footer",children:[y.jsx("a",{href:"/",className:"bgp-btn bgp-btn--primary",children:"← Go Home"}),y.jsx("a",{href:"/maintenance",className:"bgp-btn bgp-btn--secondary",children:"Check maintenance status"})]})]})})}function Dh(){const[e,t]=N.useState(".");return N.useEffect(()=>{const n=setInterval(()=>{t(r=>r.length>=3?".":r+".")},600);return()=>clearInterval(n)},[]),y.jsx(Il,{children:y.jsxs("div",{className:"maint-container",children:[y.jsxs("header",{className:"maint-header",children:[y.jsx("div",{className:"maint-icon","aria-hidden":"true",children:"🔧"}),y.jsx("h1",{className:"maint-title",children:"Under Maintenance"}),y.jsxs("p",{className:"maint-subtitle",children:["The lab is being upgraded",e]}),y.jsxs("code",{className:"maint-status",children:["$ kubectl rollout status deploy/lab — ",y.jsx("span",{className:"info",children:"Waiting"})]})]}),y.jsx("div",{className:"maint-progress",role:"progressbar","aria-label":"Maintenance in progress",children:y.jsx("div",{className:"maint-progress-bar"})}),y.jsx("p",{className:"maint-note",children:"Services will be back shortly. Check back in a few minutes."}),y.jsx("footer",{className:"maint-footer",children:y.jsx("button",{className:"maint-btn",onClick:()=>window.location.reload(),children:"↺ Refresh"})})]})})}const vt=10,hn=20,Fh=500,Jc={I:{color:"#00ccff",matrix:[[0,0,0,0],[1,1,1,1],[0,0,0,0],[0,0,0,0]]},O:{color:"#ffee44",matrix:[[1,1],[1,1]]},T:{color:"#b266ff",matrix:[[0,1,0],[1,1,1],[0,0,0]]},L:{color:"#ffaa33",matrix:[[0,0,1],[1,1,1],[0,0,0]]},J:{color:"#4488ff",matrix:[[1,0,0],[1,1,1],[0,0,0]]},S:{color:"#33dd66",matrix:[[0,1,1],[1,1,0],[0,0,0]]},Z:{color:"#ff5566",matrix:[[1,1,0],[0,1,1],[0,0,0]]}},xs=Object.keys(Jc);function Cs(){return Array.from({length:hn},()=>Array.from({length:vt},()=>null))}function qc(e){return e.map(t=>[...t])}function Ah(e){const t=e.length;return Array.from({length:t},(n,r)=>Array.from({length:t},(l,o)=>e[t-1-o][r]))}function Tn(){const e=xs[Math.floor(Math.random()*xs.length)],t=Jc[e];return{type:e,color:t.color,matrix:t.matrix.map(n=>[...n]),x:Math.floor((vt-t.matrix[0].length)/2),y:-1}}function Bt(e,t){const{matrix:n,x:r,y:l}=t;for(let o=0;o=vt||s>=hn||s>=0&&e[s][u])return!0}return!1}function Uh(e,t){const n=qc(e),{matrix:r,x:l,y:o,color:i}=t;for(let u=0;u=0&&a=0&&hl.some(o=>!o)),n=hn-t.length;return{board:[...Array.from({length:n},()=>Array.from({length:vt},()=>null)),...t],removed:n}}function Ns(e,t){let n=t.y;for(;!Bt(e,{...t,y:n+1});)n+=1;return n}function $h(){const[e,t]=N.useState(()=>Cs()),[n,r]=N.useState(()=>Tn()),[l,o]=N.useState(()=>Tn()),[i,u]=N.useState(0),[s,a]=N.useState(0),[h,d]=N.useState("idle"),m=N.useRef(h);N.useEffect(()=>{m.current=h},[h]);const S=N.useCallback(()=>{t(Cs()),r(Tn()),o(Tn()),u(0),a(0),d("playing")},[]),k=N.useCallback(v=>{t(g=>{const x=Uh(g,v),{board:C,removed:P}=Bh(x);return P>0&&(a(D=>D+P),u(D=>D+P*100)),C}),r(g=>{const x={...l,matrix:l.matrix.map(C=>[...C]),x:Math.floor((vt-l.matrix[0].length)/2),y:-1};return o(Tn()),t(C=>(Bt(C,x)&&d("gameover"),C)),x})},[l]),w=N.useCallback((v,g)=>{m.current==="playing"&&r(x=>{const C={...x,x:x.x+v,y:x.y+g};return Bt(e,C)?(g>0&&v===0&&k(x),x):C})},[e,k]),_=N.useCallback(()=>{if(m.current!=="playing")return;const v=Ns(e,n),g={...n,y:v};r(g),k(g)},[e,n,k]),f=N.useCallback(()=>{m.current==="playing"&&r(v=>{const g={...v,matrix:Ah(v.matrix)};if(!Bt(e,g))return g;const x={...g,x:g.x-1};if(!Bt(e,x))return x;const C={...g,x:g.x+1};return Bt(e,C)?v:C})},[e]);N.useEffect(()=>{if(h!=="playing")return;const v=setInterval(()=>{w(0,1)},Fh);return()=>clearInterval(v)},[h,w]),N.useEffect(()=>{const v=g=>{if(g.code==="Space"&&m.current!=="playing"){g.preventDefault(),S();return}m.current==="playing"&&(g.code==="ArrowLeft"?(g.preventDefault(),w(-1,0)):g.code==="ArrowRight"?(g.preventDefault(),w(1,0)):g.code==="ArrowDown"?(g.preventDefault(),w(0,1)):g.code==="ArrowUp"?(g.preventDefault(),f()):g.code==="Space"&&(g.preventDefault(),_()))};return window.addEventListener("keydown",v),()=>window.removeEventListener("keydown",v)},[_,S,f,w]);const c=N.useMemo(()=>Ns(e,n),[e,n]),p=N.useMemo(()=>{const v=qc(e);for(let g=0;g=0&&C=0&&P=0&&C=0&&Pv.map((x,C)=>{const P=`${g}-${C}`,D=x==="ghost"?"tetris-cell tetris-cell--ghost":"tetris-cell",z=x&&x!=="ghost"?{"--cell-color":x}:void 0;return y.jsx("div",{className:D,style:z},P)}))}),y.jsxs("aside",{className:"tetris-sidebar",children:[y.jsxs("div",{className:"tetris-next",children:[y.jsx("p",{className:"tetris-label",children:"NEXT"}),y.jsx("div",{className:"tetris-next-grid",children:l.matrix.map((v,g)=>v.map((x,C)=>y.jsx("div",{className:x?"tetris-next-cell tetris-next-cell--on":"tetris-next-cell",style:x?{"--cell-color":l.color}:void 0},`n-${g}-${C}`)))})]}),y.jsx("button",{className:"tetris-btn",type:"button",onClick:S,children:h==="playing"?"Restart":"Start"})]})]}),y.jsx("p",{className:"tetris-help",children:"controls: left/right move, up rotate, down soft drop, space hard drop/start"}),h!=="playing"&&y.jsx("div",{className:"tetris-overlay","aria-hidden":"true",children:y.jsx("p",{children:h==="gameover"?"GAME OVER":"PRESS START"})})]})}function Vh(){return y.jsx(Il,{children:y.jsxs("div",{className:"home-container",children:[y.jsxs("header",{className:"home-header",children:[y.jsx("div",{className:"home-logo","aria-hidden":"true",children:"⎈"}),y.jsx("h1",{className:"home-title",children:"ErrorLab"}),y.jsx("p",{className:"home-subtitle",children:"Home Lab / DevOps Dashboard"}),y.jsx("code",{className:"home-status",children:"cluster: online  ·  nodes: healthy"})]}),y.jsx("section",{className:"home-services","aria-label":"Services",children:[{name:"App",status:"running",path:"#"},{name:"Monitoring",status:"running",path:"#"},{name:"CI/CD",status:"running",path:"#"},{name:"Storage",status:"pending",path:"#"}].map(e=>y.jsxs("a",{href:e.path,className:`home-card home-card--${e.status}`,children:[y.jsx("span",{className:"home-card-name",children:e.name}),y.jsx("span",{className:`home-card-badge home-card-badge--${e.status}`,children:e.status})]},e.name))}),y.jsx("footer",{className:"home-footer",children:y.jsxs("span",{className:"home-footer-text",children:["Something broken?  ",y.jsx("a",{href:"/404",className:"home-link",children:"See the 404 game"})]})}),y.jsxs("section",{className:"home-tetris","aria-label":"Tetris mini game",children:[y.jsx("h2",{className:"home-tetris-title",children:"Mini Game: Tetris"}),y.jsx($h,{})]})]})})}function Wh(){return y.jsx(gh,{children:y.jsxs(hh,{children:[y.jsx(On,{path:"/",element:y.jsx(Vh,{})}),y.jsx(On,{path:"/502",element:y.jsx(Mh,{})}),y.jsx(On,{path:"/maintenance",element:y.jsx(Dh,{})}),y.jsx(On,{path:"*",element:y.jsx(Ih,{})})]})})}po.createRoot(document.getElementById("root")).render(y.jsx(Ds.StrictMode,{children:y.jsx(Wh,{})})); diff --git a/dist/index.html b/dist/index.html index fd09f5d..b417d20 100644 --- a/dist/index.html +++ b/dist/index.html @@ -5,8 +5,8 @@ ErrorLab - - + +
diff --git a/src/components/TetrisGame/TetrisGame.css b/src/components/TetrisGame/TetrisGame.css new file mode 100644 index 0000000..8ce92f8 --- /dev/null +++ b/src/components/TetrisGame/TetrisGame.css @@ -0,0 +1,149 @@ +.tetris-shell { + width: 100%; + max-width: 700px; + background: linear-gradient(180deg, rgba(10, 20, 32, 0.85) 0%, rgba(6, 12, 18, 0.92) 100%); + border: 1px solid rgba(0, 200, 255, 0.2); + border-radius: 10px; + padding: 1rem; + position: relative; + box-shadow: 0 0 28px rgba(0, 200, 255, 0.1); +} + +.tetris-header { + display: flex; + align-items: center; + justify-content: space-between; + gap: 0.8rem; + margin-bottom: 0.9rem; +} + +.tetris-title { + font-size: 1rem; + letter-spacing: 0.08em; + color: var(--accent); +} + +.tetris-metrics { + display: flex; + gap: 0.8rem; + font-size: 0.75rem; + color: var(--text-muted); +} + +.tetris-layout { + display: flex; + gap: 1rem; + align-items: flex-start; +} + +.tetris-board { + width: 100%; + max-width: 300px; + aspect-ratio: 1 / 2; + display: grid; + grid-template-columns: repeat(10, 1fr); + grid-template-rows: repeat(20, 1fr); + gap: 2px; + background: rgba(0, 0, 0, 0.4); + border: 1px solid rgba(255, 255, 255, 0.08); + padding: 3px; +} + +.tetris-cell { + background: rgba(255, 255, 255, 0.025); +} + +.tetris-cell[style] { + background: var(--cell-color); + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.25); +} + +.tetris-cell--ghost { + background: rgba(255, 255, 255, 0.1); + box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.2); +} + +.tetris-sidebar { + min-width: 130px; + display: flex; + flex-direction: column; + gap: 0.8rem; +} + +.tetris-label { + font-size: 0.7rem; + color: var(--text-muted); + margin-bottom: 0.3rem; +} + +.tetris-next-grid { + width: 96px; + height: 96px; + display: grid; + grid-template-columns: repeat(4, 1fr); + grid-template-rows: repeat(4, 1fr); + gap: 2px; + background: rgba(0, 0, 0, 0.28); + border: 1px solid rgba(255, 255, 255, 0.09); + padding: 4px; +} + +.tetris-next-cell { + background: rgba(255, 255, 255, 0.03); +} + +.tetris-next-cell--on { + background: var(--cell-color); + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.3); +} + +.tetris-btn { + border: 1px solid var(--accent); + background: rgba(0, 255, 204, 0.1); + color: var(--accent); + border-radius: 6px; + padding: 0.45rem 0.6rem; + cursor: pointer; + font-family: var(--font-mono); + font-size: 0.8rem; +} + +.tetris-btn:hover { + background: rgba(0, 255, 204, 0.18); +} + +.tetris-help { + margin-top: 0.8rem; + font-size: 0.7rem; + color: var(--text-muted); +} + +.tetris-overlay { + position: absolute; + inset: 0; + border-radius: 10px; + background: rgba(6, 10, 16, 0.55); + display: flex; + align-items: center; + justify-content: center; + pointer-events: none; +} + +.tetris-overlay p { + color: #ffffff; + font-size: 1rem; + letter-spacing: 0.08em; +} + +@media (max-width: 640px) { + .tetris-layout { + flex-direction: column; + align-items: center; + } + + .tetris-sidebar { + width: 100%; + min-width: 0; + align-items: center; + } +} diff --git a/src/components/TetrisGame/TetrisGame.jsx b/src/components/TetrisGame/TetrisGame.jsx new file mode 100644 index 0000000..a305eec --- /dev/null +++ b/src/components/TetrisGame/TetrisGame.jsx @@ -0,0 +1,356 @@ +import { useCallback, useEffect, useMemo, useRef, useState } from 'react' +import './TetrisGame.css' + +const BOARD_W = 10 +const BOARD_H = 20 +const TICK_MS = 500 + +const SHAPES = { + I: { + color: '#00ccff', + matrix: [ + [0, 0, 0, 0], + [1, 1, 1, 1], + [0, 0, 0, 0], + [0, 0, 0, 0], + ], + }, + O: { + color: '#ffee44', + matrix: [ + [1, 1], + [1, 1], + ], + }, + T: { + color: '#b266ff', + matrix: [ + [0, 1, 0], + [1, 1, 1], + [0, 0, 0], + ], + }, + L: { + color: '#ffaa33', + matrix: [ + [0, 0, 1], + [1, 1, 1], + [0, 0, 0], + ], + }, + J: { + color: '#4488ff', + matrix: [ + [1, 0, 0], + [1, 1, 1], + [0, 0, 0], + ], + }, + S: { + color: '#33dd66', + matrix: [ + [0, 1, 1], + [1, 1, 0], + [0, 0, 0], + ], + }, + Z: { + color: '#ff5566', + matrix: [ + [1, 1, 0], + [0, 1, 1], + [0, 0, 0], + ], + }, +} + +const PIECES = Object.keys(SHAPES) + +function newBoard() { + return Array.from({ length: BOARD_H }, () => Array.from({ length: BOARD_W }, () => null)) +} + +function cloneBoard(board) { + return board.map((row) => [...row]) +} + +function rotateMatrix(matrix) { + const n = matrix.length + return Array.from({ length: n }, (_, y) => + Array.from({ length: n }, (_, x) => matrix[n - 1 - x][y]) + ) +} + +function randomPiece() { + const type = PIECES[Math.floor(Math.random() * PIECES.length)] + const shape = SHAPES[type] + return { + type, + color: shape.color, + matrix: shape.matrix.map((r) => [...r]), + x: Math.floor((BOARD_W - shape.matrix[0].length) / 2), + y: -1, + } +} + +function collides(board, piece) { + const { matrix, x: px, y: py } = piece + for (let y = 0; y < matrix.length; y++) { + for (let x = 0; x < matrix[y].length; x++) { + if (!matrix[y][x]) continue + const bx = px + x + const by = py + y + if (bx < 0 || bx >= BOARD_W || by >= BOARD_H) return true + if (by >= 0 && board[by][bx]) return true + } + } + return false +} + +function mergePiece(board, piece) { + const next = cloneBoard(board) + const { matrix, x: px, y: py, color } = piece + for (let y = 0; y < matrix.length; y++) { + for (let x = 0; x < matrix[y].length; x++) { + if (!matrix[y][x]) continue + const by = py + y + const bx = px + x + if (by >= 0 && by < BOARD_H && bx >= 0 && bx < BOARD_W) { + next[by][bx] = color + } + } + } + return next +} + +function clearLines(board) { + const kept = board.filter((row) => row.some((cell) => !cell)) + const removed = BOARD_H - kept.length + const cleared = [ + ...Array.from({ length: removed }, () => Array.from({ length: BOARD_W }, () => null)), + ...kept, + ] + return { board: cleared, removed } +} + +function ghostDropY(board, piece) { + let y = piece.y + while (!collides(board, { ...piece, y: y + 1 })) y += 1 + return y +} + +export default function TetrisGame() { + const [board, setBoard] = useState(() => newBoard()) + const [piece, setPiece] = useState(() => randomPiece()) + const [nextPiece, setNextPiece] = useState(() => randomPiece()) + const [score, setScore] = useState(0) + const [lines, setLines] = useState(0) + const [status, setStatus] = useState('idle') + + const statusRef = useRef(status) + useEffect(() => { + statusRef.current = status + }, [status]) + + const resetGame = useCallback(() => { + setBoard(newBoard()) + setPiece(randomPiece()) + setNextPiece(randomPiece()) + setScore(0) + setLines(0) + setStatus('playing') + }, []) + + const lockAndSpawn = useCallback((fallingPiece) => { + setBoard((prevBoard) => { + const merged = mergePiece(prevBoard, fallingPiece) + const { board: clearedBoard, removed } = clearLines(merged) + if (removed > 0) { + setLines((v) => v + removed) + setScore((v) => v + removed * 100) + } + return clearedBoard + }) + + setPiece((_) => { + const incoming = { + ...nextPiece, + matrix: nextPiece.matrix.map((row) => [...row]), + x: Math.floor((BOARD_W - nextPiece.matrix[0].length) / 2), + y: -1, + } + + setNextPiece(randomPiece()) + + setBoard((latestBoard) => { + if (collides(latestBoard, incoming)) { + setStatus('gameover') + return latestBoard + } + return latestBoard + }) + + return incoming + }) + }, [nextPiece]) + + const tryMove = useCallback((dx, dy) => { + if (statusRef.current !== 'playing') return + setPiece((prev) => { + const moved = { ...prev, x: prev.x + dx, y: prev.y + dy } + if (!collides(board, moved)) return moved + + if (dy > 0 && dx === 0) { + lockAndSpawn(prev) + } + return prev + }) + }, [board, lockAndSpawn]) + + const hardDrop = useCallback(() => { + if (statusRef.current !== 'playing') return + const dropY = ghostDropY(board, piece) + const landed = { ...piece, y: dropY } + setPiece(landed) + lockAndSpawn(landed) + }, [board, piece, lockAndSpawn]) + + const rotatePiece = useCallback(() => { + if (statusRef.current !== 'playing') return + setPiece((prev) => { + const rotated = { ...prev, matrix: rotateMatrix(prev.matrix) } + if (!collides(board, rotated)) return rotated + const kickLeft = { ...rotated, x: rotated.x - 1 } + if (!collides(board, kickLeft)) return kickLeft + const kickRight = { ...rotated, x: rotated.x + 1 } + if (!collides(board, kickRight)) return kickRight + return prev + }) + }, [board]) + + useEffect(() => { + if (status !== 'playing') return undefined + const id = setInterval(() => { + tryMove(0, 1) + }, TICK_MS) + return () => clearInterval(id) + }, [status, tryMove]) + + useEffect(() => { + const onKey = (e) => { + if (e.code === 'Space' && statusRef.current !== 'playing') { + e.preventDefault() + resetGame() + return + } + + if (statusRef.current !== 'playing') return + + if (e.code === 'ArrowLeft') { + e.preventDefault() + tryMove(-1, 0) + } else if (e.code === 'ArrowRight') { + e.preventDefault() + tryMove(1, 0) + } else if (e.code === 'ArrowDown') { + e.preventDefault() + tryMove(0, 1) + } else if (e.code === 'ArrowUp') { + e.preventDefault() + rotatePiece() + } else if (e.code === 'Space') { + e.preventDefault() + hardDrop() + } + } + + window.addEventListener('keydown', onKey) + return () => window.removeEventListener('keydown', onKey) + }, [hardDrop, resetGame, rotatePiece, tryMove]) + + const ghostY = useMemo(() => ghostDropY(board, piece), [board, piece]) + + const renderGrid = useMemo(() => { + const grid = cloneBoard(board) + + for (let y = 0; y < piece.matrix.length; y++) { + for (let x = 0; x < piece.matrix[y].length; x++) { + if (!piece.matrix[y][x]) continue + const by = ghostY + y + const bx = piece.x + x + if (by >= 0 && by < BOARD_H && bx >= 0 && bx < BOARD_W && !grid[by][bx]) { + grid[by][bx] = 'ghost' + } + } + } + + for (let y = 0; y < piece.matrix.length; y++) { + for (let x = 0; x < piece.matrix[y].length; x++) { + if (!piece.matrix[y][x]) continue + const by = piece.y + y + const bx = piece.x + x + if (by >= 0 && by < BOARD_H && bx >= 0 && bx < BOARD_W) { + grid[by][bx] = piece.color + } + } + } + + return grid + }, [board, ghostY, piece]) + + return ( +
+
+

Tetris

+
+ SCORE: {String(score).padStart(4, '0')} + LINES: {lines} +
+
+ +
+
+ {renderGrid.map((row, y) => + row.map((cell, x) => { + const key = `${y}-${x}` + const className = cell === 'ghost' ? 'tetris-cell tetris-cell--ghost' : 'tetris-cell' + const style = cell && cell !== 'ghost' ? { '--cell-color': cell } : undefined + return
+ }) + )} +
+ + +
+ +

+ controls: left/right move, up rotate, down soft drop, space hard drop/start +

+ + {status !== 'playing' && ( + + )} +
+ ) +} diff --git a/src/pages/home/HomePage.css b/src/pages/home/HomePage.css index 942598b..c8d661f 100644 --- a/src/pages/home/HomePage.css +++ b/src/pages/home/HomePage.css @@ -76,3 +76,18 @@ .home-footer-text { font-size: 0.82rem; color: var(--text-muted); } .home-link { color: var(--accent); text-decoration: underline; text-underline-offset: 3px; } .home-link:hover { color: var(--cyan); } + +.home-tetris { + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + gap: 0.7rem; + margin-top: 0.3rem; +} + +.home-tetris-title { + font-size: 0.92rem; + color: var(--cyan); + letter-spacing: 0.08em; +} diff --git a/src/pages/home/HomePage.jsx b/src/pages/home/HomePage.jsx index 4b8dd62..04a7cfd 100644 --- a/src/pages/home/HomePage.jsx +++ b/src/pages/home/HomePage.jsx @@ -1,4 +1,5 @@ import PageLayout from '../../components/PageLayout/PageLayout.jsx' +import TetrisGame from '../../components/TetrisGame/TetrisGame.jsx' import './HomePage.css' /** @@ -37,6 +38,11 @@ export default function HomePage() { See the 404 game + +
+

Mini Game: Tetris

+ +
)