文件
apkReverseknowledge/html/assets/index-Xbs2xuHt.js
2026-03-06 08:55:47 +08:00

977 行
685 KiB
JavaScript

此文件含有不可见的 Unicode 字符
此文件含有人类无法区分的不可见的 Unicode 字符,但可以由计算机进行不同的处理。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
function $T(r,s){for(var u=0;u<s.length;u++){const d=s[u];if(typeof d!="string"&&!Array.isArray(d)){for(const f in d)if(f!=="default"&&!(f in r)){const g=Object.getOwnPropertyDescriptor(d,f);g&&Object.defineProperty(r,f,g.get?g:{enumerable:!0,get:()=>d[f]})}}}return Object.freeze(Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}))}(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const f of document.querySelectorAll('link[rel="modulepreload"]'))d(f);new MutationObserver(f=>{for(const g of f)if(g.type==="childList")for(const v of g.addedNodes)v.tagName==="LINK"&&v.rel==="modulepreload"&&d(v)}).observe(document,{childList:!0,subtree:!0});function u(f){const g={};return f.integrity&&(g.integrity=f.integrity),f.referrerPolicy&&(g.referrerPolicy=f.referrerPolicy),f.crossOrigin==="use-credentials"?g.credentials="include":f.crossOrigin==="anonymous"?g.credentials="omit":g.credentials="same-origin",g}function d(f){if(f.ep)return;f.ep=!0;const g=u(f);fetch(f.href,g)}})();function tE(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var Bp={exports:{}},Ld={},Gp={exports:{}},vc={exports:{}};vc.exports;var sN;function JT(){return sN||(sN=1,(function(r,s){/**
* @license React
* react.development.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/(function(){function u(y,M){Object.defineProperty(g.prototype,y,{get:function(){console.warn("%s(...) is deprecated in plain JavaScript React classes. %s",M[0],M[1])}})}function d(y){return y===null||typeof y!="object"?null:(y=Ot&&y[Ot]||y["@@iterator"],typeof y=="function"?y:null)}function f(y,M){y=(y=y.constructor)&&(y.displayName||y.name)||"ReactClass";var J=y+"."+M;gn[J]||(console.error("Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.",M,y),gn[J]=!0)}function g(y,M,J){this.props=y,this.context=M,this.refs=Ie,this.updater=J||ra}function v(){}function x(y,M,J){this.props=y,this.context=M,this.refs=Ie,this.updater=J||ra}function N(){}function S(y){return""+y}function R(y){try{S(y);var M=!1}catch{M=!0}if(M){M=console;var J=M.error,ee=typeof Symbol=="function"&&Symbol.toStringTag&&y[Symbol.toStringTag]||y.constructor.name||"Object";return J.call(M,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",ee),S(y)}}function b(y){if(y==null)return null;if(typeof y=="function")return y.$$typeof===Dn?null:y.displayName||y.name||null;if(typeof y=="string")return y;switch(y){case D:return"Fragment";case X:return"Profiler";case K:return"StrictMode";case re:return"Suspense";case Oe:return"SuspenseList";case ae:return"Activity"}if(typeof y=="object")switch(typeof y.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),y.$$typeof){case we:return"Portal";case Te:return y.displayName||"Context";case I:return(y._context.displayName||"Context")+".Consumer";case et:var M=y.render;return y=y.displayName,y||(y=M.displayName||M.name||"",y=y!==""?"ForwardRef("+y+")":"ForwardRef"),y;case tt:return M=y.displayName||null,M!==null?M:b(y.type)||"Memo";case Nt:M=y._payload,y=y._init;try{return b(y(M))}catch{}}return null}function E(y){if(y===D)return"<>";if(typeof y=="object"&&y!==null&&y.$$typeof===Nt)return"<...>";try{var M=b(y);return M?"<"+M+">":"<...>"}catch{return"<...>"}}function C(){var y=he.A;return y===null?null:y.getOwner()}function j(){return Error("react-stack-top-frame")}function Y(y){if(Bo.call(y,"key")){var M=Object.getOwnPropertyDescriptor(y,"key").get;if(M&&M.isReactWarning)return!1}return y.key!==void 0}function Z(y,M){function J(){bn||(bn=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",M))}J.isReactWarning=!0,Object.defineProperty(y,"key",{get:J,configurable:!0})}function B(){var y=b(this.type);return Ar[y]||(Ar[y]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),y=this.props.ref,y!==void 0?y:null}function ce(y,M,J,ee,pe,je){var Q=J.ref;return y={$$typeof:ye,type:y,key:M,props:J,_owner:ee},(Q!==void 0?Q:null)!==null?Object.defineProperty(y,"ref",{enumerable:!1,get:B}):Object.defineProperty(y,"ref",{enumerable:!1,value:null}),y._store={},Object.defineProperty(y._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(y,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(y,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:pe}),Object.defineProperty(y,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:je}),Object.freeze&&(Object.freeze(y.props),Object.freeze(y)),y}function de(y,M){return M=ce(y.type,M,y.props,y._owner,y._debugStack,y._debugTask),y._store&&(M._store.validated=y._store.validated),M}function fe(y){me(y)?y._store&&(y._store.validated=1):typeof y=="object"&&y!==null&&y.$$typeof===Nt&&(y._payload.status==="fulfilled"?me(y._payload.value)&&y._payload.value._store&&(y._payload.value._store.validated=1):y._store&&(y._store.validated=1))}function me(y){return typeof y=="object"&&y!==null&&y.$$typeof===ye}function Ne(y){var M={"=":"=0",":":"=2"};return"$"+y.replace(/[=:]/g,function(J){return M[J]})}function se(y,M){return typeof y=="object"&&y!==null&&y.key!=null?(R(y.key),Ne(""+y.key)):M.toString(36)}function q(y){switch(y.status){case"fulfilled":return y.value;case"rejected":throw y.reason;default:switch(typeof y.status=="string"?y.then(N,N):(y.status="pending",y.then(function(M){y.status==="pending"&&(y.status="fulfilled",y.value=M)},function(M){y.status==="pending"&&(y.status="rejected",y.reason=M)})),y.status){case"fulfilled":return y.value;case"rejected":throw y.reason}}throw y}function Se(y,M,J,ee,pe){var je=typeof y;(je==="undefined"||je==="boolean")&&(y=null);var Q=!1;if(y===null)Q=!0;else switch(je){case"bigint":case"string":case"number":Q=!0;break;case"object":switch(y.$$typeof){case ye:case we:Q=!0;break;case Nt:return Q=y._init,Se(Q(y._payload),M,J,ee,pe)}}if(Q){Q=y,pe=pe(Q);var De=ee===""?"."+se(Q,0):ee;return oo(pe)?(J="",De!=null&&(J=De.replace(Go,"$&/")+"/"),Se(pe,M,J,"",function(lt){return lt})):pe!=null&&(me(pe)&&(pe.key!=null&&(Q&&Q.key===pe.key||R(pe.key)),J=de(pe,J+(pe.key==null||Q&&Q.key===pe.key?"":(""+pe.key).replace(Go,"$&/")+"/")+De),ee!==""&&Q!=null&&me(Q)&&Q.key==null&&Q._store&&!Q._store.validated&&(J._store.validated=2),pe=J),M.push(pe)),1}if(Q=0,De=ee===""?".":ee+":",oo(y))for(var xe=0;xe<y.length;xe++)ee=y[xe],je=De+se(ee,xe),Q+=Se(ee,M,J,je,pe);else if(xe=d(y),typeof xe=="function")for(xe===y.entries&&(ia||console.warn("Using Maps as children is not supported. Use an array of keyed ReactElements instead."),ia=!0),y=xe.call(y),xe=0;!(ee=y.next()).done;)ee=ee.value,je=De+se(ee,xe++),Q+=Se(ee,M,J,je,pe);else if(je==="object"){if(typeof y.then=="function")return Se(q(y),M,J,ee,pe);throw M=String(y),Error("Objects are not valid as a React child (found: "+(M==="[object Object]"?"object with keys {"+Object.keys(y).join(", ")+"}":M)+"). If you meant to render a collection of children, use an array instead.")}return Q}function W(y,M,J){if(y==null)return y;var ee=[],pe=0;return Se(y,ee,"","",function(je){return M.call(J,je,pe++)}),ee}function ze(y){if(y._status===-1){var M=y._ioInfo;M!=null&&(M.start=M.end=performance.now()),M=y._result;var J=M();if(J.then(function(pe){if(y._status===0||y._status===-1){y._status=1,y._result=pe;var je=y._ioInfo;je!=null&&(je.end=performance.now()),J.status===void 0&&(J.status="fulfilled",J.value=pe)}},function(pe){if(y._status===0||y._status===-1){y._status=2,y._result=pe;var je=y._ioInfo;je!=null&&(je.end=performance.now()),J.status===void 0&&(J.status="rejected",J.reason=pe)}}),M=y._ioInfo,M!=null){M.value=J;var ee=J.displayName;typeof ee=="string"&&(M.name=ee)}y._status===-1&&(y._status=0,y._result=J)}if(y._status===1)return M=y._result,M===void 0&&console.error(`lazy: Expected the result of a dynamic import() call. Instead received: %s
Your code should look like:
const MyComponent = lazy(() => import('./MyComponent'))
Did you accidentally put curly braces around the import?`,M),"default"in M||console.error(`lazy: Expected the result of a dynamic import() call. Instead received: %s
Your code should look like:
const MyComponent = lazy(() => import('./MyComponent'))`,M),M.default;throw y._result}function le(){var y=he.H;return y===null&&console.error(`Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app
See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`),y}function ie(){he.asyncTransitions--}function Ce(y){if(yn===null)try{var M=("require"+Math.random()).slice(0,7);yn=(r&&r[M]).call(r,"timers").setImmediate}catch{yn=function(ee){Zo===!1&&(Zo=!0,typeof MessageChannel>"u"&&console.error("This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning."));var pe=new MessageChannel;pe.port1.onmessage=ee,pe.port2.postMessage(void 0)}}return yn(y)}function He(y){return 1<y.length&&typeof AggregateError=="function"?new AggregateError(y):y[0]}function U(y,M){M!==wa-1&&console.error("You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. "),wa=M}function $(y,M,J){var ee=he.actQueue;if(ee!==null)if(ee.length!==0)try{V(ee),Ce(function(){return $(y,M,J)});return}catch(pe){he.thrownErrors.push(pe)}else he.actQueue=null;0<he.thrownErrors.length?(ee=He(he.thrownErrors),he.thrownErrors.length=0,J(ee)):M(y)}function V(y){if(!ro){ro=!0;var M=0;try{for(;M<y.length;M++){var J=y[M];do{he.didUsePromise=!1;var ee=J(!1);if(ee!==null){if(he.didUsePromise){y[M]=J,y.splice(0,M);return}J=ee}else break}while(!0)}y.length=0}catch(pe){y.splice(0,M+1),he.thrownErrors.push(pe)}finally{ro=!1}}}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var ye=Symbol.for("react.transitional.element"),we=Symbol.for("react.portal"),D=Symbol.for("react.fragment"),K=Symbol.for("react.strict_mode"),X=Symbol.for("react.profiler"),I=Symbol.for("react.consumer"),Te=Symbol.for("react.context"),et=Symbol.for("react.forward_ref"),re=Symbol.for("react.suspense"),Oe=Symbol.for("react.suspense_list"),tt=Symbol.for("react.memo"),Nt=Symbol.for("react.lazy"),ae=Symbol.for("react.activity"),Ot=Symbol.iterator,gn={},ra={isMounted:function(){return!1},enqueueForceUpdate:function(y){f(y,"forceUpdate")},enqueueReplaceState:function(y){f(y,"replaceState")},enqueueSetState:function(y){f(y,"setState")}},Na=Object.assign,Ie={};Object.freeze(Ie),g.prototype.isReactComponent={},g.prototype.setState=function(y,M){if(typeof y!="object"&&typeof y!="function"&&y!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,y,M,"setState")},g.prototype.forceUpdate=function(y){this.updater.enqueueForceUpdate(this,y,"forceUpdate")};var wt={isMounted:["isMounted","Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks."],replaceState:["replaceState","Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236)."]};for(Aa in wt)wt.hasOwnProperty(Aa)&&u(Aa,wt[Aa]);v.prototype=g.prototype,wt=x.prototype=new v,wt.constructor=x,Na(wt,g.prototype),wt.isPureReactComponent=!0;var oo=Array.isArray,Dn=Symbol.for("react.client.reference"),he={H:null,A:null,T:null,S:null,actQueue:null,asyncTransitions:0,isBatchingLegacy:!1,didScheduleLegacyUpdate:!1,didUsePromise:!1,thrownErrors:[],getCurrentStack:null,recentlyCreatedOwnerStacks:0},Bo=Object.prototype.hasOwnProperty,bt=console.createTask?console.createTask:function(){return null};wt={react_stack_bottom_frame:function(y){return y()}};var bn,Ea,Ar={},Sa=wt.react_stack_bottom_frame.bind(wt,j)(),_l=bt(E(j)),ia=!1,Go=/\/+/g,Yn=typeof reportError=="function"?reportError:function(y){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var M=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof y=="object"&&y!==null&&typeof y.message=="string"?String(y.message):String(y),error:y});if(!window.dispatchEvent(M))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",y);return}console.error(y)},Zo=!1,yn=null,wa=0,lo=!1,ro=!1,io=typeof queueMicrotask=="function"?function(y){queueMicrotask(function(){return queueMicrotask(y)})}:Ce;wt=Object.freeze({__proto__:null,c:function(y){return le().useMemoCache(y)}});var Aa={map:W,forEach:function(y,M,J){W(y,function(){M.apply(this,arguments)},J)},count:function(y){var M=0;return W(y,function(){M++}),M},toArray:function(y){return W(y,function(M){return M})||[]},only:function(y){if(!me(y))throw Error("React.Children.only expected to receive a single React element child.");return y}};s.Activity=ae,s.Children=Aa,s.Component=g,s.Fragment=D,s.Profiler=X,s.PureComponent=x,s.StrictMode=K,s.Suspense=re,s.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=he,s.__COMPILER_RUNTIME=wt,s.act=function(y){var M=he.actQueue,J=wa;wa++;var ee=he.actQueue=M!==null?M:[],pe=!1;try{var je=y()}catch(xe){he.thrownErrors.push(xe)}if(0<he.thrownErrors.length)throw U(M,J),y=He(he.thrownErrors),he.thrownErrors.length=0,y;if(je!==null&&typeof je=="object"&&typeof je.then=="function"){var Q=je;return io(function(){pe||lo||(lo=!0,console.error("You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);"))}),{then:function(xe,lt){pe=!0,Q.then(function(ln){if(U(M,J),J===0){try{V(ee),Ce(function(){return $(ln,xe,lt)})}catch(Lt){he.thrownErrors.push(Lt)}if(0<he.thrownErrors.length){var At=He(he.thrownErrors);he.thrownErrors.length=0,lt(At)}}else xe(ln)},function(ln){U(M,J),0<he.thrownErrors.length&&(ln=He(he.thrownErrors),he.thrownErrors.length=0),lt(ln)})}}}var De=je;if(U(M,J),J===0&&(V(ee),ee.length!==0&&io(function(){pe||lo||(lo=!0,console.error("A component suspended inside an `act` scope, but the `act` call was not awaited. When testing React components that depend on asynchronous data, you must await the result:\n\nawait act(() => ...)"))}),he.actQueue=null),0<he.thrownErrors.length)throw y=He(he.thrownErrors),he.thrownErrors.length=0,y;return{then:function(xe,lt){pe=!0,J===0?(he.actQueue=ee,Ce(function(){return $(De,xe,lt)})):xe(De)}}},s.cache=function(y){return function(){return y.apply(null,arguments)}},s.cacheSignal=function(){return null},s.captureOwnerStack=function(){var y=he.getCurrentStack;return y===null?null:y()},s.cloneElement=function(y,M,J){if(y==null)throw Error("The argument must be a React element, but you passed "+y+".");var ee=Na({},y.props),pe=y.key,je=y._owner;if(M!=null){var Q;e:{if(Bo.call(M,"ref")&&(Q=Object.getOwnPropertyDescriptor(M,"ref").get)&&Q.isReactWarning){Q=!1;break e}Q=M.ref!==void 0}Q&&(je=C()),Y(M)&&(R(M.key),pe=""+M.key);for(De in M)!Bo.call(M,De)||De==="key"||De==="__self"||De==="__source"||De==="ref"&&M.ref===void 0||(ee[De]=M[De])}var De=arguments.length-2;if(De===1)ee.children=J;else if(1<De){Q=Array(De);for(var xe=0;xe<De;xe++)Q[xe]=arguments[xe+2];ee.children=Q}for(ee=ce(y.type,pe,ee,je,y._debugStack,y._debugTask),pe=2;pe<arguments.length;pe++)fe(arguments[pe]);return ee},s.createContext=function(y){return y={$$typeof:Te,_currentValue:y,_currentValue2:y,_threadCount:0,Provider:null,Consumer:null},y.Provider=y,y.Consumer={$$typeof:I,_context:y},y._currentRenderer=null,y._currentRenderer2=null,y},s.createElement=function(y,M,J){for(var ee=2;ee<arguments.length;ee++)fe(arguments[ee]);ee={};var pe=null;if(M!=null)for(xe in Ea||!("__self"in M)||"key"in M||(Ea=!0,console.warn("Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform")),Y(M)&&(R(M.key),pe=""+M.key),M)Bo.call(M,xe)&&xe!=="key"&&xe!=="__self"&&xe!=="__source"&&(ee[xe]=M[xe]);var je=arguments.length-2;if(je===1)ee.children=J;else if(1<je){for(var Q=Array(je),De=0;De<je;De++)Q[De]=arguments[De+2];Object.freeze&&Object.freeze(Q),ee.children=Q}if(y&&y.defaultProps)for(xe in je=y.defaultProps,je)ee[xe]===void 0&&(ee[xe]=je[xe]);pe&&Z(ee,typeof y=="function"?y.displayName||y.name||"Unknown":y);var xe=1e4>he.recentlyCreatedOwnerStacks++;return ce(y,pe,ee,C(),xe?Error("react-stack-top-frame"):Sa,xe?bt(E(y)):_l)},s.createRef=function(){var y={current:null};return Object.seal(y),y},s.forwardRef=function(y){y!=null&&y.$$typeof===tt?console.error("forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))."):typeof y!="function"?console.error("forwardRef requires a render function but was given %s.",y===null?"null":typeof y):y.length!==0&&y.length!==2&&console.error("forwardRef render functions accept exactly two parameters: props and ref. %s",y.length===1?"Did you forget to use the ref parameter?":"Any additional parameter will be undefined."),y!=null&&y.defaultProps!=null&&console.error("forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?");var M={$$typeof:et,render:y},J;return Object.defineProperty(M,"displayName",{enumerable:!1,configurable:!0,get:function(){return J},set:function(ee){J=ee,y.name||y.displayName||(Object.defineProperty(y,"name",{value:ee}),y.displayName=ee)}}),M},s.isValidElement=me,s.lazy=function(y){y={_status:-1,_result:y};var M={$$typeof:Nt,_payload:y,_init:ze},J={name:"lazy",start:-1,end:-1,value:null,owner:null,debugStack:Error("react-stack-top-frame"),debugTask:console.createTask?console.createTask("lazy()"):null};return y._ioInfo=J,M._debugInfo=[{awaited:J}],M},s.memo=function(y,M){y==null&&console.error("memo: The first argument must be a component. Instead received: %s",y===null?"null":typeof y),M={$$typeof:tt,type:y,compare:M===void 0?null:M};var J;return Object.defineProperty(M,"displayName",{enumerable:!1,configurable:!0,get:function(){return J},set:function(ee){J=ee,y.name||y.displayName||(Object.defineProperty(y,"name",{value:ee}),y.displayName=ee)}}),M},s.startTransition=function(y){var M=he.T,J={};J._updatedFibers=new Set,he.T=J;try{var ee=y(),pe=he.S;pe!==null&&pe(J,ee),typeof ee=="object"&&ee!==null&&typeof ee.then=="function"&&(he.asyncTransitions++,ee.then(ie,ie),ee.then(N,Yn))}catch(je){Yn(je)}finally{M===null&&J._updatedFibers&&(y=J._updatedFibers.size,J._updatedFibers.clear(),10<y&&console.warn("Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.")),M!==null&&J.types!==null&&(M.types!==null&&M.types!==J.types&&console.error("We expected inner Transitions to have transferred the outer types set and that you cannot add to the outer Transition while inside the inner.This is a bug in React."),M.types=J.types),he.T=M}},s.unstable_useCacheRefresh=function(){return le().useCacheRefresh()},s.use=function(y){return le().use(y)},s.useActionState=function(y,M,J){return le().useActionState(y,M,J)},s.useCallback=function(y,M){return le().useCallback(y,M)},s.useContext=function(y){var M=le();return y.$$typeof===I&&console.error("Calling useContext(Context.Consumer) is not supported and will cause bugs. Did you mean to call useContext(Context) instead?"),M.useContext(y)},s.useDebugValue=function(y,M){return le().useDebugValue(y,M)},s.useDeferredValue=function(y,M){return le().useDeferredValue(y,M)},s.useEffect=function(y,M){return y==null&&console.warn("React Hook useEffect requires an effect callback. Did you forget to pass a callback to the hook?"),le().useEffect(y,M)},s.useEffectEvent=function(y){return le().useEffectEvent(y)},s.useId=function(){return le().useId()},s.useImperativeHandle=function(y,M,J){return le().useImperativeHandle(y,M,J)},s.useInsertionEffect=function(y,M){return y==null&&console.warn("React Hook useInsertionEffect requires an effect callback. Did you forget to pass a callback to the hook?"),le().useInsertionEffect(y,M)},s.useLayoutEffect=function(y,M){return y==null&&console.warn("React Hook useLayoutEffect requires an effect callback. Did you forget to pass a callback to the hook?"),le().useLayoutEffect(y,M)},s.useMemo=function(y,M){return le().useMemo(y,M)},s.useOptimistic=function(y,M){return le().useOptimistic(y,M)},s.useReducer=function(y,M,J){return le().useReducer(y,M,J)},s.useRef=function(y){return le().useRef(y)},s.useState=function(y){return le().useState(y)},s.useSyncExternalStore=function(y,M,J){return le().useSyncExternalStore(y,M,J)},s.useTransition=function(){return le().useTransition()},s.version="19.2.1",typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()})(vc,vc.exports)),vc.exports}var cN;function Mi(){return cN||(cN=1,Gp.exports=JT()),Gp.exports}var uN;function QT(){if(uN)return Ld;uN=1;/**
* @license React
* react-jsx-dev-runtime.development.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/return(function(){function r(D){if(D==null)return null;if(typeof D=="function")return D.$$typeof===ze?null:D.displayName||D.name||null;if(typeof D=="string")return D;switch(D){case Z:return"Fragment";case ce:return"Profiler";case B:return"StrictMode";case Ne:return"Suspense";case se:return"SuspenseList";case W:return"Activity"}if(typeof D=="object")switch(typeof D.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),D.$$typeof){case Y:return"Portal";case fe:return D.displayName||"Context";case de:return(D._context.displayName||"Context")+".Consumer";case me:var K=D.render;return D=D.displayName,D||(D=K.displayName||K.name||"",D=D!==""?"ForwardRef("+D+")":"ForwardRef"),D;case q:return K=D.displayName||null,K!==null?K:r(D.type)||"Memo";case Se:K=D._payload,D=D._init;try{return r(D(K))}catch{}}return null}function s(D){return""+D}function u(D){try{s(D);var K=!1}catch{K=!0}if(K){K=console;var X=K.error,I=typeof Symbol=="function"&&Symbol.toStringTag&&D[Symbol.toStringTag]||D.constructor.name||"Object";return X.call(K,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",I),s(D)}}function d(D){if(D===Z)return"<>";if(typeof D=="object"&&D!==null&&D.$$typeof===Se)return"<...>";try{var K=r(D);return K?"<"+K+">":"<...>"}catch{return"<...>"}}function f(){var D=le.A;return D===null?null:D.getOwner()}function g(){return Error("react-stack-top-frame")}function v(D){if(ie.call(D,"key")){var K=Object.getOwnPropertyDescriptor(D,"key").get;if(K&&K.isReactWarning)return!1}return D.key!==void 0}function x(D,K){function X(){U||(U=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",K))}X.isReactWarning=!0,Object.defineProperty(D,"key",{get:X,configurable:!0})}function N(){var D=r(this.type);return $[D]||($[D]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),D=this.props.ref,D!==void 0?D:null}function S(D,K,X,I,Te,et){var re=X.ref;return D={$$typeof:j,type:D,key:K,props:X,_owner:I},(re!==void 0?re:null)!==null?Object.defineProperty(D,"ref",{enumerable:!1,get:N}):Object.defineProperty(D,"ref",{enumerable:!1,value:null}),D._store={},Object.defineProperty(D._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(D,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(D,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:Te}),Object.defineProperty(D,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:et}),Object.freeze&&(Object.freeze(D.props),Object.freeze(D)),D}function R(D,K,X,I,Te,et){var re=K.children;if(re!==void 0)if(I)if(Ce(re)){for(I=0;I<re.length;I++)b(re[I]);Object.freeze&&Object.freeze(re)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else b(re);if(ie.call(K,"key")){re=r(D);var Oe=Object.keys(K).filter(function(Nt){return Nt!=="key"});I=0<Oe.length?"{key: someKey, "+Oe.join(": ..., ")+": ...}":"{key: someKey}",we[re+I]||(Oe=0<Oe.length?"{"+Oe.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
let props = %s;
<%s {...props} />
React keys must be passed directly to JSX without using spread:
let props = %s;
<%s key={someKey} {...props} />`,I,re,Oe,re),we[re+I]=!0)}if(re=null,X!==void 0&&(u(X),re=""+X),v(K)&&(u(K.key),re=""+K.key),"key"in K){X={};for(var tt in K)tt!=="key"&&(X[tt]=K[tt])}else X=K;return re&&x(X,typeof D=="function"?D.displayName||D.name||"Unknown":D),S(D,re,X,f(),Te,et)}function b(D){E(D)?D._store&&(D._store.validated=1):typeof D=="object"&&D!==null&&D.$$typeof===Se&&(D._payload.status==="fulfilled"?E(D._payload.value)&&D._payload.value._store&&(D._payload.value._store.validated=1):D._store&&(D._store.validated=1))}function E(D){return typeof D=="object"&&D!==null&&D.$$typeof===j}var C=Mi(),j=Symbol.for("react.transitional.element"),Y=Symbol.for("react.portal"),Z=Symbol.for("react.fragment"),B=Symbol.for("react.strict_mode"),ce=Symbol.for("react.profiler"),de=Symbol.for("react.consumer"),fe=Symbol.for("react.context"),me=Symbol.for("react.forward_ref"),Ne=Symbol.for("react.suspense"),se=Symbol.for("react.suspense_list"),q=Symbol.for("react.memo"),Se=Symbol.for("react.lazy"),W=Symbol.for("react.activity"),ze=Symbol.for("react.client.reference"),le=C.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ie=Object.prototype.hasOwnProperty,Ce=Array.isArray,He=console.createTask?console.createTask:function(){return null};C={react_stack_bottom_frame:function(D){return D()}};var U,$={},V=C.react_stack_bottom_frame.bind(C,g)(),ye=He(d(g)),we={};Ld.Fragment=Z,Ld.jsxDEV=function(D,K,X,I){var Te=1e4>le.recentlyCreatedOwnerStacks++;return R(D,K,X,I,Te?Error("react-stack-top-frame"):V,Te?He(d(D)):ye)}})(),Ld}var dN;function FT(){return dN||(dN=1,Bp.exports=QT()),Bp.exports}var h=FT(),Zp={exports:{}},gc={},Yp={exports:{}},Xp={},fN;function IT(){return fN||(fN=1,(function(r){/**
* @license React
* scheduler.development.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/(function(){function s(){if(me=!1,Se){var U=r.unstable_now();le=U;var $=!0;try{e:{de=!1,fe&&(fe=!1,se(W),W=-1),ce=!0;var V=B;try{t:{for(v(U),Z=d(C);Z!==null&&!(Z.expirationTime>U&&N());){var ye=Z.callback;if(typeof ye=="function"){Z.callback=null,B=Z.priorityLevel;var we=ye(Z.expirationTime<=U);if(U=r.unstable_now(),typeof we=="function"){Z.callback=we,v(U),$=!0;break t}Z===d(C)&&f(C),v(U)}else f(C);Z=d(C)}if(Z!==null)$=!0;else{var D=d(j);D!==null&&S(x,D.startTime-U),$=!1}}break e}finally{Z=null,B=V,ce=!1}$=void 0}}finally{$?ie():Se=!1}}}function u(U,$){var V=U.length;U.push($);e:for(;0<V;){var ye=V-1>>>1,we=U[ye];if(0<g(we,$))U[ye]=$,U[V]=we,V=ye;else break e}}function d(U){return U.length===0?null:U[0]}function f(U){if(U.length===0)return null;var $=U[0],V=U.pop();if(V!==$){U[0]=V;e:for(var ye=0,we=U.length,D=we>>>1;ye<D;){var K=2*(ye+1)-1,X=U[K],I=K+1,Te=U[I];if(0>g(X,V))I<we&&0>g(Te,X)?(U[ye]=Te,U[I]=V,ye=I):(U[ye]=X,U[K]=V,ye=K);else if(I<we&&0>g(Te,V))U[ye]=Te,U[I]=V,ye=I;else break e}}return $}function g(U,$){var V=U.sortIndex-$.sortIndex;return V!==0?V:U.id-$.id}function v(U){for(var $=d(j);$!==null;){if($.callback===null)f(j);else if($.startTime<=U)f(j),$.sortIndex=$.expirationTime,u(C,$);else break;$=d(j)}}function x(U){if(fe=!1,v(U),!de)if(d(C)!==null)de=!0,Se||(Se=!0,ie());else{var $=d(j);$!==null&&S(x,$.startTime-U)}}function N(){return me?!0:!(r.unstable_now()-le<ze)}function S(U,$){W=Ne(function(){U(r.unstable_now())},$)}if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error()),r.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var R=performance;r.unstable_now=function(){return R.now()}}else{var b=Date,E=b.now();r.unstable_now=function(){return b.now()-E}}var C=[],j=[],Y=1,Z=null,B=3,ce=!1,de=!1,fe=!1,me=!1,Ne=typeof setTimeout=="function"?setTimeout:null,se=typeof clearTimeout=="function"?clearTimeout:null,q=typeof setImmediate<"u"?setImmediate:null,Se=!1,W=-1,ze=5,le=-1;if(typeof q=="function")var ie=function(){q(s)};else if(typeof MessageChannel<"u"){var Ce=new MessageChannel,He=Ce.port2;Ce.port1.onmessage=s,ie=function(){He.postMessage(null)}}else ie=function(){Ne(s,0)};r.unstable_IdlePriority=5,r.unstable_ImmediatePriority=1,r.unstable_LowPriority=4,r.unstable_NormalPriority=3,r.unstable_Profiling=null,r.unstable_UserBlockingPriority=2,r.unstable_cancelCallback=function(U){U.callback=null},r.unstable_forceFrameRate=function(U){0>U||125<U?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):ze=0<U?Math.floor(1e3/U):5},r.unstable_getCurrentPriorityLevel=function(){return B},r.unstable_next=function(U){switch(B){case 1:case 2:case 3:var $=3;break;default:$=B}var V=B;B=$;try{return U()}finally{B=V}},r.unstable_requestPaint=function(){me=!0},r.unstable_runWithPriority=function(U,$){switch(U){case 1:case 2:case 3:case 4:case 5:break;default:U=3}var V=B;B=U;try{return $()}finally{B=V}},r.unstable_scheduleCallback=function(U,$,V){var ye=r.unstable_now();switch(typeof V=="object"&&V!==null?(V=V.delay,V=typeof V=="number"&&0<V?ye+V:ye):V=ye,U){case 1:var we=-1;break;case 2:we=250;break;case 5:we=1073741823;break;case 4:we=1e4;break;default:we=5e3}return we=V+we,U={id:Y++,callback:$,priorityLevel:U,startTime:V,expirationTime:we,sortIndex:-1},V>ye?(U.sortIndex=V,u(j,U),d(C)===null&&U===d(j)&&(fe?(se(W),W=-1):fe=!0,S(x,V-ye))):(U.sortIndex=we,u(C,U),de||ce||(de=!0,Se||(Se=!0,ie()))),U},r.unstable_shouldYield=N,r.unstable_wrapCallback=function(U){var $=B;return function(){var V=B;B=$;try{return U.apply(this,arguments)}finally{B=V}}},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()})(Xp)),Xp}var mN;function KT(){return mN||(mN=1,Yp.exports=IT()),Yp.exports}var qp={exports:{}},on={},hN;function WT(){if(hN)return on;hN=1;/**
* @license React
* react-dom.development.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/return(function(){function r(){}function s(b){return""+b}function u(b,E,C){var j=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;try{s(j);var Y=!1}catch{Y=!0}return Y&&(console.error("The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",typeof Symbol=="function"&&Symbol.toStringTag&&j[Symbol.toStringTag]||j.constructor.name||"Object"),s(j)),{$$typeof:S,key:j==null?null:""+j,children:b,containerInfo:E,implementation:C}}function d(b,E){if(b==="font")return"";if(typeof E=="string")return E==="use-credentials"?E:""}function f(b){return b===null?"`null`":b===void 0?"`undefined`":b===""?"an empty string":'something with type "'+typeof b+'"'}function g(b){return b===null?"`null`":b===void 0?"`undefined`":b===""?"an empty string":typeof b=="string"?JSON.stringify(b):typeof b=="number"?"`"+b+"`":'something with type "'+typeof b+'"'}function v(){var b=R.H;return b===null&&console.error(`Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app
See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`),b}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var x=Mi(),N={d:{f:r,r:function(){throw Error("Invalid form element. requestFormReset must be passed a form that was rendered by React.")},D:r,C:r,L:r,m:r,X:r,S:r,M:r},p:0,findDOMNode:null},S=Symbol.for("react.portal"),R=x.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;typeof Map=="function"&&Map.prototype!=null&&typeof Map.prototype.forEach=="function"&&typeof Set=="function"&&Set.prototype!=null&&typeof Set.prototype.clear=="function"&&typeof Set.prototype.forEach=="function"||console.error("React depends on Map and Set built-in types. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"),on.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=N,on.createPortal=function(b,E){var C=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!E||E.nodeType!==1&&E.nodeType!==9&&E.nodeType!==11)throw Error("Target container is not a DOM element.");return u(b,E,null,C)},on.flushSync=function(b){var E=R.T,C=N.p;try{if(R.T=null,N.p=2,b)return b()}finally{R.T=E,N.p=C,N.d.f()&&console.error("flushSync was called from inside a lifecycle method. React cannot flush when React is already rendering. Consider moving this call to a scheduler task or micro task.")}},on.preconnect=function(b,E){typeof b=="string"&&b?E!=null&&typeof E!="object"?console.error("ReactDOM.preconnect(): Expected the `options` argument (second) to be an object but encountered %s instead. The only supported option at this time is `crossOrigin` which accepts a string.",g(E)):E!=null&&typeof E.crossOrigin!="string"&&console.error("ReactDOM.preconnect(): Expected the `crossOrigin` option (second argument) to be a string but encountered %s instead. Try removing this option or passing a string value instead.",f(E.crossOrigin)):console.error("ReactDOM.preconnect(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.",f(b)),typeof b=="string"&&(E?(E=E.crossOrigin,E=typeof E=="string"?E==="use-credentials"?E:"":void 0):E=null,N.d.C(b,E))},on.prefetchDNS=function(b){if(typeof b!="string"||!b)console.error("ReactDOM.prefetchDNS(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.",f(b));else if(1<arguments.length){var E=arguments[1];typeof E=="object"&&E.hasOwnProperty("crossOrigin")?console.error("ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. It looks like the you are attempting to set a crossOrigin property for this DNS lookup hint. Browsers do not perform DNS queries using CORS and setting this attribute on the resource hint has no effect. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.",g(E)):console.error("ReactDOM.prefetchDNS(): Expected only one argument, `href`, but encountered %s as a second argument instead. This argument is reserved for future options and is currently disallowed. Try calling ReactDOM.prefetchDNS() with just a single string argument, `href`.",g(E))}typeof b=="string"&&N.d.D(b)},on.preinit=function(b,E){if(typeof b=="string"&&b?E==null||typeof E!="object"?console.error("ReactDOM.preinit(): Expected the `options` argument (second) to be an object with an `as` property describing the type of resource to be preinitialized but encountered %s instead.",g(E)):E.as!=="style"&&E.as!=="script"&&console.error('ReactDOM.preinit(): Expected the `as` property in the `options` argument (second) to contain a valid value describing the type of resource to be preinitialized but encountered %s instead. Valid values for `as` are "style" and "script".',g(E.as)):console.error("ReactDOM.preinit(): Expected the `href` argument (first) to be a non-empty string but encountered %s instead.",f(b)),typeof b=="string"&&E&&typeof E.as=="string"){var C=E.as,j=d(C,E.crossOrigin),Y=typeof E.integrity=="string"?E.integrity:void 0,Z=typeof E.fetchPriority=="string"?E.fetchPriority:void 0;C==="style"?N.d.S(b,typeof E.precedence=="string"?E.precedence:void 0,{crossOrigin:j,integrity:Y,fetchPriority:Z}):C==="script"&&N.d.X(b,{crossOrigin:j,integrity:Y,fetchPriority:Z,nonce:typeof E.nonce=="string"?E.nonce:void 0})}},on.preinitModule=function(b,E){var C="";if(typeof b=="string"&&b||(C+=" The `href` argument encountered was "+f(b)+"."),E!==void 0&&typeof E!="object"?C+=" The `options` argument encountered was "+f(E)+".":E&&"as"in E&&E.as!=="script"&&(C+=" The `as` option encountered was "+g(E.as)+"."),C)console.error("ReactDOM.preinitModule(): Expected up to two arguments, a non-empty `href` string and, optionally, an `options` object with a valid `as` property.%s",C);else switch(C=E&&typeof E.as=="string"?E.as:"script",C){case"script":break;default:C=g(C),console.error('ReactDOM.preinitModule(): Currently the only supported "as" type for this function is "script" but received "%s" instead. This warning was generated for `href` "%s". In the future other module types will be supported, aligning with the import-attributes proposal. Learn more here: (https://github.com/tc39/proposal-import-attributes)',C,b)}typeof b=="string"&&(typeof E=="object"&&E!==null?(E.as==null||E.as==="script")&&(C=d(E.as,E.crossOrigin),N.d.M(b,{crossOrigin:C,integrity:typeof E.integrity=="string"?E.integrity:void 0,nonce:typeof E.nonce=="string"?E.nonce:void 0})):E==null&&N.d.M(b))},on.preload=function(b,E){var C="";if(typeof b=="string"&&b||(C+=" The `href` argument encountered was "+f(b)+"."),E==null||typeof E!="object"?C+=" The `options` argument encountered was "+f(E)+".":typeof E.as=="string"&&E.as||(C+=" The `as` option encountered was "+f(E.as)+"."),C&&console.error('ReactDOM.preload(): Expected two arguments, a non-empty `href` string and an `options` object with an `as` property valid for a `<link rel="preload" as="..." />` tag.%s',C),typeof b=="string"&&typeof E=="object"&&E!==null&&typeof E.as=="string"){C=E.as;var j=d(C,E.crossOrigin);N.d.L(b,C,{crossOrigin:j,integrity:typeof E.integrity=="string"?E.integrity:void 0,nonce:typeof E.nonce=="string"?E.nonce:void 0,type:typeof E.type=="string"?E.type:void 0,fetchPriority:typeof E.fetchPriority=="string"?E.fetchPriority:void 0,referrerPolicy:typeof E.referrerPolicy=="string"?E.referrerPolicy:void 0,imageSrcSet:typeof E.imageSrcSet=="string"?E.imageSrcSet:void 0,imageSizes:typeof E.imageSizes=="string"?E.imageSizes:void 0,media:typeof E.media=="string"?E.media:void 0})}},on.preloadModule=function(b,E){var C="";typeof b=="string"&&b||(C+=" The `href` argument encountered was "+f(b)+"."),E!==void 0&&typeof E!="object"?C+=" The `options` argument encountered was "+f(E)+".":E&&"as"in E&&typeof E.as!="string"&&(C+=" The `as` option encountered was "+f(E.as)+"."),C&&console.error('ReactDOM.preloadModule(): Expected two arguments, a non-empty `href` string and, optionally, an `options` object with an `as` property valid for a `<link rel="modulepreload" as="..." />` tag.%s',C),typeof b=="string"&&(E?(C=d(E.as,E.crossOrigin),N.d.m(b,{as:typeof E.as=="string"&&E.as!=="script"?E.as:void 0,crossOrigin:C,integrity:typeof E.integrity=="string"?E.integrity:void 0})):N.d.m(b))},on.requestFormReset=function(b){N.d.r(b)},on.unstable_batchedUpdates=function(b,E){return b(E)},on.useFormState=function(b,E,C){return v().useFormState(b,E,C)},on.useFormStatus=function(){return v().useHostTransitionStatus()},on.version="19.2.1",typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})(),on}var pN;function nE(){return pN||(pN=1,qp.exports=WT()),qp.exports}var gN;function eD(){if(gN)return gc;gN=1;/**
* @license React
* react-dom-client.development.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/return(function(){function r(e,t){for(e=e.memoizedState;e!==null&&0<t;)e=e.next,t--;return e}function s(e,t,n,a){if(n>=t.length)return a;var o=t[n],l=Bt(e)?e.slice():Ze({},e);return l[o]=s(e[o],t,n+1,a),l}function u(e,t,n){if(t.length!==n.length)console.warn("copyWithRename() expects paths of the same length");else{for(var a=0;a<n.length-1;a++)if(t[a]!==n[a]){console.warn("copyWithRename() expects paths to be the same except for the deepest key");return}return d(e,t,n,0)}}function d(e,t,n,a){var o=t[a],l=Bt(e)?e.slice():Ze({},e);return a+1===t.length?(l[n[a]]=l[o],Bt(l)?l.splice(o,1):delete l[o]):l[o]=d(e[o],t,n,a+1),l}function f(e,t,n){var a=t[n],o=Bt(e)?e.slice():Ze({},e);return n+1===t.length?(Bt(o)?o.splice(a,1):delete o[a],o):(o[a]=f(e[a],t,n+1),o)}function g(){return!1}function v(){return null}function x(){console.error("Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. You can only call Hooks at the top level of your React function. For more information, see https://react.dev/link/rules-of-hooks")}function N(){console.error("Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().")}function S(){}function R(){}function b(e){var t=[];return e.forEach(function(n){t.push(n)}),t.sort().join(", ")}function E(e,t,n,a){return new jS(e,t,n,a)}function C(e,t){e.context===cl&&(rh(e.current,2,t,e,null,null),Vr())}function j(e,t){if(Fn!==null){var n=t.staleFamilies;t=t.updatedFamilies,ds(),hb(e.current,t,n),Vr()}}function Y(e){Fn=e}function Z(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function B(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,(t.flags&4098)!==0&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function ce(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function de(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function fe(e){if(B(e)!==e)throw Error("Unable to find node on an unmounted component.")}function me(e){var t=e.alternate;if(!t){if(t=B(e),t===null)throw Error("Unable to find node on an unmounted component.");return t!==e?null:e}for(var n=e,a=t;;){var o=n.return;if(o===null)break;var l=o.alternate;if(l===null){if(a=o.return,a!==null){n=a;continue}break}if(o.child===l.child){for(l=o.child;l;){if(l===n)return fe(o),e;if(l===a)return fe(o),t;l=l.sibling}throw Error("Unable to find node on an unmounted component.")}if(n.return!==a.return)n=o,a=l;else{for(var i=!1,c=o.child;c;){if(c===n){i=!0,n=o,a=l;break}if(c===a){i=!0,a=o,n=l;break}c=c.sibling}if(!i){for(c=l.child;c;){if(c===n){i=!0,n=l,a=o;break}if(c===a){i=!0,a=l,n=o;break}c=c.sibling}if(!i)throw Error("Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.")}}if(n.alternate!==a)throw Error("Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue.")}if(n.tag!==3)throw Error("Unable to find node on an unmounted component.");return n.stateNode.current===n?e:t}function Ne(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=Ne(e),t!==null)return t;e=e.sibling}return null}function se(e){return e===null||typeof e!="object"?null:(e=Nv&&e[Nv]||e["@@iterator"],typeof e=="function"?e:null)}function q(e){if(e==null)return null;if(typeof e=="function")return e.$$typeof===nA?null:e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Xr:return"Fragment";case mh:return"Profiler";case ju:return"StrictMode";case ph:return"Suspense";case gh:return"SuspenseList";case bh:return"Activity"}if(typeof e=="object")switch(typeof e.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),e.$$typeof){case Yr:return"Portal";case Za:return e.displayName||"Context";case hh:return(e._context.displayName||"Context")+".Consumer";case Ns:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Hu:return t=e.displayName||null,t!==null?t:q(e.type)||"Memo";case Hn:t=e._payload,e=e._init;try{return q(e(t))}catch{}}return null}function Se(e){return typeof e.tag=="number"?W(e):typeof e.name=="string"?e.name:null}function W(e){var t=e.type;switch(e.tag){case 31:return"Activity";case 24:return"Cache";case 9:return(t._context.displayName||"Context")+".Consumer";case 10:return t.displayName||"Context";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 26:case 27:case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return q(t);case 8:return t===ju?"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 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t;break;case 29:if(t=e._debugInfo,t!=null){for(var n=t.length-1;0<=n;n--)if(typeof t[n].name=="string")return t[n].name}if(e.return!==null)return W(e.return)}return null}function ze(e){return{current:e}}function le(e,t){0>vo?console.error("Unexpected pop."):(t!==vh[vo]&&console.error("Unexpected Fiber popped."),e.current=yh[vo],yh[vo]=null,vh[vo]=null,vo--)}function ie(e,t,n){vo++,yh[vo]=e.current,vh[vo]=n,e.current=t}function Ce(e){return e===null&&console.error("Expected host context to exist. This error is likely caused by a bug in React. Please file an issue."),e}function He(e,t){ie(al,t,e),ie(Es,e,e),ie(nl,null,e);var n=t.nodeType;switch(n){case 9:case 11:n=n===9?"#document":"#fragment",t=(t=t.documentElement)&&(t=t.namespaceURI)?X0(t):jo;break;default:if(n=t.tagName,t=t.namespaceURI)t=X0(t),t=q0(t,n);else switch(n){case"svg":t=Ai;break;case"math":t=Md;break;default:t=jo}}n=n.toLowerCase(),n=Ug(null,n),n={context:t,ancestorInfo:n},le(nl,e),ie(nl,n,e)}function U(e){le(nl,e),le(Es,e),le(al,e)}function $(){return Ce(nl.current)}function V(e){e.memoizedState!==null&&ie(zu,e,e);var t=Ce(nl.current),n=e.type,a=q0(t.context,n);n=Ug(t.ancestorInfo,n),a={context:a,ancestorInfo:n},t!==a&&(ie(Es,e,e),ie(nl,a,e))}function ye(e){Es.current===e&&(le(nl,e),le(Es,e)),zu.current===e&&(le(zu,e),mc._currentValue=br)}function we(){}function D(){if(Ss===0){Ev=console.log,Sv=console.info,wv=console.warn,Av=console.error,Tv=console.group,Dv=console.groupCollapsed,Rv=console.groupEnd;var e={configurable:!0,enumerable:!0,value:we,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}Ss++}function K(){if(Ss--,Ss===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:Ze({},e,{value:Ev}),info:Ze({},e,{value:Sv}),warn:Ze({},e,{value:wv}),error:Ze({},e,{value:Av}),group:Ze({},e,{value:Tv}),groupCollapsed:Ze({},e,{value:Dv}),groupEnd:Ze({},e,{value:Rv})})}0>Ss&&console.error("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}function X(e){var t=Error.prepareStackTrace;if(Error.prepareStackTrace=void 0,e=e.stack,Error.prepareStackTrace=t,e.startsWith(`Error: react-stack-top-frame
`)&&(e=e.slice(29)),t=e.indexOf(`
`),t!==-1&&(e=e.slice(t+1)),t=e.indexOf("react_stack_bottom_frame"),t!==-1&&(t=e.lastIndexOf(`
`,t)),t!==-1)e=e.slice(0,t);else return"";return e}function I(e){if(xh===void 0)try{throw Error()}catch(n){var t=n.stack.trim().match(/\n( *(at )?)/);xh=t&&t[1]||"",Cv=-1<n.stack.indexOf(`
at`)?" (<anonymous>)":-1<n.stack.indexOf("@")?"@unknown:0:0":""}return`
`+xh+e+Cv}function Te(e,t){if(!e||Nh)return"";var n=Eh.get(e);if(n!==void 0)return n;Nh=!0,n=Error.prepareStackTrace,Error.prepareStackTrace=void 0;var a=null;a=L.H,L.H=null,D();try{var o={DetermineComponentFrameRoot:function(){try{if(t){var A=function(){throw Error()};if(Object.defineProperty(A.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(A,[])}catch(te){var z=te}Reflect.construct(e,[],A)}else{try{A.call()}catch(te){z=te}e.call(A.prototype)}}else{try{throw Error()}catch(te){z=te}(A=e())&&typeof A.catch=="function"&&A.catch(function(){})}}catch(te){if(te&&z&&typeof te.stack=="string")return[te.stack,z.stack]}return[null,null]}};o.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var l=Object.getOwnPropertyDescriptor(o.DetermineComponentFrameRoot,"name");l&&l.configurable&&Object.defineProperty(o.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var i=o.DetermineComponentFrameRoot(),c=i[0],m=i[1];if(c&&m){var p=c.split(`
`),O=m.split(`
`);for(i=l=0;l<p.length&&!p[l].includes("DetermineComponentFrameRoot");)l++;for(;i<O.length&&!O[i].includes("DetermineComponentFrameRoot");)i++;if(l===p.length||i===O.length)for(l=p.length-1,i=O.length-1;1<=l&&0<=i&&p[l]!==O[i];)i--;for(;1<=l&&0<=i;l--,i--)if(p[l]!==O[i]){if(l!==1||i!==1)do if(l--,i--,0>i||p[l]!==O[i]){var _=`
`+p[l].replace(" at new "," at ");return e.displayName&&_.includes("<anonymous>")&&(_=_.replace("<anonymous>",e.displayName)),typeof e=="function"&&Eh.set(e,_),_}while(1<=l&&0<=i);break}}}finally{Nh=!1,L.H=a,K(),Error.prepareStackTrace=n}return p=(p=e?e.displayName||e.name:"")?I(p):"",typeof e=="function"&&Eh.set(e,p),p}function et(e,t){switch(e.tag){case 26:case 27:case 5:return I(e.type);case 16:return I("Lazy");case 13:return e.child!==t&&t!==null?I("Suspense Fallback"):I("Suspense");case 19:return I("SuspenseList");case 0:case 15:return Te(e.type,!1);case 11:return Te(e.type.render,!1);case 1:return Te(e.type,!0);case 31:return I("Activity");default:return""}}function re(e){try{var t="",n=null;do{t+=et(e,n);var a=e._debugInfo;if(a)for(var o=a.length-1;0<=o;o--){var l=a[o];if(typeof l.name=="string"){var i=t;e:{var c=l.name,m=l.env,p=l.debugLocation;if(p!=null){var O=X(p),_=O.lastIndexOf(`
`),A=_===-1?O:O.slice(_+1);if(A.indexOf(c)!==-1){var z=`
`+A;break e}}z=I(c+(m?" ["+m+"]":""))}t=i+z}}n=e,e=e.return}while(e);return t}catch(te){return`
Error generating stack: `+te.message+`
`+te.stack}}function Oe(e){return(e=e?e.displayName||e.name:"")?I(e):""}function tt(){if(zn===null)return null;var e=zn._debugOwner;return e!=null?Se(e):null}function Nt(){if(zn===null)return"";var e=zn;try{var t="";switch(e.tag===6&&(e=e.return),e.tag){case 26:case 27:case 5:t+=I(e.type);break;case 13:t+=I("Suspense");break;case 19:t+=I("SuspenseList");break;case 31:t+=I("Activity");break;case 30:case 0:case 15:case 1:e._debugOwner||t!==""||(t+=Oe(e.type));break;case 11:e._debugOwner||t!==""||(t+=Oe(e.type.render))}for(;e;)if(typeof e.tag=="number"){var n=e;e=n._debugOwner;var a=n._debugStack;if(e&&a){var o=X(a);o!==""&&(t+=`
`+o)}}else if(e.debugStack!=null){var l=e.debugStack;(e=e.owner)&&l&&(t+=`
`+X(l))}else break;var i=t}catch(c){i=`
Error generating stack: `+c.message+`
`+c.stack}return i}function ae(e,t,n,a,o,l,i){var c=zn;Ot(e);try{return e!==null&&e._debugTask?e._debugTask.run(t.bind(null,n,a,o,l,i)):t(n,a,o,l,i)}finally{Ot(c)}throw Error("runWithFiberInDEV should never be called in production. This is a bug in React.")}function Ot(e){L.getCurrentStack=e===null?null:Nt,Ya=!1,zn=e}function gn(e){return typeof Symbol=="function"&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||"Object"}function ra(e){try{return Na(e),!1}catch{return!0}}function Na(e){return""+e}function Ie(e,t){if(ra(e))return console.error("The provided `%s` attribute is an unsupported type %s. This value must be coerced to a string before using it here.",t,gn(e)),Na(e)}function wt(e,t){if(ra(e))return console.error("The provided `%s` CSS property is an unsupported type %s. This value must be coerced to a string before using it here.",t,gn(e)),Na(e)}function oo(e){if(ra(e))return console.error("Form field values (value, checked, defaultValue, or defaultChecked props) must be strings, not %s. This value must be coerced to a string before using it here.",gn(e)),Na(e)}function Dn(e){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")return!1;var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(t.isDisabled)return!0;if(!t.supportsFiber)return console.error("The installed version of React DevTools is too old and will not work with the current version of React. Please update React DevTools. https://react.dev/link/react-devtools"),!0;try{$r=t.inject(e),nn=t}catch(n){console.error("React instrumentation encountered an error: %o.",n)}return!!t.checkDCE}function he(e){if(typeof cA=="function"&&uA(e),nn&&typeof nn.setStrictMode=="function")try{nn.setStrictMode($r,e)}catch(t){Xa||(Xa=!0,console.error("React instrumentation encountered an error: %o",t))}}function Bo(e){return e>>>=0,e===0?32:31-(dA(e)/fA|0)|0}function bt(e){var t=e&42;if(t!==0)return t;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:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return console.error("Should have found matching lanes. This is a bug in React."),e}}function bn(e,t,n){var a=e.pendingLanes;if(a===0)return 0;var o=0,l=e.suspendedLanes,i=e.pingedLanes;e=e.warmLanes;var c=a&134217727;return c!==0?(a=c&~l,a!==0?o=bt(a):(i&=c,i!==0?o=bt(i):n||(n=c&~e,n!==0&&(o=bt(n))))):(c=a&~l,c!==0?o=bt(c):i!==0?o=bt(i):n||(n=a&~e,n!==0&&(o=bt(n)))),o===0?0:t!==0&&t!==o&&(t&l)===0&&(l=o&-o,n=t&-t,l>=n||l===32&&(n&4194048)!==0)?t:o}function Ea(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Ar(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return console.error("Should have found matching lanes. This is a bug in React."),-1}}function Sa(){var e=Uu;return Uu<<=1,(Uu&62914560)===0&&(Uu=4194304),e}function _l(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function ia(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Go(e,t,n,a,o,l){var i=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var c=e.entanglements,m=e.expirationTimes,p=e.hiddenUpdates;for(n=i&~n;0<n;){var O=31-sn(n),_=1<<O;c[O]=0,m[O]=-1;var A=p[O];if(A!==null)for(p[O]=null,O=0;O<A.length;O++){var z=A[O];z!==null&&(z.lane&=-536870913)}n&=~_}a!==0&&Yn(e,a,0),l!==0&&o===0&&e.tag!==0&&(e.suspendedLanes|=l&~(i&~t))}function Yn(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var a=31-sn(t);e.entangledLanes|=t,e.entanglements[a]=e.entanglements[a]|1073741824|n&261930}function Zo(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var a=31-sn(n),o=1<<a;o&t|e[a]&t&&(e[a]|=t),n&=~o}}function yn(e,t){var n=t&-t;return n=(n&42)!==0?1:wa(n),(n&(e.suspendedLanes|t))!==0?0:n}function wa(e){switch(e){case 2:e=1;break;case 8:e=4;break;case 32:e=16;break;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:e=128;break;case 268435456:e=134217728;break;default:e=0}return e}function lo(e,t,n){if(qa)for(e=e.pendingUpdatersLaneMap;0<n;){var a=31-sn(n),o=1<<a;e[a].add(t),n&=~o}}function ro(e,t){if(qa)for(var n=e.pendingUpdatersLaneMap,a=e.memoizedUpdaters;0<t;){var o=31-sn(t);e=1<<o,o=n[o],0<o.size&&(o.forEach(function(l){var i=l.alternate;i!==null&&a.has(i)||a.add(l)}),o.clear()),t&=~e}}function io(e){return e&=-e,$n<e?$a<e?(e&134217727)!==0?xo:Lu:$a:$n}function Aa(){var e=We.p;return e!==0?e:(e=window.event,e===void 0?xo:hv(e.type))}function y(e,t){var n=We.p;try{return We.p=e,t()}finally{We.p=n}}function M(e){delete e[Wt],delete e[cn],delete e[Dh],delete e[mA],delete e[hA]}function J(e){var t=e[Wt];if(t)return t;for(var n=e.parentNode;n;){if(t=n[ll]||n[Wt]){if(n=t.alternate,t.child!==null||n!==null&&n.child!==null)for(e=ev(e);e!==null;){if(n=e[Wt])return n;e=ev(e)}return t}e=n,n=e.parentNode}return null}function ee(e){if(e=e[Wt]||e[ll]){var t=e.tag;if(t===5||t===6||t===13||t===31||t===26||t===27||t===3)return e}return null}function pe(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e.stateNode;throw Error("getNodeFromInstance: Invalid argument.")}function je(e){var t=e[kv];return t||(t=e[kv]={hoistableStyles:new Map,hoistableScripts:new Map}),t}function Q(e){e[ws]=!0}function De(e,t){xe(e,t),xe(e+"Capture",t)}function xe(e,t){Jl[e]&&console.error("EventRegistry: More than one plugin attempted to publish the same registration name, `%s`.",e),Jl[e]=t;var n=e.toLowerCase();for(Rh[n]=e,e==="onDoubleClick"&&(Rh.ondblclick=e),e=0;e<t.length;e++)Ov.add(t[e])}function lt(e,t){pA[t.type]||t.onChange||t.onInput||t.readOnly||t.disabled||t.value==null||console.error(e==="select"?"You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set `onChange`.":"You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`."),t.onChange||t.readOnly||t.disabled||t.checked==null||console.error("You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`.")}function ln(e){return fa.call(Mv,e)?!0:fa.call(_v,e)?!1:gA.test(e)?Mv[e]=!0:(_v[e]=!0,console.error("Invalid attribute name: `%s`",e),!1)}function At(e,t,n){if(ln(t)){if(!e.hasAttribute(t)){switch(typeof n){case"symbol":case"object":return n;case"function":return n;case"boolean":if(n===!1)return n}return n===void 0?void 0:null}return e=e.getAttribute(t),e===""&&n===!0?!0:(Ie(n,t),e===""+n?n:e)}}function Lt(e,t,n){if(ln(t))if(n===null)e.removeAttribute(t);else{switch(typeof n){case"undefined":case"function":case"symbol":e.removeAttribute(t);return;case"boolean":var a=t.toLowerCase().slice(0,5);if(a!=="data-"&&a!=="aria-"){e.removeAttribute(t);return}}Ie(n,t),e.setAttribute(t,""+n)}}function so(e,t,n){if(n===null)e.removeAttribute(t);else{switch(typeof n){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(t);return}Ie(n,t),e.setAttribute(t,""+n)}}function Rt(e,t,n,a){if(a===null)e.removeAttribute(n);else{switch(typeof a){case"undefined":case"function":case"symbol":case"boolean":e.removeAttribute(n);return}Ie(a,n),e.setAttributeNS(t,n,""+a)}}function yt(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":return e;case"object":return oo(e),e;default:return""}}function Li(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function co(e,t,n){var a=Object.getOwnPropertyDescriptor(e.constructor.prototype,t);if(!e.hasOwnProperty(t)&&typeof a<"u"&&typeof a.get=="function"&&typeof a.set=="function"){var o=a.get,l=a.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(i){oo(i),n=""+i,l.call(this,i)}}),Object.defineProperty(e,t,{enumerable:a.enumerable}),{getValue:function(){return n},setValue:function(i){oo(i),n=""+i},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Dc(e){if(!e._valueTracker){var t=Li(e)?"checked":"value";e._valueTracker=co(e,t,""+e[t])}}function Tg(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),a="";return e&&(a=Li(e)?e.checked?"true":"false":e.value),e=a,e!==n?(t.setValue(e),!0):!1}function Rc(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 Xn(e){return e.replace(bA,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Dg(e,t){t.checked===void 0||t.defaultChecked===void 0||Hv||(console.error("%s contains an input of type %s with both checked and defaultChecked props. Input elements must be either controlled or uncontrolled (specify either the checked prop, or the defaultChecked prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://react.dev/link/controlled-components",tt()||"A component",t.type),Hv=!0),t.value===void 0||t.defaultValue===void 0||jv||(console.error("%s contains an input of type %s with both value and defaultValue props. Input elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://react.dev/link/controlled-components",tt()||"A component",t.type),jv=!0)}function rf(e,t,n,a,o,l,i,c){e.name="",i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"?(Ie(i,"type"),e.type=i):e.removeAttribute("type"),t!=null?i==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+yt(t)):e.value!==""+yt(t)&&(e.value=""+yt(t)):i!=="submit"&&i!=="reset"||e.removeAttribute("value"),t!=null?sf(e,i,yt(t)):n!=null?sf(e,i,yt(n)):a!=null&&e.removeAttribute("value"),o==null&&l!=null&&(e.defaultChecked=!!l),o!=null&&(e.checked=o&&typeof o!="function"&&typeof o!="symbol"),c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?(Ie(c,"name"),e.name=""+yt(c)):e.removeAttribute("name")}function Rg(e,t,n,a,o,l,i,c){if(l!=null&&typeof l!="function"&&typeof l!="symbol"&&typeof l!="boolean"&&(Ie(l,"type"),e.type=l),t!=null||n!=null){if(!(l!=="submit"&&l!=="reset"||t!=null)){Dc(e);return}n=n!=null?""+yt(n):"",t=t!=null?""+yt(t):n,c||t===e.value||(e.value=t),e.defaultValue=t}a=a??o,a=typeof a!="function"&&typeof a!="symbol"&&!!a,e.checked=c?e.checked:!!a,e.defaultChecked=!!a,i!=null&&typeof i!="function"&&typeof i!="symbol"&&typeof i!="boolean"&&(Ie(i,"name"),e.name=i),Dc(e)}function sf(e,t,n){t==="number"&&Rc(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function Cg(e,t){t.value==null&&(typeof t.children=="object"&&t.children!==null?fh.Children.forEach(t.children,function(n){n==null||typeof n=="string"||typeof n=="number"||typeof n=="bigint"||Pv||(Pv=!0,console.error("Cannot infer the option value of complex children. Pass a `value` prop or use a plain string as children to <option>."))}):t.dangerouslySetInnerHTML==null||Vv||(Vv=!0,console.error("Pass a `value` prop if you set dangerouslyInnerHTML so React knows which value should be selected."))),t.selected==null||zv||(console.error("Use the `defaultValue` or `value` props on <select> instead of setting `selected` on <option>."),zv=!0)}function kg(){var e=tt();return e?`
Check the render method of \``+e+"`.":""}function Tr(e,t,n,a){if(e=e.options,t){t={};for(var o=0;o<n.length;o++)t["$"+n[o]]=!0;for(n=0;n<e.length;n++)o=t.hasOwnProperty("$"+e[n].value),e[n].selected!==o&&(e[n].selected=o),o&&a&&(e[n].defaultSelected=!0)}else{for(n=""+yt(n),t=null,o=0;o<e.length;o++){if(e[o].value===n){e[o].selected=!0,a&&(e[o].defaultSelected=!0);return}t!==null||e[o].disabled||(t=e[o])}t!==null&&(t.selected=!0)}}function Og(e,t){for(e=0;e<Lv.length;e++){var n=Lv[e];if(t[n]!=null){var a=Bt(t[n]);t.multiple&&!a?console.error("The `%s` prop supplied to <select> must be an array if `multiple` is true.%s",n,kg()):!t.multiple&&a&&console.error("The `%s` prop supplied to <select> must be a scalar value if `multiple` is false.%s",n,kg())}}t.value===void 0||t.defaultValue===void 0||Uv||(console.error("Select elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled select element and remove one of these props. More info: https://react.dev/link/controlled-components"),Uv=!0)}function _g(e,t){t.value===void 0||t.defaultValue===void 0||Bv||(console.error("%s contains a textarea with both value and defaultValue props. Textarea elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled textarea and remove one of these props. More info: https://react.dev/link/controlled-components",tt()||"A component"),Bv=!0),t.children!=null&&t.value==null&&console.error("Use the `defaultValue` or `value` props instead of setting children on <textarea>.")}function Mg(e,t,n){if(t!=null&&(t=""+yt(t),t!==e.value&&(e.value=t),n==null)){e.defaultValue!==t&&(e.defaultValue=t);return}e.defaultValue=n!=null?""+yt(n):""}function jg(e,t,n,a){if(t==null){if(a!=null){if(n!=null)throw Error("If you supply `defaultValue` on a <textarea>, do not pass children.");if(Bt(a)){if(1<a.length)throw Error("<textarea> can only have at most one child.");a=a[0]}n=a}n==null&&(n=""),t=n}n=yt(t),e.defaultValue=n,a=e.textContent,a===n&&a!==""&&a!==null&&(e.value=a),Dc(e)}function Hg(e,t){return e.serverProps===void 0&&e.serverTail.length===0&&e.children.length===1&&3<e.distanceFromLeaf&&e.distanceFromLeaf>15-t?Hg(e.children[0],t):e}function Rn(e){return" "+" ".repeat(e)}function Dr(e){return"+ "+" ".repeat(e)}function Ml(e){return"- "+" ".repeat(e)}function zg(e){switch(e.tag){case 26:case 27:case 5:return e.type;case 16:return"Lazy";case 31:return"Activity";case 13:return"Suspense";case 19:return"SuspenseList";case 0:case 15:return e=e.type,e.displayName||e.name||null;case 11:return e=e.type.render,e.displayName||e.name||null;case 1:return e=e.type,e.displayName||e.name||null;default:return null}}function Bi(e,t){return Gv.test(e)?(e=JSON.stringify(e),e.length>t-2?8>t?'{"..."}':"{"+e.slice(0,t-7)+'..."}':"{"+e+"}"):e.length>t?5>t?'{"..."}':e.slice(0,t-3)+"...":e}function Cc(e,t,n){var a=120-2*n;if(t===null)return Dr(n)+Bi(e,a)+`
`;if(typeof t=="string"){for(var o=0;o<t.length&&o<e.length&&t.charCodeAt(o)===e.charCodeAt(o);o++);return o>a-8&&10<o&&(e="..."+e.slice(o-8),t="..."+t.slice(o-8)),Dr(n)+Bi(e,a)+`
`+Ml(n)+Bi(t,a)+`
`}return Rn(n)+Bi(e,a)+`
`}function cf(e){return Object.prototype.toString.call(e).replace(/^\[object (.*)\]$/,function(t,n){return n})}function Gi(e,t){switch(typeof e){case"string":return e=JSON.stringify(e),e.length>t?5>t?'"..."':e.slice(0,t-4)+'..."':e;case"object":if(e===null)return"null";if(Bt(e))return"[...]";if(e.$$typeof===Ga)return(t=q(e.type))?"<"+t+">":"<...>";var n=cf(e);if(n==="Object"){n="",t-=2;for(var a in e)if(e.hasOwnProperty(a)){var o=JSON.stringify(a);if(o!=='"'+a+'"'&&(a=o),t-=a.length-2,o=Gi(e[a],15>t?t:15),t-=o.length,0>t){n+=n===""?"...":", ...";break}n+=(n===""?"":",")+a+":"+o}return"{"+n+"}"}return n;case"function":return(t=e.displayName||e.name)?"function "+t:"function";default:return String(e)}}function Rr(e,t){return typeof e!="string"||Gv.test(e)?"{"+Gi(e,t-2)+"}":e.length>t-2?5>t?'"..."':'"'+e.slice(0,t-5)+'..."':'"'+e+'"'}function uf(e,t,n){var a=120-n.length-e.length,o=[],l;for(l in t)if(t.hasOwnProperty(l)&&l!=="children"){var i=Rr(t[l],120-n.length-l.length-1);a-=l.length+i.length+2,o.push(l+"="+i)}return o.length===0?n+"<"+e+`>
`:0<a?n+"<"+e+" "+o.join(" ")+`>
`:n+"<"+e+`
`+n+" "+o.join(`
`+n+" ")+`
`+n+`>
`}function fS(e,t,n){var a="",o=Ze({},t),l;for(l in e)if(e.hasOwnProperty(l)){delete o[l];var i=120-2*n-l.length-2,c=Gi(e[l],i);t.hasOwnProperty(l)?(i=Gi(t[l],i),a+=Dr(n)+l+": "+c+`
`,a+=Ml(n)+l+": "+i+`
`):a+=Dr(n)+l+": "+c+`
`}for(var m in o)o.hasOwnProperty(m)&&(e=Gi(o[m],120-2*n-m.length-2),a+=Ml(n)+m+": "+e+`
`);return a}function mS(e,t,n,a){var o="",l=new Map;for(p in n)n.hasOwnProperty(p)&&l.set(p.toLowerCase(),p);if(l.size===1&&l.has("children"))o+=uf(e,t,Rn(a));else{for(var i in t)if(t.hasOwnProperty(i)&&i!=="children"){var c=120-2*(a+1)-i.length-1,m=l.get(i.toLowerCase());if(m!==void 0){l.delete(i.toLowerCase());var p=t[i];m=n[m];var O=Rr(p,c);c=Rr(m,c),typeof p=="object"&&p!==null&&typeof m=="object"&&m!==null&&cf(p)==="Object"&&cf(m)==="Object"&&(2<Object.keys(p).length||2<Object.keys(m).length||-1<O.indexOf("...")||-1<c.indexOf("..."))?o+=Rn(a+1)+i+`={{
`+fS(p,m,a+2)+Rn(a+1)+`}}
`:(o+=Dr(a+1)+i+"="+O+`
`,o+=Ml(a+1)+i+"="+c+`
`)}else o+=Rn(a+1)+i+"="+Rr(t[i],c)+`
`}l.forEach(function(_){if(_!=="children"){var A=120-2*(a+1)-_.length-1;o+=Ml(a+1)+_+"="+Rr(n[_],A)+`
`}}),o=o===""?Rn(a)+"<"+e+`>
`:Rn(a)+"<"+e+`
`+o+Rn(a)+`>
`}return e=n.children,t=t.children,typeof e=="string"||typeof e=="number"||typeof e=="bigint"?(l="",(typeof t=="string"||typeof t=="number"||typeof t=="bigint")&&(l=""+t),o+=Cc(l,""+e,a+1)):(typeof t=="string"||typeof t=="number"||typeof t=="bigint")&&(o=e==null?o+Cc(""+t,null,a+1):o+Cc(""+t,void 0,a+1)),o}function Pg(e,t){var n=zg(e);if(n===null){for(n="",e=e.child;e;)n+=Pg(e,t),e=e.sibling;return n}return Rn(t)+"<"+n+`>
`}function df(e,t){var n=Hg(e,t);if(n!==e&&(e.children.length!==1||e.children[0]!==n))return Rn(t)+`...
`+df(n,t+1);n="";var a=e.fiber._debugInfo;if(a)for(var o=0;o<a.length;o++){var l=a[o].name;typeof l=="string"&&(n+=Rn(t)+"<"+l+`>
`,t++)}if(a="",o=e.fiber.pendingProps,e.fiber.tag===6)a=Cc(o,e.serverProps,t),t++;else if(l=zg(e.fiber),l!==null)if(e.serverProps===void 0){a=t;var i=120-2*a-l.length-2,c="";for(p in o)if(o.hasOwnProperty(p)&&p!=="children"){var m=Rr(o[p],15);if(i-=p.length+m.length+2,0>i){c+=" ...";break}c+=" "+p+"="+m}a=Rn(a)+"<"+l+c+`>
`,t++}else e.serverProps===null?(a=uf(l,o,Dr(t)),t++):typeof e.serverProps=="string"?console.error("Should not have matched a non HostText fiber to a Text node. This is a bug in React."):(a=mS(l,o,e.serverProps,t),t++);var p="";for(o=e.fiber.child,l=0;o&&l<e.children.length;)i=e.children[l],i.fiber===o?(p+=df(i,t),l++):p+=Pg(o,t),o=o.sibling;for(o&&0<e.children.length&&(p+=Rn(t)+`...
`),o=e.serverTail,e.serverProps===null&&t--,e=0;e<o.length;e++)l=o[e],p=typeof l=="string"?p+(Ml(t)+Bi(l,120-2*t)+`
`):p+uf(l.type,l.props,Ml(t));return n+a+p}function ff(e){try{return`
`+df(e,0)}catch{return""}}function Vg(e,t,n){for(var a=t,o=null,l=0;a;)a===e&&(l=0),o={fiber:a,children:o!==null?[o]:[],serverProps:a===t?n:a===e?null:void 0,serverTail:[],distanceFromLeaf:l},l++,a=a.return;return o!==null?ff(o).replaceAll(/^[+-]/gm,">"):""}function Ug(e,t){var n=Ze({},e||Yv),a={tag:t};return Zv.indexOf(t)!==-1&&(n.aTagInScope=null,n.buttonTagInScope=null,n.nobrTagInScope=null),vA.indexOf(t)!==-1&&(n.pTagInButtonScope=null),yA.indexOf(t)!==-1&&t!=="address"&&t!=="div"&&t!=="p"&&(n.listItemTagAutoclosing=null,n.dlItemTagAutoclosing=null),n.current=a,t==="form"&&(n.formTag=a),t==="a"&&(n.aTagInScope=a),t==="button"&&(n.buttonTagInScope=a),t==="nobr"&&(n.nobrTagInScope=a),t==="p"&&(n.pTagInButtonScope=a),t==="li"&&(n.listItemTagAutoclosing=a),(t==="dd"||t==="dt")&&(n.dlItemTagAutoclosing=a),t==="#document"||t==="html"?n.containerTagInScope=null:n.containerTagInScope||(n.containerTagInScope=a),e!==null||t!=="#document"&&t!=="html"&&t!=="body"?n.implicitRootScope===!0&&(n.implicitRootScope=!1):n.implicitRootScope=!0,n}function Lg(e,t,n){switch(t){case"select":return e==="hr"||e==="option"||e==="optgroup"||e==="script"||e==="template"||e==="#text";case"optgroup":return e==="option"||e==="#text";case"option":return e==="#text";case"tr":return e==="th"||e==="td"||e==="style"||e==="script"||e==="template";case"tbody":case"thead":case"tfoot":return e==="tr"||e==="style"||e==="script"||e==="template";case"colgroup":return e==="col"||e==="template";case"table":return e==="caption"||e==="colgroup"||e==="tbody"||e==="tfoot"||e==="thead"||e==="style"||e==="script"||e==="template";case"head":return e==="base"||e==="basefont"||e==="bgsound"||e==="link"||e==="meta"||e==="title"||e==="noscript"||e==="noframes"||e==="style"||e==="script"||e==="template";case"html":if(n)break;return e==="head"||e==="body"||e==="frameset";case"frameset":return e==="frame";case"#document":if(!n)return e==="html"}switch(e){case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":return t!=="h1"&&t!=="h2"&&t!=="h3"&&t!=="h4"&&t!=="h5"&&t!=="h6";case"rp":case"rt":return xA.indexOf(t)===-1;case"caption":case"col":case"colgroup":case"frameset":case"frame":case"tbody":case"td":case"tfoot":case"th":case"thead":case"tr":return t==null;case"head":return n||t===null;case"html":return n&&t==="#document"||t===null;case"body":return n&&(t==="#document"||t==="html")||t===null}return!0}function hS(e,t){switch(e){case"address":case"article":case"aside":case"blockquote":case"center":case"details":case"dialog":case"dir":case"div":case"dl":case"fieldset":case"figcaption":case"figure":case"footer":case"header":case"hgroup":case"main":case"menu":case"nav":case"ol":case"p":case"section":case"summary":case"ul":case"pre":case"listing":case"table":case"hr":case"xmp":case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":return t.pTagInButtonScope;case"form":return t.formTag||t.pTagInButtonScope;case"li":return t.listItemTagAutoclosing;case"dd":case"dt":return t.dlItemTagAutoclosing;case"button":return t.buttonTagInScope;case"a":return t.aTagInScope;case"nobr":return t.nobrTagInScope}return null}function Bg(e,t){for(;e;){switch(e.tag){case 5:case 26:case 27:if(e.type===t)return e}e=e.return}return null}function mf(e,t){t=t||Yv;var n=t.current;if(t=(n=Lg(e,n&&n.tag,t.implicitRootScope)?null:n)?null:hS(e,t),t=n||t,!t)return!0;var a=t.tag;if(t=String(!!n)+"|"+e+"|"+a,Bu[t])return!1;Bu[t]=!0;var o=(t=zn)?Bg(t.return,a):null,l=t!==null&&o!==null?Vg(o,t,null):"",i="<"+e+">";return n?(n="",a==="table"&&e==="tr"&&(n+=" Add a <tbody>, <thead> or <tfoot> to your code to match the DOM tree generated by the browser."),console.error(`In HTML, %s cannot be a child of <%s>.%s
This will cause a hydration error.%s`,i,a,n,l)):console.error(`In HTML, %s cannot be a descendant of <%s>.
This will cause a hydration error.%s`,i,a,l),t&&(e=t.return,o===null||e===null||o===e&&e._debugOwner===t._debugOwner||ae(o,function(){console.error(`<%s> cannot contain a nested %s.
See this log for the ancestor stack trace.`,a,i)})),!1}function kc(e,t,n){if(n||Lg("#text",t,!1))return!0;if(n="#text|"+t,Bu[n])return!1;Bu[n]=!0;var a=(n=zn)?Bg(n,t):null;return n=n!==null&&a!==null?Vg(a,n,n.tag!==6?{children:null}:null):"",/\S/.test(e)?console.error(`In HTML, text nodes cannot be a child of <%s>.
This will cause a hydration error.%s`,t,n):console.error(`In HTML, whitespace text nodes cannot be a child of <%s>. Make sure you don't have any extra whitespace between tags on each line of your source code.
This will cause a hydration error.%s`,t,n),!1}function Zi(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}function pS(e){return e.replace(SA,function(t,n){return n.toUpperCase()})}function Gg(e,t,n){var a=t.indexOf("--")===0;a||(-1<t.indexOf("-")?Jr.hasOwnProperty(t)&&Jr[t]||(Jr[t]=!0,console.error("Unsupported style property %s. Did you mean %s?",t,pS(t.replace(EA,"ms-")))):NA.test(t)?Jr.hasOwnProperty(t)&&Jr[t]||(Jr[t]=!0,console.error("Unsupported vendor-prefixed style property %s. Did you mean %s?",t,t.charAt(0).toUpperCase()+t.slice(1))):!$v.test(n)||kh.hasOwnProperty(n)&&kh[n]||(kh[n]=!0,console.error(`Style property values shouldn't contain a semicolon. Try "%s: %s" instead.`,t,n.replace($v,""))),typeof n=="number"&&(isNaN(n)?Jv||(Jv=!0,console.error("`NaN` is an invalid value for the `%s` css style property.",t)):isFinite(n)||Qv||(Qv=!0,console.error("`Infinity` is an invalid value for the `%s` css style property.",t)))),n==null||typeof n=="boolean"||n===""?a?e.setProperty(t,""):t==="float"?e.cssFloat="":e[t]="":a?e.setProperty(t,n):typeof n!="number"||n===0||Fv.has(t)?t==="float"?e.cssFloat=n:(wt(n,t),e[t]=(""+n).trim()):e[t]=n+"px"}function Zg(e,t,n){if(t!=null&&typeof t!="object")throw Error("The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + 'em'}} when using JSX.");if(t&&Object.freeze(t),e=e.style,n!=null){if(t){var a={};if(n){for(var o in n)if(n.hasOwnProperty(o)&&!t.hasOwnProperty(o))for(var l=Ch[o]||[o],i=0;i<l.length;i++)a[l[i]]=o}for(var c in t)if(t.hasOwnProperty(c)&&(!n||n[c]!==t[c]))for(o=Ch[c]||[c],l=0;l<o.length;l++)a[o[l]]=c;c={};for(var m in t)for(o=Ch[m]||[m],l=0;l<o.length;l++)c[o[l]]=m;m={};for(var p in a)if(o=a[p],(l=c[p])&&o!==l&&(i=o+","+l,!m[i])){m[i]=!0,i=console;var O=t[o];i.error.call(i,"%s a style property during rerender (%s) when a conflicting property is set (%s) can lead to styling bugs. To avoid this, don't mix shorthand and non-shorthand properties for the same value; instead, replace the shorthand with separate values.",O==null||typeof O=="boolean"||O===""?"Removing":"Updating",o,l)}}for(var _ in n)!n.hasOwnProperty(_)||t!=null&&t.hasOwnProperty(_)||(_.indexOf("--")===0?e.setProperty(_,""):_==="float"?e.cssFloat="":e[_]="");for(var A in t)p=t[A],t.hasOwnProperty(A)&&n[A]!==p&&Gg(e,A,p)}else for(a in t)t.hasOwnProperty(a)&&Gg(e,a,t[a])}function Yi(e){if(e.indexOf("-")===-1)return!1;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function Yg(e){return wA.get(e)||e}function gS(e,t){if(fa.call(Fr,t)&&Fr[t])return!0;if(TA.test(t)){if(e="aria-"+t.slice(4).toLowerCase(),e=Iv.hasOwnProperty(e)?e:null,e==null)return console.error("Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.",t),Fr[t]=!0;if(t!==e)return console.error("Invalid ARIA attribute `%s`. Did you mean `%s`?",t,e),Fr[t]=!0}if(AA.test(t)){if(e=t.toLowerCase(),e=Iv.hasOwnProperty(e)?e:null,e==null)return Fr[t]=!0,!1;t!==e&&(console.error("Unknown ARIA attribute `%s`. Did you mean `%s`?",t,e),Fr[t]=!0)}return!0}function bS(e,t){var n=[],a;for(a in t)gS(e,a)||n.push(a);t=n.map(function(o){return"`"+o+"`"}).join(", "),n.length===1?console.error("Invalid aria prop %s on <%s> tag. For details, see https://react.dev/link/invalid-aria-props",t,e):1<n.length&&console.error("Invalid aria props %s on <%s> tag. For details, see https://react.dev/link/invalid-aria-props",t,e)}function yS(e,t,n,a){if(fa.call(un,t)&&un[t])return!0;var o=t.toLowerCase();if(o==="onfocusin"||o==="onfocusout")return console.error("React uses onFocus and onBlur instead of onFocusIn and onFocusOut. All React events are normalized to bubble, so onFocusIn and onFocusOut are not needed/supported by React."),un[t]=!0;if(typeof n=="function"&&(e==="form"&&t==="action"||e==="input"&&t==="formAction"||e==="button"&&t==="formAction"))return!0;if(a!=null){if(e=a.possibleRegistrationNames,a.registrationNameDependencies.hasOwnProperty(t))return!0;if(a=e.hasOwnProperty(o)?e[o]:null,a!=null)return console.error("Invalid event handler property `%s`. Did you mean `%s`?",t,a),un[t]=!0;if(Wv.test(t))return console.error("Unknown event handler property `%s`. It will be ignored.",t),un[t]=!0}else if(Wv.test(t))return DA.test(t)&&console.error("Invalid event handler property `%s`. React events use the camelCase naming convention, for example `onClick`.",t),un[t]=!0;if(RA.test(t)||CA.test(t))return!0;if(o==="innerhtml")return console.error("Directly setting property `innerHTML` is not permitted. For more information, lookup documentation on `dangerouslySetInnerHTML`."),un[t]=!0;if(o==="aria")return console.error("The `aria` attribute is reserved for future use in React. Pass individual `aria-` attributes instead."),un[t]=!0;if(o==="is"&&n!==null&&n!==void 0&&typeof n!="string")return console.error("Received a `%s` for a string attribute `is`. If this is expected, cast the value to a string.",typeof n),un[t]=!0;if(typeof n=="number"&&isNaN(n))return console.error("Received NaN for the `%s` attribute. If this is expected, cast the value to a string.",t),un[t]=!0;if(Zu.hasOwnProperty(o)){if(o=Zu[o],o!==t)return console.error("Invalid DOM property `%s`. Did you mean `%s`?",t,o),un[t]=!0}else if(t!==o)return console.error("React does not recognize the `%s` prop on a DOM element. If you intentionally want it to appear in the DOM as a custom attribute, spell it as lowercase `%s` instead. If you accidentally passed it from a parent component, remove it from the DOM element.",t,o),un[t]=!0;switch(t){case"dangerouslySetInnerHTML":case"children":case"style":case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":return!0;case"innerText":case"textContent":return!0}switch(typeof n){case"boolean":switch(t){case"autoFocus":case"checked":case"multiple":case"muted":case"selected":case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":case"capture":case"download":case"inert":return!0;default:return o=t.toLowerCase().slice(0,5),o==="data-"||o==="aria-"?!0:(n?console.error('Received `%s` for a non-boolean attribute `%s`.\n\nIf you want to write it to the DOM, pass a string instead: %s="%s" or %s={value.toString()}.',n,t,t,n,t):console.error('Received `%s` for a non-boolean attribute `%s`.\n\nIf you want to write it to the DOM, pass a string instead: %s="%s" or %s={value.toString()}.\n\nIf you used to conditionally omit it with %s={condition && value}, pass %s={condition ? value : undefined} instead.',n,t,t,n,t,t,t),un[t]=!0)}case"function":case"symbol":return un[t]=!0,!1;case"string":if(n==="false"||n==="true"){switch(t){case"checked":case"selected":case"multiple":case"muted":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":case"inert":break;default:return!0}console.error("Received the string `%s` for the boolean attribute `%s`. %s Did you mean %s={%s}?",n,t,n==="false"?"The browser will interpret it as a truthy value.":'Although this works, it will not work as expected if you pass the string "false".',t,n),un[t]=!0}}return!0}function vS(e,t,n){var a=[],o;for(o in t)yS(e,o,t[o],n)||a.push(o);t=a.map(function(l){return"`"+l+"`"}).join(", "),a.length===1?console.error("Invalid value for prop %s on <%s> tag. Either remove it from the element, or pass a string or number value to keep it in the DOM. For details, see https://react.dev/link/attribute-behavior ",t,e):1<a.length&&console.error("Invalid values for props %s on <%s> tag. Either remove them from the element, or pass a string or number value to keep them in the DOM. For details, see https://react.dev/link/attribute-behavior ",t,e)}function Xi(e){return kA.test(""+e)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":e}function uo(){}function hf(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}function Xg(e){var t=ee(e);if(t&&(e=t.stateNode)){var n=e[cn]||null;e:switch(e=t.stateNode,t.type){case"input":if(rf(e,n.value,n.defaultValue,n.defaultValue,n.checked,n.defaultChecked,n.type,n.name),t=n.name,n.type==="radio"&&t!=null){for(n=e;n.parentNode;)n=n.parentNode;for(Ie(t,"name"),n=n.querySelectorAll('input[name="'+Xn(""+t)+'"][type="radio"]'),t=0;t<n.length;t++){var a=n[t];if(a!==e&&a.form===e.form){var o=a[cn]||null;if(!o)throw Error("ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.");rf(a,o.value,o.defaultValue,o.defaultValue,o.checked,o.defaultChecked,o.type,o.name)}}for(t=0;t<n.length;t++)a=n[t],a.form===e.form&&Tg(a)}break e;case"textarea":Mg(e,n.value,n.defaultValue);break e;case"select":t=n.value,t!=null&&Tr(e,!!n.multiple,t,!1)}}}function qg(e,t,n){if(Oh)return e(t,n);Oh=!0;try{var a=e(t);return a}finally{if(Oh=!1,(Ir!==null||Kr!==null)&&(Vr(),Ir&&(t=Ir,e=Kr,Kr=Ir=null,Xg(t),e)))for(t=0;t<e.length;t++)Xg(e[t])}}function qi(e,t){var n=e.stateNode;if(n===null)return null;var a=n[cn]||null;if(a===null)return null;n=a[t];e:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(a=!a.disabled)||(e=e.type,a=!(e==="button"||e==="input"||e==="select"||e==="textarea")),e=!a;break e;default:e=!1}if(e)return null;if(n&&typeof n!="function")throw Error("Expected `"+t+"` listener to be a function, instead got a value of `"+typeof n+"` type.");return n}function $g(){if(Yu)return Yu;var e,t=Mh,n=t.length,a,o="value"in rl?rl.value:rl.textContent,l=o.length;for(e=0;e<n&&t[e]===o[e];e++);var i=n-e;for(a=1;a<=i&&t[n-a]===o[l-a];a++);return Yu=o.slice(e,1<a?1-a:void 0)}function Oc(e){var t=e.keyCode;return"charCode"in e?(e=e.charCode,e===0&&t===13&&(e=13)):e=t,e===10&&(e=13),32<=e||e===13?e:0}function _c(){return!0}function Jg(){return!1}function vn(e){function t(n,a,o,l,i){this._reactName=n,this._targetInst=o,this.type=a,this.nativeEvent=l,this.target=i,this.currentTarget=null;for(var c in e)e.hasOwnProperty(c)&&(n=e[c],this[c]=n?n(l):l[c]);return this.isDefaultPrevented=(l.defaultPrevented!=null?l.defaultPrevented:l.returnValue===!1)?_c:Jg,this.isPropagationStopped=Jg,this}return Ze(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var n=this.nativeEvent;n&&(n.preventDefault?n.preventDefault():typeof n.returnValue!="unknown"&&(n.returnValue=!1),this.isDefaultPrevented=_c)},stopPropagation:function(){var n=this.nativeEvent;n&&(n.stopPropagation?n.stopPropagation():typeof n.cancelBubble!="unknown"&&(n.cancelBubble=!0),this.isPropagationStopped=_c)},persist:function(){},isPersistent:_c}),t}function xS(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):(e=ZA[e])?!!t[e]:!1}function pf(){return xS}function Qg(e,t){switch(e){case"keyup":return tT.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==ax;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Fg(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}function NS(e,t){switch(e){case"compositionend":return Fg(t);case"keypress":return t.which!==lx?null:(ix=!0,rx);case"textInput":return e=t.data,e===rx&&ix?null:e;default:return null}}function ES(e,t){if(Wr)return e==="compositionend"||!Ph&&Qg(e,t)?(e=$g(),Yu=Mh=rl=null,Wr=!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.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return ox&&t.locale!=="ko"?null:t.data;default:return null}}function Ig(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t==="input"?!!aT[e.type]:t==="textarea"}function SS(e){if(!Ja)return!1;e="on"+e;var t=e in document;return t||(t=document.createElement("div"),t.setAttribute(e,"return;"),t=typeof t[e]=="function"),t}function Kg(e,t,n,a){Ir?Kr?Kr.push(a):Kr=[a]:Ir=a,t=wu(t,"onChange"),0<t.length&&(n=new Xu("onChange","change",null,n,a),e.push({event:n,listeners:t}))}function wS(e){j0(e,0)}function Mc(e){var t=pe(e);if(Tg(t))return e}function Wg(e,t){if(e==="change")return t}function eb(){ks&&(ks.detachEvent("onpropertychange",tb),Os=ks=null)}function tb(e){if(e.propertyName==="value"&&Mc(Os)){var t=[];Kg(t,Os,e,hf(e)),qg(wS,t)}}function AS(e,t,n){e==="focusin"?(eb(),ks=t,Os=n,ks.attachEvent("onpropertychange",tb)):e==="focusout"&&eb()}function TS(e){if(e==="selectionchange"||e==="keyup"||e==="keydown")return Mc(Os)}function DS(e,t){if(e==="click")return Mc(t)}function RS(e,t){if(e==="input"||e==="change")return Mc(t)}function CS(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}function $i(e,t){if(dn(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;var n=Object.keys(e),a=Object.keys(t);if(n.length!==a.length)return!1;for(a=0;a<n.length;a++){var o=n[a];if(!fa.call(t,o)||!dn(e[o],t[o]))return!1}return!0}function nb(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function ab(e,t){var n=nb(e);e=0;for(var a;n;){if(n.nodeType===3){if(a=e+n.textContent.length,e<=t&&a>=t)return{node:n,offset:t-e};e=a}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=nb(n)}}function ob(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?ob(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function lb(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Rc(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Rc(e.document)}return t}function gf(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 rb(e,t,n){var a=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Uh||ei==null||ei!==Rc(a)||(a=ei,"selectionStart"in a&&gf(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),_s&&$i(_s,a)||(_s=a,a=wu(Vh,"onSelect"),0<a.length&&(t=new Xu("onSelect","select",null,t,n),e.push({event:t,listeners:a}),t.target=ei)))}function jl(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}function Hl(e){if(Lh[e])return Lh[e];if(!ti[e])return e;var t=ti[e],n;for(n in t)if(t.hasOwnProperty(n)&&n in cx)return Lh[e]=t[n];return e}function sa(e,t){hx.set(e,t),De(t,[e])}function kS(e){for(var t=$u,n=0;n<e.length;n++){var a=e[n];if(typeof a=="object"&&a!==null)if(Bt(a)&&a.length===2&&typeof a[0]=="string"){if(t!==$u&&t!==Xh)return Zh;t=Xh}else return Zh;else{if(typeof a=="function"||typeof a=="string"&&50<a.length||t!==$u&&t!==Yh)return Zh;t=Yh}}return t}function bf(e,t,n,a){for(var o in e)fa.call(e,o)&&o[0]!=="_"&&Ta(o,e[o],t,n,a)}function Ta(e,t,n,a,o){switch(typeof t){case"object":if(t===null){t="null";break}else{if(t.$$typeof===Ga){var l=q(t.type)||"…",i=t.key;t=t.props;var c=Object.keys(t),m=c.length;if(i==null&&m===0){t="<"+l+" />";break}if(3>a||m===1&&c[0]==="children"&&i==null){t="<"+l+" … />";break}n.push([o+"  ".repeat(a)+e,"<"+l]),i!==null&&Ta("key",i,n,a+1,o),e=!1;for(var p in t)p==="children"?t.children!=null&&(!Bt(t.children)||0<t.children.length)&&(e=!0):fa.call(t,p)&&p[0]!=="_"&&Ta(p,t[p],n,a+1,o);n.push(["",e?">…</"+l+">":"/>"]);return}if(l=Object.prototype.toString.call(t),l=l.slice(8,l.length-1),l==="Array"){if(p=kS(t),p===Yh||p===$u){t=JSON.stringify(t);break}else if(p===Xh){for(n.push([o+"  ".repeat(a)+e,""]),e=0;e<t.length;e++)l=t[e],Ta(l[0],l[1],n,a+1,o);return}}if(l==="Promise"){if(t.status==="fulfilled"){if(l=n.length,Ta(e,t.value,n,a,o),n.length>l){n=n[l],n[1]="Promise<"+(n[1]||"Object")+">";return}}else if(t.status==="rejected"&&(l=n.length,Ta(e,t.reason,n,a,o),n.length>l)){n=n[l],n[1]="Rejected Promise<"+n[1]+">";return}n.push(["  ".repeat(a)+e,"Promise"]);return}l==="Object"&&(p=Object.getPrototypeOf(t))&&typeof p.constructor=="function"&&(l=p.constructor.name),n.push([o+"  ".repeat(a)+e,l==="Object"?3>a?"":"…":l]),3>a&&bf(t,n,a+1,o);return}case"function":t=t.name===""?"() => {}":t.name+"() {}";break;case"string":t=t===uT?"…":JSON.stringify(t);break;case"undefined":t="undefined";break;case"boolean":t=t?"true":"false";break;default:t=String(t)}n.push([o+"  ".repeat(a)+e,t])}function ib(e,t,n,a){var o=!0;for(i in e)i in t||(n.push([Ju+"  ".repeat(a)+i,"…"]),o=!1);for(var l in t)if(l in e){var i=e[l],c=t[l];if(i!==c){if(a===0&&l==="children")o="  ".repeat(a)+l,n.push([Ju+o,"…"],[Qu+o,"…"]);else{if(!(3<=a)){if(typeof i=="object"&&typeof c=="object"&&i!==null&&c!==null&&i.$$typeof===c.$$typeof)if(c.$$typeof===Ga){if(i.type===c.type&&i.key===c.key){i=q(c.type)||"…",o="  ".repeat(a)+l,i="<"+i+" … />",n.push([Ju+o,i],[Qu+o,i]),o=!1;continue}}else{var m=Object.prototype.toString.call(i),p=Object.prototype.toString.call(c);if(m===p&&(p==="[object Object]"||p==="[object Array]")){m=[bx+"  ".repeat(a)+l,p==="[object Array]"?"Array":""],n.push(m),p=n.length,ib(i,c,n,a+1)?p===n.length&&(m[1]="Referentially unequal but deeply equal objects. Consider memoization."):o=!1;continue}}else if(typeof i=="function"&&typeof c=="function"&&i.name===c.name&&i.length===c.length&&(m=Function.prototype.toString.call(i),p=Function.prototype.toString.call(c),m===p)){i=c.name===""?"() => {}":c.name+"() {}",n.push([bx+"  ".repeat(a)+l,i+" Referentially unequal function closure. Consider memoization."]);continue}}Ta(l,i,n,a,Ju),Ta(l,c,n,a,Qu)}o=!1}}else n.push([Qu+"  ".repeat(a)+l,"…"]),o=!1;return o}function ca(e){Qe=e&63?"Blocking":e&64?"Gesture":e&4194176?"Transition":e&62914560?"Suspense":e&2080374784?"Idle":"Other"}function Da(e,t,n,a){ft&&(sl.start=t,sl.end=n,No.color="warning",No.tooltipText=a,No.properties=null,(e=e._debugTask)?e.run(performance.measure.bind(performance,a,sl)):performance.measure(a,sl))}function jc(e,t,n){Da(e,t,n,"Reconnect")}function Hc(e,t,n,a,o){var l=W(e);if(l!==null&&ft){var i=e.alternate,c=e.actualDuration;if(i===null||i.child!==e.child)for(var m=e.child;m!==null;m=m.sibling)c-=m.actualDuration;a=.5>c?a?"tertiary-light":"primary-light":10>c?a?"tertiary":"primary":100>c?a?"tertiary-dark":"primary-dark":"error";var p=e.memoizedProps;c=e._debugTask,p!==null&&i!==null&&i.memoizedProps!==p?(m=[dT],p=ib(i.memoizedProps,p,m,0),1<m.length&&(p&&!il&&(i.lanes&o)===0&&100<e.actualDuration?(il=!0,m[0]=fT,No.color="warning",No.tooltipText=yx):(No.color=a,No.tooltipText=l),No.properties=m,sl.start=t,sl.end=n,c!=null?c.run(performance.measure.bind(performance,""+l,sl)):performance.measure(""+l,sl))):c!=null?c.run(console.timeStamp.bind(console,l,t,n,Jn,void 0,a)):console.timeStamp(l,t,n,Jn,void 0,a)}}function yf(e,t,n,a){if(ft){var o=W(e);if(o!==null){for(var l=null,i=[],c=0;c<a.length;c++){var m=a[c];l==null&&m.source!==null&&(l=m.source._debugTask),m=m.value,i.push(["Error",typeof m=="object"&&m!==null&&typeof m.message=="string"?String(m.message):String(m)])}e.key!==null&&Ta("key",e.key,i,0,""),e.memoizedProps!==null&&bf(e.memoizedProps,i,0,""),l==null&&(l=e._debugTask),e={start:t,end:n,detail:{devtools:{color:"error",track:Jn,tooltipText:e.tag===13?"Hydration failed":"Error boundary caught an error",properties:i}}},l?l.run(performance.measure.bind(performance,""+o,e)):performance.measure(""+o,e)}}}function Ra(e,t,n,a,o){if(o!==null){if(ft){var l=W(e);if(l!==null){a=[];for(var i=0;i<o.length;i++){var c=o[i].value;a.push(["Error",typeof c=="object"&&c!==null&&typeof c.message=="string"?String(c.message):String(c)])}e.key!==null&&Ta("key",e.key,a,0,""),e.memoizedProps!==null&&bf(e.memoizedProps,a,0,""),t={start:t,end:n,detail:{devtools:{color:"error",track:Jn,tooltipText:"A lifecycle or effect errored",properties:a}}},(e=e._debugTask)?e.run(performance.measure.bind(performance,""+l,t)):performance.measure(""+l,t)}}}else l=W(e),l!==null&&ft&&(o=1>a?"secondary-light":100>a?"secondary":500>a?"secondary-dark":"error",(e=e._debugTask)?e.run(console.timeStamp.bind(console,l,t,n,Jn,void 0,o)):console.timeStamp(l,t,n,Jn,void 0,o))}function OS(e,t,n,a){if(ft&&!(t<=e)){var o=(n&738197653)===n?"tertiary-dark":"primary-dark";n=(n&536870912)===n?"Prepared":(n&201326741)===n?"Hydrated":"Render",a?a.run(console.timeStamp.bind(console,n,e,t,Qe,$e,o)):console.timeStamp(n,e,t,Qe,$e,o)}}function sb(e,t,n,a){!ft||t<=e||(n=(n&738197653)===n?"tertiary-dark":"primary-dark",a?a.run(console.timeStamp.bind(console,"Prewarm",e,t,Qe,$e,n)):console.timeStamp("Prewarm",e,t,Qe,$e,n))}function cb(e,t,n,a){!ft||t<=e||(n=(n&738197653)===n?"tertiary-dark":"primary-dark",a?a.run(console.timeStamp.bind(console,"Suspended",e,t,Qe,$e,n)):console.timeStamp("Suspended",e,t,Qe,$e,n))}function _S(e,t,n,a,o,l){if(ft&&!(t<=e)){n=[];for(var i=0;i<a.length;i++){var c=a[i].value;n.push(["Recoverable Error",typeof c=="object"&&c!==null&&typeof c.message=="string"?String(c.message):String(c)])}e={start:e,end:t,detail:{devtools:{color:"primary-dark",track:Qe,trackGroup:$e,tooltipText:o?"Hydration Failed":"Recovered after Error",properties:n}}},l?l.run(performance.measure.bind(performance,"Recovered",e)):performance.measure("Recovered",e)}}function vf(e,t,n,a){!ft||t<=e||(a?a.run(console.timeStamp.bind(console,"Errored",e,t,Qe,$e,"error")):console.timeStamp("Errored",e,t,Qe,$e,"error"))}function MS(e,t,n,a){!ft||t<=e||(a?a.run(console.timeStamp.bind(console,n,e,t,Qe,$e,"secondary-light")):console.timeStamp(n,e,t,Qe,$e,"secondary-light"))}function ub(e,t,n,a,o){if(ft&&!(t<=e)){for(var l=[],i=0;i<n.length;i++){var c=n[i].value;l.push(["Error",typeof c=="object"&&c!==null&&typeof c.message=="string"?String(c.message):String(c)])}e={start:e,end:t,detail:{devtools:{color:"error",track:Qe,trackGroup:$e,tooltipText:a?"Remaining Effects Errored":"Commit Errored",properties:l}}},o?o.run(performance.measure.bind(performance,"Errored",e)):performance.measure("Errored",e)}}function xf(e,t,n){!ft||t<=e||console.timeStamp("Animating",e,t,Qe,$e,"secondary-dark")}function zc(){for(var e=ni,t=qh=ni=0;t<e;){var n=Qn[t];Qn[t++]=null;var a=Qn[t];Qn[t++]=null;var o=Qn[t];Qn[t++]=null;var l=Qn[t];if(Qn[t++]=null,a!==null&&o!==null){var i=a.pending;i===null?o.next=o:(o.next=i.next,i.next=o),a.pending=o}l!==0&&db(n,o,l)}}function Pc(e,t,n,a){Qn[ni++]=e,Qn[ni++]=t,Qn[ni++]=n,Qn[ni++]=a,qh|=a,e.lanes|=a,e=e.alternate,e!==null&&(e.lanes|=a)}function Nf(e,t,n,a){return Pc(e,t,n,a),Vc(e)}function tn(e,t){return Pc(e,null,null,t),Vc(e)}function db(e,t,n){e.lanes|=n;var a=e.alternate;a!==null&&(a.lanes|=n);for(var o=!1,l=e.return;l!==null;)l.childLanes|=n,a=l.alternate,a!==null&&(a.childLanes|=n),l.tag===22&&(e=l.stateNode,e===null||e._visibility&Ms||(o=!0)),e=l,l=l.return;return e.tag===3?(l=e.stateNode,o&&t!==null&&(o=31-sn(n),e=l.hiddenUpdates,a=e[o],a===null?e[o]=[t]:a.push(t),t.lane=n|536870912),l):null}function Vc(e){if(rc>RT)throw dr=rc=0,ic=Ap=null,Error("Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.");dr>CT&&(dr=0,ic=null,console.error("Maximum update depth exceeded. This can happen when a component calls setState inside useEffect, but useEffect either doesn't have a dependency array, or one of the dependencies changes on every render.")),e.alternate===null&&(e.flags&4098)!==0&&D0(e);for(var t=e,n=t.return;n!==null;)t.alternate===null&&(t.flags&4098)!==0&&D0(e),t=n,n=t.return;return t.tag===3?t.stateNode:null}function zl(e){if(Fn===null)return e;var t=Fn(e);return t===void 0?e:t.current}function Ef(e){if(Fn===null)return e;var t=Fn(e);return t===void 0?e!=null&&typeof e.render=="function"&&(t=zl(e.render),e.render!==t)?(t={$$typeof:Ns,render:t},e.displayName!==void 0&&(t.displayName=e.displayName),t):e:t.current}function fb(e,t){if(Fn===null)return!1;var n=e.elementType;t=t.type;var a=!1,o=typeof t=="object"&&t!==null?t.$$typeof:null;switch(e.tag){case 1:typeof t=="function"&&(a=!0);break;case 0:(typeof t=="function"||o===Hn)&&(a=!0);break;case 11:(o===Ns||o===Hn)&&(a=!0);break;case 14:case 15:(o===Hu||o===Hn)&&(a=!0);break;default:return!1}return!!(a&&(e=Fn(n),e!==void 0&&e===Fn(t)))}function mb(e){Fn!==null&&typeof WeakSet=="function"&&(ai===null&&(ai=new WeakSet),ai.add(e))}function hb(e,t,n){do{var a=e,o=a.alternate,l=a.child,i=a.sibling,c=a.tag;a=a.type;var m=null;switch(c){case 0:case 15:case 1:m=a;break;case 11:m=a.render}if(Fn===null)throw Error("Expected resolveFamily to be set during hot reload.");var p=!1;if(a=!1,m!==null&&(m=Fn(m),m!==void 0&&(n.has(m)?a=!0:t.has(m)&&(c===1?a=!0:p=!0))),ai!==null&&(ai.has(e)||o!==null&&ai.has(o))&&(a=!0),a&&(e._debugNeedsRemount=!0),(a||p)&&(o=tn(e,2),o!==null&&Et(o,e,2)),l===null||a||hb(l,t,n),i===null)break;e=i}while(!0)}function jS(e,t,n,a){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=a,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null,this.actualDuration=-0,this.actualStartTime=-1.1,this.treeBaseDuration=this.selfBaseDuration=-0,this._debugTask=this._debugStack=this._debugOwner=this._debugInfo=null,this._debugNeedsRemount=!1,this._debugHookTypes=null,vx||typeof Object.preventExtensions!="function"||Object.preventExtensions(this)}function Sf(e){return e=e.prototype,!(!e||!e.isReactComponent)}function fo(e,t){var n=e.alternate;switch(n===null?(n=E(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n._debugOwner=e._debugOwner,n._debugStack=e._debugStack,n._debugTask=e._debugTask,n._debugHookTypes=e._debugHookTypes,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null,n.actualDuration=-0,n.actualStartTime=-1.1),n.flags=e.flags&65011712,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,_debugThenableState:t._debugThenableState},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n.refCleanup=e.refCleanup,n.selfBaseDuration=e.selfBaseDuration,n.treeBaseDuration=e.treeBaseDuration,n._debugInfo=e._debugInfo,n._debugNeedsRemount=e._debugNeedsRemount,n.tag){case 0:case 15:n.type=zl(e.type);break;case 1:n.type=zl(e.type);break;case 11:n.type=Ef(e.type)}return n}function pb(e,t){e.flags&=65011714;var n=e.alternate;return n===null?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null,e.selfBaseDuration=0,e.treeBaseDuration=0):(e.childLanes=n.childLanes,e.lanes=n.lanes,e.child=n.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=n.memoizedProps,e.memoizedState=n.memoizedState,e.updateQueue=n.updateQueue,e.type=n.type,t=n.dependencies,e.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext,_debugThenableState:t._debugThenableState},e.selfBaseDuration=n.selfBaseDuration,e.treeBaseDuration=n.treeBaseDuration),e}function wf(e,t,n,a,o,l){var i=0,c=e;if(typeof e=="function")Sf(e)&&(i=1),c=zl(c);else if(typeof e=="string")i=$(),i=Zw(e,n,i)?26:e==="html"||e==="head"||e==="body"?27:5;else e:switch(e){case bh:return t=E(31,n,t,o),t.elementType=bh,t.lanes=l,t;case Xr:return Pl(n.children,o,l,t);case ju:i=8,o|=an,o|=ma;break;case mh:return e=n,a=o,typeof e.id!="string"&&console.error('Profiler must specify an "id" of type `string` as a prop. Received the type `%s` instead.',typeof e.id),t=E(12,e,t,a|Ve),t.elementType=mh,t.lanes=l,t.stateNode={effectDuration:0,passiveEffectDuration:0},t;case ph:return t=E(13,n,t,o),t.elementType=ph,t.lanes=l,t;case gh:return t=E(19,n,t,o),t.elementType=gh,t.lanes=l,t;default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Za:i=10;break e;case hh:i=9;break e;case Ns:i=11,c=Ef(c);break e;case Hu:i=14;break e;case Hn:i=16,c=null;break e}c="",(e===void 0||typeof e=="object"&&e!==null&&Object.keys(e).length===0)&&(c+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports."),e===null?n="null":Bt(e)?n="array":e!==void 0&&e.$$typeof===Ga?(n="<"+(q(e.type)||"Unknown")+" />",c=" Did you accidentally export a JSX literal instead of a component?"):n=typeof e,(i=a?Se(a):null)&&(c+=`
Check the render method of \``+i+"`."),i=29,n=Error("Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: "+(n+"."+c)),c=null}return t=E(i,n,t,o),t.elementType=e,t.type=c,t.lanes=l,t._debugOwner=a,t}function Uc(e,t,n){return t=wf(e.type,e.key,e.props,e._owner,t,n),t._debugOwner=e._owner,t._debugStack=e._debugStack,t._debugTask=e._debugTask,t}function Pl(e,t,n,a){return e=E(7,e,a,t),e.lanes=n,e}function Af(e,t,n){return e=E(6,e,null,t),e.lanes=n,e}function gb(e){var t=E(18,null,null,ke);return t.stateNode=e,t}function Tf(e,t,n){return t=E(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Cn(e,t){if(typeof e=="object"&&e!==null){var n=$h.get(e);return n!==void 0?n:(t={value:e,source:t,stack:re(t)},$h.set(e,t),t)}return{value:e,source:t,stack:re(t)}}function mo(e,t){Yo(),oi[li++]=js,oi[li++]=Fu,Fu=e,js=t}function bb(e,t,n){Yo(),In[Kn++]=So,In[Kn++]=wo,In[Kn++]=Fl,Fl=e;var a=So;e=wo;var o=32-sn(a)-1;a&=~(1<<o),n+=1;var l=32-sn(t)+o;if(30<l){var i=o-o%5;l=(a&(1<<i)-1).toString(32),a>>=i,o-=i,So=1<<32-sn(t)+o|n<<o|a,wo=l+e}else So=1<<l|n<<o|a,wo=e}function Df(e){Yo(),e.return!==null&&(mo(e,1),bb(e,1,0))}function Rf(e){for(;e===Fu;)Fu=oi[--li],oi[li]=null,js=oi[--li],oi[li]=null;for(;e===Fl;)Fl=In[--Kn],In[Kn]=null,wo=In[--Kn],In[Kn]=null,So=In[--Kn],In[Kn]=null}function yb(){return Yo(),Fl!==null?{id:So,overflow:wo}:null}function vb(e,t){Yo(),In[Kn++]=So,In[Kn++]=wo,In[Kn++]=Fl,So=t.id,wo=t.overflow,Fl=e}function Yo(){Xe||console.error("Expected to be hydrating. This is a bug in React. Please file an issue.")}function Vl(e,t){if(e.return===null){if(Pn===null)Pn={fiber:e,children:[],serverProps:void 0,serverTail:[],distanceFromLeaf:t};else{if(Pn.fiber!==e)throw Error("Saw multiple hydration diff roots in a pass. This is a bug in React.");Pn.distanceFromLeaf>t&&(Pn.distanceFromLeaf=t)}return Pn}var n=Vl(e.return,t+1).children;return 0<n.length&&n[n.length-1].fiber===e?(n=n[n.length-1],n.distanceFromLeaf>t&&(n.distanceFromLeaf=t),n):(t={fiber:e,children:[],serverProps:void 0,serverTail:[],distanceFromLeaf:t},n.push(t),t)}function xb(){Xe&&console.error("We should not be hydrating here. This is a bug in React. Please file a bug.")}function Lc(e,t){Qa||(e=Vl(e,0),e.serverProps=null,t!==null&&(t=K0(t),e.serverTail.push(t)))}function Xo(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:!1,n="",a=Pn;throw a!==null&&(Pn=null,n=ff(a)),Ji(Cn(Error("Hydration failed because the server rendered "+(t?"text":"HTML")+` didn't match the client. As a result this tree will be regenerated on the client. This can happen if a SSR-ed Client Component used:
- A server/client branch \`if (typeof window !== 'undefined')\`.
- Variable input such as \`Date.now()\` or \`Math.random()\` which changes each time it's called.
- Date formatting in a user's locale which doesn't match the server.
- External changing data without sending a snapshot of it along with the HTML.
- Invalid HTML tag nesting.
It can also happen if the client has a browser extension installed which messes with the HTML before React loaded.
https://react.dev/link/hydration-mismatch`+n),e)),Jh}function Nb(e){var t=e.stateNode,n=e.type,a=e.memoizedProps;switch(t[Wt]=e,t[cn]=a,Jm(n,a),n){case"dialog":qe("cancel",t),qe("close",t);break;case"iframe":case"object":case"embed":qe("load",t);break;case"video":case"audio":for(n=0;n<sc.length;n++)qe(sc[n],t);break;case"source":qe("error",t);break;case"img":case"image":case"link":qe("error",t),qe("load",t);break;case"details":qe("toggle",t);break;case"input":lt("input",a),qe("invalid",t),Dg(t,a),Rg(t,a.value,a.defaultValue,a.checked,a.defaultChecked,a.type,a.name,!0);break;case"option":Cg(t,a);break;case"select":lt("select",a),qe("invalid",t),Og(t,a);break;case"textarea":lt("textarea",a),qe("invalid",t),_g(t,a),jg(t,a.value,a.defaultValue,a.children)}n=a.children,typeof n!="string"&&typeof n!="number"&&typeof n!="bigint"||t.textContent===""+n||a.suppressHydrationWarning===!0||V0(t.textContent,n)?(a.popover!=null&&(qe("beforetoggle",t),qe("toggle",t)),a.onScroll!=null&&qe("scroll",t),a.onScrollEnd!=null&&qe("scrollend",t),a.onClick!=null&&(t.onclick=uo),t=!0):t=!1,t||Xo(e,!0)}function Eb(e){for(en=e.return;en;)switch(en.tag){case 5:case 31:case 13:Wn=!1;return;case 27:case 3:Wn=!0;return;default:en=en.return}}function Cr(e){if(e!==en)return!1;if(!Xe)return Eb(e),Xe=!0,!1;var t=e.tag,n;if((n=t!==3&&t!==27)&&((n=t===5)&&(n=e.type,n=!(n!=="form"&&n!=="button")||Wm(e.type,e.memoizedProps)),n=!n),n&&mt){for(n=mt;n;){var a=Vl(e,0),o=K0(n);a.serverTail.push(o),n=o.type==="Suspense"?ah(n):jn(n.nextSibling)}Xo(e)}if(Eb(e),t===13){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error("Expected to have a hydrated suspense instance. This error is likely caused by a bug in React. Please file an issue.");mt=ah(e)}else if(t===31){if(e=e.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error("Expected to have a hydrated suspense instance. This error is likely caused by a bug in React. Please file an issue.");mt=ah(e)}else t===27?(t=mt,tl(e.type)?(e=Pp,Pp=null,mt=e):mt=t):mt=en?jn(e.stateNode.nextSibling):null;return!0}function Ul(){mt=en=null,Qa=Xe=!1}function Cf(){var e=ul;return e!==null&&(pn===null?pn=e:pn.push.apply(pn,e),ul=null),e}function Ji(e){ul===null?ul=[e]:ul.push(e)}function kf(){var e=Pn;if(e!==null){Pn=null;for(var t=ff(e);0<e.children.length;)e=e.children[0];ae(e.fiber,function(){console.error(`A tree hydrated but some attributes of the server rendered HTML didn't match the client properties. This won't be patched up. This can happen if a SSR-ed Client Component used:
- A server/client branch \`if (typeof window !== 'undefined')\`.
- Variable input such as \`Date.now()\` or \`Math.random()\` which changes each time it's called.
- Date formatting in a user's locale which doesn't match the server.
- External changing data without sending a snapshot of it along with the HTML.
- Invalid HTML tag nesting.
It can also happen if the client has a browser extension installed which messes with the HTML before React loaded.
%s%s`,"https://react.dev/link/hydration-mismatch",t)})}}function Bc(){ri=Iu=null,ii=!1}function qo(e,t,n){ie(Qh,t._currentValue,e),t._currentValue=n,ie(Fh,t._currentRenderer,e),t._currentRenderer!==void 0&&t._currentRenderer!==null&&t._currentRenderer!==Nx&&console.error("Detected multiple renderers concurrently rendering the same context provider. This is currently unsupported."),t._currentRenderer=Nx}function ho(e,t){e._currentValue=Qh.current;var n=Fh.current;le(Fh,t),e._currentRenderer=n,le(Qh,t)}function Of(e,t,n){for(;e!==null;){var a=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,a!==null&&(a.childLanes|=t)):a!==null&&(a.childLanes&t)!==t&&(a.childLanes|=t),e===n)break;e=e.return}e!==n&&console.error("Expected to find the propagation root when scheduling context work. This error is likely caused by a bug in React. Please file an issue.")}function _f(e,t,n,a){var o=e.child;for(o!==null&&(o.return=e);o!==null;){var l=o.dependencies;if(l!==null){var i=o.child;l=l.firstContext;e:for(;l!==null;){var c=l;l=o;for(var m=0;m<t.length;m++)if(c.context===t[m]){l.lanes|=n,c=l.alternate,c!==null&&(c.lanes|=n),Of(l.return,n,e),a||(i=null);break e}l=c.next}}else if(o.tag===18){if(i=o.return,i===null)throw Error("We just came from a parent so we must have had a parent. This is a bug in React.");i.lanes|=n,l=i.alternate,l!==null&&(l.lanes|=n),Of(i,n,e),i=null}else i=o.child;if(i!==null)i.return=o;else for(i=o;i!==null;){if(i===e){i=null;break}if(o=i.sibling,o!==null){o.return=i.return,i=o;break}i=i.return}o=i}}function kr(e,t,n,a){e=null;for(var o=t,l=!1;o!==null;){if(!l){if((o.flags&524288)!==0)l=!0;else if((o.flags&262144)!==0)break}if(o.tag===10){var i=o.alternate;if(i===null)throw Error("Should have a current fiber. This is a bug in React.");if(i=i.memoizedProps,i!==null){var c=o.type;dn(o.pendingProps.value,i.value)||(e!==null?e.push(c):e=[c])}}else if(o===zu.current){if(i=o.alternate,i===null)throw Error("Should have a current fiber. This is a bug in React.");i.memoizedState.memoizedState!==o.memoizedState.memoizedState&&(e!==null?e.push(mc):e=[mc])}o=o.return}e!==null&&_f(t,e,n,a),t.flags|=262144}function Gc(e){for(e=e.firstContext;e!==null;){if(!dn(e.context._currentValue,e.memoizedValue))return!0;e=e.next}return!1}function Ll(e){Iu=e,ri=null,e=e.dependencies,e!==null&&(e.firstContext=null)}function pt(e){return ii&&console.error("Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo()."),Sb(Iu,e)}function Zc(e,t){return Iu===null&&Ll(e),Sb(e,t)}function Sb(e,t){var n=t._currentValue;if(t={context:t,memoizedValue:n,next:null},ri===null){if(e===null)throw Error("Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().");ri=t,e.dependencies={lanes:0,firstContext:t,_debugThenableState:null},e.flags|=524288}else ri=ri.next=t;return n}function Mf(){return{controller:new pT,data:new Map,refCount:0}}function Bl(e){e.controller.signal.aborted&&console.warn("A cache instance was retained after it was already freed. This likely indicates a bug in React."),e.refCount++}function Qi(e){e.refCount--,0>e.refCount&&console.warn("A cache instance was released after it was already freed. This likely indicates a bug in React."),e.refCount===0&&gT(bT,function(){e.controller.abort()})}function Ca(e,t,n){(e&127)!==0?0>Fa&&(Fa=jt(),zs=Ku(t),Ih=t,n!=null&&(Kh=W(n)),(Fe&(Zt|Ln))!==Qt&&(St=!0,fl=Hs),e=gs(),t=ps(),e!==si||t!==Ps?si=-1.1:t!==null&&(fl=Hs),Wl=e,Ps=t):(e&4194048)!==0&&0>ea&&(ea=jt(),Vs=Ku(t),Ex=t,n!=null&&(Sx=W(n)),0>Ro)&&(e=gs(),t=ps(),(e!==hl||t!==er)&&(hl=-1.1),ml=e,er=t)}function HS(e){if(0>Fa){Fa=jt(),zs=e._debugTask!=null?e._debugTask:null,(Fe&(Zt|Ln))!==Qt&&(fl=Hs);var t=gs(),n=ps();t!==si||n!==Ps?si=-1.1:n!==null&&(fl=Hs),Wl=t,Ps=n}0>ea&&(ea=jt(),Vs=e._debugTask!=null?e._debugTask:null,0>Ro)&&(e=gs(),t=ps(),(e!==hl||t!==er)&&(hl=-1.1),ml=e,er=t)}function po(){var e=Il;return Il=0,e}function Yc(e){var t=Il;return Il=e,t}function Fi(e){var t=Il;return Il+=e,t}function Xc(){Re=Ae=-1.1}function kn(){var e=Ae;return Ae=-1.1,e}function On(e){0<=e&&(Ae=e)}function ka(){var e=vt;return vt=-0,e}function Oa(e){0<=e&&(vt=e)}function _a(){var e=gt;return gt=null,e}function Ma(){var e=St;return St=!1,e}function jf(e){fn=jt(),0>e.actualStartTime&&(e.actualStartTime=fn)}function Hf(e){if(0<=fn){var t=jt()-fn;e.actualDuration+=t,e.selfBaseDuration=t,fn=-1}}function wb(e){if(0<=fn){var t=jt()-fn;e.actualDuration+=t,fn=-1}}function ja(){if(0<=fn){var e=jt(),t=e-fn;fn=-1,Il+=t,vt+=t,Re=e}}function Ab(e){gt===null&&(gt=[]),gt.push(e),To===null&&(To=[]),To.push(e)}function Ha(){fn=jt(),0>Ae&&(Ae=fn)}function Ii(e){for(var t=e.child;t;)e.actualDuration+=t.actualDuration,t=t.sibling}function zS(e,t){if(Ls===null){var n=Ls=[];ep=0,tr=Ym(),ci={status:"pending",value:void 0,then:function(a){n.push(a)}}}return ep++,t.then(Tb,Tb),t}function Tb(){if(--ep===0&&(-1<ea||(Ro=-1.1),Ls!==null)){ci!==null&&(ci.status="fulfilled");var e=Ls;Ls=null,tr=0,ci=null;for(var t=0;t<e.length;t++)(0,e[t])()}}function PS(e,t){var n=[],a={status:"pending",value:null,reason:null,then:function(o){n.push(o)}};return e.then(function(){a.status="fulfilled",a.value=t;for(var o=0;o<n.length;o++)(0,n[o])(t)},function(o){for(a.status="rejected",a.reason=o,o=0;o<n.length;o++)(0,n[o])(void 0)}),a}function zf(){var e=nr.current;return e!==null?e:ct.pooledCache}function qc(e,t){t===null?ie(nr,nr.current,e):ie(nr,t.pool,e)}function Db(){var e=zf();return e===null?null:{parent:Mt._currentValue,pool:e}}function Rb(){return{didWarnAboutUncachedPromise:!1,thenables:[]}}function Cb(e){return e=e.status,e==="fulfilled"||e==="rejected"}function kb(e,t,n){L.actQueue!==null&&(L.didUsePromise=!0);var a=e.thenables;if(n=a[n],n===void 0?a.push(t):n!==t&&(e.didWarnAboutUncachedPromise||(e.didWarnAboutUncachedPromise=!0,console.error("A component was suspended by an uncached promise. Creating promises inside a Client Component or hook is not yet supported, except via a Suspense-compatible library or framework.")),t.then(uo,uo),t=n),t._debugInfo===void 0){e=performance.now(),a=t.displayName;var o={name:typeof a=="string"?a:"Promise",start:e,end:e,value:t};t._debugInfo=[{awaited:o}],t.status!=="fulfilled"&&t.status!=="rejected"&&(e=function(){o.end=performance.now()},t.then(e,e))}switch(t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,_b(e),e;default:if(typeof t.status=="string")t.then(uo,uo);else{if(e=ct,e!==null&&100<e.shellSuspendCounter)throw Error("An unknown Component is an async Client Component. Only Server Components can be async at the moment. This error is often caused by accidentally adding `'use client'` to a module that was originally written for the server.");e=t,e.status="pending",e.then(function(l){if(t.status==="pending"){var i=t;i.status="fulfilled",i.value=l}},function(l){if(t.status==="pending"){var i=t;i.status="rejected",i.reason=l}})}switch(t.status){case"fulfilled":return t.value;case"rejected":throw e=t.reason,_b(e),e}throw or=t,$s=!0,ui}}function $o(e){try{return ET(e)}catch(t){throw t!==null&&typeof t=="object"&&typeof t.then=="function"?(or=t,$s=!0,ui):t}}function Ob(){if(or===null)throw Error("Expected a suspended thenable. This is a bug in React. Please file an issue.");var e=or;return or=null,$s=!1,e}function _b(e){if(e===ui||e===rd)throw Error("Hooks are not supported inside an async component. This error is often caused by accidentally adding `'use client'` to a module that was originally written for the server.")}function Ft(e){var t=Ue;return e!=null&&(Ue=t===null?e:t.concat(e)),t}function Pf(){var e=Ue;if(e!=null){for(var t=e.length-1;0<=t;t--)if(e[t].name!=null){var n=e[t].debugTask;if(n!=null)return n}}return null}function $c(e,t,n){for(var a=Object.keys(e.props),o=0;o<a.length;o++){var l=a[o];if(l!=="children"&&l!=="key"){t===null&&(t=Uc(e,n.mode,0),t._debugInfo=Ue,t.return=n),ae(t,function(i){console.error("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",i)},l);break}}}function Jc(e){var t=Js;return Js+=1,di===null&&(di=Rb()),kb(di,e,t)}function Ki(e,t){t=t.props.ref,e.ref=t!==void 0?t:null}function Mb(e,t){throw t.$$typeof===eA?Error(`A React Element from an older version of React was rendered. This is not supported. It can happen if:
- Multiple copies of the "react" package is used.
- A library pre-bundled an old copy of "react" or "react/jsx-runtime".
- A compiler tries to "inline" JSX instead of using the runtime.`):(e=Object.prototype.toString.call(t),Error("Objects are not valid as a React child (found: "+(e==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":e)+"). If you meant to render a collection of children, use an array instead."))}function Qc(e,t){var n=Pf();n!==null?n.run(Mb.bind(null,e,t)):Mb(e,t)}function jb(e,t){var n=W(e)||"Component";Zx[n]||(Zx[n]=!0,t=t.displayName||t.name||"Component",e.tag===3?console.error(`Functions are not valid as a React child. This may happen if you return %s instead of <%s /> from render. Or maybe you meant to call this function rather than return it.
root.render(%s)`,t,t,t):console.error(`Functions are not valid as a React child. This may happen if you return %s instead of <%s /> from render. Or maybe you meant to call this function rather than return it.
<%s>{%s}</%s>`,t,t,n,t,n))}function Fc(e,t){var n=Pf();n!==null?n.run(jb.bind(null,e,t)):jb(e,t)}function Hb(e,t){var n=W(e)||"Component";Yx[n]||(Yx[n]=!0,t=String(t),e.tag===3?console.error(`Symbols are not valid as a React child.
root.render(%s)`,t):console.error(`Symbols are not valid as a React child.
<%s>%s</%s>`,n,t,n))}function Ic(e,t){var n=Pf();n!==null?n.run(Hb.bind(null,e,t)):Hb(e,t)}function zb(e){function t(w,T){if(e){var k=w.deletions;k===null?(w.deletions=[T],w.flags|=16):k.push(T)}}function n(w,T){if(!e)return null;for(;T!==null;)t(w,T),T=T.sibling;return null}function a(w){for(var T=new Map;w!==null;)w.key!==null?T.set(w.key,w):T.set(w.index,w),w=w.sibling;return T}function o(w,T){return w=fo(w,T),w.index=0,w.sibling=null,w}function l(w,T,k){return w.index=k,e?(k=w.alternate,k!==null?(k=k.index,k<T?(w.flags|=67108866,T):k):(w.flags|=67108866,T)):(w.flags|=1048576,T)}function i(w){return e&&w.alternate===null&&(w.flags|=67108866),w}function c(w,T,k,G){return T===null||T.tag!==6?(T=Af(k,w.mode,G),T.return=w,T._debugOwner=w,T._debugTask=w._debugTask,T._debugInfo=Ue,T):(T=o(T,k),T.return=w,T._debugInfo=Ue,T)}function m(w,T,k,G){var oe=k.type;return oe===Xr?(T=O(w,T,k.props.children,G,k.key),$c(k,T,w),T):T!==null&&(T.elementType===oe||fb(T,k)||typeof oe=="object"&&oe!==null&&oe.$$typeof===Hn&&$o(oe)===T.type)?(T=o(T,k.props),Ki(T,k),T.return=w,T._debugOwner=k._owner,T._debugInfo=Ue,T):(T=Uc(k,w.mode,G),Ki(T,k),T.return=w,T._debugInfo=Ue,T)}function p(w,T,k,G){return T===null||T.tag!==4||T.stateNode.containerInfo!==k.containerInfo||T.stateNode.implementation!==k.implementation?(T=Tf(k,w.mode,G),T.return=w,T._debugInfo=Ue,T):(T=o(T,k.children||[]),T.return=w,T._debugInfo=Ue,T)}function O(w,T,k,G,oe){return T===null||T.tag!==7?(T=Pl(k,w.mode,G,oe),T.return=w,T._debugOwner=w,T._debugTask=w._debugTask,T._debugInfo=Ue,T):(T=o(T,k),T.return=w,T._debugInfo=Ue,T)}function _(w,T,k){if(typeof T=="string"&&T!==""||typeof T=="number"||typeof T=="bigint")return T=Af(""+T,w.mode,k),T.return=w,T._debugOwner=w,T._debugTask=w._debugTask,T._debugInfo=Ue,T;if(typeof T=="object"&&T!==null){switch(T.$$typeof){case Ga:return k=Uc(T,w.mode,k),Ki(k,T),k.return=w,w=Ft(T._debugInfo),k._debugInfo=Ue,Ue=w,k;case Yr:return T=Tf(T,w.mode,k),T.return=w,T._debugInfo=Ue,T;case Hn:var G=Ft(T._debugInfo);return T=$o(T),w=_(w,T,k),Ue=G,w}if(Bt(T)||se(T))return k=Pl(T,w.mode,k,null),k.return=w,k._debugOwner=w,k._debugTask=w._debugTask,w=Ft(T._debugInfo),k._debugInfo=Ue,Ue=w,k;if(typeof T.then=="function")return G=Ft(T._debugInfo),w=_(w,Jc(T),k),Ue=G,w;if(T.$$typeof===Za)return _(w,Zc(w,T),k);Qc(w,T)}return typeof T=="function"&&Fc(w,T),typeof T=="symbol"&&Ic(w,T),null}function A(w,T,k,G){var oe=T!==null?T.key:null;if(typeof k=="string"&&k!==""||typeof k=="number"||typeof k=="bigint")return oe!==null?null:c(w,T,""+k,G);if(typeof k=="object"&&k!==null){switch(k.$$typeof){case Ga:return k.key===oe?(oe=Ft(k._debugInfo),w=m(w,T,k,G),Ue=oe,w):null;case Yr:return k.key===oe?p(w,T,k,G):null;case Hn:return oe=Ft(k._debugInfo),k=$o(k),w=A(w,T,k,G),Ue=oe,w}if(Bt(k)||se(k))return oe!==null?null:(oe=Ft(k._debugInfo),w=O(w,T,k,G,null),Ue=oe,w);if(typeof k.then=="function")return oe=Ft(k._debugInfo),w=A(w,T,Jc(k),G),Ue=oe,w;if(k.$$typeof===Za)return A(w,T,Zc(w,k),G);Qc(w,k)}return typeof k=="function"&&Fc(w,k),typeof k=="symbol"&&Ic(w,k),null}function z(w,T,k,G,oe){if(typeof G=="string"&&G!==""||typeof G=="number"||typeof G=="bigint")return w=w.get(k)||null,c(T,w,""+G,oe);if(typeof G=="object"&&G!==null){switch(G.$$typeof){case Ga:return k=w.get(G.key===null?k:G.key)||null,w=Ft(G._debugInfo),T=m(T,k,G,oe),Ue=w,T;case Yr:return w=w.get(G.key===null?k:G.key)||null,p(T,w,G,oe);case Hn:var Me=Ft(G._debugInfo);return G=$o(G),T=z(w,T,k,G,oe),Ue=Me,T}if(Bt(G)||se(G))return k=w.get(k)||null,w=Ft(G._debugInfo),T=O(T,k,G,oe,null),Ue=w,T;if(typeof G.then=="function")return Me=Ft(G._debugInfo),T=z(w,T,k,Jc(G),oe),Ue=Me,T;if(G.$$typeof===Za)return z(w,T,k,Zc(T,G),oe);Qc(T,G)}return typeof G=="function"&&Fc(T,G),typeof G=="symbol"&&Ic(T,G),null}function te(w,T,k,G){if(typeof k!="object"||k===null)return G;switch(k.$$typeof){case Ga:case Yr:R(w,T,k);var oe=k.key;if(typeof oe!="string")break;if(G===null){G=new Set,G.add(oe);break}if(!G.has(oe)){G.add(oe);break}ae(T,function(){console.error("Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — the behavior is unsupported and could change in a future version.",oe)});break;case Hn:k=$o(k),te(w,T,k,G)}return G}function ue(w,T,k,G){for(var oe=null,Me=null,Ee=null,ve=T,Pe=T=0,ht=null;ve!==null&&Pe<k.length;Pe++){ve.index>Pe?(ht=ve,ve=null):ht=ve.sibling;var kt=A(w,ve,k[Pe],G);if(kt===null){ve===null&&(ve=ht);break}oe=te(w,kt,k[Pe],oe),e&&ve&&kt.alternate===null&&t(w,ve),T=l(kt,T,Pe),Ee===null?Me=kt:Ee.sibling=kt,Ee=kt,ve=ht}if(Pe===k.length)return n(w,ve),Xe&&mo(w,Pe),Me;if(ve===null){for(;Pe<k.length;Pe++)ve=_(w,k[Pe],G),ve!==null&&(oe=te(w,ve,k[Pe],oe),T=l(ve,T,Pe),Ee===null?Me=ve:Ee.sibling=ve,Ee=ve);return Xe&&mo(w,Pe),Me}for(ve=a(ve);Pe<k.length;Pe++)ht=z(ve,w,Pe,k[Pe],G),ht!==null&&(oe=te(w,ht,k[Pe],oe),e&&ht.alternate!==null&&ve.delete(ht.key===null?Pe:ht.key),T=l(ht,T,Pe),Ee===null?Me=ht:Ee.sibling=ht,Ee=ht);return e&&ve.forEach(function(zo){return t(w,zo)}),Xe&&mo(w,Pe),Me}function dt(w,T,k,G){if(k==null)throw Error("An iterable object provided no iterator.");for(var oe=null,Me=null,Ee=T,ve=T=0,Pe=null,ht=null,kt=k.next();Ee!==null&&!kt.done;ve++,kt=k.next()){Ee.index>ve?(Pe=Ee,Ee=null):Pe=Ee.sibling;var zo=A(w,Ee,kt.value,G);if(zo===null){Ee===null&&(Ee=Pe);break}ht=te(w,zo,kt.value,ht),e&&Ee&&zo.alternate===null&&t(w,Ee),T=l(zo,T,ve),Me===null?oe=zo:Me.sibling=zo,Me=zo,Ee=Pe}if(kt.done)return n(w,Ee),Xe&&mo(w,ve),oe;if(Ee===null){for(;!kt.done;ve++,kt=k.next())Ee=_(w,kt.value,G),Ee!==null&&(ht=te(w,Ee,kt.value,ht),T=l(Ee,T,ve),Me===null?oe=Ee:Me.sibling=Ee,Me=Ee);return Xe&&mo(w,ve),oe}for(Ee=a(Ee);!kt.done;ve++,kt=k.next())Pe=z(Ee,w,ve,kt.value,G),Pe!==null&&(ht=te(w,Pe,kt.value,ht),e&&Pe.alternate!==null&&Ee.delete(Pe.key===null?ve:Pe.key),T=l(Pe,T,ve),Me===null?oe=Pe:Me.sibling=Pe,Me=Pe);return e&&Ee.forEach(function(qT){return t(w,qT)}),Xe&&mo(w,ve),oe}function Je(w,T,k,G){if(typeof k=="object"&&k!==null&&k.type===Xr&&k.key===null&&($c(k,null,w),k=k.props.children),typeof k=="object"&&k!==null){switch(k.$$typeof){case Ga:var oe=Ft(k._debugInfo);e:{for(var Me=k.key;T!==null;){if(T.key===Me){if(Me=k.type,Me===Xr){if(T.tag===7){n(w,T.sibling),G=o(T,k.props.children),G.return=w,G._debugOwner=k._owner,G._debugInfo=Ue,$c(k,G,w),w=G;break e}}else if(T.elementType===Me||fb(T,k)||typeof Me=="object"&&Me!==null&&Me.$$typeof===Hn&&$o(Me)===T.type){n(w,T.sibling),G=o(T,k.props),Ki(G,k),G.return=w,G._debugOwner=k._owner,G._debugInfo=Ue,w=G;break e}n(w,T);break}else t(w,T);T=T.sibling}k.type===Xr?(G=Pl(k.props.children,w.mode,G,k.key),G.return=w,G._debugOwner=w,G._debugTask=w._debugTask,G._debugInfo=Ue,$c(k,G,w),w=G):(G=Uc(k,w.mode,G),Ki(G,k),G.return=w,G._debugInfo=Ue,w=G)}return w=i(w),Ue=oe,w;case Yr:e:{for(oe=k,k=oe.key;T!==null;){if(T.key===k)if(T.tag===4&&T.stateNode.containerInfo===oe.containerInfo&&T.stateNode.implementation===oe.implementation){n(w,T.sibling),G=o(T,oe.children||[]),G.return=w,w=G;break e}else{n(w,T);break}else t(w,T);T=T.sibling}G=Tf(oe,w.mode,G),G.return=w,w=G}return i(w);case Hn:return oe=Ft(k._debugInfo),k=$o(k),w=Je(w,T,k,G),Ue=oe,w}if(Bt(k))return oe=Ft(k._debugInfo),w=ue(w,T,k,G),Ue=oe,w;if(se(k)){if(oe=Ft(k._debugInfo),Me=se(k),typeof Me!="function")throw Error("An object is not an iterable. This error is likely caused by a bug in React. Please file an issue.");var Ee=Me.call(k);return Ee===k?(w.tag!==0||Object.prototype.toString.call(w.type)!=="[object GeneratorFunction]"||Object.prototype.toString.call(Ee)!=="[object Generator]")&&(Bx||console.error("Using Iterators as children is unsupported and will likely yield unexpected results because enumerating a generator mutates it. You may convert it to an array with `Array.from()` or the `[...spread]` operator before rendering. You can also use an Iterable that can iterate multiple times over the same items."),Bx=!0):k.entries!==Me||op||(console.error("Using Maps as children is not supported. Use an array of keyed ReactElements instead."),op=!0),w=dt(w,T,Ee,G),Ue=oe,w}if(typeof k.then=="function")return oe=Ft(k._debugInfo),w=Je(w,T,Jc(k),G),Ue=oe,w;if(k.$$typeof===Za)return Je(w,T,Zc(w,k),G);Qc(w,k)}return typeof k=="string"&&k!==""||typeof k=="number"||typeof k=="bigint"?(oe=""+k,T!==null&&T.tag===6?(n(w,T.sibling),G=o(T,oe),G.return=w,w=G):(n(w,T),G=Af(oe,w.mode,G),G.return=w,G._debugOwner=w,G._debugTask=w._debugTask,G._debugInfo=Ue,w=G),i(w)):(typeof k=="function"&&Fc(w,k),typeof k=="symbol"&&Ic(w,k),n(w,T))}return function(w,T,k,G){var oe=Ue;Ue=null;try{Js=0;var Me=Je(w,T,k,G);return di=null,Me}catch(ht){if(ht===ui||ht===rd)throw ht;var Ee=E(29,ht,null,w.mode);Ee.lanes=G,Ee.return=w;var ve=Ee._debugInfo=Ue;if(Ee._debugOwner=w._debugOwner,Ee._debugTask=w._debugTask,ve!=null){for(var Pe=ve.length-1;0<=Pe;Pe--)if(typeof ve[Pe].stack=="string"){Ee._debugOwner=ve[Pe],Ee._debugTask=ve[Pe].debugTask;break}}return Ee}finally{Ue=oe}}}function Pb(e,t){var n=Bt(e);return e=!n&&typeof se(e)=="function",n||e?(n=n?"array":"iterable",console.error("A nested %s was passed to row #%s in <SuspenseList />. Wrap it in an additional SuspenseList to configure its revealOrder: <SuspenseList revealOrder=...> ... <SuspenseList revealOrder=...>{%s}</SuspenseList> ... </SuspenseList>",n,t,n),!1):!0}function Vf(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Uf(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Jo(e){return{lane:e,tag:qx,payload:null,callback:null,next:null}}function Qo(e,t,n){var a=e.updateQueue;if(a===null)return null;if(a=a.shared,rp===a&&!Qx){var o=W(e);console.error(`An update (setState, replaceState, or forceUpdate) was scheduled from inside an update function. Update functions should be pure, with zero side-effects. Consider using componentDidUpdate or a callback.
Please update the following component: %s`,o),Qx=!0}return(Fe&Zt)!==Qt?(o=a.pending,o===null?t.next=t:(t.next=o.next,o.next=t),a.pending=t,t=Vc(e),db(e,null,n),t):(Pc(e,a,t,n),Vc(e))}function Wi(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194048)!==0)){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,Zo(e,n)}}function Kc(e,t){var n=e.updateQueue,a=e.alternate;if(a!==null&&(a=a.updateQueue,n===a)){var o=null,l=null;if(n=n.firstBaseUpdate,n!==null){do{var i={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};l===null?o=l=i:l=l.next=i,n=n.next}while(n!==null);l===null?o=l=t:l=l.next=t}else o=l=t;n={baseState:a.baseState,firstBaseUpdate:o,lastBaseUpdate:l,shared:a.shared,callbacks:a.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function es(){if(ip){var e=ci;if(e!==null)throw e}}function ts(e,t,n,a){ip=!1;var o=e.updateQueue;pl=!1,rp=o.shared;var l=o.firstBaseUpdate,i=o.lastBaseUpdate,c=o.shared.pending;if(c!==null){o.shared.pending=null;var m=c,p=m.next;m.next=null,i===null?l=p:i.next=p,i=m;var O=e.alternate;O!==null&&(O=O.updateQueue,c=O.lastBaseUpdate,c!==i&&(c===null?O.firstBaseUpdate=p:c.next=p,O.lastBaseUpdate=m))}if(l!==null){var _=o.baseState;i=0,O=p=m=null,c=l;do{var A=c.lane&-536870913,z=A!==c.lane;if(z?(Le&A)===A:(a&A)===A){A!==0&&A===tr&&(ip=!0),O!==null&&(O=O.next={lane:0,tag:c.tag,payload:c.payload,callback:null,next:null});e:{A=e;var te=c,ue=t,dt=n;switch(te.tag){case $x:if(te=te.payload,typeof te=="function"){ii=!0;var Je=te.call(dt,_,ue);if(A.mode&an){he(!0);try{te.call(dt,_,ue)}finally{he(!1)}}ii=!1,_=Je;break e}_=te;break e;case lp:A.flags=A.flags&-65537|128;case qx:if(Je=te.payload,typeof Je=="function"){if(ii=!0,te=Je.call(dt,_,ue),A.mode&an){he(!0);try{Je.call(dt,_,ue)}finally{he(!1)}}ii=!1}else te=Je;if(te==null)break e;_=Ze({},_,te);break e;case Jx:pl=!0}}A=c.callback,A!==null&&(e.flags|=64,z&&(e.flags|=8192),z=o.callbacks,z===null?o.callbacks=[A]:z.push(A))}else z={lane:A,tag:c.tag,payload:c.payload,callback:c.callback,next:null},O===null?(p=O=z,m=_):O=O.next=z,i|=A;if(c=c.next,c===null){if(c=o.shared.pending,c===null)break;z=c,c=z.next,z.next=null,o.lastBaseUpdate=z,o.shared.pending=null}}while(!0);O===null&&(m=_),o.baseState=m,o.firstBaseUpdate=p,o.lastBaseUpdate=O,l===null&&(o.shared.lanes=0),yl|=i,e.lanes=i,e.memoizedState=_}rp=null}function Vb(e,t){if(typeof e!="function")throw Error("Invalid argument passed as callback. Expected a function. Instead received: "+e);e.call(t)}function VS(e,t){var n=e.shared.hiddenCallbacks;if(n!==null)for(e.shared.hiddenCallbacks=null,e=0;e<n.length;e++)Vb(n[e],t)}function Ub(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;e<n.length;e++)Vb(n[e],t)}function Lb(e,t){var n=Ka;ie(sd,n,e),ie(fi,t,e),Ka=n|t.baseLanes}function Lf(e){ie(sd,Ka,e),ie(fi,fi.current,e)}function Bf(e){Ka=sd.current,le(fi,e),le(sd,e)}function Fo(e){var t=e.alternate;ie(Ct,Ct.current&mi,e),ie(Vn,e,e),ta===null&&(t===null||fi.current!==null||t.memoizedState!==null)&&(ta=e)}function Gf(e){ie(Ct,Ct.current,e),ie(Vn,e,e),ta===null&&(ta=e)}function Bb(e){e.tag===22?(ie(Ct,Ct.current,e),ie(Vn,e,e),ta===null&&(ta=e)):Io(e)}function Io(e){ie(Ct,Ct.current,e),ie(Vn,Vn.current,e)}function _n(e){le(Vn,e),ta===e&&(ta=null),le(Ct,e)}function Wc(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||th(n)||nh(n)))return t}else if(t.tag===19&&(t.memoizedProps.revealOrder==="forwards"||t.memoizedProps.revealOrder==="backwards"||t.memoizedProps.revealOrder==="unstable_legacy-backwards"||t.memoizedProps.revealOrder==="together")){if((t.flags&128)!==0)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}function Ge(){var e=P;aa===null?aa=[e]:aa.push(e)}function F(){var e=P;if(aa!==null&&(Oo++,aa[Oo]!==e)){var t=W(_e);if(!Fx.has(t)&&(Fx.add(t),aa!==null)){for(var n="",a=0;a<=Oo;a++){var o=aa[a],l=a===Oo?e:o;for(o=a+1+". "+o;30>o.length;)o+=" ";o+=l+`
`,n+=o}console.error(`React has detected a change in the order of Hooks called by %s. This will lead to bugs and errors if not fixed. For more information, read the Rules of Hooks: https://react.dev/link/rules-of-hooks
Previous render Next render
------------------------------------------------------
%s ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
`,t,n)}}}function Or(e){e==null||Bt(e)||console.error("%s received a final argument that is not an array (instead, received `%s`). When specified, the final argument must be an array.",P,typeof e)}function eu(){var e=W(_e);Kx.has(e)||(Kx.add(e),console.error("ReactDOM.useFormState has been renamed to React.useActionState. Please update %s to use React.useActionState.",e))}function Tt(){throw Error(`Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app
See https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.`)}function Zf(e,t){if(Is)return!1;if(t===null)return console.error("%s received a final argument during this render, but not during the previous render. Even though the final argument is optional, its type cannot change between renders.",P),!1;e.length!==t.length&&console.error(`The final argument passed to %s changed size between renders. The order and size of this array must remain constant.
Previous: %s
Incoming: %s`,P,"["+t.join(", ")+"]","["+e.join(", ")+"]");for(var n=0;n<t.length&&n<e.length;n++)if(!dn(e[n],t[n]))return!1;return!0}function Yf(e,t,n,a,o,l){Co=l,_e=t,aa=e!==null?e._debugHookTypes:null,Oo=-1,Is=e!==null&&e.type!==t.type,(Object.prototype.toString.call(n)==="[object AsyncFunction]"||Object.prototype.toString.call(n)==="[object AsyncGeneratorFunction]")&&(l=W(_e),sp.has(l)||(sp.add(l),console.error("%s is an async Client Component. Only Server Components can be async at the moment. This error is often caused by accidentally adding `'use client'` to a module that was originally written for the server.",l===null?"An unknown Component":"<"+l+">"))),t.memoizedState=null,t.updateQueue=null,t.lanes=0,L.H=e!==null&&e.memoizedState!==null?up:aa!==null?Wx:cp,rr=l=(t.mode&an)!==ke;var i=tp(n,a,o);if(rr=!1,pi&&(i=Xf(t,n,a,o)),l){he(!0);try{i=Xf(t,n,a,o)}finally{he(!1)}}return Gb(e,t),i}function Gb(e,t){t._debugHookTypes=aa,t.dependencies===null?ko!==null&&(t.dependencies={lanes:0,firstContext:null,_debugThenableState:ko}):t.dependencies._debugThenableState=ko,L.H=Ks;var n=st!==null&&st.next!==null;if(Co=0,aa=P=Ht=st=_e=null,Oo=-1,e!==null&&(e.flags&65011712)!==(t.flags&65011712)&&console.error("Internal React error: Expected static flag was missing. Please notify the React team."),ud=!1,Fs=0,ko=null,n)throw Error("Rendered fewer hooks than expected. This may be caused by an accidental early return statement.");e===null||zt||(e=e.dependencies,e!==null&&Gc(e)&&(zt=!0)),$s?($s=!1,e=!0):e=!1,e&&(t=W(t)||"Unknown",Ix.has(t)||sp.has(t)||(Ix.add(t),console.error("`use` was called from inside a try/catch block. This is not allowed and can lead to unexpected behavior. To handle errors triggered by `use`, wrap your component in a error boundary.")))}function Xf(e,t,n,a){_e=e;var o=0;do{if(pi&&(ko=null),Fs=0,pi=!1,o>=wT)throw Error("Too many re-renders. React limits the number of renders to prevent an infinite loop.");if(o+=1,Is=!1,Ht=st=null,e.updateQueue!=null){var l=e.updateQueue;l.lastEffect=null,l.events=null,l.stores=null,l.memoCache!=null&&(l.memoCache.index=0)}Oo=-1,L.H=e1,l=tp(t,n,a)}while(pi);return l}function US(){var e=L.H,t=e.useState()[0];return t=typeof t.then=="function"?ns(t):t,e=e.useState()[0],(st!==null?st.memoizedState:null)!==e&&(_e.flags|=1024),t}function qf(){var e=dd!==0;return dd=0,e}function $f(e,t,n){t.updateQueue=e.updateQueue,t.flags=(t.mode&ma)!==ke?t.flags&-402655237:t.flags&-2053,e.lanes&=~n}function Jf(e){if(ud){for(e=e.memoizedState;e!==null;){var t=e.queue;t!==null&&(t.pending=null),e=e.next}ud=!1}Co=0,aa=Ht=st=_e=null,Oo=-1,P=null,pi=!1,Fs=dd=0,ko=null}function rn(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Ht===null?_e.memoizedState=Ht=e:Ht=Ht.next=e,Ht}function nt(){if(st===null){var e=_e.alternate;e=e!==null?e.memoizedState:null}else e=st.next;var t=Ht===null?_e.memoizedState:Ht.next;if(t!==null)Ht=t,st=e;else{if(e===null)throw _e.alternate===null?Error("Update hook called on initial render. This is likely a bug in React. Please file an issue."):Error("Rendered more hooks than during the previous render.");st=e,e={memoizedState:st.memoizedState,baseState:st.baseState,baseQueue:st.baseQueue,queue:st.queue,next:null},Ht===null?_e.memoizedState=Ht=e:Ht=Ht.next=e}return Ht}function tu(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function ns(e){var t=Fs;return Fs+=1,ko===null&&(ko=Rb()),e=kb(ko,e,t),t=_e,(Ht===null?t.memoizedState:Ht.next)===null&&(t=t.alternate,L.H=t!==null&&t.memoizedState!==null?up:cp),e}function Ko(e){if(e!==null&&typeof e=="object"){if(typeof e.then=="function")return ns(e);if(e.$$typeof===Za)return pt(e)}throw Error("An unsupported type was passed to use(): "+String(e))}function Gl(e){var t=null,n=_e.updateQueue;if(n!==null&&(t=n.memoCache),t==null){var a=_e.alternate;a!==null&&(a=a.updateQueue,a!==null&&(a=a.memoCache,a!=null&&(t={data:a.data.map(function(o){return o.slice()}),index:0})))}if(t==null&&(t={data:[],index:0}),n===null&&(n=tu(),_e.updateQueue=n),n.memoCache=t,n=t.data[t.index],n===void 0||Is)for(n=t.data[t.index]=Array(e),a=0;a<e;a++)n[a]=tA;else n.length!==e&&console.error("Expected a constant size argument for each invocation of useMemoCache. The previous cache was allocated with size %s but size %s was requested.",n.length,e);return t.index++,n}function ua(e,t){return typeof t=="function"?t(e):t}function Qf(e,t,n){var a=rn();if(n!==void 0){var o=n(t);if(rr){he(!0);try{n(t)}finally{he(!1)}}}else o=t;return a.memoizedState=a.baseState=o,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:o},a.queue=e,e=e.dispatch=YS.bind(null,_e,e),[a.memoizedState,e]}function _r(e){var t=nt();return Ff(t,st,e)}function Ff(e,t,n){var a=e.queue;if(a===null)throw Error("Should have a queue. You are likely calling Hooks conditionally, which is not allowed. (https://react.dev/link/invalid-hook-call)");a.lastRenderedReducer=n;var o=e.baseQueue,l=a.pending;if(l!==null){if(o!==null){var i=o.next;o.next=l.next,l.next=i}t.baseQueue!==o&&console.error("Internal error: Expected work-in-progress queue to be a clone. This is a bug in React."),t.baseQueue=o=l,a.pending=null}if(l=e.baseState,o===null)e.memoizedState=l;else{t=o.next;var c=i=null,m=null,p=t,O=!1;do{var _=p.lane&-536870913;if(_!==p.lane?(Le&_)===_:(Co&_)===_){var A=p.revertLane;if(A===0)m!==null&&(m=m.next={lane:0,revertLane:0,gesture:null,action:p.action,hasEagerState:p.hasEagerState,eagerState:p.eagerState,next:null}),_===tr&&(O=!0);else if((Co&A)===A){p=p.next,A===tr&&(O=!0);continue}else _={lane:0,revertLane:p.revertLane,gesture:null,action:p.action,hasEagerState:p.hasEagerState,eagerState:p.eagerState,next:null},m===null?(c=m=_,i=l):m=m.next=_,_e.lanes|=A,yl|=A;_=p.action,rr&&n(l,_),l=p.hasEagerState?p.eagerState:n(l,_)}else A={lane:_,revertLane:p.revertLane,gesture:p.gesture,action:p.action,hasEagerState:p.hasEagerState,eagerState:p.eagerState,next:null},m===null?(c=m=A,i=l):m=m.next=A,_e.lanes|=_,yl|=_;p=p.next}while(p!==null&&p!==t);if(m===null?i=l:m.next=c,!dn(l,e.memoizedState)&&(zt=!0,O&&(n=ci,n!==null)))throw n;e.memoizedState=l,e.baseState=i,e.baseQueue=m,a.lastRenderedState=l}return o===null&&(a.lanes=0),[e.memoizedState,a.dispatch]}function as(e){var t=nt(),n=t.queue;if(n===null)throw Error("Should have a queue. You are likely calling Hooks conditionally, which is not allowed. (https://react.dev/link/invalid-hook-call)");n.lastRenderedReducer=e;var a=n.dispatch,o=n.pending,l=t.memoizedState;if(o!==null){n.pending=null;var i=o=o.next;do l=e(l,i.action),i=i.next;while(i!==o);dn(l,t.memoizedState)||(zt=!0),t.memoizedState=l,t.baseQueue===null&&(t.baseState=l),n.lastRenderedState=l}return[l,a]}function If(e,t,n){var a=_e,o=rn();if(Xe){if(n===void 0)throw Error("Missing getServerSnapshot, which is required for server-rendered content. Will revert to client rendering.");var l=n();hi||l===n()||(console.error("The result of getServerSnapshot should be cached to avoid an infinite loop"),hi=!0)}else{if(l=t(),hi||(n=t(),dn(l,n)||(console.error("The result of getSnapshot should be cached to avoid an infinite loop"),hi=!0)),ct===null)throw Error("Expected a work-in-progress root. This is a bug in React. Please file an issue.");(Le&127)!==0||Zb(a,t,l)}return o.memoizedState=l,n={value:l,getSnapshot:t},o.queue=n,lu(Xb.bind(null,a,n,e),[e]),a.flags|=2048,jr(na|hn,{destroy:void 0},Yb.bind(null,a,n,l,t),null),l}function nu(e,t,n){var a=_e,o=nt(),l=Xe;if(l){if(n===void 0)throw Error("Missing getServerSnapshot, which is required for server-rendered content. Will revert to client rendering.");n=n()}else if(n=t(),!hi){var i=t();dn(n,i)||(console.error("The result of getSnapshot should be cached to avoid an infinite loop"),hi=!0)}(i=!dn((st||o).memoizedState,n))&&(o.memoizedState=n,zt=!0),o=o.queue;var c=Xb.bind(null,a,o,e);if(xn(2048,hn,c,[e]),o.getSnapshot!==t||i||Ht!==null&&Ht.memoizedState.tag&na){if(a.flags|=2048,jr(na|hn,{destroy:void 0},Yb.bind(null,a,o,n,t),null),ct===null)throw Error("Expected a work-in-progress root. This is a bug in React. Please file an issue.");l||(Co&127)!==0||Zb(a,t,n)}return n}function Zb(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},t=_e.updateQueue,t===null?(t=tu(),_e.updateQueue=t,t.stores=[e]):(n=t.stores,n===null?t.stores=[e]:n.push(e))}function Yb(e,t,n,a){t.value=n,t.getSnapshot=a,qb(t)&&$b(e)}function Xb(e,t,n){return n(function(){qb(t)&&(Ca(2,"updateSyncExternalStore()",e),$b(e))})}function qb(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!dn(e,n)}catch{return!0}}function $b(e){var t=tn(e,2);t!==null&&Et(t,e,2)}function Kf(e){var t=rn();if(typeof e=="function"){var n=e;if(e=n(),rr){he(!0);try{n()}finally{he(!1)}}}return t.memoizedState=t.baseState=e,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:ua,lastRenderedState:e},t}function Wf(e){e=Kf(e);var t=e.queue,n=fy.bind(null,_e,t);return t.dispatch=n,[e.memoizedState,n]}function em(e){var t=rn();t.memoizedState=t.baseState=e;var n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=n,t=hm.bind(null,_e,!0,n),n.dispatch=t,[e,t]}function Jb(e,t){var n=nt();return Qb(n,st,e,t)}function Qb(e,t,n,a){return e.baseState=n,Ff(e,st,typeof a=="function"?a:ua)}function Fb(e,t){var n=nt();return st!==null?Qb(n,st,e,t):(n.baseState=e,[e,n.queue.dispatch])}function LS(e,t,n,a,o){if(du(e))throw Error("Cannot update form state while rendering.");if(e=t.action,e!==null){var l={payload:o,action:e,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(i){l.listeners.push(i)}};L.T!==null?n(!0):l.isTransition=!1,a(l),n=t.pending,n===null?(l.next=t.pending=l,Ib(t,l)):(l.next=n.next,t.pending=n.next=l)}}function Ib(e,t){var n=t.action,a=t.payload,o=e.state;if(t.isTransition){var l=L.T,i={};i._updatedFibers=new Set,L.T=i;try{var c=n(o,a),m=L.S;m!==null&&m(i,c),Kb(e,t,c)}catch(p){tm(e,t,p)}finally{l!==null&&i.types!==null&&(l.types!==null&&l.types!==i.types&&console.error("We expected inner Transitions to have transferred the outer types set and that you cannot add to the outer Transition while inside the inner.This is a bug in React."),l.types=i.types),L.T=l,l===null&&i._updatedFibers&&(e=i._updatedFibers.size,i._updatedFibers.clear(),10<e&&console.warn("Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table."))}}else try{i=n(o,a),Kb(e,t,i)}catch(p){tm(e,t,p)}}function Kb(e,t,n){n!==null&&typeof n=="object"&&typeof n.then=="function"?(L.asyncTransitions++,n.then(uu,uu),n.then(function(a){Wb(e,t,a)},function(a){return tm(e,t,a)}),t.isTransition||console.error("An async function with useActionState was called outside of a transition. This is likely not what you intended (for example, isPending will not update correctly). Either call the returned function inside startTransition, or pass it to an `action` or `formAction` prop.")):Wb(e,t,n)}function Wb(e,t,n){t.status="fulfilled",t.value=n,ey(t),e.state=n,t=e.pending,t!==null&&(n=t.next,n===t?e.pending=null:(n=n.next,t.next=n,Ib(e,n)))}function tm(e,t,n){var a=e.pending;if(e.pending=null,a!==null){a=a.next;do t.status="rejected",t.reason=n,ey(t),t=t.next;while(t!==a)}e.action=null}function ey(e){e=e.listeners;for(var t=0;t<e.length;t++)(0,e[t])()}function ty(e,t){return t}function Mr(e,t){if(Xe){var n=ct.formState;if(n!==null){e:{var a=_e;if(Xe){if(mt){t:{for(var o=mt,l=Wn;o.nodeType!==8;){if(!l){o=null;break t}if(o=jn(o.nextSibling),o===null){o=null;break t}}l=o.data,o=l===Mp||l===U1?o:null}if(o){mt=jn(o.nextSibling),a=o.data===Mp;break e}}Xo(a)}a=!1}a&&(t=n[0])}}return n=rn(),n.memoizedState=n.baseState=t,a={pending:null,lanes:0,dispatch:null,lastRenderedReducer:ty,lastRenderedState:t},n.queue=a,n=fy.bind(null,_e,a),a.dispatch=n,a=Kf(!1),l=hm.bind(null,_e,!1,a.queue),a=rn(),o={state:t,dispatch:null,action:e,pending:null},a.queue=o,n=LS.bind(null,_e,o,l,n),o.dispatch=n,a.memoizedState=e,[t,n,!1]}function au(e){var t=nt();return ny(t,st,e)}function ny(e,t,n){if(t=Ff(e,t,ty)[0],e=_r(ua)[0],typeof t=="object"&&t!==null&&typeof t.then=="function")try{var a=ns(t)}catch(i){throw i===ui?rd:i}else a=t;t=nt();var o=t.queue,l=o.dispatch;return n!==t.memoizedState&&(_e.flags|=2048,jr(na|hn,{destroy:void 0},BS.bind(null,o,n),null)),[a,l,e]}function BS(e,t){e.action=t}function ou(e){var t=nt(),n=st;if(n!==null)return ny(t,n,e);nt(),t=t.memoizedState,n=nt();var a=n.queue.dispatch;return n.memoizedState=e,[t,a,!1]}function jr(e,t,n,a){return e={tag:e,create:n,deps:a,inst:t,next:null},t=_e.updateQueue,t===null&&(t=tu(),_e.updateQueue=t),n=t.lastEffect,n===null?t.lastEffect=e.next=e:(a=n.next,n.next=e,e.next=a,t.lastEffect=e),e}function nm(e){var t=rn();return e={current:e},t.memoizedState=e}function Zl(e,t,n,a){var o=rn();_e.flags|=e,o.memoizedState=jr(na|t,{destroy:void 0},n,a===void 0?null:a)}function xn(e,t,n,a){var o=nt();a=a===void 0?null:a;var l=o.memoizedState.inst;st!==null&&a!==null&&Zf(a,st.memoizedState.deps)?o.memoizedState=jr(t,l,n,a):(_e.flags|=e,o.memoizedState=jr(na|t,l,n,a))}function lu(e,t){(_e.mode&ma)!==ke?Zl(276826112,hn,e,t):Zl(8390656,hn,e,t)}function GS(e){_e.flags|=4;var t=_e.updateQueue;if(t===null)t=tu(),_e.updateQueue=t,t.events=[e];else{var n=t.events;n===null?t.events=[e]:n.push(e)}}function am(e){var t=rn(),n={impl:e};return t.memoizedState=n,function(){if((Fe&Zt)!==Qt)throw Error("A function wrapped in useEffectEvent can't be called during rendering.");return n.impl.apply(void 0,arguments)}}function ru(e){var t=nt().memoizedState;return GS({ref:t,nextImpl:e}),function(){if((Fe&Zt)!==Qt)throw Error("A function wrapped in useEffectEvent can't be called during rendering.");return t.impl.apply(void 0,arguments)}}function om(e,t){var n=4194308;return(_e.mode&ma)!==ke&&(n|=134217728),Zl(n,Un,e,t)}function ay(e,t){if(typeof t=="function"){e=e();var n=t(e);return function(){typeof n=="function"?n():t(null)}}if(t!=null)return t.hasOwnProperty("current")||console.error("Expected useImperativeHandle() first argument to either be a ref callback or React.createRef() object. Instead received: %s.","an object with keys {"+Object.keys(t).join(", ")+"}"),e=e(),t.current=e,function(){t.current=null}}function lm(e,t,n){typeof t!="function"&&console.error("Expected useImperativeHandle() second argument to be a function that creates a handle. Instead received: %s.",t!==null?typeof t:"null"),n=n!=null?n.concat([e]):null;var a=4194308;(_e.mode&ma)!==ke&&(a|=134217728),Zl(a,Un,ay.bind(null,t,e),n)}function iu(e,t,n){typeof t!="function"&&console.error("Expected useImperativeHandle() second argument to be a function that creates a handle. Instead received: %s.",t!==null?typeof t:"null"),n=n!=null?n.concat([e]):null,xn(4,Un,ay.bind(null,t,e),n)}function rm(e,t){return rn().memoizedState=[e,t===void 0?null:t],e}function su(e,t){var n=nt();t=t===void 0?null:t;var a=n.memoizedState;return t!==null&&Zf(t,a[1])?a[0]:(n.memoizedState=[e,t],e)}function im(e,t){var n=rn();t=t===void 0?null:t;var a=e();if(rr){he(!0);try{e()}finally{he(!1)}}return n.memoizedState=[a,t],a}function cu(e,t){var n=nt();t=t===void 0?null:t;var a=n.memoizedState;if(t!==null&&Zf(t,a[1]))return a[0];if(a=e(),rr){he(!0);try{e()}finally{he(!1)}}return n.memoizedState=[a,t],a}function sm(e,t){var n=rn();return cm(n,e,t)}function oy(e,t){var n=nt();return ry(n,st.memoizedState,e,t)}function ly(e,t){var n=nt();return st===null?cm(n,e,t):ry(n,st.memoizedState,e,t)}function cm(e,t,n){return n===void 0||(Co&1073741824)!==0&&(Le&261930)===0?e.memoizedState=t:(e.memoizedState=n,e=i0(),_e.lanes|=e,yl|=e,n)}function ry(e,t,n,a){return dn(n,t)?n:fi.current!==null?(e=cm(e,n,a),dn(e,t)||(zt=!0),e):(Co&42)===0||(Co&1073741824)!==0&&(Le&261930)===0?(zt=!0,e.memoizedState=n):(e=i0(),_e.lanes|=e,yl|=e,t)}function uu(){L.asyncTransitions--}function iy(e,t,n,a,o){var l=We.p;We.p=l!==0&&l<$a?l:$a;var i=L.T,c={};c._updatedFibers=new Set,L.T=c,hm(e,!1,t,n);try{var m=o(),p=L.S;if(p!==null&&p(c,m),m!==null&&typeof m=="object"&&typeof m.then=="function"){L.asyncTransitions++,m.then(uu,uu);var O=PS(m,a);os(e,t,O,Mn(e))}else os(e,t,a,Mn(e))}catch(_){os(e,t,{then:function(){},status:"rejected",reason:_},Mn(e))}finally{We.p=l,i!==null&&c.types!==null&&(i.types!==null&&i.types!==c.types&&console.error("We expected inner Transitions to have transferred the outer types set and that you cannot add to the outer Transition while inside the inner.This is a bug in React."),i.types=c.types),L.T=i,i===null&&c._updatedFibers&&(e=c._updatedFibers.size,c._updatedFibers.clear(),10<e&&console.warn("Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table."))}}function um(e,t,n,a){if(e.tag!==5)throw Error("Expected the form instance to be a HostComponent. This is a bug in React.");var o=sy(e).queue;HS(e),iy(e,o,t,br,n===null?S:function(){return cy(e),n(a)})}function sy(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:br,baseState:br,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ua,lastRenderedState:br},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ua,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function cy(e){L.T===null&&console.error("requestFormReset was called outside a transition or action. To fix, move to an action, or wrap with startTransition.");var t=sy(e);t.next===null&&(t=e.alternate.memoizedState),os(e,t.next.queue,{},Mn(e))}function dm(){var e=Kf(!1);return e=iy.bind(null,_e,e.queue,!0,!1),rn().memoizedState=e,[!1,e]}function uy(){var e=_r(ua)[0],t=nt().memoizedState;return[typeof e=="boolean"?e:ns(e),t]}function dy(){var e=as(ua)[0],t=nt().memoizedState;return[typeof e=="boolean"?e:ns(e),t]}function Yl(){return pt(mc)}function fm(){var e=rn(),t=ct.identifierPrefix;if(Xe){var n=wo,a=So;n=(a&~(1<<32-sn(a)-1)).toString(32)+n,t="_"+t+"R_"+n,n=dd++,0<n&&(t+="H"+n.toString(32)),t+="_"}else n=ST++,t="_"+t+"r_"+n.toString(32)+"_";return e.memoizedState=t}function mm(){return rn().memoizedState=ZS.bind(null,_e)}function ZS(e,t){for(var n=e.return;n!==null;){switch(n.tag){case 24:case 3:var a=Mn(n),o=Jo(a),l=Qo(n,o,a);l!==null&&(Ca(a,"refresh()",e),Et(l,n,a),Wi(l,n,a)),e=Mf(),t!=null&&l!==null&&console.error("The seed argument is not enabled outside experimental channels."),o.payload={cache:e};return}n=n.return}}function YS(e,t,n){var a=arguments;typeof a[3]=="function"&&console.error("State updates from the useState() and useReducer() Hooks don't support the second callback argument. To execute a side effect after rendering, declare it in the component body with useEffect()."),a=Mn(e);var o={lane:a,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};du(e)?my(t,o):(o=Nf(e,t,o,a),o!==null&&(Ca(a,"dispatch()",e),Et(o,e,a),hy(o,t,a)))}function fy(e,t,n){var a=arguments;typeof a[3]=="function"&&console.error("State updates from the useState() and useReducer() Hooks don't support the second callback argument. To execute a side effect after rendering, declare it in the component body with useEffect()."),a=Mn(e),os(e,t,n,a)&&Ca(a,"setState()",e)}function os(e,t,n,a){var o={lane:a,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(du(e))my(t,o);else{var l=e.alternate;if(e.lanes===0&&(l===null||l.lanes===0)&&(l=t.lastRenderedReducer,l!==null)){var i=L.H;L.H=pa;try{var c=t.lastRenderedState,m=l(c,n);if(o.hasEagerState=!0,o.eagerState=m,dn(m,c))return Pc(e,t,o,0),ct===null&&zc(),!1}catch{}finally{L.H=i}}if(n=Nf(e,t,o,a),n!==null)return Et(n,e,a),hy(n,t,a),!0}return!1}function hm(e,t,n,a){if(L.T===null&&tr===0&&console.error("An optimistic state update occurred outside a transition or action. To fix, move the update to an action, or wrap with startTransition."),a={lane:2,revertLane:Ym(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},du(e)){if(t)throw Error("Cannot update optimistic state while rendering.");console.error("Cannot call startTransition while rendering.")}else t=Nf(e,n,a,2),t!==null&&(Ca(2,"setOptimistic()",e),Et(t,e,2))}function du(e){var t=e.alternate;return e===_e||t!==null&&t===_e}function my(e,t){pi=ud=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function hy(e,t,n){if((n&4194048)!==0){var a=t.lanes;a&=e.pendingLanes,n|=a,t.lanes=n,Zo(e,n)}}function pm(e){if(e!==null&&typeof e!="function"){var t=String(e);d1.has(t)||(d1.add(t),console.error("Expected the last optional `callback` argument to be a function. Instead received: %s.",e))}}function gm(e,t,n,a){var o=e.memoizedState,l=n(a,o);if(e.mode&an){he(!0);try{l=n(a,o)}finally{he(!1)}}l===void 0&&(t=q(t)||"Component",i1.has(t)||(i1.add(t),console.error("%s.getDerivedStateFromProps(): A valid state object (or null) must be returned. You have returned undefined.",t))),o=l==null?o:Ze({},o,l),e.memoizedState=o,e.lanes===0&&(e.updateQueue.baseState=o)}function py(e,t,n,a,o,l,i){var c=e.stateNode;if(typeof c.shouldComponentUpdate=="function"){if(n=c.shouldComponentUpdate(a,l,i),e.mode&an){he(!0);try{n=c.shouldComponentUpdate(a,l,i)}finally{he(!1)}}return n===void 0&&console.error("%s.shouldComponentUpdate(): Returned undefined instead of a boolean value. Make sure to return true or false.",q(t)||"Component"),n}return t.prototype&&t.prototype.isPureReactComponent?!$i(n,a)||!$i(o,l):!0}function gy(e,t,n,a){var o=t.state;typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(n,a),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(n,a),t.state!==o&&(e=W(e)||"Component",n1.has(e)||(n1.add(e),console.error("%s.componentWillReceiveProps(): Assigning directly to this.state is deprecated (except inside a component's constructor). Use setState instead.",e)),dp.enqueueReplaceState(t,t.state,null))}function Xl(e,t){var n=t;if("ref"in t){n={};for(var a in t)a!=="ref"&&(n[a]=t[a])}if(e=e.defaultProps){n===t&&(n=Ze({},n));for(var o in e)n[o]===void 0&&(n[o]=e[o])}return n}function by(e){Gh(e),console.warn(`%s
%s
`,gi?"An error occurred in the <"+gi+"> component.":"An error occurred in one of your React components.",`Consider adding an error boundary to your tree to customize error handling behavior.
Visit https://react.dev/link/error-boundaries to learn more about error boundaries.`)}function yy(e){var t=gi?"The above error occurred in the <"+gi+"> component.":"The above error occurred in one of your React components.",n="React will try to recreate this component tree from scratch using the error boundary you provided, "+((fp||"Anonymous")+".");if(typeof e=="object"&&e!==null&&typeof e.environmentName=="string"){var a=e.environmentName;e=[`%o
%s
%s
`,e,t,n].slice(0),typeof e[0]=="string"?e.splice(0,1,$1+" "+e[0],J1,zd+a+zd,Q1):e.splice(0,0,$1,J1,zd+a+zd,Q1),e.unshift(console),a=YT.apply(console.error,e),a()}else console.error(`%o
%s
%s
`,e,t,n)}function vy(e){Gh(e)}function fu(e,t){try{gi=t.source?W(t.source):null,fp=null;var n=t.value;if(L.actQueue!==null)L.thrownErrors.push(n);else{var a=e.onUncaughtError;a(n,{componentStack:t.stack})}}catch(o){setTimeout(function(){throw o})}}function xy(e,t,n){try{gi=n.source?W(n.source):null,fp=W(t);var a=e.onCaughtError;a(n.value,{componentStack:n.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(o){setTimeout(function(){throw o})}}function bm(e,t,n){return n=Jo(n),n.tag=lp,n.payload={element:null},n.callback=function(){ae(t.source,fu,e,t)},n}function ym(e){return e=Jo(e),e.tag=lp,e}function vm(e,t,n,a){var o=n.type.getDerivedStateFromError;if(typeof o=="function"){var l=a.value;e.payload=function(){return o(l)},e.callback=function(){mb(n),ae(a.source,xy,t,n,a)}}var i=n.stateNode;i!==null&&typeof i.componentDidCatch=="function"&&(e.callback=function(){mb(n),ae(a.source,xy,t,n,a),typeof o!="function"&&(xl===null?xl=new Set([this]):xl.add(this)),vT(this,a),typeof o=="function"||(n.lanes&2)===0&&console.error("%s: Error boundaries should implement getDerivedStateFromError(). In that method, return a state update to display an error message or fallback UI.",W(n)||"Unknown")})}function XS(e,t,n,a,o){if(n.flags|=32768,qa&&fs(e,o),a!==null&&typeof a=="object"&&typeof a.then=="function"){if(t=n.alternate,t!==null&&kr(t,n,o,!0),Xe&&(Qa=!0),n=Vn.current,n!==null){switch(n.tag){case 31:case 13:return ta===null?Nu():n.alternate===null&&xt===Mo&&(xt=hd),n.flags&=-257,n.flags|=65536,n.lanes=o,a===id?n.flags|=16384:(t=n.updateQueue,t===null?n.updateQueue=new Set([a]):t.add(a),Lm(e,a,o)),!1;case 22:return n.flags|=65536,a===id?n.flags|=16384:(t=n.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([a])},n.updateQueue=t):(n=t.retryQueue,n===null?t.retryQueue=new Set([a]):n.add(a)),Lm(e,a,o)),!1}throw Error("Unexpected Suspense handler tag ("+n.tag+"). This is a bug in React.")}return Lm(e,a,o),Nu(),!1}if(Xe)return Qa=!0,t=Vn.current,t!==null?((t.flags&65536)===0&&(t.flags|=256),t.flags|=65536,t.lanes=o,a!==Jh&&Ji(Cn(Error("There was an error while hydrating but React was able to recover by instead client rendering from the nearest Suspense boundary.",{cause:a}),n))):(a!==Jh&&Ji(Cn(Error("There was an error while hydrating but React was able to recover by instead client rendering the entire root.",{cause:a}),n)),e=e.current.alternate,e.flags|=65536,o&=-o,e.lanes|=o,a=Cn(a,n),o=bm(e.stateNode,a,o),Kc(e,o),xt!==gl&&(xt=ir)),!1;var l=Cn(Error("There was an error during concurrent rendering but React was able to recover by instead synchronously rendering the entire root.",{cause:a}),n);if(oc===null?oc=[l]:oc.push(l),xt!==gl&&(xt=ir),t===null)return!0;a=Cn(a,n),n=t;do{switch(n.tag){case 3:return n.flags|=65536,e=o&-o,n.lanes|=e,e=bm(n.stateNode,a,e),Kc(n,e),!1;case 1:if(t=n.type,l=n.stateNode,(n.flags&128)===0&&(typeof t.getDerivedStateFromError=="function"||l!==null&&typeof l.componentDidCatch=="function"&&(xl===null||!xl.has(l))))return n.flags|=65536,o&=-o,n.lanes|=o,o=ym(o),vm(o,e,n,a),Kc(n,o),!1}n=n.return}while(n!==null);return!1}function It(e,t,n,a){t.child=e===null?Xx(t,null,n,a):lr(t,e.child,n,a)}function Ny(e,t,n,a,o){n=n.render;var l=t.ref;if("ref"in a){var i={};for(var c in a)c!=="ref"&&(i[c]=a[c])}else i=a;return Ll(t),a=Yf(e,t,n,i,l,o),c=qf(),e!==null&&!zt?($f(e,t,o),go(e,t,o)):(Xe&&c&&Df(t),t.flags|=1,It(e,t,a,o),t.child)}function Ey(e,t,n,a,o){if(e===null){var l=n.type;return typeof l=="function"&&!Sf(l)&&l.defaultProps===void 0&&n.compare===null?(n=zl(l),t.tag=15,t.type=n,Nm(t,l),Sy(e,t,n,a,o)):(e=wf(n.type,null,a,t,t.mode,o),e.ref=t.ref,e.return=t,t.child=e)}if(l=e.child,!Dm(e,o)){var i=l.memoizedProps;if(n=n.compare,n=n!==null?n:$i,n(i,a)&&e.ref===t.ref)return go(e,t,o)}return t.flags|=1,e=fo(l,a),e.ref=t.ref,e.return=t,t.child=e}function Sy(e,t,n,a,o){if(e!==null){var l=e.memoizedProps;if($i(l,a)&&e.ref===t.ref&&t.type===e.type)if(zt=!1,t.pendingProps=a=l,Dm(e,o))(e.flags&131072)!==0&&(zt=!0);else return t.lanes=e.lanes,go(e,t,o)}return xm(e,t,n,a,o)}function wy(e,t,n,a){var o=a.children,l=e!==null?e.memoizedState:null;if(e===null&&t.stateNode===null&&(t.stateNode={_visibility:Ms,_pendingMarkers:null,_retryCache:null,_transitions:null}),a.mode==="hidden"){if((t.flags&128)!==0){if(l=l!==null?l.baseLanes|n:n,e!==null){for(a=t.child=e.child,o=0;a!==null;)o=o|a.lanes|a.childLanes,a=a.sibling;a=o&~l}else a=0,t.child=null;return Ay(e,t,l,n,a)}if((n&536870912)!==0)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&qc(t,l!==null?l.cachePool:null),l!==null?Lb(t,l):Lf(t),Bb(t);else return a=t.lanes=536870912,Ay(e,t,l!==null?l.baseLanes|n:n,n,a)}else l!==null?(qc(t,l.cachePool),Lb(t,l),Io(t),t.memoizedState=null):(e!==null&&qc(t,null),Lf(t),Io(t));return It(e,t,o,n),t.child}function ls(e,t){return e!==null&&e.tag===22||t.stateNode!==null||(t.stateNode={_visibility:Ms,_pendingMarkers:null,_retryCache:null,_transitions:null}),t.sibling}function Ay(e,t,n,a,o){var l=zf();return l=l===null?null:{parent:Mt._currentValue,pool:l},t.memoizedState={baseLanes:n,cachePool:l},e!==null&&qc(t,null),Lf(t),Bb(t),e!==null&&kr(e,t,a,!0),t.childLanes=o,null}function mu(e,t){var n=t.hidden;return n!==void 0&&console.error(`<Activity> doesn't accept a hidden prop. Use mode="hidden" instead.
- <Activity %s>
+ <Activity %s>`,n===!0?"hidden":n===!1?"hidden={false}":"hidden={...}",n?'mode="hidden"':'mode="visible"'),t=pu({mode:t.mode,children:t.children},e.mode),t.ref=e.ref,e.child=t,t.return=e,t}function Ty(e,t,n){return lr(t,e.child,null,n),e=mu(t,t.pendingProps),e.flags|=2,_n(t),t.memoizedState=null,e}function qS(e,t,n){var a=t.pendingProps,o=(t.flags&128)!==0;if(t.flags&=-129,e===null){if(Xe){if(a.mode==="hidden")return e=mu(t,a),t.lanes=536870912,ls(null,e);if(Gf(t),(e=mt)?(n=I0(e,Wn),n=n!==null&&n.data===mr?n:null,n!==null&&(a={dehydrated:n,treeContext:yb(),retryLane:536870912,hydrationErrors:null},t.memoizedState=a,a=gb(n),a.return=t,t.child=a,en=t,mt=null)):n=null,n===null)throw Lc(t,e),Xo(t);return t.lanes=536870912,null}return mu(t,a)}var l=e.memoizedState;if(l!==null){var i=l.dehydrated;if(Gf(t),o)if(t.flags&256)t.flags&=-257,t=Ty(e,t,n);else if(t.memoizedState!==null)t.child=e.child,t.flags|=128,t=null;else throw Error("Client rendering an Activity suspended it again. This is a bug in React.");else if(xb(),(n&536870912)!==0&&xu(t),zt||kr(e,t,n,!1),o=(n&e.childLanes)!==0,zt||o){if(a=ct,a!==null&&(i=yn(a,n),i!==0&&i!==l.retryLane))throw l.retryLane=i,tn(e,i),Et(a,e,i),mp;Nu(),t=Ty(e,t,n)}else e=l.treeContext,mt=jn(i.nextSibling),en=t,Xe=!0,ul=null,Qa=!1,Pn=null,Wn=!1,e!==null&&vb(t,e),t=mu(t,a),t.flags|=4096;return t}return l=e.child,a={mode:a.mode,children:a.children},(n&536870912)!==0&&(n&e.lanes)!==0&&xu(t),e=fo(l,a),e.ref=t.ref,t.child=e,e.return=t,e}function hu(e,t){var n=t.ref;if(n===null)e!==null&&e.ref!==null&&(t.flags|=4194816);else{if(typeof n!="function"&&typeof n!="object")throw Error("Expected ref to be a function, an object returned by React.createRef(), or undefined/null.");(e===null||e.ref!==n)&&(t.flags|=4194816)}}function xm(e,t,n,a,o){if(n.prototype&&typeof n.prototype.render=="function"){var l=q(n)||"Unknown";f1[l]||(console.error("The <%s /> component appears to have a render method, but doesn't extend React.Component. This is likely to cause errors. Change %s to extend React.Component instead.",l,l),f1[l]=!0)}return t.mode&an&&ha.recordLegacyContextWarning(t,null),e===null&&(Nm(t,t.type),n.contextTypes&&(l=q(n)||"Unknown",h1[l]||(h1[l]=!0,console.error("%s uses the legacy contextTypes API which was removed in React 19. Use React.createContext() with React.useContext() instead. (https://react.dev/link/legacy-context)",l)))),Ll(t),n=Yf(e,t,n,a,void 0,o),a=qf(),e!==null&&!zt?($f(e,t,o),go(e,t,o)):(Xe&&a&&Df(t),t.flags|=1,It(e,t,n,o),t.child)}function Dy(e,t,n,a,o,l){return Ll(t),Oo=-1,Is=e!==null&&e.type!==t.type,t.updateQueue=null,n=Xf(t,a,n,o),Gb(e,t),a=qf(),e!==null&&!zt?($f(e,t,l),go(e,t,l)):(Xe&&a&&Df(t),t.flags|=1,It(e,t,n,l),t.child)}function Ry(e,t,n,a,o){switch(v(t)){case!1:var l=t.stateNode,i=new t.type(t.memoizedProps,l.context).state;l.updater.enqueueSetState(l,i,null);break;case!0:t.flags|=128,t.flags|=65536,l=Error("Simulated error coming from DevTools");var c=o&-o;if(t.lanes|=c,i=ct,i===null)throw Error("Expected a work-in-progress root. This is a bug in React. Please file an issue.");c=ym(c),vm(c,i,t,Cn(l,t)),Kc(t,c)}if(Ll(t),t.stateNode===null){if(i=cl,l=n.contextType,"contextType"in n&&l!==null&&(l===void 0||l.$$typeof!==Za)&&!u1.has(n)&&(u1.add(n),c=l===void 0?" However, it is set to undefined. This can be caused by a typo or by mixing up named and default imports. This can also happen due to a circular dependency, so try moving the createContext() call to a separate file.":typeof l!="object"?" However, it is set to a "+typeof l+".":l.$$typeof===hh?" Did you accidentally pass the Context.Consumer instead?":" However, it is set to an object with keys {"+Object.keys(l).join(", ")+"}.",console.error("%s defines an invalid contextType. contextType should point to the Context object returned by React.createContext().%s",q(n)||"Component",c)),typeof l=="object"&&l!==null&&(i=pt(l)),l=new n(a,i),t.mode&an){he(!0);try{l=new n(a,i)}finally{he(!1)}}if(i=t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,l.updater=dp,t.stateNode=l,l._reactInternals=t,l._reactInternalInstance=t1,typeof n.getDerivedStateFromProps=="function"&&i===null&&(i=q(n)||"Component",a1.has(i)||(a1.add(i),console.error("`%s` uses `getDerivedStateFromProps` but its initial state is %s. This is not recommended. Instead, define the initial state by assigning an object to `this.state` in the constructor of `%s`. This ensures that `getDerivedStateFromProps` arguments have a consistent shape.",i,l.state===null?"null":"undefined",i))),typeof n.getDerivedStateFromProps=="function"||typeof l.getSnapshotBeforeUpdate=="function"){var m=c=i=null;if(typeof l.componentWillMount=="function"&&l.componentWillMount.__suppressDeprecationWarning!==!0?i="componentWillMount":typeof l.UNSAFE_componentWillMount=="function"&&(i="UNSAFE_componentWillMount"),typeof l.componentWillReceiveProps=="function"&&l.componentWillReceiveProps.__suppressDeprecationWarning!==!0?c="componentWillReceiveProps":typeof l.UNSAFE_componentWillReceiveProps=="function"&&(c="UNSAFE_componentWillReceiveProps"),typeof l.componentWillUpdate=="function"&&l.componentWillUpdate.__suppressDeprecationWarning!==!0?m="componentWillUpdate":typeof l.UNSAFE_componentWillUpdate=="function"&&(m="UNSAFE_componentWillUpdate"),i!==null||c!==null||m!==null){l=q(n)||"Component";var p=typeof n.getDerivedStateFromProps=="function"?"getDerivedStateFromProps()":"getSnapshotBeforeUpdate()";l1.has(l)||(l1.add(l),console.error(`Unsafe legacy lifecycles will not be called for components using new component APIs.
%s uses %s but also contains the following legacy lifecycles:%s%s%s
The above lifecycles should be removed. Learn more about this warning here:
https://react.dev/link/unsafe-component-lifecycles`,l,p,i!==null?`
`+i:"",c!==null?`
`+c:"",m!==null?`
`+m:""))}}l=t.stateNode,i=q(n)||"Component",l.render||(n.prototype&&typeof n.prototype.render=="function"?console.error("No `render` method found on the %s instance: did you accidentally return an object from the constructor?",i):console.error("No `render` method found on the %s instance: you may have forgotten to define `render`.",i)),!l.getInitialState||l.getInitialState.isReactClassApproved||l.state||console.error("getInitialState was defined on %s, a plain JavaScript class. This is only supported for classes created using React.createClass. Did you mean to define a state property instead?",i),l.getDefaultProps&&!l.getDefaultProps.isReactClassApproved&&console.error("getDefaultProps was defined on %s, a plain JavaScript class. This is only supported for classes created using React.createClass. Use a static property to define defaultProps instead.",i),l.contextType&&console.error("contextType was defined as an instance property on %s. Use a static property to define contextType instead.",i),n.childContextTypes&&!c1.has(n)&&(c1.add(n),console.error("%s uses the legacy childContextTypes API which was removed in React 19. Use React.createContext() instead. (https://react.dev/link/legacy-context)",i)),n.contextTypes&&!s1.has(n)&&(s1.add(n),console.error("%s uses the legacy contextTypes API which was removed in React 19. Use React.createContext() with static contextType instead. (https://react.dev/link/legacy-context)",i)),typeof l.componentShouldUpdate=="function"&&console.error("%s has a method called componentShouldUpdate(). Did you mean shouldComponentUpdate()? The name is phrased as a question because the function is expected to return a value.",i),n.prototype&&n.prototype.isPureReactComponent&&typeof l.shouldComponentUpdate<"u"&&console.error("%s has a method called shouldComponentUpdate(). shouldComponentUpdate should not be used when extending React.PureComponent. Please extend React.Component if shouldComponentUpdate is used.",q(n)||"A pure component"),typeof l.componentDidUnmount=="function"&&console.error("%s has a method called componentDidUnmount(). But there is no such lifecycle method. Did you mean componentWillUnmount()?",i),typeof l.componentDidReceiveProps=="function"&&console.error("%s has a method called componentDidReceiveProps(). But there is no such lifecycle method. If you meant to update the state in response to changing props, use componentWillReceiveProps(). If you meant to fetch data or run side-effects or mutations after React has updated the UI, use componentDidUpdate().",i),typeof l.componentWillRecieveProps=="function"&&console.error("%s has a method called componentWillRecieveProps(). Did you mean componentWillReceiveProps()?",i),typeof l.UNSAFE_componentWillRecieveProps=="function"&&console.error("%s has a method called UNSAFE_componentWillRecieveProps(). Did you mean UNSAFE_componentWillReceiveProps()?",i),c=l.props!==a,l.props!==void 0&&c&&console.error("When calling super() in `%s`, make sure to pass up the same props that your component's constructor was passed.",i),l.defaultProps&&console.error("Setting defaultProps as an instance property on %s is not supported and will be ignored. Instead, define defaultProps as a static property on %s.",i,i),typeof l.getSnapshotBeforeUpdate!="function"||typeof l.componentDidUpdate=="function"||o1.has(n)||(o1.add(n),console.error("%s: getSnapshotBeforeUpdate() should be used with componentDidUpdate(). This component defines getSnapshotBeforeUpdate() only.",q(n))),typeof l.getDerivedStateFromProps=="function"&&console.error("%s: getDerivedStateFromProps() is defined as an instance method and will be ignored. Instead, declare it as a static method.",i),typeof l.getDerivedStateFromError=="function"&&console.error("%s: getDerivedStateFromError() is defined as an instance method and will be ignored. Instead, declare it as a static method.",i),typeof n.getSnapshotBeforeUpdate=="function"&&console.error("%s: getSnapshotBeforeUpdate() is defined as a static method and will be ignored. Instead, declare it as an instance method.",i),(c=l.state)&&(typeof c!="object"||Bt(c))&&console.error("%s.state: must be set to an object or null",i),typeof l.getChildContext=="function"&&typeof n.childContextTypes!="object"&&console.error("%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().",i),l=t.stateNode,l.props=a,l.state=t.memoizedState,l.refs={},Vf(t),i=n.contextType,l.context=typeof i=="object"&&i!==null?pt(i):cl,l.state===a&&(i=q(n)||"Component",r1.has(i)||(r1.add(i),console.error("%s: It is not recommended to assign props directly to state because updates to props won't be reflected in state. In most cases, it is better to use props directly.",i))),t.mode&an&&ha.recordLegacyContextWarning(t,l),ha.recordUnsafeLifecycleWarnings(t,l),l.state=t.memoizedState,i=n.getDerivedStateFromProps,typeof i=="function"&&(gm(t,n,i,a),l.state=t.memoizedState),typeof n.getDerivedStateFromProps=="function"||typeof l.getSnapshotBeforeUpdate=="function"||typeof l.UNSAFE_componentWillMount!="function"&&typeof l.componentWillMount!="function"||(i=l.state,typeof l.componentWillMount=="function"&&l.componentWillMount(),typeof l.UNSAFE_componentWillMount=="function"&&l.UNSAFE_componentWillMount(),i!==l.state&&(console.error("%s.componentWillMount(): Assigning directly to this.state is deprecated (except inside a component's constructor). Use setState instead.",W(t)||"Component"),dp.enqueueReplaceState(l,l.state,null)),ts(t,a,l,o),es(),l.state=t.memoizedState),typeof l.componentDidMount=="function"&&(t.flags|=4194308),(t.mode&ma)!==ke&&(t.flags|=134217728),l=!0}else if(e===null){l=t.stateNode;var O=t.memoizedProps;c=Xl(n,O),l.props=c;var _=l.context;m=n.contextType,i=cl,typeof m=="object"&&m!==null&&(i=pt(m)),p=n.getDerivedStateFromProps,m=typeof p=="function"||typeof l.getSnapshotBeforeUpdate=="function",O=t.pendingProps!==O,m||typeof l.UNSAFE_componentWillReceiveProps!="function"&&typeof l.componentWillReceiveProps!="function"||(O||_!==i)&&gy(t,l,a,i),pl=!1;var A=t.memoizedState;l.state=A,ts(t,a,l,o),es(),_=t.memoizedState,O||A!==_||pl?(typeof p=="function"&&(gm(t,n,p,a),_=t.memoizedState),(c=pl||py(t,n,c,a,A,_,i))?(m||typeof l.UNSAFE_componentWillMount!="function"&&typeof l.componentWillMount!="function"||(typeof l.componentWillMount=="function"&&l.componentWillMount(),typeof l.UNSAFE_componentWillMount=="function"&&l.UNSAFE_componentWillMount()),typeof l.componentDidMount=="function"&&(t.flags|=4194308),(t.mode&ma)!==ke&&(t.flags|=134217728)):(typeof l.componentDidMount=="function"&&(t.flags|=4194308),(t.mode&ma)!==ke&&(t.flags|=134217728),t.memoizedProps=a,t.memoizedState=_),l.props=a,l.state=_,l.context=i,l=c):(typeof l.componentDidMount=="function"&&(t.flags|=4194308),(t.mode&ma)!==ke&&(t.flags|=134217728),l=!1)}else{l=t.stateNode,Uf(e,t),i=t.memoizedProps,m=Xl(n,i),l.props=m,p=t.pendingProps,A=l.context,_=n.contextType,c=cl,typeof _=="object"&&_!==null&&(c=pt(_)),O=n.getDerivedStateFromProps,(_=typeof O=="function"||typeof l.getSnapshotBeforeUpdate=="function")||typeof l.UNSAFE_componentWillReceiveProps!="function"&&typeof l.componentWillReceiveProps!="function"||(i!==p||A!==c)&&gy(t,l,a,c),pl=!1,A=t.memoizedState,l.state=A,ts(t,a,l,o),es();var z=t.memoizedState;i!==p||A!==z||pl||e!==null&&e.dependencies!==null&&Gc(e.dependencies)?(typeof O=="function"&&(gm(t,n,O,a),z=t.memoizedState),(m=pl||py(t,n,m,a,A,z,c)||e!==null&&e.dependencies!==null&&Gc(e.dependencies))?(_||typeof l.UNSAFE_componentWillUpdate!="function"&&typeof l.componentWillUpdate!="function"||(typeof l.componentWillUpdate=="function"&&l.componentWillUpdate(a,z,c),typeof l.UNSAFE_componentWillUpdate=="function"&&l.UNSAFE_componentWillUpdate(a,z,c)),typeof l.componentDidUpdate=="function"&&(t.flags|=4),typeof l.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof l.componentDidUpdate!="function"||i===e.memoizedProps&&A===e.memoizedState||(t.flags|=4),typeof l.getSnapshotBeforeUpdate!="function"||i===e.memoizedProps&&A===e.memoizedState||(t.flags|=1024),t.memoizedProps=a,t.memoizedState=z),l.props=a,l.state=z,l.context=c,l=m):(typeof l.componentDidUpdate!="function"||i===e.memoizedProps&&A===e.memoizedState||(t.flags|=4),typeof l.getSnapshotBeforeUpdate!="function"||i===e.memoizedProps&&A===e.memoizedState||(t.flags|=1024),l=!1)}if(c=l,hu(e,t),i=(t.flags&128)!==0,c||i){if(c=t.stateNode,Ot(t),i&&typeof n.getDerivedStateFromError!="function")n=null,fn=-1;else if(n=Ox(c),t.mode&an){he(!0);try{Ox(c)}finally{he(!1)}}t.flags|=1,e!==null&&i?(t.child=lr(t,e.child,null,o),t.child=lr(t,null,n,o)):It(e,t,n,o),t.memoizedState=c.state,e=t.child}else e=go(e,t,o);return o=t.stateNode,l&&o.props!==a&&(bi||console.error("It looks like %s is reassigning its own `this.props` while rendering. This is not supported and can lead to confusing bugs.",W(t)||"a component"),bi=!0),e}function Cy(e,t,n,a){return Ul(),t.flags|=256,It(e,t,n,a),t.child}function Nm(e,t){t&&t.childContextTypes&&console.error(`childContextTypes cannot be defined on a function component.
%s.childContextTypes = ...`,t.displayName||t.name||"Component"),typeof t.getDerivedStateFromProps=="function"&&(e=q(t)||"Unknown",p1[e]||(console.error("%s: Function components do not support getDerivedStateFromProps.",e),p1[e]=!0)),typeof t.contextType=="object"&&t.contextType!==null&&(t=q(t)||"Unknown",m1[t]||(console.error("%s: Function components do not support contextType.",t),m1[t]=!0))}function Em(e){return{baseLanes:e,cachePool:Db()}}function Sm(e,t,n){return e=e!==null?e.childLanes&~n:0,t&&(e|=An),e}function ky(e,t,n){var a,o=t.pendingProps;g(t)&&(t.flags|=128);var l=!1,i=(t.flags&128)!==0;if((a=i)||(a=e!==null&&e.memoizedState===null?!1:(Ct.current&Qs)!==0),a&&(l=!0,t.flags&=-129),a=(t.flags&32)!==0,t.flags&=-33,e===null){if(Xe){if(l?Fo(t):Io(t),(e=mt)?(n=I0(e,Wn),n=n!==null&&n.data!==mr?n:null,n!==null&&(a={dehydrated:n,treeContext:yb(),retryLane:536870912,hydrationErrors:null},t.memoizedState=a,a=gb(n),a.return=t,t.child=a,en=t,mt=null)):n=null,n===null)throw Lc(t,e),Xo(t);return nh(n)?t.lanes=32:t.lanes=536870912,null}var c=o.children;if(o=o.fallback,l){Io(t);var m=t.mode;return c=pu({mode:"hidden",children:c},m),o=Pl(o,m,n,null),c.return=t,o.return=t,c.sibling=o,t.child=c,o=t.child,o.memoizedState=Em(n),o.childLanes=Sm(e,a,n),t.memoizedState=hp,ls(null,o)}return Fo(t),wm(t,c)}var p=e.memoizedState;if(p!==null){var O=p.dehydrated;if(O!==null){if(i)t.flags&256?(Fo(t),t.flags&=-257,t=Am(e,t,n)):t.memoizedState!==null?(Io(t),t.child=e.child,t.flags|=128,t=null):(Io(t),c=o.fallback,m=t.mode,o=pu({mode:"visible",children:o.children},m),c=Pl(c,m,n,null),c.flags|=2,o.return=t,c.return=t,o.sibling=c,t.child=o,lr(t,e.child,null,n),o=t.child,o.memoizedState=Em(n),o.childLanes=Sm(e,a,n),t.memoizedState=hp,t=ls(null,o));else if(Fo(t),xb(),(n&536870912)!==0&&xu(t),nh(O)){if(a=O.nextSibling&&O.nextSibling.dataset,a){c=a.dgst;var _=a.msg;m=a.stck;var A=a.cstck}l=_,a=c,o=m,O=A,c=l,m=O,c=Error(c||"The server could not finish this Suspense boundary, likely due to an error during server rendering. Switched to client rendering."),c.stack=o||"",c.digest=a,a=m===void 0?null:m,o={value:c,source:null,stack:a},typeof a=="string"&&$h.set(c,o),Ji(o),t=Am(e,t,n)}else if(zt||kr(e,t,n,!1),a=(n&e.childLanes)!==0,zt||a){if(a=ct,a!==null&&(o=yn(a,n),o!==0&&o!==p.retryLane))throw p.retryLane=o,tn(e,o),Et(a,e,o),mp;th(O)||Nu(),t=Am(e,t,n)}else th(O)?(t.flags|=192,t.child=e.child,t=null):(e=p.treeContext,mt=jn(O.nextSibling),en=t,Xe=!0,ul=null,Qa=!1,Pn=null,Wn=!1,e!==null&&vb(t,e),t=wm(t,o.children),t.flags|=4096);return t}}return l?(Io(t),c=o.fallback,m=t.mode,A=e.child,O=A.sibling,o=fo(A,{mode:"hidden",children:o.children}),o.subtreeFlags=A.subtreeFlags&65011712,O!==null?c=fo(O,c):(c=Pl(c,m,n,null),c.flags|=2),c.return=t,o.return=t,o.sibling=c,t.child=o,ls(null,o),o=t.child,c=e.child.memoizedState,c===null?c=Em(n):(m=c.cachePool,m!==null?(A=Mt._currentValue,m=m.parent!==A?{parent:A,pool:A}:m):m=Db(),c={baseLanes:c.baseLanes|n,cachePool:m}),o.memoizedState=c,o.childLanes=Sm(e,a,n),t.memoizedState=hp,ls(e.child,o)):(p!==null&&(n&62914560)===n&&(n&e.lanes)!==0&&xu(t),Fo(t),n=e.child,e=n.sibling,n=fo(n,{mode:"visible",children:o.children}),n.return=t,n.sibling=null,e!==null&&(a=t.deletions,a===null?(t.deletions=[e],t.flags|=16):a.push(e)),t.child=n,t.memoizedState=null,n)}function wm(e,t){return t=pu({mode:"visible",children:t},e.mode),t.return=e,e.child=t}function pu(e,t){return e=E(22,e,null,t),e.lanes=0,e}function Am(e,t,n){return lr(t,e.child,null,n),e=wm(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function Oy(e,t,n){e.lanes|=t;var a=e.alternate;a!==null&&(a.lanes|=t),Of(e.return,t,n)}function Tm(e,t,n,a,o,l){var i=e.memoizedState;i===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:a,tail:n,tailMode:o,treeForkCount:l}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=a,i.tail=n,i.tailMode=o,i.treeForkCount=l)}function _y(e,t,n){var a=t.pendingProps,o=a.revealOrder,l=a.tail,i=a.children,c=Ct.current;if((a=(c&Qs)!==0)?(c=c&mi|Qs,t.flags|=128):c&=mi,ie(Ct,c,t),c=o??"null",o!=="forwards"&&o!=="unstable_legacy-backwards"&&o!=="together"&&o!=="independent"&&!g1[c])if(g1[c]=!0,o==null)console.error('The default for the <SuspenseList revealOrder="..."> prop is changing. To be future compatible you must explictly specify either "independent" (the current default), "together", "forwards" or "legacy_unstable-backwards".');else if(o==="backwards")console.error('The rendering order of <SuspenseList revealOrder="backwards"> is changing. To be future compatible you must specify revealOrder="legacy_unstable-backwards" instead.');else if(typeof o=="string")switch(o.toLowerCase()){case"together":case"forwards":case"backwards":case"independent":console.error('"%s" is not a valid value for revealOrder on <SuspenseList />. Use lowercase "%s" instead.',o,o.toLowerCase());break;case"forward":case"backward":console.error('"%s" is not a valid value for revealOrder on <SuspenseList />. React uses the -s suffix in the spelling. Use "%ss" instead.',o,o.toLowerCase());break;default:console.error('"%s" is not a supported revealOrder on <SuspenseList />. Did you mean "independent", "together", "forwards" or "backwards"?',o)}else console.error('%s is not a supported value for revealOrder on <SuspenseList />. Did you mean "independent", "together", "forwards" or "backwards"?',o);c=l??"null",md[c]||(l==null?(o==="forwards"||o==="backwards"||o==="unstable_legacy-backwards")&&(md[c]=!0,console.error('The default for the <SuspenseList tail="..."> prop is changing. To be future compatible you must explictly specify either "visible" (the current default), "collapsed" or "hidden".')):l!=="visible"&&l!=="collapsed"&&l!=="hidden"?(md[c]=!0,console.error('"%s" is not a supported value for tail on <SuspenseList />. Did you mean "visible", "collapsed" or "hidden"?',l)):o!=="forwards"&&o!=="backwards"&&o!=="unstable_legacy-backwards"&&(md[c]=!0,console.error('<SuspenseList tail="%s" /> is only valid if revealOrder is "forwards" or "backwards". Did you mean to specify revealOrder="forwards"?',l)));e:if((o==="forwards"||o==="backwards"||o==="unstable_legacy-backwards")&&i!==void 0&&i!==null&&i!==!1)if(Bt(i)){for(c=0;c<i.length;c++)if(!Pb(i[c],c))break e}else if(c=se(i),typeof c=="function"){if(c=c.call(i))for(var m=c.next(),p=0;!m.done;m=c.next()){if(!Pb(m.value,p))break e;p++}}else console.error('A single row was passed to a <SuspenseList revealOrder="%s" />. This is not useful since it needs multiple rows. Did you mean to pass multiple children or an array?',o);if(It(e,t,i,n),Xe?(Yo(),i=js):i=0,!a&&e!==null&&(e.flags&128)!==0)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&Oy(e,n,t);else if(e.tag===19)Oy(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}switch(o){case"forwards":for(n=t.child,o=null;n!==null;)e=n.alternate,e!==null&&Wc(e)===null&&(o=n),n=n.sibling;n=o,n===null?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),Tm(t,!1,o,n,l,i);break;case"backwards":case"unstable_legacy-backwards":for(n=null,o=t.child,t.child=null;o!==null;){if(e=o.alternate,e!==null&&Wc(e)===null){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}Tm(t,!0,n,null,l,i);break;case"together":Tm(t,!1,null,null,void 0,i);break;default:t.memoizedState=null}return t.child}function go(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),fn=-1,yl|=t.lanes,(n&t.childLanes)===0)if(e!==null){if(kr(e,t,n,!1),(n&t.childLanes)===0)return null}else return null;if(e!==null&&t.child!==e.child)throw Error("Resuming work not yet implemented.");if(t.child!==null){for(e=t.child,n=fo(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=fo(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function Dm(e,t){return(e.lanes&t)!==0?!0:(e=e.dependencies,!!(e!==null&&Gc(e)))}function $S(e,t,n){switch(t.tag){case 3:He(t,t.stateNode.containerInfo),qo(t,Mt,e.memoizedState.cache),Ul();break;case 27:case 5:V(t);break;case 4:He(t,t.stateNode.containerInfo);break;case 10:qo(t,t.type,t.memoizedProps.value);break;case 12:(n&t.childLanes)!==0&&(t.flags|=4),t.flags|=2048;var a=t.stateNode;a.effectDuration=-0,a.passiveEffectDuration=-0;break;case 31:if(t.memoizedState!==null)return t.flags|=128,Gf(t),null;break;case 13:if(a=t.memoizedState,a!==null)return a.dehydrated!==null?(Fo(t),t.flags|=128,null):(n&t.child.childLanes)!==0?ky(e,t,n):(Fo(t),e=go(e,t,n),e!==null?e.sibling:null);Fo(t);break;case 19:var o=(e.flags&128)!==0;if(a=(n&t.childLanes)!==0,a||(kr(e,t,n,!1),a=(n&t.childLanes)!==0),o){if(a)return _y(e,t,n);t.flags|=128}if(o=t.memoizedState,o!==null&&(o.rendering=null,o.tail=null,o.lastEffect=null),ie(Ct,Ct.current,t),a)break;return null;case 22:return t.lanes=0,wy(e,t,n,t.pendingProps);case 24:qo(t,Mt,e.memoizedState.cache)}return go(e,t,n)}function Rm(e,t,n){if(t._debugNeedsRemount&&e!==null){n=wf(t.type,t.key,t.pendingProps,t._debugOwner||null,t.mode,t.lanes),n._debugStack=t._debugStack,n._debugTask=t._debugTask;var a=t.return;if(a===null)throw Error("Cannot swap the root fiber.");if(e.alternate=null,t.alternate=null,n.index=t.index,n.sibling=t.sibling,n.return=t.return,n.ref=t.ref,n._debugInfo=t._debugInfo,t===a.child)a.child=n;else{var o=a.child;if(o===null)throw Error("Expected parent to have a child.");for(;o.sibling!==t;)if(o=o.sibling,o===null)throw Error("Expected to find the previous sibling.");o.sibling=n}return t=a.deletions,t===null?(a.deletions=[e],a.flags|=16):t.push(e),n.flags|=2,n}if(e!==null)if(e.memoizedProps!==t.pendingProps||t.type!==e.type)zt=!0;else{if(!Dm(e,n)&&(t.flags&128)===0)return zt=!1,$S(e,t,n);zt=(e.flags&131072)!==0}else zt=!1,(a=Xe)&&(Yo(),a=(t.flags&1048576)!==0),a&&(a=t.index,Yo(),bb(t,js,a));switch(t.lanes=0,t.tag){case 16:e:if(a=t.pendingProps,e=$o(t.elementType),t.type=e,typeof e=="function")Sf(e)?(a=Xl(e,a),t.tag=1,t.type=e=zl(e),t=Ry(null,t,e,a,n)):(t.tag=0,Nm(t,e),t.type=e=zl(e),t=xm(null,t,e,a,n));else{if(e!=null){if(o=e.$$typeof,o===Ns){t.tag=11,t.type=e=Ef(e),t=Ny(null,t,e,a,n);break e}else if(o===Hu){t.tag=14,t=Ey(null,t,e,a,n);break e}}throw t="",e!==null&&typeof e=="object"&&e.$$typeof===Hn&&(t=" Did you wrap a component in React.lazy() more than once?"),n=q(e)||e,Error("Element type is invalid. Received a promise that resolves to: "+n+". Lazy element type must resolve to a class or function."+t)}return t;case 0:return xm(e,t,t.type,t.pendingProps,n);case 1:return a=t.type,o=Xl(a,t.pendingProps),Ry(e,t,a,o,n);case 3:e:{if(He(t,t.stateNode.containerInfo),e===null)throw Error("Should have a current fiber. This is a bug in React.");a=t.pendingProps;var l=t.memoizedState;o=l.element,Uf(e,t),ts(t,a,null,n);var i=t.memoizedState;if(a=i.cache,qo(t,Mt,a),a!==l.cache&&_f(t,[Mt],n,!0),es(),a=i.element,l.isDehydrated)if(l={element:a,isDehydrated:!1,cache:i.cache},t.updateQueue.baseState=l,t.memoizedState=l,t.flags&256){t=Cy(e,t,a,n);break e}else if(a!==o){o=Cn(Error("This root received an early update, before anything was able hydrate. Switched the entire root to client rendering."),t),Ji(o),t=Cy(e,t,a,n);break e}else{switch(e=t.stateNode.containerInfo,e.nodeType){case 9:e=e.body;break;default:e=e.nodeName==="HTML"?e.ownerDocument.body:e}for(mt=jn(e.firstChild),en=t,Xe=!0,ul=null,Qa=!1,Pn=null,Wn=!0,n=Xx(t,null,a,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling}else{if(Ul(),a===o){t=go(e,t,n);break e}It(e,t,a,n)}t=t.child}return t;case 26:return hu(e,t),e===null?(n=av(t.type,null,t.pendingProps,null))?t.memoizedState=n:Xe||(n=t.type,e=t.pendingProps,a=Ce(al.current),a=Au(a).createElement(n),a[Wt]=t,a[cn]=e,Kt(a,n,e),Q(a),t.stateNode=a):t.memoizedState=av(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return V(t),e===null&&Xe&&(a=Ce(al.current),o=$(),a=t.stateNode=tv(t.type,t.pendingProps,a,o,!1),Qa||(o=Z0(a,t.type,t.pendingProps,o),o!==null&&(Vl(t,0).serverProps=o)),en=t,Wn=!0,o=mt,tl(t.type)?(Pp=o,mt=jn(a.firstChild)):mt=o),It(e,t,t.pendingProps.children,n),hu(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&Xe&&(l=$(),a=mf(t.type,l.ancestorInfo),o=mt,(i=!o)||(i=Hw(o,t.type,t.pendingProps,Wn),i!==null?(t.stateNode=i,Qa||(l=Z0(i,t.type,t.pendingProps,l),l!==null&&(Vl(t,0).serverProps=l)),en=t,mt=jn(i.firstChild),Wn=!1,l=!0):l=!1,i=!l),i&&(a&&Lc(t,o),Xo(t))),V(t),o=t.type,l=t.pendingProps,i=e!==null?e.memoizedProps:null,a=l.children,Wm(o,l)?a=null:i!==null&&Wm(o,i)&&(t.flags|=32),t.memoizedState!==null&&(o=Yf(e,t,US,null,null,n),mc._currentValue=o),hu(e,t),It(e,t,a,n),t.child;case 6:return e===null&&Xe&&(n=t.pendingProps,e=$(),a=e.ancestorInfo.current,n=a!=null?kc(n,a.tag,e.ancestorInfo.implicitRootScope):!0,e=mt,(a=!e)||(a=zw(e,t.pendingProps,Wn),a!==null?(t.stateNode=a,en=t,mt=null,a=!0):a=!1,a=!a),a&&(n&&Lc(t,e),Xo(t))),null;case 13:return ky(e,t,n);case 4:return He(t,t.stateNode.containerInfo),a=t.pendingProps,e===null?t.child=lr(t,null,a,n):It(e,t,a,n),t.child;case 11:return Ny(e,t,t.type,t.pendingProps,n);case 7:return It(e,t,t.pendingProps,n),t.child;case 8:return It(e,t,t.pendingProps.children,n),t.child;case 12:return t.flags|=4,t.flags|=2048,a=t.stateNode,a.effectDuration=-0,a.passiveEffectDuration=-0,It(e,t,t.pendingProps.children,n),t.child;case 10:return a=t.type,o=t.pendingProps,l=o.value,"value"in o||b1||(b1=!0,console.error("The `value` prop is required for the `<Context.Provider>`. Did you misspell it or forget to pass it?")),qo(t,a,l),It(e,t,o.children,n),t.child;case 9:return o=t.type._context,a=t.pendingProps.children,typeof a!="function"&&console.error("A context consumer was rendered with multiple children, or a child that isn't a function. A context consumer expects a single child that is a function. If you did pass a function, make sure there is no trailing or leading whitespace around it."),Ll(t),o=pt(o),a=tp(a,o,void 0),t.flags|=1,It(e,t,a,n),t.child;case 14:return Ey(e,t,t.type,t.pendingProps,n);case 15:return Sy(e,t,t.type,t.pendingProps,n);case 19:return _y(e,t,n);case 31:return qS(e,t,n);case 22:return wy(e,t,n,t.pendingProps);case 24:return Ll(t),a=pt(Mt),e===null?(o=zf(),o===null&&(o=ct,l=Mf(),o.pooledCache=l,Bl(l),l!==null&&(o.pooledCacheLanes|=n),o=l),t.memoizedState={parent:a,cache:o},Vf(t),qo(t,Mt,o)):((e.lanes&n)!==0&&(Uf(e,t),ts(t,null,null,n),es()),o=e.memoizedState,l=t.memoizedState,o.parent!==a?(o={parent:a,cache:a},t.memoizedState=o,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=o),qo(t,Mt,a)):(a=l.cache,qo(t,Mt,a),a!==o.cache&&_f(t,[Mt],n,!0))),It(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error("Unknown unit of work tag ("+t.tag+"). This error is likely caused by a bug in React. Please file an issue.")}function bo(e){e.flags|=4}function Cm(e,t,n,a,o){if((t=(e.mode&hT)!==ke)&&(t=!1),t){if(e.flags|=16777216,(o&335544128)===o)if(e.stateNode.complete)e.flags|=8192;else if(d0())e.flags|=8192;else throw or=id,ap}else e.flags&=-16777217}function My(e,t){if(t.type!=="stylesheet"||(t.state.loading&oa)!==gr)e.flags&=-16777217;else if(e.flags|=16777216,!sv(t))if(d0())e.flags|=8192;else throw or=id,ap}function gu(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag!==22?Sa():536870912,e.lanes|=t,ur|=t)}function rs(e,t){if(!Xe)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var a=null;n!==null;)n.alternate!==null&&(a=n),n=n.sibling;a===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:a.sibling=null}}function ut(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,a=0;if(t)if((e.mode&Ve)!==ke){for(var o=e.selfBaseDuration,l=e.child;l!==null;)n|=l.lanes|l.childLanes,a|=l.subtreeFlags&65011712,a|=l.flags&65011712,o+=l.treeBaseDuration,l=l.sibling;e.treeBaseDuration=o}else for(o=e.child;o!==null;)n|=o.lanes|o.childLanes,a|=o.subtreeFlags&65011712,a|=o.flags&65011712,o.return=e,o=o.sibling;else if((e.mode&Ve)!==ke){o=e.actualDuration,l=e.selfBaseDuration;for(var i=e.child;i!==null;)n|=i.lanes|i.childLanes,a|=i.subtreeFlags,a|=i.flags,o+=i.actualDuration,l+=i.treeBaseDuration,i=i.sibling;e.actualDuration=o,e.treeBaseDuration=l}else for(o=e.child;o!==null;)n|=o.lanes|o.childLanes,a|=o.subtreeFlags,a|=o.flags,o.return=e,o=o.sibling;return e.subtreeFlags|=a,e.childLanes=n,t}function JS(e,t,n){var a=t.pendingProps;switch(Rf(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return ut(t),null;case 1:return ut(t),null;case 3:return n=t.stateNode,a=null,e!==null&&(a=e.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),ho(Mt,t),U(t),n.pendingContext&&(n.context=n.pendingContext,n.pendingContext=null),(e===null||e.child===null)&&(Cr(t)?(kf(),bo(t)):e===null||e.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,Cf())),ut(t),null;case 26:var o=t.type,l=t.memoizedState;return e===null?(bo(t),l!==null?(ut(t),My(t,l)):(ut(t),Cm(t,o,null,a,n))):l?l!==e.memoizedState?(bo(t),ut(t),My(t,l)):(ut(t),t.flags&=-16777217):(e=e.memoizedProps,e!==a&&bo(t),ut(t),Cm(t,o,e,a,n)),null;case 27:if(ye(t),n=Ce(al.current),o=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==a&&bo(t);else{if(!a){if(t.stateNode===null)throw Error("We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.");return ut(t),null}e=$(),Cr(t)?Nb(t):(e=tv(o,a,n,e,!0),t.stateNode=e,bo(t))}return ut(t),null;case 5:if(ye(t),o=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==a&&bo(t);else{if(!a){if(t.stateNode===null)throw Error("We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.");return ut(t),null}var i=$();if(Cr(t))Nb(t);else{switch(l=Ce(al.current),mf(o,i.ancestorInfo),i=i.context,l=Au(l),i){case Ai:l=l.createElementNS(Qr,o);break;case Md:l=l.createElementNS(Gu,o);break;default:switch(o){case"svg":l=l.createElementNS(Qr,o);break;case"math":l=l.createElementNS(Gu,o);break;case"script":l=l.createElement("div"),l.innerHTML="<script><\/script>",l=l.removeChild(l.firstChild);break;case"select":l=typeof a.is=="string"?l.createElement("select",{is:a.is}):l.createElement("select"),a.multiple?l.multiple=!0:a.size&&(l.size=a.size);break;default:l=typeof a.is=="string"?l.createElement(o,{is:a.is}):l.createElement(o),o.indexOf("-")===-1&&(o!==o.toLowerCase()&&console.error("<%s /> is using incorrect casing. Use PascalCase for React components, or lowercase for HTML elements.",o),Object.prototype.toString.call(l)!=="[object HTMLUnknownElement]"||fa.call(B1,o)||(B1[o]=!0,console.error("The tag <%s> is unrecognized in this browser. If you meant to render a React component, start its name with an uppercase letter.",o)))}}l[Wt]=t,l[cn]=a;e:for(i=t.child;i!==null;){if(i.tag===5||i.tag===6)l.appendChild(i.stateNode);else if(i.tag!==4&&i.tag!==27&&i.child!==null){i.child.return=i,i=i.child;continue}if(i===t)break e;for(;i.sibling===null;){if(i.return===null||i.return===t)break e;i=i.return}i.sibling.return=i.return,i=i.sibling}t.stateNode=l;e:switch(Kt(l,o,a),o){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break e;case"img":a=!0;break e;default:a=!1}a&&bo(t)}}return ut(t),Cm(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==a&&bo(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error("We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.");if(e=Ce(al.current),n=$(),Cr(t)){if(e=t.stateNode,n=t.memoizedProps,o=!Qa,a=null,l=en,l!==null)switch(l.tag){case 3:o&&(o=W0(e,n,a),o!==null&&(Vl(t,0).serverProps=o));break;case 27:case 5:a=l.memoizedProps,o&&(o=W0(e,n,a),o!==null&&(Vl(t,0).serverProps=o))}e[Wt]=t,e=!!(e.nodeValue===n||a!==null&&a.suppressHydrationWarning===!0||V0(e.nodeValue,n)),e||Xo(t,!0)}else o=n.ancestorInfo.current,o!=null&&kc(a,o.tag,n.ancestorInfo.implicitRootScope),e=Au(e).createTextNode(a),e[Wt]=t,t.stateNode=e}return ut(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(a=Cr(t),n!==null){if(e===null){if(!a)throw Error("A dehydrated suspense component was completed without a hydrated node. This is probably a bug in React.");if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error("Expected to have a hydrated activity instance. This error is likely caused by a bug in React. Please file an issue.");e[Wt]=t,ut(t),(t.mode&Ve)!==ke&&n!==null&&(e=t.child,e!==null&&(t.treeBaseDuration-=e.treeBaseDuration))}else kf(),Ul(),(t.flags&128)===0&&(n=t.memoizedState=null),t.flags|=4,ut(t),(t.mode&Ve)!==ke&&n!==null&&(e=t.child,e!==null&&(t.treeBaseDuration-=e.treeBaseDuration));e=!1}else n=Cf(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(_n(t),t):(_n(t),null);if((t.flags&128)!==0)throw Error("Client rendering an Activity suspended it again. This is a bug in React.")}return ut(t),null;case 13:if(a=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(o=a,l=Cr(t),o!==null&&o.dehydrated!==null){if(e===null){if(!l)throw Error("A dehydrated suspense component was completed without a hydrated node. This is probably a bug in React.");if(l=t.memoizedState,l=l!==null?l.dehydrated:null,!l)throw Error("Expected to have a hydrated suspense instance. This error is likely caused by a bug in React. Please file an issue.");l[Wt]=t,ut(t),(t.mode&Ve)!==ke&&o!==null&&(o=t.child,o!==null&&(t.treeBaseDuration-=o.treeBaseDuration))}else kf(),Ul(),(t.flags&128)===0&&(o=t.memoizedState=null),t.flags|=4,ut(t),(t.mode&Ve)!==ke&&o!==null&&(o=t.child,o!==null&&(t.treeBaseDuration-=o.treeBaseDuration));o=!1}else o=Cf(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=o),o=!0;if(!o)return t.flags&256?(_n(t),t):(_n(t),null)}return _n(t),(t.flags&128)!==0?(t.lanes=n,(t.mode&Ve)!==ke&&Ii(t),t):(n=a!==null,e=e!==null&&e.memoizedState!==null,n&&(a=t.child,o=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(o=a.alternate.memoizedState.cachePool.pool),l=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(l=a.memoizedState.cachePool.pool),l!==o&&(a.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),gu(t,t.updateQueue),ut(t),(t.mode&Ve)!==ke&&n&&(e=t.child,e!==null&&(t.treeBaseDuration-=e.treeBaseDuration)),null);case 4:return U(t),e===null&&qm(t.stateNode.containerInfo),ut(t),null;case 10:return ho(t.type,t),ut(t),null;case 19:if(le(Ct,t),a=t.memoizedState,a===null)return ut(t),null;if(o=(t.flags&128)!==0,l=a.rendering,l===null)if(o)rs(a,!1);else{if(xt!==Mo||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(l=Wc(e),l!==null){for(t.flags|=128,rs(a,!1),e=l.updateQueue,t.updateQueue=e,gu(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)pb(n,e),n=n.sibling;return ie(Ct,Ct.current&mi|Qs,t),Xe&&mo(t,a.treeForkCount),t.child}e=e.sibling}a.tail!==null&&qt()>xd&&(t.flags|=128,o=!0,rs(a,!1),t.lanes=4194304)}else{if(!o)if(e=Wc(l),e!==null){if(t.flags|=128,o=!0,e=e.updateQueue,t.updateQueue=e,gu(t,e),rs(a,!0),a.tail===null&&a.tailMode==="hidden"&&!l.alternate&&!Xe)return ut(t),null}else 2*qt()-a.renderingStartTime>xd&&n!==536870912&&(t.flags|=128,o=!0,rs(a,!1),t.lanes=4194304);a.isBackwards?(l.sibling=t.child,t.child=l):(e=a.last,e!==null?e.sibling=l:t.child=l,a.last=l)}return a.tail!==null?(e=a.tail,a.rendering=e,a.tail=e.sibling,a.renderingStartTime=qt(),e.sibling=null,n=Ct.current,n=o?n&mi|Qs:n&mi,ie(Ct,n,t),Xe&&mo(t,a.treeForkCount),e):(ut(t),null);case 22:case 23:return _n(t),Bf(t),a=t.memoizedState!==null,e!==null?e.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(n&536870912)!==0&&(t.flags&128)===0&&(ut(t),t.subtreeFlags&6&&(t.flags|=8192)):ut(t),n=t.updateQueue,n!==null&&gu(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==n&&(t.flags|=2048),e!==null&&le(nr,t),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),ho(Mt,t),ut(t),null;case 25:return null;case 30:return null}throw Error("Unknown unit of work tag ("+t.tag+"). This error is likely caused by a bug in React. Please file an issue.")}function QS(e,t){switch(Rf(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,(t.mode&Ve)!==ke&&Ii(t),t):null;case 3:return ho(Mt,t),U(t),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return ye(t),null;case 31:if(t.memoizedState!==null){if(_n(t),t.alternate===null)throw Error("Threw in newly mounted dehydrated component. This is likely a bug in React. Please file an issue.");Ul()}return e=t.flags,e&65536?(t.flags=e&-65537|128,(t.mode&Ve)!==ke&&Ii(t),t):null;case 13:if(_n(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error("Threw in newly mounted dehydrated component. This is likely a bug in React. Please file an issue.");Ul()}return e=t.flags,e&65536?(t.flags=e&-65537|128,(t.mode&Ve)!==ke&&Ii(t),t):null;case 19:return le(Ct,t),null;case 4:return U(t),null;case 10:return ho(t.type,t),null;case 22:case 23:return _n(t),Bf(t),e!==null&&le(nr,t),e=t.flags,e&65536?(t.flags=e&-65537|128,(t.mode&Ve)!==ke&&Ii(t),t):null;case 24:return ho(Mt,t),null;case 25:return null;default:return null}}function jy(e,t){switch(Rf(t),t.tag){case 3:ho(Mt,t),U(t);break;case 26:case 27:case 5:ye(t);break;case 4:U(t);break;case 31:t.memoizedState!==null&&_n(t);break;case 13:_n(t);break;case 19:le(Ct,t);break;case 10:ho(t.type,t);break;case 22:case 23:_n(t),Bf(t),e!==null&&le(nr,t);break;case 24:ho(Mt,t)}}function za(e){return(e.mode&Ve)!==ke}function Hy(e,t){za(e)?(Ha(),is(t,e),ja()):is(t,e)}function km(e,t,n){za(e)?(Ha(),Hr(n,e,t),ja()):Hr(n,e,t)}function is(e,t){try{var n=t.updateQueue,a=n!==null?n.lastEffect:null;if(a!==null){var o=a.next;n=o;do{if((n.tag&e)===e&&(a=void 0,(e&mn)!==cd&&(Ei=!0),a=ae(t,xT,n),(e&mn)!==cd&&(Ei=!1),a!==void 0&&typeof a!="function")){var l=void 0;l=(n.tag&Un)!==0?"useLayoutEffect":(n.tag&mn)!==0?"useInsertionEffect":"useEffect";var i=void 0;i=a===null?" You returned null. If your effect does not require clean up, return undefined (or nothing).":typeof a.then=="function"?`
It looks like you wrote `+l+`(async () => ...) or returned a Promise. Instead, write the async function inside your effect and call it immediately:
`+l+`(() => {
async function fetchData() {
// You can await here
const response = await MyAPI.getData(someId);
// ...
}
fetchData();
}, [someId]); // Or [] if effect doesn't need props or state
Learn more about data fetching with Hooks: https://react.dev/link/hooks-data-fetching`:" You returned: "+a,ae(t,function(c,m){console.error("%s must not return anything besides a function, which is used for clean-up.%s",c,m)},l,i)}n=n.next}while(n!==o)}}catch(c){Ke(t,t.return,c)}}function Hr(e,t,n){try{var a=t.updateQueue,o=a!==null?a.lastEffect:null;if(o!==null){var l=o.next;a=l;do{if((a.tag&e)===e){var i=a.inst,c=i.destroy;c!==void 0&&(i.destroy=void 0,(e&mn)!==cd&&(Ei=!0),o=t,ae(o,NT,o,n,c),(e&mn)!==cd&&(Ei=!1))}a=a.next}while(a!==l)}}catch(m){Ke(t,t.return,m)}}function zy(e,t){za(e)?(Ha(),is(t,e),ja()):is(t,e)}function Om(e,t,n){za(e)?(Ha(),Hr(n,e,t),ja()):Hr(n,e,t)}function Py(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;e.type.defaultProps||"ref"in e.memoizedProps||bi||(n.props!==e.memoizedProps&&console.error("Expected %s props to match memoized props before processing the update queue. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.",W(e)||"instance"),n.state!==e.memoizedState&&console.error("Expected %s state to match memoized state before processing the update queue. This might either be because of a bug in React, or because a component reassigns its own `this.state`. Please file an issue.",W(e)||"instance"));try{ae(e,Ub,t,n)}catch(a){Ke(e,e.return,a)}}}function FS(e,t,n){return e.getSnapshotBeforeUpdate(t,n)}function IS(e,t){var n=t.memoizedProps,a=t.memoizedState;t=e.stateNode,e.type.defaultProps||"ref"in e.memoizedProps||bi||(t.props!==e.memoizedProps&&console.error("Expected %s props to match memoized props before getSnapshotBeforeUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.",W(e)||"instance"),t.state!==e.memoizedState&&console.error("Expected %s state to match memoized state before getSnapshotBeforeUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.state`. Please file an issue.",W(e)||"instance"));try{var o=Xl(e.type,n),l=ae(e,FS,t,o,a);n=y1,l!==void 0||n.has(e.type)||(n.add(e.type),ae(e,function(){console.error("%s.getSnapshotBeforeUpdate(): A snapshot value (or null) must be returned. You have returned undefined.",W(e))})),t.__reactInternalSnapshotBeforeUpdate=l}catch(i){Ke(e,e.return,i)}}function Vy(e,t,n){n.props=Xl(e.type,e.memoizedProps),n.state=e.memoizedState,za(e)?(Ha(),ae(e,Px,e,t,n),ja()):ae(e,Px,e,t,n)}function KS(e){var t=e.ref;if(t!==null){switch(e.tag){case 26:case 27:case 5:var n=e.stateNode;break;case 30:n=e.stateNode;break;default:n=e.stateNode}if(typeof t=="function")if(za(e))try{Ha(),e.refCleanup=t(n)}finally{ja()}else e.refCleanup=t(n);else typeof t=="string"?console.error("String refs are no longer supported."):t.hasOwnProperty("current")||console.error("Unexpected ref object provided for %s. Use either a ref-setter function or React.createRef().",W(e)),t.current=n}}function ss(e,t){try{ae(e,KS,e)}catch(n){Ke(e,t,n)}}function Pa(e,t){var n=e.ref,a=e.refCleanup;if(n!==null)if(typeof a=="function")try{if(za(e))try{Ha(),ae(e,a)}finally{ja(e)}else ae(e,a)}catch(o){Ke(e,t,o)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n=="function")try{if(za(e))try{Ha(),ae(e,n,null)}finally{ja(e)}else ae(e,n,null)}catch(o){Ke(e,t,o)}else n.current=null}function Uy(e,t,n,a){var o=e.memoizedProps,l=o.id,i=o.onCommit;o=o.onRender,t=t===null?"mount":"update",ad&&(t="nested-update"),typeof o=="function"&&o(l,t,e.actualDuration,e.treeBaseDuration,e.actualStartTime,n),typeof i=="function"&&i(l,t,a,n)}function WS(e,t,n,a){var o=e.memoizedProps;e=o.id,o=o.onPostCommit,t=t===null?"mount":"update",ad&&(t="nested-update"),typeof o=="function"&&o(e,t,a,n)}function Ly(e){var t=e.type,n=e.memoizedProps,a=e.stateNode;try{ae(e,Sw,a,t,n,e)}catch(o){Ke(e,e.return,o)}}function _m(e,t,n){try{ae(e,Aw,e.stateNode,e.type,n,t,e)}catch(a){Ke(e,e.return,a)}}function By(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&tl(e.type)||e.tag===4}function Mm(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||By(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.tag===27&&tl(e.type)||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 jm(e,t,n){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?(J0(n),(n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n).insertBefore(e,t)):(J0(n),t=n.nodeType===9?n.body:n.nodeName==="HTML"?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=uo));else if(a!==4&&(a===27&&tl(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(jm(e,t,n),e=e.sibling;e!==null;)jm(e,t,n),e=e.sibling}function bu(e,t,n){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(a!==4&&(a===27&&tl(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(bu(e,t,n),e=e.sibling;e!==null;)bu(e,t,n),e=e.sibling}function ew(e){for(var t,n=e.return;n!==null;){if(By(n)){t=n;break}n=n.return}if(t==null)throw Error("Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.");switch(t.tag){case 27:t=t.stateNode,n=Mm(e),bu(e,n,t);break;case 5:n=t.stateNode,t.flags&32&&($0(n),t.flags&=-33),t=Mm(e),bu(e,t,n);break;case 3:case 4:t=t.stateNode.containerInfo,n=Mm(e),jm(e,n,t);break;default:throw Error("Invalid host parent fiber. This error is likely caused by a bug in React. Please file an issue.")}}function Gy(e){var t=e.stateNode,n=e.memoizedProps;try{ae(e,Bw,e.type,n,t,e)}catch(a){Ke(e,e.return,a)}}function Zy(e,t){return t.tag===31?(t=t.memoizedState,e.memoizedState!==null&&t===null):t.tag===13?(e=e.memoizedState,t=t.memoizedState,e!==null&&e.dehydrated!==null&&(t===null||t.dehydrated===null)):t.tag===3?e.memoizedState.isDehydrated&&(t.flags&256)===0:!1}function tw(e,t){if(e=e.containerInfo,jp=Pd,e=lb(e),gf(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var a=n.getSelection&&n.getSelection();if(a&&a.rangeCount!==0){n=a.anchorNode;var o=a.anchorOffset,l=a.focusNode;a=a.focusOffset;try{n.nodeType,l.nodeType}catch{n=null;break e}var i=0,c=-1,m=-1,p=0,O=0,_=e,A=null;t:for(;;){for(var z;_!==n||o!==0&&_.nodeType!==3||(c=i+o),_!==l||a!==0&&_.nodeType!==3||(m=i+a),_.nodeType===3&&(i+=_.nodeValue.length),(z=_.firstChild)!==null;)A=_,_=z;for(;;){if(_===e)break t;if(A===n&&++p===o&&(c=i),A===l&&++O===a&&(m=i),(z=_.nextSibling)!==null)break;_=A,A=_.parentNode}_=z}n=c===-1||m===-1?null:{start:c,end:m}}else n=null}n=n||{start:0,end:0}}else n=null;for(Hp={focusedElem:e,selectionRange:n},Pd=!1,Jt=t;Jt!==null;)if(t=Jt,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,Jt=e;else for(;Jt!==null;){switch(e=t=Jt,n=e.alternate,o=e.flags,e.tag){case 0:if((o&4)!==0&&(e=e.updateQueue,e=e!==null?e.events:null,e!==null))for(n=0;n<e.length;n++)o=e[n],o.ref.impl=o.nextImpl;break;case 11:case 15:break;case 1:(o&1024)!==0&&n!==null&&IS(e,n);break;case 3:if((o&1024)!==0){if(e=e.stateNode.containerInfo,n=e.nodeType,n===9)eh(e);else if(n===1)switch(e.nodeName){case"HEAD":case"HTML":case"BODY":eh(e);break;default:e.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((o&1024)!==0)throw Error("This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.")}if(e=t.sibling,e!==null){e.return=t.return,Jt=e;break}Jt=t.return}}function Yy(e,t,n){var a=kn(),o=ka(),l=_a(),i=Ma(),c=n.flags;switch(n.tag){case 0:case 11:case 15:Va(e,n),c&4&&Hy(n,Un|na);break;case 1:if(Va(e,n),c&4)if(e=n.stateNode,t===null)n.type.defaultProps||"ref"in n.memoizedProps||bi||(e.props!==n.memoizedProps&&console.error("Expected %s props to match memoized props before componentDidMount. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.",W(n)||"instance"),e.state!==n.memoizedState&&console.error("Expected %s state to match memoized state before componentDidMount. This might either be because of a bug in React, or because a component reassigns its own `this.state`. Please file an issue.",W(n)||"instance")),za(n)?(Ha(),ae(n,np,n,e),ja()):ae(n,np,n,e);else{var m=Xl(n.type,t.memoizedProps);t=t.memoizedState,n.type.defaultProps||"ref"in n.memoizedProps||bi||(e.props!==n.memoizedProps&&console.error("Expected %s props to match memoized props before componentDidUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.",W(n)||"instance"),e.state!==n.memoizedState&&console.error("Expected %s state to match memoized state before componentDidUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.state`. Please file an issue.",W(n)||"instance")),za(n)?(Ha(),ae(n,jx,n,e,m,t,e.__reactInternalSnapshotBeforeUpdate),ja()):ae(n,jx,n,e,m,t,e.__reactInternalSnapshotBeforeUpdate)}c&64&&Py(n),c&512&&ss(n,n.return);break;case 3:if(t=po(),Va(e,n),c&64&&(c=n.updateQueue,c!==null)){if(m=null,n.child!==null)switch(n.child.tag){case 27:case 5:m=n.child.stateNode;break;case 1:m=n.child.stateNode}try{ae(n,Ub,c,m)}catch(O){Ke(n,n.return,O)}}e.effectDuration+=Yc(t);break;case 27:t===null&&c&4&&Gy(n);case 26:case 5:if(Va(e,n),t===null){if(c&4)Ly(n);else if(c&64){e=n.type,t=n.memoizedProps,m=n.stateNode;try{ae(n,ww,m,e,t,n)}catch(O){Ke(n,n.return,O)}}}c&512&&ss(n,n.return);break;case 12:if(c&4){c=po(),Va(e,n),e=n.stateNode,e.effectDuration+=Fi(c);try{ae(n,Uy,n,t,dl,e.effectDuration)}catch(O){Ke(n,n.return,O)}}else Va(e,n);break;case 31:Va(e,n),c&4&&$y(e,n);break;case 13:Va(e,n),c&4&&Jy(e,n),c&64&&(e=n.memoizedState,e!==null&&(e=e.dehydrated,e!==null&&(c=uw.bind(null,n),Pw(e,c))));break;case 22:if(c=n.memoizedState!==null||_o,!c){t=t!==null&&t.memoizedState!==null||Pt,m=_o;var p=Pt;_o=c,(Pt=t)&&!p?(Ua(e,n,(n.subtreeFlags&8772)!==0),(n.mode&Ve)!==ke&&0<=Ae&&0<=Re&&.05<Re-Ae&&jc(n,Ae,Re)):Va(e,n),_o=m,Pt=p}break;case 30:break;default:Va(e,n)}(n.mode&Ve)!==ke&&0<=Ae&&0<=Re&&((St||.05<vt)&&Ra(n,Ae,Re,vt,gt),n.alternate===null&&n.return!==null&&n.return.alternate!==null&&.05<Re-Ae&&(Zy(n.return.alternate,n.return)||Da(n,Ae,Re,"Mount"))),On(a),Oa(o),gt=l,St=i}function Xy(e){var t=e.alternate;t!==null&&(e.alternate=null,Xy(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&M(t)),e.stateNode=null,e._debugOwner=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function yo(e,t,n){for(n=n.child;n!==null;)qy(e,t,n),n=n.sibling}function qy(e,t,n){if(nn&&typeof nn.onCommitFiberUnmount=="function")try{nn.onCommitFiberUnmount($r,n)}catch(p){Xa||(Xa=!0,console.error("React instrumentation encountered an error: %o",p))}var a=kn(),o=ka(),l=_a(),i=Ma();switch(n.tag){case 26:Pt||Pa(n,t),yo(e,t,n),n.memoizedState?n.memoizedState.count--:n.stateNode&&(e=n.stateNode,e.parentNode.removeChild(e));break;case 27:Pt||Pa(n,t);var c=Vt,m=Sn;tl(n.type)&&(Vt=n.stateNode,Sn=!1),yo(e,t,n),ae(n,bs,n.stateNode),Vt=c,Sn=m;break;case 5:Pt||Pa(n,t);case 6:if(c=Vt,m=Sn,Vt=null,yo(e,t,n),Vt=c,Sn=m,Vt!==null)if(Sn)try{ae(n,Rw,Vt,n.stateNode)}catch(p){Ke(n,t,p)}else try{ae(n,Dw,Vt,n.stateNode)}catch(p){Ke(n,t,p)}break;case 18:Vt!==null&&(Sn?(e=Vt,Q0(e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e,n.stateNode),Zr(e)):Q0(Vt,n.stateNode));break;case 4:c=Vt,m=Sn,Vt=n.stateNode.containerInfo,Sn=!0,yo(e,t,n),Vt=c,Sn=m;break;case 0:case 11:case 14:case 15:Hr(mn,n,t),Pt||km(n,t,Un),yo(e,t,n);break;case 1:Pt||(Pa(n,t),c=n.stateNode,typeof c.componentWillUnmount=="function"&&Vy(n,t,c)),yo(e,t,n);break;case 21:yo(e,t,n);break;case 22:Pt=(c=Pt)||n.memoizedState!==null,yo(e,t,n),Pt=c;break;default:yo(e,t,n)}(n.mode&Ve)!==ke&&0<=Ae&&0<=Re&&(St||.05<vt)&&Ra(n,Ae,Re,vt,gt),On(a),Oa(o),gt=l,St=i}function $y(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null))){e=e.dehydrated;try{ae(t,Uw,e)}catch(n){Ke(t,t.return,n)}}}function Jy(e,t){if(t.memoizedState===null&&(e=t.alternate,e!==null&&(e=e.memoizedState,e!==null&&(e=e.dehydrated,e!==null))))try{ae(t,Lw,e)}catch(n){Ke(t,t.return,n)}}function nw(e){switch(e.tag){case 31:case 13:case 19:var t=e.stateNode;return t===null&&(t=e.stateNode=new v1),t;case 22:return e=e.stateNode,t=e._retryCache,t===null&&(t=e._retryCache=new v1),t;default:throw Error("Unexpected Suspense handler tag ("+e.tag+"). This is a bug in React.")}}function yu(e,t){var n=nw(e);t.forEach(function(a){if(!n.has(a)){if(n.add(a),qa)if(yi!==null&&vi!==null)fs(vi,yi);else throw Error("Expected finished root and lanes to be set. This is a bug in React.");var o=dw.bind(null,e,a);a.then(o,o)}})}function Nn(e,t){var n=t.deletions;if(n!==null)for(var a=0;a<n.length;a++){var o=e,l=t,i=n[a],c=kn(),m=l;e:for(;m!==null;){switch(m.tag){case 27:if(tl(m.type)){Vt=m.stateNode,Sn=!1;break e}break;case 5:Vt=m.stateNode,Sn=!1;break e;case 3:case 4:Vt=m.stateNode.containerInfo,Sn=!0;break e}m=m.return}if(Vt===null)throw Error("Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.");qy(o,l,i),Vt=null,Sn=!1,(i.mode&Ve)!==ke&&0<=Ae&&0<=Re&&.05<Re-Ae&&Da(i,Ae,Re,"Unmount"),On(c),o=i,l=o.alternate,l!==null&&(l.return=null),o.return=null}if(t.subtreeFlags&13886)for(t=t.child;t!==null;)Qy(t,e),t=t.sibling}function Qy(e,t){var n=kn(),a=ka(),o=_a(),l=Ma(),i=e.alternate,c=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:Nn(t,e),En(e),c&4&&(Hr(mn|na,e,e.return),is(mn|na,e),km(e,e.return,Un|na));break;case 1:if(Nn(t,e),En(e),c&512&&(Pt||i===null||Pa(i,i.return)),c&64&&_o&&(c=e.updateQueue,c!==null&&(i=c.callbacks,i!==null))){var m=c.shared.hiddenCallbacks;c.shared.hiddenCallbacks=m===null?i:m.concat(i)}break;case 26:if(m=ga,Nn(t,e),En(e),c&512&&(Pt||i===null||Pa(i,i.return)),c&4){var p=i!==null?i.memoizedState:null;if(c=e.memoizedState,i===null)if(c===null)if(e.stateNode===null){e:{c=e.type,i=e.memoizedProps,m=m.ownerDocument||m;t:switch(c){case"title":p=m.getElementsByTagName("title")[0],(!p||p[ws]||p[Wt]||p.namespaceURI===Qr||p.hasAttribute("itemprop"))&&(p=m.createElement(c),m.head.insertBefore(p,m.querySelector("head > title"))),Kt(p,c,i),p[Wt]=e,Q(p),c=p;break e;case"link":var O=rv("link","href",m).get(c+(i.href||""));if(O){for(var _=0;_<O.length;_++)if(p=O[_],p.getAttribute("href")===(i.href==null||i.href===""?null:i.href)&&p.getAttribute("rel")===(i.rel==null?null:i.rel)&&p.getAttribute("title")===(i.title==null?null:i.title)&&p.getAttribute("crossorigin")===(i.crossOrigin==null?null:i.crossOrigin)){O.splice(_,1);break t}}p=m.createElement(c),Kt(p,c,i),m.head.appendChild(p);break;case"meta":if(O=rv("meta","content",m).get(c+(i.content||""))){for(_=0;_<O.length;_++)if(p=O[_],Ie(i.content,"content"),p.getAttribute("content")===(i.content==null?null:""+i.content)&&p.getAttribute("name")===(i.name==null?null:i.name)&&p.getAttribute("property")===(i.property==null?null:i.property)&&p.getAttribute("http-equiv")===(i.httpEquiv==null?null:i.httpEquiv)&&p.getAttribute("charset")===(i.charSet==null?null:i.charSet)){O.splice(_,1);break t}}p=m.createElement(c),Kt(p,c,i),m.head.appendChild(p);break;default:throw Error('getNodesForType encountered a type it did not expect: "'+c+'". This is a bug in React.')}p[Wt]=e,Q(p),c=p}e.stateNode=c}else iv(m,e.type,e.stateNode);else e.stateNode=lv(m,c,e.memoizedProps);else p!==c?(p===null?i.stateNode!==null&&(i=i.stateNode,i.parentNode.removeChild(i)):p.count--,c===null?iv(m,e.type,e.stateNode):lv(m,c,e.memoizedProps)):c===null&&e.stateNode!==null&&_m(e,e.memoizedProps,i.memoizedProps)}break;case 27:Nn(t,e),En(e),c&512&&(Pt||i===null||Pa(i,i.return)),i!==null&&c&4&&_m(e,e.memoizedProps,i.memoizedProps);break;case 5:if(Nn(t,e),En(e),c&512&&(Pt||i===null||Pa(i,i.return)),e.flags&32){m=e.stateNode;try{ae(e,$0,m)}catch(ue){Ke(e,e.return,ue)}}c&4&&e.stateNode!=null&&(m=e.memoizedProps,_m(e,m,i!==null?i.memoizedProps:m)),c&1024&&(pp=!0,e.type!=="form"&&console.error("Unexpected host component type. Expected a form. This is a bug in React."));break;case 6:if(Nn(t,e),En(e),c&4){if(e.stateNode===null)throw Error("This should have a text node initialized. This error is likely caused by a bug in React. Please file an issue.");c=e.memoizedProps,i=i!==null?i.memoizedProps:c,m=e.stateNode;try{ae(e,Tw,m,i,c)}catch(ue){Ke(e,e.return,ue)}}break;case 3:if(m=po(),jd=null,p=ga,ga=Tu(t.containerInfo),Nn(t,e),ga=p,En(e),c&4&&i!==null&&i.memoizedState.isDehydrated)try{ae(e,Vw,t.containerInfo)}catch(ue){Ke(e,e.return,ue)}pp&&(pp=!1,Fy(e)),t.effectDuration+=Yc(m);break;case 4:c=ga,ga=Tu(e.stateNode.containerInfo),Nn(t,e),En(e),ga=c;break;case 12:c=po(),Nn(t,e),En(e),e.stateNode.effectDuration+=Fi(c);break;case 31:Nn(t,e),En(e),c&4&&(c=e.updateQueue,c!==null&&(e.updateQueue=null,yu(e,c)));break;case 13:Nn(t,e),En(e),e.child.flags&8192&&e.memoizedState!==null!=(i!==null&&i.memoizedState!==null)&&(vd=qt()),c&4&&(c=e.updateQueue,c!==null&&(e.updateQueue=null,yu(e,c)));break;case 22:m=e.memoizedState!==null;var A=i!==null&&i.memoizedState!==null,z=_o,te=Pt;if(_o=z||m,Pt=te||A,Nn(t,e),Pt=te,_o=z,A&&!m&&!z&&!te&&(e.mode&Ve)!==ke&&0<=Ae&&0<=Re&&.05<Re-Ae&&jc(e,Ae,Re),En(e),c&8192)e:for(t=e.stateNode,t._visibility=m?t._visibility&~Ms:t._visibility|Ms,!m||i===null||A||_o||Pt||(ql(e),(e.mode&Ve)!==ke&&0<=Ae&&0<=Re&&.05<Re-Ae&&Da(e,Ae,Re,"Disconnect")),i=null,t=e;;){if(t.tag===5||t.tag===26){if(i===null){A=i=t;try{p=A.stateNode,m?ae(A,kw,p):ae(A,Mw,A.stateNode,A.memoizedProps)}catch(ue){Ke(A,A.return,ue)}}}else if(t.tag===6){if(i===null){A=t;try{O=A.stateNode,m?ae(A,Ow,O):ae(A,jw,O,A.memoizedProps)}catch(ue){Ke(A,A.return,ue)}}}else if(t.tag===18){if(i===null){A=t;try{_=A.stateNode,m?ae(A,Cw,_):ae(A,_w,A.stateNode)}catch(ue){Ke(A,A.return,ue)}}}else if((t.tag!==22&&t.tag!==23||t.memoizedState===null||t===e)&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break e;for(;t.sibling===null;){if(t.return===null||t.return===e)break e;i===t&&(i=null),t=t.return}i===t&&(i=null),t.sibling.return=t.return,t=t.sibling}c&4&&(c=e.updateQueue,c!==null&&(i=c.retryQueue,i!==null&&(c.retryQueue=null,yu(e,i))));break;case 19:Nn(t,e),En(e),c&4&&(c=e.updateQueue,c!==null&&(e.updateQueue=null,yu(e,c)));break;case 30:break;case 21:break;default:Nn(t,e),En(e)}(e.mode&Ve)!==ke&&0<=Ae&&0<=Re&&((St||.05<vt)&&Ra(e,Ae,Re,vt,gt),e.alternate===null&&e.return!==null&&e.return.alternate!==null&&.05<Re-Ae&&(Zy(e.return.alternate,e.return)||Da(e,Ae,Re,"Mount"))),On(n),Oa(a),gt=o,St=l}function En(e){var t=e.flags;if(t&2){try{ae(e,ew,e)}catch(n){Ke(e,e.return,n)}e.flags&=-3}t&4096&&(e.flags&=-4097)}function Fy(e){if(e.subtreeFlags&1024)for(e=e.child;e!==null;){var t=e;Fy(t),t.tag===5&&t.flags&1024&&t.stateNode.reset(),e=e.sibling}}function Va(e,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)Yy(e,t.alternate,t),t=t.sibling}function Iy(e){var t=kn(),n=ka(),a=_a(),o=Ma();switch(e.tag){case 0:case 11:case 14:case 15:km(e,e.return,Un),ql(e);break;case 1:Pa(e,e.return);var l=e.stateNode;typeof l.componentWillUnmount=="function"&&Vy(e,e.return,l),ql(e);break;case 27:ae(e,bs,e.stateNode);case 26:case 5:Pa(e,e.return),ql(e);break;case 22:e.memoizedState===null&&ql(e);break;case 30:ql(e);break;default:ql(e)}(e.mode&Ve)!==ke&&0<=Ae&&0<=Re&&(St||.05<vt)&&Ra(e,Ae,Re,vt,gt),On(t),Oa(n),gt=a,St=o}function ql(e){for(e=e.child;e!==null;)Iy(e),e=e.sibling}function Ky(e,t,n,a){var o=kn(),l=ka(),i=_a(),c=Ma(),m=n.flags;switch(n.tag){case 0:case 11:case 15:Ua(e,n,a),Hy(n,Un);break;case 1:if(Ua(e,n,a),t=n.stateNode,typeof t.componentDidMount=="function"&&ae(n,np,n,t),t=n.updateQueue,t!==null){e=n.stateNode;try{ae(n,VS,t,e)}catch(p){Ke(n,n.return,p)}}a&&m&64&&Py(n),ss(n,n.return);break;case 27:Gy(n);case 26:case 5:Ua(e,n,a),a&&t===null&&m&4&&Ly(n),ss(n,n.return);break;case 12:if(a&&m&4){m=po(),Ua(e,n,a),a=n.stateNode,a.effectDuration+=Fi(m);try{ae(n,Uy,n,t,dl,a.effectDuration)}catch(p){Ke(n,n.return,p)}}else Ua(e,n,a);break;case 31:Ua(e,n,a),a&&m&4&&$y(e,n);break;case 13:Ua(e,n,a),a&&m&4&&Jy(e,n);break;case 22:n.memoizedState===null&&Ua(e,n,a),ss(n,n.return);break;case 30:break;default:Ua(e,n,a)}(n.mode&Ve)!==ke&&0<=Ae&&0<=Re&&(St||.05<vt)&&Ra(n,Ae,Re,vt,gt),On(o),Oa(l),gt=i,St=c}function Ua(e,t,n){for(n=n&&(t.subtreeFlags&8772)!==0,t=t.child;t!==null;)Ky(e,t.alternate,t,n),t=t.sibling}function Hm(e,t){var n=null;e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),e=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(e=t.memoizedState.cachePool.pool),e!==n&&(e!=null&&Bl(e),n!=null&&Qi(n))}function zm(e,t){e=null,t.alternate!==null&&(e=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==e&&(Bl(t),e!=null&&Qi(e))}function da(e,t,n,a,o){if(t.subtreeFlags&10256||t.actualDuration!==0&&(t.alternate===null||t.alternate.child!==t.child))for(t=t.child;t!==null;){var l=t.sibling;Wy(e,t,n,a,l!==null?l.actualStartTime:o),t=l}}function Wy(e,t,n,a,o){var l=kn(),i=ka(),c=_a(),m=Ma(),p=il,O=t.flags;switch(t.tag){case 0:case 11:case 15:(t.mode&Ve)!==ke&&0<t.actualStartTime&&(t.flags&1)!==0&&Hc(t,t.actualStartTime,o,Gt,n),da(e,t,n,a,o),O&2048&&zy(t,hn|na);break;case 1:(t.mode&Ve)!==ke&&0<t.actualStartTime&&((t.flags&128)!==0?yf(t,t.actualStartTime,o,[]):(t.flags&1)!==0&&Hc(t,t.actualStartTime,o,Gt,n)),da(e,t,n,a,o);break;case 3:var _=po(),A=Gt;Gt=t.alternate!==null&&t.alternate.memoizedState.isDehydrated&&(t.flags&256)===0,da(e,t,n,a,o),Gt=A,O&2048&&(n=null,t.alternate!==null&&(n=t.alternate.memoizedState.cache),a=t.memoizedState.cache,a!==n&&(Bl(a),n!=null&&Qi(n))),e.passiveEffectDuration+=Yc(_);break;case 12:if(O&2048){O=po(),da(e,t,n,a,o),e=t.stateNode,e.passiveEffectDuration+=Fi(O);try{ae(t,WS,t,t.alternate,dl,e.passiveEffectDuration)}catch(z){Ke(t,t.return,z)}}else da(e,t,n,a,o);break;case 31:O=Gt,_=t.alternate!==null?t.alternate.memoizedState:null,A=t.memoizedState,_!==null&&A===null?(A=t.deletions,A!==null&&0<A.length&&A[0].tag===18?(Gt=!1,_=_.hydrationErrors,_!==null&&yf(t,t.actualStartTime,o,_)):Gt=!0):Gt=!1,da(e,t,n,a,o),Gt=O;break;case 13:O=Gt,_=t.alternate!==null?t.alternate.memoizedState:null,A=t.memoizedState,_===null||_.dehydrated===null||A!==null&&A.dehydrated!==null?Gt=!1:(A=t.deletions,A!==null&&0<A.length&&A[0].tag===18?(Gt=!1,_=_.hydrationErrors,_!==null&&yf(t,t.actualStartTime,o,_)):Gt=!0),da(e,t,n,a,o),Gt=O;break;case 23:break;case 22:A=t.stateNode,_=t.alternate,t.memoizedState!==null?A._visibility&Eo?da(e,t,n,a,o):cs(e,t,n,a,o):A._visibility&Eo?da(e,t,n,a,o):(A._visibility|=Eo,zr(e,t,n,a,(t.subtreeFlags&10256)!==0||t.actualDuration!==0&&(t.alternate===null||t.alternate.child!==t.child),o),(t.mode&Ve)===ke||Gt||(e=t.actualStartTime,0<=e&&.05<o-e&&jc(t,e,o),0<=Ae&&0<=Re&&.05<Re-Ae&&jc(t,Ae,Re))),O&2048&&Hm(_,t);break;case 24:da(e,t,n,a,o),O&2048&&zm(t.alternate,t);break;default:da(e,t,n,a,o)}(t.mode&Ve)!==ke&&((e=!Gt&&t.alternate===null&&t.return!==null&&t.return.alternate!==null)&&(n=t.actualStartTime,0<=n&&.05<o-n&&Da(t,n,o,"Mount")),0<=Ae&&0<=Re&&((St||.05<vt)&&Ra(t,Ae,Re,vt,gt),e&&.05<Re-Ae&&Da(t,Ae,Re,"Mount"))),On(l),Oa(i),gt=c,St=m,il=p}function zr(e,t,n,a,o,l){for(o=o&&((t.subtreeFlags&10256)!==0||t.actualDuration!==0&&(t.alternate===null||t.alternate.child!==t.child)),t=t.child;t!==null;){var i=t.sibling;e0(e,t,n,a,o,i!==null?i.actualStartTime:l),t=i}}function e0(e,t,n,a,o,l){var i=kn(),c=ka(),m=_a(),p=Ma(),O=il;o&&(t.mode&Ve)!==ke&&0<t.actualStartTime&&(t.flags&1)!==0&&Hc(t,t.actualStartTime,l,Gt,n);var _=t.flags;switch(t.tag){case 0:case 11:case 15:zr(e,t,n,a,o,l),zy(t,hn);break;case 23:break;case 22:var A=t.stateNode;t.memoizedState!==null?A._visibility&Eo?zr(e,t,n,a,o,l):cs(e,t,n,a,l):(A._visibility|=Eo,zr(e,t,n,a,o,l)),o&&_&2048&&Hm(t.alternate,t);break;case 24:zr(e,t,n,a,o,l),o&&_&2048&&zm(t.alternate,t);break;default:zr(e,t,n,a,o,l)}(t.mode&Ve)!==ke&&0<=Ae&&0<=Re&&(St||.05<vt)&&Ra(t,Ae,Re,vt,gt),On(i),Oa(c),gt=m,St=p,il=O}function cs(e,t,n,a,o){if(t.subtreeFlags&10256||t.actualDuration!==0&&(t.alternate===null||t.alternate.child!==t.child))for(var l=t.child;l!==null;){t=l.sibling;var i=e,c=n,m=a,p=t!==null?t.actualStartTime:o,O=il;(l.mode&Ve)!==ke&&0<l.actualStartTime&&(l.flags&1)!==0&&Hc(l,l.actualStartTime,p,Gt,c);var _=l.flags;switch(l.tag){case 22:cs(i,l,c,m,p),_&2048&&Hm(l.alternate,l);break;case 24:cs(i,l,c,m,p),_&2048&&zm(l.alternate,l);break;default:cs(i,l,c,m,p)}il=O,l=t}}function Pr(e,t,n){if(e.subtreeFlags&Ws)for(e=e.child;e!==null;)t0(e,t,n),e=e.sibling}function t0(e,t,n){switch(e.tag){case 26:Pr(e,t,n),e.flags&Ws&&e.memoizedState!==null&&Yw(n,ga,e.memoizedState,e.memoizedProps);break;case 5:Pr(e,t,n);break;case 3:case 4:var a=ga;ga=Tu(e.stateNode.containerInfo),Pr(e,t,n),ga=a;break;case 22:e.memoizedState===null&&(a=e.alternate,a!==null&&a.memoizedState!==null?(a=Ws,Ws=16777216,Pr(e,t,n),Ws=a):Pr(e,t,n));break;default:Pr(e,t,n)}}function n0(e){var t=e.alternate;if(t!==null&&(e=t.child,e!==null)){t.child=null;do t=e.sibling,e.sibling=null,e=t;while(e!==null)}}function us(e){var t=e.deletions;if((e.flags&16)!==0){if(t!==null)for(var n=0;n<t.length;n++){var a=t[n],o=kn();Jt=a,l0(a,e),(a.mode&Ve)!==ke&&0<=Ae&&0<=Re&&.05<Re-Ae&&Da(a,Ae,Re,"Unmount"),On(o)}n0(e)}if(e.subtreeFlags&10256)for(e=e.child;e!==null;)a0(e),e=e.sibling}function a0(e){var t=kn(),n=ka(),a=_a(),o=Ma();switch(e.tag){case 0:case 11:case 15:us(e),e.flags&2048&&Om(e,e.return,hn|na);break;case 3:var l=po();us(e),e.stateNode.passiveEffectDuration+=Yc(l);break;case 12:l=po(),us(e),e.stateNode.passiveEffectDuration+=Fi(l);break;case 22:l=e.stateNode,e.memoizedState!==null&&l._visibility&Eo&&(e.return===null||e.return.tag!==13)?(l._visibility&=~Eo,vu(e),(e.mode&Ve)!==ke&&0<=Ae&&0<=Re&&.05<Re-Ae&&Da(e,Ae,Re,"Disconnect")):us(e);break;default:us(e)}(e.mode&Ve)!==ke&&0<=Ae&&0<=Re&&(St||.05<vt)&&Ra(e,Ae,Re,vt,gt),On(t),Oa(n),St=o,gt=a}function vu(e){var t=e.deletions;if((e.flags&16)!==0){if(t!==null)for(var n=0;n<t.length;n++){var a=t[n],o=kn();Jt=a,l0(a,e),(a.mode&Ve)!==ke&&0<=Ae&&0<=Re&&.05<Re-Ae&&Da(a,Ae,Re,"Unmount"),On(o)}n0(e)}for(e=e.child;e!==null;)o0(e),e=e.sibling}function o0(e){var t=kn(),n=ka(),a=_a(),o=Ma();switch(e.tag){case 0:case 11:case 15:Om(e,e.return,hn),vu(e);break;case 22:var l=e.stateNode;l._visibility&Eo&&(l._visibility&=~Eo,vu(e));break;default:vu(e)}(e.mode&Ve)!==ke&&0<=Ae&&0<=Re&&(St||.05<vt)&&Ra(e,Ae,Re,vt,gt),On(t),Oa(n),St=o,gt=a}function l0(e,t){for(;Jt!==null;){var n=Jt,a=n,o=t,l=kn(),i=ka(),c=_a(),m=Ma();switch(a.tag){case 0:case 11:case 15:Om(a,o,hn);break;case 23:case 22:a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(o=a.memoizedState.cachePool.pool,o!=null&&Bl(o));break;case 24:Qi(a.memoizedState.cache)}if((a.mode&Ve)!==ke&&0<=Ae&&0<=Re&&(St||.05<vt)&&Ra(a,Ae,Re,vt,gt),On(l),Oa(i),St=m,gt=c,a=n.child,a!==null)a.return=n,Jt=a;else e:for(n=e;Jt!==null;){if(a=Jt,l=a.sibling,i=a.return,Xy(a),a===n){Jt=null;break e}if(l!==null){l.return=i,Jt=l;break e}Jt=i}}}function aw(){TT.forEach(function(e){return e()})}function r0(){var e=typeof IS_REACT_ACT_ENVIRONMENT<"u"?IS_REACT_ACT_ENVIRONMENT:void 0;return e||L.actQueue===null||console.error("The current testing environment is not configured to support act(...)"),e}function Mn(e){if((Fe&Zt)!==Qt&&Le!==0)return Le&-Le;var t=L.T;return t!==null?(t._updatedFibers||(t._updatedFibers=new Set),t._updatedFibers.add(e),Ym()):Aa()}function i0(){if(An===0)if((Le&536870912)===0||Xe){var e=Vu;Vu<<=1,(Vu&3932160)===0&&(Vu=262144),An=e}else An=536870912;return e=Vn.current,e!==null&&(e.flags|=32),An}function Et(e,t,n){if(Ei&&console.error("useInsertionEffect must not schedule updates."),Tp&&(Sd=!0),(e===ct&&(at===sr||at===cr)||e.cancelPendingCommit!==null)&&(Ur(e,0),Wo(e,Le,An,!1)),ia(e,n),(Fe&Zt)!==Qt&&e===ct){if(Ya)switch(t.tag){case 0:case 11:case 15:e=Be&&W(Be)||"Unknown",j1.has(e)||(j1.add(e),t=W(t)||"Unknown",console.error("Cannot update a component (`%s`) while rendering a different component (`%s`). To locate the bad setState() call inside `%s`, follow the stack trace as described in https://react.dev/link/setstate-in-render",t,e,e));break;case 1:M1||(console.error("Cannot update during an existing state transition (such as within `render`). Render methods should be a pure function of props and state."),M1=!0)}}else qa&&lo(e,t,n),mw(t),e===ct&&((Fe&Zt)===Qt&&(vl|=n),xt===gl&&Wo(e,Le,An,!1)),La(e)}function s0(e,t,n){if((Fe&(Zt|Ln))!==Qt)throw Error("Should not already be working.");if(Le!==0&&Be!==null){var a=Be,o=qt();switch(Tx){case nc:case sr:var l=Us;ft&&((a=a._debugTask)?a.run(console.timeStamp.bind(console,"Suspended",l,o,Jn,void 0,"primary-light")):console.timeStamp("Suspended",l,o,Jn,void 0,"primary-light"));break;case cr:l=Us,ft&&((a=a._debugTask)?a.run(console.timeStamp.bind(console,"Action",l,o,Jn,void 0,"primary-light")):console.timeStamp("Action",l,o,Jn,void 0,"primary-light"));break;default:ft&&(a=o-Us,3>a||console.timeStamp("Blocked",Us,o,Jn,void 0,5>a?"primary-light":10>a?"primary":100>a?"primary-dark":"error"))}}l=(n=!n&&(t&127)===0&&(t&e.expiredLanes)===0||Ea(e,t))?lw(e,t):Vm(e,t,!0);var i=n;do{if(l===Mo){xi&&!n&&Wo(e,t,0,!1),t=at,Us=jt(),Tx=t;break}else{if(a=qt(),o=e.current.alternate,i&&!ow(o)){ca(t),o=$t,l=a,!ft||l<=o||(Dt?Dt.run(console.timeStamp.bind(console,"Teared Render",o,l,Qe,$e,"error")):console.timeStamp("Teared Render",o,l,Qe,$e,"error")),$l(t,a),l=Vm(e,t,!1),i=!1;continue}if(l===ir){if(i=t,e.errorRecoveryDisabledLanes&i)var c=0;else c=e.pendingLanes&-536870913,c=c!==0?c:c&536870912?536870912:0;if(c!==0){ca(t),vf($t,a,t,Dt),$l(t,a),t=c;e:{a=e,l=i,i=oc;var m=a.current.memoizedState.isDehydrated;if(m&&(Ur(a,c).flags|=256),c=Vm(a,c,!1),c!==ir){if(yp&&!m){a.errorRecoveryDisabledLanes|=l,vl|=l,l=gl;break e}a=pn,pn=i,a!==null&&(pn===null?pn=a:pn.push.apply(pn,a))}l=c}if(i=!1,l!==ir)continue;a=qt()}}if(l===tc){ca(t),vf($t,a,t,Dt),$l(t,a),Ur(e,0),Wo(e,t,0,!0);break}e:{switch(n=e,l){case Mo:case tc:throw Error("Root did not complete. This is a bug in React.");case gl:if((t&4194048)!==t)break;case pd:ca(t),sb($t,a,t,Dt),$l(t,a),o=t,(o&127)!==0?ed=a:(o&4194048)!==0&&(td=a),Wo(n,t,An,!bl);break e;case ir:pn=null;break;case hd:case x1:break;default:throw Error("Unknown root exit status.")}if(L.actQueue!==null)Um(n,o,t,pn,lc,yd,An,vl,ur,l,null,null,$t,a);else{if((t&62914560)===t&&(i=vd+S1-qt(),10<i)){if(Wo(n,t,An,!bl),bn(n,0,!0)!==0)break e;ba=t,n.timeoutHandle=G1(c0.bind(null,n,o,pn,lc,yd,t,An,vl,ur,bl,l,"Throttled",$t,a),i);break e}c0(n,o,pn,lc,yd,t,An,vl,ur,bl,l,null,$t,a)}}}break}while(!0);La(e)}function c0(e,t,n,a,o,l,i,c,m,p,O,_,A,z){e.timeoutHandle=pr;var te=t.subtreeFlags,ue=null;if((te&8192||(te&16785408)===16785408)&&(ue={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:uo},t0(t,l,ue),te=(l&62914560)===l?vd-qt():(l&4194048)===l?E1-qt():0,te=Xw(ue,te),te!==null)){ba=l,e.cancelPendingCommit=te(Um.bind(null,e,t,l,n,a,o,i,c,m,O,ue,ue.waitingForViewTransition?"Waiting for the previous Animation":0<ue.count?0<ue.imgCount?"Suspended on CSS and Images":"Suspended on CSS":ue.imgCount===1?"Suspended on an Image":0<ue.imgCount?"Suspended on Images":null,A,z)),Wo(e,l,i,!p);return}Um(e,t,l,n,a,o,i,c,m,O,ue,_,A,z)}function ow(e){for(var t=e;;){var n=t.tag;if((n===0||n===11||n===15)&&t.flags&16384&&(n=t.updateQueue,n!==null&&(n=n.stores,n!==null)))for(var a=0;a<n.length;a++){var o=n[a],l=o.getSnapshot;o=o.value;try{if(!dn(l(),o))return!1}catch{return!1}}if(n=t.child,t.subtreeFlags&16384&&n!==null)n.return=t,t=n;else{if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function Wo(e,t,n,a){t&=~vp,t&=~vl,e.suspendedLanes|=t,e.pingedLanes&=~t,a&&(e.warmLanes|=t),a=e.expirationTimes;for(var o=t;0<o;){var l=31-sn(o),i=1<<l;a[l]=-1,o&=~i}n!==0&&Yn(e,n,t)}function Vr(){return(Fe&(Zt|Ln))===Qt?(ms(0),!1):!0}function Pm(){if(Be!==null){if(at===wn)var e=Be.return;else e=Be,Bc(),Jf(e),di=null,Js=0,e=Be;for(;e!==null;)jy(e.alternate,e),e=e.return;Be=null}}function $l(e,t){(e&127)!==0&&(Kl=t),(e&4194048)!==0&&(Do=t),(e&62914560)!==0&&(wx=t),(e&2080374784)!==0&&(Ax=t)}function Ur(e,t){ft&&(console.timeStamp("Blocking Track",.003,.003,"Blocking",$e,"primary-light"),console.timeStamp("Transition Track",.003,.003,"Transition",$e,"primary-light"),console.timeStamp("Suspense Track",.003,.003,"Suspense",$e,"primary-light"),console.timeStamp("Idle Track",.003,.003,"Idle",$e,"primary-light"));var n=$t;if($t=jt(),Le!==0&&0<n){if(ca(Le),xt===hd||xt===gl)sb(n,$t,t,Dt);else{var a=$t,o=Dt;if(ft&&!(a<=n)){var l=(t&738197653)===t?"tertiary-dark":"primary-dark",i=(t&536870912)===t?"Prewarm":(t&201326741)===t?"Interrupted Hydration":"Interrupted Render";o?o.run(console.timeStamp.bind(console,i,n,a,Qe,$e,l)):console.timeStamp(i,n,a,Qe,$e,l)}}$l(Le,$t)}if(n=Dt,Dt=null,(t&127)!==0){Dt=zs,o=0<=Fa&&Fa<Kl?Kl:Fa,a=0<=Wl&&Wl<Kl?Kl:Wl,l=0<=a?a:0<=o?o:$t,0<=ed?(ca(2),cb(ed,l,t,n)):nd&127,n=o;var c=a,m=Ps,p=0<si,O=fl===Hs,_=fl===Wu;if(o=$t,a=zs,l=Ih,i=Kh,ft){if(Qe="Blocking",0<n?n>o&&(n=o):n=o,0<c?c>n&&(c=n):c=n,m!==null&&n>c){var A=p?"secondary-light":"warning";a?a.run(console.timeStamp.bind(console,p?"Consecutive":"Event: "+m,c,n,Qe,$e,A)):console.timeStamp(p?"Consecutive":"Event: "+m,c,n,Qe,$e,A)}o>n&&(c=O?"error":(t&738197653)===t?"tertiary-light":"primary-light",O=_?"Promise Resolved":O?"Cascading Update":5<o-n?"Update Blocked":"Update",_=[],i!=null&&_.push(["Component name",i]),l!=null&&_.push(["Method name",l]),n={start:n,end:o,detail:{devtools:{properties:_,track:Qe,trackGroup:$e,color:c}}},a?a.run(performance.measure.bind(performance,O,n)):performance.measure(O,n))}Fa=-1.1,fl=0,Kh=Ih=null,ed=-1.1,si=Wl,Wl=-1.1,Kl=jt()}if((t&4194048)!==0&&(Dt=Vs,o=0<=Ro&&Ro<Do?Do:Ro,n=0<=ea&&ea<Do?Do:ea,a=0<=ml&&ml<Do?Do:ml,l=0<=a?a:0<=n?n:$t,0<=td?(ca(256),cb(td,l,t,Dt)):nd&4194048,_=a,c=er,m=0<hl,p=Wh===Wu,l=$t,a=Vs,i=Ex,O=Sx,ft&&(Qe="Transition",0<n?n>l&&(n=l):n=l,0<o?o>n&&(o=n):o=n,0<_?_>o&&(_=o):_=o,o>_&&c!==null&&(A=m?"secondary-light":"warning",a?a.run(console.timeStamp.bind(console,m?"Consecutive":"Event: "+c,_,o,Qe,$e,A)):console.timeStamp(m?"Consecutive":"Event: "+c,_,o,Qe,$e,A)),n>o&&(a?a.run(console.timeStamp.bind(console,"Action",o,n,Qe,$e,"primary-dark")):console.timeStamp("Action",o,n,Qe,$e,"primary-dark")),l>n&&(o=p?"Promise Resolved":5<l-n?"Update Blocked":"Update",_=[],O!=null&&_.push(["Component name",O]),i!=null&&_.push(["Method name",i]),n={start:n,end:l,detail:{devtools:{properties:_,track:Qe,trackGroup:$e,color:"primary-light"}}},a?a.run(performance.measure.bind(performance,o,n)):performance.measure(o,n))),ea=Ro=-1.1,Wh=0,td=-1.1,hl=ml,ml=-1.1,Do=jt()),(t&62914560)!==0&&(nd&62914560)!==0&&(ca(4194304),xf(wx,$t)),(t&2080374784)!==0&&(nd&2080374784)!==0&&(ca(268435456),xf(Ax,$t)),n=e.timeoutHandle,n!==pr&&(e.timeoutHandle=pr,UT(n)),n=e.cancelPendingCommit,n!==null&&(e.cancelPendingCommit=null,n()),ba=0,Pm(),ct=e,Be=n=fo(e.current,null),Le=t,at=wn,Bn=null,bl=!1,xi=Ea(e,t),yp=!1,xt=Mo,ur=An=vp=vl=yl=0,pn=oc=null,yd=!1,(t&8)!==0&&(t|=t&32),a=e.entangledLanes,a!==0)for(e=e.entanglements,a&=t;0<a;)o=31-sn(a),l=1<<o,t|=e[o],a&=~l;return Ka=t,zc(),e=gx(),1e3<e-px&&(L.recentlyCreatedOwnerStacks=0,px=e),ha.discardPendingWarnings(),n}function u0(e,t){_e=null,L.H=Ks,L.getCurrentStack=null,Ya=!1,zn=null,t===ui||t===rd?(t=Ob(),at=nc):t===ap?(t=Ob(),at=N1):at=t===mp?bp:t!==null&&typeof t=="object"&&typeof t.then=="function"?ac:gd,Bn=t;var n=Be;n===null?(xt=tc,fu(e,Cn(t,e.current))):n.mode&Ve&&Hf(n)}function d0(){var e=Vn.current;return e===null?!0:(Le&4194048)===Le?ta===null:(Le&62914560)===Le||(Le&536870912)!==0?e===ta:!1}function f0(){var e=L.H;return L.H=Ks,e===null?Ks:e}function m0(){var e=L.A;return L.A=AT,e}function xu(e){Dt===null&&(Dt=e._debugTask==null?null:e._debugTask)}function Nu(){xt=gl,bl||(Le&4194048)!==Le&&Vn.current!==null||(xi=!0),(yl&134217727)===0&&(vl&134217727)===0||ct===null||Wo(ct,Le,An,!1)}function Vm(e,t,n){var a=Fe;Fe|=Zt;var o=f0(),l=m0();if(ct!==e||Le!==t){if(qa){var i=e.memoizedUpdaters;0<i.size&&(fs(e,Le),i.clear()),ro(e,t)}lc=null,Ur(e,t)}t=!1,i=xt;e:do try{if(at!==wn&&Be!==null){var c=Be,m=Bn;switch(at){case bp:Pm(),i=pd;break e;case nc:case sr:case cr:case ac:Vn.current===null&&(t=!0);var p=at;if(at=wn,Bn=null,Lr(e,c,m,p),n&&xi){i=Mo;break e}break;default:p=at,at=wn,Bn=null,Lr(e,c,m,p)}}h0(),i=xt;break}catch(O){u0(e,O)}while(!0);return t&&e.shellSuspendCounter++,Bc(),Fe=a,L.H=o,L.A=l,Be===null&&(ct=null,Le=0,zc()),i}function h0(){for(;Be!==null;)p0(Be)}function lw(e,t){var n=Fe;Fe|=Zt;var a=f0(),o=m0();if(ct!==e||Le!==t){if(qa){var l=e.memoizedUpdaters;0<l.size&&(fs(e,Le),l.clear()),ro(e,t)}lc=null,xd=qt()+w1,Ur(e,t)}else xi=Ea(e,t);e:do try{if(at!==wn&&Be!==null)t:switch(t=Be,l=Bn,at){case gd:at=wn,Bn=null,Lr(e,t,l,gd);break;case sr:case cr:if(Cb(l)){at=wn,Bn=null,g0(t);break}t=function(){at!==sr&&at!==cr||ct!==e||(at=bd),La(e)},l.then(t,t);break e;case nc:at=bd;break e;case N1:at=gp;break e;case bd:Cb(l)?(at=wn,Bn=null,g0(t)):(at=wn,Bn=null,Lr(e,t,l,bd));break;case gp:var i=null;switch(Be.tag){case 26:i=Be.memoizedState;case 5:case 27:var c=Be;if(i?sv(i):c.stateNode.complete){at=wn,Bn=null;var m=c.sibling;if(m!==null)Be=m;else{var p=c.return;p!==null?(Be=p,Eu(p)):Be=null}break t}break;default:console.error("Unexpected type of fiber triggered a suspensey commit. This is a bug in React.")}at=wn,Bn=null,Lr(e,t,l,gp);break;case ac:at=wn,Bn=null,Lr(e,t,l,ac);break;case bp:Pm(),xt=pd;break e;default:throw Error("Unexpected SuspendedReason. This is a bug in React.")}L.actQueue!==null?h0():rw();break}catch(O){u0(e,O)}while(!0);return Bc(),L.H=a,L.A=o,Fe=n,Be!==null?Mo:(ct=null,Le=0,zc(),xt)}function rw(){for(;Be!==null&&!lA();)p0(Be)}function p0(e){var t=e.alternate;(e.mode&Ve)!==ke?(jf(e),t=ae(e,Rm,t,e,Ka),Hf(e)):t=ae(e,Rm,t,e,Ka),e.memoizedProps=e.pendingProps,t===null?Eu(e):Be=t}function g0(e){var t=ae(e,iw,e);e.memoizedProps=e.pendingProps,t===null?Eu(e):Be=t}function iw(e){var t=e.alternate,n=(e.mode&Ve)!==ke;switch(n&&jf(e),e.tag){case 15:case 0:t=Dy(t,e,e.pendingProps,e.type,void 0,Le);break;case 11:t=Dy(t,e,e.pendingProps,e.type.render,e.ref,Le);break;case 5:Jf(e);default:jy(t,e),e=Be=pb(e,Ka),t=Rm(t,e,Ka)}return n&&Hf(e),t}function Lr(e,t,n,a){Bc(),Jf(t),di=null,Js=0;var o=t.return;try{if(XS(e,o,t,n,Le)){xt=tc,fu(e,Cn(n,e.current)),Be=null;return}}catch(l){if(o!==null)throw Be=o,l;xt=tc,fu(e,Cn(n,e.current)),Be=null;return}t.flags&32768?(Xe||a===gd?e=!0:xi||(Le&536870912)!==0?e=!1:(bl=e=!0,(a===sr||a===cr||a===nc||a===ac)&&(a=Vn.current,a!==null&&a.tag===13&&(a.flags|=16384))),b0(t,e)):Eu(t)}function Eu(e){var t=e;do{if((t.flags&32768)!==0){b0(t,bl);return}var n=t.alternate;if(e=t.return,jf(t),n=ae(t,JS,n,t,Ka),(t.mode&Ve)!==ke&&wb(t),n!==null){Be=n;return}if(t=t.sibling,t!==null){Be=t;return}Be=t=e}while(t!==null);xt===Mo&&(xt=x1)}function b0(e,t){do{var n=QS(e.alternate,e);if(n!==null){n.flags&=32767,Be=n;return}if((e.mode&Ve)!==ke){wb(e),n=e.actualDuration;for(var a=e.child;a!==null;)n+=a.actualDuration,a=a.sibling;e.actualDuration=n}if(n=e.return,n!==null&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&(e=e.sibling,e!==null)){Be=e;return}Be=e=n}while(e!==null);xt=pd,Be=null}function Um(e,t,n,a,o,l,i,c,m,p,O,_,A,z){e.cancelPendingCommit=null;do ds();while(Ut!==Nl);if(ha.flushLegacyContextWarning(),ha.flushPendingUnsafeLifecycleWarnings(),(Fe&(Zt|Ln))!==Qt)throw Error("Should not already be working.");if(ca(n),p===ir?vf(A,z,n,Dt):a!==null?_S(A,z,n,a,t!==null&&t.alternate!==null&&t.alternate.memoizedState.isDehydrated&&(t.flags&256)!==0,Dt):OS(A,z,n,Dt),t!==null){if(n===0&&console.error("finishedLanes should not be empty during a commit. This is a bug in React."),t===e.current)throw Error("Cannot commit the same tree as before. This error is likely caused by a bug in React. Please file an issue.");if(l=t.lanes|t.childLanes,l|=qh,Go(e,n,l,i,c,m),e===ct&&(Be=ct=null,Le=0),Ni=t,El=e,ba=n,Ep=l,wp=o,k1=a,Sp=z,O1=_,ya=Nd,_1=null,t.actualDuration!==0||(t.subtreeFlags&10256)!==0||(t.flags&10256)!==0?(e.callbackNode=null,e.callbackPriority=0,fw(qr,function(){return dc=window.event,ya===Nd&&(ya=Np),E0(),null})):(e.callbackNode=null,e.callbackPriority=0),To=null,dl=jt(),_!==null&&MS(z,dl,_,Dt),a=(t.flags&13878)!==0,(t.subtreeFlags&13878)!==0||a){a=L.T,L.T=null,o=We.p,We.p=$n,i=Fe,Fe|=Ln;try{tw(e,t,n)}finally{Fe=i,We.p=o,L.T=a}}Ut=T1,y0(),v0(),x0()}}function y0(){if(Ut===T1){Ut=Nl;var e=El,t=Ni,n=ba,a=(t.flags&13878)!==0;if((t.subtreeFlags&13878)!==0||a){a=L.T,L.T=null;var o=We.p;We.p=$n;var l=Fe;Fe|=Ln;try{yi=n,vi=e,Xc(),Qy(t,e),vi=yi=null,n=Hp;var i=lb(e.containerInfo),c=n.focusedElem,m=n.selectionRange;if(i!==c&&c&&c.ownerDocument&&ob(c.ownerDocument.documentElement,c)){if(m!==null&&gf(c)){var p=m.start,O=m.end;if(O===void 0&&(O=p),"selectionStart"in c)c.selectionStart=p,c.selectionEnd=Math.min(O,c.value.length);else{var _=c.ownerDocument||document,A=_&&_.defaultView||window;if(A.getSelection){var z=A.getSelection(),te=c.textContent.length,ue=Math.min(m.start,te),dt=m.end===void 0?ue:Math.min(m.end,te);!z.extend&&ue>dt&&(i=dt,dt=ue,ue=i);var Je=ab(c,ue),w=ab(c,dt);if(Je&&w&&(z.rangeCount!==1||z.anchorNode!==Je.node||z.anchorOffset!==Je.offset||z.focusNode!==w.node||z.focusOffset!==w.offset)){var T=_.createRange();T.setStart(Je.node,Je.offset),z.removeAllRanges(),ue>dt?(z.addRange(T),z.extend(w.node,w.offset)):(T.setEnd(w.node,w.offset),z.addRange(T))}}}}for(_=[],z=c;z=z.parentNode;)z.nodeType===1&&_.push({element:z,left:z.scrollLeft,top:z.scrollTop});for(typeof c.focus=="function"&&c.focus(),c=0;c<_.length;c++){var k=_[c];k.element.scrollLeft=k.left,k.element.scrollTop=k.top}}Pd=!!jp,Hp=jp=null}finally{Fe=l,We.p=o,L.T=a}}e.current=t,Ut=D1}}function v0(){if(Ut===D1){Ut=Nl;var e=_1;if(e!==null){dl=jt();var t=Ao,n=dl;!ft||n<=t||console.timeStamp(e,t,n,Qe,$e,"secondary-light")}e=El,t=Ni,n=ba;var a=(t.flags&8772)!==0;if((t.subtreeFlags&8772)!==0||a){a=L.T,L.T=null;var o=We.p;We.p=$n;var l=Fe;Fe|=Ln;try{yi=n,vi=e,Xc(),Yy(e,t.alternate,t),vi=yi=null}finally{Fe=l,We.p=o,L.T=a}}e=Sp,t=O1,Ao=jt(),e=t===null?e:dl,t=Ao,n=ya===xp,a=Dt,To!==null?ub(e,t,To,!1,a):!ft||t<=e||(a?a.run(console.timeStamp.bind(console,n?"Commit Interrupted View Transition":"Commit",e,t,Qe,$e,n?"error":"secondary-dark")):console.timeStamp(n?"Commit Interrupted View Transition":"Commit",e,t,Qe,$e,n?"error":"secondary-dark")),Ut=R1}}function x0(){if(Ut===C1||Ut===R1){if(Ut===C1){var e=Ao;Ao=jt();var t=Ao,n=ya===xp;!ft||t<=e||console.timeStamp(n?"Interrupted View Transition":"Starting Animation",e,t,Qe,$e,n?" error":"secondary-light"),ya!==xp&&(ya=A1)}Ut=Nl,rA(),e=El;var a=Ni;t=ba,n=k1;var o=a.actualDuration!==0||(a.subtreeFlags&10256)!==0||(a.flags&10256)!==0;o?Ut=Ed:(Ut=Nl,Ni=El=null,N0(e,e.pendingLanes),dr=0,ic=null);var l=e.pendingLanes;if(l===0&&(xl=null),o||T0(e),l=io(t),a=a.stateNode,nn&&typeof nn.onCommitFiberRoot=="function")try{var i=(a.current.flags&128)===128;switch(l){case $n:var c=wh;break;case $a:c=Ah;break;case xo:c=qr;break;case Lu:c=Th;break;default:c=qr}nn.onCommitFiberRoot($r,a,c,i)}catch(_){Xa||(Xa=!0,console.error("React instrumentation encountered an error: %o",_))}if(qa&&e.memoizedUpdaters.clear(),aw(),n!==null){i=L.T,c=We.p,We.p=$n,L.T=null;try{var m=e.onRecoverableError;for(a=0;a<n.length;a++){var p=n[a],O=sw(p.stack);ae(p.source,m,p.value,O)}}finally{L.T=i,We.p=c}}(ba&3)!==0&&ds(),La(e),l=e.pendingLanes,(t&261930)!==0&&(l&42)!==0?(od=!0,e===Ap?rc++:(rc=0,Ap=e)):rc=0,o||$l(t,Ao),ms(0)}}function sw(e){return e={componentStack:e},Object.defineProperty(e,"digest",{get:function(){console.error('You are accessing "digest" from the errorInfo object passed to onRecoverableError. This property is no longer provided as part of errorInfo but can be accessed as a property of the Error instance itself.')}}),e}function N0(e,t){(e.pooledCacheLanes&=t)===0&&(t=e.pooledCache,t!=null&&(e.pooledCache=null,Qi(t)))}function ds(){return y0(),v0(),x0(),E0()}function E0(){if(Ut!==Ed)return!1;var e=El,t=Ep;Ep=0;var n=io(ba),a=xo>n?xo:n;n=L.T;var o=We.p;try{We.p=a,L.T=null;var l=wp;wp=null,a=El;var i=ba;if(Ut=Nl,Ni=El=null,ba=0,(Fe&(Zt|Ln))!==Qt)throw Error("Cannot flush passive effects while already rendering.");ca(i),Tp=!0,Sd=!1;var c=0;if(To=null,c=qt(),ya===A1)xf(Ao,c,yT);else{var m=Ao,p=c,O=ya===Np;!ft||p<=m||(Dt?Dt.run(console.timeStamp.bind(console,O?"Waiting for Paint":"Waiting",m,p,Qe,$e,"secondary-light")):console.timeStamp(O?"Waiting for Paint":"Waiting",m,p,Qe,$e,"secondary-light"))}m=Fe,Fe|=Ln;var _=a.current;Xc(),a0(_);var A=a.current;_=Sp,Xc(),Wy(a,A,i,l,_),T0(a),Fe=m;var z=qt();if(A=c,_=Dt,To!==null?ub(A,z,To,!0,_):!ft||z<=A||(_?_.run(console.timeStamp.bind(console,"Remaining Effects",A,z,Qe,$e,"secondary-dark")):console.timeStamp("Remaining Effects",A,z,Qe,$e,"secondary-dark")),$l(i,z),ms(0,!1),Sd?a===ic?dr++:(dr=0,ic=a):dr=0,Sd=Tp=!1,nn&&typeof nn.onPostCommitFiberRoot=="function")try{nn.onPostCommitFiberRoot($r,a)}catch(ue){Xa||(Xa=!0,console.error("React instrumentation encountered an error: %o",ue))}var te=a.current.stateNode;return te.effectDuration=0,te.passiveEffectDuration=0,!0}finally{We.p=o,L.T=n,N0(e,t)}}function S0(e,t,n){t=Cn(n,t),Ab(t),t=bm(e.stateNode,t,2),e=Qo(e,t,2),e!==null&&(ia(e,2),La(e))}function Ke(e,t,n){if(Ei=!1,e.tag===3)S0(e,e,n);else{for(;t!==null;){if(t.tag===3){S0(t,e,n);return}if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(xl===null||!xl.has(a))){e=Cn(n,e),Ab(e),n=ym(2),a=Qo(t,n,2),a!==null&&(vm(n,a,t,e),ia(a,2),La(a));return}}t=t.return}console.error(`Internal React error: Attempted to capture a commit phase error inside a detached tree. This indicates a bug in React. Potential causes include deleting the same fiber more than once, committing an already-finished tree, or an inconsistent return pointer.
Error message:
%s`,n)}}function Lm(e,t,n){var a=e.pingCache;if(a===null){a=e.pingCache=new DT;var o=new Set;a.set(t,o)}else o=a.get(t),o===void 0&&(o=new Set,a.set(t,o));o.has(n)||(yp=!0,o.add(n),a=cw.bind(null,e,t,n),qa&&fs(e,n),t.then(a,a))}function cw(e,t,n){var a=e.pingCache;a!==null&&a.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,(n&127)!==0?0>Fa&&(Kl=Fa=jt(),zs=Ku("Promise Resolved"),fl=Wu):(n&4194048)!==0&&0>ea&&(Do=ea=jt(),Vs=Ku("Promise Resolved"),Wh=Wu),r0()&&L.actQueue===null&&console.error(`A suspended resource finished loading inside a test, but the event was not wrapped in act(...).
When testing, code that resolves suspended data should be wrapped into act(...):
act(() => {
/* finish loading suspended data */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act`),ct===e&&(Le&n)===n&&(xt===gl||xt===hd&&(Le&62914560)===Le&&qt()-vd<S1?(Fe&Zt)===Qt&&Ur(e,0):vp|=n,ur===Le&&(ur=0)),La(e)}function w0(e,t){t===0&&(t=Sa()),e=tn(e,t),e!==null&&(ia(e,t),La(e))}function uw(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),w0(e,n)}function dw(e,t){var n=0;switch(e.tag){case 31:case 13:var a=e.stateNode,o=e.memoizedState;o!==null&&(n=o.retryLane);break;case 19:a=e.stateNode;break;case 22:a=e.stateNode._retryCache;break;default:throw Error("Pinged unknown suspense boundary type. This is probably a bug in React.")}a!==null&&a.delete(t),w0(e,n)}function Bm(e,t,n){if((t.subtreeFlags&67117056)!==0)for(t=t.child;t!==null;){var a=e,o=t,l=o.type===ju;l=n||l,o.tag!==22?o.flags&67108864?l&&ae(o,A0,a,o):Bm(a,o,l):o.memoizedState===null&&(l&&o.flags&8192?ae(o,A0,a,o):o.subtreeFlags&67108864&&ae(o,Bm,a,o,l)),t=t.sibling}}function A0(e,t){he(!0);try{Iy(t),o0(t),Ky(e,t.alternate,t,!1),e0(e,t,0,null,!1,0)}finally{he(!1)}}function T0(e){var t=!0;e.current.mode&(an|ma)||(t=!1),Bm(e,e.current,t)}function D0(e){if((Fe&Zt)===Qt){var t=e.tag;if(t===3||t===1||t===0||t===11||t===14||t===15){if(t=W(e)||"ReactComponent",wd!==null){if(wd.has(t))return;wd.add(t)}else wd=new Set([t]);ae(e,function(){console.error("Can't perform a React state update on a component that hasn't mounted yet. This indicates that you have a side-effect in your render function that asynchronously tries to update the component. Move this work to useEffect instead.")})}}}function fs(e,t){qa&&e.memoizedUpdaters.forEach(function(n){lo(e,n,t)})}function fw(e,t){var n=L.actQueue;return n!==null?(n.push(t),kT):Sh(e,t)}function mw(e){r0()&&L.actQueue===null&&ae(e,function(){console.error(`An update to %s inside a test was not wrapped in act(...).
When testing, code that causes React state updates should be wrapped into act(...):
act(() => {
/* fire events that update state */
});
/* assert on the output */
This ensures that you're testing the behavior the user would see in the browser. Learn more at https://react.dev/link/wrap-tests-with-act`,W(e))})}function La(e){e!==Si&&e.next===null&&(Si===null?Ad=Si=e:Si=Si.next=e),Td=!0,L.actQueue!==null?Rp||(Rp=!0,O0()):Dp||(Dp=!0,O0())}function ms(e,t){if(!Cp&&Td){Cp=!0;do for(var n=!1,a=Ad;a!==null;){if(e!==0){var o=a.pendingLanes;if(o===0)var l=0;else{var i=a.suspendedLanes,c=a.pingedLanes;l=(1<<31-sn(42|e)+1)-1,l&=o&~(i&~c),l=l&201326741?l&201326741|1:l?l|2:0}l!==0&&(n=!0,k0(a,l))}else l=Le,l=bn(a,a===ct?l:0,a.cancelPendingCommit!==null||a.timeoutHandle!==pr),(l&3)===0||Ea(a,l)||(n=!0,k0(a,l));a=a.next}while(n);Cp=!1}}function hw(){dc=window.event,Gm()}function Gm(){Td=Rp=Dp=!1;var e=0;Sl!==0&&Nw()&&(e=Sl);for(var t=qt(),n=null,a=Ad;a!==null;){var o=a.next,l=R0(a,t);l===0?(a.next=null,n===null?Ad=o:n.next=o,o===null&&(Si=n)):(n=a,(e!==0||(l&3)!==0)&&(Td=!0)),a=o}Ut!==Nl&&Ut!==Ed||ms(e),Sl!==0&&(Sl=0)}function R0(e,t){for(var n=e.suspendedLanes,a=e.pingedLanes,o=e.expirationTimes,l=e.pendingLanes&-62914561;0<l;){var i=31-sn(l),c=1<<i,m=o[i];m===-1?((c&n)===0||(c&a)!==0)&&(o[i]=Ar(c,t)):m<=t&&(e.expiredLanes|=c),l&=~c}if(t=ct,n=Le,n=bn(e,e===t?n:0,e.cancelPendingCommit!==null||e.timeoutHandle!==pr),a=e.callbackNode,n===0||e===t&&(at===sr||at===cr)||e.cancelPendingCommit!==null)return a!==null&&Zm(a),e.callbackNode=null,e.callbackPriority=0;if((n&3)===0||Ea(e,n)){if(t=n&-n,t!==e.callbackPriority||L.actQueue!==null&&a!==kp)Zm(a);else return t;switch(io(n)){case $n:case $a:n=Ah;break;case xo:n=qr;break;case Lu:n=Th;break;default:n=qr}return a=C0.bind(null,e),L.actQueue!==null?(L.actQueue.push(a),n=kp):n=Sh(n,a),e.callbackPriority=t,e.callbackNode=n,t}return a!==null&&Zm(a),e.callbackPriority=2,e.callbackNode=null,2}function C0(e,t){if(od=ad=!1,dc=window.event,Ut!==Nl&&Ut!==Ed)return e.callbackNode=null,e.callbackPriority=0,null;var n=e.callbackNode;if(ya===Nd&&(ya=Np),ds()&&e.callbackNode!==n)return null;var a=Le;return a=bn(e,e===ct?a:0,e.cancelPendingCommit!==null||e.timeoutHandle!==pr),a===0?null:(s0(e,a,t),R0(e,qt()),e.callbackNode!=null&&e.callbackNode===n?C0.bind(null,e):null)}function k0(e,t){if(ds())return null;ad=od,od=!1,s0(e,t,!0)}function Zm(e){e!==kp&&e!==null&&oA(e)}function O0(){L.actQueue!==null&&L.actQueue.push(function(){return Gm(),null}),LT(function(){(Fe&(Zt|Ln))!==Qt?Sh(wh,hw):Gm()})}function Ym(){if(Sl===0){var e=tr;e===0&&(e=Pu,Pu<<=1,(Pu&261888)===0&&(Pu=256)),Sl=e}return Sl}function _0(e){return e==null||typeof e=="symbol"||typeof e=="boolean"?null:typeof e=="function"?e:(Ie(e,"action"),Xi(""+e))}function M0(e,t){var n=t.ownerDocument.createElement("input");return n.name=t.name,n.value=t.value,e.id&&n.setAttribute("form",e.id),t.parentNode.insertBefore(n,t),e=new FormData(e),n.parentNode.removeChild(n),e}function pw(e,t,n,a,o){if(t==="submit"&&n&&n.stateNode===o){var l=_0((o[cn]||null).action),i=a.submitter;i&&(t=(t=i[cn]||null)?_0(t.formAction):i.getAttribute("formAction"),t!==null&&(l=t,i=null));var c=new Xu("action","action",null,a,o);e.push({event:c,listeners:[{instance:null,listener:function(){if(a.defaultPrevented){if(Sl!==0){var m=i?M0(o,i):new FormData(o),p={pending:!0,data:m,method:o.method,action:l};Object.freeze(p),um(n,p,null,m)}}else typeof l=="function"&&(c.preventDefault(),m=i?M0(o,i):new FormData(o),p={pending:!0,data:m,method:o.method,action:l},Object.freeze(p),um(n,p,l,m))},currentTarget:o}]})}}function Su(e,t,n){e.currentTarget=n;try{t(e)}catch(a){Gh(a)}e.currentTarget=null}function j0(e,t){t=(t&4)!==0;for(var n=0;n<e.length;n++){var a=e[n];e:{var o=void 0,l=a.event;if(a=a.listeners,t)for(var i=a.length-1;0<=i;i--){var c=a[i],m=c.instance,p=c.currentTarget;if(c=c.listener,m!==o&&l.isPropagationStopped())break e;m!==null?ae(m,Su,l,c,p):Su(l,c,p),o=m}else for(i=0;i<a.length;i++){if(c=a[i],m=c.instance,p=c.currentTarget,c=c.listener,m!==o&&l.isPropagationStopped())break e;m!==null?ae(m,Su,l,c,p):Su(l,c,p),o=m}}}}function qe(e,t){Op.has(e)||console.error('Did not expect a listenToNonDelegatedEvent() call for "%s". This is a bug in React. Please file an issue.',e);var n=t[Dh];n===void 0&&(n=t[Dh]=new Set);var a=e+"__bubble";n.has(a)||(H0(t,e,2,!1),n.add(a))}function Xm(e,t,n){Op.has(e)&&!t&&console.error('Did not expect a listenToNativeEvent() call for "%s" in the bubble phase. This is a bug in React. Please file an issue.',e);var a=0;t&&(a|=4),H0(n,e,a,t)}function qm(e){if(!e[Dd]){e[Dd]=!0,Ov.forEach(function(n){n!=="selectionchange"&&(Op.has(n)||Xm(n,!1,e),Xm(n,!0,e))});var t=e.nodeType===9?e:e.ownerDocument;t===null||t[Dd]||(t[Dd]=!0,Xm("selectionchange",!1,t))}}function H0(e,t,n,a){switch(hv(t)){case $n:var o=Qw;break;case $a:o=Fw;break;default:o=sh}n=o.bind(null,t,n,e),o=void 0,!_h||t!=="touchstart"&&t!=="touchmove"&&t!=="wheel"||(o=!0),a?o!==void 0?e.addEventListener(t,n,{capture:!0,passive:o}):e.addEventListener(t,n,!0):o!==void 0?e.addEventListener(t,n,{passive:o}):e.addEventListener(t,n,!1)}function $m(e,t,n,a,o){var l=a;if((t&1)===0&&(t&2)===0&&a!==null)e:for(;;){if(a===null)return;var i=a.tag;if(i===3||i===4){var c=a.stateNode.containerInfo;if(c===o)break;if(i===4)for(i=a.return;i!==null;){var m=i.tag;if((m===3||m===4)&&i.stateNode.containerInfo===o)return;i=i.return}for(;c!==null;){if(i=J(c),i===null)return;if(m=i.tag,m===5||m===6||m===26||m===27){a=l=i;continue e}c=c.parentNode}}a=a.return}qg(function(){var p=l,O=hf(n),_=[];e:{var A=hx.get(e);if(A!==void 0){var z=Xu,te=e;switch(e){case"keypress":if(Oc(n)===0)break e;case"keydown":case"keyup":z=XA;break;case"focusin":te="focus",z=zh;break;case"focusout":te="blur",z=zh;break;case"beforeblur":case"afterblur":z=zh;break;case"click":if(n.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":z=ex;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":z=MA;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":z=JA;break;case ux:case dx:case fx:z=zA;break;case mx:z=FA;break;case"scroll":case"scrollend":z=OA;break;case"wheel":z=KA;break;case"copy":case"cut":case"paste":z=VA;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":z=nx;break;case"toggle":case"beforetoggle":z=eT}var ue=(t&4)!==0,dt=!ue&&(e==="scroll"||e==="scrollend"),Je=ue?A!==null?A+"Capture":null:A;ue=[];for(var w=p,T;w!==null;){var k=w;if(T=k.stateNode,k=k.tag,k!==5&&k!==26&&k!==27||T===null||Je===null||(k=qi(w,Je),k!=null&&ue.push(hs(w,k,T))),dt)break;w=w.return}0<ue.length&&(A=new z(A,te,null,n,O),_.push({event:A,listeners:ue}))}}if((t&7)===0){e:{if(A=e==="mouseover"||e==="pointerover",z=e==="mouseout"||e==="pointerout",A&&n!==As&&(te=n.relatedTarget||n.fromElement)&&(J(te)||te[ll]))break e;if((z||A)&&(A=O.window===O?O:(A=O.ownerDocument)?A.defaultView||A.parentWindow:window,z?(te=n.relatedTarget||n.toElement,z=p,te=te?J(te):null,te!==null&&(dt=B(te),ue=te.tag,te!==dt||ue!==5&&ue!==27&&ue!==6)&&(te=null)):(z=null,te=p),z!==te)){if(ue=ex,k="onMouseLeave",Je="onMouseEnter",w="mouse",(e==="pointerout"||e==="pointerover")&&(ue=nx,k="onPointerLeave",Je="onPointerEnter",w="pointer"),dt=z==null?A:pe(z),T=te==null?A:pe(te),A=new ue(k,w+"leave",z,n,O),A.target=dt,A.relatedTarget=T,k=null,J(O)===p&&(ue=new ue(Je,w+"enter",te,n,O),ue.target=T,ue.relatedTarget=dt,k=ue),dt=k,z&&te)t:{for(ue=gw,Je=z,w=te,T=0,k=Je;k;k=ue(k))T++;k=0;for(var G=w;G;G=ue(G))k++;for(;0<T-k;)Je=ue(Je),T--;for(;0<k-T;)w=ue(w),k--;for(;T--;){if(Je===w||w!==null&&Je===w.alternate){ue=Je;break t}Je=ue(Je),w=ue(w)}ue=null}else ue=null;z!==null&&z0(_,A,z,ue,!1),te!==null&&dt!==null&&z0(_,dt,te,ue,!0)}}e:{if(A=p?pe(p):window,z=A.nodeName&&A.nodeName.toLowerCase(),z==="select"||z==="input"&&A.type==="file")var oe=Wg;else if(Ig(A))if(sx)oe=RS;else{oe=TS;var Me=AS}else z=A.nodeName,!z||z.toLowerCase()!=="input"||A.type!=="checkbox"&&A.type!=="radio"?p&&Yi(p.elementType)&&(oe=Wg):oe=DS;if(oe&&(oe=oe(e,p))){Kg(_,oe,n,O);break e}Me&&Me(e,A,p),e==="focusout"&&p&&A.type==="number"&&p.memoizedProps.value!=null&&sf(A,"number",A.value)}switch(Me=p?pe(p):window,e){case"focusin":(Ig(Me)||Me.contentEditable==="true")&&(ei=Me,Vh=p,_s=null);break;case"focusout":_s=Vh=ei=null;break;case"mousedown":Uh=!0;break;case"contextmenu":case"mouseup":case"dragend":Uh=!1,rb(_,n,O);break;case"selectionchange":if(oT)break;case"keydown":case"keyup":rb(_,n,O)}var Ee;if(Ph)e:{switch(e){case"compositionstart":var ve="onCompositionStart";break e;case"compositionend":ve="onCompositionEnd";break e;case"compositionupdate":ve="onCompositionUpdate";break e}ve=void 0}else Wr?Qg(e,n)&&(ve="onCompositionEnd"):e==="keydown"&&n.keyCode===ax&&(ve="onCompositionStart");ve&&(ox&&n.locale!=="ko"&&(Wr||ve!=="onCompositionStart"?ve==="onCompositionEnd"&&Wr&&(Ee=$g()):(rl=O,Mh="value"in rl?rl.value:rl.textContent,Wr=!0)),Me=wu(p,ve),0<Me.length&&(ve=new tx(ve,e,null,n,O),_.push({event:ve,listeners:Me}),Ee?ve.data=Ee:(Ee=Fg(n),Ee!==null&&(ve.data=Ee)))),(Ee=nT?NS(e,n):ES(e,n))&&(ve=wu(p,"onBeforeInput"),0<ve.length&&(Me=new LA("onBeforeInput","beforeinput",null,n,O),_.push({event:Me,listeners:ve}),Me.data=Ee)),pw(_,e,p,n,O)}j0(_,t)})}function hs(e,t,n){return{instance:e,listener:t,currentTarget:n}}function wu(e,t){for(var n=t+"Capture",a=[];e!==null;){var o=e,l=o.stateNode;if(o=o.tag,o!==5&&o!==26&&o!==27||l===null||(o=qi(e,n),o!=null&&a.unshift(hs(e,o,l)),o=qi(e,t),o!=null&&a.push(hs(e,o,l))),e.tag===3)return a;e=e.return}return[]}function gw(e){if(e===null)return null;do e=e.return;while(e&&e.tag!==5&&e.tag!==27);return e||null}function z0(e,t,n,a,o){for(var l=t._reactName,i=[];n!==null&&n!==a;){var c=n,m=c.alternate,p=c.stateNode;if(c=c.tag,m!==null&&m===a)break;c!==5&&c!==26&&c!==27||p===null||(m=p,o?(p=qi(n,l),p!=null&&i.unshift(hs(n,p,m))):o||(p=qi(n,l),p!=null&&i.push(hs(n,p,m)))),n=n.return}i.length!==0&&e.push({event:t,listeners:i})}function Jm(e,t){bS(e,t),e!=="input"&&e!=="textarea"&&e!=="select"||t==null||t.value!==null||Kv||(Kv=!0,e==="select"&&t.multiple?console.error("`value` prop on `%s` should not be null. Consider using an empty array when `multiple` is set to `true` to clear the component or `undefined` for uncontrolled components.",e):console.error("`value` prop on `%s` should not be null. Consider using an empty string to clear the component or `undefined` for uncontrolled components.",e));var n={registrationNameDependencies:Jl,possibleRegistrationNames:Rh};Yi(e)||typeof t.is=="string"||vS(e,t,n),t.contentEditable&&!t.suppressContentEditableWarning&&t.children!=null&&console.error("A component is `contentEditable` and contains `children` managed by React. It is now your responsibility to guarantee that none of those nodes are unexpectedly modified or duplicated. This is probably not intentional.")}function Xt(e,t,n,a){t!==n&&(n=el(n),el(t)!==n&&(a[e]=t))}function bw(e,t,n){t.forEach(function(a){n[U0(a)]=a==="style"?Fm(e):e.getAttribute(a)})}function Ba(e,t){t===!1?console.error("Expected `%s` listener to be a function, instead got `false`.\n\nIf you used to conditionally omit it with %s={condition && value}, pass %s={condition ? value : undefined} instead.",e,e,e):console.error("Expected `%s` listener to be a function, instead got a value of `%s` type.",e,typeof t)}function P0(e,t){return e=e.namespaceURI===Gu||e.namespaceURI===Qr?e.ownerDocument.createElementNS(e.namespaceURI,e.tagName):e.ownerDocument.createElement(e.tagName),e.innerHTML=t,e.innerHTML}function el(e){return ra(e)&&(console.error("The provided HTML markup uses a value of unsupported type %s. This value must be coerced to a string before using it here.",gn(e)),Na(e)),(typeof e=="string"?e:""+e).replace(OT,`
`).replace(_T,"")}function V0(e,t){return t=el(t),el(e)===t}function it(e,t,n,a,o,l){switch(n){case"children":typeof a=="string"?(kc(a,t,!1),t==="body"||t==="textarea"&&a===""||Zi(e,a)):(typeof a=="number"||typeof a=="bigint")&&(kc(""+a,t,!1),t!=="body"&&Zi(e,""+a));break;case"className":so(e,"class",a);break;case"tabIndex":so(e,"tabindex",a);break;case"dir":case"role":case"viewBox":case"width":case"height":so(e,n,a);break;case"style":Zg(e,a,l);break;case"data":if(t!=="object"){so(e,"data",a);break}case"src":case"href":if(a===""&&(t!=="a"||n!=="href")){console.error(n==="src"?'An empty string ("") was passed to the %s attribute. This may cause the browser to download the whole page again over the network. To fix this, either do not render the element at all or pass null to %s instead of an empty string.':'An empty string ("") was passed to the %s attribute. To fix this, either do not render the element at all or pass null to %s instead of an empty string.',n,n),e.removeAttribute(n);break}if(a==null||typeof a=="function"||typeof a=="symbol"||typeof a=="boolean"){e.removeAttribute(n);break}Ie(a,n),a=Xi(""+a),e.setAttribute(n,a);break;case"action":case"formAction":if(a!=null&&(t==="form"?n==="formAction"?console.error("You can only pass the formAction prop to <input> or <button>. Use the action prop on <form>."):typeof a=="function"&&(o.encType==null&&o.method==null||kd||(kd=!0,console.error("Cannot specify a encType or method for a form that specifies a function as the action. React provides those automatically. They will get overridden.")),o.target==null||Cd||(Cd=!0,console.error("Cannot specify a target for a form that specifies a function as the action. The function will always be executed in the same window."))):t==="input"||t==="button"?n==="action"?console.error("You can only pass the action prop to <form>. Use the formAction prop on <input> or <button>."):t!=="input"||o.type==="submit"||o.type==="image"||Rd?t!=="button"||o.type==null||o.type==="submit"||Rd?typeof a=="function"&&(o.name==null||P1||(P1=!0,console.error('Cannot specify a "name" prop for a button that specifies a function as a formAction. React needs it to encode which action should be invoked. It will get overridden.')),o.formEncType==null&&o.formMethod==null||kd||(kd=!0,console.error("Cannot specify a formEncType or formMethod for a button that specifies a function as a formAction. React provides those automatically. They will get overridden.")),o.formTarget==null||Cd||(Cd=!0,console.error("Cannot specify a formTarget for a button that specifies a function as a formAction. The function will always be executed in the same window."))):(Rd=!0,console.error('A button can only specify a formAction along with type="submit" or no type.')):(Rd=!0,console.error('An input can only specify a formAction along with type="submit" or type="image".')):console.error(n==="action"?"You can only pass the action prop to <form>.":"You can only pass the formAction prop to <input> or <button>.")),typeof a=="function"){e.setAttribute(n,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof l=="function"&&(n==="formAction"?(t!=="input"&&it(e,t,"name",o.name,o,null),it(e,t,"formEncType",o.formEncType,o,null),it(e,t,"formMethod",o.formMethod,o,null),it(e,t,"formTarget",o.formTarget,o,null)):(it(e,t,"encType",o.encType,o,null),it(e,t,"method",o.method,o,null),it(e,t,"target",o.target,o,null)));if(a==null||typeof a=="symbol"||typeof a=="boolean"){e.removeAttribute(n);break}Ie(a,n),a=Xi(""+a),e.setAttribute(n,a);break;case"onClick":a!=null&&(typeof a!="function"&&Ba(n,a),e.onclick=uo);break;case"onScroll":a!=null&&(typeof a!="function"&&Ba(n,a),qe("scroll",e));break;case"onScrollEnd":a!=null&&(typeof a!="function"&&Ba(n,a),qe("scrollend",e));break;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error("`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://react.dev/link/dangerously-set-inner-html for more information.");if(n=a.__html,n!=null){if(o.children!=null)throw Error("Can only set one of `children` or `props.dangerouslySetInnerHTML`.");e.innerHTML=n}}break;case"multiple":e.multiple=a&&typeof a!="function"&&typeof a!="symbol";break;case"muted":e.muted=a&&typeof a!="function"&&typeof a!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(a==null||typeof a=="function"||typeof a=="boolean"||typeof a=="symbol"){e.removeAttribute("xlink:href");break}Ie(a,n),n=Xi(""+a),e.setAttributeNS(fr,"xlink:href",n);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":a!=null&&typeof a!="function"&&typeof a!="symbol"?(Ie(a,n),e.setAttribute(n,""+a)):e.removeAttribute(n);break;case"inert":a!==""||Od[n]||(Od[n]=!0,console.error("Received an empty string for a boolean attribute `%s`. This will treat the attribute as if it were false. Either pass `false` to silence this warning, or pass `true` if you used an empty string in earlier versions of React to indicate this attribute is true.",n));case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":a&&typeof a!="function"&&typeof a!="symbol"?e.setAttribute(n,""):e.removeAttribute(n);break;case"capture":case"download":a===!0?e.setAttribute(n,""):a!==!1&&a!=null&&typeof a!="function"&&typeof a!="symbol"?(Ie(a,n),e.setAttribute(n,a)):e.removeAttribute(n);break;case"cols":case"rows":case"size":case"span":a!=null&&typeof a!="function"&&typeof a!="symbol"&&!isNaN(a)&&1<=a?(Ie(a,n),e.setAttribute(n,a)):e.removeAttribute(n);break;case"rowSpan":case"start":a==null||typeof a=="function"||typeof a=="symbol"||isNaN(a)?e.removeAttribute(n):(Ie(a,n),e.setAttribute(n,a));break;case"popover":qe("beforetoggle",e),qe("toggle",e),Lt(e,"popover",a);break;case"xlinkActuate":Rt(e,fr,"xlink:actuate",a);break;case"xlinkArcrole":Rt(e,fr,"xlink:arcrole",a);break;case"xlinkRole":Rt(e,fr,"xlink:role",a);break;case"xlinkShow":Rt(e,fr,"xlink:show",a);break;case"xlinkTitle":Rt(e,fr,"xlink:title",a);break;case"xlinkType":Rt(e,fr,"xlink:type",a);break;case"xmlBase":Rt(e,_p,"xml:base",a);break;case"xmlLang":Rt(e,_p,"xml:lang",a);break;case"xmlSpace":Rt(e,_p,"xml:space",a);break;case"is":l!=null&&console.error('Cannot update the "is" prop after it has been initialized.'),Lt(e,"is",a);break;case"innerText":case"textContent":break;case"popoverTarget":V1||a==null||typeof a!="object"||(V1=!0,console.error("The `popoverTarget` prop expects the ID of an Element as a string. Received %s instead.",a));default:!(2<n.length)||n[0]!=="o"&&n[0]!=="O"||n[1]!=="n"&&n[1]!=="N"?(n=Yg(n),Lt(e,n,a)):Jl.hasOwnProperty(n)&&a!=null&&typeof a!="function"&&Ba(n,a)}}function Qm(e,t,n,a,o,l){switch(n){case"style":Zg(e,a,l);break;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error("`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://react.dev/link/dangerously-set-inner-html for more information.");if(n=a.__html,n!=null){if(o.children!=null)throw Error("Can only set one of `children` or `props.dangerouslySetInnerHTML`.");e.innerHTML=n}}break;case"children":typeof a=="string"?Zi(e,a):(typeof a=="number"||typeof a=="bigint")&&Zi(e,""+a);break;case"onScroll":a!=null&&(typeof a!="function"&&Ba(n,a),qe("scroll",e));break;case"onScrollEnd":a!=null&&(typeof a!="function"&&Ba(n,a),qe("scrollend",e));break;case"onClick":a!=null&&(typeof a!="function"&&Ba(n,a),e.onclick=uo);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(Jl.hasOwnProperty(n))a!=null&&typeof a!="function"&&Ba(n,a);else e:{if(n[0]==="o"&&n[1]==="n"&&(o=n.endsWith("Capture"),t=n.slice(2,o?n.length-7:void 0),l=e[cn]||null,l=l!=null?l[n]:null,typeof l=="function"&&e.removeEventListener(t,l,o),typeof a=="function")){typeof l!="function"&&l!==null&&(n in e?e[n]=null:e.hasAttribute(n)&&e.removeAttribute(n)),e.addEventListener(t,a,o);break e}n in e?e[n]=a:a===!0?e.setAttribute(n,""):Lt(e,n,a)}}}function Kt(e,t,n){switch(Jm(t,n),t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":qe("error",e),qe("load",e);var a=!1,o=!1,l;for(l in n)if(n.hasOwnProperty(l)){var i=n[l];if(i!=null)switch(l){case"src":a=!0;break;case"srcSet":o=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(t+" is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.");default:it(e,t,l,i,n,null)}}o&&it(e,t,"srcSet",n.srcSet,n,null),a&&it(e,t,"src",n.src,n,null);return;case"input":lt("input",n),qe("invalid",e);var c=l=i=o=null,m=null,p=null;for(a in n)if(n.hasOwnProperty(a)){var O=n[a];if(O!=null)switch(a){case"name":o=O;break;case"type":i=O;break;case"checked":m=O;break;case"defaultChecked":p=O;break;case"value":l=O;break;case"defaultValue":c=O;break;case"children":case"dangerouslySetInnerHTML":if(O!=null)throw Error(t+" is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.");break;default:it(e,t,a,O,n,null)}}Dg(e,n),Rg(e,l,c,m,p,i,o,!1);return;case"select":lt("select",n),qe("invalid",e),a=i=l=null;for(o in n)if(n.hasOwnProperty(o)&&(c=n[o],c!=null))switch(o){case"value":l=c;break;case"defaultValue":i=c;break;case"multiple":a=c;default:it(e,t,o,c,n,null)}Og(e,n),t=l,n=i,e.multiple=!!a,t!=null?Tr(e,!!a,t,!1):n!=null&&Tr(e,!!a,n,!0);return;case"textarea":lt("textarea",n),qe("invalid",e),l=o=a=null;for(i in n)if(n.hasOwnProperty(i)&&(c=n[i],c!=null))switch(i){case"value":a=c;break;case"defaultValue":o=c;break;case"children":l=c;break;case"dangerouslySetInnerHTML":if(c!=null)throw Error("`dangerouslySetInnerHTML` does not make sense on <textarea>.");break;default:it(e,t,i,c,n,null)}_g(e,n),jg(e,a,o,l);return;case"option":Cg(e,n);for(m in n)if(n.hasOwnProperty(m)&&(a=n[m],a!=null))switch(m){case"selected":e.selected=a&&typeof a!="function"&&typeof a!="symbol";break;default:it(e,t,m,a,n,null)}return;case"dialog":qe("beforetoggle",e),qe("toggle",e),qe("cancel",e),qe("close",e);break;case"iframe":case"object":qe("load",e);break;case"video":case"audio":for(a=0;a<sc.length;a++)qe(sc[a],e);break;case"image":qe("error",e),qe("load",e);break;case"details":qe("toggle",e);break;case"embed":case"source":case"link":qe("error",e),qe("load",e);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(p in n)if(n.hasOwnProperty(p)&&(a=n[p],a!=null))switch(p){case"children":case"dangerouslySetInnerHTML":throw Error(t+" is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.");default:it(e,t,p,a,n,null)}return;default:if(Yi(t)){for(O in n)n.hasOwnProperty(O)&&(a=n[O],a!==void 0&&Qm(e,t,O,a,n,void 0));return}}for(c in n)n.hasOwnProperty(c)&&(a=n[c],a!=null&&it(e,t,c,a,n,null))}function yw(e,t,n,a){switch(Jm(t,a),t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var o=null,l=null,i=null,c=null,m=null,p=null,O=null;for(z in n){var _=n[z];if(n.hasOwnProperty(z)&&_!=null)switch(z){case"checked":break;case"value":break;case"defaultValue":m=_;default:a.hasOwnProperty(z)||it(e,t,z,null,a,_)}}for(var A in a){var z=a[A];if(_=n[A],a.hasOwnProperty(A)&&(z!=null||_!=null))switch(A){case"type":l=z;break;case"name":o=z;break;case"checked":p=z;break;case"defaultChecked":O=z;break;case"value":i=z;break;case"defaultValue":c=z;break;case"children":case"dangerouslySetInnerHTML":if(z!=null)throw Error(t+" is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.");break;default:z!==_&&it(e,t,A,z,a,_)}}t=n.type==="checkbox"||n.type==="radio"?n.checked!=null:n.value!=null,a=a.type==="checkbox"||a.type==="radio"?a.checked!=null:a.value!=null,t||!a||z1||(console.error("A component is changing an uncontrolled input to be controlled. This is likely caused by the value changing from undefined to a defined value, which should not happen. Decide between using a controlled or uncontrolled input element for the lifetime of the component. More info: https://react.dev/link/controlled-components"),z1=!0),!t||a||H1||(console.error("A component is changing a controlled input to be uncontrolled. This is likely caused by the value changing from a defined to undefined, which should not happen. Decide between using a controlled or uncontrolled input element for the lifetime of the component. More info: https://react.dev/link/controlled-components"),H1=!0),rf(e,i,c,m,p,O,l,o);return;case"select":z=i=c=A=null;for(l in n)if(m=n[l],n.hasOwnProperty(l)&&m!=null)switch(l){case"value":break;case"multiple":z=m;default:a.hasOwnProperty(l)||it(e,t,l,null,a,m)}for(o in a)if(l=a[o],m=n[o],a.hasOwnProperty(o)&&(l!=null||m!=null))switch(o){case"value":A=l;break;case"defaultValue":c=l;break;case"multiple":i=l;default:l!==m&&it(e,t,o,l,a,m)}a=c,t=i,n=z,A!=null?Tr(e,!!t,A,!1):!!n!=!!t&&(a!=null?Tr(e,!!t,a,!0):Tr(e,!!t,t?[]:"",!1));return;case"textarea":z=A=null;for(c in n)if(o=n[c],n.hasOwnProperty(c)&&o!=null&&!a.hasOwnProperty(c))switch(c){case"value":break;case"children":break;default:it(e,t,c,null,a,o)}for(i in a)if(o=a[i],l=n[i],a.hasOwnProperty(i)&&(o!=null||l!=null))switch(i){case"value":A=o;break;case"defaultValue":z=o;break;case"children":break;case"dangerouslySetInnerHTML":if(o!=null)throw Error("`dangerouslySetInnerHTML` does not make sense on <textarea>.");break;default:o!==l&&it(e,t,i,o,a,l)}Mg(e,A,z);return;case"option":for(var te in n)if(A=n[te],n.hasOwnProperty(te)&&A!=null&&!a.hasOwnProperty(te))switch(te){case"selected":e.selected=!1;break;default:it(e,t,te,null,a,A)}for(m in a)if(A=a[m],z=n[m],a.hasOwnProperty(m)&&A!==z&&(A!=null||z!=null))switch(m){case"selected":e.selected=A&&typeof A!="function"&&typeof A!="symbol";break;default:it(e,t,m,A,a,z)}return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var ue in n)A=n[ue],n.hasOwnProperty(ue)&&A!=null&&!a.hasOwnProperty(ue)&&it(e,t,ue,null,a,A);for(p in a)if(A=a[p],z=n[p],a.hasOwnProperty(p)&&A!==z&&(A!=null||z!=null))switch(p){case"children":case"dangerouslySetInnerHTML":if(A!=null)throw Error(t+" is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.");break;default:it(e,t,p,A,a,z)}return;default:if(Yi(t)){for(var dt in n)A=n[dt],n.hasOwnProperty(dt)&&A!==void 0&&!a.hasOwnProperty(dt)&&Qm(e,t,dt,void 0,a,A);for(O in a)A=a[O],z=n[O],!a.hasOwnProperty(O)||A===z||A===void 0&&z===void 0||Qm(e,t,O,A,a,z);return}}for(var Je in n)A=n[Je],n.hasOwnProperty(Je)&&A!=null&&!a.hasOwnProperty(Je)&&it(e,t,Je,null,a,A);for(_ in a)A=a[_],z=n[_],!a.hasOwnProperty(_)||A===z||A==null&&z==null||it(e,t,_,A,a,z)}function U0(e){switch(e){case"class":return"className";case"for":return"htmlFor";default:return e}}function Fm(e){var t={};e=e.style;for(var n=0;n<e.length;n++){var a=e[n];t[a]=e.getPropertyValue(a)}return t}function L0(e,t,n){if(t!=null&&typeof t!="object")console.error("The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + 'em'}} when using JSX.");else{var a,o=a="",l;for(l in t)if(t.hasOwnProperty(l)){var i=t[l];i!=null&&typeof i!="boolean"&&i!==""&&(l.indexOf("--")===0?(wt(i,l),a+=o+l+":"+(""+i).trim()):typeof i!="number"||i===0||Fv.has(l)?(wt(i,l),a+=o+l.replace(Xv,"-$1").toLowerCase().replace(qv,"-ms-")+":"+(""+i).trim()):a+=o+l.replace(Xv,"-$1").toLowerCase().replace(qv,"-ms-")+":"+i+"px",o=";")}a=a||null,t=e.getAttribute("style"),t!==a&&(a=el(a),el(t)!==a&&(n.style=Fm(e)))}}function qn(e,t,n,a,o,l){if(o.delete(n),e=e.getAttribute(n),e===null)switch(typeof a){case"undefined":case"function":case"symbol":case"boolean":return}else if(a!=null)switch(typeof a){case"function":case"symbol":case"boolean":break;default:if(Ie(a,t),e===""+a)return}Xt(t,e,a,l)}function B0(e,t,n,a,o,l){if(o.delete(n),e=e.getAttribute(n),e===null){switch(typeof a){case"function":case"symbol":return}if(!a)return}else switch(typeof a){case"function":case"symbol":break;default:if(a)return}Xt(t,e,a,l)}function Im(e,t,n,a,o,l){if(o.delete(n),e=e.getAttribute(n),e===null)switch(typeof a){case"undefined":case"function":case"symbol":return}else if(a!=null)switch(typeof a){case"function":case"symbol":break;default:if(Ie(a,n),e===""+a)return}Xt(t,e,a,l)}function G0(e,t,n,a,o,l){if(o.delete(n),e=e.getAttribute(n),e===null)switch(typeof a){case"undefined":case"function":case"symbol":case"boolean":return;default:if(isNaN(a))return}else if(a!=null)switch(typeof a){case"function":case"symbol":case"boolean":break;default:if(!isNaN(a)&&(Ie(a,t),e===""+a))return}Xt(t,e,a,l)}function Km(e,t,n,a,o,l){if(o.delete(n),e=e.getAttribute(n),e===null)switch(typeof a){case"undefined":case"function":case"symbol":case"boolean":return}else if(a!=null)switch(typeof a){case"function":case"symbol":case"boolean":break;default:if(Ie(a,t),n=Xi(""+a),e===n)return}Xt(t,e,a,l)}function Z0(e,t,n,a){for(var o={},l=new Set,i=e.attributes,c=0;c<i.length;c++)switch(i[c].name.toLowerCase()){case"value":break;case"checked":break;case"selected":break;default:l.add(i[c].name)}if(Yi(t)){for(var m in n)if(n.hasOwnProperty(m)){var p=n[m];if(p!=null){if(Jl.hasOwnProperty(m))typeof p!="function"&&Ba(m,p);else if(n.suppressHydrationWarning!==!0)switch(m){case"children":typeof p!="string"&&typeof p!="number"||Xt("children",e.textContent,p,o);continue;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":continue;case"dangerouslySetInnerHTML":i=e.innerHTML,p=p?p.__html:void 0,p!=null&&(p=P0(e,p),Xt(m,i,p,o));continue;case"style":l.delete(m),L0(e,p,o);continue;case"offsetParent":case"offsetTop":case"offsetLeft":case"offsetWidth":case"offsetHeight":case"isContentEditable":case"outerText":case"outerHTML":l.delete(m.toLowerCase()),console.error("Assignment to read-only property will result in a no-op: `%s`",m);continue;case"className":l.delete("class"),i=At(e,"class",p),Xt("className",i,p,o);continue;default:a.context===jo&&t!=="svg"&&t!=="math"?l.delete(m.toLowerCase()):l.delete(m),i=At(e,m,p),Xt(m,i,p,o)}}}}else for(p in n)if(n.hasOwnProperty(p)&&(m=n[p],m!=null)){if(Jl.hasOwnProperty(p))typeof m!="function"&&Ba(p,m);else if(n.suppressHydrationWarning!==!0)switch(p){case"children":typeof m!="string"&&typeof m!="number"||Xt("children",e.textContent,m,o);continue;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"value":case"checked":case"selected":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":continue;case"dangerouslySetInnerHTML":i=e.innerHTML,m=m?m.__html:void 0,m!=null&&(m=P0(e,m),i!==m&&(o[p]={__html:i}));continue;case"className":qn(e,p,"class",m,l,o);continue;case"tabIndex":qn(e,p,"tabindex",m,l,o);continue;case"style":l.delete(p),L0(e,m,o);continue;case"multiple":l.delete(p),Xt(p,e.multiple,m,o);continue;case"muted":l.delete(p),Xt(p,e.muted,m,o);continue;case"autoFocus":l.delete("autofocus"),Xt(p,e.autofocus,m,o);continue;case"data":if(t!=="object"){l.delete(p),i=e.getAttribute("data"),Xt(p,i,m,o);continue}case"src":case"href":if(!(m!==""||t==="a"&&p==="href"||t==="object"&&p==="data")){console.error(p==="src"?'An empty string ("") was passed to the %s attribute. This may cause the browser to download the whole page again over the network. To fix this, either do not render the element at all or pass null to %s instead of an empty string.':'An empty string ("") was passed to the %s attribute. To fix this, either do not render the element at all or pass null to %s instead of an empty string.',p,p);continue}Km(e,p,p,m,l,o);continue;case"action":case"formAction":if(i=e.getAttribute(p),typeof m=="function"){l.delete(p.toLowerCase()),p==="formAction"?(l.delete("name"),l.delete("formenctype"),l.delete("formmethod"),l.delete("formtarget")):(l.delete("enctype"),l.delete("method"),l.delete("target"));continue}else if(i===MT){l.delete(p.toLowerCase()),Xt(p,"function",m,o);continue}Km(e,p,p.toLowerCase(),m,l,o);continue;case"xlinkHref":Km(e,p,"xlink:href",m,l,o);continue;case"contentEditable":Im(e,p,"contenteditable",m,l,o);continue;case"spellCheck":Im(e,p,"spellcheck",m,l,o);continue;case"draggable":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":Im(e,p,p,m,l,o);continue;case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":B0(e,p,p.toLowerCase(),m,l,o);continue;case"capture":case"download":e:{c=e;var O=i=p,_=o;if(l.delete(O),c=c.getAttribute(O),c===null)switch(typeof m){case"undefined":case"function":case"symbol":break e;default:if(m===!1)break e}else if(m!=null)switch(typeof m){case"function":case"symbol":break;case"boolean":if(m===!0&&c==="")break e;break;default:if(Ie(m,i),c===""+m)break e}Xt(i,c,m,_)}continue;case"cols":case"rows":case"size":case"span":e:{if(c=e,O=i=p,_=o,l.delete(O),c=c.getAttribute(O),c===null)switch(typeof m){case"undefined":case"function":case"symbol":case"boolean":break e;default:if(isNaN(m)||1>m)break e}else if(m!=null)switch(typeof m){case"function":case"symbol":case"boolean":break;default:if(!(isNaN(m)||1>m)&&(Ie(m,i),c===""+m))break e}Xt(i,c,m,_)}continue;case"rowSpan":G0(e,p,"rowspan",m,l,o);continue;case"start":G0(e,p,p,m,l,o);continue;case"xHeight":qn(e,p,"x-height",m,l,o);continue;case"xlinkActuate":qn(e,p,"xlink:actuate",m,l,o);continue;case"xlinkArcrole":qn(e,p,"xlink:arcrole",m,l,o);continue;case"xlinkRole":qn(e,p,"xlink:role",m,l,o);continue;case"xlinkShow":qn(e,p,"xlink:show",m,l,o);continue;case"xlinkTitle":qn(e,p,"xlink:title",m,l,o);continue;case"xlinkType":qn(e,p,"xlink:type",m,l,o);continue;case"xmlBase":qn(e,p,"xml:base",m,l,o);continue;case"xmlLang":qn(e,p,"xml:lang",m,l,o);continue;case"xmlSpace":qn(e,p,"xml:space",m,l,o);continue;case"inert":m!==""||Od[p]||(Od[p]=!0,console.error("Received an empty string for a boolean attribute `%s`. This will treat the attribute as if it were false. Either pass `false` to silence this warning, or pass `true` if you used an empty string in earlier versions of React to indicate this attribute is true.",p)),B0(e,p,p,m,l,o);continue;default:if(!(2<p.length)||p[0]!=="o"&&p[0]!=="O"||p[1]!=="n"&&p[1]!=="N"){c=Yg(p),i=!1,a.context===jo&&t!=="svg"&&t!=="math"?l.delete(c.toLowerCase()):(O=p.toLowerCase(),O=Zu.hasOwnProperty(O)&&Zu[O]||null,O!==null&&O!==p&&(i=!0,l.delete(O)),l.delete(c));e:if(O=e,_=c,c=m,ln(_))if(O.hasAttribute(_))O=O.getAttribute(_),Ie(c,_),c=O===""+c?c:O;else{switch(typeof c){case"function":case"symbol":break e;case"boolean":if(O=_.toLowerCase().slice(0,5),O!=="data-"&&O!=="aria-")break e}c=c===void 0?void 0:null}else c=void 0;i||Xt(p,c,m,o)}}}return 0<l.size&&n.suppressHydrationWarning!==!0&&bw(e,l,o),Object.keys(o).length===0?null:o}function vw(e,t){switch(e.length){case 0:return"";case 1:return e[0];case 2:return e[0]+" "+t+" "+e[1];default:return e.slice(0,-1).join(", ")+", "+t+" "+e[e.length-1]}}function Y0(e){switch(e){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}function xw(){if(typeof performance.getEntriesByType=="function"){for(var e=0,t=0,n=performance.getEntriesByType("resource"),a=0;a<n.length;a++){var o=n[a],l=o.transferSize,i=o.initiatorType,c=o.duration;if(l&&c&&Y0(i)){for(i=0,c=o.responseEnd,a+=1;a<n.length;a++){var m=n[a],p=m.startTime;if(p>c)break;var O=m.transferSize,_=m.initiatorType;O&&Y0(_)&&(m=m.responseEnd,i+=O*(m<c?1:(c-p)/(m-p)))}if(--a,t+=8*(l+i)/(o.duration/1e3),e++,10<e)break}}if(0<e)return t/e/1e6}return navigator.connection&&(e=navigator.connection.downlink,typeof e=="number")?e:5}function Au(e){return e.nodeType===9?e:e.ownerDocument}function X0(e){switch(e){case Qr:return Ai;case Gu:return Md;default:return jo}}function q0(e,t){if(e===jo)switch(t){case"svg":return Ai;case"math":return Md;default:return jo}return e===Ai&&t==="foreignObject"?jo:e}function Wm(e,t){return e==="textarea"||e==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.children=="bigint"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}function Nw(){var e=window.event;return e&&e.type==="popstate"?e===zp?!1:(zp=e,!0):(zp=null,!1)}function ps(){var e=window.event;return e&&e!==dc?e.type:null}function gs(){var e=window.event;return e&&e!==dc?e.timeStamp:-1.1}function Ew(e){setTimeout(function(){throw e})}function Sw(e,t,n){switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&e.focus();break;case"img":n.src?e.src=n.src:n.srcSet&&(e.srcset=n.srcSet)}}function ww(){}function Aw(e,t,n,a){yw(e,t,n,a),e[cn]=a}function $0(e){Zi(e,"")}function Tw(e,t,n){e.nodeValue=n}function J0(e){if(!e.__reactWarnedAboutChildrenConflict){var t=e[cn]||null;if(t!==null){var n=ee(e);n!==null&&(typeof t.children=="string"||typeof t.children=="number"?(e.__reactWarnedAboutChildrenConflict=!0,ae(n,function(){console.error('Cannot use a ref on a React element as a container to `createRoot` or `createPortal` if that element also sets "children" text content using React. It should be a leaf with no children. Otherwise it\'s ambiguous which children should be used.')})):t.dangerouslySetInnerHTML!=null&&(e.__reactWarnedAboutChildrenConflict=!0,ae(n,function(){console.error('Cannot use a ref on a React element as a container to `createRoot` or `createPortal` if that element also sets "dangerouslySetInnerHTML" using React. It should be a leaf with no children. Otherwise it\'s ambiguous which children should be used.')})))}}}function tl(e){return e==="head"}function Dw(e,t){e.removeChild(t)}function Rw(e,t){(e.nodeType===9?e.body:e.nodeName==="HTML"?e.ownerDocument.body:e).removeChild(t)}function Q0(e,t){var n=t,a=0;do{var o=n.nextSibling;if(e.removeChild(n),o&&o.nodeType===8)if(n=o.data,n===uc||n===_d){if(a===0){e.removeChild(o),Zr(t);return}a--}else if(n===cc||n===wl||n===hr||n===wi||n===mr)a++;else if(n===HT)bs(e.ownerDocument.documentElement);else if(n===PT){n=e.ownerDocument.head,bs(n);for(var l=n.firstChild;l;){var i=l.nextSibling,c=l.nodeName;l[ws]||c==="SCRIPT"||c==="STYLE"||c==="LINK"&&l.rel.toLowerCase()==="stylesheet"||n.removeChild(l),l=i}}else n===zT&&bs(e.ownerDocument.body);n=o}while(n);Zr(t)}function F0(e,t){var n=e;e=0;do{var a=n.nextSibling;if(n.nodeType===1?t?(n._stashedDisplay=n.style.display,n.style.display="none"):(n.style.display=n._stashedDisplay||"",n.getAttribute("style")===""&&n.removeAttribute("style")):n.nodeType===3&&(t?(n._stashedText=n.nodeValue,n.nodeValue=""):n.nodeValue=n._stashedText||""),a&&a.nodeType===8)if(n=a.data,n===uc){if(e===0)break;e--}else n!==cc&&n!==wl&&n!==hr&&n!==wi||e++;n=a}while(n)}function Cw(e){F0(e,!0)}function kw(e){e=e.style,typeof e.setProperty=="function"?e.setProperty("display","none","important"):e.display="none"}function Ow(e){e.nodeValue=""}function _w(e){F0(e,!1)}function Mw(e,t){t=t[VT],t=t!=null&&t.hasOwnProperty("display")?t.display:null,e.style.display=t==null||typeof t=="boolean"?"":(""+t).trim()}function jw(e,t){e.nodeValue=t}function eh(e){var t=e.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var n=t;switch(t=t.nextSibling,n.nodeName){case"HTML":case"HEAD":case"BODY":eh(n),M(n);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(n.rel.toLowerCase()==="stylesheet")continue}e.removeChild(n)}}function Hw(e,t,n,a){for(;e.nodeType===1;){var o=n;if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!a&&(e.nodeName!=="INPUT"||e.type!=="hidden"))break}else if(a){if(!e[ws])switch(t){case"meta":if(!e.hasAttribute("itemprop"))break;return e;case"link":if(l=e.getAttribute("rel"),l==="stylesheet"&&e.hasAttribute("data-precedence"))break;if(l!==o.rel||e.getAttribute("href")!==(o.href==null||o.href===""?null:o.href)||e.getAttribute("crossorigin")!==(o.crossOrigin==null?null:o.crossOrigin)||e.getAttribute("title")!==(o.title==null?null:o.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(l=e.getAttribute("src"),(l!==(o.src==null?null:o.src)||e.getAttribute("type")!==(o.type==null?null:o.type)||e.getAttribute("crossorigin")!==(o.crossOrigin==null?null:o.crossOrigin))&&l&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else if(t==="input"&&e.type==="hidden"){Ie(o.name,"name");var l=o.name==null?null:""+o.name;if(o.type==="hidden"&&e.getAttribute("name")===l)return e}else return e;if(e=jn(e.nextSibling),e===null)break}return null}function zw(e,t,n){if(t==="")return null;for(;e.nodeType!==3;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!n||(e=jn(e.nextSibling),e===null))return null;return e}function I0(e,t){for(;e.nodeType!==8;)if((e.nodeType!==1||e.nodeName!=="INPUT"||e.type!=="hidden")&&!t||(e=jn(e.nextSibling),e===null))return null;return e}function th(e){return e.data===wl||e.data===hr}function nh(e){return e.data===wi||e.data===wl&&e.ownerDocument.readyState!==L1}function Pw(e,t){var n=e.ownerDocument;if(e.data===hr)e._reactRetry=t;else if(e.data!==wl||n.readyState!==L1)t();else{var a=function(){t(),n.removeEventListener("DOMContentLoaded",a)};n.addEventListener("DOMContentLoaded",a),e._reactRetry=a}}function jn(e){for(;e!=null;e=e.nextSibling){var t=e.nodeType;if(t===1||t===3)break;if(t===8){if(t=e.data,t===cc||t===wi||t===wl||t===hr||t===mr||t===Mp||t===U1)break;if(t===uc||t===_d)return null}}return e}function K0(e){if(e.nodeType===1){for(var t=e.nodeName.toLowerCase(),n={},a=e.attributes,o=0;o<a.length;o++){var l=a[o];n[U0(l.name)]=l.name.toLowerCase()==="style"?Fm(e):l.value}return{type:t,props:n}}return e.nodeType===8?e.data===mr?{type:"Activity",props:{}}:{type:"Suspense",props:{}}:e.nodeValue}function W0(e,t,n){return n===null||n[jT]!==!0?(e.nodeValue===t?e=null:(t=el(t),e=el(e.nodeValue)===t?null:e.nodeValue),e):null}function ah(e){e=e.nextSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===uc||n===_d){if(t===0)return jn(e.nextSibling);t--}else n!==cc&&n!==wi&&n!==wl&&n!==hr&&n!==mr||t++}e=e.nextSibling}return null}function ev(e){e=e.previousSibling;for(var t=0;e;){if(e.nodeType===8){var n=e.data;if(n===cc||n===wi||n===wl||n===hr||n===mr){if(t===0)return e;t--}else n!==uc&&n!==_d||t++}e=e.previousSibling}return null}function Vw(e){Zr(e)}function Uw(e){Zr(e)}function Lw(e){Zr(e)}function tv(e,t,n,a,o){switch(o&&mf(e,a.ancestorInfo),t=Au(n),e){case"html":if(e=t.documentElement,!e)throw Error("React expected an <html> element (document.documentElement) to exist in the Document but one was not found. React never removes the documentElement for any Document it renders into so the cause is likely in some other script running on this page.");return e;case"head":if(e=t.head,!e)throw Error("React expected a <head> element (document.head) to exist in the Document but one was not found. React never removes the head for any Document it renders into so the cause is likely in some other script running on this page.");return e;case"body":if(e=t.body,!e)throw Error("React expected a <body> element (document.body) to exist in the Document but one was not found. React never removes the body for any Document it renders into so the cause is likely in some other script running on this page.");return e;default:throw Error("resolveSingletonInstance was called with an element type that is not supported. This is a bug in React.")}}function Bw(e,t,n,a){if(!n[ll]&&ee(n)){var o=n.tagName.toLowerCase();console.error("You are mounting a new %s component when a previous one has not first unmounted. It is an error to render more than one %s component at a time and attributes and children of these components will likely fail in unpredictable ways. Please only render a single instance of <%s> and if you need to mount a new one, ensure any previous ones have unmounted first.",o,o,o)}switch(e){case"html":case"head":case"body":break;default:console.error("acquireSingletonInstance was called with an element type that is not supported. This is a bug in React.")}for(o=n.attributes;o.length;)n.removeAttributeNode(o[0]);Kt(n,e,t),n[Wt]=a,n[cn]=t}function bs(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);M(e)}function Tu(e){return typeof e.getRootNode=="function"?e.getRootNode():e.nodeType===9?e:e.ownerDocument}function nv(e,t,n){var a=Ti;if(a&&typeof t=="string"&&t){var o=Xn(t);o='link[rel="'+e+'"][href="'+o+'"]',typeof n=="string"&&(o+='[crossorigin="'+n+'"]'),q1.has(o)||(q1.add(o),e={rel:e,crossOrigin:n,href:t},a.querySelector(o)===null&&(t=a.createElement("link"),Kt(t,"link",e),Q(t),a.head.appendChild(t)))}}function av(e,t,n,a){var o=(o=al.current)?Tu(o):null;if(!o)throw Error('"resourceRoot" was expected to exist. This is a bug in React.');switch(e){case"meta":case"title":return null;case"style":return typeof n.precedence=="string"&&typeof n.href=="string"?(n=Br(n.href),t=je(o).hoistableStyles,a=t.get(n),a||(a={type:"style",instance:null,count:0,state:null},t.set(n,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(n.rel==="stylesheet"&&typeof n.href=="string"&&typeof n.precedence=="string"){e=Br(n.href);var l=je(o).hoistableStyles,i=l.get(e);if(!i&&(o=o.ownerDocument||o,i={type:"stylesheet",instance:null,count:0,state:{loading:gr,preload:null}},l.set(e,i),(l=o.querySelector(ys(e)))&&!l._p&&(i.instance=l,i.state.loading=fc|oa),!la.has(e))){var c={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy};la.set(e,c),l||Gw(o,e,c,i.state)}if(t&&a===null)throw n=`
- `+Du(t)+`
+ `+Du(n),Error("Expected <link> not to update to be updated to a stylesheet with precedence. Check the `rel`, `href`, and `precedence` props of this component. Alternatively, check whether two different <link> components render in the same slot or share the same key."+n);return i}if(t&&a!==null)throw n=`
- `+Du(t)+`
+ `+Du(n),Error("Expected stylesheet with precedence to not be updated to a different kind of <link>. Check the `rel`, `href`, and `precedence` props of this component. Alternatively, check whether two different <link> components render in the same slot or share the same key."+n);return null;case"script":return t=n.async,n=n.src,typeof n=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(n=Gr(n),t=je(o).hoistableScripts,a=t.get(n),a||(a={type:"script",instance:null,count:0,state:null},t.set(n,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error('getResource encountered a type it did not expect: "'+e+'". this is a bug in React.')}}function Du(e){var t=0,n="<link";return typeof e.rel=="string"?(t++,n+=' rel="'+e.rel+'"'):fa.call(e,"rel")&&(t++,n+=' rel="'+(e.rel===null?"null":"invalid type "+typeof e.rel)+'"'),typeof e.href=="string"?(t++,n+=' href="'+e.href+'"'):fa.call(e,"href")&&(t++,n+=' href="'+(e.href===null?"null":"invalid type "+typeof e.href)+'"'),typeof e.precedence=="string"?(t++,n+=' precedence="'+e.precedence+'"'):fa.call(e,"precedence")&&(t++,n+=" precedence={"+(e.precedence===null?"null":"invalid type "+typeof e.precedence)+"}"),Object.getOwnPropertyNames(e).length>t&&(n+=" ..."),n+" />"}function Br(e){return'href="'+Xn(e)+'"'}function ys(e){return'link[rel="stylesheet"]['+e+"]"}function ov(e){return Ze({},e,{"data-precedence":e.precedence,precedence:null})}function Gw(e,t,n,a){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=fc:(t=e.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=fc}),t.addEventListener("error",function(){return a.loading|=Y1}),Kt(t,"link",n),Q(t),e.head.appendChild(t))}function Gr(e){return'[src="'+Xn(e)+'"]'}function vs(e){return"script[async]"+e}function lv(e,t,n){if(t.count++,t.instance===null)switch(t.type){case"style":var a=e.querySelector('style[data-href~="'+Xn(n.href)+'"]');if(a)return t.instance=a,Q(a),a;var o=Ze({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return a=(e.ownerDocument||e).createElement("style"),Q(a),Kt(a,"style",o),Ru(a,n.precedence,e),t.instance=a;case"stylesheet":o=Br(n.href);var l=e.querySelector(ys(o));if(l)return t.state.loading|=oa,t.instance=l,Q(l),l;a=ov(n),(o=la.get(o))&&oh(a,o),l=(e.ownerDocument||e).createElement("link"),Q(l);var i=l;return i._p=new Promise(function(c,m){i.onload=c,i.onerror=m}),Kt(l,"link",a),t.state.loading|=oa,Ru(l,n.precedence,e),t.instance=l;case"script":return l=Gr(n.src),(o=e.querySelector(vs(l)))?(t.instance=o,Q(o),o):(a=n,(o=la.get(l))&&(a=Ze({},n),lh(a,o)),e=e.ownerDocument||e,o=e.createElement("script"),Q(o),Kt(o,"link",a),e.head.appendChild(o),t.instance=o);case"void":return null;default:throw Error('acquireResource encountered a resource type it did not expect: "'+t.type+'". this is a bug in React.')}else t.type==="stylesheet"&&(t.state.loading&oa)===gr&&(a=t.instance,t.state.loading|=oa,Ru(a,n.precedence,e));return t.instance}function Ru(e,t,n){for(var a=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),o=a.length?a[a.length-1]:null,l=o,i=0;i<a.length;i++){var c=a[i];if(c.dataset.precedence===t)l=c;else if(l!==o)break}l?l.parentNode.insertBefore(e,l.nextSibling):(t=n.nodeType===9?n.head:n,t.insertBefore(e,t.firstChild))}function oh(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.title==null&&(e.title=t.title)}function lh(e,t){e.crossOrigin==null&&(e.crossOrigin=t.crossOrigin),e.referrerPolicy==null&&(e.referrerPolicy=t.referrerPolicy),e.integrity==null&&(e.integrity=t.integrity)}function rv(e,t,n){if(jd===null){var a=new Map,o=jd=new Map;o.set(n,a)}else o=jd,a=o.get(n),a||(a=new Map,o.set(n,a));if(a.has(e))return a;for(a.set(e,null),n=n.getElementsByTagName(e),o=0;o<n.length;o++){var l=n[o];if(!(l[ws]||l[Wt]||e==="link"&&l.getAttribute("rel")==="stylesheet")&&l.namespaceURI!==Qr){var i=l.getAttribute(t)||"";i=e+i;var c=a.get(i);c?c.push(l):a.set(i,[l])}}return a}function iv(e,t,n){e=e.ownerDocument||e,e.head.insertBefore(n,t==="title"?e.querySelector("head > title"):null)}function Zw(e,t,n){var a=!n.ancestorInfo.containerTagInScope;if(n.context===Ai||t.itemProp!=null)return!a||t.itemProp==null||e!=="meta"&&e!=="title"&&e!=="style"&&e!=="link"&&e!=="script"||console.error("Cannot render a <%s> outside the main document if it has an `itemProp` prop. `itemProp` suggests the tag belongs to an `itemScope` which can appear anywhere in the DOM. If you were intending for React to hoist this <%s> remove the `itemProp` prop. Otherwise, try moving this tag into the <head> or <body> of the Document.",e,e),!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href===""){a&&console.error('Cannot render a <style> outside the main document without knowing its precedence and a unique href key. React can hoist and deduplicate <style> tags if you provide a `precedence` prop along with an `href` prop that does not conflict with the `href` values used in any other hoisted <style> or <link rel="stylesheet" ...> tags. Note that hoisting <style> tags is considered an advanced feature that most will not use directly. Consider moving the <style> tag to the <head> or consider adding a `precedence="default"` and `href="some unique resource identifier"`.');break}return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError){if(t.rel==="stylesheet"&&typeof t.precedence=="string"){e=t.href;var o=t.onError,l=t.disabled;n=[],t.onLoad&&n.push("`onLoad`"),o&&n.push("`onError`"),l!=null&&n.push("`disabled`"),o=vw(n,"and"),o+=n.length===1?" prop":" props",l=n.length===1?"an "+o:"the "+o,n.length&&console.error('React encountered a <link rel="stylesheet" href="%s" ... /> with a `precedence` prop that also included %s. The presence of loading and error handlers indicates an intent to manage the stylesheet loading state from your from your Component code and React will not hoist or deduplicate this stylesheet. If your intent was to have React hoist and deduplciate this stylesheet using the `precedence` prop remove the %s, otherwise remove the `precedence` prop.',e,l,o)}a&&(typeof t.rel!="string"||typeof t.href!="string"||t.href===""?console.error("Cannot render a <link> outside the main document without a `rel` and `href` prop. Try adding a `rel` and/or `href` prop to this <link> or moving the link into the <head> tag"):(t.onError||t.onLoad)&&console.error("Cannot render a <link> with onLoad or onError listeners outside the main document. Try removing onLoad={...} and onError={...} or moving it into the root <head> tag or somewhere in the <body>."));break}switch(t.rel){case"stylesheet":return e=t.precedence,t=t.disabled,typeof e!="string"&&a&&console.error('Cannot render a <link rel="stylesheet" /> outside the main document without knowing its precedence. Consider adding precedence="default" or moving it into the root <head> tag.'),typeof e=="string"&&t==null;default:return!0}case"script":if(e=t.async&&typeof t.async!="function"&&typeof t.async!="symbol",!e||t.onLoad||t.onError||!t.src||typeof t.src!="string"){a&&(e?t.onLoad||t.onError?console.error("Cannot render a <script> with onLoad or onError listeners outside the main document. Try removing onLoad={...} and onError={...} or moving it into the root <head> tag or somewhere in the <body>."):console.error("Cannot render a <script> outside the main document without `async={true}` and a non-empty `src` prop. Ensure there is a valid `src` and either make the script async or move it into the root <head> tag or somewhere in the <body>."):console.error('Cannot render a sync or defer <script> outside the main document without knowing its order. Try adding async="" or moving it into the root <head> tag.'));break}return!0;case"noscript":case"template":a&&console.error("Cannot render <%s> outside the main document. Try moving it into the root <head> tag.",e)}return!1}function sv(e){return!(e.type==="stylesheet"&&(e.state.loading&X1)===gr)}function Yw(e,t,n,a){if(n.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(n.state.loading&oa)===gr){if(n.instance===null){var o=Br(a.href),l=t.querySelector(ys(o));if(l){t=l._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=Cu.bind(e),t.then(e,e)),n.state.loading|=oa,n.instance=l,Q(l);return}l=t.ownerDocument||t,a=ov(a),(o=la.get(o))&&oh(a,o),l=l.createElement("link"),Q(l);var i=l;i._p=new Promise(function(c,m){i.onload=c,i.onerror=m}),Kt(l,"link",a),n.instance=l}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&(n.state.loading&X1)===gr&&(e.count++,n=Cu.bind(e),t.addEventListener("load",n),t.addEventListener("error",n))}}function Xw(e,t){return e.stylesheets&&e.count===0&&ku(e,e.stylesheets),0<e.count||0<e.imgCount?function(n){var a=setTimeout(function(){if(e.stylesheets&&ku(e,e.stylesheets),e.unsuspend){var l=e.unsuspend;e.unsuspend=null,l()}},BT+t);0<e.imgBytes&&Vp===0&&(Vp=125*xw()*ZT);var o=setTimeout(function(){if(e.waitingForImages=!1,e.count===0&&(e.stylesheets&&ku(e,e.stylesheets),e.unsuspend)){var l=e.unsuspend;e.unsuspend=null,l()}},(e.imgBytes>Vp?50:GT)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(a),clearTimeout(o)}}:null}function Cu(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)ku(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}function ku(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Hd=new Map,t.forEach(qw,e),Hd=null,Cu.call(e))}function qw(e,t){if(!(t.state.loading&oa)){var n=Hd.get(e);if(n)var a=n.get(Up);else{n=new Map,Hd.set(e,n);for(var o=e.querySelectorAll("link[data-precedence],style[data-precedence]"),l=0;l<o.length;l++){var i=o[l];(i.nodeName==="LINK"||i.getAttribute("media")!=="not all")&&(n.set(i.dataset.precedence,i),a=i)}a&&n.set(Up,a)}o=t.instance,i=o.getAttribute("data-precedence"),l=n.get(i)||a,l===a&&n.set(Up,o),n.set(i,o),this.count++,a=Cu.bind(this),o.addEventListener("load",a),o.addEventListener("error",a),l?l.parentNode.insertBefore(o,l.nextSibling):(e=e.nodeType===9?e.head:e,e.insertBefore(o,e.firstChild)),t.state.loading|=oa}}function $w(e,t,n,a,o,l,i,c,m){for(this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=pr,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=_l(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=_l(0),this.hiddenUpdates=_l(null),this.identifierPrefix=a,this.onUncaughtError=o,this.onCaughtError=l,this.onRecoverableError=i,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=m,this.incompleteTransitions=new Map,this.passiveEffectDuration=this.effectDuration=-0,this.memoizedUpdaters=new Set,e=this.pendingUpdatersLaneMap=[],t=0;31>t;t++)e.push(new Set);this._debugRootType=n?"hydrateRoot()":"createRoot()"}function cv(e,t,n,a,o,l,i,c,m,p,O,_){return e=new $w(e,t,n,i,m,p,O,_,c),t=mT,l===!0&&(t|=an|ma),t|=Ve,l=E(3,null,null,t),e.current=l,l.stateNode=e,t=Mf(),Bl(t),e.pooledCache=t,Bl(t),l.memoizedState={element:a,isDehydrated:n,cache:t},Vf(l),e}function uv(e){return e?(e=cl,e):cl}function rh(e,t,n,a,o,l){if(nn&&typeof nn.onScheduleFiberRoot=="function")try{nn.onScheduleFiberRoot($r,a,n)}catch(i){Xa||(Xa=!0,console.error("React instrumentation encountered an error: %o",i))}o=uv(o),a.context===null?a.context=o:a.pendingContext=o,Ya&&zn!==null&&!F1&&(F1=!0,console.error(`Render methods should be a pure function of props and state; triggering nested component updates from render is not allowed. If necessary, trigger nested updates in componentDidUpdate.
Check the render method of %s.`,W(zn)||"Unknown")),a=Jo(t),a.payload={element:n},l=l===void 0?null:l,l!==null&&(typeof l!="function"&&console.error("Expected the last optional `callback` argument to be a function. Instead received: %s.",l),a.callback=l),n=Qo(e,a,t),n!==null&&(Ca(t,"root.render()",null),Et(n,e,t),Wi(n,e,t))}function dv(e,t){if(e=e.memoizedState,e!==null&&e.dehydrated!==null){var n=e.retryLane;e.retryLane=n!==0&&n<t?n:t}}function ih(e,t){dv(e,t),(e=e.alternate)&&dv(e,t)}function fv(e){if(e.tag===13||e.tag===31){var t=tn(e,67108864);t!==null&&Et(t,e,67108864),ih(e,67108864)}}function mv(e){if(e.tag===13||e.tag===31){var t=Mn(e);t=wa(t);var n=tn(e,t);n!==null&&Et(n,e,t),ih(e,t)}}function Jw(){return zn}function Qw(e,t,n,a){var o=L.T;L.T=null;var l=We.p;try{We.p=$n,sh(e,t,n,a)}finally{We.p=l,L.T=o}}function Fw(e,t,n,a){var o=L.T;L.T=null;var l=We.p;try{We.p=$a,sh(e,t,n,a)}finally{We.p=l,L.T=o}}function sh(e,t,n,a){if(Pd){var o=ch(a);if(o===null)$m(e,t,a,Vd,n),pv(e,a);else if(Iw(o,e,t,n,a))a.stopPropagation();else if(pv(e,a),t&4&&-1<XT.indexOf(e)){for(;o!==null;){var l=ee(o);if(l!==null)switch(l.tag){case 3:if(l=l.stateNode,l.current.memoizedState.isDehydrated){var i=bt(l.pendingLanes);if(i!==0){var c=l;for(c.pendingLanes|=2,c.entangledLanes|=2;i;){var m=1<<31-sn(i);c.entanglements[1]|=m,i&=~m}La(l),(Fe&(Zt|Ln))===Qt&&(xd=qt()+w1,ms(0))}}break;case 31:case 13:c=tn(l,2),c!==null&&Et(c,l,2),Vr(),ih(l,2)}if(l=ch(a),l===null&&$m(e,t,a,Vd,n),l===o)break;o=l}o!==null&&a.stopPropagation()}else $m(e,t,a,null,n)}}function ch(e){return e=hf(e),uh(e)}function uh(e){if(Vd=null,e=J(e),e!==null){var t=B(e);if(t===null)e=null;else{var n=t.tag;if(n===13){if(e=ce(t),e!==null)return e;e=null}else if(n===31){if(e=de(t),e!==null)return e;e=null}else if(n===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null)}}return Vd=e,null}function hv(e){switch(e){case"beforetoggle":case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return $n;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return $a;case"message":switch(iA()){case wh:return $n;case Ah:return $a;case qr:case sA:return xo;case Th:return Lu;default:return xo}default:return xo}}function pv(e,t){switch(e){case"focusin":case"focusout":Al=null;break;case"dragenter":case"dragleave":Tl=null;break;case"mouseover":case"mouseout":Dl=null;break;case"pointerover":case"pointerout":hc.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":pc.delete(t.pointerId)}}function xs(e,t,n,a,o,l){return e===null||e.nativeEvent!==l?(e={blockedOn:t,domEventName:n,eventSystemFlags:a,nativeEvent:l,targetContainers:[o]},t!==null&&(t=ee(t),t!==null&&fv(t)),e):(e.eventSystemFlags|=a,t=e.targetContainers,o!==null&&t.indexOf(o)===-1&&t.push(o),e)}function Iw(e,t,n,a,o){switch(t){case"focusin":return Al=xs(Al,e,t,n,a,o),!0;case"dragenter":return Tl=xs(Tl,e,t,n,a,o),!0;case"mouseover":return Dl=xs(Dl,e,t,n,a,o),!0;case"pointerover":var l=o.pointerId;return hc.set(l,xs(hc.get(l)||null,e,t,n,a,o)),!0;case"gotpointercapture":return l=o.pointerId,pc.set(l,xs(pc.get(l)||null,e,t,n,a,o)),!0}return!1}function gv(e){var t=J(e.target);if(t!==null){var n=B(t);if(n!==null){if(t=n.tag,t===13){if(t=ce(n),t!==null){e.blockedOn=t,y(e.priority,function(){mv(n)});return}}else if(t===31){if(t=de(n),t!==null){e.blockedOn=t,y(e.priority,function(){mv(n)});return}}else if(t===3&&n.stateNode.current.memoizedState.isDehydrated){e.blockedOn=n.tag===3?n.stateNode.containerInfo:null;return}}}e.blockedOn=null}function Ou(e){if(e.blockedOn!==null)return!1;for(var t=e.targetContainers;0<t.length;){var n=ch(e.nativeEvent);if(n===null){n=e.nativeEvent;var a=new n.constructor(n.type,n),o=a;As!==null&&console.error("Expected currently replaying event to be null. This error is likely caused by a bug in React. Please file an issue."),As=o,n.target.dispatchEvent(a),As===null&&console.error("Expected currently replaying event to not be null. This error is likely caused by a bug in React. Please file an issue."),As=null}else return t=ee(n),t!==null&&fv(t),e.blockedOn=n,!1;t.shift()}return!0}function bv(e,t,n){Ou(e)&&n.delete(t)}function Kw(){Lp=!1,Al!==null&&Ou(Al)&&(Al=null),Tl!==null&&Ou(Tl)&&(Tl=null),Dl!==null&&Ou(Dl)&&(Dl=null),hc.forEach(bv),pc.forEach(bv)}function _u(e,t){e.blockedOn===t&&(e.blockedOn=null,Lp||(Lp=!0,_t.unstable_scheduleCallback(_t.unstable_NormalPriority,Kw)))}function yv(e){Ud!==e&&(Ud=e,_t.unstable_scheduleCallback(_t.unstable_NormalPriority,function(){Ud===e&&(Ud=null);for(var t=0;t<e.length;t+=3){var n=e[t],a=e[t+1],o=e[t+2];if(typeof a!="function"){if(uh(a||n)===null)continue;break}var l=ee(n);l!==null&&(e.splice(t,3),t-=3,n={pending:!0,data:o,method:n.method,action:a},Object.freeze(n),um(l,n,a,o))}}))}function Zr(e){function t(m){return _u(m,e)}Al!==null&&_u(Al,e),Tl!==null&&_u(Tl,e),Dl!==null&&_u(Dl,e),hc.forEach(t),pc.forEach(t);for(var n=0;n<Rl.length;n++){var a=Rl[n];a.blockedOn===e&&(a.blockedOn=null)}for(;0<Rl.length&&(n=Rl[0],n.blockedOn===null);)gv(n),n.blockedOn===null&&Rl.shift();if(n=(e.ownerDocument||e).$$reactFormReplay,n!=null)for(a=0;a<n.length;a+=3){var o=n[a],l=n[a+1],i=o[cn]||null;if(typeof l=="function")i||yv(n);else if(i){var c=null;if(l&&l.hasAttribute("formAction")){if(o=l,i=l[cn]||null)c=i.formAction;else if(uh(o)!==null)continue}else c=i.action;typeof c=="function"?n[a+1]=c:(n.splice(a,3),a-=3),yv(n)}}}function vv(){function e(l){l.canIntercept&&l.info==="react-transition"&&l.intercept({handler:function(){return new Promise(function(i){return o=i})},focusReset:"manual",scroll:"manual"})}function t(){o!==null&&(o(),o=null),a||setTimeout(n,20)}function n(){if(!a&&!navigation.transition){var l=navigation.currentEntry;l&&l.url!=null&&navigation.navigate(l.url,{state:l.getState(),info:"react-transition",history:"replace"})}}if(typeof navigation=="object"){var a=!1,o=null;return navigation.addEventListener("navigate",e),navigation.addEventListener("navigatesuccess",t),navigation.addEventListener("navigateerror",t),setTimeout(n,100),function(){a=!0,navigation.removeEventListener("navigate",e),navigation.removeEventListener("navigatesuccess",t),navigation.removeEventListener("navigateerror",t),o!==null&&(o(),o=null)}}}function dh(e){this._internalRoot=e}function Mu(e){this._internalRoot=e}function xv(e){e[ll]&&(e._reactRootContainer?console.error("You are calling ReactDOMClient.createRoot() on a container that was previously passed to ReactDOM.render(). This is not supported."):console.error("You are calling ReactDOMClient.createRoot() on a container that has already been passed to createRoot() before. Instead, call root.render() on the existing root instead if you want to update it."))}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var _t=KT(),fh=Mi(),Ww=nE(),Ze=Object.assign,eA=Symbol.for("react.element"),Ga=Symbol.for("react.transitional.element"),Yr=Symbol.for("react.portal"),Xr=Symbol.for("react.fragment"),ju=Symbol.for("react.strict_mode"),mh=Symbol.for("react.profiler"),hh=Symbol.for("react.consumer"),Za=Symbol.for("react.context"),Ns=Symbol.for("react.forward_ref"),ph=Symbol.for("react.suspense"),gh=Symbol.for("react.suspense_list"),Hu=Symbol.for("react.memo"),Hn=Symbol.for("react.lazy"),bh=Symbol.for("react.activity"),tA=Symbol.for("react.memo_cache_sentinel"),Nv=Symbol.iterator,nA=Symbol.for("react.client.reference"),Bt=Array.isArray,L=fh.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,We=Ww.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,aA=Object.freeze({pending:!1,data:null,method:null,action:null}),yh=[],vh=[],vo=-1,nl=ze(null),Es=ze(null),al=ze(null),zu=ze(null),Ss=0,Ev,Sv,wv,Av,Tv,Dv,Rv;we.__reactDisabledLog=!0;var xh,Cv,Nh=!1,Eh=new(typeof WeakMap=="function"?WeakMap:Map),zn=null,Ya=!1,fa=Object.prototype.hasOwnProperty,Sh=_t.unstable_scheduleCallback,oA=_t.unstable_cancelCallback,lA=_t.unstable_shouldYield,rA=_t.unstable_requestPaint,qt=_t.unstable_now,iA=_t.unstable_getCurrentPriorityLevel,wh=_t.unstable_ImmediatePriority,Ah=_t.unstable_UserBlockingPriority,qr=_t.unstable_NormalPriority,sA=_t.unstable_LowPriority,Th=_t.unstable_IdlePriority,cA=_t.log,uA=_t.unstable_setDisableYieldValue,$r=null,nn=null,Xa=!1,qa=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u",sn=Math.clz32?Math.clz32:Bo,dA=Math.log,fA=Math.LN2,Pu=256,Vu=262144,Uu=4194304,$n=2,$a=8,xo=32,Lu=268435456,ol=Math.random().toString(36).slice(2),Wt="__reactFiber$"+ol,cn="__reactProps$"+ol,ll="__reactContainer$"+ol,Dh="__reactEvents$"+ol,mA="__reactListeners$"+ol,hA="__reactHandles$"+ol,kv="__reactResources$"+ol,ws="__reactMarker$"+ol,Ov=new Set,Jl={},Rh={},pA={button:!0,checkbox:!0,image:!0,hidden:!0,radio:!0,reset:!0,submit:!0},gA=RegExp("^[: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]*$"),_v={},Mv={},bA=/[\n"\\]/g,jv=!1,Hv=!1,zv=!1,Pv=!1,Vv=!1,Uv=!1,Lv=["value","defaultValue"],Bv=!1,Gv=/["'&<>\n\t]|^\s|\s$/,yA="address applet area article aside base basefont bgsound blockquote body br button caption center col colgroup dd details dir div dl dt embed fieldset figcaption figure footer form frame frameset h1 h2 h3 h4 h5 h6 head header hgroup hr html iframe img input isindex li link listing main marquee menu menuitem meta nav noembed noframes noscript object ol p param plaintext pre script section select source style summary table tbody td template textarea tfoot th thead title tr track ul wbr xmp".split(" "),Zv="applet caption html table td th marquee object template foreignObject desc title".split(" "),vA=Zv.concat(["button"]),xA="dd dt li option optgroup p rp rt".split(" "),Yv={current:null,formTag:null,aTagInScope:null,buttonTagInScope:null,nobrTagInScope:null,pTagInButtonScope:null,listItemTagAutoclosing:null,dlItemTagAutoclosing:null,containerTagInScope:null,implicitRootScope:!1},Bu={},Ch={animation:"animationDelay animationDirection animationDuration animationFillMode animationIterationCount animationName animationPlayState animationTimingFunction".split(" "),background:"backgroundAttachment backgroundClip backgroundColor backgroundImage backgroundOrigin backgroundPositionX backgroundPositionY backgroundRepeat backgroundSize".split(" "),backgroundPosition:["backgroundPositionX","backgroundPositionY"],border:"borderBottomColor borderBottomStyle borderBottomWidth borderImageOutset borderImageRepeat borderImageSlice borderImageSource borderImageWidth borderLeftColor borderLeftStyle borderLeftWidth borderRightColor borderRightStyle borderRightWidth borderTopColor borderTopStyle borderTopWidth".split(" "),borderBlockEnd:["borderBlockEndColor","borderBlockEndStyle","borderBlockEndWidth"],borderBlockStart:["borderBlockStartColor","borderBlockStartStyle","borderBlockStartWidth"],borderBottom:["borderBottomColor","borderBottomStyle","borderBottomWidth"],borderColor:["borderBottomColor","borderLeftColor","borderRightColor","borderTopColor"],borderImage:["borderImageOutset","borderImageRepeat","borderImageSlice","borderImageSource","borderImageWidth"],borderInlineEnd:["borderInlineEndColor","borderInlineEndStyle","borderInlineEndWidth"],borderInlineStart:["borderInlineStartColor","borderInlineStartStyle","borderInlineStartWidth"],borderLeft:["borderLeftColor","borderLeftStyle","borderLeftWidth"],borderRadius:["borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius"],borderRight:["borderRightColor","borderRightStyle","borderRightWidth"],borderStyle:["borderBottomStyle","borderLeftStyle","borderRightStyle","borderTopStyle"],borderTop:["borderTopColor","borderTopStyle","borderTopWidth"],borderWidth:["borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopWidth"],columnRule:["columnRuleColor","columnRuleStyle","columnRuleWidth"],columns:["columnCount","columnWidth"],flex:["flexBasis","flexGrow","flexShrink"],flexFlow:["flexDirection","flexWrap"],font:"fontFamily fontFeatureSettings fontKerning fontLanguageOverride fontSize fontSizeAdjust fontStretch fontStyle fontVariant fontVariantAlternates fontVariantCaps fontVariantEastAsian fontVariantLigatures fontVariantNumeric fontVariantPosition fontWeight lineHeight".split(" "),fontVariant:"fontVariantAlternates fontVariantCaps fontVariantEastAsian fontVariantLigatures fontVariantNumeric fontVariantPosition".split(" "),gap:["columnGap","rowGap"],grid:"gridAutoColumns gridAutoFlow gridAutoRows gridTemplateAreas gridTemplateColumns gridTemplateRows".split(" "),gridArea:["gridColumnEnd","gridColumnStart","gridRowEnd","gridRowStart"],gridColumn:["gridColumnEnd","gridColumnStart"],gridColumnGap:["columnGap"],gridGap:["columnGap","rowGap"],gridRow:["gridRowEnd","gridRowStart"],gridRowGap:["rowGap"],gridTemplate:["gridTemplateAreas","gridTemplateColumns","gridTemplateRows"],listStyle:["listStyleImage","listStylePosition","listStyleType"],margin:["marginBottom","marginLeft","marginRight","marginTop"],marker:["markerEnd","markerMid","markerStart"],mask:"maskClip maskComposite maskImage maskMode maskOrigin maskPositionX maskPositionY maskRepeat maskSize".split(" "),maskPosition:["maskPositionX","maskPositionY"],outline:["outlineColor","outlineStyle","outlineWidth"],overflow:["overflowX","overflowY"],padding:["paddingBottom","paddingLeft","paddingRight","paddingTop"],placeContent:["alignContent","justifyContent"],placeItems:["alignItems","justifyItems"],placeSelf:["alignSelf","justifySelf"],textDecoration:["textDecorationColor","textDecorationLine","textDecorationStyle"],textEmphasis:["textEmphasisColor","textEmphasisStyle"],transition:["transitionDelay","transitionDuration","transitionProperty","transitionTimingFunction"],wordWrap:["overflowWrap"]},Xv=/([A-Z])/g,qv=/^ms-/,NA=/^(?:webkit|moz|o)[A-Z]/,EA=/^-ms-/,SA=/-(.)/g,$v=/;\s*$/,Jr={},kh={},Jv=!1,Qv=!1,Fv=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" ")),Gu="http://www.w3.org/1998/Math/MathML",Qr="http://www.w3.org/2000/svg",wA=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),Zu={accept:"accept",acceptcharset:"acceptCharset","accept-charset":"acceptCharset",accesskey:"accessKey",action:"action",allowfullscreen:"allowFullScreen",alt:"alt",as:"as",async:"async",autocapitalize:"autoCapitalize",autocomplete:"autoComplete",autocorrect:"autoCorrect",autofocus:"autoFocus",autoplay:"autoPlay",autosave:"autoSave",capture:"capture",cellpadding:"cellPadding",cellspacing:"cellSpacing",challenge:"challenge",charset:"charSet",checked:"checked",children:"children",cite:"cite",class:"className",classid:"classID",classname:"className",cols:"cols",colspan:"colSpan",content:"content",contenteditable:"contentEditable",contextmenu:"contextMenu",controls:"controls",controlslist:"controlsList",coords:"coords",crossorigin:"crossOrigin",dangerouslysetinnerhtml:"dangerouslySetInnerHTML",data:"data",datetime:"dateTime",default:"default",defaultchecked:"defaultChecked",defaultvalue:"defaultValue",defer:"defer",dir:"dir",disabled:"disabled",disablepictureinpicture:"disablePictureInPicture",disableremoteplayback:"disableRemotePlayback",download:"download",draggable:"draggable",enctype:"encType",enterkeyhint:"enterKeyHint",fetchpriority:"fetchPriority",for:"htmlFor",form:"form",formmethod:"formMethod",formaction:"formAction",formenctype:"formEncType",formnovalidate:"formNoValidate",formtarget:"formTarget",frameborder:"frameBorder",headers:"headers",height:"height",hidden:"hidden",high:"high",href:"href",hreflang:"hrefLang",htmlfor:"htmlFor",httpequiv:"httpEquiv","http-equiv":"httpEquiv",icon:"icon",id:"id",imagesizes:"imageSizes",imagesrcset:"imageSrcSet",inert:"inert",innerhtml:"innerHTML",inputmode:"inputMode",integrity:"integrity",is:"is",itemid:"itemID",itemprop:"itemProp",itemref:"itemRef",itemscope:"itemScope",itemtype:"itemType",keyparams:"keyParams",keytype:"keyType",kind:"kind",label:"label",lang:"lang",list:"list",loop:"loop",low:"low",manifest:"manifest",marginwidth:"marginWidth",marginheight:"marginHeight",max:"max",maxlength:"maxLength",media:"media",mediagroup:"mediaGroup",method:"method",min:"min",minlength:"minLength",multiple:"multiple",muted:"muted",name:"name",nomodule:"noModule",nonce:"nonce",novalidate:"noValidate",open:"open",optimum:"optimum",pattern:"pattern",placeholder:"placeholder",playsinline:"playsInline",poster:"poster",preload:"preload",profile:"profile",radiogroup:"radioGroup",readonly:"readOnly",referrerpolicy:"referrerPolicy",rel:"rel",required:"required",reversed:"reversed",role:"role",rows:"rows",rowspan:"rowSpan",sandbox:"sandbox",scope:"scope",scoped:"scoped",scrolling:"scrolling",seamless:"seamless",selected:"selected",shape:"shape",size:"size",sizes:"sizes",span:"span",spellcheck:"spellCheck",src:"src",srcdoc:"srcDoc",srclang:"srcLang",srcset:"srcSet",start:"start",step:"step",style:"style",summary:"summary",tabindex:"tabIndex",target:"target",title:"title",type:"type",usemap:"useMap",value:"value",width:"width",wmode:"wmode",wrap:"wrap",about:"about",accentheight:"accentHeight","accent-height":"accentHeight",accumulate:"accumulate",additive:"additive",alignmentbaseline:"alignmentBaseline","alignment-baseline":"alignmentBaseline",allowreorder:"allowReorder",alphabetic:"alphabetic",amplitude:"amplitude",arabicform:"arabicForm","arabic-form":"arabicForm",ascent:"ascent",attributename:"attributeName",attributetype:"attributeType",autoreverse:"autoReverse",azimuth:"azimuth",basefrequency:"baseFrequency",baselineshift:"baselineShift","baseline-shift":"baselineShift",baseprofile:"baseProfile",bbox:"bbox",begin:"begin",bias:"bias",by:"by",calcmode:"calcMode",capheight:"capHeight","cap-height":"capHeight",clip:"clip",clippath:"clipPath","clip-path":"clipPath",clippathunits:"clipPathUnits",cliprule:"clipRule","clip-rule":"clipRule",color:"color",colorinterpolation:"colorInterpolation","color-interpolation":"colorInterpolation",colorinterpolationfilters:"colorInterpolationFilters","color-interpolation-filters":"colorInterpolationFilters",colorprofile:"colorProfile","color-profile":"colorProfile",colorrendering:"colorRendering","color-rendering":"colorRendering",contentscripttype:"contentScriptType",contentstyletype:"contentStyleType",cursor:"cursor",cx:"cx",cy:"cy",d:"d",datatype:"datatype",decelerate:"decelerate",descent:"descent",diffuseconstant:"diffuseConstant",direction:"direction",display:"display",divisor:"divisor",dominantbaseline:"dominantBaseline","dominant-baseline":"dominantBaseline",dur:"dur",dx:"dx",dy:"dy",edgemode:"edgeMode",elevation:"elevation",enablebackground:"enableBackground","enable-background":"enableBackground",end:"end",exponent:"exponent",externalresourcesrequired:"externalResourcesRequired",fill:"fill",fillopacity:"fillOpacity","fill-opacity":"fillOpacity",fillrule:"fillRule","fill-rule":"fillRule",filter:"filter",filterres:"filterRes",filterunits:"filterUnits",floodopacity:"floodOpacity","flood-opacity":"floodOpacity",floodcolor:"floodColor","flood-color":"floodColor",focusable:"focusable",fontfamily:"fontFamily","font-family":"fontFamily",fontsize:"fontSize","font-size":"fontSize",fontsizeadjust:"fontSizeAdjust","font-size-adjust":"fontSizeAdjust",fontstretch:"fontStretch","font-stretch":"fontStretch",fontstyle:"fontStyle","font-style":"fontStyle",fontvariant:"fontVariant","font-variant":"fontVariant",fontweight:"fontWeight","font-weight":"fontWeight",format:"format",from:"from",fx:"fx",fy:"fy",g1:"g1",g2:"g2",glyphname:"glyphName","glyph-name":"glyphName",glyphorientationhorizontal:"glyphOrientationHorizontal","glyph-orientation-horizontal":"glyphOrientationHorizontal",glyphorientationvertical:"glyphOrientationVertical","glyph-orientation-vertical":"glyphOrientationVertical",glyphref:"glyphRef",gradienttransform:"gradientTransform",gradientunits:"gradientUnits",hanging:"hanging",horizadvx:"horizAdvX","horiz-adv-x":"horizAdvX",horizoriginx:"horizOriginX","horiz-origin-x":"horizOriginX",ideographic:"ideographic",imagerendering:"imageRendering","image-rendering":"imageRendering",in2:"in2",in:"in",inlist:"inlist",intercept:"intercept",k1:"k1",k2:"k2",k3:"k3",k4:"k4",k:"k",kernelmatrix:"kernelMatrix",kernelunitlength:"kernelUnitLength",kerning:"kerning",keypoints:"keyPoints",keysplines:"keySplines",keytimes:"keyTimes",lengthadjust:"lengthAdjust",letterspacing:"letterSpacing","letter-spacing":"letterSpacing",lightingcolor:"lightingColor","lighting-color":"lightingColor",limitingconeangle:"limitingConeAngle",local:"local",markerend:"markerEnd","marker-end":"markerEnd",markerheight:"markerHeight",markermid:"markerMid","marker-mid":"markerMid",markerstart:"markerStart","marker-start":"markerStart",markerunits:"markerUnits",markerwidth:"markerWidth",mask:"mask",maskcontentunits:"maskContentUnits",maskunits:"maskUnits",mathematical:"mathematical",mode:"mode",numoctaves:"numOctaves",offset:"offset",opacity:"opacity",operator:"operator",order:"order",orient:"orient",orientation:"orientation",origin:"origin",overflow:"overflow",overlineposition:"overlinePosition","overline-position":"overlinePosition",overlinethickness:"overlineThickness","overline-thickness":"overlineThickness",paintorder:"paintOrder","paint-order":"paintOrder",panose1:"panose1","panose-1":"panose1",pathlength:"pathLength",patterncontentunits:"patternContentUnits",patterntransform:"patternTransform",patternunits:"patternUnits",pointerevents:"pointerEvents","pointer-events":"pointerEvents",points:"points",pointsatx:"pointsAtX",pointsaty:"pointsAtY",pointsatz:"pointsAtZ",popover:"popover",popovertarget:"popoverTarget",popovertargetaction:"popoverTargetAction",prefix:"prefix",preservealpha:"preserveAlpha",preserveaspectratio:"preserveAspectRatio",primitiveunits:"primitiveUnits",property:"property",r:"r",radius:"radius",refx:"refX",refy:"refY",renderingintent:"renderingIntent","rendering-intent":"renderingIntent",repeatcount:"repeatCount",repeatdur:"repeatDur",requiredextensions:"requiredExtensions",requiredfeatures:"requiredFeatures",resource:"resource",restart:"restart",result:"result",results:"results",rotate:"rotate",rx:"rx",ry:"ry",scale:"scale",security:"security",seed:"seed",shaperendering:"shapeRendering","shape-rendering":"shapeRendering",slope:"slope",spacing:"spacing",specularconstant:"specularConstant",specularexponent:"specularExponent",speed:"speed",spreadmethod:"spreadMethod",startoffset:"startOffset",stddeviation:"stdDeviation",stemh:"stemh",stemv:"stemv",stitchtiles:"stitchTiles",stopcolor:"stopColor","stop-color":"stopColor",stopopacity:"stopOpacity","stop-opacity":"stopOpacity",strikethroughposition:"strikethroughPosition","strikethrough-position":"strikethroughPosition",strikethroughthickness:"strikethroughThickness","strikethrough-thickness":"strikethroughThickness",string:"string",stroke:"stroke",strokedasharray:"strokeDasharray","stroke-dasharray":"strokeDasharray",strokedashoffset:"strokeDashoffset","stroke-dashoffset":"strokeDashoffset",strokelinecap:"strokeLinecap","stroke-linecap":"strokeLinecap",strokelinejoin:"strokeLinejoin","stroke-linejoin":"strokeLinejoin",strokemiterlimit:"strokeMiterlimit","stroke-miterlimit":"strokeMiterlimit",strokewidth:"strokeWidth","stroke-width":"strokeWidth",strokeopacity:"strokeOpacity","stroke-opacity":"strokeOpacity",suppresscontenteditablewarning:"suppressContentEditableWarning",suppresshydrationwarning:"suppressHydrationWarning",surfacescale:"surfaceScale",systemlanguage:"systemLanguage",tablevalues:"tableValues",targetx:"targetX",targety:"targetY",textanchor:"textAnchor","text-anchor":"textAnchor",textdecoration:"textDecoration","text-decoration":"textDecoration",textlength:"textLength",textrendering:"textRendering","text-rendering":"textRendering",to:"to",transform:"transform",transformorigin:"transformOrigin","transform-origin":"transformOrigin",typeof:"typeof",u1:"u1",u2:"u2",underlineposition:"underlinePosition","underline-position":"underlinePosition",underlinethickness:"underlineThickness","underline-thickness":"underlineThickness",unicode:"unicode",unicodebidi:"unicodeBidi","unicode-bidi":"unicodeBidi",unicoderange:"unicodeRange","unicode-range":"unicodeRange",unitsperem:"unitsPerEm","units-per-em":"unitsPerEm",unselectable:"unselectable",valphabetic:"vAlphabetic","v-alphabetic":"vAlphabetic",values:"values",vectoreffect:"vectorEffect","vector-effect":"vectorEffect",version:"version",vertadvy:"vertAdvY","vert-adv-y":"vertAdvY",vertoriginx:"vertOriginX","vert-origin-x":"vertOriginX",vertoriginy:"vertOriginY","vert-origin-y":"vertOriginY",vhanging:"vHanging","v-hanging":"vHanging",videographic:"vIdeographic","v-ideographic":"vIdeographic",viewbox:"viewBox",viewtarget:"viewTarget",visibility:"visibility",vmathematical:"vMathematical","v-mathematical":"vMathematical",vocab:"vocab",widths:"widths",wordspacing:"wordSpacing","word-spacing":"wordSpacing",writingmode:"writingMode","writing-mode":"writingMode",x1:"x1",x2:"x2",x:"x",xchannelselector:"xChannelSelector",xheight:"xHeight","x-height":"xHeight",xlinkactuate:"xlinkActuate","xlink:actuate":"xlinkActuate",xlinkarcrole:"xlinkArcrole","xlink:arcrole":"xlinkArcrole",xlinkhref:"xlinkHref","xlink:href":"xlinkHref",xlinkrole:"xlinkRole","xlink:role":"xlinkRole",xlinkshow:"xlinkShow","xlink:show":"xlinkShow",xlinktitle:"xlinkTitle","xlink:title":"xlinkTitle",xlinktype:"xlinkType","xlink:type":"xlinkType",xmlbase:"xmlBase","xml:base":"xmlBase",xmllang:"xmlLang","xml:lang":"xmlLang",xmlns:"xmlns","xml:space":"xmlSpace",xmlnsxlink:"xmlnsXlink","xmlns:xlink":"xmlnsXlink",xmlspace:"xmlSpace",y1:"y1",y2:"y2",y:"y",ychannelselector:"yChannelSelector",z:"z",zoomandpan:"zoomAndPan"},Iv={"aria-current":0,"aria-description":0,"aria-details":0,"aria-disabled":0,"aria-hidden":0,"aria-invalid":0,"aria-keyshortcuts":0,"aria-label":0,"aria-roledescription":0,"aria-autocomplete":0,"aria-checked":0,"aria-expanded":0,"aria-haspopup":0,"aria-level":0,"aria-modal":0,"aria-multiline":0,"aria-multiselectable":0,"aria-orientation":0,"aria-placeholder":0,"aria-pressed":0,"aria-readonly":0,"aria-required":0,"aria-selected":0,"aria-sort":0,"aria-valuemax":0,"aria-valuemin":0,"aria-valuenow":0,"aria-valuetext":0,"aria-atomic":0,"aria-busy":0,"aria-live":0,"aria-relevant":0,"aria-dropeffect":0,"aria-grabbed":0,"aria-activedescendant":0,"aria-colcount":0,"aria-colindex":0,"aria-colspan":0,"aria-controls":0,"aria-describedby":0,"aria-errormessage":0,"aria-flowto":0,"aria-labelledby":0,"aria-owns":0,"aria-posinset":0,"aria-rowcount":0,"aria-rowindex":0,"aria-rowspan":0,"aria-setsize":0,"aria-braillelabel":0,"aria-brailleroledescription":0,"aria-colindextext":0,"aria-rowindextext":0},Fr={},AA=RegExp("^(aria)-[: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]*$"),TA=RegExp("^(aria)[A-Z][: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]*$"),Kv=!1,un={},Wv=/^on./,DA=/^on[^A-Z]/,RA=RegExp("^(aria)-[: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]*$"),CA=RegExp("^(aria)[A-Z][: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]*$"),kA=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i,As=null,Ir=null,Kr=null,Oh=!1,Ja=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),_h=!1;if(Ja)try{var Ts={};Object.defineProperty(Ts,"passive",{get:function(){_h=!0}}),window.addEventListener("test",Ts,Ts),window.removeEventListener("test",Ts,Ts)}catch{_h=!1}var rl=null,Mh=null,Yu=null,Ql={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Xu=vn(Ql),Ds=Ze({},Ql,{view:0,detail:0}),OA=vn(Ds),jh,Hh,Rs,qu=Ze({},Ds,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:pf,button:0,buttons:0,relatedTarget:function(e){return e.relatedTarget===void 0?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return"movementX"in e?e.movementX:(e!==Rs&&(Rs&&e.type==="mousemove"?(jh=e.screenX-Rs.screenX,Hh=e.screenY-Rs.screenY):Hh=jh=0,Rs=e),jh)},movementY:function(e){return"movementY"in e?e.movementY:Hh}}),ex=vn(qu),_A=Ze({},qu,{dataTransfer:0}),MA=vn(_A),jA=Ze({},Ds,{relatedTarget:0}),zh=vn(jA),HA=Ze({},Ql,{animationName:0,elapsedTime:0,pseudoElement:0}),zA=vn(HA),PA=Ze({},Ql,{clipboardData:function(e){return"clipboardData"in e?e.clipboardData:window.clipboardData}}),VA=vn(PA),UA=Ze({},Ql,{data:0}),tx=vn(UA),LA=tx,BA={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},GA={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},ZA={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"},YA=Ze({},Ds,{key:function(e){if(e.key){var t=BA[e.key]||e.key;if(t!=="Unidentified")return t}return e.type==="keypress"?(e=Oc(e),e===13?"Enter":String.fromCharCode(e)):e.type==="keydown"||e.type==="keyup"?GA[e.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:pf,charCode:function(e){return e.type==="keypress"?Oc(e):0},keyCode:function(e){return e.type==="keydown"||e.type==="keyup"?e.keyCode:0},which:function(e){return e.type==="keypress"?Oc(e):e.type==="keydown"||e.type==="keyup"?e.keyCode:0}}),XA=vn(YA),qA=Ze({},qu,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),nx=vn(qA),$A=Ze({},Ds,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:pf}),JA=vn($A),QA=Ze({},Ql,{propertyName:0,elapsedTime:0,pseudoElement:0}),FA=vn(QA),IA=Ze({},qu,{deltaX:function(e){return"deltaX"in e?e.deltaX:"wheelDeltaX"in e?-e.wheelDeltaX:0},deltaY:function(e){return"deltaY"in e?e.deltaY:"wheelDeltaY"in e?-e.wheelDeltaY:"wheelDelta"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),KA=vn(IA),WA=Ze({},Ql,{newState:0,oldState:0}),eT=vn(WA),tT=[9,13,27,32],ax=229,Ph=Ja&&"CompositionEvent"in window,Cs=null;Ja&&"documentMode"in document&&(Cs=document.documentMode);var nT=Ja&&"TextEvent"in window&&!Cs,ox=Ja&&(!Ph||Cs&&8<Cs&&11>=Cs),lx=32,rx=String.fromCharCode(lx),ix=!1,Wr=!1,aT={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0},ks=null,Os=null,sx=!1;Ja&&(sx=SS("input")&&(!document.documentMode||9<document.documentMode));var dn=typeof Object.is=="function"?Object.is:CS,oT=Ja&&"documentMode"in document&&11>=document.documentMode,ei=null,Vh=null,_s=null,Uh=!1,ti={animationend:jl("Animation","AnimationEnd"),animationiteration:jl("Animation","AnimationIteration"),animationstart:jl("Animation","AnimationStart"),transitionrun:jl("Transition","TransitionRun"),transitionstart:jl("Transition","TransitionStart"),transitioncancel:jl("Transition","TransitionCancel"),transitionend:jl("Transition","TransitionEnd")},Lh={},cx={};Ja&&(cx=document.createElement("div").style,"AnimationEvent"in window||(delete ti.animationend.animation,delete ti.animationiteration.animation,delete ti.animationstart.animation),"TransitionEvent"in window||delete ti.transitionend.transition);var ux=Hl("animationend"),dx=Hl("animationiteration"),fx=Hl("animationstart"),lT=Hl("transitionrun"),rT=Hl("transitionstart"),iT=Hl("transitioncancel"),mx=Hl("transitionend"),hx=new Map,Bh="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");Bh.push("scrollEnd");var px=0;if(typeof performance=="object"&&typeof performance.now=="function")var sT=performance,gx=function(){return sT.now()};else{var cT=Date;gx=function(){return cT.now()}}var Gh=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)},uT="This object has been omitted by React in the console log to avoid sending too much data from the server. Try logging smaller or more specific objects.",$u=0,Zh=1,Yh=2,Xh=3,Ju="– ",Qu="+ ",bx=" ",ft=typeof console<"u"&&typeof console.timeStamp=="function"&&typeof performance<"u"&&typeof performance.measure=="function",Jn="Components ⚛",$e="Scheduler ⚛",Qe="Blocking",il=!1,No={color:"primary",properties:null,tooltipText:"",track:Jn},sl={start:-0,end:-0,detail:{devtools:No}},dT=["Changed Props",""],yx="This component received deeply equal props. It might benefit from useMemo or the React Compiler in its owner.",fT=["Changed Props",yx],Ms=1,Eo=2,Qn=[],ni=0,qh=0,cl={};Object.freeze(cl);var Fn=null,ai=null,ke=0,mT=1,Ve=2,an=8,ma=16,hT=32,vx=!1;try{var xx=Object.preventExtensions({})}catch{vx=!0}var $h=new WeakMap,oi=[],li=0,Fu=null,js=0,In=[],Kn=0,Fl=null,So=1,wo="",en=null,mt=null,Xe=!1,Qa=!1,Pn=null,ul=null,Wn=!1,Jh=Error("Hydration Mismatch Exception: This is not a real error, and should not leak into userspace. If you're seeing this, it's likely a bug in React."),Qh=ze(null),Fh=ze(null),Nx={},Iu=null,ri=null,ii=!1,pT=typeof AbortController<"u"?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(n,a){e.push(a)}};this.abort=function(){t.aborted=!0,e.forEach(function(n){return n()})}},gT=_t.unstable_scheduleCallback,bT=_t.unstable_NormalPriority,Mt={$$typeof:Za,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0,_currentRenderer:null,_currentRenderer2:null},jt=_t.unstable_now,Ku=console.createTask?console.createTask:function(){return null},Hs=1,Wu=2,$t=-0,dl=-0,Ao=-0,To=null,fn=-1.1,Il=-0,vt=-0,Ae=-1.1,Re=-1.1,gt=null,St=!1,Kl=-0,Fa=-1.1,zs=null,fl=0,Ih=null,Kh=null,Wl=-1.1,Ps=null,si=-1.1,ed=-1.1,Do=-0,Ro=-1.1,ea=-1.1,Wh=0,Vs=null,Ex=null,Sx=null,ml=-1.1,er=null,hl=-1.1,td=-1.1,wx=-0,Ax=-0,nd=0,yT=null,Tx=0,Us=-1.1,ad=!1,od=!1,Ls=null,ep=0,tr=0,ci=null,Dx=L.S;L.S=function(e,t){if(E1=qt(),typeof t=="object"&&t!==null&&typeof t.then=="function"){if(0>Ro&&0>ea){Ro=jt();var n=gs(),a=ps();(n!==hl||a!==er)&&(hl=-1.1),ml=n,er=a}zS(e,t)}Dx!==null&&Dx(e,t)};var nr=ze(null),ha={recordUnsafeLifecycleWarnings:function(){},flushPendingUnsafeLifecycleWarnings:function(){},recordLegacyContextWarning:function(){},flushLegacyContextWarning:function(){},discardPendingWarnings:function(){}},Bs=[],Gs=[],Zs=[],Ys=[],Xs=[],qs=[],ar=new Set;ha.recordUnsafeLifecycleWarnings=function(e,t){ar.has(e.type)||(typeof t.componentWillMount=="function"&&t.componentWillMount.__suppressDeprecationWarning!==!0&&Bs.push(e),e.mode&an&&typeof t.UNSAFE_componentWillMount=="function"&&Gs.push(e),typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps.__suppressDeprecationWarning!==!0&&Zs.push(e),e.mode&an&&typeof t.UNSAFE_componentWillReceiveProps=="function"&&Ys.push(e),typeof t.componentWillUpdate=="function"&&t.componentWillUpdate.__suppressDeprecationWarning!==!0&&Xs.push(e),e.mode&an&&typeof t.UNSAFE_componentWillUpdate=="function"&&qs.push(e))},ha.flushPendingUnsafeLifecycleWarnings=function(){var e=new Set;0<Bs.length&&(Bs.forEach(function(c){e.add(W(c)||"Component"),ar.add(c.type)}),Bs=[]);var t=new Set;0<Gs.length&&(Gs.forEach(function(c){t.add(W(c)||"Component"),ar.add(c.type)}),Gs=[]);var n=new Set;0<Zs.length&&(Zs.forEach(function(c){n.add(W(c)||"Component"),ar.add(c.type)}),Zs=[]);var a=new Set;0<Ys.length&&(Ys.forEach(function(c){a.add(W(c)||"Component"),ar.add(c.type)}),Ys=[]);var o=new Set;0<Xs.length&&(Xs.forEach(function(c){o.add(W(c)||"Component"),ar.add(c.type)}),Xs=[]);var l=new Set;if(0<qs.length&&(qs.forEach(function(c){l.add(W(c)||"Component"),ar.add(c.type)}),qs=[]),0<t.size){var i=b(t);console.error(`Using UNSAFE_componentWillMount in strict mode is not recommended and may indicate bugs in your code. See https://react.dev/link/unsafe-component-lifecycles for details.
* Move code with side effects to componentDidMount, and set initial state in the constructor.
Please update the following components: %s`,i)}0<a.size&&(i=b(a),console.error(`Using UNSAFE_componentWillReceiveProps in strict mode is not recommended and may indicate bugs in your code. See https://react.dev/link/unsafe-component-lifecycles for details.
* Move data fetching code or side effects to componentDidUpdate.
* If you're updating state whenever props change, refactor your code to use memoization techniques or move it to static getDerivedStateFromProps. Learn more at: https://react.dev/link/derived-state
Please update the following components: %s`,i)),0<l.size&&(i=b(l),console.error(`Using UNSAFE_componentWillUpdate in strict mode is not recommended and may indicate bugs in your code. See https://react.dev/link/unsafe-component-lifecycles for details.
* Move data fetching code or side effects to componentDidUpdate.
Please update the following components: %s`,i)),0<e.size&&(i=b(e),console.warn(`componentWillMount has been renamed, and is not recommended for use. See https://react.dev/link/unsafe-component-lifecycles for details.
* Move code with side effects to componentDidMount, and set initial state in the constructor.
* Rename componentWillMount to UNSAFE_componentWillMount to suppress this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run \`npx react-codemod rename-unsafe-lifecycles\` in your project source folder.
Please update the following components: %s`,i)),0<n.size&&(i=b(n),console.warn(`componentWillReceiveProps has been renamed, and is not recommended for use. See https://react.dev/link/unsafe-component-lifecycles for details.
* Move data fetching code or side effects to componentDidUpdate.
* If you're updating state whenever props change, refactor your code to use memoization techniques or move it to static getDerivedStateFromProps. Learn more at: https://react.dev/link/derived-state
* Rename componentWillReceiveProps to UNSAFE_componentWillReceiveProps to suppress this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run \`npx react-codemod rename-unsafe-lifecycles\` in your project source folder.
Please update the following components: %s`,i)),0<o.size&&(i=b(o),console.warn(`componentWillUpdate has been renamed, and is not recommended for use. See https://react.dev/link/unsafe-component-lifecycles for details.
* Move data fetching code or side effects to componentDidUpdate.
* Rename componentWillUpdate to UNSAFE_componentWillUpdate to suppress this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run \`npx react-codemod rename-unsafe-lifecycles\` in your project source folder.
Please update the following components: %s`,i))};var ld=new Map,Rx=new Set;ha.recordLegacyContextWarning=function(e,t){for(var n=null,a=e;a!==null;)a.mode&an&&(n=a),a=a.return;n===null?console.error("Expected to find a StrictMode component in a strict mode tree. This error is likely caused by a bug in React. Please file an issue."):!Rx.has(e.type)&&(a=ld.get(n),e.type.contextTypes!=null||e.type.childContextTypes!=null||t!==null&&typeof t.getChildContext=="function")&&(a===void 0&&(a=[],ld.set(n,a)),a.push(e))},ha.flushLegacyContextWarning=function(){ld.forEach(function(e){if(e.length!==0){var t=e[0],n=new Set;e.forEach(function(o){n.add(W(o)||"Component"),Rx.add(o.type)});var a=b(n);ae(t,function(){console.error(`Legacy context API has been detected within a strict-mode tree.
The old API will be supported in all 16.x releases, but applications using it should migrate to the new version.
Please update the following components: %s
Learn more about this warning here: https://react.dev/link/legacy-context`,a)})}})},ha.discardPendingWarnings=function(){Bs=[],Gs=[],Zs=[],Ys=[],Xs=[],qs=[],ld=new Map};var Cx={react_stack_bottom_frame:function(e,t,n){var a=Ya;Ya=!0;try{return e(t,n)}finally{Ya=a}}},tp=Cx.react_stack_bottom_frame.bind(Cx),kx={react_stack_bottom_frame:function(e){var t=Ya;Ya=!0;try{return e.render()}finally{Ya=t}}},Ox=kx.react_stack_bottom_frame.bind(kx),_x={react_stack_bottom_frame:function(e,t){try{t.componentDidMount()}catch(n){Ke(e,e.return,n)}}},np=_x.react_stack_bottom_frame.bind(_x),Mx={react_stack_bottom_frame:function(e,t,n,a,o){try{t.componentDidUpdate(n,a,o)}catch(l){Ke(e,e.return,l)}}},jx=Mx.react_stack_bottom_frame.bind(Mx),Hx={react_stack_bottom_frame:function(e,t){var n=t.stack;e.componentDidCatch(t.value,{componentStack:n!==null?n:""})}},vT=Hx.react_stack_bottom_frame.bind(Hx),zx={react_stack_bottom_frame:function(e,t,n){try{n.componentWillUnmount()}catch(a){Ke(e,t,a)}}},Px=zx.react_stack_bottom_frame.bind(zx),Vx={react_stack_bottom_frame:function(e){var t=e.create;return e=e.inst,t=t(),e.destroy=t}},xT=Vx.react_stack_bottom_frame.bind(Vx),Ux={react_stack_bottom_frame:function(e,t,n){try{n()}catch(a){Ke(e,t,a)}}},NT=Ux.react_stack_bottom_frame.bind(Ux),Lx={react_stack_bottom_frame:function(e){var t=e._init;return t(e._payload)}},ET=Lx.react_stack_bottom_frame.bind(Lx),ui=Error("Suspense Exception: This is not a real error! It's an implementation detail of `use` to interrupt the current render. You must either rethrow it immediately, or move the `use` call outside of the `try/catch` block. Capturing without rethrowing will lead to unexpected behavior.\n\nTo handle async errors, wrap your component in an error boundary, or call the promise's `.catch` method and pass the result to `use`."),ap=Error("Suspense Exception: This is not a real error, and should not leak into userspace. If you're seeing this, it's likely a bug in React."),rd=Error("Suspense Exception: This is not a real error! It's an implementation detail of `useActionState` to interrupt the current render. You must either rethrow it immediately, or move the `useActionState` call outside of the `try/catch` block. Capturing without rethrowing will lead to unexpected behavior.\n\nTo handle async errors, wrap your component in an error boundary."),id={then:function(){console.error('Internal React error: A listener was unexpectedly attached to a "noop" thenable. This is a bug in React. Please file an issue.')}},or=null,$s=!1,di=null,Js=0,Ue=null,op,Bx=op=!1,Gx={},Zx={},Yx={};R=function(e,t,n){if(n!==null&&typeof n=="object"&&n._store&&(!n._store.validated&&n.key==null||n._store.validated===2)){if(typeof n._store!="object")throw Error("React Component in warnForMissingKey should have a _store. This error is likely caused by a bug in React. Please file an issue.");n._store.validated=1;var a=W(e),o=a||"null";if(!Gx[o]){Gx[o]=!0,n=n._owner,e=e._debugOwner;var l="";e&&typeof e.tag=="number"&&(o=W(e))&&(l=`
Check the render method of \``+o+"`."),l||a&&(l=`
Check the top-level render call using <`+a+">.");var i="";n!=null&&e!==n&&(a=null,typeof n.tag=="number"?a=W(n):typeof n.name=="string"&&(a=n.name),a&&(i=" It was passed a child from "+a+".")),ae(t,function(){console.error('Each child in a list should have a unique "key" prop.%s%s See https://react.dev/link/warning-keys for more information.',l,i)})}}};var lr=zb(!0),Xx=zb(!1),qx=0,$x=1,Jx=2,lp=3,pl=!1,Qx=!1,rp=null,ip=!1,fi=ze(null),sd=ze(0),Vn=ze(null),ta=null,mi=1,Qs=2,Ct=ze(0),cd=0,na=1,mn=2,Un=4,hn=8,hi,Fx=new Set,Ix=new Set,sp=new Set,Kx=new Set,Co=0,_e=null,st=null,Ht=null,ud=!1,pi=!1,rr=!1,dd=0,Fs=0,ko=null,ST=0,wT=25,P=null,aa=null,Oo=-1,Is=!1,Ks={readContext:pt,use:Ko,useCallback:Tt,useContext:Tt,useEffect:Tt,useImperativeHandle:Tt,useLayoutEffect:Tt,useInsertionEffect:Tt,useMemo:Tt,useReducer:Tt,useRef:Tt,useState:Tt,useDebugValue:Tt,useDeferredValue:Tt,useTransition:Tt,useSyncExternalStore:Tt,useId:Tt,useHostTransitionStatus:Tt,useFormState:Tt,useActionState:Tt,useOptimistic:Tt,useMemoCache:Tt,useCacheRefresh:Tt};Ks.useEffectEvent=Tt;var cp=null,Wx=null,up=null,e1=null,Ia=null,pa=null,fd=null;cp={readContext:function(e){return pt(e)},use:Ko,useCallback:function(e,t){return P="useCallback",Ge(),Or(t),rm(e,t)},useContext:function(e){return P="useContext",Ge(),pt(e)},useEffect:function(e,t){return P="useEffect",Ge(),Or(t),lu(e,t)},useImperativeHandle:function(e,t,n){return P="useImperativeHandle",Ge(),Or(n),lm(e,t,n)},useInsertionEffect:function(e,t){P="useInsertionEffect",Ge(),Or(t),Zl(4,mn,e,t)},useLayoutEffect:function(e,t){return P="useLayoutEffect",Ge(),Or(t),om(e,t)},useMemo:function(e,t){P="useMemo",Ge(),Or(t);var n=L.H;L.H=Ia;try{return im(e,t)}finally{L.H=n}},useReducer:function(e,t,n){P="useReducer",Ge();var a=L.H;L.H=Ia;try{return Qf(e,t,n)}finally{L.H=a}},useRef:function(e){return P="useRef",Ge(),nm(e)},useState:function(e){P="useState",Ge();var t=L.H;L.H=Ia;try{return Wf(e)}finally{L.H=t}},useDebugValue:function(){P="useDebugValue",Ge()},useDeferredValue:function(e,t){return P="useDeferredValue",Ge(),sm(e,t)},useTransition:function(){return P="useTransition",Ge(),dm()},useSyncExternalStore:function(e,t,n){return P="useSyncExternalStore",Ge(),If(e,t,n)},useId:function(){return P="useId",Ge(),fm()},useFormState:function(e,t){return P="useFormState",Ge(),eu(),Mr(e,t)},useActionState:function(e,t){return P="useActionState",Ge(),Mr(e,t)},useOptimistic:function(e){return P="useOptimistic",Ge(),em(e)},useHostTransitionStatus:Yl,useMemoCache:Gl,useCacheRefresh:function(){return P="useCacheRefresh",Ge(),mm()},useEffectEvent:function(e){return P="useEffectEvent",Ge(),am(e)}},Wx={readContext:function(e){return pt(e)},use:Ko,useCallback:function(e,t){return P="useCallback",F(),rm(e,t)},useContext:function(e){return P="useContext",F(),pt(e)},useEffect:function(e,t){return P="useEffect",F(),lu(e,t)},useImperativeHandle:function(e,t,n){return P="useImperativeHandle",F(),lm(e,t,n)},useInsertionEffect:function(e,t){P="useInsertionEffect",F(),Zl(4,mn,e,t)},useLayoutEffect:function(e,t){return P="useLayoutEffect",F(),om(e,t)},useMemo:function(e,t){P="useMemo",F();var n=L.H;L.H=Ia;try{return im(e,t)}finally{L.H=n}},useReducer:function(e,t,n){P="useReducer",F();var a=L.H;L.H=Ia;try{return Qf(e,t,n)}finally{L.H=a}},useRef:function(e){return P="useRef",F(),nm(e)},useState:function(e){P="useState",F();var t=L.H;L.H=Ia;try{return Wf(e)}finally{L.H=t}},useDebugValue:function(){P="useDebugValue",F()},useDeferredValue:function(e,t){return P="useDeferredValue",F(),sm(e,t)},useTransition:function(){return P="useTransition",F(),dm()},useSyncExternalStore:function(e,t,n){return P="useSyncExternalStore",F(),If(e,t,n)},useId:function(){return P="useId",F(),fm()},useActionState:function(e,t){return P="useActionState",F(),Mr(e,t)},useFormState:function(e,t){return P="useFormState",F(),eu(),Mr(e,t)},useOptimistic:function(e){return P="useOptimistic",F(),em(e)},useHostTransitionStatus:Yl,useMemoCache:Gl,useCacheRefresh:function(){return P="useCacheRefresh",F(),mm()},useEffectEvent:function(e){return P="useEffectEvent",F(),am(e)}},up={readContext:function(e){return pt(e)},use:Ko,useCallback:function(e,t){return P="useCallback",F(),su(e,t)},useContext:function(e){return P="useContext",F(),pt(e)},useEffect:function(e,t){P="useEffect",F(),xn(2048,hn,e,t)},useImperativeHandle:function(e,t,n){return P="useImperativeHandle",F(),iu(e,t,n)},useInsertionEffect:function(e,t){return P="useInsertionEffect",F(),xn(4,mn,e,t)},useLayoutEffect:function(e,t){return P="useLayoutEffect",F(),xn(4,Un,e,t)},useMemo:function(e,t){P="useMemo",F();var n=L.H;L.H=pa;try{return cu(e,t)}finally{L.H=n}},useReducer:function(e,t,n){P="useReducer",F();var a=L.H;L.H=pa;try{return _r(e,t,n)}finally{L.H=a}},useRef:function(){return P="useRef",F(),nt().memoizedState},useState:function(){P="useState",F();var e=L.H;L.H=pa;try{return _r(ua)}finally{L.H=e}},useDebugValue:function(){P="useDebugValue",F()},useDeferredValue:function(e,t){return P="useDeferredValue",F(),oy(e,t)},useTransition:function(){return P="useTransition",F(),uy()},useSyncExternalStore:function(e,t,n){return P="useSyncExternalStore",F(),nu(e,t,n)},useId:function(){return P="useId",F(),nt().memoizedState},useFormState:function(e){return P="useFormState",F(),eu(),au(e)},useActionState:function(e){return P="useActionState",F(),au(e)},useOptimistic:function(e,t){return P="useOptimistic",F(),Jb(e,t)},useHostTransitionStatus:Yl,useMemoCache:Gl,useCacheRefresh:function(){return P="useCacheRefresh",F(),nt().memoizedState},useEffectEvent:function(e){return P="useEffectEvent",F(),ru(e)}},e1={readContext:function(e){return pt(e)},use:Ko,useCallback:function(e,t){return P="useCallback",F(),su(e,t)},useContext:function(e){return P="useContext",F(),pt(e)},useEffect:function(e,t){P="useEffect",F(),xn(2048,hn,e,t)},useImperativeHandle:function(e,t,n){return P="useImperativeHandle",F(),iu(e,t,n)},useInsertionEffect:function(e,t){return P="useInsertionEffect",F(),xn(4,mn,e,t)},useLayoutEffect:function(e,t){return P="useLayoutEffect",F(),xn(4,Un,e,t)},useMemo:function(e,t){P="useMemo",F();var n=L.H;L.H=fd;try{return cu(e,t)}finally{L.H=n}},useReducer:function(e,t,n){P="useReducer",F();var a=L.H;L.H=fd;try{return as(e,t,n)}finally{L.H=a}},useRef:function(){return P="useRef",F(),nt().memoizedState},useState:function(){P="useState",F();var e=L.H;L.H=fd;try{return as(ua)}finally{L.H=e}},useDebugValue:function(){P="useDebugValue",F()},useDeferredValue:function(e,t){return P="useDeferredValue",F(),ly(e,t)},useTransition:function(){return P="useTransition",F(),dy()},useSyncExternalStore:function(e,t,n){return P="useSyncExternalStore",F(),nu(e,t,n)},useId:function(){return P="useId",F(),nt().memoizedState},useFormState:function(e){return P="useFormState",F(),eu(),ou(e)},useActionState:function(e){return P="useActionState",F(),ou(e)},useOptimistic:function(e,t){return P="useOptimistic",F(),Fb(e,t)},useHostTransitionStatus:Yl,useMemoCache:Gl,useCacheRefresh:function(){return P="useCacheRefresh",F(),nt().memoizedState},useEffectEvent:function(e){return P="useEffectEvent",F(),ru(e)}},Ia={readContext:function(e){return N(),pt(e)},use:function(e){return x(),Ko(e)},useCallback:function(e,t){return P="useCallback",x(),Ge(),rm(e,t)},useContext:function(e){return P="useContext",x(),Ge(),pt(e)},useEffect:function(e,t){return P="useEffect",x(),Ge(),lu(e,t)},useImperativeHandle:function(e,t,n){return P="useImperativeHandle",x(),Ge(),lm(e,t,n)},useInsertionEffect:function(e,t){P="useInsertionEffect",x(),Ge(),Zl(4,mn,e,t)},useLayoutEffect:function(e,t){return P="useLayoutEffect",x(),Ge(),om(e,t)},useMemo:function(e,t){P="useMemo",x(),Ge();var n=L.H;L.H=Ia;try{return im(e,t)}finally{L.H=n}},useReducer:function(e,t,n){P="useReducer",x(),Ge();var a=L.H;L.H=Ia;try{return Qf(e,t,n)}finally{L.H=a}},useRef:function(e){return P="useRef",x(),Ge(),nm(e)},useState:function(e){P="useState",x(),Ge();var t=L.H;L.H=Ia;try{return Wf(e)}finally{L.H=t}},useDebugValue:function(){P="useDebugValue",x(),Ge()},useDeferredValue:function(e,t){return P="useDeferredValue",x(),Ge(),sm(e,t)},useTransition:function(){return P="useTransition",x(),Ge(),dm()},useSyncExternalStore:function(e,t,n){return P="useSyncExternalStore",x(),Ge(),If(e,t,n)},useId:function(){return P="useId",x(),Ge(),fm()},useFormState:function(e,t){return P="useFormState",x(),Ge(),Mr(e,t)},useActionState:function(e,t){return P="useActionState",x(),Ge(),Mr(e,t)},useOptimistic:function(e){return P="useOptimistic",x(),Ge(),em(e)},useMemoCache:function(e){return x(),Gl(e)},useHostTransitionStatus:Yl,useCacheRefresh:function(){return P="useCacheRefresh",Ge(),mm()},useEffectEvent:function(e){return P="useEffectEvent",x(),Ge(),am(e)}},pa={readContext:function(e){return N(),pt(e)},use:function(e){return x(),Ko(e)},useCallback:function(e,t){return P="useCallback",x(),F(),su(e,t)},useContext:function(e){return P="useContext",x(),F(),pt(e)},useEffect:function(e,t){P="useEffect",x(),F(),xn(2048,hn,e,t)},useImperativeHandle:function(e,t,n){return P="useImperativeHandle",x(),F(),iu(e,t,n)},useInsertionEffect:function(e,t){return P="useInsertionEffect",x(),F(),xn(4,mn,e,t)},useLayoutEffect:function(e,t){return P="useLayoutEffect",x(),F(),xn(4,Un,e,t)},useMemo:function(e,t){P="useMemo",x(),F();var n=L.H;L.H=pa;try{return cu(e,t)}finally{L.H=n}},useReducer:function(e,t,n){P="useReducer",x(),F();var a=L.H;L.H=pa;try{return _r(e,t,n)}finally{L.H=a}},useRef:function(){return P="useRef",x(),F(),nt().memoizedState},useState:function(){P="useState",x(),F();var e=L.H;L.H=pa;try{return _r(ua)}finally{L.H=e}},useDebugValue:function(){P="useDebugValue",x(),F()},useDeferredValue:function(e,t){return P="useDeferredValue",x(),F(),oy(e,t)},useTransition:function(){return P="useTransition",x(),F(),uy()},useSyncExternalStore:function(e,t,n){return P="useSyncExternalStore",x(),F(),nu(e,t,n)},useId:function(){return P="useId",x(),F(),nt().memoizedState},useFormState:function(e){return P="useFormState",x(),F(),au(e)},useActionState:function(e){return P="useActionState",x(),F(),au(e)},useOptimistic:function(e,t){return P="useOptimistic",x(),F(),Jb(e,t)},useMemoCache:function(e){return x(),Gl(e)},useHostTransitionStatus:Yl,useCacheRefresh:function(){return P="useCacheRefresh",F(),nt().memoizedState},useEffectEvent:function(e){return P="useEffectEvent",x(),F(),ru(e)}},fd={readContext:function(e){return N(),pt(e)},use:function(e){return x(),Ko(e)},useCallback:function(e,t){return P="useCallback",x(),F(),su(e,t)},useContext:function(e){return P="useContext",x(),F(),pt(e)},useEffect:function(e,t){P="useEffect",x(),F(),xn(2048,hn,e,t)},useImperativeHandle:function(e,t,n){return P="useImperativeHandle",x(),F(),iu(e,t,n)},useInsertionEffect:function(e,t){return P="useInsertionEffect",x(),F(),xn(4,mn,e,t)},useLayoutEffect:function(e,t){return P="useLayoutEffect",x(),F(),xn(4,Un,e,t)},useMemo:function(e,t){P="useMemo",x(),F();var n=L.H;L.H=pa;try{return cu(e,t)}finally{L.H=n}},useReducer:function(e,t,n){P="useReducer",x(),F();var a=L.H;L.H=pa;try{return as(e,t,n)}finally{L.H=a}},useRef:function(){return P="useRef",x(),F(),nt().memoizedState},useState:function(){P="useState",x(),F();var e=L.H;L.H=pa;try{return as(ua)}finally{L.H=e}},useDebugValue:function(){P="useDebugValue",x(),F()},useDeferredValue:function(e,t){return P="useDeferredValue",x(),F(),ly(e,t)},useTransition:function(){return P="useTransition",x(),F(),dy()},useSyncExternalStore:function(e,t,n){return P="useSyncExternalStore",x(),F(),nu(e,t,n)},useId:function(){return P="useId",x(),F(),nt().memoizedState},useFormState:function(e){return P="useFormState",x(),F(),ou(e)},useActionState:function(e){return P="useActionState",x(),F(),ou(e)},useOptimistic:function(e,t){return P="useOptimistic",x(),F(),Fb(e,t)},useMemoCache:function(e){return x(),Gl(e)},useHostTransitionStatus:Yl,useCacheRefresh:function(){return P="useCacheRefresh",F(),nt().memoizedState},useEffectEvent:function(e){return P="useEffectEvent",x(),F(),ru(e)}};var t1={},n1=new Set,a1=new Set,o1=new Set,l1=new Set,r1=new Set,i1=new Set,s1=new Set,c1=new Set,u1=new Set,d1=new Set;Object.freeze(t1);var dp={enqueueSetState:function(e,t,n){e=e._reactInternals;var a=Mn(e),o=Jo(a);o.payload=t,n!=null&&(pm(n),o.callback=n),t=Qo(e,o,a),t!==null&&(Ca(a,"this.setState()",e),Et(t,e,a),Wi(t,e,a))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var a=Mn(e),o=Jo(a);o.tag=$x,o.payload=t,n!=null&&(pm(n),o.callback=n),t=Qo(e,o,a),t!==null&&(Ca(a,"this.replaceState()",e),Et(t,e,a),Wi(t,e,a))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=Mn(e),a=Jo(n);a.tag=Jx,t!=null&&(pm(t),a.callback=t),t=Qo(e,a,n),t!==null&&(Ca(n,"this.forceUpdate()",e),Et(t,e,n),Wi(t,e,n))}},gi=null,fp=null,mp=Error("This is not a real error. It's an implementation detail of React's selective hydration feature. If this leaks into userspace, it's a bug in React. Please file an issue."),zt=!1,f1={},m1={},h1={},p1={},bi=!1,g1={},md={},hp={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null},b1=!1,y1=null;y1=new Set;var _o=!1,Pt=!1,pp=!1,v1=typeof WeakSet=="function"?WeakSet:Set,Jt=null,yi=null,vi=null,Vt=null,Sn=!1,ga=null,Gt=!1,Ws=8192,AT={getCacheForType:function(e){var t=pt(Mt),n=t.data.get(e);return n===void 0&&(n=e(),t.data.set(e,n)),n},cacheSignal:function(){return pt(Mt).controller.signal},getOwner:function(){return zn}};if(typeof Symbol=="function"&&Symbol.for){var ec=Symbol.for;ec("selector.component"),ec("selector.has_pseudo_class"),ec("selector.role"),ec("selector.test_id"),ec("selector.text")}var TT=[],DT=typeof WeakMap=="function"?WeakMap:Map,Qt=0,Zt=2,Ln=4,Mo=0,tc=1,ir=2,hd=3,gl=4,pd=6,x1=5,Fe=Qt,ct=null,Be=null,Le=0,wn=0,gd=1,sr=2,nc=3,N1=4,gp=5,ac=6,bd=7,bp=8,cr=9,at=wn,Bn=null,bl=!1,xi=!1,yp=!1,Ka=0,xt=Mo,yl=0,vl=0,vp=0,An=0,ur=0,oc=null,pn=null,yd=!1,vd=0,E1=0,S1=300,xd=1/0,w1=500,lc=null,Dt=null,xl=null,Nd=0,xp=1,Np=2,A1=3,Nl=0,T1=1,D1=2,R1=3,C1=4,Ed=5,Ut=0,El=null,Ni=null,ba=0,Ep=0,Sp=-0,wp=null,k1=null,O1=null,ya=Nd,_1=null,RT=50,rc=0,Ap=null,Tp=!1,Sd=!1,CT=50,dr=0,ic=null,Ei=!1,wd=null,M1=!1,j1=new Set,kT={},Ad=null,Si=null,Dp=!1,Rp=!1,Td=!1,Cp=!1,Sl=0,kp={};(function(){for(var e=0;e<Bh.length;e++){var t=Bh[e],n=t.toLowerCase();t=t[0].toUpperCase()+t.slice(1),sa(n,"on"+t)}sa(ux,"onAnimationEnd"),sa(dx,"onAnimationIteration"),sa(fx,"onAnimationStart"),sa("dblclick","onDoubleClick"),sa("focusin","onFocus"),sa("focusout","onBlur"),sa(lT,"onTransitionRun"),sa(rT,"onTransitionStart"),sa(iT,"onTransitionCancel"),sa(mx,"onTransitionEnd")})(),xe("onMouseEnter",["mouseout","mouseover"]),xe("onMouseLeave",["mouseout","mouseover"]),xe("onPointerEnter",["pointerout","pointerover"]),xe("onPointerLeave",["pointerout","pointerover"]),De("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),De("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),De("onBeforeInput",["compositionend","keypress","textInput","paste"]),De("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),De("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),De("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var sc="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),Op=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(sc)),Dd="_reactListening"+Math.random().toString(36).slice(2),H1=!1,z1=!1,Rd=!1,P1=!1,Cd=!1,kd=!1,V1=!1,Od={},OT=/\r\n?/g,_T=/\u0000|\uFFFD/g,fr="http://www.w3.org/1999/xlink",_p="http://www.w3.org/XML/1998/namespace",MT="javascript:throw new Error('React form unexpectedly submitted.')",jT="suppressHydrationWarning",mr="&",_d="/&",cc="$",uc="/$",wl="$?",hr="$~",wi="$!",HT="html",zT="body",PT="head",Mp="F!",U1="F",L1="loading",VT="style",jo=0,Ai=1,Md=2,jp=null,Hp=null,B1={dialog:!0,webview:!0},zp=null,dc=void 0,G1=typeof setTimeout=="function"?setTimeout:void 0,UT=typeof clearTimeout=="function"?clearTimeout:void 0,pr=-1,Z1=typeof Promise=="function"?Promise:void 0,LT=typeof queueMicrotask=="function"?queueMicrotask:typeof Z1<"u"?function(e){return Z1.resolve(null).then(e).catch(Ew)}:G1,Pp=null,gr=0,fc=1,Y1=2,X1=3,oa=4,la=new Map,q1=new Set,Ho=We.d;We.d={f:function(){var e=Ho.f(),t=Vr();return e||t},r:function(e){var t=ee(e);t!==null&&t.tag===5&&t.type==="form"?cy(t):Ho.r(e)},D:function(e){Ho.D(e),nv("dns-prefetch",e,null)},C:function(e,t){Ho.C(e,t),nv("preconnect",e,t)},L:function(e,t,n){Ho.L(e,t,n);var a=Ti;if(a&&e&&t){var o='link[rel="preload"][as="'+Xn(t)+'"]';t==="image"&&n&&n.imageSrcSet?(o+='[imagesrcset="'+Xn(n.imageSrcSet)+'"]',typeof n.imageSizes=="string"&&(o+='[imagesizes="'+Xn(n.imageSizes)+'"]')):o+='[href="'+Xn(e)+'"]';var l=o;switch(t){case"style":l=Br(e);break;case"script":l=Gr(e)}la.has(l)||(e=Ze({rel:"preload",href:t==="image"&&n&&n.imageSrcSet?void 0:e,as:t},n),la.set(l,e),a.querySelector(o)!==null||t==="style"&&a.querySelector(ys(l))||t==="script"&&a.querySelector(vs(l))||(t=a.createElement("link"),Kt(t,"link",e),Q(t),a.head.appendChild(t)))}},m:function(e,t){Ho.m(e,t);var n=Ti;if(n&&e){var a=t&&typeof t.as=="string"?t.as:"script",o='link[rel="modulepreload"][as="'+Xn(a)+'"][href="'+Xn(e)+'"]',l=o;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":l=Gr(e)}if(!la.has(l)&&(e=Ze({rel:"modulepreload",href:e},t),la.set(l,e),n.querySelector(o)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(n.querySelector(vs(l)))return}a=n.createElement("link"),Kt(a,"link",e),Q(a),n.head.appendChild(a)}}},X:function(e,t){Ho.X(e,t);var n=Ti;if(n&&e){var a=je(n).hoistableScripts,o=Gr(e),l=a.get(o);l||(l=n.querySelector(vs(o)),l||(e=Ze({src:e,async:!0},t),(t=la.get(o))&&lh(e,t),l=n.createElement("script"),Q(l),Kt(l,"link",e),n.head.appendChild(l)),l={type:"script",instance:l,count:1,state:null},a.set(o,l))}},S:function(e,t,n){Ho.S(e,t,n);var a=Ti;if(a&&e){var o=je(a).hoistableStyles,l=Br(e);t=t||"default";var i=o.get(l);if(!i){var c={loading:gr,preload:null};if(i=a.querySelector(ys(l)))c.loading=fc|oa;else{e=Ze({rel:"stylesheet",href:e,"data-precedence":t},n),(n=la.get(l))&&oh(e,n);var m=i=a.createElement("link");Q(m),Kt(m,"link",e),m._p=new Promise(function(p,O){m.onload=p,m.onerror=O}),m.addEventListener("load",function(){c.loading|=fc}),m.addEventListener("error",function(){c.loading|=Y1}),c.loading|=oa,Ru(i,t,a)}i={type:"stylesheet",instance:i,count:1,state:c},o.set(l,i)}}},M:function(e,t){Ho.M(e,t);var n=Ti;if(n&&e){var a=je(n).hoistableScripts,o=Gr(e),l=a.get(o);l||(l=n.querySelector(vs(o)),l||(e=Ze({src:e,async:!0,type:"module"},t),(t=la.get(o))&&lh(e,t),l=n.createElement("script"),Q(l),Kt(l,"link",e),n.head.appendChild(l)),l={type:"script",instance:l,count:1,state:null},a.set(o,l))}}};var Ti=typeof document>"u"?null:document,jd=null,BT=6e4,GT=800,ZT=500,Vp=0,Up=null,Hd=null,br=aA,mc={$$typeof:Za,Provider:null,Consumer:null,_currentValue:br,_currentValue2:br,_threadCount:0},$1="%c%s%c",J1="background: #e6e6e6;background: light-dark(rgba(0,0,0,0.1), rgba(255,255,255,0.25));color: #000000;color: light-dark(#000000, #ffffff);border-radius: 2px",Q1="",zd=" ",YT=Function.prototype.bind,F1=!1,I1=null,K1=null,W1=null,eN=null,tN=null,nN=null,aN=null,oN=null,lN=null,rN=null;I1=function(e,t,n,a){t=r(e,t),t!==null&&(n=s(t.memoizedState,n,0,a),t.memoizedState=n,t.baseState=n,e.memoizedProps=Ze({},e.memoizedProps),n=tn(e,2),n!==null&&Et(n,e,2))},K1=function(e,t,n){t=r(e,t),t!==null&&(n=f(t.memoizedState,n,0),t.memoizedState=n,t.baseState=n,e.memoizedProps=Ze({},e.memoizedProps),n=tn(e,2),n!==null&&Et(n,e,2))},W1=function(e,t,n,a){t=r(e,t),t!==null&&(n=u(t.memoizedState,n,a),t.memoizedState=n,t.baseState=n,e.memoizedProps=Ze({},e.memoizedProps),n=tn(e,2),n!==null&&Et(n,e,2))},eN=function(e,t,n){e.pendingProps=s(e.memoizedProps,t,0,n),e.alternate&&(e.alternate.pendingProps=e.pendingProps),t=tn(e,2),t!==null&&Et(t,e,2)},tN=function(e,t){e.pendingProps=f(e.memoizedProps,t,0),e.alternate&&(e.alternate.pendingProps=e.pendingProps),t=tn(e,2),t!==null&&Et(t,e,2)},nN=function(e,t,n){e.pendingProps=u(e.memoizedProps,t,n),e.alternate&&(e.alternate.pendingProps=e.pendingProps),t=tn(e,2),t!==null&&Et(t,e,2)},aN=function(e){var t=tn(e,2);t!==null&&Et(t,e,2)},oN=function(e){var t=Sa(),n=tn(e,t);n!==null&&Et(n,e,t)},lN=function(e){v=e},rN=function(e){g=e};var Pd=!0,Vd=null,Lp=!1,Al=null,Tl=null,Dl=null,hc=new Map,pc=new Map,Rl=[],XT="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" "),Ud=null;if(Mu.prototype.render=dh.prototype.render=function(e){var t=this._internalRoot;if(t===null)throw Error("Cannot update an unmounted root.");var n=arguments;typeof n[1]=="function"?console.error("does not support the second callback argument. To execute a side effect after rendering, declare it in a component body with useEffect()."):Z(n[1])?console.error("You passed a container to the second argument of root.render(...). You don't need to pass it again since you already passed it to create the root."):typeof n[1]<"u"&&console.error("You passed a second argument to root.render(...) but it only accepts one argument."),n=e;var a=t.current,o=Mn(a);rh(a,o,n,t,null,null)},Mu.prototype.unmount=dh.prototype.unmount=function(){var e=arguments;if(typeof e[0]=="function"&&console.error("does not support a callback argument. To execute a side effect after rendering, declare it in a component body with useEffect()."),e=this._internalRoot,e!==null){this._internalRoot=null;var t=e.containerInfo;(Fe&(Zt|Ln))!==Qt&&console.error("Attempted to synchronously unmount a root while React was already rendering. React cannot finish unmounting the root until the current render has completed, which may lead to a race condition."),rh(e.current,2,null,e,null,null),Vr(),t[ll]=null}},Mu.prototype.unstable_scheduleHydration=function(e){if(e){var t=Aa();e={blockedOn:null,target:e,priority:t};for(var n=0;n<Rl.length&&t!==0&&t<Rl[n].priority;n++);Rl.splice(n,0,e),n===0&&gv(e)}},(function(){var e=fh.version;if(e!=="19.2.1")throw Error(`Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:
- react: `+(e+`
- react-dom: 19.2.1
Learn more: https://react.dev/warnings/version-mismatch`))})(),typeof Map=="function"&&Map.prototype!=null&&typeof Map.prototype.forEach=="function"&&typeof Set=="function"&&Set.prototype!=null&&typeof Set.prototype.clear=="function"&&typeof Set.prototype.forEach=="function"||console.error("React depends on Map and Set built-in types. Make sure that you load a polyfill in older browsers. https://react.dev/link/react-polyfills"),We.findDOMNode=function(e){var t=e._reactInternals;if(t===void 0)throw typeof e.render=="function"?Error("Unable to find node on an unmounted component."):(e=Object.keys(e).join(","),Error("Argument appears to not be a ReactComponent. Keys: "+e));return e=me(t),e=e!==null?Ne(e):null,e=e===null?null:e.stateNode,e},!(function(){var e={bundleType:1,version:"19.2.1",rendererPackageName:"react-dom",currentDispatcherRef:L,reconcilerVersion:"19.2.1"};return e.overrideHookState=I1,e.overrideHookStateDeletePath=K1,e.overrideHookStateRenamePath=W1,e.overrideProps=eN,e.overridePropsDeletePath=tN,e.overridePropsRenamePath=nN,e.scheduleUpdate=aN,e.scheduleRetry=oN,e.setErrorHandler=lN,e.setSuspenseHandler=rN,e.scheduleRefresh=j,e.scheduleRoot=C,e.setRefreshHandler=Y,e.getCurrentFiber=Jw,Dn(e)})()&&Ja&&window.top===window.self&&(-1<navigator.userAgent.indexOf("Chrome")&&navigator.userAgent.indexOf("Edge")===-1||-1<navigator.userAgent.indexOf("Firefox"))){var iN=window.location.protocol;/^(https?|file):$/.test(iN)&&console.info("%cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools"+(iN==="file:"?`
You might need to use a local HTTP server (instead of file://): https://react.dev/link/react-devtools-faq`:""),"font-weight:bold")}gc.createRoot=function(e,t){if(!Z(e))throw Error("Target container is not a DOM element.");xv(e);var n=!1,a="",o=by,l=yy,i=vy;return t!=null&&(t.hydrate?console.warn("hydrate through createRoot is deprecated. Use ReactDOMClient.hydrateRoot(container, <App />) instead."):typeof t=="object"&&t!==null&&t.$$typeof===Ga&&console.error(`You passed a JSX element to createRoot. You probably meant to call root.render instead. Example usage:
let root = createRoot(domContainer);
root.render(<App />);`),t.unstable_strictMode===!0&&(n=!0),t.identifierPrefix!==void 0&&(a=t.identifierPrefix),t.onUncaughtError!==void 0&&(o=t.onUncaughtError),t.onCaughtError!==void 0&&(l=t.onCaughtError),t.onRecoverableError!==void 0&&(i=t.onRecoverableError)),t=cv(e,1,!1,null,null,n,a,null,o,l,i,vv),e[ll]=t.current,qm(e),new dh(t)},gc.hydrateRoot=function(e,t,n){if(!Z(e))throw Error("Target container is not a DOM element.");xv(e),t===void 0&&console.error("Must provide initial children as second argument to hydrateRoot. Example usage: hydrateRoot(domContainer, <App />)");var a=!1,o="",l=by,i=yy,c=vy,m=null;return n!=null&&(n.unstable_strictMode===!0&&(a=!0),n.identifierPrefix!==void 0&&(o=n.identifierPrefix),n.onUncaughtError!==void 0&&(l=n.onUncaughtError),n.onCaughtError!==void 0&&(i=n.onCaughtError),n.onRecoverableError!==void 0&&(c=n.onRecoverableError),n.formState!==void 0&&(m=n.formState)),t=cv(e,1,!0,t,n??null,a,o,m,l,i,c,vv),t.context=uv(null),n=t.current,a=Mn(n),a=wa(a),o=Jo(a),o.callback=null,Qo(n,o,a),Ca(a,"hydrateRoot()",null),n=a,t.current.lanes=n,ia(t,n),La(t),e[ll]=t.current,qm(e),new Mu(t)},gc.version="19.2.1",typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})(),gc}var bN;function tD(){return bN||(bN=1,Zp.exports=eD()),Zp.exports}var nD=tD(),H=Mi();const ne=tE(H),aD=$T({__proto__:null,default:ne},[H]);var oD=(r,s,u,d,f,g,v,x)=>{let N=document.documentElement,S=["light","dark"];function R(C){(Array.isArray(r)?r:[r]).forEach(j=>{let Y=j==="class",Z=Y&&g?f.map(B=>g[B]||B):f;Y?(N.classList.remove(...Z),N.classList.add(g&&g[C]?g[C]:C)):N.setAttribute(j,C)}),b(C)}function b(C){x&&S.includes(C)&&(N.style.colorScheme=C)}function E(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(d)R(d);else try{let C=localStorage.getItem(s)||u,j=v&&C==="system"?E():C;R(j)}catch{}},lD=H.createContext(void 0),rD={setTheme:r=>{},themes:[]},iD=()=>{var r;return(r=H.useContext(lD))!=null?r:rD};H.memo(({forcedTheme:r,storageKey:s,attribute:u,enableSystem:d,enableColorScheme:f,defaultTheme:g,value:v,themes:x,nonce:N,scriptProps:S})=>{let R=JSON.stringify([u,s,g,r,x,v,d,f]).slice(1,-1);return H.createElement("script",{...S,suppressHydrationWarning:!0,nonce:typeof window>"u"?N:"",dangerouslySetInnerHTML:{__html:`(${oD.toString()})(${R})`}})});var ug=nE();const sD=tE(ug);function cD(r){if(typeof document>"u")return;let s=document.head||document.getElementsByTagName("head")[0],u=document.createElement("style");u.type="text/css",s.appendChild(u),u.styleSheet?u.styleSheet.cssText=r:u.appendChild(document.createTextNode(r))}const uD=r=>{switch(r){case"success":return mD;case"info":return pD;case"warning":return hD;case"error":return gD;default:return null}},dD=Array(12).fill(0),fD=({visible:r,className:s})=>ne.createElement("div",{className:["sonner-loading-wrapper",s].filter(Boolean).join(" "),"data-visible":r},ne.createElement("div",{className:"sonner-spinner"},dD.map((u,d)=>ne.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${d}`})))),mD=ne.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},ne.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),hD=ne.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},ne.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),pD=ne.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},ne.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),gD=ne.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},ne.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),bD=ne.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},ne.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),ne.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),yD=()=>{const[r,s]=ne.useState(document.hidden);return ne.useEffect(()=>{const u=()=>{s(document.hidden)};return document.addEventListener("visibilitychange",u),()=>window.removeEventListener("visibilitychange",u)},[]),r};let eg=1;class vD{constructor(){this.subscribe=s=>(this.subscribers.push(s),()=>{const u=this.subscribers.indexOf(s);this.subscribers.splice(u,1)}),this.publish=s=>{this.subscribers.forEach(u=>u(s))},this.addToast=s=>{this.publish(s),this.toasts=[...this.toasts,s]},this.create=s=>{var u;const{message:d,...f}=s,g=typeof s?.id=="number"||((u=s.id)==null?void 0:u.length)>0?s.id:eg++,v=this.toasts.find(N=>N.id===g),x=s.dismissible===void 0?!0:s.dismissible;return this.dismissedToasts.has(g)&&this.dismissedToasts.delete(g),v?this.toasts=this.toasts.map(N=>N.id===g?(this.publish({...N,...s,id:g,title:d}),{...N,...s,id:g,dismissible:x,title:d}):N):this.addToast({title:d,...f,dismissible:x,id:g}),g},this.dismiss=s=>(s?(this.dismissedToasts.add(s),requestAnimationFrame(()=>this.subscribers.forEach(u=>u({id:s,dismiss:!0})))):this.toasts.forEach(u=>{this.subscribers.forEach(d=>d({id:u.id,dismiss:!0}))}),s),this.message=(s,u)=>this.create({...u,message:s}),this.error=(s,u)=>this.create({...u,message:s,type:"error"}),this.success=(s,u)=>this.create({...u,type:"success",message:s}),this.info=(s,u)=>this.create({...u,type:"info",message:s}),this.warning=(s,u)=>this.create({...u,type:"warning",message:s}),this.loading=(s,u)=>this.create({...u,type:"loading",message:s}),this.promise=(s,u)=>{if(!u)return;let d;u.loading!==void 0&&(d=this.create({...u,promise:s,type:"loading",message:u.loading,description:typeof u.description!="function"?u.description:void 0}));const f=Promise.resolve(s instanceof Function?s():s);let g=d!==void 0,v;const x=f.then(async S=>{if(v=["resolve",S],ne.isValidElement(S))g=!1,this.create({id:d,type:"default",message:S});else if(ND(S)&&!S.ok){g=!1;const b=typeof u.error=="function"?await u.error(`HTTP error! status: ${S.status}`):u.error,E=typeof u.description=="function"?await u.description(`HTTP error! status: ${S.status}`):u.description,j=typeof b=="object"&&!ne.isValidElement(b)?b:{message:b};this.create({id:d,type:"error",description:E,...j})}else if(S instanceof Error){g=!1;const b=typeof u.error=="function"?await u.error(S):u.error,E=typeof u.description=="function"?await u.description(S):u.description,j=typeof b=="object"&&!ne.isValidElement(b)?b:{message:b};this.create({id:d,type:"error",description:E,...j})}else if(u.success!==void 0){g=!1;const b=typeof u.success=="function"?await u.success(S):u.success,E=typeof u.description=="function"?await u.description(S):u.description,j=typeof b=="object"&&!ne.isValidElement(b)?b:{message:b};this.create({id:d,type:"success",description:E,...j})}}).catch(async S=>{if(v=["reject",S],u.error!==void 0){g=!1;const R=typeof u.error=="function"?await u.error(S):u.error,b=typeof u.description=="function"?await u.description(S):u.description,C=typeof R=="object"&&!ne.isValidElement(R)?R:{message:R};this.create({id:d,type:"error",description:b,...C})}}).finally(()=>{g&&(this.dismiss(d),d=void 0),u.finally==null||u.finally.call(u)}),N=()=>new Promise((S,R)=>x.then(()=>v[0]==="reject"?R(v[1]):S(v[1])).catch(R));return typeof d!="string"&&typeof d!="number"?{unwrap:N}:Object.assign(d,{unwrap:N})},this.custom=(s,u)=>{const d=u?.id||eg++;return this.create({jsx:s(d),id:d,...u}),d},this.getActiveToasts=()=>this.toasts.filter(s=>!this.dismissedToasts.has(s.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}const Tn=new vD,xD=(r,s)=>{const u=s?.id||eg++;return Tn.addToast({title:r,...s,id:u}),u},ND=r=>r&&typeof r=="object"&&"ok"in r&&typeof r.ok=="boolean"&&"status"in r&&typeof r.status=="number",ED=xD,SD=()=>Tn.toasts,wD=()=>Tn.getActiveToasts();Object.assign(ED,{success:Tn.success,info:Tn.info,warning:Tn.warning,error:Tn.error,custom:Tn.custom,message:Tn.message,promise:Tn.promise,dismiss:Tn.dismiss,loading:Tn.loading},{getHistory:SD,getToasts:wD});cD("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");function Bd(r){return r.label!==void 0}const AD=3,TD="24px",DD="16px",yN=4e3,RD=356,CD=14,kD=45,OD=200;function Wa(...r){return r.filter(Boolean).join(" ")}function _D(r){const[s,u]=r.split("-"),d=[];return s&&d.push(s),u&&d.push(u),d}const MD=r=>{var s,u,d,f,g,v,x,N,S;const{invert:R,toast:b,unstyled:E,interacting:C,setHeights:j,visibleToasts:Y,heights:Z,index:B,toasts:ce,expanded:de,removeToast:fe,defaultRichColors:me,closeButton:Ne,style:se,cancelButtonStyle:q,actionButtonStyle:Se,className:W="",descriptionClassName:ze="",duration:le,position:ie,gap:Ce,expandByDefault:He,classNames:U,icons:$,closeButtonAriaLabel:V="Close toast"}=r,[ye,we]=ne.useState(null),[D,K]=ne.useState(null),[X,I]=ne.useState(!1),[Te,et]=ne.useState(!1),[re,Oe]=ne.useState(!1),[tt,Nt]=ne.useState(!1),[ae,Ot]=ne.useState(!1),[gn,ra]=ne.useState(0),[Na,Ie]=ne.useState(0),wt=ne.useRef(b.duration||le||yN),oo=ne.useRef(null),Dn=ne.useRef(null),he=B===0,Bo=B+1<=Y,bt=b.type,bn=b.dismissible!==!1,Ea=b.className||"",Ar=b.descriptionClassName||"",Sa=ne.useMemo(()=>Z.findIndex(Q=>Q.toastId===b.id)||0,[Z,b.id]),_l=ne.useMemo(()=>{var Q;return(Q=b.closeButton)!=null?Q:Ne},[b.closeButton,Ne]),ia=ne.useMemo(()=>b.duration||le||yN,[b.duration,le]),Go=ne.useRef(0),Yn=ne.useRef(0),Zo=ne.useRef(0),yn=ne.useRef(null),[wa,lo]=ie.split("-"),ro=ne.useMemo(()=>Z.reduce((Q,De,xe)=>xe>=Sa?Q:Q+De.height,0),[Z,Sa]),io=yD(),Aa=b.invert||R,y=bt==="loading";Yn.current=ne.useMemo(()=>Sa*Ce+ro,[Sa,ro]),ne.useEffect(()=>{wt.current=ia},[ia]),ne.useEffect(()=>{I(!0)},[]),ne.useEffect(()=>{const Q=Dn.current;if(Q){const De=Q.getBoundingClientRect().height;return Ie(De),j(xe=>[{toastId:b.id,height:De,position:b.position},...xe]),()=>j(xe=>xe.filter(lt=>lt.toastId!==b.id))}},[j,b.id]),ne.useLayoutEffect(()=>{if(!X)return;const Q=Dn.current,De=Q.style.height;Q.style.height="auto";const xe=Q.getBoundingClientRect().height;Q.style.height=De,Ie(xe),j(lt=>lt.find(At=>At.toastId===b.id)?lt.map(At=>At.toastId===b.id?{...At,height:xe}:At):[{toastId:b.id,height:xe,position:b.position},...lt])},[X,b.title,b.description,j,b.id,b.jsx,b.action,b.cancel]);const M=ne.useCallback(()=>{et(!0),ra(Yn.current),j(Q=>Q.filter(De=>De.toastId!==b.id)),setTimeout(()=>{fe(b)},OD)},[b,fe,j,Yn]);ne.useEffect(()=>{if(b.promise&&bt==="loading"||b.duration===1/0||b.type==="loading")return;let Q;return de||C||io?(()=>{if(Zo.current<Go.current){const lt=new Date().getTime()-Go.current;wt.current=wt.current-lt}Zo.current=new Date().getTime()})():(()=>{wt.current!==1/0&&(Go.current=new Date().getTime(),Q=setTimeout(()=>{b.onAutoClose==null||b.onAutoClose.call(b,b),M()},wt.current))})(),()=>clearTimeout(Q)},[de,C,b,bt,io,M]),ne.useEffect(()=>{b.delete&&(M(),b.onDismiss==null||b.onDismiss.call(b,b))},[M,b.delete]);function J(){var Q;if($?.loading){var De;return ne.createElement("div",{className:Wa(U?.loader,b==null||(De=b.classNames)==null?void 0:De.loader,"sonner-loader"),"data-visible":bt==="loading"},$.loading)}return ne.createElement(fD,{className:Wa(U?.loader,b==null||(Q=b.classNames)==null?void 0:Q.loader),visible:bt==="loading"})}const ee=b.icon||$?.[bt]||uD(bt);var pe,je;return ne.createElement("li",{tabIndex:0,ref:Dn,className:Wa(W,Ea,U?.toast,b==null||(s=b.classNames)==null?void 0:s.toast,U?.default,U?.[bt],b==null||(u=b.classNames)==null?void 0:u[bt]),"data-sonner-toast":"","data-rich-colors":(pe=b.richColors)!=null?pe:me,"data-styled":!(b.jsx||b.unstyled||E),"data-mounted":X,"data-promise":!!b.promise,"data-swiped":ae,"data-removed":Te,"data-visible":Bo,"data-y-position":wa,"data-x-position":lo,"data-index":B,"data-front":he,"data-swiping":re,"data-dismissible":bn,"data-type":bt,"data-invert":Aa,"data-swipe-out":tt,"data-swipe-direction":D,"data-expanded":!!(de||He&&X),"data-testid":b.testId,style:{"--index":B,"--toasts-before":B,"--z-index":ce.length-B,"--offset":`${Te?gn:Yn.current}px`,"--initial-height":He?"auto":`${Na}px`,...se,...b.style},onDragEnd:()=>{Oe(!1),we(null),yn.current=null},onPointerDown:Q=>{Q.button!==2&&(y||!bn||(oo.current=new Date,ra(Yn.current),Q.target.setPointerCapture(Q.pointerId),Q.target.tagName!=="BUTTON"&&(Oe(!0),yn.current={x:Q.clientX,y:Q.clientY})))},onPointerUp:()=>{var Q,De,xe;if(tt||!bn)return;yn.current=null;const lt=Number(((Q=Dn.current)==null?void 0:Q.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),ln=Number(((De=Dn.current)==null?void 0:De.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),At=new Date().getTime()-((xe=oo.current)==null?void 0:xe.getTime()),Lt=ye==="x"?lt:ln,so=Math.abs(Lt)/At;if(Math.abs(Lt)>=kD||so>.11){ra(Yn.current),b.onDismiss==null||b.onDismiss.call(b,b),K(ye==="x"?lt>0?"right":"left":ln>0?"down":"up"),M(),Nt(!0);return}else{var Rt,yt;(Rt=Dn.current)==null||Rt.style.setProperty("--swipe-amount-x","0px"),(yt=Dn.current)==null||yt.style.setProperty("--swipe-amount-y","0px")}Ot(!1),Oe(!1),we(null)},onPointerMove:Q=>{var De,xe,lt;if(!yn.current||!bn||((De=window.getSelection())==null?void 0:De.toString().length)>0)return;const At=Q.clientY-yn.current.y,Lt=Q.clientX-yn.current.x;var so;const Rt=(so=r.swipeDirections)!=null?so:_D(ie);!ye&&(Math.abs(Lt)>1||Math.abs(At)>1)&&we(Math.abs(Lt)>Math.abs(At)?"x":"y");let yt={x:0,y:0};const Li=co=>1/(1.5+Math.abs(co)/20);if(ye==="y"){if(Rt.includes("top")||Rt.includes("bottom"))if(Rt.includes("top")&&At<0||Rt.includes("bottom")&&At>0)yt.y=At;else{const co=At*Li(At);yt.y=Math.abs(co)<Math.abs(At)?co:At}}else if(ye==="x"&&(Rt.includes("left")||Rt.includes("right")))if(Rt.includes("left")&&Lt<0||Rt.includes("right")&&Lt>0)yt.x=Lt;else{const co=Lt*Li(Lt);yt.x=Math.abs(co)<Math.abs(Lt)?co:Lt}(Math.abs(yt.x)>0||Math.abs(yt.y)>0)&&Ot(!0),(xe=Dn.current)==null||xe.style.setProperty("--swipe-amount-x",`${yt.x}px`),(lt=Dn.current)==null||lt.style.setProperty("--swipe-amount-y",`${yt.y}px`)}},_l&&!b.jsx&&bt!=="loading"?ne.createElement("button",{"aria-label":V,"data-disabled":y,"data-close-button":!0,onClick:y||!bn?()=>{}:()=>{M(),b.onDismiss==null||b.onDismiss.call(b,b)},className:Wa(U?.closeButton,b==null||(d=b.classNames)==null?void 0:d.closeButton)},(je=$?.close)!=null?je:bD):null,(bt||b.icon||b.promise)&&b.icon!==null&&($?.[bt]!==null||b.icon)?ne.createElement("div",{"data-icon":"",className:Wa(U?.icon,b==null||(f=b.classNames)==null?void 0:f.icon)},b.promise||b.type==="loading"&&!b.icon?b.icon||J():null,b.type!=="loading"?ee:null):null,ne.createElement("div",{"data-content":"",className:Wa(U?.content,b==null||(g=b.classNames)==null?void 0:g.content)},ne.createElement("div",{"data-title":"",className:Wa(U?.title,b==null||(v=b.classNames)==null?void 0:v.title)},b.jsx?b.jsx:typeof b.title=="function"?b.title():b.title),b.description?ne.createElement("div",{"data-description":"",className:Wa(ze,Ar,U?.description,b==null||(x=b.classNames)==null?void 0:x.description)},typeof b.description=="function"?b.description():b.description):null),ne.isValidElement(b.cancel)?b.cancel:b.cancel&&Bd(b.cancel)?ne.createElement("button",{"data-button":!0,"data-cancel":!0,style:b.cancelButtonStyle||q,onClick:Q=>{Bd(b.cancel)&&bn&&(b.cancel.onClick==null||b.cancel.onClick.call(b.cancel,Q),M())},className:Wa(U?.cancelButton,b==null||(N=b.classNames)==null?void 0:N.cancelButton)},b.cancel.label):null,ne.isValidElement(b.action)?b.action:b.action&&Bd(b.action)?ne.createElement("button",{"data-button":!0,"data-action":!0,style:b.actionButtonStyle||Se,onClick:Q=>{Bd(b.action)&&(b.action.onClick==null||b.action.onClick.call(b.action,Q),!Q.defaultPrevented&&M())},className:Wa(U?.actionButton,b==null||(S=b.classNames)==null?void 0:S.actionButton)},b.action.label):null)};function vN(){if(typeof window>"u"||typeof document>"u")return"ltr";const r=document.documentElement.getAttribute("dir");return r==="auto"||!r?window.getComputedStyle(document.documentElement).direction:r}function jD(r,s){const u={};return[r,s].forEach((d,f)=>{const g=f===1,v=g?"--mobile-offset":"--offset",x=g?DD:TD;function N(S){["top","right","bottom","left"].forEach(R=>{u[`${v}-${R}`]=typeof S=="number"?`${S}px`:S})}typeof d=="number"||typeof d=="string"?N(d):typeof d=="object"?["top","right","bottom","left"].forEach(S=>{d[S]===void 0?u[`${v}-${S}`]=x:u[`${v}-${S}`]=typeof d[S]=="number"?`${d[S]}px`:d[S]}):N(x)}),u}const HD=ne.forwardRef(function(s,u){const{id:d,invert:f,position:g="bottom-right",hotkey:v=["altKey","KeyT"],expand:x,closeButton:N,className:S,offset:R,mobileOffset:b,theme:E="light",richColors:C,duration:j,style:Y,visibleToasts:Z=AD,toastOptions:B,dir:ce=vN(),gap:de=CD,icons:fe,containerAriaLabel:me="Notifications"}=s,[Ne,se]=ne.useState([]),q=ne.useMemo(()=>d?Ne.filter(X=>X.toasterId===d):Ne.filter(X=>!X.toasterId),[Ne,d]),Se=ne.useMemo(()=>Array.from(new Set([g].concat(q.filter(X=>X.position).map(X=>X.position)))),[q,g]),[W,ze]=ne.useState([]),[le,ie]=ne.useState(!1),[Ce,He]=ne.useState(!1),[U,$]=ne.useState(E!=="system"?E:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),V=ne.useRef(null),ye=v.join("+").replace(/Key/g,"").replace(/Digit/g,""),we=ne.useRef(null),D=ne.useRef(!1),K=ne.useCallback(X=>{se(I=>{var Te;return(Te=I.find(et=>et.id===X.id))!=null&&Te.delete||Tn.dismiss(X.id),I.filter(({id:et})=>et!==X.id)})},[]);return ne.useEffect(()=>Tn.subscribe(X=>{if(X.dismiss){requestAnimationFrame(()=>{se(I=>I.map(Te=>Te.id===X.id?{...Te,delete:!0}:Te))});return}setTimeout(()=>{sD.flushSync(()=>{se(I=>{const Te=I.findIndex(et=>et.id===X.id);return Te!==-1?[...I.slice(0,Te),{...I[Te],...X},...I.slice(Te+1)]:[X,...I]})})})}),[Ne]),ne.useEffect(()=>{if(E!=="system"){$(E);return}if(E==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?$("dark"):$("light")),typeof window>"u")return;const X=window.matchMedia("(prefers-color-scheme: dark)");try{X.addEventListener("change",({matches:I})=>{$(I?"dark":"light")})}catch{X.addListener(({matches:Te})=>{try{$(Te?"dark":"light")}catch(et){console.error(et)}})}},[E]),ne.useEffect(()=>{Ne.length<=1&&ie(!1)},[Ne]),ne.useEffect(()=>{const X=I=>{var Te;if(v.every(Oe=>I[Oe]||I.code===Oe)){var re;ie(!0),(re=V.current)==null||re.focus()}I.code==="Escape"&&(document.activeElement===V.current||(Te=V.current)!=null&&Te.contains(document.activeElement))&&ie(!1)};return document.addEventListener("keydown",X),()=>document.removeEventListener("keydown",X)},[v]),ne.useEffect(()=>{if(V.current)return()=>{we.current&&(we.current.focus({preventScroll:!0}),we.current=null,D.current=!1)}},[V.current]),ne.createElement("section",{ref:u,"aria-label":`${me} ${ye}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},Se.map((X,I)=>{var Te;const[et,re]=X.split("-");return q.length?ne.createElement("ol",{key:X,dir:ce==="auto"?vN():ce,tabIndex:-1,ref:V,className:S,"data-sonner-toaster":!0,"data-sonner-theme":U,"data-y-position":et,"data-x-position":re,style:{"--front-toast-height":`${((Te=W[0])==null?void 0:Te.height)||0}px`,"--width":`${RD}px`,"--gap":`${de}px`,...Y,...jD(R,b)},onBlur:Oe=>{D.current&&!Oe.currentTarget.contains(Oe.relatedTarget)&&(D.current=!1,we.current&&(we.current.focus({preventScroll:!0}),we.current=null))},onFocus:Oe=>{Oe.target instanceof HTMLElement&&Oe.target.dataset.dismissible==="false"||D.current||(D.current=!0,we.current=Oe.relatedTarget)},onMouseEnter:()=>ie(!0),onMouseMove:()=>ie(!0),onMouseLeave:()=>{Ce||ie(!1)},onDragEnd:()=>ie(!1),onPointerDown:Oe=>{Oe.target instanceof HTMLElement&&Oe.target.dataset.dismissible==="false"||He(!0)},onPointerUp:()=>He(!1)},q.filter(Oe=>!Oe.position&&I===0||Oe.position===X).map((Oe,tt)=>{var Nt,ae;return ne.createElement(MD,{key:Oe.id,icons:fe,index:tt,toast:Oe,defaultRichColors:C,duration:(Nt=B?.duration)!=null?Nt:j,className:B?.className,descriptionClassName:B?.descriptionClassName,invert:f,visibleToasts:Z,closeButton:(ae=B?.closeButton)!=null?ae:N,interacting:Ce,position:X,style:B?.style,unstyled:B?.unstyled,classNames:B?.classNames,cancelButtonStyle:B?.cancelButtonStyle,actionButtonStyle:B?.actionButtonStyle,closeButtonAriaLabel:B?.closeButtonAriaLabel,removeToast:K,toasts:q.filter(Ot=>Ot.position==Oe.position),heights:W.filter(Ot=>Ot.position==Oe.position),setHeights:ze,expandByDefault:x,gap:de,expanded:le,swipeDirections:s.swipeDirections})})):null}))}),zD=({...r})=>{const{theme:s="system"}=iD();return h.jsxDEV(HD,{"data-loc":"client/src/components/ui/sonner.tsx:8",theme:s,className:"toaster group",style:{"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)"},...r},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/ui/sonner.tsx",lineNumber:8,columnNumber:5},void 0)};function Vo(r,s,{checkForDefaultPrevented:u=!0}={}){return function(f){if(r?.(f),u===!1||!f.defaultPrevented)return s?.(f)}}function xN(r,s){if(typeof r=="function")return r(s);r!=null&&(r.current=s)}function aE(...r){return s=>{let u=!1;const d=r.map(f=>{const g=xN(f,s);return!u&&typeof g=="function"&&(u=!0),g});if(u)return()=>{for(let f=0;f<d.length;f++){const g=d[f];typeof g=="function"?g():xN(r[f],null)}}}}function Sr(...r){return H.useCallback(aE(...r),r)}var $p={exports:{}},bc={},NN;function PD(){if(NN)return bc;NN=1;/**
* @license React
* react-jsx-runtime.development.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/return(function(){function r(D){if(D==null)return null;if(typeof D=="function")return D.$$typeof===ze?null:D.displayName||D.name||null;if(typeof D=="string")return D;switch(D){case Z:return"Fragment";case ce:return"Profiler";case B:return"StrictMode";case Ne:return"Suspense";case se:return"SuspenseList";case W:return"Activity"}if(typeof D=="object")switch(typeof D.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),D.$$typeof){case Y:return"Portal";case fe:return D.displayName||"Context";case de:return(D._context.displayName||"Context")+".Consumer";case me:var K=D.render;return D=D.displayName,D||(D=K.displayName||K.name||"",D=D!==""?"ForwardRef("+D+")":"ForwardRef"),D;case q:return K=D.displayName||null,K!==null?K:r(D.type)||"Memo";case Se:K=D._payload,D=D._init;try{return r(D(K))}catch{}}return null}function s(D){return""+D}function u(D){try{s(D);var K=!1}catch{K=!0}if(K){K=console;var X=K.error,I=typeof Symbol=="function"&&Symbol.toStringTag&&D[Symbol.toStringTag]||D.constructor.name||"Object";return X.call(K,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",I),s(D)}}function d(D){if(D===Z)return"<>";if(typeof D=="object"&&D!==null&&D.$$typeof===Se)return"<...>";try{var K=r(D);return K?"<"+K+">":"<...>"}catch{return"<...>"}}function f(){var D=le.A;return D===null?null:D.getOwner()}function g(){return Error("react-stack-top-frame")}function v(D){if(ie.call(D,"key")){var K=Object.getOwnPropertyDescriptor(D,"key").get;if(K&&K.isReactWarning)return!1}return D.key!==void 0}function x(D,K){function X(){U||(U=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",K))}X.isReactWarning=!0,Object.defineProperty(D,"key",{get:X,configurable:!0})}function N(){var D=r(this.type);return $[D]||($[D]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),D=this.props.ref,D!==void 0?D:null}function S(D,K,X,I,Te,et){var re=X.ref;return D={$$typeof:j,type:D,key:K,props:X,_owner:I},(re!==void 0?re:null)!==null?Object.defineProperty(D,"ref",{enumerable:!1,get:N}):Object.defineProperty(D,"ref",{enumerable:!1,value:null}),D._store={},Object.defineProperty(D._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(D,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(D,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:Te}),Object.defineProperty(D,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:et}),Object.freeze&&(Object.freeze(D.props),Object.freeze(D)),D}function R(D,K,X,I,Te,et){var re=K.children;if(re!==void 0)if(I)if(Ce(re)){for(I=0;I<re.length;I++)b(re[I]);Object.freeze&&Object.freeze(re)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else b(re);if(ie.call(K,"key")){re=r(D);var Oe=Object.keys(K).filter(function(Nt){return Nt!=="key"});I=0<Oe.length?"{key: someKey, "+Oe.join(": ..., ")+": ...}":"{key: someKey}",we[re+I]||(Oe=0<Oe.length?"{"+Oe.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
let props = %s;
<%s {...props} />
React keys must be passed directly to JSX without using spread:
let props = %s;
<%s key={someKey} {...props} />`,I,re,Oe,re),we[re+I]=!0)}if(re=null,X!==void 0&&(u(X),re=""+X),v(K)&&(u(K.key),re=""+K.key),"key"in K){X={};for(var tt in K)tt!=="key"&&(X[tt]=K[tt])}else X=K;return re&&x(X,typeof D=="function"?D.displayName||D.name||"Unknown":D),S(D,re,X,f(),Te,et)}function b(D){E(D)?D._store&&(D._store.validated=1):typeof D=="object"&&D!==null&&D.$$typeof===Se&&(D._payload.status==="fulfilled"?E(D._payload.value)&&D._payload.value._store&&(D._payload.value._store.validated=1):D._store&&(D._store.validated=1))}function E(D){return typeof D=="object"&&D!==null&&D.$$typeof===j}var C=Mi(),j=Symbol.for("react.transitional.element"),Y=Symbol.for("react.portal"),Z=Symbol.for("react.fragment"),B=Symbol.for("react.strict_mode"),ce=Symbol.for("react.profiler"),de=Symbol.for("react.consumer"),fe=Symbol.for("react.context"),me=Symbol.for("react.forward_ref"),Ne=Symbol.for("react.suspense"),se=Symbol.for("react.suspense_list"),q=Symbol.for("react.memo"),Se=Symbol.for("react.lazy"),W=Symbol.for("react.activity"),ze=Symbol.for("react.client.reference"),le=C.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ie=Object.prototype.hasOwnProperty,Ce=Array.isArray,He=console.createTask?console.createTask:function(){return null};C={react_stack_bottom_frame:function(D){return D()}};var U,$={},V=C.react_stack_bottom_frame.bind(C,g)(),ye=He(d(g)),we={};bc.Fragment=Z,bc.jsx=function(D,K,X){var I=1e4>le.recentlyCreatedOwnerStacks++;return R(D,K,X,!1,I?Error("react-stack-top-frame"):V,I?He(d(D)):ye)},bc.jsxs=function(D,K,X){var I=1e4>le.recentlyCreatedOwnerStacks++;return R(D,K,X,!0,I?Error("react-stack-top-frame"):V,I?He(d(D)):ye)}})(),bc}var EN;function VD(){return EN||(EN=1,$p.exports=PD()),$p.exports}var ot=VD();function oE(r,s=[]){let u=[];function d(g,v){const x=H.createContext(v),N=u.length;u=[...u,v];const S=b=>{const{scope:E,children:C,...j}=b,Y=E?.[r]?.[N]||x,Z=H.useMemo(()=>j,Object.values(j));return ot.jsx(Y.Provider,{value:Z,children:C})};S.displayName=g+"Provider";function R(b,E){const C=E?.[r]?.[N]||x,j=H.useContext(C);if(j)return j;if(v!==void 0)return v;throw new Error(`\`${b}\` must be used within \`${g}\``)}return[S,R]}const f=()=>{const g=u.map(v=>H.createContext(v));return function(x){const N=x?.[r]||g;return H.useMemo(()=>({[`__scope${r}`]:{...x,[r]:N}}),[x,N])}};return f.scopeName=r,[d,UD(f,...s)]}function UD(...r){const s=r[0];if(r.length===1)return s;const u=()=>{const d=r.map(f=>({useScope:f(),scopeName:f.scopeName}));return function(g){const v=d.reduce((x,{useScope:N,scopeName:S})=>{const b=N(g)[`__scope${S}`];return{...x,...b}},{});return H.useMemo(()=>({[`__scope${s.scopeName}`]:v}),[v])}};return u.scopeName=s.scopeName,u}function lE(r){const s=BD(r),u=H.forwardRef((d,f)=>{const{children:g,...v}=d,x=H.Children.toArray(g),N=x.find(ZD);if(N){const S=N.props.children,R=x.map(b=>b===N?H.Children.count(S)>1?H.Children.only(null):H.isValidElement(S)?S.props.children:null:b);return ot.jsx(s,{...v,ref:f,children:H.isValidElement(S)?H.cloneElement(S,void 0,R):null})}return ot.jsx(s,{...v,ref:f,children:g})});return u.displayName=`${r}.Slot`,u}var LD=lE("Slot");function BD(r){const s=H.forwardRef((u,d)=>{const{children:f,...g}=u;if(H.isValidElement(f)){const v=XD(f),x=YD(g,f.props);return f.type!==H.Fragment&&(x.ref=d?aE(d,v):v),H.cloneElement(f,x)}return H.Children.count(f)>1?H.Children.only(null):null});return s.displayName=`${r}.SlotClone`,s}var rE=Symbol("radix.slottable");function GD(r){const s=({children:u})=>ot.jsx(ot.Fragment,{children:u});return s.displayName=`${r}.Slottable`,s.__radixId=rE,s}function ZD(r){return H.isValidElement(r)&&typeof r.type=="function"&&"__radixId"in r.type&&r.type.__radixId===rE}function YD(r,s){const u={...s};for(const d in s){const f=r[d],g=s[d];/^on[A-Z]/.test(d)?f&&g?u[d]=(...x)=>{const N=g(...x);return f(...x),N}:f&&(u[d]=f):d==="style"?u[d]={...f,...g}:d==="className"&&(u[d]=[f,g].filter(Boolean).join(" "))}return{...r,...u}}function XD(r){let s=Object.getOwnPropertyDescriptor(r.props,"ref")?.get,u=s&&"isReactWarning"in s&&s.isReactWarning;return u?r.ref:(s=Object.getOwnPropertyDescriptor(r,"ref")?.get,u=s&&"isReactWarning"in s&&s.isReactWarning,u?r.props.ref:r.props.ref||r.ref)}var qD=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],wr=qD.reduce((r,s)=>{const u=lE(`Primitive.${s}`),d=H.forwardRef((f,g)=>{const{asChild:v,...x}=f,N=v?u:s;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),ot.jsx(N,{...x,ref:g})});return d.displayName=`Primitive.${s}`,{...r,[s]:d}},{});function $D(r,s){r&&ug.flushSync(()=>r.dispatchEvent(s))}function Id(r){const s=H.useRef(r);return H.useEffect(()=>{s.current=r}),H.useMemo(()=>(...u)=>s.current?.(...u),[])}function JD(r,s=globalThis?.document){const u=Id(r);H.useEffect(()=>{const d=f=>{f.key==="Escape"&&u(f)};return s.addEventListener("keydown",d,{capture:!0}),()=>s.removeEventListener("keydown",d,{capture:!0})},[u,s])}var QD="DismissableLayer",tg="dismissableLayer.update",FD="dismissableLayer.pointerDownOutside",ID="dismissableLayer.focusOutside",SN,iE=H.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),sE=H.forwardRef((r,s)=>{const{disableOutsidePointerEvents:u=!1,onEscapeKeyDown:d,onPointerDownOutside:f,onFocusOutside:g,onInteractOutside:v,onDismiss:x,...N}=r,S=H.useContext(iE),[R,b]=H.useState(null),E=R?.ownerDocument??globalThis?.document,[,C]=H.useState({}),j=Sr(s,se=>b(se)),Y=Array.from(S.layers),[Z]=[...S.layersWithOutsidePointerEventsDisabled].slice(-1),B=Y.indexOf(Z),ce=R?Y.indexOf(R):-1,de=S.layersWithOutsidePointerEventsDisabled.size>0,fe=ce>=B,me=eR(se=>{const q=se.target,Se=[...S.branches].some(W=>W.contains(q));!fe||Se||(f?.(se),v?.(se),se.defaultPrevented||x?.())},E),Ne=tR(se=>{const q=se.target;[...S.branches].some(W=>W.contains(q))||(g?.(se),v?.(se),se.defaultPrevented||x?.())},E);return JD(se=>{ce===S.layers.size-1&&(d?.(se),!se.defaultPrevented&&x&&(se.preventDefault(),x()))},E),H.useEffect(()=>{if(R)return u&&(S.layersWithOutsidePointerEventsDisabled.size===0&&(SN=E.body.style.pointerEvents,E.body.style.pointerEvents="none"),S.layersWithOutsidePointerEventsDisabled.add(R)),S.layers.add(R),wN(),()=>{u&&S.layersWithOutsidePointerEventsDisabled.size===1&&(E.body.style.pointerEvents=SN)}},[R,E,u,S]),H.useEffect(()=>()=>{R&&(S.layers.delete(R),S.layersWithOutsidePointerEventsDisabled.delete(R),wN())},[R,S]),H.useEffect(()=>{const se=()=>C({});return document.addEventListener(tg,se),()=>document.removeEventListener(tg,se)},[]),ot.jsx(wr.div,{...N,ref:j,style:{pointerEvents:de?fe?"auto":"none":void 0,...r.style},onFocusCapture:Vo(r.onFocusCapture,Ne.onFocusCapture),onBlurCapture:Vo(r.onBlurCapture,Ne.onBlurCapture),onPointerDownCapture:Vo(r.onPointerDownCapture,me.onPointerDownCapture)})});sE.displayName=QD;var KD="DismissableLayerBranch",WD=H.forwardRef((r,s)=>{const u=H.useContext(iE),d=H.useRef(null),f=Sr(s,d);return H.useEffect(()=>{const g=d.current;if(g)return u.branches.add(g),()=>{u.branches.delete(g)}},[u.branches]),ot.jsx(wr.div,{...r,ref:f})});WD.displayName=KD;function eR(r,s=globalThis?.document){const u=Id(r),d=H.useRef(!1),f=H.useRef(()=>{});return H.useEffect(()=>{const g=x=>{if(x.target&&!d.current){let N=function(){cE(FD,u,S,{discrete:!0})};const S={originalEvent:x};x.pointerType==="touch"?(s.removeEventListener("click",f.current),f.current=N,s.addEventListener("click",f.current,{once:!0})):N()}else s.removeEventListener("click",f.current);d.current=!1},v=window.setTimeout(()=>{s.addEventListener("pointerdown",g)},0);return()=>{window.clearTimeout(v),s.removeEventListener("pointerdown",g),s.removeEventListener("click",f.current)}},[s,u]),{onPointerDownCapture:()=>d.current=!0}}function tR(r,s=globalThis?.document){const u=Id(r),d=H.useRef(!1);return H.useEffect(()=>{const f=g=>{g.target&&!d.current&&cE(ID,u,{originalEvent:g},{discrete:!1})};return s.addEventListener("focusin",f),()=>s.removeEventListener("focusin",f)},[s,u]),{onFocusCapture:()=>d.current=!0,onBlurCapture:()=>d.current=!1}}function wN(){const r=new CustomEvent(tg);document.dispatchEvent(r)}function cE(r,s,u,{discrete:d}){const f=u.originalEvent.target,g=new CustomEvent(r,{bubbles:!1,cancelable:!0,detail:u});s&&f.addEventListener(r,s,{once:!0}),d?$D(f,g):f.dispatchEvent(g)}var xc=globalThis?.document?H.useLayoutEffect:()=>{};const nR=["top","right","bottom","left"],kl=Math.min,Gn=Math.max,$d=Math.round,Gd=Math.floor,to=r=>({x:r,y:r}),aR={left:"right",right:"left",bottom:"top",top:"bottom"},oR={start:"end",end:"start"};function ng(r,s,u){return Gn(r,kl(s,u))}function Uo(r,s){return typeof r=="function"?r(s):r}function Lo(r){return r.split("-")[0]}function ji(r){return r.split("-")[1]}function dg(r){return r==="x"?"y":"x"}function fg(r){return r==="y"?"height":"width"}const lR=new Set(["top","bottom"]);function eo(r){return lR.has(Lo(r))?"y":"x"}function mg(r){return dg(eo(r))}function rR(r,s,u){u===void 0&&(u=!1);const d=ji(r),f=mg(r),g=fg(f);let v=f==="x"?d===(u?"end":"start")?"right":"left":d==="start"?"bottom":"top";return s.reference[g]>s.floating[g]&&(v=Jd(v)),[v,Jd(v)]}function iR(r){const s=Jd(r);return[ag(r),s,ag(s)]}function ag(r){return r.replace(/start|end/g,s=>oR[s])}const AN=["left","right"],TN=["right","left"],sR=["top","bottom"],cR=["bottom","top"];function uR(r,s,u){switch(r){case"top":case"bottom":return u?s?TN:AN:s?AN:TN;case"left":case"right":return s?sR:cR;default:return[]}}function dR(r,s,u,d){const f=ji(r);let g=uR(Lo(r),u==="start",d);return f&&(g=g.map(v=>v+"-"+f),s&&(g=g.concat(g.map(ag)))),g}function Jd(r){return r.replace(/left|right|bottom|top/g,s=>aR[s])}function fR(r){return{top:0,right:0,bottom:0,left:0,...r}}function uE(r){return typeof r!="number"?fR(r):{top:r,right:r,bottom:r,left:r}}function Qd(r){const{x:s,y:u,width:d,height:f}=r;return{width:d,height:f,top:u,left:s,right:s+d,bottom:u+f,x:s,y:u}}function DN(r,s,u){let{reference:d,floating:f}=r;const g=eo(s),v=mg(s),x=fg(v),N=Lo(s),S=g==="y",R=d.x+d.width/2-f.width/2,b=d.y+d.height/2-f.height/2,E=d[x]/2-f[x]/2;let C;switch(N){case"top":C={x:R,y:d.y-f.height};break;case"bottom":C={x:R,y:d.y+d.height};break;case"right":C={x:d.x+d.width,y:b};break;case"left":C={x:d.x-f.width,y:b};break;default:C={x:d.x,y:d.y}}switch(ji(s)){case"start":C[v]-=E*(u&&S?-1:1);break;case"end":C[v]+=E*(u&&S?-1:1);break}return C}const mR=async(r,s,u)=>{const{placement:d="bottom",strategy:f="absolute",middleware:g=[],platform:v}=u,x=g.filter(Boolean),N=await(v.isRTL==null?void 0:v.isRTL(s));let S=await v.getElementRects({reference:r,floating:s,strategy:f}),{x:R,y:b}=DN(S,d,N),E=d,C={},j=0;for(let Y=0;Y<x.length;Y++){const{name:Z,fn:B}=x[Y],{x:ce,y:de,data:fe,reset:me}=await B({x:R,y:b,initialPlacement:d,placement:E,strategy:f,middlewareData:C,rects:S,platform:v,elements:{reference:r,floating:s}});R=ce??R,b=de??b,C={...C,[Z]:{...C[Z],...fe}},me&&j<=50&&(j++,typeof me=="object"&&(me.placement&&(E=me.placement),me.rects&&(S=me.rects===!0?await v.getElementRects({reference:r,floating:s,strategy:f}):me.rects),{x:R,y:b}=DN(S,E,N)),Y=-1)}return{x:R,y:b,placement:E,strategy:f,middlewareData:C}};async function Nc(r,s){var u;s===void 0&&(s={});const{x:d,y:f,platform:g,rects:v,elements:x,strategy:N}=r,{boundary:S="clippingAncestors",rootBoundary:R="viewport",elementContext:b="floating",altBoundary:E=!1,padding:C=0}=Uo(s,r),j=uE(C),Z=x[E?b==="floating"?"reference":"floating":b],B=Qd(await g.getClippingRect({element:(u=await(g.isElement==null?void 0:g.isElement(Z)))==null||u?Z:Z.contextElement||await(g.getDocumentElement==null?void 0:g.getDocumentElement(x.floating)),boundary:S,rootBoundary:R,strategy:N})),ce=b==="floating"?{x:d,y:f,width:v.floating.width,height:v.floating.height}:v.reference,de=await(g.getOffsetParent==null?void 0:g.getOffsetParent(x.floating)),fe=await(g.isElement==null?void 0:g.isElement(de))?await(g.getScale==null?void 0:g.getScale(de))||{x:1,y:1}:{x:1,y:1},me=Qd(g.convertOffsetParentRelativeRectToViewportRelativeRect?await g.convertOffsetParentRelativeRectToViewportRelativeRect({elements:x,rect:ce,offsetParent:de,strategy:N}):ce);return{top:(B.top-me.top+j.top)/fe.y,bottom:(me.bottom-B.bottom+j.bottom)/fe.y,left:(B.left-me.left+j.left)/fe.x,right:(me.right-B.right+j.right)/fe.x}}const hR=r=>({name:"arrow",options:r,async fn(s){const{x:u,y:d,placement:f,rects:g,platform:v,elements:x,middlewareData:N}=s,{element:S,padding:R=0}=Uo(r,s)||{};if(S==null)return{};const b=uE(R),E={x:u,y:d},C=mg(f),j=fg(C),Y=await v.getDimensions(S),Z=C==="y",B=Z?"top":"left",ce=Z?"bottom":"right",de=Z?"clientHeight":"clientWidth",fe=g.reference[j]+g.reference[C]-E[C]-g.floating[j],me=E[C]-g.reference[C],Ne=await(v.getOffsetParent==null?void 0:v.getOffsetParent(S));let se=Ne?Ne[de]:0;(!se||!await(v.isElement==null?void 0:v.isElement(Ne)))&&(se=x.floating[de]||g.floating[j]);const q=fe/2-me/2,Se=se/2-Y[j]/2-1,W=kl(b[B],Se),ze=kl(b[ce],Se),le=W,ie=se-Y[j]-ze,Ce=se/2-Y[j]/2+q,He=ng(le,Ce,ie),U=!N.arrow&&ji(f)!=null&&Ce!==He&&g.reference[j]/2-(Ce<le?W:ze)-Y[j]/2<0,$=U?Ce<le?Ce-le:Ce-ie:0;return{[C]:E[C]+$,data:{[C]:He,centerOffset:Ce-He-$,...U&&{alignmentOffset:$}},reset:U}}}),pR=function(r){return r===void 0&&(r={}),{name:"flip",options:r,async fn(s){var u,d;const{placement:f,middlewareData:g,rects:v,initialPlacement:x,platform:N,elements:S}=s,{mainAxis:R=!0,crossAxis:b=!0,fallbackPlacements:E,fallbackStrategy:C="bestFit",fallbackAxisSideDirection:j="none",flipAlignment:Y=!0,...Z}=Uo(r,s);if((u=g.arrow)!=null&&u.alignmentOffset)return{};const B=Lo(f),ce=eo(x),de=Lo(x)===x,fe=await(N.isRTL==null?void 0:N.isRTL(S.floating)),me=E||(de||!Y?[Jd(x)]:iR(x)),Ne=j!=="none";!E&&Ne&&me.push(...dR(x,Y,j,fe));const se=[x,...me],q=await Nc(s,Z),Se=[];let W=((d=g.flip)==null?void 0:d.overflows)||[];if(R&&Se.push(q[B]),b){const Ce=rR(f,v,fe);Se.push(q[Ce[0]],q[Ce[1]])}if(W=[...W,{placement:f,overflows:Se}],!Se.every(Ce=>Ce<=0)){var ze,le;const Ce=(((ze=g.flip)==null?void 0:ze.index)||0)+1,He=se[Ce];if(He&&(!(b==="alignment"?ce!==eo(He):!1)||W.every(V=>eo(V.placement)===ce?V.overflows[0]>0:!0)))return{data:{index:Ce,overflows:W},reset:{placement:He}};let U=(le=W.filter($=>$.overflows[0]<=0).sort(($,V)=>$.overflows[1]-V.overflows[1])[0])==null?void 0:le.placement;if(!U)switch(C){case"bestFit":{var ie;const $=(ie=W.filter(V=>{if(Ne){const ye=eo(V.placement);return ye===ce||ye==="y"}return!0}).map(V=>[V.placement,V.overflows.filter(ye=>ye>0).reduce((ye,we)=>ye+we,0)]).sort((V,ye)=>V[1]-ye[1])[0])==null?void 0:ie[0];$&&(U=$);break}case"initialPlacement":U=x;break}if(f!==U)return{reset:{placement:U}}}return{}}}};function RN(r,s){return{top:r.top-s.height,right:r.right-s.width,bottom:r.bottom-s.height,left:r.left-s.width}}function CN(r){return nR.some(s=>r[s]>=0)}const gR=function(r){return r===void 0&&(r={}),{name:"hide",options:r,async fn(s){const{rects:u}=s,{strategy:d="referenceHidden",...f}=Uo(r,s);switch(d){case"referenceHidden":{const g=await Nc(s,{...f,elementContext:"reference"}),v=RN(g,u.reference);return{data:{referenceHiddenOffsets:v,referenceHidden:CN(v)}}}case"escaped":{const g=await Nc(s,{...f,altBoundary:!0}),v=RN(g,u.floating);return{data:{escapedOffsets:v,escaped:CN(v)}}}default:return{}}}}},dE=new Set(["left","top"]);async function bR(r,s){const{placement:u,platform:d,elements:f}=r,g=await(d.isRTL==null?void 0:d.isRTL(f.floating)),v=Lo(u),x=ji(u),N=eo(u)==="y",S=dE.has(v)?-1:1,R=g&&N?-1:1,b=Uo(s,r);let{mainAxis:E,crossAxis:C,alignmentAxis:j}=typeof b=="number"?{mainAxis:b,crossAxis:0,alignmentAxis:null}:{mainAxis:b.mainAxis||0,crossAxis:b.crossAxis||0,alignmentAxis:b.alignmentAxis};return x&&typeof j=="number"&&(C=x==="end"?j*-1:j),N?{x:C*R,y:E*S}:{x:E*S,y:C*R}}const yR=function(r){return r===void 0&&(r=0),{name:"offset",options:r,async fn(s){var u,d;const{x:f,y:g,placement:v,middlewareData:x}=s,N=await bR(s,r);return v===((u=x.offset)==null?void 0:u.placement)&&(d=x.arrow)!=null&&d.alignmentOffset?{}:{x:f+N.x,y:g+N.y,data:{...N,placement:v}}}}},vR=function(r){return r===void 0&&(r={}),{name:"shift",options:r,async fn(s){const{x:u,y:d,placement:f}=s,{mainAxis:g=!0,crossAxis:v=!1,limiter:x={fn:Z=>{let{x:B,y:ce}=Z;return{x:B,y:ce}}},...N}=Uo(r,s),S={x:u,y:d},R=await Nc(s,N),b=eo(Lo(f)),E=dg(b);let C=S[E],j=S[b];if(g){const Z=E==="y"?"top":"left",B=E==="y"?"bottom":"right",ce=C+R[Z],de=C-R[B];C=ng(ce,C,de)}if(v){const Z=b==="y"?"top":"left",B=b==="y"?"bottom":"right",ce=j+R[Z],de=j-R[B];j=ng(ce,j,de)}const Y=x.fn({...s,[E]:C,[b]:j});return{...Y,data:{x:Y.x-u,y:Y.y-d,enabled:{[E]:g,[b]:v}}}}}},xR=function(r){return r===void 0&&(r={}),{options:r,fn(s){const{x:u,y:d,placement:f,rects:g,middlewareData:v}=s,{offset:x=0,mainAxis:N=!0,crossAxis:S=!0}=Uo(r,s),R={x:u,y:d},b=eo(f),E=dg(b);let C=R[E],j=R[b];const Y=Uo(x,s),Z=typeof Y=="number"?{mainAxis:Y,crossAxis:0}:{mainAxis:0,crossAxis:0,...Y};if(N){const de=E==="y"?"height":"width",fe=g.reference[E]-g.floating[de]+Z.mainAxis,me=g.reference[E]+g.reference[de]-Z.mainAxis;C<fe?C=fe:C>me&&(C=me)}if(S){var B,ce;const de=E==="y"?"width":"height",fe=dE.has(Lo(f)),me=g.reference[b]-g.floating[de]+(fe&&((B=v.offset)==null?void 0:B[b])||0)+(fe?0:Z.crossAxis),Ne=g.reference[b]+g.reference[de]+(fe?0:((ce=v.offset)==null?void 0:ce[b])||0)-(fe?Z.crossAxis:0);j<me?j=me:j>Ne&&(j=Ne)}return{[E]:C,[b]:j}}}},NR=function(r){return r===void 0&&(r={}),{name:"size",options:r,async fn(s){var u,d;const{placement:f,rects:g,platform:v,elements:x}=s,{apply:N=()=>{},...S}=Uo(r,s),R=await Nc(s,S),b=Lo(f),E=ji(f),C=eo(f)==="y",{width:j,height:Y}=g.floating;let Z,B;b==="top"||b==="bottom"?(Z=b,B=E===(await(v.isRTL==null?void 0:v.isRTL(x.floating))?"start":"end")?"left":"right"):(B=b,Z=E==="end"?"top":"bottom");const ce=Y-R.top-R.bottom,de=j-R.left-R.right,fe=kl(Y-R[Z],ce),me=kl(j-R[B],de),Ne=!s.middlewareData.shift;let se=fe,q=me;if((u=s.middlewareData.shift)!=null&&u.enabled.x&&(q=de),(d=s.middlewareData.shift)!=null&&d.enabled.y&&(se=ce),Ne&&!E){const W=Gn(R.left,0),ze=Gn(R.right,0),le=Gn(R.top,0),ie=Gn(R.bottom,0);C?q=j-2*(W!==0||ze!==0?W+ze:Gn(R.left,R.right)):se=Y-2*(le!==0||ie!==0?le+ie:Gn(R.top,R.bottom))}await N({...s,availableWidth:q,availableHeight:se});const Se=await v.getDimensions(x.floating);return j!==Se.width||Y!==Se.height?{reset:{rects:!0}}:{}}}};function Kd(){return typeof window<"u"}function Hi(r){return fE(r)?(r.nodeName||"").toLowerCase():"#document"}function Zn(r){var s;return(r==null||(s=r.ownerDocument)==null?void 0:s.defaultView)||window}function ao(r){var s;return(s=(fE(r)?r.ownerDocument:r.document)||window.document)==null?void 0:s.documentElement}function fE(r){return Kd()?r instanceof Node||r instanceof Zn(r).Node:!1}function va(r){return Kd()?r instanceof Element||r instanceof Zn(r).Element:!1}function no(r){return Kd()?r instanceof HTMLElement||r instanceof Zn(r).HTMLElement:!1}function kN(r){return!Kd()||typeof ShadowRoot>"u"?!1:r instanceof ShadowRoot||r instanceof Zn(r).ShadowRoot}const ER=new Set(["inline","contents"]);function Sc(r){const{overflow:s,overflowX:u,overflowY:d,display:f}=xa(r);return/auto|scroll|overlay|hidden|clip/.test(s+d+u)&&!ER.has(f)}const SR=new Set(["table","td","th"]);function wR(r){return SR.has(Hi(r))}const AR=[":popover-open",":modal"];function Wd(r){return AR.some(s=>{try{return r.matches(s)}catch{return!1}})}const TR=["transform","translate","scale","rotate","perspective"],DR=["transform","translate","scale","rotate","perspective","filter"],RR=["paint","layout","strict","content"];function hg(r){const s=pg(),u=va(r)?xa(r):r;return TR.some(d=>u[d]?u[d]!=="none":!1)||(u.containerType?u.containerType!=="normal":!1)||!s&&(u.backdropFilter?u.backdropFilter!=="none":!1)||!s&&(u.filter?u.filter!=="none":!1)||DR.some(d=>(u.willChange||"").includes(d))||RR.some(d=>(u.contain||"").includes(d))}function CR(r){let s=Ol(r);for(;no(s)&&!Oi(s);){if(hg(s))return s;if(Wd(s))return null;s=Ol(s)}return null}function pg(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const kR=new Set(["html","body","#document"]);function Oi(r){return kR.has(Hi(r))}function xa(r){return Zn(r).getComputedStyle(r)}function ef(r){return va(r)?{scrollLeft:r.scrollLeft,scrollTop:r.scrollTop}:{scrollLeft:r.scrollX,scrollTop:r.scrollY}}function Ol(r){if(Hi(r)==="html")return r;const s=r.assignedSlot||r.parentNode||kN(r)&&r.host||ao(r);return kN(s)?s.host:s}function mE(r){const s=Ol(r);return Oi(s)?r.ownerDocument?r.ownerDocument.body:r.body:no(s)&&Sc(s)?s:mE(s)}function Ec(r,s,u){var d;s===void 0&&(s=[]),u===void 0&&(u=!0);const f=mE(r),g=f===((d=r.ownerDocument)==null?void 0:d.body),v=Zn(f);if(g){const x=og(v);return s.concat(v,v.visualViewport||[],Sc(f)?f:[],x&&u?Ec(x):[])}return s.concat(f,Ec(f,[],u))}function og(r){return r.parent&&Object.getPrototypeOf(r.parent)?r.frameElement:null}function hE(r){const s=xa(r);let u=parseFloat(s.width)||0,d=parseFloat(s.height)||0;const f=no(r),g=f?r.offsetWidth:u,v=f?r.offsetHeight:d,x=$d(u)!==g||$d(d)!==v;return x&&(u=g,d=v),{width:u,height:d,$:x}}function gg(r){return va(r)?r:r.contextElement}function ki(r){const s=gg(r);if(!no(s))return to(1);const u=s.getBoundingClientRect(),{width:d,height:f,$:g}=hE(s);let v=(g?$d(u.width):u.width)/d,x=(g?$d(u.height):u.height)/f;return(!v||!Number.isFinite(v))&&(v=1),(!x||!Number.isFinite(x))&&(x=1),{x:v,y:x}}const OR=to(0);function pE(r){const s=Zn(r);return!pg()||!s.visualViewport?OR:{x:s.visualViewport.offsetLeft,y:s.visualViewport.offsetTop}}function _R(r,s,u){return s===void 0&&(s=!1),!u||s&&u!==Zn(r)?!1:s}function Er(r,s,u,d){s===void 0&&(s=!1),u===void 0&&(u=!1);const f=r.getBoundingClientRect(),g=gg(r);let v=to(1);s&&(d?va(d)&&(v=ki(d)):v=ki(r));const x=_R(g,u,d)?pE(g):to(0);let N=(f.left+x.x)/v.x,S=(f.top+x.y)/v.y,R=f.width/v.x,b=f.height/v.y;if(g){const E=Zn(g),C=d&&va(d)?Zn(d):d;let j=E,Y=og(j);for(;Y&&d&&C!==j;){const Z=ki(Y),B=Y.getBoundingClientRect(),ce=xa(Y),de=B.left+(Y.clientLeft+parseFloat(ce.paddingLeft))*Z.x,fe=B.top+(Y.clientTop+parseFloat(ce.paddingTop))*Z.y;N*=Z.x,S*=Z.y,R*=Z.x,b*=Z.y,N+=de,S+=fe,j=Zn(Y),Y=og(j)}}return Qd({width:R,height:b,x:N,y:S})}function tf(r,s){const u=ef(r).scrollLeft;return s?s.left+u:Er(ao(r)).left+u}function gE(r,s){const u=r.getBoundingClientRect(),d=u.left+s.scrollLeft-tf(r,u),f=u.top+s.scrollTop;return{x:d,y:f}}function MR(r){let{elements:s,rect:u,offsetParent:d,strategy:f}=r;const g=f==="fixed",v=ao(d),x=s?Wd(s.floating):!1;if(d===v||x&&g)return u;let N={scrollLeft:0,scrollTop:0},S=to(1);const R=to(0),b=no(d);if((b||!b&&!g)&&((Hi(d)!=="body"||Sc(v))&&(N=ef(d)),no(d))){const C=Er(d);S=ki(d),R.x=C.x+d.clientLeft,R.y=C.y+d.clientTop}const E=v&&!b&&!g?gE(v,N):to(0);return{width:u.width*S.x,height:u.height*S.y,x:u.x*S.x-N.scrollLeft*S.x+R.x+E.x,y:u.y*S.y-N.scrollTop*S.y+R.y+E.y}}function jR(r){return Array.from(r.getClientRects())}function HR(r){const s=ao(r),u=ef(r),d=r.ownerDocument.body,f=Gn(s.scrollWidth,s.clientWidth,d.scrollWidth,d.clientWidth),g=Gn(s.scrollHeight,s.clientHeight,d.scrollHeight,d.clientHeight);let v=-u.scrollLeft+tf(r);const x=-u.scrollTop;return xa(d).direction==="rtl"&&(v+=Gn(s.clientWidth,d.clientWidth)-f),{width:f,height:g,x:v,y:x}}const ON=25;function zR(r,s){const u=Zn(r),d=ao(r),f=u.visualViewport;let g=d.clientWidth,v=d.clientHeight,x=0,N=0;if(f){g=f.width,v=f.height;const R=pg();(!R||R&&s==="fixed")&&(x=f.offsetLeft,N=f.offsetTop)}const S=tf(d);if(S<=0){const R=d.ownerDocument,b=R.body,E=getComputedStyle(b),C=R.compatMode==="CSS1Compat"&&parseFloat(E.marginLeft)+parseFloat(E.marginRight)||0,j=Math.abs(d.clientWidth-b.clientWidth-C);j<=ON&&(g-=j)}else S<=ON&&(g+=S);return{width:g,height:v,x,y:N}}const PR=new Set(["absolute","fixed"]);function VR(r,s){const u=Er(r,!0,s==="fixed"),d=u.top+r.clientTop,f=u.left+r.clientLeft,g=no(r)?ki(r):to(1),v=r.clientWidth*g.x,x=r.clientHeight*g.y,N=f*g.x,S=d*g.y;return{width:v,height:x,x:N,y:S}}function _N(r,s,u){let d;if(s==="viewport")d=zR(r,u);else if(s==="document")d=HR(ao(r));else if(va(s))d=VR(s,u);else{const f=pE(r);d={x:s.x-f.x,y:s.y-f.y,width:s.width,height:s.height}}return Qd(d)}function bE(r,s){const u=Ol(r);return u===s||!va(u)||Oi(u)?!1:xa(u).position==="fixed"||bE(u,s)}function UR(r,s){const u=s.get(r);if(u)return u;let d=Ec(r,[],!1).filter(x=>va(x)&&Hi(x)!=="body"),f=null;const g=xa(r).position==="fixed";let v=g?Ol(r):r;for(;va(v)&&!Oi(v);){const x=xa(v),N=hg(v);!N&&x.position==="fixed"&&(f=null),(g?!N&&!f:!N&&x.position==="static"&&!!f&&PR.has(f.position)||Sc(v)&&!N&&bE(r,v))?d=d.filter(R=>R!==v):f=x,v=Ol(v)}return s.set(r,d),d}function LR(r){let{element:s,boundary:u,rootBoundary:d,strategy:f}=r;const v=[...u==="clippingAncestors"?Wd(s)?[]:UR(s,this._c):[].concat(u),d],x=v[0],N=v.reduce((S,R)=>{const b=_N(s,R,f);return S.top=Gn(b.top,S.top),S.right=kl(b.right,S.right),S.bottom=kl(b.bottom,S.bottom),S.left=Gn(b.left,S.left),S},_N(s,x,f));return{width:N.right-N.left,height:N.bottom-N.top,x:N.left,y:N.top}}function BR(r){const{width:s,height:u}=hE(r);return{width:s,height:u}}function GR(r,s,u){const d=no(s),f=ao(s),g=u==="fixed",v=Er(r,!0,g,s);let x={scrollLeft:0,scrollTop:0};const N=to(0);function S(){N.x=tf(f)}if(d||!d&&!g)if((Hi(s)!=="body"||Sc(f))&&(x=ef(s)),d){const C=Er(s,!0,g,s);N.x=C.x+s.clientLeft,N.y=C.y+s.clientTop}else f&&S();g&&!d&&f&&S();const R=f&&!d&&!g?gE(f,x):to(0),b=v.left+x.scrollLeft-N.x-R.x,E=v.top+x.scrollTop-N.y-R.y;return{x:b,y:E,width:v.width,height:v.height}}function Jp(r){return xa(r).position==="static"}function MN(r,s){if(!no(r)||xa(r).position==="fixed")return null;if(s)return s(r);let u=r.offsetParent;return ao(r)===u&&(u=u.ownerDocument.body),u}function yE(r,s){const u=Zn(r);if(Wd(r))return u;if(!no(r)){let f=Ol(r);for(;f&&!Oi(f);){if(va(f)&&!Jp(f))return f;f=Ol(f)}return u}let d=MN(r,s);for(;d&&wR(d)&&Jp(d);)d=MN(d,s);return d&&Oi(d)&&Jp(d)&&!hg(d)?u:d||CR(r)||u}const ZR=async function(r){const s=this.getOffsetParent||yE,u=this.getDimensions,d=await u(r.floating);return{reference:GR(r.reference,await s(r.floating),r.strategy),floating:{x:0,y:0,width:d.width,height:d.height}}};function YR(r){return xa(r).direction==="rtl"}const XR={convertOffsetParentRelativeRectToViewportRelativeRect:MR,getDocumentElement:ao,getClippingRect:LR,getOffsetParent:yE,getElementRects:ZR,getClientRects:jR,getDimensions:BR,getScale:ki,isElement:va,isRTL:YR};function vE(r,s){return r.x===s.x&&r.y===s.y&&r.width===s.width&&r.height===s.height}function qR(r,s){let u=null,d;const f=ao(r);function g(){var x;clearTimeout(d),(x=u)==null||x.disconnect(),u=null}function v(x,N){x===void 0&&(x=!1),N===void 0&&(N=1),g();const S=r.getBoundingClientRect(),{left:R,top:b,width:E,height:C}=S;if(x||s(),!E||!C)return;const j=Gd(b),Y=Gd(f.clientWidth-(R+E)),Z=Gd(f.clientHeight-(b+C)),B=Gd(R),de={rootMargin:-j+"px "+-Y+"px "+-Z+"px "+-B+"px",threshold:Gn(0,kl(1,N))||1};let fe=!0;function me(Ne){const se=Ne[0].intersectionRatio;if(se!==N){if(!fe)return v();se?v(!1,se):d=setTimeout(()=>{v(!1,1e-7)},1e3)}se===1&&!vE(S,r.getBoundingClientRect())&&v(),fe=!1}try{u=new IntersectionObserver(me,{...de,root:f.ownerDocument})}catch{u=new IntersectionObserver(me,de)}u.observe(r)}return v(!0),g}function $R(r,s,u,d){d===void 0&&(d={});const{ancestorScroll:f=!0,ancestorResize:g=!0,elementResize:v=typeof ResizeObserver=="function",layoutShift:x=typeof IntersectionObserver=="function",animationFrame:N=!1}=d,S=gg(r),R=f||g?[...S?Ec(S):[],...Ec(s)]:[];R.forEach(B=>{f&&B.addEventListener("scroll",u,{passive:!0}),g&&B.addEventListener("resize",u)});const b=S&&x?qR(S,u):null;let E=-1,C=null;v&&(C=new ResizeObserver(B=>{let[ce]=B;ce&&ce.target===S&&C&&(C.unobserve(s),cancelAnimationFrame(E),E=requestAnimationFrame(()=>{var de;(de=C)==null||de.observe(s)})),u()}),S&&!N&&C.observe(S),C.observe(s));let j,Y=N?Er(r):null;N&&Z();function Z(){const B=Er(r);Y&&!vE(Y,B)&&u(),Y=B,j=requestAnimationFrame(Z)}return u(),()=>{var B;R.forEach(ce=>{f&&ce.removeEventListener("scroll",u),g&&ce.removeEventListener("resize",u)}),b?.(),(B=C)==null||B.disconnect(),C=null,N&&cancelAnimationFrame(j)}}const JR=yR,QR=vR,FR=pR,IR=NR,KR=gR,jN=hR,WR=xR,eC=(r,s,u)=>{const d=new Map,f={platform:XR,...u},g={...f.platform,_c:d};return mR(r,s,{...f,platform:g})};var tC=typeof document<"u",nC=function(){},qd=tC?H.useLayoutEffect:nC;function Fd(r,s){if(r===s)return!0;if(typeof r!=typeof s)return!1;if(typeof r=="function"&&r.toString()===s.toString())return!0;let u,d,f;if(r&&s&&typeof r=="object"){if(Array.isArray(r)){if(u=r.length,u!==s.length)return!1;for(d=u;d--!==0;)if(!Fd(r[d],s[d]))return!1;return!0}if(f=Object.keys(r),u=f.length,u!==Object.keys(s).length)return!1;for(d=u;d--!==0;)if(!{}.hasOwnProperty.call(s,f[d]))return!1;for(d=u;d--!==0;){const g=f[d];if(!(g==="_owner"&&r.$$typeof)&&!Fd(r[g],s[g]))return!1}return!0}return r!==r&&s!==s}function xE(r){return typeof window>"u"?1:(r.ownerDocument.defaultView||window).devicePixelRatio||1}function HN(r,s){const u=xE(r);return Math.round(s*u)/u}function Qp(r){const s=H.useRef(r);return qd(()=>{s.current=r}),s}function aC(r){r===void 0&&(r={});const{placement:s="bottom",strategy:u="absolute",middleware:d=[],platform:f,elements:{reference:g,floating:v}={},transform:x=!0,whileElementsMounted:N,open:S}=r,[R,b]=H.useState({x:0,y:0,strategy:u,placement:s,middlewareData:{},isPositioned:!1}),[E,C]=H.useState(d);Fd(E,d)||C(d);const[j,Y]=H.useState(null),[Z,B]=H.useState(null),ce=H.useCallback(V=>{V!==Ne.current&&(Ne.current=V,Y(V))},[]),de=H.useCallback(V=>{V!==se.current&&(se.current=V,B(V))},[]),fe=g||j,me=v||Z,Ne=H.useRef(null),se=H.useRef(null),q=H.useRef(R),Se=N!=null,W=Qp(N),ze=Qp(f),le=Qp(S),ie=H.useCallback(()=>{if(!Ne.current||!se.current)return;const V={placement:s,strategy:u,middleware:E};ze.current&&(V.platform=ze.current),eC(Ne.current,se.current,V).then(ye=>{const we={...ye,isPositioned:le.current!==!1};Ce.current&&!Fd(q.current,we)&&(q.current=we,ug.flushSync(()=>{b(we)}))})},[E,s,u,ze,le]);qd(()=>{S===!1&&q.current.isPositioned&&(q.current.isPositioned=!1,b(V=>({...V,isPositioned:!1})))},[S]);const Ce=H.useRef(!1);qd(()=>(Ce.current=!0,()=>{Ce.current=!1}),[]),qd(()=>{if(fe&&(Ne.current=fe),me&&(se.current=me),fe&&me){if(W.current)return W.current(fe,me,ie);ie()}},[fe,me,ie,W,Se]);const He=H.useMemo(()=>({reference:Ne,floating:se,setReference:ce,setFloating:de}),[ce,de]),U=H.useMemo(()=>({reference:fe,floating:me}),[fe,me]),$=H.useMemo(()=>{const V={position:u,left:0,top:0};if(!U.floating)return V;const ye=HN(U.floating,R.x),we=HN(U.floating,R.y);return x?{...V,transform:"translate("+ye+"px, "+we+"px)",...xE(U.floating)>=1.5&&{willChange:"transform"}}:{position:u,left:ye,top:we}},[u,x,U.floating,R.x,R.y]);return H.useMemo(()=>({...R,update:ie,refs:He,elements:U,floatingStyles:$}),[R,ie,He,U,$])}const oC=r=>{function s(u){return{}.hasOwnProperty.call(u,"current")}return{name:"arrow",options:r,fn(u){const{element:d,padding:f}=typeof r=="function"?r(u):r;return d&&s(d)?d.current!=null?jN({element:d.current,padding:f}).fn(u):{}:d?jN({element:d,padding:f}).fn(u):{}}}},lC=(r,s)=>({...JR(r),options:[r,s]}),rC=(r,s)=>({...QR(r),options:[r,s]}),iC=(r,s)=>({...WR(r),options:[r,s]}),sC=(r,s)=>({...FR(r),options:[r,s]}),cC=(r,s)=>({...IR(r),options:[r,s]}),uC=(r,s)=>({...KR(r),options:[r,s]}),dC=(r,s)=>({...oC(r),options:[r,s]});var fC="Arrow",NE=H.forwardRef((r,s)=>{const{children:u,width:d=10,height:f=5,...g}=r;return ot.jsx(wr.svg,{...g,ref:s,width:d,height:f,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:r.asChild?u:ot.jsx("polygon",{points:"0,0 30,0 15,10"})})});NE.displayName=fC;var mC=NE;function hC(r){const[s,u]=H.useState(void 0);return xc(()=>{if(r){u({width:r.offsetWidth,height:r.offsetHeight});const d=new ResizeObserver(f=>{if(!Array.isArray(f)||!f.length)return;const g=f[0];let v,x;if("borderBoxSize"in g){const N=g.borderBoxSize,S=Array.isArray(N)?N[0]:N;v=S.inlineSize,x=S.blockSize}else v=r.offsetWidth,x=r.offsetHeight;u({width:v,height:x})});return d.observe(r,{box:"border-box"}),()=>d.unobserve(r)}else u(void 0)},[r]),s}var EE="Popper",[SE,wE]=oE(EE),[a3,AE]=SE(EE),TE="PopperAnchor",DE=H.forwardRef((r,s)=>{const{__scopePopper:u,virtualRef:d,...f}=r,g=AE(TE,u),v=H.useRef(null),x=Sr(s,v),N=H.useRef(null);return H.useEffect(()=>{const S=N.current;N.current=d?.current||v.current,S!==N.current&&g.onAnchorChange(N.current)}),d?null:ot.jsx(wr.div,{...f,ref:x})});DE.displayName=TE;var bg="PopperContent",[pC,gC]=SE(bg),RE=H.forwardRef((r,s)=>{const{__scopePopper:u,side:d="bottom",sideOffset:f=0,align:g="center",alignOffset:v=0,arrowPadding:x=0,avoidCollisions:N=!0,collisionBoundary:S=[],collisionPadding:R=0,sticky:b="partial",hideWhenDetached:E=!1,updatePositionStrategy:C="optimized",onPlaced:j,...Y}=r,Z=AE(bg,u),[B,ce]=H.useState(null),de=Sr(s,re=>ce(re)),[fe,me]=H.useState(null),Ne=hC(fe),se=Ne?.width??0,q=Ne?.height??0,Se=d+(g!=="center"?"-"+g:""),W=typeof R=="number"?R:{top:0,right:0,bottom:0,left:0,...R},ze=Array.isArray(S)?S:[S],le=ze.length>0,ie={padding:W,boundary:ze.filter(yC),altBoundary:le},{refs:Ce,floatingStyles:He,placement:U,isPositioned:$,middlewareData:V}=aC({strategy:"fixed",placement:Se,whileElementsMounted:(...re)=>$R(...re,{animationFrame:C==="always"}),elements:{reference:Z.anchor},middleware:[lC({mainAxis:f+q,alignmentAxis:v}),N&&rC({mainAxis:!0,crossAxis:!1,limiter:b==="partial"?iC():void 0,...ie}),N&&sC({...ie}),cC({...ie,apply:({elements:re,rects:Oe,availableWidth:tt,availableHeight:Nt})=>{const{width:ae,height:Ot}=Oe.reference,gn=re.floating.style;gn.setProperty("--radix-popper-available-width",`${tt}px`),gn.setProperty("--radix-popper-available-height",`${Nt}px`),gn.setProperty("--radix-popper-anchor-width",`${ae}px`),gn.setProperty("--radix-popper-anchor-height",`${Ot}px`)}}),fe&&dC({element:fe,padding:x}),vC({arrowWidth:se,arrowHeight:q}),E&&uC({strategy:"referenceHidden",...ie})]}),[ye,we]=OE(U),D=Id(j);xc(()=>{$&&D?.()},[$,D]);const K=V.arrow?.x,X=V.arrow?.y,I=V.arrow?.centerOffset!==0,[Te,et]=H.useState();return xc(()=>{B&&et(window.getComputedStyle(B).zIndex)},[B]),ot.jsx("div",{ref:Ce.setFloating,"data-radix-popper-content-wrapper":"",style:{...He,transform:$?He.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Te,"--radix-popper-transform-origin":[V.transformOrigin?.x,V.transformOrigin?.y].join(" "),...V.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:r.dir,children:ot.jsx(pC,{scope:u,placedSide:ye,onArrowChange:me,arrowX:K,arrowY:X,shouldHideArrow:I,children:ot.jsx(wr.div,{"data-side":ye,"data-align":we,...Y,ref:de,style:{...Y.style,animation:$?void 0:"none"}})})})});RE.displayName=bg;var CE="PopperArrow",bC={top:"bottom",right:"left",bottom:"top",left:"right"},kE=H.forwardRef(function(s,u){const{__scopePopper:d,...f}=s,g=gC(CE,d),v=bC[g.placedSide];return ot.jsx("span",{ref:g.onArrowChange,style:{position:"absolute",left:g.arrowX,top:g.arrowY,[v]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[g.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[g.placedSide],visibility:g.shouldHideArrow?"hidden":void 0},children:ot.jsx(mC,{...f,ref:u,style:{...f.style,display:"block"}})})});kE.displayName=CE;function yC(r){return r!==null}var vC=r=>({name:"transformOrigin",options:r,fn(s){const{placement:u,rects:d,middlewareData:f}=s,v=f.arrow?.centerOffset!==0,x=v?0:r.arrowWidth,N=v?0:r.arrowHeight,[S,R]=OE(u),b={start:"0%",center:"50%",end:"100%"}[R],E=(f.arrow?.x??0)+x/2,C=(f.arrow?.y??0)+N/2;let j="",Y="";return S==="bottom"?(j=v?b:`${E}px`,Y=`${-N}px`):S==="top"?(j=v?b:`${E}px`,Y=`${d.floating.height+N}px`):S==="right"?(j=`${-N}px`,Y=v?b:`${C}px`):S==="left"&&(j=`${d.floating.width+N}px`,Y=v?b:`${C}px`),{data:{x:j,y:Y}}}});function OE(r){const[s,u="center"]=r.split("-");return[s,u]}var xC=DE,NC=RE,EC=kE;function SC(r,s){return H.useReducer((u,d)=>s[u][d]??u,r)}var _E=r=>{const{present:s,children:u}=r,d=wC(s),f=typeof u=="function"?u({present:d.isPresent}):H.Children.only(u),g=Sr(d.ref,AC(f));return typeof u=="function"||d.isPresent?H.cloneElement(f,{ref:g}):null};_E.displayName="Presence";function wC(r){const[s,u]=H.useState(),d=H.useRef(null),f=H.useRef(r),g=H.useRef("none"),v=r?"mounted":"unmounted",[x,N]=SC(v,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return H.useEffect(()=>{const S=Zd(d.current);g.current=x==="mounted"?S:"none"},[x]),xc(()=>{const S=d.current,R=f.current;if(R!==r){const E=g.current,C=Zd(S);r?N("MOUNT"):C==="none"||S?.display==="none"?N("UNMOUNT"):N(R&&E!==C?"ANIMATION_OUT":"UNMOUNT"),f.current=r}},[r,N]),xc(()=>{if(s){let S;const R=s.ownerDocument.defaultView??window,b=C=>{const Y=Zd(d.current).includes(CSS.escape(C.animationName));if(C.target===s&&Y&&(N("ANIMATION_END"),!f.current)){const Z=s.style.animationFillMode;s.style.animationFillMode="forwards",S=R.setTimeout(()=>{s.style.animationFillMode==="forwards"&&(s.style.animationFillMode=Z)})}},E=C=>{C.target===s&&(g.current=Zd(d.current))};return s.addEventListener("animationstart",E),s.addEventListener("animationcancel",b),s.addEventListener("animationend",b),()=>{R.clearTimeout(S),s.removeEventListener("animationstart",E),s.removeEventListener("animationcancel",b),s.removeEventListener("animationend",b)}}else N("ANIMATION_END")},[s,N]),{isPresent:["mounted","unmountSuspended"].includes(x),ref:H.useCallback(S=>{d.current=S?getComputedStyle(S):null,u(S)},[])}}function Zd(r){return r?.animationName||"none"}function AC(r){let s=Object.getOwnPropertyDescriptor(r.props,"ref")?.get,u=s&&"isReactWarning"in s&&s.isReactWarning;return u?r.ref:(s=Object.getOwnPropertyDescriptor(r,"ref")?.get,u=s&&"isReactWarning"in s&&s.isReactWarning,u?r.props.ref:r.props.ref||r.ref)}var TC=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),DC="VisuallyHidden",ME=H.forwardRef((r,s)=>ot.jsx(wr.span,{...r,ref:s,style:{...TC,...r.style}}));ME.displayName=DC;var RC=ME,[nf]=oE("Tooltip",[wE]),yg=wE(),jE="TooltipProvider",CC=700,zN="tooltip.open",[kC,HE]=nf(jE),zE=r=>{const{__scopeTooltip:s,delayDuration:u=CC,skipDelayDuration:d=300,disableHoverableContent:f=!1,children:g}=r,v=H.useRef(!0),x=H.useRef(!1),N=H.useRef(0);return H.useEffect(()=>{const S=N.current;return()=>window.clearTimeout(S)},[]),ot.jsx(kC,{scope:s,isOpenDelayedRef:v,delayDuration:u,onOpen:H.useCallback(()=>{window.clearTimeout(N.current),v.current=!1},[]),onClose:H.useCallback(()=>{window.clearTimeout(N.current),N.current=window.setTimeout(()=>v.current=!0,d)},[d]),isPointerInTransitRef:x,onPointerInTransitChange:H.useCallback(S=>{x.current=S},[]),disableHoverableContent:f,children:g})};zE.displayName=jE;var PE="Tooltip",[o3,af]=nf(PE),lg="TooltipTrigger",OC=H.forwardRef((r,s)=>{const{__scopeTooltip:u,...d}=r,f=af(lg,u),g=HE(lg,u),v=yg(u),x=H.useRef(null),N=Sr(s,x,f.onTriggerChange),S=H.useRef(!1),R=H.useRef(!1),b=H.useCallback(()=>S.current=!1,[]);return H.useEffect(()=>()=>document.removeEventListener("pointerup",b),[b]),ot.jsx(xC,{asChild:!0,...v,children:ot.jsx(wr.button,{"aria-describedby":f.open?f.contentId:void 0,"data-state":f.stateAttribute,...d,ref:N,onPointerMove:Vo(r.onPointerMove,E=>{E.pointerType!=="touch"&&!R.current&&!g.isPointerInTransitRef.current&&(f.onTriggerEnter(),R.current=!0)}),onPointerLeave:Vo(r.onPointerLeave,()=>{f.onTriggerLeave(),R.current=!1}),onPointerDown:Vo(r.onPointerDown,()=>{f.open&&f.onClose(),S.current=!0,document.addEventListener("pointerup",b,{once:!0})}),onFocus:Vo(r.onFocus,()=>{S.current||f.onOpen()}),onBlur:Vo(r.onBlur,f.onClose),onClick:Vo(r.onClick,f.onClose)})})});OC.displayName=lg;var _C="TooltipPortal",[l3,MC]=nf(_C,{forceMount:void 0}),_i="TooltipContent",jC=H.forwardRef((r,s)=>{const u=MC(_i,r.__scopeTooltip),{forceMount:d=u.forceMount,side:f="top",...g}=r,v=af(_i,r.__scopeTooltip);return ot.jsx(_E,{present:d||v.open,children:v.disableHoverableContent?ot.jsx(VE,{side:f,...g,ref:s}):ot.jsx(HC,{side:f,...g,ref:s})})}),HC=H.forwardRef((r,s)=>{const u=af(_i,r.__scopeTooltip),d=HE(_i,r.__scopeTooltip),f=H.useRef(null),g=Sr(s,f),[v,x]=H.useState(null),{trigger:N,onClose:S}=u,R=f.current,{onPointerInTransitChange:b}=d,E=H.useCallback(()=>{x(null),b(!1)},[b]),C=H.useCallback((j,Y)=>{const Z=j.currentTarget,B={x:j.clientX,y:j.clientY},ce=LC(B,Z.getBoundingClientRect()),de=BC(B,ce),fe=GC(Y.getBoundingClientRect()),me=YC([...de,...fe]);x(me),b(!0)},[b]);return H.useEffect(()=>()=>E(),[E]),H.useEffect(()=>{if(N&&R){const j=Z=>C(Z,R),Y=Z=>C(Z,N);return N.addEventListener("pointerleave",j),R.addEventListener("pointerleave",Y),()=>{N.removeEventListener("pointerleave",j),R.removeEventListener("pointerleave",Y)}}},[N,R,C,E]),H.useEffect(()=>{if(v){const j=Y=>{const Z=Y.target,B={x:Y.clientX,y:Y.clientY},ce=N?.contains(Z)||R?.contains(Z),de=!ZC(B,v);ce?E():de&&(E(),S())};return document.addEventListener("pointermove",j),()=>document.removeEventListener("pointermove",j)}},[N,R,v,S,E]),ot.jsx(VE,{...r,ref:g})}),[zC,PC]=nf(PE,{isInside:!1}),VC=GD("TooltipContent"),VE=H.forwardRef((r,s)=>{const{__scopeTooltip:u,children:d,"aria-label":f,onEscapeKeyDown:g,onPointerDownOutside:v,...x}=r,N=af(_i,u),S=yg(u),{onClose:R}=N;return H.useEffect(()=>(document.addEventListener(zN,R),()=>document.removeEventListener(zN,R)),[R]),H.useEffect(()=>{if(N.trigger){const b=E=>{E.target?.contains(N.trigger)&&R()};return window.addEventListener("scroll",b,{capture:!0}),()=>window.removeEventListener("scroll",b,{capture:!0})}},[N.trigger,R]),ot.jsx(sE,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:g,onPointerDownOutside:v,onFocusOutside:b=>b.preventDefault(),onDismiss:R,children:ot.jsxs(NC,{"data-state":N.stateAttribute,...S,...x,ref:s,style:{...x.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[ot.jsx(VC,{children:d}),ot.jsx(zC,{scope:u,isInside:!0,children:ot.jsx(RC,{id:N.contentId,role:"tooltip",children:f||d})})]})})});jC.displayName=_i;var UE="TooltipArrow",UC=H.forwardRef((r,s)=>{const{__scopeTooltip:u,...d}=r,f=yg(u);return PC(UE,u).isInside?null:ot.jsx(EC,{...f,...d,ref:s})});UC.displayName=UE;function LC(r,s){const u=Math.abs(s.top-r.y),d=Math.abs(s.bottom-r.y),f=Math.abs(s.right-r.x),g=Math.abs(s.left-r.x);switch(Math.min(u,d,f,g)){case g:return"left";case f:return"right";case u:return"top";case d:return"bottom";default:throw new Error("unreachable")}}function BC(r,s,u=5){const d=[];switch(s){case"top":d.push({x:r.x-u,y:r.y+u},{x:r.x+u,y:r.y+u});break;case"bottom":d.push({x:r.x-u,y:r.y-u},{x:r.x+u,y:r.y-u});break;case"left":d.push({x:r.x+u,y:r.y-u},{x:r.x+u,y:r.y+u});break;case"right":d.push({x:r.x-u,y:r.y-u},{x:r.x-u,y:r.y+u});break}return d}function GC(r){const{top:s,right:u,bottom:d,left:f}=r;return[{x:f,y:s},{x:u,y:s},{x:u,y:d},{x:f,y:d}]}function ZC(r,s){const{x:u,y:d}=r;let f=!1;for(let g=0,v=s.length-1;g<s.length;v=g++){const x=s[g],N=s[v],S=x.x,R=x.y,b=N.x,E=N.y;R>d!=E>d&&u<(b-S)*(d-R)/(E-R)+S&&(f=!f)}return f}function YC(r){const s=r.slice();return s.sort((u,d)=>u.x<d.x?-1:u.x>d.x?1:u.y<d.y?-1:u.y>d.y?1:0),XC(s)}function XC(r){if(r.length<=1)return r.slice();const s=[];for(let d=0;d<r.length;d++){const f=r[d];for(;s.length>=2;){const g=s[s.length-1],v=s[s.length-2];if((g.x-v.x)*(f.y-v.y)>=(g.y-v.y)*(f.x-v.x))s.pop();else break}s.push(f)}s.pop();const u=[];for(let d=r.length-1;d>=0;d--){const f=r[d];for(;u.length>=2;){const g=u[u.length-1],v=u[u.length-2];if((g.x-v.x)*(f.y-v.y)>=(g.y-v.y)*(f.x-v.x))u.pop();else break}u.push(f)}return u.pop(),s.length===1&&u.length===1&&s[0].x===u[0].x&&s[0].y===u[0].y?s:s.concat(u)}var qC=zE;function LE(r){var s,u,d="";if(typeof r=="string"||typeof r=="number")d+=r;else if(typeof r=="object")if(Array.isArray(r)){var f=r.length;for(s=0;s<f;s++)r[s]&&(u=LE(r[s]))&&(d&&(d+=" "),d+=u)}else for(u in r)r[u]&&(d&&(d+=" "),d+=u);return d}function BE(){for(var r,s,u=0,d="",f=arguments.length;u<f;u++)(r=arguments[u])&&(s=LE(r))&&(d&&(d+=" "),d+=s);return d}const vg="-",$C=r=>{const s=QC(r),{conflictingClassGroups:u,conflictingClassGroupModifiers:d}=r;return{getClassGroupId:v=>{const x=v.split(vg);return x[0]===""&&x.length!==1&&x.shift(),GE(x,s)||JC(v)},getConflictingClassGroupIds:(v,x)=>{const N=u[v]||[];return x&&d[v]?[...N,...d[v]]:N}}},GE=(r,s)=>{if(r.length===0)return s.classGroupId;const u=r[0],d=s.nextPart.get(u),f=d?GE(r.slice(1),d):void 0;if(f)return f;if(s.validators.length===0)return;const g=r.join(vg);return s.validators.find(({validator:v})=>v(g))?.classGroupId},PN=/^\[(.+)\]$/,JC=r=>{if(PN.test(r)){const s=PN.exec(r)[1],u=s?.substring(0,s.indexOf(":"));if(u)return"arbitrary.."+u}},QC=r=>{const{theme:s,classGroups:u}=r,d={nextPart:new Map,validators:[]};for(const f in u)rg(u[f],d,f,s);return d},rg=(r,s,u,d)=>{r.forEach(f=>{if(typeof f=="string"){const g=f===""?s:VN(s,f);g.classGroupId=u;return}if(typeof f=="function"){if(FC(f)){rg(f(d),s,u,d);return}s.validators.push({validator:f,classGroupId:u});return}Object.entries(f).forEach(([g,v])=>{rg(v,VN(s,g),u,d)})})},VN=(r,s)=>{let u=r;return s.split(vg).forEach(d=>{u.nextPart.has(d)||u.nextPart.set(d,{nextPart:new Map,validators:[]}),u=u.nextPart.get(d)}),u},FC=r=>r.isThemeGetter,IC=r=>{if(r<1)return{get:()=>{},set:()=>{}};let s=0,u=new Map,d=new Map;const f=(g,v)=>{u.set(g,v),s++,s>r&&(s=0,d=u,u=new Map)};return{get(g){let v=u.get(g);if(v!==void 0)return v;if((v=d.get(g))!==void 0)return f(g,v),v},set(g,v){u.has(g)?u.set(g,v):f(g,v)}}},ig="!",sg=":",KC=sg.length,WC=r=>{const{prefix:s,experimentalParseClassName:u}=r;let d=f=>{const g=[];let v=0,x=0,N=0,S;for(let j=0;j<f.length;j++){let Y=f[j];if(v===0&&x===0){if(Y===sg){g.push(f.slice(N,j)),N=j+KC;continue}if(Y==="/"){S=j;continue}}Y==="["?v++:Y==="]"?v--:Y==="("?x++:Y===")"&&x--}const R=g.length===0?f:f.substring(N),b=ek(R),E=b!==R,C=S&&S>N?S-N:void 0;return{modifiers:g,hasImportantModifier:E,baseClassName:b,maybePostfixModifierPosition:C}};if(s){const f=s+sg,g=d;d=v=>v.startsWith(f)?g(v.substring(f.length)):{isExternal:!0,modifiers:[],hasImportantModifier:!1,baseClassName:v,maybePostfixModifierPosition:void 0}}if(u){const f=d;d=g=>u({className:g,parseClassName:f})}return d},ek=r=>r.endsWith(ig)?r.substring(0,r.length-1):r.startsWith(ig)?r.substring(1):r,tk=r=>{const s=Object.fromEntries(r.orderSensitiveModifiers.map(d=>[d,!0]));return d=>{if(d.length<=1)return d;const f=[];let g=[];return d.forEach(v=>{v[0]==="["||s[v]?(f.push(...g.sort(),v),g=[]):g.push(v)}),f.push(...g.sort()),f}},nk=r=>({cache:IC(r.cacheSize),parseClassName:WC(r),sortModifiers:tk(r),...$C(r)}),ak=/\s+/,ok=(r,s)=>{const{parseClassName:u,getClassGroupId:d,getConflictingClassGroupIds:f,sortModifiers:g}=s,v=[],x=r.trim().split(ak);let N="";for(let S=x.length-1;S>=0;S-=1){const R=x[S],{isExternal:b,modifiers:E,hasImportantModifier:C,baseClassName:j,maybePostfixModifierPosition:Y}=u(R);if(b){N=R+(N.length>0?" "+N:N);continue}let Z=!!Y,B=d(Z?j.substring(0,Y):j);if(!B){if(!Z){N=R+(N.length>0?" "+N:N);continue}if(B=d(j),!B){N=R+(N.length>0?" "+N:N);continue}Z=!1}const ce=g(E).join(":"),de=C?ce+ig:ce,fe=de+B;if(v.includes(fe))continue;v.push(fe);const me=f(B,Z);for(let Ne=0;Ne<me.length;++Ne){const se=me[Ne];v.push(de+se)}N=R+(N.length>0?" "+N:N)}return N};function lk(){let r=0,s,u,d="";for(;r<arguments.length;)(s=arguments[r++])&&(u=ZE(s))&&(d&&(d+=" "),d+=u);return d}const ZE=r=>{if(typeof r=="string")return r;let s,u="";for(let d=0;d<r.length;d++)r[d]&&(s=ZE(r[d]))&&(u&&(u+=" "),u+=s);return u};function rk(r,...s){let u,d,f,g=v;function v(N){const S=s.reduce((R,b)=>b(R),r());return u=nk(S),d=u.cache.get,f=u.cache.set,g=x,x(N)}function x(N){const S=d(N);if(S)return S;const R=ok(N,u);return f(N,R),R}return function(){return g(lk.apply(null,arguments))}}const Yt=r=>{const s=u=>u[r]||[];return s.isThemeGetter=!0,s},YE=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,XE=/^\((?:(\w[\w-]*):)?(.+)\)$/i,ik=/^\d+\/\d+$/,sk=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,ck=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,uk=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,dk=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,fk=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Di=r=>ik.test(r),Ye=r=>!!r&&!Number.isNaN(Number(r)),Cl=r=>!!r&&Number.isInteger(Number(r)),Fp=r=>r.endsWith("%")&&Ye(r.slice(0,-1)),Po=r=>sk.test(r),mk=()=>!0,hk=r=>ck.test(r)&&!uk.test(r),qE=()=>!1,pk=r=>dk.test(r),gk=r=>fk.test(r),bk=r=>!ge(r)&&!be(r),yk=r=>zi(r,QE,qE),ge=r=>YE.test(r),yr=r=>zi(r,FE,hk),Ip=r=>zi(r,Sk,Ye),UN=r=>zi(r,$E,qE),vk=r=>zi(r,JE,gk),Yd=r=>zi(r,IE,pk),be=r=>XE.test(r),yc=r=>Pi(r,FE),xk=r=>Pi(r,wk),LN=r=>Pi(r,$E),Nk=r=>Pi(r,QE),Ek=r=>Pi(r,JE),Xd=r=>Pi(r,IE,!0),zi=(r,s,u)=>{const d=YE.exec(r);return d?d[1]?s(d[1]):u(d[2]):!1},Pi=(r,s,u=!1)=>{const d=XE.exec(r);return d?d[1]?s(d[1]):u:!1},$E=r=>r==="position"||r==="percentage",JE=r=>r==="image"||r==="url",QE=r=>r==="length"||r==="size"||r==="bg-size",FE=r=>r==="length",Sk=r=>r==="number",wk=r=>r==="family-name",IE=r=>r==="shadow",Ak=()=>{const r=Yt("color"),s=Yt("font"),u=Yt("text"),d=Yt("font-weight"),f=Yt("tracking"),g=Yt("leading"),v=Yt("breakpoint"),x=Yt("container"),N=Yt("spacing"),S=Yt("radius"),R=Yt("shadow"),b=Yt("inset-shadow"),E=Yt("text-shadow"),C=Yt("drop-shadow"),j=Yt("blur"),Y=Yt("perspective"),Z=Yt("aspect"),B=Yt("ease"),ce=Yt("animate"),de=()=>["auto","avoid","all","avoid-page","page","left","right","column"],fe=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],me=()=>[...fe(),be,ge],Ne=()=>["auto","hidden","clip","visible","scroll"],se=()=>["auto","contain","none"],q=()=>[be,ge,N],Se=()=>[Di,"full","auto",...q()],W=()=>[Cl,"none","subgrid",be,ge],ze=()=>["auto",{span:["full",Cl,be,ge]},Cl,be,ge],le=()=>[Cl,"auto",be,ge],ie=()=>["auto","min","max","fr",be,ge],Ce=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],He=()=>["start","end","center","stretch","center-safe","end-safe"],U=()=>["auto",...q()],$=()=>[Di,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...q()],V=()=>[r,be,ge],ye=()=>[...fe(),LN,UN,{position:[be,ge]}],we=()=>["no-repeat",{repeat:["","x","y","space","round"]}],D=()=>["auto","cover","contain",Nk,yk,{size:[be,ge]}],K=()=>[Fp,yc,yr],X=()=>["","none","full",S,be,ge],I=()=>["",Ye,yc,yr],Te=()=>["solid","dashed","dotted","double"],et=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],re=()=>[Ye,Fp,LN,UN],Oe=()=>["","none",j,be,ge],tt=()=>["none",Ye,be,ge],Nt=()=>["none",Ye,be,ge],ae=()=>[Ye,be,ge],Ot=()=>[Di,"full",...q()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Po],breakpoint:[Po],color:[mk],container:[Po],"drop-shadow":[Po],ease:["in","out","in-out"],font:[bk],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Po],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Po],shadow:[Po],spacing:["px",Ye],text:[Po],"text-shadow":[Po],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Di,ge,be,Z]}],container:["container"],columns:[{columns:[Ye,ge,be,x]}],"break-after":[{"break-after":de()}],"break-before":[{"break-before":de()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:me()}],overflow:[{overflow:Ne()}],"overflow-x":[{"overflow-x":Ne()}],"overflow-y":[{"overflow-y":Ne()}],overscroll:[{overscroll:se()}],"overscroll-x":[{"overscroll-x":se()}],"overscroll-y":[{"overscroll-y":se()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:Se()}],"inset-x":[{"inset-x":Se()}],"inset-y":[{"inset-y":Se()}],start:[{start:Se()}],end:[{end:Se()}],top:[{top:Se()}],right:[{right:Se()}],bottom:[{bottom:Se()}],left:[{left:Se()}],visibility:["visible","invisible","collapse"],z:[{z:[Cl,"auto",be,ge]}],basis:[{basis:[Di,"full","auto",x,...q()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Ye,Di,"auto","initial","none",ge]}],grow:[{grow:["",Ye,be,ge]}],shrink:[{shrink:["",Ye,be,ge]}],order:[{order:[Cl,"first","last","none",be,ge]}],"grid-cols":[{"grid-cols":W()}],"col-start-end":[{col:ze()}],"col-start":[{"col-start":le()}],"col-end":[{"col-end":le()}],"grid-rows":[{"grid-rows":W()}],"row-start-end":[{row:ze()}],"row-start":[{"row-start":le()}],"row-end":[{"row-end":le()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":ie()}],"auto-rows":[{"auto-rows":ie()}],gap:[{gap:q()}],"gap-x":[{"gap-x":q()}],"gap-y":[{"gap-y":q()}],"justify-content":[{justify:[...Ce(),"normal"]}],"justify-items":[{"justify-items":[...He(),"normal"]}],"justify-self":[{"justify-self":["auto",...He()]}],"align-content":[{content:["normal",...Ce()]}],"align-items":[{items:[...He(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...He(),{baseline:["","last"]}]}],"place-content":[{"place-content":Ce()}],"place-items":[{"place-items":[...He(),"baseline"]}],"place-self":[{"place-self":["auto",...He()]}],p:[{p:q()}],px:[{px:q()}],py:[{py:q()}],ps:[{ps:q()}],pe:[{pe:q()}],pt:[{pt:q()}],pr:[{pr:q()}],pb:[{pb:q()}],pl:[{pl:q()}],m:[{m:U()}],mx:[{mx:U()}],my:[{my:U()}],ms:[{ms:U()}],me:[{me:U()}],mt:[{mt:U()}],mr:[{mr:U()}],mb:[{mb:U()}],ml:[{ml:U()}],"space-x":[{"space-x":q()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":q()}],"space-y-reverse":["space-y-reverse"],size:[{size:$()}],w:[{w:[x,"screen",...$()]}],"min-w":[{"min-w":[x,"screen","none",...$()]}],"max-w":[{"max-w":[x,"screen","none","prose",{screen:[v]},...$()]}],h:[{h:["screen","lh",...$()]}],"min-h":[{"min-h":["screen","lh","none",...$()]}],"max-h":[{"max-h":["screen","lh",...$()]}],"font-size":[{text:["base",u,yc,yr]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[d,be,Ip]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",Fp,ge]}],"font-family":[{font:[xk,ge,s]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[f,be,ge]}],"line-clamp":[{"line-clamp":[Ye,"none",be,Ip]}],leading:[{leading:[g,...q()]}],"list-image":[{"list-image":["none",be,ge]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",be,ge]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:V()}],"text-color":[{text:V()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...Te(),"wavy"]}],"text-decoration-thickness":[{decoration:[Ye,"from-font","auto",be,yr]}],"text-decoration-color":[{decoration:V()}],"underline-offset":[{"underline-offset":[Ye,"auto",be,ge]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:q()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",be,ge]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",be,ge]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ye()}],"bg-repeat":[{bg:we()}],"bg-size":[{bg:D()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Cl,be,ge],radial:["",be,ge],conic:[Cl,be,ge]},Ek,vk]}],"bg-color":[{bg:V()}],"gradient-from-pos":[{from:K()}],"gradient-via-pos":[{via:K()}],"gradient-to-pos":[{to:K()}],"gradient-from":[{from:V()}],"gradient-via":[{via:V()}],"gradient-to":[{to:V()}],rounded:[{rounded:X()}],"rounded-s":[{"rounded-s":X()}],"rounded-e":[{"rounded-e":X()}],"rounded-t":[{"rounded-t":X()}],"rounded-r":[{"rounded-r":X()}],"rounded-b":[{"rounded-b":X()}],"rounded-l":[{"rounded-l":X()}],"rounded-ss":[{"rounded-ss":X()}],"rounded-se":[{"rounded-se":X()}],"rounded-ee":[{"rounded-ee":X()}],"rounded-es":[{"rounded-es":X()}],"rounded-tl":[{"rounded-tl":X()}],"rounded-tr":[{"rounded-tr":X()}],"rounded-br":[{"rounded-br":X()}],"rounded-bl":[{"rounded-bl":X()}],"border-w":[{border:I()}],"border-w-x":[{"border-x":I()}],"border-w-y":[{"border-y":I()}],"border-w-s":[{"border-s":I()}],"border-w-e":[{"border-e":I()}],"border-w-t":[{"border-t":I()}],"border-w-r":[{"border-r":I()}],"border-w-b":[{"border-b":I()}],"border-w-l":[{"border-l":I()}],"divide-x":[{"divide-x":I()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":I()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...Te(),"hidden","none"]}],"divide-style":[{divide:[...Te(),"hidden","none"]}],"border-color":[{border:V()}],"border-color-x":[{"border-x":V()}],"border-color-y":[{"border-y":V()}],"border-color-s":[{"border-s":V()}],"border-color-e":[{"border-e":V()}],"border-color-t":[{"border-t":V()}],"border-color-r":[{"border-r":V()}],"border-color-b":[{"border-b":V()}],"border-color-l":[{"border-l":V()}],"divide-color":[{divide:V()}],"outline-style":[{outline:[...Te(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Ye,be,ge]}],"outline-w":[{outline:["",Ye,yc,yr]}],"outline-color":[{outline:V()}],shadow:[{shadow:["","none",R,Xd,Yd]}],"shadow-color":[{shadow:V()}],"inset-shadow":[{"inset-shadow":["none",b,Xd,Yd]}],"inset-shadow-color":[{"inset-shadow":V()}],"ring-w":[{ring:I()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:V()}],"ring-offset-w":[{"ring-offset":[Ye,yr]}],"ring-offset-color":[{"ring-offset":V()}],"inset-ring-w":[{"inset-ring":I()}],"inset-ring-color":[{"inset-ring":V()}],"text-shadow":[{"text-shadow":["none",E,Xd,Yd]}],"text-shadow-color":[{"text-shadow":V()}],opacity:[{opacity:[Ye,be,ge]}],"mix-blend":[{"mix-blend":[...et(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":et()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[Ye]}],"mask-image-linear-from-pos":[{"mask-linear-from":re()}],"mask-image-linear-to-pos":[{"mask-linear-to":re()}],"mask-image-linear-from-color":[{"mask-linear-from":V()}],"mask-image-linear-to-color":[{"mask-linear-to":V()}],"mask-image-t-from-pos":[{"mask-t-from":re()}],"mask-image-t-to-pos":[{"mask-t-to":re()}],"mask-image-t-from-color":[{"mask-t-from":V()}],"mask-image-t-to-color":[{"mask-t-to":V()}],"mask-image-r-from-pos":[{"mask-r-from":re()}],"mask-image-r-to-pos":[{"mask-r-to":re()}],"mask-image-r-from-color":[{"mask-r-from":V()}],"mask-image-r-to-color":[{"mask-r-to":V()}],"mask-image-b-from-pos":[{"mask-b-from":re()}],"mask-image-b-to-pos":[{"mask-b-to":re()}],"mask-image-b-from-color":[{"mask-b-from":V()}],"mask-image-b-to-color":[{"mask-b-to":V()}],"mask-image-l-from-pos":[{"mask-l-from":re()}],"mask-image-l-to-pos":[{"mask-l-to":re()}],"mask-image-l-from-color":[{"mask-l-from":V()}],"mask-image-l-to-color":[{"mask-l-to":V()}],"mask-image-x-from-pos":[{"mask-x-from":re()}],"mask-image-x-to-pos":[{"mask-x-to":re()}],"mask-image-x-from-color":[{"mask-x-from":V()}],"mask-image-x-to-color":[{"mask-x-to":V()}],"mask-image-y-from-pos":[{"mask-y-from":re()}],"mask-image-y-to-pos":[{"mask-y-to":re()}],"mask-image-y-from-color":[{"mask-y-from":V()}],"mask-image-y-to-color":[{"mask-y-to":V()}],"mask-image-radial":[{"mask-radial":[be,ge]}],"mask-image-radial-from-pos":[{"mask-radial-from":re()}],"mask-image-radial-to-pos":[{"mask-radial-to":re()}],"mask-image-radial-from-color":[{"mask-radial-from":V()}],"mask-image-radial-to-color":[{"mask-radial-to":V()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":fe()}],"mask-image-conic-pos":[{"mask-conic":[Ye]}],"mask-image-conic-from-pos":[{"mask-conic-from":re()}],"mask-image-conic-to-pos":[{"mask-conic-to":re()}],"mask-image-conic-from-color":[{"mask-conic-from":V()}],"mask-image-conic-to-color":[{"mask-conic-to":V()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ye()}],"mask-repeat":[{mask:we()}],"mask-size":[{mask:D()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",be,ge]}],filter:[{filter:["","none",be,ge]}],blur:[{blur:Oe()}],brightness:[{brightness:[Ye,be,ge]}],contrast:[{contrast:[Ye,be,ge]}],"drop-shadow":[{"drop-shadow":["","none",C,Xd,Yd]}],"drop-shadow-color":[{"drop-shadow":V()}],grayscale:[{grayscale:["",Ye,be,ge]}],"hue-rotate":[{"hue-rotate":[Ye,be,ge]}],invert:[{invert:["",Ye,be,ge]}],saturate:[{saturate:[Ye,be,ge]}],sepia:[{sepia:["",Ye,be,ge]}],"backdrop-filter":[{"backdrop-filter":["","none",be,ge]}],"backdrop-blur":[{"backdrop-blur":Oe()}],"backdrop-brightness":[{"backdrop-brightness":[Ye,be,ge]}],"backdrop-contrast":[{"backdrop-contrast":[Ye,be,ge]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Ye,be,ge]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Ye,be,ge]}],"backdrop-invert":[{"backdrop-invert":["",Ye,be,ge]}],"backdrop-opacity":[{"backdrop-opacity":[Ye,be,ge]}],"backdrop-saturate":[{"backdrop-saturate":[Ye,be,ge]}],"backdrop-sepia":[{"backdrop-sepia":["",Ye,be,ge]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":q()}],"border-spacing-x":[{"border-spacing-x":q()}],"border-spacing-y":[{"border-spacing-y":q()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",be,ge]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Ye,"initial",be,ge]}],ease:[{ease:["linear","initial",B,be,ge]}],delay:[{delay:[Ye,be,ge]}],animate:[{animate:["none",ce,be,ge]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[Y,be,ge]}],"perspective-origin":[{"perspective-origin":me()}],rotate:[{rotate:tt()}],"rotate-x":[{"rotate-x":tt()}],"rotate-y":[{"rotate-y":tt()}],"rotate-z":[{"rotate-z":tt()}],scale:[{scale:Nt()}],"scale-x":[{"scale-x":Nt()}],"scale-y":[{"scale-y":Nt()}],"scale-z":[{"scale-z":Nt()}],"scale-3d":["scale-3d"],skew:[{skew:ae()}],"skew-x":[{"skew-x":ae()}],"skew-y":[{"skew-y":ae()}],transform:[{transform:[be,ge,"","none","gpu","cpu"]}],"transform-origin":[{origin:me()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Ot()}],"translate-x":[{"translate-x":Ot()}],"translate-y":[{"translate-y":Ot()}],"translate-z":[{"translate-z":Ot()}],"translate-none":["translate-none"],accent:[{accent:V()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:V()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",be,ge]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":q()}],"scroll-mx":[{"scroll-mx":q()}],"scroll-my":[{"scroll-my":q()}],"scroll-ms":[{"scroll-ms":q()}],"scroll-me":[{"scroll-me":q()}],"scroll-mt":[{"scroll-mt":q()}],"scroll-mr":[{"scroll-mr":q()}],"scroll-mb":[{"scroll-mb":q()}],"scroll-ml":[{"scroll-ml":q()}],"scroll-p":[{"scroll-p":q()}],"scroll-px":[{"scroll-px":q()}],"scroll-py":[{"scroll-py":q()}],"scroll-ps":[{"scroll-ps":q()}],"scroll-pe":[{"scroll-pe":q()}],"scroll-pt":[{"scroll-pt":q()}],"scroll-pr":[{"scroll-pr":q()}],"scroll-pb":[{"scroll-pb":q()}],"scroll-pl":[{"scroll-pl":q()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",be,ge]}],fill:[{fill:["none",...V()]}],"stroke-w":[{stroke:[Ye,yc,yr,Ip]}],stroke:[{stroke:["none",...V()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},Tk=rk(Ak);function of(...r){return Tk(BE(r))}function Dk({delayDuration:r=0,...s}){return h.jsxDEV(qC,{"data-loc":"client/src/components/ui/tooltip.tsx:11","data-slot":"tooltip-provider",delayDuration:r,...s},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/ui/tooltip.tsx",lineNumber:11,columnNumber:5},this)}const BN=r=>typeof r=="boolean"?`${r}`:r===0?"0":r,GN=BE,Rk=(r,s)=>u=>{var d;if(s?.variants==null)return GN(r,u?.class,u?.className);const{variants:f,defaultVariants:g}=s,v=Object.keys(f).map(S=>{const R=u?.[S],b=g?.[S];if(R===null)return null;const E=BN(R)||BN(b);return f[S][E]}),x=u&&Object.entries(u).reduce((S,R)=>{let[b,E]=R;return E===void 0||(S[b]=E),S},{}),N=s==null||(d=s.compoundVariants)===null||d===void 0?void 0:d.reduce((S,R)=>{let{class:b,className:E,...C}=R;return Object.entries(C).every(j=>{let[Y,Z]=j;return Array.isArray(Z)?Z.includes({...g,...x}[Y]):{...g,...x}[Y]===Z})?[...S,b,E]:S},[]);return GN(r,v,N,u?.class,u?.className)},Ck=Rk("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-transparent shadow-xs hover:bg-accent dark:bg-transparent dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function kk({className:r,variant:s,size:u,asChild:d=!1,...f}){const g=d?LD:"button";return h.jsxDEV(g,{"data-loc":"client/src/components/ui/button.tsx:52","data-slot":"button",className:of(Ck({variant:s,size:u,className:r})),...f},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/ui/button.tsx",lineNumber:52,columnNumber:5},this)}function Ok({className:r,...s}){return h.jsxDEV("div",{"data-loc":"client/src/components/ui/card.tsx:7","data-slot":"card",className:of("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",r),...s},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/ui/card.tsx",lineNumber:7,columnNumber:5},this)}function _k({className:r,...s}){return h.jsxDEV("div",{"data-loc":"client/src/components/ui/card.tsx:66","data-slot":"card-content",className:of("px-6",r),...s},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/ui/card.tsx",lineNumber:66,columnNumber:5},this)}/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const Mk=r=>r.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),KE=(...r)=>r.filter((s,u,d)=>!!s&&d.indexOf(s)===u).join(" ");/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/var jk={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.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const Hk=H.forwardRef(({color:r="currentColor",size:s=24,strokeWidth:u=2,absoluteStrokeWidth:d,className:f="",children:g,iconNode:v,...x},N)=>H.createElement("svg",{ref:N,...jk,width:s,height:s,stroke:r,strokeWidth:d?Number(u)*24/Number(s):u,className:KE("lucide",f),...x},[...v.map(([S,R])=>H.createElement(S,R)),...Array.isArray(g)?g:[g]]));/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const rt=(r,s)=>{const u=H.forwardRef(({className:d,...f},g)=>H.createElement(Hk,{ref:g,iconNode:s,className:KE(`lucide-${Mk(r)}`,d),...f}));return u.displayName=`${r}`,u};/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const ZN=rt("ArrowRight",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const wc=rt("BookOpen",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const WE=rt("Book",[["path",{d:"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20",key:"k3hazp"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const zk=rt("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const Pk=rt("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const Vk=rt("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const Uk=rt("CircleAlert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const Lk=rt("Cpu",[["rect",{width:"16",height:"16",x:"4",y:"4",rx:"2",key:"14l7u7"}],["rect",{width:"6",height:"6",x:"9",y:"9",rx:"1",key:"5aljv4"}],["path",{d:"M15 2v2",key:"13l42r"}],["path",{d:"M15 20v2",key:"15mkzm"}],["path",{d:"M2 15h2",key:"1gxd5l"}],["path",{d:"M2 9h2",key:"1bbxkp"}],["path",{d:"M20 15h2",key:"19e6y8"}],["path",{d:"M20 9h2",key:"19tzq7"}],["path",{d:"M9 2v2",key:"165o2o"}],["path",{d:"M9 20v2",key:"i2bqo8"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const Vi=rt("ExternalLink",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const Bk=rt("FileSearch",[["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M4.268 21a2 2 0 0 0 1.727 1H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3",key:"ms7g94"}],["path",{d:"m9 18-1.5-1.5",key:"1j6qii"}],["circle",{cx:"5",cy:"14",r:"3",key:"ufru5t"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const xg=rt("FileText",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const Gk=rt("Filter",[["polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3",key:"1yg77f"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const Zk=rt("Github",[["path",{d:"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4",key:"tonef"}],["path",{d:"M9 18c-4.51 2-5-2-7-2",key:"9comsn"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const Yk=rt("Globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const Xk=rt("GraduationCap",[["path",{d:"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",key:"j76jl0"}],["path",{d:"M22 10v6",key:"1lu8f3"}],["path",{d:"M6 12.5V16a6 3 0 0 0 12 0v-3.5",key:"1r8lef"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const qk=rt("House",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"1d0kgt"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const $k=rt("Link2",[["path",{d:"M9 17H7A5 5 0 0 1 7 7h2",key:"8i5ue5"}],["path",{d:"M15 7h2a5 5 0 1 1 0 10h-2",key:"1b9ql8"}],["line",{x1:"8",x2:"16",y1:"12",y2:"12",key:"1jonct"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const Jk=rt("Menu",[["line",{x1:"4",x2:"20",y1:"12",y2:"12",key:"1e0a9i"}],["line",{x1:"4",x2:"20",y1:"6",y2:"6",key:"1owob3"}],["line",{x1:"4",x2:"20",y1:"18",y2:"18",key:"yk5zj1"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const Qk=rt("RotateCcw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const eS=rt("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const Ng=rt("Shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const Ui=rt("Star",[["polygon",{points:"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2",key:"8f66p6"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const Fk=rt("Terminal",[["polyline",{points:"4 17 10 11 4 5",key:"akl6gq"}],["line",{x1:"12",x2:"20",y1:"19",y2:"19",key:"q2wloq"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const Ik=rt("TriangleAlert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const Kk=rt("Trophy",[["path",{d:"M6 9H4.5a2.5 2.5 0 0 1 0-5H6",key:"17hqa7"}],["path",{d:"M18 9h1.5a2.5 2.5 0 0 0 0-5H18",key:"lmptdp"}],["path",{d:"M4 22h16",key:"57wxv0"}],["path",{d:"M10 14.66V17c0 .55-.47.98-.97 1.21C7.85 18.75 7 20.24 7 22",key:"1nw9bq"}],["path",{d:"M14 14.66V17c0 .55.47.98.97 1.21C16.15 18.75 17 20.24 17 22",key:"1np0yb"}],["path",{d:"M18 2H6v7a6 6 0 0 0 12 0V2Z",key:"u46fv3"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const tS=rt("Video",[["path",{d:"m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5",key:"ftymec"}],["rect",{x:"2",y:"6",width:"14",height:"12",rx:"2",key:"158x01"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const Eg=rt("Wrench",[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z",key:"cbrjhi"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const Sg=rt("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]);/**
* @license lucide-react v0.453.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const Wk=rt("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]);function eO(r,s){if(r instanceof RegExp)return{keys:!1,pattern:r};var u,d,f,g,v=[],x="",N=r.split("/");for(N[0]||N.shift();f=N.shift();)u=f[0],u==="*"?(v.push(u),x+=f[1]==="?"?"(?:/(.*))?":"/(.*)"):u===":"?(d=f.indexOf("?",1),g=f.indexOf(".",1),v.push(f.substring(1,~d?d:~g?g:f.length)),x+=~d&&!~g?"(?:/([^/]+?))?":"/([^/]+?)",~g&&(x+=(~d?"?":"")+"\\"+f.substring(g))):x+="/"+f;return{keys:v,pattern:new RegExp("^"+x+(s?"(?=$|/)":"/?$"),"i")}}var Kp={exports:{}},Wp={},YN;function tO(){if(YN)return Wp;YN=1;/**
* @license React
* use-sync-external-store-shim.development.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/return(function(){function r(C,j){return C===j&&(C!==0||1/C===1/j)||C!==C&&j!==j}function s(C,j){R||f.startTransition===void 0||(R=!0,console.error("You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."));var Y=j();if(!b){var Z=j();g(Y,Z)||(console.error("The result of getSnapshot should be cached to avoid an infinite loop"),b=!0)}Z=v({inst:{value:Y,getSnapshot:j}});var B=Z[0].inst,ce=Z[1];return N(function(){B.value=Y,B.getSnapshot=j,u(B)&&ce({inst:B})},[C,Y,j]),x(function(){return u(B)&&ce({inst:B}),C(function(){u(B)&&ce({inst:B})})},[C]),S(Y),Y}function u(C){var j=C.getSnapshot;C=C.value;try{var Y=j();return!g(C,Y)}catch{return!0}}function d(C,j){return j()}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var f=Mi(),g=typeof Object.is=="function"?Object.is:r,v=f.useState,x=f.useEffect,N=f.useLayoutEffect,S=f.useDebugValue,R=!1,b=!1,E=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?d:s;Wp.useSyncExternalStore=f.useSyncExternalStore!==void 0?f.useSyncExternalStore:E,typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop=="function"&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})(),Wp}var XN;function nO(){return XN||(XN=1,Kp.exports=tO()),Kp.exports}var aO=nO();const oO=aD.useInsertionEffect,lO=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",rO=lO?H.useLayoutEffect:H.useEffect,iO=oO||rO,nS=r=>{const s=H.useRef([r,(...u)=>s[0](...u)]).current;return iO(()=>{s[0]=r}),s[1]},sO="popstate",wg="pushState",Ag="replaceState",cO="hashchange",qN=[sO,wg,Ag,cO],uO=r=>{for(const s of qN)addEventListener(s,r);return()=>{for(const s of qN)removeEventListener(s,r)}},aS=(r,s)=>aO.useSyncExternalStore(uO,r,s),dO=()=>location.search,fO=({ssrSearch:r=""}={})=>aS(dO,()=>r),$N=()=>location.pathname,mO=({ssrPath:r}={})=>aS($N,r?()=>r:$N),hO=(r,{replace:s=!1,state:u=null}={})=>history[s?Ag:wg](u,"",r),pO=(r={})=>[mO(r),hO],JN=Symbol.for("wouter_v3");if(typeof history<"u"&&typeof window[JN]>"u"){for(const r of[wg,Ag]){const s=history[r];history[r]=function(){const u=s.apply(this,arguments),d=new Event(r);return d.arguments=arguments,dispatchEvent(d),u}}Object.defineProperty(window,JN,{value:!0})}const gO=(r,s)=>s.toLowerCase().indexOf(r.toLowerCase())?"~"+s:s.slice(r.length)||"/",oS=(r="")=>r==="/"?"":r,bO=(r,s)=>r[0]==="~"?r.slice(1):oS(s)+r,yO=(r="",s)=>gO(QN(oS(r)),QN(s)),QN=r=>{try{return decodeURI(r)}catch{return r}},lS={hook:pO,searchHook:fO,parser:eO,base:"",ssrPath:void 0,ssrSearch:void 0,ssrContext:void 0,hrefs:r=>r},rS=H.createContext(lS),Ac=()=>H.useContext(rS),iS={},sS=H.createContext(iS),vO=()=>H.useContext(sS),lf=r=>{const[s,u]=r.hook(r);return[yO(r.base,s),nS((d,f)=>u(bO(d,r.base),f))]},cS=()=>lf(Ac()),uS=(r,s,u,d)=>{const{pattern:f,keys:g}=s instanceof RegExp?{keys:!1,pattern:s}:r(s||"*",d),v=f.exec(u)||[],[x,...N]=v;return x!==void 0?[!0,(()=>{const S=g!==!1?Object.fromEntries(g.map((b,E)=>[b,N[E]])):v.groups;let R={...N};return S&&Object.assign(R,S),R})(),...d?[x]:[]]:[!1,null]},xO=({children:r,...s})=>{const u=Ac(),d=s.hook?lS:u;let f=d;const[g,v]=s.ssrPath?.split("?")??[];v&&(s.ssrSearch=v,s.ssrPath=g),s.hrefs=s.hrefs??s.hook?.hrefs;let x=H.useRef({}),N=x.current,S=N;for(let R in d){const b=R==="base"?d[R]+(s[R]||""):s[R]||d[R];N===S&&b!==S[R]&&(x.current=S={...S}),S[R]=b,(b!==d[R]||b!==f[R])&&(f=S)}return H.createElement(rS.Provider,{value:f,children:r})},FN=({children:r,component:s},u)=>s?H.createElement(s,{params:u}):typeof r=="function"?r(u):r,NO=r=>{let s=H.useRef(iS);const u=s.current;return s.current=Object.keys(r).length!==Object.keys(u).length||Object.entries(r).some(([d,f])=>f!==u[d])?r:u},vr=({path:r,nest:s,match:u,...d})=>{const f=Ac(),[g]=lf(f),[v,x,N]=u??uS(f.parser,r,g,s),S=NO({...vO(),...x});if(!v)return null;const R=N?H.createElement(xO,{base:N},FN(d,S)):FN(d,S);return H.createElement(sS.Provider,{value:S,children:R})},xr=H.forwardRef((r,s)=>{const u=Ac(),[d,f]=lf(u),{to:g="",href:v=g,onClick:x,asChild:N,children:S,className:R,replace:b,state:E,...C}=r,j=nS(Z=>{Z.ctrlKey||Z.metaKey||Z.altKey||Z.shiftKey||Z.button!==0||(x?.(Z),Z.defaultPrevented||(Z.preventDefault(),f(v,r)))}),Y=u.hrefs(v[0]==="~"?v.slice(1):u.base+v,u);return N&&H.isValidElement(S)?H.cloneElement(S,{onClick:j,href:Y}):H.createElement("a",{...C,onClick:j,href:Y,className:R?.call?R(d===v):R,children:S,ref:s})}),cg=r=>Array.isArray(r)?r.flatMap(s=>cg(s&&s.type===H.Fragment?s.props.children:s)):[r],EO=({children:r,location:s})=>{const u=Ac(),[d]=lf(u);typeof window<"u"&&(window.__WOUTER_ROUTES__||(window.__WOUTER_ROUTES__=[]),cg(r).forEach(g=>{if(H.isValidElement(g)&&g.props.path){const v=g.props.path;window.__WOUTER_ROUTES__.includes(v)||window.__WOUTER_ROUTES__.push(v)}}));for(const f of cg(r)){let g=0;if(H.isValidElement(f)&&(g=uS(u.parser,f.props.path,s||d,f.props.nest))[0])return H.cloneElement(f,{match:g})}return null};function IN(){const[,r]=cS(),s=()=>{r("/")};return h.jsxDEV("div",{"data-loc":"client/src/pages/NotFound.tsx:14",className:"min-h-screen w-full flex items-center justify-center bg-gradient-to-br from-slate-50 to-slate-100",children:h.jsxDEV(Ok,{"data-loc":"client/src/pages/NotFound.tsx:15",className:"w-full max-w-lg mx-4 shadow-lg border-0 bg-white/80 backdrop-blur-sm",children:h.jsxDEV(_k,{"data-loc":"client/src/pages/NotFound.tsx:16",className:"pt-8 pb-8 text-center",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/NotFound.tsx:17",className:"flex justify-center mb-6",children:h.jsxDEV("div",{"data-loc":"client/src/pages/NotFound.tsx:18",className:"relative",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/NotFound.tsx:19",className:"absolute inset-0 bg-red-100 rounded-full animate-pulse"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/NotFound.tsx",lineNumber:19,columnNumber:15},this),h.jsxDEV(Uk,{"data-loc":"client/src/pages/NotFound.tsx:20",className:"relative h-16 w-16 text-red-500"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/NotFound.tsx",lineNumber:20,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/NotFound.tsx",lineNumber:18,columnNumber:13},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/NotFound.tsx",lineNumber:17,columnNumber:11},this),h.jsxDEV("h1",{"data-loc":"client/src/pages/NotFound.tsx:24",className:"text-4xl font-bold text-slate-900 mb-2",children:"404"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/NotFound.tsx",lineNumber:24,columnNumber:11},this),h.jsxDEV("h2",{"data-loc":"client/src/pages/NotFound.tsx:26",className:"text-xl font-semibold text-slate-700 mb-4",children:"Page Not Found"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/NotFound.tsx",lineNumber:26,columnNumber:11},this),h.jsxDEV("p",{"data-loc":"client/src/pages/NotFound.tsx:30",className:"text-slate-600 mb-8 leading-relaxed",children:["Sorry, the page you are looking for doesn't exist.",h.jsxDEV("br",{"data-loc":"client/src/pages/NotFound.tsx:32"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/NotFound.tsx",lineNumber:32,columnNumber:13},this),"It may have been moved or deleted."]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/NotFound.tsx",lineNumber:30,columnNumber:11},this),h.jsxDEV("div",{"data-loc":"client/src/pages/NotFound.tsx:36",className:"flex flex-col sm:flex-row gap-3 justify-center",children:h.jsxDEV(kk,{"data-loc":"client/src/pages/NotFound.tsx:37",onClick:s,className:"bg-blue-600 hover:bg-blue-700 text-white px-6 py-2.5 rounded-lg transition-all duration-200 shadow-md hover:shadow-lg",children:[h.jsxDEV(qk,{"data-loc":"client/src/pages/NotFound.tsx:41",className:"w-4 h-4 mr-2"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/NotFound.tsx",lineNumber:41,columnNumber:15},this),"Go Home"]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/NotFound.tsx",lineNumber:37,columnNumber:13},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/NotFound.tsx",lineNumber:36,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/NotFound.tsx",lineNumber:16,columnNumber:9},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/NotFound.tsx",lineNumber:15,columnNumber:7},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/NotFound.tsx",lineNumber:14,columnNumber:5},this)}class SO extends H.Component{constructor(s){super(s),this.state={hasError:!1,error:null}}static getDerivedStateFromError(s){return{hasError:!0,error:s}}render(){return this.state.hasError?h.jsxDEV("div",{"data-loc":"client/src/components/ErrorBoundary.tsx:27",className:"flex items-center justify-center min-h-screen p-8 bg-background",children:h.jsxDEV("div",{"data-loc":"client/src/components/ErrorBoundary.tsx:28",className:"flex flex-col items-center w-full max-w-2xl p-8",children:[h.jsxDEV(Ik,{"data-loc":"client/src/components/ErrorBoundary.tsx:29",size:48,className:"text-destructive mb-6 flex-shrink-0"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/ErrorBoundary.tsx",lineNumber:29,columnNumber:13},this),h.jsxDEV("h2",{"data-loc":"client/src/components/ErrorBoundary.tsx:34",className:"text-xl mb-4",children:"An unexpected error occurred."},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/ErrorBoundary.tsx",lineNumber:34,columnNumber:13},this),h.jsxDEV("div",{"data-loc":"client/src/components/ErrorBoundary.tsx:36",className:"p-4 w-full rounded bg-muted overflow-auto mb-6",children:h.jsxDEV("pre",{"data-loc":"client/src/components/ErrorBoundary.tsx:37",className:"text-sm text-muted-foreground whitespace-break-spaces",children:this.state.error?.stack},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/ErrorBoundary.tsx",lineNumber:37,columnNumber:15},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/ErrorBoundary.tsx",lineNumber:36,columnNumber:13},this),h.jsxDEV("button",{"data-loc":"client/src/components/ErrorBoundary.tsx:42",onClick:()=>window.location.reload(),className:of("flex items-center gap-2 px-4 py-2 rounded-lg","bg-primary text-primary-foreground","hover:opacity-90 cursor-pointer"),children:[h.jsxDEV(Qk,{"data-loc":"client/src/components/ErrorBoundary.tsx:50",size:16},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/ErrorBoundary.tsx",lineNumber:50,columnNumber:15},this),"Reload Page"]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/ErrorBoundary.tsx",lineNumber:42,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/ErrorBoundary.tsx",lineNumber:28,columnNumber:11},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/ErrorBoundary.tsx",lineNumber:27,columnNumber:9},this):this.props.children}}const wO=H.createContext(void 0);function AO({children:r,defaultTheme:s="light",switchable:u=!1}){const[d,f]=H.useState(()=>u&&localStorage.getItem("theme")||s);H.useEffect(()=>{const v=document.documentElement;d==="dark"?v.classList.add("dark"):v.classList.remove("dark"),u&&localStorage.setItem("theme",d)},[d,u]);const g=u?()=>{f(v=>v==="light"?"dark":"light")}:void 0;return h.jsxDEV(wO.Provider,{"data-loc":"client/src/contexts/ThemeContext.tsx:52",value:{theme:d,toggleTheme:g,switchable:u},children:r},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/contexts/ThemeContext.tsx",lineNumber:52,columnNumber:5},this)}const KN=[{path:"/",label:"首页",labelEn:"HOME"},{path:"/tools",label:"工具库",labelEn:"TOOLS"},{path:"/courses",label:"课程资源",labelEn:"COURSES"},{path:"/glossary",label:"名词解释",labelEn:"GLOSSARY"},{path:"/resources",label:"资源文档",labelEn:"RESOURCES"}];function Tc(){const[r]=cS(),[s,u]=H.useState(!1);return h.jsxDEV("nav",{"data-loc":"client/src/components/NavBar.tsx:21",className:"fixed top-0 left-0 right-0 z-50 border-b border-border/50 backdrop-blur-md",style:{background:"oklch(0.09 0.01 250 / 0.95)"},children:[h.jsxDEV("div",{"data-loc":"client/src/components/NavBar.tsx:23",className:"max-w-[1400px] mx-auto px-4 sm:px-6 lg:px-8",children:h.jsxDEV("div",{"data-loc":"client/src/components/NavBar.tsx:24",className:"flex items-center justify-between h-14",children:[h.jsxDEV(xr,{"data-loc":"client/src/components/NavBar.tsx:26",href:"/",className:"flex items-center gap-2 group",children:[h.jsxDEV("div",{"data-loc":"client/src/components/NavBar.tsx:27",className:"w-7 h-7 rounded border border-primary/50 flex items-center justify-center group-hover:border-primary transition-colors glow-pulse",children:h.jsxDEV(Fk,{"data-loc":"client/src/components/NavBar.tsx:28",className:"w-4 h-4 text-primary"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:28,columnNumber:15},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:27,columnNumber:13},this),h.jsxDEV("span",{"data-loc":"client/src/components/NavBar.tsx:30",className:"font-mono text-sm font-bold",children:[h.jsxDEV("span",{"data-loc":"client/src/components/NavBar.tsx:31",className:"text-primary",children:"Android"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:31,columnNumber:15},this),h.jsxDEV("span",{"data-loc":"client/src/components/NavBar.tsx:32",className:"text-muted-foreground",children:"RE"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:32,columnNumber:15},this),h.jsxDEV("span",{"data-loc":"client/src/components/NavBar.tsx:33",className:"text-accent",children:"::"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:33,columnNumber:15},this),h.jsxDEV("span",{"data-loc":"client/src/components/NavBar.tsx:34",className:"text-foreground",children:"Wiki"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:34,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:30,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:26,columnNumber:11},this),h.jsxDEV("div",{"data-loc":"client/src/components/NavBar.tsx:39",className:"hidden md:flex items-center gap-1",children:KN.map(d=>{const f=r===d.path;return h.jsxDEV(xr,{"data-loc":"client/src/components/NavBar.tsx:43",href:d.path,className:`px-3 py-1.5 text-xs font-mono font-semibold tracking-widest transition-all rounded ${f?"text-primary bg-primary/10 border border-primary/30":"text-muted-foreground hover:text-foreground hover:bg-white/5"}`,children:d.labelEn},d.path,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:43,columnNumber:17},this)})},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:39,columnNumber:11},this),h.jsxDEV("div",{"data-loc":"client/src/components/NavBar.tsx:59",className:"flex items-center gap-3",children:[h.jsxDEV("a",{"data-loc":"client/src/components/NavBar.tsx:60",href:"https://github.com/user1342/Awesome-Android-Reverse-Engineering",target:"_blank",rel:"noopener noreferrer",className:"hidden sm:flex items-center gap-1.5 text-xs font-mono text-muted-foreground hover:text-primary transition-colors",children:[h.jsxDEV(Zk,{"data-loc":"client/src/components/NavBar.tsx:66",className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:66,columnNumber:15},this),h.jsxDEV("span",{"data-loc":"client/src/components/NavBar.tsx:67",children:"Source"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:67,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:60,columnNumber:13},this),h.jsxDEV("div",{"data-loc":"client/src/components/NavBar.tsx:69",className:"hidden sm:flex items-center gap-1 text-xs font-mono text-muted-foreground/50",children:[h.jsxDEV("span",{"data-loc":"client/src/components/NavBar.tsx:70",className:"w-1.5 h-1.5 rounded-full bg-primary animate-pulse"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:70,columnNumber:15},this),h.jsxDEV("span",{"data-loc":"client/src/components/NavBar.tsx:71",children:"LIVE"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:71,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:69,columnNumber:13},this),h.jsxDEV("button",{"data-loc":"client/src/components/NavBar.tsx:74",className:"md:hidden text-muted-foreground hover:text-foreground",onClick:()=>u(!s),children:s?h.jsxDEV(Sg,{"data-loc":"client/src/components/NavBar.tsx:78",className:"w-5 h-5"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:78,columnNumber:29},this):h.jsxDEV(Jk,{"data-loc":"client/src/components/NavBar.tsx:78",className:"w-5 h-5"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:78,columnNumber:104},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:74,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:59,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:24,columnNumber:9},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:23,columnNumber:7},this),s&&h.jsxDEV("div",{"data-loc":"client/src/components/NavBar.tsx:86",className:"md:hidden border-t border-border/50 py-2",style:{background:"oklch(0.09 0.01 250 / 0.98)"},children:KN.map(d=>{const f=r===d.path;return h.jsxDEV(xr,{"data-loc":"client/src/components/NavBar.tsx:91",href:d.path,onClick:()=>u(!1),className:`block px-6 py-2.5 text-sm font-mono transition-colors ${f?"text-primary bg-primary/10":"text-muted-foreground hover:text-foreground"}`,children:[h.jsxDEV("span",{"data-loc":"client/src/components/NavBar.tsx:99",className:"text-primary/50 mr-2",children:"$"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:99,columnNumber:17},this),d.label]},d.path,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:91,columnNumber:15},this)})},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:86,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/components/NavBar.tsx",lineNumber:21,columnNumber:5},this)}const TO=[{id:"all",label:"全部"},{id:"static",label:"静态分析"},{id:"dynamic",label:"动态分析"},{id:"decompiler",label:"反编译器"},{id:"network",label:"网络分析"},{id:"malware",label:"恶意软件"},{id:"automated",label:"自动化"},{id:"apk",label:"APK 处理"},{id:"native",label:"Native 分析"},{id:"other",label:"其他"}],Nr=[{id:"t001",name:"JADX",nameZh:"JADX 反编译器",url:"https://github.com/skylot/jadx",category:"static",descriptionZh:"将 APK/DEX/AAR 文件反编译为可读的 Java 源代码,支持 GUI 界面与命令行,是最常用的安卓反编译工具之一。支持代码搜索、交叉引用、反混淆等功能。",tags:["Java","DEX","APK","反编译","GUI"],type:"free",difficulty:"beginner",isRecommended:!0},{id:"t002",name:"Apktool",nameZh:"APK 解包/重打包工具",url:"https://ibotpeaches.github.io/Apktool/",category:"static",descriptionZh:"将 APK 解包为 Smali 代码和资源文件,支持修改后重新打包。是修改 APK 逻辑、替换资源、绕过检测的核心工具。",tags:["Smali","APK","解包","重打包"],type:"free",difficulty:"beginner",isRecommended:!0},{id:"t003",name:"MobSF",nameZh:"移动安全框架",url:"https://github.com/MobSF/Mobile-Security-Framework-MobSF",category:"static",descriptionZh:"自动化移动应用安全测试框架,支持 Android/iOS 静态与动态分析,提供 Web 界面,可快速生成安全报告。适合批量分析和初步评估。",tags:["自动化","静态分析","动态分析","报告"],type:"free",difficulty:"beginner",isRecommended:!0},{id:"t004",name:"ByteCodeViewer",nameZh:"字节码查看器",url:"https://github.com/Konloch/bytecode-viewer",category:"static",descriptionZh:"集成多种反编译引擎Procyon、CFR、FernFlower的 Java 字节码查看器,支持同时对比多个反编译结果,方便分析混淆代码。",tags:["字节码","Java","多引擎","对比"],type:"free",difficulty:"intermediate"},{id:"t005",name:"APKiD",nameZh:"APK 识别工具",url:"https://github.com/rednaga/APKiD",category:"static",descriptionZh:"识别 APK 使用的编译器、混淆器、打包器和加固方案,类似 Android 版的 PEiD。可快速判断目标 APP 使用了哪种加固方案。",tags:["加固识别","混淆检测","指纹"],type:"free",difficulty:"beginner",isRecommended:!0},{id:"t006",name:"ClassyShark",nameZh:"APK 结构浏览器",url:"https://github.com/google/android-classyshark",category:"static",descriptionZh:"Google 出品的 APK 结构浏览工具,可快速查看 DEX 方法数、类结构、依赖库和 AndroidManifest,适合快速了解 APK 全貌。",tags:["APK结构","DEX","Google","依赖分析"],type:"free",difficulty:"beginner"},{id:"t007",name:"Androguard",nameZh:"Python 安卓分析库",url:"https://github.com/androguard/androguard",category:"static",descriptionZh:"功能强大的 Python 安卓分析库,支持 DEX/APK/AXML 解析、控制流图生成、代码相似性比较,适合编写自动化分析脚本。",tags:["Python","DEX解析","CFG","自动化"],type:"free",difficulty:"intermediate"},{id:"t008",name:"Quark-Engine",nameZh:"Quark 恶意行为分析引擎",url:"https://github.com/quark-project/quark-engine",category:"static",descriptionZh:"基于行为特征的安卓恶意软件分析引擎,通过分析 API 调用序列来识别恶意行为,无需依赖签名库,适合分析未知恶意软件。",tags:["恶意软件","行为分析","API序列"],type:"free",difficulty:"intermediate"},{id:"t009",name:"AndroBugs Framework",nameZh:"AndroBugs 漏洞扫描框架",url:"https://github.com/AndroBugs/AndroBugs_Framework",category:"static",descriptionZh:"高效的安卓漏洞扫描框架,可自动检测 APK 中的安全漏洞,包括 SQL 注入、不安全的 WebView、硬编码密钥等常见安全问题。",tags:["漏洞扫描","安全检测","自动化"],type:"free",difficulty:"beginner"},{id:"t010",name:"SUPER Android Analyzer",nameZh:"SUPER 安卓分析器",url:"https://github.com/SUPERAndroidAnalyzer/super",category:"static",descriptionZh:"用 Rust 编写的安卓安全分析工具,速度极快,可检测常见漏洞并生成详细 HTML 报告,适合批量自动化分析场景。",tags:["Rust","漏洞检测","HTML报告","快速"],type:"free",difficulty:"beginner"},{id:"t011",name:"Smali/Baksmali",nameZh:"DEX 汇编/反汇编工具",url:"https://github.com/JesusFreke/smali",category:"static",descriptionZh:"DEX 格式的汇编器与反汇编器,将 DEX 文件转换为可读的 Smali 汇编代码,是修改 APK 逻辑的底层工具,Apktool 内部即使用此工具。",tags:["Smali","DEX","汇编","反汇编"],type:"free",difficulty:"intermediate"},{id:"t012",name:"dex2jar",nameZh:"DEX 转 JAR 工具",url:"https://github.com/pxb1988/dex2jar",category:"static",descriptionZh:"将 Android DEX 文件转换为 Java JAR 文件,方便使用 JD-GUI 等 Java 反编译工具查看源码。是早期逆向工作流的重要组成部分。",tags:["DEX","JAR","转换","Java"],type:"free",difficulty:"beginner"},{id:"t013",name:"JD-GUI",nameZh:"Java 反编译 GUI",url:"http://java-decompiler.github.io/",category:"decompiler",descriptionZh:"图形化 Java 反编译工具,可直接查看 JAR/CLASS 文件的 Java 源码,常与 dex2jar 配合使用,界面简洁直观。",tags:["Java","JAR","GUI","反编译"],type:"free",difficulty:"beginner"},{id:"t014",name:"CFR",nameZh:"CFR Java 反编译器",url:"https://www.benf.org/other/cfr/",category:"decompiler",descriptionZh:"高质量的 Java 反编译器,对现代 Java 特性Lambda、Switch 表达式等)支持较好,反编译结果准确率高,适合分析复杂混淆代码。",tags:["Java","反编译","高质量","Lambda"],type:"free",difficulty:"intermediate"},{id:"t015",name:"Frida",nameZh:"Frida 动态插桩框架",url:"https://frida.re/",category:"dynamic",descriptionZh:"业界最强大的动态插桩框架,支持 Hook Java/Native 函数、修改内存、追踪调用栈。通过 JavaScript 脚本实时操控运行中的 APP,是逆向分析的瑞士军刀。",tags:["Hook","JavaScript","Native","动态插桩","必备"],type:"free",difficulty:"intermediate",isRecommended:!0},{id:"t016",name:"Objection",nameZh:"Objection 运行时探索工具",url:"https://github.com/sensepost/objection",category:"dynamic",descriptionZh:"基于 Frida 的运行时移动端探索工具,无需越狱/Root 即可使用(通过注入模式)。提供命令行界面,可一键绕过 SSL Pinning、Root 检测,列举类和方法。",tags:["Frida","SSL Pinning","Root检测","命令行"],type:"free",difficulty:"beginner",isRecommended:!0},{id:"t017",name:"Xposed Framework",nameZh:"Xposed 框架",url:"https://repo.xposed.info/",category:"dynamic",descriptionZh:"安卓系统级 Hook 框架,通过修改 Zygote 进程实现对所有 APP 的 Java 方法 Hook。需要 Root 权限,是持久化 Hook 的首选方案。",tags:["Hook","Zygote","Root","持久化","Java"],type:"free",difficulty:"intermediate",isRecommended:!0},{id:"t018",name:"LSPosed",nameZh:"LSPosed 框架",url:"https://github.com/LSPosed/LSPosed",category:"dynamic",descriptionZh:"Xposed 框架的现代化继任者,基于 Magisk 和 Riru/Zygisk 实现,支持 Android 8.1-14,兼容性更好,对系统侵入性更低,是目前推荐的 Xposed 替代方案。",tags:["Xposed","Magisk","Zygisk","Hook","现代化"],type:"free",difficulty:"intermediate",isRecommended:!0},{id:"t019",name:"Magisk",nameZh:"Magisk Root 管理器",url:"https://github.com/topjohnwu/Magisk",category:"dynamic",descriptionZh:"目前最流行的安卓 Root 方案,通过修改 boot.img 实现系统级权限,支持模块化扩展MagiskHide、Shamiko 等),是逆向分析环境搭建的基础工具。",tags:["Root","模块化","MagiskHide","环境搭建"],type:"free",difficulty:"beginner",isRecommended:!0},{id:"t020",name:"Android Debug Bridge (ADB)",nameZh:"ADB 调试桥",url:"https://developer.android.com/studio/command-line/adb",category:"dynamic",descriptionZh:"安卓官方调试工具,提供设备连接、文件传输、Shell 访问、应用安装等功能。是所有安卓逆向工作的基础命令行工具,必须掌握。",tags:["ADB","官方","Shell","调试","必备"],type:"free",difficulty:"beginner",isRecommended:!0},{id:"t021",name:"Drozer",nameZh:"Drozer 安全评估框架",url:"https://github.com/WithSecureLabs/drozer",category:"dynamic",descriptionZh:"全面的安卓安全评估框架,可测试 Activity、Service、ContentProvider、BroadcastReceiver 等组件的安全性,支持漏洞利用和权限提升测试。",tags:["组件测试","IPC","漏洞利用","权限"],type:"free",difficulty:"intermediate"},{id:"t022",name:"Inspeckage",nameZh:"Inspeckage 动态分析工具",url:"https://github.com/ac-pm/Inspeckage",category:"dynamic",descriptionZh:"基于 Xposed 的安卓动态分析工具,可实时监控 APP 的文件操作、网络请求、加密调用、SharedPreferences 读写等行为,提供 Web 界面展示。",tags:["Xposed","行为监控","加密","文件操作"],type:"free",difficulty:"intermediate"},{id:"t023",name:"RMS Runtime Mobile Security",nameZh:"RMS 运行时移动安全工具",url:"https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security",category:"dynamic",descriptionZh:"基于 Frida 的运行时安全分析工具,提供 Web 界面,支持 Hook 管理、内存搜索、类枚举、方法追踪等功能,降低 Frida 使用门槛。",tags:["Frida","Web界面","Hook管理","内存搜索"],type:"free",difficulty:"beginner"},{id:"t024",name:"Frida Android Libbinder",nameZh:"Frida Binder 分析工具",url:"https://github.com/quarkslab/frida-android-libbinder",category:"dynamic",descriptionZh:"专门用于分析 Android Binder IPC 通信的 Frida 脚本集,可 Hook Binder 调用,追踪进程间通信数据,适合分析系统服务交互。",tags:["Binder","IPC","Frida","系统服务"],type:"free",difficulty:"advanced"},{id:"t025",name:"Burp Suite",nameZh:"Burp Suite 网络代理",url:"https://portswigger.net/burp",category:"network",descriptionZh:"业界标准的 Web 安全测试平台,用于拦截、修改和重放 HTTP/HTTPS 流量。配合 SSL Pinning 绕过脚本可分析 APP 的所有网络请求。",tags:["HTTP代理","HTTPS","抓包","必备"],type:"freemium",difficulty:"beginner",isRecommended:!0},{id:"t026",name:"Charles Proxy",nameZh:"Charles 网络代理",url:"https://www.charlesproxy.com/",category:"network",descriptionZh:"跨平台 HTTP/HTTPS 代理调试工具,界面友好,支持 SSL 解密、带宽限速、请求重写等功能,是 Burp Suite 的轻量级替代方案。",tags:["HTTP代理","SSL解密","GUI","调试"],type:"commercial",difficulty:"beginner"},{id:"t027",name:"Wireshark",nameZh:"Wireshark 网络抓包",url:"https://www.wireshark.org/",category:"network",descriptionZh:"最强大的开源网络协议分析工具,可捕获和分析网络数据包,支持数百种协议解析。适合分析 APP 的底层网络通信,包括非 HTTP 协议。",tags:["抓包","协议分析","开源","底层网络"],type:"free",difficulty:"intermediate"},{id:"t028",name:"mitmproxy",nameZh:"mitmproxy 中间人代理",url:"https://mitmproxy.org/",category:"network",descriptionZh:"开源的交互式 HTTPS 代理工具,支持命令行、Web 界面和 Python 脚本扩展,可编写脚本自动处理和修改流量,适合自动化测试场景。",tags:["HTTPS代理","Python脚本","自动化","开源"],type:"free",difficulty:"intermediate"},{id:"t029",name:"SSL Kill Switch 2",nameZh:"SSL 证书绑定绕过工具",url:"https://github.com/nabla-c0d3/ssl-kill-switch2",category:"network",subcategory:"networking",descriptionZh:"通过 Cydia Substrate/Frida Hook 系统 SSL 函数,禁用 APP 的证书绑定SSL Pinning验证,使中间人代理可以正常解密 HTTPS 流量。",tags:["SSL Pinning","Hook","证书绑定","绕过"],type:"free",difficulty:"intermediate"},{id:"t030",name:"Frida SSL Pinning Bypass",nameZh:"Frida SSL Pinning 绕过脚本",url:"https://github.com/pcipolloni/universal-android-ssl-pinning-bypass-with-frida",category:"network",subcategory:"networking",descriptionZh:"通用的 Android SSL Pinning 绕过 Frida 脚本,Hook 多种常见的证书绑定实现OkHttp、TrustManager、Conscrypt 等),一键绕过大多数 APP 的 HTTPS 保护。",tags:["SSL Pinning","Frida","OkHttp","通用绕过"],type:"free",difficulty:"beginner",isRecommended:!0},{id:"t031",name:"VirusTotal",nameZh:"VirusTotal 在线扫描",url:"https://www.virustotal.com/",category:"malware",descriptionZh:"在线多引擎恶意软件扫描平台,支持上传 APK 文件,使用 70+ 杀毒引擎同时扫描,并提供静态分析报告、行为分析和网络通信记录。",tags:["在线扫描","多引擎","恶意软件","报告"],type:"free",difficulty:"beginner"},{id:"t032",name:"Cuckoo Sandbox",nameZh:"Cuckoo 沙箱",url:"https://cuckoosandbox.org/",category:"malware",descriptionZh:"开源自动化恶意软件分析沙箱,可在隔离环境中运行可疑 APK,记录其行为文件操作、网络请求、API 调用),生成详细分析报告。",tags:["沙箱","行为分析","自动化","隔离环境"],type:"free",difficulty:"advanced"},{id:"t033",name:"Hybrid Analysis",nameZh:"Hybrid Analysis 在线分析",url:"https://www.hybrid-analysis.com/",category:"malware",descriptionZh:"免费的在线恶意软件分析平台,支持 APK 动态行为分析,提供 MITRE ATT&CK 映射、网络流量分析和进程行为树,无需搭建本地环境。",tags:["在线分析","动态行为","MITRE ATT&CK","免费"],type:"free",difficulty:"beginner"},{id:"t034",name:"APKLab",nameZh:"APKLab VS Code 插件",url:"https://github.com/APKLab/APKLab",category:"malware",descriptionZh:"VS Code 的安卓逆向工程插件,集成 Apktool、Jadx、adb 等工具,提供一站式 APK 分析环境,支持代码搜索、修改和重打包,极大提升工作效率。",tags:["VS Code","集成工具","Apktool","JADX"],type:"free",difficulty:"beginner",isRecommended:!0},{id:"t035",name:"Androwarn",nameZh:"Androwarn 静态分析工具",url:"https://github.com/maaaaz/androwarn",category:"automated",descriptionZh:"自动化静态分析工具,检测 APK 中的潜在恶意行为,包括电话/短信滥用、设备标识符泄露、网络通信等,生成详细的 HTML/JSON 报告。",tags:["静态分析","自动化","恶意行为检测","报告"],type:"free",difficulty:"beginner"},{id:"t036",name:"Mariana Trench",nameZh:"Mariana Trench 数据流分析",url:"https://github.com/facebook/mariana-trench",category:"automated",descriptionZh:"MetaFacebook开源的安卓/Java 静态分析工具,专注于数据流分析,可检测安全漏洞(如 SQL 注入、Intent 重定向、不安全的数据存储等)。",tags:["数据流分析","Meta","漏洞检测","Java"],type:"free",difficulty:"advanced"},{id:"t037",name:"FlowDroid",nameZh:"FlowDroid 污点分析",url:"https://github.com/secure-software-engineering/FlowDroid",category:"automated",descriptionZh:"精确的安卓污点分析工具,追踪敏感数据(如位置、联系人)从 Source 到 Sink 的流动路径,用于检测隐私泄露漏洞,学术界广泛使用。",tags:["污点分析","隐私泄露","Source/Sink","学术"],type:"free",difficulty:"advanced"},{id:"t038",name:"StaCoAn",nameZh:"StaCoAn 静态代码分析",url:"https://github.com/vincentcox/StaCoAn",category:"automated",descriptionZh:"跨平台移动应用静态代码分析工具,可检测硬编码密钥、API Token、密码等敏感信息,生成可视化 HTML 报告,支持拖拽操作。",tags:["硬编码检测","敏感信息","HTML报告","可视化"],type:"free",difficulty:"beginner"},{id:"t039",name:"APKTool",nameZh:"APK 工具集",url:"https://ibotpeaches.github.io/Apktool/",category:"apk",descriptionZh:"参见静态分析分类中的 Apktool,这里作为 APK 处理工具的代表,强调其在 APK 解包、资源提取和重打包方面的核心作用。",tags:["APK","解包","资源提取","重打包"],type:"free",difficulty:"beginner"},{id:"t040",name:"uber-apk-signer",nameZh:"APK 签名工具",url:"https://github.com/patrickfav/uber-apk-signer",category:"apk",descriptionZh:"简单易用的 APK 签名工具,支持 V1/V2/V3 签名方案,可批量签名,自动对齐 ZIP,是修改 APK 后重签名的必备工具。",tags:["签名","V1/V2/V3","批量","必备"],type:"free",difficulty:"beginner",isRecommended:!0},{id:"t041",name:"APK-Mitm",nameZh:"APK 中间人攻击工具",url:"https://github.com/shroudedcode/apk-mitm",category:"apk",subcategory:"networking",descriptionZh:"自动化工具,一键完成 APK 解包、禁用证书绑定、重打包和重签名全流程,无需手动操作,适合快速进行网络流量分析。",tags:["SSL Pinning","自动化","一键操作","证书绑定"],type:"free",difficulty:"beginner",isRecommended:!0},{id:"t042",name:"Frida-dexdump",nameZh:"Frida DEX 脱壳工具",url:"https://github.com/hluwa/frida-dexdump",category:"apk",descriptionZh:"基于 Frida 的 DEX 内存 Dump 工具,在 APP 运行时从内存中提取解密后的 DEX 文件,是应对一代/二代加固的主流脱壳方案之一。",tags:["脱壳","DEX Dump","Frida","内存提取"],type:"free",difficulty:"intermediate",isRecommended:!0},{id:"t043",name:"FART",nameZh:"FART 主动调用脱壳",url:"https://github.com/hanbinglengyue/FART",category:"apk",descriptionZh:"基于 ART 虚拟机的主动调用脱壳工具,通过修改 AOSP 源码,在方法执行时主动 Dump DEX,可有效对抗函数抽取型加固三代壳。",tags:["脱壳","ART","函数抽取","AOSP","三代壳"],type:"free",difficulty:"advanced"},{id:"t044",name:"BlackDex",nameZh:"BlackDex 通用脱壳工具",url:"https://github.com/CodingGay/BlackDex",category:"apk",descriptionZh:"无需 Root 的通用安卓脱壳工具,通过进程注入方式在内存中提取 DEX,支持 Android 5.0-12,可对抗大多数一代/二代加固方案。",tags:["脱壳","无需Root","通用","DEX提取"],type:"free",difficulty:"beginner",isRecommended:!0},{id:"t045",name:"IDA Pro",nameZh:"IDA Pro 反汇编器",url:"https://hex-rays.com/ida-pro/",category:"native",descriptionZh:"业界最强大的商业反汇编/反编译器,支持 ARM/x86/MIPS 等多种架构,提供伪 C 代码Hex-Rays Decompiler,是分析 .so 文件的行业标准工具。",tags:["反汇编","ARM","商业","Native","行业标准"],type:"commercial",difficulty:"advanced",isRecommended:!0},{id:"t046",name:"Ghidra",nameZh:"Ghidra 逆向工程框架",url:"https://ghidra-sre.org/",category:"native",descriptionZh:"NSA 开源的逆向工程框架,功能接近 IDA Pro,支持多种处理器架构,提供反汇编、反编译、脚本扩展等功能,是 IDA Pro 的免费替代方案。",tags:["NSA","开源","反汇编","ARM","免费"],type:"free",difficulty:"advanced",isRecommended:!0},{id:"t047",name:"Binary Ninja",nameZh:"Binary Ninja 二进制分析",url:"https://binary.ninja/",category:"native",descriptionZh:"现代化的二进制分析平台,界面友好,支持 Python/C++ 插件扩展,提供中间语言BNIL用于程序分析,是 IDA Pro 的有力竞争者。",tags:["二进制分析","Python插件","BNIL","现代化"],type:"commercial",difficulty:"advanced"},{id:"t048",name:"Radare2",nameZh:"Radare2 逆向工程框架",url:"https://rada.re/n/",category:"native",descriptionZh:"开源的命令行逆向工程框架,功能极其强大,支持多种架构和文件格式,可用于反汇编、调试、漏洞利用分析,学习曲线较陡。",tags:["开源","命令行","多架构","调试"],type:"free",difficulty:"advanced"},{id:"t049",name:"Cutter",nameZh:"Cutter Radare2 GUI",url:"https://cutter.re/",category:"native",descriptionZh:"Radare2 的图形化前端,提供友好的 GUI 界面,降低 Radare2 的使用门槛,集成 Ghidra 反编译器,适合不熟悉命令行的用户。",tags:["Radare2","GUI","Ghidra","友好界面"],type:"free",difficulty:"intermediate"},{id:"t050",name:"Frida-Gadget",nameZh:"Frida Gadget 注入库",url:"https://frida.re/docs/gadget/",category:"native",descriptionZh:"Frida 的共享库形式,可注入到 APK 中实现无需 Root 的 Frida 功能。通过修改 APK 的 Native 库加载顺序,在 APP 启动时自动加载 Frida 环境。",tags:["Frida","无需Root","注入","Native"],type:"free",difficulty:"intermediate"},{id:"t051",name:"Simplify",nameZh:"Simplify 虚拟执行反混淆",url:"https://github.com/CalebFenton/simplify",category:"static",subcategory:"deobfuscation",descriptionZh:"通过虚拟执行 Smali 代码来反混淆 Android APP,可简化复杂的控制流混淆和字符串加密,使反编译结果更易读。",tags:["反混淆","虚拟执行","Smali","字符串解密"],type:"free",difficulty:"intermediate"},{id:"t052",name:"DeGuard",nameZh:"DeGuard 统计反混淆",url:"http://apk-deguard.com/",category:"static",subcategory:"deobfuscation",descriptionZh:"基于机器学习的 ProGuard 反混淆工具,通过统计模型恢复被 ProGuard 混淆的类名、方法名和字段名,提高代码可读性。",tags:["反混淆","ProGuard","机器学习","类名恢复"],type:"free",difficulty:"beginner"},{id:"t053",name:"Android Studio",nameZh:"Android Studio 官方 IDE",url:"https://developer.android.com/studio",category:"other",descriptionZh:"Google 官方 Android 开发 IDE,内置 APK 分析器、布局检查器、网络分析器等逆向辅助工具,也是搭建模拟器环境的首选工具。",tags:["官方IDE","APK分析器","模拟器","Google"],type:"free",difficulty:"beginner"},{id:"t054",name:"Genymotion",nameZh:"Genymotion 安卓模拟器",url:"https://www.genymotion.com/",category:"other",descriptionZh:"高性能安卓模拟器,支持多种设备配置,提供 Root 权限和 OpenGL 加速,是逆向分析环境搭建的常用选择,支持 Frida 等工具集成。",tags:["模拟器","Root","高性能","逆向环境"],type:"freemium",difficulty:"beginner"},{id:"t055",name:"Scrcpy",nameZh:"Scrcpy 设备镜像工具",url:"https://github.com/Genymobile/scrcpy",category:"other",descriptionZh:"通过 ADB 在电脑上显示和控制安卓设备屏幕,无需 Root,低延迟,支持录屏,是远程操作测试设备的实用工具。",tags:["屏幕镜像","ADB","无需Root","录屏"],type:"free",difficulty:"beginner"},{id:"t056",name:"JEB Decompiler",nameZh:"JEB 商业反编译器",url:"https://www.pnfsoftware.com/",category:"decompiler",descriptionZh:"专业的商业安卓反编译器,反编译质量高,支持 Dalvik/ART 字节码分析、Native 代码分析、脚本扩展,是专业逆向工程师的首选工具之一。",tags:["商业","高质量","Dalvik","Native","专业"],type:"commercial",difficulty:"advanced"},{id:"t057",name:"Frida-Unpack",nameZh:"Frida 脱壳脚本集",url:"https://github.com/dstmath/frida-unpack",category:"apk",descriptionZh:"基于 Frida 的 DEX 脱壳脚本集合,通过 Hook ART 虚拟机关键函数在运行时 Dump DEX,支持多种加固方案,是学习脱壳原理的好材料。",tags:["脱壳","Frida","ART Hook","DEX Dump"],type:"free",difficulty:"intermediate"},{id:"t058",name:"Youpk",nameZh:"Youpk 整体脱壳工具",url:"https://github.com/fupengfei058/Youpk",category:"apk",descriptionZh:"基于 AOSP 的整体脱壳工具,通过修改 ART 虚拟机源码实现全量 DEX 提取,对函数抽取型加固有较好效果,需要刷入定制 ROM。",tags:["脱壳","AOSP","整体提取","函数抽取"],type:"free",difficulty:"advanced"}],Ri=[{id:"c001",title:"Android App Reverse Engineering 101",titleZh:"安卓 App 逆向工程 101",url:"https://www.ragingrock.com/AndroidAppRE/",type:"course",descriptionZh:"Maddie StoneGoogle Project Zero出品的免费安卓逆向入门课程,系统讲解 APK 结构、DEX 格式、静态分析和动态分析方法,配套 CTF 练习题,是最推荐的入门课程。",tags:["入门","免费","Maddie Stone","CTF"],isRecommended:!0},{id:"c002",title:"Azeria Labs - ARM Assembly Basics",titleZh:"Azeria Labs ARM 汇编基础",url:"https://azeria-labs.com/writing-arm-assembly-part-1/",type:"course",descriptionZh:"专注于 ARM 汇编语言的系列教程,从基础指令到函数调用约定,配合 GDB 调试实践,是理解 Android Native 层代码的必学基础课程。",tags:["ARM汇编","免费","基础","Native"],isRecommended:!0},{id:"c003",title:"Reverse Engineering for Beginners",titleZh:"逆向工程入门(免费书籍)",url:"https://beginners.re/",type:"book",descriptionZh:"Dennis Yurichev 编写的免费逆向工程教材,覆盖 x86/ARM 汇编、编译器原理、常见算法识别,是系统学习逆向工程的经典参考书,提供多语言版本。",tags:["免费书籍","ARM","x86","汇编","经典"],isRecommended:!0},{id:"c004",title:"Android Internals: A Confectioner's Cookbook",titleZh:"Android 内部原理:糖果师食谱",url:"http://newandroidbook.com/",type:"book",descriptionZh:"Jonathan Levin 编写的深度 Android 系统内部原理书籍,详细讲解 Android 架构、进程模型、Binder IPC、ART 虚拟机等底层机制,是理解逆向目标的必读书籍。",tags:["Android内部原理","Binder","ART","深度"],isRecommended:!0},{id:"c005",title:"Android Hacker's Handbook",titleZh:"安卓黑客手册",url:"https://www.wiley.com/en-us/Android+Hacker%27s+Handbook-p-9781118608647",type:"book",descriptionZh:"全面的安卓安全攻防参考书,涵盖 Android 安全模型、漏洞挖掘、漏洞利用、恶意软件分析等主题,适合有一定基础的安全研究人员。",tags:["安全攻防","漏洞利用","恶意软件","进阶"]},{id:"c006",title:"The IDA Pro Book",titleZh:"IDA Pro 权威指南",url:"https://nostarch.com/idapro2.htm",type:"book",descriptionZh:"IDA Pro 的官方权威指南,详细讲解 IDA Pro 的使用方法、脚本编写IDC/Python和高级功能,是掌握 IDA Pro 的必读书籍。",tags:["IDA Pro","权威指南","脚本","高级"]},{id:"c007",title:"LaurieWired YouTube Channel",titleZh:"LaurieWired 逆向工程频道",url:"https://www.youtube.com/@lauriewired",type:"video",descriptionZh:"专注于安卓逆向工程的 YouTube 频道,内容包括 APK 分析实战、恶意软件逆向、Ghidra 使用教程等,视频质量高,实战性强,强烈推荐。",tags:["YouTube","实战","Ghidra","恶意软件"],isRecommended:!0},{id:"c008",title:"John Hammond YouTube Channel",titleZh:"John Hammond CTF 频道",url:"https://www.youtube.com/@_JohnHammond",type:"video",descriptionZh:"知名安全研究员 John Hammond 的 YouTube 频道,包含大量 CTF 题解视频,其中有不少安卓逆向相关内容,适合通过 CTF 练习提升逆向技能。",tags:["YouTube","CTF","题解","实战"]},{id:"c009",title:"Frida Handbook",titleZh:"Frida 官方手册",url:"https://learnfrida.info/",type:"course",descriptionZh:"系统学习 Frida 动态插桩框架的在线教程,从基础 API 到高级 Hook 技巧,配合实战案例,是掌握 Frida 的最佳学习资源之一。",tags:["Frida","动态插桩","Hook","系统学习"],isRecommended:!0},{id:"c010",title:"Mobile Security Testing Guide (MSTG)",titleZh:"移动安全测试指南 (MSTG)",url:"https://mobile-security.gitbook.io/mobile-security-testing-guide/",type:"course",descriptionZh:"OWASP 出品的移动安全测试权威指南,涵盖 Android/iOS 安全测试方法论、工具使用和漏洞案例,是移动安全测试的行业标准参考文档。",tags:["OWASP","测试指南","方法论","权威"],isRecommended:!0},{id:"c011",title:"Malware Unicorn Android RE Workshop",titleZh:"Malware Unicorn 安卓逆向工作坊",url:"https://malwareunicorn.org/workshops/re_android.html",type:"course",descriptionZh:"专注于安卓恶意软件逆向的工作坊课程,包含实际恶意软件样本分析练习,学习如何识别和分析常见的安卓恶意行为模式。",tags:["恶意软件","工作坊","实战","样本分析"]},{id:"c012",title:"Hacking Android Apps with Frida",titleZh:"使用 Frida 攻击安卓应用",url:"https://www.youtube.com/watch?v=iMNs8YAy6pk",type:"video",descriptionZh:"实战视频教程,演示如何使用 Frida 对安卓应用进行动态分析,包括 Hook Java 方法、绕过 Root 检测、SSL Pinning 绕过等核心技巧。",tags:["Frida","实战视频","Hook","SSL Pinning"]}],DO=["全部","基础概念","运行时","动态分析","安全机制","脱壳技术","加固技术","系统机制","底层技术","工具"],Ci=[{id:"g001",term:"DEX (Dalvik Executable)",termZh:"DEX 可执行文件",category:"基础概念",shortDef:"Android 应用的核心字节码格式,由 Java/Kotlin 源码编译而来,运行在 Dalvik/ART 虚拟机上。",fullDef:"DEXDalvik Executable是 Android 平台专用的字节码格式,由 dx/d8 编译器将 Java .class 文件转换而来。一个 APK 可包含一个或多个 DEX 文件MultiDex,每个 DEX 文件包含类定义、方法字节码、字符串常量池等信息。DEX 格式针对移动设备的内存和性能进行了优化,相比 Java class 文件更紧凑。",underlyingLogic:`DEX 文件结构(魔数开头):
┌─────────────────────────────────────────┐
│ Header (112 bytes) │
│ magic: "dex\\n035\\0" │
│ checksum, SHA-1, file_size ... │
├─────────────────────────────────────────┤
│ String Pool (string_ids → string_data) │
├─────────────────────────────────────────┤
│ Type Pool (type_ids → string_ids) │
├─────────────────────────────────────────┤
│ Proto Pool (method signatures) │
├─────────────────────────────────────────┤
│ Field Pool │
├─────────────────────────────────────────┤
│ Method Pool │
├─────────────────────────────────────────┤
│ Class Definitions (class_def_item[]) │
│ → code_item (方法字节码) │
└─────────────────────────────────────────┘
加载流程:
APK 安装 → dex2oat 编译 → .oat/.vdex 文件
运行时ClassLoader → DexFile → ClassDef → Method`,example:`$ file classes.dex
classes.dex: Dalvik dex file version 035
$ xxd classes.dex | head -1
00000000: 6465 780a 3033 3500 ... (dex.035.)`,relatedTerms:["ART","Dalvik","Smali","APK","MultiDex","dex2oat"]},{id:"g002",term:"ART (Android Runtime)",termZh:"Android 运行时",category:"运行时",shortDef:"Android 5.0+ 的默认运行时环境,采用 AOT/JIT 混合编译策略,取代了早期的 Dalvik 虚拟机。",fullDef:"ARTAndroid Runtime是 Android 5.0Lollipop引入的运行时环境,替代了 Dalvik。ART 的核心改进是引入了 AOTAhead-Of-Time编译,在应用安装时将 DEX 字节码编译为本地机器码(.oat 文件,大幅提升运行性能。Android 7.0 后引入 JIT 与 AOT 混合策略,Android 8.0 后引入 .vdex 格式优化验证速度。",underlyingLogic:`ART 编译流程:
安装时:
DEX → dex2oat → .oat (ELF格式, 含本地机器码)
→ .vdex (验证后的DEX, 跳过重复验证)
→ .art (启动镜像, 预加载常用类)
运行时 (Android 7.0+)
首次运行 → JIT 解释执行 + 收集热点信息
后台优化 → dex2oat 将热点方法 AOT 编译
再次运行 → 直接执行 AOT 编译的本地代码
关键目录:
/data/dalvik-cache/ ← 系统应用编译缓存
/data/app/xxx/oat/ ← 用户应用编译产物`,example:`$ adb shell ls /data/app/com.example.app/oat/arm64/
base.odex base.vdex`,relatedTerms:["DEX","Dalvik","dex2oat","AOT","JIT","OAT"]},{id:"g003",term:"Smali",termZh:"Smali 汇编语言",category:"基础概念",shortDef:"DEX 字节码的人类可读汇编表示形式,是 Apktool 反编译 APK 后得到的中间代码,可直接修改后重打包。",fullDef:'Smali 是 DEX 字节码的汇编语言表示,名称来自冰岛语"汇编器"。Baksmali 将 DEX 反汇编为 .smali 文件,Smali 将 .smali 文件汇编回 DEX。Smali 代码比 Java 更接近底层,每条指令对应一条 DEX 字节码。修改 Smali 代码是在没有源码情况下修改 APP 逻辑的主要手段,例如绕过付费验证、修改游戏数值等。',underlyingLogic:`Smali 语法示例Java → Smali 对照):
Java:
if (isPremium) { return true; }
Smali:
iget-boolean v0, p0, Lcom/app/User;->isPremium:Z
if-eqz v0, :cond_0 # 如果 v0==0 跳转
const/4 v0, 0x1
return v0
:cond_0
...
修改技巧(绕过验证):
原始: if-eqz v0, :cond_fail
修改: if-nez v0, :cond_fail ← 反转条件
或者: const/4 v0, 0x1 ← 直接返回 true
return v0`,example:`$ apktool d target.apk -o output/
$ vim output/smali/com/app/MainActivity.smali
$ apktool b output/ -o modified.apk`,relatedTerms:["DEX","Apktool","Baksmali","ART","重打包"]},{id:"g004",term:"Frida",termZh:"Frida 动态插桩框架",category:"动态分析",shortDef:"跨平台动态插桩框架,通过注入 JavaScript 引擎到目标进程,实现运行时 Hook、内存读写和函数追踪。",fullDef:"Frida 是一个基于 V8 JavaScript 引擎的动态插桩框架,支持 Android、iOS、Windows、Linux 等平台。其核心原理是将 frida-agent含 V8 引擎)注入到目标进程,通过 JavaScript API 操控进程内存。Frida 支持 Hook Java 方法(通过 ART 内部机制)和 Native 函数(通过 PLT/GOT Hook 或 Inline Hook,是安卓逆向分析最重要的工具。",underlyingLogic:`Frida 工作原理:
PC端 frida-tools
↓ (通过 USB/TCP)
设备端 frida-server (需Root)
↓ (ptrace 注入)
目标进程 (com.target.app)
↓ (加载 frida-agent.so)
V8 JavaScript 引擎
Java Hook: ART 方法替换
Java.use("com.app.Class")
.method.implementation = function() { ... }
原理: 修改 ArtMethod 结构体的 entry_point_from_jni_
Native Hook: Inline Hook
Interceptor.attach(addr, { onEnter, onLeave })
原理: 在函数入口写入跳转指令到 trampoline`,example:`// 绕过 Root 检测示例
Java.perform(function() {
var RootBeer = Java.use("com.scottyab.rootbeer.RootBeer");
RootBeer.isRooted.implementation = function() {
console.log("[*] isRooted() hooked, returning false");
return false;
};
});`,relatedTerms:["Hook","Objection","ART","PLT Hook","Inline Hook","动态插桩"]},{id:"g005",term:"SSL Pinning",termZh:"SSL 证书绑定",category:"安全机制",shortDef:"APP 内置特定服务器证书或公钥,只信任预置证书,防止中间人攻击和流量抓包分析。",fullDef:"SSL Pinning证书绑定是一种防止中间人攻击的安全机制。普通 HTTPS 只验证证书链是否由受信任 CA 签发,而 SSL Pinning 额外验证证书的指纹(或公钥哈希)是否与 APP 内置的值匹配。常见实现方式包括OkHttp CertificatePinner、TrustManager 自定义实现、Network Security Config 等。逆向分析时需要绕过此机制才能抓包。",underlyingLogic:`SSL Pinning 实现原理:
1. OkHttp CertificatePinner最常见
OkHttpClient.Builder()
.certificatePinner(CertificatePinner.Builder()
.add("api.example.com", "sha256/AAAA...=")
.build())
2. 自定义 TrustManager
X509TrustManager.checkServerTrusted() 中
手动比对证书指纹
绕过方法:
① Frida Hook推荐
Hook OkHttp3 CertificatePinner.check()
Hook X509TrustManager.checkServerTrusted()
Hook SSLContext.init() 替换 TrustManager
② 修改 APK
解包 → 删除 network_security_config.xml 中的 pin
或修改 OkHttp 相关 Smali 代码
③ Objection 一键绕过:
$ objection -g com.app explore
> android sslpinning disable`,example:`$ objection -g com.target.app explore
com.target.app on (Android: 12) [usb] # android sslpinning disable
[+] SSL Pinning disabled`,relatedTerms:["HTTPS","OkHttp","TrustManager","Frida","Objection","中间人攻击"]},{id:"g006",term:"Root Detection",termZh:"Root 检测",category:"安全机制",shortDef:"APP 检测设备是否已 Root,若检测到则拒绝运行,以防止逆向分析和数据篡改。",fullDef:'Root 检测是 APP 防止在 Root 设备上运行的安全措施。常见检测方法包括:检测 su 二进制文件是否存在、检测 Magisk 特征文件、检测 /system 分区是否可写、检测 Build.TAGS 是否包含 "test-keys"、调用 Runtime.exec("su") 等。高级检测还会检查 /proc/self/maps 中是否有 Magisk 相关内存映射。',underlyingLogic:`常见 Root 检测方法及绕过:
检测方法 绕过方案
─────────────────────────────────────────────
检测 /system/bin/su Magisk Hide 隐藏
检测 Magisk 特征文件 Shamiko 模块
检测 Build.TAGS Hook Build.TAGS 返回值
检测 /proc/self/maps Hook open() 过滤结果
检测 RootBeer 库 Hook isRooted() 返回 false
Native 层检测 Hook libc.so 的 open/access
Frida 绕过示例:
Java.perform(function() {
// Hook 文件访问
var File = Java.use("java.io.File");
File.exists.implementation = function() {
var name = this.getName();
if (name.indexOf("su") !== -1 ||
name.indexOf("magisk") !== -1) {
return false; // 隐藏 Root 特征
}
return this.exists.call(this);
};
});`,example:`$ adb shell ls /system/bin/su
/system/bin/su ← 存在则被检测到
# 使用 Magisk Hide 后:
$ adb shell ls /system/bin/su
ls: /system/bin/su: No such file or directory`,relatedTerms:["Magisk","Frida","Shamiko","Xposed","反检测"]},{id:"g007",term:"APK (Android Package)",termZh:"Android 应用包",category:"基础概念",shortDef:"Android 应用的分发格式,本质是一个 ZIP 压缩包,包含 DEX 字节码、资源文件、Native 库和配置文件。",fullDef:"APKAndroid Package Kit是 Android 应用的安装包格式,基于 ZIP 格式。APK 包含classes.dexJava/Kotlin 字节码、res/资源文件、assets/原始资源、lib/Native .so 库,按 ABI 分目录、AndroidManifest.xml应用配置、resources.arsc编译后的资源表、META-INF/(签名信息)。",underlyingLogic:`APK 内部结构:
app.apk (ZIP格式)
├── AndroidManifest.xml ← 二进制 XML 格式
├── classes.dex ← 主 DEX 文件
├── classes2.dex ← MultiDex 额外 DEX
├── resources.arsc ← 编译后资源表
├── res/
│ ├── layout/ ← 布局 XML二进制
│ ├── drawable/ ← 图片资源
│ └── values/ ← 字符串等
├── assets/ ← 原始文件(不编译)
├── lib/
│ ├── arm64-v8a/ ← 64位 ARM .so
│ ├── armeabi-v7a/ ← 32位 ARM .so
│ └── x86_64/ ← x86_64 .so
└── META-INF/
├── MANIFEST.MF ← 文件哈希清单
├── CERT.SF ← 签名文件
└── CERT.RSA ← 签名证书`,example:`$ unzip -l target.apk | head -20
$ aapt dump badging target.apk | grep package`,relatedTerms:["DEX","AndroidManifest","Smali","Apktool","签名","Native库"]},{id:"g008",term:"Hook",termZh:"Hook钩子",category:"动态分析",shortDef:"在程序运行时拦截并修改函数调用的技术,可在不修改原始代码的情况下改变程序行为。",fullDef:"Hook 是一种在程序运行时拦截函数调用的技术。在安卓逆向中,Hook 分为 Java 层 Hook通过 Xposed/Frida 修改 ART 方法表)和 Native 层 Hook通过 PLT/GOT Hook 或 Inline Hook 修改函数指针或指令。Hook 可以在函数执行前后插入自定义代码,用于监控参数、修改返回值、追踪调用栈等。",underlyingLogic:`Hook 技术分类:
1. Java 层 HookART Method Hook
原理:修改 ArtMethod 结构体的 entry_point_from_jni_
指向自定义方法,执行后可选择调用原始方法
工具Frida, Xposed/LSPosed
2. PLT/GOT HookNative 层):
原理:修改 ELF 文件的 GOT全局偏移表
的函数指针,将其指向 Hook 函数
适用Hook 动态链接的外部函数(如 libc.so
3. Inline HookNative 层):
原理在目标函数入口写入跳转指令B/BL
跳转到 trampoline,执行 Hook 逻辑后
再跳回原始函数继续执行
适用Hook 任意位置,包括内部函数
调用链:
原始调用 → Hook 函数 → [可选] 原始函数
记录参数/修改返回值/阻止调用`,example:`// Frida Java Hook
Java.use("android.app.Activity").onCreate
.overload("android.os.Bundle")
.implementation = function(bundle) {
console.log("onCreate called!");
this.onCreate(bundle); // 调用原始方法
};`,relatedTerms:["Frida","Xposed","PLT Hook","Inline Hook","ART","动态插桩"]},{id:"g009",term:"Binder IPC",termZh:"Binder 进程间通信",category:"系统机制",shortDef:"Android 的核心进程间通信机制,基于 Linux 内核驱动,几乎所有 Android 系统服务都通过 Binder 通信。",fullDef:"Binder 是 Android 系统的核心 IPC进程间通信机制,由 OpenBinder 演化而来。与传统 Linux IPC管道、Socket不同,Binder 通过内核驱动(/dev/binder实现,只需一次数据拷贝mmap 内存映射,性能更高。Android 的 Activity Manager、Package Manager、Window Manager 等系统服务都通过 Binder 提供服务。AIDLAndroid Interface Definition Language是 Binder 的高级封装。",underlyingLogic:`Binder 通信模型:
Client 进程 Binder 驱动 Server 进程
│ │ │
│ transact() │ │
│──────────────────→ │ │
│ │ 内核空间数据拷贝 │
│ │ (mmap 共享内存) │
│ │──────────────────→ │
│ │ │ onTransact()
│ │ │ 处理请求
│ │ ←──────────────── │
│ ←──────────────── │ │
│ 返回结果 │ │
关键组件:
ServiceManager: 服务注册与查询类似DNS
IBinder: Binder 接口
Proxy: 客户端代理(自动生成)
Stub: 服务端实现基类(自动生成)
分析工具:
$ adb shell service list # 列出所有服务
$ adb shell dumpsys activity # Dump ActivityManager`,example:`$ adb shell service call activity 1 s16 "com.target.app"
# 直接调用 ActivityManager 的 Binder 接口`,relatedTerms:["AIDL","IPC","ServiceManager","Zygote","Android系统服务"]},{id:"g010",term:"Zygote",termZh:"Zygote 进程",category:"系统机制",shortDef:"Android 所有应用进程的父进程,通过 fork 机制快速创建新应用进程,预加载了 Java 类库和 ART 运行时。",fullDef:"Zygote 是 Android 系统启动时由 init 进程启动的特殊进程,预加载了 Android 框架类、资源和 ART 运行时。当需要启动新应用时,系统通过 fork Zygote 进程来创建应用进程,由于 fork 使用写时复制COW机制,可以共享 Zygote 的内存页,大幅减少内存占用和启动时间。Xposed/LSPosed 正是通过修改 Zygote 进程来实现全局 Hook。",underlyingLogic:`Zygote 启动流程:
init → /system/bin/app_process → ZygoteInit.main()
预加载:
preloadClasses() ← 加载 ~7000 个框架类
preloadResources() ← 加载系统资源
preloadSharedLibraries()
等待连接(/dev/socket/zygote
收到 fork 请求 → fork()
子进程(新 APP
ActivityThread.main() → 消息循环
Xposed Hook 原理:
修改 app_process 二进制
→ 在 ZygoteInit 中加载 XposedBridge.jar
→ 替换所有 APP 的方法入口点
→ 实现全局 Java Hook`,example:`$ adb shell ps | grep zygote
root 556 1 zygote64
root 557 1 zygote`,relatedTerms:["ART","Xposed","LSPosed","fork","Android进程模型"]},{id:"g011",term:"ProGuard / R8",termZh:"ProGuard / R8 代码混淆器",category:"安全机制",shortDef:"Android 官方代码混淆和优化工具,将类名、方法名、字段名替换为无意义短名称,增加逆向难度。",fullDef:"ProGuard 是传统的 Java 代码混淆工具,R8 是 Android Gradle Plugin 3.4+ 的默认混淆器,兼容 ProGuard 规则并提供更好的优化。混淆操作包括重命名Renaming、缩减Shrinking,删除未使用代码、优化Optimization,内联方法等。混淆后的代码中,原本有意义的类名如 `UserAuthManager` 变为 `a.b.c`,大幅增加逆向分析难度。",underlyingLogic:`混淆前后对比:
混淆前:
public class UserAuthManager {
private String apiKey = "secret_key";
public boolean verifyToken(String token) {
return token.equals(this.apiKey);
}
}
混淆后ProGuard/R8
public class a {
private String a = "secret_key"; // 字符串不混淆
public boolean a(String a) {
return a.equals(this.a);
}
}
反混淆策略:
1. 字符串搜索:混淆不改变字符串常量
在 JADX 中搜索关键字符串定位逻辑
2. 交叉引用:追踪方法调用链
3. 行为分析Frida Hook 观察运行时行为
4. DeGuard统计模型恢复可能的原始名称`,example:`# JADX 中搜索字符串定位关键逻辑
# 即使混淆后,"login_failed" 等字符串仍可搜索`,relatedTerms:["R8","反混淆","JADX","Simplify","DeGuard"]},{id:"g012",term:"Packing / Shell (加壳)",termZh:"加壳 / 加固",category:"加固技术",shortDef:"对 APK 中的 DEX 文件进行加密保护,运行时在内存中解密还原,防止静态分析和反编译。",fullDef:"加壳Packing是将原始 DEX 文件加密后隐藏,在 APP 启动时通过壳代码解密并加载到内存中运行。加固技术按代际分类一代壳整体加密DEX、二代壳函数抽取,将方法字节码单独加密、三代壳VMP/Dex2C,将DEX转换为虚拟机指令或C代码。国内主流加固厂商包括梆梆、360、腾讯乐固、阿里聚安全、网易易盾等。",underlyingLogic:`加壳代际演进:
一代壳(整体加密):
原始DEX → 加密 → 存入assets/
壳DEX → 运行时解密 → 加载原始DEX
脱壳内存Dumpfrida-dexdump, BlackDex
二代壳(函数抽取):
DEX中方法字节码被清空code_item置零
运行时按需填充方法字节码
脱壳主动调用所有方法FART, Youpk
三代壳VMP/Dex2C
VMP: 将字节码转换为自定义虚拟机指令
需要逆向自定义虚拟机解释器
Dex2C: 将Java方法转换为Native C代码
编译进.so文件,需要IDA Pro分析
脱壳通用思路:
加固必须在内存中还原DEX才能执行
→ 在ART加载DEX时Hook并Dump内存`,example:`# 识别加固方案
$ python3 apkid.py target.apk
[+] 梆梆加固 v3.x detected
# 使用 BlackDex 脱壳无需Root
$ adb install BlackDex.apk
# 在设备上运行 BlackDex,选择目标APP`,relatedTerms:["DEX","ART","FART","BlackDex","frida-dexdump","VMP","Dex2C","APKiD"]},{id:"g013",term:"Inline Hook",termZh:"Inline Hook内联钩子",category:"底层技术",shortDef:"在目标函数的机器码入口处写入跳转指令,将执行流重定向到自定义函数,是 Native 层 Hook 的核心技术。",fullDef:"Inline Hook 是一种在函数机器码层面实现 Hook 的技术。其原理是:备份目标函数入口处的若干字节指令,写入跳转到 Hook 函数的指令ARM 下为 B/BL 指令,x86 下为 JMP 指令),在 Hook 函数中执行自定义逻辑,然后执行备份的原始指令并跳回原函数继续执行(通过 trampoline。Frida 的 Interceptor.attach() 底层即使用 Inline Hook。",underlyingLogic:`ARM64 Inline Hook 原理:
原始函数(地址 0x1000
0x1000: STP X29, X30, [SP, #-16]! ← 备份这些指令
0x1004: MOV X29, SP
0x1008: ...(正常代码)
Hook 后:
0x1000: LDR X17, #8 ← 加载跳转地址
0x1004: BR X17 ← 跳转到 Hook 函数
0x1008: [Hook函数地址8字节]
Trampoline跳板函数
[备份的原始指令]
STP X29, X30, [SP, #-16]!
MOV X29, SP
B 0x1008 ← 跳回原函数+8
Hook 函数:
执行 onEnter 逻辑
CALL Trampoline ← 调用原始函数
执行 onLeave 逻辑
RET`,example:`// Frida Interceptor底层使用 Inline Hook
Interceptor.attach(Module.findExportByName(
"libnative.so", "checkLicense"), {
onEnter: function(args) {
console.log("checkLicense called, arg0:", args[0]);
},
onLeave: function(retval) {
retval.replace(1); // 强制返回 1成功
}
});`,relatedTerms:["PLT Hook","Frida","ARM汇编","Trampoline","Native Hook"]},{id:"g014",term:"AndroidManifest.xml",termZh:"Android 清单文件",category:"基础概念",shortDef:"APK 的核心配置文件,声明应用组件Activity/Service/Receiver/Provider、权限、最低SDK版本等信息。",fullDef:"AndroidManifest.xml 是每个 Android 应用必须包含的配置文件,在 APK 中以二进制 XML 格式存储AXML。它声明了应用的包名、版本、所有四大组件Activity、Service、BroadcastReceiver、ContentProvider、所需权限、最低/目标 SDK 版本、应用签名等信息。逆向分析时,Manifest 是了解 APP 架构和入口点的第一步。",underlyingLogic:`Manifest 关键信息(逆向视角):
<manifest package="com.target.app">
<!-- 权限声明了解APP能做什么 -->
<uses-permission android:name="android.permission.READ_SMS"/>
<!-- 入口 Activity逆向起点 -->
<activity android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
</intent-filter>
</activity>
<!-- exported=true 的组件:攻击面 -->
<activity android:name=".DeepLinkActivity"
android:exported="true">
<intent-filter>
<data android:scheme="myapp"/>
</intent-filter>
</activity>
<!-- Provider可能存在 SQL 注入 -->
<provider android:name=".DataProvider"
android:exported="true"
android:authorities="com.target.provider"/>
</manifest>
读取工具:
$ aapt dump badging target.apk
$ apktool d target.apk → AndroidManifest.xml`,example:`$ aapt dump permissions target.apk
uses-permission: android.permission.READ_CONTACTS
uses-permission: android.permission.RECORD_AUDIO`,relatedTerms:["APK","Activity","Service","ContentProvider","Intent","权限"]},{id:"g015",term:"VMP (Virtual Machine Protection)",termZh:"虚拟机保护",category:"加固技术",shortDef:"将原始代码转换为自定义虚拟机指令集,通过专用解释器执行,使逆向分析极其困难的高级保护技术。",fullDef:"VMP虚拟机保护是一种高级代码保护技术,将原始 Java 字节码或 Native 机器码转换为自定义的虚拟机指令集OPCODE,运行时由专用的解释器Dispatcher逐条解释执行。由于指令集是私有的,逆向分析者必须先逆向理解整个虚拟机的设计,才能还原原始逻辑,难度极大。娜迦NAGA等高端加固产品使用此技术。",underlyingLogic:`VMP 工作原理:
原始代码:
int add(int a, int b) { return a + b; }
VMP 转换后(伪代码):
byte[] vmcode = {0x01, 0x02, 0x03, ...}; // 自定义指令
// 解释器Dispatcher
void execute(byte[] code) {
int pc = 0;
while(true) {
switch(code[pc]) {
case 0x01: // PUSH
stack.push(getOperand(code, pc+1));
pc += 3; break;
case 0x02: // ADD
int b = stack.pop(), a = stack.pop();
stack.push(a + b);
pc++; break;
// ... 数百种自定义指令
}
}
}
逆向 VMP 的步骤:
1. 找到 Dispatcher 函数(通常是大型 switch-case
2. 逆向每个 OPCODE 的语义
3. 编写反汇编器还原 VMP 字节码
4. 分析还原后的逻辑`,example:`# VMP 特征识别
# IDA Pro 中看到大型 switch-case 结构
# 且 case 数量极多50-200+
# 通常位于 .so 文件中`,relatedTerms:["加壳","Dex2C","IDA Pro","Native分析","三代壳"]},{id:"g016",term:"dex2oat",termZh:"DEX 转 OAT 编译器",category:"运行时",shortDef:"Android 系统的 AOT 编译器,将 DEX 字节码编译为设备特定的本地机器码OAT/ELF 格式),提升运行性能。",fullDef:"dex2oat 是 ART 运行时的核心组件,负责将 DEX 文件编译为 OATOn-device Ahead-of-Time格式。OAT 文件本质上是 ELF 格式,包含编译后的本地机器码和原始 DEX 数据。dex2oat 在应用安装时、系统 OTA 升级后或后台优化时运行。在脱壳场景中,理解 dex2oat 的工作原理有助于在正确时机 Dump 内存中的 DEX 数据。",underlyingLogic:`dex2oat 编译产物:
Android 5-6:
/data/dalvik-cache/arm64/data@app@xxx.apk@classes.dex
→ .dex 格式(实际是 OAT
Android 7+:
/data/app/xxx/oat/arm64/
├── base.odex ← OAT 文件ELF格式,含机器码
└── base.vdex ← 验证后的 DEX跳过重复验证
OAT 文件结构ELF
.rodata 段OatHeader + DEX 数据
.text 段:编译后的本地机器码
脱壳利用点:
Hook dex2oat 或 OpenDexFilesFromOat
在 DEX 加载到内存后 Dump
→ 此时 DEX 已解密但尚未执行`,example:`$ adb shell ls -la /data/app/com.target.app/oat/arm64/
-rw-r--r-- base.odex
-rw-r--r-- base.vdex`,relatedTerms:["ART","DEX","OAT","AOT","脱壳","ELF"]},{id:"g017",term:"ASLR (Address Space Layout Randomization)",termZh:"地址空间布局随机化",category:"底层技术",shortDef:"每次进程启动时随机化内存布局(代码段、栈、堆的基址),防止攻击者预测内存地址,是现代操作系统的基础安全机制。",fullDef:"ASLR 是操作系统级别的安全机制,通过随机化进程的内存布局来防止基于固定地址的漏洞利用。在 Android 中,ASLR 对所有进程生效,包括 .so 库的加载地址。在使用 Frida 进行 Native Hook 时,需要通过 Module.findBaseAddress() 获取模块的运行时基址,再加上静态分析得到的偏移量,才能计算出目标函数的实际地址。",underlyingLogic:`ASLR 在 Android 逆向中的影响:
静态分析IDA Pro
函数地址0x1234 ← 相对于模块基址的偏移
运行时ASLR 开启):
模块加载基址0x7f8a000000每次随机
实际函数地址0x7f8a001234
Frida 中处理 ASLR
// 方法1通过函数名推荐
var addr = Module.findExportByName(
"libnative.so", "target_function");
// 方法2基址 + 偏移
var base = Module.findBaseAddress("libnative.so");
var offset = 0x1234; // IDA 中看到的偏移
var addr = base.add(offset);
Interceptor.attach(addr, { ... });
PIEPosition Independent Executable
Android 5.0+ 强制要求所有 APP 使用 PIE
配合 ASLR 使固定地址攻击失效`,example:`// Frida 获取运行时地址
var base = Module.findBaseAddress("libnative.so");
console.log("Base:", base);
// 输出: Base: 0x7f8a000000每次不同`,relatedTerms:["PIE","Frida","IDA Pro","Native分析","漏洞利用","ELF"]},{id:"g018",term:"Obfuscation (混淆)",termZh:"代码混淆",category:"安全机制",shortDef:"通过重命名、控制流变换、字符串加密等手段使代码难以理解,增加逆向分析的时间成本。",fullDef:"代码混淆是一种软件保护技术,通过多种手段使代码在功能不变的情况下变得难以理解。常见混淆技术包括标识符重命名ProGuard/R8、字符串加密运行时解密、控制流混淆插入无用跳转、展平控制流、指令替换用等价但复杂的指令序列替换简单指令、垃圾代码插入等。高级混淆工具如 DashO、Allatori、Obfuscapk 等提供多种混淆策略组合。",underlyingLogic:`混淆技术分类:
1. 标识符混淆(最常见):
UserManager → a, login() → b()
工具ProGuard, R8
2. 字符串加密:
"api.example.com" → 运行时解密
原理:将字符串替换为加密字节数组
通过解密函数还原
绕过Frida Hook 解密函数 / 内存搜索
3. 控制流混淆:
正常: if(a) { ... } else { ... }
混淆: switch(hash(a) ^ 0x1234) {
case 0xABCD: ...
case 0xEF01: ...
}
工具OLLVM, Obfuscapk
4. 反调试混淆:
插入 ptrace 检测、时间差检测
检测调试器特征
逆向对策:
字符串混淆 → 搜索字符串 / Hook 解密函数
控制流混淆 → 动态追踪执行路径
标识符混淆 → 通过行为和上下文推断语义`,example:`// 字符串加密混淆示例
// 混淆前: String url = "https://api.example.com";
// 混淆后:
byte[] enc = {0x48, 0x9f, 0x2a, ...};
String url = Decrypt.decode(enc, key);`,relatedTerms:["ProGuard","R8","OLLVM","反混淆","Simplify","DeGuard"]},{id:"g019",term:"JNI (Java Native Interface)",termZh:"Java 本地接口",category:"底层技术",shortDef:"Java/Kotlin 代码调用 C/C++ Native 代码的桥接机制,也是 Android 加固将关键逻辑下沉到 Native 层的核心手段。",fullDef:"JNIJava Native Interface是 Java 与 NativeC/C++)代码互操作的标准接口。在 Android 中,通过 System.loadLibrary() 加载 .so 文件,声明 native 方法后即可调用。JNI 函数命名遵循特定规则Java_包名_类名_方法名或通过 RegisterNatives 动态注册。加固厂商常将关键验证逻辑(如授权检测、加密算法)放入 Native 层,增加逆向难度。",underlyingLogic:`JNI 工作机制:
Java 层声明:
public native String getKey(); // native 关键字
Native 层实现(两种注册方式):
方式1静态注册函数名约定
// 函数名Java_包名_类名_方法名
jstring Java_com_app_MainActivity_getKey(
JNIEnv* env, jobject thiz) {
return env->NewStringUTF("secret_key");
}
方式2动态注册JNI_OnLoad
JNI_OnLoad(JavaVM* vm, void* reserved) {
JNINativeMethod methods[] = {
{"getKey", "()Ljava/lang/String;",
(void*)native_getKey}
};
env->RegisterNatives(clazz, methods, 1);
}
逆向分析:
IDA Pro 搜索 "Java_" 前缀函数
或找到 JNI_OnLoad → RegisterNatives 调用
→ 定位 native 方法实现`,example:`// Frida Hook Native JNI 方法
var getKey = Module.findExportByName(
"libnative.so", "Java_com_app_MainActivity_getKey");
Interceptor.attach(getKey, {
onLeave: function(retval) {
var env = Java.vm.getEnv();
console.log("Key:", env.getStringUtfChars(
retval, null).readCString());
}
});`,relatedTerms:["Native分析","IDA Pro","Ghidra","Frida",".so文件","JNI_OnLoad"]},{id:"g020",term:"Ptrace",termZh:"Ptrace 系统调用",category:"底层技术",shortDef:"Linux 内核提供的进程追踪系统调用,是调试器GDB/LLDB和动态分析工具的底层基础,也是反调试检测的重要目标。",fullDef:'ptrace 是 Linux 内核提供的系统调用,允许一个进程tracer监控和控制另一个进程tracee的执行,包括读写内存、寄存器,以及在系统调用时暂停执行。GDB、LLDB 等调试器都基于 ptrace 实现。在 Android 反调试中,APP 常通过 ptrace(PTRACE_TRACEME) "自我附加"来阻止其他调试器附加,或通过检测 /proc/pid/status 中的 TracerPid 字段来判断是否被调试。',underlyingLogic:`Ptrace 在反调试中的应用:
反调试技术1ptrace 自我附加
// 父进程 ptrace 子进程,占用 tracer 名额
// 其他调试器无法再附加
fork() → 子进程: ptrace(PTRACE_TRACEME, 0, 0, 0)
父进程: ptrace(PTRACE_CONT, child_pid, ...)
反调试技术2检测 TracerPid
// /proc/self/status 中
// 未被调试: TracerPid: 0
// 被调试: TracerPid: 1234调试器PID
FILE* f = fopen("/proc/self/status", "r");
// 读取 TracerPid 值,非0则退出
绕过方法:
Frida Hook open() / read() 系统调用
过滤 /proc/self/status 的返回内容
将 TracerPid 替换为 0
// Frida 绕过示例
Interceptor.attach(
Module.findExportByName(null, "fgets"), {
onLeave: function(retval) {
// 替换 TracerPid 行
}
});`,example:`$ cat /proc/$(pidof com.target.app)/status | grep TracerPid
TracerPid: 0 ← 未被调试
TracerPid: 5678 ← 被调试器附加`,relatedTerms:["反调试","GDB","LLDB","Frida","进程追踪","反逆向对抗"]}],dS=[{id:"ctf001",name:"Android CTF by Maddie Stone",nameZh:"Maddie Stone 安卓 CTF 系列",url:"https://github.com/maddiestone/AndroidAppRE",difficulty:"beginner",descriptionZh:"配套 Android App RE 101 课程的 CTF 练习题,包含多个难度递进的安卓逆向挑战,是入门练习的最佳选择。",isRecommended:!0},{id:"ctf002",name:"Crackmes.one - Android",nameZh:"Crackmes.one 安卓挑战",url:"https://crackmes.one/",difficulty:"intermediate",descriptionZh:"社区驱动的逆向工程挑战平台,包含大量用户上传的安卓 Crackme 题目,难度从入门到高级,可按难度和平台筛选。",isRecommended:!0},{id:"ctf003",name:"OWASP UnCrackable Apps",nameZh:"OWASP 不可破解应用系列",url:"https://github.com/OWASP/owasp-mastg/tree/master/Crackmes",difficulty:"intermediate",descriptionZh:"OWASP 出品的安卓逆向挑战应用,共 4 个级别,涵盖 Root 检测绕过、字符串解密、Native 层分析等核心技能,是学习 MSTG 的配套实践。",isRecommended:!0},{id:"ctf004",name:"HackTheBox - Android",nameZh:"HackTheBox 安卓挑战",url:"https://www.hackthebox.com/",difficulty:"advanced",descriptionZh:"知名 CTF 平台 HackTheBox 的安卓逆向挑战,题目质量高,涵盖加密分析、Native 逆向、动态分析等高级技能,适合有一定基础的研究者。"},{id:"ctf005",name:"CTFtime.org - Android",nameZh:"CTFtime 安卓赛题",url:"https://ctftime.org/",difficulty:"intermediate",descriptionZh:"CTF 赛事聚合平台,可搜索历届 CTF 比赛中的安卓逆向题目和 Writeup,是学习高质量逆向技巧的重要资源。"},{id:"ctf006",name:"Flare-On Challenge",nameZh:"Flare-On 逆向挑战赛",url:"https://flare-on.com/",difficulty:"advanced",descriptionZh:"FireEyeMandiant举办的年度逆向工程挑战赛,部分年份包含安卓逆向题目,题目质量极高,适合顶级逆向工程师挑战。"},{id:"ctf007",name:"PicoCTF",nameZh:"PicoCTF 入门 CTF",url:"https://picoctf.org/",difficulty:"beginner",descriptionZh:"面向初学者的 CTF 平台,包含基础的安卓逆向题目,题目有详细提示,适合完全没有 CTF 经验的新手入门。",isRecommended:!0}],RO=[{id:"cs001",titleZh:"分析 Android 银行木马 BankBot",url:"https://www.threatfabric.com/blogs/bankbot.html",description:"深度分析 BankBot 银行木马的 C2 通信、覆盖攻击和凭证窃取机制,展示完整的恶意软件逆向分析流程。",tags:["银行木马","恶意软件","C2通信","覆盖攻击"]},{id:"cs002",titleZh:"逆向分析 Android 勒索软件",url:"https://github.com/rednaga/training/tree/master/DEFCON23",description:"DEFCON 23 演讲配套材料,讲解如何逆向分析 Android 勒索软件,提取加密密钥并恢复被加密的文件。",tags:["勒索软件","加密分析","DEFCON","密钥提取"]},{id:"cs003",titleZh:"绕过某主流 APP 的多层防护",url:"https://blog.netspi.com/android-reverse-engineering/",description:"实战案例,展示如何系统性地绕过 Root 检测、SSL Pinning、代码混淆等多层防护机制,完整记录分析过程。",tags:["Root检测","SSL Pinning","混淆","多层防护"]},{id:"cs004",titleZh:"Frida 脱壳某知名加固方案",url:"https://bbs.kanxue.com/",description:"使用 Frida 对某主流加固方案进行脱壳的完整过程,包括加固识别、Hook 点定位、DEX Dump 和修复。",tags:["脱壳","Frida","DEX Dump","加固分析"]},{id:"cs005",titleZh:"分析 Android 间谍软件的隐蔽通信",url:"https://citizenlab.ca/tag/android/",description:"Citizen Lab 对商业间谍软件(如 Pegasus 安卓版)的技术分析报告,揭示其隐蔽 C2 通信和持久化机制。",tags:["间谍软件","C2通信","持久化","Citizen Lab"]},{id:"cs006",titleZh:"逆向分析游戏 APP 的反作弊机制",url:"https://github.com/user1342/Awesome-Android-Reverse-Engineering",description:"分析手游反作弊系统的实现原理,包括内存检测、速度检测和完整性校验,以及相应的绕过方法。",tags:["游戏逆向","反作弊","内存检测","完整性校验"]}],CO=[{id:"d001",nameZh:"Android 开发者文档",url:"https://developer.android.com/",description:"Google 官方 Android 开发文档,包含 API 参考、系统架构说明和安全最佳实践,是理解逆向目标的权威参考。",tags:["官方","API参考","系统架构"]},{id:"d002",nameZh:"OWASP 移动安全测试指南",url:"https://mobile-security.gitbook.io/mobile-security-testing-guide/",description:"OWASP MSTG 是移动安全测试的行业标准指南,详细介绍 Android/iOS 安全测试方法论和工具使用。",tags:["OWASP","测试指南","方法论","权威"]},{id:"d003",nameZh:"Frida 官方文档",url:"https://frida.re/docs/",description:"Frida 动态插桩框架的完整官方文档,包含 JavaScript API 参考、Python 绑定和各平台使用指南。",tags:["Frida","API文档","JavaScript"]},{id:"d004",nameZh:"Android 源码 (AOSP)",url:"https://source.android.com/",description:"Android 开放源码项目,可查阅 ART 虚拟机、Binder、Zygote 等核心组件的完整源码,是深度逆向分析的必备参考。",tags:["AOSP","源码","ART","Binder"]},{id:"d005",nameZh:"Smali/Baksmali 文档",url:"https://github.com/JesusFreke/smali/wiki",description:"Smali 汇编语言的完整语法参考文档,包含所有 DEX 指令的说明和示例,是编写/修改 Smali 代码的必备参考。",tags:["Smali","语法参考","DEX指令"]},{id:"d006",nameZh:"Ghidra 用户指南",url:"https://ghidra-sre.org/CheatSheet.html",description:"NSA Ghidra 逆向工程框架的官方用户指南和快捷键速查表,帮助快速掌握 Ghidra 的使用方法。",tags:["Ghidra","用户指南","NSA"]},{id:"d007",nameZh:"DEX 格式规范",url:"https://source.android.com/docs/core/runtime/dex-format",description:"Android 官方 DEX 文件格式完整规范文档,详细说明 DEX 文件的每个字段和数据结构,是理解 DEX 底层的权威参考。",tags:["DEX格式","规范","官方","底层"]},{id:"d008",nameZh:"Kanxue 看雪论坛",url:"https://bbs.kanxue.com/",description:"国内最权威的逆向工程和安全研究社区,包含大量安卓逆向、脱壳、漏洞分析的中文技术文章和讨论。",tags:["中文社区","脱壳","漏洞分析","国内"]}],kO="https://d2xsxph8kpxj0f.cloudfront.net/310519663328127163/Szg5wZsXwGPKGFVAUxVcW2/hero-bg-bZSiepGLPceNveJ5rUEew4.webp",WN=["$ adb shell am start -n com.target.app/.MainActivity","$ frida -U -f com.target.app --no-pause -l hook.js","$ jadx-gui target.apk","$ apktool d target.apk -o output/","$ frida-dexdump -U -f com.target.app","$ objection -g com.target.app explore"];function OO(){const[r,s]=H.useState(""),[u,d]=H.useState(0),[f,g]=H.useState(0),[v,x]=H.useState(!1);return H.useEffect(()=>{const N=WN[u],R=setTimeout(()=>{!v&&f<N.length?(s(N.slice(0,f+1)),g(f+1)):!v&&f===N.length?setTimeout(()=>x(!0),2e3):v&&f>0?(s(N.slice(0,f-1)),g(f-1)):(x(!1),d((u+1)%WN.length))},v?30:60);return()=>clearTimeout(R)},[f,v,u]),h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:51",className:"font-mono text-sm sm:text-base text-primary/90 bg-black/60 border border-primary/20 rounded p-3 sm:p-4 min-h-[52px]",children:[h.jsxDEV("span",{"data-loc":"client/src/pages/Home.tsx:52",children:r},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:52,columnNumber:7},this),h.jsxDEV("span",{"data-loc":"client/src/pages/Home.tsx:53",className:"cursor-blink text-primary",children:"█"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:53,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:51,columnNumber:5},this)}const _O=[{label:"工具收录",value:Nr.length+"+",icon:Eg,color:"text-primary"},{label:"课程资源",value:Ri.length+"+",icon:wc,color:"text-accent"},{label:"专业名词",value:Ci.length+"+",icon:xg,color:"text-destructive"},{label:"CTF 靶场",value:dS.length+"+",icon:Ng,color:"text-yellow-400"}],MO=[{path:"/tools",icon:Eg,title:"工具库",titleEn:"TOOLS",desc:"静态分析、动态分析、反编译器、恶意软件分析等完整工具链,含中文说明与使用场景。",count:`${Nr.length} 个工具`,color:"green",borderClass:"hover:border-primary/60",glowClass:"hover:shadow-[0_0_20px_oklch(0.85_0.22_152/0.1)]",tagClass:"tag-green"},{path:"/courses",icon:wc,title:"课程资源",titleEn:"COURSES",desc:"精选课程、视频教程和书籍推荐,从 ARM 汇编入门到高级逆向工程全覆盖。",count:`${Ri.length} 个资源`,color:"cyan",borderClass:"hover:border-accent/60",glowClass:"hover:shadow-[0_0_20px_oklch(0.82_0.18_200/0.1)]",tagClass:"tag-cyan"},{path:"/glossary",icon:xg,title:"名词解释",titleEn:"GLOSSARY",desc:"专业术语中英对照,含底层原理剖析、代码示例和关联概念,深度理解每个技术点。",count:`${Ci.length} 个词条`,color:"orange",borderClass:"hover:border-destructive/60",glowClass:"hover:shadow-[0_0_20px_oklch(0.72_0.19_40/0.1)]",tagClass:"tag-orange"},{path:"/resources",icon:Ng,title:"资源文档",titleEn:"RESOURCES",desc:"官方文档、实战案例分析、CTF 靶场和 APK 下载资源,完整的学习生态。",count:"文档 + CTF",color:"purple",borderClass:"hover:border-purple-500/60",glowClass:"hover:shadow-[0_0_20px_oklch(0.65_0.22_290/0.1)]",tagClass:"tag-purple"}],jO=Nr.filter(r=>r.isRecommended).slice(0,6),HO=[{step:"01",title:"环境搭建",desc:"Root 设备 / 模拟器 + ADB + Frida Server",color:"text-primary",bg:"bg-primary/10 border-primary/30"},{step:"02",title:"静态分析",desc:"Apktool 解包 → JADX 反编译 → 分析 Smali",color:"text-accent",bg:"bg-accent/10 border-accent/30"},{step:"03",title:"动态分析",desc:"Frida Hook → 抓包 → 绕过 SSL Pinning",color:"text-destructive",bg:"bg-destructive/10 border-destructive/30"},{step:"04",title:"脱壳对抗",desc:"识别加固 → 选择脱壳工具 → Dump DEX",color:"text-yellow-400",bg:"bg-yellow-400/10 border-yellow-400/30"},{step:"05",title:"Native 分析",desc:"IDA Pro / Ghidra 分析 .so → ARM 汇编",color:"text-purple-400",bg:"bg-purple-400/10 border-purple-400/30"},{step:"06",title:"反逆向对抗",desc:"绕过 Root/调试检测 → 修改 APK → 重签名",color:"text-pink-400",bg:"bg-pink-400/10 border-pink-400/30"}];function zO(){return h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:129",className:"min-h-screen bg-background",children:[h.jsxDEV(Tc,{"data-loc":"client/src/pages/Home.tsx:130"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:130,columnNumber:7},this),h.jsxDEV("section",{"data-loc":"client/src/pages/Home.tsx:133",className:"relative min-h-screen flex items-center justify-center scanlines",style:{backgroundImage:`url(${kO})`,backgroundSize:"cover",backgroundPosition:"center"},children:[h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:142",className:"absolute inset-0 bg-background/80"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:142,columnNumber:9},this),h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:143",className:"absolute inset-0",style:{background:"linear-gradient(180deg, oklch(0.09 0.01 250 / 0.3) 0%, oklch(0.09 0.01 250 / 0.7) 60%, oklch(0.09 0.01 250 / 1) 100%)"}},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:143,columnNumber:9},this),h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:148",className:"relative z-10 container text-center pt-20 pb-16",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:150",className:"inline-flex items-center gap-2 border border-primary/30 bg-primary/10 rounded px-3 py-1 mb-6",children:[h.jsxDEV(Wk,{"data-loc":"client/src/pages/Home.tsx:151",className:"w-3 h-3 text-primary"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:151,columnNumber:13},this),h.jsxDEV("span",{"data-loc":"client/src/pages/Home.tsx:152",className:"font-mono text-xs text-primary tracking-widest",children:"AWESOME ANDROID RE · 中文化版本"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:152,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:150,columnNumber:11},this),h.jsxDEV("h1",{"data-loc":"client/src/pages/Home.tsx:155",className:"text-4xl sm:text-5xl lg:text-7xl font-bold mb-4 leading-tight",style:{fontFamily:"Rajdhani, sans-serif"},children:[h.jsxDEV("span",{"data-loc":"client/src/pages/Home.tsx:156",className:"gradient-text-green",children:"安卓逆向工程"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:156,columnNumber:13},this),h.jsxDEV("br",{"data-loc":"client/src/pages/Home.tsx:157"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:157,columnNumber:13},this),h.jsxDEV("span",{"data-loc":"client/src/pages/Home.tsx:158",className:"text-foreground",children:"完整知识库"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:158,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:155,columnNumber:11},this),h.jsxDEV("p",{"data-loc":"client/src/pages/Home.tsx:161",className:"text-muted-foreground text-base sm:text-lg max-w-2xl mx-auto mb-8 leading-relaxed",children:["基于 ",h.jsxDEV("a",{"data-loc":"client/src/pages/Home.tsx:162",href:"https://github.com/user1342/Awesome-Android-Reverse-Engineering",target:"_blank",rel:"noopener noreferrer",className:"text-accent hover:text-accent/80 underline underline-offset-2",children:"Awesome-Android-Reverse-Engineering"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:162,columnNumber:16},this)," 完整中文化整理, 涵盖工具链、课程资源、专业名词解释和底层原理剖析。"]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:161,columnNumber:11},this),h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:167",className:"max-w-xl mx-auto mb-10",children:h.jsxDEV(OO,{"data-loc":"client/src/pages/Home.tsx:168"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:168,columnNumber:13},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:167,columnNumber:11},this),h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:172",className:"flex flex-wrap items-center justify-center gap-4",children:[h.jsxDEV(xr,{"data-loc":"client/src/pages/Home.tsx:173",href:"/tools",children:h.jsxDEV("button",{"data-loc":"client/src/pages/Home.tsx:174",className:"flex items-center gap-2 bg-primary text-primary-foreground px-6 py-2.5 rounded font-mono text-sm font-semibold hover:bg-primary/90 transition-all hover:shadow-[0_0_20px_oklch(0.85_0.22_152/0.4)]",children:[h.jsxDEV(Eg,{"data-loc":"client/src/pages/Home.tsx:175",className:"w-4 h-4"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:175,columnNumber:17},this),"浏览工具库",h.jsxDEV(ZN,{"data-loc":"client/src/pages/Home.tsx:177",className:"w-4 h-4"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:177,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:174,columnNumber:15},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:173,columnNumber:13},this),h.jsxDEV(xr,{"data-loc":"client/src/pages/Home.tsx:180",href:"/glossary",children:h.jsxDEV("button",{"data-loc":"client/src/pages/Home.tsx:181",className:"flex items-center gap-2 border border-border text-foreground px-6 py-2.5 rounded font-mono text-sm font-semibold hover:border-accent/50 hover:text-accent transition-all bg-transparent",children:[h.jsxDEV(xg,{"data-loc":"client/src/pages/Home.tsx:182",className:"w-4 h-4"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:182,columnNumber:17},this),"名词解释"]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:181,columnNumber:15},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:180,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:172,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:148,columnNumber:9},this),h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:190",className:"absolute bottom-8 left-1/2 -translate-x-1/2 flex flex-col items-center gap-1 text-muted-foreground/50",children:[h.jsxDEV("span",{"data-loc":"client/src/pages/Home.tsx:191",className:"font-mono text-xs",children:"SCROLL"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:191,columnNumber:11},this),h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:192",className:"w-px h-8 bg-gradient-to-b from-muted-foreground/50 to-transparent"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:192,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:190,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:133,columnNumber:7},this),h.jsxDEV("section",{"data-loc":"client/src/pages/Home.tsx:197",className:"py-12 border-b border-border/50",children:h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:198",className:"container",children:h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:199",className:"grid grid-cols-2 lg:grid-cols-4 gap-4",children:_O.map(r=>h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:201",className:"card-neon rounded p-4 sm:p-6 text-center",children:[h.jsxDEV(r.icon,{"data-loc":"client/src/pages/Home.tsx:202",className:`w-6 h-6 ${r.color} mx-auto mb-2`},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:202,columnNumber:17},this),h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:203",className:`text-2xl sm:text-3xl font-bold font-mono ${r.color} mb-1`,children:r.value},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:203,columnNumber:17},this),h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:204",className:"text-xs text-muted-foreground font-mono",children:r.label},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:204,columnNumber:17},this)]},r.label,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:201,columnNumber:15},this))},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:199,columnNumber:11},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:198,columnNumber:9},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:197,columnNumber:7},this),h.jsxDEV("section",{"data-loc":"client/src/pages/Home.tsx:212",className:"py-16",children:h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:213",className:"container",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:214",className:"mb-10",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:215",className:"font-mono text-xs text-primary mb-2",children:"$ ls -la ./sections/"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:215,columnNumber:13},this),h.jsxDEV("h2",{"data-loc":"client/src/pages/Home.tsx:216",className:"text-2xl sm:text-3xl font-bold",style:{fontFamily:"Rajdhani, sans-serif"},children:"知识体系导航"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:216,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:214,columnNumber:11},this),h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:220",className:"grid sm:grid-cols-2 lg:grid-cols-4 gap-4",children:MO.map(r=>h.jsxDEV(xr,{"data-loc":"client/src/pages/Home.tsx:222",href:r.path,children:h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:223",className:`card-neon rounded p-5 h-full cursor-pointer transition-all duration-300 ${r.borderClass} ${r.glowClass} group`,children:[h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:224",className:"flex items-start justify-between mb-4",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:225",className:"w-10 h-10 rounded border border-border flex items-center justify-center group-hover:border-current transition-colors",children:h.jsxDEV(r.icon,{"data-loc":"client/src/pages/Home.tsx:226",className:"w-5 h-5 text-muted-foreground group-hover:text-foreground transition-colors"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:226,columnNumber:23},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:225,columnNumber:21},this),h.jsxDEV("span",{"data-loc":"client/src/pages/Home.tsx:228",className:`${r.tagClass}`,children:r.count},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:228,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:224,columnNumber:19},this),h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:230",className:"font-mono text-xs text-muted-foreground mb-1",children:r.titleEn},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:230,columnNumber:19},this),h.jsxDEV("h3",{"data-loc":"client/src/pages/Home.tsx:231",className:"text-lg font-bold mb-2",style:{fontFamily:"Rajdhani, sans-serif"},children:r.title},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:231,columnNumber:19},this),h.jsxDEV("p",{"data-loc":"client/src/pages/Home.tsx:232",className:"text-xs text-muted-foreground leading-relaxed mb-4",children:r.desc},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:232,columnNumber:19},this),h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:233",className:"flex items-center gap-1 text-xs font-mono text-muted-foreground group-hover:text-foreground transition-colors",children:[h.jsxDEV("span",{"data-loc":"client/src/pages/Home.tsx:234",children:"进入"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:234,columnNumber:21},this),h.jsxDEV(Pk,{"data-loc":"client/src/pages/Home.tsx:235",className:"w-3 h-3"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:235,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:233,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:223,columnNumber:17},this)},r.path,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:222,columnNumber:15},this))},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:220,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:213,columnNumber:9},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:212,columnNumber:7},this),h.jsxDEV("section",{"data-loc":"client/src/pages/Home.tsx:245",className:"py-16 border-t border-border/50",children:h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:246",className:"container",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:247",className:"mb-10",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:248",className:"font-mono text-xs text-accent mb-2",children:"$ cat ./learning-path.md"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:248,columnNumber:13},this),h.jsxDEV("h2",{"data-loc":"client/src/pages/Home.tsx:249",className:"text-2xl sm:text-3xl font-bold",style:{fontFamily:"Rajdhani, sans-serif"},children:"逆向工程全流程"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:249,columnNumber:13},this),h.jsxDEV("p",{"data-loc":"client/src/pages/Home.tsx:252",className:"text-muted-foreground text-sm mt-2",children:"从环境搭建到高级对抗的完整学习路径"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:252,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:247,columnNumber:11},this),h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:254",className:"grid sm:grid-cols-2 lg:grid-cols-3 gap-4",children:HO.map((r,s)=>h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:256",className:`card-neon rounded p-4 border ${r.bg} transition-all`,children:[h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:257",className:`font-mono text-2xl font-bold ${r.color} mb-2 opacity-60`,children:r.step},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:257,columnNumber:17},this),h.jsxDEV("h3",{"data-loc":"client/src/pages/Home.tsx:258",className:`font-bold text-base mb-1 ${r.color}`,style:{fontFamily:"Rajdhani, sans-serif"},children:r.title},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:258,columnNumber:17},this),h.jsxDEV("p",{"data-loc":"client/src/pages/Home.tsx:259",className:"text-xs text-muted-foreground leading-relaxed",children:r.desc},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:259,columnNumber:17},this)]},s,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:256,columnNumber:15},this))},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:254,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:246,columnNumber:9},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:245,columnNumber:7},this),h.jsxDEV("section",{"data-loc":"client/src/pages/Home.tsx:267",className:"py-16 border-t border-border/50",children:h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:268",className:"container",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:269",className:"flex items-center justify-between mb-10",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:270",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:271",className:"font-mono text-xs text-primary mb-2",children:'$ grep -r "☆" ./tools/ | head -6'},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:271,columnNumber:15},this),h.jsxDEV("h2",{"data-loc":"client/src/pages/Home.tsx:272",className:"text-2xl sm:text-3xl font-bold",style:{fontFamily:"Rajdhani, sans-serif"},children:"推荐工具"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:272,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:270,columnNumber:13},this),h.jsxDEV(xr,{"data-loc":"client/src/pages/Home.tsx:276",href:"/tools",children:h.jsxDEV("button",{"data-loc":"client/src/pages/Home.tsx:277",className:"flex items-center gap-1 text-xs font-mono text-muted-foreground hover:text-primary transition-colors",children:["查看全部 ",h.jsxDEV(ZN,{"data-loc":"client/src/pages/Home.tsx:278",className:"w-3 h-3"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:278,columnNumber:22},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:277,columnNumber:15},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:276,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:269,columnNumber:11},this),h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:282",className:"grid sm:grid-cols-2 lg:grid-cols-3 gap-4",children:jO.map(r=>h.jsxDEV("a",{"data-loc":"client/src/pages/Home.tsx:284",href:r.url,target:"_blank",rel:"noopener noreferrer",children:h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:285",className:"card-neon rounded p-4 h-full group cursor-pointer transition-all duration-300 hover:border-primary/40",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:286",className:"flex items-start justify-between mb-3",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:287",className:"flex items-center gap-2",children:[h.jsxDEV(Ui,{"data-loc":"client/src/pages/Home.tsx:288",className:"w-3.5 h-3.5 text-yellow-400 fill-yellow-400 flex-shrink-0"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:288,columnNumber:23},this),h.jsxDEV("span",{"data-loc":"client/src/pages/Home.tsx:289",className:"font-mono text-sm font-semibold text-foreground group-hover:text-primary transition-colors",children:r.name},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:289,columnNumber:23},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:287,columnNumber:21},this),h.jsxDEV(Vi,{"data-loc":"client/src/pages/Home.tsx:291",className:"w-3.5 h-3.5 text-muted-foreground/50 group-hover:text-muted-foreground transition-colors flex-shrink-0"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:291,columnNumber:21},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:286,columnNumber:19},this),h.jsxDEV("p",{"data-loc":"client/src/pages/Home.tsx:293",className:"text-xs text-muted-foreground leading-relaxed mb-3 line-clamp-2",children:r.descriptionZh},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:293,columnNumber:19},this),h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:294",className:"flex flex-wrap gap-1",children:r.tags.slice(0,3).map(s=>h.jsxDEV("span",{"data-loc":"client/src/pages/Home.tsx:296",className:"tag-green",children:s},s,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:296,columnNumber:23},this))},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:294,columnNumber:19},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:285,columnNumber:17},this)},r.id,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:284,columnNumber:15},this))},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:282,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:268,columnNumber:9},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:267,columnNumber:7},this),h.jsxDEV("footer",{"data-loc":"client/src/pages/Home.tsx:307",className:"border-t border-border/50 py-8",children:h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:308",className:"container",children:h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:309",className:"flex flex-col sm:flex-row items-center justify-between gap-4",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:310",className:"font-mono text-xs text-muted-foreground",children:[h.jsxDEV("span",{"data-loc":"client/src/pages/Home.tsx:311",className:"text-primary",children:"$"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:311,columnNumber:15},this)," 基于"," ",h.jsxDEV("a",{"data-loc":"client/src/pages/Home.tsx:312",href:"https://github.com/user1342/Awesome-Android-Reverse-Engineering",target:"_blank",rel:"noopener noreferrer",className:"text-accent hover:underline",children:"Awesome-Android-Reverse-Engineering"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:312,columnNumber:15},this)," ","中文化 · MIT License"]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:310,columnNumber:13},this),h.jsxDEV("div",{"data-loc":"client/src/pages/Home.tsx:317",className:"font-mono text-xs text-muted-foreground/50",children:"仅供安全研究与学习使用"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:317,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:309,columnNumber:11},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:308,columnNumber:9},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:307,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/Home.tsx",lineNumber:129,columnNumber:5},this)}const PO="https://d2xsxph8kpxj0f.cloudfront.net/310519663328127163/Szg5wZsXwGPKGFVAUxVcW2/tools-banner-YUbPgrNio62xnNv3yYn365.webp",VO={beginner:{label:"入门",class:"tag-green"},intermediate:{label:"中级",class:"tag-cyan"},advanced:{label:"高级",class:"tag-orange"}},UO={free:{label:"免费",class:"tag-green"},commercial:{label:"商业",class:"tag-orange"},freemium:{label:"免费/商业",class:"tag-cyan"}},LO={deobfuscation:"反混淆",networking:"网络分析",instrumentation:"动态插桩"};function BO({tool:r}){const s=r.difficulty?VO[r.difficulty]:null,u=UO[r.type],d=r.subcategory?LO[r.subcategory]:null;return h.jsxDEV("a",{"data-loc":"client/src/pages/ToolsPage.tsx:36",href:r.url,target:"_blank",rel:"noopener noreferrer",className:"block h-full",children:h.jsxDEV("div",{"data-loc":"client/src/pages/ToolsPage.tsx:37",className:"card-neon rounded p-4 h-full group cursor-pointer transition-all duration-300 hover:border-primary/50 hover:shadow-[0_0_20px_oklch(0.85_0.22_152/0.08)] flex flex-col",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/ToolsPage.tsx:39",className:"flex items-start justify-between mb-2",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/ToolsPage.tsx:40",className:"flex items-center gap-2 min-w-0",children:[r.isRecommended&&h.jsxDEV(Ui,{"data-loc":"client/src/pages/ToolsPage.tsx:42",className:"w-3.5 h-3.5 text-yellow-400 fill-yellow-400 flex-shrink-0"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:42,columnNumber:15},this),h.jsxDEV("span",{"data-loc":"client/src/pages/ToolsPage.tsx:44",className:"font-mono text-sm font-bold text-foreground group-hover:text-primary transition-colors truncate",children:r.name},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:44,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:40,columnNumber:11},this),h.jsxDEV(Vi,{"data-loc":"client/src/pages/ToolsPage.tsx:48",className:"w-3.5 h-3.5 text-muted-foreground/40 group-hover:text-muted-foreground transition-colors flex-shrink-0 ml-2"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:48,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:39,columnNumber:9},this),h.jsxDEV("div",{"data-loc":"client/src/pages/ToolsPage.tsx:52",className:"text-xs text-muted-foreground/70 mb-2 font-mono",children:r.nameZh},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:52,columnNumber:9},this),h.jsxDEV("p",{"data-loc":"client/src/pages/ToolsPage.tsx:55",className:"text-xs text-muted-foreground leading-relaxed mb-3 flex-1 line-clamp-3",children:r.descriptionZh},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:55,columnNumber:9},this),h.jsxDEV("div",{"data-loc":"client/src/pages/ToolsPage.tsx:60",className:"flex flex-wrap gap-1 mb-3",children:[r.tags.slice(0,4).map(f=>h.jsxDEV("span",{"data-loc":"client/src/pages/ToolsPage.tsx:62",className:"tag-green",children:f},f,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:62,columnNumber:13},this)),d&&h.jsxDEV("span",{"data-loc":"client/src/pages/ToolsPage.tsx:64",className:"tag-purple",children:d},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:64,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:60,columnNumber:9},this),h.jsxDEV("div",{"data-loc":"client/src/pages/ToolsPage.tsx:68",className:"flex items-center gap-2 pt-2 border-t border-border/50",children:[s&&h.jsxDEV("span",{"data-loc":"client/src/pages/ToolsPage.tsx:69",className:s.class,children:s.label},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:69,columnNumber:20},this),h.jsxDEV("span",{"data-loc":"client/src/pages/ToolsPage.tsx:70",className:u.class,children:u.label},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:70,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:68,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:37,columnNumber:7},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:36,columnNumber:5},this)}function GO(){const[r,s]=H.useState("all"),[u,d]=H.useState(""),[f,g]=H.useState(!1),v=H.useMemo(()=>Nr.filter(N=>{const S=r==="all"||N.category===r,R=!u||N.name.toLowerCase().includes(u.toLowerCase())||N.nameZh.includes(u)||N.descriptionZh.includes(u)||N.tags.some(E=>E.includes(u)),b=!f||N.isRecommended;return S&&R&&b}),[r,u,f]),x=N=>N==="all"?Nr.length:Nr.filter(S=>S.category===N).length;return h.jsxDEV("div",{"data-loc":"client/src/pages/ToolsPage.tsx:101",className:"min-h-screen bg-background",children:[h.jsxDEV(Tc,{"data-loc":"client/src/pages/ToolsPage.tsx:102"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:102,columnNumber:7},this),h.jsxDEV("div",{"data-loc":"client/src/pages/ToolsPage.tsx:105",className:"relative h-40 sm:h-56 mt-14 overflow-hidden",children:[h.jsxDEV("img",{"data-loc":"client/src/pages/ToolsPage.tsx:106",src:PO,alt:"Tools",className:"w-full h-full object-cover object-center"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:106,columnNumber:9},this),h.jsxDEV("div",{"data-loc":"client/src/pages/ToolsPage.tsx:107",className:"absolute inset-0 bg-gradient-to-r from-background via-background/70 to-transparent"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:107,columnNumber:9},this),h.jsxDEV("div",{"data-loc":"client/src/pages/ToolsPage.tsx:108",className:"absolute inset-0 flex items-center",children:h.jsxDEV("div",{"data-loc":"client/src/pages/ToolsPage.tsx:109",className:"container",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/ToolsPage.tsx:110",className:"font-mono text-xs text-primary mb-1",children:"$ ls -la ./tools/"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:110,columnNumber:13},this),h.jsxDEV("h1",{"data-loc":"client/src/pages/ToolsPage.tsx:111",className:"text-3xl sm:text-4xl font-bold text-foreground",style:{fontFamily:"Rajdhani, sans-serif"},children:"工具库"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:111,columnNumber:13},this),h.jsxDEV("p",{"data-loc":"client/src/pages/ToolsPage.tsx:114",className:"text-muted-foreground text-sm mt-1",children:[Nr.length," 个工具 · 完整安卓逆向工具链"]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:114,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:109,columnNumber:11},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:108,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:105,columnNumber:7},this),h.jsxDEV("div",{"data-loc":"client/src/pages/ToolsPage.tsx:121",className:"container py-8",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/ToolsPage.tsx:123",className:"flex flex-col sm:flex-row gap-3 mb-6",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/ToolsPage.tsx:124",className:"relative flex-1",children:[h.jsxDEV(eS,{"data-loc":"client/src/pages/ToolsPage.tsx:125",className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:125,columnNumber:13},this),h.jsxDEV("input",{"data-loc":"client/src/pages/ToolsPage.tsx:126",type:"text",placeholder:"搜索工具名称、功能、标签...",value:u,onChange:N=>d(N.target.value),className:"w-full pl-9 pr-4 py-2 bg-card border border-border rounded font-mono text-sm text-foreground placeholder:text-muted-foreground/50 focus:outline-none focus:border-primary/50 transition-colors"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:126,columnNumber:13},this),u&&h.jsxDEV("button",{"data-loc":"client/src/pages/ToolsPage.tsx:134",onClick:()=>d(""),className:"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",children:h.jsxDEV(Sg,{"data-loc":"client/src/pages/ToolsPage.tsx:135",className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:135,columnNumber:17},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:134,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:124,columnNumber:11},this),h.jsxDEV("button",{"data-loc":"client/src/pages/ToolsPage.tsx:139",onClick:()=>g(!f),className:`flex items-center gap-2 px-4 py-2 rounded border font-mono text-xs transition-all ${f?"border-yellow-400/50 bg-yellow-400/10 text-yellow-400":"border-border text-muted-foreground hover:border-border/80"}`,children:[h.jsxDEV(Ui,{"data-loc":"client/src/pages/ToolsPage.tsx:147",className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:147,columnNumber:13},this),"仅看推荐"]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:139,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:123,columnNumber:9},this),h.jsxDEV("div",{"data-loc":"client/src/pages/ToolsPage.tsx:153",className:"flex flex-wrap gap-2 mb-8",children:TO.map(N=>h.jsxDEV("button",{"data-loc":"client/src/pages/ToolsPage.tsx:155",onClick:()=>s(N.id),className:`flex items-center gap-1.5 px-3 py-1.5 rounded border font-mono text-xs transition-all ${r===N.id?"border-primary/50 bg-primary/10 text-primary":"border-border text-muted-foreground hover:border-border/80 hover:text-foreground"}`,children:[h.jsxDEV(Gk,{"data-loc":"client/src/pages/ToolsPage.tsx:164",className:"w-3 h-3"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:164,columnNumber:15},this),N.label,h.jsxDEV("span",{"data-loc":"client/src/pages/ToolsPage.tsx:166",className:"opacity-60",children:["(",x(N.id),")"]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:166,columnNumber:15},this)]},N.id,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:155,columnNumber:13},this))},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:153,columnNumber:9},this),h.jsxDEV("div",{"data-loc":"client/src/pages/ToolsPage.tsx:172",className:"font-mono text-xs text-muted-foreground mb-4",children:[h.jsxDEV("span",{"data-loc":"client/src/pages/ToolsPage.tsx:173",className:"text-primary",children:"$"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:173,columnNumber:11},this)," 找到 ",h.jsxDEV("span",{"data-loc":"client/src/pages/ToolsPage.tsx:173",className:"text-foreground",children:v.length},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:173,columnNumber:100},this)," 个工具",u&&h.jsxDEV("span",{"data-loc":"client/src/pages/ToolsPage.tsx:174",children:[' · 搜索: "',h.jsxDEV("span",{"data-loc":"client/src/pages/ToolsPage.tsx:174",className:"text-accent",children:u},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:174,columnNumber:87},this),'"']},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:174,columnNumber:27},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:172,columnNumber:9},this),v.length>0?h.jsxDEV("div",{"data-loc":"client/src/pages/ToolsPage.tsx:179",className:"grid sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4",children:v.map(N=>h.jsxDEV(BO,{"data-loc":"client/src/pages/ToolsPage.tsx:181",tool:N},N.id,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:181,columnNumber:15},this))},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:179,columnNumber:11},this):h.jsxDEV("div",{"data-loc":"client/src/pages/ToolsPage.tsx:185",className:"text-center py-20 text-muted-foreground font-mono",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/ToolsPage.tsx:186",className:"text-4xl mb-4",children:"¯\\_(ツ)_/¯"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:186,columnNumber:13},this),h.jsxDEV("div",{"data-loc":"client/src/pages/ToolsPage.tsx:187",children:"$ 未找到匹配的工具"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:187,columnNumber:13},this),h.jsxDEV("button",{"data-loc":"client/src/pages/ToolsPage.tsx:188",onClick:()=>{d(""),s("all"),g(!1)},className:"mt-4 text-xs text-primary hover:underline",children:"清除筛选条件"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:188,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:185,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:121,columnNumber:7},this),h.jsxDEV("footer",{"data-loc":"client/src/pages/ToolsPage.tsx:197",className:"border-t border-border/50 py-6 mt-8",children:h.jsxDEV("div",{"data-loc":"client/src/pages/ToolsPage.tsx:198",className:"container",children:h.jsxDEV("div",{"data-loc":"client/src/pages/ToolsPage.tsx:199",className:"font-mono text-xs text-muted-foreground text-center",children:["数据来源: ",h.jsxDEV("a",{"data-loc":"client/src/pages/ToolsPage.tsx:200",href:"https://github.com/user1342/Awesome-Android-Reverse-Engineering",target:"_blank",rel:"noopener noreferrer",className:"text-accent hover:underline",children:"Awesome-Android-Reverse-Engineering"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:200,columnNumber:19},this)," · 仅供安全研究与学习使用"]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:199,columnNumber:11},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:198,columnNumber:9},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:197,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ToolsPage.tsx",lineNumber:101,columnNumber:5},this)}const ZO=[{id:"all",label:"全部",icon:Xk},{id:"course",label:"课程",icon:wc},{id:"video",label:"视频",icon:tS},{id:"book",label:"书籍",icon:WE}],YO={course:{label:"在线课程",class:"tag-green",icon:wc},video:{label:"视频教程",class:"tag-cyan",icon:tS},book:{label:"书籍",class:"tag-orange",icon:WE}};function eE({course:r}){const s=YO[r.type],u=s.icon;return h.jsxDEV("a",{"data-loc":"client/src/pages/CoursesPage.tsx:27",href:r.url,target:"_blank",rel:"noopener noreferrer",className:"block h-full",children:h.jsxDEV("div",{"data-loc":"client/src/pages/CoursesPage.tsx:28",className:"card-neon rounded p-5 h-full group cursor-pointer transition-all duration-300 hover:border-accent/50 hover:shadow-[0_0_20px_oklch(0.82_0.18_200/0.08)] flex flex-col",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/CoursesPage.tsx:30",className:"flex items-center justify-between mb-4",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/CoursesPage.tsx:31",className:"flex items-center gap-2",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/CoursesPage.tsx:32",className:"w-8 h-8 rounded border border-border flex items-center justify-center group-hover:border-accent/50 transition-colors",children:h.jsxDEV(u,{"data-loc":"client/src/pages/CoursesPage.tsx:33",className:"w-4 h-4 text-muted-foreground group-hover:text-accent transition-colors"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:33,columnNumber:15},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:32,columnNumber:13},this),h.jsxDEV("span",{"data-loc":"client/src/pages/CoursesPage.tsx:35",className:s.class,children:s.label},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:35,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:31,columnNumber:11},this),h.jsxDEV("div",{"data-loc":"client/src/pages/CoursesPage.tsx:37",className:"flex items-center gap-2",children:[r.isRecommended&&h.jsxDEV(Ui,{"data-loc":"client/src/pages/CoursesPage.tsx:39",className:"w-3.5 h-3.5 text-yellow-400 fill-yellow-400"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:39,columnNumber:15},this),h.jsxDEV(Vi,{"data-loc":"client/src/pages/CoursesPage.tsx:41",className:"w-3.5 h-3.5 text-muted-foreground/40 group-hover:text-muted-foreground transition-colors"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:41,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:37,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:30,columnNumber:9},this),h.jsxDEV("h3",{"data-loc":"client/src/pages/CoursesPage.tsx:46",className:"font-bold text-base text-foreground group-hover:text-accent transition-colors mb-1 leading-snug",style:{fontFamily:"Rajdhani, sans-serif"},children:r.titleZh},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:46,columnNumber:9},this),h.jsxDEV("div",{"data-loc":"client/src/pages/CoursesPage.tsx:49",className:"font-mono text-xs text-muted-foreground/60 mb-3 line-clamp-1",children:r.title},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:49,columnNumber:9},this),h.jsxDEV("p",{"data-loc":"client/src/pages/CoursesPage.tsx:52",className:"text-xs text-muted-foreground leading-relaxed mb-4 flex-1",children:r.descriptionZh},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:52,columnNumber:9},this),h.jsxDEV("div",{"data-loc":"client/src/pages/CoursesPage.tsx:57",className:"flex flex-wrap gap-1",children:r.tags.map(d=>h.jsxDEV("span",{"data-loc":"client/src/pages/CoursesPage.tsx:59",className:"tag-cyan",children:d},d,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:59,columnNumber:13},this))},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:57,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:28,columnNumber:7},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:27,columnNumber:5},this)}function XO(){const[r,s]=H.useState("all"),u=Ri.filter(f=>r==="all"||f.type===r),d=Ri.filter(f=>f.isRecommended);return h.jsxDEV("div",{"data-loc":"client/src/pages/CoursesPage.tsx:74",className:"min-h-screen bg-background",children:[h.jsxDEV(Tc,{"data-loc":"client/src/pages/CoursesPage.tsx:75"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:75,columnNumber:7},this),h.jsxDEV("div",{"data-loc":"client/src/pages/CoursesPage.tsx:78",className:"mt-14 border-b border-border/50 py-10",children:h.jsxDEV("div",{"data-loc":"client/src/pages/CoursesPage.tsx:79",className:"container",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/CoursesPage.tsx:80",className:"font-mono text-xs text-accent mb-2",children:"$ cat ./courses/README.md"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:80,columnNumber:11},this),h.jsxDEV("h1",{"data-loc":"client/src/pages/CoursesPage.tsx:81",className:"text-3xl sm:text-4xl font-bold mb-2",style:{fontFamily:"Rajdhani, sans-serif"},children:"课程资源"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:81,columnNumber:11},this),h.jsxDEV("p",{"data-loc":"client/src/pages/CoursesPage.tsx:84",className:"text-muted-foreground text-sm",children:"精选在线课程、视频教程和专业书籍,覆盖安卓逆向工程全技术栈"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:84,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:79,columnNumber:9},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:78,columnNumber:7},this),h.jsxDEV("div",{"data-loc":"client/src/pages/CoursesPage.tsx:90",className:"container py-8",children:[d.length>0&&h.jsxDEV("div",{"data-loc":"client/src/pages/CoursesPage.tsx:93",className:"mb-10",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/CoursesPage.tsx:94",className:"flex items-center gap-2 mb-4",children:[h.jsxDEV(Ui,{"data-loc":"client/src/pages/CoursesPage.tsx:95",className:"w-4 h-4 text-yellow-400 fill-yellow-400"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:95,columnNumber:15},this),h.jsxDEV("span",{"data-loc":"client/src/pages/CoursesPage.tsx:96",className:"font-mono text-xs text-yellow-400 tracking-widest",children:"RECOMMENDED"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:96,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:94,columnNumber:13},this),h.jsxDEV("div",{"data-loc":"client/src/pages/CoursesPage.tsx:98",className:"grid sm:grid-cols-2 lg:grid-cols-3 gap-4",children:d.map(f=>h.jsxDEV(eE,{"data-loc":"client/src/pages/CoursesPage.tsx:100",course:f},f.id,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:100,columnNumber:17},this))},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:98,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:93,columnNumber:11},this),h.jsxDEV("hr",{"data-loc":"client/src/pages/CoursesPage.tsx:107",className:"section-divider mb-8"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:107,columnNumber:9},this),h.jsxDEV("div",{"data-loc":"client/src/pages/CoursesPage.tsx:110",className:"flex gap-2 mb-6",children:ZO.map(f=>{const g=f.id==="all"?Ri.length:Ri.filter(v=>v.type===f.id).length;return h.jsxDEV("button",{"data-loc":"client/src/pages/CoursesPage.tsx:114",onClick:()=>s(f.id),className:`flex items-center gap-1.5 px-3 py-1.5 rounded border font-mono text-xs transition-all ${r===f.id?"border-accent/50 bg-accent/10 text-accent":"border-border text-muted-foreground hover:text-foreground"}`,children:[h.jsxDEV(f.icon,{"data-loc":"client/src/pages/CoursesPage.tsx:123",className:"w-3 h-3"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:123,columnNumber:17},this),f.label,h.jsxDEV("span",{"data-loc":"client/src/pages/CoursesPage.tsx:125",className:"opacity-60",children:["(",g,")"]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:125,columnNumber:17},this)]},f.id,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:114,columnNumber:15},this)})},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:110,columnNumber:9},this),h.jsxDEV("div",{"data-loc":"client/src/pages/CoursesPage.tsx:132",className:"grid sm:grid-cols-2 lg:grid-cols-3 gap-4",children:u.map(f=>h.jsxDEV(eE,{"data-loc":"client/src/pages/CoursesPage.tsx:134",course:f},f.id,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:134,columnNumber:13},this))},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:132,columnNumber:9},this),h.jsxDEV("div",{"data-loc":"client/src/pages/CoursesPage.tsx:139",className:"mt-12 p-5 rounded border border-primary/20 bg-primary/5",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/CoursesPage.tsx:140",className:"font-mono text-xs text-primary mb-2",children:"// 学习路径建议"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:140,columnNumber:11},this),h.jsxDEV("div",{"data-loc":"client/src/pages/CoursesPage.tsx:141",className:"text-sm text-muted-foreground leading-relaxed",children:[h.jsxDEV("span",{"data-loc":"client/src/pages/CoursesPage.tsx:142",className:"text-foreground font-semibold",children:"入门:"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:142,columnNumber:13},this),"先学习 Maddie Stone 的课程 + Azeria Labs ARM 汇编教程,建立基础知识体系。",h.jsxDEV("span",{"data-loc":"client/src/pages/CoursesPage.tsx:143",className:"text-foreground font-semibold ml-3",children:"进阶:"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:143,columnNumber:13},this),"阅读《Android Internals》深入理解系统底层,配合 LaurieWired 视频实战练习。",h.jsxDEV("span",{"data-loc":"client/src/pages/CoursesPage.tsx:144",className:"text-foreground font-semibold ml-3",children:"高级:"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:144,columnNumber:13},this),"《Android Hacker's Handbook》+ 《The IDA Pro Book》,向专业安全研究员进阶。"]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:141,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:139,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:90,columnNumber:7},this),h.jsxDEV("footer",{"data-loc":"client/src/pages/CoursesPage.tsx:149",className:"border-t border-border/50 py-6 mt-8",children:h.jsxDEV("div",{"data-loc":"client/src/pages/CoursesPage.tsx:150",className:"container",children:h.jsxDEV("div",{"data-loc":"client/src/pages/CoursesPage.tsx:151",className:"font-mono text-xs text-muted-foreground text-center",children:["数据来源: ",h.jsxDEV("a",{"data-loc":"client/src/pages/CoursesPage.tsx:152",href:"https://github.com/user1342/Awesome-Android-Reverse-Engineering",target:"_blank",rel:"noopener noreferrer",className:"text-accent hover:underline",children:"Awesome-Android-Reverse-Engineering"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:152,columnNumber:19},this)," · 仅供安全研究与学习使用"]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:151,columnNumber:11},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:150,columnNumber:9},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:149,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/CoursesPage.tsx",lineNumber:74,columnNumber:5},this)}const qO="https://d2xsxph8kpxj0f.cloudfront.net/310519663328127163/Szg5wZsXwGPKGFVAUxVcW2/glossary-bg-QkojYAUTDPUckyQNgwrb8U.webp",$O={基础概念:"tag-green",运行时:"tag-cyan",动态分析:"tag-orange",安全机制:"tag-purple",脱壳技术:"tag-orange",加固技术:"tag-orange",系统机制:"tag-cyan",底层技术:"tag-purple",工具:"tag-green"};function JO({term:r}){const[s,u]=H.useState(!1),d=$O[r.category]||"tag-green";return h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:29",className:`card-neon rounded overflow-hidden transition-all duration-300 ${s?"border-primary/40":""}`,children:[h.jsxDEV("button",{"data-loc":"client/src/pages/GlossaryPage.tsx:31",className:"w-full text-left p-4 sm:p-5 flex items-start justify-between gap-3 group",onClick:()=>u(!s),children:[h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:35",className:"flex-1 min-w-0",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:36",className:"flex flex-wrap items-center gap-2 mb-1",children:[h.jsxDEV("span",{"data-loc":"client/src/pages/GlossaryPage.tsx:37",className:"font-mono text-base font-bold text-foreground group-hover:text-primary transition-colors",children:r.term},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:37,columnNumber:13},this),h.jsxDEV("span",{"data-loc":"client/src/pages/GlossaryPage.tsx:40",className:d,children:r.category},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:40,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:36,columnNumber:11},this),h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:42",className:"font-bold text-sm text-muted-foreground mb-1",style:{fontFamily:"Rajdhani, sans-serif"},children:r.termZh},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:42,columnNumber:11},this),h.jsxDEV("p",{"data-loc":"client/src/pages/GlossaryPage.tsx:45",className:"text-xs text-muted-foreground leading-relaxed",children:r.shortDef},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:45,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:35,columnNumber:9},this),h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:47",className:"flex-shrink-0 mt-1",children:s?h.jsxDEV(Vk,{"data-loc":"client/src/pages/GlossaryPage.tsx:49",className:"w-4 h-4 text-primary"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:49,columnNumber:15},this):h.jsxDEV(zk,{"data-loc":"client/src/pages/GlossaryPage.tsx:50",className:"w-4 h-4 text-muted-foreground group-hover:text-foreground transition-colors"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:50,columnNumber:15},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:47,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:31,columnNumber:7},this),s&&h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:57",className:"border-t border-border/50 p-4 sm:p-5 space-y-4",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:59",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:60",className:"flex items-center gap-2 mb-2",children:[h.jsxDEV(wc,{"data-loc":"client/src/pages/GlossaryPage.tsx:61",className:"w-3.5 h-3.5 text-accent"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:61,columnNumber:15},this),h.jsxDEV("span",{"data-loc":"client/src/pages/GlossaryPage.tsx:62",className:"font-mono text-xs text-accent tracking-widest",children:"DEFINITION"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:62,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:60,columnNumber:13},this),h.jsxDEV("p",{"data-loc":"client/src/pages/GlossaryPage.tsx:64",className:"text-sm text-muted-foreground leading-relaxed",children:r.fullDef},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:64,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:59,columnNumber:11},this),h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:68",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:69",className:"flex items-center gap-2 mb-2",children:[h.jsxDEV(Lk,{"data-loc":"client/src/pages/GlossaryPage.tsx:70",className:"w-3.5 h-3.5 text-primary"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:70,columnNumber:15},this),h.jsxDEV("span",{"data-loc":"client/src/pages/GlossaryPage.tsx:71",className:"font-mono text-xs text-primary tracking-widest",children:"UNDERLYING LOGIC · 底层原理"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:71,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:69,columnNumber:13},this),h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:73",className:"bg-black/40 border border-border/50 rounded p-3",children:h.jsxDEV("pre",{"data-loc":"client/src/pages/GlossaryPage.tsx:74",className:"font-mono text-xs text-foreground/80 whitespace-pre-wrap leading-relaxed overflow-x-auto",children:r.underlyingLogic},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:74,columnNumber:15},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:73,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:68,columnNumber:11},this),r.example&&h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:82",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:83",className:"flex items-center gap-2 mb-2",children:h.jsxDEV("span",{"data-loc":"client/src/pages/GlossaryPage.tsx:84",className:"font-mono text-xs text-yellow-400 tracking-widest",children:"EXAMPLE · 示例"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:84,columnNumber:17},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:83,columnNumber:15},this),h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:86",className:"bg-black/40 border border-yellow-400/20 rounded p-3",children:h.jsxDEV("p",{"data-loc":"client/src/pages/GlossaryPage.tsx:87",className:"font-mono text-xs text-yellow-400/80 leading-relaxed",children:r.example},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:87,columnNumber:17},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:86,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:82,columnNumber:13},this),r.relatedTerms.length>0&&h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:94",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:95",className:"flex items-center gap-2 mb-2",children:[h.jsxDEV($k,{"data-loc":"client/src/pages/GlossaryPage.tsx:96",className:"w-3.5 h-3.5 text-purple-400"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:96,columnNumber:17},this),h.jsxDEV("span",{"data-loc":"client/src/pages/GlossaryPage.tsx:97",className:"font-mono text-xs text-purple-400 tracking-widest",children:"RELATED TERMS · 相关概念"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:97,columnNumber:17},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:95,columnNumber:15},this),h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:99",className:"flex flex-wrap gap-1.5",children:r.relatedTerms.map(f=>h.jsxDEV("span",{"data-loc":"client/src/pages/GlossaryPage.tsx:101",className:"tag-purple",children:f},f,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:101,columnNumber:19},this))},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:99,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:94,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:57,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:29,columnNumber:5},this)}function QO(){const[r,s]=H.useState("全部"),[u,d]=H.useState(""),f=H.useMemo(()=>Ci.filter(g=>{const v=r==="全部"||g.category===r,x=!u||g.term.toLowerCase().includes(u.toLowerCase())||g.termZh.includes(u)||g.shortDef.includes(u)||g.fullDef.includes(u);return v&&x}),[r,u]);return h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:129",className:"min-h-screen bg-background",children:[h.jsxDEV(Tc,{"data-loc":"client/src/pages/GlossaryPage.tsx:130"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:130,columnNumber:7},this),h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:133",className:"relative h-40 sm:h-52 mt-14 overflow-hidden",children:[h.jsxDEV("img",{"data-loc":"client/src/pages/GlossaryPage.tsx:134",src:qO,alt:"Glossary",className:"w-full h-full object-cover object-center"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:134,columnNumber:9},this),h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:135",className:"absolute inset-0 bg-gradient-to-r from-background/95 via-background/70 to-background/40"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:135,columnNumber:9},this),h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:136",className:"absolute inset-0 flex items-center",children:h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:137",className:"container",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:138",className:"font-mono text-xs text-primary mb-1",children:"$ man android-re-glossary"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:138,columnNumber:13},this),h.jsxDEV("h1",{"data-loc":"client/src/pages/GlossaryPage.tsx:139",className:"text-3xl sm:text-4xl font-bold text-foreground",style:{fontFamily:"Rajdhani, sans-serif"},children:"专业名词解释"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:139,columnNumber:13},this),h.jsxDEV("p",{"data-loc":"client/src/pages/GlossaryPage.tsx:142",className:"text-muted-foreground text-sm mt-1",children:[Ci.length," 个词条 · 含底层原理剖析与代码示例"]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:142,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:137,columnNumber:11},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:136,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:133,columnNumber:7},this),h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:149",className:"container py-8",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:151",className:"relative mb-6",children:[h.jsxDEV(eS,{"data-loc":"client/src/pages/GlossaryPage.tsx:152",className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:152,columnNumber:11},this),h.jsxDEV("input",{"data-loc":"client/src/pages/GlossaryPage.tsx:153",type:"text",placeholder:"搜索术语、定义、原理...",value:u,onChange:g=>d(g.target.value),className:"w-full pl-9 pr-10 py-2.5 bg-card border border-border rounded font-mono text-sm text-foreground placeholder:text-muted-foreground/50 focus:outline-none focus:border-primary/50 transition-colors"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:153,columnNumber:11},this),u&&h.jsxDEV("button",{"data-loc":"client/src/pages/GlossaryPage.tsx:161",onClick:()=>d(""),className:"absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",children:h.jsxDEV(Sg,{"data-loc":"client/src/pages/GlossaryPage.tsx:162",className:"w-3.5 h-3.5"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:162,columnNumber:15},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:161,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:151,columnNumber:9},this),h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:168",className:"flex flex-wrap gap-2 mb-8",children:DO.map(g=>{const v=g==="全部"?Ci.length:Ci.filter(x=>x.category===g).length;return h.jsxDEV("button",{"data-loc":"client/src/pages/GlossaryPage.tsx:172",onClick:()=>s(g),className:`px-3 py-1.5 rounded border font-mono text-xs transition-all ${r===g?"border-primary/50 bg-primary/10 text-primary":"border-border text-muted-foreground hover:text-foreground"}`,children:[g," ",h.jsxDEV("span",{"data-loc":"client/src/pages/GlossaryPage.tsx:181",className:"opacity-60",children:["(",v,")"]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:181,columnNumber:23},this)]},g,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:172,columnNumber:15},this)})},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:168,columnNumber:9},this),h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:188",className:"font-mono text-xs text-muted-foreground mb-4",children:[h.jsxDEV("span",{"data-loc":"client/src/pages/GlossaryPage.tsx:189",className:"text-primary",children:"$"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:189,columnNumber:11},this)," 找到 ",h.jsxDEV("span",{"data-loc":"client/src/pages/GlossaryPage.tsx:189",className:"text-foreground",children:f.length},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:189,columnNumber:103},this)," 个词条",u&&h.jsxDEV("span",{"data-loc":"client/src/pages/GlossaryPage.tsx:190",children:[' · 搜索: "',h.jsxDEV("span",{"data-loc":"client/src/pages/GlossaryPage.tsx:190",className:"text-accent",children:u},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:190,columnNumber:90},this),'"']},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:190,columnNumber:27},this),h.jsxDEV("span",{"data-loc":"client/src/pages/GlossaryPage.tsx:191",className:"ml-3 text-muted-foreground/50",children:"点击词条展开底层原理"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:191,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:188,columnNumber:9},this),f.length>0?h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:196",className:"space-y-3",children:f.map(g=>h.jsxDEV(JO,{"data-loc":"client/src/pages/GlossaryPage.tsx:198",term:g},g.id,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:198,columnNumber:15},this))},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:196,columnNumber:11},this):h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:202",className:"text-center py-20 text-muted-foreground font-mono",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:203",className:"text-4xl mb-4",children:"¯\\_(ツ)_/¯"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:203,columnNumber:13},this),h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:204",children:"$ 未找到匹配的词条"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:204,columnNumber:13},this),h.jsxDEV("button",{"data-loc":"client/src/pages/GlossaryPage.tsx:205",onClick:()=>{d(""),s("全部")},className:"mt-4 text-xs text-primary hover:underline",children:"清除筛选条件"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:205,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:202,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:149,columnNumber:7},this),h.jsxDEV("footer",{"data-loc":"client/src/pages/GlossaryPage.tsx:213",className:"border-t border-border/50 py-6 mt-8",children:h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:214",className:"container",children:h.jsxDEV("div",{"data-loc":"client/src/pages/GlossaryPage.tsx:215",className:"font-mono text-xs text-muted-foreground text-center",children:["数据来源: ",h.jsxDEV("a",{"data-loc":"client/src/pages/GlossaryPage.tsx:216",href:"https://github.com/user1342/Awesome-Android-Reverse-Engineering",target:"_blank",rel:"noopener noreferrer",className:"text-accent hover:underline",children:"Awesome-Android-Reverse-Engineering"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:216,columnNumber:19},this)," · 仅供安全研究与学习使用"]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:215,columnNumber:11},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:214,columnNumber:9},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:213,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/GlossaryPage.tsx",lineNumber:129,columnNumber:5},this)}const FO={beginner:{label:"入门",class:"tag-green"},intermediate:{label:"中级",class:"tag-cyan"},advanced:{label:"高级",class:"tag-orange"}};function IO({ctf:r}){const s=FO[r.difficulty];return h.jsxDEV("a",{"data-loc":"client/src/pages/ResourcesPage.tsx:17",href:r.url,target:"_blank",rel:"noopener noreferrer",className:"block h-full",children:h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:18",className:"card-neon rounded p-4 h-full group cursor-pointer transition-all duration-300 hover:border-yellow-400/40 hover:shadow-[0_0_20px_oklch(0.85_0.22_152/0.06)] flex flex-col",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:19",className:"flex items-start justify-between mb-3",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:20",className:"flex items-center gap-2",children:[r.isRecommended&&h.jsxDEV(Ui,{"data-loc":"client/src/pages/ResourcesPage.tsx:21",className:"w-3.5 h-3.5 text-yellow-400 fill-yellow-400 flex-shrink-0"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:21,columnNumber:35},this),h.jsxDEV(Kk,{"data-loc":"client/src/pages/ResourcesPage.tsx:22",className:"w-4 h-4 text-yellow-400/70"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:22,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:20,columnNumber:11},this),h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:24",className:"flex items-center gap-2",children:[h.jsxDEV("span",{"data-loc":"client/src/pages/ResourcesPage.tsx:25",className:s.class,children:s.label},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:25,columnNumber:13},this),h.jsxDEV(Vi,{"data-loc":"client/src/pages/ResourcesPage.tsx:26",className:"w-3.5 h-3.5 text-muted-foreground/40 group-hover:text-muted-foreground transition-colors"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:26,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:24,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:19,columnNumber:9},this),h.jsxDEV("h3",{"data-loc":"client/src/pages/ResourcesPage.tsx:29",className:"font-bold text-sm text-foreground group-hover:text-yellow-400 transition-colors mb-1",style:{fontFamily:"Rajdhani, sans-serif"},children:r.nameZh},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:29,columnNumber:9},this),h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:32",className:"font-mono text-xs text-muted-foreground/60 mb-2",children:r.name},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:32,columnNumber:9},this),h.jsxDEV("p",{"data-loc":"client/src/pages/ResourcesPage.tsx:33",className:"text-xs text-muted-foreground leading-relaxed flex-1",children:r.descriptionZh},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:33,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:18,columnNumber:7},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:17,columnNumber:5},this)}function KO({cs:r}){return h.jsxDEV("a",{"data-loc":"client/src/pages/ResourcesPage.tsx:41",href:r.url,target:"_blank",rel:"noopener noreferrer",className:"block h-full",children:h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:42",className:"card-neon rounded p-4 h-full group cursor-pointer transition-all duration-300 hover:border-accent/40 flex flex-col",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:43",className:"flex items-start justify-between mb-3",children:[h.jsxDEV(Bk,{"data-loc":"client/src/pages/ResourcesPage.tsx:44",className:"w-4 h-4 text-accent/70"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:44,columnNumber:11},this),h.jsxDEV(Vi,{"data-loc":"client/src/pages/ResourcesPage.tsx:45",className:"w-3.5 h-3.5 text-muted-foreground/40 group-hover:text-muted-foreground transition-colors"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:45,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:43,columnNumber:9},this),h.jsxDEV("h3",{"data-loc":"client/src/pages/ResourcesPage.tsx:47",className:"font-bold text-sm text-foreground group-hover:text-accent transition-colors mb-2 leading-snug",style:{fontFamily:"Rajdhani, sans-serif"},children:r.titleZh},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:47,columnNumber:9},this),h.jsxDEV("p",{"data-loc":"client/src/pages/ResourcesPage.tsx:50",className:"text-xs text-muted-foreground leading-relaxed mb-3 flex-1",children:r.description},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:50,columnNumber:9},this),h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:51",className:"flex flex-wrap gap-1",children:r.tags.map(s=>h.jsxDEV("span",{"data-loc":"client/src/pages/ResourcesPage.tsx:53",className:"tag-cyan",children:s},s,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:53,columnNumber:13},this))},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:51,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:42,columnNumber:7},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:41,columnNumber:5},this)}function WO({doc:r}){return h.jsxDEV("a",{"data-loc":"client/src/pages/ResourcesPage.tsx:63",href:r.url,target:"_blank",rel:"noopener noreferrer",className:"block h-full",children:h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:64",className:"card-neon rounded p-4 h-full group cursor-pointer transition-all duration-300 hover:border-primary/40 flex flex-col",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:65",className:"flex items-start justify-between mb-3",children:[h.jsxDEV(Yk,{"data-loc":"client/src/pages/ResourcesPage.tsx:66",className:"w-4 h-4 text-primary/70"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:66,columnNumber:11},this),h.jsxDEV(Vi,{"data-loc":"client/src/pages/ResourcesPage.tsx:67",className:"w-3.5 h-3.5 text-muted-foreground/40 group-hover:text-muted-foreground transition-colors"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:67,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:65,columnNumber:9},this),h.jsxDEV("h3",{"data-loc":"client/src/pages/ResourcesPage.tsx:69",className:"font-bold text-sm text-foreground group-hover:text-primary transition-colors mb-2",style:{fontFamily:"Rajdhani, sans-serif"},children:r.nameZh},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:69,columnNumber:9},this),h.jsxDEV("p",{"data-loc":"client/src/pages/ResourcesPage.tsx:72",className:"text-xs text-muted-foreground leading-relaxed mb-3 flex-1",children:r.description},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:72,columnNumber:9},this),h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:73",className:"flex flex-wrap gap-1",children:r.tags.map(s=>h.jsxDEV("span",{"data-loc":"client/src/pages/ResourcesPage.tsx:75",className:"tag-green",children:s},s,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:75,columnNumber:13},this))},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:73,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:64,columnNumber:7},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:63,columnNumber:5},this)}function e3(){return h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:85",className:"min-h-screen bg-background",children:[h.jsxDEV(Tc,{"data-loc":"client/src/pages/ResourcesPage.tsx:86"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:86,columnNumber:7},this),h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:89",className:"mt-14 border-b border-border/50 py-10",children:h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:90",className:"container",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:91",className:"font-mono text-xs text-purple-400 mb-2",children:"$ find ./resources/ -type f | sort"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:91,columnNumber:11},this),h.jsxDEV("h1",{"data-loc":"client/src/pages/ResourcesPage.tsx:92",className:"text-3xl sm:text-4xl font-bold mb-2",style:{fontFamily:"Rajdhani, sans-serif"},children:"资源文档"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:92,columnNumber:11},this),h.jsxDEV("p",{"data-loc":"client/src/pages/ResourcesPage.tsx:95",className:"text-muted-foreground text-sm",children:"官方文档、实战案例分析、CTF 靶场和实用工具资源"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:95,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:90,columnNumber:9},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:89,columnNumber:7},this),h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:101",className:"container py-8 space-y-12",children:[h.jsxDEV("section",{"data-loc":"client/src/pages/ResourcesPage.tsx:104",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:105",className:"flex items-center gap-3 mb-6",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:106",className:"w-1 h-6 bg-primary rounded"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:106,columnNumber:13},this),h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:107",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:108",className:"font-mono text-xs text-primary mb-0.5",children:"DOCUMENTATION"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:108,columnNumber:15},this),h.jsxDEV("h2",{"data-loc":"client/src/pages/ResourcesPage.tsx:109",className:"text-xl font-bold",style:{fontFamily:"Rajdhani, sans-serif"},children:"官方文档与工具资源"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:109,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:107,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:105,columnNumber:11},this),h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:112",className:"grid sm:grid-cols-2 lg:grid-cols-4 gap-4",children:CO.map(r=>h.jsxDEV(WO,{"data-loc":"client/src/pages/ResourcesPage.tsx:114",doc:r},r.id,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:114,columnNumber:15},this))},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:112,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:104,columnNumber:9},this),h.jsxDEV("hr",{"data-loc":"client/src/pages/ResourcesPage.tsx:119",className:"section-divider"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:119,columnNumber:9},this),h.jsxDEV("section",{"data-loc":"client/src/pages/ResourcesPage.tsx:122",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:123",className:"flex items-center gap-3 mb-6",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:124",className:"w-1 h-6 bg-accent rounded"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:124,columnNumber:13},this),h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:125",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:126",className:"font-mono text-xs text-accent mb-0.5",children:"CASE STUDIES"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:126,columnNumber:15},this),h.jsxDEV("h2",{"data-loc":"client/src/pages/ResourcesPage.tsx:127",className:"text-xl font-bold",style:{fontFamily:"Rajdhani, sans-serif"},children:"实战案例分析"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:127,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:125,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:123,columnNumber:11},this),h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:130",className:"grid sm:grid-cols-2 lg:grid-cols-3 gap-4",children:RO.map(r=>h.jsxDEV(KO,{"data-loc":"client/src/pages/ResourcesPage.tsx:132",cs:r},r.id,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:132,columnNumber:15},this))},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:130,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:122,columnNumber:9},this),h.jsxDEV("hr",{"data-loc":"client/src/pages/ResourcesPage.tsx:137",className:"section-divider"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:137,columnNumber:9},this),h.jsxDEV("section",{"data-loc":"client/src/pages/ResourcesPage.tsx:140",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:141",className:"flex items-center gap-3 mb-6",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:142",className:"w-1 h-6 bg-yellow-400 rounded"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:142,columnNumber:13},this),h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:143",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:144",className:"font-mono text-xs text-yellow-400 mb-0.5",children:"CTF & CRACKMES"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:144,columnNumber:15},this),h.jsxDEV("h2",{"data-loc":"client/src/pages/ResourcesPage.tsx:145",className:"text-xl font-bold",style:{fontFamily:"Rajdhani, sans-serif"},children:"CTF 靶场与练习题"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:145,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:143,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:141,columnNumber:11},this),h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:148",className:"grid sm:grid-cols-2 lg:grid-cols-3 gap-4",children:dS.map(r=>h.jsxDEV(IO,{"data-loc":"client/src/pages/ResourcesPage.tsx:150",ctf:r},r.id,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:150,columnNumber:15},this))},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:148,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:140,columnNumber:9},this),h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:156",className:"p-5 rounded border border-destructive/20 bg-destructive/5",children:h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:157",className:"flex items-start gap-3",children:[h.jsxDEV(Ng,{"data-loc":"client/src/pages/ResourcesPage.tsx:158",className:"w-4 h-4 text-destructive flex-shrink-0 mt-0.5"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:158,columnNumber:13},this),h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:159",children:[h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:160",className:"font-mono text-xs text-destructive mb-1",children:"// 免责声明"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:160,columnNumber:15},this),h.jsxDEV("p",{"data-loc":"client/src/pages/ResourcesPage.tsx:161",className:"text-xs text-muted-foreground leading-relaxed",children:"本知识库所有内容仅供合法的安全研究、学习和教育目的使用。请在获得明确授权的情况下对目标应用进行逆向分析。 未经授权对他人应用进行逆向工程可能违反相关法律法规。使用者需自行承担法律责任。"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:161,columnNumber:15},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:159,columnNumber:13},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:157,columnNumber:11},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:156,columnNumber:9},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:101,columnNumber:7},this),h.jsxDEV("footer",{"data-loc":"client/src/pages/ResourcesPage.tsx:170",className:"border-t border-border/50 py-6 mt-8",children:h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:171",className:"container",children:h.jsxDEV("div",{"data-loc":"client/src/pages/ResourcesPage.tsx:172",className:"font-mono text-xs text-muted-foreground text-center",children:["数据来源: ",h.jsxDEV("a",{"data-loc":"client/src/pages/ResourcesPage.tsx:173",href:"https://github.com/user1342/Awesome-Android-Reverse-Engineering",target:"_blank",rel:"noopener noreferrer",className:"text-accent hover:underline",children:"Awesome-Android-Reverse-Engineering"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:173,columnNumber:19},this)," · 仅供安全研究与学习使用"]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:172,columnNumber:11},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:171,columnNumber:9},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:170,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/pages/ResourcesPage.tsx",lineNumber:85,columnNumber:5},this)}function t3(){return h.jsxDEV(EO,{"data-loc":"client/src/App.tsx:20",children:[h.jsxDEV(vr,{"data-loc":"client/src/App.tsx:21",path:"/",component:zO},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/App.tsx",lineNumber:21,columnNumber:7},this),h.jsxDEV(vr,{"data-loc":"client/src/App.tsx:22",path:"/tools",component:GO},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/App.tsx",lineNumber:22,columnNumber:7},this),h.jsxDEV(vr,{"data-loc":"client/src/App.tsx:23",path:"/courses",component:XO},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/App.tsx",lineNumber:23,columnNumber:7},this),h.jsxDEV(vr,{"data-loc":"client/src/App.tsx:24",path:"/glossary",component:QO},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/App.tsx",lineNumber:24,columnNumber:7},this),h.jsxDEV(vr,{"data-loc":"client/src/App.tsx:25",path:"/resources",component:e3},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/App.tsx",lineNumber:25,columnNumber:7},this),h.jsxDEV(vr,{"data-loc":"client/src/App.tsx:26",path:"/404",component:IN},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/App.tsx",lineNumber:26,columnNumber:7},this),h.jsxDEV(vr,{"data-loc":"client/src/App.tsx:27",component:IN},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/App.tsx",lineNumber:27,columnNumber:7},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/App.tsx",lineNumber:20,columnNumber:5},this)}function n3(){return h.jsxDEV(SO,{"data-loc":"client/src/App.tsx:34",children:h.jsxDEV(AO,{"data-loc":"client/src/App.tsx:35",defaultTheme:"dark",children:h.jsxDEV(Dk,{"data-loc":"client/src/App.tsx:36",children:[h.jsxDEV(zD,{"data-loc":"client/src/App.tsx:37"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/App.tsx",lineNumber:37,columnNumber:11},this),h.jsxDEV(t3,{"data-loc":"client/src/App.tsx:38"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/App.tsx",lineNumber:38,columnNumber:11},this)]},void 0,!0,{fileName:"/home/ubuntu/android-re-wiki/client/src/App.tsx",lineNumber:36,columnNumber:9},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/App.tsx",lineNumber:35,columnNumber:7},this)},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/App.tsx",lineNumber:34,columnNumber:5},this)}nD.createRoot(document.getElementById("root")).render(h.jsxDEV(n3,{"data-loc":"client/src/main.tsx:5"},void 0,!1,{fileName:"/home/ubuntu/android-re-wiki/client/src/main.tsx",lineNumber:5,columnNumber:53},void 0));