UNPKG

@nlabs/gothamjs

Version:
1 lines 211 kB
"use strict";(self.webpackChunk_nlabs_gothamjs=self.webpackChunk_nlabs_gothamjs||[]).push([[253],{"./node_modules/@nlabs/arkhamjs-middleware-logger/lib/index.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{V:function(){return h},G:function(){return n}});var d,lib=__webpack_require__("./node_modules/@nlabs/utils/lib/index.js"),n=((d=n||{})[d.DISABLED=0]="DISABLED",d[d.LOGS=1]="LOGS",d[d.DISPATCH=2]="DISPATCH",d);class h{name="Logger";previousStore={};defaultOptions={debugLevel:n.DISABLED};options=this.defaultOptions;constructor(o){this.config=this.config.bind(this),this.debugError=this.debugError.bind(this),this.debugInfo=this.debugInfo.bind(this),this.debugLog=this.debugLog.bind(this),this.enableDebugger=this.enableDebugger.bind(this),this.getOptions=this.getOptions.bind(this),this.postDispatch=this.postDispatch.bind(this),this.preDispatch=this.preDispatch.bind(this),this.config(o)}config(o){this.options={...this.defaultOptions,...o}}debugError(...o){const{debugErrorFnc:e,debugLevel:t}=this.options;e&&e(t,...o)}debugInfo(...o){const{debugInfoFnc:e,debugLevel:t}=this.options;e&&e(t,...o)}debugLog(...o){const{debugLogFnc:e,debugLevel:t}=this.options;e&&e(t,...o)}enableDebugger(o=n.DISPATCH){this.options={...this.options,debugLevel:o}}getOptions(){return this.options}preDispatch(o,e){return this.previousStore=e,Promise.resolve(o)}postDispatch(o,e){const{debugLevel:t}=this.options;if(t&&t>n.LOGS){const{type:p}=o;(0,lib.n4)(e,this.previousStore),(0,lib.mg)(e)}return Promise.resolve(o)}}},"./node_modules/@nlabs/arkhamjs-storage-browser/lib/BrowserStorage/BrowserStorage.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{s:function(){return a}});const n=i=>!!i.ttl&&Date.now()-i.timestamp>i.ttl,l=i=>new Blob([i]).size,g=i=>{try{return JSON.parse(i)}catch{return null}};class a{static window=typeof window<"u"?window:{};options;storageCache=new Map;storage;constructor(e={}){this.options={compression:!1,maxSize:5242880,prefix:"arkhamjs_",ttl:864e5,type:"session",...e},this.storage=this.getStorage()}static delLocalData(e){try{const t=a.window.localStorage;if(t)return t.removeItem(e),!0}catch{}return!1}static delSessionData(e){try{const t=a.window.sessionStorage;if(t)return t.removeItem(e),!0}catch{}return!1}static getLocalData(e){try{const t=a.window.localStorage;if(t){const r=t.getItem(e);return r?JSON.parse(r):null}}catch{}return null}static getSessionData(e){try{const t=a.window.sessionStorage;if(t){const r=t.getItem(e);return r?JSON.parse(r):null}}catch{}return null}static setLocalData(e,t){try{const r=a.window.localStorage;if(r)return r.setItem(e,JSON.stringify(t)),!0}catch{}return!1}static setSessionData(e,t){try{const r=a.window.sessionStorage;if(r)return r.setItem(e,JSON.stringify(t)),!0}catch{}return!1}static getLocalStorage(){try{return a.window.localStorage||null}catch{return null}}static getSessionStorage(){try{return a.window.sessionStorage||null}catch{return null}}async getStorageData(e){if(!this.isStorageAvailable())return null;const t=this.getPrefixedKey(e);if(this.storageCache.has(t))return this.storageCache.get(t);try{const r=this.storage.getItem(t);if(!r)return null;const s=g(r);return s?n(s)?(this.storage.removeItem(t),this.storageCache.delete(t),null):(this.storageCache.set(t,s.value),s.value):null}catch{return null}}async setStorageData(e,t){if(!this.isStorageAvailable())return!1;const r=this.getPrefixedKey(e);try{Math.random()<.1&&this.cleanExpiredData();const s={timestamp:Date.now(),ttl:this.options.ttl,value:t},o=this.options.compression?(i=>{const e=JSON.stringify(i);return e.length,e})(s):JSON.stringify(s);return!!this.validateSize(o)&&(this.storage.setItem(r,o),this.storageCache.set(r,t),!0)}catch{return!1}}async removeStorageData(e){if(!this.isStorageAvailable())return!1;const t=this.getPrefixedKey(e);try{return this.storage.removeItem(t),this.storageCache.delete(t),!0}catch{return!1}}async clearStorageData(){if(!this.isStorageAvailable())return!1;try{const e=[];for(let t=0;t<this.storage.length;t++){const r=this.storage.key(t);r?.startsWith(this.options.prefix)&&e.push(r)}return e.forEach(t=>{this.storage.removeItem(t),this.storageCache.delete(t)}),!0}catch{return!1}}getStorageStats(){if(!this.isStorageAvailable())return{available:0,total:0,used:0};let e=0;const t=[];for(let r=0;r<this.storage.length;r++){const s=this.storage.key(r);if(s?.startsWith(this.options.prefix)){t.push(s);const o=this.storage.getItem(s);o&&(e+=l(o))}}return{available:this.options.maxSize-e,total:this.options.maxSize,used:e}}getStorage(){try{const{type:e}=this.options;return("local"===e?a.window.localStorage:a.window.sessionStorage)||null}catch{return null}}getPrefixedKey(e){return`${this.options.prefix}${e}`}isStorageAvailable(){return null!==this.storage}validateSize(e){return l(e)<=this.options.maxSize}cleanExpiredData(){if(!this.isStorageAvailable())return;const e=[];for(let t=0;t<this.storage.length;t++){const r=this.storage.key(t);r?.startsWith(this.options.prefix)&&e.push(r)}e.forEach(t=>{try{const r=this.storage.getItem(t);if(r){const s=g(r);s&&n(s)&&(this.storage.removeItem(t),this.storageCache.delete(t))}}catch{this.storage.removeItem(t),this.storageCache.delete(t)}})}}},"./node_modules/cookie/dist/index.js":function(__unused_webpack_module,exports){const cookieNameRegExp=/^[\u0021-\u003A\u003C\u003E-\u007E]+$/,cookieValueRegExp=/^[\u0021-\u003A\u003C-\u007E]*$/,domainValueRegExp=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,pathValueRegExp=/^[\u0020-\u003A\u003D-\u007E]*$/,__toString=Object.prototype.toString,NullObject=(()=>{const C=function(){};return C.prototype=Object.create(null),C})();function startIndex(str,index,max){do{const code=str.charCodeAt(index);if(32!==code&&9!==code)return index}while(++index<max);return max}function endIndex(str,index,min){for(;index>min;){const code=str.charCodeAt(--index);if(32!==code&&9!==code)return index+1}return min}function decode(str){if(-1===str.indexOf("%"))return str;try{return decodeURIComponent(str)}catch(e){return str}}},"./node_modules/i18next/dist/esm/i18next.js":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{Q_:function(){return createInstance}});const isString=obj=>"string"==typeof obj,defer=()=>{let res,rej;const promise=new Promise((resolve,reject)=>{res=resolve,rej=reject});return promise.resolve=res,promise.reject=rej,promise},makeString=object=>null==object?"":""+object,lastOfPathSeparatorRegExp=/###/g,cleanKey=key=>key&&key.indexOf("###")>-1?key.replace(lastOfPathSeparatorRegExp,"."):key,canNotTraverseDeeper=object=>!object||isString(object),getLastOfPath=(object,path,Empty)=>{const stack=isString(path)?path.split("."):path;let stackIndex=0;for(;stackIndex<stack.length-1;){if(canNotTraverseDeeper(object))return{};const key=cleanKey(stack[stackIndex]);!object[key]&&Empty&&(object[key]=new Empty),object=Object.prototype.hasOwnProperty.call(object,key)?object[key]:{},++stackIndex}return canNotTraverseDeeper(object)?{}:{obj:object,k:cleanKey(stack[stackIndex])}},setPath=(object,path,newValue)=>{const{obj:obj,k:k}=getLastOfPath(object,path,Object);if(void 0!==obj||1===path.length)return void(obj[k]=newValue);let e=path[path.length-1],p=path.slice(0,path.length-1),last=getLastOfPath(object,p,Object);for(;void 0===last.obj&&p.length;)e=`${p[p.length-1]}.${e}`,p=p.slice(0,p.length-1),last=getLastOfPath(object,p,Object),last?.obj&&void 0!==last.obj[`${last.k}.${e}`]&&(last.obj=void 0);last.obj[`${last.k}.${e}`]=newValue},getPath=(object,path)=>{const{obj:obj,k:k}=getLastOfPath(object,path);if(obj&&Object.prototype.hasOwnProperty.call(obj,k))return obj[k]},deepExtend=(target,source,overwrite)=>{for(const prop in source)"__proto__"!==prop&&"constructor"!==prop&&(prop in target?isString(target[prop])||target[prop]instanceof String||isString(source[prop])||source[prop]instanceof String?overwrite&&(target[prop]=source[prop]):deepExtend(target[prop],source[prop],overwrite):target[prop]=source[prop]);return target},regexEscape=str=>str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var _entityMap={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"};const escape=data=>isString(data)?data.replace(/[&<>"'\/]/g,s=>_entityMap[s]):data;const chars=[" ",",","?","!",";"],looksLikeObjectPathRegExpCache=new class RegExpCache{constructor(capacity){this.capacity=capacity,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(pattern){const regExpFromCache=this.regExpMap.get(pattern);if(void 0!==regExpFromCache)return regExpFromCache;const regExpNew=new RegExp(pattern);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(pattern,regExpNew),this.regExpQueue.push(pattern),regExpNew}}(20),deepFind=(obj,path,keySeparator=".")=>{if(!obj)return;if(obj[path]){if(!Object.prototype.hasOwnProperty.call(obj,path))return;return obj[path]}const tokens=path.split(keySeparator);let current=obj;for(let i=0;i<tokens.length;){if(!current||"object"!=typeof current)return;let next,nextPath="";for(let j=i;j<tokens.length;++j)if(j!==i&&(nextPath+=keySeparator),nextPath+=tokens[j],next=current[nextPath],void 0!==next){if(["string","number","boolean"].indexOf(typeof next)>-1&&j<tokens.length-1)continue;i+=j-i+1;break}current=next}return current},getCleanedCode=code=>code?.replace("_","-"),consoleLogger={type:"logger",log(args){this.output("log",args)},warn(args){this.output("warn",args)},error(args){this.output("error",args)},output(type,args){console?.[type]?.apply?.(console,args)}};class Logger{constructor(concreteLogger,options={}){this.init(concreteLogger,options)}init(concreteLogger,options={}){this.prefix=options.prefix||"i18next:",this.logger=concreteLogger||consoleLogger,this.options=options,this.debug=options.debug}log(...args){return this.forward(args,"log","",!0)}warn(...args){return this.forward(args,"warn","",!0)}error(...args){return this.forward(args,"error","")}deprecate(...args){return this.forward(args,"warn","WARNING DEPRECATED: ",!0)}forward(args,lvl,prefix,debugOnly){return debugOnly&&!this.debug?null:(isString(args[0])&&(args[0]=`${prefix}${this.prefix} ${args[0]}`),this.logger[lvl](args))}create(moduleName){return new Logger(this.logger,{prefix:`${this.prefix}:${moduleName}:`,...this.options})}clone(options){return(options=options||this.options).prefix=options.prefix||this.prefix,new Logger(this.logger,options)}}var baseLogger=new Logger;class EventEmitter{constructor(){this.observers={}}on(events,listener){return events.split(" ").forEach(event=>{this.observers[event]||(this.observers[event]=new Map);const numListeners=this.observers[event].get(listener)||0;this.observers[event].set(listener,numListeners+1)}),this}off(event,listener){this.observers[event]&&(listener?this.observers[event].delete(listener):delete this.observers[event])}emit(event,...args){if(this.observers[event]){Array.from(this.observers[event].entries()).forEach(([observer,numTimesAdded])=>{for(let i=0;i<numTimesAdded;i++)observer(...args)})}if(this.observers["*"]){Array.from(this.observers["*"].entries()).forEach(([observer,numTimesAdded])=>{for(let i=0;i<numTimesAdded;i++)observer.apply(observer,[event,...args])})}}}class ResourceStore extends EventEmitter{constructor(data,options={ns:["translation"],defaultNS:"translation"}){super(),this.data=data||{},this.options=options,void 0===this.options.keySeparator&&(this.options.keySeparator="."),void 0===this.options.ignoreJSONStructure&&(this.options.ignoreJSONStructure=!0)}addNamespaces(ns){this.options.ns.indexOf(ns)<0&&this.options.ns.push(ns)}removeNamespaces(ns){const index=this.options.ns.indexOf(ns);index>-1&&this.options.ns.splice(index,1)}getResource(lng,ns,key,options={}){const keySeparator=void 0!==options.keySeparator?options.keySeparator:this.options.keySeparator,ignoreJSONStructure=void 0!==options.ignoreJSONStructure?options.ignoreJSONStructure:this.options.ignoreJSONStructure;let path;lng.indexOf(".")>-1?path=lng.split("."):(path=[lng,ns],key&&(Array.isArray(key)?path.push(...key):isString(key)&&keySeparator?path.push(...key.split(keySeparator)):path.push(key)));const result=getPath(this.data,path);return!result&&!ns&&!key&&lng.indexOf(".")>-1&&(lng=path[0],ns=path[1],key=path.slice(2).join(".")),!result&&ignoreJSONStructure&&isString(key)?deepFind(this.data?.[lng]?.[ns],key,keySeparator):result}addResource(lng,ns,key,value,options={silent:!1}){const keySeparator=void 0!==options.keySeparator?options.keySeparator:this.options.keySeparator;let path=[lng,ns];key&&(path=path.concat(keySeparator?key.split(keySeparator):key)),lng.indexOf(".")>-1&&(path=lng.split("."),value=ns,ns=path[1]),this.addNamespaces(ns),setPath(this.data,path,value),options.silent||this.emit("added",lng,ns,key,value)}addResources(lng,ns,resources,options={silent:!1}){for(const m in resources)(isString(resources[m])||Array.isArray(resources[m]))&&this.addResource(lng,ns,m,resources[m],{silent:!0});options.silent||this.emit("added",lng,ns,resources)}addResourceBundle(lng,ns,resources,deep,overwrite,options={silent:!1,skipCopy:!1}){let path=[lng,ns];lng.indexOf(".")>-1&&(path=lng.split("."),deep=resources,resources=ns,ns=path[1]),this.addNamespaces(ns);let pack=getPath(this.data,path)||{};options.skipCopy||(resources=JSON.parse(JSON.stringify(resources))),deep?deepExtend(pack,resources,overwrite):pack={...pack,...resources},setPath(this.data,path,pack),options.silent||this.emit("added",lng,ns,resources)}removeResourceBundle(lng,ns){this.hasResourceBundle(lng,ns)&&delete this.data[lng][ns],this.removeNamespaces(ns),this.emit("removed",lng,ns)}hasResourceBundle(lng,ns){return void 0!==this.getResource(lng,ns)}getResourceBundle(lng,ns){return ns||(ns=this.options.defaultNS),this.getResource(lng,ns)}getDataByLanguage(lng){return this.data[lng]}hasLanguageSomeTranslations(lng){const data=this.getDataByLanguage(lng);return!!(data&&Object.keys(data)||[]).find(v=>data[v]&&Object.keys(data[v]).length>0)}toJSON(){return this.data}}var postProcessor={processors:{},addPostProcessor(module){this.processors[module.name]=module},handle(processors,value,key,options,translator){return processors.forEach(processor=>{value=this.processors[processor]?.process(value,key,options,translator)??value}),value}};const checkedLoadedFor={},shouldHandleAsObject=res=>!isString(res)&&"boolean"!=typeof res&&"number"!=typeof res;class Translator extends EventEmitter{constructor(services,options={}){super(),((a,s,t)=>{a.forEach(m=>{s[m]&&(t[m]=s[m])})})(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],services,this),this.options=options,void 0===this.options.keySeparator&&(this.options.keySeparator="."),this.logger=baseLogger.create("translator")}changeLanguage(lng){lng&&(this.language=lng)}exists(key,o={interpolation:{}}){const opt={...o};if(null==key)return!1;const resolved=this.resolve(key,opt);return void 0!==resolved?.res}extractFromKey(key,opt){let nsSeparator=void 0!==opt.nsSeparator?opt.nsSeparator:this.options.nsSeparator;void 0===nsSeparator&&(nsSeparator=":");const keySeparator=void 0!==opt.keySeparator?opt.keySeparator:this.options.keySeparator;let namespaces=opt.ns||this.options.defaultNS||[];const wouldCheckForNsInKey=nsSeparator&&key.indexOf(nsSeparator)>-1,seemsNaturalLanguage=!(this.options.userDefinedKeySeparator||opt.keySeparator||this.options.userDefinedNsSeparator||opt.nsSeparator||((key,nsSeparator,keySeparator)=>{nsSeparator=nsSeparator||"",keySeparator=keySeparator||"";const possibleChars=chars.filter(c=>nsSeparator.indexOf(c)<0&&keySeparator.indexOf(c)<0);if(0===possibleChars.length)return!0;const r=looksLikeObjectPathRegExpCache.getRegExp(`(${possibleChars.map(c=>"?"===c?"\\?":c).join("|")})`);let matched=!r.test(key);if(!matched){const ki=key.indexOf(keySeparator);ki>0&&!r.test(key.substring(0,ki))&&(matched=!0)}return matched})(key,nsSeparator,keySeparator));if(wouldCheckForNsInKey&&!seemsNaturalLanguage){const m=key.match(this.interpolator.nestingRegexp);if(m&&m.length>0)return{key:key,namespaces:isString(namespaces)?[namespaces]:namespaces};const parts=key.split(nsSeparator);(nsSeparator!==keySeparator||nsSeparator===keySeparator&&this.options.ns.indexOf(parts[0])>-1)&&(namespaces=parts.shift()),key=parts.join(keySeparator)}return{key:key,namespaces:isString(namespaces)?[namespaces]:namespaces}}translate(keys,o,lastKey){let opt="object"==typeof o?{...o}:o;if("object"!=typeof opt&&this.options.overloadTranslationOptionHandler&&(opt=this.options.overloadTranslationOptionHandler(arguments)),"object"==typeof options&&(opt={...opt}),opt||(opt={}),null==keys)return"";Array.isArray(keys)||(keys=[String(keys)]);const returnDetails=void 0!==opt.returnDetails?opt.returnDetails:this.options.returnDetails,keySeparator=void 0!==opt.keySeparator?opt.keySeparator:this.options.keySeparator,{key:key,namespaces:namespaces}=this.extractFromKey(keys[keys.length-1],opt),namespace=namespaces[namespaces.length-1];let nsSeparator=void 0!==opt.nsSeparator?opt.nsSeparator:this.options.nsSeparator;void 0===nsSeparator&&(nsSeparator=":");const lng=opt.lng||this.language,appendNamespaceToCIMode=opt.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if("cimode"===lng?.toLowerCase())return appendNamespaceToCIMode?returnDetails?{res:`${namespace}${nsSeparator}${key}`,usedKey:key,exactUsedKey:key,usedLng:lng,usedNS:namespace,usedParams:this.getUsedParamsDetails(opt)}:`${namespace}${nsSeparator}${key}`:returnDetails?{res:key,usedKey:key,exactUsedKey:key,usedLng:lng,usedNS:namespace,usedParams:this.getUsedParamsDetails(opt)}:key;const resolved=this.resolve(keys,opt);let res=resolved?.res;const resUsedKey=resolved?.usedKey||key,resExactUsedKey=resolved?.exactUsedKey||key,joinArrays=void 0!==opt.joinArrays?opt.joinArrays:this.options.joinArrays,handleAsObjectInI18nFormat=!this.i18nFormat||this.i18nFormat.handleAsObject,needsPluralHandling=void 0!==opt.count&&!isString(opt.count),hasDefaultValue=Translator.hasDefaultValue(opt),defaultValueSuffix=needsPluralHandling?this.pluralResolver.getSuffix(lng,opt.count,opt):"",defaultValueSuffixOrdinalFallback=opt.ordinal&&needsPluralHandling?this.pluralResolver.getSuffix(lng,opt.count,{ordinal:!1}):"",needsZeroSuffixLookup=needsPluralHandling&&!opt.ordinal&&0===opt.count,defaultValue=needsZeroSuffixLookup&&opt[`defaultValue${this.options.pluralSeparator}zero`]||opt[`defaultValue${defaultValueSuffix}`]||opt[`defaultValue${defaultValueSuffixOrdinalFallback}`]||opt.defaultValue;let resForObjHndl=res;handleAsObjectInI18nFormat&&!res&&hasDefaultValue&&(resForObjHndl=defaultValue);const handleAsObject=shouldHandleAsObject(resForObjHndl),resType=Object.prototype.toString.apply(resForObjHndl);if(!(handleAsObjectInI18nFormat&&resForObjHndl&&handleAsObject&&["[object Number]","[object Function]","[object RegExp]"].indexOf(resType)<0)||isString(joinArrays)&&Array.isArray(resForObjHndl))if(handleAsObjectInI18nFormat&&isString(joinArrays)&&Array.isArray(res))res=res.join(joinArrays),res&&(res=this.extendTranslation(res,keys,opt,lastKey));else{let usedDefault=!1,usedKey=!1;!this.isValidLookup(res)&&hasDefaultValue&&(usedDefault=!0,res=defaultValue),this.isValidLookup(res)||(usedKey=!0,res=key);const resForMissing=(opt.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&usedKey?void 0:res,updateMissing=hasDefaultValue&&defaultValue!==res&&this.options.updateMissing;if(usedKey||usedDefault||updateMissing){if(this.logger.log(updateMissing?"updateKey":"missingKey",lng,namespace,key,updateMissing?defaultValue:res),keySeparator){const fk=this.resolve(key,{...opt,keySeparator:!1});fk&&fk.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let lngs=[];const fallbackLngs=this.languageUtils.getFallbackCodes(this.options.fallbackLng,opt.lng||this.language);if("fallback"===this.options.saveMissingTo&&fallbackLngs&&fallbackLngs[0])for(let i=0;i<fallbackLngs.length;i++)lngs.push(fallbackLngs[i]);else"all"===this.options.saveMissingTo?lngs=this.languageUtils.toResolveHierarchy(opt.lng||this.language):lngs.push(opt.lng||this.language);const send=(l,k,specificDefaultValue)=>{const defaultForMissing=hasDefaultValue&&specificDefaultValue!==res?specificDefaultValue:resForMissing;this.options.missingKeyHandler?this.options.missingKeyHandler(l,namespace,k,defaultForMissing,updateMissing,opt):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(l,namespace,k,defaultForMissing,updateMissing,opt),this.emit("missingKey",l,namespace,k,res)};this.options.saveMissing&&(this.options.saveMissingPlurals&&needsPluralHandling?lngs.forEach(language=>{const suffixes=this.pluralResolver.getSuffixes(language,opt);needsZeroSuffixLookup&&opt[`defaultValue${this.options.pluralSeparator}zero`]&&suffixes.indexOf(`${this.options.pluralSeparator}zero`)<0&&suffixes.push(`${this.options.pluralSeparator}zero`),suffixes.forEach(suffix=>{send([language],key+suffix,opt[`defaultValue${suffix}`]||defaultValue)})}):send(lngs,key,defaultValue))}res=this.extendTranslation(res,keys,opt,resolved,lastKey),usedKey&&res===key&&this.options.appendNamespaceToMissingKey&&(res=`${namespace}${nsSeparator}${key}`),(usedKey||usedDefault)&&this.options.parseMissingKeyHandler&&(res=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${namespace}${nsSeparator}${key}`:key,usedDefault?res:void 0,opt))}else{if(!opt.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const r=this.options.returnedObjectHandler?this.options.returnedObjectHandler(resUsedKey,resForObjHndl,{...opt,ns:namespaces}):`key '${key} (${this.language})' returned an object instead of string.`;return returnDetails?(resolved.res=r,resolved.usedParams=this.getUsedParamsDetails(opt),resolved):r}if(keySeparator){const resTypeIsArray=Array.isArray(resForObjHndl),copy=resTypeIsArray?[]:{},newKeyToUse=resTypeIsArray?resExactUsedKey:resUsedKey;for(const m in resForObjHndl)if(Object.prototype.hasOwnProperty.call(resForObjHndl,m)){const deepKey=`${newKeyToUse}${keySeparator}${m}`;copy[m]=hasDefaultValue&&!res?this.translate(deepKey,{...opt,defaultValue:shouldHandleAsObject(defaultValue)?defaultValue[m]:void 0,joinArrays:!1,ns:namespaces}):this.translate(deepKey,{...opt,joinArrays:!1,ns:namespaces}),copy[m]===deepKey&&(copy[m]=resForObjHndl[m])}res=copy}}return returnDetails?(resolved.res=res,resolved.usedParams=this.getUsedParamsDetails(opt),resolved):res}extendTranslation(res,key,opt,resolved,lastKey){if(this.i18nFormat?.parse)res=this.i18nFormat.parse(res,{...this.options.interpolation.defaultVariables,...opt},opt.lng||this.language||resolved.usedLng,resolved.usedNS,resolved.usedKey,{resolved:resolved});else if(!opt.skipInterpolation){opt.interpolation&&this.interpolator.init({...opt,interpolation:{...this.options.interpolation,...opt.interpolation}});const skipOnVariables=isString(res)&&(void 0!==opt?.interpolation?.skipOnVariables?opt.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let nestBef;if(skipOnVariables){const nb=res.match(this.interpolator.nestingRegexp);nestBef=nb&&nb.length}let data=opt.replace&&!isString(opt.replace)?opt.replace:opt;if(this.options.interpolation.defaultVariables&&(data={...this.options.interpolation.defaultVariables,...data}),res=this.interpolator.interpolate(res,data,opt.lng||this.language||resolved.usedLng,opt),skipOnVariables){const na=res.match(this.interpolator.nestingRegexp);nestBef<(na&&na.length)&&(opt.nest=!1)}!opt.lng&&resolved&&resolved.res&&(opt.lng=this.language||resolved.usedLng),!1!==opt.nest&&(res=this.interpolator.nest(res,(...args)=>lastKey?.[0]!==args[0]||opt.context?this.translate(...args,key):(this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`),null),opt)),opt.interpolation&&this.interpolator.reset()}const postProcess=opt.postProcess||this.options.postProcess,postProcessorNames=isString(postProcess)?[postProcess]:postProcess;return null!=res&&postProcessorNames?.length&&!1!==opt.applyPostProcessor&&(res=postProcessor.handle(postProcessorNames,res,key,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...resolved,usedParams:this.getUsedParamsDetails(opt)},...opt}:opt,this)),res}resolve(keys,opt={}){let found,usedKey,exactUsedKey,usedLng,usedNS;return isString(keys)&&(keys=[keys]),keys.forEach(k=>{if(this.isValidLookup(found))return;const extracted=this.extractFromKey(k,opt),key=extracted.key;usedKey=key;let namespaces=extracted.namespaces;this.options.fallbackNS&&(namespaces=namespaces.concat(this.options.fallbackNS));const needsPluralHandling=void 0!==opt.count&&!isString(opt.count),needsZeroSuffixLookup=needsPluralHandling&&!opt.ordinal&&0===opt.count,needsContextHandling=void 0!==opt.context&&(isString(opt.context)||"number"==typeof opt.context)&&""!==opt.context,codes=opt.lngs?opt.lngs:this.languageUtils.toResolveHierarchy(opt.lng||this.language,opt.fallbackLng);namespaces.forEach(ns=>{this.isValidLookup(found)||(usedNS=ns,checkedLoadedFor[`${codes[0]}-${ns}`]||!this.utils?.hasLoadedNamespace||this.utils?.hasLoadedNamespace(usedNS)||(checkedLoadedFor[`${codes[0]}-${ns}`]=!0,this.logger.warn(`key "${usedKey}" for languages "${codes.join(", ")}" won't get resolved as namespace "${usedNS}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),codes.forEach(code=>{if(this.isValidLookup(found))return;usedLng=code;const finalKeys=[key];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(finalKeys,key,code,ns,opt);else{let pluralSuffix;needsPluralHandling&&(pluralSuffix=this.pluralResolver.getSuffix(code,opt.count,opt));const zeroSuffix=`${this.options.pluralSeparator}zero`,ordinalPrefix=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(needsPluralHandling&&(finalKeys.push(key+pluralSuffix),opt.ordinal&&0===pluralSuffix.indexOf(ordinalPrefix)&&finalKeys.push(key+pluralSuffix.replace(ordinalPrefix,this.options.pluralSeparator)),needsZeroSuffixLookup&&finalKeys.push(key+zeroSuffix)),needsContextHandling){const contextKey=`${key}${this.options.contextSeparator}${opt.context}`;finalKeys.push(contextKey),needsPluralHandling&&(finalKeys.push(contextKey+pluralSuffix),opt.ordinal&&0===pluralSuffix.indexOf(ordinalPrefix)&&finalKeys.push(contextKey+pluralSuffix.replace(ordinalPrefix,this.options.pluralSeparator)),needsZeroSuffixLookup&&finalKeys.push(contextKey+zeroSuffix))}}let possibleKey;for(;possibleKey=finalKeys.pop();)this.isValidLookup(found)||(exactUsedKey=possibleKey,found=this.getResource(code,ns,possibleKey,opt))}))})}),{res:found,usedKey:usedKey,exactUsedKey:exactUsedKey,usedLng:usedLng,usedNS:usedNS}}isValidLookup(res){return!(void 0===res||!this.options.returnNull&&null===res||!this.options.returnEmptyString&&""===res)}getResource(code,ns,key,options={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(code,ns,key,options):this.resourceStore.getResource(code,ns,key,options)}getUsedParamsDetails(options={}){const optionsKeys=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],useOptionsReplaceForData=options.replace&&!isString(options.replace);let data=useOptionsReplaceForData?options.replace:options;if(useOptionsReplaceForData&&void 0!==options.count&&(data.count=options.count),this.options.interpolation.defaultVariables&&(data={...this.options.interpolation.defaultVariables,...data}),!useOptionsReplaceForData){data={...data};for(const key of optionsKeys)delete data[key]}return data}static hasDefaultValue(options){for(const option in options)if(Object.prototype.hasOwnProperty.call(options,option)&&"defaultValue"===option.substring(0,12)&&void 0!==options[option])return!0;return!1}}class LanguageUtil{constructor(options){this.options=options,this.supportedLngs=this.options.supportedLngs||!1,this.logger=baseLogger.create("languageUtils")}getScriptPartFromCode(code){if(!(code=getCleanedCode(code))||code.indexOf("-")<0)return null;const p=code.split("-");return 2===p.length?null:(p.pop(),"x"===p[p.length-1].toLowerCase()?null:this.formatLanguageCode(p.join("-")))}getLanguagePartFromCode(code){if(!(code=getCleanedCode(code))||code.indexOf("-")<0)return code;const p=code.split("-");return this.formatLanguageCode(p[0])}formatLanguageCode(code){if(isString(code)&&code.indexOf("-")>-1){let formattedCode;try{formattedCode=Intl.getCanonicalLocales(code)[0]}catch(e){}return formattedCode&&this.options.lowerCaseLng&&(formattedCode=formattedCode.toLowerCase()),formattedCode||(this.options.lowerCaseLng?code.toLowerCase():code)}return this.options.cleanCode||this.options.lowerCaseLng?code.toLowerCase():code}isSupportedCode(code){return("languageOnly"===this.options.load||this.options.nonExplicitSupportedLngs)&&(code=this.getLanguagePartFromCode(code)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(code)>-1}getBestMatchFromCodes(codes){if(!codes)return null;let found;return codes.forEach(code=>{if(found)return;const cleanedLng=this.formatLanguageCode(code);this.options.supportedLngs&&!this.isSupportedCode(cleanedLng)||(found=cleanedLng)}),!found&&this.options.supportedLngs&&codes.forEach(code=>{if(found)return;const lngScOnly=this.getScriptPartFromCode(code);if(this.isSupportedCode(lngScOnly))return found=lngScOnly;const lngOnly=this.getLanguagePartFromCode(code);if(this.isSupportedCode(lngOnly))return found=lngOnly;found=this.options.supportedLngs.find(supportedLng=>supportedLng===lngOnly?supportedLng:supportedLng.indexOf("-")<0&&lngOnly.indexOf("-")<0?void 0:supportedLng.indexOf("-")>0&&lngOnly.indexOf("-")<0&&supportedLng.substring(0,supportedLng.indexOf("-"))===lngOnly||0===supportedLng.indexOf(lngOnly)&&lngOnly.length>1?supportedLng:void 0)}),found||(found=this.getFallbackCodes(this.options.fallbackLng)[0]),found}getFallbackCodes(fallbacks,code){if(!fallbacks)return[];if("function"==typeof fallbacks&&(fallbacks=fallbacks(code)),isString(fallbacks)&&(fallbacks=[fallbacks]),Array.isArray(fallbacks))return fallbacks;if(!code)return fallbacks.default||[];let found=fallbacks[code];return found||(found=fallbacks[this.getScriptPartFromCode(code)]),found||(found=fallbacks[this.formatLanguageCode(code)]),found||(found=fallbacks[this.getLanguagePartFromCode(code)]),found||(found=fallbacks.default),found||[]}toResolveHierarchy(code,fallbackCode){const fallbackCodes=this.getFallbackCodes((!1===fallbackCode?[]:fallbackCode)||this.options.fallbackLng||[],code),codes=[],addCode=c=>{c&&(this.isSupportedCode(c)?codes.push(c):this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`))};return isString(code)&&(code.indexOf("-")>-1||code.indexOf("_")>-1)?("languageOnly"!==this.options.load&&addCode(this.formatLanguageCode(code)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&addCode(this.getScriptPartFromCode(code)),"currentOnly"!==this.options.load&&addCode(this.getLanguagePartFromCode(code))):isString(code)&&addCode(this.formatLanguageCode(code)),fallbackCodes.forEach(fc=>{codes.indexOf(fc)<0&&addCode(this.formatLanguageCode(fc))}),codes}}const suffixesOrder={zero:0,one:1,two:2,few:3,many:4,other:5},dummyRule={select:count=>1===count?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class PluralResolver{constructor(languageUtils,options={}){this.languageUtils=languageUtils,this.options=options,this.logger=baseLogger.create("pluralResolver"),this.pluralRulesCache={}}addRule(lng,obj){this.rules[lng]=obj}clearCache(){this.pluralRulesCache={}}getRule(code,options={}){const cleanedCode=getCleanedCode("dev"===code?"en":code),type=options.ordinal?"ordinal":"cardinal",cacheKey=JSON.stringify({cleanedCode:cleanedCode,type:type});if(cacheKey in this.pluralRulesCache)return this.pluralRulesCache[cacheKey];let rule;try{rule=new Intl.PluralRules(cleanedCode,{type:type})}catch(err){if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),dummyRule;if(!code.match(/-|_/))return dummyRule;const lngPart=this.languageUtils.getLanguagePartFromCode(code);rule=this.getRule(lngPart,options)}return this.pluralRulesCache[cacheKey]=rule,rule}needsPlural(code,options={}){let rule=this.getRule(code,options);return rule||(rule=this.getRule("dev",options)),rule?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(code,key,options={}){return this.getSuffixes(code,options).map(suffix=>`${key}${suffix}`)}getSuffixes(code,options={}){let rule=this.getRule(code,options);return rule||(rule=this.getRule("dev",options)),rule?rule.resolvedOptions().pluralCategories.sort((pluralCategory1,pluralCategory2)=>suffixesOrder[pluralCategory1]-suffixesOrder[pluralCategory2]).map(pluralCategory=>`${this.options.prepend}${options.ordinal?`ordinal${this.options.prepend}`:""}${pluralCategory}`):[]}getSuffix(code,count,options={}){const rule=this.getRule(code,options);return rule?`${this.options.prepend}${options.ordinal?`ordinal${this.options.prepend}`:""}${rule.select(count)}`:(this.logger.warn(`no plural rule found for: ${code}`),this.getSuffix("dev",count,options))}}const deepFindWithDefaults=(data,defaultData,key,keySeparator=".",ignoreJSONStructure=!0)=>{let path=((data,defaultData,key)=>{const value=getPath(data,key);return void 0!==value?value:getPath(defaultData,key)})(data,defaultData,key);return!path&&ignoreJSONStructure&&isString(key)&&(path=deepFind(data,key,keySeparator),void 0===path&&(path=deepFind(defaultData,key,keySeparator))),path},regexSafe=val=>val.replace(/\$/g,"$$$$");class Interpolator{constructor(options={}){this.logger=baseLogger.create("interpolator"),this.options=options,this.format=options?.interpolation?.format||(value=>value),this.init(options)}init(options={}){options.interpolation||(options.interpolation={escapeValue:!0});const{escape:escape$1,escapeValue:escapeValue,useRawValueToEscape:useRawValueToEscape,prefix:prefix,prefixEscaped:prefixEscaped,suffix:suffix,suffixEscaped:suffixEscaped,formatSeparator:formatSeparator,unescapeSuffix:unescapeSuffix,unescapePrefix:unescapePrefix,nestingPrefix:nestingPrefix,nestingPrefixEscaped:nestingPrefixEscaped,nestingSuffix:nestingSuffix,nestingSuffixEscaped:nestingSuffixEscaped,nestingOptionsSeparator:nestingOptionsSeparator,maxReplaces:maxReplaces,alwaysFormat:alwaysFormat}=options.interpolation;this.escape=void 0!==escape$1?escape$1:escape,this.escapeValue=void 0===escapeValue||escapeValue,this.useRawValueToEscape=void 0!==useRawValueToEscape&&useRawValueToEscape,this.prefix=prefix?regexEscape(prefix):prefixEscaped||"{{",this.suffix=suffix?regexEscape(suffix):suffixEscaped||"}}",this.formatSeparator=formatSeparator||",",this.unescapePrefix=unescapeSuffix?"":unescapePrefix||"-",this.unescapeSuffix=this.unescapePrefix?"":unescapeSuffix||"",this.nestingPrefix=nestingPrefix?regexEscape(nestingPrefix):nestingPrefixEscaped||regexEscape("$t("),this.nestingSuffix=nestingSuffix?regexEscape(nestingSuffix):nestingSuffixEscaped||regexEscape(")"),this.nestingOptionsSeparator=nestingOptionsSeparator||",",this.maxReplaces=maxReplaces||1e3,this.alwaysFormat=void 0!==alwaysFormat&&alwaysFormat,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const getOrResetRegExp=(existingRegExp,pattern)=>existingRegExp?.source===pattern?(existingRegExp.lastIndex=0,existingRegExp):new RegExp(pattern,"g");this.regexp=getOrResetRegExp(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=getOrResetRegExp(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=getOrResetRegExp(this.nestingRegexp,`${this.nestingPrefix}(.+?)${this.nestingSuffix}`)}interpolate(str,data,lng,options){let match,value,replaces;const defaultData=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},handleFormat=key=>{if(key.indexOf(this.formatSeparator)<0){const path=deepFindWithDefaults(data,defaultData,key,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(path,void 0,lng,{...options,...data,interpolationkey:key}):path}const p=key.split(this.formatSeparator),k=p.shift().trim(),f=p.join(this.formatSeparator).trim();return this.format(deepFindWithDefaults(data,defaultData,k,this.options.keySeparator,this.options.ignoreJSONStructure),f,lng,{...options,...data,interpolationkey:k})};this.resetRegExp();const missingInterpolationHandler=options?.missingInterpolationHandler||this.options.missingInterpolationHandler,skipOnVariables=void 0!==options?.interpolation?.skipOnVariables?options.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:val=>regexSafe(val)},{regex:this.regexp,safeValue:val=>this.escapeValue?regexSafe(this.escape(val)):regexSafe(val)}].forEach(todo=>{for(replaces=0;match=todo.regex.exec(str);){const matchedVar=match[1].trim();if(value=handleFormat(matchedVar),void 0===value)if("function"==typeof missingInterpolationHandler){const temp=missingInterpolationHandler(str,match,options);value=isString(temp)?temp:""}else if(options&&Object.prototype.hasOwnProperty.call(options,matchedVar))value="";else{if(skipOnVariables){value=match[0];continue}this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`),value=""}else isString(value)||this.useRawValueToEscape||(value=makeString(value));const safeValue=todo.safeValue(value);if(str=str.replace(match[0],safeValue),skipOnVariables?(todo.regex.lastIndex+=value.length,todo.regex.lastIndex-=match[0].length):todo.regex.lastIndex=0,replaces++,replaces>=this.maxReplaces)break}}),str}nest(str,fc,options={}){let match,value,clonedOptions;const handleHasOptions=(key,inheritedOptions)=>{const sep=this.nestingOptionsSeparator;if(key.indexOf(sep)<0)return key;const c=key.split(new RegExp(`${sep}[ ]*{`));let optionsString=`{${c[1]}`;key=c[0],optionsString=this.interpolate(optionsString,clonedOptions);const matchedSingleQuotes=optionsString.match(/'/g),matchedDoubleQuotes=optionsString.match(/"/g);((matchedSingleQuotes?.length??0)%2==0&&!matchedDoubleQuotes||matchedDoubleQuotes.length%2!=0)&&(optionsString=optionsString.replace(/'/g,'"'));try{clonedOptions=JSON.parse(optionsString),inheritedOptions&&(clonedOptions={...inheritedOptions,...clonedOptions})}catch(e){return this.logger.warn(`failed parsing options string in nesting for key ${key}`,e),`${key}${sep}${optionsString}`}return clonedOptions.defaultValue&&clonedOptions.defaultValue.indexOf(this.prefix)>-1&&delete clonedOptions.defaultValue,key};for(;match=this.nestingRegexp.exec(str);){let formatters=[];clonedOptions={...options},clonedOptions=clonedOptions.replace&&!isString(clonedOptions.replace)?clonedOptions.replace:clonedOptions,clonedOptions.applyPostProcessor=!1,delete clonedOptions.defaultValue;const keyEndIndex=/{.*}/.test(match[1])?match[1].lastIndexOf("}")+1:match[1].indexOf(this.formatSeparator);if(-1!==keyEndIndex&&(formatters=match[1].slice(keyEndIndex).split(this.formatSeparator).map(elem=>elem.trim()).filter(Boolean),match[1]=match[1].slice(0,keyEndIndex)),value=fc(handleHasOptions.call(this,match[1].trim(),clonedOptions),clonedOptions),value&&match[0]===str&&!isString(value))return value;isString(value)||(value=makeString(value)),value||(this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`),value=""),formatters.length&&(value=formatters.reduce((v,f)=>this.format(v,f,options.lng,{...options,interpolationkey:match[1].trim()}),value.trim())),str=str.replace(match[0],value),this.regexp.lastIndex=0}return str}}const createCachedFormatter=fn=>{const cache={};return(v,l,o)=>{let optForCache=o;o&&o.interpolationkey&&o.formatParams&&o.formatParams[o.interpolationkey]&&o[o.interpolationkey]&&(optForCache={...optForCache,[o.interpolationkey]:void 0});const key=l+JSON.stringify(optForCache);let frm=cache[key];return frm||(frm=fn(getCleanedCode(l),o),cache[key]=frm),frm(v)}},createNonCachedFormatter=fn=>(v,l,o)=>fn(getCleanedCode(l),o)(v);class Formatter{constructor(options={}){this.logger=baseLogger.create("formatter"),this.options=options,this.init(options)}init(services,options={interpolation:{}}){this.formatSeparator=options.interpolation.formatSeparator||",";const cf=options.cacheInBuiltFormats?createCachedFormatter:createNonCachedFormatter;this.formats={number:cf((lng,opt)=>{const formatter=new Intl.NumberFormat(lng,{...opt});return val=>formatter.format(val)}),currency:cf((lng,opt)=>{const formatter=new Intl.NumberFormat(lng,{...opt,style:"currency"});return val=>formatter.format(val)}),datetime:cf((lng,opt)=>{const formatter=new Intl.DateTimeFormat(lng,{...opt});return val=>formatter.format(val)}),relativetime:cf((lng,opt)=>{const formatter=new Intl.RelativeTimeFormat(lng,{...opt});return val=>formatter.format(val,opt.range||"day")}),list:cf((lng,opt)=>{const formatter=new Intl.ListFormat(lng,{...opt});return val=>formatter.format(val)})}}add(name,fc){this.formats[name.toLowerCase().trim()]=fc}addCached(name,fc){this.formats[name.toLowerCase().trim()]=createCachedFormatter(fc)}format(value,format,lng,options={}){const formats=format.split(this.formatSeparator);if(formats.length>1&&formats[0].indexOf("(")>1&&formats[0].indexOf(")")<0&&formats.find(f=>f.indexOf(")")>-1)){const lastIndex=formats.findIndex(f=>f.indexOf(")")>-1);formats[0]=[formats[0],...formats.splice(1,lastIndex)].join(this.formatSeparator)}return formats.reduce((mem,f)=>{const{formatName:formatName,formatOptions:formatOptions}=(formatStr=>{let formatName=formatStr.toLowerCase().trim();const formatOptions={};if(formatStr.indexOf("(")>-1){const p=formatStr.split("(");formatName=p[0].toLowerCase().trim();const optStr=p[1].substring(0,p[1].length-1);"currency"===formatName&&optStr.indexOf(":")<0?formatOptions.currency||(formatOptions.currency=optStr.trim()):"relativetime"===formatName&&optStr.indexOf(":")<0?formatOptions.range||(formatOptions.range=optStr.trim()):optStr.split(";").forEach(opt=>{if(opt){const[key,...rest]=opt.split(":"),val=rest.join(":").trim().replace(/^'+|'+$/g,""),trimmedKey=key.trim();formatOptions[trimmedKey]||(formatOptions[trimmedKey]=val),"false"===val&&(formatOptions[trimmedKey]=!1),"true"===val&&(formatOptions[trimmedKey]=!0),isNaN(val)||(formatOptions[trimmedKey]=parseInt(val,10))}})}return{formatName:formatName,formatOptions:formatOptions}})(f);if(this.formats[formatName]){let formatted=mem;try{const valOptions=options?.formatParams?.[options.interpolationkey]||{},l=valOptions.locale||valOptions.lng||options.locale||options.lng||lng;formatted=this.formats[formatName](mem,l,{...formatOptions,...options,...valOptions})}catch(error){this.logger.warn(error)}return formatted}return this.logger.warn(`there was no format function for ${formatName}`),mem},value)}}class Connector extends EventEmitter{constructor(backend,store,services,options={}){super(),this.backend=backend,this.store=store,this.services=services,this.languageUtils=services.languageUtils,this.options=options,this.logger=baseLogger.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=options.maxParallelReads||10,this.readingCalls=0,this.maxRetries=options.maxRetries>=0?options.maxRetries:5,this.retryTimeout=options.retryTimeout>=1?options.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(services,options.backend,options)}queueLoad(languages,namespaces,options,callback){const toLoad={},pending={},toLoadLanguages={},toLoadNamespaces={};return languages.forEach(lng=>{let hasAllNamespaces=!0;namespaces.forEach(ns=>{const name=`${lng}|${ns}`;!options.reload&&this.store.hasResourceBundle(lng,ns)?this.state[name]=2:this.state[name]<0||(1===this.state[name]?void 0===pending[name]&&(pending[name]=!0):(this.state[name]=1,hasAllNamespaces=!1,void 0===pending[name]&&(pending[name]=!0),void 0===toLoad[name]&&(toLoad[name]=!0),void 0===toLoadNamespaces[ns]&&(toLoadNamespaces[ns]=!0)))}),hasAllNamespaces||(toLoadLanguages[lng]=!0)}),(Object.keys(toLoad).length||Object.keys(pending).length)&&this.queue.push({pending:pending,pendingCount:Object.keys(pending).length,loaded:{},errors:[],callback:callback}),{toLoad:Object.keys(toLoad),pending:Object.keys(pending),toLoadLanguages:Object.keys(toLoadLanguages),toLoadNamespaces:Object.keys(toLoadNamespaces)}}loaded(name,err,data){const s=name.split("|"),lng=s[0],ns=s[1];err&&this.emit("failedLoading",lng,ns,err),!err&&data&&this.store.addResourceBundle(lng,ns,data,void 0,void 0,{skipCopy:!0}),this.state[name]=err?-1:2,err&&data&&(this.state[name]=0);const loaded={};this.queue.forEach(q=>{((object,path,newValue)=>{const{obj:obj,k:k}=getLastOfPath(object,path,Object);obj[k]=obj[k]||[],obj[k].push(newValue)})(q.loaded,[lng],ns),((q,name)=>{void 0!==q.pending[name]&&(delete q.pending[name],q.pendingCount--)})(q,name),err&&q.errors.push(err),0!==q.pendingCount||q.done||(Object.keys(q.loaded).forEach(l=>{loaded[l]||(loaded[l]={});const loadedKeys=q.loaded[l];loadedKeys.length&&loadedKeys.forEach(n=>{void 0===loaded[l][n]&&(loaded[l][n]=!0)})}),q.done=!0,q.errors.length?q.callback(q.errors):q.callback())}),this.emit("loaded",loaded),this.queue=this.queue.filter(q=>!q.done)}read(lng,ns,fcName,tried=0,wait=this.retryTimeout,callback){if(!lng.length)return callback(null,{});if(this.readingCalls>=this.maxParallelReads)return void this.waitingReads.push({lng:lng,ns:ns,fcName:fcName,tried:tried,wait:wait,callback:callback});this.readingCalls++;const resolver=(err,data)=>{if(this.readingCalls--,this.waitingReads.length>0){const next=this.waitingReads.shift();this.read(next.lng,next.ns,next.fcName,next.tried,next.wait,next.callback)}err&&data&&tried<this.maxRetries?setTimeout(()=>{this.read.call(this,lng,ns,fcName,tried+1,2*wait,callback)},wait):callback(err,data)},fc=this.backend[fcName].bind(this.backend);if(2!==fc.length)return fc(lng,ns,resolver);try{const r=fc(lng,ns);r&&"function"==typeof r.then?r.then(data=>resolver(null,data)).catch(resolver):resolver(null,r)}catch(err){resolver(err)}}prepareLoading(languages,namespaces,options={},callback){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),callback&&callback();isString(languages)&&(languages=this.languageUtils.toResolveHierarchy(languages)),isString(namespaces)&&(namespaces=[namespaces]);const toLoad=this.queueLoad(languages,namespaces,options,callback);if(!toLoad.toLoad.length)return toLoad.pending.length||callback(),null;toLoad.toLoad.forEach(name=>{this.loadOne(name)})}load(languages,namespaces,callback){this.prepareLoading(languages,namespaces,{},callback)}reload(languages,namespaces,callback){this.prepareLoading(languages,namespaces,{reload:!0},callback)}loadOne(name,prefix=""){const s=name.split("|"),lng=s[0],ns=s[1];this.read(lng,ns,"read",void 0,void 0,(err,data)=>{err&&this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`,err),!err&&data&&this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`,data),this.loaded(name,err,data)})}saveMissing(languages,namespace,key,fallbackValue,isUpdate,options={},clb=()=>{}){if(!this.services?.utils?.hasLoadedNamespace||this.services?.utils?.hasLoadedNamespace(namespace)){if(null!=key&&""!==key){if(this.backend?.create){const opts={...options,isUpdate:isUpdate},fc=this.backend.create.bind(this.backend);if(fc.length<6)try{let r;r=5===fc.length?fc(languages,namespace,key,fallbackValue,opts):fc(languages,namespace,key,fallbackValue),r&&"function"==typeof r.then?r.then(data=>clb(null,data)).catch(clb):clb(null,r)}catch(err){clb(err)}else fc(languages,namespace,key,fallbackValue,clb,opts)}languages&&languages[0]&&this.store.addResource(languages[0],namespace,key,fallbackValue)}}else this.logger.warn(`did not save key "${key}" as the namespace "${namespace}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")}}const get=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:args=>{let ret={};if("object"==typeof args[1]&&(ret=args[1]),isString(args[1])&&(ret.defaultValue=args[1]),isString(args[2])&&(ret.tDescription=args[2]),"object"==typeof args[2]||"object"==typeof args[3]){const options=args[3]||args[2];Object.keys(options).forEach(key=>{ret[key]=options[key]})}return ret},interpolation:{escapeValue:!0,format:value=>value,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),transformOptions=options=>(isString(options.ns)&&(options.ns=[options.ns]),isString(options.fallbackLng)&&(options.fallbackLng=[options.fallbackLng]),isString(options.fallbackNS)&&(options.fallbackNS=[options.fallbackNS]),options.supportedLngs?.indexOf?.("cimode")<0&&(options.supportedLngs=options.supportedLngs.concat(["cimode"])),"boolean"==typeof options.initImmediate&&(options.initAsync=options.initImmediate),options),noop=()=>{};class I18n extends EventEmitter{constructor(options={},callback){var inst;if(super(),this.options=transformOptions(options),this.services={},this.logger=baseLogger,this.modules={external:[]},inst=this,Object.getOwnPropertyNames(Object.getPrototypeOf(inst)).forEach(mem=>{"function"==typeof inst[mem]&&(inst[mem]=inst[mem].bind(inst))}),callback&&!this.isInitialized&&!options.isClone){if(!this.options.initAsync)return this.init(options,callback),this;setTimeout(()=>{this.init(options,callback)},0)}}init(options={},callback){this.isInitializing=!0,"function"==typeof options&&(callback=options,options={}),null==options.defaultNS&&options.ns&&(isString(options.ns)?options.defaultNS=options.ns:options.ns.indexOf("translation")<0&&(options.defaultNS=options.ns[0]));const defOpts=get();this.options={...defOpts,...this.options,...transformOptions(options)},this.options.interpolation={...defOpts.interpolation,...this.options.interpolation},void 0!==options.keySeparator&&(this.options.userDefinedKeySeparator=options.keySeparator),void 0!==options.nsSeparator&&(this.options.userDefinedNsSeparator=options.nsSeparator);const createClassOnDemand=ClassOrObject=>ClassOrObject?"function"==typeof ClassOrObject?new ClassOrObject:ClassOrObject:null;if(!this.options.isClone){let formatter;this.modules.logger?baseLogger.init(createClassOnDemand(this.modules.logger),this.options):baseLogger.init(null,this.options),formatter=this.modules.formatter?this.modules.formatter:Formatter;const lu=new LanguageUtil(this.options);this.store=new ResourceStore(this.options.resources,this.options);const s=this.services;s.logger=baseLogger,s.resourceStore=this.store,s.languageUtils=lu,s.pluralResolver=new PluralResolver(lu,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix});this.options.interpolation.format&&this.options.interpolation.format!==defOpts.interpolation.format&&this.logger.warn("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),!formatter||this.options.interpolation.format&&this.options.interpolation.format!==defOpts.interpolation.format||(s.formatter=createClassOnDemand(formatter),s.formatter.init&&s.formatter.init(s,this.options),this.options.interpolation.format=s.formatter.format.bind(s.formatter)),s.interpolator=new Interpolator(this.options),s.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},s.backendConnector=new Connector(createClassOnDemand(this.modules.backend),s.resourceStore,s,this.options),s.backendConnector.on("*",(event,...args)=>{this.emit(event,...args)}),this.modules.languageDetector&&(s.languageDetector=createClassOnDemand(this.modules.languageDetector),s.languageDetector.init&&s.languageDetector.init(s,this.options.detection,this.options)),this.modules.i18nFormat&&(s.i18nFormat=createClassOnDemand(this.modules.i18nFormat),s.i18nFormat.init&&s.i18nFormat.init(this)),this.translator=new Translator(this.services,this.options),this.translator.on("*",(event,...args)=>{this.emit(event,...args)}),this.modules.external.forEach(m=>{m.init&&m.init(this)})}if(this.format=this.options.interpolation.format,callback||(callback=noop),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const codes=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);codes.length>0&&"dev"!==codes[0]&&(this.options.lng=codes[0])}this.services.languageDetector||this.options.lng||this.logger.warn("init: no languageDetector is used and no lng is defined");["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(fcName=>{this[fcName]=(...args)=>this.store[fcName](...args)});["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(fcName=>{this[fcName]=(...args)=>(this.store[fcName](...args),this)});const deferred=defer(),load=()=>{const finish=(err,t)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),deferred.resolve(t),callback(err,t)};if(this.languages&&!this.isInitialized)return finish(null,this.t.bind(this));this.changeLanguage(this.options.lng,finish)};return this.options.resources||!this.options.initAsync?load():setTimeout(load,0),deferred}loadResources(language,callback=noop){let usedCallback=callback;const usedLng=isString(language)?language:this.language;if("function"==typeof language&&(usedCallback=language),!this.options.resources||this.options.partialBundledLanguages){if("cimode"===usedLng?.toLowerCase()&&(!this.options.preload||0===this.options.preload.length))return usedCallback();const toLoad=[],append=lng=>{if(!lng)return;if("cimode"===lng)return;this.services.languageUtils.toResolveHierarchy(lng).forEach(l=>{"cimode"!==l&&toLoad.indexOf(l)<0&&toLoad.push(l)})};if(usedLng)append(usedLng);else{this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(l=>append(l))}this.options.preload?.forEach?.(l=>append(l)),this.services.backendConnector.load(toLoad,this.options.ns,e=>{e||this.resolvedLanguage||!this.language||this.setResolvedLanguage(this.language),usedCallback(e)})}else usedCallback(null)}reloadResources(lngs,ns,callback){const deferred=defer();return"function"==typeof lngs&&(callback=lngs,lngs=void 0),"function"==typeof ns&&(callback=ns,ns=void 0),lngs||(lngs=this.languages),ns||(ns=this.options.ns),callback||(callback=noop),this.services.backendConnector.reload(lngs,ns,err=>{deferred.resolve(),callback(err)}),deferred}use(module){if(!module)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!module.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return"backend"===module.type&&(this.modules.backend=module),("logger"===module.type||module.log&&module.warn&&module.error)&&(this.modules.logger=module),"languageDetector"===module.type&&(this.modules.languageDetector=module),"i18nFormat"===module.type&&(this.modules.i18nFormat=module),"postProcessor"===module.type&&postProcessor.addPostProcessor(module),"formatter"===module.type&&(this.modules.formatter=module),"3rdParty"===module.type&&this.modules.external.push(module),this}setResolvedLanguage(l){if(l&&this.languages&&!(["cimode","dev"].indexOf(l)>-1)){for(let li=0;li<this.languages.length;li++){const lngInLngs=this.languages[li];if(!(["cimode","dev"].indexOf(lngInLngs)>-1)&&this.store.hasLanguageSomeTranslations(lngInLngs)){this.resolvedLanguage=lngInLngs;break}}!this.resolvedLanguage&&this.languages.indexOf(l)<0&&this.store.hasLanguageSomeTranslations(l)&&(this.resolvedLanguage=l,this.languages.unshift(l))}}changeLanguage(lng,callback){this.isLanguageChangingTo=lng;const deferred=defer();this.emit("languageChanging",lng);const setLngProps=l=>{this.language=l,this.languages=this.services.languageUtils.toResolveHierarchy(l),this.resolvedLanguage=void 0,this.setResolvedLanguage(l)},done=(err,l)=>{l?this.isLanguageChangingTo===lng&&(setLngProps(l),this.translator.changeLanguage(l),this.isLanguageChangingTo=void 0,this.emit("languageChanged",l),this.logger.log("languageChanged",l)):this.isLanguageChangingTo=void 0,deferred.resolve((...args)=>this.t(...args)),callback&&callback(err,(...args)=>this.t(...args))},setLng=lngs=>{lng||lngs||!this.services.languageDetector||(lngs=[]);const fl=isString(lngs)?lngs:lngs&&lngs[0],l=this.store.hasLanguageSomeTranslations(fl)?fl:this.services.languageUtils.getBestMatchFromCodes(isString(lngs)?[lngs]:lngs);l&&(this.language||setLngProps(l),this.translator.language||this.translator.changeLanguage(l),this.services.languageDetector?.cacheUserLanguage?.(l)),this.loadResources(l,err=>{done(err,l)})};return lng||!this.services.languageDetector||this.services.languageDetector.async?!lng&&this.services.languageDetector&&this.services.languageDetector.async?0===this.services.languageDetector.detect.length?this.services.languageDetector.detect().then(setLng):this.services.languageDetector.detect(setLng):setLng(lng):setLng(this.services.languageDetector.detect()),deferred}getFixedT(lng,ns,keyPrefix){const fixedT=(key,opts,...rest)=>{let o;o="object"!=typeof opts?this.options.overloadTranslationOptionHandler([key,opts].concat(rest)):{...opts},o.lng=o.lng||fixedT.lng,o.lngs=o.lngs||fixedT.lngs,o.ns=o.ns||fixedT.ns,""!==o.keyPrefix&&(o.keyPrefix=o.keyPrefix||keyPrefix||fixedT.keyPrefix);const keySeparator=this.options.keySeparator||".";let resultKey;return resultKey=o.keyPrefix&&Array.isArray(key)?key.map(k=>`${o.keyPrefix}${keySeparator}${k}`):o.keyPrefix?`${o.keyPrefix}${keySeparator}${key}`:key,this.t(resultKey,o)};return isString(lng)?fixedT.lng=lng:fixedT.lngs=lng,fixedT.ns=ns,fixedT.keyPrefix=keyPrefix,fixedT}t(...args){return this.translator?.translate(...args)}exists(...args){return this.translator?.exists(...args)}setDefaultNamespace(ns){this.options.defaultNS=ns}hasLoadedNamespace(ns,options={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const lng=options.lng||this.resolvedLanguage||this.languages[0],fallbackLng=!!this.options&&this.options.fallbackLng,lastLng=this.languages[this.languages.length-1];if("cimode"===lng.toLowerCase())return!0;const loadNotPending=(l,n)=>{const loadState=this.services.backendConnector.state[`${l}|${n}`];return-1===loadState||0===loadState||2===loadState};if(options.precheck){const preResult=options.precheck(this,loadNotPending);if(void 0!==preResult)return preResult}return!!this.hasResourceBundle(lng,ns)||(!(this.services.backendConnector.backend&&(!this.options.resources||this.options.partialBundledLanguages))||!(!loadNotPending(lng,ns)||fallbackLng&&!loadNotPending(lastLng,ns)))}loadNamespaces(ns,callback){const deferred=defer();return this.options.ns?(isString(ns)&&(ns=[ns]),ns.forEach(n=>{this.options.ns.indexOf(n)<0&&this.options.ns.push(n)}),this.loadResources(err=>{deferred.resolve(),callback&&callback(err)}),deferred):(callback&&callback(),Promise.resolve())}loadLanguages(lngs,callback){const deferred=defer();isString(lngs)&&(lngs=[lngs]);const preloaded=this.options.preload||[],newLngs=lngs.filter(lng=>preloaded.indexOf(lng)<0&&this.services.languageUtils.isSupportedCode(lng));return newLngs.length?(this.options.preload=preloaded.concat(newLngs),this.loadResources(err=>{deferred.resolve(),callback&&callback(err)}),deferred):(callback&&callback(),Promise.resolve())}dir(lng){if(lng||(lng=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language)),!lng)return"rtl";try{const l=new Intl.Locale(lng);if(l&&l.getTextInfo){const ti=l.getTextInfo();if(ti&&ti.direction)return ti.direction}}catch(e){}const languageUtils=this.services?.languageUtils||new LanguageUtil(get());return lng.toLowerCase().indexOf("-latn")>1?"ltr":["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"].indexOf(languageUtils.getLanguagePartFromCode(lng))>-1||lng.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(options={},callback){return new I18n(options,callback)}cloneInstance(options={},callback=noop){const forkResourceStore=options.forkResourceStore;forkResourceStore&&delete options.forkResourceStore;const mergedOptions={...this.options,...options,isClone:!0},clone=new I18n(mergedOptions);void 0===options.debug&&void 0===options.prefix||(clone.logger=clone.logger.clone(options));if(["store","services","language"].forEach(m=>{clone[m]=this[m]}),clone.services={...this.services},clone.services.utils={hasLoadedNamespace:clone.hasLoadedNamespace.bind(clone)},forkResourceStore){const clonedData=Object.keys(this.store.data).reduce((prev,l)=>(prev[l]={...this.store.data[l]},prev[l]=Object.keys(prev[l]).reduce((acc,n)=>(acc[n]={...prev[l][n]},acc),prev[l]),prev),{});clone.store=new ResourceStore(clonedData,mergedOptions),clone.services.resourceStore=clone.store}return clone.translator=new Translator(clone.services,mergedOptions),clone.translator.on("*",(event,...args)=>{clone.emit(event,...args)}),clone.init(mergedOptions,callback),clone.translator.options=mergedOptions,clone.translator.backendConnector.services.utils={hasLoadedNamespace:clone.hasLoadedNamespace.bind(clone)},clone}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const instance=I18n.createInstance();instance.createInstance=I18n.createInstance;const createInstance=instance.createInstance;instance.dir,instance.init,instance.loadResources,instance.reloadResources,instance.use,instance.changeLanguage,instance.getFixedT,instance.t,instance.exists,instance.setDefaultNamespace,instance.hasLoadedNamespace,instance.loadNamespaces,instance.loadLanguages},"./node_modules/react-router/dist/development/chunk-QMGIS6GS.mjs":function(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.d(__webpack_exports__,{C5:function(){return Navigate},Ys:function(){return createBrowserRouter},Zp:function(){return useNavigate},pg:function(){return RouterProvider},sv:function(){return Outlet},zy:function(){return useLocation}});var _map,react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("../lex/node_modules/react/index.js"),__typeError=(__webpack_require__("./node_modules/cookie/dist/index.js"),__webpack_require__("../lex/node_modules/process/browser.js"),msg=>{throw TypeError(msg)}),__privateGet=(obj,member,getter)=>(((obj,member,msg)=>{member.has(obj)||__typeError("Cannot "+msg)})(obj,member,"read from private field"),getter?getter.call(obj):member.get(obj)),PopStateEventType="popstate";function createBrowserHistory(options={}){return getUrlBasedHistory(function createBrowserLocation(window2,globalHistory){let{pathname:pathname,search:search,hash:hash}=window2.location;return createLocation("",{pathname:pathname,search:search,hash:hash},globalHistory.state&&globalHistory.state.usr||null,globalHistory.state&&globalHistory.state.key||"default")},function createBrowserHref(window2,to){return"string"==typeof to?to:createPath(to)},null,options)}function invariant(value,message){if(!1===value||null==value)throw new Error(message)}function warning(cond,message){if(!cond){"undefined"!=typeof console&&console.warn(message);try{throw new Error(message)}catch(e){}}}function getHistoryState(location,index){return{usr:location.state,key:location.key,idx:index}}function createLocation(current,to,state=null,key){return{pathname:"string"==typeof current?current:current.pathname,search:"",hash:"",..."string"==typeof to?parsePath(to):to,state:state,key:to&&to.key||key||Math.random().toString(36).substring(2,10)}}function createPath({pathname:pathname="/",search:search="",hash:hash=""}){return search&&"?"!==search&&(pathname+="?"===search.charAt(0)?search:"?"+search),hash&&"#"!==hash&&(pathname+="#"===hash.charAt(0)?hash:"#"+hash),pathname}function parsePath(path){let parsedPath={};if(path){let hashIndex=path.indexOf("#");hashIndex>=0&&(parsedPath.hash=path.substring(hashIndex),path=path.substring(0,hashIndex));let searchIndex=path.indexOf("?");searchIndex>=0&&(parsedPath.search=path.substring(searchIndex),path=path.substring(0,searchIndex)),path&&(parsedPath.pathname=path)}return parsedPath}function getUrlBasedHistory(getLocation,createHref2,validateLocation,options={}){let{window:window2=document.defaultView,v5Compat:v5Compat=!1}=options,globalHistory=window2.history,action="POP",listener=null,index=getIndex();function getIndex(){return(globalHistory.state||{idx:null}).idx}function handlePop(){action="POP";let nextIndex=getIndex(),delta=null==nextIndex?null:nextIndex-index;index=nextIndex,listener&&listener({action:action,location:history.location,delta:delta})}function createURL(to){return createBrowserURLImpl(to)}null==index&&(index=0,globalHistory.replaceState({...globalHistory.state,idx:index},""));let history={get action(){return action},get location(){return getLocation(window2,globalHistory)},listen(fn){if(listener)throw new Error("A history only accepts one active listener");return window2.addEventListener(PopStateEventType,handlePop),listener=fn,()=>{window2.removeEventListener(PopStateEventType,handlePop),listener=null}},createHref(to){return createHref2(window2,to)},createURL:createURL,encodeLocation(to){let url=createURL(to);return{pathname:url.pathname,search:url.search,hash:url.hash}},push:function push(to,state){action="PUSH";let location=createLocation(history.location,to,state);validateLocation&&validateLocation(location,to),index=getIndex()+1;let historyState=getHistoryState(location,index),url=history.createHref(location);try{globalHistory.pushState(historyState,"",url)}catch(error){if(error instanceof DOMException&&"DataCloneError"===error.name)throw error;window2.location.assign(url)}v5Compat&&listener&&listener({action:action,location:history.location,delta:1})},replace:function replace2(to,state){action="REPLACE";let location=createLocation(history.location,to,state);validateLocation&&validateLocation(location,to),index=getIndex();let historyState=getHistoryState(location,index),url=history.createHref(location);globalHistory.replaceState(historyState,"",url),v5Compat&&listener&&listener({action:action,location:history.location,delta:0})},go(n){return globalHistory.go(n)}};return history}function createBrowserURLImpl(to,isAbsolute=!1){let base="http://localhost";"undefined"!=typeof window&&(base="null"!==window.location.origin?window.location.origin:window.location.href),invariant(base,"No window.location.(origin|href) available to create URL");let href2="string"==typeof to?to:createPath(to);return href2=href2.replace(/ $/,"%20"),!isAbsolute&&href2.startsWith("//")&&(href2=base+href2),new URL(href2,base)}var unstable_RouterContextProvider=class{constructor(init){var obj,member,value;if(obj=this,member=_map,value=new Map,member.has(obj)?__typeError("Cannot add the same private member more than once"):member instanceof WeakSet?member.add(obj):member.set(obj,value),init)for(let[context,value]of init)this.set(context,value)}get(context){if(__privateGet(this,_map).has(context))return __privateGet(this,_map).get(context);if(void 0!==context.defaultValue)return context.defaultValue;throw new Error("No value found for context")}set(context,value){__privateGet(this,_map).set(context,value)}};_map=new WeakMap;var unsupportedLazyRouteObjectKeys=new Set(["lazy","caseSensitive","path","id","index","children"]);var unsupportedLazyRouteFunctionKeys=new Set(["lazy","caseSensitive","path","id","index","unstable_middleware","children"]);function isUnsupportedLazyRouteFunctionKey(key){return unsupportedLazyRouteFunctionKeys.has(key)}function convertRoutesToDataRoutes(routes,mapRouteProperties2,parentPath=[],manifest={}){return routes.map((route,index)=>{let treePath=[...parentPath,String(index)],id="string"==typeof route.id?route.id:treePath.join("-");if(invariant(!0!==route.index||!route.children,"Cannot specify children on an index route"),invariant(!manifest[id],`Found a route id collision on id "${id}".  Route id's must be globally unique within Data Router usages`),function isIndexRoute(route){return!0===route.index}(route)){let indexRoute={...route,...mapRouteProperties2(route),id:id};return manifest[id]=indexRoute,indexRoute}{let pathOrLayoutRoute={...route,...mapRouteProperties2(route),id:id,children:void 0};return manifest[id]=pathOrLayoutRoute,route.children&&(pathOrLayoutRoute.children=convertRoutesToDataRoutes(route.children,mapRouteProperties2,treePath,manifest)),pathOrLayoutRoute}})}function matchRoutes(routes,locationArg,basename="/"){return matchRoutesImpl(routes,locationArg,basename,!1)}function matchRoutesImpl(routes,locationArg,basename,allowPartial){let pathname=stripBasename(("string"==typeof locationArg?parsePath(locationArg):locationArg).pathname||"/",basename);if(null==pathname)return null;let branches=flattenRoutes(routes);!function rankRouteBranches(branches){branches.sort((a,b)=>a.score!==b.score?b.score-a.score:function compareIndexes(a,b){let siblings=a.length===b.length&&a.slice(0,-1).every((n,i)=>n===b[i]);return siblings?a[a.length-1]-b[b.length-1]:0}(a.routesMeta.map(meta=>meta.childrenIndex),b.routesMeta.map(meta=>meta.childrenIndex)))}(branches);let matches=null;for(let i=0;null==matches&&i<branches.length;++i){let decoded=decodePath(pathname);matches=matchRouteBranch(branches[i],decoded,allowPartial)}return matches}function convertRouteMatchToUiMatch(match,loaderData){let{route:route,pathname:pathname,params:params}=match;return{id:route.id,pathname:pathname,params:params,data:loaderData[route.id],handle:route.handle}}function flattenRoutes(routes,branches=[],parentsMeta=[],parentPath=""){let flattenRoute=(route,index,relativePath)=>{let meta={relativePath:void 0===relativePath?route.path||"":relativePath,caseSensitive:!0===route.caseSensitive,childrenIndex:index,route:route};meta.relativePath.startsWith("/")&&(invariant(meta.relativePath.startsWith(parentPath),`Absolute route path "${meta.relativePath}" nested under path "${parentPath}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),meta.relativePath=meta.relativePath.slice(parentPath.length));let path=joinPaths([parentPath,meta.relativePath]),routesMeta=parentsMeta.concat(meta);route.children&&route.children.length>0&&(invariant(!0!==route.index,`Index routes must not have child routes. Please remove all child routes from route path "${path}".`),flattenRoutes(route.children,branches,routesMeta,path)),(null!=route.path||route.index)&&branches.push({path:path,score:computeScore(path,route.index),routesMeta:routesMeta})};return routes.forEach((route,index)=>{if(""!==route.path&&route.path?.includes("?"))for(let exploded of explodeOptionalSegments(route.path))flattenRoute(route,index,exploded);else flattenRoute(route,index)}),branches}function explodeOptionalSegments(path){let segments=path.split("/");if(0===segments.length)return[];let[first,...rest]=segments,isOptional=first.endsWith("?"),required=first.replace(/\?$/,"");if(0===rest.length)return isOptional?[required,""]:[required];let restExploded=explodeOptionalSegments(rest.join("/")),result=[];return result.push(...restExploded.map(subpath=>""===subpath?required:[required,subpath].join("/"))),isOptional&&result.push(...restExploded),result.map(exploded=>path.startsWith("/")&&""===exploded?"/":exploded)}var paramRe=/^:[\w-]+$/,dynamicSegmentValue=3,indexRouteValue=2,emptySegmentValue=1,staticSegmentValue=10,splatPenalty=-2,isSplat=s=>"*"===s;function computeScore(path,index){let segments=path.split("/"),initialScore=segments.length;return segments.some(isSplat)&&(initialScore+=splatPenalty),index&&(initialScore+=indexRouteValue),segments.filter(s=>!isSplat(s)).reduce((score,segment)=>score+(paramRe.test(segment)?dynamicSegmentValue:""===segment?emptySegmentValue:staticSegmentValue),initialScore)}function matchRouteBranch(branch,pathname,allowPartial=!1){let{routesMeta:routesMeta}=branch,matchedParams={},matchedPathname="/",matches=[];for(let i=0;i<routesMeta.length;++i){let meta=routesMeta[i],end=i===routesMeta.length-1,remainingPathname="/"===matchedPathname?pathname:pathname.slice(matchedPathname.length)||"/",match=matchPath({path:meta.relativePath,caseSensitive:meta.caseSensitive,end:end},remainingPathname),route=meta.route;if(!match&&end&&allowPartial&&!routesMeta[routesMeta.length-1].route.index&&(match=matchPath({path:meta.relativePath,caseSensitive:meta.caseSensitive,end:!1},remainingPathname)),!match)return null;Object.assign(matchedParams,match.params),matches.push({params:matchedParams,pathname:joinPaths([matchedPathname,match.pathname]),pathnameBase:normalizePathname(joinPaths([matchedPathname,match.pathnameBase])),route:route}),"/"!==match.pathnameBase&&(matchedPathname=joinPaths([matchedPathname,match.pathnameBase]))}return matches}function matchPath(pattern,pathname){"string"==typeof pattern&&(pattern={path:pattern,caseSensitive:!1,end:!0});let[matcher,compiledParams]=compilePath(pattern.path,pattern.caseSensitive,pattern.end),match=pathname.match(matcher);if(!match)return null;let matchedPathname=match[0],pathnameBase=matchedPathname.replace(/(.)\/+$/,"$1"),captureGroups=match.slice(1);return{params:compiledParams.reduce((memo2,{paramName:paramName,isOptional:isOptional},index)=>{if("*"===paramName){let splatValue=captureGroups[index]||"";pathnameBase=matchedPathname.slice(0,matchedPathname.length-splatValue.length).replace(/(.)\/+$/,"$1")}const value=captureGroups[index];return memo2[paramName]=isOptional&&!value?void 0:(value||"").replace(/%2F/g,"/"),memo2},{}),pathname:matchedPathname,pathnameBase:pathnameBase,pattern:pattern}}function compilePath(path,caseSensitive=!1,end=!0){warning("*"===path||!path.endsWith("*")||path.endsWith("/*"),`Route path "${path}" will be treated as if it were "${path.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${path.replace(/\*$/,"/*")}".`);let params=[],regexpSource="^"+path.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(_,paramName,isOptional)=>(params.push({paramName:paramName,isOptional:null!=isOptional}),isOptional?"/?([^\\/]+)?":"/([^\\/]+)"));return path.endsWith("*")?(params.push({paramName:"*"}),regexpSource+="*"===path||"/*"===path?"(.*)$":"(?:\\/(.+)|\\/*)$"):end?regexpSource+="\\/*$":""!==path&&"/"!==path&&(regexpSource+="(?:(?=\\/|$))"),[new RegExp(regexpSource,caseSensitive?void 0:"i"),params]}function decodePath(value){try{return value.split("/").map(v=>decodeURIComponent(v).replace(/\//g,"%2F")).join("/")}catch(error){return warning(!1,`The URL path "${value}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${error}).`),value}}function stripBasename(pathname,basename){if("/"===basename)return pathname;if(!pathname.toLowerCase().startsWith(basename.toLowerCase()))return null;let startIndex=basename.endsWith("/")?basename.length-1:basename.length,nextChar=pathname.charAt(startIndex);return nextChar&&"/"!==nextChar?null:pathname.slice(startIndex)||"/"}function getInvalidPathError(char,field,dest,path){return`Cannot include a '${char}' character in a manually specified \`to.${field}\` field [${JSON.stringify(path)}].  Please separate it out to the \`to.${dest}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function getPathContributingMatches(matches){return matches.filter((match,index)=>0===index||match.route.path&&match.route.path.length>0)}function getResolveToMatches(matches){let pathMatches=getPathContributingMatches(matches);return pathMatches.map((match,idx)=>idx===pathMatches.length-1?match.pathname:match.pathnameBase)}function resolveTo(toArg,routePathnames,locationPathname,isPathRelative=!1){let to;"string"==typeof toArg?to=parsePath(toArg):(to={...toArg},invariant(!to.pathname||!to.pathname.includes("?"),getInvalidPathError("?","pathname","search",to)),invariant(!to.pathname||!to.pathname.includes("#"),getInvalidPathError("#","pathname","hash",to)),invariant(!to.search||!to.search.includes("#"),getInvalidPathError("#","search","hash",to)));let from,isEmptyPath=""===toArg||""===to.pathname,toPathname=isEmptyPath?"/":to.pathname;if(null==toPathname)from=locationPathname;else{let routePathnameIndex=routePathnames.length-1;if(!isPathRelative&&toPathname.startsWith("..")){let toSegments=toPathname.split("/");for(;".."===toSegments[0];)toSegments.shift(),routePathnameIndex-=1;to.pathname=toSegments.join("/")}from=routePathnameIndex>=0?routePathnames[routePathnameIndex]:"/"}let path=function resolvePath(to,fromPathname="/"){let{pathname:toPathname,search:search="",hash:hash=""}="string"==typeof to?parsePath(to):to,pathname=toPathname?toPathname.startsWith("/")?toPathname:function resolvePathname(relativePath,fromPathname){let segments=fromPathname.replace(/\/+$/,"").split("/");return relativePath.split("/").forEach(segment=>{".."===segment?segments.length>1&&segments.pop():"."!==segment&&segments.push(segment)}),segments.length>1?segments.join("/"):"/"}(toPathname,fromPathname):fromPathname;return{pathname:pathname,search:normalizeSearch(search),hash:normalizeHash(hash)}}(to,from),hasExplicitTrailingSlash=toPathname&&"/"!==toPathname&&toPathname.endsWith("/"),hasCurrentTrailingSlash=(isEmptyPath||"."===toPathname)&&locationPathname.endsWith("/");return path.pathname.endsWith("/")||!hasExplicitTrailingSlash&&!hasCurrentTrailingSlash||(path.pathname+="/"),path}var joinPaths=paths=>paths.join("/").replace(/\/\/+/g,"/"),normalizePathname=pathname=>pathname.replace(/\/+$/,"").replace(/^\/*/,"/"),normalizeSearch=search=>search&&"?"!==search?search.startsWith("?")?search:"?"+search:"",normalizeHash=hash=>hash&&"#"!==hash?hash.startsWith("#")?hash:"#"+hash:"";var ErrorResponseImpl=class{constructor(status,statusText,data2,internal=!1){this.status=status,this.statusText=statusText||"",this.internal=internal,data2 instanceof Error?(this.data=data2.toString(),this.error=data2):this.data=data2}};function isRouteErrorResponse(error){return null!=error&&"number"==typeof error.status&&"string"==typeof error.statusText&&"boolean"==typeof error.internal&&"data"in error}var validMutationMethodsArr=["POST","PUT","PATCH","DELETE"],validMutationMethods=new Set(validMutationMethodsArr),validRequestMethodsArr=["GET",...validMutationMethodsArr],validRequestMethods=new Set(validRequestMethodsArr),redirectStatusCodes=new Set([301,302,303,307,308]),redirectPreserveMethodStatusCodes=new Set([307,308]),IDLE_NAVIGATION={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},IDLE_FETCHER={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},IDLE_BLOCKER={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},ABSOLUTE_URL_REGEX=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,defaultMapRouteProperties=route=>({hasErrorBoundary:Boolean(route.hasErrorBoundary)}),TRANSITIONS_STORAGE_KEY="remix-router-transitions",ResetLoaderDataSymbol=Symbol("ResetLoaderData");function createRouter(init){const routerWindow=init.window?init.window:"undefined"!=typeof window?window:void 0,isBrowser2=void 0!==routerWindow&&void 0!==routerWindow.document&&void 0!==routerWindow.document.createElement;invariant(init.routes.length>0,"You must provide a non-empty routes array to createRouter");let inFlightDataRoutes,initialized,router,hydrationRouteProperties2=init.hydrationRouteProperties||[],mapRouteProperties2=init.mapRouteProperties||defaultMapRouteProperties,manifest={},dataRoutes=convertRoutesToDataRoutes(init.routes,mapRouteProperties2,void 0,manifest),basename=init.basename||"/",dataStrategyImpl=init.dataStrategy||defaultDataStrategyWithMiddleware,future={unstable_middleware:!1,...init.future},unlistenHistory=null,subscribers=new Set,savedScrollPositions2=null,getScrollRestorationKey2=null,getScrollPosition=null,initialScrollRestored=null!=init.hydrationData,initialMatches=matchRoutes(dataRoutes,init.history.location,basename),initialMatchesIsFOW=!1,initialErrors=null;if(null!=initialMatches||init.patchRoutesOnNavigation){if(initialMatches&&!init.hydrationData){checkFogOfWar(initialMatches,dataRoutes,init.history.location.pathname).active&&(initialMatches=null)}if(initialMatches)if(initialMatches.some(m=>m.route.lazy))initialized=!1;else if(initialMatches.some(m=>m.route.loader)){let loaderData=init.hydrationData?init.hydrationData.loaderData:null,errors=init.hydrationData?init.hydrationData.errors:null;if(errors){let idx=initialMatches.findIndex(m=>void 0!==errors[m.route.id]);initialized=initialMatches.slice(0,idx+1).every(m=>!shouldLoadRouteOnHydration(m.route,loaderData,errors))}else initialized=initialMatches.every(m=>!shouldLoadRouteOnHydration(m.route,loaderData,errors))}else initialized=!0;else{initialized=!1,initialMatches=[];let fogOfWar=checkFogOfWar(null,dataRoutes,init.history.location.pathname);fogOfWar.active&&fogOfWar.matches&&(initialMatchesIsFOW=!0,initialMatches=fogOfWar.matches)}}else{let error=getInternalRouterError(404,{pathname:init.history.location.pathname}),{matches:matches,route:route}=getShortCircuitMatches(dataRoutes);initialized=!0,initialMatches=matches,initialErrors={[route.id]:error}}let pendingNavigationController,unblockBlockerHistoryUpdate,state={historyAction:init.history.action,location:init.history.location,matches:initialMatches,initialized:initialized,navigation:IDLE_NAVIGATION,restoreScrollPosition:null==init.hydrationData&&null,preventScrollReset:!1,revalidation:"idle",loaderData:init.hydrationData&&init.hydrationData.loaderData||{},actionData:init.hydrationData&&init.hydrationData.actionData||null,errors:init.hydrationData&&init.hydrationData.errors||initialErrors,fetchers:new Map,blockers:new Map},pendingAction="POP",pendingPreventScrollReset=!1,pendingViewTransitionEnabled=!1,appliedViewTransitions=new Map,removePageHideEventListener=null,isUninterruptedRevalidation=!1,isRevalidationRequired=!1,cancelledFetcherLoads=new Set,fetchControllers=new Map,incrementingLoadId=0,pendingNavigationLoadId=-1,fetchReloadIds=new Map,fetchRedirectIds=new Set,fetchLoadMatches=new Map,activeFetchers=new Map,fetchersQueuedForDeletion=new Set,blockerFunctions=new Map,pendingRevalidationDfd=null;function updateState(newState,opts={}){state={...state,...newState};let unmountedFetchers=[],mountedFetchers=[];state.fetchers.forEach((fetcher,key)=>{"idle"===fetcher.state&&(fetchersQueuedForDeletion.has(key)?unmountedFetchers.push(key):mountedFetchers.push(key))}),fetchersQueuedForDeletion.forEach(key=>{state.fetchers.has(key)||fetchControllers.has(key)||unmountedFetchers.push(key)}),[...subscribers].forEach(subscriber=>subscriber(state,{deletedFetchers:unmountedFetchers,viewTransitionOpts:opts.viewTransitionOpts,flushSync:!0===opts.flushSync})),unmountedFetchers.forEach(key=>deleteFetcher(key)),mountedFetchers.forEach(key=>state.fetchers.delete(key))}function completeNavigation(location,newState,{flushSync:flushSync}={}){let actionData,isActionReload=null!=state.actionData&&null!=state.navigation.formMethod&&isMutationMethod(state.navigation.formMethod)&&"loading"===state.navigation.state&&!0!==location.state?._isRedirect;actionData=newState.actionData?Object.keys(newState.actionData).length>0?newState.actionData:null:isActionReload?state.actionData:null;let loaderData=newState.loaderData?mergeLoaderData(state.loaderData,newState.loaderData,newState.matches||[],newState.errors):state.loaderData,blockers=state.blockers;blockers.size>0&&(blockers=new Map(blockers),blockers.forEach((_,k)=>blockers.set(k,IDLE_BLOCKER)));let viewTransitionOpts,preventScrollReset=!0===pendingPreventScrollReset||null!=state.navigation.formMethod&&isMutationMethod(state.navigation.formMethod)&&!0!==location.state?._isRedirect;if(inFlightDataRoutes&&(dataRoutes=inFlightDataRoutes,inFlightDataRoutes=void 0),isUninterruptedRevalidation||"POP"===pendingAction||("PUSH"===pendingAction?init.history.push(location,location.state):"REPLACE"===pendingAction&&init.history.replace(location,location.state)),"POP"===pendingAction){let priorPaths=appliedViewTransitions.get(state.location.pathname);priorPaths&&priorPaths.has(location.pathname)?viewTransitionOpts={currentLocation:state.location,nextLocation:location}:appliedViewTransitions.has(location.pathname)&&(viewTransitionOpts={currentLocation:location,nextLocation:state.location})}else if(pendingViewTransitionEnabled){let toPaths=appliedViewTransitions.get(state.location.pathname);toPaths?toPaths.add(location.pathname):(toPaths=new Set([location.pathname]),appliedViewTransitions.set(state.location.pathname,toPaths)),viewTransitionOpts={currentLocation:state.location,nextLocation:location}}updateState({...newState,actionData:actionData,loaderData:loaderData,historyAction:pendingAction,location:location,initialized:!0,navigation:IDLE_NAVIGATION,revalidation:"idle",restoreScrollPosition:getSavedScrollPosition(location,newState.matches||state.matches),preventScrollReset:preventScrollReset,blockers:blockers},{viewTransitionOpts:viewTransitionOpts,flushSync:!0===flushSync}),pendingAction="POP",pendingPreventScrollReset=!1,pendingViewTransitionEnabled=!1,isUninterruptedRevalidation=!1,isRevalidationRequired=!1,pendingRevalidationDfd?.resolve(),pendingRevalidationDfd=null}async function startNavigation(historyAction,location,opts){pendingNavigationController&&pendingNavigationController.abort(),pendingNavigationController=null,pendingAction=historyAction,isUninterruptedRevalidation=!0===(opts&&opts.startUninterruptedRevalidation),function saveScrollPosition(location,matches){if(savedScrollPositions2&&getScrollPosition){let key=getScrollKey(location,matches);savedScrollPositions2[key]=getScrollPosition()}}(state.location,state.matches),pendingPreventScrollReset=!0===(opts&&opts.preventScrollReset),pendingViewTransitionEnabled=!0===(opts&&opts.enableViewTransition);let routesToUse=inFlightDataRoutes||dataRoutes,loadingNavigation=opts&&opts.overrideNavigation,matches=opts?.initialHydration&&state.matches&&state.matches.length>0&&!initialMatchesIsFOW?state.matches:matchRoutes(routesToUse,location,basename),flushSync=!0===(opts&&opts.flushSync);if(matches&&state.initialized&&!isRevalidationRequired&&function isHashChangeOnly(a,b){if(a.pathname!==b.pathname||a.search!==b.search)return!1;if(""===a.hash)return""!==b.hash;if(a.hash===b.hash)return!0;if(""!==b.hash)return!0;return!1}(state.location,location)&&!(opts&&opts.submission&&isMutationMethod(opts.submission.formMethod)))return void completeNavigation(location,{matches:matches},{flushSync:flushSync});let fogOfWar=checkFogOfWar(matches,routesToUse,location.pathname);if(fogOfWar.active&&fogOfWar.matches&&(matches=fogOfWar.matches),!matches){let{error:error,notFoundMatches:notFoundMatches,route:route}=handleNavigational404(location.pathname);return void completeNavigation(location,{matches:notFoundMatches,loaderData:{},errors:{[route.id]:error}},{flushSync:flushSync})}pendingNavigationController=new AbortController;let pendingActionResult,request=createClientSideRequest(init.history,location,pendingNavigationController.signal,opts&&opts.submission),scopedContext=new unstable_RouterContextProvider(init.unstable_getContext?await init.unstable_getContext():void 0);if(opts&&opts.pendingError)pendingActionResult=[findNearestBoundary(matches).route.id,{type:"error",error:opts.pendingError}];else if(opts&&opts.submission&&isMutationMethod(opts.submission.formMethod)){let actionResult=await async function handleAction(request,location,submission,matches,scopedContext,isFogOfWar,initialHydration,opts={}){interruptActiveLoads();let result,navigation=function getSubmittingNavigation(location,submission){let navigation={state:"submitting",location:location,formMethod:submission.formMethod,formAction:submission.formAction,formEncType:submission.formEncType,formData:submission.formData,json:submission.json,text:submission.text};return navigation}(location,submission);if(updateState({navigation:navigation},{flushSync:!0===opts.flushSync}),isFogOfWar){let discoverResult=await discoverRoutes(matches,location.pathname,request.signal);if("aborted"===discoverResult.type)return{shortCircuited:!0};if("error"===discoverResult.type){let boundaryId=findNearestBoundary(discoverResult.partialMatches).route.id;return{matches:discoverResult.partialMatches,pendingActionResult:[boundaryId,{type:"error",error:discoverResult.error}]}}if(!discoverResult.matches){let{notFoundMatches:notFoundMatches,error:error,route:route}=handleNavigational404(location.pathname);return{matches:notFoundMatches,pendingActionResult:[route.id,{type:"error",error:error}]}}matches=discoverResult.matches}let actionMatch=getTargetMatch(matches,location);if(actionMatch.route.action||actionMatch.route.lazy){let dsMatches=getTargetedDataStrategyMatches(mapRouteProperties2,manifest,request,matches,actionMatch,initialHydration?[]:hydrationRouteProperties2,scopedContext),results=await callDataStrategy(request,dsMatches,scopedContext,null);if(result=results[actionMatch.route.id],!result)for(let match of matches)if(results[match.route.id]){result=results[match.route.id];break}if(request.signal.aborted)return{shortCircuited:!0}}else result={type:"error",error:getInternalRouterError(405,{method:request.method,pathname:location.pathname,routeId:actionMatch.route.id})};if(isRedirectResult(result)){let replace2;if(opts&&null!=opts.replace)replace2=opts.replace;else{replace2=normalizeRedirectLocation(result.response.headers.get("Location"),new URL(request.url),basename)===state.location.pathname+state.location.search}return await startRedirectNavigation(request,result,!0,{submission:submission,replace:replace2}),{shortCircuited:!0}}if(isErrorResult(result)){let boundaryMatch=findNearestBoundary(matches,actionMatch.route.id);return!0!==(opts&&opts.replace)&&(pendingAction="PUSH"),{matches:matches,pendingActionResult:[boundaryMatch.route.id,result,actionMatch.route.id]}}return{matches:matches,pendingActionResult:[actionMatch.route.id,result]}}(request,location,opts.submission,matches,scopedContext,fogOfWar.active,opts&&!0===opts.initialHydration,{replace:opts.replace,flushSync:flushSync});if(actionResult.shortCircuited)return;if(actionResult.pendingActionResult){let[routeId,result]=actionResult.pendingActionResult;if(isErrorResult(result)&&isRouteErrorResponse(result.error)&&404===result.error.status)return pendingNavigationController=null,void completeNavigation(location,{matches:actionResult.matches,loaderData:{},errors:{[routeId]:result.error}})}matches=actionResult.matches||matches,pendingActionResult=actionResult.pendingActionResult,loadingNavigation=getLoadingNavigation(location,opts.submission),flushSync=!1,fogOfWar.active=!1,request=createClientSideRequest(init.history,request.url,request.signal)}let{shortCircuited:shortCircuited,matches:updatedMatches,loaderData:loaderData,errors:errors}=await async function handleLoaders(request,location,matches,scopedContext,isFogOfWar,overrideNavigation,submission,fetcherSubmission,replace2,initialHydration,flushSync,pendingActionResult){let loadingNavigation=overrideNavigation||getLoadingNavigation(location,submission),activeSubmission=submission||fetcherSubmission||getSubmissionFromNavigation(loadingNavigation),shouldUpdateNavigationState=!isUninterruptedRevalidation&&!initialHydration;if(isFogOfWar){if(shouldUpdateNavigationState){let actionData=getUpdatedActionData(pendingActionResult);updateState({navigation:loadingNavigation,...void 0!==actionData?{actionData:actionData}:{}},{flushSync:flushSync})}let discoverResult=await discoverRoutes(matches,location.pathname,request.signal);if("aborted"===discoverResult.type)return{shortCircuited:!0};if("error"===discoverResult.type){let boundaryId=findNearestBoundary(discoverResult.partialMatches).route.id;return{matches:discoverResult.partialMatches,loaderData:{},errors:{[boundaryId]:discoverResult.error}}}if(!discoverResult.matches){let{error:error,notFoundMatches:notFoundMatches,route:route}=handleNavigational404(location.pathname);return{matches:notFoundMatches,loaderData:{},errors:{[route.id]:error}}}matches=discoverResult.matches}let routesToUse=inFlightDataRoutes||dataRoutes,{dsMatches:dsMatches,revalidatingFetchers:revalidatingFetchers}=getMatchesToLoad(request,scopedContext,mapRouteProperties2,manifest,init.history,state,matches,activeSubmission,location,initialHydration?[]:hydrationRouteProperties2,!0===initialHydration,isRevalidationRequired,cancelledFetcherLoads,fetchersQueuedForDeletion,fetchLoadMatches,fetchRedirectIds,routesToUse,basename,null!=init.patchRoutesOnNavigation,pendingActionResult);if(pendingNavigationLoadId=++incrementingLoadId,!init.dataStrategy&&!dsMatches.some(m=>m.shouldLoad)&&0===revalidatingFetchers.length){let updatedFetchers2=markFetchRedirectsDone();return completeNavigation(location,{matches:matches,loaderData:{},errors:pendingActionResult&&isErrorResult(pendingActionResult[1])?{[pendingActionResult[0]]:pendingActionResult[1].error}:null,...getActionDataForCommit(pendingActionResult),...updatedFetchers2?{fetchers:new Map(state.fetchers)}:{}},{flushSync:flushSync}),{shortCircuited:!0}}if(shouldUpdateNavigationState){let updates={};if(!isFogOfWar){updates.navigation=loadingNavigation;let actionData=getUpdatedActionData(pendingActionResult);void 0!==actionData&&(updates.actionData=actionData)}revalidatingFetchers.length>0&&(updates.fetchers=function getUpdatedRevalidatingFetchers(revalidatingFetchers){return revalidatingFetchers.forEach(rf=>{let fetcher=state.fetchers.get(rf.key),revalidatingFetcher=getLoadingFetcher(void 0,fetcher?fetcher.data:void 0);state.fetchers.set(rf.key,revalidatingFetcher)}),new Map(state.fetchers)}(revalidatingFetchers)),updateState(updates,{flushSync:flushSync})}revalidatingFetchers.forEach(rf=>{abortFetcher(rf.key),rf.controller&&fetchControllers.set(rf.key,rf.controller)});let abortPendingFetchRevalidations=()=>revalidatingFetchers.forEach(f=>abortFetcher(f.key));pendingNavigationController&&pendingNavigationController.signal.addEventListener("abort",abortPendingFetchRevalidations);let{loaderResults:loaderResults,fetcherResults:fetcherResults}=await callLoadersAndMaybeResolveData(dsMatches,revalidatingFetchers,request,scopedContext);if(request.signal.aborted)return{shortCircuited:!0};pendingNavigationController&&pendingNavigationController.signal.removeEventListener("abort",abortPendingFetchRevalidations);revalidatingFetchers.forEach(rf=>fetchControllers.delete(rf.key));let redirect2=findRedirect(loaderResults);if(redirect2)return await startRedirectNavigation(request,redirect2.result,!0,{replace:replace2}),{shortCircuited:!0};if(redirect2=findRedirect(fetcherResults),redirect2)return fetchRedirectIds.add(redirect2.key),await startRedirectNavigation(request,redirect2.result,!0,{replace:replace2}),{shortCircuited:!0};let{loaderData:loaderData,errors:errors}=processLoaderData(state,matches,loaderResults,pendingActionResult,revalidatingFetchers,fetcherResults);initialHydration&&state.errors&&(errors={...state.errors,...errors});let updatedFetchers=markFetchRedirectsDone(),didAbortFetchLoads=abortStaleFetchLoads(pendingNavigationLoadId),shouldUpdateFetchers=updatedFetchers||didAbortFetchLoads||revalidatingFetchers.length>0;return{matches:matches,loaderData:loaderData,errors:errors,...shouldUpdateFetchers?{fetchers:new Map(state.fetchers)}:{}}}(request,location,matches,scopedContext,fogOfWar.active,loadingNavigation,opts&&opts.submission,opts&&opts.fetcherSubmission,opts&&opts.replace,opts&&!0===opts.initialHydration,flushSync,pendingActionResult);shortCircuited||(pendingNavigationController=null,completeNavigation(location,{matches:updatedMatches||matches,...getActionDataForCommit(pendingActionResult),loaderData:loaderData,errors:errors}))}function getUpdatedActionData(pendingActionResult){return pendingActionResult&&!isErrorResult(pendingActionResult[1])?{[pendingActionResult[0]]:pendingActionResult[1].data}:state.actionData?0===Object.keys(state.actionData).length?null:state.actionData:void 0}async function startRedirectNavigation(request,redirect2,isNavigation,{submission:submission,fetcherSubmission:fetcherSubmission,preventScrollReset:preventScrollReset,replace:replace2}={}){redirect2.response.headers.has("X-Remix-Revalidate")&&(isRevalidationRequired=!0);let location=redirect2.response.headers.get("Location");invariant(location,"Expected a Location header on the redirect Response"),location=normalizeRedirectLocation(location,new URL(request.url),basename);let redirectLocation=createLocation(state.location,location,{_isRedirect:!0});if(isBrowser2){let isDocumentReload=!1;if(redirect2.response.headers.has("X-Remix-Reload-Document"))isDocumentReload=!0;else if(ABSOLUTE_URL_REGEX.test(location)){const url=createBrowserURLImpl(location,!0);isDocumentReload=url.origin!==routerWindow.location.origin||null==stripBasename(url.pathname,basename)}if(isDocumentReload)return void(replace2?routerWindow.location.replace(location):routerWindow.location.assign(location))}pendingNavigationController=null;let redirectNavigationType=!0===replace2||redirect2.response.headers.has("X-Remix-Replace")?"REPLACE":"PUSH",{formMethod:formMethod,formAction:formAction,formEncType:formEncType}=state.navigation;!submission&&!fetcherSubmission&&formMethod&&formAction&&formEncType&&(submission=getSubmissionFromNavigation(state.navigation));let activeSubmission=submission||fetcherSubmission;if(redirectPreserveMethodStatusCodes.has(redirect2.response.status)&&activeSubmission&&isMutationMethod(activeSubmission.formMethod))await startNavigation(redirectNavigationType,redirectLocation,{submission:{...activeSubmission,formAction:location},preventScrollReset:preventScrollReset||pendingPreventScrollReset,enableViewTransition:isNavigation?pendingViewTransitionEnabled:void 0});else{let overrideNavigation=getLoadingNavigation(redirectLocation,submission);await startNavigation(redirectNavigationType,redirectLocation,{overrideNavigation:overrideNavigation,fetcherSubmission:fetcherSubmission,preventScrollReset:preventScrollReset||pendingPreventScrollReset,enableViewTransition:isNavigation?pendingViewTransitionEnabled:void 0})}}async function callDataStrategy(request,matches,scopedContext,fetcherKey){let results,dataResults={};try{results=await callDataStrategyImpl(dataStrategyImpl,request,matches,fetcherKey,scopedContext,!1)}catch(e){return matches.filter(m=>m.shouldLoad).forEach(m=>{dataResults[m.route.id]={type:"error",error:e}}),dataResults}if(request.signal.aborted)return dataResults;for(let[routeId,result]of Object.entries(results))if(isRedirectDataStrategyResult(result)){let response=result.result;dataResults[routeId]={type:"redirect",response:normalizeRelativeRoutingRedirectResponse(response,request,routeId,matches,basename)}}else dataResults[routeId]=await convertDataStrategyResultToDataResult(result);return dataResults}async function callLoadersAndMaybeResolveData(matches,fetchersToLoad,request,scopedContext){let loaderResultsPromise=callDataStrategy(request,matches,scopedContext,null),fetcherResultsPromise=Promise.all(fetchersToLoad.map(async f=>{if(f.matches&&f.match&&f.request&&f.controller){let result=(await callDataStrategy(f.request,f.matches,scopedContext,f.key))[f.match.route.id];return{[f.key]:result}}return Promise.resolve({[f.key]:{type:"error",error:getInternalRouterError(404,{pathname:f.path})}})}));return{loaderResults:await loaderResultsPromise,fetcherResults:(await fetcherResultsPromise).reduce((acc,r)=>Object.assign(acc,r),{})}}function interruptActiveLoads(){isRevalidationRequired=!0,fetchLoadMatches.forEach((_,key)=>{fetchControllers.has(key)&&cancelledFetcherLoads.add(key),abortFetcher(key)})}function updateFetcherState(key,fetcher,opts={}){state.fetchers.set(key,fetcher),updateState({fetchers:new Map(state.fetchers)},{flushSync:!0===(opts&&opts.flushSync)})}function setFetcherError(key,routeId,error,opts={}){let boundaryMatch=findNearestBoundary(state.matches,routeId);deleteFetcher(key),updateState({errors:{[boundaryMatch.route.id]:error},fetchers:new Map(state.fetchers)},{flushSync:!0===(opts&&opts.flushSync)})}function getFetcher(key){return activeFetchers.set(key,(activeFetchers.get(key)||0)+1),fetchersQueuedForDeletion.has(key)&&fetchersQueuedForDeletion.delete(key),state.fetchers.get(key)||IDLE_FETCHER}function deleteFetcher(key){let fetcher=state.fetchers.get(key);!fetchControllers.has(key)||fetcher&&"loading"===fetcher.state&&fetchReloadIds.has(key)||abortFetcher(key),fetchLoadMatches.delete(key),fetchReloadIds.delete(key),fetchRedirectIds.delete(key),fetchersQueuedForDeletion.delete(key),cancelledFetcherLoads.delete(key),state.fetchers.delete(key)}function abortFetcher(key){let controller=fetchControllers.get(key);controller&&(controller.abort(),fetchControllers.delete(key))}function markFetchersDone(keys){for(let key of keys){let doneFetcher=getDoneFetcher(getFetcher(key).data);state.fetchers.set(key,doneFetcher)}}function markFetchRedirectsDone(){let doneKeys=[],updatedFetchers=!1;for(let key of fetchRedirectIds){let fetcher=state.fetchers.get(key);invariant(fetcher,`Expected fetcher: ${key}`),"loading"===fetcher.state&&(fetchRedirectIds.delete(key),doneKeys.push(key),updatedFetchers=!0)}return markFetchersDone(doneKeys),updatedFetchers}function abortStaleFetchLoads(landedId){let yeetedKeys=[];for(let[key,id]of fetchReloadIds)if(id<landedId){let fetcher=state.fetchers.get(key);invariant(fetcher,`Expected fetcher: ${key}`),"loading"===fetcher.state&&(abortFetcher(key),fetchReloadIds.delete(key),yeetedKeys.push(key))}return markFetchersDone(yeetedKeys),yeetedKeys.length>0}function deleteBlocker(key){state.blockers.delete(key),blockerFunctions.delete(key)}function updateBlocker(key,newBlocker){let blocker=state.blockers.get(key)||IDLE_BLOCKER;invariant("unblocked"===blocker.state&&"blocked"===newBlocker.state||"blocked"===blocker.state&&"blocked"===newBlocker.state||"blocked"===blocker.state&&"proceeding"===newBlocker.state||"blocked"===blocker.state&&"unblocked"===newBlocker.state||"proceeding"===blocker.state&&"unblocked"===newBlocker.state,`Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`);let blockers=new Map(state.blockers);blockers.set(key,newBlocker),updateState({blockers:blockers})}function shouldBlockNavigation({currentLocation:currentLocation,nextLocation:nextLocation,historyAction:historyAction}){if(0===blockerFunctions.size)return;blockerFunctions.size>1&&warning(!1,"A router only supports one blocker at a time");let entries=Array.from(blockerFunctions.entries()),[blockerKey,blockerFunction]=entries[entries.length-1],blocker=state.blockers.get(blockerKey);return blocker&&"proceeding"===blocker.state?void 0:blockerFunction({currentLocation:currentLocation,nextLocation:nextLocation,historyAction:historyAction})?blockerKey:void 0}function handleNavigational404(pathname){let error=getInternalRouterError(404,{pathname:pathname}),routesToUse=inFlightDataRoutes||dataRoutes,{matches:matches,route:route}=getShortCircuitMatches(routesToUse);return{notFoundMatches:matches,route:route,error:error}}function getScrollKey(location,matches){if(getScrollRestorationKey2){return getScrollRestorationKey2(location,matches.map(m=>convertRouteMatchToUiMatch(m,state.loaderData)))||location.key}return location.key}function getSavedScrollPosition(location,matches){if(savedScrollPositions2){let key=getScrollKey(location,matches),y=savedScrollPositions2[key];if("number"==typeof y)return y}return null}function checkFogOfWar(matches,routesToUse,pathname){if(init.patchRoutesOnNavigation){if(!matches){return{active:!0,matches:matchRoutesImpl(routesToUse,pathname,basename,!0)||[]}}if(Object.keys(matches[0].params).length>0){return{active:!0,matches:matchRoutesImpl(routesToUse,pathname,basename,!0)}}}return{active:!1,matches:null}}async function discoverRoutes(matches,pathname,signal,fetcherKey){if(!init.patchRoutesOnNavigation)return{type:"success",matches:matches};let partialMatches=matches;for(;;){let isNonHMR=null==inFlightDataRoutes,routesToUse=inFlightDataRoutes||dataRoutes,localManifest=manifest;try{await init.patchRoutesOnNavigation({signal:signal,path:pathname,matches:partialMatches,fetcherKey:fetcherKey,patch:(routeId,children)=>{signal.aborted||patchRoutesImpl(routeId,children,routesToUse,localManifest,mapRouteProperties2)}})}catch(e){return{type:"error",error:e,partialMatches:partialMatches}}finally{isNonHMR&&!signal.aborted&&(dataRoutes=[...dataRoutes])}if(signal.aborted)return{type:"aborted"};let newMatches=matchRoutes(routesToUse,pathname,basename);if(newMatches)return{type:"success",matches:newMatches};let newPartialMatches=matchRoutesImpl(routesToUse,pathname,basename,!0);if(!newPartialMatches||partialMatches.length===newPartialMatches.length&&partialMatches.every((m,i)=>m.route.id===newPartialMatches[i].route.id))return{type:"success",matches:null};partialMatches=newPartialMatches}}return router={get basename(){return basename},get future(){return future},get state(){return state},get routes(){return dataRoutes},get window(){return routerWindow},initialize:function initialize(){if(unlistenHistory=init.history.listen(({action:historyAction,location:location,delta:delta})=>{if(unblockBlockerHistoryUpdate)return unblockBlockerHistoryUpdate(),void(unblockBlockerHistoryUpdate=void 0);warning(0===blockerFunctions.size||null!=delta,"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 blockerKey=shouldBlockNavigation({currentLocation:state.location,nextLocation:location,historyAction:historyAction});if(blockerKey&&null!=delta){let nextHistoryUpdatePromise=new Promise(resolve=>{unblockBlockerHistoryUpdate=resolve});return init.history.go(-1*delta),void updateBlocker(blockerKey,{state:"blocked",location:location,proceed(){updateBlocker(blockerKey,{state:"proceeding",proceed:void 0,reset:void 0,location:location}),nextHistoryUpdatePromise.then(()=>init.history.go(delta))},reset(){let blockers=new Map(state.blockers);blockers.set(blockerKey,IDLE_BLOCKER),updateState({blockers:blockers})}})}return startNavigation(historyAction,location)}),isBrowser2){!function restoreAppliedTransitions(_window,transitions){try{let sessionPositions=_window.sessionStorage.getItem(TRANSITIONS_STORAGE_KEY);if(sessionPositions){let json=JSON.parse(sessionPositions);for(let[k,v]of Object.entries(json||{}))v&&Array.isArray(v)&&transitions.set(k,new Set(v||[]))}}catch(e){}}(routerWindow,appliedViewTransitions);let _saveAppliedTransitions=()=>function persistAppliedTransitions(_window,transitions){if(transitions.size>0){let json={};for(let[k,v]of transitions)json[k]=[...v];try{_window.sessionStorage.setItem(TRANSITIONS_STORAGE_KEY,JSON.stringify(json))}catch(error){warning(!1,`Failed to save applied view transitions in sessionStorage (${error}).`)}}}(routerWindow,appliedViewTransitions);routerWindow.addEventListener("pagehide",_saveAppliedTransitions),removePageHideEventListener=()=>routerWindow.removeEventListener("pagehide",_saveAppliedTransitions)}return state.initialized||startNavigation("POP",state.location,{initialHydration:!0}),router},subscribe:function subscribe(fn){return subscribers.add(fn),()=>subscribers.delete(fn)},enableScrollRestoration:function enableScrollRestoration(positions,getPosition,getKey){if(savedScrollPositions2=positions,getScrollPosition=getPosition,getScrollRestorationKey2=getKey||null,!initialScrollRestored&&state.navigation===IDLE_NAVIGATION){initialScrollRestored=!0;let y=getSavedScrollPosition(state.location,state.matches);null!=y&&updateState({restoreScrollPosition:y})}return()=>{savedScrollPositions2=null,getScrollPosition=null,getScrollRestorationKey2=null}},navigate:async function navigate(to,opts){if("number"==typeof to)return void init.history.go(to);let normalizedPath=normalizeTo(state.location,state.matches,basename,to,opts?.fromRouteId,opts?.relative),{path:path,submission:submission,error:error}=normalizeNavigateOptions(!1,normalizedPath,opts),currentLocation=state.location,nextLocation=createLocation(state.location,path,opts&&opts.state);nextLocation={...nextLocation,...init.history.encodeLocation(nextLocation)};let userReplace=opts&&null!=opts.replace?opts.replace:void 0,historyAction="PUSH";!0===userReplace?historyAction="REPLACE":!1===userReplace||null!=submission&&isMutationMethod(submission.formMethod)&&submission.formAction===state.location.pathname+state.location.search&&(historyAction="REPLACE");let preventScrollReset=opts&&"preventScrollReset"in opts?!0===opts.preventScrollReset:void 0,flushSync=!0===(opts&&opts.flushSync),blockerKey=shouldBlockNavigation({currentLocation:currentLocation,nextLocation:nextLocation,historyAction:historyAction});blockerKey?updateBlocker(blockerKey,{state:"blocked",location:nextLocation,proceed(){updateBlocker(blockerKey,{state:"proceeding",proceed:void 0,reset:void 0,location:nextLocation}),navigate(to,opts)},reset(){let blockers=new Map(state.blockers);blockers.set(blockerKey,IDLE_BLOCKER),updateState({blockers:blockers})}}):await startNavigation(historyAction,nextLocation,{submission:submission,pendingError:error,preventScrollReset:preventScrollReset,replace:opts&&opts.replace,enableViewTransition:opts&&opts.viewTransition,flushSync:flushSync})},fetch:async function fetch2(key,routeId,href2,opts){abortFetcher(key);let flushSync=!0===(opts&&opts.flushSync),routesToUse=inFlightDataRoutes||dataRoutes,normalizedPath=normalizeTo(state.location,state.matches,basename,href2,routeId,opts?.relative),matches=matchRoutes(routesToUse,normalizedPath,basename),fogOfWar=checkFogOfWar(matches,routesToUse,normalizedPath);if(fogOfWar.active&&fogOfWar.matches&&(matches=fogOfWar.matches),!matches)return void setFetcherError(key,routeId,getInternalRouterError(404,{pathname:normalizedPath}),{flushSync:flushSync});let{path:path,submission:submission,error:error}=normalizeNavigateOptions(!0,normalizedPath,opts);if(error)return void setFetcherError(key,routeId,error,{flushSync:flushSync});let match=getTargetMatch(matches,path),scopedContext=new unstable_RouterContextProvider(init.unstable_getContext?await init.unstable_getContext():void 0),preventScrollReset=!0===(opts&&opts.preventScrollReset);submission&&isMutationMethod(submission.formMethod)?await async function handleFetcherAction(key,routeId,path,match,requestMatches,scopedContext,isFogOfWar,flushSync,preventScrollReset,submission){function detectAndHandle405Error(m){if(!m.route.action&&!m.route.lazy){let error=getInternalRouterError(405,{method:submission.formMethod,pathname:path,routeId:routeId});return setFetcherError(key,routeId,error,{flushSync:flushSync}),!0}return!1}if(interruptActiveLoads(),fetchLoadMatches.delete(key),!isFogOfWar&&detectAndHandle405Error(match))return;let existingFetcher=state.fetchers.get(key);updateFetcherState(key,function getSubmittingFetcher(submission,existingFetcher){let fetcher={state:"submitting",formMethod:submission.formMethod,formAction:submission.formAction,formEncType:submission.formEncType,formData:submission.formData,json:submission.json,text:submission.text,data:existingFetcher?existingFetcher.data:void 0};return fetcher}(submission,existingFetcher),{flushSync:flushSync});let abortController=new AbortController,fetchRequest=createClientSideRequest(init.history,path,abortController.signal,submission);if(isFogOfWar){let discoverResult=await discoverRoutes(requestMatches,path,fetchRequest.signal,key);if("aborted"===discoverResult.type)return;if("error"===discoverResult.type)return void setFetcherError(key,routeId,discoverResult.error,{flushSync:flushSync});if(!discoverResult.matches)return void setFetcherError(key,routeId,getInternalRouterError(404,{pathname:path}),{flushSync:flushSync});if(detectAndHandle405Error(match=getTargetMatch(requestMatches=discoverResult.matches,path)))return}fetchControllers.set(key,abortController);let originatingLoadId=incrementingLoadId,fetchMatches=getTargetedDataStrategyMatches(mapRouteProperties2,manifest,fetchRequest,requestMatches,match,hydrationRouteProperties2,scopedContext),actionResults=await callDataStrategy(fetchRequest,fetchMatches,scopedContext,key),actionResult=actionResults[match.route.id];if(fetchRequest.signal.aborted)return void(fetchControllers.get(key)===abortController&&fetchControllers.delete(key));if(fetchersQueuedForDeletion.has(key)){if(isRedirectResult(actionResult)||isErrorResult(actionResult))return void updateFetcherState(key,getDoneFetcher(void 0))}else{if(isRedirectResult(actionResult))return fetchControllers.delete(key),pendingNavigationLoadId>originatingLoadId?void updateFetcherState(key,getDoneFetcher(void 0)):(fetchRedirectIds.add(key),updateFetcherState(key,getLoadingFetcher(submission)),startRedirectNavigation(fetchRequest,actionResult,!1,{fetcherSubmission:submission,preventScrollReset:preventScrollReset}));if(isErrorResult(actionResult))return void setFetcherError(key,routeId,actionResult.error)}let nextLocation=state.navigation.location||state.location,revalidationRequest=createClientSideRequest(init.history,nextLocation,abortController.signal),routesToUse=inFlightDataRoutes||dataRoutes,matches="idle"!==state.navigation.state?matchRoutes(routesToUse,state.navigation.location,basename):state.matches;invariant(matches,"Didn't find any matches after fetcher action");let loadId=++incrementingLoadId;fetchReloadIds.set(key,loadId);let loadFetcher=getLoadingFetcher(submission,actionResult.data);state.fetchers.set(key,loadFetcher);let{dsMatches:dsMatches,revalidatingFetchers:revalidatingFetchers}=getMatchesToLoad(revalidationRequest,scopedContext,mapRouteProperties2,manifest,init.history,state,matches,submission,nextLocation,hydrationRouteProperties2,!1,isRevalidationRequired,cancelledFetcherLoads,fetchersQueuedForDeletion,fetchLoadMatches,fetchRedirectIds,routesToUse,basename,null!=init.patchRoutesOnNavigation,[match.route.id,actionResult]);revalidatingFetchers.filter(rf=>rf.key!==key).forEach(rf=>{let staleKey=rf.key,existingFetcher2=state.fetchers.get(staleKey),revalidatingFetcher=getLoadingFetcher(void 0,existingFetcher2?existingFetcher2.data:void 0);state.fetchers.set(staleKey,revalidatingFetcher),abortFetcher(staleKey),rf.controller&&fetchControllers.set(staleKey,rf.controller)}),updateState({fetchers:new Map(state.fetchers)});let abortPendingFetchRevalidations=()=>revalidatingFetchers.forEach(rf=>abortFetcher(rf.key));abortController.signal.addEventListener("abort",abortPendingFetchRevalidations);let{loaderResults:loaderResults,fetcherResults:fetcherResults}=await callLoadersAndMaybeResolveData(dsMatches,revalidatingFetchers,revalidationRequest,scopedContext);if(abortController.signal.aborted)return;if(abortController.signal.removeEventListener("abort",abortPendingFetchRevalidations),fetchReloadIds.delete(key),fetchControllers.delete(key),revalidatingFetchers.forEach(r=>fetchControllers.delete(r.key)),state.fetchers.has(key)){let doneFetcher=getDoneFetcher(actionResult.data);state.fetchers.set(key,doneFetcher)}let redirect2=findRedirect(loaderResults);if(redirect2)return startRedirectNavigation(revalidationRequest,redirect2.result,!1,{preventScrollReset:preventScrollReset});if(redirect2=findRedirect(fetcherResults),redirect2)return fetchRedirectIds.add(redirect2.key),startRedirectNavigation(revalidationRequest,redirect2.result,!1,{preventScrollReset:preventScrollReset});let{loaderData:loaderData,errors:errors}=processLoaderData(state,matches,loaderResults,void 0,revalidatingFetchers,fetcherResults);abortStaleFetchLoads(loadId),"loading"===state.navigation.state&&loadId>pendingNavigationLoadId?(invariant(pendingAction,"Expected pending action"),pendingNavigationController&&pendingNavigationController.abort(),completeNavigation(state.navigation.location,{matches:matches,loaderData:loaderData,errors:errors,fetchers:new Map(state.fetchers)})):(updateState({errors:errors,loaderData:mergeLoaderData(state.loaderData,loaderData,matches,errors),fetchers:new Map(state.fetchers)}),isRevalidationRequired=!1)}(key,routeId,path,match,matches,scopedContext,fogOfWar.active,flushSync,preventScrollReset,submission):(fetchLoadMatches.set(key,{routeId:routeId,path:path}),await async function handleFetcherLoader(key,routeId,path,match,matches,scopedContext,isFogOfWar,flushSync,preventScrollReset,submission){let existingFetcher=state.fetchers.get(key);updateFetcherState(key,getLoadingFetcher(submission,existingFetcher?existingFetcher.data:void 0),{flushSync:flushSync});let abortController=new AbortController,fetchRequest=createClientSideRequest(init.history,path,abortController.signal);if(isFogOfWar){let discoverResult=await discoverRoutes(matches,path,fetchRequest.signal,key);if("aborted"===discoverResult.type)return;if("error"===discoverResult.type)return void setFetcherError(key,routeId,discoverResult.error,{flushSync:flushSync});if(!discoverResult.matches)return void setFetcherError(key,routeId,getInternalRouterError(404,{pathname:path}),{flushSync:flushSync});match=getTargetMatch(matches=discoverResult.matches,path)}fetchControllers.set(key,abortController);let originatingLoadId=incrementingLoadId,dsMatches=getTargetedDataStrategyMatches(mapRouteProperties2,manifest,fetchRequest,matches,match,hydrationRouteProperties2,scopedContext),results=await callDataStrategy(fetchRequest,dsMatches,scopedContext,key),result=results[match.route.id];fetchControllers.get(key)===abortController&&fetchControllers.delete(key);if(fetchRequest.signal.aborted)return;if(fetchersQueuedForDeletion.has(key))return void updateFetcherState(key,getDoneFetcher(void 0));if(isRedirectResult(result))return pendingNavigationLoadId>originatingLoadId?void updateFetcherState(key,getDoneFetcher(void 0)):(fetchRedirectIds.add(key),void await startRedirectNavigation(fetchRequest,result,!1,{preventScrollReset:preventScrollReset}));if(isErrorResult(result))return void setFetcherError(key,routeId,result.error);updateFetcherState(key,getDoneFetcher(result.data))}(key,routeId,path,match,matches,scopedContext,fogOfWar.active,flushSync,preventScrollReset,submission))},revalidate:function revalidate(){pendingRevalidationDfd||(pendingRevalidationDfd=function createDeferred(){let resolve,reject,promise=new Promise((res,rej)=>{resolve=async val=>{res(val);try{await promise}catch(e){}},reject=async error=>{rej(error);try{await promise}catch(e){}}});return{promise:promise,resolve:resolve,reject:reject}}()),interruptActiveLoads(),updateState({revalidation:"loading"});let promise=pendingRevalidationDfd.promise;return"submitting"===state.navigation.state?promise:"idle"===state.navigation.state?(startNavigation(state.historyAction,state.location,{startUninterruptedRevalidation:!0}),promise):(startNavigation(pendingAction||state.historyAction,state.navigation.location,{overrideNavigation:state.navigation,enableViewTransition:!0===pendingViewTransitionEnabled}),promise)},createHref:to=>init.history.createHref(to),encodeLocation:to=>init.history.encodeLocation(to),getFetcher:getFetcher,deleteFetcher:function queueFetcherForDeletion(key){let count=(activeFetchers.get(key)||0)-1;count<=0?(activeFetchers.delete(key),fetchersQueuedForDeletion.add(key)):activeFetchers.set(key,count),updateState({fetchers:new Map(state.fetchers)})},dispose:function dispose(){unlistenHistory&&unlistenHistory(),removePageHideEventListener&&removePageHideEventListener(),subscribers.clear(),pendingNavigationController&&pendingNavigationController.abort(),state.fetchers.forEach((_,key)=>deleteFetcher(key)),state.blockers.forEach((_,key)=>deleteBlocker(key))},getBlocker:function getBlocker(key,fn){let blocker=state.blockers.get(key)||IDLE_BLOCKER;return blockerFunctions.get(key)!==fn&&blockerFunctions.set(key,fn),blocker},deleteBlocker:deleteBlocker,patchRoutes:function patchRoutes(routeId,children){let isNonHMR=null==inFlightDataRoutes;patchRoutesImpl(routeId,children,inFlightDataRoutes||dataRoutes,manifest,mapRouteProperties2),isNonHMR&&(dataRoutes=[...dataRoutes],updateState({}))},_internalFetchControllers:fetchControllers,_internalSetRoutes:function _internalSetRoutes(newRoutes){manifest={},inFlightDataRoutes=convertRoutesToDataRoutes(newRoutes,mapRouteProperties2,void 0,manifest)}},router}function normalizeTo(location,matches,basename,to,fromRouteId,relative){let contextualMatches,activeRouteMatch;if(fromRouteId){contextualMatches=[];for(let match of matches)if(contextualMatches.push(match),match.route.id===fromRouteId){activeRouteMatch=match;break}}else contextualMatches=matches,activeRouteMatch=matches[matches.length-1];let path=resolveTo(to||".",getResolveToMatches(contextualMatches),stripBasename(location.pathname,basename)||location.pathname,"path"===relative);if(null==to&&(path.search=location.search,path.hash=location.hash),(null==to||""===to||"."===to)&&activeRouteMatch){let nakedIndex=hasNakedIndexQuery(path.search);if(activeRouteMatch.route.index&&!nakedIndex)path.search=path.search?path.search.replace(/^\?/,"?index&"):"?index";else if(!activeRouteMatch.route.index&&nakedIndex){let params=new URLSearchParams(path.search),indexValues=params.getAll("index");params.delete("index"),indexValues.filter(v=>v).forEach(v=>params.append("index",v));let qs=params.toString();path.search=qs?`?${qs}`:""}}return"/"!==basename&&(path.pathname="/"===path.pathname?basename:joinPaths([basename,path.pathname])),createPath(path)}function normalizeNavigateOptions(isFetcher,path,opts){if(!opts||!function isSubmissionNavigation(opts){return null!=opts&&("formData"in opts&&null!=opts.formData||"body"in opts&&void 0!==opts.body)}(opts))return{path:path};if(opts.formMethod&&!isValidMethod(opts.formMethod))return{path:path,error:getInternalRouterError(405,{method:opts.formMethod})};let searchParams,formData,getInvalidBodyError=()=>({path:path,error:getInternalRouterError(400,{type:"invalid-body"})}),formMethod=(opts.formMethod||"get").toUpperCase(),formAction=stripHashFromPath(path);if(void 0!==opts.body){if("text/plain"===opts.formEncType){if(!isMutationMethod(formMethod))return getInvalidBodyError();let text="string"==typeof opts.body?opts.body:opts.body instanceof FormData||opts.body instanceof URLSearchParams?Array.from(opts.body.entries()).reduce((acc,[name,value])=>`${acc}${name}=${value}\n`,""):String(opts.body);return{path:path,submission:{formMethod:formMethod,formAction:formAction,formEncType:opts.formEncType,formData:void 0,json:void 0,text:text}}}if("application/json"===opts.formEncType){if(!isMutationMethod(formMethod))return getInvalidBodyError();try{let json="string"==typeof opts.body?JSON.parse(opts.body):opts.body;return{path:path,submission:{formMethod:formMethod,formAction:formAction,formEncType:opts.formEncType,formData:void 0,json:json,text:void 0}}}catch(e){return getInvalidBodyError()}}}if(invariant("function"==typeof FormData,"FormData is not available in this environment"),opts.formData)searchParams=convertFormDataToSearchParams(opts.formData),formData=opts.formData;else if(opts.body instanceof FormData)searchParams=convertFormDataToSearchParams(opts.body),formData=opts.body;else if(opts.body instanceof URLSearchParams)searchParams=opts.body,formData=convertSearchParamsToFormData(searchParams);else if(null==opts.body)searchParams=new URLSearchParams,formData=new FormData;else try{searchParams=new URLSearchParams(opts.body),formData=convertSearchParamsToFormData(searchParams)}catch(e){return getInvalidBodyError()}let submission={formMethod:formMethod,formAction:formAction,formEncType:opts&&opts.formEncType||"application/x-www-form-urlencoded",formData:formData,json:void 0,text:void 0};if(isMutationMethod(submission.formMethod))return{path:path,submission:submission};let parsedPath=parsePath(path);return isFetcher&&parsedPath.search&&hasNakedIndexQuery(parsedPath.search)&&searchParams.append("index",""),parsedPath.search=`?${searchParams}`,{path:createPath(parsedPath),submission:submission}}function getMatchesToLoad(request,scopedContext,mapRouteProperties2,manifest,history,state,matches,submission,location,lazyRoutePropertiesToSkip,initialHydration,isRevalidationRequired,cancelledFetcherLoads,fetchersQueuedForDeletion,fetchLoadMatches,fetchRedirectIds,routesToUse,basename,hasPatchRoutesOnNavigation,pendingActionResult){let maxIdx,actionResult=pendingActionResult?isErrorResult(pendingActionResult[1])?pendingActionResult[1].error:pendingActionResult[1].data:void 0,currentUrl=history.createURL(state.location),nextUrl=history.createURL(location);if(initialHydration&&state.errors){let boundaryId=Object.keys(state.errors)[0];maxIdx=matches.findIndex(m=>m.route.id===boundaryId)}else if(pendingActionResult&&isErrorResult(pendingActionResult[1])){let boundaryId=pendingActionResult[0];maxIdx=matches.findIndex(m=>m.route.id===boundaryId)-1}let actionStatus=pendingActionResult?pendingActionResult[1].statusCode:void 0,shouldSkipRevalidation=actionStatus&&actionStatus>=400,baseShouldRevalidateArgs={currentUrl:currentUrl,currentParams:state.matches[0]?.params||{},nextUrl:nextUrl,nextParams:matches[0].params,...submission,actionResult:actionResult,actionStatus:actionStatus},dsMatches=matches.map((match,index)=>{let{route:route}=match,forceShouldLoad=null;if(null!=maxIdx&&index>maxIdx?forceShouldLoad=!1:route.lazy?forceShouldLoad=!0:null==route.loader?forceShouldLoad=!1:initialHydration?forceShouldLoad=shouldLoadRouteOnHydration(route,state.loaderData,state.errors):function isNewLoader(currentLoaderData,currentMatch,match){let isNew=!currentMatch||match.route.id!==currentMatch.route.id,isMissingData=!currentLoaderData.hasOwnProperty(match.route.id);return isNew||isMissingData}(state.loaderData,state.matches[index],match)&&(forceShouldLoad=!0),null!==forceShouldLoad)return getDataStrategyMatch(mapRouteProperties2,manifest,request,match,lazyRoutePropertiesToSkip,scopedContext,forceShouldLoad);let defaultShouldRevalidate=!shouldSkipRevalidation&&(isRevalidationRequired||currentUrl.pathname+currentUrl.search===nextUrl.pathname+nextUrl.search||currentUrl.search!==nextUrl.search||function isNewRouteInstance(currentMatch,match){let currentPath=currentMatch.route.path;return currentMatch.pathname!==match.pathname||null!=currentPath&&currentPath.endsWith("*")&&currentMatch.params["*"]!==match.params["*"]}(state.matches[index],match)),shouldRevalidateArgs={...baseShouldRevalidateArgs,defaultShouldRevalidate:defaultShouldRevalidate},shouldLoad=shouldRevalidateLoader(match,shouldRevalidateArgs);return getDataStrategyMatch(mapRouteProperties2,manifest,request,match,lazyRoutePropertiesToSkip,scopedContext,shouldLoad,shouldRevalidateArgs)}),revalidatingFetchers=[];return fetchLoadMatches.forEach((f,key)=>{if(initialHydration||!matches.some(m=>m.route.id===f.routeId)||fetchersQueuedForDeletion.has(key))return;let fetcher=state.fetchers.get(key),isMidInitialLoad=fetcher&&"idle"!==fetcher.state&&void 0===fetcher.data,fetcherMatches=matchRoutes(routesToUse,f.path,basename);if(!fetcherMatches){if(hasPatchRoutesOnNavigation&&isMidInitialLoad)return;return void revalidatingFetchers.push({key:key,routeId:f.routeId,path:f.path,matches:null,match:null,request:null,controller:null})}if(fetchRedirectIds.has(key))return;let fetcherMatch=getTargetMatch(fetcherMatches,f.path),fetchController=new AbortController,fetchRequest=createClientSideRequest(history,f.path,fetchController.signal),fetcherDsMatches=null;if(cancelledFetcherLoads.has(key))cancelledFetcherLoads.delete(key),fetcherDsMatches=getTargetedDataStrategyMatches(mapRouteProperties2,manifest,fetchRequest,fetcherMatches,fetcherMatch,lazyRoutePropertiesToSkip,scopedContext);else if(isMidInitialLoad)isRevalidationRequired&&(fetcherDsMatches=getTargetedDataStrategyMatches(mapRouteProperties2,manifest,fetchRequest,fetcherMatches,fetcherMatch,lazyRoutePropertiesToSkip,scopedContext));else{let shouldRevalidateArgs={...baseShouldRevalidateArgs,defaultShouldRevalidate:!shouldSkipRevalidation&&isRevalidationRequired};shouldRevalidateLoader(fetcherMatch,shouldRevalidateArgs)&&(fetcherDsMatches=getTargetedDataStrategyMatches(mapRouteProperties2,manifest,fetchRequest,fetcherMatches,fetcherMatch,lazyRoutePropertiesToSkip,scopedContext,shouldRevalidateArgs))}fetcherDsMatches&&revalidatingFetchers.push({key:key,routeId:f.routeId,path:f.path,matches:fetcherDsMatches,match:fetcherMatch,request:fetchRequest,controller:fetchController})}),{dsMatches:dsMatches,revalidatingFetchers:revalidatingFetchers}}function shouldLoadRouteOnHydration(route,loaderData,errors){if(route.lazy)return!0;if(!route.loader)return!1;let hasData=null!=loaderData&&route.id in loaderData,hasError=null!=errors&&void 0!==errors[route.id];return!(!hasData&&hasError)&&("function"==typeof route.loader&&!0===route.loader.hydrate||!hasData&&!hasError)}function shouldRevalidateLoader(loaderMatch,arg){if(loaderMatch.route.shouldRevalidate){let routeChoice=loaderMatch.route.shouldRevalidate(arg);if("boolean"==typeof routeChoice)return routeChoice}return arg.defaultShouldRevalidate}function patchRoutesImpl(routeId,children,routesToUse,manifest,mapRouteProperties2){let childrenToPatch;if(routeId){let route=manifest[routeId];invariant(route,`No route found to patch children into: routeId = ${routeId}`),route.children||(route.children=[]),childrenToPatch=route.children}else childrenToPatch=routesToUse;let newRoutes=convertRoutesToDataRoutes(children.filter(newRoute=>!childrenToPatch.some(existingRoute=>isSameRoute(newRoute,existingRoute))),mapRouteProperties2,[routeId||"_","patch",String(childrenToPatch?.length||"0")],manifest);childrenToPatch.push(...newRoutes)}function isSameRoute(newRoute,existingRoute){return"id"in newRoute&&"id"in existingRoute&&newRoute.id===existingRoute.id||newRoute.index===existingRoute.index&&newRoute.path===existingRoute.path&&newRoute.caseSensitive===existingRoute.caseSensitive&&(!(newRoute.children&&0!==newRoute.children.length||existingRoute.children&&0!==existingRoute.children.length)||newRoute.children.every((aChild,i)=>existingRoute.children?.some(bChild=>isSameRoute(aChild,bChild))))}var lazyRoutePropertyCache=new WeakMap,loadLazyRouteProperty=({key:key,route:route,manifest:manifest,mapRouteProperties:mapRouteProperties2})=>{let routeToUpdate=manifest[route.id];if(invariant(routeToUpdate,"No route found in manifest"),!routeToUpdate.lazy||"object"!=typeof routeToUpdate.lazy)return;let lazyFn=routeToUpdate.lazy[key];if(!lazyFn)return;let cache=lazyRoutePropertyCache.get(routeToUpdate);cache||(cache={},lazyRoutePropertyCache.set(routeToUpdate,cache));let cachedPromise=cache[key];if(cachedPromise)return cachedPromise;let propertyPromise=(async()=>{let isUnsupported=function isUnsupportedLazyRouteObjectKey(key){return unsupportedLazyRouteObjectKeys.has(key)}(key),isStaticallyDefined=void 0!==routeToUpdate[key]&&"hasErrorBoundary"!==key;if(isUnsupported)warning(!isUnsupported,"Route property "+key+" is not a supported lazy route property. This property will be ignored."),cache[key]=Promise.resolve();else if(isStaticallyDefined)warning(!1,`Route "${routeToUpdate.id}" has a static property "${key}" defined. The lazy property will be ignored.`);else{let value=await lazyFn();null!=value&&(Object.assign(routeToUpdate,{[key]:value}),Object.assign(routeToUpdate,mapRouteProperties2(routeToUpdate)))}"object"==typeof routeToUpdate.lazy&&(routeToUpdate.lazy[key]=void 0,Object.values(routeToUpdate.lazy).every(value=>void 0===value)&&(routeToUpdate.lazy=void 0))})();return cache[key]=propertyPromise,propertyPromise},lazyRouteFunctionCache=new WeakMap;async function defaultDataStrategy(args){let matchesToLoad=args.matches.filter(m=>m.shouldLoad),keyedResults={};return(await Promise.all(matchesToLoad.map(m=>m.resolve()))).forEach((result,i)=>{keyedResults[matchesToLoad[i].route.id]=result}),keyedResults}async function defaultDataStrategyWithMiddleware(args){return args.matches.some(m=>m.route.unstable_middleware)?runMiddlewarePipeline(args,!1,()=>defaultDataStrategy(args),(error,routeId)=>({[routeId]:{type:"error",result:error}})):defaultDataStrategy(args)}async function runMiddlewarePipeline(args,propagateResult,handler,errorHandler){let{matches:matches,request:request,params:params,context:context}=args,middlewareState={handlerResult:void 0};try{let tuples=matches.flatMap(m=>m.route.unstable_middleware?m.route.unstable_middleware.map(fn=>[m.route.id,fn]):[]),result=await callRouteMiddleware({request:request,params:params,context:context},tuples,propagateResult,middlewareState,handler);return propagateResult?result:middlewareState.handlerResult}catch(e){if(!middlewareState.middlewareError)throw e;let result=await errorHandler(middlewareState.middlewareError.error,middlewareState.middlewareError.routeId);return propagateResult||!middlewareState.handlerResult?result:Object.assign(middlewareState.handlerResult,result)}}async function callRouteMiddleware(args,middlewares,propagateResult,middlewareState,handler,idx=0){let{request:request}=args;if(request.signal.aborted){if(request.signal.reason)throw request.signal.reason;throw new Error(`Request aborted without an \`AbortSignal.reason\`: ${request.method} ${request.url}`)}let tuple=middlewares[idx];if(!tuple)return middlewareState.handlerResult=await handler(),middlewareState.handlerResult;let nextResult,[routeId,middleware]=tuple,nextCalled=!1,next=async()=>{if(nextCalled)throw new Error("You may only call `next()` once per middleware");nextCalled=!0;let result=await callRouteMiddleware(args,middlewares,propagateResult,middlewareState,handler,idx+1);if(propagateResult)return nextResult=result,nextResult};try{let result=await middleware({request:args.request,params:args.params,context:args.context},next);return nextCalled?void 0===result?nextResult:result:next()}catch(error){throw middlewareState.middlewareError?middlewareState.middlewareError.error!==error&&(middlewareState.middlewareError={routeId:routeId,error:error}):middlewareState.middlewareError={routeId:routeId,error:error},error}}function getDataStrategyMatchLazyPromises(mapRouteProperties2,manifest,request,match,lazyRoutePropertiesToSkip){let lazyMiddlewarePromise=loadLazyRouteProperty({key:"unstable_middleware",route:match.route,manifest:manifest,mapRouteProperties:mapRouteProperties2}),lazyRoutePromises=function loadLazyRoute(route,type,manifest,mapRouteProperties2,lazyRoutePropertiesToSkip){let routeToUpdate=manifest[route.id];if(invariant(routeToUpdate,"No route found in manifest"),!route.lazy)return{lazyRoutePromise:void 0,lazyHandlerPromise:void 0};if("function"==typeof route.lazy){let cachedPromise=lazyRouteFunctionCache.get(routeToUpdate);if(cachedPromise)return{lazyRoutePromise:cachedPromise,lazyHandlerPromise:cachedPromise};let lazyRoutePromise2=(async()=>{invariant("function"==typeof route.lazy,"No lazy route function found");let lazyRoute=await route.lazy(),routeUpdates={};for(let lazyRouteProperty in lazyRoute){let lazyValue=lazyRoute[lazyRouteProperty];if(void 0===lazyValue)continue;let isUnsupported=isUnsupportedLazyRouteFunctionKey(lazyRouteProperty),isStaticallyDefined=void 0!==routeToUpdate[lazyRouteProperty]&&"hasErrorBoundary"!==lazyRouteProperty;isUnsupported?warning(!isUnsupported,"Route property "+lazyRouteProperty+" is not a supported property to be returned from a lazy route function. This property will be ignored."):isStaticallyDefined?warning(!isStaticallyDefined,`Route "${routeToUpdate.id}" has a static property "${lazyRouteProperty}" defined but its lazy function is also returning a value for this property. The lazy route property "${lazyRouteProperty}" will be ignored.`):routeUpdates[lazyRouteProperty]=lazyValue}Object.assign(routeToUpdate,routeUpdates),Object.assign(routeToUpdate,{...mapRouteProperties2(routeToUpdate),lazy:void 0})})();return lazyRouteFunctionCache.set(routeToUpdate,lazyRoutePromise2),lazyRoutePromise2.catch(()=>{}),{lazyRoutePromise:lazyRoutePromise2,lazyHandlerPromise:lazyRoutePromise2}}let lazyHandlerPromise,lazyKeys=Object.keys(route.lazy),lazyPropertyPromises=[];for(let key of lazyKeys){if(lazyRoutePropertiesToSkip&&lazyRoutePropertiesToSkip.includes(key))continue;let promise=loadLazyRouteProperty({key:key,route:route,manifest:manifest,mapRouteProperties:mapRouteProperties2});promise&&(lazyPropertyPromises.push(promise),key===type&&(lazyHandlerPromise=promise))}let lazyRoutePromise=lazyPropertyPromises.length>0?Promise.all(lazyPropertyPromises).then(()=>{}):void 0;return lazyRoutePromise?.catch(()=>{}),lazyHandlerPromise?.catch(()=>{}),{lazyRoutePromise:lazyRoutePromise,lazyHandlerPromise:lazyHandlerPromise}}(match.route,isMutationMethod(request.method)?"action":"loader",manifest,mapRouteProperties2,lazyRoutePropertiesToSkip);return{middleware:lazyMiddlewarePromise,route:lazyRoutePromises.lazyRoutePromise,handler:lazyRoutePromises.lazyHandlerPromise}}function getDataStrategyMatch(mapRouteProperties2,manifest,request,match,lazyRoutePropertiesToSkip,scopedContext,shouldLoad,unstable_shouldRevalidateArgs=null){let isUsingNewApi=!1,_lazyPromises=getDataStrategyMatchLazyPromises(mapRouteProperties2,manifest,request,match,lazyRoutePropertiesToSkip);return{...match,_lazyPromises:_lazyPromises,shouldLoad:shouldLoad,unstable_shouldRevalidateArgs:unstable_shouldRevalidateArgs,unstable_shouldCallHandler(defaultShouldRevalidate){return isUsingNewApi=!0,unstable_shouldRevalidateArgs?shouldRevalidateLoader(match,"boolean"==typeof defaultShouldRevalidate?{...unstable_shouldRevalidateArgs,defaultShouldRevalidate:defaultShouldRevalidate}:unstable_shouldRevalidateArgs):shouldLoad},resolve(handlerOverride){return isUsingNewApi||shouldLoad||handlerOverride&&"GET"===request.method&&(match.route.lazy||match.route.loader)?async function callLoaderOrAction({request:request,match:match,lazyHandlerPromise:lazyHandlerPromise,lazyRoutePromise:lazyRoutePromise,handlerOverride:handlerOverride,scopedContext:scopedContext}){let result,onReject,isAction=isMutationMethod(request.method),type=isAction?"action":"loader",runHandler=handler=>{let reject,abortPromise=new Promise((_,r)=>reject=r);onReject=()=>reject(),request.signal.addEventListener("abort",onReject);let actualHandler=ctx=>"function"!=typeof handler?Promise.reject(new Error(`You cannot call the handler for a route which defines a boolean "${type}" [routeId: ${match.route.id}]`)):handler({request:request,params:match.params,context:scopedContext},...void 0!==ctx?[ctx]:[]),handlerPromise=(async()=>{try{return{type:"data",result:await(handlerOverride?handlerOverride(ctx=>actualHandler(ctx)):actualHandler())}}catch(e){return{type:"error",result:e}}})();return Promise.race([handlerPromise,abortPromise])};try{let handler=isAction?match.route.action:match.route.loader;if(lazyHandlerPromise||lazyRoutePromise)if(handler){let handlerError,[value]=await Promise.all([runHandler(handler).catch(e=>{handlerError=e}),lazyHandlerPromise,lazyRoutePromise]);if(void 0!==handlerError)throw handlerError;result=value}else{await lazyHandlerPromise;let handler2=isAction?match.route.action:match.route.loader;if(!handler2){if("action"===type){let url=new URL(request.url),pathname=url.pathname+url.search;throw getInternalRouterError(405,{method:request.method,pathname:pathname,routeId:match.route.id})}return{type:"data",result:void 0}}[result]=await Promise.all([runHandler(handler2),lazyRoutePromise])}else{if(!handler){let url=new URL(request.url);throw getInternalRouterError(404,{pathname:url.pathname+url.search})}result=await runHandler(handler)}}catch(e){return{type:"error",result:e}}finally{onReject&&request.signal.removeEventListener("abort",onReject)}return result}({request:request,match:match,lazyHandlerPromise:_lazyPromises?.handler,lazyRoutePromise:_lazyPromises?.route,handlerOverride:handlerOverride,scopedContext:scopedContext}):Promise.resolve({type:"data",result:void 0})}}}function getTargetedDataStrategyMatches(mapRouteProperties2,manifest,request,matches,targetMatch,lazyRoutePropertiesToSkip,scopedContext,shouldRevalidateArgs=null){return matches.map(match=>match.route.id!==targetMatch.route.id?{...match,shouldLoad:!1,unstable_shouldRevalidateArgs:shouldRevalidateArgs,unstable_shouldCallHandler:()=>!1,_lazyPromises:getDataStrategyMatchLazyPromises(mapRouteProperties2,manifest,request,match,lazyRoutePropertiesToSkip),resolve:()=>Promise.resolve({type:"data",result:void 0})}:getDataStrategyMatch(mapRouteProperties2,manifest,request,match,lazyRoutePropertiesToSkip,scopedContext,!0,shouldRevalidateArgs))}async function callDataStrategyImpl(dataStrategyImpl,request,matches,fetcherKey,scopedContext,isStaticHandler){matches.some(m=>m._lazyPromises?.middleware)&&await Promise.all(matches.map(m=>m._lazyPromises?.middleware));let dataStrategyArgs={request:request,params:matches[0].params,context:scopedContext,matches:matches},unstable_runClientMiddleware=isStaticHandler?()=>{throw new Error("You cannot call `unstable_runClientMiddleware()` from a static handler `dataStrategy`. Middleware is run outside of `dataStrategy` during SSR in order to bubble up the Response.  You can enable middleware via the `respond` API in `query`/`queryRoute`")}:cb=>{let typedDataStrategyArgs=dataStrategyArgs;return runMiddlewarePipeline(typedDataStrategyArgs,!1,()=>cb({...typedDataStrategyArgs,fetcherKey:fetcherKey,unstable_runClientMiddleware:()=>{throw new Error("Cannot call `unstable_runClientMiddleware()` from within an `unstable_runClientMiddleware` handler")}}),(error,routeId)=>({[routeId]:{type:"error",result:error}}))},results=await dataStrategyImpl({...dataStrategyArgs,fetcherKey:fetcherKey,unstable_runClientMiddleware:unstable_runClientMiddleware});try{await Promise.all(matches.flatMap(m=>[m._lazyPromises?.handler,m._lazyPromises?.route]))}catch(e){}return results}async function convertDataStrategyResultToDataResult(dataStrategyResult){let{result:result,type:type}=dataStrategyResult;if(isResponse(result)){let data2;try{let contentType=result.headers.get("Content-Type");data2=contentType&&/\bapplication\/json\b/.test(contentType)?null==result.body?null:await result.json():await result.text()}catch(e){return{type:"error",error:e}}return"error"===type?{type:"error",error:new ErrorResponseImpl(result.status,result.statusText,data2),statusCode:result.status,headers:result.headers}:{type:"data",data:data2,statusCode:result.status,headers:result.headers}}return"error"===type?isDataWithResponseInit(result)?result.data instanceof Error?{type:"error",error:result.data,statusCode:result.init?.status,headers:result.init?.headers?new Headers(result.init.headers):void 0}:{type:"error",error:new ErrorResponseImpl(result.init?.status||500,void 0,result.data),statusCode:isRouteErrorResponse(result)?result.status:void 0,headers:result.init?.headers?new Headers(result.init.headers):void 0}:{type:"error",error:result,statusCode:isRouteErrorResponse(result)?result.status:void 0}:isDataWithResponseInit(result)?{type:"data",data:result.data,statusCode:result.init?.status,headers:result.init?.headers?new Headers(result.init.headers):void 0}:{type:"data",data:result}}function normalizeRelativeRoutingRedirectResponse(response,request,routeId,matches,basename){let location=response.headers.get("Location");if(invariant(location,"Redirects returned/thrown from loaders/actions must have a Location header"),!ABSOLUTE_URL_REGEX.test(location)){let trimmedMatches=matches.slice(0,matches.findIndex(m=>m.route.id===routeId)+1);location=normalizeTo(new URL(request.url),trimmedMatches,basename,location),response.headers.set("Location",location)}return response}function normalizeRedirectLocation(location,currentUrl,basename){if(ABSOLUTE_URL_REGEX.test(location)){let normalizedLocation=location,url=normalizedLocation.startsWith("//")?new URL(currentUrl.protocol+normalizedLocation):new URL(normalizedLocation),isSameBasename=null!=stripBasename(url.pathname,basename);if(url.origin===currentUrl.origin&&isSameBasename)return url.pathname+url.search+url.hash}return location}function createClientSideRequest(history,location,signal,submission){let url=history.createURL(stripHashFromPath(location)).toString(),init={signal:signal};if(submission&&isMutationMethod(submission.formMethod)){let{formMethod:formMethod,formEncType:formEncType}=submission;init.method=formMethod.toUpperCase(),"application/json"===formEncType?(init.headers=new Headers({"Content-Type":formEncType}),init.body=JSON.stringify(submission.json)):"text/plain"===formEncType?init.body=submission.text:"application/x-www-form-urlencoded"===formEncType&&submission.formData?init.body=convertFormDataToSearchParams(submission.formData):init.body=submission.formData}return new Request(url,init)}function convertFormDataToSearchParams(formData){let searchParams=new URLSearchParams;for(let[key,value]of formData.entries())searchParams.append(key,"string"==typeof value?value:value.name);return searchParams}function convertSearchParamsToFormData(searchParams){let formData=new FormData;for(let[key,value]of searchParams.entries())formData.append(key,value);return formData}function processRouteLoaderData(matches,results,pendingActionResult,isStaticHandler=!1,skipLoaderErrorBubbling=!1){let statusCode,loaderData={},errors=null,foundError=!1,loaderHeaders={},pendingError=pendingActionResult&&isErrorResult(pendingActionResult[1])?pendingActionResult[1].error:void 0;return matches.forEach(match=>{if(!(match.route.id in results))return;let id=match.route.id,result=results[id];if(invariant(!isRedirectResult(result),"Cannot handle redirect results in processLoaderData"),isErrorResult(result)){let error=result.error;if(void 0!==pendingError&&(error=pendingError,pendingError=void 0),errors=errors||{},skipLoaderErrorBubbling)errors[id]=error;else{let boundaryMatch=findNearestBoundary(matches,id);null==errors[boundaryMatch.route.id]&&(errors[boundaryMatch.route.id]=error)}isStaticHandler||(loaderData[id]=ResetLoaderDataSymbol),foundError||(foundError=!0,statusCode=isRouteErrorResponse(result.error)?result.error.status:500),result.headers&&(loaderHeaders[id]=result.headers)}else loaderData[id]=result.data,result.statusCode&&200!==result.statusCode&&!foundError&&(statusCode=result.statusCode),result.headers&&(loaderHeaders[id]=result.headers)}),void 0!==pendingError&&pendingActionResult&&(errors={[pendingActionResult[0]]:pendingError},pendingActionResult[2]&&(loaderData[pendingActionResult[2]]=void 0)),{loaderData:loaderData,errors:errors,statusCode:statusCode||200,loaderHeaders:loaderHeaders}}function processLoaderData(state,matches,results,pendingActionResult,revalidatingFetchers,fetcherResults){let{loaderData:loaderData,errors:errors}=processRouteLoaderData(matches,results,pendingActionResult);return revalidatingFetchers.filter(f=>!f.matches||f.matches.some(m=>m.shouldLoad)).forEach(rf=>{let{key:key,match:match,controller:controller}=rf,result=fetcherResults[key];if(invariant(result,"Did not find corresponding fetcher result"),!controller||!controller.signal.aborted)if(isErrorResult(result)){let boundaryMatch=findNearestBoundary(state.matches,match?.route.id);errors&&errors[boundaryMatch.route.id]||(errors={...errors,[boundaryMatch.route.id]:result.error}),state.fetchers.delete(key)}else if(isRedirectResult(result))invariant(!1,"Unhandled fetcher revalidation redirect");else{let doneFetcher=getDoneFetcher(result.data);state.fetchers.set(key,doneFetcher)}}),{loaderData:loaderData,errors:errors}}function mergeLoaderData(loaderData,newLoaderData,matches,errors){let mergedLoaderData=Object.entries(newLoaderData).filter(([,v])=>v!==ResetLoaderDataSymbol).reduce((merged,[k,v])=>(merged[k]=v,merged),{});for(let match of matches){let id=match.route.id;if(!newLoaderData.hasOwnProperty(id)&&loaderData.hasOwnProperty(id)&&match.route.loader&&(mergedLoaderData[id]=loaderData[id]),errors&&errors.hasOwnProperty(id))break}return mergedLoaderData}function getActionDataForCommit(pendingActionResult){return pendingActionResult?isErrorResult(pendingActionResult[1])?{actionData:{}}:{actionData:{[pendingActionResult[0]]:pendingActionResult[1].data}}:{}}function findNearestBoundary(matches,routeId){return(routeId?matches.slice(0,matches.findIndex(m=>m.route.id===routeId)+1):[...matches]).reverse().find(m=>!0===m.route.hasErrorBoundary)||matches[0]}function getShortCircuitMatches(routes){let route=1===routes.length?routes[0]:routes.find(r=>r.index||!r.path||"/"===r.path)||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:route}],route:route}}function getInternalRouterError(status,{pathname:pathname,routeId:routeId,method:method,type:type,message:message}={}){let statusText="Unknown Server Error",errorMessage="Unknown @remix-run/router error";return 400===status?(statusText="Bad Request",method&&pathname&&routeId?errorMessage=`You made a ${method} request to "${pathname}" but did not provide a \`loader\` for route "${routeId}", so there is no way to handle the request.`:"invalid-body"===type&&(errorMessage="Unable to encode submission body")):403===status?(statusText="Forbidden",errorMessage=`Route "${routeId}" does not match URL "${pathname}"`):404===status?(statusText="Not Found",errorMessage=`No route matches URL "${pathname}"`):405===status&&(statusText="Method Not Allowed",method&&pathname&&routeId?errorMessage=`You made a ${method.toUpperCase()} request to "${pathname}" but did not provide an \`action\` for route "${routeId}", so there is no way to handle the request.`:method&&(errorMessage=`Invalid request method "${method.toUpperCase()}"`)),new ErrorResponseImpl(status||500,statusText,new Error(errorMessage),!0)}function findRedirect(results){let entries=Object.entries(results);for(let i=entries.length-1;i>=0;i--){let[key,result]=entries[i];if(isRedirectResult(result))return{key:key,result:result}}}function stripHashFromPath(path){return createPath({..."string"==typeof path?parsePath(path):path,hash:""})}function isRedirectDataStrategyResult(result){return isResponse(result.result)&&redirectStatusCodes.has(result.result.status)}function isErrorResult(result){return"error"===result.type}function isRedirectResult(result){return"redirect"===(result&&result.type)}function isDataWithResponseInit(value){return"object"==typeof value&&null!=value&&"type"in value&&"data"in value&&"init"in value&&"DataWithResponseInit"===value.type}function isResponse(value){return null!=value&&"number"==typeof value.status&&"string"==typeof value.statusText&&"object"==typeof value.headers&&void 0!==value.body}function isValidMethod(method){return validRequestMethods.has(method.toUpperCase())}function isMutationMethod(method){return validMutationMethods.has(method.toUpperCase())}function hasNakedIndexQuery(search){return new URLSearchParams(search).getAll("index").some(v=>""===v)}function getTargetMatch(matches,location){let search="string"==typeof location?parsePath(location).search:location.search;if(matches[matches.length-1].route.index&&hasNakedIndexQuery(search||""))return matches[matches.length-1];let pathMatches=getPathContributingMatches(matches);return pathMatches[pathMatches.length-1]}function getSubmissionFromNavigation(navigation){let{formMethod:formMethod,formAction:formAction,formEncType:formEncType,text:text,formData:formData,json:json}=navigation;if(formMethod&&formAction&&formEncType)return null!=text?{formMethod:formMethod,formAction:formAction,formEncType:formEncType,formData:void 0,json:void 0,text:text}:null!=formData?{formMethod:formMethod,formAction:formAction,formEncType:formEncType,formData:formData,json:void 0,text:void 0}:void 0!==json?{formMethod:formMethod,formAction:formAction,formEncType:formEncType,formData:void 0,json:json,text:void 0}:void 0}function getLoadingNavigation(location,submission){if(submission){return{state:"loading",location:location,formMethod:submission.formMethod,formAction:submission.formAction,formEncType:submission.formEncType,formData:submission.formData,json:submission.json,text:submission.text}}return{state:"loading",location:location,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function getLoadingFetcher(submission,data2){if(submission){return{state:"loading",formMethod:submission.formMethod,formAction:submission.formAction,formEncType:submission.formEncType,formData:submission.formData,json:submission.json,text:submission.text,data:data2}}return{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:data2}}function getDoneFetcher(data2){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:data2}}var DataRouterContext=react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);DataRouterContext.displayName="DataRouter";var DataRouterStateContext=react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);DataRouterStateContext.displayName="DataRouterState";var ViewTransitionContext=react__WEBPACK_IMPORTED_MODULE_0__.createContext({isTransitioning:!1});ViewTransitionContext.displayName="ViewTransition";var FetchersContext=react__WEBPACK_IMPORTED_MODULE_0__.createContext(new Map);FetchersContext.displayName="Fetchers";var AwaitContext=react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);AwaitContext.displayName="Await";var NavigationContext=react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);NavigationContext.displayName="Navigation";var LocationContext=react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);LocationContext.displayName="Location";var RouteContext=react__WEBPACK_IMPORTED_MODULE_0__.createContext({outlet:null,matches:[],isDataRoute:!1});RouteContext.displayName="Route";var RouteErrorContext=react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);RouteErrorContext.displayName="RouteError";var ENABLE_DEV_WARNINGS=!0;function useInRouterContext(){return null!=react__WEBPACK_IMPORTED_MODULE_0__.useContext(LocationContext)}function useLocation(){return invariant(useInRouterContext(),"useLocation() may be used only in the context of a <Router> component."),react__WEBPACK_IMPORTED_MODULE_0__.useContext(LocationContext).location}var navigateEffectWarning="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function useIsomorphicLayoutEffect(cb){react__WEBPACK_IMPORTED_MODULE_0__.useContext(NavigationContext).static||react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect(cb)}function useNavigate(){let{isDataRoute:isDataRoute}=react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteContext);return isDataRoute?function useNavigateStable(){let{router:router}=useDataRouterContext("useNavigate"),id=useCurrentRouteId("useNavigate"),activeRef=react__WEBPACK_IMPORTED_MODULE_0__.useRef(!1);return useIsomorphicLayoutEffect(()=>{activeRef.current=!0}),react__WEBPACK_IMPORTED_MODULE_0__.useCallback(async(to,options={})=>{warning(activeRef.current,navigateEffectWarning),activeRef.current&&("number"==typeof to?router.navigate(to):await router.navigate(to,{fromRouteId:id,...options}))},[router,id])}():function useNavigateUnstable(){invariant(useInRouterContext(),"useNavigate() may be used only in the context of a <Router> component.");let dataRouterContext=react__WEBPACK_IMPORTED_MODULE_0__.useContext(DataRouterContext),{basename:basename,navigator:navigator}=react__WEBPACK_IMPORTED_MODULE_0__.useContext(NavigationContext),{matches:matches}=react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteContext),{pathname:locationPathname}=useLocation(),routePathnamesJson=JSON.stringify(getResolveToMatches(matches)),activeRef=react__WEBPACK_IMPORTED_MODULE_0__.useRef(!1);return useIsomorphicLayoutEffect(()=>{activeRef.current=!0}),react__WEBPACK_IMPORTED_MODULE_0__.useCallback((to,options={})=>{if(warning(activeRef.current,navigateEffectWarning),!activeRef.current)return;if("number"==typeof to)return void navigator.go(to);let path=resolveTo(to,JSON.parse(routePathnamesJson),locationPathname,"path"===options.relative);null==dataRouterContext&&"/"!==basename&&(path.pathname="/"===path.pathname?basename:joinPaths([basename,path.pathname])),(options.replace?navigator.replace:navigator.push)(path,options.state,options)},[basename,navigator,routePathnamesJson,locationPathname,dataRouterContext])}()}var OutletContext=react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);function useResolvedPath(to,{relative:relative}={}){let{matches:matches}=react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteContext),{pathname:locationPathname}=useLocation(),routePathnamesJson=JSON.stringify(getResolveToMatches(matches));return react__WEBPACK_IMPORTED_MODULE_0__.useMemo(()=>resolveTo(to,JSON.parse(routePathnamesJson),locationPathname,"path"===relative),[to,routePathnamesJson,locationPathname,relative])}function useRoutesImpl(routes,locationArg,dataRouterState,future){invariant(useInRouterContext(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:navigator}=react__WEBPACK_IMPORTED_MODULE_0__.useContext(NavigationContext),{matches:parentMatches}=react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteContext),routeMatch=parentMatches[parentMatches.length-1],parentParams=routeMatch?routeMatch.params:{},parentPathname=routeMatch?routeMatch.pathname:"/",parentPathnameBase=routeMatch?routeMatch.pathnameBase:"/",parentRoute=routeMatch&&routeMatch.route;if(ENABLE_DEV_WARNINGS){let parentPath=parentRoute&&parentRoute.path||"";warningOnce(parentPathname,!parentRoute||parentPath.endsWith("*")||parentPath.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${parentPathname}" (under <Route path="${parentPath}">) 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.\n\nPlease change the parent <Route path="${parentPath}"> to <Route path="${"/"===parentPath?"*":`${parentPath}/*`}">.`)}let location,locationFromContext=useLocation();if(locationArg){let parsedLocationArg="string"==typeof locationArg?parsePath(locationArg):locationArg;invariant("/"===parentPathnameBase||parsedLocationArg.pathname?.startsWith(parentPathnameBase),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${parentPathnameBase}" but pathname "${parsedLocationArg.pathname}" was given in the \`location\` prop.`),location=parsedLocationArg}else location=locationFromContext;let pathname=location.pathname||"/",remainingPathname=pathname;if("/"!==parentPathnameBase){let parentSegments=parentPathnameBase.replace(/^\//,"").split("/");remainingPathname="/"+pathname.replace(/^\//,"").split("/").slice(parentSegments.length).join("/")}let matches=matchRoutes(routes,{pathname:remainingPathname});ENABLE_DEV_WARNINGS&&(warning(parentRoute||null!=matches,`No routes matched location "${location.pathname}${location.search}${location.hash}" `),warning(null==matches||void 0!==matches[matches.length-1].route.element||void 0!==matches[matches.length-1].route.Component||void 0!==matches[matches.length-1].route.lazy,`Matched leaf route at location "${location.pathname}${location.search}${location.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`));let renderedMatches=_renderMatches(matches&&matches.map(match=>Object.assign({},match,{params:Object.assign({},parentParams,match.params),pathname:joinPaths([parentPathnameBase,navigator.encodeLocation?navigator.encodeLocation(match.pathname).pathname:match.pathname]),pathnameBase:"/"===match.pathnameBase?parentPathnameBase:joinPaths([parentPathnameBase,navigator.encodeLocation?navigator.encodeLocation(match.pathnameBase).pathname:match.pathnameBase])})),parentMatches,dataRouterState,future);return locationArg&&renderedMatches?react__WEBPACK_IMPORTED_MODULE_0__.createElement(LocationContext.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...location},navigationType:"POP"}},renderedMatches):renderedMatches}function DefaultErrorComponent(){let error=useRouteError(),message=isRouteErrorResponse(error)?`${error.status} ${error.statusText}`:error instanceof Error?error.message:JSON.stringify(error),stack=error instanceof Error?error.stack:null,preStyles={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"},codeStyles={padding:"2px 4px",backgroundColor:"rgba(200,200,200, 0.5)"},devInfo=null;return ENABLE_DEV_WARNINGS&&(console.error("Error handled by React Router default ErrorBoundary:",error),devInfo=react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment,null,react__WEBPACK_IMPORTED_MODULE_0__.createElement("p",null,"💿 Hey developer 👋"),react__WEBPACK_IMPORTED_MODULE_0__.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",react__WEBPACK_IMPORTED_MODULE_0__.createElement("code",{style:codeStyles},"ErrorBoundary")," or"," ",react__WEBPACK_IMPORTED_MODULE_0__.createElement("code",{style:codeStyles},"errorElement")," prop on your route."))),react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment,null,react__WEBPACK_IMPORTED_MODULE_0__.createElement("h2",null,"Unexpected Application Error!"),react__WEBPACK_IMPORTED_MODULE_0__.createElement("h3",{style:{fontStyle:"italic"}},message),stack?react__WEBPACK_IMPORTED_MODULE_0__.createElement("pre",{style:preStyles},stack):null,devInfo)}var defaultErrorElement=react__WEBPACK_IMPORTED_MODULE_0__.createElement(DefaultErrorComponent,null),RenderErrorBoundary=class extends react__WEBPACK_IMPORTED_MODULE_0__.Component{constructor(props){super(props),this.state={location:props.location,revalidation:props.revalidation,error:props.error}}static getDerivedStateFromError(error){return{error:error}}static getDerivedStateFromProps(props,state){return state.location!==props.location||"idle"!==state.revalidation&&"idle"===props.revalidation?{error:props.error,location:props.location,revalidation:props.revalidation}:{error:void 0!==props.error?props.error:state.error,location:state.location,revalidation:props.revalidation||state.revalidation}}componentDidCatch(error,errorInfo){console.error("React Router caught the following error during render",error,errorInfo)}render(){return void 0!==this.state.error?react__WEBPACK_IMPORTED_MODULE_0__.createElement(RouteContext.Provider,{value:this.props.routeContext},react__WEBPACK_IMPORTED_MODULE_0__.createElement(RouteErrorContext.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function RenderedRoute({routeContext:routeContext,match:match,children:children}){let dataRouterContext=react__WEBPACK_IMPORTED_MODULE_0__.useContext(DataRouterContext);return dataRouterContext&&dataRouterContext.static&&dataRouterContext.staticContext&&(match.route.errorElement||match.route.ErrorBoundary)&&(dataRouterContext.staticContext._deepestRenderedBoundaryId=match.route.id),react__WEBPACK_IMPORTED_MODULE_0__.createElement(RouteContext.Provider,{value:routeContext},children)}function _renderMatches(matches,parentMatches=[],dataRouterState=null,future=null){if(null==matches){if(!dataRouterState)return null;if(dataRouterState.errors)matches=dataRouterState.matches;else{if(0!==parentMatches.length||dataRouterState.initialized||!(dataRouterState.matches.length>0))return null;matches=dataRouterState.matches}}let renderedMatches=matches,errors=dataRouterState?.errors;if(null!=errors){let errorIndex=renderedMatches.findIndex(m=>m.route.id&&void 0!==errors?.[m.route.id]);invariant(errorIndex>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(errors).join(",")}`),renderedMatches=renderedMatches.slice(0,Math.min(renderedMatches.length,errorIndex+1))}let renderFallback=!1,fallbackIndex=-1;if(dataRouterState)for(let i=0;i<renderedMatches.length;i++){let match=renderedMatches[i];if((match.route.HydrateFallback||match.route.hydrateFallbackElement)&&(fallbackIndex=i),match.route.id){let{loaderData:loaderData,errors:errors2}=dataRouterState,needsToRunLoader=match.route.loader&&!loaderData.hasOwnProperty(match.route.id)&&(!errors2||void 0===errors2[match.route.id]);if(match.route.lazy||needsToRunLoader){renderFallback=!0,renderedMatches=fallbackIndex>=0?renderedMatches.slice(0,fallbackIndex+1):[renderedMatches[0]];break}}}return renderedMatches.reduceRight((outlet,match,index)=>{let error,shouldRenderHydrateFallback=!1,errorElement=null,hydrateFallbackElement=null;dataRouterState&&(error=errors&&match.route.id?errors[match.route.id]:void 0,errorElement=match.route.errorElement||defaultErrorElement,renderFallback&&(fallbackIndex<0&&0===index?(warningOnce("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),shouldRenderHydrateFallback=!0,hydrateFallbackElement=null):fallbackIndex===index&&(shouldRenderHydrateFallback=!0,hydrateFallbackElement=match.route.hydrateFallbackElement||null)));let matches2=parentMatches.concat(renderedMatches.slice(0,index+1)),getChildren=()=>{let children;return children=error?errorElement:shouldRenderHydrateFallback?hydrateFallbackElement:match.route.Component?react__WEBPACK_IMPORTED_MODULE_0__.createElement(match.route.Component,null):match.route.element?match.route.element:outlet,react__WEBPACK_IMPORTED_MODULE_0__.createElement(RenderedRoute,{match:match,routeContext:{outlet:outlet,matches:matches2,isDataRoute:null!=dataRouterState},children:children})};return dataRouterState&&(match.route.ErrorBoundary||match.route.errorElement||0===index)?react__WEBPACK_IMPORTED_MODULE_0__.createElement(RenderErrorBoundary,{location:dataRouterState.location,revalidation:dataRouterState.revalidation,component:errorElement,error:error,children:getChildren(),routeContext:{outlet:null,matches:matches2,isDataRoute:!0}}):getChildren()},null)}function getDataRouterConsoleError(hookName){return`${hookName} must be used within a data router.  See https://reactrouter.com/en/main/routers/picking-a-router.`}function useDataRouterContext(hookName){let ctx=react__WEBPACK_IMPORTED_MODULE_0__.useContext(DataRouterContext);return invariant(ctx,getDataRouterConsoleError(hookName)),ctx}function useDataRouterState(hookName){let state=react__WEBPACK_IMPORTED_MODULE_0__.useContext(DataRouterStateContext);return invariant(state,getDataRouterConsoleError(hookName)),state}function useCurrentRouteId(hookName){let route=function useRouteContext(hookName){let route=react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteContext);return invariant(route,getDataRouterConsoleError(hookName)),route}(hookName),thisRoute=route.matches[route.matches.length-1];return invariant(thisRoute.route.id,`${hookName} can only be used on routes that contain a unique "id"`),thisRoute.route.id}function useRouteError(){let error=react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteErrorContext),state=useDataRouterState("useRouteError"),routeId=useCurrentRouteId("useRouteError");return void 0!==error?error:state.errors?.[routeId]}var alreadyWarned={};function warningOnce(key,cond,message){cond||alreadyWarned[key]||(alreadyWarned[key]=!0,warning(!1,message))}var alreadyWarned2={};function warnOnce(condition,message){condition||alreadyWarned2[message]||(alreadyWarned2[message]=!0,console.warn(message))}function mapRouteProperties(route){let updates={hasErrorBoundary:route.hasErrorBoundary||null!=route.ErrorBoundary||null!=route.errorElement};return route.Component&&(ENABLE_DEV_WARNINGS&&route.element&&warning(!1,"You should not include both `Component` and `element` on your route - `Component` will be used."),Object.assign(updates,{element:react__WEBPACK_IMPORTED_MODULE_0__.createElement(route.Component),Component:void 0})),route.HydrateFallback&&(ENABLE_DEV_WARNINGS&&route.hydrateFallbackElement&&warning(!1,"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used."),Object.assign(updates,{hydrateFallbackElement:react__WEBPACK_IMPORTED_MODULE_0__.createElement(route.HydrateFallback),HydrateFallback:void 0})),route.ErrorBoundary&&(ENABLE_DEV_WARNINGS&&route.errorElement&&warning(!1,"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used."),Object.assign(updates,{errorElement:react__WEBPACK_IMPORTED_MODULE_0__.createElement(route.ErrorBoundary),ErrorBoundary:void 0})),updates}var hydrationRouteProperties=["HydrateFallback","hydrateFallbackElement"];var Deferred=class{constructor(){this.status="pending",this.promise=new Promise((resolve,reject)=>{this.resolve=value=>{"pending"===this.status&&(this.status="resolved",resolve(value))},this.reject=reason=>{"pending"===this.status&&(this.status="rejected",reject(reason))}})}};function RouterProvider({router:router,flushSync:reactDomFlushSyncImpl}){let[state,setStateImpl]=react__WEBPACK_IMPORTED_MODULE_0__.useState(router.state),[pendingState,setPendingState]=react__WEBPACK_IMPORTED_MODULE_0__.useState(),[vtContext,setVtContext]=react__WEBPACK_IMPORTED_MODULE_0__.useState({isTransitioning:!1}),[renderDfd,setRenderDfd]=react__WEBPACK_IMPORTED_MODULE_0__.useState(),[transition,setTransition]=react__WEBPACK_IMPORTED_MODULE_0__.useState(),[interruption,setInterruption]=react__WEBPACK_IMPORTED_MODULE_0__.useState(),fetcherData=react__WEBPACK_IMPORTED_MODULE_0__.useRef(new Map),setState=react__WEBPACK_IMPORTED_MODULE_0__.useCallback((newState,{deletedFetchers:deletedFetchers,flushSync:flushSync,viewTransitionOpts:viewTransitionOpts})=>{newState.fetchers.forEach((fetcher,key)=>{void 0!==fetcher.data&&fetcherData.current.set(key,fetcher.data)}),deletedFetchers.forEach(key=>fetcherData.current.delete(key)),warnOnce(!1===flushSync||null!=reactDomFlushSyncImpl,'You provided the `flushSync` option to a router update, but you are not using the `<RouterProvider>` 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 isViewTransitionAvailable=null!=router.window&&null!=router.window.document&&"function"==typeof router.window.document.startViewTransition;if(warnOnce(null==viewTransitionOpts||isViewTransitionAvailable,"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."),viewTransitionOpts&&isViewTransitionAvailable){if(reactDomFlushSyncImpl&&flushSync){reactDomFlushSyncImpl(()=>{transition&&(renderDfd&&renderDfd.resolve(),transition.skipTransition()),setVtContext({isTransitioning:!0,flushSync:!0,currentLocation:viewTransitionOpts.currentLocation,nextLocation:viewTransitionOpts.nextLocation})});let t=router.window.document.startViewTransition(()=>{reactDomFlushSyncImpl(()=>setStateImpl(newState))});return t.finished.finally(()=>{reactDomFlushSyncImpl(()=>{setRenderDfd(void 0),setTransition(void 0),setPendingState(void 0),setVtContext({isTransitioning:!1})})}),void reactDomFlushSyncImpl(()=>setTransition(t))}transition?(renderDfd&&renderDfd.resolve(),transition.skipTransition(),setInterruption({state:newState,currentLocation:viewTransitionOpts.currentLocation,nextLocation:viewTransitionOpts.nextLocation})):(setPendingState(newState),setVtContext({isTransitioning:!0,flushSync:!1,currentLocation:viewTransitionOpts.currentLocation,nextLocation:viewTransitionOpts.nextLocation}))}else reactDomFlushSyncImpl&&flushSync?reactDomFlushSyncImpl(()=>setStateImpl(newState)):react__WEBPACK_IMPORTED_MODULE_0__.startTransition(()=>setStateImpl(newState))},[router.window,reactDomFlushSyncImpl,transition,renderDfd]);react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect(()=>router.subscribe(setState),[router,setState]),react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{vtContext.isTransitioning&&!vtContext.flushSync&&setRenderDfd(new Deferred)},[vtContext]),react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{if(renderDfd&&pendingState&&router.window){let newState=pendingState,renderPromise=renderDfd.promise,transition2=router.window.document.startViewTransition(async()=>{react__WEBPACK_IMPORTED_MODULE_0__.startTransition(()=>setStateImpl(newState)),await renderPromise});transition2.finished.finally(()=>{setRenderDfd(void 0),setTransition(void 0),setPendingState(void 0),setVtContext({isTransitioning:!1})}),setTransition(transition2)}},[pendingState,renderDfd,router.window]),react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{renderDfd&&pendingState&&state.location.key===pendingState.location.key&&renderDfd.resolve()},[renderDfd,transition,state.location,pendingState]),react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{!vtContext.isTransitioning&&interruption&&(setPendingState(interruption.state),setVtContext({isTransitioning:!0,flushSync:!1,currentLocation:interruption.currentLocation,nextLocation:interruption.nextLocation}),setInterruption(void 0))},[vtContext.isTransitioning,interruption]);let navigator=react__WEBPACK_IMPORTED_MODULE_0__.useMemo(()=>({createHref:router.createHref,encodeLocation:router.encodeLocation,go:n=>router.navigate(n),push:(to,state2,opts)=>router.navigate(to,{state:state2,preventScrollReset:opts?.preventScrollReset}),replace:(to,state2,opts)=>router.navigate(to,{replace:!0,state:state2,preventScrollReset:opts?.preventScrollReset})}),[router]),basename=router.basename||"/",dataRouterContext=react__WEBPACK_IMPORTED_MODULE_0__.useMemo(()=>({router:router,navigator:navigator,static:!1,basename:basename}),[router,navigator,basename]);return react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment,null,react__WEBPACK_IMPORTED_MODULE_0__.createElement(DataRouterContext.Provider,{value:dataRouterContext},react__WEBPACK_IMPORTED_MODULE_0__.createElement(DataRouterStateContext.Provider,{value:state},react__WEBPACK_IMPORTED_MODULE_0__.createElement(FetchersContext.Provider,{value:fetcherData.current},react__WEBPACK_IMPORTED_MODULE_0__.createElement(ViewTransitionContext.Provider,{value:vtContext},react__WEBPACK_IMPORTED_MODULE_0__.createElement(Router,{basename:basename,location:state.location,navigationType:state.historyAction,navigator:navigator},react__WEBPACK_IMPORTED_MODULE_0__.createElement(MemoizedDataRoutes,{routes:router.routes,future:router.future,state:state})))))),null)}var MemoizedDataRoutes=react__WEBPACK_IMPORTED_MODULE_0__.memo(function DataRoutes({routes:routes,future:future,state:state}){return useRoutesImpl(routes,void 0,state,future)});function Navigate({to:to,replace:replace2,state:state,relative:relative}){invariant(useInRouterContext(),"<Navigate> may be used only in the context of a <Router> component.");let{static:isStatic}=react__WEBPACK_IMPORTED_MODULE_0__.useContext(NavigationContext);warning(!isStatic,"<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.");let{matches:matches}=react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteContext),{pathname:locationPathname}=useLocation(),navigate=useNavigate(),path=resolveTo(to,getResolveToMatches(matches),locationPathname,"path"===relative),jsonPath=JSON.stringify(path);return react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{navigate(JSON.parse(jsonPath),{replace:replace2,state:state,relative:relative})},[navigate,jsonPath,relative,replace2,state]),null}function Outlet(props){return function useOutlet(context){let outlet=react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteContext).outlet;return outlet?react__WEBPACK_IMPORTED_MODULE_0__.createElement(OutletContext.Provider,{value:context},outlet):outlet}(props.context)}function Router({basename:basenameProp="/",children:children=null,location:locationProp,navigationType:navigationType="POP",navigator:navigator,static:staticProp=!1}){invariant(!useInRouterContext(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let basename=basenameProp.replace(/^\/*/,"/"),navigationContext=react__WEBPACK_IMPORTED_MODULE_0__.useMemo(()=>({basename:basename,navigator:navigator,static:staticProp,future:{}}),[basename,navigator,staticProp]);"string"==typeof locationProp&&(locationProp=parsePath(locationProp));let{pathname:pathname="/",search:search="",hash:hash="",state:state=null,key:key="default"}=locationProp,locationContext=react__WEBPACK_IMPORTED_MODULE_0__.useMemo(()=>{let trailingPathname=stripBasename(pathname,basename);return null==trailingPathname?null:{location:{pathname:trailingPathname,search:search,hash:hash,state:state,key:key},navigationType:navigationType}},[basename,pathname,search,hash,state,key,navigationType]);return warning(null!=locationContext,`<Router basename="${basename}"> is not able to match the URL "${pathname}${search}${hash}" because it does not start with the basename, so the <Router> won't render anything.`),null==locationContext?null:react__WEBPACK_IMPORTED_MODULE_0__.createElement(NavigationContext.Provider,{value:navigationContext},react__WEBPACK_IMPORTED_MODULE_0__.createElement(LocationContext.Provider,{children:children,value:locationContext}))}react__WEBPACK_IMPORTED_MODULE_0__.Component;var defaultEncType="application/x-www-form-urlencoded";function isHtmlElement(object){return null!=object&&"string"==typeof object.tagName}var _formDataSupportsSubmitter=null;var supportedFormEncTypes=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function getFormEncType(encType){return null==encType||supportedFormEncTypes.has(encType)?encType:(warning(!1,`"${encType}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${defaultEncType}"`),null)}function getFormSubmissionInfo(target,basename){let method,action,encType,formData,body;if(function isFormElement(object){return isHtmlElement(object)&&"form"===object.tagName.toLowerCase()}(target)){let attr=target.getAttribute("action");action=attr?stripBasename(attr,basename):null,method=target.getAttribute("method")||"get",encType=getFormEncType(target.getAttribute("enctype"))||defaultEncType,formData=new FormData(target)}else if(function isButtonElement(object){return isHtmlElement(object)&&"button"===object.tagName.toLowerCase()}(target)||function isInputElement(object){return isHtmlElement(object)&&"input"===object.tagName.toLowerCase()}(target)&&("submit"===target.type||"image"===target.type)){let form=target.form;if(null==form)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let attr=target.getAttribute("formaction")||form.getAttribute("action");if(action=attr?stripBasename(attr,basename):null,method=target.getAttribute("formmethod")||form.getAttribute("method")||"get",encType=getFormEncType(target.getAttribute("formenctype"))||getFormEncType(form.getAttribute("enctype"))||defaultEncType,formData=new FormData(form,target),!function isFormDataSubmitterSupported(){if(null===_formDataSupportsSubmitter)try{new FormData(document.createElement("form"),0),_formDataSupportsSubmitter=!1}catch(e){_formDataSupportsSubmitter=!0}return _formDataSupportsSubmitter}()){let{name:name,type:type,value:value}=target;if("image"===type){let prefix=name?`${name}.`:"";formData.append(`${prefix}x`,"0"),formData.append(`${prefix}y`,"0")}else name&&formData.append(name,value)}}else{if(isHtmlElement(target))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');method="get",action=null,encType=defaultEncType,body=target}return formData&&"text/plain"===encType&&(body=formData,formData=void 0),{action:action,method:method.toLowerCase(),encType:encType,formData:formData,body:body}}function invariant2(value,message){if(!1===value||null==value)throw new Error(message)}async function loadRouteModule(route,routeModulesCache){if(route.id in routeModulesCache)return routeModulesCache[route.id];try{let routeModule=await import(route.module);return routeModulesCache[route.id]=routeModule,routeModule}catch(error){return console.error(`Error loading route module \`${route.module}\`, reloading page...`),console.error(error),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function isPageLinkDescriptor(object){return null!=object&&"string"==typeof object.page}function isHtmlLinkDescriptor(object){return null!=object&&(null==object.href?"preload"===object.rel&&"string"==typeof object.imageSrcSet&&"string"==typeof object.imageSizes:"string"==typeof object.rel&&"string"==typeof object.href)}function getNewMatchesForLinks(page,nextMatches,currentMatches,manifest,location,mode){let isNew=(match,index)=>!currentMatches[index]||match.route.id!==currentMatches[index].route.id,matchPathChanged=(match,index)=>currentMatches[index].pathname!==match.pathname||currentMatches[index].route.path?.endsWith("*")&&currentMatches[index].params["*"]!==match.params["*"];return"assets"===mode?nextMatches.filter((match,index)=>isNew(match,index)||matchPathChanged(match,index)):"data"===mode?nextMatches.filter((match,index)=>{let manifestRoute=manifest.routes[match.route.id];if(!manifestRoute||!manifestRoute.hasLoader)return!1;if(isNew(match,index)||matchPathChanged(match,index))return!0;if(match.route.shouldRevalidate){let routeChoice=match.route.shouldRevalidate({currentUrl:new URL(location.pathname+location.search+location.hash,window.origin),currentParams:currentMatches[0]?.params||{},nextUrl:new URL(page,window.origin),nextParams:match.params,defaultShouldRevalidate:!0});if("boolean"==typeof routeChoice)return routeChoice}return!0}):[]}function getModuleLinkHrefs(matches,manifest,{includeHydrateFallback:includeHydrateFallback}={}){return function dedupeHrefs(hrefs){return[...new Set(hrefs)]}(matches.map(match=>{let route=manifest.routes[match.route.id];if(!route)return[];let hrefs=[route.module];return route.clientActionModule&&(hrefs=hrefs.concat(route.clientActionModule)),route.clientLoaderModule&&(hrefs=hrefs.concat(route.clientLoaderModule)),includeHydrateFallback&&route.hydrateFallbackModule&&(hrefs=hrefs.concat(route.hydrateFallbackModule)),route.imports&&(hrefs=hrefs.concat(route.imports)),hrefs}).flat(1))}function dedupeLinkDescriptors(descriptors,preloads){let set=new Set,preloadsSet=new Set(preloads);return descriptors.reduce((deduped,descriptor)=>{if(preloads&&!isPageLinkDescriptor(descriptor)&&"script"===descriptor.as&&descriptor.href&&preloadsSet.has(descriptor.href))return deduped;let key=JSON.stringify(function sortKeys(obj){let sorted={},keys=Object.keys(obj).sort();for(let key of keys)sorted[key]=obj[key];return sorted}(descriptor));return set.has(key)||(set.add(key),deduped.push({key:key,link:descriptor})),deduped},[])}function createHtml(html){return{__html:html}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");"undefined"!=typeof window?window:"undefined"!=typeof globalThis&&globalThis;Symbol("SingleFetchRedirect");var NO_BODY_STATUS_CODES=new Set([100,101,204,205]);function singleFetchUrl(reqUrl,basename){let url="string"==typeof reqUrl?new URL(reqUrl,"undefined"==typeof window?"server://singlefetch/":window.location.origin):reqUrl;return"/"===url.pathname?url.pathname="_root.data":basename&&"/"===stripBasename(url.pathname,basename)?url.pathname=`${basename.replace(/\/$/,"")}/_root.data`:url.pathname=`${url.pathname.replace(/\/$/,"")}.data`,url}react__WEBPACK_IMPORTED_MODULE_0__.Component;function RemixRootDefaultErrorBoundary({error:error,isOutsideRemixApp:isOutsideRemixApp}){console.error(error);let errorInstance,heyDeveloper=react__WEBPACK_IMPORTED_MODULE_0__.createElement("script",{dangerouslySetInnerHTML:{__html:'\n        console.log(\n          "💿 Hey developer 👋. You can provide a way better UX than this when your app throws errors. Check out https://reactrouter.com/how-to/error-boundary for more information."\n        );\n      '}});if(isRouteErrorResponse(error))return react__WEBPACK_IMPORTED_MODULE_0__.createElement(BoundaryShell,{title:"Unhandled Thrown Response!"},react__WEBPACK_IMPORTED_MODULE_0__.createElement("h1",{style:{fontSize:"24px"}},error.status," ",error.statusText),ENABLE_DEV_WARNINGS?heyDeveloper:null);if(error instanceof Error)errorInstance=error;else{let errorString=null==error?"Unknown Error":"object"==typeof error&&"toString"in error?error.toString():JSON.stringify(error);errorInstance=new Error(errorString)}return react__WEBPACK_IMPORTED_MODULE_0__.createElement(BoundaryShell,{title:"Application Error!",isOutsideRemixApp:isOutsideRemixApp},react__WEBPACK_IMPORTED_MODULE_0__.createElement("h1",{style:{fontSize:"24px"}},"Application Error"),react__WEBPACK_IMPORTED_MODULE_0__.createElement("pre",{style:{padding:"2rem",background:"hsla(10, 50%, 50%, 0.1)",color:"red",overflow:"auto"}},errorInstance.stack),heyDeveloper)}function BoundaryShell({title:title,renderScripts:renderScripts,isOutsideRemixApp:isOutsideRemixApp,children:children}){let{routeModules:routeModules}=useFrameworkContext();return routeModules.root?.Layout&&!isOutsideRemixApp?children:react__WEBPACK_IMPORTED_MODULE_0__.createElement("html",{lang:"en"},react__WEBPACK_IMPORTED_MODULE_0__.createElement("head",null,react__WEBPACK_IMPORTED_MODULE_0__.createElement("meta",{charSet:"utf-8"}),react__WEBPACK_IMPORTED_MODULE_0__.createElement("meta",{name:"viewport",content:"width=device-width,initial-scale=1,viewport-fit=cover"}),react__WEBPACK_IMPORTED_MODULE_0__.createElement("title",null,title)),react__WEBPACK_IMPORTED_MODULE_0__.createElement("body",null,react__WEBPACK_IMPORTED_MODULE_0__.createElement("main",{style:{fontFamily:"system-ui, sans-serif",padding:"2rem"}},children,renderScripts?react__WEBPACK_IMPORTED_MODULE_0__.createElement(Scripts,null):null)))}function isFogOfWarEnabled(routeDiscovery,ssr){return"lazy"===routeDiscovery.mode&&!0===ssr}function useDataRouterContext2(){let context=react__WEBPACK_IMPORTED_MODULE_0__.useContext(DataRouterContext);return invariant2(context,"You must render this element inside a <DataRouterContext.Provider> element"),context}function useDataRouterStateContext(){let context=react__WEBPACK_IMPORTED_MODULE_0__.useContext(DataRouterStateContext);return invariant2(context,"You must render this element inside a <DataRouterStateContext.Provider> element"),context}var FrameworkContext=react__WEBPACK_IMPORTED_MODULE_0__.createContext(void 0);function useFrameworkContext(){let context=react__WEBPACK_IMPORTED_MODULE_0__.useContext(FrameworkContext);return invariant2(context,"You must render this element inside a <HydratedRouter> element"),context}function composeEventHandlers(theirHandler,ourHandler){return event=>{theirHandler&&theirHandler(event),event.defaultPrevented||ourHandler(event)}}function getActiveMatches(matches,errors,isSpaMode){if(isSpaMode&&!isHydrated)return[matches[0]];if(errors){let errorIdx=matches.findIndex(m=>void 0!==errors[m.route.id]);return matches.slice(0,errorIdx+1)}return matches}function PrefetchPageLinks({page:page,...dataLinkProps}){let{router:router}=useDataRouterContext2(),matches=react__WEBPACK_IMPORTED_MODULE_0__.useMemo(()=>matchRoutes(router.routes,page,router.basename),[router.routes,page,router.basename]);return matches?react__WEBPACK_IMPORTED_MODULE_0__.createElement(PrefetchPageLinksImpl,{page:page,matches:matches,...dataLinkProps}):null}function useKeyedPrefetchLinks(matches){let{manifest:manifest,routeModules:routeModules}=useFrameworkContext(),[keyedPrefetchLinks,setKeyedPrefetchLinks]=react__WEBPACK_IMPORTED_MODULE_0__.useState([]);return react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{let interrupted=!1;return async function getKeyedPrefetchLinks(matches,manifest,routeModules){return dedupeLinkDescriptors((await Promise.all(matches.map(async match=>{let route=manifest.routes[match.route.id];if(route){let mod=await loadRouteModule(route,routeModules);return mod.links?mod.links():[]}return[]}))).flat(1).filter(isHtmlLinkDescriptor).filter(link=>"stylesheet"===link.rel||"preload"===link.rel).map(link=>"stylesheet"===link.rel?{...link,rel:"prefetch",as:"style"}:{...link,rel:"prefetch"}))}(matches,manifest,routeModules).then(links=>{interrupted||setKeyedPrefetchLinks(links)}),()=>{interrupted=!0}},[matches,manifest,routeModules]),keyedPrefetchLinks}function PrefetchPageLinksImpl({page:page,matches:nextMatches,...linkProps}){let location=useLocation(),{manifest:manifest,routeModules:routeModules}=useFrameworkContext(),{basename:basename}=useDataRouterContext2(),{loaderData:loaderData,matches:matches}=useDataRouterStateContext(),newMatchesForData=react__WEBPACK_IMPORTED_MODULE_0__.useMemo(()=>getNewMatchesForLinks(page,nextMatches,matches,manifest,location,"data"),[page,nextMatches,matches,manifest,location]),newMatchesForAssets=react__WEBPACK_IMPORTED_MODULE_0__.useMemo(()=>getNewMatchesForLinks(page,nextMatches,matches,manifest,location,"assets"),[page,nextMatches,matches,manifest,location]),dataHrefs=react__WEBPACK_IMPORTED_MODULE_0__.useMemo(()=>{if(page===location.pathname+location.search+location.hash)return[];let routesParams=new Set,foundOptOutRoute=!1;if(nextMatches.forEach(m=>{let manifestRoute=manifest.routes[m.route.id];manifestRoute&&manifestRoute.hasLoader&&(!newMatchesForData.some(m2=>m2.route.id===m.route.id)&&m.route.id in loaderData&&routeModules[m.route.id]?.shouldRevalidate||manifestRoute.hasClientLoader?foundOptOutRoute=!0:routesParams.add(m.route.id))}),0===routesParams.size)return[];let url=singleFetchUrl(page,basename);return foundOptOutRoute&&routesParams.size>0&&url.searchParams.set("_routes",nextMatches.filter(m=>routesParams.has(m.route.id)).map(m=>m.route.id).join(",")),[url.pathname+url.search]},[basename,loaderData,location,manifest,newMatchesForData,nextMatches,page,routeModules]),moduleHrefs=react__WEBPACK_IMPORTED_MODULE_0__.useMemo(()=>getModuleLinkHrefs(newMatchesForAssets,manifest),[newMatchesForAssets,manifest]),keyedPrefetchLinks=useKeyedPrefetchLinks(newMatchesForAssets);return react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment,null,dataHrefs.map(href2=>react__WEBPACK_IMPORTED_MODULE_0__.createElement("link",{key:href2,rel:"prefetch",as:"fetch",href:href2,...linkProps})),moduleHrefs.map(href2=>react__WEBPACK_IMPORTED_MODULE_0__.createElement("link",{key:href2,rel:"modulepreload",href:href2,...linkProps})),keyedPrefetchLinks.map(({key:key,link:link})=>react__WEBPACK_IMPORTED_MODULE_0__.createElement("link",{key:key,...link})))}FrameworkContext.displayName="FrameworkContext";var isHydrated=!1;function Scripts(props){let{manifest:manifest,serverHandoffString:serverHandoffString,isSpaMode:isSpaMode,renderMeta:renderMeta,routeDiscovery:routeDiscovery,ssr:ssr}=useFrameworkContext(),{router:router,static:isStatic,staticContext:staticContext}=useDataRouterContext2(),{matches:routerMatches}=useDataRouterStateContext(),enableFogOfWar=isFogOfWarEnabled(routeDiscovery,ssr);renderMeta&&(renderMeta.didRenderScripts=!0);let matches=getActiveMatches(routerMatches,null,isSpaMode);react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{isHydrated=!0},[]);let initialScripts=react__WEBPACK_IMPORTED_MODULE_0__.useMemo(()=>{let contextScript=staticContext?`window.__reactRouterContext = ${serverHandoffString};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());`:" ",routeModulesScript=isStatic?`${manifest.hmr?.runtime?`import ${JSON.stringify(manifest.hmr.runtime)};`:""}${enableFogOfWar?"":`import ${JSON.stringify(manifest.url)}`};\n${matches.map((match,routeIndex)=>{let routeVarName=`route${routeIndex}`,manifestEntry=manifest.routes[match.route.id];invariant2(manifestEntry,`Route ${match.route.id} not found in manifest`);let{clientActionModule:clientActionModule,clientLoaderModule:clientLoaderModule,clientMiddlewareModule:clientMiddlewareModule,hydrateFallbackModule:hydrateFallbackModule,module:module}=manifestEntry,chunks=[...clientActionModule?[{module:clientActionModule,varName:`${routeVarName}_clientAction`}]:[],...clientLoaderModule?[{module:clientLoaderModule,varName:`${routeVarName}_clientLoader`}]:[],...clientMiddlewareModule?[{module:clientMiddlewareModule,varName:`${routeVarName}_clientMiddleware`}]:[],...hydrateFallbackModule?[{module:hydrateFallbackModule,varName:`${routeVarName}_HydrateFallback`}]:[],{module:module,varName:`${routeVarName}_main`}];return 1===chunks.length?`import * as ${routeVarName} from ${JSON.stringify(module)};`:[chunks.map(chunk=>`import * as ${chunk.varName} from "${chunk.module}";`).join("\n"),`const ${routeVarName} = {${chunks.map(chunk=>`...${chunk.varName}`).join(",")}};`].join("\n")}).join("\n")}\n  ${enableFogOfWar?`window.__reactRouterManifest = ${JSON.stringify(function getPartialManifest({sri:sri,...manifest},router){let routeIds=new Set(router.state.matches.map(m=>m.route.id)),segments=router.state.location.pathname.split("/").filter(Boolean),paths=["/"];for(segments.pop();segments.length>0;)paths.push(`/${segments.join("/")}`),segments.pop();paths.forEach(path=>{let matches=matchRoutes(router.routes,path,router.basename);matches&&matches.forEach(m=>routeIds.add(m.route.id))});let initialRoutes=[...routeIds].reduce((acc,id)=>Object.assign(acc,{[id]:manifest.routes[id]}),{});return{...manifest,routes:initialRoutes,sri:!!sri||void 0}}(manifest,router),null,2)};`:""}\n  window.__reactRouterRouteModules = {${matches.map((match,index)=>`${JSON.stringify(match.route.id)}:route${index}`).join(",")}};\n\nimport(${JSON.stringify(manifest.entry.module)});`:" ";return react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment,null,react__WEBPACK_IMPORTED_MODULE_0__.createElement("script",{...props,suppressHydrationWarning:!0,dangerouslySetInnerHTML:createHtml(contextScript),type:void 0}),react__WEBPACK_IMPORTED_MODULE_0__.createElement("script",{...props,suppressHydrationWarning:!0,dangerouslySetInnerHTML:createHtml(routeModulesScript),type:"module",async:!0}))},[]),preloads=isHydrated?[]:function dedupe(array){return[...new Set(array)]}(manifest.entry.imports.concat(getModuleLinkHrefs(matches,manifest,{includeHydrateFallback:!0}))),sri="object"==typeof manifest.sri?manifest.sri:{};return isHydrated?null:react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment,null,"object"==typeof manifest.sri?react__WEBPACK_IMPORTED_MODULE_0__.createElement("script",{"rr-importmap":"",type:"importmap",suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:JSON.stringify({integrity:sri})}}):null,enableFogOfWar?null:react__WEBPACK_IMPORTED_MODULE_0__.createElement("link",{rel:"modulepreload",href:manifest.url,crossOrigin:props.crossOrigin,integrity:sri[manifest.url],suppressHydrationWarning:!0}),react__WEBPACK_IMPORTED_MODULE_0__.createElement("link",{rel:"modulepreload",href:manifest.entry.module,crossOrigin:props.crossOrigin,integrity:sri[manifest.entry.module],suppressHydrationWarning:!0}),preloads.map(path=>react__WEBPACK_IMPORTED_MODULE_0__.createElement("link",{key:path,rel:"modulepreload",href:path,crossOrigin:props.crossOrigin,integrity:sri[path],suppressHydrationWarning:!0})),initialScripts)}function mergeRefs(...refs){return value=>{refs.forEach(ref=>{"function"==typeof ref?ref(value):null!=ref&&(ref.current=value)})}}var isBrowser="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement;try{isBrowser&&(window.__reactRouterVersion="7.6.3")}catch(e){}function createBrowserRouter(routes,opts){return createRouter({basename:opts?.basename,unstable_getContext:opts?.unstable_getContext,future:opts?.future,history:createBrowserHistory({window:opts?.window}),hydrationData:opts?.hydrationData||parseHydrationData(),routes:routes,mapRouteProperties:mapRouteProperties,hydrationRouteProperties:hydrationRouteProperties,dataStrategy:opts?.dataStrategy,patchRoutesOnNavigation:opts?.patchRoutesOnNavigation,window:opts?.window}).initialize()}function parseHydrationData(){let state=window?.__staticRouterHydrationData;return state&&state.errors&&(state={...state,errors:deserializeErrors(state.errors)}),state}function deserializeErrors(errors){if(!errors)return null;let entries=Object.entries(errors),serialized={};for(let[key,val]of entries)if(val&&"RouteErrorResponse"===val.__type)serialized[key]=new ErrorResponseImpl(val.status,val.statusText,val.data,!0===val.internal);else if(val&&"Error"===val.__type){if(val.__subType){let ErrorConstructor=window[val.__subType];if("function"==typeof ErrorConstructor)try{let error=new ErrorConstructor(val.message);error.stack="",serialized[key]=error}catch(e){}}if(null==serialized[key]){let error=new Error(val.message);error.stack="",serialized[key]=error}}else serialized[key]=val;return serialized}var ABSOLUTE_URL_REGEX2=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Link=react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(function LinkWithRef({onClick:onClick,discover:discover="render",prefetch:prefetch="none",relative:relative,reloadDocument:reloadDocument,replace:replace2,state:state,target:target,to:to,preventScrollReset:preventScrollReset,viewTransition:viewTransition,...rest},forwardedRef){let absoluteHref,{basename:basename}=react__WEBPACK_IMPORTED_MODULE_0__.useContext(NavigationContext),isAbsolute="string"==typeof to&&ABSOLUTE_URL_REGEX2.test(to),isExternal=!1;if("string"==typeof to&&isAbsolute&&(absoluteHref=to,isBrowser))try{let currentUrl=new URL(window.location.href),targetUrl=to.startsWith("//")?new URL(currentUrl.protocol+to):new URL(to),path=stripBasename(targetUrl.pathname,basename);targetUrl.origin===currentUrl.origin&&null!=path?to=path+targetUrl.search+targetUrl.hash:isExternal=!0}catch(e){warning(!1,`<Link to="${to}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}let href2=function useHref(to,{relative:relative}={}){invariant(useInRouterContext(),"useHref() may be used only in the context of a <Router> component.");let{basename:basename,navigator:navigator}=react__WEBPACK_IMPORTED_MODULE_0__.useContext(NavigationContext),{hash:hash,pathname:pathname,search:search}=useResolvedPath(to,{relative:relative}),joinedPathname=pathname;return"/"!==basename&&(joinedPathname="/"===pathname?basename:joinPaths([basename,pathname])),navigator.createHref({pathname:joinedPathname,search:search,hash:hash})}(to,{relative:relative}),[shouldPrefetch,prefetchRef,prefetchHandlers]=function usePrefetchBehavior(prefetch,theirElementProps){let frameworkContext=react__WEBPACK_IMPORTED_MODULE_0__.useContext(FrameworkContext),[maybePrefetch,setMaybePrefetch]=react__WEBPACK_IMPORTED_MODULE_0__.useState(!1),[shouldPrefetch,setShouldPrefetch]=react__WEBPACK_IMPORTED_MODULE_0__.useState(!1),{onFocus:onFocus,onBlur:onBlur,onMouseEnter:onMouseEnter,onMouseLeave:onMouseLeave,onTouchStart:onTouchStart}=theirElementProps,ref=react__WEBPACK_IMPORTED_MODULE_0__.useRef(null);react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{if("render"===prefetch&&setShouldPrefetch(!0),"viewport"===prefetch){let observer=new IntersectionObserver(entries=>{entries.forEach(entry=>{setShouldPrefetch(entry.isIntersecting)})},{threshold:.5});return ref.current&&observer.observe(ref.current),()=>{observer.disconnect()}}},[prefetch]),react__WEBPACK_IMPORTED_MODULE_0__.useEffect(()=>{if(maybePrefetch){let id=setTimeout(()=>{setShouldPrefetch(!0)},100);return()=>{clearTimeout(id)}}},[maybePrefetch]);let setIntent=()=>{setMaybePrefetch(!0)},cancelIntent=()=>{setMaybePrefetch(!1),setShouldPrefetch(!1)};return frameworkContext?"intent"!==prefetch?[shouldPrefetch,ref,{}]:[shouldPrefetch,ref,{onFocus:composeEventHandlers(onFocus,setIntent),onBlur:composeEventHandlers(onBlur,cancelIntent),onMouseEnter:composeEventHandlers(onMouseEnter,setIntent),onMouseLeave:composeEventHandlers(onMouseLeave,cancelIntent),onTouchStart:composeEventHandlers(onTouchStart,setIntent)}]:[!1,ref,{}]}(prefetch,rest),internalOnClick=function useLinkClickHandler(to,{target:target,replace:replaceProp,state:state,preventScrollReset:preventScrollReset,relative:relative,viewTransition:viewTransition}={}){let navigate=useNavigate(),location=useLocation(),path=useResolvedPath(to,{relative:relative});return react__WEBPACK_IMPORTED_MODULE_0__.useCallback(event=>{if(function shouldProcessLinkClick(event,target){return!(0!==event.button||target&&"_self"!==target||function isModifiedEvent(event){return!!(event.metaKey||event.altKey||event.ctrlKey||event.shiftKey)}(event))}(event,target)){event.preventDefault();let replace2=void 0!==replaceProp?replaceProp:createPath(location)===createPath(path);navigate(to,{replace:replace2,state:state,preventScrollReset:preventScrollReset,relative:relative,viewTransition:viewTransition})}},[location,navigate,path,replaceProp,state,target,to,preventScrollReset,relative,viewTransition])}(to,{replace:replace2,state:state,target:target,preventScrollReset:preventScrollReset,relative:relative,viewTransition:viewTransition});let link=react__WEBPACK_IMPORTED_MODULE_0__.createElement("a",{...rest,...prefetchHandlers,href:absoluteHref||href2,onClick:isExternal||reloadDocument?onClick:function handleClick(event){onClick&&onClick(event),event.defaultPrevented||internalOnClick(event)},ref:mergeRefs(forwardedRef,prefetchRef),target:target,"data-discover":isAbsolute||"render"!==discover?void 0:"true"});return shouldPrefetch&&!isAbsolute?react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment,null,link,react__WEBPACK_IMPORTED_MODULE_0__.createElement(PrefetchPageLinks,{page:href2})):link});Link.displayName="Link",react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(function NavLinkWithRef({"aria-current":ariaCurrentProp="page",caseSensitive:caseSensitive=!1,className:classNameProp="",end:end=!1,style:styleProp,to:to,viewTransition:viewTransition,children:children,...rest},ref){let path=useResolvedPath(to,{relative:rest.relative}),location=useLocation(),routerState=react__WEBPACK_IMPORTED_MODULE_0__.useContext(DataRouterStateContext),{navigator:navigator,basename:basename}=react__WEBPACK_IMPORTED_MODULE_0__.useContext(NavigationContext),isTransitioning=null!=routerState&&function useViewTransitionState(to,opts={}){let vtContext=react__WEBPACK_IMPORTED_MODULE_0__.useContext(ViewTransitionContext);invariant(null!=vtContext,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`.  Did you accidentally import `RouterProvider` from `react-router`?");let{basename:basename}=useDataRouterContext3("useViewTransitionState"),path=useResolvedPath(to,{relative:opts.relative});if(!vtContext.isTransitioning)return!1;let currentPath=stripBasename(vtContext.currentLocation.pathname,basename)||vtContext.currentLocation.pathname,nextPath=stripBasename(vtContext.nextLocation.pathname,basename)||vtContext.nextLocation.pathname;return null!=matchPath(path.pathname,nextPath)||null!=matchPath(path.pathname,currentPath)}(path)&&!0===viewTransition,toPathname=navigator.encodeLocation?navigator.encodeLocation(path).pathname:path.pathname,locationPathname=location.pathname,nextLocationPathname=routerState&&routerState.navigation&&routerState.navigation.location?routerState.navigation.location.pathname:null;caseSensitive||(locationPathname=locationPathname.toLowerCase(),nextLocationPathname=nextLocationPathname?nextLocationPathname.toLowerCase():null,toPathname=toPathname.toLowerCase()),nextLocationPathname&&basename&&(nextLocationPathname=stripBasename(nextLocationPathname,basename)||nextLocationPathname);const endSlashPosition="/"!==toPathname&&toPathname.endsWith("/")?toPathname.length-1:toPathname.length;let className,isActive=locationPathname===toPathname||!end&&locationPathname.startsWith(toPathname)&&"/"===locationPathname.charAt(endSlashPosition),isPending=null!=nextLocationPathname&&(nextLocationPathname===toPathname||!end&&nextLocationPathname.startsWith(toPathname)&&"/"===nextLocationPathname.charAt(toPathname.length)),renderProps={isActive:isActive,isPending:isPending,isTransitioning:isTransitioning},ariaCurrent=isActive?ariaCurrentProp:void 0;className="function"==typeof classNameProp?classNameProp(renderProps):[classNameProp,isActive?"active":null,isPending?"pending":null,isTransitioning?"transitioning":null].filter(Boolean).join(" ");let style="function"==typeof styleProp?styleProp(renderProps):styleProp;return react__WEBPACK_IMPORTED_MODULE_0__.createElement(Link,{...rest,"aria-current":ariaCurrent,className:className,ref:ref,style:style,to:to,viewTransition:viewTransition},"function"==typeof children?children(renderProps):children)}).displayName="NavLink";var Form=react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(({discover:discover="render",fetcherKey:fetcherKey,navigate:navigate,reloadDocument:reloadDocument,replace:replace2,state:state,method:method="get",action:action,onSubmit:onSubmit,relative:relative,preventScrollReset:preventScrollReset,viewTransition:viewTransition,...props},forwardedRef)=>{let submit=useSubmit(),formAction=function useFormAction(action,{relative:relative}={}){let{basename:basename}=react__WEBPACK_IMPORTED_MODULE_0__.useContext(NavigationContext),routeContext=react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteContext);invariant(routeContext,"useFormAction must be used inside a RouteContext");let[match]=routeContext.matches.slice(-1),path={...useResolvedPath(action||".",{relative:relative})},location=useLocation();if(null==action){path.search=location.search;let params=new URLSearchParams(path.search),indexValues=params.getAll("index");if(indexValues.some(v=>""===v)){params.delete("index"),indexValues.filter(v=>v).forEach(v=>params.append("index",v));let qs=params.toString();path.search=qs?`?${qs}`:""}}action&&"."!==action||!match.route.index||(path.search=path.search?path.search.replace(/^\?/,"?index&"):"?index");"/"!==basename&&(path.pathname="/"===path.pathname?basename:joinPaths([basename,path.pathname]));return createPath(path)}(action,{relative:relative}),formMethod="get"===method.toLowerCase()?"get":"post",isAbsolute="string"==typeof action&&ABSOLUTE_URL_REGEX2.test(action);return react__WEBPACK_IMPORTED_MODULE_0__.createElement("form",{ref:forwardedRef,method:formMethod,action:formAction,onSubmit:reloadDocument?onSubmit:event=>{if(onSubmit&&onSubmit(event),event.defaultPrevented)return;event.preventDefault();let submitter=event.nativeEvent.submitter,submitMethod=submitter?.getAttribute("formmethod")||method;submit(submitter||event.currentTarget,{fetcherKey:fetcherKey,method:submitMethod,navigate:navigate,replace:replace2,state:state,relative:relative,preventScrollReset:preventScrollReset,viewTransition:viewTransition})},...props,"data-discover":isAbsolute||"render"!==discover?void 0:"true"})});function getDataRouterConsoleError2(hookName){return`${hookName} must be used within a data router.  See https://reactrouter.com/en/main/routers/picking-a-router.`}function useDataRouterContext3(hookName){let ctx=react__WEBPACK_IMPORTED_MODULE_0__.useContext(DataRouterContext);return invariant(ctx,getDataRouterConsoleError2(hookName)),ctx}Form.displayName="Form";var fetcherId=0,getUniqueFetcherId=()=>`__${String(++fetcherId)}__`;function useSubmit(){let{router:router}=useDataRouterContext3("useSubmit"),{basename:basename}=react__WEBPACK_IMPORTED_MODULE_0__.useContext(NavigationContext),currentRouteId=function useRouteId(){return useCurrentRouteId("useRouteId")}();return react__WEBPACK_IMPORTED_MODULE_0__.useCallback(async(target,options={})=>{let{action:action,method:method,encType:encType,formData:formData,body:body}=getFormSubmissionInfo(target,basename);if(!1===options.navigate){let key=options.fetcherKey||getUniqueFetcherId();await router.fetch(key,currentRouteId,options.action||action,{preventScrollReset:options.preventScrollReset,formData:formData,body:body,formMethod:options.method||method,formEncType:options.encType||encType,flushSync:options.flushSync})}else await router.navigate(options.action||action,{preventScrollReset:options.preventScrollReset,formData:formData,body:body,formMethod:options.method||method,formEncType:options.encType||encType,replace:options.replace,state:options.state,fromRouteId:currentRouteId,flushSync:options.flushSync,viewTransition:options.viewTransition})},[router,basename,currentRouteId])}}}]);