diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml new file mode 100644 index 0000000..f2c9e97 --- /dev/null +++ b/.github/workflows/static.yml @@ -0,0 +1,43 @@ +# Simple workflow for deploying static content to GitHub Pages +name: Deploy static content to Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: ["main"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + # Single deploy job since we're just deploying + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Pages + uses: actions/configure-pages@v5 + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + # Upload entire repository + path: '.' + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e127dc7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# IntelliJ Config +.idea + +# Maven +target/ +.mvn +.mvn-classpath +pom.xml.bak + +# node, vite +node_modules/ +client/*.js +target/ +build/ +dist/ +.env +test-results/ +playwright-report/ +playwright/.cache/ +server/src/main/resources/firebase_config.json + +# mac +.DS_Store + diff --git a/assets/LeaderBoardBackground-b8eacfcd.jpg b/assets/LeaderBoardBackground-b8eacfcd.jpg new file mode 100644 index 0000000..07fa7d2 Binary files /dev/null and b/assets/LeaderBoardBackground-b8eacfcd.jpg differ diff --git a/assets/index-052e5037.js b/assets/index-052e5037.js new file mode 100644 index 0000000..0bebaa3 --- /dev/null +++ b/assets/index-052e5037.js @@ -0,0 +1,106 @@ +function oh(e,t){for(var n=0;nr[i]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const o of i)if(o.type==="childList")for(const l of o.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&r(l)}).observe(document,{childList:!0,subtree:!0});function n(i){const o={};return i.integrity&&(o.integrity=i.integrity),i.referrerPolicy&&(o.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?o.credentials="include":i.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function r(i){if(i.ep)return;i.ep=!0;const o=n(i);fetch(i.href,o)}})();function lh(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Wc={exports:{}},Uo={},$c={exports:{}},K={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var mi=Symbol.for("react.element"),sh=Symbol.for("react.portal"),ah=Symbol.for("react.fragment"),uh=Symbol.for("react.strict_mode"),ch=Symbol.for("react.profiler"),dh=Symbol.for("react.provider"),fh=Symbol.for("react.context"),ph=Symbol.for("react.forward_ref"),hh=Symbol.for("react.suspense"),mh=Symbol.for("react.memo"),gh=Symbol.for("react.lazy"),nu=Symbol.iterator;function vh(e){return e===null||typeof e!="object"?null:(e=nu&&e[nu]||e["@@iterator"],typeof e=="function"?e:null)}var Vc={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Hc=Object.assign,bc={};function hr(e,t,n){this.props=e,this.context=t,this.refs=bc,this.updater=n||Vc}hr.prototype.isReactComponent={};hr.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};hr.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function Kc(){}Kc.prototype=hr.prototype;function Js(e,t,n){this.props=e,this.context=t,this.refs=bc,this.updater=n||Vc}var Xs=Js.prototype=new Kc;Xs.constructor=Js;Hc(Xs,hr.prototype);Xs.isPureReactComponent=!0;var ru=Array.isArray,Qc=Object.prototype.hasOwnProperty,qs={current:null},Gc={key:!0,ref:!0,__self:!0,__source:!0};function Yc(e,t,n){var r,i={},o=null,l=null;if(t!=null)for(r in t.ref!==void 0&&(l=t.ref),t.key!==void 0&&(o=""+t.key),t)Qc.call(t,r)&&!Gc.hasOwnProperty(r)&&(i[r]=t[r]);var s=arguments.length-2;if(s===1)i.children=n;else if(1>>1,B=C[A];if(0>>1;Ai(Se,M))Iei(kt,Se)?(C[A]=kt,C[Ie]=M,A=Ie):(C[A]=Se,C[fe]=M,A=fe);else if(Iei(kt,M))C[A]=kt,C[Ie]=M,A=Ie;else break e}}return z}function i(C,z){var M=C.sortIndex-z.sortIndex;return M!==0?M:C.id-z.id}if(typeof performance=="object"&&typeof performance.now=="function"){var o=performance;e.unstable_now=function(){return o.now()}}else{var l=Date,s=l.now();e.unstable_now=function(){return l.now()-s}}var a=[],u=[],p=1,f=null,m=3,g=!1,y=!1,_=!1,P=typeof setTimeout=="function"?setTimeout:null,c=typeof clearTimeout=="function"?clearTimeout:null,d=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function h(C){for(var z=n(u);z!==null;){if(z.callback===null)r(u);else if(z.startTime<=C)r(u),z.sortIndex=z.expirationTime,t(a,z);else break;z=n(u)}}function w(C){if(_=!1,h(C),!y)if(n(a)!==null)y=!0,de(S);else{var z=n(u);z!==null&&V(w,z.startTime-C)}}function S(C,z){y=!1,_&&(_=!1,c(k),k=-1),g=!0;var M=m;try{for(h(z),f=n(a);f!==null&&(!(f.expirationTime>z)||C&&!b());){var A=f.callback;if(typeof A=="function"){f.callback=null,m=f.priorityLevel;var B=A(f.expirationTime<=z);z=e.unstable_now(),typeof B=="function"?f.callback=B:f===n(a)&&r(a),h(z)}else r(a);f=n(a)}if(f!==null)var he=!0;else{var fe=n(u);fe!==null&&V(w,fe.startTime-z),he=!1}return he}finally{f=null,m=M,g=!1}}var x=!1,R=null,k=-1,$=5,L=-1;function b(){return!(e.unstable_now()-L<$)}function q(){if(R!==null){var C=e.unstable_now();L=C;var z=!0;try{z=R(!0,C)}finally{z?G():(x=!1,R=null)}}else x=!1}var G;if(typeof d=="function")G=function(){d(q)};else if(typeof MessageChannel<"u"){var Z=new MessageChannel,Ue=Z.port2;Z.port1.onmessage=q,G=function(){Ue.postMessage(null)}}else G=function(){P(q,0)};function de(C){R=C,x||(x=!0,G())}function V(C,z){k=P(function(){C(e.unstable_now())},z)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(C){C.callback=null},e.unstable_continueExecution=function(){y||g||(y=!0,de(S))},e.unstable_forceFrameRate=function(C){0>C||125A?(C.sortIndex=M,t(u,C),n(a)===null&&C===n(u)&&(_?(c(k),k=-1):_=!0,V(w,M-A))):(C.sortIndex=B,t(a,C),y||g||(y=!0,de(S))),C},e.unstable_shouldYield=b,e.unstable_wrapCallback=function(C){var z=m;return function(){var M=m;m=z;try{return C.apply(this,arguments)}finally{m=M}}}})(Zc);qc.exports=Zc;var Th=qc.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var ed=v,et=Th;function O(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Gl=Object.prototype.hasOwnProperty,Lh=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,ou={},lu={};function Nh(e){return Gl.call(lu,e)?!0:Gl.call(ou,e)?!1:Lh.test(e)?lu[e]=!0:(ou[e]=!0,!1)}function Uh(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function zh(e,t,n,r){if(t===null||typeof t>"u"||Uh(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function Ve(e,t,n,r,i,o,l){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=i,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=l}var Ne={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){Ne[e]=new Ve(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];Ne[t]=new Ve(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){Ne[e]=new Ve(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){Ne[e]=new Ve(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){Ne[e]=new Ve(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){Ne[e]=new Ve(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){Ne[e]=new Ve(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){Ne[e]=new Ve(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){Ne[e]=new Ve(e,5,!1,e.toLowerCase(),null,!1,!1)});var ta=/[\-:]([a-z])/g;function na(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(ta,na);Ne[t]=new Ve(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(ta,na);Ne[t]=new Ve(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(ta,na);Ne[t]=new Ve(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){Ne[e]=new Ve(e,1,!1,e.toLowerCase(),null,!1,!1)});Ne.xlinkHref=new Ve("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){Ne[e]=new Ve(e,1,!1,e.toLowerCase(),null,!0,!0)});function ra(e,t,n,r){var i=Ne.hasOwnProperty(t)?Ne[t]:null;(i!==null?i.type!==0:r||!(2s||i[l]!==o[s]){var a=` +`+i[l].replace(" at new "," at ");return e.displayName&&a.includes("")&&(a=a.replace("",e.displayName)),a}while(1<=l&&0<=s);break}}}finally{ul=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Ur(e):""}function Mh(e){switch(e.tag){case 5:return Ur(e.type);case 16:return Ur("Lazy");case 13:return Ur("Suspense");case 19:return Ur("SuspenseList");case 0:case 2:case 15:return e=cl(e.type,!1),e;case 11:return e=cl(e.type.render,!1),e;case 1:return e=cl(e.type,!0),e;default:return""}}function ql(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Vn:return"Fragment";case $n:return"Portal";case Yl:return"Profiler";case ia:return"StrictMode";case Jl:return"Suspense";case Xl:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case rd:return(e.displayName||"Context")+".Consumer";case nd:return(e._context.displayName||"Context")+".Provider";case oa:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case la:return t=e.displayName||null,t!==null?t:ql(e.type)||"Memo";case Ht:t=e._payload,e=e._init;try{return ql(e(t))}catch{}}return null}function jh(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ql(t);case 8:return t===ia?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function un(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function od(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Ah(e){var t=od(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var i=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return i.call(this)},set:function(l){r=""+l,o.call(this,l)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(l){r=""+l},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function xi(e){e._valueTracker||(e._valueTracker=Ah(e))}function ld(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=od(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function io(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Zl(e,t){var n=t.checked;return ce({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function au(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=un(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function sd(e,t){t=t.checked,t!=null&&ra(e,"checked",t,!1)}function es(e,t){sd(e,t);var n=un(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?ts(e,t.type,n):t.hasOwnProperty("defaultValue")&&ts(e,t.type,un(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function uu(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function ts(e,t,n){(t!=="number"||io(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var zr=Array.isArray;function er(e,t,n,r){if(e=e.options,t){t={};for(var i=0;i"+t.valueOf().toString()+"",t=Ii.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Jr(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var Ar={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Bh=["Webkit","ms","Moz","O"];Object.keys(Ar).forEach(function(e){Bh.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Ar[t]=Ar[e]})});function dd(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||Ar.hasOwnProperty(e)&&Ar[e]?(""+t).trim():t+"px"}function fd(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,i=dd(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,i):e[n]=i}}var Dh=ce({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function is(e,t){if(t){if(Dh[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(O(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(O(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(O(61))}if(t.style!=null&&typeof t.style!="object")throw Error(O(62))}}function os(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var ls=null;function sa(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var ss=null,tr=null,nr=null;function fu(e){if(e=yi(e)){if(typeof ss!="function")throw Error(O(280));var t=e.stateNode;t&&(t=Bo(t),ss(e.stateNode,e.type,t))}}function pd(e){tr?nr?nr.push(e):nr=[e]:tr=e}function hd(){if(tr){var e=tr,t=nr;if(nr=tr=null,fu(e),t)for(e=0;e>>=0,e===0?32:31-(Jh(e)/Xh|0)|0}var Ri=64,Oi=4194304;function Mr(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function ao(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,i=e.suspendedLanes,o=e.pingedLanes,l=n&268435455;if(l!==0){var s=l&~i;s!==0?r=Mr(s):(o&=l,o!==0&&(r=Mr(o)))}else l=n&~i,l!==0?r=Mr(l):o!==0&&(r=Mr(o));if(r===0)return 0;if(t!==0&&t!==r&&!(t&i)&&(i=r&-r,o=t&-t,i>=o||i===16&&(o&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function gi(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-yt(t),e[t]=n}function tm(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Dr),ku=String.fromCharCode(32),Su=!1;function zd(e,t){switch(e){case"keyup":return Om.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Md(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Hn=!1;function Lm(e,t){switch(e){case"compositionend":return Md(t);case"keypress":return t.which!==32?null:(Su=!0,ku);case"textInput":return e=t.data,e===ku&&Su?null:e;default:return null}}function Nm(e,t){if(Hn)return e==="compositionend"||!ma&&zd(e,t)?(e=Nd(),Gi=fa=Gt=null,Hn=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=xu(n)}}function Dd(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Dd(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Fd(){for(var e=window,t=io();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=io(e.document)}return t}function ga(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function Wm(e){var t=Fd(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Dd(n.ownerDocument.documentElement,n)){if(r!==null&&ga(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var i=n.textContent.length,o=Math.min(r.start,i);r=r.end===void 0?o:Math.min(r.end,i),!e.extend&&o>r&&(i=r,r=o,o=i),i=Iu(n,o);var l=Iu(n,r);i&&l&&(e.rangeCount!==1||e.anchorNode!==i.node||e.anchorOffset!==i.offset||e.focusNode!==l.node||e.focusOffset!==l.offset)&&(t=t.createRange(),t.setStart(i.node,i.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(l.node,l.offset)):(t.setEnd(l.node,l.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,bn=null,ps=null,Wr=null,hs=!1;function Ru(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;hs||bn==null||bn!==io(r)||(r=bn,"selectionStart"in r&&ga(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Wr&&ni(Wr,r)||(Wr=r,r=fo(ps,"onSelect"),0Gn||(e.current=ws[Gn],ws[Gn]=null,Gn--)}function te(e,t){Gn++,ws[Gn]=e.current,e.current=t}var cn={},Ae=fn(cn),Qe=fn(!1),xn=cn;function sr(e,t){var n=e.type.contextTypes;if(!n)return cn;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i={},o;for(o in n)i[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function Ge(e){return e=e.childContextTypes,e!=null}function ho(){oe(Qe),oe(Ae)}function Mu(e,t,n){if(Ae.current!==cn)throw Error(O(168));te(Ae,t),te(Qe,n)}function Yd(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var i in r)if(!(i in t))throw Error(O(108,jh(e)||"Unknown",i));return ce({},n,r)}function mo(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||cn,xn=Ae.current,te(Ae,e),te(Qe,Qe.current),!0}function ju(e,t,n){var r=e.stateNode;if(!r)throw Error(O(169));n?(e=Yd(e,t,xn),r.__reactInternalMemoizedMergedChildContext=e,oe(Qe),oe(Ae),te(Ae,e)):oe(Qe),te(Qe,n)}var Lt=null,Do=!1,El=!1;function Jd(e){Lt===null?Lt=[e]:Lt.push(e)}function Zm(e){Do=!0,Jd(e)}function pn(){if(!El&&Lt!==null){El=!0;var e=0,t=ee;try{var n=Lt;for(ee=1;e>=l,i-=l,Ut=1<<32-yt(t)+i|n<k?($=R,R=null):$=R.sibling;var L=m(c,R,h[k],w);if(L===null){R===null&&(R=$);break}e&&R&&L.alternate===null&&t(c,R),d=o(L,d,k),x===null?S=L:x.sibling=L,x=L,R=$}if(k===h.length)return n(c,R),le&&vn(c,k),S;if(R===null){for(;kk?($=R,R=null):$=R.sibling;var b=m(c,R,L.value,w);if(b===null){R===null&&(R=$);break}e&&R&&b.alternate===null&&t(c,R),d=o(b,d,k),x===null?S=b:x.sibling=b,x=b,R=$}if(L.done)return n(c,R),le&&vn(c,k),S;if(R===null){for(;!L.done;k++,L=h.next())L=f(c,L.value,w),L!==null&&(d=o(L,d,k),x===null?S=L:x.sibling=L,x=L);return le&&vn(c,k),S}for(R=r(c,R);!L.done;k++,L=h.next())L=g(R,c,k,L.value,w),L!==null&&(e&&L.alternate!==null&&R.delete(L.key===null?k:L.key),d=o(L,d,k),x===null?S=L:x.sibling=L,x=L);return e&&R.forEach(function(q){return t(c,q)}),le&&vn(c,k),S}function P(c,d,h,w){if(typeof h=="object"&&h!==null&&h.type===Vn&&h.key===null&&(h=h.props.children),typeof h=="object"&&h!==null){switch(h.$$typeof){case Pi:e:{for(var S=h.key,x=d;x!==null;){if(x.key===S){if(S=h.type,S===Vn){if(x.tag===7){n(c,x.sibling),d=i(x,h.props.children),d.return=c,c=d;break e}}else if(x.elementType===S||typeof S=="object"&&S!==null&&S.$$typeof===Ht&&Vu(S)===x.type){n(c,x.sibling),d=i(x,h.props),d.ref=Or(c,x,h),d.return=c,c=d;break e}n(c,x);break}else t(c,x);x=x.sibling}h.type===Vn?(d=Pn(h.props.children,c.mode,w,h.key),d.return=c,c=d):(w=no(h.type,h.key,h.props,null,c.mode,w),w.ref=Or(c,d,h),w.return=c,c=w)}return l(c);case $n:e:{for(x=h.key;d!==null;){if(d.key===x)if(d.tag===4&&d.stateNode.containerInfo===h.containerInfo&&d.stateNode.implementation===h.implementation){n(c,d.sibling),d=i(d,h.children||[]),d.return=c,c=d;break e}else{n(c,d);break}else t(c,d);d=d.sibling}d=Nl(h,c.mode,w),d.return=c,c=d}return l(c);case Ht:return x=h._init,P(c,d,x(h._payload),w)}if(zr(h))return y(c,d,h,w);if(Er(h))return _(c,d,h,w);ji(c,h)}return typeof h=="string"&&h!==""||typeof h=="number"?(h=""+h,d!==null&&d.tag===6?(n(c,d.sibling),d=i(d,h),d.return=c,c=d):(n(c,d),d=Ll(h,c.mode,w),d.return=c,c=d),l(c)):n(c,d)}return P}var ur=of(!0),lf=of(!1),_i={},Rt=fn(_i),li=fn(_i),si=fn(_i);function Cn(e){if(e===_i)throw Error(O(174));return e}function Pa(e,t){switch(te(si,t),te(li,e),te(Rt,_i),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:rs(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=rs(t,e)}oe(Rt),te(Rt,t)}function cr(){oe(Rt),oe(li),oe(si)}function sf(e){Cn(si.current);var t=Cn(Rt.current),n=rs(t,e.type);t!==n&&(te(li,e),te(Rt,n))}function xa(e){li.current===e&&(oe(Rt),oe(li))}var ae=fn(0);function ko(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Pl=[];function Ia(){for(var e=0;en?n:4,e(!0);var r=xl.transition;xl.transition={};try{e(!1),t()}finally{ee=n,xl.transition=r}}function Cf(){return ct().memoizedState}function rg(e,t,n){var r=on(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Ef(e))Pf(t,n);else if(n=ef(e,t,n,r),n!==null){var i=We();_t(n,e,r,i),xf(n,t,r)}}function ig(e,t,n){var r=on(e),i={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Ef(e))Pf(t,i);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var l=t.lastRenderedState,s=o(l,n);if(i.hasEagerState=!0,i.eagerState=s,wt(s,l)){var a=t.interleaved;a===null?(i.next=i,Ca(t)):(i.next=a.next,a.next=i),t.interleaved=i;return}}catch{}finally{}n=ef(e,t,i,r),n!==null&&(i=We(),_t(n,e,r,i),xf(n,t,r))}}function Ef(e){var t=e.alternate;return e===ue||t!==null&&t===ue}function Pf(e,t){$r=So=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function xf(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,ua(e,n)}}var Co={readContext:ut,useCallback:ze,useContext:ze,useEffect:ze,useImperativeHandle:ze,useInsertionEffect:ze,useLayoutEffect:ze,useMemo:ze,useReducer:ze,useRef:ze,useState:ze,useDebugValue:ze,useDeferredValue:ze,useTransition:ze,useMutableSource:ze,useSyncExternalStore:ze,useId:ze,unstable_isNewReconciler:!1},og={readContext:ut,useCallback:function(e,t){return Ct().memoizedState=[e,t===void 0?null:t],e},useContext:ut,useEffect:bu,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,qi(4194308,4,yf.bind(null,t,e),n)},useLayoutEffect:function(e,t){return qi(4194308,4,e,t)},useInsertionEffect:function(e,t){return qi(4,2,e,t)},useMemo:function(e,t){var n=Ct();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Ct();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=rg.bind(null,ue,e),[r.memoizedState,e]},useRef:function(e){var t=Ct();return e={current:e},t.memoizedState=e},useState:Hu,useDebugValue:Na,useDeferredValue:function(e){return Ct().memoizedState=e},useTransition:function(){var e=Hu(!1),t=e[0];return e=ng.bind(null,e[1]),Ct().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=ue,i=Ct();if(le){if(n===void 0)throw Error(O(407));n=n()}else{if(n=t(),Oe===null)throw Error(O(349));Rn&30||cf(r,t,n)}i.memoizedState=n;var o={value:n,getSnapshot:t};return i.queue=o,bu(ff.bind(null,r,o,e),[e]),r.flags|=2048,ci(9,df.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=Ct(),t=Oe.identifierPrefix;if(le){var n=zt,r=Ut;n=(r&~(1<<32-yt(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=ai++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=l.createElement(n,{is:r.is}):(e=l.createElement(n),n==="select"&&(l=e,r.multiple?l.multiple=!0:r.size&&(l.size=r.size))):e=l.createElementNS(e,n),e[Pt]=t,e[oi]=r,Mf(e,t,!1,!1),t.stateNode=e;e:{switch(l=os(n,r),n){case"dialog":ie("cancel",e),ie("close",e),i=r;break;case"iframe":case"object":case"embed":ie("load",e),i=r;break;case"video":case"audio":for(i=0;ifr&&(t.flags|=128,r=!0,Tr(o,!1),t.lanes=4194304)}else{if(!r)if(e=ko(l),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Tr(o,!0),o.tail===null&&o.tailMode==="hidden"&&!l.alternate&&!le)return Me(t),null}else 2*ve()-o.renderingStartTime>fr&&n!==1073741824&&(t.flags|=128,r=!0,Tr(o,!1),t.lanes=4194304);o.isBackwards?(l.sibling=t.child,t.child=l):(n=o.last,n!==null?n.sibling=l:t.child=l,o.last=l)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=ve(),t.sibling=null,n=ae.current,te(ae,r?n&1|2:n&1),t):(Me(t),null);case 22:case 23:return Ba(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?Xe&1073741824&&(Me(t),t.subtreeFlags&6&&(t.flags|=8192)):Me(t),null;case 24:return null;case 25:return null}throw Error(O(156,t.tag))}function pg(e,t){switch(ya(t),t.tag){case 1:return Ge(t.type)&&ho(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return cr(),oe(Qe),oe(Ae),Ia(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return xa(t),null;case 13:if(oe(ae),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(O(340));ar()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return oe(ae),null;case 4:return cr(),null;case 10:return Sa(t.type._context),null;case 22:case 23:return Ba(),null;case 24:return null;default:return null}}var Bi=!1,je=!1,hg=typeof WeakSet=="function"?WeakSet:Set,U=null;function qn(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){pe(e,t,r)}else n.current=null}function Ns(e,t,n){try{n()}catch(r){pe(e,t,r)}}var ec=!1;function mg(e,t){if(ms=uo,e=Fd(),ga(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var i=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var l=0,s=-1,a=-1,u=0,p=0,f=e,m=null;t:for(;;){for(var g;f!==n||i!==0&&f.nodeType!==3||(s=l+i),f!==o||r!==0&&f.nodeType!==3||(a=l+r),f.nodeType===3&&(l+=f.nodeValue.length),(g=f.firstChild)!==null;)m=f,f=g;for(;;){if(f===e)break t;if(m===n&&++u===i&&(s=l),m===o&&++p===r&&(a=l),(g=f.nextSibling)!==null)break;f=m,m=f.parentNode}f=g}n=s===-1||a===-1?null:{start:s,end:a}}else n=null}n=n||{start:0,end:0}}else n=null;for(gs={focusedElem:e,selectionRange:n},uo=!1,U=t;U!==null;)if(t=U,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,U=e;else for(;U!==null;){t=U;try{var y=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(y!==null){var _=y.memoizedProps,P=y.memoizedState,c=t.stateNode,d=c.getSnapshotBeforeUpdate(t.elementType===t.type?_:mt(t.type,_),P);c.__reactInternalSnapshotBeforeUpdate=d}break;case 3:var h=t.stateNode.containerInfo;h.nodeType===1?h.textContent="":h.nodeType===9&&h.documentElement&&h.removeChild(h.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(O(163))}}catch(w){pe(t,t.return,w)}if(e=t.sibling,e!==null){e.return=t.return,U=e;break}U=t.return}return y=ec,ec=!1,y}function Vr(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var i=r=r.next;do{if((i.tag&e)===e){var o=i.destroy;i.destroy=void 0,o!==void 0&&Ns(t,n,o)}i=i.next}while(i!==r)}}function $o(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Us(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function Bf(e){var t=e.alternate;t!==null&&(e.alternate=null,Bf(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Pt],delete t[oi],delete t[_s],delete t[Xm],delete t[qm])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Df(e){return e.tag===5||e.tag===3||e.tag===4}function tc(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Df(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function zs(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=po));else if(r!==4&&(e=e.child,e!==null))for(zs(e,t,n),e=e.sibling;e!==null;)zs(e,t,n),e=e.sibling}function Ms(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Ms(e,t,n),e=e.sibling;e!==null;)Ms(e,t,n),e=e.sibling}var Te=null,gt=!1;function Vt(e,t,n){for(n=n.child;n!==null;)Ff(e,t,n),n=n.sibling}function Ff(e,t,n){if(It&&typeof It.onCommitFiberUnmount=="function")try{It.onCommitFiberUnmount(zo,n)}catch{}switch(n.tag){case 5:je||qn(n,t);case 6:var r=Te,i=gt;Te=null,Vt(e,t,n),Te=r,gt=i,Te!==null&&(gt?(e=Te,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Te.removeChild(n.stateNode));break;case 18:Te!==null&&(gt?(e=Te,n=n.stateNode,e.nodeType===8?Cl(e.parentNode,n):e.nodeType===1&&Cl(e,n),ei(e)):Cl(Te,n.stateNode));break;case 4:r=Te,i=gt,Te=n.stateNode.containerInfo,gt=!0,Vt(e,t,n),Te=r,gt=i;break;case 0:case 11:case 14:case 15:if(!je&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){i=r=r.next;do{var o=i,l=o.destroy;o=o.tag,l!==void 0&&(o&2||o&4)&&Ns(n,t,l),i=i.next}while(i!==r)}Vt(e,t,n);break;case 1:if(!je&&(qn(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(s){pe(n,t,s)}Vt(e,t,n);break;case 21:Vt(e,t,n);break;case 22:n.mode&1?(je=(r=je)||n.memoizedState!==null,Vt(e,t,n),je=r):Vt(e,t,n);break;default:Vt(e,t,n)}}function nc(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new hg),t.forEach(function(r){var i=Eg.bind(null,e,r);n.has(r)||(n.add(r),r.then(i,i))})}}function pt(e,t){var n=t.deletions;if(n!==null)for(var r=0;ri&&(i=l),r&=~o}if(r=i,r=ve()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*vg(r/1960))-r,10e?16:e,Yt===null)var r=!1;else{if(e=Yt,Yt=null,xo=0,J&6)throw Error(O(331));var i=J;for(J|=4,U=e.current;U!==null;){var o=U,l=o.child;if(U.flags&16){var s=o.deletions;if(s!==null){for(var a=0;ave()-ja?En(e,0):Ma|=n),Ye(e,t)}function Gf(e,t){t===0&&(e.mode&1?(t=Oi,Oi<<=1,!(Oi&130023424)&&(Oi=4194304)):t=1);var n=We();e=Dt(e,t),e!==null&&(gi(e,t,n),Ye(e,n))}function Cg(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Gf(e,n)}function Eg(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(O(314))}r!==null&&r.delete(t),Gf(e,n)}var Yf;Yf=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||Qe.current)Ke=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return Ke=!1,dg(e,t,n);Ke=!!(e.flags&131072)}else Ke=!1,le&&t.flags&1048576&&Xd(t,vo,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Zi(e,t),e=t.pendingProps;var i=sr(t,Ae.current);ir(t,n),i=Oa(null,t,r,e,i,n);var o=Ta();return t.flags|=1,typeof i=="object"&&i!==null&&typeof i.render=="function"&&i.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Ge(r)?(o=!0,mo(t)):o=!1,t.memoizedState=i.state!==null&&i.state!==void 0?i.state:null,Ea(t),i.updater=Fo,t.stateNode=i,i._reactInternals=t,Ps(t,r,e,n),t=Rs(null,t,r,!0,o,n)):(t.tag=0,le&&o&&va(t),Be(null,t,i,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Zi(e,t),e=t.pendingProps,i=r._init,r=i(r._payload),t.type=r,i=t.tag=xg(r),e=mt(r,e),i){case 0:t=Is(null,t,r,e,n);break e;case 1:t=Xu(null,t,r,e,n);break e;case 11:t=Yu(null,t,r,e,n);break e;case 14:t=Ju(null,t,r,mt(r.type,e),n);break e}throw Error(O(306,r,""))}return t;case 0:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:mt(r,i),Is(e,t,r,i,n);case 1:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:mt(r,i),Xu(e,t,r,i,n);case 3:e:{if(Nf(t),e===null)throw Error(O(387));r=t.pendingProps,o=t.memoizedState,i=o.element,tf(e,t),wo(t,r,null,n);var l=t.memoizedState;if(r=l.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:l.cache,pendingSuspenseBoundaries:l.pendingSuspenseBoundaries,transitions:l.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){i=dr(Error(O(423)),t),t=qu(e,t,r,n,i);break e}else if(r!==i){i=dr(Error(O(424)),t),t=qu(e,t,r,n,i);break e}else for(qe=tn(t.stateNode.containerInfo.firstChild),Ze=t,le=!0,vt=null,n=lf(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(ar(),r===i){t=Ft(e,t,n);break e}Be(e,t,r,n)}t=t.child}return t;case 5:return sf(t),e===null&&Ss(t),r=t.type,i=t.pendingProps,o=e!==null?e.memoizedProps:null,l=i.children,vs(r,i)?l=null:o!==null&&vs(r,o)&&(t.flags|=32),Lf(e,t),Be(e,t,l,n),t.child;case 6:return e===null&&Ss(t),null;case 13:return Uf(e,t,n);case 4:return Pa(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=ur(t,null,r,n):Be(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:mt(r,i),Yu(e,t,r,i,n);case 7:return Be(e,t,t.pendingProps,n),t.child;case 8:return Be(e,t,t.pendingProps.children,n),t.child;case 12:return Be(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,i=t.pendingProps,o=t.memoizedProps,l=i.value,te(yo,r._currentValue),r._currentValue=l,o!==null)if(wt(o.value,l)){if(o.children===i.children&&!Qe.current){t=Ft(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var s=o.dependencies;if(s!==null){l=o.child;for(var a=s.firstContext;a!==null;){if(a.context===r){if(o.tag===1){a=Mt(-1,n&-n),a.tag=2;var u=o.updateQueue;if(u!==null){u=u.shared;var p=u.pending;p===null?a.next=a:(a.next=p.next,p.next=a),u.pending=a}}o.lanes|=n,a=o.alternate,a!==null&&(a.lanes|=n),Cs(o.return,n,t),s.lanes|=n;break}a=a.next}}else if(o.tag===10)l=o.type===t.type?null:o.child;else if(o.tag===18){if(l=o.return,l===null)throw Error(O(341));l.lanes|=n,s=l.alternate,s!==null&&(s.lanes|=n),Cs(l,n,t),l=o.sibling}else l=o.child;if(l!==null)l.return=o;else for(l=o;l!==null;){if(l===t){l=null;break}if(o=l.sibling,o!==null){o.return=l.return,l=o;break}l=l.return}o=l}Be(e,t,i.children,n),t=t.child}return t;case 9:return i=t.type,r=t.pendingProps.children,ir(t,n),i=ut(i),r=r(i),t.flags|=1,Be(e,t,r,n),t.child;case 14:return r=t.type,i=mt(r,t.pendingProps),i=mt(r.type,i),Ju(e,t,r,i,n);case 15:return Of(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,i=t.pendingProps,i=t.elementType===r?i:mt(r,i),Zi(e,t),t.tag=1,Ge(r)?(e=!0,mo(t)):e=!1,ir(t,n),rf(t,r,i),Ps(t,r,i,n),Rs(null,t,r,!0,e,n);case 19:return zf(e,t,n);case 22:return Tf(e,t,n)}throw Error(O(156,t.tag))};function Jf(e,t){return kd(e,t)}function Pg(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function st(e,t,n,r){return new Pg(e,t,n,r)}function Fa(e){return e=e.prototype,!(!e||!e.isReactComponent)}function xg(e){if(typeof e=="function")return Fa(e)?1:0;if(e!=null){if(e=e.$$typeof,e===oa)return 11;if(e===la)return 14}return 2}function ln(e,t){var n=e.alternate;return n===null?(n=st(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function no(e,t,n,r,i,o){var l=2;if(r=e,typeof e=="function")Fa(e)&&(l=1);else if(typeof e=="string")l=5;else e:switch(e){case Vn:return Pn(n.children,i,o,t);case ia:l=8,i|=8;break;case Yl:return e=st(12,n,t,i|2),e.elementType=Yl,e.lanes=o,e;case Jl:return e=st(13,n,t,i),e.elementType=Jl,e.lanes=o,e;case Xl:return e=st(19,n,t,i),e.elementType=Xl,e.lanes=o,e;case id:return Ho(n,i,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case nd:l=10;break e;case rd:l=9;break e;case oa:l=11;break e;case la:l=14;break e;case Ht:l=16,r=null;break e}throw Error(O(130,e==null?e:typeof e,""))}return t=st(l,n,t,i),t.elementType=e,t.type=r,t.lanes=o,t}function Pn(e,t,n,r){return e=st(7,e,r,t),e.lanes=n,e}function Ho(e,t,n,r){return e=st(22,e,r,t),e.elementType=id,e.lanes=n,e.stateNode={isHidden:!1},e}function Ll(e,t,n){return e=st(6,e,null,t),e.lanes=n,e}function Nl(e,t,n){return t=st(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Ig(e,t,n,r,i){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=fl(0),this.expirationTimes=fl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=fl(0),this.identifierPrefix=r,this.onRecoverableError=i,this.mutableSourceEagerHydrationData=null}function Wa(e,t,n,r,i,o,l,s,a){return e=new Ig(e,t,n,s,a),t===1?(t=1,o===!0&&(t|=8)):t=0,o=st(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Ea(o),e}function Rg(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(ep)}catch(e){console.error(e)}}ep(),Xc.exports=tt;var tp=Xc.exports,cc=tp;Ql.createRoot=cc.createRoot,Ql.hydrateRoot=cc.hydrateRoot;/** + * @remix-run/router v1.21.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function fi(){return fi=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u")throw new Error(t)}function np(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function zg(){return Math.random().toString(36).substr(2,8)}function fc(e,t){return{usr:e.state,key:e.key,idx:t}}function Fs(e,t,n,r){return n===void 0&&(n=null),fi({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?vr(t):t,{state:n,key:t&&t.key||r||zg()})}function Oo(e){let{pathname:t="/",search:n="",hash:r=""}=e;return n&&n!=="?"&&(t+=n.charAt(0)==="?"?n:"?"+n),r&&r!=="#"&&(t+=r.charAt(0)==="#"?r:"#"+r),t}function vr(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function Mg(e,t,n,r){r===void 0&&(r={});let{window:i=document.defaultView,v5Compat:o=!1}=r,l=i.history,s=Jt.Pop,a=null,u=p();u==null&&(u=0,l.replaceState(fi({},l.state,{idx:u}),""));function p(){return(l.state||{idx:null}).idx}function f(){s=Jt.Pop;let P=p(),c=P==null?null:P-u;u=P,a&&a({action:s,location:_.location,delta:c})}function m(P,c){s=Jt.Push;let d=Fs(_.location,P,c);n&&n(d,P),u=p()+1;let h=fc(d,u),w=_.createHref(d);try{l.pushState(h,"",w)}catch(S){if(S instanceof DOMException&&S.name==="DataCloneError")throw S;i.location.assign(w)}o&&a&&a({action:s,location:_.location,delta:1})}function g(P,c){s=Jt.Replace;let d=Fs(_.location,P,c);n&&n(d,P),u=p();let h=fc(d,u),w=_.createHref(d);l.replaceState(h,"",w),o&&a&&a({action:s,location:_.location,delta:0})}function y(P){let c=i.location.origin!=="null"?i.location.origin:i.location.href,d=typeof P=="string"?P:Oo(P);return d=d.replace(/ $/,"%20"),we(c,"No window.location.(origin|href) available to create URL for href: "+d),new URL(d,c)}let _={get action(){return s},get location(){return e(i,l)},listen(P){if(a)throw new Error("A history only accepts one active listener");return i.addEventListener(dc,f),a=P,()=>{i.removeEventListener(dc,f),a=null}},createHref(P){return t(i,P)},createURL:y,encodeLocation(P){let c=y(P);return{pathname:c.pathname,search:c.search,hash:c.hash}},push:m,replace:g,go(P){return l.go(P)}};return _}var pc;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(pc||(pc={}));function jg(e,t,n){return n===void 0&&(n="/"),Ag(e,t,n,!1)}function Ag(e,t,n,r){let i=typeof t=="string"?vr(t):t,o=ba(i.pathname||"/",n);if(o==null)return null;let l=rp(e);Bg(l);let s=null;for(let a=0;s==null&&a{let a={relativePath:s===void 0?o.path||"":s,caseSensitive:o.caseSensitive===!0,childrenIndex:l,route:o};a.relativePath.startsWith("/")&&(we(a.relativePath.startsWith(r),'Absolute route path "'+a.relativePath+'" nested under path '+('"'+r+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),a.relativePath=a.relativePath.slice(r.length));let u=sn([r,a.relativePath]),p=n.concat(a);o.children&&o.children.length>0&&(we(o.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+u+'".')),rp(o.children,t,p,u)),!(o.path==null&&!o.index)&&t.push({path:u,score:bg(u,o.index),routesMeta:p})};return e.forEach((o,l)=>{var s;if(o.path===""||!((s=o.path)!=null&&s.includes("?")))i(o,l);else for(let a of ip(o.path))i(o,l,a)}),t}function ip(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,i=n.endsWith("?"),o=n.replace(/\?$/,"");if(r.length===0)return i?[o,""]:[o];let l=ip(r.join("/")),s=[];return s.push(...l.map(a=>a===""?o:[o,a].join("/"))),i&&s.push(...l),s.map(a=>e.startsWith("/")&&a===""?"/":a)}function Bg(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:Kg(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}const Dg=/^:[\w-]+$/,Fg=3,Wg=2,$g=1,Vg=10,Hg=-2,hc=e=>e==="*";function bg(e,t){let n=e.split("/"),r=n.length;return n.some(hc)&&(r+=Hg),t&&(r+=Wg),n.filter(i=>!hc(i)).reduce((i,o)=>i+(Dg.test(o)?Fg:o===""?$g:Vg),r)}function Kg(e,t){return e.length===t.length&&e.slice(0,-1).every((r,i)=>r===t[i])?e[e.length-1]-t[t.length-1]:0}function Qg(e,t,n){n===void 0&&(n=!1);let{routesMeta:r}=e,i={},o="/",l=[];for(let s=0;s{let{paramName:m,isOptional:g}=p;if(m==="*"){let _=s[f]||"";l=o.slice(0,o.length-_.length).replace(/(.)\/+$/,"$1")}const y=s[f];return g&&!y?u[m]=void 0:u[m]=(y||"").replace(/%2F/g,"/"),u},{}),pathname:o,pathnameBase:l,pattern:e}}function Gg(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0),np(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let r=[],i="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(l,s,a)=>(r.push({paramName:s,isOptional:a!=null}),a?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(r.push({paramName:"*"}),i+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?i+="\\/*$":e!==""&&e!=="/"&&(i+="(?:(?=\\/|$))"),[new RegExp(i,t?void 0:"i"),r]}function Yg(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return np(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function ba(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}function Jg(e,t){t===void 0&&(t="/");let{pathname:n,search:r="",hash:i=""}=typeof e=="string"?vr(e):e;return{pathname:n?n.startsWith("/")?n:Xg(n,t):t,search:ev(r),hash:tv(i)}}function Xg(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(i=>{i===".."?n.length>1&&n.pop():i!=="."&&n.push(i)}),n.length>1?n.join("/"):"/"}function Ul(e,t,n,r){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(r)+"]. Please separate it out to the ")+("`to."+n+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function qg(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function op(e,t){let n=qg(e);return t?n.map((r,i)=>i===n.length-1?r.pathname:r.pathnameBase):n.map(r=>r.pathnameBase)}function lp(e,t,n,r){r===void 0&&(r=!1);let i;typeof e=="string"?i=vr(e):(i=fi({},e),we(!i.pathname||!i.pathname.includes("?"),Ul("?","pathname","search",i)),we(!i.pathname||!i.pathname.includes("#"),Ul("#","pathname","hash",i)),we(!i.search||!i.search.includes("#"),Ul("#","search","hash",i)));let o=e===""||i.pathname==="",l=o?"/":i.pathname,s;if(l==null)s=n;else{let f=t.length-1;if(!r&&l.startsWith("..")){let m=l.split("/");for(;m[0]==="..";)m.shift(),f-=1;i.pathname=m.join("/")}s=f>=0?t[f]:"/"}let a=Jg(i,s),u=l&&l!=="/"&&l.endsWith("/"),p=(o||l===".")&&n.endsWith("/");return!a.pathname.endsWith("/")&&(u||p)&&(a.pathname+="/"),a}const sn=e=>e.join("/").replace(/\/\/+/g,"/"),Zg=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),ev=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,tv=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;function nv(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const sp=["post","put","patch","delete"];new Set(sp);const rv=["get",...sp];new Set(rv);/** + * React Router v6.28.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function pi(){return pi=Object.assign?Object.assign.bind():function(e){for(var t=1;t{s.current=!0}),v.useCallback(function(u,p){if(p===void 0&&(p={}),!s.current)return;if(typeof u=="number"){r.go(u);return}let f=lp(u,JSON.parse(l),o,p.relative==="path");e==null&&t!=="/"&&(f.pathname=f.pathname==="/"?t:sn([t,f.pathname])),(p.replace?r.replace:r.push)(f,p.state,p)},[t,r,l,o,e])}function sv(){let{matches:e}=v.useContext(hn),t=e[e.length-1];return t?t.params:{}}function cp(e,t){let{relative:n}=t===void 0?{}:t,{future:r}=v.useContext(zn),{matches:i}=v.useContext(hn),{pathname:o}=yr(),l=JSON.stringify(op(i,r.v7_relativeSplatPath));return v.useMemo(()=>lp(e,JSON.parse(l),o,n==="path"),[e,l,o,n])}function av(e,t){return uv(e,t)}function uv(e,t,n,r){wi()||we(!1);let{navigator:i}=v.useContext(zn),{matches:o}=v.useContext(hn),l=o[o.length-1],s=l?l.params:{};l&&l.pathname;let a=l?l.pathnameBase:"/";l&&l.route;let u=yr(),p;if(t){var f;let P=typeof t=="string"?vr(t):t;a==="/"||(f=P.pathname)!=null&&f.startsWith(a)||we(!1),p=P}else p=u;let m=p.pathname||"/",g=m;if(a!=="/"){let P=a.replace(/^\//,"").split("/");g="/"+m.replace(/^\//,"").split("/").slice(P.length).join("/")}let y=jg(e,{pathname:g}),_=hv(y&&y.map(P=>Object.assign({},P,{params:Object.assign({},s,P.params),pathname:sn([a,i.encodeLocation?i.encodeLocation(P.pathname).pathname:P.pathname]),pathnameBase:P.pathnameBase==="/"?a:sn([a,i.encodeLocation?i.encodeLocation(P.pathnameBase).pathname:P.pathnameBase])})),o,n,r);return t&&_?v.createElement(Yo.Provider,{value:{location:pi({pathname:"/",search:"",hash:"",state:null,key:"default"},p),navigationType:Jt.Pop}},_):_}function cv(){let e=yv(),t=nv(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,i={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"},o=null;return v.createElement(v.Fragment,null,v.createElement("h2",null,"Unexpected Application Error!"),v.createElement("h3",{style:{fontStyle:"italic"}},t),n?v.createElement("pre",{style:i},n):null,o)}const dv=v.createElement(cv,null);class fv extends v.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error!==void 0?v.createElement(hn.Provider,{value:this.props.routeContext},v.createElement(ap.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function pv(e){let{routeContext:t,match:n,children:r}=e,i=v.useContext(Ka);return i&&i.static&&i.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(i.staticContext._deepestRenderedBoundaryId=n.route.id),v.createElement(hn.Provider,{value:t},r)}function hv(e,t,n,r){var i;if(t===void 0&&(t=[]),n===void 0&&(n=null),r===void 0&&(r=null),e==null){var o;if(!n)return null;if(n.errors)e=n.matches;else if((o=r)!=null&&o.v7_partialHydration&&t.length===0&&!n.initialized&&n.matches.length>0)e=n.matches;else return null}let l=e,s=(i=n)==null?void 0:i.errors;if(s!=null){let p=l.findIndex(f=>f.route.id&&(s==null?void 0:s[f.route.id])!==void 0);p>=0||we(!1),l=l.slice(0,Math.min(l.length,p+1))}let a=!1,u=-1;if(n&&r&&r.v7_partialHydration)for(let p=0;p=0?l=l.slice(0,u+1):l=[l[0]];break}}}return l.reduceRight((p,f,m)=>{let g,y=!1,_=null,P=null;n&&(g=s&&f.route.id?s[f.route.id]:void 0,_=f.route.errorElement||dv,a&&(u<0&&m===0?(wv("route-fallback",!1),y=!0,P=null):u===m&&(y=!0,P=f.route.hydrateFallbackElement||null)));let c=t.concat(l.slice(0,m+1)),d=()=>{let h;return g?h=_:y?h=P:f.route.Component?h=v.createElement(f.route.Component,null):f.route.element?h=f.route.element:h=p,v.createElement(pv,{match:f,routeContext:{outlet:p,matches:c,isDataRoute:n!=null},children:h})};return n&&(f.route.ErrorBoundary||f.route.errorElement||m===0)?v.createElement(fv,{location:n.location,revalidation:n.revalidation,component:_,error:g,children:d(),routeContext:{outlet:null,matches:c,isDataRoute:!0}}):d()},null)}var dp=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(dp||{}),To=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(To||{});function mv(e){let t=v.useContext(Ka);return t||we(!1),t}function gv(e){let t=v.useContext(iv);return t||we(!1),t}function vv(e){let t=v.useContext(hn);return t||we(!1),t}function fp(e){let t=vv(),n=t.matches[t.matches.length-1];return n.route.id||we(!1),n.route.id}function yv(){var e;let t=v.useContext(ap),n=gv(To.UseRouteError),r=fp(To.UseRouteError);return t!==void 0?t:(e=n.errors)==null?void 0:e[r]}function _v(){let{router:e}=mv(dp.UseNavigateStable),t=fp(To.UseNavigateStable),n=v.useRef(!1);return up(()=>{n.current=!0}),v.useCallback(function(i,o){o===void 0&&(o={}),n.current&&(typeof i=="number"?e.navigate(i):e.navigate(i,pi({fromRouteId:t},o)))},[e,t])}const gc={};function wv(e,t,n){!t&&!gc[e]&&(gc[e]=!0)}const vc={};function kv(e,t){vc[t]||(vc[t]=!0,console.warn(t))}const jn=(e,t,n)=>kv(e,"⚠️ React Router Future Flag Warning: "+t+". "+("You can use the `"+e+"` future flag to opt-in early. ")+("For more information, see "+n+"."));function Sv(e,t){e!=null&&e.v7_startTransition||jn("v7_startTransition","React Router will begin wrapping state updates in `React.startTransition` in v7","https://reactrouter.com/v6/upgrading/future#v7_starttransition"),!(e!=null&&e.v7_relativeSplatPath)&&(!t||!t.v7_relativeSplatPath)&&jn("v7_relativeSplatPath","Relative route resolution within Splat routes is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath"),t&&(t.v7_fetcherPersist||jn("v7_fetcherPersist","The persistence behavior of fetchers is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist"),t.v7_normalizeFormMethod||jn("v7_normalizeFormMethod","Casing of `formMethod` fields is being normalized to uppercase in v7","https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod"),t.v7_partialHydration||jn("v7_partialHydration","`RouterProvider` hydration behavior is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_partialhydration"),t.v7_skipActionErrorRevalidation||jn("v7_skipActionErrorRevalidation","The revalidation behavior after 4xx/5xx `action` responses is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation"))}function Bn(e){we(!1)}function Cv(e){let{basename:t="/",children:n=null,location:r,navigationType:i=Jt.Pop,navigator:o,static:l=!1,future:s}=e;wi()&&we(!1);let a=t.replace(/^\/*/,"/"),u=v.useMemo(()=>({basename:a,navigator:o,static:l,future:pi({v7_relativeSplatPath:!1},s)}),[a,s,o,l]);typeof r=="string"&&(r=vr(r));let{pathname:p="/",search:f="",hash:m="",state:g=null,key:y="default"}=r,_=v.useMemo(()=>{let P=ba(p,a);return P==null?null:{location:{pathname:P,search:f,hash:m,state:g,key:y},navigationType:i}},[a,p,f,m,g,y,i]);return _==null?null:v.createElement(zn.Provider,{value:u},v.createElement(Yo.Provider,{children:n,value:_}))}function Ev(e){let{children:t,location:n}=e;return av(Ws(t),n)}new Promise(()=>{});function Ws(e,t){t===void 0&&(t=[]);let n=[];return v.Children.forEach(e,(r,i)=>{if(!v.isValidElement(r))return;let o=[...t,i];if(r.type===v.Fragment){n.push.apply(n,Ws(r.props.children,o));return}r.type!==Bn&&we(!1),!r.props.index||!r.props.children||we(!1);let l={id:r.props.id||o.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,loader:r.props.loader,action:r.props.action,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(l.children=Ws(r.props.children,o)),n.push(l)}),n}/** + * React Router DOM v6.28.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */function $s(){return $s=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&(n[i]=e[i]);return n}function xv(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function Iv(e,t){return e.button===0&&(!t||t==="_self")&&!xv(e)}const Rv=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],Ov="6";try{window.__reactRouterVersion=Ov}catch{}const Tv="startTransition",yc=Sh[Tv];function Lv(e){let{basename:t,children:n,future:r,window:i}=e,o=v.useRef();o.current==null&&(o.current=Ug({window:i,v5Compat:!0}));let l=o.current,[s,a]=v.useState({action:l.action,location:l.location}),{v7_startTransition:u}=r||{},p=v.useCallback(f=>{u&&yc?yc(()=>a(f)):a(f)},[a,u]);return v.useLayoutEffect(()=>l.listen(p),[l,p]),v.useEffect(()=>Sv(r),[r]),v.createElement(Cv,{basename:t,children:n,location:s.location,navigationType:s.action,navigator:l,future:r})}const Nv=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",Uv=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Et=v.forwardRef(function(t,n){let{onClick:r,relative:i,reloadDocument:o,replace:l,state:s,target:a,to:u,preventScrollReset:p,viewTransition:f}=t,m=Pv(t,Rv),{basename:g}=v.useContext(zn),y,_=!1;if(typeof u=="string"&&Uv.test(u)&&(y=u,Nv))try{let h=new URL(window.location.href),w=u.startsWith("//")?new URL(h.protocol+u):new URL(u),S=ba(w.pathname,g);w.origin===h.origin&&S!=null?u=S+w.search+w.hash:_=!0}catch{}let P=ov(u,{relative:i}),c=zv(u,{replace:l,state:s,target:a,preventScrollReset:p,relative:i,viewTransition:f});function d(h){r&&r(h),h.defaultPrevented||c(h)}return v.createElement("a",$s({},m,{href:y||P,onClick:_||o?r:d,ref:n,target:a}))});var _c;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(_c||(_c={}));var wc;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(wc||(wc={}));function zv(e,t){let{target:n,replace:r,state:i,preventScrollReset:o,relative:l,viewTransition:s}=t===void 0?{}:t,a=Qa(),u=yr(),p=cp(e,{relative:l});return v.useCallback(f=>{if(Iv(f,n)){f.preventDefault();let m=r!==void 0?r:Oo(u)===Oo(p);a(e,{replace:m,state:i,preventScrollReset:o,relative:l,viewTransition:s})}},[u,a,p,r,i,n,e,o,l,s])}const kc=[{character:"ㅂ",roman_representation:"q"},{character:"ㅈ",roman_representation:"w"},{character:"ㄷ",roman_representation:"e"},{character:"ㄱ",roman_representation:"r"},{character:"ㅅ",roman_representation:"t"},{character:"ㅛ",roman_representation:"y"},{character:"ㅕ",roman_representation:"u"},{character:"ㅑ",roman_representation:"i"},{character:"ㅐ",roman_representation:"o"},{character:"ㅔ",roman_representation:"p"},{character:"ㅁ",roman_representation:"a"},{character:"ㄴ",roman_representation:"s"},{character:"ㅇ",roman_representation:"d"},{character:"ㄹ",roman_representation:"f"},{character:"ㅎ",roman_representation:"g"},{character:"ㅗ",roman_representation:"h"},{character:"ㅓ",roman_representation:"j"},{character:"ㅏ",roman_representation:"k"},{character:"ㅣ",roman_representation:"l"},{character:"ㅋ",roman_representation:"z"},{character:"ㅌ",roman_representation:"x"},{character:"ㅊ",roman_representation:"c"},{character:"ㅍ",roman_representation:"v"},{character:"ㅠ",roman_representation:"b"},{character:"ㅜ",roman_representation:"n"},{character:"ㅡ",roman_representation:"m"},{character:"ㅃ",roman_representation:"Q"},{character:"ㅉ",roman_representation:"W"},{character:"ㄸ",roman_representation:"E"},{character:"ㄲ",roman_representation:"R"},{character:"ㅆ",roman_representation:"T"}],Mv="keyboard-module__row___DsKB4",jv="keyboard-module__key___w07JY",Av="keyboard-module__special___287Fq",Bv="keyboard-module__shift___jLB8s",Dv="keyboard-module__caps___UwdzT",Fv="keyboard-module__enter___YHM7i",Wv="keyboard-module__control___gSoD3",$v="keyboard-module__cmd___vRvAa",Vv="keyboard-module__tab___Tz-Hr",Hv="keyboard-module__space___0tPUC",ge={"keyboard-container":"keyboard-module__keyboard-container___XO3Uw",row:Mv,key:jv,"key-active":"keyboard-module__key-active___GcbSL",special:Av,shift:Bv,caps:Dv,enter:Fv,control:Wv,cmd:$v,tab:Vv,space:Hv},bv=[["`","1","2","3","4","5","6","7","8","9","0","-","=","Delete"],["Tab","ㅂ","ㅈ","ㄷ","ㄱ","ㅅ","ㅛ","ㅕ","ㅑ","ㅐ","ㅔ","[","]","\\"],["CapsLock","ㅁ","ㄴ","ㅇ","ㄹ","ㅎ","ㅗ","ㅓ","ㅏ","ㅣ",";","'","Enter"],["Shift","ㅋ","ㅌ","ㅊ","ㅍ","ㅠ","ㅜ","ㅡ",",",".","/","Shift"],["Fn","Control","Alt","Cmd","Space","Cmd","Alt","Control"]],Kv=[["`","1","2","3","4","5","6","7","8","9","0","-","=","Delete"],["Tab","ㅃ","ㅉ","ㄸ","ㄲ","ㅆ","ㅛ","ㅕ","ㅑ","ㅐ","ㅔ","[","]","\\"],["CapsLock","ㅁ","ㄴ","ㅇ","ㄹ","ㅎ","ㅗ","ㅓ","ㅏ","ㅣ",";","'","Enter"],["Shift","ㅋ","ㅌ","ㅊ","ㅍ","ㅠ","ㅜ","ㅡ",",",".","/","Shift"],["Fn","Control","Alt","Cmd","Space","Cmd","Alt","Control"]],Qv={ㅂ:"q",ㅃ:"Q",ㅈ:"w",ㅉ:"W",ㄷ:"e",ㄸ:"E",ㄱ:"r",ㄲ:"R",ㅅ:"t",ㅆ:"T",ㅛ:"y",ㅕ:"u",ㅑ:"i",ㅐ:"o",ㅔ:"p",ㅁ:"a",ㄴ:"s",ㅇ:"d",ㄹ:"f",ㅎ:"g",ㅗ:"h",ㅓ:"j",ㅏ:"k",ㅣ:"l",ㅋ:"z",ㅌ:"x",ㅊ:"c",ㅍ:"v",ㅠ:"b",ㅜ:"n",ㅡ:"m"},pp=({onClick:e})=>{const[t,n]=v.useState(""),[r,i]=v.useState(null),[o,l]=v.useState(!1),[s,a]=v.useState(null),u=f=>{e&&e(f);const m=Qv[f]||f;i(m),f==="Delete"?n(g=>g.slice(0,-1)):f==="Shift"||f==="CapsLock"?l(g=>!g):n(g=>g+f)},p=f=>{let m=ge.key;return f===r&&(m+=` ${ge.active}`),f==="Space"?`${ge.key} ${ge.space}`:f==="Shift"?`${ge.key} ${ge.shift}`:f==="CapsLock"?`${ge.key} ${ge.caps}`:f==="Enter"?`${ge.key} ${ge.enter}`:f==="Control"?`${ge.key} ${ge.control}`:f==="Cmd"?`${ge.key} ${ge.cmd}`:f==="Tab"?`${ge.key} ${ge.tab}`:["Fn","Alt"].includes(f)?`${ge.key} ${ge.special}`:m};return D("div",{className:ge["keyboard-container"],children:[s&&E("div",{className:ge.error,children:s}),(o?Kv:bv).map((f,m)=>E("div",{className:ge.row,children:f.map((g,y)=>E("button",{onMouseDown:_=>{_.preventDefault(),a("Please use your physical keyboard keys."),setTimeout(()=>a(null),2e3)},onClick:()=>u(g),className:p(g),id:`keyboard-btn-${g}`,children:g},y))},m))]})},Gv="ProgressBar-module__progress___y2ih3",Yv="ProgressBar-module__grow___W-xiD",Sc={"progress-bar":"ProgressBar-module__progress-bar___otpZf",progress:Gv,grow:Yv},hp=({progress:e})=>E("div",{className:Sc["progress-bar"],"data-testid":"progress-bar",children:E("div",{className:Sc.progress,"data-testid":"progress-bar-inner",style:{width:`${e}%`}})}),Jv="card-module__card___-i0-g",Xv="card-module__correct___O3ahR",qv="card-module__incorrect___teMgK",Zv="card-module__character___XYiCX",ey="card-module__romanization___F0Dai",Nr={card:Jv,correct:Xv,incorrect:qv,character:Zv,romanization:ey},ty=({character:e,romanization:t,highlight:n,showHint:r})=>{const i=t.startsWith("Shift +")||t.toUpperCase()!==t?t:`Shift + ${t}`;return D("div",{className:`${Nr.card} ${n===!0?Nr.correct:n===!1?Nr.incorrect:""}`,"data-testid":n===!1?"feedback-incorrect":n===!0?"feedback-correct":"feedback-default",children:[E("div",{className:Nr.character,"data-testid":"card-character",children:e}),r&&D("div",{className:Nr.romanization,"data-testid":"card-romanization",children:["Press: ",i]})]})},ny="LearnPage-module__linkButtons___tC-Pl",ry="LearnPage-module__slider___Mu-AB",ht={"learn-page":"LearnPage-module__learn-page___j9TmO",linkButtons:ny,"card-container":"LearnPage-module__card-container___eUlYO","toggle-container":"LearnPage-module__toggle-container___TxWRS","toggle-label":"LearnPage-module__toggle-label___ceaz4",slider:ry,"slider-on":"LearnPage-module__slider-on___CS6Fd","slider-off":"LearnPage-module__slider-off___VOguV","slider-thumb":"LearnPage-module__slider-thumb___ui91J","timer-container":"LearnPage-module__timer-container___Au3CI","timer-text":"LearnPage-module__timer-text___YbkIv"},Cc={"results-page":"ResultsPage-module__results-page___I-hoW","reset-button":"ResultsPage-module__reset-button___F8-ZJ"},iy=({correctAttempts:e,incorrectAttempts:t,resetLesson:n,timeSpent:r})=>{const i=e+t,o=i>0?(e/i*100).toFixed(2):0,l=Math.floor(r/60),s=r%60;return D("div",{className:Cc["results-page"],children:[E("h1",{children:"Lesson Complete!"}),D("p",{"aria-label":"Total",children:["Total Keys Practiced: ",i]}),D("p",{"aria-label":"Correct",children:["Correct Keys: ",e]}),D("p",{"aria-label":"Incorrect",children:["Incorrect Keys: ",t]}),D("p",{"aria-label":"Accuracy",children:["Accuracy: ",o,"%"]}),D("p",{"aria-label":"Time Spent",children:["Time Spent: ",l,"m ",s,"s"]}),E("button",{onClick:n,className:Cc["reset-button"],"aria-label":"Try Again",children:"Try Again"})]})};var oy=Object.freeze({InvalidProxyUrlErrorMessage:"The proxyUrl passed to Clerk is invalid. The expected value for proxyUrl is an absolute URL or a relative path with a leading '/'. (key={{url}})",InvalidPublishableKeyErrorMessage:"The publishableKey passed to Clerk is invalid. You can get your Publishable key at https://dashboard.clerk.com/last-active?path=api-keys. (key={{key}})",MissingPublishableKeyErrorMessage:"Missing publishableKey. You can get your key at https://dashboard.clerk.com/last-active?path=api-keys.",MissingSecretKeyErrorMessage:"Missing secretKey. You can get your key at https://dashboard.clerk.com/last-active?path=api-keys.",MissingClerkProvider:"{{source}} can only be used within the component. Learn more: https://clerk.com/docs/components/clerk-provider"});function mp({packageName:e,customMessages:t}){let n=e;const r={...oy,...t};function i(o,l){if(!l)return`${n}: ${o}`;let s=o;const a=o.matchAll(/{{([a-zA-Z0-9-_]+)}}/g);for(const u of a){const p=(l[u[1]]||"").toString();s=s.replace(`{{${u[1]}}}`,p)}return`${n}: ${s}`}return{setPackageName({packageName:o}){return typeof o=="string"&&(n=o),this},setMessages({customMessages:o}){return Object.assign(r,o||{}),this},throwInvalidPublishableKeyError(o){throw new Error(i(r.InvalidPublishableKeyErrorMessage,o))},throwInvalidProxyUrl(o){throw new Error(i(r.InvalidProxyUrlErrorMessage,o))},throwMissingPublishableKeyError(){throw new Error(i(r.MissingPublishableKeyErrorMessage))},throwMissingSecretKeyError(){throw new Error(i(r.MissingSecretKeyErrorMessage))},throwMissingClerkProviderError(o){throw new Error(i(r.MissingClerkProvider,o))},throw(o){throw new Error(i(o))}}}var gp=Object.defineProperty,ly=Object.getOwnPropertyDescriptor,sy=Object.getOwnPropertyNames,ay=Object.prototype.hasOwnProperty,uy=(e,t)=>{for(var n in t)gp(e,n,{get:t[n],enumerable:!0})},Ec=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of sy(t))!ay.call(e,i)&&i!==n&&gp(e,i,{get:()=>t[i],enumerable:!(r=ly(t,i))||r.enumerable});return e},cy=(e,t,n)=>(Ec(e,t,"default"),n&&Ec(n,t,"default")),vp={exports:{}},yp={};/** + * @license React + * use-sync-external-store-shim.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var pr=v;function dy(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var fy=typeof Object.is=="function"?Object.is:dy,py=pr.useState,hy=pr.useEffect,my=pr.useLayoutEffect,gy=pr.useDebugValue;function vy(e,t){var n=t(),r=py({inst:{value:n,getSnapshot:t}}),i=r[0].inst,o=r[1];return my(function(){i.value=n,i.getSnapshot=t,zl(i)&&o({inst:i})},[e,n,t]),hy(function(){return zl(i)&&o({inst:i}),e(function(){zl(i)&&o({inst:i})})},[e]),gy(n),n}function zl(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!fy(e,n)}catch{return!0}}function yy(e,t){return t()}var _y=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?yy:vy;yp.useSyncExternalStore=pr.useSyncExternalStore!==void 0?pr.useSyncExternalStore:_y;vp.exports=yp;var Ga=vp.exports;const Xt=()=>{},ye=Xt(),Kr=Object,j=e=>e===ye,be=e=>typeof e=="function",Ot=(e,t)=>({...e,...t}),wy=e=>be(e.then),Wi=new WeakMap;let ky=0;const hi=e=>{const t=typeof e,n=e&&e.constructor,r=n==Date;let i,o;if(Kr(e)===e&&!r&&n!=RegExp){if(i=Wi.get(e),i)return i;if(i=++ky+"~",Wi.set(e,i),n==Array){for(i="@",o=0;oJo&&typeof window.requestAnimationFrame!=Ya,Nt=(e,t)=>{const n=lt.get(e);return[()=>!j(t)&&e.get(t)||Ml,r=>{if(!j(t)){const i=e.get(t);t in $i||($i[t]=i),n[5](t,Ot(i,r),i||Ml)}},n[6],()=>!j(t)&&t in $i?$i[t]:!j(t)&&e.get(t)||Ml]};let Hs=!0;const Cy=()=>Hs,[bs,Ks]=Jo&&window.addEventListener?[window.addEventListener.bind(window),window.removeEventListener.bind(window)]:[Xt,Xt],Ey=()=>{const e=Vs&&document.visibilityState;return j(e)||e!=="hidden"},Py=e=>(Vs&&document.addEventListener("visibilitychange",e),bs("focus",e),()=>{Vs&&document.removeEventListener("visibilitychange",e),Ks("focus",e)}),xy=e=>{const t=()=>{Hs=!0,e()},n=()=>{Hs=!1};return bs("online",t),bs("offline",n),()=>{Ks("online",t),Ks("offline",n)}},Iy={isOnline:Cy,isVisible:Ey},Ry={initFocus:Py,initReconnect:xy},Lo=!I.useId,Ln=!Jo||"Deno"in window,_p=e=>Sy()?window.requestAnimationFrame(e):setTimeout(e,1),an=Ln?v.useEffect:v.useLayoutEffect,jl=typeof navigator<"u"&&navigator.connection,Pc=!Ln&&jl&&(["slow-2g","2g"].includes(jl.effectiveType)||jl.saveData),Wt=e=>{if(be(e))try{e=e()}catch{e=""}const t=e;return e=typeof e=="string"?e:(Array.isArray(e)?e.length:e)?hi(e):"",[e,t]};let Oy=0;const No=()=>++Oy,wp=0,kp=1,Sp=2,Ty=3;var xt={__proto__:null,ERROR_REVALIDATE_EVENT:Ty,FOCUS_EVENT:wp,MUTATE_EVENT:Sp,RECONNECT_EVENT:kp};async function Ja(...e){const[t,n,r,i]=e,o=Ot({populateCache:!0,throwOnError:!0},typeof i=="boolean"?{revalidate:i}:i||{});let l=o.populateCache;const s=o.rollbackOnError;let a=o.optimisticData;const u=m=>typeof s=="function"?s(m):s!==!1,p=o.throwOnError;if(be(n)){const m=n,g=[],y=t.keys();for(const _ of y)!/^\$(inf|sub)\$/.test(_)&&m(t.get(_)._k)&&g.push(_);return Promise.all(g.map(f))}return f(n);async function f(m){const[g]=Wt(m);if(!g)return;const[y,_]=Nt(t,g),[P,c,d,h]=lt.get(t),w=()=>{const G=P[g];return(be(o.revalidate)?o.revalidate(y().data,m):o.revalidate!==!1)&&(delete d[g],delete h[g],G&&G[0])?G[0](Sp).then(()=>y().data):y().data};if(e.length<3)return w();let S=r,x;const R=No();c[g]=[R,0];const k=!j(a),$=y(),L=$.data,b=$._c,q=j(b)?L:b;if(k&&(a=be(a)?a(q,L):a,_({data:a,_c:q})),be(S))try{S=S(q)}catch(G){x=G}if(S&&wy(S))if(S=await S.catch(G=>{x=G}),R!==c[g][0]){if(x)throw x;return S}else x&&k&&u(x)&&(l=!0,_({data:q,_c:ye}));if(l&&!x)if(be(l)){const G=l(S,q);_({data:G,error:ye,_c:ye})}else _({data:S,error:ye,_c:ye});if(c[g][1]=No(),Promise.resolve(w()).then(()=>{_({_c:ye})}),x){if(p)throw x;return}return S}}const xc=(e,t)=>{for(const n in e)e[n][0]&&e[n][0](t)},Cp=(e,t)=>{if(!lt.has(e)){const n=Ot(Ry,t),r={},i=Ja.bind(ye,e);let o=Xt;const l={},s=(p,f)=>{const m=l[p]||[];return l[p]=m,m.push(f),()=>m.splice(m.indexOf(f),1)},a=(p,f,m)=>{e.set(p,f);const g=l[p];if(g)for(const y of g)y(f,m)},u=()=>{if(!lt.has(e)&&(lt.set(e,[r,{},{},{},i,a,s]),!Ln)){const p=n.initFocus(setTimeout.bind(ye,xc.bind(ye,r,wp))),f=n.initReconnect(setTimeout.bind(ye,xc.bind(ye,r,kp)));o=()=>{p&&p(),f&&f(),lt.delete(e)}}};return u(),[e,i,u,o]}return[e,lt.get(e)[4]]},Ly=(e,t,n,r,i)=>{const o=n.errorRetryCount,l=i.retryCount,s=~~((Math.random()+.5)*(1<<(l<8?l:8)))*n.errorRetryInterval;!j(o)&&l>o||setTimeout(r,s,i)},Ny=(e,t)=>hi(e)==hi(t),[ki,Ep]=Cp(new Map),Xa=Ot({onLoadingSlow:Xt,onSuccess:Xt,onError:Xt,onErrorRetry:Ly,onDiscarded:Xt,revalidateOnFocus:!0,revalidateOnReconnect:!0,revalidateIfStale:!0,shouldRetryOnError:!0,errorRetryInterval:Pc?1e4:5e3,focusThrottleInterval:5*1e3,dedupingInterval:2*1e3,loadingTimeout:Pc?5e3:3e3,compare:Ny,isPaused:()=>!1,cache:ki,mutate:Ep,fallback:{}},Iy),Pp=(e,t)=>{const n=Ot(e,t);if(t){const{use:r,fallback:i}=e,{use:o,fallback:l}=t;r&&o&&(n.use=r.concat(o)),i&&l&&(n.fallback=Ot(i,l))}return n},Qs=v.createContext({}),xp=e=>{const{value:t}=e,n=v.useContext(Qs),r=be(t),i=v.useMemo(()=>r?t(n):t,[r,n,t]),o=v.useMemo(()=>r?i:Pp(n,i),[r,n,i]),l=i&&i.provider,s=v.useRef(ye);l&&!s.current&&(s.current=Cp(l(o.cache||ki),i));const a=s.current;return a&&(o.cache=a[0],o.mutate=a[1]),an(()=>{if(a)return a[2]&&a[2](),a[3]},[]),v.createElement(Qs.Provider,Ot(e,{value:o}))},Ip="$inf$",Rp=Jo&&window.__SWR_DEVTOOLS_USE__,Uy=Rp?window.__SWR_DEVTOOLS_USE__:[],zy=()=>{Rp&&(window.__SWR_DEVTOOLS_REACT__=I)},Op=e=>be(e[1])?[e[0],e[1],e[2]||{}]:[e[0],null,(e[1]===null?e[2]:e[1])||{}],Tp=()=>Ot(Xa,v.useContext(Qs)),My=(e,t)=>{const[n,r]=Wt(e),[,,,i]=lt.get(ki);if(i[n])return i[n];const o=t(r);return i[n]=o,o},jy=e=>(t,n,r)=>e(t,n&&((...o)=>{const[l]=Wt(t),[,,,s]=lt.get(ki);if(l.startsWith(Ip))return n(...o);const a=s[l];return j(a)?n(...o):(delete s[l],a)}),r),Ay=Uy.concat(jy),Lp=e=>function(...n){const r=Tp(),[i,o,l]=Op(n),s=Pp(r,l);let a=e;const{use:u}=s,p=(u||[]).concat(Ay);for(let f=p.length;f--;)a=p[f](a);return a(i,o||s.fetcher||null,s)},Np=(e,t,n)=>{const r=t[e]||(t[e]=[]);return r.push(n),()=>{const i=r.indexOf(n);i>=0&&(r[i]=r[r.length-1],r.pop())}},By=(e,t)=>(...n)=>{const[r,i,o]=Op(n),l=(o.use||[]).concat(t);return e(r,i,{...o,use:l})};zy();const Dy=e=>Wt(e)[0],Ic=I.use||(e=>{if(e.status==="pending")throw e;if(e.status==="fulfilled")return e.value;throw e.status==="rejected"?e.reason:(e.status="pending",e.then(t=>{e.status="fulfilled",e.value=t},t=>{e.status="rejected",e.reason=t}),e)}),Al={dedupe:!0},Fy=(e,t,n)=>{const{cache:r,compare:i,suspense:o,fallbackData:l,revalidateOnMount:s,revalidateIfStale:a,refreshInterval:u,refreshWhenHidden:p,refreshWhenOffline:f,keepPreviousData:m}=n,[g,y,_,P]=lt.get(r),[c,d]=Wt(e),h=v.useRef(!1),w=v.useRef(!1),S=v.useRef(c),x=v.useRef(t),R=v.useRef(n),k=()=>R.current,$=()=>k().isVisible()&&k().isOnline(),[L,b,q,G]=Nt(r,c),Z=v.useRef({}).current,Ue=j(l)?n.fallback[c]:l,de=(F,W)=>{for(const Y in Z){const H=Y;if(H==="data"){if(!i(F[H],W[H])&&(!j(F[H])||!i(Se,W[H])))return!1}else if(W[H]!==F[H])return!1}return!0},V=v.useMemo(()=>{const F=(()=>!c||!t?!1:j(s)?k().isPaused()||o?!1:j(a)?!0:a:s)(),W=X=>{const Ce=Ot(X);return delete Ce._k,F?{isValidating:!0,isLoading:!0,...Ce}:Ce},Y=L(),H=G(),me=W(Y),Je=Y===H?me:W(H);let Q=me;return[()=>{const X=W(L());return de(X,Q)?(Q.data=X.data,Q.isLoading=X.isLoading,Q.isValidating=X.isValidating,Q.error=X.error,Q):(Q=X,X)},()=>Je]},[r,c]),C=Ga.useSyncExternalStore(v.useCallback(F=>q(c,(W,Y)=>{de(Y,W)||F()}),[r,c]),V[0],V[1]),z=!h.current,M=g[c]&&g[c].length>0,A=C.data,B=j(A)?Ue:A,he=C.error,fe=v.useRef(B),Se=m?j(A)?fe.current:A:B,Ie=(()=>M&&!j(he)?!1:z&&!j(s)?s:k().isPaused()?!1:o?j(B)?!1:a:j(B)||a)(),kt=!!(c&&t&&z&&Ie),il=j(C.isValidating)?kt:C.isValidating,ol=j(C.isLoading)?kt:C.isLoading,ft=v.useCallback(async F=>{const W=x.current;if(!c||!W||w.current||k().isPaused())return!1;let Y,H,me=!0;const Je=F||{},Q=!_[c]||!Je.dedupe,X=()=>Lo?!w.current&&c===S.current&&h.current:c===S.current,Ce={isValidating:!1,isLoading:!1},kr=()=>{b(Ce)},Sr=()=>{const ne=_[c];ne&&ne[1]===H&&delete _[c]},Cr={isValidating:!0};j(L().data)&&(Cr.isLoading=!0);try{if(Q&&(b(Cr),n.loadingTimeout&&j(L().data)&&setTimeout(()=>{me&&X()&&k().onLoadingSlow(c,n)},n.loadingTimeout),_[c]=[W(d),No()]),[Y,H]=_[c],Y=await Y,Q&&setTimeout(Sr,n.dedupingInterval),!_[c]||_[c][1]!==H)return Q&&X()&&k().onDiscarded(c),!1;Ce.error=ye;const ne=y[c];if(!j(ne)&&(H<=ne[0]||H<=ne[1]||ne[1]===0))return kr(),Q&&X()&&k().onDiscarded(c),!1;const Ee=L().data;Ce.data=i(Ee,Y)?Ee:Y,Q&&X()&&k().onSuccess(Y,c,n)}catch(ne){Sr();const Ee=k(),{shouldRetryOnError:mn}=Ee;Ee.isPaused()||(Ce.error=ne,Q&&X()&&(Ee.onError(ne,c,Ee),(mn===!0||be(mn)&&mn(ne))&&(!k().revalidateOnFocus||!k().revalidateOnReconnect||$())&&Ee.onErrorRetry(ne,c,Ee,ll=>{const gn=g[c];gn&&gn[0]&&gn[0](xt.ERROR_REVALIDATE_EVENT,ll)},{retryCount:(Je.retryCount||0)+1,dedupe:!0})))}return me=!1,kr(),!0},[c,r]),wr=v.useCallback((...F)=>Ja(r,S.current,...F),[]);if(an(()=>{x.current=t,R.current=n,j(A)||(fe.current=A)}),an(()=>{if(!c)return;const F=ft.bind(ye,Al);let W=0;const H=Np(c,g,(me,Je={})=>{if(me==xt.FOCUS_EVENT){const Q=Date.now();k().revalidateOnFocus&&Q>W&&$()&&(W=Q+k().focusThrottleInterval,F())}else if(me==xt.RECONNECT_EVENT)k().revalidateOnReconnect&&$()&&F();else{if(me==xt.MUTATE_EVENT)return ft();if(me==xt.ERROR_REVALIDATE_EVENT)return ft(Je)}});return w.current=!1,S.current=c,h.current=!0,b({_k:d}),Ie&&(j(B)||Ln?F():_p(F)),()=>{w.current=!0,H()}},[c]),an(()=>{let F;function W(){const H=be(u)?u(L().data):u;H&&F!==-1&&(F=setTimeout(Y,H))}function Y(){!L().error&&(p||k().isVisible())&&(f||k().isOnline())?ft(Al).then(W):W()}return W(),()=>{F&&(clearTimeout(F),F=-1)}},[u,p,f,c]),v.useDebugValue(Se),o&&j(B)&&c){if(!Lo&&Ln)throw new Error("Fallback data is required when using suspense in SSR.");x.current=t,R.current=n,w.current=!1;const F=P[c];if(!j(F)){const W=wr(F);Ic(W)}if(j(he)){const W=ft(Al);j(Se)||(W.status="fulfilled",W.value=!0),Ic(W)}else throw he}return{mutate:wr,get data(){return Z.data=!0,Se},get error(){return Z.error=!0,he},get isValidating(){return Z.isValidating=!0,il},get isLoading(){return Z.isLoading=!0,ol}}},qa=Kr.defineProperty(xp,"defaultValue",{value:Xa}),Up=Lp(Fy),Wy=Object.freeze(Object.defineProperty({__proto__:null,SWRConfig:qa,default:Up,mutate:Ep,preload:My,unstable_serialize:Dy,useSWRConfig:Tp},Symbol.toStringTag,{value:"Module"})),Rc=I.use||(e=>{if(e.status==="pending")throw e;if(e.status==="fulfilled")return e.value;throw e.status==="rejected"?e.reason:(e.status="pending",e.then(t=>{e.status="fulfilled",e.value=t},t=>{e.status="rejected",e.reason=t}),e)}),Bl={dedupe:!0},$y=(e,t,n)=>{const{cache:r,compare:i,suspense:o,fallbackData:l,revalidateOnMount:s,revalidateIfStale:a,refreshInterval:u,refreshWhenHidden:p,refreshWhenOffline:f,keepPreviousData:m}=n,[g,y,_,P]=lt.get(r),[c,d]=Wt(e),h=v.useRef(!1),w=v.useRef(!1),S=v.useRef(c),x=v.useRef(t),R=v.useRef(n),k=()=>R.current,$=()=>k().isVisible()&&k().isOnline(),[L,b,q,G]=Nt(r,c),Z=v.useRef({}).current,Ue=j(l)?n.fallback[c]:l,de=(F,W)=>{for(const Y in Z){const H=Y;if(H==="data"){if(!i(F[H],W[H])&&(!j(F[H])||!i(Se,W[H])))return!1}else if(W[H]!==F[H])return!1}return!0},V=v.useMemo(()=>{const F=(()=>!c||!t?!1:j(s)?k().isPaused()||o?!1:j(a)?!0:a:s)(),W=X=>{const Ce=Ot(X);return delete Ce._k,F?{isValidating:!0,isLoading:!0,...Ce}:Ce},Y=L(),H=G(),me=W(Y),Je=Y===H?me:W(H);let Q=me;return[()=>{const X=W(L());return de(X,Q)?(Q.data=X.data,Q.isLoading=X.isLoading,Q.isValidating=X.isValidating,Q.error=X.error,Q):(Q=X,X)},()=>Je]},[r,c]),C=Ga.useSyncExternalStore(v.useCallback(F=>q(c,(W,Y)=>{de(Y,W)||F()}),[r,c]),V[0],V[1]),z=!h.current,M=g[c]&&g[c].length>0,A=C.data,B=j(A)?Ue:A,he=C.error,fe=v.useRef(B),Se=m?j(A)?fe.current:A:B,Ie=(()=>M&&!j(he)?!1:z&&!j(s)?s:k().isPaused()?!1:o?j(B)?!1:a:j(B)||a)(),kt=!!(c&&t&&z&&Ie),il=j(C.isValidating)?kt:C.isValidating,ol=j(C.isLoading)?kt:C.isLoading,ft=v.useCallback(async F=>{const W=x.current;if(!c||!W||w.current||k().isPaused())return!1;let Y,H,me=!0;const Je=F||{},Q=!_[c]||!Je.dedupe,X=()=>Lo?!w.current&&c===S.current&&h.current:c===S.current,Ce={isValidating:!1,isLoading:!1},kr=()=>{b(Ce)},Sr=()=>{const ne=_[c];ne&&ne[1]===H&&delete _[c]},Cr={isValidating:!0};j(L().data)&&(Cr.isLoading=!0);try{if(Q&&(b(Cr),n.loadingTimeout&&j(L().data)&&setTimeout(()=>{me&&X()&&k().onLoadingSlow(c,n)},n.loadingTimeout),_[c]=[W(d),No()]),[Y,H]=_[c],Y=await Y,Q&&setTimeout(Sr,n.dedupingInterval),!_[c]||_[c][1]!==H)return Q&&X()&&k().onDiscarded(c),!1;Ce.error=ye;const ne=y[c];if(!j(ne)&&(H<=ne[0]||H<=ne[1]||ne[1]===0))return kr(),Q&&X()&&k().onDiscarded(c),!1;const Ee=L().data;Ce.data=i(Ee,Y)?Ee:Y,Q&&X()&&k().onSuccess(Y,c,n)}catch(ne){Sr();const Ee=k(),{shouldRetryOnError:mn}=Ee;Ee.isPaused()||(Ce.error=ne,Q&&X()&&(Ee.onError(ne,c,Ee),(mn===!0||be(mn)&&mn(ne))&&(!k().revalidateOnFocus||!k().revalidateOnReconnect||$())&&Ee.onErrorRetry(ne,c,Ee,ll=>{const gn=g[c];gn&&gn[0]&&gn[0](xt.ERROR_REVALIDATE_EVENT,ll)},{retryCount:(Je.retryCount||0)+1,dedupe:!0})))}return me=!1,kr(),!0},[c,r]),wr=v.useCallback((...F)=>Ja(r,S.current,...F),[]);if(an(()=>{x.current=t,R.current=n,j(A)||(fe.current=A)}),an(()=>{if(!c)return;const F=ft.bind(ye,Bl);let W=0;const H=Np(c,g,(me,Je={})=>{if(me==xt.FOCUS_EVENT){const Q=Date.now();k().revalidateOnFocus&&Q>W&&$()&&(W=Q+k().focusThrottleInterval,F())}else if(me==xt.RECONNECT_EVENT)k().revalidateOnReconnect&&$()&&F();else{if(me==xt.MUTATE_EVENT)return ft();if(me==xt.ERROR_REVALIDATE_EVENT)return ft(Je)}});return w.current=!1,S.current=c,h.current=!0,b({_k:d}),Ie&&(j(B)||Ln?F():_p(F)),()=>{w.current=!0,H()}},[c]),an(()=>{let F;function W(){const H=be(u)?u(L().data):u;H&&F!==-1&&(F=setTimeout(Y,H))}function Y(){!L().error&&(p||k().isVisible())&&(f||k().isOnline())?ft(Bl).then(W):W()}return W(),()=>{F&&(clearTimeout(F),F=-1)}},[u,p,f,c]),v.useDebugValue(Se),o&&j(B)&&c){if(!Lo&&Ln)throw new Error("Fallback data is required when using suspense in SSR.");x.current=t,R.current=n,w.current=!1;const F=P[c];if(!j(F)){const W=wr(F);Rc(W)}if(j(he)){const W=ft(Bl);j(Se)||(W.status="fulfilled",W.value=!0),Rc(W)}else throw he}return{mutate:wr,get data(){return Z.data=!0,Se},get error(){return Z.error=!0,he},get isValidating(){return Z.isValidating=!0,il},get isLoading(){return Z.isLoading=!0,ol}}};Kr.defineProperty(xp,"defaultValue",{value:Xa});const Vy=Lp($y),Hy=e=>Wt(e?e(0,null):null)[0],Dl=Promise.resolve(),by=e=>(t,n,r)=>{const i=v.useRef(!1),{cache:o,initialSize:l=1,revalidateAll:s=!1,persistSize:a=!1,revalidateFirstPage:u=!0,revalidateOnMount:p=!1,parallel:f=!1}=r,[,,,m]=lt.get(ki);let g;try{g=Hy(t),g&&(g=Ip+g)}catch{}const[y,_,P]=Nt(o,g),c=v.useCallback(()=>j(y()._l)?l:y()._l,[o,g,l]);Ga.useSyncExternalStore(v.useCallback(k=>g?P(g,()=>{k()}):()=>{},[o,g]),c,c);const d=v.useCallback(()=>{const k=y()._l;return j(k)?l:k},[g,l]),h=v.useRef(d());an(()=>{if(!i.current){i.current=!0;return}g&&_({_l:a?h.current:d()})},[g,o]);const w=p&&!i.current,S=e(g,async k=>{const $=y()._i,L=y()._r;_({_r:ye});const b=[],q=d(),[G]=Nt(o,k),Z=G().data,Ue=[];let de=null;for(let V=0;V{if(!(C in m))B=await n(z);else{const Ie=m[C];delete m[C],B=await Ie}A({data:B,_k:z}),b[V]=B};f?Ue.push(fe):await fe()}else b[V]=B;f||(de=B)}return f&&await Promise.all(Ue.map(V=>V())),_({_i:ye}),b},r),x=v.useCallback(function(k,$){const L=typeof $=="boolean"?{revalidate:$}:$||{},b=L.revalidate!==!1;return g?(b&&(j(k)?_({_i:!0,_r:L.revalidate}):_({_i:!1,_r:L.revalidate})),arguments.length?S.mutate(k,{...L,revalidate:b}):S.mutate()):Dl},[g,o]),R=v.useCallback(k=>{if(!g)return Dl;const[,$]=Nt(o,g);let L;if(be(k)?L=k(d()):typeof k=="number"&&(L=k),typeof L!="number")return Dl;$({_l:L}),h.current=L;const b=[],[q]=Nt(o,g);let G=null;for(let Z=0;Z{const{assertCtxFn:n=Qy}=t||{},r=I.createContext(void 0);return r.displayName=e,[r,()=>{const l=I.useContext(r);return n(l,`${e} not found`),l.value},()=>{const l=I.useContext(r);return l?l.value:{}}]},zp={};uy(zp,{SWRConfig:()=>qa,useSWR:()=>Up,useSWRInfinite:()=>Ky});cy(zp,Wy);var[Mp,Gy]=_r("ClerkInstanceContext"),[Yy,Jy]=_r("UserContext"),[Xy,k1]=_r("ClientContext"),[qy,S1]=_r("SessionContext");I.createContext({});var[Zy,C1]=_r("OrganizationContext"),e0=({children:e,organization:t,swrConfig:n})=>I.createElement(qa,{value:n},I.createElement(Zy.Provider,{value:{value:{organization:t}}},e));function jp(e){if(!I.useContext(Mp)){if(typeof e=="function"){e();return}throw new Error(`${e} can only be used within the component. Learn more: https://clerk.com/docs/components/clerk-provider`)}}typeof window<"u"?I.useLayoutEffect:I.useEffect;function Ap(){jp("useUser");const e=Jy();return e===void 0?{isLoaded:!1,isSignedIn:void 0,user:void 0}:e===null?{isLoaded:!0,isSignedIn:!1,user:null}:{isLoaded:!0,isSignedIn:!0,user:e}}var t0=Qr,Bp=e=>typeof atob<"u"&&typeof atob=="function"?atob(e):typeof global<"u"&&global.Buffer?new global.Buffer(e,"base64").toString():e,n0=[".lcl.dev",".stg.dev",".lclstage.dev",".stgstage.dev",".dev.lclclerk.com",".stg.lclclerk.com",".accounts.lclclerk.com","accountsstage.dev","accounts.dev"],Dp="pk_live_",r0="pk_test_";function Lc(e,t={}){if(e=e||"",!e||!Fp(e)){if(t.fatal)throw new Error("Publishable key not valid.");return null}const n=e.startsWith(Dp)?"production":"development";let r=Bp(e.split("_")[2]);return r=r.slice(0,-1),t.proxyUrl?r=t.proxyUrl:n!=="development"&&t.domain&&(r=`clerk.${t.domain}`),{instanceType:n,frontendApi:r}}function Fp(e){e=e||"";const t=e.startsWith(Dp)||e.startsWith(r0),n=Bp(e.split("_")[2]||"").endsWith("$");return t&&n}function i0(){const e=new Map;return{isDevOrStagingUrl:t=>{if(!t)return!1;const n=typeof t=="string"?t:t.hostname;let r=e.get(n);return r===void 0&&(r=n0.some(i=>n.endsWith(i)),e.set(n,r)),r}}}var o0=()=>{try{return!1}catch{}return!1},l0=()=>{try{return!1}catch{}return!1},s0=()=>{try{return!0}catch{}return!1},Nc=new Set,Za=(e,t,n)=>{const r=l0()||s0(),i=n??e;Nc.has(i)||r||(Nc.add(i),console.warn(`Clerk - DEPRECATION WARNING: "${e}" is deprecated and will be removed in the next major release. +${t}`))},jt=mp({packageName:"@clerk/clerk-react"});function a0(e){jt.setMessages(e).setPackageName(e)}var[u0,Wp]=_r("AuthContext"),c0=Mp,d0=Gy,f0="You've added multiple components in your React component tree. Wrap your components in a single .",p0=e=>`You've passed multiple children components to <${e}/>. You can only pass a single child component or text.`,Fl="Unsupported usage of isSatellite, domain or proxyUrl. The usage of isSatellite, domain or proxyUrl as function is not supported in non-browser environments.",h0=" component needs to be a direct child of `` or ``.",m0=" component needs to be a direct child of `` or ``.",g0=" component needs to be a direct child of `` or ``.",v0=" component needs to be a direct child of `` or ``.",y0=e=>`<${e} /> can only accept <${e}.Page /> and <${e}.Link /> as its children. Any other provided component will be ignored.`,_0=e=>`Missing props. <${e}.Page /> component requires the following props: url, label, labelIcon, alongside with children to be rendered inside the page.`,w0=e=>`Missing props. <${e}.Link /> component requires the following props: url, label and labelIcon.`,k0=" can only accept , and as its children. Any other provided component will be ignored.",S0=" component can only accept and as its children. Any other provided component will be ignored.",C0=" component needs to be a direct child of ``.",E0=" component needs to be a direct child of ``.",P0=" component needs to be a direct child of ``.",x0="Missing props. component requires the following props: href, label and labelIcon.",I0="Missing props. component requires the following props: label.",eu=e=>{jp(()=>{jt.throwMissingClerkProviderError({source:e})})},ke=(e,t)=>{t=t||e.displayName||e.name||"Component",e.displayName=t;const n=r=>{eu(t||"withClerk");const i=d0();return i.loaded?I.createElement(e,{...r,clerk:i}):null};return n.displayName=`withClerk(${t})`,n},Gs=({children:e})=>{eu("SignedIn");const{userId:t}=Wp();return t?I.createElement(I.Fragment,null,e):null},R0=({children:e})=>{eu("SignedOut");const{userId:t}=Wp();return t===null?I.createElement(I.Fragment,null,e):null};ke(({clerk:e,...t})=>{const{client:n,session:r}=e,i=n.activeSessions&&n.activeSessions.length>0;return I.useEffect(()=>{r===null&&i?e.redirectToAfterSignOut():e.redirectToSignIn(t)},[]),null},"RedirectToSignIn");ke(({clerk:e,...t})=>(I.useEffect(()=>{e.redirectToSignUp(t)},[]),null),"RedirectToSignUp");ke(({clerk:e})=>(I.useEffect(()=>{Za("RedirectToUserProfile","Use the `redirectToUserProfile()` method instead."),e.redirectToUserProfile()},[]),null),"RedirectToUserProfile");ke(({clerk:e})=>(I.useEffect(()=>{Za("RedirectToOrganizationProfile","Use the `redirectToOrganizationProfile()` method instead."),e.redirectToOrganizationProfile()},[]),null),"RedirectToOrganizationProfile");ke(({clerk:e})=>(I.useEffect(()=>{Za("RedirectToCreateOrganization","Use the `redirectToCreateOrganization()` method instead."),e.redirectToCreateOrganization()},[]),null),"RedirectToCreateOrganization");ke(({clerk:e,...t})=>(I.useEffect(()=>{e.handleRedirectCallback(t)},[]),null),"AuthenticateWithRedirectCallback");var $p=e=>{throw TypeError(e)},tu=(e,t,n)=>t.has(e)||$p("Cannot "+n),T=(e,t,n)=>(tu(e,t,"read from private field"),n?n.call(e):t.get(e)),Dn=(e,t,n)=>t.has(e)?$p("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),An=(e,t,n,r)=>(tu(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n),Uc=(e,t,n)=>(tu(e,t,"access private method"),n);function O0(e){return e?T0(e)||Vp(e):!0}function T0(e){return/^http(s)?:\/\//.test(e||"")}function Vp(e){return e.startsWith("/")}function L0(e){return e?Vp(e)?new URL(e,window.location.origin).toString():e:""}function N0(e){if(!e)return"";let t;if(e.match(/^(clerk\.)+\w*$/))t=/(clerk\.)*(?=clerk\.)/;else{if(e.match(/\.clerk.accounts/))return e;t=/^(clerk\.)*/gi}return`clerk.${e.replace(t,"")}`}var U0=(e,t="5.35.0")=>{if(e)return e;const n=z0(t);return n?n==="snapshot"?"5.35.0":n:M0(t)},z0=e=>{var t;return(t=e.trim().replace(/^v/,"").match(/-(.+?)(\.|$)/))==null?void 0:t[1]},M0=e=>e.trim().replace(/^v/,"").split(".")[0],Fe=e=>{o0()&&console.error(`Clerk: ${e}`)},j0={firstDelay:125,maxDelay:0,timeMultiple:2,shouldRetry:()=>!0},A0=async e=>new Promise(t=>setTimeout(t,e)),B0=e=>{let t=0;const n=()=>{const r=e.firstDelay,i=e.timeMultiple,o=r*Math.pow(i,t);return Math.min(e.maxDelay||o,o)};return async()=>{await A0(n()),t++}},D0=async(e,t={})=>{let n=0;const{shouldRetry:r,firstDelay:i,maxDelay:o,timeMultiple:l}={...j0,...t},s=B0({firstDelay:i,maxDelay:o,timeMultiple:l});for(;;)try{return await e()}catch(a){if(n++,!r(a,n))throw a;await s()}};function Wl(e,t,n){if(typeof e=="function")return e(t);if(typeof e<"u")return e;if(typeof n<"u")return n}var F0="loadScript cannot be called when document does not exist",W0="loadScript cannot be called without a src";async function $0(e="",t){const{async:n,defer:r,beforeLoad:i,crossOrigin:o,nonce:l}=t||{};return D0(()=>new Promise((a,u)=>{e||u(W0),(!document||!document.body)&&u(F0);const p=document.createElement("script");o&&p.setAttribute("crossorigin",o),p.async=n||!1,p.defer=r||!1,p.addEventListener("load",()=>{p.remove(),a(p)}),p.addEventListener("error",()=>{p.remove(),u()}),p.src=e,p.nonce=l,i==null||i(p),document.body.appendChild(p)}),{shouldRetry:(a,u)=>u<5})}var zc="Clerk: Failed to load Clerk",{isDevOrStagingUrl:V0}=i0(),Hp=mp({packageName:"@clerk/shared"});function H0(e){Hp.setPackageName({packageName:e})}var b0=async e=>{const t=document.querySelector("script[data-clerk-js-script]");if(t)return new Promise((n,r)=>{t.addEventListener("load",()=>{n(t)}),t.addEventListener("error",()=>{r(zc)})});if(!(e!=null&&e.publishableKey)){Hp.throwMissingPublishableKeyError();return}return $0(K0(e),{async:!0,crossOrigin:"anonymous",nonce:e.nonce,beforeLoad:G0(e)}).catch(()=>{throw new Error(zc)})},K0=e=>{var t,n;const{clerkJSUrl:r,clerkJSVariant:i,clerkJSVersion:o,proxyUrl:l,domain:s,publishableKey:a}=e;if(r)return r;let u="";l&&O0(l)?u=L0(l).replace(/http(s)?:\/\//,""):s&&!V0(((t=Lc(a))==null?void 0:t.frontendApi)||"")?u=N0(s):u=((n=Lc(a))==null?void 0:n.frontendApi)||"";const p=i?`${i.replace(/\.+$/,"")}.`:"",f=U0(o);return`https://${u}/npm/@clerk/clerk-js@${f}/dist/clerk.${p}browser.js`},Q0=e=>{const t={};return e.publishableKey&&(t["data-clerk-publishable-key"]=e.publishableKey),e.proxyUrl&&(t["data-clerk-proxy-url"]=e.proxyUrl),e.domain&&(t["data-clerk-domain"]=e.domain),e.nonce&&(t.nonce=e.nonce),t},G0=e=>t=>{const n=Q0(e);for(const r in n)t.setAttribute(r,n[r])},Mc=(e,...t)=>{const n={...e};for(const r of t)delete n[r];return n},Y0=(e,t,n)=>!e&&n?J0(n):X0(t),J0=e=>{const t=e.userId,n=e.user,r=e.sessionId,i=e.session,o=e.organization,l=e.orgId,s=e.orgRole,a=e.orgPermissions,u=e.orgSlug,p=e.actor,f=e.factorVerificationAge;return{userId:t,user:n,sessionId:r,session:i,organization:o,orgId:l,orgRole:s,orgPermissions:a,orgSlug:u,actor:p,factorVerificationAge:f}},X0=e=>{var t;const n=e.user?e.user.id:e.user,r=e.user,i=e.session?e.session.id:e.session,o=e.session,l=e.session?e.session.factorVerificationAge:null,s=o==null?void 0:o.actor,a=e.organization,u=e.organization?e.organization.id:e.organization,p=a==null?void 0:a.slug,f=a&&((t=r==null?void 0:r.organizationMemberships)==null?void 0:t.find(y=>y.organization.id===u)),m=f&&f.permissions,g=f&&f.role;return{userId:n,user:r,sessionId:i,session:o,organization:a,orgId:u,orgRole:g,orgSlug:p,orgPermissions:m,actor:s,factorVerificationAge:l}};function jc(){return typeof window<"u"}typeof window<"u"&&!window.global&&(window.global=typeof global>"u"?window:global);var Xo=e=>t=>{try{return I.Children.only(e)}catch{return jt.throw(p0(t))}},qo=(e,t)=>(e||(e=t),typeof e=="string"&&(e=I.createElement("button",null,e)),e),Zo=e=>(...t)=>{if(e&&typeof e=="function")return e(...t)};function q0(e){return typeof e=="function"}var Vi=new Map;function Z0(e,t,n=1){I.useEffect(()=>{const r=Vi.get(e)||0;return r==n?jt.throw(t):(Vi.set(e,r+1),()=>{Vi.set(e,(Vi.get(e)||1)-1)})},[])}function e_(e,t,n){const r=e.displayName||e.name||t||"Component",i=o=>(Z0(t,n),I.createElement(e,{...o}));return i.displayName=`withMaxAllowedInstancesGuard(${r})`,i}var Gr=e=>{const t=Array(e.length).fill(null),[n,r]=v.useState(t);return e.map((i,o)=>({id:i.id,mount:l=>r(s=>s.map((a,u)=>u===o?l:a)),unmount:()=>r(l=>l.map((s,a)=>a===o?null:s)),portal:()=>I.createElement(I.Fragment,null,n[o]?tp.createPortal(i.component,n[o]):null)}))},De=(e,t)=>!!e&&I.isValidElement(e)&&(e==null?void 0:e.type)===t,bp=(e,t)=>Gp({children:e,reorderItemsLabels:["account","security"],LinkComponent:Ci,PageComponent:Si,MenuItemsComponent:tl,componentName:"UserProfile"},t),Kp=(e,t)=>Gp({children:e,reorderItemsLabels:["general","members"],LinkComponent:rl,PageComponent:nl,componentName:"OrganizationProfile"},t),Qp=e=>{const t=[],n=[rl,nl,tl,Si,Ci];return I.Children.forEach(e,r=>{n.some(i=>De(r,i))||t.push(r)}),t},Gp=(e,t)=>{const{children:n,LinkComponent:r,PageComponent:i,MenuItemsComponent:o,reorderItemsLabels:l,componentName:s}=e,{allowForAnyChildren:a=!1}=t||{},u=[];I.Children.forEach(n,d=>{if(!De(d,i)&&!De(d,r)&&!De(d,o)){d&&!a&&Fe(y0(s));return}const{props:h}=d,{children:w,label:S,url:x,labelIcon:R}=h;if(De(d,i))if(Ac(h,l))u.push({label:S});else if($l(h))u.push({label:S,labelIcon:R,children:w,url:x});else{Fe(_0(s));return}if(De(d,r))if(Vl(h))u.push({label:S,labelIcon:R,url:x});else{Fe(w0(s));return}});const p=[],f=[],m=[];u.forEach((d,h)=>{if($l(d)){p.push({component:d.children,id:h}),f.push({component:d.labelIcon,id:h});return}Vl(d)&&m.push({component:d.labelIcon,id:h})});const g=Gr(p),y=Gr(f),_=Gr(m),P=[],c=[];return u.forEach((d,h)=>{if(Ac(d,l)){P.push({label:d.label});return}if($l(d)){const{portal:w,mount:S,unmount:x}=g.find(L=>L.id===h),{portal:R,mount:k,unmount:$}=y.find(L=>L.id===h);P.push({label:d.label,url:d.url,mount:S,unmount:x,mountIcon:k,unmountIcon:$}),c.push(w),c.push(R);return}if(Vl(d)){const{portal:w,mount:S,unmount:x}=_.find(R=>R.id===h);P.push({label:d.label,url:d.url,mountIcon:S,unmountIcon:x}),c.push(w);return}}),{customPages:P,customPagesPortals:c}},Ac=(e,t)=>{const{children:n,label:r,url:i,labelIcon:o}=e;return!n&&!i&&!o&&t.some(l=>l===r)},$l=e=>{const{children:t,label:n,url:r,labelIcon:i}=e;return!!t&&!!r&&!!i&&!!n},Vl=e=>{const{children:t,label:n,url:r,labelIcon:i}=e;return!t&&!!r&&!!i&&!!n},t_=e=>n_({children:e,reorderItemsLabels:["manageAccount","signOut"],MenuItemsComponent:tl,MenuActionComponent:Jp,MenuLinkComponent:Xp,UserProfileLinkComponent:Ci,UserProfilePageComponent:Si}),n_=({children:e,MenuItemsComponent:t,MenuActionComponent:n,MenuLinkComponent:r,UserProfileLinkComponent:i,UserProfilePageComponent:o,reorderItemsLabels:l})=>{const s=[],a=[],u=[];I.Children.forEach(e,y=>{if(!De(y,t)&&!De(y,i)&&!De(y,o)){y&&Fe(k0);return}if(De(y,i)||De(y,o))return;const{props:_}=y;I.Children.forEach(_.children,P=>{if(!De(P,n)&&!De(P,r)){P&&Fe(S0);return}const{props:c}=P,{label:d,labelIcon:h,href:w,onClick:S,open:x}=c;if(De(P,n))if(Bc(c,l))s.push({label:d});else if(Hl(c)){const R={label:d,labelIcon:h};if(S!==void 0)s.push({...R,onClick:S});else if(x!==void 0)s.push({...R,open:x.startsWith("/")?x:`/${x}`});else{Fe("Custom menu item must have either onClick or open property");return}}else{Fe(I0);return}if(De(P,r))if(bl(c))s.push({label:d,labelIcon:h,href:w});else{Fe(x0);return}})});const p=[],f=[];s.forEach((y,_)=>{Hl(y)&&p.push({component:y.labelIcon,id:_}),bl(y)&&f.push({component:y.labelIcon,id:_})});const m=Gr(p),g=Gr(f);return s.forEach((y,_)=>{if(Bc(y,l)&&a.push({label:y.label}),Hl(y)){const{portal:P,mount:c,unmount:d}=m.find(w=>w.id===_),h={label:y.label,mountIcon:c,unmountIcon:d};"onClick"in y?h.onClick=y.onClick:"open"in y&&(h.open=y.open),a.push(h),u.push(P)}if(bl(y)){const{portal:P,mount:c,unmount:d}=g.find(h=>h.id===_);a.push({label:y.label,href:y.href,mountIcon:c,unmountIcon:d}),u.push(P)}}),{customMenuItems:a,customMenuItemsPortals:u}},Bc=(e,t)=>{const{children:n,label:r,onClick:i,labelIcon:o}=e;return!n&&!i&&!o&&t.some(l=>l===r)},Hl=e=>{const{label:t,labelIcon:n,onClick:r,open:i}=e;return!!n&&!!t&&(typeof r=="function"||typeof i=="string")},bl=e=>{const{label:t,href:n,labelIcon:r}=e;return!!n&&!!r&&!!t},Hi=e=>"mount"in e,Dc=e=>"open"in e,dt=class extends I.PureComponent{constructor(){super(...arguments),this.portalRef=I.createRef()}componentDidUpdate(e){var t,n,r,i;if(!Hi(e)||!Hi(this.props))return;const o=Mc(e.props,"customPages","customMenuItems","children"),l=Mc(this.props.props,"customPages","customMenuItems","children"),s=((t=o.customPages)==null?void 0:t.length)!==((n=l.customPages)==null?void 0:n.length),a=((r=o.customMenuItems)==null?void 0:r.length)!==((i=l.customMenuItems)==null?void 0:i.length);(!t0(o,l)||s||a)&&this.portalRef.current&&this.props.updateProps({node:this.portalRef.current,props:this.props.props})}componentDidMount(){this.portalRef.current&&(Hi(this.props)&&this.props.mount(this.portalRef.current,this.props.props),Dc(this.props)&&this.props.open(this.props.props))}componentWillUnmount(){this.portalRef.current&&(Hi(this.props)&&this.props.unmount(this.portalRef.current),Dc(this.props)&&this.props.close())}render(){const{hideRootHtmlElement:e=!1}=this.props;return I.createElement(I.Fragment,null,!e&&I.createElement("div",{ref:this.portalRef}),this.props.children)}},el=e=>{var t,n;return I.createElement(I.Fragment,null,(t=e==null?void 0:e.customPagesPortals)==null?void 0:t.map((r,i)=>v.createElement(r,{key:i})),(n=e==null?void 0:e.customMenuItemsPortals)==null?void 0:n.map((r,i)=>v.createElement(r,{key:i})))};ke(({clerk:e,...t})=>I.createElement(dt,{mount:e.mountSignIn,unmount:e.unmountSignIn,updateProps:e.__unstable__updateProps,props:t}),"SignIn");ke(({clerk:e,...t})=>I.createElement(dt,{mount:e.mountSignUp,unmount:e.unmountSignUp,updateProps:e.__unstable__updateProps,props:t}),"SignUp");function Si({children:e}){return Fe(h0),I.createElement(I.Fragment,null,e)}function Ci({children:e}){return Fe(m0),I.createElement(I.Fragment,null,e)}var r_=ke(({clerk:e,...t})=>{const{customPages:n,customPagesPortals:r}=bp(t.children);return I.createElement(dt,{mount:e.mountUserProfile,unmount:e.unmountUserProfile,updateProps:e.__unstable__updateProps,props:{...t,customPages:n}},I.createElement(el,{customPagesPortals:r}))},"UserProfile");Object.assign(r_,{Page:Si,Link:Ci});var Yp=v.createContext({mount:()=>{},unmount:()=>{},updateProps:()=>{}}),i_=ke(({clerk:e,...t})=>{const{customPages:n,customPagesPortals:r}=bp(t.children,{allowForAnyChildren:!!t.__experimental_asProvider}),i=Object.assign(t.userProfileProps||{},{customPages:n}),{customMenuItems:o,customMenuItemsPortals:l}=t_(t.children),s=Qp(t.children),a={mount:e.mountUserButton,unmount:e.unmountUserButton,updateProps:e.__unstable__updateProps,props:{...t,userProfileProps:i,customMenuItems:o}},u={customPagesPortals:r,customMenuItemsPortals:l};return I.createElement(Yp.Provider,{value:a},I.createElement(dt,{...a,hideRootHtmlElement:!!t.__experimental_asProvider},t.__experimental_asProvider?s:null,I.createElement(el,{...u})))},"UserButton");function tl({children:e}){return Fe(C0),I.createElement(I.Fragment,null,e)}function Jp({children:e}){return Fe(E0),I.createElement(I.Fragment,null,e)}function Xp({children:e}){return Fe(P0),I.createElement(I.Fragment,null,e)}function o_(e){const t=v.useContext(Yp),n={...t,props:{...t.props,...e}};return I.createElement(dt,{...n})}Object.assign(i_,{UserProfilePage:Si,UserProfileLink:Ci,MenuItems:tl,Action:Jp,Link:Xp,__experimental_Outlet:o_});function nl({children:e}){return Fe(g0),I.createElement(I.Fragment,null,e)}function rl({children:e}){return Fe(v0),I.createElement(I.Fragment,null,e)}var l_=ke(({clerk:e,...t})=>{const{customPages:n,customPagesPortals:r}=Kp(t.children);return I.createElement(dt,{mount:e.mountOrganizationProfile,unmount:e.unmountOrganizationProfile,updateProps:e.__unstable__updateProps,props:{...t,customPages:n}},I.createElement(el,{customPagesPortals:r}))},"OrganizationProfile");Object.assign(l_,{Page:nl,Link:rl});ke(({clerk:e,...t})=>I.createElement(dt,{mount:e.mountCreateOrganization,unmount:e.unmountCreateOrganization,updateProps:e.__unstable__updateProps,props:t}),"CreateOrganization");var qp=v.createContext({mount:()=>{},unmount:()=>{},updateProps:()=>{}}),s_=ke(({clerk:e,...t})=>{const{customPages:n,customPagesPortals:r}=Kp(t.children,{allowForAnyChildren:!!t.__experimental_asProvider}),i=Object.assign(t.organizationProfileProps||{},{customPages:n}),o=Qp(t.children),l={mount:e.mountOrganizationSwitcher,unmount:e.unmountOrganizationSwitcher,updateProps:e.__unstable__updateProps,props:{...t,organizationProfileProps:i}};return e.__experimental_prefetchOrganizationSwitcher(),I.createElement(qp.Provider,{value:l},I.createElement(dt,{...l,hideRootHtmlElement:!!t.__experimental_asProvider},t.__experimental_asProvider?o:null,I.createElement(el,{customPagesPortals:r})))},"OrganizationSwitcher");function a_(e){const t=v.useContext(qp),n={...t,props:{...t.props,...e}};return I.createElement(dt,{...n})}Object.assign(s_,{OrganizationProfilePage:nl,OrganizationProfileLink:rl,__experimental_Outlet:a_});ke(({clerk:e,...t})=>I.createElement(dt,{mount:e.mountOrganizationList,unmount:e.unmountOrganizationList,updateProps:e.__unstable__updateProps,props:t}),"OrganizationList");ke(({clerk:e,...t})=>I.createElement(dt,{open:e.openGoogleOneTap,close:e.closeGoogleOneTap,props:t}),"GoogleOneTap");ke(({clerk:e,...t})=>I.createElement(dt,{mount:e.mountWaitlist,unmount:e.unmountWaitlist,updateProps:e.__unstable__updateProps,props:t}),"Waitlist");var u_=ke(({clerk:e,children:t,...n})=>{const{signUpFallbackRedirectUrl:r,forceRedirectUrl:i,fallbackRedirectUrl:o,signUpForceRedirectUrl:l,mode:s,initialValues:a,...u}=n;t=qo(t,"Sign in");const p=Xo(t)("SignInButton"),f=()=>{const y={forceRedirectUrl:i,fallbackRedirectUrl:o,signUpFallbackRedirectUrl:r,signUpForceRedirectUrl:l,initialValues:a};return s==="modal"?e.openSignIn(y):e.redirectToSignIn({...y,signInFallbackRedirectUrl:o,signInForceRedirectUrl:i})},g={...u,onClick:async y=>(p&&typeof p=="object"&&"props"in p&&await Zo(p.props.onClick)(y),f())};return I.cloneElement(p,g)},"SignInButton");ke(({clerk:e,children:t,...n})=>{const{fallbackRedirectUrl:r,forceRedirectUrl:i,signInFallbackRedirectUrl:o,signInForceRedirectUrl:l,mode:s,unsafeMetadata:a,initialValues:u,...p}=n;t=qo(t,"Sign up");const f=Xo(t)("SignUpButton"),m=()=>{const _={fallbackRedirectUrl:r,forceRedirectUrl:i,signInFallbackRedirectUrl:o,signInForceRedirectUrl:l,unsafeMetadata:a,initialValues:u};return s==="modal"?e.openSignUp(_):e.redirectToSignUp({..._,signUpFallbackRedirectUrl:r,signUpForceRedirectUrl:i})},y={...p,onClick:async _=>(f&&typeof f=="object"&&"props"in f&&await Zo(f.props.onClick)(_),m())};return I.cloneElement(f,y)},"SignUpButton");var Zp=ke(({clerk:e,children:t,...n})=>{const{redirectUrl:r="/",signOutOptions:i,...o}=n;t=qo(t,"Sign out");const l=Xo(t)("SignOutButton"),s=()=>e.signOut({redirectUrl:r,...i}),u={...o,onClick:async p=>(await Zo(l.props.onClick)(p),s())};return I.cloneElement(l,u)},"SignOutButton");ke(({clerk:e,children:t,...n})=>{const{redirectUrl:r,...i}=n;t=qo(t,"Sign in with Metamask");const o=Xo(t)("SignInWithMetamaskButton"),l=async()=>{async function u(){await e.authenticateWithMetamask({redirectUrl:r||void 0})}u()},a={...i,onClick:async u=>(await Zo(o.props.onClick)(u),l())};return I.cloneElement(o,a)},"SignInWithMetamask");typeof __BUILD_DISABLE_RHC__>"u"&&(globalThis.__BUILD_DISABLE_RHC__=!1);var c_={name:"@clerk/clerk-react",version:"5.17.1",environment:"production"},N,Fn,Wn,_n,wn,ro,Ys,eh=class th{constructor(t){Dn(this,ro),this.clerkjs=null,this.preopenOneTap=null,this.preopenUserVerification=null,this.preopenSignIn=null,this.preopenSignUp=null,this.preopenUserProfile=null,this.preopenOrganizationProfile=null,this.preopenCreateOrganization=null,this.preOpenWaitlist=null,this.premountSignInNodes=new Map,this.premountSignUpNodes=new Map,this.premountUserProfileNodes=new Map,this.premountUserButtonNodes=new Map,this.premountOrganizationProfileNodes=new Map,this.premountCreateOrganizationNodes=new Map,this.premountOrganizationSwitcherNodes=new Map,this.premountOrganizationListNodes=new Map,this.premountMethodCalls=new Map,this.premountWaitlistNodes=new Map,this.premountAddListenerCalls=new Map,this.loadedListeners=[],Dn(this,N,!1),Dn(this,Fn),Dn(this,Wn),Dn(this,_n),this.buildSignInUrl=i=>{const o=()=>{var l;return((l=this.clerkjs)==null?void 0:l.buildSignInUrl(i))||""};if(this.clerkjs&&T(this,N))return o();this.premountMethodCalls.set("buildSignInUrl",o)},this.buildSignUpUrl=i=>{const o=()=>{var l;return((l=this.clerkjs)==null?void 0:l.buildSignUpUrl(i))||""};if(this.clerkjs&&T(this,N))return o();this.premountMethodCalls.set("buildSignUpUrl",o)},this.buildAfterSignInUrl=()=>{const i=()=>{var o;return((o=this.clerkjs)==null?void 0:o.buildAfterSignInUrl())||""};if(this.clerkjs&&T(this,N))return i();this.premountMethodCalls.set("buildAfterSignInUrl",i)},this.buildAfterSignUpUrl=()=>{const i=()=>{var o;return((o=this.clerkjs)==null?void 0:o.buildAfterSignUpUrl())||""};if(this.clerkjs&&T(this,N))return i();this.premountMethodCalls.set("buildAfterSignUpUrl",i)},this.buildAfterSignOutUrl=()=>{const i=()=>{var o;return((o=this.clerkjs)==null?void 0:o.buildAfterSignOutUrl())||""};if(this.clerkjs&&T(this,N))return i();this.premountMethodCalls.set("buildAfterSignOutUrl",i)},this.buildAfterMultiSessionSingleSignOutUrl=()=>{const i=()=>{var o;return((o=this.clerkjs)==null?void 0:o.buildAfterMultiSessionSingleSignOutUrl())||""};if(this.clerkjs&&T(this,N))return i();this.premountMethodCalls.set("buildAfterMultiSessionSingleSignOutUrl",i)},this.buildUserProfileUrl=()=>{const i=()=>{var o;return((o=this.clerkjs)==null?void 0:o.buildUserProfileUrl())||""};if(this.clerkjs&&T(this,N))return i();this.premountMethodCalls.set("buildUserProfileUrl",i)},this.buildCreateOrganizationUrl=()=>{const i=()=>{var o;return((o=this.clerkjs)==null?void 0:o.buildCreateOrganizationUrl())||""};if(this.clerkjs&&T(this,N))return i();this.premountMethodCalls.set("buildCreateOrganizationUrl",i)},this.buildOrganizationProfileUrl=()=>{const i=()=>{var o;return((o=this.clerkjs)==null?void 0:o.buildOrganizationProfileUrl())||""};if(this.clerkjs&&T(this,N))return i();this.premountMethodCalls.set("buildOrganizationProfileUrl",i)},this.buildWaitlistUrl=()=>{const i=()=>{var o;return((o=this.clerkjs)==null?void 0:o.buildWaitlistUrl())||""};if(this.clerkjs&&T(this,N))return i();this.premountMethodCalls.set("buildWaitlistUrl",i)},this.buildUrlWithAuth=i=>{const o=()=>{var l;return((l=this.clerkjs)==null?void 0:l.buildUrlWithAuth(i))||""};if(this.clerkjs&&T(this,N))return o();this.premountMethodCalls.set("buildUrlWithAuth",o)},this.handleUnauthenticated=()=>{const i=()=>{var o;return(o=this.clerkjs)==null?void 0:o.handleUnauthenticated()};this.clerkjs&&T(this,N)?i():this.premountMethodCalls.set("handleUnauthenticated",i)},this.addOnLoaded=i=>{this.loadedListeners.push(i),this.loaded&&this.emitLoaded()},this.emitLoaded=()=>{this.loadedListeners.forEach(i=>i()),this.loadedListeners=[]},this.hydrateClerkJS=i=>{if(!i)throw new Error("Failed to hydrate latest Clerk JS");return this.clerkjs=i,this.premountMethodCalls.forEach(o=>o()),this.premountAddListenerCalls.forEach((o,l)=>{o.nativeUnsubscribe=i.addListener(l)}),this.preopenSignIn!==null&&i.openSignIn(this.preopenSignIn),this.preopenSignUp!==null&&i.openSignUp(this.preopenSignUp),this.preopenUserProfile!==null&&i.openUserProfile(this.preopenUserProfile),this.preopenUserVerification!==null&&i.__internal_openReverification(this.preopenUserVerification),this.preopenOneTap!==null&&i.openGoogleOneTap(this.preopenOneTap),this.preopenOrganizationProfile!==null&&i.openOrganizationProfile(this.preopenOrganizationProfile),this.preopenCreateOrganization!==null&&i.openCreateOrganization(this.preopenCreateOrganization),this.preOpenWaitlist!==null&&i.openWaitlist(this.preOpenWaitlist),this.premountSignInNodes.forEach((o,l)=>{i.mountSignIn(l,o)}),this.premountSignUpNodes.forEach((o,l)=>{i.mountSignUp(l,o)}),this.premountUserProfileNodes.forEach((o,l)=>{i.mountUserProfile(l,o)}),this.premountUserButtonNodes.forEach((o,l)=>{i.mountUserButton(l,o)}),this.premountOrganizationListNodes.forEach((o,l)=>{i.mountOrganizationList(l,o)}),this.premountWaitlistNodes.forEach((o,l)=>{i.mountWaitlist(l,o)}),An(this,N,!0),this.emitLoaded(),this.clerkjs},this.__unstable__updateProps=async i=>{const o=await Uc(this,ro,Ys).call(this);if(o&&"__unstable__updateProps"in o)return o.__unstable__updateProps(i)},this.setActive=({session:i,organization:o,beforeEmit:l,redirectUrl:s})=>this.clerkjs?this.clerkjs.setActive({session:i,organization:o,beforeEmit:l,redirectUrl:s}):Promise.reject(),this.openSignIn=i=>{this.clerkjs&&T(this,N)?this.clerkjs.openSignIn(i):this.preopenSignIn=i},this.closeSignIn=()=>{this.clerkjs&&T(this,N)?this.clerkjs.closeSignIn():this.preopenSignIn=null},this.__internal_openReverification=i=>{this.clerkjs&&T(this,N)?this.clerkjs.__internal_openReverification(i):this.preopenUserVerification=i},this.__internal_closeReverification=()=>{this.clerkjs&&T(this,N)?this.clerkjs.__internal_closeReverification():this.preopenUserVerification=null},this.openGoogleOneTap=i=>{this.clerkjs&&T(this,N)?this.clerkjs.openGoogleOneTap(i):this.preopenOneTap=i},this.closeGoogleOneTap=()=>{this.clerkjs&&T(this,N)?this.clerkjs.closeGoogleOneTap():this.preopenOneTap=null},this.openUserProfile=i=>{this.clerkjs&&T(this,N)?this.clerkjs.openUserProfile(i):this.preopenUserProfile=i},this.closeUserProfile=()=>{this.clerkjs&&T(this,N)?this.clerkjs.closeUserProfile():this.preopenUserProfile=null},this.openOrganizationProfile=i=>{this.clerkjs&&T(this,N)?this.clerkjs.openOrganizationProfile(i):this.preopenOrganizationProfile=i},this.closeOrganizationProfile=()=>{this.clerkjs&&T(this,N)?this.clerkjs.closeOrganizationProfile():this.preopenOrganizationProfile=null},this.openCreateOrganization=i=>{this.clerkjs&&T(this,N)?this.clerkjs.openCreateOrganization(i):this.preopenCreateOrganization=i},this.closeCreateOrganization=()=>{this.clerkjs&&T(this,N)?this.clerkjs.closeCreateOrganization():this.preopenCreateOrganization=null},this.openWaitlist=i=>{this.clerkjs&&T(this,N)?this.clerkjs.openWaitlist(i):this.preOpenWaitlist=i},this.closeWaitlist=()=>{this.clerkjs&&T(this,N)?this.clerkjs.closeWaitlist():this.preOpenWaitlist=null},this.openSignUp=i=>{this.clerkjs&&T(this,N)?this.clerkjs.openSignUp(i):this.preopenSignUp=i},this.closeSignUp=()=>{this.clerkjs&&T(this,N)?this.clerkjs.closeSignUp():this.preopenSignUp=null},this.mountSignIn=(i,o)=>{this.clerkjs&&T(this,N)?this.clerkjs.mountSignIn(i,o):this.premountSignInNodes.set(i,o)},this.unmountSignIn=i=>{this.clerkjs&&T(this,N)?this.clerkjs.unmountSignIn(i):this.premountSignInNodes.delete(i)},this.mountSignUp=(i,o)=>{this.clerkjs&&T(this,N)?this.clerkjs.mountSignUp(i,o):this.premountSignUpNodes.set(i,o)},this.unmountSignUp=i=>{this.clerkjs&&T(this,N)?this.clerkjs.unmountSignUp(i):this.premountSignUpNodes.delete(i)},this.mountUserProfile=(i,o)=>{this.clerkjs&&T(this,N)?this.clerkjs.mountUserProfile(i,o):this.premountUserProfileNodes.set(i,o)},this.unmountUserProfile=i=>{this.clerkjs&&T(this,N)?this.clerkjs.unmountUserProfile(i):this.premountUserProfileNodes.delete(i)},this.mountOrganizationProfile=(i,o)=>{this.clerkjs&&T(this,N)?this.clerkjs.mountOrganizationProfile(i,o):this.premountOrganizationProfileNodes.set(i,o)},this.unmountOrganizationProfile=i=>{this.clerkjs&&T(this,N)?this.clerkjs.unmountOrganizationProfile(i):this.premountOrganizationProfileNodes.delete(i)},this.mountCreateOrganization=(i,o)=>{this.clerkjs&&T(this,N)?this.clerkjs.mountCreateOrganization(i,o):this.premountCreateOrganizationNodes.set(i,o)},this.unmountCreateOrganization=i=>{this.clerkjs&&T(this,N)?this.clerkjs.unmountCreateOrganization(i):this.premountCreateOrganizationNodes.delete(i)},this.mountOrganizationSwitcher=(i,o)=>{this.clerkjs&&T(this,N)?this.clerkjs.mountOrganizationSwitcher(i,o):this.premountOrganizationSwitcherNodes.set(i,o)},this.unmountOrganizationSwitcher=i=>{this.clerkjs&&T(this,N)?this.clerkjs.unmountOrganizationSwitcher(i):this.premountOrganizationSwitcherNodes.delete(i)},this.__experimental_prefetchOrganizationSwitcher=()=>{const i=()=>{var o;return(o=this.clerkjs)==null?void 0:o.__experimental_prefetchOrganizationSwitcher()};this.clerkjs&&T(this,N)?i():this.premountMethodCalls.set("__experimental_prefetchOrganizationSwitcher",i)},this.mountOrganizationList=(i,o)=>{this.clerkjs&&T(this,N)?this.clerkjs.mountOrganizationList(i,o):this.premountOrganizationListNodes.set(i,o)},this.unmountOrganizationList=i=>{this.clerkjs&&T(this,N)?this.clerkjs.unmountOrganizationList(i):this.premountOrganizationListNodes.delete(i)},this.mountUserButton=(i,o)=>{this.clerkjs&&T(this,N)?this.clerkjs.mountUserButton(i,o):this.premountUserButtonNodes.set(i,o)},this.unmountUserButton=i=>{this.clerkjs&&T(this,N)?this.clerkjs.unmountUserButton(i):this.premountUserButtonNodes.delete(i)},this.mountWaitlist=(i,o)=>{this.clerkjs&&T(this,N)?this.clerkjs.mountWaitlist(i,o):this.premountWaitlistNodes.set(i,o)},this.unmountWaitlist=i=>{this.clerkjs&&T(this,N)?this.clerkjs.unmountWaitlist(i):this.premountWaitlistNodes.delete(i)},this.addListener=i=>{if(this.clerkjs)return this.clerkjs.addListener(i);{const o=()=>{var l;const s=this.premountAddListenerCalls.get(i);s&&((l=s.nativeUnsubscribe)==null||l.call(s),this.premountAddListenerCalls.delete(i))};return this.premountAddListenerCalls.set(i,{unsubscribe:o,nativeUnsubscribe:void 0}),o}},this.navigate=i=>{const o=()=>{var l;return(l=this.clerkjs)==null?void 0:l.navigate(i)};this.clerkjs&&T(this,N)?o():this.premountMethodCalls.set("navigate",o)},this.redirectWithAuth=async(...i)=>{const o=()=>{var l;return(l=this.clerkjs)==null?void 0:l.redirectWithAuth(...i)};if(this.clerkjs&&T(this,N))return o();this.premountMethodCalls.set("redirectWithAuth",o)},this.redirectToSignIn=async i=>{const o=()=>{var l;return(l=this.clerkjs)==null?void 0:l.redirectToSignIn(i)};if(this.clerkjs&&T(this,N))return o();this.premountMethodCalls.set("redirectToSignIn",o)},this.redirectToSignUp=async i=>{const o=()=>{var l;return(l=this.clerkjs)==null?void 0:l.redirectToSignUp(i)};if(this.clerkjs&&T(this,N))return o();this.premountMethodCalls.set("redirectToSignUp",o)},this.redirectToUserProfile=async()=>{const i=()=>{var o;return(o=this.clerkjs)==null?void 0:o.redirectToUserProfile()};if(this.clerkjs&&T(this,N))return i();this.premountMethodCalls.set("redirectToUserProfile",i)},this.redirectToAfterSignUp=()=>{const i=()=>{var o;return(o=this.clerkjs)==null?void 0:o.redirectToAfterSignUp()};if(this.clerkjs&&T(this,N))return i();this.premountMethodCalls.set("redirectToAfterSignUp",i)},this.redirectToAfterSignIn=()=>{const i=()=>{var o;return(o=this.clerkjs)==null?void 0:o.redirectToAfterSignIn()};this.clerkjs&&T(this,N)?i():this.premountMethodCalls.set("redirectToAfterSignIn",i)},this.redirectToAfterSignOut=()=>{const i=()=>{var o;return(o=this.clerkjs)==null?void 0:o.redirectToAfterSignOut()};this.clerkjs&&T(this,N)?i():this.premountMethodCalls.set("redirectToAfterSignOut",i)},this.redirectToOrganizationProfile=async()=>{const i=()=>{var o;return(o=this.clerkjs)==null?void 0:o.redirectToOrganizationProfile()};if(this.clerkjs&&T(this,N))return i();this.premountMethodCalls.set("redirectToOrganizationProfile",i)},this.redirectToCreateOrganization=async()=>{const i=()=>{var o;return(o=this.clerkjs)==null?void 0:o.redirectToCreateOrganization()};if(this.clerkjs&&T(this,N))return i();this.premountMethodCalls.set("redirectToCreateOrganization",i)},this.redirectToWaitlist=async()=>{const i=()=>{var o;return(o=this.clerkjs)==null?void 0:o.redirectToWaitlist()};if(this.clerkjs&&T(this,N))return i();this.premountMethodCalls.set("redirectToWaitlist",i)},this.handleRedirectCallback=i=>{var o;const l=()=>{var s;return(s=this.clerkjs)==null?void 0:s.handleRedirectCallback(i)};this.clerkjs&&T(this,N)?(o=l())==null||o.catch(()=>{}):this.premountMethodCalls.set("handleRedirectCallback",l)},this.handleGoogleOneTapCallback=(i,o)=>{var l;const s=()=>{var a;return(a=this.clerkjs)==null?void 0:a.handleGoogleOneTapCallback(i,o)};this.clerkjs&&T(this,N)?(l=s())==null||l.catch(()=>{}):this.premountMethodCalls.set("handleGoogleOneTapCallback",s)},this.handleEmailLinkVerification=async i=>{const o=()=>{var l;return(l=this.clerkjs)==null?void 0:l.handleEmailLinkVerification(i)};if(this.clerkjs&&T(this,N))return o();this.premountMethodCalls.set("handleEmailLinkVerification",o)},this.authenticateWithMetamask=async i=>{const o=()=>{var l;return(l=this.clerkjs)==null?void 0:l.authenticateWithMetamask(i)};if(this.clerkjs&&T(this,N))return o();this.premountMethodCalls.set("authenticateWithMetamask",o)},this.authenticateWithCoinbaseWallet=async i=>{const o=()=>{var l;return(l=this.clerkjs)==null?void 0:l.authenticateWithCoinbaseWallet(i)};if(this.clerkjs&&T(this,N))return o();this.premountMethodCalls.set("authenticateWithCoinbaseWallet",o)},this.authenticateWithWeb3=async i=>{const o=()=>{var l;return(l=this.clerkjs)==null?void 0:l.authenticateWithWeb3(i)};if(this.clerkjs&&T(this,N))return o();this.premountMethodCalls.set("authenticateWithWeb3",o)},this.authenticateWithGoogleOneTap=async i=>(await Uc(this,ro,Ys).call(this)).authenticateWithGoogleOneTap(i),this.createOrganization=async i=>{const o=()=>{var l;return(l=this.clerkjs)==null?void 0:l.createOrganization(i)};if(this.clerkjs&&T(this,N))return o();this.premountMethodCalls.set("createOrganization",o)},this.getOrganization=async i=>{const o=()=>{var l;return(l=this.clerkjs)==null?void 0:l.getOrganization(i)};if(this.clerkjs&&T(this,N))return o();this.premountMethodCalls.set("getOrganization",o)},this.joinWaitlist=async i=>{const o=()=>{var l;return(l=this.clerkjs)==null?void 0:l.joinWaitlist(i)};if(this.clerkjs&&T(this,N))return o();this.premountMethodCalls.set("joinWaitlist",o)},this.signOut=async(i,o)=>{const l=()=>{var s;return(s=this.clerkjs)==null?void 0:s.signOut(i,o)};if(this.clerkjs&&T(this,N))return l();this.premountMethodCalls.set("signOut",l)};const{Clerk:n=null,publishableKey:r}=t||{};An(this,_n,r),An(this,Wn,t==null?void 0:t.proxyUrl),An(this,Fn,t==null?void 0:t.domain),this.options=t,this.Clerk=n,this.mode=jc()?"browser":"server",this.options.sdkMetadata||(this.options.sdkMetadata=c_),this.loadClerkJS()}get publishableKey(){return T(this,_n)}get loaded(){return T(this,N)}static getOrCreateInstance(t){return(!jc()||!T(this,wn)||t.Clerk&&T(this,wn).Clerk!==t.Clerk)&&An(this,wn,new th(t)),T(this,wn)}static clearInstance(){An(this,wn,null)}get domain(){return typeof window<"u"&&window.location?Wl(T(this,Fn),new URL(window.location.href),""):typeof T(this,Fn)=="function"?jt.throw(Fl):T(this,Fn)||""}get proxyUrl(){return typeof window<"u"&&window.location?Wl(T(this,Wn),new URL(window.location.href),""):typeof T(this,Wn)=="function"?jt.throw(Fl):T(this,Wn)||""}__internal_getOption(t){var n;return(n=this.clerkjs)==null?void 0:n.__internal_getOption(t)}get sdkMetadata(){var t;return((t=this.clerkjs)==null?void 0:t.sdkMetadata)||this.options.sdkMetadata||void 0}get instanceType(){var t;return(t=this.clerkjs)==null?void 0:t.instanceType}get frontendApi(){var t;return((t=this.clerkjs)==null?void 0:t.frontendApi)||""}get isStandardBrowser(){var t;return((t=this.clerkjs)==null?void 0:t.isStandardBrowser)||this.options.standardBrowser||!1}get isSatellite(){return typeof window<"u"&&window.location?Wl(this.options.isSatellite,new URL(window.location.href),!1):typeof this.options.isSatellite=="function"?jt.throw(Fl):!1}async loadClerkJS(){var t;if(!(this.mode!=="browser"||T(this,N))){typeof window<"u"&&(window.__clerk_publishable_key=T(this,_n),window.__clerk_proxy_url=this.proxyUrl,window.__clerk_domain=this.domain);try{if(this.Clerk){let n;q0(this.Clerk)?(n=new this.Clerk(T(this,_n),{proxyUrl:this.proxyUrl,domain:this.domain}),await n.load(this.options)):(n=this.Clerk,n.loaded||await n.load(this.options)),global.Clerk=n}else if(!__BUILD_DISABLE_RHC__){if(global.Clerk||await b0({...this.options,publishableKey:T(this,_n),proxyUrl:this.proxyUrl,domain:this.domain,nonce:this.options.nonce}),!global.Clerk)throw new Error("Failed to download latest ClerkJS. Contact support@clerk.com.");await global.Clerk.load(this.options)}return(t=global.Clerk)!=null&&t.loaded?this.hydrateClerkJS(global.Clerk):void 0}catch(n){const r=n;console.error(r.stack||r.message||r);return}}}get version(){var t;return(t=this.clerkjs)==null?void 0:t.version}get client(){if(this.clerkjs)return this.clerkjs.client}get session(){if(this.clerkjs)return this.clerkjs.session}get user(){if(this.clerkjs)return this.clerkjs.user}get organization(){if(this.clerkjs)return this.clerkjs.organization}get telemetry(){if(this.clerkjs)return this.clerkjs.telemetry}get __unstable__environment(){if(this.clerkjs)return this.clerkjs.__unstable__environment}__unstable__setEnvironment(...t){if(this.clerkjs&&"__unstable__setEnvironment"in this.clerkjs)this.clerkjs.__unstable__setEnvironment(t);else return}};N=new WeakMap;Fn=new WeakMap;Wn=new WeakMap;_n=new WeakMap;wn=new WeakMap;ro=new WeakSet;Ys=function(){return new Promise(e=>{this.addOnLoaded(()=>e(this.clerkjs))})};Dn(eh,wn);var Fc=eh;function d_(e){const{isomorphicClerkOptions:t,initialState:n,children:r}=e,{isomorphicClerk:i,loaded:o}=f_(t),[l,s]=I.useState({client:i.client,session:i.session,user:i.user,organization:i.organization});I.useEffect(()=>i.addListener(L=>s({...L})),[]);const a=Y0(o,l,n),u=I.useMemo(()=>({value:i}),[o]),p=I.useMemo(()=>({value:l.client}),[l.client]),{sessionId:f,session:m,userId:g,user:y,orgId:_,actor:P,organization:c,orgRole:d,orgSlug:h,orgPermissions:w,factorVerificationAge:S}=a,x=I.useMemo(()=>({value:{sessionId:f,userId:g,actor:P,orgId:_,orgRole:d,orgSlug:h,orgPermissions:w,factorVerificationAge:S}}),[f,g,P,_,d,h,S]),R=I.useMemo(()=>({value:m}),[f,m]),k=I.useMemo(()=>({value:y}),[g,y]),$=I.useMemo(()=>({value:{organization:c}}),[_,c]);return I.createElement(c0.Provider,{value:u},I.createElement(Xy.Provider,{value:p},I.createElement(qy.Provider,{value:R},I.createElement(e0,{...$.value},I.createElement(u0.Provider,{value:x},I.createElement(Yy.Provider,{value:k},r))))))}var f_=e=>{const[t,n]=I.useState(!1),r=I.useMemo(()=>Fc.getOrCreateInstance(e),[]);return I.useEffect(()=>{r.__unstable__updateProps({appearance:e.appearance})},[e.appearance]),I.useEffect(()=>{r.__unstable__updateProps({options:e})},[e.localization]),I.useEffect(()=>{r.addOnLoaded(()=>n(!0))},[]),I.useEffect(()=>()=>{Fc.clearInstance()},[]),{isomorphicClerk:r,loaded:t}};function p_(e){const{initialState:t,children:n,...r}=e,{publishableKey:i="",Clerk:o}=r;return o||(i?i&&!Fp(i)&&jt.throwInvalidPublishableKeyError({key:i}):jt.throwMissingPublishableKeyError()),I.createElement(d_,{initialState:t,isomorphicClerkOptions:r},n)}var nh=e_(p_,"ClerkProvider",f0);nh.displayName="ClerkProvider";a0({packageName:"@clerk/clerk-react"});H0("@clerk/clerk-react");const h_=()=>{const[e,t]=v.useState(0),[n,r]=v.useState(0),[i,o]=v.useState(null),[l,s]=v.useState([...kc].sort(()=>Math.random()-.5)),[a,u]=v.useState(!1),[p,f]=v.useState(!0),m=l[e],[g,y]=v.useState(0),[_,P]=v.useState(0),[c,d]=v.useState(!1),[h,w]=v.useState(0),[S,x]=v.useState(0),R=v.useRef(null),k=v.useRef(null),[$,L]=v.useState(!1),b=Qa(),q=yr();let G=Ap().user;const Z=M=>{if(c||$)return;const A=m.roman_representation,B=A===A.toUpperCase();B&&a&&M===A||!B&&M===A.toLowerCase()?(o(!0),y(g+1),setTimeout(()=>{eo(null),500))},Ue=()=>{var A;k.current&&clearInterval(k.current);const M=((A=q.state)==null?void 0:A.timeSpent)||0;R.current=Date.now()-M*1e3,k.current=setInterval(()=>{var B;if(R.current){const he=Date.now(),fe=Math.floor((he-R.current)/1e3);w(fe);const Se=((B=q.state)==null?void 0:B.previousTimeSpent)||0;x(fe+Se)}},1e3)},de=()=>{k.current&&(clearInterval(k.current),k.current=null),R.current=null},V=()=>{de(),L(!0),b("/resume",{state:{timeSpent:h,previousTimeSpent:S-h,progress:n,currentIndex:e,correctAttempts:g,incorrectAttempts:_}})},C=()=>{k.current&&(clearInterval(k.current),k.current=null),s([...kc].sort(()=>Math.random()-.5)),t(0),r(0),o(null),d(!1),w(0),x(0),y(0),P(0),R.current=Date.now(),k.current=setInterval(()=>{if(R.current){const M=Date.now(),A=Math.floor((M-R.current)/1e3);w(A),x(A)}},1e3)};v.useEffect(()=>{var M;return(M=q.state)!=null&&M.timeSpent||(R.current=Date.now()),Ue(),()=>de()},[]),v.useEffect(()=>{c&&de()},[c]),v.useEffect(()=>{var M;if(q.state){const{timeSpent:A,progress:B,currentIndex:he,previousTimeSpent:fe,correctAttempts:Se,incorrectAttempts:Ie}=q.state;A!==void 0&&w(A),B!==void 0&&r(B),he!==void 0&&t(he),fe!==void 0&&x(fe),Se!==void 0&&y(Se),Ie!==void 0&&P(Ie)}return(M=q.state)!=null&&M.timeSpent&&window.history.replaceState({},document.title),Ue(),()=>de()},[q.state]),v.useEffect(()=>{const M=B=>{B.key==="Shift"?u(!0):Z(B.key)},A=B=>{B.key==="Shift"&&u(!1)};return!c&&!$&&(window.addEventListener("keydown",M),window.addEventListener("keyup",A)),()=>{window.removeEventListener("keydown",M),window.removeEventListener("keyup",A)}},[m,a,c,$]);async function z(){let A=g/(g+_)*100/(h*.1);A=Math.trunc(A),console.log(G),(G==null?void 0:G.id)!=null&&await fetch("http://localhost:3232/storeScore?userid="+(G==null?void 0:G.id)+"&score="+A)}return c?(z(),E(iy,{correctAttempts:g,incorrectAttempts:_,timeSpent:S,resetLesson:C})):D("div",{children:[D("div",{className:ht["learn-page"],children:[D("div",{className:ht.linkButtons,children:[E(Et,{to:"/",children:E("button",{style:{padding:"10px 15px",marginTop:"0px",marginLeft:"1200px",backgroundColor:"rgba(160, 222, 68, 0.271)",font:"Apple SD Gothic Neo",borderRadius:"30px",fontSize:"1rem",whiteSpace:"nowrap"},"aria-label":"Back to Homepage",children:"Back to Homepage"})}),E(Gs,{children:E(Zp,{children:E(Et,{to:"/",children:E("button",{style:{padding:"10px 15px",marginTop:"0px",marginLeft:"10px",backgroundColor:"rgba(160, 222, 68, 0.271)",font:"Apple SD Gothic Neo",borderRadius:"30px",fontSize:"1rem",whiteSpace:"nowrap"},"aria-label":"Sign Out",children:"Sign Out"})})})})]}),E("h1",{children:"Learn Korean"}),E(hp,{"data-testid":"progress-bar",progress:n}),D("div",{"data-testid":"card-container",className:ht["card-container"],children:[E(ty,{"data-testid":"card",character:m.character,romanization:m.roman_representation,highlight:i,showHint:p}),D("div",{className:ht["toggle-container"],"data-testid":"toggle-container",children:[E("div",{className:`${ht.slider} ${p?ht["slider-on"]:ht["slider-off"]}`,"data-testid":"toggle-slider",onClick:()=>f(!p),children:E("div",{className:ht["slider-thumb"],"data-testid":"toggle-thumb"})}),E("span",{className:ht["toggle-label"],"data-testid":"toggle-label",children:p?"Hints On":"Hints Off"})]})]}),D("div",{className:ht["timer-container"],children:[E("img",{src:"/pause.png",alt:"Pause",onClick:V,style:{width:"20px",height:"20px",cursor:"pointer",marginRight:"10px",verticalAlign:"middle"}}),D("p",{"data-testid":"timer-text",className:ht["timer-text"],children:["Time: ",Math.floor(S/60),":",("0"+S%60).slice(-2)]})]})]}),E(pp,{onClick:Z})]})},m_="HomePage-module__flagBar___I8b9I",g_="HomePage-module__logo___nIlPQ",v_="HomePage-module__flag___wq1Je",y_="HomePage-module__header___TGGim",__="HomePage-module__slogan___zKamq",w_="HomePage-module__description___pmQey",k_="HomePage-module__videoandstats___Nacwb",S_="HomePage-module__video___yXpOE",C_="HomePage-module__stats___e0zfd",E_="HomePage-module__inputBox___hVQJp",P_="HomePage-module__buttonContainer___Uon-R",x_="HomePage-module__button___oWVWl",I_="HomePage-module__levelDropdown___53445",R_="HomePage-module__dropdownMenu___9P7Zv",O_="HomePage-module__levelButton___ZBh8g",se={flagBar:m_,logo:g_,flag:v_,header:y_,slogan:__,description:w_,videoandstats:k_,video:S_,stats:C_,inputBox:E_,buttonContainer:P_,button:x_,levelDropdown:I_,dropdownMenu:R_,levelButton:O_},T_=()=>{v.useState(!0);const[e,t]=v.useState("");v.useState();const[n,r]=v.useState(!1);let i=Ap().user;return D("div",{children:[D("div",{className:se.flagBar,children:[E("img",{src:"/logo.png",alt:"Logo","aria-label":"Platform logo",className:se.logo}),E("img",{src:"/korea.png",alt:"Flag 1","aria-label":"Korean flag",className:se.flag}),E("img",{src:"/japan.png",alt:"Flag 2","aria-label":"Japanese flag",className:se.flag}),E("img",{src:"/mongolia.png",alt:"Flag 3","aria-label":"Mongolian flag",className:se.flag}),E("img",{src:"/china.png",alt:"Flag 4","aria-label":"Chinese flag",className:se.flag})]}),E("h1",{className:se.header,"aria-label":"Welcome to LanguageGo!",children:"Welcome to LanguageGo!"}),E("h3",{className:se.slogan,"aria-label":"Platform Slogan",children:"The Best Way to Practice Typing in a New Language"}),E("p",{className:se.description,"aria-label":"Platform description",children:"Our platform helps you learn how to type in new languages quickly and effectively. By providing interactive lessons and practice exercises, we focus on building muscle memory for typing different alphabets. Whether you're learning Hangul, Arabic, or any other script, you'll be able to practice typing in a new language and improve your speed and accuracy over time."}),D("div",{className:"videoandstats",children:[D("video",{width:"600",loop:!0,autoPlay:!0,muted:!0,"aria-label":"Demo Video",className:se.video,children:[E("source",{src:"/demo.mp4",type:"video/mp4"}),"Your browser does not support the video tag."]}),D(Gs,{children:[E("p",{className:se.description,children:"If you want your score to be displayed on the Leaderboard, enter or update your User Tag!"}),E("input",{className:se.inputBox,type:"text",value:e,onChange:o=>t(o.target.value),placeholder:"Enter Here!",onKeyPress:async o=>{o.key==="Enter"&&(t(""),await fetch("http://localhost:3232/updateTag?tag="+e+"&userid="+(i==null?void 0:i.id)))}})]})]}),D("div",{className:se.buttonContainer,children:[E(R0,{children:E(u_,{children:E(Et,{to:"/",children:E("button",{"aria-label":"Sign In Button",className:se.button,children:"Sign In"})})})}),E(Gs,{children:E(Zp,{children:E(Et,{to:"/",children:E("button",{"aria-label":"Sign Out Button",className:se.button,children:"Sign Out"})})})}),E(Et,{to:"/leaderBoard",children:E("button",{className:se.button,"aria-label":"Sign In Button",children:"LeaderBoard"})}),E(Et,{to:"/learnPage",children:E("button",{className:se.button,"aria-label":"Learning Mode Button",children:"Learning Mode"})}),D("div",{className:se.levelDropdown,children:[E("button",{className:se.button,onClick:()=>r(!n),"aria-label":"Select Practice Level",children:"Practice Mode"}),n&&D("div",{className:se.dropdownMenu,children:[E(Et,{to:"/practicePage/beginner",children:E("button",{className:se.levelButton,children:"Beginner"})}),E(Et,{to:"/practicePage/intermediate",children:E("button",{className:se.levelButton,children:"Intermediate"})}),E(Et,{to:"/practicePage/advanced",children:E("button",{className:se.levelButton,children:"Advanced"})})]})]})]})]})},L_="PracticePage-module__container___E4FlB",N_="PracticePage-module__textbox___hhNHQ",U_="PracticePage-module__header___JVyil",z_="PracticePage-module__inline___-qSDR",M_="PracticePage-module__stats___1hYfV",j_="PracticePage-module__hidden___b6FFs",A_="PracticePage-module__sentences___i05Jw",B_="PracticePage-module__word___BPtWI",D_="PracticePage-module__correct___EeJte",F_="PracticePage-module__incorrect___AqdTo",W_="PracticePage-module__tooltip___3flq6",$_="PracticePage-module__tooltipCorrection___j781U",V_="PracticePage-module__tooltipTranslations___uAJUn",rt={"page-alignment":"PracticePage-module__page-alignment___WfJpD","statistics-body":"PracticePage-module__statistics-body___DaiQe",container:L_,textbox:N_,header:U_,"progress-bar":"PracticePage-module__progress-bar___048-z",inline:z_,"flex-small":"PracticePage-module__flex-small___WLU8x",stats:M_,hidden:j_,sentences:A_,"practice-page":"PracticePage-module__practice-page___KEVJA","sentence-container":"PracticePage-module__sentence-container___t6wu-",word:B_,correct:D_,incorrect:F_,tooltip:W_,tooltipCorrection:$_,tooltipTranslations:V_},H_=[{id:1,sentence:"사과",translation:"Apple",level:"Beginner",word_translation:{사과:"apple"}},{id:2,sentence:"책",translation:"Book",level:"Beginner",word_translation:{책:"book"}},{id:3,sentence:"커피",translation:"Coffee",level:"Beginner",word_translation:{커피:"coffee"}},{id:4,sentence:"가방",translation:"Bag",level:"Beginner",word_translation:{가방:"bag"}},{id:5,sentence:"자동차",translation:"Car",level:"Beginner",word_translation:{자동차:"car"}},{id:6,sentence:"꽃",translation:"Flower",level:"Beginner",word_translation:{꽃:"flower"}},{id:7,sentence:"집",translation:"House",level:"Beginner",word_translation:{집:"house"}},{id:8,sentence:"친구",translation:"Friend",level:"Beginner",word_translation:{친구:"friend"}},{id:9,sentence:"가족",translation:"Family",level:"Beginner",word_translation:{가족:"family"}},{id:10,sentence:"물",translation:"Water",level:"Beginner",word_translation:{물:"water"}},{id:11,sentence:"불",translation:"Fire",level:"Beginner",word_translation:{불:"fire"}},{id:12,sentence:"고양이",translation:"Cat",level:"Beginner",word_translation:{고양이:"cat"}},{id:13,sentence:"개",translation:"Dog",level:"Beginner",word_translation:{개:"dog"}},{id:14,sentence:"학교",translation:"School",level:"Beginner",word_translation:{학교:"school"}},{id:15,sentence:"공원",translation:"Park",level:"Beginner",word_translation:{공원:"park"}},{id:16,sentence:"식당",translation:"Restaurant",level:"Beginner",word_translation:{식당:"restaurant"}},{id:17,sentence:"시계",translation:"Clock",level:"Beginner",word_translation:{시계:"clock"}},{id:18,sentence:"강아지",translation:"Puppy",level:"Beginner",word_translation:{강아지:"puppy"}},{id:19,sentence:"나무",translation:"Tree",level:"Beginner",word_translation:{나무:"tree"}},{id:20,sentence:"산",translation:"Mountain",level:"Beginner",word_translation:{산:"mountain"}},{id:21,sentence:"강",translation:"River",level:"Beginner",word_translation:{강:"river"}},{id:22,sentence:"바다",translation:"Sea",level:"Beginner",word_translation:{바다:"sea"}},{id:23,sentence:"햇빛",translation:"Sunlight",level:"Beginner",word_translation:{햇빛:"sunlight"}},{id:24,sentence:"구름",translation:"Cloud",level:"Beginner",word_translation:{구름:"cloud"}},{id:25,sentence:"비",translation:"Rain",level:"Beginner",word_translation:{비:"rain"}},{id:26,sentence:"눈",translation:"Snow",level:"Beginner",word_translation:{눈:"snow"}},{id:27,sentence:"사람",translation:"Person",level:"Beginner",word_translation:{사람:"person"}},{id:28,sentence:"아이",translation:"Child",level:"Beginner",word_translation:{아이:"child"}},{id:29,sentence:"학생",translation:"Student",level:"Beginner",word_translation:{학생:"student"}},{id:30,sentence:"선생님",translation:"Teacher",level:"Beginner",word_translation:{선생님:"teacher"}},{id:31,sentence:"음식",translation:"Food",level:"Beginner",word_translation:{음식:"food"}},{id:32,sentence:"물고기",translation:"Fish",level:"Beginner",word_translation:{물고기:"fish"}},{id:33,sentence:"새",translation:"Bird",level:"Beginner",word_translation:{새:"bird"}},{id:34,sentence:"컴퓨터",translation:"Computer",level:"Beginner",word_translation:{컴퓨터:"computer"}},{id:35,sentence:"전화기",translation:"Phone",level:"Beginner",word_translation:{전화기:"phone"}},{id:36,sentence:"의자",translation:"Chair",level:"Beginner",word_translation:{의자:"chair"}},{id:37,sentence:"책상",translation:"Desk",level:"Beginner",word_translation:{책상:"desk"}},{id:38,sentence:"가게",translation:"Shop",level:"Beginner",word_translation:{가게:"shop"}},{id:39,sentence:"영화관",translation:"Cinema",level:"Beginner",word_translation:{영화관:"cinema"}},{id:40,sentence:"병원",translation:"Hospital",level:"Beginner",word_translation:{병원:"hospital"}},{id:41,sentence:"도서관",translation:"Library",level:"Beginner",word_translation:{도서관:"library"}},{id:42,sentence:"시장",translation:"Market",level:"Beginner",word_translation:{시장:"market"}},{id:43,sentence:"도로",translation:"Road",level:"Beginner",word_translation:{도로:"road"}},{id:44,sentence:"버스",translation:"Bus",level:"Beginner",word_translation:{버스:"bus"}},{id:45,sentence:"기차",translation:"Train",level:"Beginner",word_translation:{기차:"train"}},{id:46,sentence:"비행기",translation:"Airplane",level:"Beginner",word_translation:{비행기:"airplane"}},{id:47,sentence:"배",translation:"Boat",level:"Beginner",word_translation:{배:"boat"}},{id:48,sentence:"노트북",translation:"Laptop",level:"Beginner",word_translation:{노트북:"laptop"}},{id:49,sentence:"음악",translation:"Music",level:"Beginner",word_translation:{음악:"music"}},{id:50,sentence:"그림",translation:"Painting",level:"Beginner",word_translation:{그림:"painting"}},{id:51,sentence:"사진",translation:"Photo",level:"Beginner",word_translation:{사진:"photo"}},{id:52,sentence:"신문",translation:"Newspaper",level:"Beginner",word_translation:{신문:"newspaper"}},{id:53,sentence:"잡지",translation:"Magazine",level:"Beginner",word_translation:{잡지:"magazine"}},{id:54,sentence:"전화",translation:"Call",level:"Beginner",word_translation:{전화:"call"}},{id:55,sentence:"배우",translation:"Actor",level:"Beginner",word_translation:{배우:"actor"}},{id:56,sentence:"노래",translation:"Song",level:"Beginner",word_translation:{노래:"song"}},{id:57,sentence:"영화",translation:"Movie",level:"Beginner",word_translation:{영화:"movie"}},{id:58,sentence:"색깔",translation:"Color",level:"Beginner",word_translation:{색깔:"color"}},{id:59,sentence:"지구",translation:"Earth",level:"Beginner",word_translation:{지구:"earth"}},{id:60,sentence:"태양",translation:"Sun",level:"Beginner",word_translation:{태양:"sun"}},{id:61,sentence:"달",translation:"Moon",level:"Beginner",word_translation:{달:"moon"}},{id:62,sentence:"별",translation:"Star",level:"Beginner",word_translation:{별:"star"}},{id:63,sentence:"하늘",translation:"Sky",level:"Beginner",word_translation:{하늘:"sky"}},{id:64,sentence:"바람",translation:"Wind",level:"Beginner",word_translation:{바람:"wind"}},{id:65,sentence:"소금",translation:"Salt",level:"Beginner",word_translation:{소금:"salt"}},{id:66,sentence:"설탕",translation:"Sugar",level:"Beginner",word_translation:{설탕:"sugar"}},{id:67,sentence:"빵",translation:"Bread",level:"Beginner",word_translation:{빵:"bread"}},{id:68,sentence:"오늘 날씨가 어때요?",translation:"How is the weather today?",level:"Intermediate",word_translation:{오늘:"today",날씨가:"weather (subject particle)","어때요?":"how is it?"}},{id:69,sentence:"지금 몇 시입니까?",translation:"What time is it now?",level:"Intermediate",word_translation:{지금:"now",몇:"what","시입니까?":"time is it?"}},{id:70,sentence:"나는 한국어를 배우고 있습니다.",translation:"I am learning Korean.",level:"Intermediate",word_translation:{나는:"I",한국어를:"Korean (object particle)",배우고:"learning","있습니다.":"am"}},{id:71,sentence:"주말에 무엇을 하세요?",translation:"What do you do on weekends?",level:"Intermediate",word_translation:{주말에:"weekend",무엇을:"what","하세요?":"do you do?"}},{id:72,sentence:"어디에 가고 싶으세요?",translation:"Where do you want to go?",level:"Intermediate",word_translation:{어디에:"where",가고:"go","싶으세요?":"do you want?"}},{id:73,sentence:"저는 매일 아침에 조깅을 합니다.",translation:"I jog every morning.",level:"Intermediate",word_translation:{저는:"I",매일:"every day",아침에:"in the morning",조깅을:"jogging","합니다.":"do"}},{id:74,sentence:"이 가방은 누구의 것입니까?",translation:"Whose bag is this?",level:"Intermediate",word_translation:{이:"this",가방은:"bag (topic particle)",누구의:"whose","것입니까?":"is it?"}},{id:75,sentence:"학교에서 친구들을 만났습니다.",translation:"I met my friends at school.",level:"Intermediate",word_translation:{학교에서:"at school",친구들을:"friends (object particle)","만났습니다.":"met"}},{id:76,sentence:"도서관에서 책을 읽고 싶어요.",translation:"I want to read a book in the library.",level:"Intermediate",word_translation:{도서관에서:"at the library",책을:"book (object particle)",읽고:"reading","싶어요.":"want to"}},{id:77,sentence:"비가 오면 우산을 가져오세요.",translation:"Bring an umbrella when it rains.",level:"Intermediate",word_translation:{비가:"rain (subject particle)",오면:"if it rains",우산을:"umbrella (object particle)","가져오세요.":"bring"}},{id:78,sentence:"어제는 정말 피곤했어요.",translation:"I was really tired yesterday.",level:"Intermediate",word_translation:{어제는:"yesterday (topic particle)",정말:"really","피곤했어요.":"was tired"}},{id:79,sentence:"이번 주말에 산에 갈 거예요.",translation:"I will go to the mountain this weekend.",level:"Intermediate",word_translation:{이번:"this",주말에:"weekend",산에:"to the mountain",갈:"will go","거예요.":"am going to"}},{id:80,sentence:"저는 영화를 보는 것을 좋아합니다.",translation:"I enjoy watching movies.",level:"Intermediate",word_translation:{저는:"I",영화를:"movie (object particle)",보는:"watching",것을:"thing (object particle)","좋아합니다.":"enjoy"}},{id:81,sentence:"책 읽는 것이 제 취미입니다.",translation:"Reading books is my hobby.",level:"Intermediate",word_translation:{책:"book",읽는:"reading",것이:"thing (subject particle)",제:"my","취미입니다.":"hobby"}},{id:82,sentence:"새로운 언어를 배우는 것이 재미있어요.",translation:"Learning a new language is fun.",level:"Intermediate",word_translation:{새로운:"new",언어를:"language (object particle)",배우는:"learning",것이:"thing (subject particle)","재미있어요.":"is fun"}},{id:83,sentence:"환경 보호는 우리의 중요한 책임입니다.",translation:"Environmental protection is our important responsibility.",level:"Advanced",word_translation:{환경:"environment",보호는:"protection (topic particle)",우리의:"our",중요한:"important","책임입니다.":"is a responsibility"}},{id:84,sentence:"이 영화는 인간의 감정을 섬세하게 표현합니다.",translation:"This movie delicately portrays human emotions.",level:"Advanced",word_translation:{이:"this",영화는:"movie (topic particle)",인간의:"human's",감정을:"emotions (object particle)",섬세하게:"delicately","표현합니다.":"portrays"}},{id:85,sentence:"사회적 불평등 문제를 해결해야 합니다.",translation:"We must address the issue of social inequality.",level:"Advanced",word_translation:{사회적:"social",불평등:"inequality",문제를:"issue (object particle)",해결해야:"must address","합니다.":"do"}},{id:86,sentence:"기술 발전은 우리의 삶에 많은 변화를 가져왔습니다.",translation:"Technological advancements have brought many changes to our lives.",level:"Advanced",word_translation:{기술:"technology",발전은:"advancement (topic particle)",우리의:"our",삶에:"to life",많은:"many",변화를:"changes (object particle)","가져왔습니다.":"have brought"}},{id:87,sentence:"다양한 문화를 이해하는 것은 중요한 가치입니다.",translation:"Understanding different cultures is an important value.",level:"Advanced",word_translation:{다양한:"varied",문화를:"culture (object particle)",이해하는:"understanding",것은:"thing (subject particle)",중요한:"important","가치입니다.":"is a value"}},{id:88,sentence:"지속 가능한 에너지가 미래를 위한 해결책입니다.",translation:"Sustainable energy is the solution for the future.",level:"Advanced",word_translation:{지속:"sustain",가능한:"possible",에너지가:"energy (subject particle)",미래를:"future (object particle)",위한:"for","해결책입니다.":"is a solution"}},{id:89,sentence:"이 소설은 복잡한 인간 관계를 탐구합니다.",translation:"This novel explores complex human relationships.",level:"Advanced",word_translation:{이:"this",소설은:"novel (topic particle)",복잡한:"complex",인간:"human",관계를:"relationships (object particle)","탐구합니다.":"explores"}},{id:90,sentence:"교육은 개인과 사회의 발전을 위해 필수적입니다.",translation:"Education is essential for the development of individuals and society.",level:"Advanced",word_translation:{교육은:"education (topic particle)",개인과:"individual and",사회의:"society's",발전을:"development (object particle)",위해:"for","필수적입니다.":"is essential"}},{id:91,sentence:"새로운 기술을 배우는 것은 평생의 학습 과정입니다.",translation:"Learning new technologies is a lifelong process.",level:"Advanced",word_translation:{새로운:"new",기술을:"technology (object particle)",배우는:"learning",것은:"thing (subject particle)",평생의:"lifelong",학습:"learning","과정입니다.":"is a process"}},{id:92,sentence:"예술은 우리의 삶을 풍요롭게 만듭니다.",translation:"Art enriches our lives.",level:"Advanced",word_translation:{예술은:"art (topic particle)",우리의:"our",삶을:"life (object particle)",풍요롭게:"enrichingly","만듭니다.":"makes"}},{id:93,sentence:"이 책은 철학에 관한 깊은 통찰을 제공합니다.",translation:"This book provides deep insights into philosophy.",level:"Advanced",word_translation:{이:"this",책은:"book (topic particle)",철학에:"philosophy (dative particle)",관한:"about",깊은:"deep",통찰을:"insight (object particle)","제공합니다.":"provides"}},{id:94,sentence:"공정한 사회를 만들기 위해 모두가 노력해야 합니다.",translation:"Everyone must work to create a fair society.",level:"Advanced",word_translation:{공정한:"fair",사회를:"society (object particle)",만들기:"creating",위해:"for",모두가:"everyone (subject particle)",노력해야:"must work","합니다.":"do"}},{id:95,sentence:"역사는 우리의 미래를 이해하는 데 중요한 열쇠입니다.",translation:"History is an important key to understanding our future.",level:"Advanced",word_translation:{역사는:"history (topic particle)",우리의:"our",미래를:"future (object particle)",이해하는:"understanding",데:"in",중요한:"important","열쇠입니다.":"is a key"}},{id:96,sentence:"문학은 인간의 삶을 반영하는 거울입니다.",translation:"Literature is a mirror reflecting human life.",level:"Advanced",word_translation:{문학은:"literature (topic particle)",인간의:"human's",삶을:"life (object particle)",반영하는:"reflecting","거울입니다.":"is a mirror"}},{id:97,sentence:"경제적 불평등은 현대 사회의 중요한 문제 중 하나입니다.",translation:"Economic inequality is one of the important issues in modern society.",level:"Advanced",word_translation:{경제적:"economic",불평등은:"inequality (topic particle)",현대:"modern",사회의:"society's",중요한:"important",문제:"issue",중:"among","하나입니다.":"is one"}}],b_={sentences:H_},K_=e=>{for(let t=e.length-1;t>0;t--){const n=Math.floor(Math.random()*(t+1));[e[t],e[n]]=[e[n],e[t]]}return e};/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Q_=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),rh=(...e)=>e.filter((t,n,r)=>!!t&&t.trim()!==""&&r.indexOf(t)===n).join(" ").trim();/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */var G_={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Y_=v.forwardRef(({color:e="currentColor",size:t=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:i="",children:o,iconNode:l,...s},a)=>v.createElement("svg",{ref:a,...G_,width:t,height:t,stroke:e,strokeWidth:r?Number(n)*24/Number(t):n,className:rh("lucide",i),...s},[...l.map(([u,p])=>v.createElement(u,p)),...Array.isArray(o)?o:[o]]));/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ih=(e,t)=>{const n=v.forwardRef(({className:r,...i},o)=>v.createElement(Y_,{ref:o,iconNode:t,className:rh(`lucide-${Q_(e)}`,r),...i}));return n.displayName=`${e}`,n};/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const J_=ih("Gamepad2",[["line",{x1:"6",x2:"10",y1:"11",y2:"11",key:"1gktln"}],["line",{x1:"8",x2:"8",y1:"9",y2:"13",key:"qnk9ow"}],["line",{x1:"15",x2:"15.01",y1:"12",y2:"12",key:"krot7o"}],["line",{x1:"18",x2:"18.01",y1:"10",y2:"10",key:"1lcuu1"}],["path",{d:"M17.32 5H6.68a4 4 0 0 0-3.978 3.59c-.006.052-.01.101-.017.152C2.604 9.416 2 14.456 2 16a3 3 0 0 0 3 3c1 0 1.5-.5 2-1l1.414-1.414A2 2 0 0 1 9.828 16h4.344a2 2 0 0 1 1.414.586L17 18c.5.5 1 1 2 1a3 3 0 0 0 3-3c0-1.545-.604-6.584-.685-7.258-.007-.05-.011-.1-.017-.151A4 4 0 0 0 17.32 5z",key:"mfqc10"}]]);/** + * @license lucide-react v0.468.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const X_=ih("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),q_="GameInstructions-module__fadeIn___-DojL",Z_="GameInstructions-module__slideIn___0CL8Q",e1="GameInstructions-module__header___SsHPa",t1="GameInstructions-module__content___f-ACe",n1="GameInstructions-module__section___fQee1",r1="GameInstructions-module__number___OSmSG",i1="GameInstructions-module__bullet___HWV15",o1="GameInstructions-module__indicator___pn4Nu",l1="GameInstructions-module__green___vgCuT",s1="GameInstructions-module__red___ovKdu",a1="GameInstructions-module__footer___rCrX0",re={"instructions-button":"GameInstructions-module__instructions-button___hKR6d","modal-overlay":"GameInstructions-module__modal-overlay___XnUqg",fadeIn:q_,"modal-content":"GameInstructions-module__modal-content___Tquol",slideIn:Z_,header:e1,"header-content":"GameInstructions-module__header-content___EFmB0","close-button":"GameInstructions-module__close-button___qQMfZ",content:t1,section:n1,number:r1,bullet:i1,indicator:o1,green:l1,red:s1,footer:a1,"start-button":"GameInstructions-module__start-button___TxFGu"},u1=()=>{const[e,t]=v.useState(!1);return D(Oh,{children:[E("button",{onClick:()=>t(!0),className:re["instructions-button"],"aria-label":"Show game instructions",children:E(J_,{className:"w-6 h-6 text-[#7fc7b0]"})}),e&&E("div",{className:re["modal-overlay"],children:D("div",{className:re["modal-content"],children:[E("div",{className:re.header,children:E("div",{className:re["header-content"],children:E("h3",{children:"How to Practice"})})}),E("button",{onClick:()=>t(!1),className:re["close-button"],"aria-label":"Close instructions",children:E(X_,{className:"w-6 h-6"})}),D("div",{className:re.content,children:[D("div",{className:re.section,children:[D("h3",{children:[E("span",{className:re.number,children:"1"}),"Getting Started"]}),D("ul",{children:[D("li",{children:[E("span",{className:re.bullet,children:"•"}),"Type the Korean word shown in the box"]}),D("li",{children:[E("span",{className:re.bullet,children:"•"}),"Press space or spacebar to submit"]})]})]}),D("div",{className:re.section,children:[D("h3",{children:[E("span",{className:re.number,children:"2"}),"Game Progress"]}),D("ul",{children:[D("li",{children:[E("span",{className:re.bullet,children:"•"}),D("span",{className:"flex items-center",children:[E("span",{className:`${re.indicator} ${re.green}`}),"Green words show correct answers"]})]}),D("li",{children:[E("span",{className:re.bullet,children:"•"}),D("span",{className:"flex items-center",children:[E("span",{className:`${re.indicator} ${re.red}`}),"Red means try again!"]})]})]})]}),D("div",{className:re.section,children:[D("h3",{children:[E("span",{className:re.number,children:"3"}),"Pro Tips"]}),D("ul",{children:[D("li",{children:[E("span",{className:re.bullet,children:"•"}),"Hover over words to see translations!"]}),D("li",{children:[E("span",{className:re.bullet,children:"•"}),"Use the on-screen keyboard as reference"]})]})]})]}),E("div",{className:re.footer,children:E("button",{onClick:()=>t(!1),className:re["start-button"],children:"Start Typing! ✨"})})]})})]})},c1=()=>{const{level:e}=sv(),[t,n]=v.useState(0),[r,i]=v.useState(0),[o,l]=v.useState(0),[s,a]=v.useState(""),[u,p]=v.useState([]),[f,m]=v.useState([]),[g,y]=v.useState([]),[_,P]=v.useState([]),[c,d]=v.useState(""),[h,w]=v.useState([]),[S,x]=v.useState(!1),[R,k]=v.useState(!1),$=v.useRef(null);v.useEffect(()=>{const V=b_.sentences.filter(z=>z.level.toLowerCase()===(e==null?void 0:e.toLowerCase())).map(z=>({korean:z.sentence.split(" "),translations:z.word_translation})),C=K_(V).slice(0,5);p(C.map(z=>z.korean)),m(C.map(z=>z.translations)),C.length>0&&(y(C[0].korean),P(C[0].translations),d(C[0].korean[0]),w(C.map(z=>z.korean.map(()=>!1))))},[e]);const L=V=>{S||(V===" "?q():(a(C=>C+V),k(!1)))},b=V=>{const C=V.target.value;a(C),k(!1),C.endsWith(" ")&&q()},q=()=>{s.trim()===c?G():Z()},G=()=>{const V=[...h];if(V[r][o]=!0,w(V),o+1C+1),d(g[o+1]);else{const C=r+1;C{k(!0),a("")},Ue=()=>{a(V=>V.slice(0,-1)),k(!1)},de=V=>{const C=g[V];return _[C]||"No translation available"};return u.length===0?E("div",{className:rt["page-alignment"],children:"Loading sentences..."}):D("div",{className:rt["practice-page"],children:[E("div",{className:"flex items-center gap-4",children:D("h1",{children:["Practice Korean (",e,")"]})}),E(u1,{}),E(hp,{progress:t}),E("div",{className:rt["sentence-container"],children:g.map((V,C)=>D("span",{className:`${rt.word} ${h[r][C]?rt.correct:C===o&&R?rt.incorrect:""}`,style:{color:Ca(""),children:"×"})]}),E(pp,{onClick:L,onBackspace:Ue}),S&&E("div",{className:rt["completion-message"],children:"Lesson Complete! Great Job! 🎉"})]})},d1="LeaderBoard-module__header___WPc33",f1="LeaderBoard-module__first___O33yc",p1="LeaderBoard-module__second___20BrR",h1="LeaderBoard-module__third___Ruxw-",m1="LeaderBoard-module__entry___6ugHa",Kl={header:d1,"leaderBoard-page":"LeaderBoard-module__leaderBoard-page___Jzaxl",first:f1,second:p1,third:h1,entry:m1},g1=()=>{const[e,t]=v.useState([]);async function n(){const i=await(await fetch("http://localhost:3232/getScore?userid=all")).json();let o=[];for(const l of i.score){const a=await(await fetch("http://localhost:3232/getScore?userid="+l.userid)).json();if(console.log(a.score[0].tag),a.score[0].tag!=null){let u=new Map(Object.entries(a.score[0]));o.push(u)}}o.sort((l,s)=>{const a=Number(l.get("score"))||0,u=Number(s.get("score"))||0;return a-u}),o.reverse(),t(o)}return v.useEffect(()=>{n()},[]),D("div",{className:Kl["leaderBoard-page"],children:[E(Et,{to:"/",children:E("button",{style:{padding:"10px 15px",marginTop:"0px",marginLeft:"1340px",backgroundColor:"rgba(160, 222, 68, 0.271)",font:"Apple SD Gothic Neo",borderRadius:"30px",fontSize:"1rem",whiteSpace:"nowrap"},"aria-label":"Sign In Button",children:"Back to Homepage"})}),E("h1",{className:Kl.header,children:"Leaderboard"}),E("div",{className:"leaderBoard",children:E("ul",{children:e.map((r,i)=>{let o="";switch(r.get("userid"),i){case 0:o="first";break;case 1:o="second";break;case 2:o="third";break;default:o="entry";break}return D("li",{className:Kl[o],children:[" ",String(r.get("tag"))," - ",String(r.get("score"))]},i)})})})]})},v1=()=>{var l,s;const e=yr(),t=Qa(),n=((l=e.state)==null?void 0:l.timeSpent)||0,r=((s=e.state)==null?void 0:s.previousTimeSpent)||0,i=n+r,o=()=>{var a,u,p,f;t("/learnPage",{state:{timeSpent:n,previousTimeSpent:r,currentIndex:((a=e.state)==null?void 0:a.currentIndex)||0,progress:((u=e.state)==null?void 0:u.progress)||0,correctAttempts:((p=e.state)==null?void 0:p.correctAttempts)||0,incorrectAttempts:((f=e.state)==null?void 0:f.incorrectAttempts)||0}})};return D("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100vh"},children:[E("h1",{style:{fontSize:"4rem",marginBottom:"1rem"},children:"Resume"}),D("p",{style:{fontSize:"2rem"},children:["Timer: ",Math.floor(i/60),":",("0"+i%60).slice(-2)]}),E("button",{onClick:o,style:{padding:"10px 20px",fontSize:"1.5rem",marginTop:"2rem"},children:"Resume Lesson"})]})},y1=()=>E(Lv,{children:D(Ev,{children:[E(Bn,{path:"/",element:E(T_,{})}),E(Bn,{path:"/learnPage",element:E(h_,{})}),E(Bn,{path:"/leaderBoard",element:E(g1,{})}),E(Bn,{path:"/resume",element:E(v1,{})}),E(Bn,{path:"/practicePage/:level",Component:c1})]})});const _1=Ql.createRoot(document.getElementById("root")),w1="pk_test_bWFqb3ItY29icmEtNjUuY2xlcmsuYWNjb3VudHMuZGV2JA";_1.render(E(I.StrictMode,{children:E(nh,{publishableKey:w1,afterSignOutUrl:"/",children:E(y1,{})})})); diff --git a/assets/index-b6d4c6dd.css b/assets/index-b6d4c6dd.css new file mode 100644 index 0000000..33cfbd3 --- /dev/null +++ b/assets/index-b6d4c6dd.css @@ -0,0 +1 @@ +.keyboard-module__keyboard-container___XO3Uw{display:flex;flex-direction:column;align-items:center;max-width:1000px;margin:18px auto}.keyboard-module__row___DsKB4{display:flex;justify-content:center;margin-bottom:5px}.keyboard-module__row___DsKB4:last-child{margin-bottom:0}.keyboard-module__key___w07JY{padding:15px;font-size:20px;box-shadow:0 2px;background:rgba(160,222,68,.271);color:#000;border:2px solid rgb(229,229,229);font-family:Apple SD Gothic Neo;text-align:center;margin:2px;min-width:70px;border-radius:10px;transition:background-color .3s ease;cursor:pointer}.keyboard-module__key-active___GcbSL{background:#dad9d9;box-shadow:none;transform:translateY(5px)}.keyboard-module__special___287Fq{min-width:83px}.keyboard-module__shift___jLB8s{min-width:151px}.keyboard-module__caps___UwdzT{min-width:90px}.keyboard-module__enter___YHM7i{min-width:115px}.keyboard-module__control___gSoD3,.keyboard-module__cmd___vRvAa{min-width:60px}.keyboard-module__tab___Tz-Hr{min-width:85px}.keyboard-module__space___0tPUC{min-width:430px}@keyframes ProgressBar-module__grow___W-xiD{0%{width:0}to{width:100%}}.ProgressBar-module__progress-bar___otpZf{width:75%;height:20px;background-color:#00000013;border-radius:60px;overflow:hidden}.ProgressBar-module__progress-bar___otpZf .ProgressBar-module__progress___y2ih3{height:100%;background-color:#75b800;border-radius:60px;width:0;transition:width .3s ease-in-out;animation:ProgressBar-module__grow___W-xiD .5s ease}.card-module__card___-i0-g{font-size:1.2rem;padding:10px;width:200px;height:250px;text-align:center;border:2px solid #ccc;border-radius:20px;background-color:#fff;box-shadow:0 4px 8px #0000001a;transition:background-color .3s ease,border-color .3s ease;display:flex;flex-direction:column;justify-content:center;align-items:center}.card-module__card___-i0-g.card-module__correct___O3ahR{background-color:#a1e8a1;border-color:#75b800}.card-module__card___-i0-g.card-module__incorrect___teMgK{background-color:#f8a1a1;border-color:red}.card-module__card___-i0-g .card-module__character___XYiCX{font-size:4rem;font-weight:700;color:#060;margin-bottom:10px}.card-module__card___-i0-g .card-module__romanization___F0Dai{margin-bottom:40px;font-size:1.2rem;color:#333;font-weight:700}.LearnPage-module__learn-page___j9TmO{display:flex;flex-direction:column;align-items:center;gap:10px;padding:10px}.LearnPage-module__linkButtons___tC-Pl{display:flex;flex-direction:row}.LearnPage-module__card-container___eUlYO{display:flex;align-items:center;margin:10px 0;flex-direction:column;position:relative}.LearnPage-module__toggle-container___TxWRS{display:flex;justify-content:center;align-items:center;flex-direction:column;gap:10px;position:absolute;bottom:10%}.LearnPage-module__toggle-label___ceaz4{font-size:1rem;color:#333}.LearnPage-module__slider___Mu-AB{width:50px;height:25px;background:#ccc;border-radius:50px;position:relative;cursor:pointer;transition:.3s ease}.LearnPage-module__slider-on___CS6Fd{background:#75b800}.LearnPage-module__slider-off___VOguV{background:#ccc}.LearnPage-module__slider-thumb___ui91J{width:23px;height:23px;background:white;border-radius:50%;position:absolute;top:1px;left:1px;transition:transform .3s ease}.LearnPage-module__slider-on___CS6Fd .LearnPage-module__slider-thumb___ui91J{transform:translate(25px)}.LearnPage-module__slider-off___VOguV .LearnPage-module__slider-thumb___ui91J{transform:translate(0)}.LearnPage-module__timer-container___Au3CI{margin-top:0;display:flex;justify-content:center;align-items:center}.LearnPage-module__timer-text___YbkIv{font-size:1rem;font-weight:700;color:#333}.ResultsPage-module__results-page___I-hoW{text-align:center;margin:20px}.ResultsPage-module__reset-button___F8-ZJ{background-color:#4caf50;color:#fff;border:none;padding:10px 20px;font-size:16px;cursor:pointer;border-radius:5px}.ResultsPage-module__reset-button___F8-ZJ:hover{background-color:#45a049}.HomePage-module__flagBar___I8b9I{display:flex;align-items:center;margin:2% auto;padding:0 5%;background:rgba(137,177,155,.1);border-radius:16px;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.HomePage-module__logo___nIlPQ{width:10%;height:auto;border-radius:12px;margin-right:auto;transition:transform .2s ease}.HomePage-module__logo___nIlPQ:hover{transform:scale(1.05)}.HomePage-module__flag___wq1Je{height:auto;margin-left:2%;width:5%;transition:transform .2s ease;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1))}.HomePage-module__flag___wq1Je:hover{transform:translateY(-5px)}.HomePage-module__header___TGGim{margin-top:2%;font-size:3.5rem;font-weight:900;color:#73a383;text-align:center;text-shadow:2px 2px 0px rgba(137,177,155,.3);letter-spacing:-.5px}.HomePage-module__slogan___zKamq{margin:1% auto;font-size:1.4rem;color:#5a9b84;text-align:center;font-weight:600}.HomePage-module__description___pmQey{margin:2% auto;color:#35343b;font-size:1.3rem;max-width:70%;line-height:1.6;text-align:center;background:rgba(137,177,155,.1);padding:2rem;border-radius:16px;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.HomePage-module__videoandstats___Nacwb{display:flex;align-items:center;gap:2rem;margin:2rem 0;padding:0 5%}.HomePage-module__video___yXpOE{width:40%;height:auto;border:3px solid #89b19b;border-radius:16px;position:relative;left:30%;right:25%;box-shadow:0 8px 20px #0000001a;transition:transform .3s ease}.HomePage-module__video___yXpOE:hover{transform:translateY(-5px)}.HomePage-module__stats___e0zfd{display:flex;align-items:center;flex-direction:column;background:rgba(137,177,155,.1);padding:2rem;border-radius:16px;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);width:40%}.HomePage-module__inputBox___hVQJp{width:200px;height:45px;border:2px solid #89b19b;display:block;justify-content:center;flex-wrap:wrap;gap:1.5rem;margin:3rem auto;background-color:#fff;font-size:1.1rem;border-radius:12px;font-family:Arial,sans-serif;text-align:center;transition:all .2s ease}.HomePage-module__inputBox___hVQJp:focus{outline:none;border-color:#5a9b84;background-color:#edf8fc;box-shadow:0 0 0 3px #89b19b33}.HomePage-module__inputBox___hVQJp::placeholder{color:#5a9b8499}.HomePage-module__buttonContainer___Uon-R{display:flex;justify-content:center;flex-wrap:wrap;gap:1.5rem;margin:3rem 0}.HomePage-module__button___oWVWl{padding:1rem 2.5rem;background:linear-gradient(45deg,#89b19b,#5a9b84);border-radius:30px;font-size:1.1rem;color:#fff;border:none;cursor:pointer;text-align:center;transition:all .2s ease;box-shadow:0 4px 15px #89b19b4d;font-weight:600;letter-spacing:.5px}.HomePage-module__button___oWVWl:hover{transform:translateY(-2px);box-shadow:0 6px 20px #89b19b66;background:linear-gradient(45deg,rgb(152.3520408163,187.1479591837,168.0102040816),rgb(103.4795918367,167.0204081633,144.5367346939))}.HomePage-module__button___oWVWl:active{transform:translateY(1px);box-shadow:0 2px 10px #89b19b4d}.HomePage-module__levelDropdown___53445{position:relative;display:inline-block}.HomePage-module__levelDropdown___53445 a{text-decoration:none}.HomePage-module__dropdownMenu___9P7Zv{position:absolute;top:100%;left:0;background:white;border-radius:12px;box-shadow:0 4px 12px #0000001a;padding:.5rem;z-index:10;min-width:160px;margin-top:.5rem}.HomePage-module__dropdownMenu___9P7Zv .HomePage-module__levelButton___ZBh8g{display:block;width:100%;padding:.75rem 1.5rem;text-align:left;background:none;border:none;color:#5a9b84;font-size:1rem;cursor:pointer;border-radius:8px;transition:all .2s ease}.HomePage-module__dropdownMenu___9P7Zv .HomePage-module__levelButton___ZBh8g:hover{background:#f5f5f5;color:#89b19b}.HomePage-module__dropdownMenu___9P7Zv .HomePage-module__levelButton___ZBh8g:not(:last-child){margin-bottom:.25rem}.PracticePage-module__page-alignment___WfJpD{display:flex;justify-content:center;align-items:center;flex-direction:column;text-align:center}.PracticePage-module__statistics-body___DaiQe{display:flex;justify-content:center;align-items:center;flex-direction:column;gap:10px}.PracticePage-module__container___E4FlB{text-wrap:nowrap}.PracticePage-module__textbox___hhNHQ{width:200px;height:60px;margin:10px auto}.PracticePage-module__header___JVyil{display:flex;justify-content:center;align-items:center;gap:10px;padding:10px;flex-direction:row}.PracticePage-module__progress-bar___048-z{width:800px}.PracticePage-module__inline___-qSDR{display:flex;justify-content:space-between;direction:row}.PracticePage-module__flex-small___WLU8x{flex-shrink:1}.PracticePage-module__stats___1hYfV{position:relative;right:100px;border:5px solid rgb(160,222,100);padding:10px;border-radius:10px}.PracticePage-module__hidden___b6FFs{visibility:hidden}.PracticePage-module__sentences___i05Jw{display:flex;justify-content:center;direction:row;gap:15px}.PracticePage-module__practice-page___KEVJA{display:flex;flex-direction:column;align-items:center;gap:20px}.PracticePage-module__sentence-container___t6wu-{display:flex;gap:10px;font-size:1.5rem}.PracticePage-module__word___BPtWI{padding:5px 10px;border-radius:5px}.PracticePage-module__correct___EeJte{background-color:#dce4e1;color:2px solid #4fac6b}.PracticePage-module__incorrect___AqdTo{background-color:#f8d7da;color:#721c24}.PracticePage-module__word___BPtWI{position:relative;cursor:help}.PracticePage-module__word___BPtWI:hover .PracticePage-module__tooltip___3flq6{visibility:visible;opacity:1}.PracticePage-module__word___BPtWI .PracticePage-module__tooltip___3flq6{visibility:hidden;opacity:0;position:absolute;bottom:100%;left:50%;transform:translate(-50%);padding:5px 10px;background-color:#000c;color:#fff;border-radius:4px;font-size:14px;white-space:nowrap;transition:opacity .2s ease;z-index:1000}.PracticePage-module__word___BPtWI .PracticePage-module__tooltip___3flq6 .PracticePage-module__tooltipCorrection___j781U{font-size:12px;color:gold;margin-top:4px;font-style:italic}.PracticePage-module__word___BPtWI .PracticePage-module__tooltip___3flq6 .PracticePage-module__tooltipTranslations___uAJUn{font-weight:700;color:#fff}.PracticePage-module__word___BPtWI .PracticePage-module__tooltip___3flq6:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border-width:5px;border-style:solid;border-color:rgba(0,0,0,.8) transparent transparent transparent}.GameInstructions-module__instructions-button___hKR6d{display:inline-flex;align-items:center;transition:transform .2s ease}.GameInstructions-module__instructions-button___hKR6d:hover{transform:scale(1.1)}.GameInstructions-module__instructions-button___hKR6d:hover svg{color:#5a9b84}.GameInstructions-module__instructions-button___hKR6d:active{transform:scale(.95)}.GameInstructions-module__instructions-button___hKR6d svg{color:#89b19b;transition:color .2s ease}.GameInstructions-module__modal-overlay___XnUqg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:1rem;background:rgba(0,0,0,.6);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:GameInstructions-module__fadeIn___-DojL .3s ease}.GameInstructions-module__modal-content___Tquol{position:relative;width:20rem;max-width:90vw;background:#f5e6d8;border-radius:.75rem;border:3px solid #89b19b;overflow:hidden;box-shadow:0 8px 20px #0003;animation:GameInstructions-module__slideIn___0CL8Q .3s ease}.GameInstructions-module__header___SsHPa{background:#89b19b;padding:.75rem}.GameInstructions-module__header-content___EFmB0{background:#89b19b;border:3px solid #d8e0dc;border-radius:.5rem;padding:.5rem;text-align:center}.GameInstructions-module__header-content___EFmB0 h3{color:#fbeeca;font-weight:700;font-size:1rem;text-shadow:1px 1px 0 rgba(0,0,0,.3)}.GameInstructions-module__close-button___qQMfZ{position:absolute;right:.75rem;top:.75rem;color:#89b19b;transition:all .2s ease;z-index:1}.GameInstructions-module__close-button___qQMfZ:hover{color:#5a9b84;transform:rotate(90deg)}.GameInstructions-module__close-button___qQMfZ svg{width:1.25rem;height:1.25rem}.GameInstructions-module__content___f-ACe{padding:.75rem;display:flex;flex-direction:column;gap:.75rem}.GameInstructions-module__section___fQee1{background:#d8e0dc;border-radius:.5rem;border:2px solid #89b19b;padding:.75rem;transition:transform .2s ease,box-shadow .2s ease}.GameInstructions-module__section___fQee1:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.GameInstructions-module__section___fQee1 h3{color:#5a9b84;font-size:.9rem;font-weight:600;margin-bottom:.5rem;display:flex;align-items:center}.GameInstructions-module__section___fQee1 h3 .GameInstructions-module__number___OSmSG{background:#89b19b;color:#fbeeca;width:1.5rem;height:1.5rem;border-radius:.375rem;display:flex;justify-content:space-around;margin-right:.5rem;font-size:.875rem;box-shadow:0 2px #0000001a}.GameInstructions-module__section___fQee1 ul{margin-left:.5rem;color:#5a9b84;display:flex;flex-direction:column;gap:.5rem;font-size:.85rem}.GameInstructions-module__section___fQee1 ul li{display:flex;align-items:start;padding-left:.25rem}.GameInstructions-module__section___fQee1 ul li .GameInstructions-module__bullet___HWV15{margin-right:.375rem;min-width:.75rem}.GameInstructions-module__section___fQee1 ul li .GameInstructions-module__indicator___pn4Nu{display:inline-block;width:.625rem;height:.625rem;border-radius:50%;margin-right:.375rem}.GameInstructions-module__section___fQee1 ul li .GameInstructions-module__indicator___pn4Nu.GameInstructions-module__green___vgCuT{background:#4ade80;box-shadow:0 0 6px #4ade8066}.GameInstructions-module__section___fQee1 ul li .GameInstructions-module__indicator___pn4Nu.GameInstructions-module__red___ovKdu{background:#f87171;box-shadow:0 0 6px #f8717166}.GameInstructions-module__footer___rCrX0{padding:.5rem .75rem .75rem}.GameInstructions-module__start-button___TxFGu{width:100%;background:#89b19b;color:#fbeeca;padding:.625rem 1rem;border-radius:.5rem;font-weight:700;font-size:1rem;border:2px solid #5a9b84;box-shadow:0 3px #5a9b84;text-shadow:1px 1px 0 rgba(0,0,0,.2);transition:all .2s ease}.GameInstructions-module__start-button___TxFGu:hover{transform:translateY(-2px);box-shadow:0 5px #5a9b84;background:rgb(152.3520408163,187.1479591837,168.0102040816)}.GameInstructions-module__start-button___TxFGu:active{transform:translateY(2px);box-shadow:0 1px #5a9b84}@keyframes GameInstructions-module__fadeIn___-DojL{0%{opacity:0}to{opacity:1}}@keyframes GameInstructions-module__slideIn___0CL8Q{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.LeaderBoard-module__header___WPc33{margin-left:40px}.LeaderBoard-module__leaderBoard-page___Jzaxl{display:flex;flex-direction:column;align-items:center;gap:20px;width:100vw;height:100vh;padding:20px;background-image:url(/languageGO/assets/LeaderBoardBackground-b8eacfcd.jpg)}.LeaderBoard-module__first___O33yc{margin:10px;display:flex;justify-content:center;width:600px;border-radius:5px;padding:10px;background-color:#ebc460}.LeaderBoard-module__second___20BrR{margin:10px;display:flex;justify-content:center;width:600px;border-radius:5px;padding:10px;background-color:silver}.LeaderBoard-module__third___Ruxw-{margin:10px;display:flex;justify-content:center;width:600px;border-radius:5px;padding:10px;background-color:#9e7305}.LeaderBoard-module__entry___6ugHa{margin:10px;display:flex;justify-content:center;width:600px;border-radius:5px;padding:10px}body{margin:0;font-family:Arial,sans-serif;background-color:#f9f9f9}h1{text-align:center} diff --git a/china.png b/china.png new file mode 100644 index 0000000..2ef7bd8 Binary files /dev/null and b/china.png differ diff --git a/client/.github/workflows/playwright.yml b/client/.github/workflows/playwright.yml new file mode 100644 index 0000000..3eb1314 --- /dev/null +++ b/client/.github/workflows/playwright.yml @@ -0,0 +1,27 @@ +name: Playwright Tests +on: + push: + branches: [ main, master ] + pull_request: + branches: [ main, master ] +jobs: + test: + timeout-minutes: 60 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: lts/* + - name: Install dependencies + run: npm ci + - name: Install Playwright Browsers + run: npx playwright install --with-deps + - name: Run Playwright tests + run: npx playwright test + - uses: actions/upload-artifact@v4 + if: ${{ !cancelled() }} + with: + name: playwright-report + path: playwright-report/ + retention-days: 30 diff --git a/client/.gitignore b/client/.gitignore new file mode 100644 index 0000000..68c5d18 --- /dev/null +++ b/client/.gitignore @@ -0,0 +1,5 @@ +node_modules/ +/test-results/ +/playwright-report/ +/blob-report/ +/playwright/.cache/ diff --git a/demo.mp4 b/demo.mp4 new file mode 100644 index 0000000..70311c3 Binary files /dev/null and b/demo.mp4 differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..49b5ba4 --- /dev/null +++ b/index.html @@ -0,0 +1,14 @@ + + + + + + cs0320 Maps + + + + +
+ + + diff --git a/japan.png b/japan.png new file mode 100644 index 0000000..74c5fbd Binary files /dev/null and b/japan.png differ diff --git a/korea.png b/korea.png new file mode 100644 index 0000000..c5b20a4 Binary files /dev/null and b/korea.png differ diff --git a/logo.png b/logo.png new file mode 100644 index 0000000..653535e Binary files /dev/null and b/logo.png differ diff --git a/mongolia.png b/mongolia.png new file mode 100644 index 0000000..bf82ffc Binary files /dev/null and b/mongolia.png differ diff --git a/node_modules/.bin/loose-envify b/node_modules/.bin/loose-envify new file mode 120000 index 0000000..ed9009c --- /dev/null +++ b/node_modules/.bin/loose-envify @@ -0,0 +1 @@ +../loose-envify/cli.js \ No newline at end of file diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json new file mode 100644 index 0000000..b7f8ef4 --- /dev/null +++ b/node_modules/.package-lock.json @@ -0,0 +1,1209 @@ +{ + "name": "term-project-language-go", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/@clerk/clerk-react": { + "version": "5.15.2", + "resolved": "https://registry.npmjs.org/@clerk/clerk-react/-/clerk-react-5.15.2.tgz", + "integrity": "sha512-0oPW9lgJa8Gx0+flNPAlfZOPHaC/c+I+9zAEGZ3XzLnhlsMmN5XQGahdUiaMS6vdTllAx56LIfRbRkCde1mmEg==", + "dependencies": { + "@clerk/shared": "2.12.0", + "@clerk/types": "4.31.0", + "tslib": "2.4.1" + }, + "engines": { + "node": ">=18.17.0" + }, + "peerDependencies": { + "react": "^18 || ^19.0.0-0", + "react-dom": "^18 || ^19.0.0-0" + } + }, + "node_modules/@clerk/shared": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@clerk/shared/-/shared-2.12.0.tgz", + "integrity": "sha512-6PgkK93SgsF/Vwp07BMbpbpRWZ+XgxB48r3N6mU+x59zkRiTlr0EeBKec/pRFvm6FGEOOUDO0Q+V2Bs6mo2vPQ==", + "hasInstallScript": true, + "dependencies": { + "@clerk/types": "4.31.0", + "dequal": "2.0.3", + "glob-to-regexp": "0.4.1", + "js-cookie": "3.0.5", + "std-env": "^3.7.0", + "swr": "^2.2.0" + }, + "engines": { + "node": ">=18.17.0" + }, + "peerDependencies": { + "react": "^18 || ^19.0.0-0", + "react-dom": "^18 || ^19.0.0-0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@clerk/types": { + "version": "4.31.0", + "resolved": "https://registry.npmjs.org/@clerk/types/-/types-4.31.0.tgz", + "integrity": "sha512-Cs+4fcVr404IWYVcucZXHCg8xUyghQkjSI98Bw+5XdkTdMThIYcjCuaF1g1da4SkMWlzfQYpIxQOc7lXvhKJ6Q==", + "dependencies": { + "csstype": "3.1.1" + }, + "engines": { + "node": ">=18.17.0" + } + }, + "node_modules/@firebase/analytics": { + "version": "0.10.9", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.9.tgz", + "integrity": "sha512-FrvW6u6xDBKXUGYUy1WIUh0J9tvbppMsk90mig0JhHST8iLveKu/dIBVeVE/ZYZhmXy4fkI7SPSWvD1V0O4tXw==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.10", + "@firebase/installations": "0.6.10", + "@firebase/logger": "0.4.3", + "@firebase/util": "1.10.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/analytics-compat": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.15.tgz", + "integrity": "sha512-C5to422Sr8FkL0MPwXcIecbMnF4o2Ll7MtoWvIm4Q/LPJvvM+tWa1DiU+LzsCdsd1/CYE9EIW9Ma3ko9XnAAYw==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/analytics": "0.10.9", + "@firebase/analytics-types": "0.8.2", + "@firebase/component": "0.6.10", + "@firebase/util": "1.10.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/analytics-types": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.8.2.tgz", + "integrity": "sha512-EnzNNLh+9/sJsimsA/FGqzakmrAUKLeJvjRHlg8df1f97NLUlFidk9600y0ZgWOp3CAxn6Hjtk+08tixlUOWyw==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/app": { + "version": "0.10.15", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.10.15.tgz", + "integrity": "sha512-he6qlG3pmwL+LHdG/BrSMBQeJzzutciq4fpXN3lGa1uSwYSijJ24VtakS/bP2X9SiDf8jGywJ4u+OgXAenJsNg==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.10", + "@firebase/logger": "0.4.3", + "@firebase/util": "1.10.1", + "idb": "7.1.1", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@firebase/app-check": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.8.9.tgz", + "integrity": "sha512-YzVn1mMLzD2JboMPVVO0Pe20YOgWzrF+aXoAmmd0v3xec051n83YpxSUZbacL69uYvk0dHrEsbea44QtQ5WPDA==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.10", + "@firebase/logger": "0.4.3", + "@firebase/util": "1.10.1", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/app-check-compat": { + "version": "0.3.16", + "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.16.tgz", + "integrity": "sha512-AxIGzLRXrTFNL+H6V+4BO0w/gERloROfRbWI/FoJUnQd0qPZIzyfdHZBbThFzFGLfDt/mVs2kdjYFx/l9I8NhQ==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/app-check": "0.8.9", + "@firebase/app-check-types": "0.5.2", + "@firebase/component": "0.6.10", + "@firebase/logger": "0.4.3", + "@firebase/util": "1.10.1", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/app-check-interop-types": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.2.tgz", + "integrity": "sha512-LMs47Vinv2HBMZi49C09dJxp0QT5LwDzFaVGf/+ITHe3BlIhUiLNttkATSXplc89A2lAaeTqjgqVkiRfUGyQiQ==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/app-check-types": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.5.2.tgz", + "integrity": "sha512-FSOEzTzL5bLUbD2co3Zut46iyPWML6xc4x+78TeaXMSuJap5QObfb+rVvZJtla3asN4RwU7elaQaduP+HFizDA==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/app-compat": { + "version": "0.2.45", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.45.tgz", + "integrity": "sha512-5rYbXq1ndtMTg+07oH4WrkYuP+NZq61uzVwW1hlmybp/gr4cXq2SfaP9fc6/9IzTKmu3dh3H0fjj++HG7Z7o/w==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/app": "0.10.15", + "@firebase/component": "0.6.10", + "@firebase/logger": "0.4.3", + "@firebase/util": "1.10.1", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@firebase/app-types": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.2.tgz", + "integrity": "sha512-oMEZ1TDlBz479lmABwWsWjzHwheQKiAgnuKxE0pz0IXCVx7/rtlkx1fQ6GfgK24WCrxDKMplZrT50Kh04iMbXQ==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/auth": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.8.0.tgz", + "integrity": "sha512-/O7UDWE5S5ux456fzNHSLx/0YN/Kykw/WyAzgDQ6wvkddZhSEmPX19EzxgsFldzhuFjsl5uOZTz8kzlosCiJjg==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.10", + "@firebase/logger": "0.4.3", + "@firebase/util": "1.10.1", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@react-native-async-storage/async-storage": "^1.18.1" + }, + "peerDependenciesMeta": { + "@react-native-async-storage/async-storage": { + "optional": true + } + } + }, + "node_modules/@firebase/auth-compat": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.5.15.tgz", + "integrity": "sha512-jz6k1ridPiecKI8CBRiqCM6IMOhwYp2MD+YvoxnMiK8nQLSTm57GvHETlPNX3WlbyQnCjMCOvrAhe27whyxAEg==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/auth": "1.8.0", + "@firebase/auth-types": "0.12.2", + "@firebase/component": "0.6.10", + "@firebase/util": "1.10.1", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/auth-interop-types": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.3.tgz", + "integrity": "sha512-Fc9wuJGgxoxQeavybiuwgyi+0rssr76b+nHpj+eGhXFYAdudMWyfBHvFL/I5fEHniUM/UQdFzi9VXJK2iZF7FQ==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/auth-types": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.12.2.tgz", + "integrity": "sha512-qsEBaRMoGvHO10unlDJhaKSuPn4pyoTtlQuP1ghZfzB6rNQPuhp/N/DcFZxm9i4v0SogjCbf9reWupwIvfmH6w==", + "license": "Apache-2.0", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/component": { + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.10.tgz", + "integrity": "sha512-OsNbEKyz9iLZSmMUhsl6+kCADzte00iisJIRUspnUqvDCX+RSGZOBIqekukv/jN177ovjApBQNFaxSYIDc/SyQ==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/util": "1.10.1", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@firebase/data-connect": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@firebase/data-connect/-/data-connect-0.1.1.tgz", + "integrity": "sha512-RBJ7XE/a3oXFv31Jlw8cbMRdsxQoI8F3L7xm4n93ab+bIr1NQUiYGgW9L7TTw7obdNev91ZnW0xfqJtXcPA5yA==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/auth-interop-types": "0.2.3", + "@firebase/component": "0.6.10", + "@firebase/logger": "0.4.3", + "@firebase/util": "1.10.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/database": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.9.tgz", + "integrity": "sha512-EkiPSKSu2TJJGtOjyISASf3UFpFJDil1lMbfqnxilfbmIsilvC8DzgjuLoYD+eOitcug4wtU9Fh1tt2vgBhskA==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/app-check-interop-types": "0.3.2", + "@firebase/auth-interop-types": "0.2.3", + "@firebase/component": "0.6.10", + "@firebase/logger": "0.4.3", + "@firebase/util": "1.10.1", + "faye-websocket": "0.11.4", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@firebase/database-compat": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-2.0.0.tgz", + "integrity": "sha512-2xlODKWwf/vNAxCmou0GFhymx2pqZKkhXMN9B5aiTjZ6+81sOxGim53ELY2lj+qKG2IvgiCYFc4X+ZJA2Ad5vg==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.10", + "@firebase/database": "1.0.9", + "@firebase/database-types": "1.0.6", + "@firebase/logger": "0.4.3", + "@firebase/util": "1.10.1", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@firebase/database-types": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.6.tgz", + "integrity": "sha512-sMI7IynSZBsyGbUugc8PKE1jwKbnvaieAz/RxuM57PZQNCi6Rteiviwcw/jqZOX6igqYJwXWZ3UzKOZo2nUDRA==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/app-types": "0.9.2", + "@firebase/util": "1.10.1" + } + }, + "node_modules/@firebase/firestore": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.7.4.tgz", + "integrity": "sha512-K2nq4w+NF8J1waGawY5OHLawP/Aw5CYxyDstVv1NZemGPcM3U+LZ9EPaXr1PatYIrPA7fS4DxZoWcbB0aGJ8Zg==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.10", + "@firebase/logger": "0.4.3", + "@firebase/util": "1.10.1", + "@firebase/webchannel-wrapper": "1.0.2", + "@grpc/grpc-js": "~1.9.0", + "@grpc/proto-loader": "^0.7.8", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/firestore-compat": { + "version": "0.3.39", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.39.tgz", + "integrity": "sha512-CsK8g34jNeHx95LISDRTcArJLonW+zJCqHI1Ez9WNiLAK2X8FeQ4UiD+RwOwxAIR+t2a6xED/5Fe6ZIqx7MuoQ==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.10", + "@firebase/firestore": "4.7.4", + "@firebase/firestore-types": "3.0.2", + "@firebase/util": "1.10.1", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/firestore-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-3.0.2.tgz", + "integrity": "sha512-wp1A+t5rI2Qc/2q7r2ZpjUXkRVPtGMd6zCLsiWurjsQpqPgFin3AhNibKcIzoF2rnToNa/XYtyWXuifjOOwDgg==", + "license": "Apache-2.0", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/functions": { + "version": "0.11.9", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.11.9.tgz", + "integrity": "sha512-dhO5IUfQRCsrc20YD20nSOX+QCT+cH6N86HlZOLz2XgyEFgzOdBQnUot4EabBJQRkMBI7fZWUrbYfRcnov53ug==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/app-check-interop-types": "0.3.2", + "@firebase/auth-interop-types": "0.2.3", + "@firebase/component": "0.6.10", + "@firebase/messaging-interop-types": "0.2.2", + "@firebase/util": "1.10.1", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/functions-compat": { + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.15.tgz", + "integrity": "sha512-eiHpc6Sd9Y/SNhBsGi944SapiFbfTPKsiSUQ74QxNSs0yoxvABeIRolVMFk4TokP57NGmstGYpYte02XGNPcYw==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.10", + "@firebase/functions": "0.11.9", + "@firebase/functions-types": "0.6.2", + "@firebase/util": "1.10.1", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/functions-types": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.6.2.tgz", + "integrity": "sha512-0KiJ9lZ28nS2iJJvimpY4nNccV21rkQyor5Iheu/nq8aKXJqtJdeSlZDspjPSBBiHRzo7/GMUttegnsEITqR+w==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/installations": { + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.10.tgz", + "integrity": "sha512-TuGSOMqkFrllxa0X/8VZIqBCRH4POndU/iWKWkRmkh12+/xKSpdp+y/kWaVbsySrelltan6LeYlcYPmLibWbwg==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.10", + "@firebase/util": "1.10.1", + "idb": "7.1.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/installations-compat": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.10.tgz", + "integrity": "sha512-YTonkcVz3AK7RF8xFhvs5CwDuJ0xbzzCJIwXoV14gnzdYbMgy6vWlUUbzkvbtEDXzPRHB0n7aGZl56oy9dLOFw==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.10", + "@firebase/installations": "0.6.10", + "@firebase/installations-types": "0.5.2", + "@firebase/util": "1.10.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/installations-types": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.5.2.tgz", + "integrity": "sha512-que84TqGRZJpJKHBlF2pkvc1YcXrtEDOVGiDjovP/a3s6W4nlbohGXEsBJo0JCeeg/UG9A+DEZVDUV9GpklUzA==", + "license": "Apache-2.0", + "peerDependencies": { + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/logger": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.3.tgz", + "integrity": "sha512-Th42bWJg18EF5bJwhRosn2M/eYxmbWCwXZr4hHX7ltO0SE3QLrpgiMKeRBR/NW7vJke7i0n3i8esbCW2s93qBw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@firebase/messaging": { + "version": "0.12.13", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.13.tgz", + "integrity": "sha512-YLa8PWl+BgiOVR5WOyzl21fVJFJeBRfniNuN25d9DBrQzppSAahuN6yS+vt1OIjvZNPN4pZ/lcRLYupbGu4W0w==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.10", + "@firebase/installations": "0.6.10", + "@firebase/messaging-interop-types": "0.2.2", + "@firebase/util": "1.10.1", + "idb": "7.1.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/messaging-compat": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.13.tgz", + "integrity": "sha512-9ootPClS6m2c2KIzo7AqSHaWzAw28zWcjQPjVv7WeQDu6wjufpbOg+7tuVzb+gqpF9Issa3lDoYOwlO0ZudO3g==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.10", + "@firebase/messaging": "0.12.13", + "@firebase/util": "1.10.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/messaging-interop-types": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.2.tgz", + "integrity": "sha512-l68HXbuD2PPzDUOFb3aG+nZj5KA3INcPwlocwLZOzPp9rFM9yeuI9YLl6DQfguTX5eAGxO0doTR+rDLDvQb5tA==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/performance": { + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.10.tgz", + "integrity": "sha512-x/mNYKGxq7A+QV0EiEZeD2S+E+kw+UcZ8FXuE7qDJyGGt/0Wd+bIIL7RakG/VrFt7/UYc//nKygDc7/Ig7sOmQ==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.10", + "@firebase/installations": "0.6.10", + "@firebase/logger": "0.4.3", + "@firebase/util": "1.10.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/performance-compat": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.10.tgz", + "integrity": "sha512-0h1qYkF6I79DSSpHfTQFvb91fo8shmmwiPzWFYAPdPK02bSWpKwVssNYlZX2iUnumxerDMbl7dWN+Im/W3bnXA==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.10", + "@firebase/logger": "0.4.3", + "@firebase/performance": "0.6.10", + "@firebase/performance-types": "0.2.2", + "@firebase/util": "1.10.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/performance-types": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.2.2.tgz", + "integrity": "sha512-gVq0/lAClVH5STrIdKnHnCo2UcPLjJlDUoEB/tB4KM+hAeHUxWKnpT0nemUPvxZ5nbdY/pybeyMe8Cs29gEcHA==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/remote-config": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.10.tgz", + "integrity": "sha512-jTRjy3TdqzVna19m5a1HEHE5BG4Z3BQTxBgvQRTmMKlHacx4QS0CToAas7R9M9UkxpgFcVuAE7FpWIOWQGCEWw==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.10", + "@firebase/installations": "0.6.10", + "@firebase/logger": "0.4.3", + "@firebase/util": "1.10.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/remote-config-compat": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.10.tgz", + "integrity": "sha512-fIi5OB2zk0zpChMV/tTd0oEZcZI8TlwQDlLlcrDpMOV5l5dqd0JNlWKh6Fwmh4izmytk+rZIAIpnak/NjGVesQ==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.10", + "@firebase/logger": "0.4.3", + "@firebase/remote-config": "0.4.10", + "@firebase/remote-config-types": "0.3.2", + "@firebase/util": "1.10.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/remote-config-types": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.3.2.tgz", + "integrity": "sha512-0BC4+Ud7y2aPTyhXJTMTFfrGGLqdYXrUB9sJVAB8NiqJswDTc4/2qrE/yfUbnQJhbSi6ZaTTBKyG3n1nplssaA==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/storage": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.13.3.tgz", + "integrity": "sha512-B5HiJ7isYKaT4dOEV43f2ySdhQxzq+SQEm7lqXebJ8AYCsebdHrgGzrPR0LR962xGjPzJHFKx63gA8Be/P2MCw==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.10", + "@firebase/util": "1.10.1", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/storage-compat": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.13.tgz", + "integrity": "sha512-15kje7JALswRCBKsCSvKg5FbqUYykaIMqMbZRD7I6uVRWwdyTvez5MBQfMhBia2JcEmPiDpXhJTXH4PAWFiA8g==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.10", + "@firebase/storage": "0.13.3", + "@firebase/storage-types": "0.8.2", + "@firebase/util": "1.10.1", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/storage-types": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.8.2.tgz", + "integrity": "sha512-0vWu99rdey0g53lA7IShoA2Lol1jfnPovzLDUBuon65K7uKG9G+L5uO05brD9pMw+l4HRFw23ah3GwTGpEav6g==", + "license": "Apache-2.0", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/util": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.10.1.tgz", + "integrity": "sha512-AIhFnCCjM8FmCqSNlNPTuOk3+gpHC1RkeNUBLtPbcqGYpN5MxI5q7Yby+rxycweOZOCboDzfIj8WyaY4tpQG/g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@firebase/vertexai": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@firebase/vertexai/-/vertexai-1.0.0.tgz", + "integrity": "sha512-48N3Lp/9GgiCCRfrSdHS+Y1IiMdYXvnHFO/f+HL1PgUtBq7WQ/fWmYOX3mzAN36zvytq13nb68ImF+GALopp+Q==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/app-check-interop-types": "0.3.2", + "@firebase/component": "0.6.10", + "@firebase/logger": "0.4.3", + "@firebase/util": "1.10.1", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/webchannel-wrapper": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-1.0.2.tgz", + "integrity": "sha512-3F4iA2E+NtdMbOU0XC1cHE8q6MqpGIKRj62oGOF38S6AAx5VHR9cXmoDUSj7ejvTAT7m6jxuEeQkHeq0F+mU2w==", + "license": "Apache-2.0" + }, + "node_modules/@grpc/grpc-js": { + "version": "1.9.15", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.15.tgz", + "integrity": "sha512-nqE7Hc0AzI+euzUwDAy0aY5hCp10r734gMGRdU+qOPX0XSceI2ULrcXB5U2xSc5VkWwalCj4M7GzCAygZl2KoQ==", + "license": "Apache-2.0", + "dependencies": { + "@grpc/proto-loader": "^0.7.8", + "@types/node": ">=12.12.47" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.13.tgz", + "integrity": "sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==", + "license": "Apache-2.0", + "dependencies": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.2.5", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "license": "BSD-3-Clause" + }, + "node_modules/@types/node": { + "version": "22.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", + "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.8" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "license": "Apache-2.0", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/firebase": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-11.0.1.tgz", + "integrity": "sha512-qsFb8dMcQINEDhJteG7RP+GqwgSRvfyiexQqHd5JToDdm87i9I2rGC4XQsGawKGxzKwZ/ISdgwNWxXAFYdCC6A==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/analytics": "0.10.9", + "@firebase/analytics-compat": "0.2.15", + "@firebase/app": "0.10.15", + "@firebase/app-check": "0.8.9", + "@firebase/app-check-compat": "0.3.16", + "@firebase/app-compat": "0.2.45", + "@firebase/app-types": "0.9.2", + "@firebase/auth": "1.8.0", + "@firebase/auth-compat": "0.5.15", + "@firebase/data-connect": "0.1.1", + "@firebase/database": "1.0.9", + "@firebase/database-compat": "2.0.0", + "@firebase/firestore": "4.7.4", + "@firebase/firestore-compat": "0.3.39", + "@firebase/functions": "0.11.9", + "@firebase/functions-compat": "0.3.15", + "@firebase/installations": "0.6.10", + "@firebase/installations-compat": "0.2.10", + "@firebase/messaging": "0.12.13", + "@firebase/messaging-compat": "0.2.13", + "@firebase/performance": "0.6.10", + "@firebase/performance-compat": "0.2.10", + "@firebase/remote-config": "0.4.10", + "@firebase/remote-config-compat": "0.2.10", + "@firebase/storage": "0.13.3", + "@firebase/storage-compat": "0.3.13", + "@firebase/util": "1.10.1", + "@firebase/vertexai": "1.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "license": "MIT" + }, + "node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", + "license": "ISC" + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "engines": { + "node": ">=14" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "peer": true + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "license": "MIT" + }, + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "license": "Apache-2.0" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "peer": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/protobufjs": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz", + "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/std-env": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz", + "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/swr": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/swr/-/swr-2.2.5.tgz", + "integrity": "sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg==", + "dependencies": { + "client-only": "^0.0.1", + "use-sync-external-store": "^1.2.0" + }, + "peerDependencies": { + "react": "^16.11.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "license": "MIT" + }, + "node_modules/use-sync-external-store": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "license": "Apache-2.0", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + } + } +} diff --git a/pause.png b/pause.png new file mode 100644 index 0000000..aa3101e Binary files /dev/null and b/pause.png differ