diff --git a/README.md b/README.md index 749d5c2..986542a 100644 --- a/README.md +++ b/README.md @@ -22,36 +22,16 @@ It sits on OpenTelemetry but abstracts away the complexity. Customer namespaces See DashFrog in action with a 2-minute demo: -**Step 1: Install DashFrog** - ```bash -# setup demo dir -mkdir dashfrog-demo && cd dashfrog-demo -/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/towlabs/dashfrog/main/bin/deploy)" -``` - -This installs DashFrog with Docker Compose and exposes: -- **API/UI** on http://localhost:8000 (login: `admin` / `admin`) -- **OTLP endpoints** on ports 4317 (gRPC) and 4318 (HTTP) - -**Step 2: Run the demo** - -```bash -# Install dependencies -python -m venv .venv && source .venv/bin/activate -pip install dashfrog requests - -# Download and run the demo script -wget https://raw.githubusercontent.com/towlabs/dashfrog/main/dashfrog/demo-app/demo.py -python demo.py +curl -fsSL https://raw.githubusercontent.com/towlabs/dashfrog/main/bin/deploy | bash -s -- --with-demo ``` -The demo will: -1. Generate flows and metrics for 3 sample customers -2. Create status page notebooks with live data -3. Print direct links to view the notebooks +This will: +1. Install DashFrog with Docker Compose +2. Start the demo generating sample data +3. Create status page notebooks for 3 customers -Open the links in your browser to explore the data! +Access the UI at **http://localhost:8000** (login: `admin` / `admin`) > **For production:** See the [Deployment Guide](docs/deployment.md) for Kubernetes, custom configuration, and security hardening. @@ -133,6 +113,7 @@ Ideas we're exploring: - External data sources(API, Prometheus, ...) - Helpdesk integrations (Zendesk, Intercom) - Alerting rules +- Frontend SDK for embedding components in apps ## License diff --git a/bin/deploy b/bin/deploy index 0e0fff8..38190fd 100755 --- a/bin/deploy +++ b/bin/deploy @@ -10,9 +10,18 @@ NC='\033[0m' # No Color # Parse arguments DEV_MODE=false -if [[ "$1" == "--dev" ]]; then - DEV_MODE=true -fi +WITH_DEMO=false + +for arg in "$@"; do + case $arg in + --dev) + DEV_MODE=true + ;; + --with-demo) + WITH_DEMO=true + ;; + esac +done # Configuration GITHUB_REPO="towlabs/dashfrog" @@ -157,7 +166,39 @@ else echo "" fi + +# Start demo if requested +if [ "$WITH_DEMO" = true ]; then + echo -e "${BLUE}🚀 Starting demo...${NC}" + echo "" + + # Download demo script + curl -fsSL "${BASE_URL}/dashfrog/demo-app/demo.py" -o demo.py + + # Run demo using docker (uses defaults from config.py) + echo -e "${BLUE}Installing dependencies and starting demo...${NC}" + docker run \ + --network host \ + -v "$(pwd)/demo.py:/app/demo.py" \ + python:3.12-slim \ + bash -c "pip install -q dashfrog requests && python -u /app/demo.py" + + # Wait a moment for demo to start + sleep 2 + + echo "" + echo -e "${GREEN}✓ Demo is running!${NC}" + echo "" + echo -e "${BLUE}The demo will generate data and create notebooks.${NC}" + echo -e "${BLUE}View notebook links:${NC} docker logs dashfrog-demo" + echo "" + echo -e "${BLUE}Follow live output:${NC} docker logs -f dashfrog-demo" + echo -e "${BLUE}Stop demo:${NC} docker stop dashfrog-demo && docker rm dashfrog-demo" + echo "" +fi + # Print success message +echo "" echo -e "${GREEN}╔═══════════════════════════════════════╗${NC}" echo -e "${GREEN}║ 🎉 Installation Complete! 🎉 ║${NC}" echo -e "${GREEN}╚═══════════════════════════════════════╝${NC}" @@ -172,4 +213,4 @@ echo " - DASHFROG_API_SECRET_KEY" echo " - DASHFROG_POSTGRES_PASSWORD" echo " - DASHFROG_OTLP_AUTH_TOKEN" echo " - DASHFROG_API_PASSWORD" -echo " Then run: docker compose restart" +echo " Then run: docker compose down -v && docker compose up -d" diff --git a/dashfrog/pyproject.toml b/dashfrog/pyproject.toml index a8424e8..70ad784 100644 --- a/dashfrog/pyproject.toml +++ b/dashfrog/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "dashfrog" -version = "0.1.9" +version = "0.1.10" description = "Business Observability on OpenTelemetry" readme = "README.md" requires-python = ">=3.10" diff --git a/dashfrog/src/dashfrog/api/static/assets/index-C8Mc4KrH.js b/dashfrog/src/dashfrog/api/static/assets/index-C8Mc4KrH.js new file mode 100644 index 0000000..111ef57 --- /dev/null +++ b/dashfrog/src/dashfrog/api/static/assets/index-C8Mc4KrH.js @@ -0,0 +1,845 @@ +function j1e(e,t){for(var n=0;nr[i]})}}}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 i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const a of o.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=n(i);fetch(i.href,o)}})();var Ip=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function vr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var hI={exports:{}},wE={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var dz;function B1e(){if(dz)return wE;dz=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function n(r,i,o){var a=null;if(o!==void 0&&(a=""+o),i.key!==void 0&&(a=""+i.key),"key"in i){o={};for(var s in i)s!=="key"&&(o[s]=i[s])}else o=i;return i=o.ref,{$$typeof:e,type:r,key:a,ref:i!==void 0?i:null,props:o}}return wE.Fragment=t,wE.jsx=n,wE.jsxs=n,wE}var fz;function $1e(){return fz||(fz=1,hI.exports=B1e()),hI.exports}var g=$1e(),pI={exports:{}},pn={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var hz;function H1e(){if(hz)return pn;hz=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),o=Symbol.for("react.consumer"),a=Symbol.for("react.context"),s=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),c=Symbol.for("react.memo"),d=Symbol.for("react.lazy"),u=Symbol.for("react.activity"),p=Symbol.iterator;function m(Q){return Q===null||typeof Q!="object"?null:(Q=p&&Q[p]||Q["@@iterator"],typeof Q=="function"?Q:null)}var v={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},x=Object.assign,w={};function T(Q,te,z){this.props=Q,this.context=te,this.refs=w,this.updater=z||v}T.prototype.isReactComponent={},T.prototype.setState=function(Q,te){if(typeof Q!="object"&&typeof Q!="function"&&Q!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,Q,te,"setState")},T.prototype.forceUpdate=function(Q){this.updater.enqueueForceUpdate(this,Q,"forceUpdate")};function k(){}k.prototype=T.prototype;function N(Q,te,z){this.props=Q,this.context=te,this.refs=w,this.updater=z||v}var I=N.prototype=new k;I.constructor=N,x(I,T.prototype),I.isPureReactComponent=!0;var M=Array.isArray;function A(){}var R={H:null,A:null,T:null,S:null},L=Object.prototype.hasOwnProperty;function B(Q,te,z){var fe=z.ref;return{$$typeof:e,type:Q,key:te,ref:fe!==void 0?fe:null,props:z}}function $(Q,te){return B(Q.type,te,Q.props)}function W(Q){return typeof Q=="object"&&Q!==null&&Q.$$typeof===e}function V(Q){var te={"=":"=0",":":"=2"};return"$"+Q.replace(/[=:]/g,function(z){return te[z]})}var Y=/\/+/g;function U(Q,te){return typeof Q=="object"&&Q!==null&&Q.key!=null?V(""+Q.key):te.toString(36)}function X(Q){switch(Q.status){case"fulfilled":return Q.value;case"rejected":throw Q.reason;default:switch(typeof Q.status=="string"?Q.then(A,A):(Q.status="pending",Q.then(function(te){Q.status==="pending"&&(Q.status="fulfilled",Q.value=te)},function(te){Q.status==="pending"&&(Q.status="rejected",Q.reason=te)})),Q.status){case"fulfilled":return Q.value;case"rejected":throw Q.reason}}throw Q}function q(Q,te,z,fe,me){var ke=typeof Q;(ke==="undefined"||ke==="boolean")&&(Q=null);var Ee=!1;if(Q===null)Ee=!0;else switch(ke){case"bigint":case"string":case"number":Ee=!0;break;case"object":switch(Q.$$typeof){case e:case t:Ee=!0;break;case d:return Ee=Q._init,q(Ee(Q._payload),te,z,fe,me)}}if(Ee)return me=me(Q),Ee=fe===""?"."+U(Q,0):fe,M(me)?(z="",Ee!=null&&(z=Ee.replace(Y,"$&/")+"/"),q(me,te,z,"",function(je){return je})):me!=null&&(W(me)&&(me=$(me,z+(me.key==null||Q&&Q.key===me.key?"":(""+me.key).replace(Y,"$&/")+"/")+Ee)),te.push(me)),1;Ee=0;var ve=fe===""?".":fe+":";if(M(Q))for(var we=0;we>>1,K=q[oe];if(0>>1;oei(z,Z))fei(me,z)?(q[oe]=me,q[fe]=Z,oe=fe):(q[oe]=z,q[te]=Z,oe=te);else if(fei(me,Z))q[oe]=me,q[fe]=Z,oe=fe;else break e}}return ne}function i(q,ne){var Z=q.sortIndex-ne.sortIndex;return Z!==0?Z:q.id-ne.id}if(e.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var a=Date,s=a.now();e.unstable_now=function(){return a.now()-s}}var l=[],c=[],d=1,u=null,p=3,m=!1,v=!1,x=!1,w=!1,T=typeof setTimeout=="function"?setTimeout:null,k=typeof clearTimeout=="function"?clearTimeout:null,N=typeof setImmediate<"u"?setImmediate:null;function I(q){for(var ne=n(c);ne!==null;){if(ne.callback===null)r(c);else if(ne.startTime<=q)r(c),ne.sortIndex=ne.expirationTime,t(l,ne);else break;ne=n(c)}}function M(q){if(x=!1,I(q),!v)if(n(l)!==null)v=!0,A||(A=!0,V());else{var ne=n(c);ne!==null&&X(M,ne.startTime-q)}}var A=!1,R=-1,L=5,B=-1;function $(){return w?!0:!(e.unstable_now()-Bq&&$());){var oe=u.callback;if(typeof oe=="function"){u.callback=null,p=u.priorityLevel;var K=oe(u.expirationTime<=q);if(q=e.unstable_now(),typeof K=="function"){u.callback=K,I(q),ne=!0;break t}u===n(l)&&r(l),I(q)}else r(l);u=n(l)}if(u!==null)ne=!0;else{var Q=n(c);Q!==null&&X(M,Q.startTime-q),ne=!1}}break e}finally{u=null,p=Z,m=!1}ne=void 0}}finally{ne?V():A=!1}}}var V;if(typeof N=="function")V=function(){N(W)};else if(typeof MessageChannel<"u"){var Y=new MessageChannel,U=Y.port2;Y.port1.onmessage=W,V=function(){U.postMessage(null)}}else V=function(){T(W,0)};function X(q,ne){R=T(function(){q(e.unstable_now())},ne)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(q){q.callback=null},e.unstable_forceFrameRate=function(q){0>q||125oe?(q.sortIndex=Z,t(c,q),n(l)===null&&q===n(c)&&(x?(k(R),R=-1):x=!0,X(M,Z-oe))):(q.sortIndex=K,t(l,q),v||m||(v=!0,A||(A=!0,V()))),q},e.unstable_shouldYield=$,e.unstable_wrapCallback=function(q){var ne=p;return function(){var Z=p;p=ne;try{return q.apply(this,arguments)}finally{p=Z}}}})(yI)),yI}var gz;function U1e(){return gz||(gz=1,gI.exports=F1e()),gI.exports}var bI={exports:{}},ma={};/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var yz;function z1e(){if(yz)return ma;yz=1;var e=fT();function t(l){var c="https://react.dev/errors/"+l;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),bI.exports=z1e(),bI.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var vz;function V1e(){if(vz)return EE;vz=1;var e=U1e(),t=fT(),n=ore();function r(f){var h="https://react.dev/errors/"+f;if(1K||(f.current=oe[K],oe[K]=null,K--)}function z(f,h){K++,oe[K]=f.current,f.current=h}var fe=Q(null),me=Q(null),ke=Q(null),Ee=Q(null);function ve(f,h){switch(z(ke,h),z(me,f),z(fe,null),h.nodeType){case 9:case 11:f=(f=h.documentElement)&&(f=f.namespaceURI)?Pg(f):0;break;default:if(f=h.tagName,h=h.namespaceURI)h=Pg(h),f=ha(h,f);else switch(f){case"svg":f=1;break;case"math":f=2;break;default:f=0}}te(fe),z(fe,f)}function we(){te(fe),te(me),te(ke)}function je(f){f.memoizedState!==null&&z(Ee,f);var h=fe.current,y=ha(h,f.type);h!==y&&(z(me,f),z(fe,y))}function Ke(f){me.current===f&&(te(fe),te(me)),Ee.current===f&&(te(Ee),ap._currentValue=Z)}var Me,Lt;function Ve(f){if(Me===void 0)try{throw Error()}catch(y){var h=y.stack.trim().match(/\n( *(at )?)/);Me=h&&h[1]||"",Lt=-1)":-1_||de[E]!==Oe[_]){var Ue=` +`+de[E].replace(" at new "," at ");return f.displayName&&Ue.includes("")&&(Ue=Ue.replace("",f.displayName)),Ue}while(1<=E&&0<=_);break}}}finally{an=!1,Error.prepareStackTrace=y}return(y=f?f.displayName||f.name:"")?Ve(y):""}function Qt(f,h){switch(f.tag){case 26:case 27:case 5:return Ve(f.type);case 16:return Ve("Lazy");case 13:return f.child!==h&&h!==null?Ve("Suspense Fallback"):Ve("Suspense");case 19:return Ve("SuspenseList");case 0:case 15:return cn(f.type,!1);case 11:return cn(f.type.render,!1);case 1:return cn(f.type,!0);case 31:return Ve("Activity");default:return""}}function Yr(f){try{var h="",y=null;do h+=Qt(f,y),y=f,f=f.return;while(f);return h}catch(E){return` +Error generating stack: `+E.message+` +`+E.stack}}var er=Object.prototype.hasOwnProperty,ce=e.unstable_scheduleCallback,xe=e.unstable_cancelCallback,Te=e.unstable_shouldYield,Je=e.unstable_requestPaint,Ze=e.unstable_now,Qe=e.unstable_getCurrentPriorityLevel,ge=e.unstable_ImmediatePriority,Be=e.unstable_UserBlockingPriority,it=e.unstable_NormalPriority,Nt=e.unstable_LowPriority,qt=e.unstable_IdlePriority,Zn=e.log,kn=e.unstable_setDisableYieldValue,or=null,Yn=null;function xr(f){if(typeof Zn=="function"&&kn(f),Yn&&typeof Yn.setStrictMode=="function")try{Yn.setStrictMode(or,f)}catch{}}var un=Math.clz32?Math.clz32:lt,wi=Math.log,Tt=Math.LN2;function lt(f){return f>>>=0,f===0?32:31-(wi(f)/Tt|0)|0}var ct=256,kt=262144,jt=4194304;function vt(f){var h=f&42;if(h!==0)return h;switch(f&-f){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return f&261888;case 262144:case 524288:case 1048576:case 2097152:return f&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return f&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return f}}function xt(f,h,y){var E=f.pendingLanes;if(E===0)return 0;var _=0,D=f.suspendedLanes,H=f.pingedLanes;f=f.warmLanes;var J=E&134217727;return J!==0?(E=J&~D,E!==0?_=vt(E):(H&=J,H!==0?_=vt(H):y||(y=J&~f,y!==0&&(_=vt(y))))):(J=E&~D,J!==0?_=vt(J):H!==0?_=vt(H):y||(y=E&~f,y!==0&&(_=vt(y)))),_===0?0:h!==0&&h!==_&&(h&D)===0&&(D=_&-_,y=h&-h,D>=y||D===32&&(y&4194048)!==0)?h:_}function on(f,h){return(f.pendingLanes&~(f.suspendedLanes&~f.pingedLanes)&h)===0}function Gn(f,h){switch(f){case 1:case 2:case 4:case 8:case 64:return h+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return h+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Hn(){var f=jt;return jt<<=1,(jt&62914560)===0&&(jt=4194304),f}function fi(f){for(var h=[],y=0;31>y;y++)h.push(f);return h}function se(f,h){f.pendingLanes|=h,h!==268435456&&(f.suspendedLanes=0,f.pingedLanes=0,f.warmLanes=0)}function ye(f,h,y,E,_,D){var H=f.pendingLanes;f.pendingLanes=y,f.suspendedLanes=0,f.pingedLanes=0,f.warmLanes=0,f.expiredLanes&=y,f.entangledLanes&=y,f.errorRecoveryDisabledLanes&=y,f.shellSuspendCounter=0;var J=f.entanglements,de=f.expirationTimes,Oe=f.hiddenUpdates;for(y=H&~y;0"u")return null;try{return f.activeElement||f.body}catch{return f.body}}var f3=/[\n"\\]/g;function Ia(f){return f.replace(f3,function(h){return"\\"+h.charCodeAt(0).toString(16)+" "})}function vy(f,h,y,E,_,D,H,J){f.name="",H!=null&&typeof H!="function"&&typeof H!="symbol"&&typeof H!="boolean"?f.type=H:f.removeAttribute("type"),h!=null?H==="number"?(h===0&&f.value===""||f.value!=h)&&(f.value=""+Ra(h)):f.value!==""+Ra(h)&&(f.value=""+Ra(h)):H!=="submit"&&H!=="reset"||f.removeAttribute("value"),h!=null?Ax(f,H,Ra(h)):y!=null?Ax(f,H,Ra(y)):E!=null&&f.removeAttribute("value"),_==null&&D!=null&&(f.defaultChecked=!!D),_!=null&&(f.checked=_&&typeof _!="function"&&typeof _!="symbol"),J!=null&&typeof J!="function"&&typeof J!="symbol"&&typeof J!="boolean"?f.name=""+Ra(J):f.removeAttribute("name")}function xy(f,h,y,E,_,D,H,J){if(D!=null&&typeof D!="function"&&typeof D!="symbol"&&typeof D!="boolean"&&(f.type=D),h!=null||y!=null){if(!(D!=="submit"&&D!=="reset"||h!=null)){by(f);return}y=y!=null?""+Ra(y):"",h=h!=null?""+Ra(h):y,J||h===f.value||(f.value=h),f.defaultValue=h}E=E??_,E=typeof E!="function"&&typeof E!="symbol"&&!!E,f.checked=J?f.checked:!!E,f.defaultChecked=!!E,H!=null&&typeof H!="function"&&typeof H!="symbol"&&typeof H!="boolean"&&(f.name=H),by(f)}function Ax(f,h,y){h==="number"&&Mm(f.ownerDocument)===f||f.defaultValue===""+y||(f.defaultValue=""+y)}function qd(f,h,y,E){if(f=f.options,h){h={};for(var _=0;_"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Rx=!1;if(Oc)try{var Rm={};Object.defineProperty(Rm,"passive",{get:function(){Rx=!0}}),window.addEventListener("test",Rm,Rm),window.removeEventListener("test",Rm,Rm)}catch{Rx=!1}var Ou=null,Ix=null,wr=null;function _r(){if(wr)return wr;var f,h=Ix,y=h.length,E,_="value"in Ou?Ou.value:Ou.textContent,D=_.length;for(f=0;f=Kd),Lk=" ",Dy=!1;function Ry(f,h){switch(f){case"keyup":return Pk.indexOf(h.keyCode)!==-1;case"keydown":return h.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function jk(f){return f=f.detail,typeof f=="object"&&"data"in f?f.data:null}var Xd=!1;function ja(f,h){switch(f){case"compositionend":return jk(h);case"keypress":return h.which!==32?null:(Dy=!0,Lk);case"textInput":return f=h.data,f===Lk&&Dy?null:f;default:return null}}function $x(f,h){if(Xd)return f==="compositionend"||!My&&Ry(f,h)?(f=_r(),wr=Ix=Ou=null,Xd=!1,f):null;switch(f){case"paste":return null;case"keypress":if(!(h.ctrlKey||h.altKey||h.metaKey)||h.ctrlKey&&h.altKey){if(h.char&&1=h)return{node:y,offset:h-f};f=E}e:{for(;y;){if(y.nextSibling){y=y.nextSibling;break e}y=y.parentNode}y=void 0}y=$k(y)}}function Fk(f,h){return f&&h?f===h?!0:f&&f.nodeType===3?!1:h&&h.nodeType===3?Fk(f,h.parentNode):"contains"in f?f.contains(h):f.compareDocumentPosition?!!(f.compareDocumentPosition(h)&16):!1:!1}function Uk(f){f=f!=null&&f.ownerDocument!=null&&f.ownerDocument.defaultView!=null?f.ownerDocument.defaultView:window;for(var h=Mm(f.document);h instanceof f.HTMLIFrameElement;){try{var y=typeof h.contentWindow.location.href=="string"}catch{y=!1}if(y)f=h.contentWindow;else break;h=Mm(f.document)}return h}function qx(f){var h=f&&f.nodeName&&f.nodeName.toLowerCase();return h&&(h==="input"&&(f.type==="text"||f.type==="search"||f.type==="tel"||f.type==="url"||f.type==="password")||h==="textarea"||f.contentEditable==="true")}var xh=Oc&&"documentMode"in document&&11>=document.documentMode,be=null,Fe=null,Pe=null,yt=!1;function sn(f,h,y){var E=y.window===y?y.document:y.nodeType===9?y:y.ownerDocument;yt||be==null||be!==Mm(E)||(E=be,"selectionStart"in E&&qx(E)?E={start:E.selectionStart,end:E.selectionEnd}:(E=(E.ownerDocument&&E.ownerDocument.defaultView||window).getSelection(),E={anchorNode:E.anchorNode,anchorOffset:E.anchorOffset,focusNode:E.focusNode,focusOffset:E.focusOffset}),Pe&&vh(Pe,E)||(Pe=E,E=Mg(Fe,"onSelect"),0>=H,_-=H,Ul=1<<32-un(h)+_|y<<_|E,vs=D+f}else Ul=1<bn?(Pn=Dt,Dt=null):Pn=Dt.sibling;var nr=De(Se,Dt,Ne[bn],qe);if(nr===null){Dt===null&&(Dt=Pn);break}f&&Dt&&nr.alternate===null&&h(Se,Dt),pe=D(nr,pe,bn),tr===null?Ft=nr:tr.sibling=nr,tr=nr,Dt=Pn}if(bn===Ne.length)return y(Se,Dt),Fn&&Ha(Se,bn),Ft;if(Dt===null){for(;bnbn?(Pn=Dt,Dt=null):Pn=Dt.sibling;var od=De(Se,Dt,nr.value,qe);if(od===null){Dt===null&&(Dt=Pn);break}f&&Dt&&od.alternate===null&&h(Se,Dt),pe=D(od,pe,bn),tr===null?Ft=od:tr.sibling=od,tr=od,Dt=Pn}if(nr.done)return y(Se,Dt),Fn&&Ha(Se,bn),Ft;if(Dt===null){for(;!nr.done;bn++,nr=Ne.next())nr=We(Se,nr.value,qe),nr!==null&&(pe=D(nr,pe,bn),tr===null?Ft=nr:tr.sibling=nr,tr=nr);return Fn&&Ha(Se,bn),Ft}for(Dt=E(Dt);!nr.done;bn++,nr=Ne.next())nr=Le(Dt,Se,bn,nr.value,qe),nr!==null&&(f&&nr.alternate!==null&&Dt.delete(nr.key===null?bn:nr.key),pe=D(nr,pe,bn),tr===null?Ft=nr:tr.sibling=nr,tr=nr);return f&&Dt.forEach(function(fI){return h(Se,fI)}),Fn&&Ha(Se,bn),Ft}function Cr(Se,pe,Ne,qe){if(typeof Ne=="object"&&Ne!==null&&Ne.type===x&&Ne.key===null&&(Ne=Ne.props.children),typeof Ne=="object"&&Ne!==null){switch(Ne.$$typeof){case m:e:{for(var Ft=Ne.key;pe!==null;){if(pe.key===Ft){if(Ft=Ne.type,Ft===x){if(pe.tag===7){y(Se,pe.sibling),qe=_(pe,Ne.props.children),qe.return=Se,Se=qe;break e}}else if(pe.elementType===Ft||typeof Ft=="object"&&Ft!==null&&Ft.$$typeof===L&&tl(Ft)===pe.type){y(Se,pe.sibling),qe=_(pe,Ne.props),nl(qe,Ne),qe.return=Se,Se=qe;break e}y(Se,pe);break}else h(Se,pe);pe=pe.sibling}Ne.type===x?(qe=ef(Ne.props.children,Se.mode,qe,Ne.key),qe.return=Se,Se=qe):(qe=zy(Ne.type,Ne.key,Ne.props,null,Se.mode,qe),nl(qe,Ne),qe.return=Se,Se=qe)}return H(Se);case v:e:{for(Ft=Ne.key;pe!==null;){if(pe.key===Ft)if(pe.tag===4&&pe.stateNode.containerInfo===Ne.containerInfo&&pe.stateNode.implementation===Ne.implementation){y(Se,pe.sibling),qe=_(pe,Ne.children||[]),qe.return=Se,Se=qe;break e}else{y(Se,pe);break}else h(Se,pe);pe=pe.sibling}qe=zm(Ne,Se.mode,qe),qe.return=Se,Se=qe}return H(Se);case L:return Ne=tl(Ne),Cr(Se,pe,Ne,qe)}if(X(Ne))return wt(Se,pe,Ne,qe);if(V(Ne)){if(Ft=V(Ne),typeof Ft!="function")throw Error(r(150));return Ne=Ft.call(Ne),Yt(Se,pe,Ne,qe)}if(typeof Ne.then=="function")return Cr(Se,pe,Ih(Ne),qe);if(Ne.$$typeof===N)return Cr(Se,pe,ws(Se,Ne),qe);zo(Se,Ne)}return typeof Ne=="string"&&Ne!==""||typeof Ne=="number"||typeof Ne=="bigint"?(Ne=""+Ne,pe!==null&&pe.tag===6?(y(Se,pe.sibling),qe=_(pe,Ne),qe.return=Se,Se=qe):(y(Se,pe),qe=Ch(Ne,Se.mode,qe),qe.return=Se,Se=qe),H(Se)):y(Se,pe)}return function(Se,pe,Ne,qe){try{Fa=0;var Ft=Cr(Se,pe,Ne,qe);return Rh=null,Ft}catch(Dt){if(Dt===Dh||Dt===Ym)throw Dt;var tr=go(29,Dt,null,Se.mode);return tr.lanes=qe,tr.return=Se,tr}finally{}}}var $u=Jk(!0),Qx=Jk(!1),Ss=!1;function Vl(f){f.updateQueue={baseState:f.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Xy(f,h){f=f.updateQueue,h.updateQueue===f&&(h.updateQueue={baseState:f.baseState,firstBaseUpdate:f.firstBaseUpdate,lastBaseUpdate:f.lastBaseUpdate,shared:f.shared,callbacks:null})}function Hu(f){return{lane:f,tag:0,payload:null,callback:null,next:null}}function rl(f,h,y){var E=f.updateQueue;if(E===null)return null;if(E=E.shared,(sr&2)!==0){var _=E.pending;return _===null?h.next=h:(h.next=_.next,_.next=h),E.pending=h,h=Fm(f),Wx(f,null,y),h}return Jd(f,E,h,y),Fm(f)}function Gm(f,h,y){if(h=h.updateQueue,h!==null&&(h=h.shared,(y&4194048)!==0)){var E=h.lanes;E&=f.pendingLanes,y|=E,h.lanes=y,Xe(f,y)}}function Zy(f,h){var y=f.updateQueue,E=f.alternate;if(E!==null&&(E=E.updateQueue,y===E)){var _=null,D=null;if(y=y.firstBaseUpdate,y!==null){do{var H={lane:y.lane,tag:y.tag,payload:y.payload,callback:null,next:null};D===null?_=D=H:D=D.next=H,y=y.next}while(y!==null);D===null?_=D=h:D=D.next=h}else _=D=h;y={baseState:E.baseState,firstBaseUpdate:_,lastBaseUpdate:D,shared:E.shared,callbacks:E.callbacks},f.updateQueue=y;return}f=y.lastBaseUpdate,f===null?y.firstBaseUpdate=h:f.next=h,y.lastBaseUpdate=h}var Fi=!1;function sf(){if(Fi){var f=Mh;if(f!==null)throw f}}function Ph(f,h,y,E){Fi=!1;var _=f.updateQueue;Ss=!1;var D=_.firstBaseUpdate,H=_.lastBaseUpdate,J=_.shared.pending;if(J!==null){_.shared.pending=null;var de=J,Oe=de.next;de.next=null,H===null?D=Oe:H.next=Oe,H=de;var Ue=f.alternate;Ue!==null&&(Ue=Ue.updateQueue,J=Ue.lastBaseUpdate,J!==H&&(J===null?Ue.firstBaseUpdate=Oe:J.next=Oe,Ue.lastBaseUpdate=de))}if(D!==null){var We=_.baseState;H=0,Ue=Oe=de=null,J=D;do{var De=J.lane&-536870913,Le=De!==J.lane;if(Le?(In&De)===De:(E&De)===De){De!==0&&De===Oh&&(Fi=!0),Ue!==null&&(Ue=Ue.next={lane:0,tag:J.tag,payload:J.payload,callback:null,next:null});e:{var wt=f,Yt=J;De=h;var Cr=y;switch(Yt.tag){case 1:if(wt=Yt.payload,typeof wt=="function"){We=wt.call(Cr,We,De);break e}We=wt;break e;case 3:wt.flags=wt.flags&-65537|128;case 0:if(wt=Yt.payload,De=typeof wt=="function"?wt.call(Cr,We,De):wt,De==null)break e;We=u({},We,De);break e;case 2:Ss=!0}}De=J.callback,De!==null&&(f.flags|=64,Le&&(f.flags|=8192),Le=_.callbacks,Le===null?_.callbacks=[De]:Le.push(De))}else Le={lane:De,tag:J.tag,payload:J.payload,callback:J.callback,next:null},Ue===null?(Oe=Ue=Le,de=We):Ue=Ue.next=Le,H|=De;if(J=J.next,J===null){if(J=_.shared.pending,J===null)break;Le=J,J=Le.next,Le.next=null,_.lastBaseUpdate=Le,_.shared.pending=null}}while(!0);Ue===null&&(de=We),_.baseState=de,_.firstBaseUpdate=Oe,_.lastBaseUpdate=Ue,D===null&&(_.shared.lanes=0),Gu|=H,f.lanes=H,f.memoizedState=We}}function il(f,h){if(typeof f!="function")throw Error(r(191,f));f.call(h)}function Qy(f,h){var y=f.callbacks;if(y!==null)for(f.callbacks=null,f=0;fD?D:8;var H=q.T,J={};q.T=J,Vh(f,!1,h,y);try{var de=_(),Oe=q.S;if(Oe!==null&&Oe(J,de),de!==null&&typeof de=="object"&&typeof de.then=="function"){var Ue=_3(de,E);zh(f,h,Ue,Ga(f))}else zh(f,h,E,Ga(f))}catch(We){zh(f,h,{then:function(){},status:"rejected",reason:We},Ga())}finally{ne.p=D,H!==null&&J.types!==null&&(H.types=J.types),q.T=H}}function cb(){}function zu(f,h,y,E){if(f.tag!==5)throw Error(r(476));var _=mw(f).queue;u2(f,_,h,Z,y===null?cb:function(){return gw(f),y(E)})}function mw(f){var h=f.memoizedState;if(h!==null)return h;h={memoizedState:Z,baseState:Z,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ol,lastRenderedState:Z},next:null};var y={};return h.next={memoizedState:y,baseState:y,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ol,lastRenderedState:y},next:null},f.memoizedState=h,f=f.alternate,f!==null&&(f.memoizedState=h),h}function gw(f){var h=mw(f);h.next===null&&(h=f.alternate.memoizedState),zh(f,h.next.queue,{},Ga())}function yw(){return yo(ap)}function bw(){return Ci().memoizedState}function cf(){return Ci().memoizedState}function rg(f){for(var h=f.return;h!==null;){switch(h.tag){case 24:case 3:var y=Ga();f=Hu(y);var E=rl(h,f,y);E!==null&&(da(E,h,y),Gm(E,h,y)),h={cache:el()},f.payload=h;return}h=h.return}}function M3(f,h,y){var E=Ga();y={lane:E,revertLane:0,gesture:null,action:y,hasEagerState:!1,eagerState:null,next:null},ig(f)?og(h,y):(y=Uy(f,h,y,E),y!==null&&(da(y,f,E),ub(y,h,E)))}function vw(f,h,y){var E=Ga();zh(f,h,y,E)}function zh(f,h,y,E){var _={lane:E,revertLane:0,gesture:null,action:y,hasEagerState:!1,eagerState:null,next:null};if(ig(f))og(h,_);else{var D=f.alternate;if(f.lanes===0&&(D===null||D.lanes===0)&&(D=h.lastRenderedReducer,D!==null))try{var H=h.lastRenderedState,J=D(H,y);if(_.hasEagerState=!0,_.eagerState=J,ai(J,H))return Jd(f,h,_,0),Nr===null&&Js(),!1}catch{}finally{}if(y=Uy(f,h,_,E),y!==null)return da(y,f,E),ub(y,h,E),!0}return!1}function Vh(f,h,y,E){if(E={lane:2,revertLane:Ka(),gesture:null,action:E,hasEagerState:!1,eagerState:null,next:null},ig(f)){if(h)throw Error(r(479))}else h=Uy(f,y,E,2),h!==null&&da(h,f,2)}function ig(f){var h=f.alternate;return f===fn||h!==null&&h===fn}function og(f,h){Lh=Zm=!0;var y=f.pending;y===null?h.next=h:(h.next=y.next,y.next=h),f.pending=h}function ub(f,h,y){if((y&4194048)!==0){var E=h.lanes;E&=f.pendingLanes,y|=E,h.lanes=y,Xe(f,y)}}var Vu={readContext:yo,use:Hh,useCallback:Zr,useContext:Zr,useEffect:Zr,useImperativeHandle:Zr,useLayoutEffect:Zr,useInsertionEffect:Zr,useMemo:Zr,useReducer:Zr,useRef:Zr,useState:Zr,useDebugValue:Zr,useDeferredValue:Zr,useTransition:Zr,useSyncExternalStore:Zr,useId:Zr,useHostTransitionStatus:Zr,useFormState:Zr,useActionState:Zr,useOptimistic:Zr,useMemoCache:Zr,useCacheRefresh:Zr};Vu.useEffectEvent=Zr;var d2={readContext:yo,use:Hh,useCallback:function(f,h){return Mo().memoizedState=[f,h===void 0?null:h],f},useContext:yo,useEffect:dw,useImperativeHandle:function(f,h,y){y=y!=null?y.concat([f]):null,al(4194308,4,hw.bind(null,h,f),y)},useLayoutEffect:function(f,h){return al(4194308,4,f,h)},useInsertionEffect:function(f,h){al(4,2,f,h)},useMemo:function(f,h){var y=Mo();h=h===void 0?null:h;var E=f();if(lf){xr(!0);try{f()}finally{xr(!1)}}return y.memoizedState=[E,h],E},useReducer:function(f,h,y){var E=Mo();if(y!==void 0){var _=y(h);if(lf){xr(!0);try{y(h)}finally{xr(!1)}}}else _=h;return E.memoizedState=E.baseState=_,f={pending:null,lanes:0,dispatch:null,lastRenderedReducer:f,lastRenderedState:_},E.queue=f,f=f.dispatch=M3.bind(null,fn,f),[E.memoizedState,f]},useRef:function(f){var h=Mo();return f={current:f},h.memoizedState=f},useState:function(f){f=Uh(f);var h=f.queue,y=vw.bind(null,fn,h);return h.dispatch=y,[f.memoizedState,y]},useDebugValue:lb,useDeferredValue:function(f,h){var y=Mo();return ks(y,f,h)},useTransition:function(){var f=Uh(!1);return f=u2.bind(null,fn,f.queue,!0,!1),Mo().memoizedState=f,[!1,f]},useSyncExternalStore:function(f,h,y){var E=fn,_=Mo();if(Fn){if(y===void 0)throw Error(r(407));y=y()}else{if(y=h(),Nr===null)throw Error(r(349));(In&127)!==0||ow(E,h,y)}_.memoizedState=y;var D={value:y,getSnapshot:h};return _.queue=D,dw(n2.bind(null,E,D,f),[f]),E.flags|=2048,qa(9,{destroy:void 0},t2.bind(null,E,D,y,h),null),y},useId:function(){var f=Mo(),h=Nr.identifierPrefix;if(Fn){var y=vs,E=Ul;y=(E&~(1<<32-un(E)-1)).toString(32)+y,h="_"+h+"R_"+y,y=eb++,0<\/script>",D=D.removeChild(D.firstChild);break;case"select":D=typeof E.is=="string"?H.createElement("select",{is:E.is}):H.createElement("select"),E.multiple?D.multiple=!0:E.size&&(D.size=E.size);break;default:D=typeof E.is=="string"?H.createElement(_,{is:E.is}):H.createElement(_)}}D[ft]=h,D[mt]=E;e:for(H=h.child;H!==null;){if(H.tag===5||H.tag===6)D.appendChild(H.stateNode);else if(H.tag!==4&&H.tag!==27&&H.child!==null){H.child.return=H,H=H.child;continue}if(H===h)break e;for(;H.sibling===null;){if(H.return===null||H.return===h)break e;H=H.return}H.sibling.return=H.return,H=H.sibling}h.stateNode=D;e:switch(xo(D,_,E),_){case"button":case"input":case"select":case"textarea":E=!!E.autoFocus;break e;case"img":E=!0;break e;default:E=!1}E&&Hc(h)}}return Ar(h),Nw(h,h.type,f===null?null:f.memoizedProps,h.pendingProps,y),null;case 6:if(f&&h.stateNode!=null)f.memoizedProps!==E&&Hc(h);else{if(typeof E!="string"&&h.stateNode===null)throw Error(r(166));if(f=ke.current,nf(h)){if(f=h.stateNode,y=h.memoizedProps,E=null,_=Mi,_!==null)switch(_.tag){case 27:case 5:E=_.memoizedProps}f[ft]=h,f=!!(f.nodeValue===y||E!==null&&E.suppressHydrationWarning===!0||e_(f.nodeValue,y)),f||Pu(h,!0)}else f=Ig(f).createTextNode(E),f[ft]=h,h.stateNode=f}return Ar(h),null;case 31:if(y=h.memoizedState,f===null||f.memoizedState!==null){if(E=nf(h),y!==null){if(f===null){if(!E)throw Error(r(318));if(f=h.memoizedState,f=f!==null?f.dehydrated:null,!f)throw Error(r(557));f[ft]=h}else ee(),(h.flags&128)===0&&(h.memoizedState=null),h.flags|=4;Ar(h),f=!1}else y=Lu(),f!==null&&f.memoizedState!==null&&(f.memoizedState.hydrationErrors=y),f=!0;if(!f)return h.flags&256?(oa(h),h):(oa(h),null);if((h.flags&128)!==0)throw Error(r(558))}return Ar(h),null;case 13:if(E=h.memoizedState,f===null||f.memoizedState!==null&&f.memoizedState.dehydrated!==null){if(_=nf(h),E!==null&&E.dehydrated!==null){if(f===null){if(!_)throw Error(r(318));if(_=h.memoizedState,_=_!==null?_.dehydrated:null,!_)throw Error(r(317));_[ft]=h}else ee(),(h.flags&128)===0&&(h.memoizedState=null),h.flags|=4;Ar(h),_=!1}else _=Lu(),f!==null&&f.memoizedState!==null&&(f.memoizedState.hydrationErrors=_),_=!0;if(!_)return h.flags&256?(oa(h),h):(oa(h),null)}return oa(h),(h.flags&128)!==0?(h.lanes=y,h):(y=E!==null,f=f!==null&&f.memoizedState!==null,y&&(E=h.child,_=null,E.alternate!==null&&E.alternate.memoizedState!==null&&E.alternate.memoizedState.cachePool!==null&&(_=E.alternate.memoizedState.cachePool.pool),D=null,E.memoizedState!==null&&E.memoizedState.cachePool!==null&&(D=E.memoizedState.cachePool.pool),D!==_&&(E.flags|=2048)),y!==f&&y&&(h.child.flags|=8192),mg(h,h.updateQueue),Ar(h),null);case 4:return we(),f===null&&iE(h.stateNode.containerInfo),Ar(h),null;case 10:return Lc(h.type),Ar(h),null;case 19:if(te(Si),E=h.memoizedState,E===null)return Ar(h),null;if(_=(h.flags&128)!==0,D=E.rendering,D===null)if(_)gg(E,!1);else{if(li!==0||f!==null&&(f.flags&128)!==0)for(f=h.child;f!==null;){if(D=Jy(f),D!==null){for(h.flags|=128,gg(E,!1),f=D.updateQueue,h.updateQueue=f,mg(h,f),h.subtreeFlags=0,f=y,y=h.child;y!==null;)Wk(y,f),y=y.sibling;return z(Si,Si.current&1|2),Fn&&Ha(h,E.treeForkCount),h.child}f=f.sibling}E.tail!==null&&Ze()>ff&&(h.flags|=128,_=!0,gg(E,!1),h.lanes=4194304)}else{if(!_)if(f=Jy(D),f!==null){if(h.flags|=128,_=!0,f=f.updateQueue,h.updateQueue=f,mg(h,f),gg(E,!0),E.tail===null&&E.tailMode==="hidden"&&!D.alternate&&!Fn)return Ar(h),null}else 2*Ze()-E.renderingStartTime>ff&&y!==536870912&&(h.flags|=128,_=!0,gg(E,!1),h.lanes=4194304);E.isBackwards?(D.sibling=h.child,h.child=D):(f=E.last,f!==null?f.sibling=D:h.child=D,E.last=D)}return E.tail!==null?(f=E.tail,E.rendering=f,E.tail=f.sibling,E.renderingStartTime=Ze(),f.sibling=null,y=Si.current,z(Si,_?y&1|2:y&1),Fn&&Ha(h,E.treeForkCount),f):(Ar(h),null);case 22:case 23:return oa(h),Km(),E=h.memoizedState!==null,f!==null?f.memoizedState!==null!==E&&(h.flags|=8192):E&&(h.flags|=8192),E?(y&536870912)!==0&&(h.flags&128)===0&&(Ar(h),h.subtreeFlags&6&&(h.flags|=8192)):Ar(h),y=h.updateQueue,y!==null&&mg(h,y.retryQueue),y=null,f!==null&&f.memoizedState!==null&&f.memoizedState.cachePool!==null&&(y=f.memoizedState.cachePool.pool),E=null,h.memoizedState!==null&&h.memoizedState.cachePool!==null&&(E=h.memoizedState.cachePool.pool),E!==y&&(h.flags|=2048),f!==null&&te(af),null;case 24:return y=null,f!==null&&(y=f.memoizedState.cache),h.memoizedState.cache!==y&&(h.flags|=2048),Lc(Di),Ar(h),null;case 25:return null;case 30:return null}throw Error(r(156,h.tag))}function yg(f,h){switch(tf(h),h.tag){case 1:return f=h.flags,f&65536?(h.flags=f&-65537|128,h):null;case 3:return Lc(Di),we(),f=h.flags,(f&65536)!==0&&(f&128)===0?(h.flags=f&-65537|128,h):null;case 26:case 27:case 5:return Ke(h),null;case 31:if(h.memoizedState!==null){if(oa(h),h.alternate===null)throw Error(r(340));ee()}return f=h.flags,f&65536?(h.flags=f&-65537|128,h):null;case 13:if(oa(h),f=h.memoizedState,f!==null&&f.dehydrated!==null){if(h.alternate===null)throw Error(r(340));ee()}return f=h.flags,f&65536?(h.flags=f&-65537|128,h):null;case 19:return te(Si),null;case 4:return we(),null;case 10:return Lc(h.type),null;case 22:case 23:return oa(h),Km(),f!==null&&te(af),f=h.flags,f&65536?(h.flags=f&-65537|128,h):null;case 24:return Lc(Di),null;case 25:return null;default:return null}}function xb(f,h){switch(tf(h),h.tag){case 3:Lc(Di),we();break;case 26:case 27:case 5:Ke(h);break;case 4:we();break;case 31:h.memoizedState!==null&&oa(h);break;case 13:oa(h);break;case 19:te(Si);break;case 10:Lc(h.type);break;case 22:case 23:oa(h),Km(),f!==null&&te(af);break;case 24:Lc(Di)}}function Wh(f,h){try{var y=h.updateQueue,E=y!==null?y.lastEffect:null;if(E!==null){var _=E.next;y=_;do{if((y.tag&f)===f){E=void 0;var D=y.create,H=y.inst;E=D(),H.destroy=E}y=y.next}while(y!==_)}}catch(J){br(h,h.return,J)}}function Fc(f,h,y){try{var E=h.updateQueue,_=E!==null?E.lastEffect:null;if(_!==null){var D=_.next;E=D;do{if((E.tag&f)===f){var H=E.inst,J=H.destroy;if(J!==void 0){H.destroy=void 0,_=h;var de=y,Oe=J;try{Oe()}catch(Ue){br(_,de,Ue)}}}E=E.next}while(E!==D)}}catch(Ue){br(h,h.return,Ue)}}function bg(f){var h=f.updateQueue;if(h!==null){var y=f.stateNode;try{Qy(h,y)}catch(E){br(f,f.return,E)}}}function Mw(f,h,y){y.props=qo(f.type,f.memoizedProps),y.state=f.memoizedState;try{y.componentWillUnmount()}catch(E){br(f,h,E)}}function sa(f,h){try{var y=f.ref;if(y!==null){switch(f.tag){case 26:case 27:case 5:var E=f.stateNode;break;case 30:E=f.stateNode;break;default:E=f.stateNode}typeof y=="function"?f.refCleanup=y(E):y.current=E}}catch(_){br(f,h,_)}}function Ro(f,h){var y=f.ref,E=f.refCleanup;if(y!==null)if(typeof E=="function")try{E()}catch(_){br(f,h,_)}finally{f.refCleanup=null,f=f.alternate,f!=null&&(f.refCleanup=null)}else if(typeof y=="function")try{y(null)}catch(_){br(f,h,_)}else y.current=null}function x2(f){var h=f.type,y=f.memoizedProps,E=f.stateNode;try{e:switch(h){case"button":case"input":case"select":case"textarea":y.autoFocus&&E.focus();break e;case"img":y.src?E.src=y.src:y.srcSet&&(E.srcset=y.srcSet)}}catch(_){br(f,f.return,_)}}function wb(f,h,y){try{var E=f.stateNode;W3(E,f.type,y,h),E[mt]=h}catch(_){br(f,f.return,_)}}function w2(f){return f.tag===5||f.tag===3||f.tag===26||f.tag===27&&Jt(f.type)||f.tag===4}function Dw(f){e:for(;;){for(;f.sibling===null;){if(f.return===null||w2(f.return))return null;f=f.return}for(f.sibling.return=f.return,f=f.sibling;f.tag!==5&&f.tag!==6&&f.tag!==18;){if(f.tag===27&&Jt(f.type)||f.flags&2||f.child===null||f.tag===4)continue e;f.child.return=f,f=f.child}if(!(f.flags&2))return f.stateNode}}function Rw(f,h,y){var E=f.tag;if(E===5||E===6)f=f.stateNode,h?(y.nodeType===9?y.body:y.nodeName==="HTML"?y.ownerDocument.body:y).insertBefore(f,h):(h=y.nodeType===9?y.body:y.nodeName==="HTML"?y.ownerDocument.body:y,h.appendChild(f),y=y._reactRootContainer,y!=null||h.onclick!==null||(h.onclick=Nc));else if(E!==4&&(E===27&&Jt(f.type)&&(y=f.stateNode,h=null),f=f.child,f!==null))for(Rw(f,h,y),f=f.sibling;f!==null;)Rw(f,h,y),f=f.sibling}function Eb(f,h,y){var E=f.tag;if(E===5||E===6)f=f.stateNode,h?y.insertBefore(f,h):y.appendChild(f);else if(E!==4&&(E===27&&Jt(f.type)&&(y=f.stateNode),f=f.child,f!==null))for(Eb(f,h,y),f=f.sibling;f!==null;)Eb(f,h,y),f=f.sibling}function E2(f){var h=f.stateNode,y=f.memoizedProps;try{for(var E=f.type,_=h.attributes;_.length;)h.removeAttributeNode(_[0]);xo(h,E,y),h[ft]=f,h[mt]=y}catch(D){br(f,f.return,D)}}var Uc=!1,Ri=!1,Iw=!1,S2=typeof WeakSet=="function"?WeakSet:Set,Qi=null;function I3(f,h){if(f=f.containerInfo,Rg=zb,f=Uk(f),qx(f)){if("selectionStart"in f)var y={start:f.selectionStart,end:f.selectionEnd};else e:{y=(y=f.ownerDocument)&&y.defaultView||window;var E=y.getSelection&&y.getSelection();if(E&&E.rangeCount!==0){y=E.anchorNode;var _=E.anchorOffset,D=E.focusNode;E=E.focusOffset;try{y.nodeType,D.nodeType}catch{y=null;break e}var H=0,J=-1,de=-1,Oe=0,Ue=0,We=f,De=null;t:for(;;){for(var Le;We!==y||_!==0&&We.nodeType!==3||(J=H+_),We!==D||E!==0&&We.nodeType!==3||(de=H+E),We.nodeType===3&&(H+=We.nodeValue.length),(Le=We.firstChild)!==null;)De=We,We=Le;for(;;){if(We===f)break t;if(De===y&&++Oe===_&&(J=H),De===D&&++Ue===E&&(de=H),(Le=We.nextSibling)!==null)break;We=De,De=We.parentNode}We=Le}y=J===-1||de===-1?null:{start:J,end:de}}else y=null}y=y||{start:0,end:0}}else y=null;for(lE={focusedElem:f,selectionRange:y},zb=!1,Qi=h;Qi!==null;)if(h=Qi,f=h.child,(h.subtreeFlags&1028)!==0&&f!==null)f.return=h,Qi=f;else for(;Qi!==null;){switch(h=Qi,D=h.alternate,f=h.flags,h.tag){case 0:if((f&4)!==0&&(f=h.updateQueue,f=f!==null?f.events:null,f!==null))for(y=0;y title"))),xo(D,E,y),D[ft]=f,Gr(D),E=D;break e;case"link":var H=h_("link","href",_).get(E+(y.href||""));if(H){for(var J=0;JCr&&(H=Cr,Cr=Yt,Yt=H);var Se=Hk(J,Yt),pe=Hk(J,Cr);if(Se&&pe&&(Le.rangeCount!==1||Le.anchorNode!==Se.node||Le.anchorOffset!==Se.offset||Le.focusNode!==pe.node||Le.focusOffset!==pe.offset)){var Ne=We.createRange();Ne.setStart(Se.node,Se.offset),Le.removeAllRanges(),Yt>Cr?(Le.addRange(Ne),Le.extend(pe.node,pe.offset)):(Ne.setEnd(pe.node,pe.offset),Le.addRange(Ne))}}}}for(We=[],Le=J;Le=Le.parentNode;)Le.nodeType===1&&We.push({element:Le,left:Le.scrollLeft,top:Le.scrollTop});for(typeof J.focus=="function"&&J.focus(),J=0;Jy?32:y,q.T=null,y=Vw,Vw=null;var D=Xu,H=qc;if(Ui=0,Xh=Xu=null,qc=0,(sr&6)!==0)throw Error(r(331));var J=sr;if(sr|=4,M2(D.current),A2(D,D.current,H,y),sr=J,Ng(0,!1),Yn&&typeof Yn.onPostCommitFiberRoot=="function")try{Yn.onPostCommitFiberRoot(or,D)}catch{}return!0}finally{ne.p=_,q.T=E,Xw(f,h)}}function Qw(f,h,y){h=$a(y,h),h=Sw(f.stateNode,h,2),f=rl(f,h,2),f!==null&&(se(f,2),Kl(f))}function br(f,h,y){if(f.tag===3)Qw(f,f,y);else for(;h!==null;){if(h.tag===3){Qw(h,f,y);break}else if(h.tag===1){var E=h.stateNode;if(typeof h.type.getDerivedStateFromError=="function"||typeof E.componentDidCatch=="function"&&(Ku===null||!Ku.has(E))){f=$a(y,f),y=Wl(2),E=rl(h,y,2),E!==null&&(hb(y,E,h,f),se(E,2),Kl(E));break}}h=h.return}}function Jw(f,h,y){var E=f.pingCache;if(E===null){E=f.pingCache=new j3;var _=new Set;E.set(h,_)}else _=E.get(h),_===void 0&&(_=new Set,E.set(h,_));_.has(y)||(Hw=!0,_.add(y),f=F3.bind(null,f,h,y),h.then(f,f))}function F3(f,h,y){var E=f.pingCache;E!==null&&E.delete(h),f.pingedLanes|=f.suspendedLanes&y,f.warmLanes&=~y,Nr===f&&(In&y)===y&&(li===4||li===3&&(In&62914560)===In&&300>Ze()-Sg?(sr&2)===0&&Zh(f,0):Fw|=y,Kh===In&&(Kh=0)),Kl(f)}function Ag(f,h){h===0&&(h=Hn()),f=Fl(f,h),f!==null&&(se(f,h),Kl(f))}function Ob(f){var h=f.memoizedState,y=0;h!==null&&(y=h.retryLane),Ag(f,y)}function U3(f,h){var y=0;switch(f.tag){case 31:case 13:var E=f.stateNode,_=f.memoizedState;_!==null&&(y=_.retryLane);break;case 19:E=f.stateNode;break;case 22:E=f.stateNode._retryCache;break;default:throw Error(r(314))}E!==null&&E.delete(h),Ag(f,y)}function z3(f,h){return ce(f,h)}var Jh=null,hf=null,eE=!1,Mb=!1,tE=!1,Zu=0;function Kl(f){f!==hf&&f.next===null&&(hf===null?Jh=hf=f:hf=hf.next=f),Mb=!0,eE||(eE=!0,q3())}function Ng(f,h){if(!tE&&Mb){tE=!0;do for(var y=!1,E=Jh;E!==null;){if(f!==0){var _=E.pendingLanes;if(_===0)var D=0;else{var H=E.suspendedLanes,J=E.pingedLanes;D=(1<<31-un(42|f)+1)-1,D&=_&~(H&~J),D=D&201326741?D&201326741|1:D?D|2:0}D!==0&&(y=!0,G2(E,D))}else D=In,D=xt(E,E===Nr?D:0,E.cancelPendingCommit!==null||E.timeoutHandle!==-1),(D&3)===0||on(E,D)||(y=!0,G2(E,D));E=E.next}while(y);tE=!1}}function V3(){q2()}function q2(){Mb=eE=!1;var f=0;Zu!==0&&Y3()&&(f=Zu);for(var h=Ze(),y=null,E=Jh;E!==null;){var _=E.next,D=W2(E,h);D===0?(E.next=null,y===null?Jh=_:y.next=_,_===null&&(hf=y)):(y=E,(f!==0||(D&3)!==0)&&(Mb=!0)),E=_}Ui!==0&&Ui!==5||Ng(f),Zu!==0&&(Zu=0)}function W2(f,h){for(var y=f.suspendedLanes,E=f.pingedLanes,_=f.expirationTimes,D=f.pendingLanes&-62914561;0J)break;var Ue=de.transferSize,We=de.initiatorType;Ue&&sE(We)&&(de=de.responseEnd,H+=Ue*(de"u"?null:document;function c_(f,h,y){var E=ed;if(E&&typeof h=="string"&&h){var _=Ia(h);_='link[rel="'+f+'"][href="'+_+'"]',typeof y=="string"&&(_+='[crossorigin="'+y+'"]'),l_.has(_)||(l_.add(_),f={rel:f,crossOrigin:y,href:h},E.querySelector(_)===null&&(h=E.createElement("link"),xo(h,"link",f),Gr(h),E.head.appendChild(h)))}}function fE(f){Gc.D(f),c_("dns-prefetch",f,null)}function J3(f,h){Gc.C(f,h),c_("preconnect",f,h)}function eI(f,h,y){Gc.L(f,h,y);var E=ed;if(E&&f&&h){var _='link[rel="preload"][as="'+Ia(h)+'"]';h==="image"&&y&&y.imageSrcSet?(_+='[imagesrcset="'+Ia(y.imageSrcSet)+'"]',typeof y.imageSizes=="string"&&(_+='[imagesizes="'+Ia(y.imageSizes)+'"]')):_+='[href="'+Ia(f)+'"]';var D=_;switch(h){case"style":D=tp(f);break;case"script":D=rp(f)}As.has(D)||(f=u({rel:"preload",href:h==="image"&&y&&y.imageSrcSet?void 0:f,as:h},y),As.set(D,f),E.querySelector(_)!==null||h==="style"&&E.querySelector(np(D))||h==="script"&&E.querySelector(ip(D))||(h=E.createElement("link"),xo(h,"link",f),Gr(h),E.head.appendChild(h)))}}function tI(f,h){Gc.m(f,h);var y=ed;if(y&&f){var E=h&&typeof h.as=="string"?h.as:"script",_='link[rel="modulepreload"][as="'+Ia(E)+'"][href="'+Ia(f)+'"]',D=_;switch(E){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":D=rp(f)}if(!As.has(D)&&(f=u({rel:"modulepreload",href:f},h),As.set(D,f),y.querySelector(_)===null)){switch(E){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(y.querySelector(ip(D)))return}E=y.createElement("link"),xo(E,"link",f),Gr(E),y.head.appendChild(E)}}}function Ji(f,h,y){Gc.S(f,h,y);var E=ed;if(E&&f){var _=Ma(E).hoistableStyles,D=tp(f);h=h||"default";var H=_.get(D);if(!H){var J={loading:0,preload:null};if(H=E.querySelector(np(D)))J.loading=5;else{f=u({rel:"stylesheet",href:f,"data-precedence":h},y),(y=As.get(D))&&hE(f,y);var de=H=E.createElement("link");Gr(de),xo(de,"link",f),de._p=new Promise(function(Oe,Ue){de.onload=Oe,de.onerror=Ue}),de.addEventListener("load",function(){J.loading|=1}),de.addEventListener("error",function(){J.loading|=2}),J.loading|=4,Bb(H,h,E)}H={type:"stylesheet",instance:H,count:1,state:J},_.set(D,H)}}}function pa(f,h){Gc.X(f,h);var y=ed;if(y&&f){var E=Ma(y).hoistableScripts,_=rp(f),D=E.get(_);D||(D=y.querySelector(ip(_)),D||(f=u({src:f,async:!0},h),(h=As.get(_))&&$b(f,h),D=y.createElement("script"),Gr(D),xo(D,"link",f),y.head.appendChild(D)),D={type:"script",instance:D,count:1,state:null},E.set(_,D))}}function nI(f,h){Gc.M(f,h);var y=ed;if(y&&f){var E=Ma(y).hoistableScripts,_=rp(f),D=E.get(_);D||(D=y.querySelector(ip(_)),D||(f=u({src:f,async:!0,type:"module"},h),(h=As.get(_))&&$b(f,h),D=y.createElement("script"),Gr(D),xo(D,"link",f),y.head.appendChild(D)),D={type:"script",instance:D,count:1,state:null},E.set(_,D))}}function u_(f,h,y,E){var _=(_=ke.current)?jb(_):null;if(!_)throw Error(r(446));switch(f){case"meta":case"title":return null;case"style":return typeof y.precedence=="string"&&typeof y.href=="string"?(h=tp(y.href),y=Ma(_).hoistableStyles,E=y.get(h),E||(E={type:"style",instance:null,count:0,state:null},y.set(h,E)),E):{type:"void",instance:null,count:0,state:null};case"link":if(y.rel==="stylesheet"&&typeof y.href=="string"&&typeof y.precedence=="string"){f=tp(y.href);var D=Ma(_).hoistableStyles,H=D.get(f);if(H||(_=_.ownerDocument||_,H={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},D.set(f,H),(D=_.querySelector(np(f)))&&!D._p&&(H.instance=D,H.state.loading=5),As.has(f)||(y={rel:"preload",as:"style",href:y.href,crossOrigin:y.crossOrigin,integrity:y.integrity,media:y.media,hrefLang:y.hrefLang,referrerPolicy:y.referrerPolicy},As.set(f,y),D||rI(_,f,y,H.state))),h&&E===null)throw Error(r(528,""));return H}if(h&&E!==null)throw Error(r(529,""));return null;case"script":return h=y.async,y=y.src,typeof y=="string"&&h&&typeof h!="function"&&typeof h!="symbol"?(h=rp(y),y=Ma(_).hoistableScripts,E=y.get(h),E||(E={type:"script",instance:null,count:0,state:null},y.set(h,E)),E):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,f))}}function tp(f){return'href="'+Ia(f)+'"'}function np(f){return'link[rel="stylesheet"]['+f+"]"}function d_(f){return u({},f,{"data-precedence":f.precedence,precedence:null})}function rI(f,h,y,E){f.querySelector('link[rel="preload"][as="style"]['+h+"]")?E.loading=1:(h=f.createElement("link"),E.preload=h,h.addEventListener("load",function(){return E.loading|=1}),h.addEventListener("error",function(){return E.loading|=2}),xo(h,"link",y),Gr(h),f.head.appendChild(h))}function rp(f){return'[src="'+Ia(f)+'"]'}function ip(f){return"script[async]"+f}function f_(f,h,y){if(h.count++,h.instance===null)switch(h.type){case"style":var E=f.querySelector('style[data-href~="'+Ia(y.href)+'"]');if(E)return h.instance=E,Gr(E),E;var _=u({},y,{"data-href":y.href,"data-precedence":y.precedence,href:null,precedence:null});return E=(f.ownerDocument||f).createElement("style"),Gr(E),xo(E,"style",_),Bb(E,y.precedence,f),h.instance=E;case"stylesheet":_=tp(y.href);var D=f.querySelector(np(_));if(D)return h.state.loading|=4,h.instance=D,Gr(D),D;E=d_(y),(_=As.get(_))&&hE(E,_),D=(f.ownerDocument||f).createElement("link"),Gr(D);var H=D;return H._p=new Promise(function(J,de){H.onload=J,H.onerror=de}),xo(D,"link",E),h.state.loading|=4,Bb(D,y.precedence,f),h.instance=D;case"script":return D=rp(y.src),(_=f.querySelector(ip(D)))?(h.instance=_,Gr(_),_):(E=y,(_=As.get(D))&&(E=u({},y),$b(E,_)),f=f.ownerDocument||f,_=f.createElement("script"),Gr(_),xo(_,"link",E),f.head.appendChild(_),h.instance=_);case"void":return null;default:throw Error(r(443,h.type))}else h.type==="stylesheet"&&(h.state.loading&4)===0&&(E=h.instance,h.state.loading|=4,Bb(E,y.precedence,f));return h.instance}function Bb(f,h,y){for(var E=y.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),_=E.length?E[E.length-1]:null,D=_,H=0;H title"):null)}function iI(f,h,y){if(y===1||h.itemProp!=null)return!1;switch(f){case"meta":case"title":return!0;case"style":if(typeof h.precedence!="string"||typeof h.href!="string"||h.href==="")break;return!0;case"link":if(typeof h.rel!="string"||typeof h.href!="string"||h.href===""||h.onLoad||h.onError)break;switch(h.rel){case"stylesheet":return f=h.disabled,typeof h.precedence=="string"&&f==null;default:return!0}case"script":if(h.async&&typeof h.async!="function"&&typeof h.async!="symbol"&&!h.onLoad&&!h.onError&&h.src&&typeof h.src=="string")return!0}return!1}function m_(f){return!(f.type==="stylesheet"&&(f.state.loading&3)===0)}function op(f,h,y,E){if(y.type==="stylesheet"&&(typeof E.media!="string"||matchMedia(E.media).matches!==!1)&&(y.state.loading&4)===0){if(y.instance===null){var _=tp(E.href),D=h.querySelector(np(_));if(D){h=D._p,h!==null&&typeof h=="object"&&typeof h.then=="function"&&(f.count++,f=Hb.bind(f),h.then(f,f)),y.state.loading|=4,y.instance=D,Gr(D);return}D=h.ownerDocument||h,E=d_(E),(_=As.get(_))&&hE(E,_),D=D.createElement("link"),Gr(D);var H=D;H._p=new Promise(function(J,de){H.onload=J,H.onerror=de}),xo(D,"link",E),y.instance=D}f.stylesheets===null&&(f.stylesheets=new Map),f.stylesheets.set(y,h),(h=y.state.preload)&&(y.state.loading&3)===0&&(f.count++,y=Hb.bind(f),h.addEventListener("load",y),h.addEventListener("error",y))}}var pE=0;function oI(f,h){return f.stylesheets&&f.count===0&&Ub(f,f.stylesheets),0pE?50:800)+h);return f.unsuspend=y,function(){f.unsuspend=null,clearTimeout(E),clearTimeout(_)}}:null}function Hb(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Ub(this,this.stylesheets);else if(this.unsuspend){var f=this.unsuspend;this.unsuspend=null,f()}}}var Fb=null;function Ub(f,h){f.stylesheets=null,f.unsuspend!==null&&(f.count++,Fb=new Map,h.forEach(g_,f),Fb=null,Hb.call(f))}function g_(f,h){if(!(h.state.loading&4)){var y=Fb.get(f);if(y)var E=y.get(null);else{y=new Map,Fb.set(f,y);for(var _=f.querySelectorAll("link[data-precedence],style[data-precedence]"),D=0;D<_.length;D++){var H=_[D];(H.nodeName==="LINK"||H.getAttribute("media")!=="not all")&&(y.set(H.dataset.precedence,H),E=H)}E&&y.set(null,E)}_=h.instance,H=_.getAttribute("data-precedence"),D=y.get(H)||E,D===E&&y.set(null,_),y.set(H,_),this.count++,E=Hb.bind(this),_.addEventListener("load",E),_.addEventListener("error",E),D?D.parentNode.insertBefore(_,D.nextSibling):(f=f.nodeType===9?f.head:f,f.insertBefore(_,f.firstChild)),h.state.loading|=4}}var ap={$$typeof:N,Provider:null,Consumer:null,_currentValue:Z,_currentValue2:Z,_threadCount:0};function aI(f,h,y,E,_,D,H,J,de){this.tag=1,this.containerInfo=f,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=fi(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=fi(0),this.hiddenUpdates=fi(null),this.identifierPrefix=E,this.onUncaughtError=_,this.onCaughtError=D,this.onRecoverableError=H,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=de,this.incompleteTransitions=new Map}function y_(f,h,y,E,_,D,H,J,de,Oe,Ue,We){return f=new aI(f,h,y,H,de,Oe,Ue,We,J),h=1,D===!0&&(h|=24),D=go(3,null,null,h),f.current=D,D.stateNode=f,h=el(),h.refCount++,f.pooledCache=h,h.refCount++,D.memoizedState={element:E,isDehydrated:y,cache:h},Vl(D),f}function b_(f){return f?(f=Dc,f):Dc}function v_(f,h,y,E,_,D){_=b_(_),E.context===null?E.context=_:E.pendingContext=_,E=Hu(h),E.payload={element:y},D=D===void 0?null:D,D!==null&&(E.callback=D),y=rl(f,E,h),y!==null&&(da(y,f,h),Gm(y,f,h))}function x_(f,h){if(f=f.memoizedState,f!==null&&f.dehydrated!==null){var y=f.retryLane;f.retryLane=y!==0&&y"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}return e(),mI.exports=V1e(),mI.exports}var are=q1e();const W1e=vr(are);/** + * react-router v7.9.4 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */var sre=e=>{throw TypeError(e)},Y1e=(e,t,n)=>t.has(e)||sre("Cannot "+n),vI=(e,t,n)=>(Y1e(e,t,"read from private field"),n?n.call(e):t.get(e)),G1e=(e,t,n)=>t.has(e)?sre("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),wz="popstate";function K1e(e={}){function t(r,i){let{pathname:o,search:a,hash:s}=r.location;return qS("",{pathname:o,search:a,hash:s},i.state&&i.state.usr||null,i.state&&i.state.key||"default")}function n(r,i){return typeof i=="string"?i:Zp(i)}return Z1e(t,n,null,e)}function $n(e,t){if(e===!1||e===null||typeof e>"u")throw new Error(t)}function ji(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function X1e(){return Math.random().toString(36).substring(2,10)}function Ez(e,t){return{usr:e.state,key:e.key,idx:t}}function qS(e,t,n=null,r){return{pathname:typeof e=="string"?e:e.pathname,search:"",hash:"",...typeof t=="string"?um(t):t,state:n,key:t&&t.key||r||X1e()}}function Zp({pathname:e="/",search:t="",hash:n=""}){return t&&t!=="?"&&(e+=t.charAt(0)==="?"?t:"?"+t),n&&n!=="#"&&(e+=n.charAt(0)==="#"?n:"#"+n),e}function um(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function Z1e(e,t,n,r={}){let{window:i=document.defaultView,v5Compat:o=!1}=r,a=i.history,s="POP",l=null,c=d();c==null&&(c=0,a.replaceState({...a.state,idx:c},""));function d(){return(a.state||{idx:null}).idx}function u(){s="POP";let w=d(),T=w==null?null:w-c;c=w,l&&l({action:s,location:x.location,delta:T})}function p(w,T){s="PUSH";let k=qS(x.location,w,T);c=d()+1;let N=Ez(k,c),I=x.createHref(k);try{a.pushState(N,"",I)}catch(M){if(M instanceof DOMException&&M.name==="DataCloneError")throw M;i.location.assign(I)}o&&l&&l({action:s,location:x.location,delta:1})}function m(w,T){s="REPLACE";let k=qS(x.location,w,T);c=d();let N=Ez(k,c),I=x.createHref(k);a.replaceState(N,"",I),o&&l&&l({action:s,location:x.location,delta:0})}function v(w){return lre(w)}let x={get action(){return s},get location(){return e(i,a)},listen(w){if(l)throw new Error("A history only accepts one active listener");return i.addEventListener(wz,u),l=w,()=>{i.removeEventListener(wz,u),l=null}},createHref(w){return t(i,w)},createURL:v,encodeLocation(w){let T=v(w);return{pathname:T.pathname,search:T.search,hash:T.hash}},push:p,replace:m,go(w){return a.go(w)}};return x}function lre(e,t=!1){let n="http://localhost";typeof window<"u"&&(n=window.location.origin!=="null"?window.location.origin:window.location.href),$n(n,"No window.location.(origin|href) available to create URL");let r=typeof e=="string"?e:Zp(e);return r=r.replace(/ $/,"%20"),!t&&r.startsWith("//")&&(r=n+r),new URL(r,n)}var tS,Sz=class{constructor(e){if(G1e(this,tS,new Map),e)for(let[t,n]of e)this.set(t,n)}get(e){if(vI(this,tS).has(e))return vI(this,tS).get(e);if(e.defaultValue!==void 0)return e.defaultValue;throw new Error("No value found for context")}set(e,t){vI(this,tS).set(e,t)}};tS=new WeakMap;var Q1e=new Set(["lazy","caseSensitive","path","id","index","children"]);function J1e(e){return Q1e.has(e)}var exe=new Set(["lazy","caseSensitive","path","id","index","middleware","children"]);function txe(e){return exe.has(e)}function nxe(e){return e.index===!0}function WS(e,t,n=[],r={},i=!1){return e.map((o,a)=>{let s=[...n,String(a)],l=typeof o.id=="string"?o.id:s.join("-");if($n(o.index!==!0||!o.children,"Cannot specify children on an index route"),$n(i||!r[l],`Found a route id collision on id "${l}". Route id's must be globally unique within Data Router usages`),nxe(o)){let c={...o,...t(o),id:l};return r[l]=c,c}else{let c={...o,...t(o),id:l,children:void 0};return r[l]=c,o.children&&(c.children=WS(o.children,t,s,r,i)),c}})}function Tp(e,t,n="/"){return BA(e,t,n,!1)}function BA(e,t,n,r){let i=typeof t=="string"?um(t):t,o=bc(i.pathname||"/",n);if(o==null)return null;let a=cre(e);ixe(a);let s=null;for(let l=0;s==null&&l{let d={relativePath:c===void 0?a.path||"":c,caseSensitive:a.caseSensitive===!0,childrenIndex:s,route:a};if(d.relativePath.startsWith("/")){if(!d.relativePath.startsWith(r)&&l)return;$n(d.relativePath.startsWith(r),`Absolute route path "${d.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),d.relativePath=d.relativePath.slice(r.length)}let u=xd([r,d.relativePath]),p=n.concat(d);a.children&&a.children.length>0&&($n(a.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${u}".`),cre(a.children,t,p,u,l)),!(a.path==null&&!a.index)&&t.push({path:u,score:dxe(u,a.index),routesMeta:p})};return e.forEach((a,s)=>{if(a.path===""||!a.path?.includes("?"))o(a,s);else for(let l of ure(a.path))o(a,s,!0,l)}),t}function ure(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,i=n.endsWith("?"),o=n.replace(/\?$/,"");if(r.length===0)return i?[o,""]:[o];let a=ure(r.join("/")),s=[];return s.push(...a.map(l=>l===""?o:[o,l].join("/"))),i&&s.push(...a),s.map(l=>e.startsWith("/")&&l===""?"/":l)}function ixe(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:fxe(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}var oxe=/^:[\w-]+$/,axe=3,sxe=2,lxe=1,cxe=10,uxe=-2,Cz=e=>e==="*";function dxe(e,t){let n=e.split("/"),r=n.length;return n.some(Cz)&&(r+=uxe),t&&(r+=sxe),n.filter(i=>!Cz(i)).reduce((i,o)=>i+(oxe.test(o)?axe:o===""?lxe:cxe),r)}function fxe(e,t){return e.length===t.length&&e.slice(0,-1).every((r,i)=>r===t[i])?e[e.length-1]-t[t.length-1]:0}function hxe(e,t,n=!1){let{routesMeta:r}=e,i={},o="/",a=[];for(let s=0;s{if(d==="*"){let v=s[p]||"";a=o.slice(0,o.length-v.length).replace(/(.)\/+$/,"$1")}const m=s[p];return u&&!m?c[d]=void 0:c[d]=(m||"").replace(/%2F/g,"/"),c},{}),pathname:o,pathnameBase:a,pattern:e}}function pxe(e,t=!1,n=!0){ji(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=[],i="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(a,s,l)=>(r.push({paramName:s,isOptional:l!=null}),l?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return e.endsWith("*")?(r.push({paramName:"*"}),i+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?i+="\\/*$":e!==""&&e!=="/"&&(i+="(?:(?=\\/|$))"),[new RegExp(i,t?void 0:"i"),r]}function mxe(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return ji(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function bc(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)||"/"}function gxe({basename:e,pathname:t}){return t==="/"?e:xd([e,t])}function yxe(e,t="/"){let{pathname:n,search:r="",hash:i=""}=typeof e=="string"?um(e):e;return{pathname:n?n.startsWith("/")?n:bxe(n,t):t,search:xxe(r),hash:wxe(i)}}function bxe(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(i=>{i===".."?n.length>1&&n.pop():i!=="."&&n.push(i)}),n.length>1?n.join("/"):"/"}function xI(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function dre(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function XM(e){let t=dre(e);return t.map((n,r)=>r===t.length-1?n.pathname:n.pathnameBase)}function ZM(e,t,n,r=!1){let i;typeof e=="string"?i=um(e):(i={...e},$n(!i.pathname||!i.pathname.includes("?"),xI("?","pathname","search",i)),$n(!i.pathname||!i.pathname.includes("#"),xI("#","pathname","hash",i)),$n(!i.search||!i.search.includes("#"),xI("#","search","hash",i)));let o=e===""||i.pathname==="",a=o?"/":i.pathname,s;if(a==null)s=n;else{let u=t.length-1;if(!r&&a.startsWith("..")){let p=a.split("/");for(;p[0]==="..";)p.shift(),u-=1;i.pathname=p.join("/")}s=u>=0?t[u]:"/"}let l=yxe(i,s),c=a&&a!=="/"&&a.endsWith("/"),d=(o||a===".")&&n.endsWith("/");return!l.pathname.endsWith("/")&&(c||d)&&(l.pathname+="/"),l}var xd=e=>e.join("/").replace(/\/\/+/g,"/"),vxe=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),xxe=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,wxe=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e,hN=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||"",this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function YS(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}var fre=["POST","PUT","PATCH","DELETE"],Exe=new Set(fre),Sxe=["GET",...fre],Cxe=new Set(Sxe),Txe=new Set([301,302,303,307,308]),kxe=new Set([307,308]),wI={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},_xe={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},SE={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},Axe=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,dH=e=>Axe.test(e),Nxe=e=>({hasErrorBoundary:!!e.hasErrorBoundary}),hre="remix-router-transitions",pre=Symbol("ResetLoaderData");function Oxe(e){const t=e.window?e.window:typeof window<"u"?window:void 0,n=typeof t<"u"&&typeof t.document<"u"&&typeof t.document.createElement<"u";$n(e.routes.length>0,"You must provide a non-empty routes array to createRouter");let r=e.hydrationRouteProperties||[],i=e.mapRouteProperties||Nxe,o={},a=WS(e.routes,i,void 0,o),s,l=e.basename||"/";l.startsWith("/")||(l=`/${l}`);let c=e.dataStrategy||Pxe,d={...e.future},u=null,p=new Set,m=null,v=null,x=null,w=e.hydrationData!=null,T=Tp(a,e.history.location,l),k=!1,N=null,I;if(T==null&&!e.patchRoutesOnNavigation){let se=tc(404,{pathname:e.history.location.pathname}),{matches:ye,route:Re}=N_(a);I=!0,T=ye,N={[Re.id]:se}}else if(T&&!e.hydrationData&&on(T,a,e.history.location.pathname).active&&(T=null),T)if(T.some(se=>se.route.lazy))I=!1;else if(!T.some(se=>fH(se.route)))I=!0;else{let se=e.hydrationData?e.hydrationData.loaderData:null,ye=e.hydrationData?e.hydrationData.errors:null;if(ye){let Re=T.findIndex(Xe=>ye[Xe.route.id]!==void 0);I=T.slice(0,Re+1).every(Xe=>!R6(Xe.route,se,ye))}else I=T.every(Re=>!R6(Re.route,se,ye))}else{I=!1,T=[];let se=on(null,a,e.history.location.pathname);se.active&&se.matches&&(k=!0,T=se.matches)}let M,A={historyAction:e.history.action,location:e.history.location,matches:T,initialized:I,navigation:wI,restoreScrollPosition:e.hydrationData!=null?!1:null,preventScrollReset:!1,revalidation:"idle",loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||N,fetchers:new Map,blockers:new Map},R="POP",L=!1,B,$=!1,W=new Map,V=null,Y=!1,U=!1,X=new Set,q=new Map,ne=0,Z=-1,oe=new Map,K=new Set,Q=new Map,te=new Map,z=new Set,fe=new Map,me,ke=null;function Ee(){if(u=e.history.listen(({action:se,location:ye,delta:Re})=>{if(me){me(),me=void 0;return}ji(fe.size===0||Re!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let Xe=lt({currentLocation:A.location,nextLocation:ye,historyAction:se});if(Xe&&Re!=null){let nt=new Promise(_t=>{me=_t});e.history.go(Re*-1),Tt(Xe,{state:"blocked",location:ye,proceed(){Tt(Xe,{state:"proceeding",proceed:void 0,reset:void 0,location:ye}),nt.then(()=>e.history.go(Re))},reset(){let _t=new Map(A.blockers);_t.set(Xe,SE),je({blockers:_t})}});return}return Ve(se,ye)}),n){Xxe(t,W);let se=()=>Zxe(t,W);t.addEventListener("pagehide",se),V=()=>t.removeEventListener("pagehide",se)}return A.initialized||Ve("POP",A.location,{initialHydration:!0}),M}function ve(){u&&u(),V&&V(),p.clear(),B&&B.abort(),A.fetchers.forEach((se,ye)=>qt(ye)),A.blockers.forEach((se,ye)=>wi(ye))}function we(se){return p.add(se),()=>p.delete(se)}function je(se,ye={}){se.matches&&(se.matches=se.matches.map(nt=>{let _t=o[nt.route.id],bt=nt.route;return bt.element!==_t.element||bt.errorElement!==_t.errorElement||bt.hydrateFallbackElement!==_t.hydrateFallbackElement?{...nt,route:_t}:nt})),A={...A,...se};let Re=[],Xe=[];A.fetchers.forEach((nt,_t)=>{nt.state==="idle"&&(z.has(_t)?Re.push(_t):Xe.push(_t))}),z.forEach(nt=>{!A.fetchers.has(nt)&&!q.has(nt)&&Re.push(nt)}),[...p].forEach(nt=>nt(A,{deletedFetchers:Re,viewTransitionOpts:ye.viewTransitionOpts,flushSync:ye.flushSync===!0})),Re.forEach(nt=>qt(nt)),Xe.forEach(nt=>A.fetchers.delete(nt))}function Ke(se,ye,{flushSync:Re}={}){let Xe=A.actionData!=null&&A.navigation.formMethod!=null&&Ls(A.navigation.formMethod)&&A.navigation.state==="loading"&&se.state?._isRedirect!==!0,nt;ye.actionData?Object.keys(ye.actionData).length>0?nt=ye.actionData:nt=null:Xe?nt=A.actionData:nt=null;let _t=ye.loaderData?Iz(A.loaderData,ye.loaderData,ye.matches||[],ye.errors):A.loaderData,bt=A.blockers;bt.size>0&&(bt=new Map(bt),bt.forEach((ft,mt)=>bt.set(mt,SE)));let At=Y?!1:xt(se,ye.matches||A.matches),$t=L===!0||A.navigation.formMethod!=null&&Ls(A.navigation.formMethod)&&se.state?._isRedirect!==!0;s&&(a=s,s=void 0),Y||R==="POP"||(R==="PUSH"?e.history.push(se,se.state):R==="REPLACE"&&e.history.replace(se,se.state));let Ht;if(R==="POP"){let ft=W.get(A.location.pathname);ft&&ft.has(se.pathname)?Ht={currentLocation:A.location,nextLocation:se}:W.has(se.pathname)&&(Ht={currentLocation:se,nextLocation:A.location})}else if($){let ft=W.get(A.location.pathname);ft?ft.add(se.pathname):(ft=new Set([se.pathname]),W.set(A.location.pathname,ft)),Ht={currentLocation:A.location,nextLocation:se}}je({...ye,actionData:nt,loaderData:_t,historyAction:R,location:se,initialized:!0,navigation:wI,revalidation:"idle",restoreScrollPosition:At,preventScrollReset:$t,blockers:bt},{viewTransitionOpts:Ht,flushSync:Re===!0}),R="POP",L=!1,$=!1,Y=!1,U=!1,ke?.resolve(),ke=null}async function Me(se,ye){if(typeof se=="number"){e.history.go(se);return}let Re=D6(A.location,A.matches,l,se,ye?.fromRouteId,ye?.relative),{path:Xe,submission:nt,error:_t}=Tz(!1,Re,ye),bt=A.location,At=qS(A.location,Xe,ye&&ye.state);At={...At,...e.history.encodeLocation(At)};let $t=ye&&ye.replace!=null?ye.replace:void 0,Ht="PUSH";$t===!0?Ht="REPLACE":$t===!1||nt!=null&&Ls(nt.formMethod)&&nt.formAction===A.location.pathname+A.location.search&&(Ht="REPLACE");let ft=ye&&"preventScrollReset"in ye?ye.preventScrollReset===!0:void 0,mt=(ye&&ye.flushSync)===!0,xn=lt({currentLocation:bt,nextLocation:At,historyAction:Ht});if(xn){Tt(xn,{state:"blocked",location:At,proceed(){Tt(xn,{state:"proceeding",proceed:void 0,reset:void 0,location:At}),Me(se,ye)},reset(){let mr=new Map(A.blockers);mr.set(xn,SE),je({blockers:mr})}});return}await Ve(Ht,At,{submission:nt,pendingError:_t,preventScrollReset:ft,replace:ye&&ye.replace,enableViewTransition:ye&&ye.viewTransition,flushSync:mt})}function Lt(){ke||(ke=Qxe()),Qe(),je({revalidation:"loading"});let se=ke.promise;return A.navigation.state==="submitting"?se:A.navigation.state==="idle"?(Ve(A.historyAction,A.location,{startUninterruptedRevalidation:!0}),se):(Ve(R||A.historyAction,A.navigation.location,{overrideNavigation:A.navigation,enableViewTransition:$===!0}),se)}async function Ve(se,ye,Re){B&&B.abort(),B=null,R=se,Y=(Re&&Re.startUninterruptedRevalidation)===!0,vt(A.location,A.matches),L=(Re&&Re.preventScrollReset)===!0,$=(Re&&Re.enableViewTransition)===!0;let Xe=s||a,nt=Re&&Re.overrideNavigation,_t=Re?.initialHydration&&A.matches&&A.matches.length>0&&!k?A.matches:Tp(Xe,ye,l),bt=(Re&&Re.flushSync)===!0;if(_t&&A.initialized&&!U&&zxe(A.location,ye)&&!(Re&&Re.submission&&Ls(Re.submission.formMethod))){Ke(ye,{matches:_t},{flushSync:bt});return}let At=on(_t,Xe,ye.pathname);if(At.active&&At.matches&&(_t=At.matches),!_t){let{error:mo,notFoundMatches:Rr,route:ar}=ct(ye.pathname);Ke(ye,{matches:Rr,loaderData:{},errors:{[ar.id]:mo}},{flushSync:bt});return}B=new AbortController;let $t=dv(e.history,ye,B.signal,Re&&Re.submission),Ht=e.getContext?await e.getContext():new Sz,ft;if(Re&&Re.pendingError)ft=[kp(_t).route.id,{type:"error",error:Re.pendingError}];else if(Re&&Re.submission&&Ls(Re.submission.formMethod)){let mo=await an($t,ye,Re.submission,_t,Ht,At.active,Re&&Re.initialHydration===!0,{replace:Re.replace,flushSync:bt});if(mo.shortCircuited)return;if(mo.pendingActionResult){let[Rr,ar]=mo.pendingActionResult;if(wl(ar)&&YS(ar.error)&&ar.error.status===404){B=null,Ke(ye,{matches:mo.matches,loaderData:{},errors:{[Rr]:ar.error}});return}}_t=mo.matches||_t,ft=mo.pendingActionResult,nt=EI(ye,Re.submission),bt=!1,At.active=!1,$t=dv(e.history,$t.url,$t.signal)}let{shortCircuited:mt,matches:xn,loaderData:mr,errors:Ni}=await cn($t,ye,_t,Ht,At.active,nt,Re&&Re.submission,Re&&Re.fetcherSubmission,Re&&Re.replace,Re&&Re.initialHydration===!0,bt,ft);mt||(B=null,Ke(ye,{matches:xn||_t,...Pz(ft),loaderData:mr,errors:Ni}))}async function an(se,ye,Re,Xe,nt,_t,bt,At={}){Qe();let $t=Gxe(ye,Re);if(je({navigation:$t},{flushSync:At.flushSync===!0}),_t){let mt=await Gn(Xe,ye.pathname,se.signal);if(mt.type==="aborted")return{shortCircuited:!0};if(mt.type==="error"){if(mt.partialMatches.length===0){let{matches:mr,route:Ni}=N_(a);return{matches:mr,pendingActionResult:[Ni.id,{type:"error",error:mt.error}]}}let xn=kp(mt.partialMatches).route.id;return{matches:mt.partialMatches,pendingActionResult:[xn,{type:"error",error:mt.error}]}}else if(mt.matches)Xe=mt.matches;else{let{notFoundMatches:xn,error:mr,route:Ni}=ct(ye.pathname);return{matches:xn,pendingActionResult:[Ni.id,{type:"error",error:mr}]}}}let Ht,ft=$A(Xe,ye);if(!ft.route.action&&!ft.route.lazy)Ht={type:"error",error:tc(405,{method:se.method,pathname:ye.pathname,routeId:ft.route.id})};else{let mt=Rv(i,o,se,Xe,ft,bt?[]:r,nt),xn=await Je(se,mt,nt,null);if(Ht=xn[ft.route.id],!Ht){for(let mr of Xe)if(xn[mr.route.id]){Ht=xn[mr.route.id];break}}if(se.signal.aborted)return{shortCircuited:!0}}if(e0(Ht)){let mt;return At&&At.replace!=null?mt=At.replace:mt=Mz(Ht.response.headers.get("Location"),new URL(se.url),l)===A.location.pathname+A.location.search,await Te(se,Ht,!0,{submission:Re,replace:mt}),{shortCircuited:!0}}if(wl(Ht)){let mt=kp(Xe,ft.route.id);return(At&&At.replace)!==!0&&(R="PUSH"),{matches:Xe,pendingActionResult:[mt.route.id,Ht,ft.route.id]}}return{matches:Xe,pendingActionResult:[ft.route.id,Ht]}}async function cn(se,ye,Re,Xe,nt,_t,bt,At,$t,Ht,ft,mt){let xn=_t||EI(ye,bt),mr=bt||At||jz(xn),Ni=!Y&&!Ht;if(nt){if(Ni){let $i=Qt(mt);je({navigation:xn,...$i!==void 0?{actionData:$i}:{}},{flushSync:ft})}let yn=await Gn(Re,ye.pathname,se.signal);if(yn.type==="aborted")return{shortCircuited:!0};if(yn.type==="error"){if(yn.partialMatches.length===0){let{matches:_c,route:Hl}=N_(a);return{matches:_c,loaderData:{},errors:{[Hl.id]:yn.error}}}let $i=kp(yn.partialMatches).route.id;return{matches:yn.partialMatches,loaderData:{},errors:{[$i]:yn.error}}}else if(yn.matches)Re=yn.matches;else{let{error:$i,notFoundMatches:_c,route:Hl}=ct(ye.pathname);return{matches:_c,loaderData:{},errors:{[Hl.id]:$i}}}}let mo=s||a,{dsMatches:Rr,revalidatingFetchers:ar}=kz(se,Xe,i,o,e.history,A,Re,mr,ye,Ht?[]:r,Ht===!0,U,X,z,Q,K,mo,l,e.patchRoutesOnNavigation!=null,mt);if(Z=++ne,!e.dataStrategy&&!Rr.some(yn=>yn.shouldLoad)&&!Rr.some(yn=>yn.route.middleware&&yn.route.middleware.length>0)&&ar.length===0){let yn=Yn();return Ke(ye,{matches:Re,loaderData:{},errors:mt&&wl(mt[1])?{[mt[0]]:mt[1].error}:null,...Pz(mt),...yn?{fetchers:new Map(A.fetchers)}:{}},{flushSync:ft}),{shortCircuited:!0}}if(Ni){let yn={};if(!nt){yn.navigation=xn;let $i=Qt(mt);$i!==void 0&&(yn.actionData=$i)}ar.length>0&&(yn.fetchers=Yr(ar)),je(yn,{flushSync:ft})}ar.forEach(yn=>{kn(yn.key),yn.controller&&q.set(yn.key,yn.controller)});let Xs=()=>ar.forEach(yn=>kn(yn.key));B&&B.signal.addEventListener("abort",Xs);let{loaderResults:fs,fetcherResults:Zi}=await Ze(Rr,ar,se,Xe);if(se.signal.aborted)return{shortCircuited:!0};B&&B.signal.removeEventListener("abort",Xs),ar.forEach(yn=>q.delete(yn.key));let Oo=O_(fs);if(Oo)return await Te(se,Oo.result,!0,{replace:$t}),{shortCircuited:!0};if(Oo=O_(Zi),Oo)return K.add(Oo.key),await Te(se,Oo.result,!0,{replace:$t}),{shortCircuited:!0};let{loaderData:Ma,errors:Gr}=Rz(A,Re,fs,mt,ar,Zi);Ht&&A.errors&&(Gr={...A.errors,...Gr});let $l=Yn(),Vd=xr(Z),Da=$l||Vd||ar.length>0;return{matches:Re,loaderData:Ma,errors:Gr,...Da?{fetchers:new Map(A.fetchers)}:{}}}function Qt(se){if(se&&!wl(se[1]))return{[se[0]]:se[1].data};if(A.actionData)return Object.keys(A.actionData).length===0?null:A.actionData}function Yr(se){return se.forEach(ye=>{let Re=A.fetchers.get(ye.key),Xe=CE(void 0,Re?Re.data:void 0);A.fetchers.set(ye.key,Xe)}),new Map(A.fetchers)}async function er(se,ye,Re,Xe){kn(se);let nt=(Xe&&Xe.flushSync)===!0,_t=s||a,bt=D6(A.location,A.matches,l,Re,ye,Xe?.relative),At=Tp(_t,bt,l),$t=on(At,_t,bt);if($t.active&&$t.matches&&(At=$t.matches),!At){Be(se,ye,tc(404,{pathname:bt}),{flushSync:nt});return}let{path:Ht,submission:ft,error:mt}=Tz(!0,bt,Xe);if(mt){Be(se,ye,mt,{flushSync:nt});return}let xn=e.getContext?await e.getContext():new Sz,mr=(Xe&&Xe.preventScrollReset)===!0;if(ft&&Ls(ft.formMethod)){await ce(se,ye,Ht,At,xn,$t.active,nt,mr,ft);return}Q.set(se,{routeId:ye,path:Ht}),await xe(se,ye,Ht,At,xn,$t.active,nt,mr,ft)}async function ce(se,ye,Re,Xe,nt,_t,bt,At,$t){Qe(),Q.delete(se);let Ht=A.fetchers.get(se);ge(se,Kxe($t,Ht),{flushSync:bt});let ft=new AbortController,mt=dv(e.history,Re,ft.signal,$t);if(_t){let Ei=await Gn(Xe,new URL(mt.url).pathname,mt.signal,se);if(Ei.type==="aborted")return;if(Ei.type==="error"){Be(se,ye,Ei.error,{flushSync:bt});return}else if(Ei.matches)Xe=Ei.matches;else{Be(se,ye,tc(404,{pathname:Re}),{flushSync:bt});return}}let xn=$A(Xe,Re);if(!xn.route.action&&!xn.route.lazy){let Ei=tc(405,{method:$t.formMethod,pathname:Re,routeId:ye});Be(se,ye,Ei,{flushSync:bt});return}q.set(se,ft);let mr=ne,Ni=Rv(i,o,mt,Xe,xn,r,nt),Rr=(await Je(mt,Ni,nt,se))[xn.route.id];if(mt.signal.aborted){q.get(se)===ft&&q.delete(se);return}if(z.has(se)){if(e0(Rr)||wl(Rr)){ge(se,Tf(void 0));return}}else{if(e0(Rr))if(q.delete(se),Z>mr){ge(se,Tf(void 0));return}else return K.add(se),ge(se,CE($t)),Te(mt,Rr,!1,{fetcherSubmission:$t,preventScrollReset:At});if(wl(Rr)){Be(se,ye,Rr.error);return}}let ar=A.navigation.location||A.location,Xs=dv(e.history,ar,ft.signal),fs=s||a,Zi=A.navigation.state!=="idle"?Tp(fs,A.navigation.location,l):A.matches;$n(Zi,"Didn't find any matches after fetcher action");let Oo=++ne;oe.set(se,Oo);let Ma=CE($t,Rr.data);A.fetchers.set(se,Ma);let{dsMatches:Gr,revalidatingFetchers:$l}=kz(Xs,nt,i,o,e.history,A,Zi,$t,ar,r,!1,U,X,z,Q,K,fs,l,e.patchRoutesOnNavigation!=null,[xn.route.id,Rr]);$l.filter(Ei=>Ei.key!==se).forEach(Ei=>{let Ac=Ei.key,Nu=A.fetchers.get(Ac),hs=CE(void 0,Nu?Nu.data:void 0);A.fetchers.set(Ac,hs),kn(Ac),Ei.controller&&q.set(Ac,Ei.controller)}),je({fetchers:new Map(A.fetchers)});let Vd=()=>$l.forEach(Ei=>kn(Ei.key));ft.signal.addEventListener("abort",Vd);let{loaderResults:Da,fetcherResults:yn}=await Ze(Gr,$l,Xs,nt);if(ft.signal.aborted)return;if(ft.signal.removeEventListener("abort",Vd),oe.delete(se),q.delete(se),$l.forEach(Ei=>q.delete(Ei.key)),A.fetchers.has(se)){let Ei=Tf(Rr.data);A.fetchers.set(se,Ei)}let $i=O_(Da);if($i)return Te(Xs,$i.result,!1,{preventScrollReset:At});if($i=O_(yn),$i)return K.add($i.key),Te(Xs,$i.result,!1,{preventScrollReset:At});let{loaderData:_c,errors:Hl}=Rz(A,Zi,Da,void 0,$l,yn);xr(Oo),A.navigation.state==="loading"&&Oo>Z?($n(R,"Expected pending action"),B&&B.abort(),Ke(A.navigation.location,{matches:Zi,loaderData:_c,errors:Hl,fetchers:new Map(A.fetchers)})):(je({errors:Hl,loaderData:Iz(A.loaderData,_c,Zi,Hl),fetchers:new Map(A.fetchers)}),U=!1)}async function xe(se,ye,Re,Xe,nt,_t,bt,At,$t){let Ht=A.fetchers.get(se);ge(se,CE($t,Ht?Ht.data:void 0),{flushSync:bt});let ft=new AbortController,mt=dv(e.history,Re,ft.signal);if(_t){let ar=await Gn(Xe,new URL(mt.url).pathname,mt.signal,se);if(ar.type==="aborted")return;if(ar.type==="error"){Be(se,ye,ar.error,{flushSync:bt});return}else if(ar.matches)Xe=ar.matches;else{Be(se,ye,tc(404,{pathname:Re}),{flushSync:bt});return}}let xn=$A(Xe,Re);q.set(se,ft);let mr=ne,Ni=Rv(i,o,mt,Xe,xn,r,nt),Rr=(await Je(mt,Ni,nt,se))[xn.route.id];if(q.get(se)===ft&&q.delete(se),!mt.signal.aborted){if(z.has(se)){ge(se,Tf(void 0));return}if(e0(Rr))if(Z>mr){ge(se,Tf(void 0));return}else{K.add(se),await Te(mt,Rr,!1,{preventScrollReset:At});return}if(wl(Rr)){Be(se,ye,Rr.error);return}ge(se,Tf(Rr.data))}}async function Te(se,ye,Re,{submission:Xe,fetcherSubmission:nt,preventScrollReset:_t,replace:bt}={}){ye.response.headers.has("X-Remix-Revalidate")&&(U=!0);let At=ye.response.headers.get("Location");$n(At,"Expected a Location header on the redirect Response"),At=Mz(At,new URL(se.url),l);let $t=qS(A.location,At,{_isRedirect:!0});if(n){let Ni=!1;if(ye.response.headers.has("X-Remix-Reload-Document"))Ni=!0;else if(dH(At)){const mo=lre(At,!0);Ni=mo.origin!==t.location.origin||bc(mo.pathname,l)==null}if(Ni){bt?t.location.replace(At):t.location.assign(At);return}}B=null;let Ht=bt===!0||ye.response.headers.has("X-Remix-Replace")?"REPLACE":"PUSH",{formMethod:ft,formAction:mt,formEncType:xn}=A.navigation;!Xe&&!nt&&ft&&mt&&xn&&(Xe=jz(A.navigation));let mr=Xe||nt;if(kxe.has(ye.response.status)&&mr&&Ls(mr.formMethod))await Ve(Ht,$t,{submission:{...mr,formAction:At},preventScrollReset:_t||L,enableViewTransition:Re?$:void 0});else{let Ni=EI($t,Xe);await Ve(Ht,$t,{overrideNavigation:Ni,fetcherSubmission:nt,preventScrollReset:_t||L,enableViewTransition:Re?$:void 0})}}async function Je(se,ye,Re,Xe){let nt,_t={};try{nt=await jxe(c,se,ye,Xe,Re,!1)}catch(bt){return ye.filter(At=>At.shouldLoad).forEach(At=>{_t[At.route.id]={type:"error",error:bt}}),_t}if(se.signal.aborted)return _t;for(let[bt,At]of Object.entries(nt))if(Wxe(At)){let $t=At.result;_t[bt]={type:"redirect",response:Fxe($t,se,bt,ye,l)}}else _t[bt]=await Hxe(At);return _t}async function Ze(se,ye,Re,Xe){let nt=Je(Re,se,Xe,null),_t=Promise.all(ye.map(async $t=>{if($t.matches&&$t.match&&$t.request&&$t.controller){let ft=(await Je($t.request,$t.matches,Xe,$t.key))[$t.match.route.id];return{[$t.key]:ft}}else return Promise.resolve({[$t.key]:{type:"error",error:tc(404,{pathname:$t.path})}})})),bt=await nt,At=(await _t).reduce(($t,Ht)=>Object.assign($t,Ht),{});return{loaderResults:bt,fetcherResults:At}}function Qe(){U=!0,Q.forEach((se,ye)=>{q.has(ye)&&X.add(ye),kn(ye)})}function ge(se,ye,Re={}){A.fetchers.set(se,ye),je({fetchers:new Map(A.fetchers)},{flushSync:(Re&&Re.flushSync)===!0})}function Be(se,ye,Re,Xe={}){let nt=kp(A.matches,ye);qt(se),je({errors:{[nt.route.id]:Re},fetchers:new Map(A.fetchers)},{flushSync:(Xe&&Xe.flushSync)===!0})}function it(se){return te.set(se,(te.get(se)||0)+1),z.has(se)&&z.delete(se),A.fetchers.get(se)||_xe}function Nt(se,ye){kn(se,ye?.reason),ge(se,Tf(null))}function qt(se){let ye=A.fetchers.get(se);q.has(se)&&!(ye&&ye.state==="loading"&&oe.has(se))&&kn(se),Q.delete(se),oe.delete(se),K.delete(se),z.delete(se),X.delete(se),A.fetchers.delete(se)}function Zn(se){let ye=(te.get(se)||0)-1;ye<=0?(te.delete(se),z.add(se)):te.set(se,ye),je({fetchers:new Map(A.fetchers)})}function kn(se,ye){let Re=q.get(se);Re&&(Re.abort(ye),q.delete(se))}function or(se){for(let ye of se){let Re=it(ye),Xe=Tf(Re.data);A.fetchers.set(ye,Xe)}}function Yn(){let se=[],ye=!1;for(let Re of K){let Xe=A.fetchers.get(Re);$n(Xe,`Expected fetcher: ${Re}`),Xe.state==="loading"&&(K.delete(Re),se.push(Re),ye=!0)}return or(se),ye}function xr(se){let ye=[];for(let[Re,Xe]of oe)if(Xe0}function un(se,ye){let Re=A.blockers.get(se)||SE;return fe.get(se)!==ye&&fe.set(se,ye),Re}function wi(se){A.blockers.delete(se),fe.delete(se)}function Tt(se,ye){let Re=A.blockers.get(se)||SE;$n(Re.state==="unblocked"&&ye.state==="blocked"||Re.state==="blocked"&&ye.state==="blocked"||Re.state==="blocked"&&ye.state==="proceeding"||Re.state==="blocked"&&ye.state==="unblocked"||Re.state==="proceeding"&&ye.state==="unblocked",`Invalid blocker state transition: ${Re.state} -> ${ye.state}`);let Xe=new Map(A.blockers);Xe.set(se,ye),je({blockers:Xe})}function lt({currentLocation:se,nextLocation:ye,historyAction:Re}){if(fe.size===0)return;fe.size>1&&ji(!1,"A router only supports one blocker at a time");let Xe=Array.from(fe.entries()),[nt,_t]=Xe[Xe.length-1],bt=A.blockers.get(nt);if(!(bt&&bt.state==="proceeding")&&_t({currentLocation:se,nextLocation:ye,historyAction:Re}))return nt}function ct(se){let ye=tc(404,{pathname:se}),Re=s||a,{matches:Xe,route:nt}=N_(Re);return{notFoundMatches:Xe,route:nt,error:ye}}function kt(se,ye,Re){if(m=se,x=ye,v=Re||null,!w&&A.navigation===wI){w=!0;let Xe=xt(A.location,A.matches);Xe!=null&&je({restoreScrollPosition:Xe})}return()=>{m=null,x=null,v=null}}function jt(se,ye){return v&&v(se,ye.map(Xe=>rxe(Xe,A.loaderData)))||se.key}function vt(se,ye){if(m&&x){let Re=jt(se,ye);m[Re]=x()}}function xt(se,ye){if(m){let Re=jt(se,ye),Xe=m[Re];if(typeof Xe=="number")return Xe}return null}function on(se,ye,Re){if(e.patchRoutesOnNavigation)if(se){if(Object.keys(se[0].params).length>0)return{active:!0,matches:BA(ye,Re,l,!0)}}else return{active:!0,matches:BA(ye,Re,l,!0)||[]};return{active:!1,matches:null}}async function Gn(se,ye,Re,Xe){if(!e.patchRoutesOnNavigation)return{type:"success",matches:se};let nt=se;for(;;){let _t=s==null,bt=s||a,At=o;try{await e.patchRoutesOnNavigation({signal:Re,path:ye,matches:nt,fetcherKey:Xe,patch:(ft,mt)=>{Re.aborted||_z(ft,mt,bt,At,i,!1)}})}catch(ft){return{type:"error",error:ft,partialMatches:nt}}finally{_t&&!Re.aborted&&(a=[...a])}if(Re.aborted)return{type:"aborted"};let $t=Tp(bt,ye,l);if($t)return{type:"success",matches:$t};let Ht=BA(bt,ye,l,!0);if(!Ht||nt.length===Ht.length&&nt.every((ft,mt)=>ft.route.id===Ht[mt].route.id))return{type:"success",matches:null};nt=Ht}}function Hn(se){o={},s=WS(se,i,void 0,o)}function fi(se,ye,Re=!1){let Xe=s==null;_z(se,ye,s||a,o,i,Re),Xe&&(a=[...a],je({}))}return M={get basename(){return l},get future(){return d},get state(){return A},get routes(){return a},get window(){return t},initialize:Ee,subscribe:we,enableScrollRestoration:kt,navigate:Me,fetch:er,revalidate:Lt,createHref:se=>e.history.createHref(se),encodeLocation:se=>e.history.encodeLocation(se),getFetcher:it,resetFetcher:Nt,deleteFetcher:Zn,dispose:ve,getBlocker:un,deleteBlocker:wi,patchRoutes:fi,_internalFetchControllers:q,_internalSetRoutes:Hn,_internalSetStateDoNotUseOrYouWillBreakYourApp(se){je(se)}},M}function Mxe(e){return e!=null&&("formData"in e&&e.formData!=null||"body"in e&&e.body!==void 0)}function D6(e,t,n,r,i,o){let a,s;if(i){a=[];for(let c of t)if(a.push(c),c.route.id===i){s=c;break}}else a=t,s=t[t.length-1];let l=ZM(r||".",XM(a),bc(e.pathname,n)||e.pathname,o==="path");if(r==null&&(l.search=e.search,l.hash=e.hash),(r==null||r===""||r===".")&&s){let c=hH(l.search);if(s.route.index&&!c)l.search=l.search?l.search.replace(/^\?/,"?index&"):"?index";else if(!s.route.index&&c){let d=new URLSearchParams(l.search),u=d.getAll("index");d.delete("index"),u.filter(m=>m).forEach(m=>d.append("index",m));let p=d.toString();l.search=p?`?${p}`:""}}return n!=="/"&&(l.pathname=gxe({basename:n,pathname:l.pathname})),Zp(l)}function Tz(e,t,n){if(!n||!Mxe(n))return{path:t};if(n.formMethod&&!Yxe(n.formMethod))return{path:t,error:tc(405,{method:n.formMethod})};let r=()=>({path:t,error:tc(400,{type:"invalid-body"})}),o=(n.formMethod||"get").toUpperCase(),a=xre(t);if(n.body!==void 0){if(n.formEncType==="text/plain"){if(!Ls(o))return r();let u=typeof n.body=="string"?n.body:n.body instanceof FormData||n.body instanceof URLSearchParams?Array.from(n.body.entries()).reduce((p,[m,v])=>`${p}${m}=${v} +`,""):String(n.body);return{path:t,submission:{formMethod:o,formAction:a,formEncType:n.formEncType,formData:void 0,json:void 0,text:u}}}else if(n.formEncType==="application/json"){if(!Ls(o))return r();try{let u=typeof n.body=="string"?JSON.parse(n.body):n.body;return{path:t,submission:{formMethod:o,formAction:a,formEncType:n.formEncType,formData:void 0,json:u,text:void 0}}}catch{return r()}}}$n(typeof FormData=="function","FormData is not available in this environment");let s,l;if(n.formData)s=P6(n.formData),l=n.formData;else if(n.body instanceof FormData)s=P6(n.body),l=n.body;else if(n.body instanceof URLSearchParams)s=n.body,l=Dz(s);else if(n.body==null)s=new URLSearchParams,l=new FormData;else try{s=new URLSearchParams(n.body),l=Dz(s)}catch{return r()}let c={formMethod:o,formAction:a,formEncType:n&&n.formEncType||"application/x-www-form-urlencoded",formData:l,json:void 0,text:void 0};if(Ls(c.formMethod))return{path:t,submission:c};let d=um(t);return e&&d.search&&hH(d.search)&&s.append("index",""),d.search=`?${s}`,{path:Zp(d),submission:c}}function kz(e,t,n,r,i,o,a,s,l,c,d,u,p,m,v,x,w,T,k,N){let I=N?wl(N[1])?N[1].error:N[1].data:void 0,M=i.createURL(o.location),A=i.createURL(l),R;if(d&&o.errors){let Y=Object.keys(o.errors)[0];R=a.findIndex(U=>U.route.id===Y)}else if(N&&wl(N[1])){let Y=N[0];R=a.findIndex(U=>U.route.id===Y)-1}let L=N?N[1].statusCode:void 0,B=L&&L>=400,$={currentUrl:M,currentParams:o.matches[0]?.params||{},nextUrl:A,nextParams:a[0].params,...s,actionResult:I,actionStatus:L},W=a.map((Y,U)=>{let{route:X}=Y,q=null;if(R!=null&&U>R?q=!1:X.lazy?q=!0:fH(X)?d?q=R6(X,o.loaderData,o.errors):Dxe(o.loaderData,o.matches[U],Y)&&(q=!0):q=!1,q!==null)return I6(n,r,e,Y,c,t,q);let ne=B?!1:u||M.pathname+M.search===A.pathname+A.search||M.search!==A.search||Rxe(o.matches[U],Y),Z={...$,defaultShouldRevalidate:ne},oe=pN(Y,Z);return I6(n,r,e,Y,c,t,oe,Z)}),V=[];return v.forEach((Y,U)=>{if(d||!a.some(te=>te.route.id===Y.routeId)||m.has(U))return;let X=o.fetchers.get(U),q=X&&X.state!=="idle"&&X.data===void 0,ne=Tp(w,Y.path,T);if(!ne){if(k&&q)return;V.push({key:U,routeId:Y.routeId,path:Y.path,matches:null,match:null,request:null,controller:null});return}if(x.has(U))return;let Z=$A(ne,Y.path),oe=new AbortController,K=dv(i,Y.path,oe.signal),Q=null;if(p.has(U))p.delete(U),Q=Rv(n,r,K,ne,Z,c,t);else if(q)u&&(Q=Rv(n,r,K,ne,Z,c,t));else{let te={...$,defaultShouldRevalidate:B?!1:u};pN(Z,te)&&(Q=Rv(n,r,K,ne,Z,c,t,te))}Q&&V.push({key:U,routeId:Y.routeId,path:Y.path,matches:Q,match:Z,request:K,controller:oe})}),{dsMatches:W,revalidatingFetchers:V}}function fH(e){return e.loader!=null||e.middleware!=null&&e.middleware.length>0}function R6(e,t,n){if(e.lazy)return!0;if(!fH(e))return!1;let r=t!=null&&e.id in t,i=n!=null&&n[e.id]!==void 0;return!r&&i?!1:typeof e.loader=="function"&&e.loader.hydrate===!0?!0:!r&&!i}function Dxe(e,t,n){let r=!t||n.route.id!==t.route.id,i=!e.hasOwnProperty(n.route.id);return r||i}function Rxe(e,t){let n=e.route.path;return e.pathname!==t.pathname||n!=null&&n.endsWith("*")&&e.params["*"]!==t.params["*"]}function pN(e,t){if(e.route.shouldRevalidate){let n=e.route.shouldRevalidate(t);if(typeof n=="boolean")return n}return t.defaultShouldRevalidate}function _z(e,t,n,r,i,o){let a;if(e){let c=r[e];$n(c,`No route found to patch children into: routeId = ${e}`),c.children||(c.children=[]),a=c.children}else a=n;let s=[],l=[];if(t.forEach(c=>{let d=a.find(u=>mre(c,u));d?l.push({existingRoute:d,newRoute:c}):s.push(c)}),s.length>0){let c=WS(s,i,[e||"_","patch",String(a?.length||"0")],r);a.push(...c)}if(o&&l.length>0)for(let c=0;ct.children?.some(i=>mre(n,i))):!1}var Az=new WeakMap,gre=({key:e,route:t,manifest:n,mapRouteProperties:r})=>{let i=n[t.id];if($n(i,"No route found in manifest"),!i.lazy||typeof i.lazy!="object")return;let o=i.lazy[e];if(!o)return;let a=Az.get(i);a||(a={},Az.set(i,a));let s=a[e];if(s)return s;let l=(async()=>{let c=J1e(e),u=i[e]!==void 0&&e!=="hasErrorBoundary";if(c)ji(!c,"Route property "+e+" is not a supported lazy route property. This property will be ignored."),a[e]=Promise.resolve();else if(u)ji(!1,`Route "${i.id}" has a static property "${e}" defined. The lazy property will be ignored.`);else{let p=await o();p!=null&&(Object.assign(i,{[e]:p}),Object.assign(i,r(i)))}typeof i.lazy=="object"&&(i.lazy[e]=void 0,Object.values(i.lazy).every(p=>p===void 0)&&(i.lazy=void 0))})();return a[e]=l,l},Nz=new WeakMap;function Ixe(e,t,n,r,i){let o=n[e.id];if($n(o,"No route found in manifest"),!e.lazy)return{lazyRoutePromise:void 0,lazyHandlerPromise:void 0};if(typeof e.lazy=="function"){let d=Nz.get(o);if(d)return{lazyRoutePromise:d,lazyHandlerPromise:d};let u=(async()=>{$n(typeof e.lazy=="function","No lazy route function found");let p=await e.lazy(),m={};for(let v in p){let x=p[v];if(x===void 0)continue;let w=txe(v),k=o[v]!==void 0&&v!=="hasErrorBoundary";w?ji(!w,"Route property "+v+" is not a supported property to be returned from a lazy route function. This property will be ignored."):k?ji(!k,`Route "${o.id}" has a static property "${v}" defined but its lazy function is also returning a value for this property. The lazy route property "${v}" will be ignored.`):m[v]=x}Object.assign(o,m),Object.assign(o,{...r(o),lazy:void 0})})();return Nz.set(o,u),u.catch(()=>{}),{lazyRoutePromise:u,lazyHandlerPromise:u}}let a=Object.keys(e.lazy),s=[],l;for(let d of a){if(i&&i.includes(d))continue;let u=gre({key:d,route:e,manifest:n,mapRouteProperties:r});u&&(s.push(u),d===t&&(l=u))}let c=s.length>0?Promise.all(s).then(()=>{}):void 0;return c?.catch(()=>{}),l?.catch(()=>{}),{lazyRoutePromise:c,lazyHandlerPromise:l}}async function Oz(e){let t=e.matches.filter(i=>i.shouldLoad),n={};return(await Promise.all(t.map(i=>i.resolve()))).forEach((i,o)=>{n[t[o].route.id]=i}),n}async function Pxe(e){return e.matches.some(t=>t.route.middleware)?yre(e,()=>Oz(e)):Oz(e)}function yre(e,t){return Lxe(e,t,r=>r,Vxe,n);function n(r,i,o){if(o)return Promise.resolve(Object.assign(o.value,{[i]:{type:"error",result:r}}));{let{matches:a}=e,s=Math.min(Math.max(a.findIndex(c=>c.route.id===i),0),Math.max(a.findIndex(c=>c.unstable_shouldCallHandler()),0)),l=kp(a,a[s].route.id).route.id;return Promise.resolve({[l]:{type:"error",result:r}})}}}async function Lxe(e,t,n,r,i){let{matches:o,request:a,params:s,context:l}=e,c=o.flatMap(u=>u.route.middleware?u.route.middleware.map(p=>[u.route.id,p]):[]);return await bre({request:a,params:s,context:l},c,t,n,r,i)}async function bre(e,t,n,r,i,o,a=0){let{request:s}=e;if(s.signal.aborted)throw s.signal.reason??new Error(`Request aborted: ${s.method} ${s.url}`);let l=t[a];if(!l)return await n();let[c,d]=l,u,p=async()=>{if(u)throw new Error("You may only call `next()` once per middleware");try{return u={value:await bre(e,t,n,r,i,o,a+1)},u.value}catch(m){return u={value:await o(m,c,u)},u.value}};try{let m=await d(e,p),v=m!=null?r(m):void 0;return i(v)?v:u?v??u.value:(u={value:await p()},u.value)}catch(m){return await o(m,c,u)}}function vre(e,t,n,r,i){let o=gre({key:"middleware",route:r.route,manifest:t,mapRouteProperties:e}),a=Ixe(r.route,Ls(n.method)?"action":"loader",t,e,i);return{middleware:o,route:a.lazyRoutePromise,handler:a.lazyHandlerPromise}}function I6(e,t,n,r,i,o,a,s=null){let l=!1,c=vre(e,t,n,r,i);return{...r,_lazyPromises:c,shouldLoad:a,unstable_shouldRevalidateArgs:s,unstable_shouldCallHandler(d){return l=!0,s?typeof d=="boolean"?pN(r,{...s,defaultShouldRevalidate:d}):pN(r,s):a},resolve(d){let{lazy:u,loader:p,middleware:m}=r.route,v=l||a||d&&!Ls(n.method)&&(u||p),x=m&&m.length>0&&!p&&!u;return v&&!x?Bxe({request:n,match:r,lazyHandlerPromise:c?.handler,lazyRoutePromise:c?.route,handlerOverride:d,scopedContext:o}):Promise.resolve({type:"data",result:void 0})}}}function Rv(e,t,n,r,i,o,a,s=null){return r.map(l=>l.route.id!==i.route.id?{...l,shouldLoad:!1,unstable_shouldRevalidateArgs:s,unstable_shouldCallHandler:()=>!1,_lazyPromises:vre(e,t,n,l,o),resolve:()=>Promise.resolve({type:"data",result:void 0})}:I6(e,t,n,l,o,a,!0,s))}async function jxe(e,t,n,r,i,o){n.some(c=>c._lazyPromises?.middleware)&&await Promise.all(n.map(c=>c._lazyPromises?.middleware));let a={request:t,params:n[0].params,context:i,matches:n},l=await e({...a,fetcherKey:r,runClientMiddleware:c=>{let d=a;return yre(d,()=>c({...d,fetcherKey:r,runClientMiddleware:()=>{throw new Error("Cannot call `runClientMiddleware()` from within an `runClientMiddleware` handler")}}))}});try{await Promise.all(n.flatMap(c=>[c._lazyPromises?.handler,c._lazyPromises?.route]))}catch{}return l}async function Bxe({request:e,match:t,lazyHandlerPromise:n,lazyRoutePromise:r,handlerOverride:i,scopedContext:o}){let a,s,l=Ls(e.method),c=l?"action":"loader",d=u=>{let p,m=new Promise((w,T)=>p=T);s=()=>p(),e.signal.addEventListener("abort",s);let v=w=>typeof u!="function"?Promise.reject(new Error(`You cannot call the handler for a route which defines a boolean "${c}" [routeId: ${t.route.id}]`)):u({request:e,params:t.params,context:o},...w!==void 0?[w]:[]),x=(async()=>{try{return{type:"data",result:await(i?i(T=>v(T)):v())}}catch(w){return{type:"error",result:w}}})();return Promise.race([x,m])};try{let u=l?t.route.action:t.route.loader;if(n||r)if(u){let p,[m]=await Promise.all([d(u).catch(v=>{p=v}),n,r]);if(p!==void 0)throw p;a=m}else{await n;let p=l?t.route.action:t.route.loader;if(p)[a]=await Promise.all([d(p),r]);else if(c==="action"){let m=new URL(e.url),v=m.pathname+m.search;throw tc(405,{method:e.method,pathname:v,routeId:t.route.id})}else return{type:"data",result:void 0}}else if(u)a=await d(u);else{let p=new URL(e.url),m=p.pathname+p.search;throw tc(404,{pathname:m})}}catch(u){return{type:"error",result:u}}finally{s&&e.signal.removeEventListener("abort",s)}return a}async function $xe(e){let t=e.headers.get("Content-Type");return t&&/\bapplication\/json\b/.test(t)?e.body==null?null:e.json():e.text()}async function Hxe(e){let{result:t,type:n}=e;if(wre(t)){let r;try{r=await $xe(t)}catch(i){return{type:"error",error:i}}return n==="error"?{type:"error",error:new hN(t.status,t.statusText,r),statusCode:t.status,headers:t.headers}:{type:"data",data:r,statusCode:t.status,headers:t.headers}}return n==="error"?Lz(t)?t.data instanceof Error?{type:"error",error:t.data,statusCode:t.init?.status,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:"error",error:new hN(t.init?.status||500,void 0,t.data),statusCode:YS(t)?t.status:void 0,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:"error",error:t,statusCode:YS(t)?t.status:void 0}:Lz(t)?{type:"data",data:t.data,statusCode:t.init?.status,headers:t.init?.headers?new Headers(t.init.headers):void 0}:{type:"data",data:t}}function Fxe(e,t,n,r,i){let o=e.headers.get("Location");if($n(o,"Redirects returned/thrown from loaders/actions must have a Location header"),!dH(o)){let a=r.slice(0,r.findIndex(s=>s.route.id===n)+1);o=D6(new URL(t.url),a,i,o),e.headers.set("Location",o)}return e}function Mz(e,t,n){if(dH(e)){let r=e,i=r.startsWith("//")?new URL(t.protocol+r):new URL(r),o=bc(i.pathname,n)!=null;if(i.origin===t.origin&&o)return i.pathname+i.search+i.hash}return e}function dv(e,t,n,r){let i=e.createURL(xre(t)).toString(),o={signal:n};if(r&&Ls(r.formMethod)){let{formMethod:a,formEncType:s}=r;o.method=a.toUpperCase(),s==="application/json"?(o.headers=new Headers({"Content-Type":s}),o.body=JSON.stringify(r.json)):s==="text/plain"?o.body=r.text:s==="application/x-www-form-urlencoded"&&r.formData?o.body=P6(r.formData):o.body=r.formData}return new Request(i,o)}function P6(e){let t=new URLSearchParams;for(let[n,r]of e.entries())t.append(n,typeof r=="string"?r:r.name);return t}function Dz(e){let t=new FormData;for(let[n,r]of e.entries())t.append(n,r);return t}function Uxe(e,t,n,r=!1,i=!1){let o={},a=null,s,l=!1,c={},d=n&&wl(n[1])?n[1].error:void 0;return e.forEach(u=>{if(!(u.route.id in t))return;let p=u.route.id,m=t[p];if($n(!e0(m),"Cannot handle redirect results in processLoaderData"),wl(m)){let v=m.error;if(d!==void 0&&(v=d,d=void 0),a=a||{},i)a[p]=v;else{let x=kp(e,p);a[x.route.id]==null&&(a[x.route.id]=v)}r||(o[p]=pre),l||(l=!0,s=YS(m.error)?m.error.status:500),m.headers&&(c[p]=m.headers)}else o[p]=m.data,m.statusCode&&m.statusCode!==200&&!l&&(s=m.statusCode),m.headers&&(c[p]=m.headers)}),d!==void 0&&n&&(a={[n[0]]:d},n[2]&&(o[n[2]]=void 0)),{loaderData:o,errors:a,statusCode:s||200,loaderHeaders:c}}function Rz(e,t,n,r,i,o){let{loaderData:a,errors:s}=Uxe(t,n,r);return i.filter(l=>!l.matches||l.matches.some(c=>c.shouldLoad)).forEach(l=>{let{key:c,match:d,controller:u}=l;if(u&&u.signal.aborted)return;let p=o[c];if($n(p,"Did not find corresponding fetcher result"),wl(p)){let m=kp(e.matches,d?.route.id);s&&s[m.route.id]||(s={...s,[m.route.id]:p.error}),e.fetchers.delete(c)}else if(e0(p))$n(!1,"Unhandled fetcher revalidation redirect");else{let m=Tf(p.data);e.fetchers.set(c,m)}}),{loaderData:a,errors:s}}function Iz(e,t,n,r){let i=Object.entries(t).filter(([,o])=>o!==pre).reduce((o,[a,s])=>(o[a]=s,o),{});for(let o of n){let a=o.route.id;if(!t.hasOwnProperty(a)&&e.hasOwnProperty(a)&&o.route.loader&&(i[a]=e[a]),r&&r.hasOwnProperty(a))break}return i}function Pz(e){return e?wl(e[1])?{actionData:{}}:{actionData:{[e[0]]:e[1].data}}:{}}function kp(e,t){return(t?e.slice(0,e.findIndex(r=>r.route.id===t)+1):[...e]).reverse().find(r=>r.route.hasErrorBoundary===!0)||e[0]}function N_(e){let t=e.length===1?e[0]:e.find(n=>n.index||!n.path||n.path==="/")||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:t}],route:t}}function tc(e,{pathname:t,routeId:n,method:r,type:i,message:o}={}){let a="Unknown Server Error",s="Unknown @remix-run/router error";return e===400?(a="Bad Request",r&&t&&n?s=`You made a ${r} request to "${t}" but did not provide a \`loader\` for route "${n}", so there is no way to handle the request.`:i==="invalid-body"&&(s="Unable to encode submission body")):e===403?(a="Forbidden",s=`Route "${n}" does not match URL "${t}"`):e===404?(a="Not Found",s=`No route matches URL "${t}"`):e===405&&(a="Method Not Allowed",r&&t&&n?s=`You made a ${r.toUpperCase()} request to "${t}" but did not provide an \`action\` for route "${n}", so there is no way to handle the request.`:r&&(s=`Invalid request method "${r.toUpperCase()}"`)),new hN(e||500,a,new Error(s),!0)}function O_(e){let t=Object.entries(e);for(let n=t.length-1;n>=0;n--){let[r,i]=t[n];if(e0(i))return{key:r,result:i}}}function xre(e){let t=typeof e=="string"?um(e):e;return Zp({...t,hash:""})}function zxe(e,t){return e.pathname!==t.pathname||e.search!==t.search?!1:e.hash===""?t.hash!=="":e.hash===t.hash?!0:t.hash!==""}function Vxe(e){return e!=null&&typeof e=="object"&&Object.entries(e).every(([t,n])=>typeof t=="string"&&qxe(n))}function qxe(e){return e!=null&&typeof e=="object"&&"type"in e&&"result"in e&&(e.type==="data"||e.type==="error")}function Wxe(e){return wre(e.result)&&Txe.has(e.result.status)}function wl(e){return e.type==="error"}function e0(e){return(e&&e.type)==="redirect"}function Lz(e){return typeof e=="object"&&e!=null&&"type"in e&&"data"in e&&"init"in e&&e.type==="DataWithResponseInit"}function wre(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.headers=="object"&&typeof e.body<"u"}function Yxe(e){return Cxe.has(e.toUpperCase())}function Ls(e){return Exe.has(e.toUpperCase())}function hH(e){return new URLSearchParams(e).getAll("index").some(t=>t==="")}function $A(e,t){let n=typeof t=="string"?um(t).search:t.search;if(e[e.length-1].route.index&&hH(n||""))return e[e.length-1];let r=dre(e);return r[r.length-1]}function jz(e){let{formMethod:t,formAction:n,formEncType:r,text:i,formData:o,json:a}=e;if(!(!t||!n||!r)){if(i!=null)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:void 0,text:i};if(o!=null)return{formMethod:t,formAction:n,formEncType:r,formData:o,json:void 0,text:void 0};if(a!==void 0)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:a,text:void 0}}}function EI(e,t){return t?{state:"loading",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}:{state:"loading",location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function Gxe(e,t){return{state:"submitting",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}}function CE(e,t){return e?{state:"loading",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function Kxe(e,t){return{state:"submitting",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:void 0}}function Tf(e){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function Xxe(e,t){try{let n=e.sessionStorage.getItem(hre);if(n){let r=JSON.parse(n);for(let[i,o]of Object.entries(r||{}))o&&Array.isArray(o)&&t.set(i,new Set(o||[]))}}catch{}}function Zxe(e,t){if(t.size>0){let n={};for(let[r,i]of t)n[r]=[...i];try{e.sessionStorage.setItem(hre,JSON.stringify(n))}catch(r){ji(!1,`Failed to save applied view transitions in sessionStorage (${r}).`)}}}function Qxe(){let e,t,n=new Promise((r,i)=>{e=async o=>{r(o);try{await n}catch{}},t=async o=>{i(o);try{await n}catch{}}});return{promise:n,resolve:e,reject:t}}var Z0=C.createContext(null);Z0.displayName="DataRouter";var pT=C.createContext(null);pT.displayName="DataRouterState";C.createContext(!1);var pH=C.createContext({isTransitioning:!1});pH.displayName="ViewTransition";var Ere=C.createContext(new Map);Ere.displayName="Fetchers";var Jxe=C.createContext(null);Jxe.displayName="Await";var wu=C.createContext(null);wu.displayName="Navigation";var QM=C.createContext(null);QM.displayName="Location";var Eu=C.createContext({outlet:null,matches:[],isDataRoute:!1});Eu.displayName="Route";var mH=C.createContext(null);mH.displayName="RouteError";function ewe(e,{relative:t}={}){$n(G1(),"useHref() may be used only in the context of a component.");let{basename:n,navigator:r}=C.useContext(wu),{hash:i,pathname:o,search:a}=mT(e,{relative:t}),s=o;return n!=="/"&&(s=o==="/"?n:xd([n,o])),r.createHref({pathname:s,search:a,hash:i})}function G1(){return C.useContext(QM)!=null}function Su(){return $n(G1(),"useLocation() may be used only in the context of a component."),C.useContext(QM).location}var Sre="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Cre(e){C.useContext(wu).static||C.useLayoutEffect(e)}function Q0(){let{isDataRoute:e}=C.useContext(Eu);return e?hwe():twe()}function twe(){$n(G1(),"useNavigate() may be used only in the context of a component.");let e=C.useContext(Z0),{basename:t,navigator:n}=C.useContext(wu),{matches:r}=C.useContext(Eu),{pathname:i}=Su(),o=JSON.stringify(XM(r)),a=C.useRef(!1);return Cre(()=>{a.current=!0}),C.useCallback((l,c={})=>{if(ji(a.current,Sre),!a.current)return;if(typeof l=="number"){n.go(l);return}let d=ZM(l,JSON.parse(o),i,c.relative==="path");e==null&&t!=="/"&&(d.pathname=d.pathname==="/"?t:xd([t,d.pathname])),(c.replace?n.replace:n.push)(d,c.state,c)},[t,n,o,i,e])}C.createContext(null);function oh(){let{matches:e}=C.useContext(Eu),t=e[e.length-1];return t?t.params:{}}function mT(e,{relative:t}={}){let{matches:n}=C.useContext(Eu),{pathname:r}=Su(),i=JSON.stringify(XM(n));return C.useMemo(()=>ZM(e,JSON.parse(i),r,t==="path"),[e,i,r,t])}function nwe(e,t,n,r,i){$n(G1(),"useRoutes() may be used only in the context of a component.");let{navigator:o}=C.useContext(wu),{matches:a}=C.useContext(Eu),s=a[a.length-1],l=s?s.params:{},c=s?s.pathname:"/",d=s?s.pathnameBase:"/",u=s&&s.route;{let k=u&&u.path||"";Tre(c,!u||k.endsWith("*")||k.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${c}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. + +Please change the parent to .`)}let p=Su(),m;m=p;let v=m.pathname||"/",x=v;if(d!=="/"){let k=d.replace(/^\//,"").split("/");x="/"+v.replace(/^\//,"").split("/").slice(k.length).join("/")}let w=Tp(e,{pathname:x});return ji(u||w!=null,`No routes matched location "${m.pathname}${m.search}${m.hash}" `),ji(w==null||w[w.length-1].route.element!==void 0||w[w.length-1].route.Component!==void 0||w[w.length-1].route.lazy!==void 0,`Matched leaf route at location "${m.pathname}${m.search}${m.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`),swe(w&&w.map(k=>Object.assign({},k,{params:Object.assign({},l,k.params),pathname:xd([d,o.encodeLocation?o.encodeLocation(k.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:k.pathname]),pathnameBase:k.pathnameBase==="/"?d:xd([d,o.encodeLocation?o.encodeLocation(k.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:k.pathnameBase])})),a,n,r,i)}function rwe(){let e=fwe(),t=YS(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r="rgba(200,200,200, 0.5)",i={padding:"0.5rem",backgroundColor:r},o={padding:"2px 4px",backgroundColor:r},a=null;return console.error("Error handled by React Router default ErrorBoundary:",e),a=C.createElement(C.Fragment,null,C.createElement("p",null,"💿 Hey developer 👋"),C.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",C.createElement("code",{style:o},"ErrorBoundary")," or"," ",C.createElement("code",{style:o},"errorElement")," prop on your route.")),C.createElement(C.Fragment,null,C.createElement("h2",null,"Unexpected Application Error!"),C.createElement("h3",{style:{fontStyle:"italic"}},t),n?C.createElement("pre",{style:i},n):null,a)}var iwe=C.createElement(rwe,null),owe=class extends C.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!=="idle"&&e.revalidation==="idle"?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error!==void 0?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.unstable_onError?this.props.unstable_onError(e,t):console.error("React Router caught the following error during render",e)}render(){return this.state.error!==void 0?C.createElement(Eu.Provider,{value:this.props.routeContext},C.createElement(mH.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function awe({routeContext:e,match:t,children:n}){let r=C.useContext(Z0);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),C.createElement(Eu.Provider,{value:e},n)}function swe(e,t=[],n=null,r=null,i=null){if(e==null){if(!n)return null;if(n.errors)e=n.matches;else if(t.length===0&&!n.initialized&&n.matches.length>0)e=n.matches;else return null}let o=e,a=n?.errors;if(a!=null){let c=o.findIndex(d=>d.route.id&&a?.[d.route.id]!==void 0);$n(c>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(a).join(",")}`),o=o.slice(0,Math.min(o.length,c+1))}let s=!1,l=-1;if(n)for(let c=0;c=0?o=o.slice(0,l+1):o=[o[0]];break}}}return o.reduceRight((c,d,u)=>{let p,m=!1,v=null,x=null;n&&(p=a&&d.route.id?a[d.route.id]:void 0,v=d.route.errorElement||iwe,s&&(l<0&&u===0?(Tre("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),m=!0,x=null):l===u&&(m=!0,x=d.route.hydrateFallbackElement||null)));let w=t.concat(o.slice(0,u+1)),T=()=>{let k;return p?k=v:m?k=x:d.route.Component?k=C.createElement(d.route.Component,null):d.route.element?k=d.route.element:k=c,C.createElement(awe,{match:d,routeContext:{outlet:c,matches:w,isDataRoute:n!=null},children:k})};return n&&(d.route.ErrorBoundary||d.route.errorElement||u===0)?C.createElement(owe,{location:n.location,revalidation:n.revalidation,component:v,error:p,children:T(),routeContext:{outlet:null,matches:w,isDataRoute:!0},unstable_onError:r}):T()},null)}function gH(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function lwe(e){let t=C.useContext(Z0);return $n(t,gH(e)),t}function cwe(e){let t=C.useContext(pT);return $n(t,gH(e)),t}function uwe(e){let t=C.useContext(Eu);return $n(t,gH(e)),t}function yH(e){let t=uwe(e),n=t.matches[t.matches.length-1];return $n(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function dwe(){return yH("useRouteId")}function fwe(){let e=C.useContext(mH),t=cwe("useRouteError"),n=yH("useRouteError");return e!==void 0?e:t.errors?.[n]}function hwe(){let{router:e}=lwe("useNavigate"),t=yH("useNavigate"),n=C.useRef(!1);return Cre(()=>{n.current=!0}),C.useCallback(async(i,o={})=>{ji(n.current,Sre),n.current&&(typeof i=="number"?e.navigate(i):await e.navigate(i,{fromRouteId:t,...o}))},[e,t])}var Bz={};function Tre(e,t,n){!t&&!Bz[e]&&(Bz[e]=!0,ji(!1,n))}var $z={};function Hz(e,t){!e&&!$z[t]&&($z[t]=!0,console.warn(t))}function pwe(e){let t={hasErrorBoundary:e.hasErrorBoundary||e.ErrorBoundary!=null||e.errorElement!=null};return e.Component&&(e.element&&ji(!1,"You should not include both `Component` and `element` on your route - `Component` will be used."),Object.assign(t,{element:C.createElement(e.Component),Component:void 0})),e.HydrateFallback&&(e.hydrateFallbackElement&&ji(!1,"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used."),Object.assign(t,{hydrateFallbackElement:C.createElement(e.HydrateFallback),HydrateFallback:void 0})),e.ErrorBoundary&&(e.errorElement&&ji(!1,"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used."),Object.assign(t,{errorElement:C.createElement(e.ErrorBoundary),ErrorBoundary:void 0})),t}var mwe=["HydrateFallback","hydrateFallbackElement"],gwe=class{constructor(){this.status="pending",this.promise=new Promise((e,t)=>{this.resolve=n=>{this.status==="pending"&&(this.status="resolved",e(n))},this.reject=n=>{this.status==="pending"&&(this.status="rejected",t(n))}})}};function ywe({router:e,flushSync:t,unstable_onError:n}){let[r,i]=C.useState(e.state),[o,a]=C.useState(),[s,l]=C.useState({isTransitioning:!1}),[c,d]=C.useState(),[u,p]=C.useState(),[m,v]=C.useState(),x=C.useRef(new Map),w=C.useCallback(M=>{i(A=>(M.errors&&n&&Object.entries(M.errors).forEach(([R,L])=>{A.errors?.[R]!==L&&n(L)}),M))},[n]),T=C.useCallback((M,{deletedFetchers:A,flushSync:R,viewTransitionOpts:L})=>{M.fetchers.forEach(($,W)=>{$.data!==void 0&&x.current.set(W,$.data)}),A.forEach($=>x.current.delete($)),Hz(R===!1||t!=null,'You provided the `flushSync` option to a router update, but you are not using the `` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable. Please update your app to `import { RouterProvider } from "react-router/dom"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.');let B=e.window!=null&&e.window.document!=null&&typeof e.window.document.startViewTransition=="function";if(Hz(L==null||B,"You provided the `viewTransition` option to a router update, but you do not appear to be running in a DOM environment as `window.startViewTransition` is not available."),!L||!B){t&&R?t(()=>w(M)):C.startTransition(()=>w(M));return}if(t&&R){t(()=>{u&&(c&&c.resolve(),u.skipTransition()),l({isTransitioning:!0,flushSync:!0,currentLocation:L.currentLocation,nextLocation:L.nextLocation})});let $=e.window.document.startViewTransition(()=>{t(()=>w(M))});$.finished.finally(()=>{t(()=>{d(void 0),p(void 0),a(void 0),l({isTransitioning:!1})})}),t(()=>p($));return}u?(c&&c.resolve(),u.skipTransition(),v({state:M,currentLocation:L.currentLocation,nextLocation:L.nextLocation})):(a(M),l({isTransitioning:!0,flushSync:!1,currentLocation:L.currentLocation,nextLocation:L.nextLocation}))},[e.window,t,u,c,w]);C.useLayoutEffect(()=>e.subscribe(T),[e,T]),C.useEffect(()=>{s.isTransitioning&&!s.flushSync&&d(new gwe)},[s]),C.useEffect(()=>{if(c&&o&&e.window){let M=o,A=c.promise,R=e.window.document.startViewTransition(async()=>{C.startTransition(()=>w(M)),await A});R.finished.finally(()=>{d(void 0),p(void 0),a(void 0),l({isTransitioning:!1})}),p(R)}},[o,c,e.window,w]),C.useEffect(()=>{c&&o&&r.location.key===o.location.key&&c.resolve()},[c,u,r.location,o]),C.useEffect(()=>{!s.isTransitioning&&m&&(a(m.state),l({isTransitioning:!0,flushSync:!1,currentLocation:m.currentLocation,nextLocation:m.nextLocation}),v(void 0))},[s.isTransitioning,m]);let k=C.useMemo(()=>({createHref:e.createHref,encodeLocation:e.encodeLocation,go:M=>e.navigate(M),push:(M,A,R)=>e.navigate(M,{state:A,preventScrollReset:R?.preventScrollReset}),replace:(M,A,R)=>e.navigate(M,{replace:!0,state:A,preventScrollReset:R?.preventScrollReset})}),[e]),N=e.basename||"/",I=C.useMemo(()=>({router:e,navigator:k,static:!1,basename:N,unstable_onError:n}),[e,k,N,n]);return C.createElement(C.Fragment,null,C.createElement(Z0.Provider,{value:I},C.createElement(pT.Provider,{value:r},C.createElement(Ere.Provider,{value:x.current},C.createElement(pH.Provider,{value:s},C.createElement(xwe,{basename:N,location:r.location,navigationType:r.historyAction,navigator:k},C.createElement(bwe,{routes:e.routes,future:e.future,state:r,unstable_onError:n})))))),null)}var bwe=C.memo(vwe);function vwe({routes:e,future:t,state:n,unstable_onError:r}){return nwe(e,void 0,n,r,t)}function Fz({to:e,replace:t,state:n,relative:r}){$n(G1()," may be used only in the context of a component.");let{static:i}=C.useContext(wu);ji(!i," must not be used on the initial render in a . This is a no-op, but you should modify your code so the is only ever rendered in response to some user interaction or state change.");let{matches:o}=C.useContext(Eu),{pathname:a}=Su(),s=Q0(),l=ZM(e,XM(o),a,r==="path"),c=JSON.stringify(l);return C.useEffect(()=>{s(JSON.parse(c),{replace:t,state:n,relative:r})},[s,c,r,t,n]),null}function xwe({basename:e="/",children:t=null,location:n,navigationType:r="POP",navigator:i,static:o=!1}){$n(!G1(),"You cannot render a inside another . You should never have more than one in your app.");let a=e.replace(/^\/*/,"/"),s=C.useMemo(()=>({basename:a,navigator:i,static:o,future:{}}),[a,i,o]);typeof n=="string"&&(n=um(n));let{pathname:l="/",search:c="",hash:d="",state:u=null,key:p="default"}=n,m=C.useMemo(()=>{let v=bc(l,a);return v==null?null:{location:{pathname:v,search:c,hash:d,state:u,key:p},navigationType:r}},[a,l,c,d,u,p,r]);return ji(m!=null,` is not able to match the URL "${l}${c}${d}" because it does not start with the basename, so the won't render anything.`),m==null?null:C.createElement(wu.Provider,{value:s},C.createElement(QM.Provider,{children:t,value:m}))}var HA="get",FA="application/x-www-form-urlencoded";function JM(e){return e!=null&&typeof e.tagName=="string"}function wwe(e){return JM(e)&&e.tagName.toLowerCase()==="button"}function Ewe(e){return JM(e)&&e.tagName.toLowerCase()==="form"}function Swe(e){return JM(e)&&e.tagName.toLowerCase()==="input"}function Cwe(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function Twe(e,t){return e.button===0&&(!t||t==="_self")&&!Cwe(e)}function L6(e=""){return new URLSearchParams(typeof e=="string"||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(i=>[n,i]):[[n,r]])},[]))}function kwe(e,t){let n=L6(e);return t&&t.forEach((r,i)=>{n.has(i)||t.getAll(i).forEach(o=>{n.append(i,o)})}),n}var M_=null;function _we(){if(M_===null)try{new FormData(document.createElement("form"),0),M_=!1}catch{M_=!0}return M_}var Awe=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function SI(e){return e!=null&&!Awe.has(e)?(ji(!1,`"${e}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${FA}"`),null):e}function Nwe(e,t){let n,r,i,o,a;if(Ewe(e)){let s=e.getAttribute("action");r=s?bc(s,t):null,n=e.getAttribute("method")||HA,i=SI(e.getAttribute("enctype"))||FA,o=new FormData(e)}else if(wwe(e)||Swe(e)&&(e.type==="submit"||e.type==="image")){let s=e.form;if(s==null)throw new Error('Cannot submit a