Files
codex_auto_register/management.html
T
2026-04-01 16:02:00 +00:00

188 lines
2.2 MiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="zh-CN" translate="no" class="notranslate">
<head>
<meta charset="UTF-8" />
<meta name="google" content="notranslate" />
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20aria-hidden%3D%22true%22%20role%3D%22img%22%20class%3D%22iconify%20iconify--logos%22%20width%3D%2231.88%22%20height%3D%2232%22%20preserveAspectRatio%3D%22xMidYMid%20meet%22%20viewBox%3D%220%200%20256%20257%22%3E%3Cdefs%3E%3ClinearGradient%20id%3D%22IconifyId1813088fe1fbc01fb466%22%20x1%3D%22-.828%25%22%20x2%3D%2257.636%25%22%20y1%3D%227.652%25%22%20y2%3D%2278.411%25%22%3E%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%2341D1FF%22%3E%3C%2Fstop%3E%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23BD34FE%22%3E%3C%2Fstop%3E%3C%2FlinearGradient%3E%3ClinearGradient%20id%3D%22IconifyId1813088fe1fbc01fb467%22%20x1%3D%2243.376%25%22%20x2%3D%2250.316%25%22%20y1%3D%222.242%25%22%20y2%3D%2289.03%25%22%3E%3Cstop%20offset%3D%220%25%22%20stop-color%3D%22%23FFEA83%22%3E%3C%2Fstop%3E%3Cstop%20offset%3D%228.333%25%22%20stop-color%3D%22%23FFDD35%22%3E%3C%2Fstop%3E%3Cstop%20offset%3D%22100%25%22%20stop-color%3D%22%23FFA800%22%3E%3C%2Fstop%3E%3C%2FlinearGradient%3E%3C%2Fdefs%3E%3Cpath%20fill%3D%22url(%23IconifyId1813088fe1fbc01fb466)%22%20d%3D%22M255.153%2037.938L134.897%20252.976c-2.483%204.44-8.862%204.466-11.382.048L.875%2037.958c-2.746-4.814%201.371-10.646%206.827-9.67l120.385%2021.517a6.537%206.537%200%200%200%202.322-.004l117.867-21.483c5.438-.991%209.574%204.796%206.877%209.62Z%22%3E%3C%2Fpath%3E%3Cpath%20fill%3D%22url(%23IconifyId1813088fe1fbc01fb467)%22%20d%3D%22M185.432.063L96.44%2017.501a3.268%203.268%200%200%200-2.634%203.014l-5.474%2092.456a3.268%203.268%200%200%200%203.997%203.378l24.777-5.718c2.318-.535%204.413%201.507%203.936%203.838l-7.361%2036.047c-.495%202.426%201.782%204.5%204.151%203.78l15.304-4.649c2.372-.72%204.652%201.36%204.15%203.788l-11.698%2056.621c-.732%203.542%203.979%205.473%205.943%202.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505%204.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z%22%3E%3C%2Fpath%3E%3C%2Fsvg%3E" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>CLI Proxy API Management Center</title>
<script type="module" crossorigin>var VU=Object.defineProperty;var HU=(t,e,n)=>e in t?VU(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var Lt=(t,e,n)=>HU(t,typeof e!="symbol"?e+"":e,n);function WU(t,e){for(var n=0;n<e.length;n++){const i=e[n];if(typeof i!="string"&&!Array.isArray(i)){for(const s in i)if(s!=="default"&&!(s in t)){const a=Object.getOwnPropertyDescriptor(i,s);a&&Object.defineProperty(t,s,a.get?a:{enumerable:!0,get:()=>i[s]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))i(s);new MutationObserver(s=>{for(const a of s)if(a.type==="childList")for(const o of a.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function n(s){const a={};return s.integrity&&(a.integrity=s.integrity),s.referrerPolicy&&(a.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?a.credentials="include":s.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function i(s){if(s.ep)return;s.ep=!0;const a=n(s);fetch(s.href,a)}})();function a3(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Tx={exports:{}},zh={};var eM;function GU(){if(eM)return zh;eM=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function n(i,s,a){var o=null;if(a!==void 0&&(o=""+a),s.key!==void 0&&(o=""+s.key),"key"in s){a={};for(var r in s)r!=="key"&&(a[r]=s[r])}else a=s;return s=a.ref,{$$typeof:t,type:i,key:o,ref:s!==void 0?s:null,props:a}}return zh.Fragment=e,zh.jsx=n,zh.jsxs=n,zh}var tM;function $U(){return tM||(tM=1,Tx.exports=GU()),Tx.exports}var h=$U(),Mx={exports:{}},Mt={};var nM;function XU(){if(nM)return Mt;nM=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),a=Symbol.for("react.consumer"),o=Symbol.for("react.context"),r=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),f=Symbol.for("react.lazy"),p=Symbol.for("react.activity"),g=Symbol.iterator;function y(D){return D===null||typeof D!="object"?null:(D=g&&D[g]||D["@@iterator"],typeof D=="function"?D:null)}var _={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},v=Object.assign,x={};function k(D,U,$){this.props=D,this.context=U,this.refs=x,this.updater=$||_}k.prototype.isReactComponent={},k.prototype.setState=function(D,U){if(typeof D!="object"&&typeof D!="function"&&D!=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,D,U,"setState")},k.prototype.forceUpdate=function(D){this.updater.enqueueForceUpdate(this,D,"forceUpdate")};function C(){}C.prototype=k.prototype;function N(D,U,$){this.props=D,this.context=U,this.refs=x,this.updater=$||_}var L=N.prototype=new C;L.constructor=N,v(L,k.prototype),L.isPureReactComponent=!0;var M=Array.isArray;function O(){}var T={H:null,A:null,T:null,S:null},P=Object.prototype.hasOwnProperty;function E(D,U,$){var te=$.ref;return{$$typeof:t,type:D,key:U,ref:te!==void 0?te:null,props:$}}function R(D,U){return E(D.type,U,D.props)}function q(D){return typeof D=="object"&&D!==null&&D.$$typeof===t}function I(D){var U={"=":"=0",":":"=2"};return"$"+D.replace(/[=:]/g,function($){return U[$]})}var Y=/\/+/g;function X(D,U){return typeof D=="object"&&D!==null&&D.key!=null?I(""+D.key):U.toString(36)}function K(D){switch(D.status){case"fulfilled":return D.value;case"rejected":throw D.reason;default:switch(typeof D.status=="string"?D.then(O,O):(D.status="pending",D.then(function(U){D.status==="pending"&&(D.status="fulfilled",D.value=U)},function(U){D.status==="pending"&&(D.status="rejected",D.reason=U)})),D.status){case"fulfilled":return D.value;case"rejected":throw D.reason}}throw D}function B(D,U,$,te,ie){var F=typeof D;(F==="undefined"||F==="boolean")&&(D=null);var ee=!1;if(D===null)ee=!0;else switch(F){case"bigint":case"string":case"number":ee=!0;break;case"object":switch(D.$$typeof){case t:case e:ee=!0;break;case f:return ee=D._init,B(ee(D._payload),U,$,te,ie)}}if(ee)return ie=ie(D),ee=te===""?"."+X(D,0):te,M(ie)?($="",ee!=null&&($=ee.replace(Y,"$&/")+"/"),B(ie,U,$,"",function(fe){return fe})):ie!=null&&(q(ie)&&(ie=R(ie,$+(ie.key==null||D&&D.key===ie.key?"":(""+ie.key).replace(Y,"$&/")+"/")+ee)),U.push(ie)),1;ee=0;var J=te===""?".":te+":";if(M(D))for(var re=0;re<D.length;re++)te=D[re],F=J+X(te,re),ee+=B(te,U,$,F,ie);else if(re=y(D),typeof re=="function")for(D=re.call(D),re=0;!(te=D.next()).done;)te=te.value,F=J+X(te,re++),ee+=B(te,U,$,F,ie);else if(F==="object"){if(typeof D.then=="function")return B(K(D),U,$,te,ie);throw U=String(D),Error("Objects are not valid as a React child (found: "+(U==="[object Object]"?"object with keys {"+Object.keys(D).join(", ")+"}":U)+"). If you meant to render a collection of children, use an array instead.")}return ee}function H(D,U,$){if(D==null)return D;var te=[],ie=0;return B(D,te,"","",function(F){return U.call($,F,ie++)}),te}function z(D){if(D._status===-1){var U=D._result;U=U(),U.then(function($){(D._status===0||D._status===-1)&&(D._status=1,D._result=$)},function($){(D._status===0||D._status===-1)&&(D._status=2,D._result=$)}),D._status===-1&&(D._status=0,D._result=U)}if(D._status===1)return D._result.default;throw D._result}var Q=typeof reportError=="function"?reportError:function(D){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var U=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof D=="object"&&D!==null&&typeof D.message=="string"?String(D.message):String(D),error:D});if(!window.dispatchEvent(U))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",D);return}console.error(D)},W={map:H,forEach:function(D,U,$){H(D,function(){U.apply(this,arguments)},$)},count:function(D){var U=0;return H(D,function(){U++}),U},toArray:function(D){return H(D,function(U){return U})||[]},only:function(D){if(!q(D))throw Error("React.Children.only expected to receive a single React element child.");return D}};return Mt.Activity=p,Mt.Children=W,Mt.Component=k,Mt.Fragment=n,Mt.Profiler=s,Mt.PureComponent=N,Mt.StrictMode=i,Mt.Suspense=c,Mt.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=T,Mt.__COMPILER_RUNTIME={__proto__:null,c:function(D){return T.H.useMemoCache(D)}},Mt.cache=function(D){return function(){return D.apply(null,arguments)}},Mt.cacheSignal=function(){return null},Mt.cloneElement=function(D,U,$){if(D==null)throw Error("The argument must be a React element, but you passed "+D+".");var te=v({},D.props),ie=D.key;if(U!=null)for(F in U.key!==void 0&&(ie=""+U.key),U)!P.call(U,F)||F==="key"||F==="__self"||F==="__source"||F==="ref"&&U.ref===void 0||(te[F]=U[F]);var F=arguments.length-2;if(F===1)te.children=$;else if(1<F){for(var ee=Array(F),J=0;J<F;J++)ee[J]=arguments[J+2];te.children=ee}return E(D.type,ie,te)},Mt.createContext=function(D){return D={$$typeof:o,_currentValue:D,_currentValue2:D,_threadCount:0,Provider:null,Consumer:null},D.Provider=D,D.Consumer={$$typeof:a,_context:D},D},Mt.createElement=function(D,U,$){var te,ie={},F=null;if(U!=null)for(te in U.key!==void 0&&(F=""+U.key),U)P.call(U,te)&&te!=="key"&&te!=="__self"&&te!=="__source"&&(ie[te]=U[te]);var ee=arguments.length-2;if(ee===1)ie.children=$;else if(1<ee){for(var J=Array(ee),re=0;re<ee;re++)J[re]=arguments[re+2];ie.children=J}if(D&&D.defaultProps)for(te in ee=D.defaultProps,ee)ie[te]===void 0&&(ie[te]=ee[te]);return E(D,F,ie)},Mt.createRef=function(){return{current:null}},Mt.forwardRef=function(D){return{$$typeof:r,render:D}},Mt.isValidElement=q,Mt.lazy=function(D){return{$$typeof:f,_payload:{_status:-1,_result:D},_init:z}},Mt.memo=function(D,U){return{$$typeof:d,type:D,compare:U===void 0?null:U}},Mt.startTransition=function(D){var U=T.T,$={};T.T=$;try{var te=D(),ie=T.S;ie!==null&&ie($,te),typeof te=="object"&&te!==null&&typeof te.then=="function"&&te.then(O,Q)}catch(F){Q(F)}finally{U!==null&&$.types!==null&&(U.types=$.types),T.T=U}},Mt.unstable_useCacheRefresh=function(){return T.H.useCacheRefresh()},Mt.use=function(D){return T.H.use(D)},Mt.useActionState=function(D,U,$){return T.H.useActionState(D,U,$)},Mt.useCallback=function(D,U){return T.H.useCallback(D,U)},Mt.useContext=function(D){return T.H.useContext(D)},Mt.useDebugValue=function(){},Mt.useDeferredValue=function(D,U){return T.H.useDeferredValue(D,U)},Mt.useEffect=function(D,U){return T.H.useEffect(D,U)},Mt.useEffectEvent=function(D){return T.H.useEffectEvent(D)},Mt.useId=function(){return T.H.useId()},Mt.useImperativeHandle=function(D,U,$){return T.H.useImperativeHandle(D,U,$)},Mt.useInsertionEffect=function(D,U){return T.H.useInsertionEffect(D,U)},Mt.useLayoutEffect=function(D,U){return T.H.useLayoutEffect(D,U)},Mt.useMemo=function(D,U){return T.H.useMemo(D,U)},Mt.useOptimistic=function(D,U){return T.H.useOptimistic(D,U)},Mt.useReducer=function(D,U,$){return T.H.useReducer(D,U,$)},Mt.useRef=function(D){return T.H.useRef(D)},Mt.useState=function(D){return T.H.useState(D)},Mt.useSyncExternalStore=function(D,U,$){return T.H.useSyncExternalStore(D,U,$)},Mt.useTransition=function(){return T.H.useTransition()},Mt.version="19.2.1",Mt}var iM;function wy(){return iM||(iM=1,Mx.exports=XU()),Mx.exports}var S=wy();const xo=a3(S),QU=WU({__proto__:null,default:xo},[S]);var Lx={exports:{}},Kh={},Ox={exports:{}},Px={};var sM;function YU(){return sM||(sM=1,(function(t){function e(B,H){var z=B.length;B.push(H);e:for(;0<z;){var Q=z-1>>>1,W=B[Q];if(0<s(W,H))B[Q]=H,B[z]=W,z=Q;else break e}}function n(B){return B.length===0?null:B[0]}function i(B){if(B.length===0)return null;var H=B[0],z=B.pop();if(z!==H){B[0]=z;e:for(var Q=0,W=B.length,D=W>>>1;Q<D;){var U=2*(Q+1)-1,$=B[U],te=U+1,ie=B[te];if(0>s($,z))te<W&&0>s(ie,$)?(B[Q]=ie,B[te]=z,Q=te):(B[Q]=$,B[U]=z,Q=U);else if(te<W&&0>s(ie,z))B[Q]=ie,B[te]=z,Q=te;else break e}}return H}function s(B,H){var z=B.sortIndex-H.sortIndex;return z!==0?z:B.id-H.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var a=performance;t.unstable_now=function(){return a.now()}}else{var o=Date,r=o.now();t.unstable_now=function(){return o.now()-r}}var c=[],d=[],f=1,p=null,g=3,y=!1,_=!1,v=!1,x=!1,k=typeof setTimeout=="function"?setTimeout:null,C=typeof clearTimeout=="function"?clearTimeout:null,N=typeof setImmediate<"u"?setImmediate:null;function L(B){for(var H=n(d);H!==null;){if(H.callback===null)i(d);else if(H.startTime<=B)i(d),H.sortIndex=H.expirationTime,e(c,H);else break;H=n(d)}}function M(B){if(v=!1,L(B),!_)if(n(c)!==null)_=!0,O||(O=!0,I());else{var H=n(d);H!==null&&K(M,H.startTime-B)}}var O=!1,T=-1,P=5,E=-1;function R(){return x?!0:!(t.unstable_now()-E<P)}function q(){if(x=!1,O){var B=t.unstable_now();E=B;var H=!0;try{e:{_=!1,v&&(v=!1,C(T),T=-1),y=!0;var z=g;try{t:{for(L(B),p=n(c);p!==null&&!(p.expirationTime>B&&R());){var Q=p.callback;if(typeof Q=="function"){p.callback=null,g=p.priorityLevel;var W=Q(p.expirationTime<=B);if(B=t.unstable_now(),typeof W=="function"){p.callback=W,L(B),H=!0;break t}p===n(c)&&i(c),L(B)}else i(c);p=n(c)}if(p!==null)H=!0;else{var D=n(d);D!==null&&K(M,D.startTime-B),H=!1}}break e}finally{p=null,g=z,y=!1}H=void 0}}finally{H?I():O=!1}}}var I;if(typeof N=="function")I=function(){N(q)};else if(typeof MessageChannel<"u"){var Y=new MessageChannel,X=Y.port2;Y.port1.onmessage=q,I=function(){X.postMessage(null)}}else I=function(){k(q,0)};function K(B,H){T=k(function(){B(t.unstable_now())},H)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(B){B.callback=null},t.unstable_forceFrameRate=function(B){0>B||125<B?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):P=0<B?Math.floor(1e3/B):5},t.unstable_getCurrentPriorityLevel=function(){return g},t.unstable_next=function(B){switch(g){case 1:case 2:case 3:var H=3;break;default:H=g}var z=g;g=H;try{return B()}finally{g=z}},t.unstable_requestPaint=function(){x=!0},t.unstable_runWithPriority=function(B,H){switch(B){case 1:case 2:case 3:case 4:case 5:break;default:B=3}var z=g;g=B;try{return H()}finally{g=z}},t.unstable_scheduleCallback=function(B,H,z){var Q=t.unstable_now();switch(typeof z=="object"&&z!==null?(z=z.delay,z=typeof z=="number"&&0<z?Q+z:Q):z=Q,B){case 1:var W=-1;break;case 2:W=250;break;case 5:W=1073741823;break;case 4:W=1e4;break;default:W=5e3}return W=z+W,B={id:f++,callback:H,priorityLevel:B,startTime:z,expirationTime:W,sortIndex:-1},z>Q?(B.sortIndex=z,e(d,B),n(c)===null&&B===n(d)&&(v?(C(T),T=-1):v=!0,K(M,z-Q))):(B.sortIndex=W,e(c,B),_||y||(_=!0,O||(O=!0,I()))),B},t.unstable_shouldYield=R,t.unstable_wrapCallback=function(B){var H=g;return function(){var z=g;g=H;try{return B.apply(this,arguments)}finally{g=z}}}})(Px)),Px}var aM;function JU(){return aM||(aM=1,Ox.exports=YU()),Ox.exports}var Ex={exports:{}},Yi={};var oM;function ZU(){if(oM)return Yi;oM=1;var t=wy();function e(c){var d="https://react.dev/errors/"+c;if(1<arguments.length){d+="?args[]="+encodeURIComponent(arguments[1]);for(var f=2;f<arguments.length;f++)d+="&args[]="+encodeURIComponent(arguments[f])}return"Minified React error #"+c+"; visit "+d+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function n(){}var i={d:{f:n,r:function(){throw Error(e(522))},D:n,C:n,L:n,m:n,X:n,S:n,M:n},p:0,findDOMNode:null},s=Symbol.for("react.portal");function a(c,d,f){var p=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:s,key:p==null?null:""+p,children:c,containerInfo:d,implementation:f}}var o=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function r(c,d){if(c==="font")return"";if(typeof d=="string")return d==="use-credentials"?d:""}return Yi.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=i,Yi.createPortal=function(c,d){var f=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!d||d.nodeType!==1&&d.nodeType!==9&&d.nodeType!==11)throw Error(e(299));return a(c,d,null,f)},Yi.flushSync=function(c){var d=o.T,f=i.p;try{if(o.T=null,i.p=2,c)return c()}finally{o.T=d,i.p=f,i.d.f()}},Yi.preconnect=function(c,d){typeof c=="string"&&(d?(d=d.crossOrigin,d=typeof d=="string"?d==="use-credentials"?d:"":void 0):d=null,i.d.C(c,d))},Yi.prefetchDNS=function(c){typeof c=="string"&&i.d.D(c)},Yi.preinit=function(c,d){if(typeof c=="string"&&d&&typeof d.as=="string"){var f=d.as,p=r(f,d.crossOrigin),g=typeof d.integrity=="string"?d.integrity:void 0,y=typeof d.fetchPriority=="string"?d.fetchPriority:void 0;f==="style"?i.d.S(c,typeof d.precedence=="string"?d.precedence:void 0,{crossOrigin:p,integrity:g,fetchPriority:y}):f==="script"&&i.d.X(c,{crossOrigin:p,integrity:g,fetchPriority:y,nonce:typeof d.nonce=="string"?d.nonce:void 0})}},Yi.preinitModule=function(c,d){if(typeof c=="string")if(typeof d=="object"&&d!==null){if(d.as==null||d.as==="script"){var f=r(d.as,d.crossOrigin);i.d.M(c,{crossOrigin:f,integrity:typeof d.integrity=="string"?d.integrity:void 0,nonce:typeof d.nonce=="string"?d.nonce:void 0})}}else d==null&&i.d.M(c)},Yi.preload=function(c,d){if(typeof c=="string"&&typeof d=="object"&&d!==null&&typeof d.as=="string"){var f=d.as,p=r(f,d.crossOrigin);i.d.L(c,f,{crossOrigin:p,integrity:typeof d.integrity=="string"?d.integrity:void 0,nonce:typeof d.nonce=="string"?d.nonce:void 0,type:typeof d.type=="string"?d.type:void 0,fetchPriority:typeof d.fetchPriority=="string"?d.fetchPriority:void 0,referrerPolicy:typeof d.referrerPolicy=="string"?d.referrerPolicy:void 0,imageSrcSet:typeof d.imageSrcSet=="string"?d.imageSrcSet:void 0,imageSizes:typeof d.imageSizes=="string"?d.imageSizes:void 0,media:typeof d.media=="string"?d.media:void 0})}},Yi.preloadModule=function(c,d){if(typeof c=="string")if(d){var f=r(d.as,d.crossOrigin);i.d.m(c,{as:typeof d.as=="string"&&d.as!=="script"?d.as:void 0,crossOrigin:f,integrity:typeof d.integrity=="string"?d.integrity:void 0})}else i.d.m(c)},Yi.requestFormReset=function(c){i.d.r(c)},Yi.unstable_batchedUpdates=function(c,d){return c(d)},Yi.useFormState=function(c,d,f){return o.H.useFormState(c,d,f)},Yi.useFormStatus=function(){return o.H.useHostTransitionStatus()},Yi.version="19.2.1",Yi}var rM;function o3(){if(rM)return Ex.exports;rM=1;function t(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),Ex.exports=ZU(),Ex.exports}var lM;function e7(){if(lM)return Kh;lM=1;var t=JU(),e=wy(),n=o3();function i(l){var u="https://react.dev/errors/"+l;if(1<arguments.length){u+="?args[]="+encodeURIComponent(arguments[1]);for(var m=2;m<arguments.length;m++)u+="&args[]="+encodeURIComponent(arguments[m])}return"Minified React error #"+l+"; visit "+u+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function s(l){return!(!l||l.nodeType!==1&&l.nodeType!==9&&l.nodeType!==11)}function a(l){var u=l,m=l;if(l.alternate)for(;u.return;)u=u.return;else{l=u;do u=l,(u.flags&4098)!==0&&(m=u.return),l=u.return;while(l)}return u.tag===3?m:null}function o(l){if(l.tag===13){var u=l.memoizedState;if(u===null&&(l=l.alternate,l!==null&&(u=l.memoizedState)),u!==null)return u.dehydrated}return null}function r(l){if(l.tag===31){var u=l.memoizedState;if(u===null&&(l=l.alternate,l!==null&&(u=l.memoizedState)),u!==null)return u.dehydrated}return null}function c(l){if(a(l)!==l)throw Error(i(188))}function d(l){var u=l.alternate;if(!u){if(u=a(l),u===null)throw Error(i(188));return u!==l?null:l}for(var m=l,b=u;;){var w=m.return;if(w===null)break;var A=w.alternate;if(A===null){if(b=w.return,b!==null){m=b;continue}break}if(w.child===A.child){for(A=w.child;A;){if(A===m)return c(w),l;if(A===b)return c(w),u;A=A.sibling}throw Error(i(188))}if(m.return!==b.return)m=w,b=A;else{for(var j=!1,G=w.child;G;){if(G===m){j=!0,m=w,b=A;break}if(G===b){j=!0,b=w,m=A;break}G=G.sibling}if(!j){for(G=A.child;G;){if(G===m){j=!0,m=A,b=w;break}if(G===b){j=!0,b=A,m=w;break}G=G.sibling}if(!j)throw Error(i(189))}}if(m.alternate!==b)throw Error(i(190))}if(m.tag!==3)throw Error(i(188));return m.stateNode.current===m?l:u}function f(l){var u=l.tag;if(u===5||u===26||u===27||u===6)return l;for(l=l.child;l!==null;){if(u=f(l),u!==null)return u;l=l.sibling}return null}var p=Object.assign,g=Symbol.for("react.element"),y=Symbol.for("react.transitional.element"),_=Symbol.for("react.portal"),v=Symbol.for("react.fragment"),x=Symbol.for("react.strict_mode"),k=Symbol.for("react.profiler"),C=Symbol.for("react.consumer"),N=Symbol.for("react.context"),L=Symbol.for("react.forward_ref"),M=Symbol.for("react.suspense"),O=Symbol.for("react.suspense_list"),T=Symbol.for("react.memo"),P=Symbol.for("react.lazy"),E=Symbol.for("react.activity"),R=Symbol.for("react.memo_cache_sentinel"),q=Symbol.iterator;function I(l){return l===null||typeof l!="object"?null:(l=q&&l[q]||l["@@iterator"],typeof l=="function"?l:null)}var Y=Symbol.for("react.client.reference");function X(l){if(l==null)return null;if(typeof l=="function")return l.$$typeof===Y?null:l.displayName||l.name||null;if(typeof l=="string")return l;switch(l){case v:return"Fragment";case k:return"Profiler";case x:return"StrictMode";case M:return"Suspense";case O:return"SuspenseList";case E:return"Activity"}if(typeof l=="object")switch(l.$$typeof){case _:return"Portal";case N:return l.displayName||"Context";case C:return(l._context.displayName||"Context")+".Consumer";case L:var u=l.render;return l=l.displayName,l||(l=u.displayName||u.name||"",l=l!==""?"ForwardRef("+l+")":"ForwardRef"),l;case T:return u=l.displayName||null,u!==null?u:X(l.type)||"Memo";case P:u=l._payload,l=l._init;try{return X(l(u))}catch{}}return null}var K=Array.isArray,B=e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,H=n.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,z={pending:!1,data:null,method:null,action:null},Q=[],W=-1;function D(l){return{current:l}}function U(l){0>W||(l.current=Q[W],Q[W]=null,W--)}function $(l,u){W++,Q[W]=l.current,l.current=u}var te=D(null),ie=D(null),F=D(null),ee=D(null);function J(l,u){switch($(F,u),$(ie,l),$(te,null),u.nodeType){case 9:case 11:l=(l=u.documentElement)&&(l=l.namespaceURI)?wT(l):0;break;default:if(l=u.tagName,u=u.namespaceURI)u=wT(u),l=kT(u,l);else switch(l){case"svg":l=1;break;case"math":l=2;break;default:l=0}}U(te),$(te,l)}function re(){U(te),U(ie),U(F)}function fe(l){l.memoizedState!==null&&$(ee,l);var u=te.current,m=kT(u,l.type);u!==m&&($(ie,l),$(te,m))}function me(l){ie.current===l&&(U(te),U(ie)),ee.current===l&&(U(ee),Ih._currentValue=z)}var de,ne;function Be(l){if(de===void 0)try{throw Error()}catch(m){var u=m.stack.trim().match(/\n( *(at )?)/);de=u&&u[1]||"",ne=-1<m.stack.indexOf(`
at`)?" (<anonymous>)":-1<m.stack.indexOf("@")?"@unknown:0:0":""}return`
`+de+l+ne}var Ke=!1;function Te(l,u){if(!l||Ke)return"";Ke=!0;var m=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var b={DetermineComponentFrameRoot:function(){try{if(u){var Ee=function(){throw Error()};if(Object.defineProperty(Ee.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(Ee,[])}catch(we){var xe=we}Reflect.construct(l,[],Ee)}else{try{Ee.call()}catch(we){xe=we}l.call(Ee.prototype)}}else{try{throw Error()}catch(we){xe=we}(Ee=l())&&typeof Ee.catch=="function"&&Ee.catch(function(){})}}catch(we){if(we&&xe&&typeof we.stack=="string")return[we.stack,xe.stack]}return[null,null]}};b.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var w=Object.getOwnPropertyDescriptor(b.DetermineComponentFrameRoot,"name");w&&w.configurable&&Object.defineProperty(b.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var A=b.DetermineComponentFrameRoot(),j=A[0],G=A[1];if(j&&G){var se=j.split(`
`),ve=G.split(`
`);for(w=b=0;b<se.length&&!se[b].includes("DetermineComponentFrameRoot");)b++;for(;w<ve.length&&!ve[w].includes("DetermineComponentFrameRoot");)w++;if(b===se.length||w===ve.length)for(b=se.length-1,w=ve.length-1;1<=b&&0<=w&&se[b]!==ve[w];)w--;for(;1<=b&&0<=w;b--,w--)if(se[b]!==ve[w]){if(b!==1||w!==1)do if(b--,w--,0>w||se[b]!==ve[w]){var Ne=`
`+se[b].replace(" at new "," at ");return l.displayName&&Ne.includes("<anonymous>")&&(Ne=Ne.replace("<anonymous>",l.displayName)),Ne}while(1<=b&&0<=w);break}}}finally{Ke=!1,Error.prepareStackTrace=m}return(m=l?l.displayName||l.name:"")?Be(m):""}function Qe(l,u){switch(l.tag){case 26:case 27:case 5:return Be(l.type);case 16:return Be("Lazy");case 13:return l.child!==u&&u!==null?Be("Suspense Fallback"):Be("Suspense");case 19:return Be("SuspenseList");case 0:case 15:return Te(l.type,!1);case 11:return Te(l.type.render,!1);case 1:return Te(l.type,!0);case 31:return Be("Activity");default:return""}}function at(l){try{var u="",m=null;do u+=Qe(l,m),m=l,l=l.return;while(l);return u}catch(b){return`
Error generating stack: `+b.message+`
`+b.stack}}var Ce=Object.prototype.hasOwnProperty,ft=t.unstable_scheduleCallback,mt=t.unstable_cancelCallback,kt=t.unstable_shouldYield,Pt=t.unstable_requestPaint,wt=t.unstable_now,Tt=t.unstable_getCurrentPriorityLevel,on=t.unstable_ImmediatePriority,ce=t.unstable_UserBlockingPriority,ye=t.unstable_NormalPriority,Ue=t.unstable_LowPriority,Me=t.unstable_IdlePriority,Ye=t.log,_t=t.unstable_setDisableYieldValue,pt=null,ot=null;function ue(l){if(typeof Ye=="function"&&_t(l),ot&&typeof ot.setStrictMode=="function")try{ot.setStrictMode(pt,l)}catch{}}var qe=Math.clz32?Math.clz32:ei,Ut=Math.log,Ti=Math.LN2;function ei(l){return l>>>=0,l===0?32:31-(Ut(l)/Ti|0)|0}var Rn=256,Xn=262144,un=4194304;function Di(l){var u=l&42;if(u!==0)return u;switch(l&-l){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 l&261888;case 262144:case 524288:case 1048576:case 2097152:return l&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return l&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return l}}function ds(l,u,m){var b=l.pendingLanes;if(b===0)return 0;var w=0,A=l.suspendedLanes,j=l.pingedLanes;l=l.warmLanes;var G=b&134217727;return G!==0?(b=G&~A,b!==0?w=Di(b):(j&=G,j!==0?w=Di(j):m||(m=G&~l,m!==0&&(w=Di(m))))):(G=b&~A,G!==0?w=Di(G):j!==0?w=Di(j):m||(m=b&~l,m!==0&&(w=Di(m)))),w===0?0:u!==0&&u!==w&&(u&A)===0&&(A=w&-w,m=u&-u,A>=m||A===32&&(m&4194048)!==0)?u:w}function ws(l,u){return(l.pendingLanes&~(l.suspendedLanes&~l.pingedLanes)&u)===0}function Le(l,u){switch(l){case 1:case 2:case 4:case 8:case 64:return u+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 u+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function it(){var l=un;return un<<=1,(un&62914560)===0&&(un=4194304),l}function bt(l){for(var u=[],m=0;31>m;m++)u.push(l);return u}function ti(l,u){l.pendingLanes|=u,u!==268435456&&(l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0)}function Ln(l,u,m,b,w,A){var j=l.pendingLanes;l.pendingLanes=m,l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0,l.expiredLanes&=m,l.entangledLanes&=m,l.errorRecoveryDisabledLanes&=m,l.shellSuspendCounter=0;var G=l.entanglements,se=l.expirationTimes,ve=l.hiddenUpdates;for(m=j&~m;0<m;){var Ne=31-qe(m),Ee=1<<Ne;G[Ne]=0,se[Ne]=-1;var xe=ve[Ne];if(xe!==null)for(ve[Ne]=null,Ne=0;Ne<xe.length;Ne++){var we=xe[Ne];we!==null&&(we.lane&=-536870913)}m&=~Ee}b!==0&&ui(l,b,0),A!==0&&w===0&&l.tag!==0&&(l.suspendedLanes|=A&~(j&~u))}function ui(l,u,m){l.pendingLanes|=u,l.suspendedLanes&=~u;var b=31-qe(u);l.entangledLanes|=u,l.entanglements[b]=l.entanglements[b]|1073741824|m&261930}function Z(l,u){var m=l.entangledLanes|=u;for(l=l.entanglements;m;){var b=31-qe(m),w=1<<b;w&u|l[b]&u&&(l[b]|=u),m&=~w}}function oe(l,u){var m=u&-u;return m=(m&42)!==0?1:_e(m),(m&(l.suspendedLanes|u))!==0?0:m}function _e(l){switch(l){case 2:l=1;break;case 8:l=4;break;case 32:l=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:l=128;break;case 268435456:l=134217728;break;default:l=0}return l}function Pe(l){return l&=-l,2<l?8<l?(l&134217727)!==0?32:268435456:8:2}function De(){var l=H.p;return l!==0?l:(l=window.event,l===void 0?32:GT(l.type))}function Je(l,u){var m=H.p;try{return H.p=l,u()}finally{H.p=m}}var ze=Math.random().toString(36).slice(2),Fe="__reactFiber$"+ze,Ve="__reactProps$"+ze,st="__reactContainer$"+ze,ht="__reactEvents$"+ze,ct="__reactListeners$"+ze,qt="__reactHandles$"+ze,zt="__reactResources$"+ze,pn="__reactMarker$"+ze;function On(l){delete l[Fe],delete l[Ve],delete l[ht],delete l[ct],delete l[qt]}function qn(l){var u=l[Fe];if(u)return u;for(var m=l.parentNode;m;){if(u=m[st]||m[Fe]){if(m=u.alternate,u.child!==null||m!==null&&m.child!==null)for(l=OT(l);l!==null;){if(m=l[Fe])return m;l=OT(l)}return u}l=m,m=l.parentNode}return null}function Dt(l){if(l=l[Fe]||l[st]){var u=l.tag;if(u===5||u===6||u===13||u===31||u===26||u===27||u===3)return l}return null}function Qn(l){var u=l.tag;if(u===5||u===26||u===27||u===6)return l.stateNode;throw Error(i(33))}function Fi(l){var u=l[zt];return u||(u=l[zt]={hoistableStyles:new Map,hoistableScripts:new Map}),u}function dn(l){l[pn]=!0}var Xi=new Set,di={};function ks(l,u){Si(l,u),Si(l+"Capture",u)}function Si(l,u){for(di[l]=u,l=0;l<u.length;l++)Xi.add(u[l])}var sa=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]*$"),Io={},Ii={};function Gt(l){return Ce.call(Ii,l)?!0:Ce.call(Io,l)?!1:sa.test(l)?Ii[l]=!0:(Io[l]=!0,!1)}function zn(l,u,m){if(Gt(u))if(m===null)l.removeAttribute(u);else{switch(typeof m){case"undefined":case"function":case"symbol":l.removeAttribute(u);return;case"boolean":var b=u.toLowerCase().slice(0,5);if(b!=="data-"&&b!=="aria-"){l.removeAttribute(u);return}}l.setAttribute(u,""+m)}}function Cs(l,u,m){if(m===null)l.removeAttribute(u);else{switch(typeof m){case"undefined":case"function":case"symbol":case"boolean":l.removeAttribute(u);return}l.setAttribute(u,""+m)}}function hi(l,u,m,b){if(b===null)l.removeAttribute(m);else{switch(typeof b){case"undefined":case"function":case"symbol":case"boolean":l.removeAttribute(m);return}l.setAttributeNS(u,m,""+b)}}function Ht(l){switch(typeof l){case"bigint":case"boolean":case"number":case"string":case"undefined":return l;case"object":return l;default:return""}}function Bo(l){var u=l.type;return(l=l.nodeName)&&l.toLowerCase()==="input"&&(u==="checkbox"||u==="radio")}function Zc(l,u,m){var b=Object.getOwnPropertyDescriptor(l.constructor.prototype,u);if(!l.hasOwnProperty(u)&&typeof b<"u"&&typeof b.get=="function"&&typeof b.set=="function"){var w=b.get,A=b.set;return Object.defineProperty(l,u,{configurable:!0,get:function(){return w.call(this)},set:function(j){m=""+j,A.call(this,j)}}),Object.defineProperty(l,u,{enumerable:b.enumerable}),{getValue:function(){return m},setValue:function(j){m=""+j},stopTracking:function(){l._valueTracker=null,delete l[u]}}}}function Il(l){if(!l._valueTracker){var u=Bo(l)?"checked":"value";l._valueTracker=Zc(l,u,""+l[u])}}function He(l){if(!l)return!1;var u=l._valueTracker;if(!u)return!0;var m=u.getValue(),b="";return l&&(b=Bo(l)?l.checked?"true":"false":l.value),l=b,l!==m?(u.setValue(l),!0):!1}function We(l){if(l=l||(typeof document<"u"?document:void 0),typeof l>"u")return null;try{return l.activeElement||l.body}catch{return l.body}}var Kt=/[\n"\\]/g;function $t(l){return l.replace(Kt,function(u){return"\\"+u.charCodeAt(0).toString(16)+" "})}function Qi(l,u,m,b,w,A,j,G){l.name="",j!=null&&typeof j!="function"&&typeof j!="symbol"&&typeof j!="boolean"?l.type=j:l.removeAttribute("type"),u!=null?j==="number"?(u===0&&l.value===""||l.value!=u)&&(l.value=""+Ht(u)):l.value!==""+Ht(u)&&(l.value=""+Ht(u)):j!=="submit"&&j!=="reset"||l.removeAttribute("value"),u!=null?wb(l,j,Ht(u)):m!=null?wb(l,j,Ht(m)):b!=null&&l.removeAttribute("value"),w==null&&A!=null&&(l.defaultChecked=!!A),w!=null&&(l.checked=w&&typeof w!="function"&&typeof w!="symbol"),G!=null&&typeof G!="function"&&typeof G!="symbol"&&typeof G!="boolean"?l.name=""+Ht(G):l.removeAttribute("name")}function jr(l,u,m,b,w,A,j,G){if(A!=null&&typeof A!="function"&&typeof A!="symbol"&&typeof A!="boolean"&&(l.type=A),u!=null||m!=null){if(!(A!=="submit"&&A!=="reset"||u!=null)){Il(l);return}m=m!=null?""+Ht(m):"",u=u!=null?""+Ht(u):m,G||u===l.value||(l.value=u),l.defaultValue=u}b=b??w,b=typeof b!="function"&&typeof b!="symbol"&&!!b,l.checked=G?l.checked:!!b,l.defaultChecked=!!b,j!=null&&typeof j!="function"&&typeof j!="symbol"&&typeof j!="boolean"&&(l.name=j),Il(l)}function wb(l,u,m){u==="number"&&We(l.ownerDocument)===l||l.defaultValue===""+m||(l.defaultValue=""+m)}function eu(l,u,m,b){if(l=l.options,u){u={};for(var w=0;w<m.length;w++)u["$"+m[w]]=!0;for(m=0;m<l.length;m++)w=u.hasOwnProperty("$"+l[m].value),l[m].selected!==w&&(l[m].selected=w),w&&b&&(l[m].defaultSelected=!0)}else{for(m=""+Ht(m),u=null,w=0;w<l.length;w++){if(l[w].value===m){l[w].selected=!0,b&&(l[w].defaultSelected=!0);return}u!==null||l[w].disabled||(u=l[w])}u!==null&&(u.selected=!0)}}function yC(l,u,m){if(u!=null&&(u=""+Ht(u),u!==l.value&&(l.value=u),m==null)){l.defaultValue!==u&&(l.defaultValue=u);return}l.defaultValue=m!=null?""+Ht(m):""}function bC(l,u,m,b){if(u==null){if(b!=null){if(m!=null)throw Error(i(92));if(K(b)){if(1<b.length)throw Error(i(93));b=b[0]}m=b}m==null&&(m=""),u=m}m=Ht(u),l.defaultValue=m,b=l.textContent,b===m&&b!==""&&b!==null&&(l.value=b),Il(l)}function tu(l,u){if(u){var m=l.firstChild;if(m&&m===l.lastChild&&m.nodeType===3){m.nodeValue=u;return}}l.textContent=u}var BI=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(" "));function vC(l,u,m){var b=u.indexOf("--")===0;m==null||typeof m=="boolean"||m===""?b?l.setProperty(u,""):u==="float"?l.cssFloat="":l[u]="":b?l.setProperty(u,m):typeof m!="number"||m===0||BI.has(u)?u==="float"?l.cssFloat=m:l[u]=(""+m).trim():l[u]=m+"px"}function xC(l,u,m){if(u!=null&&typeof u!="object")throw Error(i(62));if(l=l.style,m!=null){for(var b in m)!m.hasOwnProperty(b)||u!=null&&u.hasOwnProperty(b)||(b.indexOf("--")===0?l.setProperty(b,""):b==="float"?l.cssFloat="":l[b]="");for(var w in u)b=u[w],u.hasOwnProperty(w)&&m[w]!==b&&vC(l,w,b)}else for(var A in u)u.hasOwnProperty(A)&&vC(l,A,u[A])}function kb(l){if(l.indexOf("-")===-1)return!1;switch(l){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var UI=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"]]),qI=/^[\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;function Tp(l){return qI.test(""+l)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":l}function Uo(){}var Cb=null;function Ab(l){return l=l.target||l.srcElement||window,l.correspondingUseElement&&(l=l.correspondingUseElement),l.nodeType===3?l.parentNode:l}var nu=null,iu=null;function SC(l){var u=Dt(l);if(u&&(l=u.stateNode)){var m=l[Ve]||null;e:switch(l=u.stateNode,u.type){case"input":if(Qi(l,m.value,m.defaultValue,m.defaultValue,m.checked,m.defaultChecked,m.type,m.name),u=m.name,m.type==="radio"&&u!=null){for(m=l;m.parentNode;)m=m.parentNode;for(m=m.querySelectorAll('input[name="'+$t(""+u)+'"][type="radio"]'),u=0;u<m.length;u++){var b=m[u];if(b!==l&&b.form===l.form){var w=b[Ve]||null;if(!w)throw Error(i(90));Qi(b,w.value,w.defaultValue,w.defaultValue,w.checked,w.defaultChecked,w.type,w.name)}}for(u=0;u<m.length;u++)b=m[u],b.form===l.form&&He(b)}break e;case"textarea":yC(l,m.value,m.defaultValue);break e;case"select":u=m.value,u!=null&&eu(l,!!m.multiple,u,!1)}}}var Nb=!1;function wC(l,u,m){if(Nb)return l(u,m);Nb=!0;try{var b=l(u);return b}finally{if(Nb=!1,(nu!==null||iu!==null)&&(pg(),nu&&(u=nu,l=iu,iu=nu=null,SC(u),l)))for(u=0;u<l.length;u++)SC(l[u])}}function th(l,u){var m=l.stateNode;if(m===null)return null;var b=m[Ve]||null;if(b===null)return null;m=b[u];e:switch(u){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(b=!b.disabled)||(l=l.type,b=!(l==="button"||l==="input"||l==="select"||l==="textarea")),l=!b;break e;default:l=!1}if(l)return null;if(m&&typeof m!="function")throw Error(i(231,u,typeof m));return m}var qo=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Tb=!1;if(qo)try{var nh={};Object.defineProperty(nh,"passive",{get:function(){Tb=!0}}),window.addEventListener("test",nh,nh),window.removeEventListener("test",nh,nh)}catch{Tb=!1}var Rr=null,Mb=null,Mp=null;function kC(){if(Mp)return Mp;var l,u=Mb,m=u.length,b,w="value"in Rr?Rr.value:Rr.textContent,A=w.length;for(l=0;l<m&&u[l]===w[l];l++);var j=m-l;for(b=1;b<=j&&u[m-b]===w[A-b];b++);return Mp=w.slice(l,1<b?1-b:void 0)}function Lp(l){var u=l.keyCode;return"charCode"in l?(l=l.charCode,l===0&&u===13&&(l=13)):l=u,l===10&&(l=13),32<=l||l===13?l:0}function Op(){return!0}function CC(){return!1}function As(l){function u(m,b,w,A,j){this._reactName=m,this._targetInst=w,this.type=b,this.nativeEvent=A,this.target=j,this.currentTarget=null;for(var G in l)l.hasOwnProperty(G)&&(m=l[G],this[G]=m?m(A):A[G]);return this.isDefaultPrevented=(A.defaultPrevented!=null?A.defaultPrevented:A.returnValue===!1)?Op:CC,this.isPropagationStopped=CC,this}return p(u.prototype,{preventDefault:function(){this.defaultPrevented=!0;var m=this.nativeEvent;m&&(m.preventDefault?m.preventDefault():typeof m.returnValue!="unknown"&&(m.returnValue=!1),this.isDefaultPrevented=Op)},stopPropagation:function(){var m=this.nativeEvent;m&&(m.stopPropagation?m.stopPropagation():typeof m.cancelBubble!="unknown"&&(m.cancelBubble=!0),this.isPropagationStopped=Op)},persist:function(){},isPersistent:Op}),u}var Bl={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(l){return l.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},Pp=As(Bl),ih=p({},Bl,{view:0,detail:0}),zI=As(ih),Lb,Ob,sh,Ep=p({},ih,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Eb,button:0,buttons:0,relatedTarget:function(l){return l.relatedTarget===void 0?l.fromElement===l.srcElement?l.toElement:l.fromElement:l.relatedTarget},movementX:function(l){return"movementX"in l?l.movementX:(l!==sh&&(sh&&l.type==="mousemove"?(Lb=l.screenX-sh.screenX,Ob=l.screenY-sh.screenY):Ob=Lb=0,sh=l),Lb)},movementY:function(l){return"movementY"in l?l.movementY:Ob}}),AC=As(Ep),KI=p({},Ep,{dataTransfer:0}),VI=As(KI),HI=p({},ih,{relatedTarget:0}),Pb=As(HI),WI=p({},Bl,{animationName:0,elapsedTime:0,pseudoElement:0}),GI=As(WI),$I=p({},Bl,{clipboardData:function(l){return"clipboardData"in l?l.clipboardData:window.clipboardData}}),XI=As($I),QI=p({},Bl,{data:0}),NC=As(QI),YI={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},JI={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"},ZI={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function eB(l){var u=this.nativeEvent;return u.getModifierState?u.getModifierState(l):(l=ZI[l])?!!u[l]:!1}function Eb(){return eB}var tB=p({},ih,{key:function(l){if(l.key){var u=YI[l.key]||l.key;if(u!=="Unidentified")return u}return l.type==="keypress"?(l=Lp(l),l===13?"Enter":String.fromCharCode(l)):l.type==="keydown"||l.type==="keyup"?JI[l.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Eb,charCode:function(l){return l.type==="keypress"?Lp(l):0},keyCode:function(l){return l.type==="keydown"||l.type==="keyup"?l.keyCode:0},which:function(l){return l.type==="keypress"?Lp(l):l.type==="keydown"||l.type==="keyup"?l.keyCode:0}}),nB=As(tB),iB=p({},Ep,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),TC=As(iB),sB=p({},ih,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Eb}),aB=As(sB),oB=p({},Bl,{propertyName:0,elapsedTime:0,pseudoElement:0}),rB=As(oB),lB=p({},Ep,{deltaX:function(l){return"deltaX"in l?l.deltaX:"wheelDeltaX"in l?-l.wheelDeltaX:0},deltaY:function(l){return"deltaY"in l?l.deltaY:"wheelDeltaY"in l?-l.wheelDeltaY:"wheelDelta"in l?-l.wheelDelta:0},deltaZ:0,deltaMode:0}),cB=As(lB),uB=p({},Bl,{newState:0,oldState:0}),dB=As(uB),hB=[9,13,27,32],jb=qo&&"CompositionEvent"in window,ah=null;qo&&"documentMode"in document&&(ah=document.documentMode);var fB=qo&&"TextEvent"in window&&!ah,MC=qo&&(!jb||ah&&8<ah&&11>=ah),LC=" ",OC=!1;function PC(l,u){switch(l){case"keyup":return hB.indexOf(u.keyCode)!==-1;case"keydown":return u.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function EC(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var su=!1;function mB(l,u){switch(l){case"compositionend":return EC(u);case"keypress":return u.which!==32?null:(OC=!0,LC);case"textInput":return l=u.data,l===LC&&OC?null:l;default:return null}}function pB(l,u){if(su)return l==="compositionend"||!jb&&PC(l,u)?(l=kC(),Mp=Mb=Rr=null,su=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(u.ctrlKey||u.altKey||u.metaKey)||u.ctrlKey&&u.altKey){if(u.char&&1<u.char.length)return u.char;if(u.which)return String.fromCharCode(u.which)}return null;case"compositionend":return MC&&u.locale!=="ko"?null:u.data;default:return null}}var gB={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};function jC(l){var u=l&&l.nodeName&&l.nodeName.toLowerCase();return u==="input"?!!gB[l.type]:u==="textarea"}function RC(l,u,m,b){nu?iu?iu.push(b):iu=[b]:nu=b,u=Sg(u,"onChange"),0<u.length&&(m=new Pp("onChange","change",null,m,b),l.push({event:m,listeners:u}))}var oh=null,rh=null;function _B(l){_T(l,0)}function jp(l){var u=Qn(l);if(He(u))return l}function DC(l,u){if(l==="change")return u}var FC=!1;if(qo){var Rb;if(qo){var Db="oninput"in document;if(!Db){var IC=document.createElement("div");IC.setAttribute("oninput","return;"),Db=typeof IC.oninput=="function"}Rb=Db}else Rb=!1;FC=Rb&&(!document.documentMode||9<document.documentMode)}function BC(){oh&&(oh.detachEvent("onpropertychange",UC),rh=oh=null)}function UC(l){if(l.propertyName==="value"&&jp(rh)){var u=[];RC(u,rh,l,Ab(l)),wC(_B,u)}}function yB(l,u,m){l==="focusin"?(BC(),oh=u,rh=m,oh.attachEvent("onpropertychange",UC)):l==="focusout"&&BC()}function bB(l){if(l==="selectionchange"||l==="keyup"||l==="keydown")return jp(rh)}function vB(l,u){if(l==="click")return jp(u)}function xB(l,u){if(l==="input"||l==="change")return jp(u)}function SB(l,u){return l===u&&(l!==0||1/l===1/u)||l!==l&&u!==u}var zs=typeof Object.is=="function"?Object.is:SB;function lh(l,u){if(zs(l,u))return!0;if(typeof l!="object"||l===null||typeof u!="object"||u===null)return!1;var m=Object.keys(l),b=Object.keys(u);if(m.length!==b.length)return!1;for(b=0;b<m.length;b++){var w=m[b];if(!Ce.call(u,w)||!zs(l[w],u[w]))return!1}return!0}function qC(l){for(;l&&l.firstChild;)l=l.firstChild;return l}function zC(l,u){var m=qC(l);l=0;for(var b;m;){if(m.nodeType===3){if(b=l+m.textContent.length,l<=u&&b>=u)return{node:m,offset:u-l};l=b}e:{for(;m;){if(m.nextSibling){m=m.nextSibling;break e}m=m.parentNode}m=void 0}m=qC(m)}}function KC(l,u){return l&&u?l===u?!0:l&&l.nodeType===3?!1:u&&u.nodeType===3?KC(l,u.parentNode):"contains"in l?l.contains(u):l.compareDocumentPosition?!!(l.compareDocumentPosition(u)&16):!1:!1}function VC(l){l=l!=null&&l.ownerDocument!=null&&l.ownerDocument.defaultView!=null?l.ownerDocument.defaultView:window;for(var u=We(l.document);u instanceof l.HTMLIFrameElement;){try{var m=typeof u.contentWindow.location.href=="string"}catch{m=!1}if(m)l=u.contentWindow;else break;u=We(l.document)}return u}function Fb(l){var u=l&&l.nodeName&&l.nodeName.toLowerCase();return u&&(u==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||u==="textarea"||l.contentEditable==="true")}var wB=qo&&"documentMode"in document&&11>=document.documentMode,au=null,Ib=null,ch=null,Bb=!1;function HC(l,u,m){var b=m.window===m?m.document:m.nodeType===9?m:m.ownerDocument;Bb||au==null||au!==We(b)||(b=au,"selectionStart"in b&&Fb(b)?b={start:b.selectionStart,end:b.selectionEnd}:(b=(b.ownerDocument&&b.ownerDocument.defaultView||window).getSelection(),b={anchorNode:b.anchorNode,anchorOffset:b.anchorOffset,focusNode:b.focusNode,focusOffset:b.focusOffset}),ch&&lh(ch,b)||(ch=b,b=Sg(Ib,"onSelect"),0<b.length&&(u=new Pp("onSelect","select",null,u,m),l.push({event:u,listeners:b}),u.target=au)))}function Ul(l,u){var m={};return m[l.toLowerCase()]=u.toLowerCase(),m["Webkit"+l]="webkit"+u,m["Moz"+l]="moz"+u,m}var ou={animationend:Ul("Animation","AnimationEnd"),animationiteration:Ul("Animation","AnimationIteration"),animationstart:Ul("Animation","AnimationStart"),transitionrun:Ul("Transition","TransitionRun"),transitionstart:Ul("Transition","TransitionStart"),transitioncancel:Ul("Transition","TransitionCancel"),transitionend:Ul("Transition","TransitionEnd")},Ub={},WC={};qo&&(WC=document.createElement("div").style,"AnimationEvent"in window||(delete ou.animationend.animation,delete ou.animationiteration.animation,delete ou.animationstart.animation),"TransitionEvent"in window||delete ou.transitionend.transition);function ql(l){if(Ub[l])return Ub[l];if(!ou[l])return l;var u=ou[l],m;for(m in u)if(u.hasOwnProperty(m)&&m in WC)return Ub[l]=u[m];return l}var GC=ql("animationend"),$C=ql("animationiteration"),XC=ql("animationstart"),kB=ql("transitionrun"),CB=ql("transitionstart"),AB=ql("transitioncancel"),QC=ql("transitionend"),YC=new Map,qb="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(" ");qb.push("scrollEnd");function Ra(l,u){YC.set(l,u),ks(u,[l])}var Rp=typeof reportError=="function"?reportError:function(l){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var u=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof l=="object"&&l!==null&&typeof l.message=="string"?String(l.message):String(l),error:l});if(!window.dispatchEvent(u))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",l);return}console.error(l)},aa=[],ru=0,zb=0;function Dp(){for(var l=ru,u=zb=ru=0;u<l;){var m=aa[u];aa[u++]=null;var b=aa[u];aa[u++]=null;var w=aa[u];aa[u++]=null;var A=aa[u];if(aa[u++]=null,b!==null&&w!==null){var j=b.pending;j===null?w.next=w:(w.next=j.next,j.next=w),b.pending=w}A!==0&&JC(m,w,A)}}function Fp(l,u,m,b){aa[ru++]=l,aa[ru++]=u,aa[ru++]=m,aa[ru++]=b,zb|=b,l.lanes|=b,l=l.alternate,l!==null&&(l.lanes|=b)}function Kb(l,u,m,b){return Fp(l,u,m,b),Ip(l)}function zl(l,u){return Fp(l,null,null,u),Ip(l)}function JC(l,u,m){l.lanes|=m;var b=l.alternate;b!==null&&(b.lanes|=m);for(var w=!1,A=l.return;A!==null;)A.childLanes|=m,b=A.alternate,b!==null&&(b.childLanes|=m),A.tag===22&&(l=A.stateNode,l===null||l._visibility&1||(w=!0)),l=A,A=A.return;return l.tag===3?(A=l.stateNode,w&&u!==null&&(w=31-qe(m),l=A.hiddenUpdates,b=l[w],b===null?l[w]=[u]:b.push(u),u.lane=m|536870912),A):null}function Ip(l){if(50<Oh)throw Oh=0,Jv=null,Error(i(185));for(var u=l.return;u!==null;)l=u,u=l.return;return l.tag===3?l.stateNode:null}var lu={};function NB(l,u,m,b){this.tag=l,this.key=m,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=u,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=b,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ks(l,u,m,b){return new NB(l,u,m,b)}function Vb(l){return l=l.prototype,!(!l||!l.isReactComponent)}function zo(l,u){var m=l.alternate;return m===null?(m=Ks(l.tag,u,l.key,l.mode),m.elementType=l.elementType,m.type=l.type,m.stateNode=l.stateNode,m.alternate=l,l.alternate=m):(m.pendingProps=u,m.type=l.type,m.flags=0,m.subtreeFlags=0,m.deletions=null),m.flags=l.flags&65011712,m.childLanes=l.childLanes,m.lanes=l.lanes,m.child=l.child,m.memoizedProps=l.memoizedProps,m.memoizedState=l.memoizedState,m.updateQueue=l.updateQueue,u=l.dependencies,m.dependencies=u===null?null:{lanes:u.lanes,firstContext:u.firstContext},m.sibling=l.sibling,m.index=l.index,m.ref=l.ref,m.refCleanup=l.refCleanup,m}function ZC(l,u){l.flags&=65011714;var m=l.alternate;return m===null?(l.childLanes=0,l.lanes=u,l.child=null,l.subtreeFlags=0,l.memoizedProps=null,l.memoizedState=null,l.updateQueue=null,l.dependencies=null,l.stateNode=null):(l.childLanes=m.childLanes,l.lanes=m.lanes,l.child=m.child,l.subtreeFlags=0,l.deletions=null,l.memoizedProps=m.memoizedProps,l.memoizedState=m.memoizedState,l.updateQueue=m.updateQueue,l.type=m.type,u=m.dependencies,l.dependencies=u===null?null:{lanes:u.lanes,firstContext:u.firstContext}),l}function Bp(l,u,m,b,w,A){var j=0;if(b=l,typeof l=="function")Vb(l)&&(j=1);else if(typeof l=="string")j=PU(l,m,te.current)?26:l==="html"||l==="head"||l==="body"?27:5;else e:switch(l){case E:return l=Ks(31,m,u,w),l.elementType=E,l.lanes=A,l;case v:return Kl(m.children,w,A,u);case x:j=8,w|=24;break;case k:return l=Ks(12,m,u,w|2),l.elementType=k,l.lanes=A,l;case M:return l=Ks(13,m,u,w),l.elementType=M,l.lanes=A,l;case O:return l=Ks(19,m,u,w),l.elementType=O,l.lanes=A,l;default:if(typeof l=="object"&&l!==null)switch(l.$$typeof){case N:j=10;break e;case C:j=9;break e;case L:j=11;break e;case T:j=14;break e;case P:j=16,b=null;break e}j=29,m=Error(i(130,l===null?"null":typeof l,"")),b=null}return u=Ks(j,m,u,w),u.elementType=l,u.type=b,u.lanes=A,u}function Kl(l,u,m,b){return l=Ks(7,l,b,u),l.lanes=m,l}function Hb(l,u,m){return l=Ks(6,l,null,u),l.lanes=m,l}function eA(l){var u=Ks(18,null,null,0);return u.stateNode=l,u}function Wb(l,u,m){return u=Ks(4,l.children!==null?l.children:[],l.key,u),u.lanes=m,u.stateNode={containerInfo:l.containerInfo,pendingChildren:null,implementation:l.implementation},u}var tA=new WeakMap;function oa(l,u){if(typeof l=="object"&&l!==null){var m=tA.get(l);return m!==void 0?m:(u={value:l,source:u,stack:at(u)},tA.set(l,u),u)}return{value:l,source:u,stack:at(u)}}var cu=[],uu=0,Up=null,uh=0,ra=[],la=0,Dr=null,eo=1,to="";function Ko(l,u){cu[uu++]=uh,cu[uu++]=Up,Up=l,uh=u}function nA(l,u,m){ra[la++]=eo,ra[la++]=to,ra[la++]=Dr,Dr=l;var b=eo;l=to;var w=32-qe(b)-1;b&=~(1<<w),m+=1;var A=32-qe(u)+w;if(30<A){var j=w-w%5;A=(b&(1<<j)-1).toString(32),b>>=j,w-=j,eo=1<<32-qe(u)+w|m<<w|b,to=A+l}else eo=1<<A|m<<w|b,to=l}function Gb(l){l.return!==null&&(Ko(l,1),nA(l,1,0))}function $b(l){for(;l===Up;)Up=cu[--uu],cu[uu]=null,uh=cu[--uu],cu[uu]=null;for(;l===Dr;)Dr=ra[--la],ra[la]=null,to=ra[--la],ra[la]=null,eo=ra[--la],ra[la]=null}function iA(l,u){ra[la++]=eo,ra[la++]=to,ra[la++]=Dr,eo=u.id,to=u.overflow,Dr=l}var Bi=null,Dn=null,tn=!1,Fr=null,ca=!1,Xb=Error(i(519));function Ir(l){var u=Error(i(418,1<arguments.length&&arguments[1]!==void 0&&arguments[1]?"text":"HTML",""));throw dh(oa(u,l)),Xb}function sA(l){var u=l.stateNode,m=l.type,b=l.memoizedProps;switch(u[Fe]=l,u[Ve]=b,m){case"dialog":Qt("cancel",u),Qt("close",u);break;case"iframe":case"object":case"embed":Qt("load",u);break;case"video":case"audio":for(m=0;m<Eh.length;m++)Qt(Eh[m],u);break;case"source":Qt("error",u);break;case"img":case"image":case"link":Qt("error",u),Qt("load",u);break;case"details":Qt("toggle",u);break;case"input":Qt("invalid",u),jr(u,b.value,b.defaultValue,b.checked,b.defaultChecked,b.type,b.name,!0);break;case"select":Qt("invalid",u);break;case"textarea":Qt("invalid",u),bC(u,b.value,b.defaultValue,b.children)}m=b.children,typeof m!="string"&&typeof m!="number"&&typeof m!="bigint"||u.textContent===""+m||b.suppressHydrationWarning===!0||xT(u.textContent,m)?(b.popover!=null&&(Qt("beforetoggle",u),Qt("toggle",u)),b.onScroll!=null&&Qt("scroll",u),b.onScrollEnd!=null&&Qt("scrollend",u),b.onClick!=null&&(u.onclick=Uo),u=!0):u=!1,u||Ir(l,!0)}function aA(l){for(Bi=l.return;Bi;)switch(Bi.tag){case 5:case 31:case 13:ca=!1;return;case 27:case 3:ca=!0;return;default:Bi=Bi.return}}function du(l){if(l!==Bi)return!1;if(!tn)return aA(l),tn=!0,!1;var u=l.tag,m;if((m=u!==3&&u!==27)&&((m=u===5)&&(m=l.type,m=!(m!=="form"&&m!=="button")||fx(l.type,l.memoizedProps)),m=!m),m&&Dn&&Ir(l),aA(l),u===13){if(l=l.memoizedState,l=l!==null?l.dehydrated:null,!l)throw Error(i(317));Dn=LT(l)}else if(u===31){if(l=l.memoizedState,l=l!==null?l.dehydrated:null,!l)throw Error(i(317));Dn=LT(l)}else u===27?(u=Dn,Jr(l.type)?(l=yx,yx=null,Dn=l):Dn=u):Dn=Bi?da(l.stateNode.nextSibling):null;return!0}function Vl(){Dn=Bi=null,tn=!1}function Qb(){var l=Fr;return l!==null&&(Ls===null?Ls=l:Ls.push.apply(Ls,l),Fr=null),l}function dh(l){Fr===null?Fr=[l]:Fr.push(l)}var Yb=D(null),Hl=null,Vo=null;function Br(l,u,m){$(Yb,u._currentValue),u._currentValue=m}function Ho(l){l._currentValue=Yb.current,U(Yb)}function Jb(l,u,m){for(;l!==null;){var b=l.alternate;if((l.childLanes&u)!==u?(l.childLanes|=u,b!==null&&(b.childLanes|=u)):b!==null&&(b.childLanes&u)!==u&&(b.childLanes|=u),l===m)break;l=l.return}}function Zb(l,u,m,b){var w=l.child;for(w!==null&&(w.return=l);w!==null;){var A=w.dependencies;if(A!==null){var j=w.child;A=A.firstContext;e:for(;A!==null;){var G=A;A=w;for(var se=0;se<u.length;se++)if(G.context===u[se]){A.lanes|=m,G=A.alternate,G!==null&&(G.lanes|=m),Jb(A.return,m,l),b||(j=null);break e}A=G.next}}else if(w.tag===18){if(j=w.return,j===null)throw Error(i(341));j.lanes|=m,A=j.alternate,A!==null&&(A.lanes|=m),Jb(j,m,l),j=null}else j=w.child;if(j!==null)j.return=w;else for(j=w;j!==null;){if(j===l){j=null;break}if(w=j.sibling,w!==null){w.return=j.return,j=w;break}j=j.return}w=j}}function hu(l,u,m,b){l=null;for(var w=u,A=!1;w!==null;){if(!A){if((w.flags&524288)!==0)A=!0;else if((w.flags&262144)!==0)break}if(w.tag===10){var j=w.alternate;if(j===null)throw Error(i(387));if(j=j.memoizedProps,j!==null){var G=w.type;zs(w.pendingProps.value,j.value)||(l!==null?l.push(G):l=[G])}}else if(w===ee.current){if(j=w.alternate,j===null)throw Error(i(387));j.memoizedState.memoizedState!==w.memoizedState.memoizedState&&(l!==null?l.push(Ih):l=[Ih])}w=w.return}l!==null&&Zb(u,l,m,b),u.flags|=262144}function qp(l){for(l=l.firstContext;l!==null;){if(!zs(l.context._currentValue,l.memoizedValue))return!0;l=l.next}return!1}function Wl(l){Hl=l,Vo=null,l=l.dependencies,l!==null&&(l.firstContext=null)}function Ui(l){return oA(Hl,l)}function zp(l,u){return Hl===null&&Wl(l),oA(l,u)}function oA(l,u){var m=u._currentValue;if(u={context:u,memoizedValue:m,next:null},Vo===null){if(l===null)throw Error(i(308));Vo=u,l.dependencies={lanes:0,firstContext:u},l.flags|=524288}else Vo=Vo.next=u;return m}var TB=typeof AbortController<"u"?AbortController:function(){var l=[],u=this.signal={aborted:!1,addEventListener:function(m,b){l.push(b)}};this.abort=function(){u.aborted=!0,l.forEach(function(m){return m()})}},MB=t.unstable_scheduleCallback,LB=t.unstable_NormalPriority,fi={$$typeof:N,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function ev(){return{controller:new TB,data:new Map,refCount:0}}function hh(l){l.refCount--,l.refCount===0&&MB(LB,function(){l.controller.abort()})}var fh=null,tv=0,fu=0,mu=null;function OB(l,u){if(fh===null){var m=fh=[];tv=0,fu=sx(),mu={status:"pending",value:void 0,then:function(b){m.push(b)}}}return tv++,u.then(rA,rA),u}function rA(){if(--tv===0&&fh!==null){mu!==null&&(mu.status="fulfilled");var l=fh;fh=null,fu=0,mu=null;for(var u=0;u<l.length;u++)(0,l[u])()}}function PB(l,u){var m=[],b={status:"pending",value:null,reason:null,then:function(w){m.push(w)}};return l.then(function(){b.status="fulfilled",b.value=u;for(var w=0;w<m.length;w++)(0,m[w])(u)},function(w){for(b.status="rejected",b.reason=w,w=0;w<m.length;w++)(0,m[w])(void 0)}),b}var lA=B.S;B.S=function(l,u){HN=wt(),typeof u=="object"&&u!==null&&typeof u.then=="function"&&OB(l,u),lA!==null&&lA(l,u)};var Gl=D(null);function nv(){var l=Gl.current;return l!==null?l:Nn.pooledCache}function Kp(l,u){u===null?$(Gl,Gl.current):$(Gl,u.pool)}function cA(){var l=nv();return l===null?null:{parent:fi._currentValue,pool:l}}var pu=Error(i(460)),iv=Error(i(474)),Vp=Error(i(542)),Hp={then:function(){}};function uA(l){return l=l.status,l==="fulfilled"||l==="rejected"}function dA(l,u,m){switch(m=l[m],m===void 0?l.push(u):m!==u&&(u.then(Uo,Uo),u=m),u.status){case"fulfilled":return u.value;case"rejected":throw l=u.reason,fA(l),l;default:if(typeof u.status=="string")u.then(Uo,Uo);else{if(l=Nn,l!==null&&100<l.shellSuspendCounter)throw Error(i(482));l=u,l.status="pending",l.then(function(b){if(u.status==="pending"){var w=u;w.status="fulfilled",w.value=b}},function(b){if(u.status==="pending"){var w=u;w.status="rejected",w.reason=b}})}switch(u.status){case"fulfilled":return u.value;case"rejected":throw l=u.reason,fA(l),l}throw Xl=u,pu}}function $l(l){try{var u=l._init;return u(l._payload)}catch(m){throw m!==null&&typeof m=="object"&&typeof m.then=="function"?(Xl=m,pu):m}}var Xl=null;function hA(){if(Xl===null)throw Error(i(459));var l=Xl;return Xl=null,l}function fA(l){if(l===pu||l===Vp)throw Error(i(483))}var gu=null,mh=0;function Wp(l){var u=mh;return mh+=1,gu===null&&(gu=[]),dA(gu,l,u)}function ph(l,u){u=u.props.ref,l.ref=u!==void 0?u:null}function Gp(l,u){throw u.$$typeof===g?Error(i(525)):(l=Object.prototype.toString.call(u),Error(i(31,l==="[object Object]"?"object with keys {"+Object.keys(u).join(", ")+"}":l)))}function mA(l){function u(pe,le){if(l){var be=pe.deletions;be===null?(pe.deletions=[le],pe.flags|=16):be.push(le)}}function m(pe,le){if(!l)return null;for(;le!==null;)u(pe,le),le=le.sibling;return null}function b(pe){for(var le=new Map;pe!==null;)pe.key!==null?le.set(pe.key,pe):le.set(pe.index,pe),pe=pe.sibling;return le}function w(pe,le){return pe=zo(pe,le),pe.index=0,pe.sibling=null,pe}function A(pe,le,be){return pe.index=be,l?(be=pe.alternate,be!==null?(be=be.index,be<le?(pe.flags|=67108866,le):be):(pe.flags|=67108866,le)):(pe.flags|=1048576,le)}function j(pe){return l&&pe.alternate===null&&(pe.flags|=67108866),pe}function G(pe,le,be,Oe){return le===null||le.tag!==6?(le=Hb(be,pe.mode,Oe),le.return=pe,le):(le=w(le,be),le.return=pe,le)}function se(pe,le,be,Oe){var yt=be.type;return yt===v?Ne(pe,le,be.props.children,Oe,be.key):le!==null&&(le.elementType===yt||typeof yt=="object"&&yt!==null&&yt.$$typeof===P&&$l(yt)===le.type)?(le=w(le,be.props),ph(le,be),le.return=pe,le):(le=Bp(be.type,be.key,be.props,null,pe.mode,Oe),ph(le,be),le.return=pe,le)}function ve(pe,le,be,Oe){return le===null||le.tag!==4||le.stateNode.containerInfo!==be.containerInfo||le.stateNode.implementation!==be.implementation?(le=Wb(be,pe.mode,Oe),le.return=pe,le):(le=w(le,be.children||[]),le.return=pe,le)}function Ne(pe,le,be,Oe,yt){return le===null||le.tag!==7?(le=Kl(be,pe.mode,Oe,yt),le.return=pe,le):(le=w(le,be),le.return=pe,le)}function Ee(pe,le,be){if(typeof le=="string"&&le!==""||typeof le=="number"||typeof le=="bigint")return le=Hb(""+le,pe.mode,be),le.return=pe,le;if(typeof le=="object"&&le!==null){switch(le.$$typeof){case y:return be=Bp(le.type,le.key,le.props,null,pe.mode,be),ph(be,le),be.return=pe,be;case _:return le=Wb(le,pe.mode,be),le.return=pe,le;case P:return le=$l(le),Ee(pe,le,be)}if(K(le)||I(le))return le=Kl(le,pe.mode,be,null),le.return=pe,le;if(typeof le.then=="function")return Ee(pe,Wp(le),be);if(le.$$typeof===N)return Ee(pe,zp(pe,le),be);Gp(pe,le)}return null}function xe(pe,le,be,Oe){var yt=le!==null?le.key:null;if(typeof be=="string"&&be!==""||typeof be=="number"||typeof be=="bigint")return yt!==null?null:G(pe,le,""+be,Oe);if(typeof be=="object"&&be!==null){switch(be.$$typeof){case y:return be.key===yt?se(pe,le,be,Oe):null;case _:return be.key===yt?ve(pe,le,be,Oe):null;case P:return be=$l(be),xe(pe,le,be,Oe)}if(K(be)||I(be))return yt!==null?null:Ne(pe,le,be,Oe,null);if(typeof be.then=="function")return xe(pe,le,Wp(be),Oe);if(be.$$typeof===N)return xe(pe,le,zp(pe,be),Oe);Gp(pe,be)}return null}function we(pe,le,be,Oe,yt){if(typeof Oe=="string"&&Oe!==""||typeof Oe=="number"||typeof Oe=="bigint")return pe=pe.get(be)||null,G(le,pe,""+Oe,yt);if(typeof Oe=="object"&&Oe!==null){switch(Oe.$$typeof){case y:return pe=pe.get(Oe.key===null?be:Oe.key)||null,se(le,pe,Oe,yt);case _:return pe=pe.get(Oe.key===null?be:Oe.key)||null,ve(le,pe,Oe,yt);case P:return Oe=$l(Oe),we(pe,le,be,Oe,yt)}if(K(Oe)||I(Oe))return pe=pe.get(be)||null,Ne(le,pe,Oe,yt,null);if(typeof Oe.then=="function")return we(pe,le,be,Wp(Oe),yt);if(Oe.$$typeof===N)return we(pe,le,be,zp(le,Oe),yt);Gp(le,Oe)}return null}function rt(pe,le,be,Oe){for(var yt=null,hn=null,ut=le,Ft=le=0,Zt=null;ut!==null&&Ft<be.length;Ft++){ut.index>Ft?(Zt=ut,ut=null):Zt=ut.sibling;var fn=xe(pe,ut,be[Ft],Oe);if(fn===null){ut===null&&(ut=Zt);break}l&&ut&&fn.alternate===null&&u(pe,ut),le=A(fn,le,Ft),hn===null?yt=fn:hn.sibling=fn,hn=fn,ut=Zt}if(Ft===be.length)return m(pe,ut),tn&&Ko(pe,Ft),yt;if(ut===null){for(;Ft<be.length;Ft++)ut=Ee(pe,be[Ft],Oe),ut!==null&&(le=A(ut,le,Ft),hn===null?yt=ut:hn.sibling=ut,hn=ut);return tn&&Ko(pe,Ft),yt}for(ut=b(ut);Ft<be.length;Ft++)Zt=we(ut,pe,Ft,be[Ft],Oe),Zt!==null&&(l&&Zt.alternate!==null&&ut.delete(Zt.key===null?Ft:Zt.key),le=A(Zt,le,Ft),hn===null?yt=Zt:hn.sibling=Zt,hn=Zt);return l&&ut.forEach(function(il){return u(pe,il)}),tn&&Ko(pe,Ft),yt}function St(pe,le,be,Oe){if(be==null)throw Error(i(151));for(var yt=null,hn=null,ut=le,Ft=le=0,Zt=null,fn=be.next();ut!==null&&!fn.done;Ft++,fn=be.next()){ut.index>Ft?(Zt=ut,ut=null):Zt=ut.sibling;var il=xe(pe,ut,fn.value,Oe);if(il===null){ut===null&&(ut=Zt);break}l&&ut&&il.alternate===null&&u(pe,ut),le=A(il,le,Ft),hn===null?yt=il:hn.sibling=il,hn=il,ut=Zt}if(fn.done)return m(pe,ut),tn&&Ko(pe,Ft),yt;if(ut===null){for(;!fn.done;Ft++,fn=be.next())fn=Ee(pe,fn.value,Oe),fn!==null&&(le=A(fn,le,Ft),hn===null?yt=fn:hn.sibling=fn,hn=fn);return tn&&Ko(pe,Ft),yt}for(ut=b(ut);!fn.done;Ft++,fn=be.next())fn=we(ut,pe,Ft,fn.value,Oe),fn!==null&&(l&&fn.alternate!==null&&ut.delete(fn.key===null?Ft:fn.key),le=A(fn,le,Ft),hn===null?yt=fn:hn.sibling=fn,hn=fn);return l&&ut.forEach(function(KU){return u(pe,KU)}),tn&&Ko(pe,Ft),yt}function Cn(pe,le,be,Oe){if(typeof be=="object"&&be!==null&&be.type===v&&be.key===null&&(be=be.props.children),typeof be=="object"&&be!==null){switch(be.$$typeof){case y:e:{for(var yt=be.key;le!==null;){if(le.key===yt){if(yt=be.type,yt===v){if(le.tag===7){m(pe,le.sibling),Oe=w(le,be.props.children),Oe.return=pe,pe=Oe;break e}}else if(le.elementType===yt||typeof yt=="object"&&yt!==null&&yt.$$typeof===P&&$l(yt)===le.type){m(pe,le.sibling),Oe=w(le,be.props),ph(Oe,be),Oe.return=pe,pe=Oe;break e}m(pe,le);break}else u(pe,le);le=le.sibling}be.type===v?(Oe=Kl(be.props.children,pe.mode,Oe,be.key),Oe.return=pe,pe=Oe):(Oe=Bp(be.type,be.key,be.props,null,pe.mode,Oe),ph(Oe,be),Oe.return=pe,pe=Oe)}return j(pe);case _:e:{for(yt=be.key;le!==null;){if(le.key===yt)if(le.tag===4&&le.stateNode.containerInfo===be.containerInfo&&le.stateNode.implementation===be.implementation){m(pe,le.sibling),Oe=w(le,be.children||[]),Oe.return=pe,pe=Oe;break e}else{m(pe,le);break}else u(pe,le);le=le.sibling}Oe=Wb(be,pe.mode,Oe),Oe.return=pe,pe=Oe}return j(pe);case P:return be=$l(be),Cn(pe,le,be,Oe)}if(K(be))return rt(pe,le,be,Oe);if(I(be)){if(yt=I(be),typeof yt!="function")throw Error(i(150));return be=yt.call(be),St(pe,le,be,Oe)}if(typeof be.then=="function")return Cn(pe,le,Wp(be),Oe);if(be.$$typeof===N)return Cn(pe,le,zp(pe,be),Oe);Gp(pe,be)}return typeof be=="string"&&be!==""||typeof be=="number"||typeof be=="bigint"?(be=""+be,le!==null&&le.tag===6?(m(pe,le.sibling),Oe=w(le,be),Oe.return=pe,pe=Oe):(m(pe,le),Oe=Hb(be,pe.mode,Oe),Oe.return=pe,pe=Oe),j(pe)):m(pe,le)}return function(pe,le,be,Oe){try{mh=0;var yt=Cn(pe,le,be,Oe);return gu=null,yt}catch(ut){if(ut===pu||ut===Vp)throw ut;var hn=Ks(29,ut,null,pe.mode);return hn.lanes=Oe,hn.return=pe,hn}finally{}}}var Ql=mA(!0),pA=mA(!1),Ur=!1;function sv(l){l.updateQueue={baseState:l.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function av(l,u){l=l.updateQueue,u.updateQueue===l&&(u.updateQueue={baseState:l.baseState,firstBaseUpdate:l.firstBaseUpdate,lastBaseUpdate:l.lastBaseUpdate,shared:l.shared,callbacks:null})}function qr(l){return{lane:l,tag:0,payload:null,callback:null,next:null}}function zr(l,u,m){var b=l.updateQueue;if(b===null)return null;if(b=b.shared,(gn&2)!==0){var w=b.pending;return w===null?u.next=u:(u.next=w.next,w.next=u),b.pending=u,u=Ip(l),JC(l,null,m),u}return Fp(l,b,u,m),Ip(l)}function gh(l,u,m){if(u=u.updateQueue,u!==null&&(u=u.shared,(m&4194048)!==0)){var b=u.lanes;b&=l.pendingLanes,m|=b,u.lanes=m,Z(l,m)}}function ov(l,u){var m=l.updateQueue,b=l.alternate;if(b!==null&&(b=b.updateQueue,m===b)){var w=null,A=null;if(m=m.firstBaseUpdate,m!==null){do{var j={lane:m.lane,tag:m.tag,payload:m.payload,callback:null,next:null};A===null?w=A=j:A=A.next=j,m=m.next}while(m!==null);A===null?w=A=u:A=A.next=u}else w=A=u;m={baseState:b.baseState,firstBaseUpdate:w,lastBaseUpdate:A,shared:b.shared,callbacks:b.callbacks},l.updateQueue=m;return}l=m.lastBaseUpdate,l===null?m.firstBaseUpdate=u:l.next=u,m.lastBaseUpdate=u}var rv=!1;function _h(){if(rv){var l=mu;if(l!==null)throw l}}function yh(l,u,m,b){rv=!1;var w=l.updateQueue;Ur=!1;var A=w.firstBaseUpdate,j=w.lastBaseUpdate,G=w.shared.pending;if(G!==null){w.shared.pending=null;var se=G,ve=se.next;se.next=null,j===null?A=ve:j.next=ve,j=se;var Ne=l.alternate;Ne!==null&&(Ne=Ne.updateQueue,G=Ne.lastBaseUpdate,G!==j&&(G===null?Ne.firstBaseUpdate=ve:G.next=ve,Ne.lastBaseUpdate=se))}if(A!==null){var Ee=w.baseState;j=0,Ne=ve=se=null,G=A;do{var xe=G.lane&-536870913,we=xe!==G.lane;if(we?(Jt&xe)===xe:(b&xe)===xe){xe!==0&&xe===fu&&(rv=!0),Ne!==null&&(Ne=Ne.next={lane:0,tag:G.tag,payload:G.payload,callback:null,next:null});e:{var rt=l,St=G;xe=u;var Cn=m;switch(St.tag){case 1:if(rt=St.payload,typeof rt=="function"){Ee=rt.call(Cn,Ee,xe);break e}Ee=rt;break e;case 3:rt.flags=rt.flags&-65537|128;case 0:if(rt=St.payload,xe=typeof rt=="function"?rt.call(Cn,Ee,xe):rt,xe==null)break e;Ee=p({},Ee,xe);break e;case 2:Ur=!0}}xe=G.callback,xe!==null&&(l.flags|=64,we&&(l.flags|=8192),we=w.callbacks,we===null?w.callbacks=[xe]:we.push(xe))}else we={lane:xe,tag:G.tag,payload:G.payload,callback:G.callback,next:null},Ne===null?(ve=Ne=we,se=Ee):Ne=Ne.next=we,j|=xe;if(G=G.next,G===null){if(G=w.shared.pending,G===null)break;we=G,G=we.next,we.next=null,w.lastBaseUpdate=we,w.shared.pending=null}}while(!0);Ne===null&&(se=Ee),w.baseState=se,w.firstBaseUpdate=ve,w.lastBaseUpdate=Ne,A===null&&(w.shared.lanes=0),Gr|=j,l.lanes=j,l.memoizedState=Ee}}function gA(l,u){if(typeof l!="function")throw Error(i(191,l));l.call(u)}function _A(l,u){var m=l.callbacks;if(m!==null)for(l.callbacks=null,l=0;l<m.length;l++)gA(m[l],u)}var _u=D(null),$p=D(0);function yA(l,u){l=er,$($p,l),$(_u,u),er=l|u.baseLanes}function lv(){$($p,er),$(_u,_u.current)}function cv(){er=$p.current,U(_u),U($p)}var Vs=D(null),ua=null;function Kr(l){var u=l.alternate;$(ni,ni.current&1),$(Vs,l),ua===null&&(u===null||_u.current!==null||u.memoizedState!==null)&&(ua=l)}function uv(l){$(ni,ni.current),$(Vs,l),ua===null&&(ua=l)}function bA(l){l.tag===22?($(ni,ni.current),$(Vs,l),ua===null&&(ua=l)):Vr()}function Vr(){$(ni,ni.current),$(Vs,Vs.current)}function Hs(l){U(Vs),ua===l&&(ua=null),U(ni)}var ni=D(0);function Xp(l){for(var u=l;u!==null;){if(u.tag===13){var m=u.memoizedState;if(m!==null&&(m=m.dehydrated,m===null||gx(m)||_x(m)))return u}else if(u.tag===19&&(u.memoizedProps.revealOrder==="forwards"||u.memoizedProps.revealOrder==="backwards"||u.memoizedProps.revealOrder==="unstable_legacy-backwards"||u.memoizedProps.revealOrder==="together")){if((u.flags&128)!==0)return u}else if(u.child!==null){u.child.return=u,u=u.child;continue}if(u===l)break;for(;u.sibling===null;){if(u.return===null||u.return===l)return null;u=u.return}u.sibling.return=u.return,u=u.sibling}return null}var Wo=0,Et=null,wn=null,mi=null,Qp=!1,yu=!1,Yl=!1,Yp=0,bh=0,bu=null,EB=0;function Yn(){throw Error(i(321))}function dv(l,u){if(u===null)return!1;for(var m=0;m<u.length&&m<l.length;m++)if(!zs(l[m],u[m]))return!1;return!0}function hv(l,u,m,b,w,A){return Wo=A,Et=u,u.memoizedState=null,u.updateQueue=null,u.lanes=0,B.H=l===null||l.memoizedState===null?nN:Nv,Yl=!1,A=m(b,w),Yl=!1,yu&&(A=xA(u,m,b,w)),vA(l),A}function vA(l){B.H=Sh;var u=wn!==null&&wn.next!==null;if(Wo=0,mi=wn=Et=null,Qp=!1,bh=0,bu=null,u)throw Error(i(300));l===null||pi||(l=l.dependencies,l!==null&&qp(l)&&(pi=!0))}function xA(l,u,m,b){Et=l;var w=0;do{if(yu&&(bu=null),bh=0,yu=!1,25<=w)throw Error(i(301));if(w+=1,mi=wn=null,l.updateQueue!=null){var A=l.updateQueue;A.lastEffect=null,A.events=null,A.stores=null,A.memoCache!=null&&(A.memoCache.index=0)}B.H=iN,A=u(m,b)}while(yu);return A}function jB(){var l=B.H,u=l.useState()[0];return u=typeof u.then=="function"?vh(u):u,l=l.useState()[0],(wn!==null?wn.memoizedState:null)!==l&&(Et.flags|=1024),u}function fv(){var l=Yp!==0;return Yp=0,l}function mv(l,u,m){u.updateQueue=l.updateQueue,u.flags&=-2053,l.lanes&=~m}function pv(l){if(Qp){for(l=l.memoizedState;l!==null;){var u=l.queue;u!==null&&(u.pending=null),l=l.next}Qp=!1}Wo=0,mi=wn=Et=null,yu=!1,bh=Yp=0,bu=null}function hs(){var l={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return mi===null?Et.memoizedState=mi=l:mi=mi.next=l,mi}function ii(){if(wn===null){var l=Et.alternate;l=l!==null?l.memoizedState:null}else l=wn.next;var u=mi===null?Et.memoizedState:mi.next;if(u!==null)mi=u,wn=l;else{if(l===null)throw Et.alternate===null?Error(i(467)):Error(i(310));wn=l,l={memoizedState:wn.memoizedState,baseState:wn.baseState,baseQueue:wn.baseQueue,queue:wn.queue,next:null},mi===null?Et.memoizedState=mi=l:mi=mi.next=l}return mi}function Jp(){return{lastEffect:null,events:null,stores:null,memoCache:null}}function vh(l){var u=bh;return bh+=1,bu===null&&(bu=[]),l=dA(bu,l,u),u=Et,(mi===null?u.memoizedState:mi.next)===null&&(u=u.alternate,B.H=u===null||u.memoizedState===null?nN:Nv),l}function Zp(l){if(l!==null&&typeof l=="object"){if(typeof l.then=="function")return vh(l);if(l.$$typeof===N)return Ui(l)}throw Error(i(438,String(l)))}function gv(l){var u=null,m=Et.updateQueue;if(m!==null&&(u=m.memoCache),u==null){var b=Et.alternate;b!==null&&(b=b.updateQueue,b!==null&&(b=b.memoCache,b!=null&&(u={data:b.data.map(function(w){return w.slice()}),index:0})))}if(u==null&&(u={data:[],index:0}),m===null&&(m=Jp(),Et.updateQueue=m),m.memoCache=u,m=u.data[u.index],m===void 0)for(m=u.data[u.index]=Array(l),b=0;b<l;b++)m[b]=R;return u.index++,m}function Go(l,u){return typeof u=="function"?u(l):u}function eg(l){var u=ii();return _v(u,wn,l)}function _v(l,u,m){var b=l.queue;if(b===null)throw Error(i(311));b.lastRenderedReducer=m;var w=l.baseQueue,A=b.pending;if(A!==null){if(w!==null){var j=w.next;w.next=A.next,A.next=j}u.baseQueue=w=A,b.pending=null}if(A=l.baseState,w===null)l.memoizedState=A;else{u=w.next;var G=j=null,se=null,ve=u,Ne=!1;do{var Ee=ve.lane&-536870913;if(Ee!==ve.lane?(Jt&Ee)===Ee:(Wo&Ee)===Ee){var xe=ve.revertLane;if(xe===0)se!==null&&(se=se.next={lane:0,revertLane:0,gesture:null,action:ve.action,hasEagerState:ve.hasEagerState,eagerState:ve.eagerState,next:null}),Ee===fu&&(Ne=!0);else if((Wo&xe)===xe){ve=ve.next,xe===fu&&(Ne=!0);continue}else Ee={lane:0,revertLane:ve.revertLane,gesture:null,action:ve.action,hasEagerState:ve.hasEagerState,eagerState:ve.eagerState,next:null},se===null?(G=se=Ee,j=A):se=se.next=Ee,Et.lanes|=xe,Gr|=xe;Ee=ve.action,Yl&&m(A,Ee),A=ve.hasEagerState?ve.eagerState:m(A,Ee)}else xe={lane:Ee,revertLane:ve.revertLane,gesture:ve.gesture,action:ve.action,hasEagerState:ve.hasEagerState,eagerState:ve.eagerState,next:null},se===null?(G=se=xe,j=A):se=se.next=xe,Et.lanes|=Ee,Gr|=Ee;ve=ve.next}while(ve!==null&&ve!==u);if(se===null?j=A:se.next=G,!zs(A,l.memoizedState)&&(pi=!0,Ne&&(m=mu,m!==null)))throw m;l.memoizedState=A,l.baseState=j,l.baseQueue=se,b.lastRenderedState=A}return w===null&&(b.lanes=0),[l.memoizedState,b.dispatch]}function yv(l){var u=ii(),m=u.queue;if(m===null)throw Error(i(311));m.lastRenderedReducer=l;var b=m.dispatch,w=m.pending,A=u.memoizedState;if(w!==null){m.pending=null;var j=w=w.next;do A=l(A,j.action),j=j.next;while(j!==w);zs(A,u.memoizedState)||(pi=!0),u.memoizedState=A,u.baseQueue===null&&(u.baseState=A),m.lastRenderedState=A}return[A,b]}function SA(l,u,m){var b=Et,w=ii(),A=tn;if(A){if(m===void 0)throw Error(i(407));m=m()}else m=u();var j=!zs((wn||w).memoizedState,m);if(j&&(w.memoizedState=m,pi=!0),w=w.queue,xv(CA.bind(null,b,w,l),[l]),w.getSnapshot!==u||j||mi!==null&&mi.memoizedState.tag&1){if(b.flags|=2048,vu(9,{destroy:void 0},kA.bind(null,b,w,m,u),null),Nn===null)throw Error(i(349));A||(Wo&127)!==0||wA(b,u,m)}return m}function wA(l,u,m){l.flags|=16384,l={getSnapshot:u,value:m},u=Et.updateQueue,u===null?(u=Jp(),Et.updateQueue=u,u.stores=[l]):(m=u.stores,m===null?u.stores=[l]:m.push(l))}function kA(l,u,m,b){u.value=m,u.getSnapshot=b,AA(u)&&NA(l)}function CA(l,u,m){return m(function(){AA(u)&&NA(l)})}function AA(l){var u=l.getSnapshot;l=l.value;try{var m=u();return!zs(l,m)}catch{return!0}}function NA(l){var u=zl(l,2);u!==null&&Os(u,l,2)}function bv(l){var u=hs();if(typeof l=="function"){var m=l;if(l=m(),Yl){ue(!0);try{m()}finally{ue(!1)}}}return u.memoizedState=u.baseState=l,u.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:Go,lastRenderedState:l},u}function TA(l,u,m,b){return l.baseState=m,_v(l,wn,typeof b=="function"?b:Go)}function RB(l,u,m,b,w){if(ig(l))throw Error(i(485));if(l=u.action,l!==null){var A={payload:w,action:l,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(j){A.listeners.push(j)}};B.T!==null?m(!0):A.isTransition=!1,b(A),m=u.pending,m===null?(A.next=u.pending=A,MA(u,A)):(A.next=m.next,u.pending=m.next=A)}}function MA(l,u){var m=u.action,b=u.payload,w=l.state;if(u.isTransition){var A=B.T,j={};B.T=j;try{var G=m(w,b),se=B.S;se!==null&&se(j,G),LA(l,u,G)}catch(ve){vv(l,u,ve)}finally{A!==null&&j.types!==null&&(A.types=j.types),B.T=A}}else try{A=m(w,b),LA(l,u,A)}catch(ve){vv(l,u,ve)}}function LA(l,u,m){m!==null&&typeof m=="object"&&typeof m.then=="function"?m.then(function(b){OA(l,u,b)},function(b){return vv(l,u,b)}):OA(l,u,m)}function OA(l,u,m){u.status="fulfilled",u.value=m,PA(u),l.state=m,u=l.pending,u!==null&&(m=u.next,m===u?l.pending=null:(m=m.next,u.next=m,MA(l,m)))}function vv(l,u,m){var b=l.pending;if(l.pending=null,b!==null){b=b.next;do u.status="rejected",u.reason=m,PA(u),u=u.next;while(u!==b)}l.action=null}function PA(l){l=l.listeners;for(var u=0;u<l.length;u++)(0,l[u])()}function EA(l,u){return u}function jA(l,u){if(tn){var m=Nn.formState;if(m!==null){e:{var b=Et;if(tn){if(Dn){t:{for(var w=Dn,A=ca;w.nodeType!==8;){if(!A){w=null;break t}if(w=da(w.nextSibling),w===null){w=null;break t}}A=w.data,w=A==="F!"||A==="F"?w:null}if(w){Dn=da(w.nextSibling),b=w.data==="F!";break e}}Ir(b)}b=!1}b&&(u=m[0])}}return m=hs(),m.memoizedState=m.baseState=u,b={pending:null,lanes:0,dispatch:null,lastRenderedReducer:EA,lastRenderedState:u},m.queue=b,m=ZA.bind(null,Et,b),b.dispatch=m,b=bv(!1),A=Av.bind(null,Et,!1,b.queue),b=hs(),w={state:u,dispatch:null,action:l,pending:null},b.queue=w,m=RB.bind(null,Et,w,A,m),w.dispatch=m,b.memoizedState=l,[u,m,!1]}function RA(l){var u=ii();return DA(u,wn,l)}function DA(l,u,m){if(u=_v(l,u,EA)[0],l=eg(Go)[0],typeof u=="object"&&u!==null&&typeof u.then=="function")try{var b=vh(u)}catch(j){throw j===pu?Vp:j}else b=u;u=ii();var w=u.queue,A=w.dispatch;return m!==u.memoizedState&&(Et.flags|=2048,vu(9,{destroy:void 0},DB.bind(null,w,m),null)),[b,A,l]}function DB(l,u){l.action=u}function FA(l){var u=ii(),m=wn;if(m!==null)return DA(u,m,l);ii(),u=u.memoizedState,m=ii();var b=m.queue.dispatch;return m.memoizedState=l,[u,b,!1]}function vu(l,u,m,b){return l={tag:l,create:m,deps:b,inst:u,next:null},u=Et.updateQueue,u===null&&(u=Jp(),Et.updateQueue=u),m=u.lastEffect,m===null?u.lastEffect=l.next=l:(b=m.next,m.next=l,l.next=b,u.lastEffect=l),l}function IA(){return ii().memoizedState}function tg(l,u,m,b){var w=hs();Et.flags|=l,w.memoizedState=vu(1|u,{destroy:void 0},m,b===void 0?null:b)}function ng(l,u,m,b){var w=ii();b=b===void 0?null:b;var A=w.memoizedState.inst;wn!==null&&b!==null&&dv(b,wn.memoizedState.deps)?w.memoizedState=vu(u,A,m,b):(Et.flags|=l,w.memoizedState=vu(1|u,A,m,b))}function BA(l,u){tg(8390656,8,l,u)}function xv(l,u){ng(2048,8,l,u)}function FB(l){Et.flags|=4;var u=Et.updateQueue;if(u===null)u=Jp(),Et.updateQueue=u,u.events=[l];else{var m=u.events;m===null?u.events=[l]:m.push(l)}}function UA(l){var u=ii().memoizedState;return FB({ref:u,nextImpl:l}),function(){if((gn&2)!==0)throw Error(i(440));return u.impl.apply(void 0,arguments)}}function qA(l,u){return ng(4,2,l,u)}function zA(l,u){return ng(4,4,l,u)}function KA(l,u){if(typeof u=="function"){l=l();var m=u(l);return function(){typeof m=="function"?m():u(null)}}if(u!=null)return l=l(),u.current=l,function(){u.current=null}}function VA(l,u,m){m=m!=null?m.concat([l]):null,ng(4,4,KA.bind(null,u,l),m)}function Sv(){}function HA(l,u){var m=ii();u=u===void 0?null:u;var b=m.memoizedState;return u!==null&&dv(u,b[1])?b[0]:(m.memoizedState=[l,u],l)}function WA(l,u){var m=ii();u=u===void 0?null:u;var b=m.memoizedState;if(u!==null&&dv(u,b[1]))return b[0];if(b=l(),Yl){ue(!0);try{l()}finally{ue(!1)}}return m.memoizedState=[b,u],b}function wv(l,u,m){return m===void 0||(Wo&1073741824)!==0&&(Jt&261930)===0?l.memoizedState=u:(l.memoizedState=m,l=GN(),Et.lanes|=l,Gr|=l,m)}function GA(l,u,m,b){return zs(m,u)?m:_u.current!==null?(l=wv(l,m,b),zs(l,u)||(pi=!0),l):(Wo&42)===0||(Wo&1073741824)!==0&&(Jt&261930)===0?(pi=!0,l.memoizedState=m):(l=GN(),Et.lanes|=l,Gr|=l,u)}function $A(l,u,m,b,w){var A=H.p;H.p=A!==0&&8>A?A:8;var j=B.T,G={};B.T=G,Av(l,!1,u,m);try{var se=w(),ve=B.S;if(ve!==null&&ve(G,se),se!==null&&typeof se=="object"&&typeof se.then=="function"){var Ne=PB(se,b);xh(l,u,Ne,$s(l))}else xh(l,u,b,$s(l))}catch(Ee){xh(l,u,{then:function(){},status:"rejected",reason:Ee},$s())}finally{H.p=A,j!==null&&G.types!==null&&(j.types=G.types),B.T=j}}function IB(){}function kv(l,u,m,b){if(l.tag!==5)throw Error(i(476));var w=XA(l).queue;$A(l,w,u,z,m===null?IB:function(){return QA(l),m(b)})}function XA(l){var u=l.memoizedState;if(u!==null)return u;u={memoizedState:z,baseState:z,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Go,lastRenderedState:z},next:null};var m={};return u.next={memoizedState:m,baseState:m,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Go,lastRenderedState:m},next:null},l.memoizedState=u,l=l.alternate,l!==null&&(l.memoizedState=u),u}function QA(l){var u=XA(l);u.next===null&&(u=l.alternate.memoizedState),xh(l,u.next.queue,{},$s())}function Cv(){return Ui(Ih)}function YA(){return ii().memoizedState}function JA(){return ii().memoizedState}function BB(l){for(var u=l.return;u!==null;){switch(u.tag){case 24:case 3:var m=$s();l=qr(m);var b=zr(u,l,m);b!==null&&(Os(b,u,m),gh(b,u,m)),u={cache:ev()},l.payload=u;return}u=u.return}}function UB(l,u,m){var b=$s();m={lane:b,revertLane:0,gesture:null,action:m,hasEagerState:!1,eagerState:null,next:null},ig(l)?eN(u,m):(m=Kb(l,u,m,b),m!==null&&(Os(m,l,b),tN(m,u,b)))}function ZA(l,u,m){var b=$s();xh(l,u,m,b)}function xh(l,u,m,b){var w={lane:b,revertLane:0,gesture:null,action:m,hasEagerState:!1,eagerState:null,next:null};if(ig(l))eN(u,w);else{var A=l.alternate;if(l.lanes===0&&(A===null||A.lanes===0)&&(A=u.lastRenderedReducer,A!==null))try{var j=u.lastRenderedState,G=A(j,m);if(w.hasEagerState=!0,w.eagerState=G,zs(G,j))return Fp(l,u,w,0),Nn===null&&Dp(),!1}catch{}finally{}if(m=Kb(l,u,w,b),m!==null)return Os(m,l,b),tN(m,u,b),!0}return!1}function Av(l,u,m,b){if(b={lane:2,revertLane:sx(),gesture:null,action:b,hasEagerState:!1,eagerState:null,next:null},ig(l)){if(u)throw Error(i(479))}else u=Kb(l,m,b,2),u!==null&&Os(u,l,2)}function ig(l){var u=l.alternate;return l===Et||u!==null&&u===Et}function eN(l,u){yu=Qp=!0;var m=l.pending;m===null?u.next=u:(u.next=m.next,m.next=u),l.pending=u}function tN(l,u,m){if((m&4194048)!==0){var b=u.lanes;b&=l.pendingLanes,m|=b,u.lanes=m,Z(l,m)}}var Sh={readContext:Ui,use:Zp,useCallback:Yn,useContext:Yn,useEffect:Yn,useImperativeHandle:Yn,useLayoutEffect:Yn,useInsertionEffect:Yn,useMemo:Yn,useReducer:Yn,useRef:Yn,useState:Yn,useDebugValue:Yn,useDeferredValue:Yn,useTransition:Yn,useSyncExternalStore:Yn,useId:Yn,useHostTransitionStatus:Yn,useFormState:Yn,useActionState:Yn,useOptimistic:Yn,useMemoCache:Yn,useCacheRefresh:Yn};Sh.useEffectEvent=Yn;var nN={readContext:Ui,use:Zp,useCallback:function(l,u){return hs().memoizedState=[l,u===void 0?null:u],l},useContext:Ui,useEffect:BA,useImperativeHandle:function(l,u,m){m=m!=null?m.concat([l]):null,tg(4194308,4,KA.bind(null,u,l),m)},useLayoutEffect:function(l,u){return tg(4194308,4,l,u)},useInsertionEffect:function(l,u){tg(4,2,l,u)},useMemo:function(l,u){var m=hs();u=u===void 0?null:u;var b=l();if(Yl){ue(!0);try{l()}finally{ue(!1)}}return m.memoizedState=[b,u],b},useReducer:function(l,u,m){var b=hs();if(m!==void 0){var w=m(u);if(Yl){ue(!0);try{m(u)}finally{ue(!1)}}}else w=u;return b.memoizedState=b.baseState=w,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:w},b.queue=l,l=l.dispatch=UB.bind(null,Et,l),[b.memoizedState,l]},useRef:function(l){var u=hs();return l={current:l},u.memoizedState=l},useState:function(l){l=bv(l);var u=l.queue,m=ZA.bind(null,Et,u);return u.dispatch=m,[l.memoizedState,m]},useDebugValue:Sv,useDeferredValue:function(l,u){var m=hs();return wv(m,l,u)},useTransition:function(){var l=bv(!1);return l=$A.bind(null,Et,l.queue,!0,!1),hs().memoizedState=l,[!1,l]},useSyncExternalStore:function(l,u,m){var b=Et,w=hs();if(tn){if(m===void 0)throw Error(i(407));m=m()}else{if(m=u(),Nn===null)throw Error(i(349));(Jt&127)!==0||wA(b,u,m)}w.memoizedState=m;var A={value:m,getSnapshot:u};return w.queue=A,BA(CA.bind(null,b,A,l),[l]),b.flags|=2048,vu(9,{destroy:void 0},kA.bind(null,b,A,m,u),null),m},useId:function(){var l=hs(),u=Nn.identifierPrefix;if(tn){var m=to,b=eo;m=(b&~(1<<32-qe(b)-1)).toString(32)+m,u="_"+u+"R_"+m,m=Yp++,0<m&&(u+="H"+m.toString(32)),u+="_"}else m=EB++,u="_"+u+"r_"+m.toString(32)+"_";return l.memoizedState=u},useHostTransitionStatus:Cv,useFormState:jA,useActionState:jA,useOptimistic:function(l){var u=hs();u.memoizedState=u.baseState=l;var m={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return u.queue=m,u=Av.bind(null,Et,!0,m),m.dispatch=u,[l,u]},useMemoCache:gv,useCacheRefresh:function(){return hs().memoizedState=BB.bind(null,Et)},useEffectEvent:function(l){var u=hs(),m={impl:l};return u.memoizedState=m,function(){if((gn&2)!==0)throw Error(i(440));return m.impl.apply(void 0,arguments)}}},Nv={readContext:Ui,use:Zp,useCallback:HA,useContext:Ui,useEffect:xv,useImperativeHandle:VA,useInsertionEffect:qA,useLayoutEffect:zA,useMemo:WA,useReducer:eg,useRef:IA,useState:function(){return eg(Go)},useDebugValue:Sv,useDeferredValue:function(l,u){var m=ii();return GA(m,wn.memoizedState,l,u)},useTransition:function(){var l=eg(Go)[0],u=ii().memoizedState;return[typeof l=="boolean"?l:vh(l),u]},useSyncExternalStore:SA,useId:YA,useHostTransitionStatus:Cv,useFormState:RA,useActionState:RA,useOptimistic:function(l,u){var m=ii();return TA(m,wn,l,u)},useMemoCache:gv,useCacheRefresh:JA};Nv.useEffectEvent=UA;var iN={readContext:Ui,use:Zp,useCallback:HA,useContext:Ui,useEffect:xv,useImperativeHandle:VA,useInsertionEffect:qA,useLayoutEffect:zA,useMemo:WA,useReducer:yv,useRef:IA,useState:function(){return yv(Go)},useDebugValue:Sv,useDeferredValue:function(l,u){var m=ii();return wn===null?wv(m,l,u):GA(m,wn.memoizedState,l,u)},useTransition:function(){var l=yv(Go)[0],u=ii().memoizedState;return[typeof l=="boolean"?l:vh(l),u]},useSyncExternalStore:SA,useId:YA,useHostTransitionStatus:Cv,useFormState:FA,useActionState:FA,useOptimistic:function(l,u){var m=ii();return wn!==null?TA(m,wn,l,u):(m.baseState=l,[l,m.queue.dispatch])},useMemoCache:gv,useCacheRefresh:JA};iN.useEffectEvent=UA;function Tv(l,u,m,b){u=l.memoizedState,m=m(b,u),m=m==null?u:p({},u,m),l.memoizedState=m,l.lanes===0&&(l.updateQueue.baseState=m)}var Mv={enqueueSetState:function(l,u,m){l=l._reactInternals;var b=$s(),w=qr(b);w.payload=u,m!=null&&(w.callback=m),u=zr(l,w,b),u!==null&&(Os(u,l,b),gh(u,l,b))},enqueueReplaceState:function(l,u,m){l=l._reactInternals;var b=$s(),w=qr(b);w.tag=1,w.payload=u,m!=null&&(w.callback=m),u=zr(l,w,b),u!==null&&(Os(u,l,b),gh(u,l,b))},enqueueForceUpdate:function(l,u){l=l._reactInternals;var m=$s(),b=qr(m);b.tag=2,u!=null&&(b.callback=u),u=zr(l,b,m),u!==null&&(Os(u,l,m),gh(u,l,m))}};function sN(l,u,m,b,w,A,j){return l=l.stateNode,typeof l.shouldComponentUpdate=="function"?l.shouldComponentUpdate(b,A,j):u.prototype&&u.prototype.isPureReactComponent?!lh(m,b)||!lh(w,A):!0}function aN(l,u,m,b){l=u.state,typeof u.componentWillReceiveProps=="function"&&u.componentWillReceiveProps(m,b),typeof u.UNSAFE_componentWillReceiveProps=="function"&&u.UNSAFE_componentWillReceiveProps(m,b),u.state!==l&&Mv.enqueueReplaceState(u,u.state,null)}function Jl(l,u){var m=u;if("ref"in u){m={};for(var b in u)b!=="ref"&&(m[b]=u[b])}if(l=l.defaultProps){m===u&&(m=p({},m));for(var w in l)m[w]===void 0&&(m[w]=l[w])}return m}function oN(l){Rp(l)}function rN(l){console.error(l)}function lN(l){Rp(l)}function sg(l,u){try{var m=l.onUncaughtError;m(u.value,{componentStack:u.stack})}catch(b){setTimeout(function(){throw b})}}function cN(l,u,m){try{var b=l.onCaughtError;b(m.value,{componentStack:m.stack,errorBoundary:u.tag===1?u.stateNode:null})}catch(w){setTimeout(function(){throw w})}}function Lv(l,u,m){return m=qr(m),m.tag=3,m.payload={element:null},m.callback=function(){sg(l,u)},m}function uN(l){return l=qr(l),l.tag=3,l}function dN(l,u,m,b){var w=m.type.getDerivedStateFromError;if(typeof w=="function"){var A=b.value;l.payload=function(){return w(A)},l.callback=function(){cN(u,m,b)}}var j=m.stateNode;j!==null&&typeof j.componentDidCatch=="function"&&(l.callback=function(){cN(u,m,b),typeof w!="function"&&($r===null?$r=new Set([this]):$r.add(this));var G=b.stack;this.componentDidCatch(b.value,{componentStack:G!==null?G:""})})}function qB(l,u,m,b,w){if(m.flags|=32768,b!==null&&typeof b=="object"&&typeof b.then=="function"){if(u=m.alternate,u!==null&&hu(u,m,w,!0),m=Vs.current,m!==null){switch(m.tag){case 31:case 13:return ua===null?gg():m.alternate===null&&Jn===0&&(Jn=3),m.flags&=-257,m.flags|=65536,m.lanes=w,b===Hp?m.flags|=16384:(u=m.updateQueue,u===null?m.updateQueue=new Set([b]):u.add(b),tx(l,b,w)),!1;case 22:return m.flags|=65536,b===Hp?m.flags|=16384:(u=m.updateQueue,u===null?(u={transitions:null,markerInstances:null,retryQueue:new Set([b])},m.updateQueue=u):(m=u.retryQueue,m===null?u.retryQueue=new Set([b]):m.add(b)),tx(l,b,w)),!1}throw Error(i(435,m.tag))}return tx(l,b,w),gg(),!1}if(tn)return u=Vs.current,u!==null?((u.flags&65536)===0&&(u.flags|=256),u.flags|=65536,u.lanes=w,b!==Xb&&(l=Error(i(422),{cause:b}),dh(oa(l,m)))):(b!==Xb&&(u=Error(i(423),{cause:b}),dh(oa(u,m))),l=l.current.alternate,l.flags|=65536,w&=-w,l.lanes|=w,b=oa(b,m),w=Lv(l.stateNode,b,w),ov(l,w),Jn!==4&&(Jn=2)),!1;var A=Error(i(520),{cause:b});if(A=oa(A,m),Lh===null?Lh=[A]:Lh.push(A),Jn!==4&&(Jn=2),u===null)return!0;b=oa(b,m),m=u;do{switch(m.tag){case 3:return m.flags|=65536,l=w&-w,m.lanes|=l,l=Lv(m.stateNode,b,l),ov(m,l),!1;case 1:if(u=m.type,A=m.stateNode,(m.flags&128)===0&&(typeof u.getDerivedStateFromError=="function"||A!==null&&typeof A.componentDidCatch=="function"&&($r===null||!$r.has(A))))return m.flags|=65536,w&=-w,m.lanes|=w,w=uN(w),dN(w,l,m,b),ov(m,w),!1}m=m.return}while(m!==null);return!1}var Ov=Error(i(461)),pi=!1;function qi(l,u,m,b){u.child=l===null?pA(u,null,m,b):Ql(u,l.child,m,b)}function hN(l,u,m,b,w){m=m.render;var A=u.ref;if("ref"in b){var j={};for(var G in b)G!=="ref"&&(j[G]=b[G])}else j=b;return Wl(u),b=hv(l,u,m,j,A,w),G=fv(),l!==null&&!pi?(mv(l,u,w),$o(l,u,w)):(tn&&G&&Gb(u),u.flags|=1,qi(l,u,b,w),u.child)}function fN(l,u,m,b,w){if(l===null){var A=m.type;return typeof A=="function"&&!Vb(A)&&A.defaultProps===void 0&&m.compare===null?(u.tag=15,u.type=A,mN(l,u,A,b,w)):(l=Bp(m.type,null,b,u,u.mode,w),l.ref=u.ref,l.return=u,u.child=l)}if(A=l.child,!Bv(l,w)){var j=A.memoizedProps;if(m=m.compare,m=m!==null?m:lh,m(j,b)&&l.ref===u.ref)return $o(l,u,w)}return u.flags|=1,l=zo(A,b),l.ref=u.ref,l.return=u,u.child=l}function mN(l,u,m,b,w){if(l!==null){var A=l.memoizedProps;if(lh(A,b)&&l.ref===u.ref)if(pi=!1,u.pendingProps=b=A,Bv(l,w))(l.flags&131072)!==0&&(pi=!0);else return u.lanes=l.lanes,$o(l,u,w)}return Pv(l,u,m,b,w)}function pN(l,u,m,b){var w=b.children,A=l!==null?l.memoizedState:null;if(l===null&&u.stateNode===null&&(u.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),b.mode==="hidden"){if((u.flags&128)!==0){if(A=A!==null?A.baseLanes|m:m,l!==null){for(b=u.child=l.child,w=0;b!==null;)w=w|b.lanes|b.childLanes,b=b.sibling;b=w&~A}else b=0,u.child=null;return gN(l,u,A,m,b)}if((m&536870912)!==0)u.memoizedState={baseLanes:0,cachePool:null},l!==null&&Kp(u,A!==null?A.cachePool:null),A!==null?yA(u,A):lv(),bA(u);else return b=u.lanes=536870912,gN(l,u,A!==null?A.baseLanes|m:m,m,b)}else A!==null?(Kp(u,A.cachePool),yA(u,A),Vr(),u.memoizedState=null):(l!==null&&Kp(u,null),lv(),Vr());return qi(l,u,w,m),u.child}function wh(l,u){return l!==null&&l.tag===22||u.stateNode!==null||(u.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null}),u.sibling}function gN(l,u,m,b,w){var A=nv();return A=A===null?null:{parent:fi._currentValue,pool:A},u.memoizedState={baseLanes:m,cachePool:A},l!==null&&Kp(u,null),lv(),bA(u),l!==null&&hu(l,u,b,!0),u.childLanes=w,null}function ag(l,u){return u=rg({mode:u.mode,children:u.children},l.mode),u.ref=l.ref,l.child=u,u.return=l,u}function _N(l,u,m){return Ql(u,l.child,null,m),l=ag(u,u.pendingProps),l.flags|=2,Hs(u),u.memoizedState=null,l}function zB(l,u,m){var b=u.pendingProps,w=(u.flags&128)!==0;if(u.flags&=-129,l===null){if(tn){if(b.mode==="hidden")return l=ag(u,b),u.lanes=536870912,wh(null,l);if(uv(u),(l=Dn)?(l=MT(l,ca),l=l!==null&&l.data==="&"?l:null,l!==null&&(u.memoizedState={dehydrated:l,treeContext:Dr!==null?{id:eo,overflow:to}:null,retryLane:536870912,hydrationErrors:null},m=eA(l),m.return=u,u.child=m,Bi=u,Dn=null)):l=null,l===null)throw Ir(u);return u.lanes=536870912,null}return ag(u,b)}var A=l.memoizedState;if(A!==null){var j=A.dehydrated;if(uv(u),w)if(u.flags&256)u.flags&=-257,u=_N(l,u,m);else if(u.memoizedState!==null)u.child=l.child,u.flags|=128,u=null;else throw Error(i(558));else if(pi||hu(l,u,m,!1),w=(m&l.childLanes)!==0,pi||w){if(b=Nn,b!==null&&(j=oe(b,m),j!==0&&j!==A.retryLane))throw A.retryLane=j,zl(l,j),Os(b,l,j),Ov;gg(),u=_N(l,u,m)}else l=A.treeContext,Dn=da(j.nextSibling),Bi=u,tn=!0,Fr=null,ca=!1,l!==null&&iA(u,l),u=ag(u,b),u.flags|=4096;return u}return l=zo(l.child,{mode:b.mode,children:b.children}),l.ref=u.ref,u.child=l,l.return=u,l}function og(l,u){var m=u.ref;if(m===null)l!==null&&l.ref!==null&&(u.flags|=4194816);else{if(typeof m!="function"&&typeof m!="object")throw Error(i(284));(l===null||l.ref!==m)&&(u.flags|=4194816)}}function Pv(l,u,m,b,w){return Wl(u),m=hv(l,u,m,b,void 0,w),b=fv(),l!==null&&!pi?(mv(l,u,w),$o(l,u,w)):(tn&&b&&Gb(u),u.flags|=1,qi(l,u,m,w),u.child)}function yN(l,u,m,b,w,A){return Wl(u),u.updateQueue=null,m=xA(u,b,m,w),vA(l),b=fv(),l!==null&&!pi?(mv(l,u,A),$o(l,u,A)):(tn&&b&&Gb(u),u.flags|=1,qi(l,u,m,A),u.child)}function bN(l,u,m,b,w){if(Wl(u),u.stateNode===null){var A=lu,j=m.contextType;typeof j=="object"&&j!==null&&(A=Ui(j)),A=new m(b,A),u.memoizedState=A.state!==null&&A.state!==void 0?A.state:null,A.updater=Mv,u.stateNode=A,A._reactInternals=u,A=u.stateNode,A.props=b,A.state=u.memoizedState,A.refs={},sv(u),j=m.contextType,A.context=typeof j=="object"&&j!==null?Ui(j):lu,A.state=u.memoizedState,j=m.getDerivedStateFromProps,typeof j=="function"&&(Tv(u,m,j,b),A.state=u.memoizedState),typeof m.getDerivedStateFromProps=="function"||typeof A.getSnapshotBeforeUpdate=="function"||typeof A.UNSAFE_componentWillMount!="function"&&typeof A.componentWillMount!="function"||(j=A.state,typeof A.componentWillMount=="function"&&A.componentWillMount(),typeof A.UNSAFE_componentWillMount=="function"&&A.UNSAFE_componentWillMount(),j!==A.state&&Mv.enqueueReplaceState(A,A.state,null),yh(u,b,A,w),_h(),A.state=u.memoizedState),typeof A.componentDidMount=="function"&&(u.flags|=4194308),b=!0}else if(l===null){A=u.stateNode;var G=u.memoizedProps,se=Jl(m,G);A.props=se;var ve=A.context,Ne=m.contextType;j=lu,typeof Ne=="object"&&Ne!==null&&(j=Ui(Ne));var Ee=m.getDerivedStateFromProps;Ne=typeof Ee=="function"||typeof A.getSnapshotBeforeUpdate=="function",G=u.pendingProps!==G,Ne||typeof A.UNSAFE_componentWillReceiveProps!="function"&&typeof A.componentWillReceiveProps!="function"||(G||ve!==j)&&aN(u,A,b,j),Ur=!1;var xe=u.memoizedState;A.state=xe,yh(u,b,A,w),_h(),ve=u.memoizedState,G||xe!==ve||Ur?(typeof Ee=="function"&&(Tv(u,m,Ee,b),ve=u.memoizedState),(se=Ur||sN(u,m,se,b,xe,ve,j))?(Ne||typeof A.UNSAFE_componentWillMount!="function"&&typeof A.componentWillMount!="function"||(typeof A.componentWillMount=="function"&&A.componentWillMount(),typeof A.UNSAFE_componentWillMount=="function"&&A.UNSAFE_componentWillMount()),typeof A.componentDidMount=="function"&&(u.flags|=4194308)):(typeof A.componentDidMount=="function"&&(u.flags|=4194308),u.memoizedProps=b,u.memoizedState=ve),A.props=b,A.state=ve,A.context=j,b=se):(typeof A.componentDidMount=="function"&&(u.flags|=4194308),b=!1)}else{A=u.stateNode,av(l,u),j=u.memoizedProps,Ne=Jl(m,j),A.props=Ne,Ee=u.pendingProps,xe=A.context,ve=m.contextType,se=lu,typeof ve=="object"&&ve!==null&&(se=Ui(ve)),G=m.getDerivedStateFromProps,(ve=typeof G=="function"||typeof A.getSnapshotBeforeUpdate=="function")||typeof A.UNSAFE_componentWillReceiveProps!="function"&&typeof A.componentWillReceiveProps!="function"||(j!==Ee||xe!==se)&&aN(u,A,b,se),Ur=!1,xe=u.memoizedState,A.state=xe,yh(u,b,A,w),_h();var we=u.memoizedState;j!==Ee||xe!==we||Ur||l!==null&&l.dependencies!==null&&qp(l.dependencies)?(typeof G=="function"&&(Tv(u,m,G,b),we=u.memoizedState),(Ne=Ur||sN(u,m,Ne,b,xe,we,se)||l!==null&&l.dependencies!==null&&qp(l.dependencies))?(ve||typeof A.UNSAFE_componentWillUpdate!="function"&&typeof A.componentWillUpdate!="function"||(typeof A.componentWillUpdate=="function"&&A.componentWillUpdate(b,we,se),typeof A.UNSAFE_componentWillUpdate=="function"&&A.UNSAFE_componentWillUpdate(b,we,se)),typeof A.componentDidUpdate=="function"&&(u.flags|=4),typeof A.getSnapshotBeforeUpdate=="function"&&(u.flags|=1024)):(typeof A.componentDidUpdate!="function"||j===l.memoizedProps&&xe===l.memoizedState||(u.flags|=4),typeof A.getSnapshotBeforeUpdate!="function"||j===l.memoizedProps&&xe===l.memoizedState||(u.flags|=1024),u.memoizedProps=b,u.memoizedState=we),A.props=b,A.state=we,A.context=se,b=Ne):(typeof A.componentDidUpdate!="function"||j===l.memoizedProps&&xe===l.memoizedState||(u.flags|=4),typeof A.getSnapshotBeforeUpdate!="function"||j===l.memoizedProps&&xe===l.memoizedState||(u.flags|=1024),b=!1)}return A=b,og(l,u),b=(u.flags&128)!==0,A||b?(A=u.stateNode,m=b&&typeof m.getDerivedStateFromError!="function"?null:A.render(),u.flags|=1,l!==null&&b?(u.child=Ql(u,l.child,null,w),u.child=Ql(u,null,m,w)):qi(l,u,m,w),u.memoizedState=A.state,l=u.child):l=$o(l,u,w),l}function vN(l,u,m,b){return Vl(),u.flags|=256,qi(l,u,m,b),u.child}var Ev={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function jv(l){return{baseLanes:l,cachePool:cA()}}function Rv(l,u,m){return l=l!==null?l.childLanes&~m:0,u&&(l|=Gs),l}function xN(l,u,m){var b=u.pendingProps,w=!1,A=(u.flags&128)!==0,j;if((j=A)||(j=l!==null&&l.memoizedState===null?!1:(ni.current&2)!==0),j&&(w=!0,u.flags&=-129),j=(u.flags&32)!==0,u.flags&=-33,l===null){if(tn){if(w?Kr(u):Vr(),(l=Dn)?(l=MT(l,ca),l=l!==null&&l.data!=="&"?l:null,l!==null&&(u.memoizedState={dehydrated:l,treeContext:Dr!==null?{id:eo,overflow:to}:null,retryLane:536870912,hydrationErrors:null},m=eA(l),m.return=u,u.child=m,Bi=u,Dn=null)):l=null,l===null)throw Ir(u);return _x(l)?u.lanes=32:u.lanes=536870912,null}var G=b.children;return b=b.fallback,w?(Vr(),w=u.mode,G=rg({mode:"hidden",children:G},w),b=Kl(b,w,m,null),G.return=u,b.return=u,G.sibling=b,u.child=G,b=u.child,b.memoizedState=jv(m),b.childLanes=Rv(l,j,m),u.memoizedState=Ev,wh(null,b)):(Kr(u),Dv(u,G))}var se=l.memoizedState;if(se!==null&&(G=se.dehydrated,G!==null)){if(A)u.flags&256?(Kr(u),u.flags&=-257,u=Fv(l,u,m)):u.memoizedState!==null?(Vr(),u.child=l.child,u.flags|=128,u=null):(Vr(),G=b.fallback,w=u.mode,b=rg({mode:"visible",children:b.children},w),G=Kl(G,w,m,null),G.flags|=2,b.return=u,G.return=u,b.sibling=G,u.child=b,Ql(u,l.child,null,m),b=u.child,b.memoizedState=jv(m),b.childLanes=Rv(l,j,m),u.memoizedState=Ev,u=wh(null,b));else if(Kr(u),_x(G)){if(j=G.nextSibling&&G.nextSibling.dataset,j)var ve=j.dgst;j=ve,b=Error(i(419)),b.stack="",b.digest=j,dh({value:b,source:null,stack:null}),u=Fv(l,u,m)}else if(pi||hu(l,u,m,!1),j=(m&l.childLanes)!==0,pi||j){if(j=Nn,j!==null&&(b=oe(j,m),b!==0&&b!==se.retryLane))throw se.retryLane=b,zl(l,b),Os(j,l,b),Ov;gx(G)||gg(),u=Fv(l,u,m)}else gx(G)?(u.flags|=192,u.child=l.child,u=null):(l=se.treeContext,Dn=da(G.nextSibling),Bi=u,tn=!0,Fr=null,ca=!1,l!==null&&iA(u,l),u=Dv(u,b.children),u.flags|=4096);return u}return w?(Vr(),G=b.fallback,w=u.mode,se=l.child,ve=se.sibling,b=zo(se,{mode:"hidden",children:b.children}),b.subtreeFlags=se.subtreeFlags&65011712,ve!==null?G=zo(ve,G):(G=Kl(G,w,m,null),G.flags|=2),G.return=u,b.return=u,b.sibling=G,u.child=b,wh(null,b),b=u.child,G=l.child.memoizedState,G===null?G=jv(m):(w=G.cachePool,w!==null?(se=fi._currentValue,w=w.parent!==se?{parent:se,pool:se}:w):w=cA(),G={baseLanes:G.baseLanes|m,cachePool:w}),b.memoizedState=G,b.childLanes=Rv(l,j,m),u.memoizedState=Ev,wh(l.child,b)):(Kr(u),m=l.child,l=m.sibling,m=zo(m,{mode:"visible",children:b.children}),m.return=u,m.sibling=null,l!==null&&(j=u.deletions,j===null?(u.deletions=[l],u.flags|=16):j.push(l)),u.child=m,u.memoizedState=null,m)}function Dv(l,u){return u=rg({mode:"visible",children:u},l.mode),u.return=l,l.child=u}function rg(l,u){return l=Ks(22,l,null,u),l.lanes=0,l}function Fv(l,u,m){return Ql(u,l.child,null,m),l=Dv(u,u.pendingProps.children),l.flags|=2,u.memoizedState=null,l}function SN(l,u,m){l.lanes|=u;var b=l.alternate;b!==null&&(b.lanes|=u),Jb(l.return,u,m)}function Iv(l,u,m,b,w,A){var j=l.memoizedState;j===null?l.memoizedState={isBackwards:u,rendering:null,renderingStartTime:0,last:b,tail:m,tailMode:w,treeForkCount:A}:(j.isBackwards=u,j.rendering=null,j.renderingStartTime=0,j.last=b,j.tail=m,j.tailMode=w,j.treeForkCount=A)}function wN(l,u,m){var b=u.pendingProps,w=b.revealOrder,A=b.tail;b=b.children;var j=ni.current,G=(j&2)!==0;if(G?(j=j&1|2,u.flags|=128):j&=1,$(ni,j),qi(l,u,b,m),b=tn?uh:0,!G&&l!==null&&(l.flags&128)!==0)e:for(l=u.child;l!==null;){if(l.tag===13)l.memoizedState!==null&&SN(l,m,u);else if(l.tag===19)SN(l,m,u);else if(l.child!==null){l.child.return=l,l=l.child;continue}if(l===u)break e;for(;l.sibling===null;){if(l.return===null||l.return===u)break e;l=l.return}l.sibling.return=l.return,l=l.sibling}switch(w){case"forwards":for(m=u.child,w=null;m!==null;)l=m.alternate,l!==null&&Xp(l)===null&&(w=m),m=m.sibling;m=w,m===null?(w=u.child,u.child=null):(w=m.sibling,m.sibling=null),Iv(u,!1,w,m,A,b);break;case"backwards":case"unstable_legacy-backwards":for(m=null,w=u.child,u.child=null;w!==null;){if(l=w.alternate,l!==null&&Xp(l)===null){u.child=w;break}l=w.sibling,w.sibling=m,m=w,w=l}Iv(u,!0,m,null,A,b);break;case"together":Iv(u,!1,null,null,void 0,b);break;default:u.memoizedState=null}return u.child}function $o(l,u,m){if(l!==null&&(u.dependencies=l.dependencies),Gr|=u.lanes,(m&u.childLanes)===0)if(l!==null){if(hu(l,u,m,!1),(m&u.childLanes)===0)return null}else return null;if(l!==null&&u.child!==l.child)throw Error(i(153));if(u.child!==null){for(l=u.child,m=zo(l,l.pendingProps),u.child=m,m.return=u;l.sibling!==null;)l=l.sibling,m=m.sibling=zo(l,l.pendingProps),m.return=u;m.sibling=null}return u.child}function Bv(l,u){return(l.lanes&u)!==0?!0:(l=l.dependencies,!!(l!==null&&qp(l)))}function KB(l,u,m){switch(u.tag){case 3:J(u,u.stateNode.containerInfo),Br(u,fi,l.memoizedState.cache),Vl();break;case 27:case 5:fe(u);break;case 4:J(u,u.stateNode.containerInfo);break;case 10:Br(u,u.type,u.memoizedProps.value);break;case 31:if(u.memoizedState!==null)return u.flags|=128,uv(u),null;break;case 13:var b=u.memoizedState;if(b!==null)return b.dehydrated!==null?(Kr(u),u.flags|=128,null):(m&u.child.childLanes)!==0?xN(l,u,m):(Kr(u),l=$o(l,u,m),l!==null?l.sibling:null);Kr(u);break;case 19:var w=(l.flags&128)!==0;if(b=(m&u.childLanes)!==0,b||(hu(l,u,m,!1),b=(m&u.childLanes)!==0),w){if(b)return wN(l,u,m);u.flags|=128}if(w=u.memoizedState,w!==null&&(w.rendering=null,w.tail=null,w.lastEffect=null),$(ni,ni.current),b)break;return null;case 22:return u.lanes=0,pN(l,u,m,u.pendingProps);case 24:Br(u,fi,l.memoizedState.cache)}return $o(l,u,m)}function kN(l,u,m){if(l!==null)if(l.memoizedProps!==u.pendingProps)pi=!0;else{if(!Bv(l,m)&&(u.flags&128)===0)return pi=!1,KB(l,u,m);pi=(l.flags&131072)!==0}else pi=!1,tn&&(u.flags&1048576)!==0&&nA(u,uh,u.index);switch(u.lanes=0,u.tag){case 16:e:{var b=u.pendingProps;if(l=$l(u.elementType),u.type=l,typeof l=="function")Vb(l)?(b=Jl(l,b),u.tag=1,u=bN(null,u,l,b,m)):(u.tag=0,u=Pv(null,u,l,b,m));else{if(l!=null){var w=l.$$typeof;if(w===L){u.tag=11,u=hN(null,u,l,b,m);break e}else if(w===T){u.tag=14,u=fN(null,u,l,b,m);break e}}throw u=X(l)||l,Error(i(306,u,""))}}return u;case 0:return Pv(l,u,u.type,u.pendingProps,m);case 1:return b=u.type,w=Jl(b,u.pendingProps),bN(l,u,b,w,m);case 3:e:{if(J(u,u.stateNode.containerInfo),l===null)throw Error(i(387));b=u.pendingProps;var A=u.memoizedState;w=A.element,av(l,u),yh(u,b,null,m);var j=u.memoizedState;if(b=j.cache,Br(u,fi,b),b!==A.cache&&Zb(u,[fi],m,!0),_h(),b=j.element,A.isDehydrated)if(A={element:b,isDehydrated:!1,cache:j.cache},u.updateQueue.baseState=A,u.memoizedState=A,u.flags&256){u=vN(l,u,b,m);break e}else if(b!==w){w=oa(Error(i(424)),u),dh(w),u=vN(l,u,b,m);break e}else{switch(l=u.stateNode.containerInfo,l.nodeType){case 9:l=l.body;break;default:l=l.nodeName==="HTML"?l.ownerDocument.body:l}for(Dn=da(l.firstChild),Bi=u,tn=!0,Fr=null,ca=!0,m=pA(u,null,b,m),u.child=m;m;)m.flags=m.flags&-3|4096,m=m.sibling}else{if(Vl(),b===w){u=$o(l,u,m);break e}qi(l,u,b,m)}u=u.child}return u;case 26:return og(l,u),l===null?(m=RT(u.type,null,u.pendingProps,null))?u.memoizedState=m:tn||(m=u.type,l=u.pendingProps,b=wg(F.current).createElement(m),b[Fe]=u,b[Ve]=l,zi(b,m,l),dn(b),u.stateNode=b):u.memoizedState=RT(u.type,l.memoizedProps,u.pendingProps,l.memoizedState),null;case 27:return fe(u),l===null&&tn&&(b=u.stateNode=PT(u.type,u.pendingProps,F.current),Bi=u,ca=!0,w=Dn,Jr(u.type)?(yx=w,Dn=da(b.firstChild)):Dn=w),qi(l,u,u.pendingProps.children,m),og(l,u),l===null&&(u.flags|=4194304),u.child;case 5:return l===null&&tn&&((w=b=Dn)&&(b=bU(b,u.type,u.pendingProps,ca),b!==null?(u.stateNode=b,Bi=u,Dn=da(b.firstChild),ca=!1,w=!0):w=!1),w||Ir(u)),fe(u),w=u.type,A=u.pendingProps,j=l!==null?l.memoizedProps:null,b=A.children,fx(w,A)?b=null:j!==null&&fx(w,j)&&(u.flags|=32),u.memoizedState!==null&&(w=hv(l,u,jB,null,null,m),Ih._currentValue=w),og(l,u),qi(l,u,b,m),u.child;case 6:return l===null&&tn&&((l=m=Dn)&&(m=vU(m,u.pendingProps,ca),m!==null?(u.stateNode=m,Bi=u,Dn=null,l=!0):l=!1),l||Ir(u)),null;case 13:return xN(l,u,m);case 4:return J(u,u.stateNode.containerInfo),b=u.pendingProps,l===null?u.child=Ql(u,null,b,m):qi(l,u,b,m),u.child;case 11:return hN(l,u,u.type,u.pendingProps,m);case 7:return qi(l,u,u.pendingProps,m),u.child;case 8:return qi(l,u,u.pendingProps.children,m),u.child;case 12:return qi(l,u,u.pendingProps.children,m),u.child;case 10:return b=u.pendingProps,Br(u,u.type,b.value),qi(l,u,b.children,m),u.child;case 9:return w=u.type._context,b=u.pendingProps.children,Wl(u),w=Ui(w),b=b(w),u.flags|=1,qi(l,u,b,m),u.child;case 14:return fN(l,u,u.type,u.pendingProps,m);case 15:return mN(l,u,u.type,u.pendingProps,m);case 19:return wN(l,u,m);case 31:return zB(l,u,m);case 22:return pN(l,u,m,u.pendingProps);case 24:return Wl(u),b=Ui(fi),l===null?(w=nv(),w===null&&(w=Nn,A=ev(),w.pooledCache=A,A.refCount++,A!==null&&(w.pooledCacheLanes|=m),w=A),u.memoizedState={parent:b,cache:w},sv(u),Br(u,fi,w)):((l.lanes&m)!==0&&(av(l,u),yh(u,null,null,m),_h()),w=l.memoizedState,A=u.memoizedState,w.parent!==b?(w={parent:b,cache:b},u.memoizedState=w,u.lanes===0&&(u.memoizedState=u.updateQueue.baseState=w),Br(u,fi,b)):(b=A.cache,Br(u,fi,b),b!==w.cache&&Zb(u,[fi],m,!0))),qi(l,u,u.pendingProps.children,m),u.child;case 29:throw u.pendingProps}throw Error(i(156,u.tag))}function Xo(l){l.flags|=4}function Uv(l,u,m,b,w){if((u=(l.mode&32)!==0)&&(u=!1),u){if(l.flags|=16777216,(w&335544128)===w)if(l.stateNode.complete)l.flags|=8192;else if(YN())l.flags|=8192;else throw Xl=Hp,iv}else l.flags&=-16777217}function CN(l,u){if(u.type!=="stylesheet"||(u.state.loading&4)!==0)l.flags&=-16777217;else if(l.flags|=16777216,!UT(u))if(YN())l.flags|=8192;else throw Xl=Hp,iv}function lg(l,u){u!==null&&(l.flags|=4),l.flags&16384&&(u=l.tag!==22?it():536870912,l.lanes|=u,ku|=u)}function kh(l,u){if(!tn)switch(l.tailMode){case"hidden":u=l.tail;for(var m=null;u!==null;)u.alternate!==null&&(m=u),u=u.sibling;m===null?l.tail=null:m.sibling=null;break;case"collapsed":m=l.tail;for(var b=null;m!==null;)m.alternate!==null&&(b=m),m=m.sibling;b===null?u||l.tail===null?l.tail=null:l.tail.sibling=null:b.sibling=null}}function Fn(l){var u=l.alternate!==null&&l.alternate.child===l.child,m=0,b=0;if(u)for(var w=l.child;w!==null;)m|=w.lanes|w.childLanes,b|=w.subtreeFlags&65011712,b|=w.flags&65011712,w.return=l,w=w.sibling;else for(w=l.child;w!==null;)m|=w.lanes|w.childLanes,b|=w.subtreeFlags,b|=w.flags,w.return=l,w=w.sibling;return l.subtreeFlags|=b,l.childLanes=m,u}function VB(l,u,m){var b=u.pendingProps;switch($b(u),u.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Fn(u),null;case 1:return Fn(u),null;case 3:return m=u.stateNode,b=null,l!==null&&(b=l.memoizedState.cache),u.memoizedState.cache!==b&&(u.flags|=2048),Ho(fi),re(),m.pendingContext&&(m.context=m.pendingContext,m.pendingContext=null),(l===null||l.child===null)&&(du(u)?Xo(u):l===null||l.memoizedState.isDehydrated&&(u.flags&256)===0||(u.flags|=1024,Qb())),Fn(u),null;case 26:var w=u.type,A=u.memoizedState;return l===null?(Xo(u),A!==null?(Fn(u),CN(u,A)):(Fn(u),Uv(u,w,null,b,m))):A?A!==l.memoizedState?(Xo(u),Fn(u),CN(u,A)):(Fn(u),u.flags&=-16777217):(l=l.memoizedProps,l!==b&&Xo(u),Fn(u),Uv(u,w,l,b,m)),null;case 27:if(me(u),m=F.current,w=u.type,l!==null&&u.stateNode!=null)l.memoizedProps!==b&&Xo(u);else{if(!b){if(u.stateNode===null)throw Error(i(166));return Fn(u),null}l=te.current,du(u)?sA(u):(l=PT(w,b,m),u.stateNode=l,Xo(u))}return Fn(u),null;case 5:if(me(u),w=u.type,l!==null&&u.stateNode!=null)l.memoizedProps!==b&&Xo(u);else{if(!b){if(u.stateNode===null)throw Error(i(166));return Fn(u),null}if(A=te.current,du(u))sA(u);else{var j=wg(F.current);switch(A){case 1:A=j.createElementNS("http://www.w3.org/2000/svg",w);break;case 2:A=j.createElementNS("http://www.w3.org/1998/Math/MathML",w);break;default:switch(w){case"svg":A=j.createElementNS("http://www.w3.org/2000/svg",w);break;case"math":A=j.createElementNS("http://www.w3.org/1998/Math/MathML",w);break;case"script":A=j.createElement("div"),A.innerHTML="<script><\/script>",A=A.removeChild(A.firstChild);break;case"select":A=typeof b.is=="string"?j.createElement("select",{is:b.is}):j.createElement("select"),b.multiple?A.multiple=!0:b.size&&(A.size=b.size);break;default:A=typeof b.is=="string"?j.createElement(w,{is:b.is}):j.createElement(w)}}A[Fe]=u,A[Ve]=b;e:for(j=u.child;j!==null;){if(j.tag===5||j.tag===6)A.appendChild(j.stateNode);else if(j.tag!==4&&j.tag!==27&&j.child!==null){j.child.return=j,j=j.child;continue}if(j===u)break e;for(;j.sibling===null;){if(j.return===null||j.return===u)break e;j=j.return}j.sibling.return=j.return,j=j.sibling}u.stateNode=A;e:switch(zi(A,w,b),w){case"button":case"input":case"select":case"textarea":b=!!b.autoFocus;break e;case"img":b=!0;break e;default:b=!1}b&&Xo(u)}}return Fn(u),Uv(u,u.type,l===null?null:l.memoizedProps,u.pendingProps,m),null;case 6:if(l&&u.stateNode!=null)l.memoizedProps!==b&&Xo(u);else{if(typeof b!="string"&&u.stateNode===null)throw Error(i(166));if(l=F.current,du(u)){if(l=u.stateNode,m=u.memoizedProps,b=null,w=Bi,w!==null)switch(w.tag){case 27:case 5:b=w.memoizedProps}l[Fe]=u,l=!!(l.nodeValue===m||b!==null&&b.suppressHydrationWarning===!0||xT(l.nodeValue,m)),l||Ir(u,!0)}else l=wg(l).createTextNode(b),l[Fe]=u,u.stateNode=l}return Fn(u),null;case 31:if(m=u.memoizedState,l===null||l.memoizedState!==null){if(b=du(u),m!==null){if(l===null){if(!b)throw Error(i(318));if(l=u.memoizedState,l=l!==null?l.dehydrated:null,!l)throw Error(i(557));l[Fe]=u}else Vl(),(u.flags&128)===0&&(u.memoizedState=null),u.flags|=4;Fn(u),l=!1}else m=Qb(),l!==null&&l.memoizedState!==null&&(l.memoizedState.hydrationErrors=m),l=!0;if(!l)return u.flags&256?(Hs(u),u):(Hs(u),null);if((u.flags&128)!==0)throw Error(i(558))}return Fn(u),null;case 13:if(b=u.memoizedState,l===null||l.memoizedState!==null&&l.memoizedState.dehydrated!==null){if(w=du(u),b!==null&&b.dehydrated!==null){if(l===null){if(!w)throw Error(i(318));if(w=u.memoizedState,w=w!==null?w.dehydrated:null,!w)throw Error(i(317));w[Fe]=u}else Vl(),(u.flags&128)===0&&(u.memoizedState=null),u.flags|=4;Fn(u),w=!1}else w=Qb(),l!==null&&l.memoizedState!==null&&(l.memoizedState.hydrationErrors=w),w=!0;if(!w)return u.flags&256?(Hs(u),u):(Hs(u),null)}return Hs(u),(u.flags&128)!==0?(u.lanes=m,u):(m=b!==null,l=l!==null&&l.memoizedState!==null,m&&(b=u.child,w=null,b.alternate!==null&&b.alternate.memoizedState!==null&&b.alternate.memoizedState.cachePool!==null&&(w=b.alternate.memoizedState.cachePool.pool),A=null,b.memoizedState!==null&&b.memoizedState.cachePool!==null&&(A=b.memoizedState.cachePool.pool),A!==w&&(b.flags|=2048)),m!==l&&m&&(u.child.flags|=8192),lg(u,u.updateQueue),Fn(u),null);case 4:return re(),l===null&&lx(u.stateNode.containerInfo),Fn(u),null;case 10:return Ho(u.type),Fn(u),null;case 19:if(U(ni),b=u.memoizedState,b===null)return Fn(u),null;if(w=(u.flags&128)!==0,A=b.rendering,A===null)if(w)kh(b,!1);else{if(Jn!==0||l!==null&&(l.flags&128)!==0)for(l=u.child;l!==null;){if(A=Xp(l),A!==null){for(u.flags|=128,kh(b,!1),l=A.updateQueue,u.updateQueue=l,lg(u,l),u.subtreeFlags=0,l=m,m=u.child;m!==null;)ZC(m,l),m=m.sibling;return $(ni,ni.current&1|2),tn&&Ko(u,b.treeForkCount),u.child}l=l.sibling}b.tail!==null&&wt()>fg&&(u.flags|=128,w=!0,kh(b,!1),u.lanes=4194304)}else{if(!w)if(l=Xp(A),l!==null){if(u.flags|=128,w=!0,l=l.updateQueue,u.updateQueue=l,lg(u,l),kh(b,!0),b.tail===null&&b.tailMode==="hidden"&&!A.alternate&&!tn)return Fn(u),null}else 2*wt()-b.renderingStartTime>fg&&m!==536870912&&(u.flags|=128,w=!0,kh(b,!1),u.lanes=4194304);b.isBackwards?(A.sibling=u.child,u.child=A):(l=b.last,l!==null?l.sibling=A:u.child=A,b.last=A)}return b.tail!==null?(l=b.tail,b.rendering=l,b.tail=l.sibling,b.renderingStartTime=wt(),l.sibling=null,m=ni.current,$(ni,w?m&1|2:m&1),tn&&Ko(u,b.treeForkCount),l):(Fn(u),null);case 22:case 23:return Hs(u),cv(),b=u.memoizedState!==null,l!==null?l.memoizedState!==null!==b&&(u.flags|=8192):b&&(u.flags|=8192),b?(m&536870912)!==0&&(u.flags&128)===0&&(Fn(u),u.subtreeFlags&6&&(u.flags|=8192)):Fn(u),m=u.updateQueue,m!==null&&lg(u,m.retryQueue),m=null,l!==null&&l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(m=l.memoizedState.cachePool.pool),b=null,u.memoizedState!==null&&u.memoizedState.cachePool!==null&&(b=u.memoizedState.cachePool.pool),b!==m&&(u.flags|=2048),l!==null&&U(Gl),null;case 24:return m=null,l!==null&&(m=l.memoizedState.cache),u.memoizedState.cache!==m&&(u.flags|=2048),Ho(fi),Fn(u),null;case 25:return null;case 30:return null}throw Error(i(156,u.tag))}function HB(l,u){switch($b(u),u.tag){case 1:return l=u.flags,l&65536?(u.flags=l&-65537|128,u):null;case 3:return Ho(fi),re(),l=u.flags,(l&65536)!==0&&(l&128)===0?(u.flags=l&-65537|128,u):null;case 26:case 27:case 5:return me(u),null;case 31:if(u.memoizedState!==null){if(Hs(u),u.alternate===null)throw Error(i(340));Vl()}return l=u.flags,l&65536?(u.flags=l&-65537|128,u):null;case 13:if(Hs(u),l=u.memoizedState,l!==null&&l.dehydrated!==null){if(u.alternate===null)throw Error(i(340));Vl()}return l=u.flags,l&65536?(u.flags=l&-65537|128,u):null;case 19:return U(ni),null;case 4:return re(),null;case 10:return Ho(u.type),null;case 22:case 23:return Hs(u),cv(),l!==null&&U(Gl),l=u.flags,l&65536?(u.flags=l&-65537|128,u):null;case 24:return Ho(fi),null;case 25:return null;default:return null}}function AN(l,u){switch($b(u),u.tag){case 3:Ho(fi),re();break;case 26:case 27:case 5:me(u);break;case 4:re();break;case 31:u.memoizedState!==null&&Hs(u);break;case 13:Hs(u);break;case 19:U(ni);break;case 10:Ho(u.type);break;case 22:case 23:Hs(u),cv(),l!==null&&U(Gl);break;case 24:Ho(fi)}}function Ch(l,u){try{var m=u.updateQueue,b=m!==null?m.lastEffect:null;if(b!==null){var w=b.next;m=w;do{if((m.tag&l)===l){b=void 0;var A=m.create,j=m.inst;b=A(),j.destroy=b}m=m.next}while(m!==w)}}catch(G){vn(u,u.return,G)}}function Hr(l,u,m){try{var b=u.updateQueue,w=b!==null?b.lastEffect:null;if(w!==null){var A=w.next;b=A;do{if((b.tag&l)===l){var j=b.inst,G=j.destroy;if(G!==void 0){j.destroy=void 0,w=u;var se=m,ve=G;try{ve()}catch(Ne){vn(w,se,Ne)}}}b=b.next}while(b!==A)}}catch(Ne){vn(u,u.return,Ne)}}function NN(l){var u=l.updateQueue;if(u!==null){var m=l.stateNode;try{_A(u,m)}catch(b){vn(l,l.return,b)}}}function TN(l,u,m){m.props=Jl(l.type,l.memoizedProps),m.state=l.memoizedState;try{m.componentWillUnmount()}catch(b){vn(l,u,b)}}function Ah(l,u){try{var m=l.ref;if(m!==null){switch(l.tag){case 26:case 27:case 5:var b=l.stateNode;break;case 30:b=l.stateNode;break;default:b=l.stateNode}typeof m=="function"?l.refCleanup=m(b):m.current=b}}catch(w){vn(l,u,w)}}function no(l,u){var m=l.ref,b=l.refCleanup;if(m!==null)if(typeof b=="function")try{b()}catch(w){vn(l,u,w)}finally{l.refCleanup=null,l=l.alternate,l!=null&&(l.refCleanup=null)}else if(typeof m=="function")try{m(null)}catch(w){vn(l,u,w)}else m.current=null}function MN(l){var u=l.type,m=l.memoizedProps,b=l.stateNode;try{e:switch(u){case"button":case"input":case"select":case"textarea":m.autoFocus&&b.focus();break e;case"img":m.src?b.src=m.src:m.srcSet&&(b.srcset=m.srcSet)}}catch(w){vn(l,l.return,w)}}function qv(l,u,m){try{var b=l.stateNode;fU(b,l.type,m,u),b[Ve]=u}catch(w){vn(l,l.return,w)}}function LN(l){return l.tag===5||l.tag===3||l.tag===26||l.tag===27&&Jr(l.type)||l.tag===4}function zv(l){e:for(;;){for(;l.sibling===null;){if(l.return===null||LN(l.return))return null;l=l.return}for(l.sibling.return=l.return,l=l.sibling;l.tag!==5&&l.tag!==6&&l.tag!==18;){if(l.tag===27&&Jr(l.type)||l.flags&2||l.child===null||l.tag===4)continue e;l.child.return=l,l=l.child}if(!(l.flags&2))return l.stateNode}}function Kv(l,u,m){var b=l.tag;if(b===5||b===6)l=l.stateNode,u?(m.nodeType===9?m.body:m.nodeName==="HTML"?m.ownerDocument.body:m).insertBefore(l,u):(u=m.nodeType===9?m.body:m.nodeName==="HTML"?m.ownerDocument.body:m,u.appendChild(l),m=m._reactRootContainer,m!=null||u.onclick!==null||(u.onclick=Uo));else if(b!==4&&(b===27&&Jr(l.type)&&(m=l.stateNode,u=null),l=l.child,l!==null))for(Kv(l,u,m),l=l.sibling;l!==null;)Kv(l,u,m),l=l.sibling}function cg(l,u,m){var b=l.tag;if(b===5||b===6)l=l.stateNode,u?m.insertBefore(l,u):m.appendChild(l);else if(b!==4&&(b===27&&Jr(l.type)&&(m=l.stateNode),l=l.child,l!==null))for(cg(l,u,m),l=l.sibling;l!==null;)cg(l,u,m),l=l.sibling}function ON(l){var u=l.stateNode,m=l.memoizedProps;try{for(var b=l.type,w=u.attributes;w.length;)u.removeAttributeNode(w[0]);zi(u,b,m),u[Fe]=l,u[Ve]=m}catch(A){vn(l,l.return,A)}}var Qo=!1,gi=!1,Vv=!1,PN=typeof WeakSet=="function"?WeakSet:Set,Mi=null;function WB(l,u){if(l=l.containerInfo,dx=Lg,l=VC(l),Fb(l)){if("selectionStart"in l)var m={start:l.selectionStart,end:l.selectionEnd};else e:{m=(m=l.ownerDocument)&&m.defaultView||window;var b=m.getSelection&&m.getSelection();if(b&&b.rangeCount!==0){m=b.anchorNode;var w=b.anchorOffset,A=b.focusNode;b=b.focusOffset;try{m.nodeType,A.nodeType}catch{m=null;break e}var j=0,G=-1,se=-1,ve=0,Ne=0,Ee=l,xe=null;t:for(;;){for(var we;Ee!==m||w!==0&&Ee.nodeType!==3||(G=j+w),Ee!==A||b!==0&&Ee.nodeType!==3||(se=j+b),Ee.nodeType===3&&(j+=Ee.nodeValue.length),(we=Ee.firstChild)!==null;)xe=Ee,Ee=we;for(;;){if(Ee===l)break t;if(xe===m&&++ve===w&&(G=j),xe===A&&++Ne===b&&(se=j),(we=Ee.nextSibling)!==null)break;Ee=xe,xe=Ee.parentNode}Ee=we}m=G===-1||se===-1?null:{start:G,end:se}}else m=null}m=m||{start:0,end:0}}else m=null;for(hx={focusedElem:l,selectionRange:m},Lg=!1,Mi=u;Mi!==null;)if(u=Mi,l=u.child,(u.subtreeFlags&1028)!==0&&l!==null)l.return=u,Mi=l;else for(;Mi!==null;){switch(u=Mi,A=u.alternate,l=u.flags,u.tag){case 0:if((l&4)!==0&&(l=u.updateQueue,l=l!==null?l.events:null,l!==null))for(m=0;m<l.length;m++)w=l[m],w.ref.impl=w.nextImpl;break;case 11:case 15:break;case 1:if((l&1024)!==0&&A!==null){l=void 0,m=u,w=A.memoizedProps,A=A.memoizedState,b=m.stateNode;try{var rt=Jl(m.type,w);l=b.getSnapshotBeforeUpdate(rt,A),b.__reactInternalSnapshotBeforeUpdate=l}catch(St){vn(m,m.return,St)}}break;case 3:if((l&1024)!==0){if(l=u.stateNode.containerInfo,m=l.nodeType,m===9)px(l);else if(m===1)switch(l.nodeName){case"HEAD":case"HTML":case"BODY":px(l);break;default:l.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if((l&1024)!==0)throw Error(i(163))}if(l=u.sibling,l!==null){l.return=u.return,Mi=l;break}Mi=u.return}}function EN(l,u,m){var b=m.flags;switch(m.tag){case 0:case 11:case 15:Jo(l,m),b&4&&Ch(5,m);break;case 1:if(Jo(l,m),b&4)if(l=m.stateNode,u===null)try{l.componentDidMount()}catch(j){vn(m,m.return,j)}else{var w=Jl(m.type,u.memoizedProps);u=u.memoizedState;try{l.componentDidUpdate(w,u,l.__reactInternalSnapshotBeforeUpdate)}catch(j){vn(m,m.return,j)}}b&64&&NN(m),b&512&&Ah(m,m.return);break;case 3:if(Jo(l,m),b&64&&(l=m.updateQueue,l!==null)){if(u=null,m.child!==null)switch(m.child.tag){case 27:case 5:u=m.child.stateNode;break;case 1:u=m.child.stateNode}try{_A(l,u)}catch(j){vn(m,m.return,j)}}break;case 27:u===null&&b&4&&ON(m);case 26:case 5:Jo(l,m),u===null&&b&4&&MN(m),b&512&&Ah(m,m.return);break;case 12:Jo(l,m);break;case 31:Jo(l,m),b&4&&DN(l,m);break;case 13:Jo(l,m),b&4&&FN(l,m),b&64&&(l=m.memoizedState,l!==null&&(l=l.dehydrated,l!==null&&(m=tU.bind(null,m),xU(l,m))));break;case 22:if(b=m.memoizedState!==null||Qo,!b){u=u!==null&&u.memoizedState!==null||gi,w=Qo;var A=gi;Qo=b,(gi=u)&&!A?Zo(l,m,(m.subtreeFlags&8772)!==0):Jo(l,m),Qo=w,gi=A}break;case 30:break;default:Jo(l,m)}}function jN(l){var u=l.alternate;u!==null&&(l.alternate=null,jN(u)),l.child=null,l.deletions=null,l.sibling=null,l.tag===5&&(u=l.stateNode,u!==null&&On(u)),l.stateNode=null,l.return=null,l.dependencies=null,l.memoizedProps=null,l.memoizedState=null,l.pendingProps=null,l.stateNode=null,l.updateQueue=null}var Kn=null,Ns=!1;function Yo(l,u,m){for(m=m.child;m!==null;)RN(l,u,m),m=m.sibling}function RN(l,u,m){if(ot&&typeof ot.onCommitFiberUnmount=="function")try{ot.onCommitFiberUnmount(pt,m)}catch{}switch(m.tag){case 26:gi||no(m,u),Yo(l,u,m),m.memoizedState?m.memoizedState.count--:m.stateNode&&(m=m.stateNode,m.parentNode.removeChild(m));break;case 27:gi||no(m,u);var b=Kn,w=Ns;Jr(m.type)&&(Kn=m.stateNode,Ns=!1),Yo(l,u,m),Rh(m.stateNode),Kn=b,Ns=w;break;case 5:gi||no(m,u);case 6:if(b=Kn,w=Ns,Kn=null,Yo(l,u,m),Kn=b,Ns=w,Kn!==null)if(Ns)try{(Kn.nodeType===9?Kn.body:Kn.nodeName==="HTML"?Kn.ownerDocument.body:Kn).removeChild(m.stateNode)}catch(A){vn(m,u,A)}else try{Kn.removeChild(m.stateNode)}catch(A){vn(m,u,A)}break;case 18:Kn!==null&&(Ns?(l=Kn,NT(l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l,m.stateNode),Pu(l)):NT(Kn,m.stateNode));break;case 4:b=Kn,w=Ns,Kn=m.stateNode.containerInfo,Ns=!0,Yo(l,u,m),Kn=b,Ns=w;break;case 0:case 11:case 14:case 15:Hr(2,m,u),gi||Hr(4,m,u),Yo(l,u,m);break;case 1:gi||(no(m,u),b=m.stateNode,typeof b.componentWillUnmount=="function"&&TN(m,u,b)),Yo(l,u,m);break;case 21:Yo(l,u,m);break;case 22:gi=(b=gi)||m.memoizedState!==null,Yo(l,u,m),gi=b;break;default:Yo(l,u,m)}}function DN(l,u){if(u.memoizedState===null&&(l=u.alternate,l!==null&&(l=l.memoizedState,l!==null))){l=l.dehydrated;try{Pu(l)}catch(m){vn(u,u.return,m)}}}function FN(l,u){if(u.memoizedState===null&&(l=u.alternate,l!==null&&(l=l.memoizedState,l!==null&&(l=l.dehydrated,l!==null))))try{Pu(l)}catch(m){vn(u,u.return,m)}}function GB(l){switch(l.tag){case 31:case 13:case 19:var u=l.stateNode;return u===null&&(u=l.stateNode=new PN),u;case 22:return l=l.stateNode,u=l._retryCache,u===null&&(u=l._retryCache=new PN),u;default:throw Error(i(435,l.tag))}}function ug(l,u){var m=GB(l);u.forEach(function(b){if(!m.has(b)){m.add(b);var w=nU.bind(null,l,b);b.then(w,w)}})}function Ts(l,u){var m=u.deletions;if(m!==null)for(var b=0;b<m.length;b++){var w=m[b],A=l,j=u,G=j;e:for(;G!==null;){switch(G.tag){case 27:if(Jr(G.type)){Kn=G.stateNode,Ns=!1;break e}break;case 5:Kn=G.stateNode,Ns=!1;break e;case 3:case 4:Kn=G.stateNode.containerInfo,Ns=!0;break e}G=G.return}if(Kn===null)throw Error(i(160));RN(A,j,w),Kn=null,Ns=!1,A=w.alternate,A!==null&&(A.return=null),w.return=null}if(u.subtreeFlags&13886)for(u=u.child;u!==null;)IN(u,l),u=u.sibling}var Da=null;function IN(l,u){var m=l.alternate,b=l.flags;switch(l.tag){case 0:case 11:case 14:case 15:Ts(u,l),Ms(l),b&4&&(Hr(3,l,l.return),Ch(3,l),Hr(5,l,l.return));break;case 1:Ts(u,l),Ms(l),b&512&&(gi||m===null||no(m,m.return)),b&64&&Qo&&(l=l.updateQueue,l!==null&&(b=l.callbacks,b!==null&&(m=l.shared.hiddenCallbacks,l.shared.hiddenCallbacks=m===null?b:m.concat(b))));break;case 26:var w=Da;if(Ts(u,l),Ms(l),b&512&&(gi||m===null||no(m,m.return)),b&4){var A=m!==null?m.memoizedState:null;if(b=l.memoizedState,m===null)if(b===null)if(l.stateNode===null){e:{b=l.type,m=l.memoizedProps,w=w.ownerDocument||w;t:switch(b){case"title":A=w.getElementsByTagName("title")[0],(!A||A[pn]||A[Fe]||A.namespaceURI==="http://www.w3.org/2000/svg"||A.hasAttribute("itemprop"))&&(A=w.createElement(b),w.head.insertBefore(A,w.querySelector("head > title"))),zi(A,b,m),A[Fe]=l,dn(A),b=A;break e;case"link":var j=IT("link","href",w).get(b+(m.href||""));if(j){for(var G=0;G<j.length;G++)if(A=j[G],A.getAttribute("href")===(m.href==null||m.href===""?null:m.href)&&A.getAttribute("rel")===(m.rel==null?null:m.rel)&&A.getAttribute("title")===(m.title==null?null:m.title)&&A.getAttribute("crossorigin")===(m.crossOrigin==null?null:m.crossOrigin)){j.splice(G,1);break t}}A=w.createElement(b),zi(A,b,m),w.head.appendChild(A);break;case"meta":if(j=IT("meta","content",w).get(b+(m.content||""))){for(G=0;G<j.length;G++)if(A=j[G],A.getAttribute("content")===(m.content==null?null:""+m.content)&&A.getAttribute("name")===(m.name==null?null:m.name)&&A.getAttribute("property")===(m.property==null?null:m.property)&&A.getAttribute("http-equiv")===(m.httpEquiv==null?null:m.httpEquiv)&&A.getAttribute("charset")===(m.charSet==null?null:m.charSet)){j.splice(G,1);break t}}A=w.createElement(b),zi(A,b,m),w.head.appendChild(A);break;default:throw Error(i(468,b))}A[Fe]=l,dn(A),b=A}l.stateNode=b}else BT(w,l.type,l.stateNode);else l.stateNode=FT(w,b,l.memoizedProps);else A!==b?(A===null?m.stateNode!==null&&(m=m.stateNode,m.parentNode.removeChild(m)):A.count--,b===null?BT(w,l.type,l.stateNode):FT(w,b,l.memoizedProps)):b===null&&l.stateNode!==null&&qv(l,l.memoizedProps,m.memoizedProps)}break;case 27:Ts(u,l),Ms(l),b&512&&(gi||m===null||no(m,m.return)),m!==null&&b&4&&qv(l,l.memoizedProps,m.memoizedProps);break;case 5:if(Ts(u,l),Ms(l),b&512&&(gi||m===null||no(m,m.return)),l.flags&32){w=l.stateNode;try{tu(w,"")}catch(rt){vn(l,l.return,rt)}}b&4&&l.stateNode!=null&&(w=l.memoizedProps,qv(l,w,m!==null?m.memoizedProps:w)),b&1024&&(Vv=!0);break;case 6:if(Ts(u,l),Ms(l),b&4){if(l.stateNode===null)throw Error(i(162));b=l.memoizedProps,m=l.stateNode;try{m.nodeValue=b}catch(rt){vn(l,l.return,rt)}}break;case 3:if(Ag=null,w=Da,Da=kg(u.containerInfo),Ts(u,l),Da=w,Ms(l),b&4&&m!==null&&m.memoizedState.isDehydrated)try{Pu(u.containerInfo)}catch(rt){vn(l,l.return,rt)}Vv&&(Vv=!1,BN(l));break;case 4:b=Da,Da=kg(l.stateNode.containerInfo),Ts(u,l),Ms(l),Da=b;break;case 12:Ts(u,l),Ms(l);break;case 31:Ts(u,l),Ms(l),b&4&&(b=l.updateQueue,b!==null&&(l.updateQueue=null,ug(l,b)));break;case 13:Ts(u,l),Ms(l),l.child.flags&8192&&l.memoizedState!==null!=(m!==null&&m.memoizedState!==null)&&(hg=wt()),b&4&&(b=l.updateQueue,b!==null&&(l.updateQueue=null,ug(l,b)));break;case 22:w=l.memoizedState!==null;var se=m!==null&&m.memoizedState!==null,ve=Qo,Ne=gi;if(Qo=ve||w,gi=Ne||se,Ts(u,l),gi=Ne,Qo=ve,Ms(l),b&8192)e:for(u=l.stateNode,u._visibility=w?u._visibility&-2:u._visibility|1,w&&(m===null||se||Qo||gi||Zl(l)),m=null,u=l;;){if(u.tag===5||u.tag===26){if(m===null){se=m=u;try{if(A=se.stateNode,w)j=A.style,typeof j.setProperty=="function"?j.setProperty("display","none","important"):j.display="none";else{G=se.stateNode;var Ee=se.memoizedProps.style,xe=Ee!=null&&Ee.hasOwnProperty("display")?Ee.display:null;G.style.display=xe==null||typeof xe=="boolean"?"":(""+xe).trim()}}catch(rt){vn(se,se.return,rt)}}}else if(u.tag===6){if(m===null){se=u;try{se.stateNode.nodeValue=w?"":se.memoizedProps}catch(rt){vn(se,se.return,rt)}}}else if(u.tag===18){if(m===null){se=u;try{var we=se.stateNode;w?TT(we,!0):TT(se.stateNode,!1)}catch(rt){vn(se,se.return,rt)}}}else if((u.tag!==22&&u.tag!==23||u.memoizedState===null||u===l)&&u.child!==null){u.child.return=u,u=u.child;continue}if(u===l)break e;for(;u.sibling===null;){if(u.return===null||u.return===l)break e;m===u&&(m=null),u=u.return}m===u&&(m=null),u.sibling.return=u.return,u=u.sibling}b&4&&(b=l.updateQueue,b!==null&&(m=b.retryQueue,m!==null&&(b.retryQueue=null,ug(l,m))));break;case 19:Ts(u,l),Ms(l),b&4&&(b=l.updateQueue,b!==null&&(l.updateQueue=null,ug(l,b)));break;case 30:break;case 21:break;default:Ts(u,l),Ms(l)}}function Ms(l){var u=l.flags;if(u&2){try{for(var m,b=l.return;b!==null;){if(LN(b)){m=b;break}b=b.return}if(m==null)throw Error(i(160));switch(m.tag){case 27:var w=m.stateNode,A=zv(l);cg(l,A,w);break;case 5:var j=m.stateNode;m.flags&32&&(tu(j,""),m.flags&=-33);var G=zv(l);cg(l,G,j);break;case 3:case 4:var se=m.stateNode.containerInfo,ve=zv(l);Kv(l,ve,se);break;default:throw Error(i(161))}}catch(Ne){vn(l,l.return,Ne)}l.flags&=-3}u&4096&&(l.flags&=-4097)}function BN(l){if(l.subtreeFlags&1024)for(l=l.child;l!==null;){var u=l;BN(u),u.tag===5&&u.flags&1024&&u.stateNode.reset(),l=l.sibling}}function Jo(l,u){if(u.subtreeFlags&8772)for(u=u.child;u!==null;)EN(l,u.alternate,u),u=u.sibling}function Zl(l){for(l=l.child;l!==null;){var u=l;switch(u.tag){case 0:case 11:case 14:case 15:Hr(4,u,u.return),Zl(u);break;case 1:no(u,u.return);var m=u.stateNode;typeof m.componentWillUnmount=="function"&&TN(u,u.return,m),Zl(u);break;case 27:Rh(u.stateNode);case 26:case 5:no(u,u.return),Zl(u);break;case 22:u.memoizedState===null&&Zl(u);break;case 30:Zl(u);break;default:Zl(u)}l=l.sibling}}function Zo(l,u,m){for(m=m&&(u.subtreeFlags&8772)!==0,u=u.child;u!==null;){var b=u.alternate,w=l,A=u,j=A.flags;switch(A.tag){case 0:case 11:case 15:Zo(w,A,m),Ch(4,A);break;case 1:if(Zo(w,A,m),b=A,w=b.stateNode,typeof w.componentDidMount=="function")try{w.componentDidMount()}catch(ve){vn(b,b.return,ve)}if(b=A,w=b.updateQueue,w!==null){var G=b.stateNode;try{var se=w.shared.hiddenCallbacks;if(se!==null)for(w.shared.hiddenCallbacks=null,w=0;w<se.length;w++)gA(se[w],G)}catch(ve){vn(b,b.return,ve)}}m&&j&64&&NN(A),Ah(A,A.return);break;case 27:ON(A);case 26:case 5:Zo(w,A,m),m&&b===null&&j&4&&MN(A),Ah(A,A.return);break;case 12:Zo(w,A,m);break;case 31:Zo(w,A,m),m&&j&4&&DN(w,A);break;case 13:Zo(w,A,m),m&&j&4&&FN(w,A);break;case 22:A.memoizedState===null&&Zo(w,A,m),Ah(A,A.return);break;case 30:break;default:Zo(w,A,m)}u=u.sibling}}function Hv(l,u){var m=null;l!==null&&l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(m=l.memoizedState.cachePool.pool),l=null,u.memoizedState!==null&&u.memoizedState.cachePool!==null&&(l=u.memoizedState.cachePool.pool),l!==m&&(l!=null&&l.refCount++,m!=null&&hh(m))}function Wv(l,u){l=null,u.alternate!==null&&(l=u.alternate.memoizedState.cache),u=u.memoizedState.cache,u!==l&&(u.refCount++,l!=null&&hh(l))}function Fa(l,u,m,b){if(u.subtreeFlags&10256)for(u=u.child;u!==null;)UN(l,u,m,b),u=u.sibling}function UN(l,u,m,b){var w=u.flags;switch(u.tag){case 0:case 11:case 15:Fa(l,u,m,b),w&2048&&Ch(9,u);break;case 1:Fa(l,u,m,b);break;case 3:Fa(l,u,m,b),w&2048&&(l=null,u.alternate!==null&&(l=u.alternate.memoizedState.cache),u=u.memoizedState.cache,u!==l&&(u.refCount++,l!=null&&hh(l)));break;case 12:if(w&2048){Fa(l,u,m,b),l=u.stateNode;try{var A=u.memoizedProps,j=A.id,G=A.onPostCommit;typeof G=="function"&&G(j,u.alternate===null?"mount":"update",l.passiveEffectDuration,-0)}catch(se){vn(u,u.return,se)}}else Fa(l,u,m,b);break;case 31:Fa(l,u,m,b);break;case 13:Fa(l,u,m,b);break;case 23:break;case 22:A=u.stateNode,j=u.alternate,u.memoizedState!==null?A._visibility&2?Fa(l,u,m,b):Nh(l,u):A._visibility&2?Fa(l,u,m,b):(A._visibility|=2,xu(l,u,m,b,(u.subtreeFlags&10256)!==0||!1)),w&2048&&Hv(j,u);break;case 24:Fa(l,u,m,b),w&2048&&Wv(u.alternate,u);break;default:Fa(l,u,m,b)}}function xu(l,u,m,b,w){for(w=w&&((u.subtreeFlags&10256)!==0||!1),u=u.child;u!==null;){var A=l,j=u,G=m,se=b,ve=j.flags;switch(j.tag){case 0:case 11:case 15:xu(A,j,G,se,w),Ch(8,j);break;case 23:break;case 22:var Ne=j.stateNode;j.memoizedState!==null?Ne._visibility&2?xu(A,j,G,se,w):Nh(A,j):(Ne._visibility|=2,xu(A,j,G,se,w)),w&&ve&2048&&Hv(j.alternate,j);break;case 24:xu(A,j,G,se,w),w&&ve&2048&&Wv(j.alternate,j);break;default:xu(A,j,G,se,w)}u=u.sibling}}function Nh(l,u){if(u.subtreeFlags&10256)for(u=u.child;u!==null;){var m=l,b=u,w=b.flags;switch(b.tag){case 22:Nh(m,b),w&2048&&Hv(b.alternate,b);break;case 24:Nh(m,b),w&2048&&Wv(b.alternate,b);break;default:Nh(m,b)}u=u.sibling}}var Th=8192;function Su(l,u,m){if(l.subtreeFlags&Th)for(l=l.child;l!==null;)qN(l,u,m),l=l.sibling}function qN(l,u,m){switch(l.tag){case 26:Su(l,u,m),l.flags&Th&&l.memoizedState!==null&&EU(m,Da,l.memoizedState,l.memoizedProps);break;case 5:Su(l,u,m);break;case 3:case 4:var b=Da;Da=kg(l.stateNode.containerInfo),Su(l,u,m),Da=b;break;case 22:l.memoizedState===null&&(b=l.alternate,b!==null&&b.memoizedState!==null?(b=Th,Th=16777216,Su(l,u,m),Th=b):Su(l,u,m));break;default:Su(l,u,m)}}function zN(l){var u=l.alternate;if(u!==null&&(l=u.child,l!==null)){u.child=null;do u=l.sibling,l.sibling=null,l=u;while(l!==null)}}function Mh(l){var u=l.deletions;if((l.flags&16)!==0){if(u!==null)for(var m=0;m<u.length;m++){var b=u[m];Mi=b,VN(b,l)}zN(l)}if(l.subtreeFlags&10256)for(l=l.child;l!==null;)KN(l),l=l.sibling}function KN(l){switch(l.tag){case 0:case 11:case 15:Mh(l),l.flags&2048&&Hr(9,l,l.return);break;case 3:Mh(l);break;case 12:Mh(l);break;case 22:var u=l.stateNode;l.memoizedState!==null&&u._visibility&2&&(l.return===null||l.return.tag!==13)?(u._visibility&=-3,dg(l)):Mh(l);break;default:Mh(l)}}function dg(l){var u=l.deletions;if((l.flags&16)!==0){if(u!==null)for(var m=0;m<u.length;m++){var b=u[m];Mi=b,VN(b,l)}zN(l)}for(l=l.child;l!==null;){switch(u=l,u.tag){case 0:case 11:case 15:Hr(8,u,u.return),dg(u);break;case 22:m=u.stateNode,m._visibility&2&&(m._visibility&=-3,dg(u));break;default:dg(u)}l=l.sibling}}function VN(l,u){for(;Mi!==null;){var m=Mi;switch(m.tag){case 0:case 11:case 15:Hr(8,m,u);break;case 23:case 22:if(m.memoizedState!==null&&m.memoizedState.cachePool!==null){var b=m.memoizedState.cachePool.pool;b!=null&&b.refCount++}break;case 24:hh(m.memoizedState.cache)}if(b=m.child,b!==null)b.return=m,Mi=b;else e:for(m=l;Mi!==null;){b=Mi;var w=b.sibling,A=b.return;if(jN(b),b===m){Mi=null;break e}if(w!==null){w.return=A,Mi=w;break e}Mi=A}}}var $B={getCacheForType:function(l){var u=Ui(fi),m=u.data.get(l);return m===void 0&&(m=l(),u.data.set(l,m)),m},cacheSignal:function(){return Ui(fi).controller.signal}},XB=typeof WeakMap=="function"?WeakMap:Map,gn=0,Nn=null,Xt=null,Jt=0,bn=0,Ws=null,Wr=!1,wu=!1,Gv=!1,er=0,Jn=0,Gr=0,ec=0,$v=0,Gs=0,ku=0,Lh=null,Ls=null,Xv=!1,hg=0,HN=0,fg=1/0,mg=null,$r=null,wi=0,Xr=null,Cu=null,tr=0,Qv=0,Yv=null,WN=null,Oh=0,Jv=null;function $s(){return(gn&2)!==0&&Jt!==0?Jt&-Jt:B.T!==null?sx():De()}function GN(){if(Gs===0)if((Jt&536870912)===0||tn){var l=Xn;Xn<<=1,(Xn&3932160)===0&&(Xn=262144),Gs=l}else Gs=536870912;return l=Vs.current,l!==null&&(l.flags|=32),Gs}function Os(l,u,m){(l===Nn&&(bn===2||bn===9)||l.cancelPendingCommit!==null)&&(Au(l,0),Qr(l,Jt,Gs,!1)),ti(l,m),((gn&2)===0||l!==Nn)&&(l===Nn&&((gn&2)===0&&(ec|=m),Jn===4&&Qr(l,Jt,Gs,!1)),io(l))}function $N(l,u,m){if((gn&6)!==0)throw Error(i(327));var b=!m&&(u&127)===0&&(u&l.expiredLanes)===0||ws(l,u),w=b?JB(l,u):ex(l,u,!0),A=b;do{if(w===0){wu&&!b&&Qr(l,u,0,!1);break}else{if(m=l.current.alternate,A&&!QB(m)){w=ex(l,u,!1),A=!1;continue}if(w===2){if(A=u,l.errorRecoveryDisabledLanes&A)var j=0;else j=l.pendingLanes&-536870913,j=j!==0?j:j&536870912?536870912:0;if(j!==0){u=j;e:{var G=l;w=Lh;var se=G.current.memoizedState.isDehydrated;if(se&&(Au(G,j).flags|=256),j=ex(G,j,!1),j!==2){if(Gv&&!se){G.errorRecoveryDisabledLanes|=A,ec|=A,w=4;break e}A=Ls,Ls=w,A!==null&&(Ls===null?Ls=A:Ls.push.apply(Ls,A))}w=j}if(A=!1,w!==2)continue}}if(w===1){Au(l,0),Qr(l,u,0,!0);break}e:{switch(b=l,A=w,A){case 0:case 1:throw Error(i(345));case 4:if((u&4194048)!==u)break;case 6:Qr(b,u,Gs,!Wr);break e;case 2:Ls=null;break;case 3:case 5:break;default:throw Error(i(329))}if((u&62914560)===u&&(w=hg+300-wt(),10<w)){if(Qr(b,u,Gs,!Wr),ds(b,0,!0)!==0)break e;tr=u,b.timeoutHandle=CT(XN.bind(null,b,m,Ls,mg,Xv,u,Gs,ec,ku,Wr,A,"Throttled",-0,0),w);break e}XN(b,m,Ls,mg,Xv,u,Gs,ec,ku,Wr,A,null,-0,0)}}break}while(!0);io(l)}function XN(l,u,m,b,w,A,j,G,se,ve,Ne,Ee,xe,we){if(l.timeoutHandle=-1,Ee=u.subtreeFlags,Ee&8192||(Ee&16785408)===16785408){Ee={stylesheets:null,count:0,imgCount:0,imgBytes:0,suspenseyImages:[],waitingForImages:!0,waitingForViewTransition:!1,unsuspend:Uo},qN(u,A,Ee);var rt=(A&62914560)===A?hg-wt():(A&4194048)===A?HN-wt():0;if(rt=jU(Ee,rt),rt!==null){tr=A,l.cancelPendingCommit=rt(iT.bind(null,l,u,A,m,b,w,j,G,se,Ne,Ee,null,xe,we)),Qr(l,A,j,!ve);return}}iT(l,u,A,m,b,w,j,G,se)}function QB(l){for(var u=l;;){var m=u.tag;if((m===0||m===11||m===15)&&u.flags&16384&&(m=u.updateQueue,m!==null&&(m=m.stores,m!==null)))for(var b=0;b<m.length;b++){var w=m[b],A=w.getSnapshot;w=w.value;try{if(!zs(A(),w))return!1}catch{return!1}}if(m=u.child,u.subtreeFlags&16384&&m!==null)m.return=u,u=m;else{if(u===l)break;for(;u.sibling===null;){if(u.return===null||u.return===l)return!0;u=u.return}u.sibling.return=u.return,u=u.sibling}}return!0}function Qr(l,u,m,b){u&=~$v,u&=~ec,l.suspendedLanes|=u,l.pingedLanes&=~u,b&&(l.warmLanes|=u),b=l.expirationTimes;for(var w=u;0<w;){var A=31-qe(w),j=1<<A;b[A]=-1,w&=~j}m!==0&&ui(l,m,u)}function pg(){return(gn&6)===0?(Ph(0),!1):!0}function Zv(){if(Xt!==null){if(bn===0)var l=Xt.return;else l=Xt,Vo=Hl=null,pv(l),gu=null,mh=0,l=Xt;for(;l!==null;)AN(l.alternate,l),l=l.return;Xt=null}}function Au(l,u){var m=l.timeoutHandle;m!==-1&&(l.timeoutHandle=-1,gU(m)),m=l.cancelPendingCommit,m!==null&&(l.cancelPendingCommit=null,m()),tr=0,Zv(),Nn=l,Xt=m=zo(l.current,null),Jt=u,bn=0,Ws=null,Wr=!1,wu=ws(l,u),Gv=!1,ku=Gs=$v=ec=Gr=Jn=0,Ls=Lh=null,Xv=!1,(u&8)!==0&&(u|=u&32);var b=l.entangledLanes;if(b!==0)for(l=l.entanglements,b&=u;0<b;){var w=31-qe(b),A=1<<w;u|=l[w],b&=~A}return er=u,Dp(),m}function QN(l,u){Et=null,B.H=Sh,u===pu||u===Vp?(u=hA(),bn=3):u===iv?(u=hA(),bn=4):bn=u===Ov?8:u!==null&&typeof u=="object"&&typeof u.then=="function"?6:1,Ws=u,Xt===null&&(Jn=1,sg(l,oa(u,l.current)))}function YN(){var l=Vs.current;return l===null?!0:(Jt&4194048)===Jt?ua===null:(Jt&62914560)===Jt||(Jt&536870912)!==0?l===ua:!1}function JN(){var l=B.H;return B.H=Sh,l===null?Sh:l}function ZN(){var l=B.A;return B.A=$B,l}function gg(){Jn=4,Wr||(Jt&4194048)!==Jt&&Vs.current!==null||(wu=!0),(Gr&134217727)===0&&(ec&134217727)===0||Nn===null||Qr(Nn,Jt,Gs,!1)}function ex(l,u,m){var b=gn;gn|=2;var w=JN(),A=ZN();(Nn!==l||Jt!==u)&&(mg=null,Au(l,u)),u=!1;var j=Jn;e:do try{if(bn!==0&&Xt!==null){var G=Xt,se=Ws;switch(bn){case 8:Zv(),j=6;break e;case 3:case 2:case 9:case 6:Vs.current===null&&(u=!0);var ve=bn;if(bn=0,Ws=null,Nu(l,G,se,ve),m&&wu){j=0;break e}break;default:ve=bn,bn=0,Ws=null,Nu(l,G,se,ve)}}YB(),j=Jn;break}catch(Ne){QN(l,Ne)}while(!0);return u&&l.shellSuspendCounter++,Vo=Hl=null,gn=b,B.H=w,B.A=A,Xt===null&&(Nn=null,Jt=0,Dp()),j}function YB(){for(;Xt!==null;)eT(Xt)}function JB(l,u){var m=gn;gn|=2;var b=JN(),w=ZN();Nn!==l||Jt!==u?(mg=null,fg=wt()+500,Au(l,u)):wu=ws(l,u);e:do try{if(bn!==0&&Xt!==null){u=Xt;var A=Ws;t:switch(bn){case 1:bn=0,Ws=null,Nu(l,u,A,1);break;case 2:case 9:if(uA(A)){bn=0,Ws=null,tT(u);break}u=function(){bn!==2&&bn!==9||Nn!==l||(bn=7),io(l)},A.then(u,u);break e;case 3:bn=7;break e;case 4:bn=5;break e;case 7:uA(A)?(bn=0,Ws=null,tT(u)):(bn=0,Ws=null,Nu(l,u,A,7));break;case 5:var j=null;switch(Xt.tag){case 26:j=Xt.memoizedState;case 5:case 27:var G=Xt;if(j?UT(j):G.stateNode.complete){bn=0,Ws=null;var se=G.sibling;if(se!==null)Xt=se;else{var ve=G.return;ve!==null?(Xt=ve,_g(ve)):Xt=null}break t}}bn=0,Ws=null,Nu(l,u,A,5);break;case 6:bn=0,Ws=null,Nu(l,u,A,6);break;case 8:Zv(),Jn=6;break e;default:throw Error(i(462))}}ZB();break}catch(Ne){QN(l,Ne)}while(!0);return Vo=Hl=null,B.H=b,B.A=w,gn=m,Xt!==null?0:(Nn=null,Jt=0,Dp(),Jn)}function ZB(){for(;Xt!==null&&!kt();)eT(Xt)}function eT(l){var u=kN(l.alternate,l,er);l.memoizedProps=l.pendingProps,u===null?_g(l):Xt=u}function tT(l){var u=l,m=u.alternate;switch(u.tag){case 15:case 0:u=yN(m,u,u.pendingProps,u.type,void 0,Jt);break;case 11:u=yN(m,u,u.pendingProps,u.type.render,u.ref,Jt);break;case 5:pv(u);default:AN(m,u),u=Xt=ZC(u,er),u=kN(m,u,er)}l.memoizedProps=l.pendingProps,u===null?_g(l):Xt=u}function Nu(l,u,m,b){Vo=Hl=null,pv(u),gu=null,mh=0;var w=u.return;try{if(qB(l,w,u,m,Jt)){Jn=1,sg(l,oa(m,l.current)),Xt=null;return}}catch(A){if(w!==null)throw Xt=w,A;Jn=1,sg(l,oa(m,l.current)),Xt=null;return}u.flags&32768?(tn||b===1?l=!0:wu||(Jt&536870912)!==0?l=!1:(Wr=l=!0,(b===2||b===9||b===3||b===6)&&(b=Vs.current,b!==null&&b.tag===13&&(b.flags|=16384))),nT(u,l)):_g(u)}function _g(l){var u=l;do{if((u.flags&32768)!==0){nT(u,Wr);return}l=u.return;var m=VB(u.alternate,u,er);if(m!==null){Xt=m;return}if(u=u.sibling,u!==null){Xt=u;return}Xt=u=l}while(u!==null);Jn===0&&(Jn=5)}function nT(l,u){do{var m=HB(l.alternate,l);if(m!==null){m.flags&=32767,Xt=m;return}if(m=l.return,m!==null&&(m.flags|=32768,m.subtreeFlags=0,m.deletions=null),!u&&(l=l.sibling,l!==null)){Xt=l;return}Xt=l=m}while(l!==null);Jn=6,Xt=null}function iT(l,u,m,b,w,A,j,G,se){l.cancelPendingCommit=null;do yg();while(wi!==0);if((gn&6)!==0)throw Error(i(327));if(u!==null){if(u===l.current)throw Error(i(177));if(A=u.lanes|u.childLanes,A|=zb,Ln(l,m,A,j,G,se),l===Nn&&(Xt=Nn=null,Jt=0),Cu=u,Xr=l,tr=m,Qv=A,Yv=w,WN=b,(u.subtreeFlags&10256)!==0||(u.flags&10256)!==0?(l.callbackNode=null,l.callbackPriority=0,iU(ye,function(){return lT(),null})):(l.callbackNode=null,l.callbackPriority=0),b=(u.flags&13878)!==0,(u.subtreeFlags&13878)!==0||b){b=B.T,B.T=null,w=H.p,H.p=2,j=gn,gn|=4;try{WB(l,u,m)}finally{gn=j,H.p=w,B.T=b}}wi=1,sT(),aT(),oT()}}function sT(){if(wi===1){wi=0;var l=Xr,u=Cu,m=(u.flags&13878)!==0;if((u.subtreeFlags&13878)!==0||m){m=B.T,B.T=null;var b=H.p;H.p=2;var w=gn;gn|=4;try{IN(u,l);var A=hx,j=VC(l.containerInfo),G=A.focusedElem,se=A.selectionRange;if(j!==G&&G&&G.ownerDocument&&KC(G.ownerDocument.documentElement,G)){if(se!==null&&Fb(G)){var ve=se.start,Ne=se.end;if(Ne===void 0&&(Ne=ve),"selectionStart"in G)G.selectionStart=ve,G.selectionEnd=Math.min(Ne,G.value.length);else{var Ee=G.ownerDocument||document,xe=Ee&&Ee.defaultView||window;if(xe.getSelection){var we=xe.getSelection(),rt=G.textContent.length,St=Math.min(se.start,rt),Cn=se.end===void 0?St:Math.min(se.end,rt);!we.extend&&St>Cn&&(j=Cn,Cn=St,St=j);var pe=zC(G,St),le=zC(G,Cn);if(pe&&le&&(we.rangeCount!==1||we.anchorNode!==pe.node||we.anchorOffset!==pe.offset||we.focusNode!==le.node||we.focusOffset!==le.offset)){var be=Ee.createRange();be.setStart(pe.node,pe.offset),we.removeAllRanges(),St>Cn?(we.addRange(be),we.extend(le.node,le.offset)):(be.setEnd(le.node,le.offset),we.addRange(be))}}}}for(Ee=[],we=G;we=we.parentNode;)we.nodeType===1&&Ee.push({element:we,left:we.scrollLeft,top:we.scrollTop});for(typeof G.focus=="function"&&G.focus(),G=0;G<Ee.length;G++){var Oe=Ee[G];Oe.element.scrollLeft=Oe.left,Oe.element.scrollTop=Oe.top}}Lg=!!dx,hx=dx=null}finally{gn=w,H.p=b,B.T=m}}l.current=u,wi=2}}function aT(){if(wi===2){wi=0;var l=Xr,u=Cu,m=(u.flags&8772)!==0;if((u.subtreeFlags&8772)!==0||m){m=B.T,B.T=null;var b=H.p;H.p=2;var w=gn;gn|=4;try{EN(l,u.alternate,u)}finally{gn=w,H.p=b,B.T=m}}wi=3}}function oT(){if(wi===4||wi===3){wi=0,Pt();var l=Xr,u=Cu,m=tr,b=WN;(u.subtreeFlags&10256)!==0||(u.flags&10256)!==0?wi=5:(wi=0,Cu=Xr=null,rT(l,l.pendingLanes));var w=l.pendingLanes;if(w===0&&($r=null),Pe(m),u=u.stateNode,ot&&typeof ot.onCommitFiberRoot=="function")try{ot.onCommitFiberRoot(pt,u,void 0,(u.current.flags&128)===128)}catch{}if(b!==null){u=B.T,w=H.p,H.p=2,B.T=null;try{for(var A=l.onRecoverableError,j=0;j<b.length;j++){var G=b[j];A(G.value,{componentStack:G.stack})}}finally{B.T=u,H.p=w}}(tr&3)!==0&&yg(),io(l),w=l.pendingLanes,(m&261930)!==0&&(w&42)!==0?l===Jv?Oh++:(Oh=0,Jv=l):Oh=0,Ph(0)}}function rT(l,u){(l.pooledCacheLanes&=u)===0&&(u=l.pooledCache,u!=null&&(l.pooledCache=null,hh(u)))}function yg(){return sT(),aT(),oT(),lT()}function lT(){if(wi!==5)return!1;var l=Xr,u=Qv;Qv=0;var m=Pe(tr),b=B.T,w=H.p;try{H.p=32>m?32:m,B.T=null,m=Yv,Yv=null;var A=Xr,j=tr;if(wi=0,Cu=Xr=null,tr=0,(gn&6)!==0)throw Error(i(331));var G=gn;if(gn|=4,KN(A.current),UN(A,A.current,j,m),gn=G,Ph(0,!1),ot&&typeof ot.onPostCommitFiberRoot=="function")try{ot.onPostCommitFiberRoot(pt,A)}catch{}return!0}finally{H.p=w,B.T=b,rT(l,u)}}function cT(l,u,m){u=oa(m,u),u=Lv(l.stateNode,u,2),l=zr(l,u,2),l!==null&&(ti(l,2),io(l))}function vn(l,u,m){if(l.tag===3)cT(l,l,m);else for(;u!==null;){if(u.tag===3){cT(u,l,m);break}else if(u.tag===1){var b=u.stateNode;if(typeof u.type.getDerivedStateFromError=="function"||typeof b.componentDidCatch=="function"&&($r===null||!$r.has(b))){l=oa(m,l),m=uN(2),b=zr(u,m,2),b!==null&&(dN(m,b,u,l),ti(b,2),io(b));break}}u=u.return}}function tx(l,u,m){var b=l.pingCache;if(b===null){b=l.pingCache=new XB;var w=new Set;b.set(u,w)}else w=b.get(u),w===void 0&&(w=new Set,b.set(u,w));w.has(m)||(Gv=!0,w.add(m),l=eU.bind(null,l,u,m),u.then(l,l))}function eU(l,u,m){var b=l.pingCache;b!==null&&b.delete(u),l.pingedLanes|=l.suspendedLanes&m,l.warmLanes&=~m,Nn===l&&(Jt&m)===m&&(Jn===4||Jn===3&&(Jt&62914560)===Jt&&300>wt()-hg?(gn&2)===0&&Au(l,0):$v|=m,ku===Jt&&(ku=0)),io(l)}function uT(l,u){u===0&&(u=it()),l=zl(l,u),l!==null&&(ti(l,u),io(l))}function tU(l){var u=l.memoizedState,m=0;u!==null&&(m=u.retryLane),uT(l,m)}function nU(l,u){var m=0;switch(l.tag){case 31:case 13:var b=l.stateNode,w=l.memoizedState;w!==null&&(m=w.retryLane);break;case 19:b=l.stateNode;break;case 22:b=l.stateNode._retryCache;break;default:throw Error(i(314))}b!==null&&b.delete(u),uT(l,m)}function iU(l,u){return ft(l,u)}var bg=null,Tu=null,nx=!1,vg=!1,ix=!1,Yr=0;function io(l){l!==Tu&&l.next===null&&(Tu===null?bg=Tu=l:Tu=Tu.next=l),vg=!0,nx||(nx=!0,aU())}function Ph(l,u){if(!ix&&vg){ix=!0;do for(var m=!1,b=bg;b!==null;){if(l!==0){var w=b.pendingLanes;if(w===0)var A=0;else{var j=b.suspendedLanes,G=b.pingedLanes;A=(1<<31-qe(42|l)+1)-1,A&=w&~(j&~G),A=A&201326741?A&201326741|1:A?A|2:0}A!==0&&(m=!0,mT(b,A))}else A=Jt,A=ds(b,b===Nn?A:0,b.cancelPendingCommit!==null||b.timeoutHandle!==-1),(A&3)===0||ws(b,A)||(m=!0,mT(b,A));b=b.next}while(m);ix=!1}}function sU(){dT()}function dT(){vg=nx=!1;var l=0;Yr!==0&&pU()&&(l=Yr);for(var u=wt(),m=null,b=bg;b!==null;){var w=b.next,A=hT(b,u);A===0?(b.next=null,m===null?bg=w:m.next=w,w===null&&(Tu=m)):(m=b,(l!==0||(A&3)!==0)&&(vg=!0)),b=w}wi!==0&&wi!==5||Ph(l),Yr!==0&&(Yr=0)}function hT(l,u){for(var m=l.suspendedLanes,b=l.pingedLanes,w=l.expirationTimes,A=l.pendingLanes&-62914561;0<A;){var j=31-qe(A),G=1<<j,se=w[j];se===-1?((G&m)===0||(G&b)!==0)&&(w[j]=Le(G,u)):se<=u&&(l.expiredLanes|=G),A&=~G}if(u=Nn,m=Jt,m=ds(l,l===u?m:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),b=l.callbackNode,m===0||l===u&&(bn===2||bn===9)||l.cancelPendingCommit!==null)return b!==null&&b!==null&&mt(b),l.callbackNode=null,l.callbackPriority=0;if((m&3)===0||ws(l,m)){if(u=m&-m,u===l.callbackPriority)return u;switch(b!==null&&mt(b),Pe(m)){case 2:case 8:m=ce;break;case 32:m=ye;break;case 268435456:m=Me;break;default:m=ye}return b=fT.bind(null,l),m=ft(m,b),l.callbackPriority=u,l.callbackNode=m,u}return b!==null&&b!==null&&mt(b),l.callbackPriority=2,l.callbackNode=null,2}function fT(l,u){if(wi!==0&&wi!==5)return l.callbackNode=null,l.callbackPriority=0,null;var m=l.callbackNode;if(yg()&&l.callbackNode!==m)return null;var b=Jt;return b=ds(l,l===Nn?b:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),b===0?null:($N(l,b,u),hT(l,wt()),l.callbackNode!=null&&l.callbackNode===m?fT.bind(null,l):null)}function mT(l,u){if(yg())return null;$N(l,u,!0)}function aU(){_U(function(){(gn&6)!==0?ft(on,sU):dT()})}function sx(){if(Yr===0){var l=fu;l===0&&(l=Rn,Rn<<=1,(Rn&261888)===0&&(Rn=256)),Yr=l}return Yr}function pT(l){return l==null||typeof l=="symbol"||typeof l=="boolean"?null:typeof l=="function"?l:Tp(""+l)}function gT(l,u){var m=u.ownerDocument.createElement("input");return m.name=u.name,m.value=u.value,l.id&&m.setAttribute("form",l.id),u.parentNode.insertBefore(m,u),l=new FormData(l),m.parentNode.removeChild(m),l}function oU(l,u,m,b,w){if(u==="submit"&&m&&m.stateNode===w){var A=pT((w[Ve]||null).action),j=b.submitter;j&&(u=(u=j[Ve]||null)?pT(u.formAction):j.getAttribute("formAction"),u!==null&&(A=u,j=null));var G=new Pp("action","action",null,b,w);l.push({event:G,listeners:[{instance:null,listener:function(){if(b.defaultPrevented){if(Yr!==0){var se=j?gT(w,j):new FormData(w);kv(m,{pending:!0,data:se,method:w.method,action:A},null,se)}}else typeof A=="function"&&(G.preventDefault(),se=j?gT(w,j):new FormData(w),kv(m,{pending:!0,data:se,method:w.method,action:A},A,se))},currentTarget:w}]})}}for(var ax=0;ax<qb.length;ax++){var ox=qb[ax],rU=ox.toLowerCase(),lU=ox[0].toUpperCase()+ox.slice(1);Ra(rU,"on"+lU)}Ra(GC,"onAnimationEnd"),Ra($C,"onAnimationIteration"),Ra(XC,"onAnimationStart"),Ra("dblclick","onDoubleClick"),Ra("focusin","onFocus"),Ra("focusout","onBlur"),Ra(kB,"onTransitionRun"),Ra(CB,"onTransitionStart"),Ra(AB,"onTransitionCancel"),Ra(QC,"onTransitionEnd"),Si("onMouseEnter",["mouseout","mouseover"]),Si("onMouseLeave",["mouseout","mouseover"]),Si("onPointerEnter",["pointerout","pointerover"]),Si("onPointerLeave",["pointerout","pointerover"]),ks("onChange","change click focusin focusout input keydown keyup selectionchange".split(" ")),ks("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")),ks("onBeforeInput",["compositionend","keypress","textInput","paste"]),ks("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" ")),ks("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" ")),ks("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Eh="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(" "),cU=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(Eh));function _T(l,u){u=(u&4)!==0;for(var m=0;m<l.length;m++){var b=l[m],w=b.event;b=b.listeners;e:{var A=void 0;if(u)for(var j=b.length-1;0<=j;j--){var G=b[j],se=G.instance,ve=G.currentTarget;if(G=G.listener,se!==A&&w.isPropagationStopped())break e;A=G,w.currentTarget=ve;try{A(w)}catch(Ne){Rp(Ne)}w.currentTarget=null,A=se}else for(j=0;j<b.length;j++){if(G=b[j],se=G.instance,ve=G.currentTarget,G=G.listener,se!==A&&w.isPropagationStopped())break e;A=G,w.currentTarget=ve;try{A(w)}catch(Ne){Rp(Ne)}w.currentTarget=null,A=se}}}}function Qt(l,u){var m=u[ht];m===void 0&&(m=u[ht]=new Set);var b=l+"__bubble";m.has(b)||(yT(u,l,2,!1),m.add(b))}function rx(l,u,m){var b=0;u&&(b|=4),yT(m,l,b,u)}var xg="_reactListening"+Math.random().toString(36).slice(2);function lx(l){if(!l[xg]){l[xg]=!0,Xi.forEach(function(m){m!=="selectionchange"&&(cU.has(m)||rx(m,!1,l),rx(m,!0,l))});var u=l.nodeType===9?l:l.ownerDocument;u===null||u[xg]||(u[xg]=!0,rx("selectionchange",!1,u))}}function yT(l,u,m,b){switch(GT(u)){case 2:var w=FU;break;case 8:w=IU;break;default:w=wx}m=w.bind(null,u,m,l),w=void 0,!Tb||u!=="touchstart"&&u!=="touchmove"&&u!=="wheel"||(w=!0),b?w!==void 0?l.addEventListener(u,m,{capture:!0,passive:w}):l.addEventListener(u,m,!0):w!==void 0?l.addEventListener(u,m,{passive:w}):l.addEventListener(u,m,!1)}function cx(l,u,m,b,w){var A=b;if((u&1)===0&&(u&2)===0&&b!==null)e:for(;;){if(b===null)return;var j=b.tag;if(j===3||j===4){var G=b.stateNode.containerInfo;if(G===w)break;if(j===4)for(j=b.return;j!==null;){var se=j.tag;if((se===3||se===4)&&j.stateNode.containerInfo===w)return;j=j.return}for(;G!==null;){if(j=qn(G),j===null)return;if(se=j.tag,se===5||se===6||se===26||se===27){b=A=j;continue e}G=G.parentNode}}b=b.return}wC(function(){var ve=A,Ne=Ab(m),Ee=[];e:{var xe=YC.get(l);if(xe!==void 0){var we=Pp,rt=l;switch(l){case"keypress":if(Lp(m)===0)break e;case"keydown":case"keyup":we=nB;break;case"focusin":rt="focus",we=Pb;break;case"focusout":rt="blur",we=Pb;break;case"beforeblur":case"afterblur":we=Pb;break;case"click":if(m.button===2)break e;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":we=AC;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":we=VI;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":we=aB;break;case GC:case $C:case XC:we=GI;break;case QC:we=rB;break;case"scroll":case"scrollend":we=zI;break;case"wheel":we=cB;break;case"copy":case"cut":case"paste":we=XI;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":we=TC;break;case"toggle":case"beforetoggle":we=dB}var St=(u&4)!==0,Cn=!St&&(l==="scroll"||l==="scrollend"),pe=St?xe!==null?xe+"Capture":null:xe;St=[];for(var le=ve,be;le!==null;){var Oe=le;if(be=Oe.stateNode,Oe=Oe.tag,Oe!==5&&Oe!==26&&Oe!==27||be===null||pe===null||(Oe=th(le,pe),Oe!=null&&St.push(jh(le,Oe,be))),Cn)break;le=le.return}0<St.length&&(xe=new we(xe,rt,null,m,Ne),Ee.push({event:xe,listeners:St}))}}if((u&7)===0){e:{if(xe=l==="mouseover"||l==="pointerover",we=l==="mouseout"||l==="pointerout",xe&&m!==Cb&&(rt=m.relatedTarget||m.fromElement)&&(qn(rt)||rt[st]))break e;if((we||xe)&&(xe=Ne.window===Ne?Ne:(xe=Ne.ownerDocument)?xe.defaultView||xe.parentWindow:window,we?(rt=m.relatedTarget||m.toElement,we=ve,rt=rt?qn(rt):null,rt!==null&&(Cn=a(rt),St=rt.tag,rt!==Cn||St!==5&&St!==27&&St!==6)&&(rt=null)):(we=null,rt=ve),we!==rt)){if(St=AC,Oe="onMouseLeave",pe="onMouseEnter",le="mouse",(l==="pointerout"||l==="pointerover")&&(St=TC,Oe="onPointerLeave",pe="onPointerEnter",le="pointer"),Cn=we==null?xe:Qn(we),be=rt==null?xe:Qn(rt),xe=new St(Oe,le+"leave",we,m,Ne),xe.target=Cn,xe.relatedTarget=be,Oe=null,qn(Ne)===ve&&(St=new St(pe,le+"enter",rt,m,Ne),St.target=be,St.relatedTarget=Cn,Oe=St),Cn=Oe,we&&rt)t:{for(St=uU,pe=we,le=rt,be=0,Oe=pe;Oe;Oe=St(Oe))be++;Oe=0;for(var yt=le;yt;yt=St(yt))Oe++;for(;0<be-Oe;)pe=St(pe),be--;for(;0<Oe-be;)le=St(le),Oe--;for(;be--;){if(pe===le||le!==null&&pe===le.alternate){St=pe;break t}pe=St(pe),le=St(le)}St=null}else St=null;we!==null&&bT(Ee,xe,we,St,!1),rt!==null&&Cn!==null&&bT(Ee,Cn,rt,St,!0)}}e:{if(xe=ve?Qn(ve):window,we=xe.nodeName&&xe.nodeName.toLowerCase(),we==="select"||we==="input"&&xe.type==="file")var hn=DC;else if(jC(xe))if(FC)hn=xB;else{hn=bB;var ut=yB}else we=xe.nodeName,!we||we.toLowerCase()!=="input"||xe.type!=="checkbox"&&xe.type!=="radio"?ve&&kb(ve.elementType)&&(hn=DC):hn=vB;if(hn&&(hn=hn(l,ve))){RC(Ee,hn,m,Ne);break e}ut&&ut(l,xe,ve),l==="focusout"&&ve&&xe.type==="number"&&ve.memoizedProps.value!=null&&wb(xe,"number",xe.value)}switch(ut=ve?Qn(ve):window,l){case"focusin":(jC(ut)||ut.contentEditable==="true")&&(au=ut,Ib=ve,ch=null);break;case"focusout":ch=Ib=au=null;break;case"mousedown":Bb=!0;break;case"contextmenu":case"mouseup":case"dragend":Bb=!1,HC(Ee,m,Ne);break;case"selectionchange":if(wB)break;case"keydown":case"keyup":HC(Ee,m,Ne)}var Ft;if(jb)e:{switch(l){case"compositionstart":var Zt="onCompositionStart";break e;case"compositionend":Zt="onCompositionEnd";break e;case"compositionupdate":Zt="onCompositionUpdate";break e}Zt=void 0}else su?PC(l,m)&&(Zt="onCompositionEnd"):l==="keydown"&&m.keyCode===229&&(Zt="onCompositionStart");Zt&&(MC&&m.locale!=="ko"&&(su||Zt!=="onCompositionStart"?Zt==="onCompositionEnd"&&su&&(Ft=kC()):(Rr=Ne,Mb="value"in Rr?Rr.value:Rr.textContent,su=!0)),ut=Sg(ve,Zt),0<ut.length&&(Zt=new NC(Zt,l,null,m,Ne),Ee.push({event:Zt,listeners:ut}),Ft?Zt.data=Ft:(Ft=EC(m),Ft!==null&&(Zt.data=Ft)))),(Ft=fB?mB(l,m):pB(l,m))&&(Zt=Sg(ve,"onBeforeInput"),0<Zt.length&&(ut=new NC("onBeforeInput","beforeinput",null,m,Ne),Ee.push({event:ut,listeners:Zt}),ut.data=Ft)),oU(Ee,l,ve,m,Ne)}_T(Ee,u)})}function jh(l,u,m){return{instance:l,listener:u,currentTarget:m}}function Sg(l,u){for(var m=u+"Capture",b=[];l!==null;){var w=l,A=w.stateNode;if(w=w.tag,w!==5&&w!==26&&w!==27||A===null||(w=th(l,m),w!=null&&b.unshift(jh(l,w,A)),w=th(l,u),w!=null&&b.push(jh(l,w,A))),l.tag===3)return b;l=l.return}return[]}function uU(l){if(l===null)return null;do l=l.return;while(l&&l.tag!==5&&l.tag!==27);return l||null}function bT(l,u,m,b,w){for(var A=u._reactName,j=[];m!==null&&m!==b;){var G=m,se=G.alternate,ve=G.stateNode;if(G=G.tag,se!==null&&se===b)break;G!==5&&G!==26&&G!==27||ve===null||(se=ve,w?(ve=th(m,A),ve!=null&&j.unshift(jh(m,ve,se))):w||(ve=th(m,A),ve!=null&&j.push(jh(m,ve,se)))),m=m.return}j.length!==0&&l.push({event:u,listeners:j})}var dU=/\r\n?/g,hU=/\u0000|\uFFFD/g;function vT(l){return(typeof l=="string"?l:""+l).replace(dU,`
`).replace(hU,"")}function xT(l,u){return u=vT(u),vT(l)===u}function kn(l,u,m,b,w,A){switch(m){case"children":typeof b=="string"?u==="body"||u==="textarea"&&b===""||tu(l,b):(typeof b=="number"||typeof b=="bigint")&&u!=="body"&&tu(l,""+b);break;case"className":Cs(l,"class",b);break;case"tabIndex":Cs(l,"tabindex",b);break;case"dir":case"role":case"viewBox":case"width":case"height":Cs(l,m,b);break;case"style":xC(l,b,A);break;case"data":if(u!=="object"){Cs(l,"data",b);break}case"src":case"href":if(b===""&&(u!=="a"||m!=="href")){l.removeAttribute(m);break}if(b==null||typeof b=="function"||typeof b=="symbol"||typeof b=="boolean"){l.removeAttribute(m);break}b=Tp(""+b),l.setAttribute(m,b);break;case"action":case"formAction":if(typeof b=="function"){l.setAttribute(m,"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 A=="function"&&(m==="formAction"?(u!=="input"&&kn(l,u,"name",w.name,w,null),kn(l,u,"formEncType",w.formEncType,w,null),kn(l,u,"formMethod",w.formMethod,w,null),kn(l,u,"formTarget",w.formTarget,w,null)):(kn(l,u,"encType",w.encType,w,null),kn(l,u,"method",w.method,w,null),kn(l,u,"target",w.target,w,null)));if(b==null||typeof b=="symbol"||typeof b=="boolean"){l.removeAttribute(m);break}b=Tp(""+b),l.setAttribute(m,b);break;case"onClick":b!=null&&(l.onclick=Uo);break;case"onScroll":b!=null&&Qt("scroll",l);break;case"onScrollEnd":b!=null&&Qt("scrollend",l);break;case"dangerouslySetInnerHTML":if(b!=null){if(typeof b!="object"||!("__html"in b))throw Error(i(61));if(m=b.__html,m!=null){if(w.children!=null)throw Error(i(60));l.innerHTML=m}}break;case"multiple":l.multiple=b&&typeof b!="function"&&typeof b!="symbol";break;case"muted":l.muted=b&&typeof b!="function"&&typeof b!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(b==null||typeof b=="function"||typeof b=="boolean"||typeof b=="symbol"){l.removeAttribute("xlink:href");break}m=Tp(""+b),l.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",m);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":b!=null&&typeof b!="function"&&typeof b!="symbol"?l.setAttribute(m,""+b):l.removeAttribute(m);break;case"inert":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":b&&typeof b!="function"&&typeof b!="symbol"?l.setAttribute(m,""):l.removeAttribute(m);break;case"capture":case"download":b===!0?l.setAttribute(m,""):b!==!1&&b!=null&&typeof b!="function"&&typeof b!="symbol"?l.setAttribute(m,b):l.removeAttribute(m);break;case"cols":case"rows":case"size":case"span":b!=null&&typeof b!="function"&&typeof b!="symbol"&&!isNaN(b)&&1<=b?l.setAttribute(m,b):l.removeAttribute(m);break;case"rowSpan":case"start":b==null||typeof b=="function"||typeof b=="symbol"||isNaN(b)?l.removeAttribute(m):l.setAttribute(m,b);break;case"popover":Qt("beforetoggle",l),Qt("toggle",l),zn(l,"popover",b);break;case"xlinkActuate":hi(l,"http://www.w3.org/1999/xlink","xlink:actuate",b);break;case"xlinkArcrole":hi(l,"http://www.w3.org/1999/xlink","xlink:arcrole",b);break;case"xlinkRole":hi(l,"http://www.w3.org/1999/xlink","xlink:role",b);break;case"xlinkShow":hi(l,"http://www.w3.org/1999/xlink","xlink:show",b);break;case"xlinkTitle":hi(l,"http://www.w3.org/1999/xlink","xlink:title",b);break;case"xlinkType":hi(l,"http://www.w3.org/1999/xlink","xlink:type",b);break;case"xmlBase":hi(l,"http://www.w3.org/XML/1998/namespace","xml:base",b);break;case"xmlLang":hi(l,"http://www.w3.org/XML/1998/namespace","xml:lang",b);break;case"xmlSpace":hi(l,"http://www.w3.org/XML/1998/namespace","xml:space",b);break;case"is":zn(l,"is",b);break;case"innerText":case"textContent":break;default:(!(2<m.length)||m[0]!=="o"&&m[0]!=="O"||m[1]!=="n"&&m[1]!=="N")&&(m=UI.get(m)||m,zn(l,m,b))}}function ux(l,u,m,b,w,A){switch(m){case"style":xC(l,b,A);break;case"dangerouslySetInnerHTML":if(b!=null){if(typeof b!="object"||!("__html"in b))throw Error(i(61));if(m=b.__html,m!=null){if(w.children!=null)throw Error(i(60));l.innerHTML=m}}break;case"children":typeof b=="string"?tu(l,b):(typeof b=="number"||typeof b=="bigint")&&tu(l,""+b);break;case"onScroll":b!=null&&Qt("scroll",l);break;case"onScrollEnd":b!=null&&Qt("scrollend",l);break;case"onClick":b!=null&&(l.onclick=Uo);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!di.hasOwnProperty(m))e:{if(m[0]==="o"&&m[1]==="n"&&(w=m.endsWith("Capture"),u=m.slice(2,w?m.length-7:void 0),A=l[Ve]||null,A=A!=null?A[m]:null,typeof A=="function"&&l.removeEventListener(u,A,w),typeof b=="function")){typeof A!="function"&&A!==null&&(m in l?l[m]=null:l.hasAttribute(m)&&l.removeAttribute(m)),l.addEventListener(u,b,w);break e}m in l?l[m]=b:b===!0?l.setAttribute(m,""):zn(l,m,b)}}}function zi(l,u,m){switch(u){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":Qt("error",l),Qt("load",l);var b=!1,w=!1,A;for(A in m)if(m.hasOwnProperty(A)){var j=m[A];if(j!=null)switch(A){case"src":b=!0;break;case"srcSet":w=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(i(137,u));default:kn(l,u,A,j,m,null)}}w&&kn(l,u,"srcSet",m.srcSet,m,null),b&&kn(l,u,"src",m.src,m,null);return;case"input":Qt("invalid",l);var G=A=j=w=null,se=null,ve=null;for(b in m)if(m.hasOwnProperty(b)){var Ne=m[b];if(Ne!=null)switch(b){case"name":w=Ne;break;case"type":j=Ne;break;case"checked":se=Ne;break;case"defaultChecked":ve=Ne;break;case"value":A=Ne;break;case"defaultValue":G=Ne;break;case"children":case"dangerouslySetInnerHTML":if(Ne!=null)throw Error(i(137,u));break;default:kn(l,u,b,Ne,m,null)}}jr(l,A,G,se,ve,j,w,!1);return;case"select":Qt("invalid",l),b=j=A=null;for(w in m)if(m.hasOwnProperty(w)&&(G=m[w],G!=null))switch(w){case"value":A=G;break;case"defaultValue":j=G;break;case"multiple":b=G;default:kn(l,u,w,G,m,null)}u=A,m=j,l.multiple=!!b,u!=null?eu(l,!!b,u,!1):m!=null&&eu(l,!!b,m,!0);return;case"textarea":Qt("invalid",l),A=w=b=null;for(j in m)if(m.hasOwnProperty(j)&&(G=m[j],G!=null))switch(j){case"value":b=G;break;case"defaultValue":w=G;break;case"children":A=G;break;case"dangerouslySetInnerHTML":if(G!=null)throw Error(i(91));break;default:kn(l,u,j,G,m,null)}bC(l,b,w,A);return;case"option":for(se in m)if(m.hasOwnProperty(se)&&(b=m[se],b!=null))switch(se){case"selected":l.selected=b&&typeof b!="function"&&typeof b!="symbol";break;default:kn(l,u,se,b,m,null)}return;case"dialog":Qt("beforetoggle",l),Qt("toggle",l),Qt("cancel",l),Qt("close",l);break;case"iframe":case"object":Qt("load",l);break;case"video":case"audio":for(b=0;b<Eh.length;b++)Qt(Eh[b],l);break;case"image":Qt("error",l),Qt("load",l);break;case"details":Qt("toggle",l);break;case"embed":case"source":case"link":Qt("error",l),Qt("load",l);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(ve in m)if(m.hasOwnProperty(ve)&&(b=m[ve],b!=null))switch(ve){case"children":case"dangerouslySetInnerHTML":throw Error(i(137,u));default:kn(l,u,ve,b,m,null)}return;default:if(kb(u)){for(Ne in m)m.hasOwnProperty(Ne)&&(b=m[Ne],b!==void 0&&ux(l,u,Ne,b,m,void 0));return}}for(G in m)m.hasOwnProperty(G)&&(b=m[G],b!=null&&kn(l,u,G,b,m,null))}function fU(l,u,m,b){switch(u){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var w=null,A=null,j=null,G=null,se=null,ve=null,Ne=null;for(we in m){var Ee=m[we];if(m.hasOwnProperty(we)&&Ee!=null)switch(we){case"checked":break;case"value":break;case"defaultValue":se=Ee;default:b.hasOwnProperty(we)||kn(l,u,we,null,b,Ee)}}for(var xe in b){var we=b[xe];if(Ee=m[xe],b.hasOwnProperty(xe)&&(we!=null||Ee!=null))switch(xe){case"type":A=we;break;case"name":w=we;break;case"checked":ve=we;break;case"defaultChecked":Ne=we;break;case"value":j=we;break;case"defaultValue":G=we;break;case"children":case"dangerouslySetInnerHTML":if(we!=null)throw Error(i(137,u));break;default:we!==Ee&&kn(l,u,xe,we,b,Ee)}}Qi(l,j,G,se,ve,Ne,A,w);return;case"select":we=j=G=xe=null;for(A in m)if(se=m[A],m.hasOwnProperty(A)&&se!=null)switch(A){case"value":break;case"multiple":we=se;default:b.hasOwnProperty(A)||kn(l,u,A,null,b,se)}for(w in b)if(A=b[w],se=m[w],b.hasOwnProperty(w)&&(A!=null||se!=null))switch(w){case"value":xe=A;break;case"defaultValue":G=A;break;case"multiple":j=A;default:A!==se&&kn(l,u,w,A,b,se)}u=G,m=j,b=we,xe!=null?eu(l,!!m,xe,!1):!!b!=!!m&&(u!=null?eu(l,!!m,u,!0):eu(l,!!m,m?[]:"",!1));return;case"textarea":we=xe=null;for(G in m)if(w=m[G],m.hasOwnProperty(G)&&w!=null&&!b.hasOwnProperty(G))switch(G){case"value":break;case"children":break;default:kn(l,u,G,null,b,w)}for(j in b)if(w=b[j],A=m[j],b.hasOwnProperty(j)&&(w!=null||A!=null))switch(j){case"value":xe=w;break;case"defaultValue":we=w;break;case"children":break;case"dangerouslySetInnerHTML":if(w!=null)throw Error(i(91));break;default:w!==A&&kn(l,u,j,w,b,A)}yC(l,xe,we);return;case"option":for(var rt in m)if(xe=m[rt],m.hasOwnProperty(rt)&&xe!=null&&!b.hasOwnProperty(rt))switch(rt){case"selected":l.selected=!1;break;default:kn(l,u,rt,null,b,xe)}for(se in b)if(xe=b[se],we=m[se],b.hasOwnProperty(se)&&xe!==we&&(xe!=null||we!=null))switch(se){case"selected":l.selected=xe&&typeof xe!="function"&&typeof xe!="symbol";break;default:kn(l,u,se,xe,b,we)}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 St in m)xe=m[St],m.hasOwnProperty(St)&&xe!=null&&!b.hasOwnProperty(St)&&kn(l,u,St,null,b,xe);for(ve in b)if(xe=b[ve],we=m[ve],b.hasOwnProperty(ve)&&xe!==we&&(xe!=null||we!=null))switch(ve){case"children":case"dangerouslySetInnerHTML":if(xe!=null)throw Error(i(137,u));break;default:kn(l,u,ve,xe,b,we)}return;default:if(kb(u)){for(var Cn in m)xe=m[Cn],m.hasOwnProperty(Cn)&&xe!==void 0&&!b.hasOwnProperty(Cn)&&ux(l,u,Cn,void 0,b,xe);for(Ne in b)xe=b[Ne],we=m[Ne],!b.hasOwnProperty(Ne)||xe===we||xe===void 0&&we===void 0||ux(l,u,Ne,xe,b,we);return}}for(var pe in m)xe=m[pe],m.hasOwnProperty(pe)&&xe!=null&&!b.hasOwnProperty(pe)&&kn(l,u,pe,null,b,xe);for(Ee in b)xe=b[Ee],we=m[Ee],!b.hasOwnProperty(Ee)||xe===we||xe==null&&we==null||kn(l,u,Ee,xe,b,we)}function ST(l){switch(l){case"css":case"script":case"font":case"img":case"image":case"input":case"link":return!0;default:return!1}}function mU(){if(typeof performance.getEntriesByType=="function"){for(var l=0,u=0,m=performance.getEntriesByType("resource"),b=0;b<m.length;b++){var w=m[b],A=w.transferSize,j=w.initiatorType,G=w.duration;if(A&&G&&ST(j)){for(j=0,G=w.responseEnd,b+=1;b<m.length;b++){var se=m[b],ve=se.startTime;if(ve>G)break;var Ne=se.transferSize,Ee=se.initiatorType;Ne&&ST(Ee)&&(se=se.responseEnd,j+=Ne*(se<G?1:(G-ve)/(se-ve)))}if(--b,u+=8*(A+j)/(w.duration/1e3),l++,10<l)break}}if(0<l)return u/l/1e6}return navigator.connection&&(l=navigator.connection.downlink,typeof l=="number")?l:5}var dx=null,hx=null;function wg(l){return l.nodeType===9?l:l.ownerDocument}function wT(l){switch(l){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function kT(l,u){if(l===0)switch(u){case"svg":return 1;case"math":return 2;default:return 0}return l===1&&u==="foreignObject"?0:l}function fx(l,u){return l==="textarea"||l==="noscript"||typeof u.children=="string"||typeof u.children=="number"||typeof u.children=="bigint"||typeof u.dangerouslySetInnerHTML=="object"&&u.dangerouslySetInnerHTML!==null&&u.dangerouslySetInnerHTML.__html!=null}var mx=null;function pU(){var l=window.event;return l&&l.type==="popstate"?l===mx?!1:(mx=l,!0):(mx=null,!1)}var CT=typeof setTimeout=="function"?setTimeout:void 0,gU=typeof clearTimeout=="function"?clearTimeout:void 0,AT=typeof Promise=="function"?Promise:void 0,_U=typeof queueMicrotask=="function"?queueMicrotask:typeof AT<"u"?function(l){return AT.resolve(null).then(l).catch(yU)}:CT;function yU(l){setTimeout(function(){throw l})}function Jr(l){return l==="head"}function NT(l,u){var m=u,b=0;do{var w=m.nextSibling;if(l.removeChild(m),w&&w.nodeType===8)if(m=w.data,m==="/$"||m==="/&"){if(b===0){l.removeChild(w),Pu(u);return}b--}else if(m==="$"||m==="$?"||m==="$~"||m==="$!"||m==="&")b++;else if(m==="html")Rh(l.ownerDocument.documentElement);else if(m==="head"){m=l.ownerDocument.head,Rh(m);for(var A=m.firstChild;A;){var j=A.nextSibling,G=A.nodeName;A[pn]||G==="SCRIPT"||G==="STYLE"||G==="LINK"&&A.rel.toLowerCase()==="stylesheet"||m.removeChild(A),A=j}}else m==="body"&&Rh(l.ownerDocument.body);m=w}while(m);Pu(u)}function TT(l,u){var m=l;l=0;do{var b=m.nextSibling;if(m.nodeType===1?u?(m._stashedDisplay=m.style.display,m.style.display="none"):(m.style.display=m._stashedDisplay||"",m.getAttribute("style")===""&&m.removeAttribute("style")):m.nodeType===3&&(u?(m._stashedText=m.nodeValue,m.nodeValue=""):m.nodeValue=m._stashedText||""),b&&b.nodeType===8)if(m=b.data,m==="/$"){if(l===0)break;l--}else m!=="$"&&m!=="$?"&&m!=="$~"&&m!=="$!"||l++;m=b}while(m)}function px(l){var u=l.firstChild;for(u&&u.nodeType===10&&(u=u.nextSibling);u;){var m=u;switch(u=u.nextSibling,m.nodeName){case"HTML":case"HEAD":case"BODY":px(m),On(m);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(m.rel.toLowerCase()==="stylesheet")continue}l.removeChild(m)}}function bU(l,u,m,b){for(;l.nodeType===1;){var w=m;if(l.nodeName.toLowerCase()!==u.toLowerCase()){if(!b&&(l.nodeName!=="INPUT"||l.type!=="hidden"))break}else if(b){if(!l[pn])switch(u){case"meta":if(!l.hasAttribute("itemprop"))break;return l;case"link":if(A=l.getAttribute("rel"),A==="stylesheet"&&l.hasAttribute("data-precedence"))break;if(A!==w.rel||l.getAttribute("href")!==(w.href==null||w.href===""?null:w.href)||l.getAttribute("crossorigin")!==(w.crossOrigin==null?null:w.crossOrigin)||l.getAttribute("title")!==(w.title==null?null:w.title))break;return l;case"style":if(l.hasAttribute("data-precedence"))break;return l;case"script":if(A=l.getAttribute("src"),(A!==(w.src==null?null:w.src)||l.getAttribute("type")!==(w.type==null?null:w.type)||l.getAttribute("crossorigin")!==(w.crossOrigin==null?null:w.crossOrigin))&&A&&l.hasAttribute("async")&&!l.hasAttribute("itemprop"))break;return l;default:return l}}else if(u==="input"&&l.type==="hidden"){var A=w.name==null?null:""+w.name;if(w.type==="hidden"&&l.getAttribute("name")===A)return l}else return l;if(l=da(l.nextSibling),l===null)break}return null}function vU(l,u,m){if(u==="")return null;for(;l.nodeType!==3;)if((l.nodeType!==1||l.nodeName!=="INPUT"||l.type!=="hidden")&&!m||(l=da(l.nextSibling),l===null))return null;return l}function MT(l,u){for(;l.nodeType!==8;)if((l.nodeType!==1||l.nodeName!=="INPUT"||l.type!=="hidden")&&!u||(l=da(l.nextSibling),l===null))return null;return l}function gx(l){return l.data==="$?"||l.data==="$~"}function _x(l){return l.data==="$!"||l.data==="$?"&&l.ownerDocument.readyState!=="loading"}function xU(l,u){var m=l.ownerDocument;if(l.data==="$~")l._reactRetry=u;else if(l.data!=="$?"||m.readyState!=="loading")u();else{var b=function(){u(),m.removeEventListener("DOMContentLoaded",b)};m.addEventListener("DOMContentLoaded",b),l._reactRetry=b}}function da(l){for(;l!=null;l=l.nextSibling){var u=l.nodeType;if(u===1||u===3)break;if(u===8){if(u=l.data,u==="$"||u==="$!"||u==="$?"||u==="$~"||u==="&"||u==="F!"||u==="F")break;if(u==="/$"||u==="/&")return null}}return l}var yx=null;function LT(l){l=l.nextSibling;for(var u=0;l;){if(l.nodeType===8){var m=l.data;if(m==="/$"||m==="/&"){if(u===0)return da(l.nextSibling);u--}else m!=="$"&&m!=="$!"&&m!=="$?"&&m!=="$~"&&m!=="&"||u++}l=l.nextSibling}return null}function OT(l){l=l.previousSibling;for(var u=0;l;){if(l.nodeType===8){var m=l.data;if(m==="$"||m==="$!"||m==="$?"||m==="$~"||m==="&"){if(u===0)return l;u--}else m!=="/$"&&m!=="/&"||u++}l=l.previousSibling}return null}function PT(l,u,m){switch(u=wg(m),l){case"html":if(l=u.documentElement,!l)throw Error(i(452));return l;case"head":if(l=u.head,!l)throw Error(i(453));return l;case"body":if(l=u.body,!l)throw Error(i(454));return l;default:throw Error(i(451))}}function Rh(l){for(var u=l.attributes;u.length;)l.removeAttributeNode(u[0]);On(l)}var ha=new Map,ET=new Set;function kg(l){return typeof l.getRootNode=="function"?l.getRootNode():l.nodeType===9?l:l.ownerDocument}var nr=H.d;H.d={f:SU,r:wU,D:kU,C:CU,L:AU,m:NU,X:MU,S:TU,M:LU};function SU(){var l=nr.f(),u=pg();return l||u}function wU(l){var u=Dt(l);u!==null&&u.tag===5&&u.type==="form"?QA(u):nr.r(l)}var Mu=typeof document>"u"?null:document;function jT(l,u,m){var b=Mu;if(b&&typeof u=="string"&&u){var w=$t(u);w='link[rel="'+l+'"][href="'+w+'"]',typeof m=="string"&&(w+='[crossorigin="'+m+'"]'),ET.has(w)||(ET.add(w),l={rel:l,crossOrigin:m,href:u},b.querySelector(w)===null&&(u=b.createElement("link"),zi(u,"link",l),dn(u),b.head.appendChild(u)))}}function kU(l){nr.D(l),jT("dns-prefetch",l,null)}function CU(l,u){nr.C(l,u),jT("preconnect",l,u)}function AU(l,u,m){nr.L(l,u,m);var b=Mu;if(b&&l&&u){var w='link[rel="preload"][as="'+$t(u)+'"]';u==="image"&&m&&m.imageSrcSet?(w+='[imagesrcset="'+$t(m.imageSrcSet)+'"]',typeof m.imageSizes=="string"&&(w+='[imagesizes="'+$t(m.imageSizes)+'"]')):w+='[href="'+$t(l)+'"]';var A=w;switch(u){case"style":A=Lu(l);break;case"script":A=Ou(l)}ha.has(A)||(l=p({rel:"preload",href:u==="image"&&m&&m.imageSrcSet?void 0:l,as:u},m),ha.set(A,l),b.querySelector(w)!==null||u==="style"&&b.querySelector(Dh(A))||u==="script"&&b.querySelector(Fh(A))||(u=b.createElement("link"),zi(u,"link",l),dn(u),b.head.appendChild(u)))}}function NU(l,u){nr.m(l,u);var m=Mu;if(m&&l){var b=u&&typeof u.as=="string"?u.as:"script",w='link[rel="modulepreload"][as="'+$t(b)+'"][href="'+$t(l)+'"]',A=w;switch(b){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":A=Ou(l)}if(!ha.has(A)&&(l=p({rel:"modulepreload",href:l},u),ha.set(A,l),m.querySelector(w)===null)){switch(b){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(m.querySelector(Fh(A)))return}b=m.createElement("link"),zi(b,"link",l),dn(b),m.head.appendChild(b)}}}function TU(l,u,m){nr.S(l,u,m);var b=Mu;if(b&&l){var w=Fi(b).hoistableStyles,A=Lu(l);u=u||"default";var j=w.get(A);if(!j){var G={loading:0,preload:null};if(j=b.querySelector(Dh(A)))G.loading=5;else{l=p({rel:"stylesheet",href:l,"data-precedence":u},m),(m=ha.get(A))&&bx(l,m);var se=j=b.createElement("link");dn(se),zi(se,"link",l),se._p=new Promise(function(ve,Ne){se.onload=ve,se.onerror=Ne}),se.addEventListener("load",function(){G.loading|=1}),se.addEventListener("error",function(){G.loading|=2}),G.loading|=4,Cg(j,u,b)}j={type:"stylesheet",instance:j,count:1,state:G},w.set(A,j)}}}function MU(l,u){nr.X(l,u);var m=Mu;if(m&&l){var b=Fi(m).hoistableScripts,w=Ou(l),A=b.get(w);A||(A=m.querySelector(Fh(w)),A||(l=p({src:l,async:!0},u),(u=ha.get(w))&&vx(l,u),A=m.createElement("script"),dn(A),zi(A,"link",l),m.head.appendChild(A)),A={type:"script",instance:A,count:1,state:null},b.set(w,A))}}function LU(l,u){nr.M(l,u);var m=Mu;if(m&&l){var b=Fi(m).hoistableScripts,w=Ou(l),A=b.get(w);A||(A=m.querySelector(Fh(w)),A||(l=p({src:l,async:!0,type:"module"},u),(u=ha.get(w))&&vx(l,u),A=m.createElement("script"),dn(A),zi(A,"link",l),m.head.appendChild(A)),A={type:"script",instance:A,count:1,state:null},b.set(w,A))}}function RT(l,u,m,b){var w=(w=F.current)?kg(w):null;if(!w)throw Error(i(446));switch(l){case"meta":case"title":return null;case"style":return typeof m.precedence=="string"&&typeof m.href=="string"?(u=Lu(m.href),m=Fi(w).hoistableStyles,b=m.get(u),b||(b={type:"style",instance:null,count:0,state:null},m.set(u,b)),b):{type:"void",instance:null,count:0,state:null};case"link":if(m.rel==="stylesheet"&&typeof m.href=="string"&&typeof m.precedence=="string"){l=Lu(m.href);var A=Fi(w).hoistableStyles,j=A.get(l);if(j||(w=w.ownerDocument||w,j={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},A.set(l,j),(A=w.querySelector(Dh(l)))&&!A._p&&(j.instance=A,j.state.loading=5),ha.has(l)||(m={rel:"preload",as:"style",href:m.href,crossOrigin:m.crossOrigin,integrity:m.integrity,media:m.media,hrefLang:m.hrefLang,referrerPolicy:m.referrerPolicy},ha.set(l,m),A||OU(w,l,m,j.state))),u&&b===null)throw Error(i(528,""));return j}if(u&&b!==null)throw Error(i(529,""));return null;case"script":return u=m.async,m=m.src,typeof m=="string"&&u&&typeof u!="function"&&typeof u!="symbol"?(u=Ou(m),m=Fi(w).hoistableScripts,b=m.get(u),b||(b={type:"script",instance:null,count:0,state:null},m.set(u,b)),b):{type:"void",instance:null,count:0,state:null};default:throw Error(i(444,l))}}function Lu(l){return'href="'+$t(l)+'"'}function Dh(l){return'link[rel="stylesheet"]['+l+"]"}function DT(l){return p({},l,{"data-precedence":l.precedence,precedence:null})}function OU(l,u,m,b){l.querySelector('link[rel="preload"][as="style"]['+u+"]")?b.loading=1:(u=l.createElement("link"),b.preload=u,u.addEventListener("load",function(){return b.loading|=1}),u.addEventListener("error",function(){return b.loading|=2}),zi(u,"link",m),dn(u),l.head.appendChild(u))}function Ou(l){return'[src="'+$t(l)+'"]'}function Fh(l){return"script[async]"+l}function FT(l,u,m){if(u.count++,u.instance===null)switch(u.type){case"style":var b=l.querySelector('style[data-href~="'+$t(m.href)+'"]');if(b)return u.instance=b,dn(b),b;var w=p({},m,{"data-href":m.href,"data-precedence":m.precedence,href:null,precedence:null});return b=(l.ownerDocument||l).createElement("style"),dn(b),zi(b,"style",w),Cg(b,m.precedence,l),u.instance=b;case"stylesheet":w=Lu(m.href);var A=l.querySelector(Dh(w));if(A)return u.state.loading|=4,u.instance=A,dn(A),A;b=DT(m),(w=ha.get(w))&&bx(b,w),A=(l.ownerDocument||l).createElement("link"),dn(A);var j=A;return j._p=new Promise(function(G,se){j.onload=G,j.onerror=se}),zi(A,"link",b),u.state.loading|=4,Cg(A,m.precedence,l),u.instance=A;case"script":return A=Ou(m.src),(w=l.querySelector(Fh(A)))?(u.instance=w,dn(w),w):(b=m,(w=ha.get(A))&&(b=p({},m),vx(b,w)),l=l.ownerDocument||l,w=l.createElement("script"),dn(w),zi(w,"link",b),l.head.appendChild(w),u.instance=w);case"void":return null;default:throw Error(i(443,u.type))}else u.type==="stylesheet"&&(u.state.loading&4)===0&&(b=u.instance,u.state.loading|=4,Cg(b,m.precedence,l));return u.instance}function Cg(l,u,m){for(var b=m.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),w=b.length?b[b.length-1]:null,A=w,j=0;j<b.length;j++){var G=b[j];if(G.dataset.precedence===u)A=G;else if(A!==w)break}A?A.parentNode.insertBefore(l,A.nextSibling):(u=m.nodeType===9?m.head:m,u.insertBefore(l,u.firstChild))}function bx(l,u){l.crossOrigin==null&&(l.crossOrigin=u.crossOrigin),l.referrerPolicy==null&&(l.referrerPolicy=u.referrerPolicy),l.title==null&&(l.title=u.title)}function vx(l,u){l.crossOrigin==null&&(l.crossOrigin=u.crossOrigin),l.referrerPolicy==null&&(l.referrerPolicy=u.referrerPolicy),l.integrity==null&&(l.integrity=u.integrity)}var Ag=null;function IT(l,u,m){if(Ag===null){var b=new Map,w=Ag=new Map;w.set(m,b)}else w=Ag,b=w.get(m),b||(b=new Map,w.set(m,b));if(b.has(l))return b;for(b.set(l,null),m=m.getElementsByTagName(l),w=0;w<m.length;w++){var A=m[w];if(!(A[pn]||A[Fe]||l==="link"&&A.getAttribute("rel")==="stylesheet")&&A.namespaceURI!=="http://www.w3.org/2000/svg"){var j=A.getAttribute(u)||"";j=l+j;var G=b.get(j);G?G.push(A):b.set(j,[A])}}return b}function BT(l,u,m){l=l.ownerDocument||l,l.head.insertBefore(m,u==="title"?l.querySelector("head > title"):null)}function PU(l,u,m){if(m===1||u.itemProp!=null)return!1;switch(l){case"meta":case"title":return!0;case"style":if(typeof u.precedence!="string"||typeof u.href!="string"||u.href==="")break;return!0;case"link":if(typeof u.rel!="string"||typeof u.href!="string"||u.href===""||u.onLoad||u.onError)break;switch(u.rel){case"stylesheet":return l=u.disabled,typeof u.precedence=="string"&&l==null;default:return!0}case"script":if(u.async&&typeof u.async!="function"&&typeof u.async!="symbol"&&!u.onLoad&&!u.onError&&u.src&&typeof u.src=="string")return!0}return!1}function UT(l){return!(l.type==="stylesheet"&&(l.state.loading&3)===0)}function EU(l,u,m,b){if(m.type==="stylesheet"&&(typeof b.media!="string"||matchMedia(b.media).matches!==!1)&&(m.state.loading&4)===0){if(m.instance===null){var w=Lu(b.href),A=u.querySelector(Dh(w));if(A){u=A._p,u!==null&&typeof u=="object"&&typeof u.then=="function"&&(l.count++,l=Ng.bind(l),u.then(l,l)),m.state.loading|=4,m.instance=A,dn(A);return}A=u.ownerDocument||u,b=DT(b),(w=ha.get(w))&&bx(b,w),A=A.createElement("link"),dn(A);var j=A;j._p=new Promise(function(G,se){j.onload=G,j.onerror=se}),zi(A,"link",b),m.instance=A}l.stylesheets===null&&(l.stylesheets=new Map),l.stylesheets.set(m,u),(u=m.state.preload)&&(m.state.loading&3)===0&&(l.count++,m=Ng.bind(l),u.addEventListener("load",m),u.addEventListener("error",m))}}var xx=0;function jU(l,u){return l.stylesheets&&l.count===0&&Mg(l,l.stylesheets),0<l.count||0<l.imgCount?function(m){var b=setTimeout(function(){if(l.stylesheets&&Mg(l,l.stylesheets),l.unsuspend){var A=l.unsuspend;l.unsuspend=null,A()}},6e4+u);0<l.imgBytes&&xx===0&&(xx=62500*mU());var w=setTimeout(function(){if(l.waitingForImages=!1,l.count===0&&(l.stylesheets&&Mg(l,l.stylesheets),l.unsuspend)){var A=l.unsuspend;l.unsuspend=null,A()}},(l.imgBytes>xx?50:800)+u);return l.unsuspend=m,function(){l.unsuspend=null,clearTimeout(b),clearTimeout(w)}}:null}function Ng(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Mg(this,this.stylesheets);else if(this.unsuspend){var l=this.unsuspend;this.unsuspend=null,l()}}}var Tg=null;function Mg(l,u){l.stylesheets=null,l.unsuspend!==null&&(l.count++,Tg=new Map,u.forEach(RU,l),Tg=null,Ng.call(l))}function RU(l,u){if(!(u.state.loading&4)){var m=Tg.get(l);if(m)var b=m.get(null);else{m=new Map,Tg.set(l,m);for(var w=l.querySelectorAll("link[data-precedence],style[data-precedence]"),A=0;A<w.length;A++){var j=w[A];(j.nodeName==="LINK"||j.getAttribute("media")!=="not all")&&(m.set(j.dataset.precedence,j),b=j)}b&&m.set(null,b)}w=u.instance,j=w.getAttribute("data-precedence"),A=m.get(j)||b,A===b&&m.set(null,w),m.set(j,w),this.count++,b=Ng.bind(this),w.addEventListener("load",b),w.addEventListener("error",b),A?A.parentNode.insertBefore(w,A.nextSibling):(l=l.nodeType===9?l.head:l,l.insertBefore(w,l.firstChild)),u.state.loading|=4}}var Ih={$$typeof:N,Provider:null,Consumer:null,_currentValue:z,_currentValue2:z,_threadCount:0};function DU(l,u,m,b,w,A,j,G,se){this.tag=1,this.containerInfo=l,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=bt(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=bt(0),this.hiddenUpdates=bt(null),this.identifierPrefix=b,this.onUncaughtError=w,this.onCaughtError=A,this.onRecoverableError=j,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=se,this.incompleteTransitions=new Map}function qT(l,u,m,b,w,A,j,G,se,ve,Ne,Ee){return l=new DU(l,u,m,j,se,ve,Ne,Ee,G),u=1,A===!0&&(u|=24),A=Ks(3,null,null,u),l.current=A,A.stateNode=l,u=ev(),u.refCount++,l.pooledCache=u,u.refCount++,A.memoizedState={element:b,isDehydrated:m,cache:u},sv(A),l}function zT(l){return l?(l=lu,l):lu}function KT(l,u,m,b,w,A){w=zT(w),b.context===null?b.context=w:b.pendingContext=w,b=qr(u),b.payload={element:m},A=A===void 0?null:A,A!==null&&(b.callback=A),m=zr(l,b,u),m!==null&&(Os(m,l,u),gh(m,l,u))}function VT(l,u){if(l=l.memoizedState,l!==null&&l.dehydrated!==null){var m=l.retryLane;l.retryLane=m!==0&&m<u?m:u}}function Sx(l,u){VT(l,u),(l=l.alternate)&&VT(l,u)}function HT(l){if(l.tag===13||l.tag===31){var u=zl(l,67108864);u!==null&&Os(u,l,67108864),Sx(l,67108864)}}function WT(l){if(l.tag===13||l.tag===31){var u=$s();u=_e(u);var m=zl(l,u);m!==null&&Os(m,l,u),Sx(l,u)}}var Lg=!0;function FU(l,u,m,b){var w=B.T;B.T=null;var A=H.p;try{H.p=2,wx(l,u,m,b)}finally{H.p=A,B.T=w}}function IU(l,u,m,b){var w=B.T;B.T=null;var A=H.p;try{H.p=8,wx(l,u,m,b)}finally{H.p=A,B.T=w}}function wx(l,u,m,b){if(Lg){var w=kx(b);if(w===null)cx(l,u,b,Og,m),$T(l,b);else if(UU(w,l,u,m,b))b.stopPropagation();else if($T(l,b),u&4&&-1<BU.indexOf(l)){for(;w!==null;){var A=Dt(w);if(A!==null)switch(A.tag){case 3:if(A=A.stateNode,A.current.memoizedState.isDehydrated){var j=Di(A.pendingLanes);if(j!==0){var G=A;for(G.pendingLanes|=2,G.entangledLanes|=2;j;){var se=1<<31-qe(j);G.entanglements[1]|=se,j&=~se}io(A),(gn&6)===0&&(fg=wt()+500,Ph(0))}}break;case 31:case 13:G=zl(A,2),G!==null&&Os(G,A,2),pg(),Sx(A,2)}if(A=kx(b),A===null&&cx(l,u,b,Og,m),A===w)break;w=A}w!==null&&b.stopPropagation()}else cx(l,u,b,null,m)}}function kx(l){return l=Ab(l),Cx(l)}var Og=null;function Cx(l){if(Og=null,l=qn(l),l!==null){var u=a(l);if(u===null)l=null;else{var m=u.tag;if(m===13){if(l=o(u),l!==null)return l;l=null}else if(m===31){if(l=r(u),l!==null)return l;l=null}else if(m===3){if(u.stateNode.current.memoizedState.isDehydrated)return u.tag===3?u.stateNode.containerInfo:null;l=null}else u!==l&&(l=null)}}return Og=l,null}function GT(l){switch(l){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 2;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 8;case"message":switch(Tt()){case on:return 2;case ce:return 8;case ye:case Ue:return 32;case Me:return 268435456;default:return 32}default:return 32}}var Ax=!1,Zr=null,el=null,tl=null,Bh=new Map,Uh=new Map,nl=[],BU="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(" ");function $T(l,u){switch(l){case"focusin":case"focusout":Zr=null;break;case"dragenter":case"dragleave":el=null;break;case"mouseover":case"mouseout":tl=null;break;case"pointerover":case"pointerout":Bh.delete(u.pointerId);break;case"gotpointercapture":case"lostpointercapture":Uh.delete(u.pointerId)}}function qh(l,u,m,b,w,A){return l===null||l.nativeEvent!==A?(l={blockedOn:u,domEventName:m,eventSystemFlags:b,nativeEvent:A,targetContainers:[w]},u!==null&&(u=Dt(u),u!==null&&HT(u)),l):(l.eventSystemFlags|=b,u=l.targetContainers,w!==null&&u.indexOf(w)===-1&&u.push(w),l)}function UU(l,u,m,b,w){switch(u){case"focusin":return Zr=qh(Zr,l,u,m,b,w),!0;case"dragenter":return el=qh(el,l,u,m,b,w),!0;case"mouseover":return tl=qh(tl,l,u,m,b,w),!0;case"pointerover":var A=w.pointerId;return Bh.set(A,qh(Bh.get(A)||null,l,u,m,b,w)),!0;case"gotpointercapture":return A=w.pointerId,Uh.set(A,qh(Uh.get(A)||null,l,u,m,b,w)),!0}return!1}function XT(l){var u=qn(l.target);if(u!==null){var m=a(u);if(m!==null){if(u=m.tag,u===13){if(u=o(m),u!==null){l.blockedOn=u,Je(l.priority,function(){WT(m)});return}}else if(u===31){if(u=r(m),u!==null){l.blockedOn=u,Je(l.priority,function(){WT(m)});return}}else if(u===3&&m.stateNode.current.memoizedState.isDehydrated){l.blockedOn=m.tag===3?m.stateNode.containerInfo:null;return}}}l.blockedOn=null}function Pg(l){if(l.blockedOn!==null)return!1;for(var u=l.targetContainers;0<u.length;){var m=kx(l.nativeEvent);if(m===null){m=l.nativeEvent;var b=new m.constructor(m.type,m);Cb=b,m.target.dispatchEvent(b),Cb=null}else return u=Dt(m),u!==null&&HT(u),l.blockedOn=m,!1;u.shift()}return!0}function QT(l,u,m){Pg(l)&&m.delete(u)}function qU(){Ax=!1,Zr!==null&&Pg(Zr)&&(Zr=null),el!==null&&Pg(el)&&(el=null),tl!==null&&Pg(tl)&&(tl=null),Bh.forEach(QT),Uh.forEach(QT)}function Eg(l,u){l.blockedOn===u&&(l.blockedOn=null,Ax||(Ax=!0,t.unstable_scheduleCallback(t.unstable_NormalPriority,qU)))}var jg=null;function YT(l){jg!==l&&(jg=l,t.unstable_scheduleCallback(t.unstable_NormalPriority,function(){jg===l&&(jg=null);for(var u=0;u<l.length;u+=3){var m=l[u],b=l[u+1],w=l[u+2];if(typeof b!="function"){if(Cx(b||m)===null)continue;break}var A=Dt(m);A!==null&&(l.splice(u,3),u-=3,kv(A,{pending:!0,data:w,method:m.method,action:b},b,w))}}))}function Pu(l){function u(se){return Eg(se,l)}Zr!==null&&Eg(Zr,l),el!==null&&Eg(el,l),tl!==null&&Eg(tl,l),Bh.forEach(u),Uh.forEach(u);for(var m=0;m<nl.length;m++){var b=nl[m];b.blockedOn===l&&(b.blockedOn=null)}for(;0<nl.length&&(m=nl[0],m.blockedOn===null);)XT(m),m.blockedOn===null&&nl.shift();if(m=(l.ownerDocument||l).$$reactFormReplay,m!=null)for(b=0;b<m.length;b+=3){var w=m[b],A=m[b+1],j=w[Ve]||null;if(typeof A=="function")j||YT(m);else if(j){var G=null;if(A&&A.hasAttribute("formAction")){if(w=A,j=A[Ve]||null)G=j.formAction;else if(Cx(w)!==null)continue}else G=j.action;typeof G=="function"?m[b+1]=G:(m.splice(b,3),b-=3),YT(m)}}}function JT(){function l(A){A.canIntercept&&A.info==="react-transition"&&A.intercept({handler:function(){return new Promise(function(j){return w=j})},focusReset:"manual",scroll:"manual"})}function u(){w!==null&&(w(),w=null),b||setTimeout(m,20)}function m(){if(!b&&!navigation.transition){var A=navigation.currentEntry;A&&A.url!=null&&navigation.navigate(A.url,{state:A.getState(),info:"react-transition",history:"replace"})}}if(typeof navigation=="object"){var b=!1,w=null;return navigation.addEventListener("navigate",l),navigation.addEventListener("navigatesuccess",u),navigation.addEventListener("navigateerror",u),setTimeout(m,100),function(){b=!0,navigation.removeEventListener("navigate",l),navigation.removeEventListener("navigatesuccess",u),navigation.removeEventListener("navigateerror",u),w!==null&&(w(),w=null)}}}function Nx(l){this._internalRoot=l}Rg.prototype.render=Nx.prototype.render=function(l){var u=this._internalRoot;if(u===null)throw Error(i(409));var m=u.current,b=$s();KT(m,b,l,u,null,null)},Rg.prototype.unmount=Nx.prototype.unmount=function(){var l=this._internalRoot;if(l!==null){this._internalRoot=null;var u=l.containerInfo;KT(l.current,2,null,l,null,null),pg(),u[st]=null}};function Rg(l){this._internalRoot=l}Rg.prototype.unstable_scheduleHydration=function(l){if(l){var u=De();l={blockedOn:null,target:l,priority:u};for(var m=0;m<nl.length&&u!==0&&u<nl[m].priority;m++);nl.splice(m,0,l),m===0&&XT(l)}};var ZT=e.version;if(ZT!=="19.2.1")throw Error(i(527,ZT,"19.2.1"));H.findDOMNode=function(l){var u=l._reactInternals;if(u===void 0)throw typeof l.render=="function"?Error(i(188)):(l=Object.keys(l).join(","),Error(i(268,l)));return l=d(u),l=l!==null?f(l):null,l=l===null?null:l.stateNode,l};var zU={bundleType:0,version:"19.2.1",rendererPackageName:"react-dom",currentDispatcherRef:B,reconcilerVersion:"19.2.1"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"){var Dg=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!Dg.isDisabled&&Dg.supportsFiber)try{pt=Dg.inject(zU),ot=Dg}catch{}}return Kh.createRoot=function(l,u){if(!s(l))throw Error(i(299));var m=!1,b="",w=oN,A=rN,j=lN;return u!=null&&(u.unstable_strictMode===!0&&(m=!0),u.identifierPrefix!==void 0&&(b=u.identifierPrefix),u.onUncaughtError!==void 0&&(w=u.onUncaughtError),u.onCaughtError!==void 0&&(A=u.onCaughtError),u.onRecoverableError!==void 0&&(j=u.onRecoverableError)),u=qT(l,1,!1,null,null,m,b,null,w,A,j,JT),l[st]=u.current,lx(l),new Nx(u)},Kh.hydrateRoot=function(l,u,m){if(!s(l))throw Error(i(299));var b=!1,w="",A=oN,j=rN,G=lN,se=null;return m!=null&&(m.unstable_strictMode===!0&&(b=!0),m.identifierPrefix!==void 0&&(w=m.identifierPrefix),m.onUncaughtError!==void 0&&(A=m.onUncaughtError),m.onCaughtError!==void 0&&(j=m.onCaughtError),m.onRecoverableError!==void 0&&(G=m.onRecoverableError),m.formState!==void 0&&(se=m.formState)),u=qT(l,1,!0,u,m??null,b,w,se,A,j,G,JT),u.context=zT(null),m=u.current,b=$s(),b=_e(b),w=qr(b),w.callback=null,zr(m,w,b),m=b,u.current.lanes=m,ti(u,m),io(u),l[st]=u.current,lx(l),new Rg(u)},Kh.version="19.2.1",Kh}var cM;function t7(){if(cM)return Lx.exports;cM=1;function t(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),Lx.exports=e7(),Lx.exports}var n7=t7();const xd="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAKlAzkDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD7TwaULilor+Sas3U0R9NGHKFB6GjNJniroYdvUUpDDSUpNJXt06XKjDmCiiiifYQq9adTV606sGWFFITimlqhRuNOw7NBPFR76TfW8aLJcxWNRGlLU0mtVTsc7dxvrQBmkp/Sly2GmFPHFIBijOKnlLQ4GlyKj3UA1PIUOoUUDmnAYo2JHL0pabnFGTUcppcdRTcmjJqeULjqKbk0ZNLlC46im5NGTS5QuJRRRRYLjxzRSKaWosMcvelpo4p1TYaClU4FJRUWKHUUm6lyKLAFFAOaKiw0woooqbDCiiiosO4UUUVm4juFFFFZcowooopNFhRRRWTQBRRRWdi1oFFFFZtFIKKKK55ItBQehoormaKRGaSnEcU2uSSNkNPWkp+OKZXJKJaYUUUVyyRomFFFFccolhRRRWLiMKKKK53EoKKKKycSwooornaKCiiis+UsKKKKzaHcKKKKyaGFFFFZ2GFFFFUAUUUUAFFFFSUFFFFIAooooAKKKKACiiigAooooAnzSFqaWphav6Po4a7Pip1R5am7qYWpK9qFFQRzc9x+TRk0g5FFDRKlqLk0ZNJRXLKFzoix9GcUzIppfFSqTYnKxIW61Ez9aYZOtRNJXXToGMqhIXpN9QlqFNdippIw57k+6gc0xTUi9DWMolxYAYpaTNITWHKUmPzikzUe6lHNTyWLTHdaUUAU8L6VDKuC06m4xRk1lyiuOooop8pVwooopcoXCiiilyhcKKKKXKFwooorPlLuL0pwOaZSg4qeUaY6lBxTQc0tRyjuOHNLTKAcVPKVcfRSZFGRU8ori0ZNIDmlqeUdxQeOaXIptFTyjTHUU2jOKnlKuOooopcorhRRRWTiNMKKKKycTVMKKKKxcSgoooqeULhRRRUOJSYUUUVzyiWmFFFFc7gVcbSEUtFc8oGiYyjFOxSba5JUy0xm2jBp1Fc0qZomNxRg06iuSVM0TGUUUVzygWmFFFFczgWmFFFFYuJSYUUUVzOJdwooorLlC4UUUVm4lJhRRRWLiUmFFFFZWHcKKKKmwXCiiipsUFFFFSNBRRRSGFFFFABRRRQAUUUUAFFFFACFqZupu6kzX9ZU4WPzfmuOpw5FMU8U4HFOaHcdRRRXPYpaC7qTfSHpUZbrVxpNj9pZDi3FRPJimtJgGoHk613U8Oc0qo9paZvzUJanJzXT7JRRnz3Jl709RTYxUqjiuaehrFijinZFMzSZrlauaXH7qSm5NKORUuNhpi09RTVFPAxWTNEx6in0wdKXPvWfIO4ppKTdTaXKK5KvSim0U+Udx1FNopcoXHUU2ip5QuOoptFLlGmGacDTaKnlLUh1FNBxTsip5SuYKUGkoqOUdx2RRkU2ip5R3H0U3Jpcio5R3FoBxSZFLU8o0xcmlyKbRUco7jsil60yip5R3H0UUVFhjqKKKysWFFFFJodwooorFo0Ciiip5RXCiiio5SkwooorFxLTCiiisHAq4m2jbS0Vk4DTG4NFOoxXNKmWmNpu2n7aSueVM0TGYop2KTFcsqZomN20m2nUVxSpmqkNxRinUVyygUpDKKdtFJtrnlAtSEopcUYrlcCriUUUVlyBcKKKKxcCkwooorBxNEwooorFxLuFFFFRyjCiiio5RrQKKKKixQUUUVFgCiiipKCiiigAooooAKKKKAKYbNPU5qFakQ1/YLikfl0WSdKN1JRmuaSudCaHb6TzaYXwKheTGadOlzMznUsVPE+kt4i0S605NSv9HeddovtLlWO4h90LKy5+qmrJk61C1xjPNRGbrXqU6FjjnWJjL15phbNQhsmnoc12ciSMFK48DNSxrTYxUy965ZnVEegwDS5xSA4FJXFKNzROwu6kzSUqis+QpO44c09RSKMCnqOK5mrmqHKKWgdKKXIaJhSZpe1Mpco7jt1ANNoqeUm4/NGabmjNHKO47NGabmjNLlC47NGabmjNLlC47NGabmlU1PKFySikU8UtZ2LuFFFFRYdwyaUNSUVNirjgc0Dmm0oJFRYaYtFFFRylphSg4pKKixVxwal60yiosMfRSKc5pahodx9FFJWdihLm5hs7d555Y4Il6vI2AKo2fiXS7+WOK3voZXk+4Ff7309a+Hv2gPjTq/in433Gh2Vw0Wg6FKsEcEf3Zbgf6yQ+vzfL+FfTfw912LXfDEFvd4kSRBkEV9nh+G1Okqk52b8jRI9YornfAOsSahpd7a3JaS70+4a3eVvvSJ8rRsf+AsP+Bbq6KvjcRQnh6sqU90MKKMijIrjsUFFFFKwkwooopWKQUUUVk0WgooorBooKKKKhxEmFFKtKR1rBxLTG0hHFLRWDiaJjaKKK5ZRNExu2jbTqK5JQLTGkYpKfSYrllAtMbRRRXNKBSYUUUVyygVcZRRRWLgWncKKKKwlEtMKKKK55RNEFFFFYOJoFFFFYuJS1Ciiis2hhRRRWTQ0FFFFZtDCiiisiwooopAFFFFABRRRQBQFPU1FupQ2K/sdxPypMlzTS/WozJUTy4zUxpNslzsPeSoHl61FJN1qu02c161HD2OOdYkdutR5NN35p6DOa7XBROVvmY+OpkFMRakUda4qj7HTBWJUp6nFRr0pwOa5OVs61Ik3ZoXrTBUi9aynoUh6jrTlFIgqRRXK9TpihQMCim5NGTWfKXcdRTcmjJo5SbjqKbk0ZNLlFcdRTcmjJp8orjqKTdRuqLFC0UAiipsNMKKKKmxQUUUVFh3FBxTgc0yis+UY+gcUgb1pRzU8o0PopgOKUNUcpQ8GlyKZkUZqbALRTKcDmlY0uOXvS02l3Vk0O4tFNyaMms+Uu48HGaXdTFOc0tS4hcfWD468V23g3wlrOtXLAR2FrJcEHuVU4H4nArezgV8l/t1/Eg6V4PsPCVrLi51ubzLgKeRbxtkA/7z7f++TXbgMN9ZxEaXcuLPlrwjczar4gutUuT5lzeXDTyv6szbmNfXXwl8SjyI4S33cACvlTwJp5SNWxyAPzNelfD/xcbDxK9qzEKpFfrs49DpgfYPhW6Gn+OzHnEGrWWB6edD83/jylv+/deidjXj8V49zodvqVr891p7pdxqP4wv3k/wCBKWX/AIFXrVleRahZw3UDb4ZoxIjeoIyK/L+IcM6eI9r0kJjiaN1B6mkr5W2hI4HNLTKcDmosVccvelptKGosFxaKMijIrJxKTCiiis+Uu42ijBpdtRygKtFA4orNxLQUUUVzSiWmFFFFcziUhuKKdSbaxlAsSijFFcsoFpjSKSn03bXNKBSYlFLikrllAtDKKfik2iuaUTVDaKdtFG2uaUS0NopcGjFYOBaYlFFFcziUmFFFFZOJqgooorFxAKKKcoqeUYtFFFYuADKKdijFcjiUNop2KMVnYobRTsUYoWgxtFOxRimVcyd1NL0wvULy9a/tKEOY/I3OxI0uKrSTdeajkm61WeXOea9Slh+pw1KxI8uc1FuzTM5qSNa9BRUUcHM2yWMVYjFRxpU6CuKqztpIkUdafSL0pa4bXOkAcU4c00DNPUVnJWLiPUVIi0iLUgGK45e8dcRyjilBxTQcCjdWPLY2vYM0bqSijlI5hd1G6koo5Q5hd1G6kopcori7qN1JRRYVxd1LuFM3UoOaysXcdSjimdKcDU8o7jgaWm0oOKixVxaKAc0VPKO4UUUVFirhRRRU2HcUHFLuptFRYdx2RS5plFTYq4+imjinCoaKuOBzS0zpTgazcR3FooorPlLTCjNFFKwXK9/crbwO7uEjUZZj2FfmV8UPGMnxi+Kmra4rtJpqt9msQegt0yFP/AuW/wCB19X/ALYfxRPhHwO3h6zmxq2v7rZQDzHB/wAtm/8AZf8AgX+zXyT4K0xYYlO3Axj8K+54fwTpQeKnu9F/mdNONzqdLsU0uyLsMAc15qvjH+zvG15KkpCrIoxXa+OfEsWjaRcys2FiQsfrXzFo2sahca/N/aEUkUtx/pUOfl/dn7tfZU4c92a1Jcuh+nHwT8bpq2nRRM4YFRxntXuPgO7W0F3oxPFs3m2+e8Emdv5NuX8q+Dv2evGhsb2KFn+8QMGvszTtUYQWutW4Ly2QJZF6yQH/AFifX+L/AHhXzub4L63h5RXxLVFvVXPUaKZFOk0ayRuskTgMjqchhTuxr8k5TLmG0UnOaWosTccDmlpnSnilYLhRRRUtFpiqaWm0qmsrFpi0UUVNirhRRRUNFJhRRRXPKJaYUUUVzuJSYUUUVlKJaYUm2lormlEpMbiinUYFc8oFpjaTFO20ba5ZQKTGbaMU6iuaUDVMZRT6btrmlAtMSkxS0VhKBaY0jFJT6TaK5nApMbRT8UYFYSiapjKUDNOxRXM4juIBS0UUlELhRRRUuOg0FFFFcMoGiYUUUVg4jCiiisrDuFFFFSM5lpcA1VlmxmmPNwaqSS5zX94UMNrqfhlXED3mzmmhsmoMkmpolzXreyUUcMajkyeNc1ZjWoolqxGMVwVGdkESoKkHFRpT689q7OuLsiQHFOHNRr0qWMVnJcqNYu45VqRVpUFOrik+Y7IoBxTt1NJpu6s+WxXNYfuoyaZk0oNLkuHOOyaMmkzRmp5RcwuTRk0maM0uUfMLk0ZNJmjNTyhcXJoyaTNGamw7hRRmiosXcUHFOplKDipsO48HFKDmmA0tRYdx9FMzS7qnlHcfmlzTM0tZWNLjqKbQDiosO46ikDetLU2GmFFFFRYdwoooqbFBSg0lFKwD6KKKz5TVDs1Q1rV7XRNNur68nW3tbaNpZZHOAqqCSatZ96+Rf20fi6WVPh9pk376bbNqrIekfWOH/gXDN/s7fWuzB4SWLqKETRK54T8RPHVx8XviPqPiGcv9iJ+y2MTZ/d26khf+BN95vdq07OFNNsckYIGcVj+GNJSNVbbiOMAKKi8a68LC1kEZzIw2Rr71+nxhGnBU47I9KnHlic1JpF38WfiDYeGLcMbBJPtGoyqfuxryR+Vd5+0l8G4p/DNt4g0m38u/0cCMIg+/bD+H/gP3v++q9r/Zo+B3/CJ+DG1jUY86vrH76QsPmSLqq/j1/D3r0LXfDyPC6MgKkYxjg181ic09nil7N6R/HuclSXNI/Pz4d+KGtLmCZG2sCMjPf0r7y+DHj+PVdPiUsG3DoT145H4ivgf4t+CJvhZ4/vLVFZdLnfzrZu20np+GMV6Z8E/iU+lXkUbykRsR36e9fUNxrQVWGzNKcrrlZ+i3gy9+yzT6M75SIefaMe8X8Sf8BP8A46611VeQeGdd/tvS7a9tJFW8tyJ4GJ43D+FvZlyv/Aq9O0bVotYsI7mE4DcMh6o3dW9xX5hnOAdCq6q2ZM/dL9FFFfM2RkmFFFFTYtD6KZRUNGiY+imUVk0O5LkUZptFRYdx1FNBxS7qlopMWigHNFYSiWmFFFFYOJaYUUUVk0WmFFFFc7RSYUUUVg4lphRRRXO4lJhSbaWisJQNExuKKdSba5pQKTG4pNtOxRWEoFpjMUU+iuaUC0xlFO20m2uWUDRMSijFFcrgUmFFFFTylXCiiipaKTCiiiuaUC7hRRRXNKIwooorncR3Ciiio5R3PPzLmoic1GDmpIxmv9CvZqJ/Ork5DkTJq1CmKZElWY1rkqTtodlGBIgwDUg6U0DFOHSvOlqd2xIvepV5qJBUyDrXM9DaGo5VqVBimqOKeveuSbudMVYepp26o80VzpG6dkOJptFFNohsVT2p1Mpc0JCTFzRmmZFGRRyl3H5ozTMilqOUaY7NGabRUcpSY7NFNoqHEdySlFNpVrKxVxaKKKmw0wpRxSUVFihcmjdSUVNhofmgUyis7GiJAcUBvWmqaWpsUmPopoOKdUWGKGpcim0VLQ0OooorPlNAoooo5RhRRVXVNUs9F065v7+5is7K2jMs08zBUjUdSSaXKWjiPjZ8U7T4U+CrrV5Qst6/7ixtyf8AXTtwox/dH3m9FU1+fdtb3fiHVrrVdRne71C7kM088p3MzEknJ+tdb8XfijdfGfx1JqaF00W0Jg06BsjCZ5kI/vN/8Sv8NZ9sgt1wBg/Sv0DLcCsJTu/iZ6FGnpdhqF7HpVkwyEVV5Pp/9etH9nj4YP8AF3x3Dq2oxs2i6cwfkcSc9P8AgR/8dFcha6Ze/ETxVbaHp6s4eQCVlHAXP3fq1foL8LPhzY/D3wpaaVaRqGRQ00gGC796yzPGLDU+VfEy6k+XRG8tisUaogwg6Vj6xpgeNvlyD1FdbsHpVS7tQykYr88uciZ8r/tBfCVPHnha4SKIHUbUGS3YDk/3o/8AgX/oSiviHQr248P6s9pNlJYXxzx3r9Utf0gfOduR3FfDn7UvwefSdVHibTotsEzfvlVcBX53D/db7y/7X+9X2+RY5NPDzfoNPld0eu/s+fFFdkNrPJnAxgnqvpX05oevJpt2l7vH9m3W1Zj2R/urJ+P3W/4Cf4a/Lv4c+OZdGvoZRIQVI5r7r+EHxAj8Q6UkEzLIrrt2E9Ceo/Gvcx2EjiKTpT2Z2aVYn0xTsiuT8L6wYV/s24fOF3Wrn+NB/wAs/wDeX/0H/daumUnNfkeJws8LUdKe6OZxsSUUDkUVy2AfRTcmjJrNodx1FNyaVTmsmguSUUg5FLU8paYUUUVLiWgoyaKKycSkLuo3UlFYuJQ6iiiueUTRMKKKK53EpBRRRWTiWgooorncSgoooqHEtBRRRXNKJSCjFFFYOBaDApNtLRXNKBaG0UUVyygaJhSEUtFczgUhlFKetJWLiWmFFFFYNFphRRRWTiXcKKKK5pIYUUUVg4jQUUUVHKM81XqasRDNQoOatQrX+g1R6H87U0TxLVhKijHFSDivInqepDREi96etRrUqCuZ6Gy1JEFSoMUxBUgGBXJPU6oaDx0opuTRk1z8ptcdRTcmjJpcouYdRTcmjJpcpNx1LmmZNGTS5RXF3UbqSilymlxd1KORTaVTU2GmLRRRUWKuFKvekoqLDuSr0optFZcpdx2aKbRU8pSY+lU0wHFKDmo5S0x9FNBxS7qnlKTFopN1KDmo5RqQo4NLkU2ip5B8w/IoplFQ4jUh9Lk1HTl71HKVzElFIDxRkUrGiYtFJmlpWGmFfF/7V3xvfxTrE3grQrgtpVq4GozxH5biZT/qQe6r/F/tf7telftS/Hg+DtLbwroFxjxHfx/vp0OTZQHgt/10b+H0+9/dz8h6VpyxLnGW7k19LlWXp/7RVXov1/yPQoU7+8y3p0H2eHmqWr6u4kitLXL3Ny/lxheTmjWtVjsLd8tgAdv89a9U/Zf+Cr+KNYPiXXExGq/JE3ZTysX/AAL7zf8AAVr6OtVjRg5y2R1ynyI9k/ZZ+CyeENETWr+LdqN0NyFhyN33pP8AgX8P+z/vV9ExwCNcYAqlp9uQc1pV+ZYmvPEVXOR57nzO5F5dMkiytWKCMiuOw0zm9Vst6txXmfjfwla67pl5p95CJbW4QoykdPp7jrXss8W6uY1vSwwbjINaUpypyU47ou5+Wvxd+Gt78M/Fs3moxs3bcZAOCjH5ZP8A4r/aruvg38SZdE1CNZZTgYHXqK+qfi98LrXx7oM1nKireRgm3mYdD/dP+yehr4Gv9LvfAHiKWxuVeNQ58ot9/wCU/Mrf7S1+mYDGxxtGz+JGlOXKz9MvBfie38TaVGRLh8BldT8ysOjD3Feo6Dqn9o2zJL8t9FhZYh3/ALrL/sn/AOtX5/8AwP8Ais2nXEMEk37skbTnpX2N4b14arbQXdo6/aox8uTw4P3kP+y1eZmmX/Wafu/EtjonG6uj0+nVQ0rU4tVs1niOP4Xjb70bd1I7GrtfmsqcoPlZzDqKKKmxQUUUVjYY+im5pQaiwC0UUVm0UgHFPplOBrJotC0UUVlYocOaKaDinA5rJxNAooorncSkKcUlFFYuJaCiiiudxKCiiis3EsKKKKwcS0FFFFZuJSCiiiueUSxtFFFcsoloKKKK5nEtBRRRWEolJhRRRXM4al3CkIpaKznDQpMZRSkYpK4uUtBRRSgZqXAdxVHWlo6UVnyCuecIlWYlpirU0YxX95zdz8BpqxKvanjmmL2qVBXDI7ojkFTxrUaLU6DFck2dMR6ilptJmublNLi5ozTcmjJpWDmHZozTcmjJpcoXHZozTcmjJpWFcdmjNNyaMmlyhckyKWmUVNjRMfRTQaXIqLDuOB4pabRU2KuOopuTShqiw7jsmikyKTNZ2NExaXpTd1ANTYpMeG9aXrTKUcVHKUmPBxS5FN60VNirjgc0tNXrTqmw7iqaWm0oPrUco72FoooqHEaYUUUVHKPmFBxRupKKOU0UhcmvMPjv8ZrP4U+Ht6MlzrN2pSwsm67v+erf7K/+PfdrY+K3xY0f4UeG59S1OQNOw22toD+8uH7Ko9P7zfw18Faz4p1Tx74lude1m5a4vJznk/Ki/wAKKP4VFepgcCqz557Hbh6PtXd7FWWe917VLrU9Sne7v7uQyzzv1dj/AE9BU15cpp9ueRux1PanT3EVuDWZ4f8AD+ofFDxBFpNp5n2XevnSR/x/7A/2v5CvsFZLTY9nRI2/hD8N734p+KIZWjP9nRPuUsPlO0/PKf8AZX0/ibAr7+8H+GLXw5pVvZ2sWyKJcKD1Pqx9z1rA+FXw3s/AegQ2kUaeeVXz3QcE9kX/AGV7V6FHGEHHWvhsyxzxMuSHwr8TyK1XmloSxjaKmXvUSjrUq968GxkmLRRRUWNUxjrkGqF3AJUYYrSqCROtSO5w2s6XuDYXkV8wftIfBmLxdpM+qWcRW+hG6Xyx8xVRxKP9pf8Ax4fSvsS/tA6k4rjNe0USK7BR7jHWu/CYmWFqKcTRM/LTSNTvPDGqNaXWY5Yz1HRh6j2r6r+B/wAYihitbibjgAk1yX7SXwIMDP4h0iLYmSzoo+WFj3P+w3/jrV4d4N8RS6ZeKrExujYKnqCO1fpFKrDF0lUgdlKfRn6m6HrwAW/tf3jkAXNqv/LVfVfdf4fUfL/u99Z3Ud3AksTh43GVYd6+Qvgn8V4r+3itJ5R5ygBCT19q+jtC1wWI+1wnfaS8zxDt/wBNE/8AZl/i/wB773y2a5X7VOpSXvfn/wAEqcL6o7anVFHKk0aSxussTjcjocginZr4M5Lj6KbRWVirjqKKKnlKuKDinA5plKDis3EaY6ikBpaycS0xQcUbqSis+Uq4+gHFIDmlrNo0THDmimg4p1YOJSYUUUVk4lphRRRXO4lJhRRRWTiaJhRRRWDiUmFFFFZuJaYUUUVg4lXG4oxTqK5pRLTG4oxTqK5ZRKTG4oxTqKxcS0xuKMU6isHAq42il20mMVnOGhaYU3bTqK4nAtMbtp1FFTyjuFFAGaXbU+zFc4EDNPQU1RUqCv7iZ+E2HoKmRaYgqVelcNQ6KY9elPDVGDijdXNa50XsSbvejIqPdS5FPlJUh+RRkUzIoyKysXzD8ijIpmRRkUuULj8ijIpmRRkUrDuPyKMimZFGRS5R3JMmjJpmTS7qzsXcfupcio91KDmpsVcf0pc0wHFGaiw7km6jIpm6gGpsO5JRSbqTdWdguOopu6gNU8pSY4HFOpmc0oOKmxSY8HFKCKaDRU2LTH0Um6jdU2LuLSg4pu6gHNKwXJKKQGjIrOxQtFFFTYsdXLfEn4jaR8MPC9xreryYiT5YoU/1k8h6Ig7k0/4gfEPSfhx4duNa1q4EdrEMLGP9ZPJ2SNe5r4B+JvxO1f4ueKn1PVHMcCEi1slO5IE/9mY/xNXZhsHLESu9jrw9B1XfoVfHHjjWfin4mm1jWJixY4gth9y2i7RqP5t/FVCSeOzj2IAD7VC8iWkW1OXx1rmby7u9a1GPT9PHm3Un/fKL3Zvavq4QjTjyrZH0EYqCstjWtVv/ABhqsel2AJaU/vJwMiJO5+v90V9wfAX4NW3gXRIJ5oQt46cBh80at13f7TdWrkf2bfgRB4SsYdSvoQ9w2HiDjkv/AH2/9lX+GvpK2gxmvnswxntL0obHl4jE/YgWbeIKvSp1FIowMUoOK+ZscCJFHFKOKaDindazcTRMcOaKQHFLWbiO4UhXIpaKzcSlIqyx5BFY9/ZBg3HFdAy5FVJoQwIIoSLUjzDxL4diuYJo5IhJBICroRkYNfEHx++BM/g/UpNW0aJmsnbKhR/5Db/a/ut/F92v0T1CxDBgRmuC8UeF7fUrOe2uYVmtpQVZGGa9rL8bLCT8mbQmfnV4J8azaXcxukjIynkdCDX2p8GPi5DrVpHb3EoL4AIJ/Wvkz48fB3UPh/r0uo6dE09lKdw2jh0/+OL/AOPda53wF8QLjR7qKWKUrg+tfepwr0+eGzO+nU6M/UrRdaj0rkEy6dIcyqOfszf3h/s/3h/D97+9XZbq+Xvg/wDF+DxDaxRSygXAABBP3q9w0HXl09FR3zp54Vz/AMu/sf8AY/8AQf8Ad+78VmuWc169Fa9V+pNSnfVHZ0UDpRXxljjH5pd1JRRyl3HA5opvSlBqHEpMWlBxSUVi4lpjs0tMpc1nylJjqVTSUVi4mlx9KppoOaWsHEpMdRQvSiocS0wooorBxKTCiiisHEu4UUUVi4lJhRRRWTiWmFFFFYOJaYUUUVhKJaYUUUVySiUmFFFFZcpaYUUUVm4FJhRRRWMolJibaTFOoxXFOJaY3FKFpcUVmkVcKKKK05BXODUVNGKaq1IgxX9pNn4bHUevenZxTOlFczVzoWg7OaKaOKdWfLYd7ig4pd1NpN1TYVx+6jdTaKnlDmHbqN1NopcpSY7dRuptFTYdx26jdTaKXKVckyaN1JRWdi+YcDmlplKDipsNMcDilDUlFRYq44EUU2ipsO5LkUm4U3IoyKjlC47dRmm5FGRS5S0x9KDimdKcORUcpSY4HNLTKVT61Fi0SUUgPrS5FZ2LuFFFFKw0xc0bqSlFRYsdXP8Aj7x7pHw58OXGtazcLDbR/KkYP72dz0jjX+Jj6VS+I3xN0b4ZeHrjVtWnEcSjbDAD+8nk7Ko718C/ET4m638WPEb6rqzmOFCVtLJT+6t4/wD2Zv7zV14bCOu9VoduHous7Im+JvxR1r4v+JW1PVGNvZRErZacjZS2T+rnu3+TzymOBagLrCuBgmsa5u57q6jtbWJp7iVtqIv8zX08aapx5Yn0cYKC5US3t1caperp+nqZbmTg46KPU+gr6p/Z0/Z4j0e2j1rVIRczvtlAkUDzmH3Xdf7q9lH+9Vf9nb9ndLCGLW9ahLvPsdVccuf4Sf8AY9v4vvV9T2VokMYRFAAGOBwK8XHYrlTpw3PKxWK+xATTbBLaJY0UKqgAAVrRJsFMgi2ipq+aszy0OooopWNLj6UHFIDmis3Edx4opq96dWTQXHA5opo4p1LkLQUx0yKfRWbjY0joZ9xBvU1g6jYB1Yba6mRM5qhdW4dScVJseM+PvBVpr+mXFldwiWCUenKnsRXwN8X/AIRan8MtbmnhjZrKVjKhUcSD++v+1/eX/gVfp9qmmiWNgRXlvj3wDZeJ9Ln07UYBLA4O1scoezA9jXuZdj5YWXLL4WbQl0Pg74e/EKfSLmKWKUrtIyM9K+3fhH8W7fxFZxwzSr52ACCfvV8V/Fr4O6n8M9ckkjRns2O5JFHysP7y/wC1/eWpPhv4/m0W8iIkKgEcZ6V9naNaPPTZ2wn0Z+nuga+umokMz7tNPCSE/wDHv/sn/Y9/4f8Ad+72NfM3wq+KsGu2kcUsqmTAGCfvV7LoeutpChctPph6KOWt/cf9M/8AZ/hr5HMsq3rUF6oJ076o7eimhs06vjrHFsFFFFZtFIUGlptOHIrFotBRRRWdihQadTKcvSs3E0THLTqZTsisXEpCg4p1NpVPFQ4lpi0UUVi4lBRRRWDiWmFFFFc7iUgooorNxLQUUUVi4lBRT8UYrGUTRMZRT8UYrjlEpDKKfijFZ8paGUU/FGKlxKDFNIp1GK5HEpDKKKK4pxNEwooorKMR3FUZp2KAMUV0JEnEAD1pcim5ozX9iWZ+JJjs0ZpuaM1PKPmHZozTc0Zpco0x2aM03NGaXKO4+imUVPKO4+imUuTU2HcdSg0zNG6o5Rpj91LkVHupd1TyjuPopuaAcVFg5h1KDim7qXIqeUpMfmimUuTUWKTHUU3dS7qnlLuO3UbqSipsVcXdRupKKVh3HinKeKjU04HFRylKQ/NLupgNLUcpSkO3UbqbRS5EPmJQ1O3VEvSng1DiXF3H1wPxa+MGjfCPQ3v9UlEk8gItLBT+9uG9vRf7zfw1R+NPxy0n4S6O5mdbzWrhSLXT1b5j/tSf3V/ytfCPizxZq/j7xBc61rV813dSHgfdVF/hVF/hArrw+E9o+aWx6uFwzravYf47+ImvfE3X5NV1qYs+T5NsDiO3j/uqv9f4qwWuDbqfWmSTpCCF61zGoahLPPHFDF5ssn3I/wC//wDY19DCMacbRPpacYUo8sS9davPc3C21oplnkOFUV9Vfs2/s7rZRxa94ii8yWbDJE4/1n93jsv+z/F3qr+zb+zOukRReIPEsPmajNh4oHHK91JX+7/s/wDfVfW1jp62qrwN2McdB9K8fF4xK9OnueLjMb9imWrSzCqAAFUDGB2q9HEEFEK7Up9fPtXPHTuSr90UtIv3RRmosaJj6KKKzsO4U+ql/qNrpdnNeXtzHaWkK75biZsJGvck14jr/wC0jDqNxLbeGiIrQZU6pcJzJ7wxNz/wJv8Avk1pSoSquyOmlSlVdke26nq9no8Pm3t1DaxngNK+3P0rEPjmHJ+yWlxOP+eko8pf/Hvm/wDHa+eZviN5c5uC73N4etzcSGWX8CeF/wB0Vx3iD44xaeD++82vWp5bH7Z6cMFb4mfWb+M7nkNPpsH+88r/APxNSjxFct01Ow/8Bn/+OV8G3n7S8sBbysD8ay5P2otU/havRjgKKWx1Rw9NI/QlNZ1Aji+06X/tnJH/AOzNVuPV74A+bpwlX1tbhW/Rtpr4C0X9rbUYCBMc475r0jwr+2DZSyBLo7T3OaynllGWyJeGh0Prq11u1nk8rzjDMf8Aljcq0TH/AHd33v8AgNXq8o8K/GPQPF9qqGeGZWHKS4Nd1Z2g2BtEvfIXtYzlntz/ALo+9H/wE7f9lq8erlEo602YvDNbGpcWiyqSBzXP6no6yqwK1s2uvLd3H2C6ibTdSxn7NIeHX1jb7rr/AOPf3lWrE8PmKQfvCvDqUp0pcs1Yws46M8X8a+B7LxBps+n6jbie2kHccqexB7H3r4V+MHwe1H4X6w88CNJp7sSkijgj/wBlb+8v/fNfpjqumiVG45rzPxv4Js9d064sb6BZbWQENuHT3Hoa9fAY6WHdnsaRl0Z8J/D/AOI0+kXMbLKVwRkZ6V9gfCr40QapDFDcTANwMk18g/GD4Pat8N9Ye8s0a60+RsxyqOHHp7Sf7P8AF2rE8F+PpNOlSSGXawPK5619qnGtHngdtKpbRn6l6D4h+xIpiJntD1hHJT3j/wDif++ffurWZLq3jmidZIpF3I6nIIr41+EPxpivYYoLiTI4HJ5FfRPhrxP5YFzaN50EnM1tng+6/wB1v/Qq+QzLK1NurRWv5jrUeb3o7no1FV9Ov4b+382CUSxHv/d/2W/2qsV8a4nCrrcKKKK5Wih1FFFQWgoooqbGiYUu6korNoEx9KDikBzRWDRqmPopAaWsmh3HUUUVi4lBRRRWLiUgoooqHEtBRRRWLiUmFFFFZSiaIcvQ0tIvQ0tcs4lJhRRRXMolofRRRSlEq4yiiiuWUS0Mop+KMVxziaoZRT8UYrBRGFFFFaqJFzg91G6m5FGRX9jWPw647dRupuRRkUrDuO3UbqbkUZFKw7jt1G6m5FGRU8o7j6KMijIpWKuLmjdSZoqeUq44GlplFRyjuPopuaMmp5R3HZpcmmbqUNUcorjg1LkU0HNFTYpMfRk0zpShqjlLTH7qN1NzmlqbFJkm6jdTaKxsXcduo3U2ilYdx4OacpzTF70o4pWGmPoooqbFXF3UbqSilyjuOFeK/Hj9pHT/AIYW82k6SY9R8TyD5I/vRWv+1J7/AOzXE/H/AParTRFufDvgqaK51XlJ9VHKQeqx/wB5v9r7q/71fIs93Nd3Ek88jSyyMWaSQ5Zj7mu2hhOf3p7Hu4TBOXv1NuxqavrF94i1SfU9Vu5L/UZ23SzynJJqnNfLCpUct61Qmv8AyBWfHJd63qEem6XC93qEzBVVVyFz3NepyqKsj6GKUVZDbu9m1C/isLZTdXk/yRw9gP8Aa9q+u/2bv2XovDHleIPEsX2vVpNuyOT+D/P92tX9nX9mK08DW8Wsa3GLvXpQGw4z5f8A9f8A9Br6Tt7evKxGJv7kDwsXjOZ8lNjLGxS1GRhnx97HT2FaCDpXnXxW+N/hr4SWwivZG1HWpk3W+lWfMrjsXP8AyzX/AGmGP7u6vmLxd8Z/E/xIaSLV7wWWkE5XS7BikJH/AE0b70h/3vl9FWvPjh5T1Oahhp19j631n4x+FdJuHtlvzqF0nBg01PtDZ9Cy/Kp/3mFc/J8Z5rh2FrpkFsnaS+ud5/74T/4qvkr/AITtNITZAyxqOyiuZ1n40tAzLGzM/qTXbDBxW+p7lPAUofFqfccPxMun+/qmnx/9c7Rv/ZpK0o/HTSL/AMhy3/8AARf/AIuvzjufjbqrk7WI/GmQfHPV4zjefzrq+opq/Kb/AFWj/Kj9LrHxVPJ9zULCfP8AejKf+zNW1BrkxGZbLzF/v2rpLn8PlNfm7o/7R2qWxXfJ0969K8N/tTyIFEsh+oNYSwMHuiHgqEttC58afizrPxJ8QNaXRbT9CtJcwaUp4Zl6PKf4m9vur/49XF3HiH+z7c4NUNX8VWesa/czQyL5c8pcAnkZHArf034Hat8TxjT7u3tMf8/H3a6KVKNNcsUdkIwoxtFHk/iP4jz3DNHE28k4GDx+f+Fcjb3l5r9wVthNfMf4LZd1egeHv2ZvENx44m0nxt/xJJbd2dNP3/8AH3GP44pfuyL/ALS/d/i219TeBfhNp/h+38nT7SO0i/8AHqdXE06Om7OKpWaZ8i6R8GvF2thTFo5tkb/lpePj9K3If2bfFjn5pdPj+gNfcdh4MiUD93uPqRWmvg2IjmFfyrzJZjK/uo43Xn0Pgm5/Zy8XQZ2W9lcj1WQr/OuX1f4W+JvDpP2vRbuID+OIb1/76H+Nfo2/guHB/cise/8AB4Xdsynt2qI5pJP3kNYia3Pzj03xXqmhXH7i4mgdT91iQRX0F8KP2r9Q0d4rbV2M0IIG8nkV6X43+BWheJkkN3pqxTHpcWw2n/gQ6NXyh8T/AIM6/wDD26eaFDeaYT8k8I+UD0cfwmvVoYulX0W52U8QpaM/SHwx8RdC+JGjxiSVJEIQq6nZJGf4WVl+ZW/2q39L8Rywaimk6s4Mkr7LO/HC3B/55yf3ZP8Ax1v4fm+Wvy9+Fvxd1HwrfxjznEasA0bHkV9x+BPiVpnxE0Nre4kVpCoD5PIP972Nc2NwUa8Xbc1nTVRaHvc8G4EEcisLUtLWZGG38Kzvh94uk1B5dA1Ry2rWUQeKY/8AL3b/APPQH+8v3W/4C38VddLbiQcCvi505UpOEjz9YuzPGPGfga21iyuLa8t1uLWUYaNh/Kvh342/AnU/AOqPqOnI0thIchgPv/7Lf3ZP9r7rfz/TO+05ZVYFa4bxR4Pt9RtJre4gW4t5BteN1yCK9PBY+eGdnrEuMrH5teDPGc2nzoyyFSDg54/A+9fVnwm+MnEccsuegIJ615N8dP2d7rwzdT67ocZexzuZFH+r6/K/+z/00/76/vV5X4c8TT6VcYJaN0OGQ8FTX2UJwxMOeB3U6mlmfqD4Y8UCbbd2Uo3sBvjJ+WYejeje9eiaXq9vqkLPESrpxJE/3oz7/wCNfBfwn+Nr27xwSzccDk19PeFvF0OrRx3NrOI7hRxIPmyv91h/EtfO47LVXTlD4iZwUj2Sisfw/wCJYNWTyXXyLpRlomOfxU91rYr4arSlTk4yRySvHcTIoBptKveuflEpEg5ooXpRU2NbhRRRWTQ0wpymm0Vg0apj6UHFIORRWLQ7jwcUoNJRUuJdxwNFNpQcVi4lJi0UUVDiWmFFFFZOJVwooorJxNExy9DS0i9DS1zTiUmFFFFcnKWmPoooocblXE20baXBornnEpMZRRRXnzRtFhRRRWaiVcdto20tGDW6gZ3PPKKZmjNf2BY/DLj6KZmjNLlHcfRTM0ZqbFXH0UzNGaXKO5Luo3VHmjJqbBck3CjIqPJoyanlHck3e9Lu96i3Uu6o5R3JMmjJqPdQDmp5R3JqKYOaUHFTylpjqXNN3UuRU8pSY4HNLTKXOKixaY6im7qXdU8pVx4OaUHFRg5pwNZ8g+Yfuo3U0GlqeQfMOVutLuplGfeosMlp9Qg1jeMPG2j+AtEl1fW7xLOxi6sT8zHsFXufakos0im9jYvr2DTrOa7u5o7a1hXfLPK21EXuSa+M/jv+1NceMXuPD/hGR7TRBlbm/wA4e89l/ux/+PN/s1xnxo/aH1b4uXslrCz6Z4cRsRWaNgzj+9Mf4v8Ad+6teT/aBzXbSo296R9Ng8Cqfv1dx/SqVzfLECF5NQ3eoZyqHA9a3vh18Hdf+K2qR29pE9vYP8zzOcEJ6n+6P/Qv4a7laKPbnKMI3kzltB0PXPiBry6VoUTTTMcPJ/DGO5J/zivuj4Afs86X8LLKK6liW61mQAtOwztP+z/8VXVfCj4L6J8M9JjstOtlNxgedcsMtIfb+6v+zXptvb+QDXmYivze7HY+ZxWOdT3KeiJ7aCvD/wBoD9pmL4fiXwz4Z8q68V/8t7j70WnKf73rJ/dX/gTf3af+018d4/hH4ZFnprJN4q1NSlkh+cW6dGuHX/Z/hX+Jv91q+GbO4mknluLiaS6uJmaSWeZtzyOxyWY9zWVDD83vSNMDhPa+/PY6SW9uL69uL69upb2+uHMk9zcNukkb1Y9zVDVPE/2VCBIvHYVk6jrIiQxxnnpmt74cfCHxD8TbxDZwGDTw2Hu2HyrXqe7Ban0kpxguZnFXWp3epy7U3fMcDgkn6Ctnw/8ACnxL4mj8y10aeSI/8tZhtQ/p/WvsL4ffs0+HfB6pM1sdQv8Agtc3XzYP+ytepW/g6LH/ANauWWJUfhR5c8cr2R8Paf8Asw+JpwDJNZWq+0e41e/4ZY1vvqtt/wCA9fcEXhGEfwk/hSS+EoucAj8Kwljqi2Ob61Le58D6n+zZ4nstxhawuwPRyh/KvPPEPg3XfCsjLfaddW2OjqDtNfpLe+DdwOAG+orl9b8ERzwvFNAssZ6pIu4GnDHyT95GkcU+rPzptfEd1btgTbgP4ZBXt3wn+OlzoFzCGcqAQDk11nxA/ZcsNVMtxog+wXXXyj9xj7f3f/Hq+fPE/gPX/Al60Op2ksYU/K4HB9wR1/CvShOjXWmjO+niU9z9EfDfxA8M/FnSk0/XoIb8ZDp5hw8b/wB+N1wyN/tLtauv07w/qPh/mGaTxNpX/Af7Ri/9BWf/AMdk/wCulfml4R+It/oE6PHOxVSOQeRX1X8Jf2nVkWKDUJd3Qb88iuevhuZWkdLjCqrM+sdKey1CB7ixuVniQ4faMNGf7rp95W/2WGa0vsvHXP4Vwek+J9K8XhL+2uzaaiVCi/tSBKR/dkHSRf8AZdW/4DW3D4mutET/AIn8SC1PA1SyU+Sf+uq/eh+vzL/tLXzdbBzpu61R5lTDShqtjeNmOap3WmrIDxWpFLHcxLLE4eNhkMpyDQVzXA0crdjjr7ReG+XIrh/Evg+K+glRolkRwQ0bDIYV7HJbBgax7/SVlDYGDVRlyscZH5r/AB8+BE/gW5k1zR42Oms2ZEA/1R9D7f5+mZ8HPiPd6BqMMvmnAIDIT1HpX3/4p8I2+p209tdQLNBKpWSNhwwr89/ip8Orn4R+Prix5/s+ZvNtJSOGQnp9R0r6nBYlV48st0epQq82jPuCx1yXWdJ07XdGlUarYEXFsSeHGDvib2Zdyn/ez/DX0H4f1m18S6FaatZZNndRLKm77wH91v8AaH3f+A18Nfs++OPPsP7Plk5A3Jk/mP8APvX0T8A/E62fiDxB4Pkb92P+JrZg/wB2Rtsyj/dk2tj0krzMzw11zroVXhdcyPYJLYSKTWVeaeJFYYrdKFCfSo5YQykjrXy55tzzTXfDoZZPkDKeqkV8ifHf9nCRXn1rwvAeMtLaxjJT1KL/ABL/ALP8P8P92vvC9s/MU8Vx2taCJA7KvPcetejhMTPDyvHY1hNo/LXT9VutJvPKlDQ3CHp2PuK9w+Fvxon0u4ijlmIwRyTXovx2/Z4g8Uw3Gp6TCINXXLPGowly395f7sn+191v4v71fIV7bX/hu/ktr+KS2mifYxdSpB9GB6GvsqFenio80NzuhUufpT4K+INn4jt4iJRG45jeJsFD/s161oHi77UUttQZVkbiK4XhJPY+h9vyr8zfhj8VrnRLmOOSU7c+vWvrjwF8TrXXrVEeVX3AAhu/1rz8flscRHmS1OiUI1Y2Pp2n1w3hzxebZFjvHM9nwBcE5eD/AK6f3l/2v++v71dvC6zRh423Ke9fBYjDTw8uWaPPlBwdmS0UUVw2IF3UbqSisrGiHA5optKprFxuaJjwcCjIptFZOBVyQNSg5ptFZuJdx9FNBp1YuJSYqmlptOXpUNFphRRRWLiUmFFFFRymiY5ehpaRehpa55xKTCiiiuOUSkx9FFFEY3KuOppFOorCpEtMZijFLRXmyWpsmJijFLRRGI7gozTqBxRXQoEXPNMijIpmRSg5r+veU/CbjsijIptFLlGmOyKMim0UuUq47IoyKbRU8o7j6KKKnlKuGacOaaOTTqnlC4UUUVDiUmFFFFTyjuPozTc4oBqeUq48NS7qaOaKnlKTH0ZplKDio5SlIfuo3U0HNLU2LuOB9KcDmmL3pw4qGh3HUUUVFhpjs8VHnmjNfPvxz/aosPBMc+jeFWTVPEGNstz/AMsLY/8Aszf7P/fX92pVO510KM68uWCO/wDi58btC+EulvLfSi81KRf9G02Bsyuf7zf3V96+D/iP8VfEHxO1eS+1q8eRMsYLJTiGAf3QP/Zutc9rOt3+v6jPqOqXMl3fXDbpJZWyxrLnuMcV1U6aR9jhMFHDq8tyf7Tgc1UuLstlV4FR2ljeaxciC0jMjnv0A+pr6c+Bv7NBdrfV9dVtmAyxuMNJ/u/3V/8AHm/2RzWsmoK7OqtWhQjzSZw3wY/Z51Dxrcx32oI1vp6sMsw3Ivt/tN/s/dX+Kvtzwf4N07wppsdlp1usMSgZIHzMfUmtLR9Fg0+2jghhWGGMBVjQYAFbUcIUcCuCc3M+TxOMdd+QQwrGmMVmeJtfs/C+g6jq+oyiGxsYHuJpD2RQSf5Vr4r5a/br+Iv9keDNL8I2k2Jtbn8+7CnkW8JztP8AvSbf+/bVjClzyRz0I+1qKB8neNfGmofE3x5qXiXUjmS9k/cxZ4ghXiOMewXH/AtzfxVUuJxb25pdKswIt+OvA+lXNH8H3fjjxRp/h60/5eP9d/1z/i/+Jr1opJH3MIqnBQR0vwJ+DF/8WNeW9vEaHQoGBZiMeZ7Cvvfwt4TstA0+KysLdLeCMABUGBVf4dfDy08FaBa6ZZxBFiQAkDqa7u2sFiHSvJr1HJ6Hy2KxjrStHYq21iFHSr8dqqjoKmRAop1chxplcwhegqNoAwPFXdqJHJLI6xxRjc7ucBRXleu/tCaGNSXS/DYTWLluGvnbbZx/RvvSf8B+X/apqDnsdNKnOq+WCO/azU54qhd6WsgIKgiq2mar4jFql09nY+ILYjMkemhobhP92J2ZZP8AvpW/3q2dK1bT/EccpsblZZYjtmtmQxTwMOqyRt8ykehqZUZI3lRq0vjicfqHhlJASq4NcX4j8Fwajbvb3tpHdwHgrIua9pmsuDkVlXmlLJkFcisk3B6Exm1sfCnxK/ZcktfOvvC7FyMsbF/vf8BP8VeA3f8AaPhu+aG5ilsrhDghwRzX6har4bDBtq59q8r+IXwl0bxjbyRapYrI+MLOoxIv49/xr1KGOlHSeqO2niLHyT4J+M+q+HZ0IuHAHcNX1j8Kf2m7XVIo4Lq4HmEAMT/UV8tfED9nXW/CrS3WjE6nYrkmMD51H0/z/wABrzvTdUudIu9yFopYzhkPBBr00qdZXgetSrqWh+qOi3lncAXWgXy6ZM/LWrjfay+vyf8ALNjz80e31ZWrrNM8VRzzrZ6jEdL1KX/VQud8U/vG4+V/935W/wBmvzr+Hnx9vtFkSOSYlOAVY8V9beAfjfo/jTTxaXvk3Ebj57efkH6V5VfAxnfSzHOhCotNGe+4FRSwBwcVwzeM08HWQvjfG98PxcXEc5Mk9pH/AM9EPVkX+JW+bH3W/hrvDKh2lHWRCoYOhyDXzlSjKlK0jyKkJUnZmBqmniRSccivmD9sP4et4h+Hs2qwRbr3SX8/Kjlozwy/+zf8Br60u0yCfUV5x8SNETWPDmrWDrlLm1eEjHXKmtMNUdGopIKdW0j88fg/4rbTdSt3D4KsM819N6B4ifw58TPCHiFWxbG6FncNnA8m4Hl5PsrNG3/Aa+K/CbPYan5LZBjlKkfQ1+gPwB1HSl0qKa7NvN8o/wBZ81fXYinzRsz3o2nGx9SUzHBrmLUabIDJpd1JpTk52wsDGT6mNvlJ/CrL+IbjTVC6nEPs/bUbVSUH/XSPll/3vmX/AHa+KrYCtR1WqPNqYecX5GvImc1m3mniQMQPwrQguUnhWRHSaFvuyxncp/KnOn5V56djms4nB6vookRxtyK8L+L3wM03xzZys0a2+oBSI7pV+U+0i/xL/wCPLX1Hd2ImUkDmuc1HRRIG+XmumjWnSlzwZop21Py18VeA9Z+Hery2t3bSIE529fl/vIf4l/2v++q3/BPxBuNHnjZJjtz619u+Pvhpp3inT3s9Qt96DmOReJIW9VPb6V8Z/FT4Kar4Av3nhQzWbt8k8a/JJ7f7Lf7Pf+GvtcHjoYiNpaM7qVVH0x8MPjJDqEcccsoDcDk17l4Y8XtZbXtG861bl7bPT3T+79Pu/wC73/MPQ/Fd1pM4+do3U/Svon4VfG7cYoLuXDcAMT1oxOFhVi4zV0dvu1FqffOm6tbaxbCe2k3A8MpGGU+hHUGrleIeFvGC3Gy9tJwk2Ah53LKv92Re9eq6B4qg1hPIYfZr1RloCchh6q38S/5avg8bls8M3KOsThqUXHVG1RRRXiWMRV706mr1p1ZtFoVT2pabTlOaz5Sh9FAorNxLCnA5FNpVOM1jylJjqVTSUL1qHEtDqKKKxcSkwoooqbGg5ehpaRehpa55RKQUUUVxziWh9FFFEIlJjqKKKxqR0KQ09TRQeporypR1NkFA60UL1rSER3HUUUV0qJFzy7dQG9aSiv64sfgtx1FNHFKGpWKuLSg4pARRSsO4+imUuTSsO4/dQGpu6jdWdh8w/IozTMilzS5Skx1LTKKixaY+imZozU8pVyWim5ozU2FcdRTc0ZosO46lBxSZFGRWdi0x6ml3VHS5rPlL5iRTTt1RKeKcDWbQcxJVTWtbsPD2mT6jqd3FY2MA3SXEzbVUVxPxX+NGgfCbS2m1Sbzb11JtrCE5lnPr/sr7mvhj4rfGvxF8WdTMuqXJh09G/cadASIYx9P4j7mpjG57OEy+piNXoj0343ftW3/jLz9J8KmTS9G5VrvOLi5H1/5Zr7fe/lXz5PdcsSdzk5JJ/WqryhQec1UeYtmuqMUkfZ4ejDDx5YIsS3Oc85NbXg/wFqPja6CwhhbZ2+YRkt7KO9dn8MPgTqXiu9jluEOzIPln5Qi/3i39K+y/h/8ADHTfB9qi28Mc1yBzPsxj2UdhSb5Uc2Lx1PDabs4f4N/s96b4Wgiu9RhWW74ZYm+cK395v7zf+O17vY6alug4GfpUtnZrEuSOat4NedNuTuz4+tip4iXNNiIgAqUcCmAYFP8A4amxz3IppsAgV+bf7VXjN/FPx21xRJ5lppSppkWDwNo3N/4+zV+jV5KEVj6DNfkTr2qtr3jbX9TZtzXmoTzZPvIxFdWHje572VQUqjZ2ukQ7rVjX0n+xZ4Dju7nWvFdzHlWl+y2+4fwL8ufx+avnKzYW+lSP6ITX3R+yrpI034M6GSMPcJ55993NaTdlY+hzCahRZ7DbwrGMKOKnpF6VjeLfGmieBNJfUte1CKwtRwoY5klP92NOrt7CvNcb7HxcVfY3K88+JXx48N/DZxazSnVNXA40qx+aVP8Aro33Y1/3v+Ahq8C+KP7T2ueK1m07w0snh3SWyrXCNi9nX/eH+p/4D83+0teEicWwP+WdvU1pDDp7nvYbLZv3qh6X8RPjP4h+JEzLqtyLXSw2V0m0LLCvoZP4pD/vfL6Ktcf/AMJj/ZOZa4PUfFYAYRmuXv8AVpbtiWcgV3RpJaI+lpxp0I2ifXXwv/aZW1mjt7uTEYwA4bpX0JYeKPDnxDiiuZH+z6oqgRatZyeXcR/7O4feX/Zbcv8As1+WPnXFvn5pIvZ/vV2XhD4w6r4ZnTFw/lAjoaHSuhucZaNH6XjxJqfh2PGtR/2tpoH/ACGtOjwyD1mgX5l/3o9w77Vrfsry11eyivLKeK7tZhujnhbcjj1Br5M+Gn7Ty3SxpdzbumWzzXtmhS2GsyvqXh7Uf7E1OY+Y7RAS2l23rNF6/wC0u1v9qvMq4aS1R5lfARn71I9AubMODgfhWJfaMkykNHn8Kn03xX9lu4bLxBaf2NfSELDPu82zuj/0zm6bj/ck2t/vV0v2UdDz+FcLg1ueJOEqbtJHlmpeEUkDMqgn3rxn4mfs+aN4vEkhtv7Nv8cXVuvU/wC0vevqy60tJASBtPqK5nVNIDhlZeacJypu8WEKjjqj81fHvwt1/wCG9y3262M9iT+7voATG31PY+xqLwP4wutHvkeOZgoI5Br7q8W+Hh9mmjaJZYZAQyOMg+496/PXRedUn7/v2/8AQjXv4eq68Wpnv4Wt7RWPo3V/ibqk/hm5t2uHMcsDqw3dRivs/wCBepSax8GPBF3KcyPotoT/AN+1r88tTydII9q/QP8AZxH/ABYrwN/2BbX/ANAWvHzKNoxZGPdoxZ30i7k5rmfEVqHgf6V1L/dNc9rnMLj2rxqUbs8iO5+UCW4h8U6h3P26b/0Nq9G/4SDUtAsBJaSsqqABg154zZ8X6rz/AMv83/obV6BcskmkAEZyoNfbSdz6GlojV8M/tLa3ozKsszlQfWvon4cftMWmsJGl3IqM2Mknj8q+DZfBXi630qPXBZjVtKuE87Nt/rUz7d6h0TxNLay5tpmjdTzG3BH4UlTUkXGrrZn6n6XrTCQ6hoMsUbu3mTWMjD7Lc+//AEzk/wBpf+BK1d/4e8Q2niOwkntg8EsOI7i1mwJLd/7rL3z/AHvut95a+Bvgp8cGgaO0vJeOAQxr6Ss/FZS5h1rRZ1a+giwEJ/d3EfeCT1X+638Lc/3g3g43L4zTlHRk1qCnG8dz3kqMGqU8O7PFN8NeIbLxZosGpWJYQyZVon+/C4+8jDsQauuma+WcZQbizx3daM5nU9JEqsQvNcL4k8J2+o2k9tc26XFtKNrxSLlWFesvCCDmsq/0tZVYgc1pGVi4ux8C/Gb9nebSPO1LR0e4shlm4zJD/vf3l/2vvL/tV4ELm60W82PujdTuH90/7Qr9R9X0HcHwg5HKkcGvnb4s/s92Ouxz3OlRJbXvLNb9ElP95T/yzb/x1v4v71fT4LMrL2dbbudtOq46M8o+Ffxkm06WOG4l+XgZJ4NfU3hD4hWutQRZl+YYKsrYZT6g9q+A9e8Mah4Rv5VeN1RGw2V2lD6MvVTXYeAPidc6PNGrynYDjr0r2Z0VKN46o9GMlJH6XeG/HqsqQapIrI2Fjvv4W9pP7rf7X3T/ALPftK+OfAPxYgv4kVpQQwAIJ4Ne2eEPHJs41UMbix4zEDloveP1X/Z/75218Zj8pd3UofcYVKW7ietU+s7TNWttUgE1rMs0bcZU8hv7rDs3tV4c18w6bjoziTH0UUVjYq46iiioaKuFKDikorJoLj+lOBzTRyKVetYyiaRkPDUuRTaKxcS0x1FIppaysaJhTl6U2isXEtD6VetNBzS1g4miHinU2nVnYsbRRRUTjoOIq96WhRxRXlzjqbphRRRThElsVe9OpAMUtd0Y6GZ5PRTMijPvX9Zcp+CXJM0u6owaXdS5R3H5FLmo9wpc+9TyjuSZNG6mZNG6lyjuP3UbqZuo3VPKO4/dSg0zIpanlKTHUU2gHFRylpj80Zpu6jdU2KuSZozTc0ZqOUdx2aM03NGaVguP3UA5pKKzsaJko6UU2szxN4o0zwfo0+q6xew2FjCMtLM2M+gUdz7VNi6alN2ia1fOvxs/azsPCH2jR/CbR6trQyj3eM21of8A2o3/AI7/ACryL41/tT6p43M+l+Hmk0jQySplQ4uLof7TDov+yPxrwA3AwayaufX4DKL/ALyv9xf13X9Q8R6lPqGqXkt7eSnLSysST/gKyXuMZGaZNOWyF4Fbvg34d6l4tvY0jilSJzjdtyW/3fWqirH1Kioqy2MfTtNvNbuRBaxPNIxwFQZJr6Q+DX7Pcl00eoX6DygQfNYct7Rr/wCzV6N8KvgBYeGreOa7gVpeCYTzz/tN/F/u/dr3XTNMjtIlSNAoAA4GKUn2PmcZmqi3To/eZvhnwna6NaJDDEI4x2HVvc11MMQUAAYApIodtWFXFZNNnzDnKb5pMlj6GpMVGvepKysQAGKOxoozU8oXOf8AEDEW04/6Zt/6DX5Cacd99IfWVj+pr9e9aIkjcHuCK/JC/sv7G8TalZY2/ZryaLH+7Iw/pXTh1Zs+nyeVpS+X6np8diZNCl/64Mf/AB2vuj9ny8gsfgv4ZubmaO3torCJ5JZm2ooA5JNfH/wntbDxKYbO/l8uBxsYg9e1J4l1S9ECeHDrFzf6BpZFvZ2kmBEFU8FgMbm/2j61M1d2Po8ZQ+s0+ROx9NfEf9rTTtMM1j4Pt11a5XKnU5g32aM/9M1+9KfyX6181eIfFN94n1STU9b1CfULxxj7RdPuwv8AdUfdVfYcVyd7rENqpBYZ/uiucvvEEtySqHC0RgkRh8HRwy01fc6HV/EscAZICCem7/P/AOquT1DWJbpmLOeepPJqzoWg6t4q1BbPSrKW/um6JGOB9T2r6O+GX7JiJ5V74tlF3Jww0+DiNf8AePeqbjHVjq4uFPdnz54L+GfiP4iXqw6RYP8AZycPezjEa19OfD79mXRPB/l3l+P7b1QYPn3Q+VD/ALK175ofhC00mzjgtbeO2t0GFiiXCityLT1jHQVyzr30ieDWx85u0NEfP3j34T6V4rtJE1GxinYjCzBcSJ/unt+VfKvxG+A+v+DnkutLibWdOBJKoP38Y/3f4vwr9ILzQoJ1Y7Nreq/4VxuueEFcMfLDD1A4pQrSiTRxc4vU/M/R9aks5BNbSEYPK9MGvYvhv8a7/QLiPFwygHlWPBrW+N/gnwl4p1h30PeNbDHzNQsdv2VG/uyt/wAtG/2V/wCBFa46L4dRaWmTdidh32Y/rXZzKaufS4epKcbtH3H8OPjJp3i/STZX/kzxTpslt7hA8ci9wwPUV3Vja3ujL5nhi+S90/r/AGHqcx2qPSCflo/91ty/7tfnlYeLJ/CQ325I2nOB0r0LwN+05cWcirdSuMe+RWMqSktUbzpwqK0kfcmi+MLHWbo2LiXT9VXl9OvV8ufb/eX+GRf9pGZferV1brKDXknhz4n+H/iJp1vDqGycoQ8TltssL/3o5FO5W/2lZa7Szu9Z0iPKPJ4q0vH+ymoQj/x0T/8Ajrf9dK8yrhmtUeHXy+Ufep6lLxdY79PlwORX5k+HbfOqz/8AXdv/AEI1+oGoa3p+uaTez6fdJcpEpDqRtkiPPyyIeUb2NfmZ4cH/ABM5v+u7f+hGu3ANrmTNcvVnL+u56Bfxf8Sl/wDcr9Av2el2/BDwPj/oC2v/AKLWvgHUnA0l/wDrnX31+z7L/wAWR8D/APYFtf8A0Wtc+OXNT+ZtmH8OPqd+5whrnNfbEJroHb5DXNeIG/dGvEpnjo/KHcf+Ev1X/r/m/wDQ2rv5D/xKV/3B/KvPwM+LdUP/AE/zf+htXfy8aSPZB/Kvr5bH1FGOlj334N+Evt3wk8MTeXuLWSfzrk/il+zRZ+Jkm1DTIEsNYPP7viOU+jf3T/tdK+hfgBoKH4KeDsr9/S4W/MZro9S8N9SF/wAa+eeKqUqrszx/aNM/L9Pt/hbWJLO7R7e8t32lWGCcV9E/CD4qZEdvPJ7YJrp/2k/gsninRJdXsIgmtWgydo/18S/1WvlHwxrNxp99tbMc0TYZTxXu06kcTDmjuelh6t1bofevgT4kx+AvGUNxJKf7E1Zxb32fuxv0juMeq/db/Zb/AGa+oOpr88dG1OLXPDwjmIZWX5v9oY/wr6+/Zx8cv4z+HltDeS+Zq2jS/YLpieZNo/dSf8CjK/iGr5vMMPy++jHF07e8j1EpkVFJDuFWQM0Fa8E8sxLqxWQEEVzGr+HVmVvlz6EV3jxBgapz2oYEYyKSk0awnbRnzt8RfhFp/ii3cTxCK9Awl4i84/uuP4l9jXyD8RvhDqfg3UX8u3KdWCJkxzf9cz6f7J+av0o1TSFkVuMivPfF3gm01uyltL23WeB+xHQ+oPY17WDzGdB8stUdcKrifndofi660q4AjkeCRTgxvxzXvvw0+OHMcF3JtbgZJ61h/GH4DT6S0mowK1zZ55vVH7yL3mX+If7Q/wCBV4jIl5oF35U6mNhyrKchh6qe4/lX1kKlPExvE9GFS5+i/hLxysxS4s7kRTEDJ6hx6MO4r2bwz4uttdQQy4g1FR80BOd3vG3df5V+Z3w/+LV1o0saSSlovrX034G+JNrrMEWZQWGCCGwVPqp/hNeFjcsjXTlHRiqUlPVbn1uKK878L/EcpGkOpv59vwFvFHzL7SD/ANmH/AvWvQIpknjSWJ1licZV0OQa+KrYWdCVpo4ZQcNyaigHIoriaJuFFFFZWC45e9LTV606sZI0ixymlplOU1i0api04cim0A4rNxNEx1FFFZNGiYo4p1Mpy9K52jRMeOlPB4pi9KWsrFphQBmlApaznsVFhRRRXnSjqbphSikp4GKqESGwooorsitCLnkO6jcKZuo3V/WfKfgNx4PvSg4qMEUtLlHck3UbhTMml3UuUq48H3oz70wEUZqeUdyXdQGpm6jdWfKO5IDmimZFKDipsUmPBpQc0wNS1Fikx9FNBxRuqeUu46iiiiwxd1G6koqHEdx1PqjqurWeiafNfX9zHaWkQy80zbVX6mvkf41/tiT6glxo3gYvbQE7ZNWfiRx6Rr/B/vZLf7vfGSselg8LPFycIHtXxh/aL8PfCi1ktDKNV19l/dabE2Sp7NI38I/8er4l+IfxY8Q/FDV2vtduzKFOIrWE7YYR/dVe5/2jXGXV1Ne3Elzdzvc3Dks0kjEkmq7XBGcGsT7vCZfSwkdNX3Lks27PNRR7p5BHGu5icDFP0XR73XbjyraMvnqew+tfTnwc/Z92Qx314hQMATK/329lX+Ff9qlY7qteFCPNNnn3w0+A934jnWS+T5QQTG3ypF/10b1/2a+uvA3wz0/wrbKIolknwA0pXH/AV/uiuj0Hw1a6NbR29pCsMSDhUHA/z610VvbADpRY+Ix2aTxL5YaIjtLJUGcVoRRgdKaiH6CpkGKix4yY9VxTqQdKWnY0H0A4oorOxVx2ajLdaCeDUROc0rAY2qfdY+9fl/8AGK1sJ/iv4ln0u4ju7Ge+d0nh+45OWYj/AIFur6c/ar/aH8qe58DeGbn96fk1S+ib/V+tupH8X97/AL5/vV8q4qo6H12VYeUIupLqWfDPiW40Jg0blSpzxUeoeKZp5HYO3PvWbIACa9R+Hn7PXiDxqsVzPH/ZWnSDKzScyOPVVpvue/Oqqa1Z5VBJcancrFDFJNK5wscY3Ma9y+GP7MGreJvKu/ELHTbBsEW68yMPevoX4afALQfBESNbWatc4+a4mG5z9PSvX9N0WKFRgAH1PWoc0tj57E5l9mmch4F+GeleENPS00qyS0iAALAfO/1Nd3aaWkK/dFW4bYR1cRABXNL3tzw3UlN3kyvHb5GMYFSC2Hrms7xV4v0TwRpbajrmp2+n2gbYGlb5nb+6q9Wb2Ar5q+I/7Uuua95tl4QgbQLA5U6hcBWunH+yvKx/+PN/ums1C524fDVcS7QR7d8Svi94Z+GluU1Gfz9QYZi0u1IkuX99v8C/7TbVr5X+IXxl8QfEh5IbuQaRozcDSrRiQ4/6bSf8tPp8q/7Lda8/uZ8TTXE0rT3Mzb5ZpWJkkb+8zHljXO6j4lVQwjNbRgkfU4fL6dDWWrOjudUhtVIBFcrrXigsGVG/AVhy39zqEuyMMxbgBRkmvVPh1+zb4g8XBbq9QabaMMiScZJ+grZJI7ataNKN2eRmG41RwMOxY4VEGWb6CjUfCGsaKiSXFlPa7+VWdSpNfdHg34DaH4TQG0tQ9zjm5uFzIfoO1b2s/Dy21C1MNzaR3kR6pIN/60/bKJ4zzH3tD4G8LePdS8M3a+XK6FTkxscV9KfDD9ps2/lw3UxHQfMayPiP+zSsqy3WhqSRybSQ4Yf7rf8AxVfPureH7/w7dyQzxyRSRHDK6lWU+4qlKM0elRxEKq0ep+i1p4s8NfEAR3Lym11PYETULR9k4H90t/Gv+yylf9mvhfW/Cp8J+NdV08D5YbuQL/u7iQfyrC8PfEPVNBlUxXLgA9M1003jCPxFcG6uH3zt1zQoKOqOrzF1ad5LUxk8bcV+hP7P3/JEvA3/AGBrX/0WtfnbrMmy0mfsqE5/A1+iX7P3/JEvA3/YGtf/AEWteZjdKdjy8wdoRR3rn5a57Xv+PZ66Bulc9r/FrJXjU4+9Y8Wm7n5RQ8+J9SP/AE+Tf+jGrvLpsaW3+5XBQn/ipdRI/wCfyb/0Y1dveyY0xh/sV9dNaH11P4WfoB+z8m74J+Cf+wTb/wDoFdncQZzxXKfs8Ju+CXgj/sE2/wD6DXfTW4xXx1b+Kz5mc/faOB8QaGlzE5C5B6jHT3r89/2kPAJ+H3xEa6totthqWZY8DhWzytfpjd23Xjivlb9szwb/AGl8PG1CNMzadcq+R12nrXdgKvJU5X1OzC1LSsfPvw21qU2v2Z2yMZXP6ivo/wDZR8Vf2T8UbvSZHxBrNmQoJ486E7l/Eq0n5V8l+A77ypwc8Afoa9S+HHib+wfip4Pv921Y9XhVj/syHY3/AI6xr18XS9pTaPXrLmoyP0ojOakzUMZ60+vh+U+duOPSoyAc1J/DUfrWUogmVri1EgOBWDqGlhw3GRXT1BNbCQHHWpN0zzHV/Dyyq/yggjBBGQRXz18UPgFb6nHPcaRAkUjEs9ixwkrf3o/7h/8AHfpX1/dacHByuDXL6z4fWZW+Xnsa7MPip0JXTNoTcWfmT4h8E33ha7nXy5EjjbDxuuHhP+0P/Zh8taHhHx/d6DcphztB6Zr7T8efDGx8SwMl3D5c4H7u6jH7xf8AZ/2l9mr5O+JPwWv/AAtcPP5YWMn93PGP3Mvsf+ebex/CvrsNjKeJVnoz06dVM9o8AfGaK7VEeUA9wTXvXgr4gyWWHs5RLA3L2rn5T7r6GvzatdSu9Iudp3wSoeVbg17B8OvjNJZvHFcynAIGc1dbCxqx5Zq6Ou0aisz9JdA8SWevQbrZ8SAfPA/30/xH+1WvXyb4P+JcN8I5La42SDGJEbBH+f7te1eEfipDeiO31ZltpDwt2Plgf/e/ut/47XxWNyydBuVPVHFUoNK6PSKKKK8CxyWsFFFFZtFXH0UUVlylofRTVNOrFo0TFU0tNozWEkWmOpV70gOaUcVzSRomPWnUwcU+sLGlx1FFFYyLiwooorkcTdMVRTqKK0jEhsKKKK6EiLnje6lBFNor+tbH8/XHUtMBxTqVguLupcim0UrFXH0U0HFLuqbDuOyaN1MyaUHNTyjuPyKUGmUoOKmxSY8NS0wc0tRylpjwcUu6mA0tTYpMdkUZFR5NQX+o22lWM95e3EdraQIZJZpW2qijqSazLTLsbMBwB9e9ee/FP45eGfhVbkajdrd6owzFptu26V/rj7o92rwT4y/thSXKTab4DPlxHKvrMv3j/wBcV/8AZjXyvfaxc6ndzXF5cSXVxMxaW4lbLSH/AGmrmnOx9dl+Rzm+fE6LsekfFr42+IfiteyHUJzDpoP7rTojiCMf+zN7tXmZ4zSifI9akghac4HA9awTufb0qUKUeWCsisxzkV1vgn4a33iW5jMsbLG/3EHVv8+teg/Cr4I3WvOl1NBshByZXHC/T+83+zX1Z4Q+HWn+G4QLSHbIRh7huXf/AOtTSbPHxuZ0sNotWcZ8MPgZp/h62hlu4UaUAEQ4yoP+1/eNe2WVgltGFVQoHan2lksIzjLepq6q8VfIfDYnF1MTLmmyS3UY6VaUYFRxdKmVuKOU5birxTxTKUH1rOw0ySikDUoOak0TH0UDmjsaiw7hXiH7UHxp/wCFP+B5pbPA8Qai7Wun/wCw38U3/AV/XbXteecV+aP7TvxGb4nfFnUZY5DJpOlt9gtFB+U7W/eSD/ebd+AWhRuevluF+s1tdlueaQGWaWS6uXaWeVvMeRzku5OdzGppb/AwKQDg+9eq/ss/ChfiX4xm1i+hZtF004Ct92Z+4NK1j7ydSFCGp6j+zl+zmrRReJfE0QnupPnt7RjlY/8Aab/ar6osNCS3QJFGqAegqzpenR20KRRIERQAABWvDHsFYyd9D4fEYyVaTuQW2nJEMtyasLGFOcYxUgry74n/ALQ3hn4ciazif+3tdUYGnWbgLG3pNKRtj+nzN/s1lY5qUJ1pcsFc9MuLiKztpbieRIIIlLySyEKqr6k9q+ePiV+1xY6d5lj4Ihj1a66HVboEW0f+4v3pPqdq/wC9XgXxI+K3iP4pXJ/t29/0FG3RaZbEpaQ+mFH+sb/abd/wGuDudRFuDVKNz6jB5Vy+9WfyOo1vxZqPiXVJdW1zUZtU1GTrPcHIVf7qL91V/wBlflrKufEUZ+UEye2eB+HSuK1HxEzFgDisQa1IJupraMFY+hgo0lywVj0uc/b7aovh98JdZ+JGq3KWSYtLdj5s7dF5qvod4J7ZT6ivp39jbS45dK8VS4+9exj/AMcrNvlMMXVdKm5I6D4Y/s8aN4ViSR4Be3fGZJF+XPsK9n0/RI7VQCoGBgADpWta2SxLgLiri2/f+lc8pNnw1SvUqu82Zws4sfdFI1lFtPy1rCLA60GHIrEUXY4nUvD4nZiK858cfCrTfElu0eoWSykD5ZlGHX6GvdJLNWzxWVf6YHDAjIoTaOmnUcXdM/P/AOJP7OV/ozyXOjBr23GSUA/er+H8VeP6JO8N5sbIZTtYV+k/iTw9mGRlXPByK/N+yUHW7rj/AJav/wChV30p8yPpsDWlVTTex3NxzYknrsr9EP2fj/xZLwP/ANga1/8ARa1+d0//AB4f8Ar9Df2fT/xZHwN/2BrX/wBFrXHjF7iJzH4Ynfuetc94iOLeQe1dAx4Nc54kbEL/AO7XlJdjwqeh+UNo/wDxP78/9PUn/obV2F/L/oWM/wANcLaSY16/5/5eZP8A0Jq6++k/0L8K+omfYU37rP0i/Z0H/FkvA/8A2Cbf/wBBr0SUcGvPP2dP+SJeB/8AsE2//oNeiSDOa+NrfxJHy8v4kihcxZU14l+0fpv274UeKosZP2J5B/wE7q9ym+6a8c/aJf7N8LfFT/8AUPmH/juKrD/xYmlF2mj84fBk+4qf9muzkuvKv7CXP+ruI3/JhXEeCkxGp/2f6107P52qWMH/AD0uI0/NhX109j6X7B+t0RqQHFQx8cVKpzmvgrHzNyQH5aZ3pw6U0cmspIEOooorGxqmMkiDg8VnXNnkEEVqUjIGBBqbFpnHajoyTqwK5rg/EnhCO6glimhWaFxgqwzXsE9pnPFZV5pyuCCKcJSg7xNYycT4W+LX7PrWyy3mkRG6th8xt1fdPB/1zP8AEv8AstzXzlqWnXOg3RTkFTgNjGfr6V+oWv8AhYSBnjXB9PWvCPil8DNP8YRSugNhqQB2yoPlc/7Y719Pg80XwVT0KdY+X/BnxIutJnRWkZGHUE9f8a+ivAXxZg1KNIppBuIwQ3INfMPjX4ear4M1B7bULVojn5JV+449VP8ASoNB1250uVPnIweDmvelCFWPPB3R1qbP0f8AAvxMudGRI0Y3unHk2rN80Y9Y27f7p+X/AHete0aF4j0/xHamaxnEm3AeMja8Z9GU8ivzn8BfFt4GSOeTpgZzXtXhj4jlZI7yyuTDOv3ZYmwR/st6j/Zr5jF5VCq3KGjFOlGorrc+wKK818C/Gex1x49P1cpY6iWCxzA/uZz/AHc/wt/s16RXyFbDzoS5Zo89wlB2Y6iiiuewx9OFNpy9KwcTRC0UUVzyiWgU06m06uWSNUPFOHSmL0p69KwaKTH0UUVzyRrEKVRmkpy96x5TdC0UUVpGJDCiiitbE3PF80UzNANf1pyn88XH04HNR7qUGlyBckoBxTAaUNS5SuYkBozTAaM1PIO4+im5xS7qnlKuOBxTqj3UoPpU8pSY+nA1GGpQRUWLUiSimA0uTU8pVx1fLf7d/jC90rwloOiWk3lxahcySXCg8sqBdo/76bd/wGvqPIFeG/tKfCw/FfwqbSKXyNRtJBPZyEfKSAdyn/ZNYzi7aHpZbVp08TGVTVH5+W+ofaOKvWVhcalIY7aMyPjoKzPEPhvVPCOrTWGpWr2d5EcFWHDD1B7il0rVpIZVkRjHIvcV50lY/V4TUjrNX+HHi/w/4VvPEVz4dvZtItSFllhAcJnoW2tuVf8Aar2L9n/4Py+ItPtvEmsmBoplElrZ27blCn1PrWZ8IPjxqHhu5RPOGPutFNzG691I9DXuvg7RdOubyTWPhyYbGab97f8Ag+Q4trju0ls3/LNv9n7p/wBms4zjF+8Y42lXqUJLDuzPVPDnh6Gwto4441iijGFRRxXV28KhRxXOeENetPEdvJ9lLxzwNsuLScbZoG7qynkV1MabRiu+PK1dH5VONSlJwqKzRIiin4xSLgUtVYyuPHFOVqbRWdh8xKDmlBxTKcDmocSkx6tSg+tR04GsnE1TJQaXIqPNIXxSsFzgPjn42bwD8L/E+tRvsuLe1KW5z/y2kPlx4/4Ewr8ydNtwa+0f28/ET2fw00zTY22tqOqJuHqkaO3/AKFtr420UbhzUJ2R99kdO1D2n8xLc2U1wYbe1Qvc3TrBEoH8THbX6KfAr4bW3w4+HulaTDGBN5Yed8cs565r47+A3hc+K/jBosBTdDZK1y/pj7o/9CNfonBCqcAVmzLPcQ4ctKI+3h2CnytsFSgYxVW/kEcZYnAAyTUKJ8cmfL37W3x51Dw5qNt4I0W7fT5Lm3W5vryE4kMbMyqiH+H7rZPPavmL+0YcdRXS/tgTn/hecuP+gfb/AKl684sIWuIqTjY/RstoqGHUo9S9eawTuWPmst2lmz5j4H90feb6V0/w/wDh7qXxD1i4sdM2L9mwbiZ/ux5/nX1V8PP2d9H8Iol1JELy/wAc3V0uWU/7I/hoSsb4jF08OrPc+X/CXwK8S+LtktxG2gaa3O+Rc3Eg/wBkf8s/q2GrhvHvge28CeNbvR7PzDFHHG7NK+5mZl5JP4V+lM3h6NId23mvhL9o6xW1+MV+ijj7Pbkn1+Tk1rB2Z5mExcq1ZpmPoXy2ae1fXv7Ew3eHPEuf+f8AT/0WK+RNHTFsB6HFfXf7E3Hh3xL/ANf6f+ixWVW0mejmP+7M+m0UCpAM01e9PQda5LHwPtLjguRRtqRF607bWZqmQ7BUE8IZTVsio2HaosaJ2OI8TrttZ/8Adavy3tH/AOJzcH/ptJ/6E1fqT4q4trj6GvyrtZv+Jxcc/wDLaT/0KurD7M+lyp6y+X6notwP+Jf/AMAr9Cv2e/8AkhngY/8AUGt//QRXwBBAJ9NX3TFfYnw7+MWleEvhB4SsLeGTVdVi0+OJ7WJtkcLAdJZcFUP+yMt/s1OJg5wsj0cbSlVjFRR7tPPHa28k88iwwoMs7nAFeJ/Ef4xW8tu9p4ejjuW6HUbkfuf+2Y/5af8AoP8AtNXl/jX4m6p4suTJqF6WiB+SyQ4tkH+7/E3u36V5j4g8cfZ1bnmuSnQ6snD5co+9VZ5Trfw+fQ9VnmgmEts8jOePmySTVbV7wR2ZGei1b1/xVLfysqEkE9qk8C/DPxB8WfEEOi6JbNPM5BmlxlLePu7n0Feld21PSqzhCLZ+k37Of/JEvBH/AGCLf/0CvRax/BugQeFfC+laPbKEt7C1itYwPRVA/pWxXzFdKU20fIylzSciCZAc183/ALZniKLRvgzq0TNi4vnS0iHrlvm/QGvou9m8qJznnpXwP+2V48i8V/EOw8M2z77PRVMlxg8NcyfdX/gI/wDQq6MDT5qvodOGi6kzwrw9ZLaWe4jAx+ldP8K9FPij4v8AhLTMbkm1SFnH+yrbm/8AHRWMwENqEH0r2/8AYc8JHXvizea66brfRbVmViP+W0vyr/44Hr6GrNRi5HvVpezp3Pv/ABinL0pgOactfGNWPmObUkU8Uq8U1TTqxaLTHZFFNpy9KyaKTCiiis2jVMCMjFVprfINWaCMiosaJmJc2YYEEVy2t+HUnViF5rvZIQwPFULi1yCMVNjWL7Hz9458EWWrWMtpqVlHeWz9UkXI+tfFnxa+F9x8ONbsxoLrqtpqU/lQ6WWLXgY9Qg/ir7a+IvjOS9v7rRPDEMeo6hGf3+o3P/Hnaf7zfxv/ANM1/wDHa8/0vTNJ8G3MuoiVtT12dds+s3YUzyD+5GvSNP8AZX/x6vq8sVWCbk9D0qEJvV7HzQPhN43sP9dp3k+v79dyfX5q6HTtZ1Hw/wD8fXGK7Pxt8SVtlkVH4+vJrw7WvF11fO2XIX0zXvW5zra5T0DxB8WriWwaANtH1xX6P/BnXr3xR8KvCOraiWN9d6VbyzMxyXYr9/8AHrX5y/AT9nXX/jHrVrPdxPY+F45N8964K+av8UcefvN/tD7tfqDpNhBpen29naxiK2gjWGKNeioowo/IV8fnc6TUYR1kjjqzT0L1FFFfJGQ+ikBzS1DQ0KtOpg4p9c8kWhy9KKRehpa45I2iPooHNFc7Roh9KvQ0lKvQ1g0WhaKKKysaJjx0pV601elLVpAKeppKKKqwrniO6jIpmRS1/W9j+cbjwaUNUYOKcG9aLDuPBpc0wUA4qbDuSbqMimbqXIpWHzD8+9GaZS5xS5Skx4alBpgb1pQc1Nikx4NLupgOKUNUcpaY8GlzTKF61NiriuSBWJqsG8E4rac1XmhDipa0NYM8S+Ifwx0nxpavbanZrIoB8uYDEkZ9jXyV8TvgNrPgh5bu1U6hpgPE0S/Mg/2hX6D6hpiyK3Fcnq2hh1dWQOhGCCOv1rknS5j6HAZnUw3uy1ifm3a3TROCCVYHrXofg34m3/h+4idZ3XYQQysQR9DXrXxW/ZxttX87UNAVbS95Zrfokh9vQ18v6vY6joN9LZ38L288ZwyOMGvLqUnHc/QMHjoV43iz7i8GfG7R/GYtzq10dL1yMAQ6zbjDeyyr/EPevb9F8ZOskNjrSx291IMw3cTbre6H95G/pX5eaH4mmsZFw5GPevoL4W/HqXTbddN1ILqWkuRutZj933Q/wn6VhCU6TvHY1xeAoY+Npq0u591KTmng15x4H8WR3dgbvSp31fSwoM1u53XdoPU/89F+ld9pt/b6larcW0qzRN0Za9OnVjUV0fm+YZZXwDvUXu9y5SrSDgUVseRclXpS1GGp4NHKWmPBzSjiowacGrJxNUyQGq8z4zzUm6qtw3WsrFHxt+3/AHu648D2oPAN3MR+CCvmzw8Nymvon9vmH/TfBlx6LdR/+gH+lfPHhX5gR71hUVkj9Nya31WKPo79juy874karMRxFaxqP/Hq+2Ixivjf9kmJrH4janG3/La0iYfrX2QtZxjc+fz/APjr0J81Q1Fvlq3urN1F8CtOU+aPzv8A2vOfjbN/14W383rh9BH+jCu4/a8/5LZN/wBeFv8AzeuI0H/j2Wspn6hlz/cU4+R9DfsY2Hm6z40lx1+zrn/gLV9cQWQiXgc18yfsUWwNz4xOON9v/Jq+rtgxUHyuazccRKJiXibI29K/Pj9qm5CfHDUB/wBO1v8A+gmv0R1GLMb1+c/7V0ZHxxv/APr2t/8A0E1aReUy5qr9DM8NL9oh/wCBV9cfsWQ7fDviX/r/AE/9FivlX4aQR3UyQyPsDN1xmvt74UaDp3hzTvM8KXg+0XADXVhfnMdyw6upJ/dn/wAdrCWh9VjqE6+Gcae57FinrwaytO8SwXshs5VlsL8dbW4+R/8AeT+8v+0talZqx+dTpTpS5ZqzJ1fApQ+ah3UbsVHKNMnzUTdTRvqnq2p2uj2E17fXMdnaRDLzzNhF+pqOU1jqcx4qX/R7j6GvybtmI1e4/wCu0n/oQr78+Kf7QMeoiaw8KqUXlW1W6Xn/ALZxt0+rf9818caz4Ii02YyxTebEP++q1oq1z7HL8PUormkjtvhjqNtHqVs1+oltowGdSM5Fdj4l8fwS308kUYigkcssa/IB9BXhB1D7PwKo3OpSTZwcCt2rnuqVtzufEvxCaUvHC24+g6CuLNxeazeRwgS3E8rBUhiXc7H0Ve9d38LfgN4m+JM8U0MX9n6SeX1G9T76/wDTOPv/AL33a+zfhP8AAPQPh1bD7BbCfUGUCXULgbpX/wCBdFH+ytZSlGmjzMRjoU9Lnz58Jv2S9T8QCG/8UTNpVk2GFjEf9IkH+038P/oX0r7T8C+BdI8DaPFpmjafDp9ogHyRD5nPq7fxGrlhpMdtgkbmrctgMH8K8urWctD5+pipVvJE68Cn0Vz3jvx1pHw88Oz6zrNx5NrH8qovMkrnoqL3JrkUObQwipTfLE4L9oP4u2Xwl8EXeoSsHv5M29jbk/PPMQdv/Af4m/2RX50Wktzf3V3ql9IZby7la4mkb+KRjkn8Oleg/Ffx1q/xa8W3Gt6p+5tYiY7KxHzLBDk9f9pu5968+1K5SzhWFTjj9K9zDUlSj5n1WFw/sY67lTUtSIyinmv0R/ZE+G3/AAgHwksZriLZqmsEX9zkfMAw/dqfouP++mr4/wD2W/hC/wAWPiAt7fRFtA0l1nvSR8s75/dw/wDAv4vZf9qv0ntx5VcWNrW/do48wrX/AHcS3Tgc0wcinLXiM8RMkHIpwOaYvelrJo0TH05elRqcUuRWbRSY+igHiismjVMKDxmiuJ8e/EzT/B8TQjF5qjD93aIfmHu390U4UpVHZG9OMpuyOi1zxFp/hrT5r7UblLa2jGWkc9a8O8Y/Em/8YRyxRPLo2hyAjAO26ul9QR/q1/WuH8W+NbrWb37bq9yLmaM7oYf+WNv/ALq/xH/aNeV+Lvin9nLgzEn68/8A1q9yhgox1Z7lHCqC5pnf614w0/RLAWtq0dtBH92KE7QPevEPGXxKaZpI7dySeN1cTrvjW51OR1VyEPoa6b4SfA3xH8X9URrOJrHS42xJqcw/dr7L/eNexaNGHNLQ6nVjFWOLitNW8ValHaWVvLfXcx+SGIZY19T/AAQ/YviT7PrPjhlupTh49KjP7sf9dG7/AEFe8/CT4DeH/hbpwi0y1FxdsB5uoXIDTSn/ANlX/Zr1e1sACC5y3vXgYvM5SXJS0R5lWvzOyGeHdGt9JsYre3gSCGNQqRRrhVH0raXimxoETApy9a+Ulqc97kgpaQdKWsS0x1OU02ioaLTH05elMByKctc8kapj160tNHFOrlkjVMcvSlpq96dXO4miY+lXoaYvenL1rBxLTHUUUVlYtMcvQ0tNWnVSRVwoooosTc8MopmaXPvX9e2R/Ntx4NKDmmbqUEUrDuPHFKGpgNKGpWHcfmlqPIpc+9Kw7j+lGTTc0bqjlKuPDUtMDUoPpU2KTHg04HNRhqUEVFi0x9Lk0wGjdU2KuOZqbmjNJWdi1Ihli3ZrPnsw27itbHFQyJ1qOU2jNo47VNGDBio/CvKviT8INK8dWjx38AScD93dIPnT/GveZbYODkVmXelq6njIrKVNSWp2YfFzoy5qbPzd+I3wg1v4d3bG4ia508n93fRDKkf7X901zGl3z20n3iMV+jev+FIL+3lgmgSeCQYaOQZBFfMHxV/ZrlsjNqPhlSycs9g3Uf8AXM9/92vPlh2tj7/L85p1koVNGc18PfivqXhO+hntbuSMoRgq3I/z6V9bfDn4xaZ4zEbxXEWk622N4Jxb3J/2h/C3uK/PJZZrCdoplaORTghhjmun8PeM7jS51eKVkKnsa4JU3F80dGfWXhWh7OqrxZ+o2layt8zQSobe8T78D9fqPUe9aWa+RfhX+0FbahbW+m6/ungjwIp0bE0H+6e49q+idM8WCC1inubhb7TnwIdRh5H+7IP4TXRSxGtpHwuZcPypXq4XWPY64PzT1aqqtk1Khr090fFE26nK1MHSlXvWbLTJB0qrcNwas5wMVUueQazsa3Pkr9u3RmufBfh/VEGTZ6l5Ln0SRG/qq18seD3/ANIYGvv79oXwd/wmXwr8Sacqb5xbm5h9fMj+dcfXbt/4FX52+H7w2t4hPy84I9K46q0P0PJKqnQ5V0Pqv4H3v9i/EXQb0thLhTZP7lvmH/oNfao4r4B8EXR1CyRIG23UZWSJs9HU5X+WK+1Ph34uj8X+F7LUAcOyBJV7q44INRhndtMw4hotKnWW2x1LNWVqT8VoO9ZOpNwa7LI+Jufnx+123/F6ZP8Arwt//Zq4rQj/AKOn0rtv2uoz/wALnkP/AE4W/wD7NXD6IuLZPpXHNan6nlz/AHNN+R9YfsQDc3jE/wDTaH/0GvqfHNfLP7Dgz/wmP/XaH/0GvqgjBrOx8dnEv9skUr1f3b/Svzq/a54+OF1/15W//s1foten9030r86P2uT/AMXwu/8Arxt//ZqpG+Tv9815HCabdTWkSywsQwr0LwL8ddR0G5RJpm2KfWvPtJTfDsPQiuc1iWCy1MwF8E0nFPc+6UnBaH6BeB/j7pnim0itdU8u6QYKlz86H1VuqmvU9G1+7aESWFz/AG9aY/1TsoukHsfuyf8Ajrf71fl9pOu3ukSLJFMyqO4PNe4/Db4+3GmyxrczkYx+9B/mK53T7GdajRxMbVUffWka5Z6vHIbWbzHiO2WJlKyRN6Mp5H41fDZ6V4Z4V+L2i+NY4Xu22XSqFjv7V9kqD0z/ABD/AGW+WuQ+Onj7UVnXSm8RfbtPRMNFap5Pmf75X73/AKD/ALNRr1PnJ5G1L3J6Ho3xC/aM0fw2JbTQ9muaoOC8cn+jQn/ak/i+i/pXzV4v+Jus+NLw3Gs373rA5SAfJBH/ALsY4/4Efm/2q43VfFYVWjQhUH8CdPx/+vn8K4bVvFMl0WEbYHtTULnuYXA0sKr21Ov1jxZFBkGTzHHRQeB/QVxOp+IJ9QYgNhewHSsaSaa7uoreKKa7u5ztitrdd8kp9FXvXvfwp/ZZ1LX/AC77xY/2OzOCulW7/vG/66yD/wBBX/vqtVFRRrWxkKSvJ6HkXhDwHrnj/Ufseh2TX8wO2SXkQxf774PP+zy3tX1b8Kf2RNG8OyQaj4gkGv6mpDKrLi2iP+yn8X1b8hXt3hDwTYaBYQ2WnWcVrbRLtWONQqqPwrtYLJIlHG5vXsK5p1Hsj5jE5lKq+WnojJ07QIoK3ra2WJcAU+KAAZxUoGK4ZXZ5adxq9asJx0rzz4gfGnQPAbyWhdtV1lRkabZnLL6eY33Yx7t+VfOXj74wa742Z49SuxFppPGl2DFIP+Bt96Q/72F/2amNJs9TDYGrX12Xc998cftCaZowmsfDyxazeoCr3hY/Y4z/ALwI8xh/dU/8CU18y/EPxHqfjK7a71S8kvJsFVeTgRqf4UT7qr/nLVyur+MvswPIFcRqHjue7nKhvl+tdtOgkfT0MJSw693fuT+J9RSwhcA5A9O5rC8CeA9d+LXiyDRNFiLzStumlP3LeP8AikY9hV3UANQtvm5r7M/YtsdJf4Tiays4re/S9lhvpEHzSspyjMfXawrWpP2ULonFVXSpuSPUvhR8M9K+F/hOy0TSosQQDc8pX5p5D96Rv9r09q9AiXLc9BUVsBzVgcV89O8ndnyfPzaslHtS0ynA5rJokcppabS7qyaGhwOKN1JkUZFQbIkyaVpUt4mkkOFAzzWP4j8Uad4U0x7/AFO5S2gX+Jzivnf4h/F298Xh4C76fpH8FsjbZJh/009B/s1tSw7rOyPRw+GnW16Hd/ED40uwlsPD0iqBlZtRcZVR6R+p968F1/xRFZ+a4lZ5X+aSeVsySH1Y+ntXM+J/H8djEyK4CqMKo4C/h2rxzxH41udQdwrnYe/XNfQUcLGmrI+hpUYUF5nS+L/iM0zSRwPn1avL7q8vNavVhiSS5uJThIoxlmPtXSeAvhz4j+KetLp2hWbTjIM9y/EcK5+8x9K+5/gj+zLoPwtgiupoU1XX2GXv5UyF9o1P3frSq4inh99WYV8TGK0PDfgT+xpPqRh1jxwrW9scPFpSn53HbzG/hH+zX2r4d8LWehWENrZ20dtbxKAkUS7VUfStKy05IQCRlv5VoKmBXzOJxU6zd2ePKrKbGQQhBVyGPuabGmeT0qcEYry2ShQcU6mUqnFYtDQ8HFOplKDismjVDs04HNNoHFZtGyY8HFOplPHIrCSNEx9OHSmL0py9DXNJGqY4cU6mU8c1g4miYq9acKYKfWDiWmOooHSisbFoVetOplPp2KuFFFFKxNzwbcKXNMor+wOQ/mfmJAcUBqYDinA5pcpXMPB9KUNUdKDU8g+Yfupcim0UuUfMOBpQcUyjNLlKuSBqAaaDmipsWmSA4pd1Rg4p1RylJjgaXNMozU2LuSL3paYp4p4NZtDTCkK5paKysaKZEYwaieDINWqCOKixaZg3NkHzxXP6npAdW+Wu2eENmqNxZ7weKlo3p1GmfNnxU+BGl+NI5LiONbLVAPluUXh/Zx3+vWvkzxb4P1XwPqklnqMDRsp+WT+Fh6g96/Sm+0sOG4rg/Gnw/wBN8U6fLZ6laLcQsO4wy+4PauWpRU9VufX5dnM6PuVdUfBOleIZLOUFXKkGvdvhR8er3w5MImlElu/yyQS/Mjj0INcH8VPgNqvgh5r6xD6jpIOTKq/PF7MP615zpt88DgE4IryqlHoz9Bw+KjVjzU3dH6X+BfHVprNgLnQ3NxEBmbSpWzLH7xN/EvtXoWmapb6rbia3fcOjL0Kn0Ir83/h/8Tb3w3eRSQzsu0g8HpX118OfivpvjCON3uU0zXcAfaycQ3P+zMvZv9qlSrSovlnqjyMxyWjjU6tD3Z/gz3MU+sjStaF3IbadDbXiDLQsc5H95T/EK1a9OMlJXR+a4ihVw0/Z1VZjy1QSnKmlL8VGW61djJMxNZ/1Rr8zPjX4Nl+HXxK1fTolK2csv2qzP/TCTJx/wEll/wCA1+m2oxhyQeRXzR+1Z8I5fHPhZNT0+LdrWjh5oIwOZU/5aR/1X6f7Vc1SF0z6HKMX9Xr2ez0Pn74a+KjBLES+CCAea+sPhl4wTw3qP21WxoOqOEvAP+XS46K/+63evgXQr97C5V8lcHDKex9K+ofgn8RIIT9kuwtxZzgR3ED8iRPf6V5bTg+ZH6U40sXRdGpqmfbZY1Tu135zXG6Drv8AwhlvAlxcNf8AhacgWuosctZE9EmP93/artboq6K8bq6OuQy1306qmj8xxeAqYKp7Oep+f/7Xij/hcsn/AF4W/wD7NXA6QQLVPpXd/teS5+Msn/XhB/7NXnukyf6KlZzP0DLv92pvyPrb9hs5Xxj/ANdof/Qa+pZGr5W/YYbMXjE/9N4R/wCO19Tyc1mlc+Lzd/7bIp3jZif6V+dP7XR/4vfd/wDXjb/+zV+il0f3T/Svzq/a6H/F77v/AK8bf/2aix1ZM/37OP0Qf6OPXFdt8IfB0XibWPFazwR3UKxW6mKVMj/lpXE6J/x7j6V79+yTZ/btb8ZsP4Y7X/2pUJ3dj67MJqFBs8+8Wfs7zWJkn8MSeV3OlXhzGf8Arm3Vfx+WvLr3SLrSL97S8t5tKv16wXAxn/aVvusvutfond+FYpVbdEpB9BiuO8XfDLTPEdi1pqFlHdw/wrKOU91bqDTseBhs0cHyyd0fFWjeL9R8PXIaOR1Of4T1re1H4gXmvgiU8+ldH8Q/gDrXhrzrjQ1k1rTxybeYf6ZEP9k/dkH/AI9/vV5HuMLv94OhwyMu2RD6FahxPpqOJhWV4M62z8Pav4jnSGyheUt/drqR8APFlh4p07SfEEdt4V0+9/1Os3DrPBM39yJ1+XzP9mRl/wB1q4jwv41n0e6RvMKgHIINfTPw+/aBTUNLk0vVoYNS0+4Ty5ra7UNFIvoVNZvQ2lFyVj0v4X/s9eHfh1AGsLUzai4Hm6hdjfNP+P8A7Kvy165p+hrEAZOv615z4LuntoQ3hC/S7ssZbw1q02Sg/wCne4b5l9lk3L23LXpHh/xPY67JLbp5lpqNvgT6ddr5c8P4H7y+jLuU1zOd9D4/G4SvTbm9UbNtCsSBVGAP1q0oqleX1tpdjPe3txFaWkC7pJ53CIg9yeK8E+Iv7TMjebaeDrZGQZVtbvYmEQ9fKjOGk/3m2r/vVha5x4fC1cRK0Ee5eK/HGh+CNNa91nUFsosfu487pJj6Iq/Mx/3RXzx8Qv2htY8R+ba6UkvhnSzxmP8A4/5h7t92H/gO5v8AdrxXWfFE11qE19e3suoajKMPe3ThpCP7q/3V/wBlflri9Z8crlo4iWboWNaxpn1eFyynQ96pqzqtV1+CxhdEIjjJLMM5Lt6sTyx9zXDax4zmbcsZ2j1rn73VZrxyWYn610PgX4Q+JviUSdJszHZH72q3albb/gHeX/gPy/7VdMIKJ6dSpGnHXRHHajrjSbnklwCcbmPf0qhp+orcyyp5U8LRthkuI9jDr2r7B8Jfs06H4EMV7Osus6wuD9vvFB2H/pmv3Y/+A/N/tV80/F6D7J8Xtcgz91Ih/wCOVqpRexw08V7SVkX7GQSWg56gV9b/ALB94G0PxhY5yY7yGbHpvjYf+yV8Y6ddMkIGe1fXP/BP1zIvjljz81l/OWuLE/ATj3eiz69gTAqWkXjNLkV4tj5JMeOaKaDinDms2jZDgc0tMHFPHNZ8tykFcP8AET4q6X4HtniDreaqw/dWaNznsX9BXBfFD49ppxuNL8PyLNecrNfdUh9k9W96+cda8VHzprm5naWeQ7nmkbLsfc120cNfWR7+EwDladXbsdh4v8f32vXzXmqXP2if+CMcRxeyj+teSeKviF5e8JIQPaua8VePWlLxwtwfSuNsbTVPF2qRWGn201/fTHEdvAu5m+gr2oUuVHtynCmuWJJrHii41CR8MVT+dex/A39l3WPiO0Oqa6JdJ0EnK5XE1wPRQein+8a9c+A/7INj4a+zaz4sVNR1TAZLHrBAff8AvN+lfVen6ZHBGsaIAqjAVRgCvNxGNULwp79zx6+LT0ic/wCAvh/pHgnR4dO0iwisbSMDEaDlj/edurN7muyhtwnbn1NSQ2yxD1NTKvtXzs5ubbZ5bk5O7BFqXFA6UVg0NDxx0pQ1JRWVjVEimlptKprJo0Q4HFOplKDisWjREmaWmU+sWjRDl6U5e9MXvTl71izWJIvenL3pi96eveudo1iLTl702nL3rFo0QtPplPrCSLQq9KWkXvS1hYtBTxyKZTl6UWHcWm5NO7GmVIjwTNLTM0A1/Y1j+YOYfSg0zdSg1NilIfSg4pgNKGqLFpj8ilzTAaM1PKVcfSg4pu6lzRYdxwOaWmUoao5SlIeppaYDmlBxU2LUh1FIGpQc1FilIfSg+tIOaKjlLTHil3VHnHejd71HKUmSbqTNMDe9KDU8popCkcU0rwafRUcpSkZs9sGJrLu9MDg8V0RQGo3gBBqeRGqqNHnmr6AkyOjoGVhggjIIr5u+LP7NUNz52o+GVW2u+XewPCSf9c/7v+7X1/e2YYHiue1DShKrArXNUpKSsz2MHmNXCyvBn5ryR3Ok3clvdRtBPGcMrDBzXUeGPG0+jzq6SFcH1r6b+LPwR0/xtbyTKi2upqPkulH3vZv8a+RfF/hDV/BOpy2OpwNEw4D4+SVfVTXkVqDifpuX5lTxkUou0ux9f/DL472ur2NvpussZ4o/9VMGxNEfVW/pXv2j+L/s6QpezLcWM3FvqcZ+R/8AZf8AutX5f+H/ABHNpcy/OQAeDX0V8JfjhLpP+iXTLdWM2Flt5eUcf0PvXHCUqTvE7sXgqOYQ5Kq16M+3C3Wkrzbwp4tihsVu9NmbVdCxmSAnNzY//HEr0GxvYNQtUuLWVZ4HGVdDkGvVpVY1FofmGY5XiMvlaorx79BbmESKT3rnNX01bmJ1ZQciuq7VRvLcEEitrHmwkfCf7SnwOk8P6jN4m0OAnTJT5moWiD/j3f8AvqP7rf8Ajv8Au14zoWvT6NcJJE52A9u1fpJrWkiZJVeNXRwVKsMgg9j7V8kfGX9nSXSXuda8LW7SWfLz6aoy0fqYx3X/AGa46lK60PuMpzOOlKu7eZ2Hwh+P72Sra3TLPaSDbJDJyso/uste1aXfiSH7V4I1KJFIzJ4e1KTEJ/64v1j+jfLX53W2oSW+cV2Phn4o6roci+XMWRegJOR9DXlShKLvE+wn7KvHkrxuja/afu766+LbtqWmT6TdizhV7edlbsfmVl4YH19jXI6Wf3Aq78QfEo8c6vFqlyzPcpAsOWbPC5/xqlpf+oFbJt7l0qcKMVCnsj6x/YWP+g+Lz/09xj/x2vqs9DXyx+wtDjSvFxz/AMvkf/oNfU56V1wV0fnOcu2MkULs/I9fnh+14P8Ai911/wBeNv8A+zV+h93916/PD9rz/kt93/142/8A7NQ4nXkmuIfocZofNuPpX01+xZZZu/G7kc7rUZ/CSvmnwTdWy3aC5/1Q+8K+wvAl74LvLGz/ALGl/wCEY1mNAkeo2fzb/wDZuIj8sw/3vm/utXA3yyufZ4rDSxVFwi9T3b7IrL0FUrrSI5QcrXM2HxJn0KSO28X2sNmrnEWt2O5tOn/3m+9Cx/ut+dd3DIlxEskbrJG33XXkGt4zUtj88r4ephp8lRHD6p4ZDK2FyPpXkHxF+BmieMVd7m28i8A+S8g+WVfTJ/iHs1fSctuHB4rGv9HjnVvl5q9wpV50XeDPzk+IHwf13wHM73kJvtP/AIdStVJA/wCug/hP1+X3rlLO8utMcPE5KjuP6jtX6Oal4XWRXBQMDweOteC/Eb9nHT9Wlku9F26PfclkRcwS890/hPuvrUuKZ9RhM2UvdqHlvgP4yXWjyxh5WAU5HzdPoa+k/Cfx40fxXbW9trMa3vlf6qQt5dxAfVJB8y/jXxr4o8F6p4SvzbaravYS/wAE3WGX3Vuh+n3qyrfULu24z0rlnSTPpadWFRXWqPrD4wfEA6vqxt21S71Ows+IReOu1f8AaZF+Ut/tN81eO6z45X5ljO8+vavOpNevJ+JGYj60/TLO81zUIrOzt5ry6lOEgt03u30FTGmkF401aCsi5qWtTX8h3OWJ6AdKm8KeC9c8b6kbHQ9Om1C4A+d0GIYT/wBNJDwo9uW/2a99+GH7IUt+Ir7xjceSpwy6TaPyf+urj/0Ff++q+qfC3gfT/Dmnw2dhaRW0ES7VjjQKoH4Vq2oo8SvmUaTtDU+e/hZ+yDp1gYb7xbMuu3qkMLQKVsoz/u/8tD7tx/sivpHTtAt9MgSGCJURAFVVXCqB0AFbttYLEMkc1Ls7YrjnUb0PnquJqYiV5vTscX4j05VhJwOa/OD4pOdR+LviWfrtnWPP+6oFfo98S9et/DPhPVtVuseVa20knPqAcV+aFm8uoT3F/cfNPdSNM5PqxzW1Ha57eXRcm5D4x5cJNfan/BP/AEv7P4G8T6iRzd6ksQPtGgP/ALPXxVctsjIr9IP2WPBz+DPgf4ZtZU23NzCb+b3aZi4/8dK1livgsdmYTUaVu567uo3UlFeOfKJj6dUe6uY8c/EvRvh7pRvdUlYu52wW8YzJOw6hRStc6qMJVXyxOg1XW7LQdPlvtRuY7S1iGS8hxXzJ8Vvjpe+LBLZaW76do5+UtnE1wP8A2Va4X4h/FHUfG1+13qdzsgU5is1OI4vr6mvJ/EnjQxhhGxx6+v19K76OHtqz67C4GFFc09WbWs+KEtwyRnLegry7XvFk+oyMquQnrVDVNdlvmZVJSL9T9a9m+Bn7Luo/EJ4NX11ZdN0LOVBGJLgew7L/ALVehaNGPNM6q1eNOOp578M/hB4k+LmsfZdMgMdqrf6ReyAhIh6f73+zX3n8HvgL4f8AhXpypY2/nXzgedfTDMsh+vZfau28HeCdL8JaZDp+lWcdpbRjAWNcZ+tdXDAF5xzXi4nFSq+7HY+arYt1dI7EFtbRqOFX/vmtCKMAcfypUAHapVIry2jjTY9ABT1pgOKUNWVjRD6KAc0VDRaYq06mjinVg0axY5elLSL0NLWbRrEdRQOlFYNGiY8dKcOlMXpT16Vi0aocvenL1pi9aeKxaNEPXvTl601etOFc7Rsh1KvekpV61k0aIdSr1pKBxWDRY+nDpTacOlZWKQ5elLSL0pamxSEPSm0ppKzZSZ8/bqXIpmRS1/ZVj+V7jwaUNUYOKUN61NikyQGlzUYpQcVFi0yTdQDmmbqUHNTYq5LkUU2ilYdx4OKUN60wGlBzU2KTH0oOKYDilDVNi0x+RSg4plFRYpMmBwKM1FupQc1Fi0x+aKaKd0qbFphTxyKaBmnVFikxynilpgOKXdU2LuOpKWis7FJlWWINmqM1mGB4rUYdaiZM5qHE2jI5e+0sMG4yK4Dxx8OdN8V6fJaaharcREHBI+ZD6g9q9fktg+eKyr3TgQeKwlBM7qGInSlzQZ+d/wAVPgtqvw8uXuY4nutFdsJcKM7PZvT61xelanLYuCGO3+VfoxrXh+K7t5oJ4Unt5RteN1yrCvlT4wfs7T6K0+r+Go2nsuWlsurx+6+orya+Gcfeifo+V53HEfu67tLuQ/C/4w3nhy7jeOcgA888Ee9fUPgbxlB4gc6hoEsNnq0p3XOlO222vD/eT/nnJ+h9u/56W9xLaSnGVZTgqeK9D8D/ABFudHuI3SZlKkdDXm8rT5o7n17dOtB0qyumfo3oPiK11+KTyw0F1Cds9rMNskTehH9avSjOa+ePBXxVsvGMcMkt+NL8RRgLbauqbt3+xcL/ABx/+PLXr/h3x2mpXjaRrEKaZr0a5MKvujuF/wCekLfxKa9LD4hT92e5+d5rkksI3Woaw/I2rqBZEIxXK6vpWQ/y5B7Yrr25+lVri1EqniuuUbbHy0ZuLPmf4ofATRvGYlu4oRpurEZF5brguf8Apov8X86+cfFnwg8U+EGZ5bI3dop/4+bMeYoHqy9Vr9D7rRVcH5fyrn9Q8LrID8mfw5rnlSjJao+gwecVsO+WWsex+cwHFbOkNujAr3/9qDwFBF4OTWYII4LuyuQJpI0+Z4zxz+OK+dvDM26cqTXnTjys++wWLhi4c8T7E/Ykn2p4us8/vQ9tNj/ZIZf/AGWvqLPFfFf7OviIeD/iZYuz7NP1ZP7PlJPAf70Z/Qj8a+z8100tj4vPqbp4nnf2ivdfdavm/wDaj+CQ+JFtaarpYEfiCwQxrvGxbiH7xiZv4fm+63+0396vpCYbs1i6zZfaLcttywGCPUVo4niYfETw9RVIPVH5bavp1/oGoS2N/azWN3H9+GYYYVreHfHd/okq4lYqD619r/EX4W6T4xsWh1GyWUgfu5lGJYz7N/Svl/x7+z3rPhsy3GmA6zZLzhR/pKD/AGl/i/4D+Vc0qVz77B5vTruz91no3w5/aClSP7PdSLPbuNskMwDK49CD1r2XwnfiMfbPBWpx6cX+aTQNRlZ9PnP/AExf70DH/vnmvgGCWaxl3RkqQcEeld54P+Kd7osq7J2UDqpPBrkdO2x70uSvHkrRUkfoV4b8f2msagukajbTaF4gxk6dejb5nvE/3ZF91JrqZrQg8rzXy/4M+M2leL9Pj03XYY9UtRgpFOcSRt/ejb7yt/tLXrGg+I9W0GFW025k8ZaGo/4852U6rbj/AGW+7cKPT73+9Uqq4u0j5bGZJa88K7rsd1PYgg8VhaloSzhvl59a1fDnjHRvGFs8ukXi3OziS2cFZ4j3EiH5lNXSAa6ou6uj5dxlTfLJWZ5N4k8FWuq2ktrfWkd1buMMkihga+ePF/7LlwDJc+GphGOv2C9dtn0STGV/4FX2rdaalwDgAH0qtHoYU8gCoc0tGd9DGVaHws+KPB37KfijXp1Oqm10Ky674pVmnb/dX7v/AH1+VfU3wz+Cvh/4eaf5WlWY+0OB5t1L880p9Wf/ANl6V6LZ6YsY+7+JrWgt1QdMVjKemhrWzCrWVnsVLDSljUEitNI1QYApyjAormdzi5r7hTMU+vLPjn8arH4S+HZCCl5rl0hSxsg2Mt/ff0UVly3Z04eEqsuWJ4h+2l8S0uxbeA9Pk/eOVutRZT91B/q0/wCBfeP/AAGvmLAhUip7u7ur+8u9S1G5e81C7kM09xIctI56n6egrJubrJPNd8Vyqx91hqKo01E6v4YeDJPiP8SdA8OxglLy6UTsB9yBTukb/vkGv1Sghit4kiiRY4kUKqKMAAdK+T/2F/hY2laHfePNTg23eqp9m05XHKWqnmQf9dGH5L/tV9Xg8V52IlzOy6HgZhWVSpyroS9jUZNLjNfN/wAZv2jyvn6F4SmWRwuy41X+GP8A2Y/U1xqDZxYbCzxEuWJ2fxb+PeneBopNN08rqWusvy26H5YfeRv4fpXyX4i8Z3er6hLqWo3b3l7Ifvufuj0Ufwj6Vzmp6wYnlbzGkkc5eRzlmPqTXFaz4gkkZlRseprvo0EtWfY4bCwwsfM29e8VfeBfJ7KK5FGvddv47a3ikuJpm2xwxDJJqx4O8Ga38SfEMelaLavd3Tn5n/gjH9527D3r73+Av7OulfC62+1yn+0PEEn+uvf7n+zF/dWumdSNJXMcRjY0dN2ed/AL9k+PTxBr3jCIXN4MPDpjfPHD6GT+83+z92vq/T9MSCNURAiKMKqjAAqe0tViQKowBVuNNteFWqSqu7Pma2InWd5EsUCqOlTqopqdKkXtXLYzjsPUClJxSLSnpUtGiFHSigdKKyaNUPpVNJRWTQ0x1OXpTQc0q1g0aJj1606mDin1m0bJir0paRe9LWDRomOXvT171Gvenr3rNo0THDinU2nDpWMkapjxT6jXpTx0rnaNUx4pRxSL0orJo0TH0UUVztFpj6cOlMXpT16VlYtMcvQ0E4pAcUZpWLTEoyKQmkrJodz58opmaXPvX9lWP5TuPBpQc1HupQRU2KTJBxShqjBpQ1TYtMkzRTMilBqbFXJaXJqPd70ob3pWHckDUoqLdSg1Ni0yUGlBFRhvxoDVFikySlyajDUufepsVceGpwNMpQcVnY05iQHNPBzUIb8KcGqbFJkoOKXIqMN70u6osWmPzRupuRRU2KuPoplFRYpMfSEcU2iixomNK1BNFuU1ZxTSvFQ4I1U7GNcWYYEEVgajoocNhcg9q7KSEEGqc1tkHisJQOmnUad1ufKvxh/Z6t/EIm1LRkW11cfM0QGI5/8ABq+XL/T7zQ7+W1u4XtbqI4aNxgiv0y1HSxIGwOa8g+KvwZ03x3aOZIxb6ig/dXSDn6H1FeXWw19Yn3GWZ44WpV9V3Pkbw74sn024VlkMbA9QetfR/gD4p6f4m02HSPEO9lQg215E22e0f+9G3b3HSvmfxl4I1XwRqj2epQMmD8koHyOPUGotC8QS6fKoLkAHhvSvJnCz13P0GjWjUhdO8Wfop4Y8aXWlT2+l+IZUmScYsdZjGIbwejf3X9RXogt6+M/hb8X4Xs/7H1mEahpFzgSWrHnP95T/AAt/tV9HeEvFX9hWdvHcXx1Tw5IQltqbf6y1J+7HP6f73tXRRxVnyVD43Ncj3r4RadV/kd5JBwaoy2uSeK1GbOaiZcg16tj4VHmPxL8Ir4q8NarpLrn7VbvCpPZsHYf+AsFNfnfBHPoeszWlyhint5WikQ9QQcGv1F1CAEk18K/tZ/D4+G/F8Xie0j22WqP5dztHEdwP4v8AgS/+PK1edXp9UfYZDi1Tqeyk9y14IvYtSt/IMnlvwUkHVHByjD6ECvtL4WeNf+Ez8OQ+ccajaYguk7h/730brX5ueBfFcmmaguW6H86+uPh14jm1D7Pqeg4OtWkYR7ReFvoe8f8Avf3TXHCr7N6n1mZ4D+0MO4w+Jao+ncVBKmQao+FvE1p4s0tLy0bnpJE3DRt3UjsRWqVzXqJKS5kflcoTpScJqzRiXOnJNnK9a5zVPDiuGIX9K7prcHNQSWocEEZqXGxtTm47Hzp8QfgZovi1ZJZrb7Ne44vLcbX/AOBf3vxr5f8AH3wh1rwPOzzwmezz8t3CMr/wIdq/Ra90dXBwPwrjPEPhlbiGRTGrqRgowyDWMqaZ9Bg81qUXyyd0fnpYatd6W4IYgDuK9R8FfHDUNIdFkmaRBjq3I/Gur+IvwEt5TNc6IF065OSbZ/8Aj3b6D+H/AID/AN81886raXWgX5tNStn0+67I/wB2QeqN0YVySpdz7PDY6FbWLPtTQ/iLonxAkhurqaXTdbjULFrVgdlwg9JB92RfZq9N074han4biU+KIEvtK4A8S6WpaDHY3EX3o/8Ae5X6V+d2ieJbvTJlkgmZCvoa+hPhP8ebjTpoUmmwRwVY/K3+FcnLKnrE6cRhaGMjaorPufaen3VpqtrHdWVxFc28gykkLhkYexFX0twPQ14f4f8AEPhq+la80fUJ/CmpyfM8mnhWtp29ZbY/Kf8AgO2u10vxb4hjXaV0fxHH2l0+6+yzEepjk+XPsGqvaKXxHylfJMRCX7r3kd+qgVJXGReP70f63wrrWPWKGOUf+OyVYX4gSOPk8M6vn/pssUX/AKFJR7r6nnf2di07cjOuAzTwM15TrXxiv7OKUwW2laayd729+0Of+2cX+NeJ/EH4q3Wuq0WoatcaihP/AB758i3H0jXr9WZvpUNI7qGT4io/edj1b4sftGaZ4UWaz8PtFrGqJlWmLH7HAR/fbPzMP7q/+O9/i/xj4k1DxLqt3q+rXb3l9McyzyH/AMcUfwr7VZ8T+MoQWiiYOw4CJ91a4PUNSe9kLHj2pxikfU4bA0sKrR1fcbd3xkyAcV2X7P3wXu/jV44MUwki8M6e6yapeD5dy9oVP95v/HR8392qnwm+DGu/GXxF9i00Na6TAR9u1aUfu4l/ur/ekP8Ad7d6/RT4c+AtI+Hfhy10PQ7UWthAMZb78rfxSOe5anUlyxOTHYxUlyRep1ulWsGmWVvZ2sSwW0EaxxxIMBFAwFFT6hrFno1hNe39zHaWkK7pJpWwqiue8X+ONJ8CaJcarq95HbWUQ5Ynlj/dX1PtXxR8VPjZq3xWv385WsfDit/o+mE/NKP703/xNefGDlueLhcJPFyu9u56J8Yv2jL3xx5+k+H5JNO8PnKy3AOJbwf7J/hWvBtT1pbVTHGQAKzdR8ReSGRTk+tctd6hJcs3zda7IwSWh9lThDDw5YKxZ1PWmmZlRvqa6r4S/A3Xvi7qINujWejow8++kXjHcL6mu3+Av7Ml78QJIdY11HstByGRGGJbsf7P91f9qvuTw34asfD+nw2Gn2yWttEAFjjGBSnU5FoeRi8wUE4w3OZ+Fnwg0b4d6PHY6TaiJcDzbhhmSU+pNejW1osGcdxipYUCqABgegqYDFeZNubuz5hzcndixrxUqimqRingjFc7Q0yVehp1RhqeGBrOxqmODUtNpQcVJSY4HFOplKDisjVMcDinA5ptA4rFotMeDinU2nDkVg0aJj6cOlMXpT16Gs2jZMUcU6m04c1g0aIVetPXrUdPrJmiY+nL0ptKvesJI1ix696evSo1709e9YNGqY9e9LSL3payaNLjgaWmU8cismjRDl6U9elMXoacvQ1lYpMWiig9DU2LTG5pu6g0lZ2Hc+edwozTaK/svlP5OUh4OKUNTAcUoOamxaY8H0pQ1MpQaixSY/dRkU2ilylXJN1LuqPdShqVirjw3vTt1R0A4qbFJkganA+9Rg5paixSkP3U5TUQOKcrVNi0yZTxS7qjVuKUNWdi0x+6lBptFTYpMeGpwb0qNTS1Fi0yQNSg5qPJpwNS0UmSjmimg8UZNZWNEx1FNyaMmlY1THUUUUguIVqNkzmpaCKho2jIoTW4YHisi+01ZQeOa6NlzVeWAEHisJQ7HTCdjyfxp8P9O8T2EtpqVqs8TAgEjke4NfG3xW+D9/8ADzUGkRWudJkb9zcgfd/2W9DX6FX1kGB4rkfEHhm21Wzntrm3S4gkGHikGQ1cFbDqovM+my3NqmDlZ6xPz20jVZtPlUhyAOhB6V7v8K/jTcaLKIpZFlgkGySOT5kkX0Yd65b4wfBC68HzTaro8bz6OSTIgGWt/wD7H/aryi0vJLWTKk/SvAq0XF2Z+oYXFU8VDnps/Qzwp46g0iwW7sS114ZGPNgBLTaZnv8A7UP/AKDXqdlewajax3NtKk8EgDJIhyGHsa/Pf4b/ABWvPD9zGVmIUcEHkEehHcV9KeCvHqWEZ1TRGNxpkn7y/wBEByYP700H+z6rVUMTKi+Sex8/m2SLFJ1sMrT7d/8Agntt1GrE5rzn4k+CrHxjoeoaVqEIlt7qMqfVT/Cw9GBwa77TNUtde0+K8s5VmhlGVZf5Vn6nabmIIr3FFTjdbM/PISlSnro0fmX428D6j8OfE1xpF6CQp3QzgYEqZ4IrsPhh8R7nw/qEOZmRlIwc9a+rvir8KdP8f6NJa3aBJ1Ba1vVHzQN/8T/eWvi7xr4D1j4f6w1lqluYnzmKZeY5V9VNeRXouD8j9NynM1XgoSfvI+7fAfjKw8YSjVdG1CLS/EhA84Oc296PSRf4W/2u/evT9K8Y28t0NP1aA6Nq3QW9yfll/wBqN+jCvzT8IePr3w/dRuszIVPDKa+jfBX7TEV9ZLpuuQ2+o2TcGO5Xcv1HdT7iuenUnR+HVHoY7LMPmC5paS7n17UeK8Q8OeP9FmQNo/iG90dj/wAut232y2X2Xd8yj6NXZWfjTV3XMcugasnrBetbMf8AgMi/+zV2RxUH8Wh8bX4dxlL+G1I7aVAc1n3lisynjn1rDHjHUTndoaE/9MtWt2/9mrIvviZd2oO6y0q1HrdaqG/9Fq1P29LucqybHr7H4jfEHh5Z0cbM56ivnr4v+HtKt9PmtNVijlEn3Lb70r/7o+9/wKu48YfFm7keRTrkca/889IttgPsZJdzH/gKrXhfiDxTaG4mmjBE7/fnkdnkk/3nb5jWDrKWiPpcDlFWkuarO3kjze38Iz2BmeRpIoHO6KGY5eNfQn1o+0ixBEfUd6t6prLXbsFJ5NVbPTLjUZlihiaWVyFVVGSTWe59MlYltfFuqWzZhd1x6MRXT6X8Zda00BZC7gdmJNeg+EP2aZX0Uy61dSW2oTfMiRAFYV/usP4jVfUv2bNTjJ+yX9rOPSQNGT/6FS5EzgWY4bmcVMwoP2gtS5BD/rSy/Ha/kBwG/Wobr4A+Kbcnbp0c/wD1znU/+hYpifAzxWemht/4ER//ABVT7OPY6VjaT/5eIoXvxc1W6J2sVrl7/wAQ3+pOxmnY57Zr1DTv2bfF12AWj02xH/TWVnP5KtekeF/2RrXKSa3rF1fsMfurKNYEHtu+Zvy21PIYTzHDw3kfLcVlNcXkVvFHJdXMx2x29ujSSSH0VVBLfhXv/wAJ/wBknVfFbQXvi4SaFpRww06Li7nH+0f+WQ/8e+lfTfgf4UeHPA8O3RdFtdPcgBpgu+Z/95zya7+xsREuerHqaWiPCxGbOd1S2M7w14X0zwppNvpmkWMNhY26hY4IECqv+J9zVD4hfEbRvhl4dl1XWJ9uTsgtk5kuH/uqPWqnxT+LGjfCXRTe6i4mvZRiz05D89w39B718PeNfHGr/EDX5Na12fzbjkQ26n91bJ/dQfzPeuRpzd2RgsDUxL9pV2LPxF+JGt/EzWTqesyGO0jP+h6ap/dQDs2P4m/2q4m/1UIpVTUepanvyM8Vhpa3Oq3cdtbRPcTyttSKMZZj7Ct4RSPsIRjRhyRIJ7lrst82B7V9Qfs6/sqfajF4g8Yw/ufvwaU/8f8AtS//ABNdZ+zx+y9D4TSHXvEiJd61w0NqRmO2/wDij719O2FgIRzRKVj5jHZlzN06T+Y7TtOitIVihQRooAAUYAFa0ECoM96bbxDGe1WK4Jau7PnnNt3Y9FFO6U1e9OrE0TFXrTqavenVk0WmOpQcUlFZNGqZIDTqZTlNYtFJjgcUtNpQcVmzWLJM0Uyn1m0bIcvSnL3pi96evesWjRD1705e9NXvTl71kzZDqVe9JSr3rBosWnjpTKcvSs2jVDx0py96avSlXrWEkaoevWnr3pgpw4rFo1Q9etOpo4pwOaxaKQU5elNpy96yaNUxy96evemL3p696ysWLSGlpDSsUmMPemZNOPemVlYs+d6KbmjJr+zOU/kq48HFOzUYalBpWKTH04H1qMGl3VNi0ySimA0uTS5R8w8NSg0zdRkVnYq4+lHFMBpQ1KxSZIDmimA+lKDiosWpDwcUoNM3UZFTYpMlBpwNRg0oOKzsWmSjmlBxUYPpTg1TYtMeDmlHFMzSg1FjRMkHNKppgPpTgamxaY+lBxTN1KDUWLuPpaYDTgamxSY+lFMBxSg1Fi0ySjtTBS5qbFJ2EIzUbLnNSUYrOxqpFOWEMCCKzLuxznitwrULxZBFZONzeFTocFrOhJcRyKY1ZWGGQjIYV8r/ABl/Z+l0xp9c8OQM9rktcWCjJj9WQf3f9mvtS6sgwOBkVzupaVuDELn1GOtcdWiqisz3cBmNTBT5ovQ/Nu3ma2l69K9D8C+P7rQLuKSOVlCkHg9K9G+NPwEF75+ueHYQlwPmuLKIcP6sn+1/s189QyyWsrI4KuhwQa+erUHB2kfrOBx9PFwU4M+0/h/43+zzy6toce9nxJqOhQnas/8AemhXtL/eH8Ve5aPq9h4p0qLUNPlE0Eg/FT3Ujsa/PTwP49uNEu4pEmZChBVgeV/+tX0n4E8fzec2saMolnkAOpaOpwt4O8sX92UdePvfXqsPiJYd8stYnn5vk8MfF16GlRfie23un5DYGR3FcP4y8D6b4o02Sy1GzS8tmz8rfeQ+qnsa9B0XWrLxNpkV9YyiWCQfQqe6sOxHpTLzTxIDgYNe77tSN1qj81UqtCbtpJHw18Qf2edZ8Nma50LfrWnryYcf6TGPp/EP938q8t+xSxStGweCVTgpINrA1+i9/wCHllySMN2YCuP8TfDDTfEMbLqemwXfGBJt2yD6MvzCuCeFT1ifVYDiCUPdrq58T2mr6ppbBop3GPeuk0z4t6zYcO5ce9ezar+zLYvvbTNRntG6iK4USp+Yww/HNc1d/s367Hnyp7C4HuSn8xXG8PJH1tLOcHNayscXJ8ZtTcHr+v8AjWZcfFLU584Yiu6H7O/iMn/U2P8A3+FW4P2bPED/AHmsY/8Atpn/ANlrP2Mux0vMsLa6qI8hufEOpamx3SOQfeqf2KSUkySGvpLS/wBl2U4+2aqiDulrAT/48f8ACvTvCn7PnhrRSkgsPt0o/wCWl6d5/wC+fu1aos8ytneHp7O/ofMXw/8AgxrXjNlaxsWS1J+a7uBtjH0Y/e/4DX1V8Nvgho/ga2WQIL3UiBuuZVyFP+wvb+dek6Z4fitkVQgAUYCgYA/wragtETjAreNLlPlsXnFbEXjHSJgQ6BG45Vn+vAqGfwvC2f3RH0NdeLbil+zGm4nkRqN7nGR+FYx/B+dWYvDUa/8ALMV1i2g54py2oHasnEvnMG10VI/4QK04NPVf4a0EhC1IFArCSsLmbIIrYIOlcB8ZPjXpPwk0BpLgreavMMWmnIfmkbsW/ur/ALVUvjl8ctN+EOiNyt7rt0pFpYqeWb+83otfB+v+KNS8Ya1ca1rd699qszZMrH5Ik/55ov8ACtYPsfR5Zl8q79pP4TS8TeLtT8Ya3PrOuXTXepSnPzH5YV/uIv8ACtYF3qTSZVTgVTvL/qF/E+tWPCXhvVvGuuQ6VpFo93dzHHHCIP7znsPekon3PuUoXeiRFpOiaj4m1WDTtNtnvL24YJHDGMljX3B8Bf2dLP4aW6ahqMSX/iCQAmYjIg/2U/8Aiq2vgj8B9M+F+nJIiLd61Ko+0XxGf+Ar6CvYoYtgx37mnsj43H5m6rdOlpEisrIQr05q/HH7U6KPNS4xXOzwExY/lFSVGvSnr0rJotMeD6U7dUanFOrLlNkx9Kp60wHFOB9KTiUmPHFOBzTAc0tYOJsh1KpxTQ1LWTiWh44pw5pinNKDisXE2RLRSKaWsWjRDl6U9elMXpT16Vk0bIeOlPpi9KeOlYMtMcOlLSL0paysbRHU5elNpy9KzkjZElOpg5FOU8VzNG0WLSjikoqOU0Q+nKc0xehpRxWbQEq9KcveowcU9TWLRoiRehpy96jzSqajlNEPNMJpScCoi1S4gLSUinNLWDiaI+cs0A+9Mor+zLH8jXJA1LkVGDSg5pWKTJAaUNUYOKUNSsWmSAijPvTAc0tKxVyTdRkU3OaKzsNMf0pQ3rTBxSg+tTYpMeDmlzTKUHFRYtMfuozTcil61NirkgNOBxUYOaVTisrFpkoPpShvWoxxTgamxaY8HNKDimUqmosaJkgPpTgajBxThzU2NEyTdS5FNoqbGqkPHFKG9ajBxTutTYpMeDinA5qMHFOqLFpj6MmmA4pQ1RYpMfmjdTQc0tZmg7rTStAOKcDmoaKTK7x9az7q0DAkCtcrwagePrWLidEJ9GcfqOjLLuZRtf19frXzz8a/gZ/b4n1nRoBHqSZaa3UYE3uPf+f8/qqe1DA4rn9U03ILqPmrlqUVUVmezgcdUwdTmi9D82GWSwuWDAoynDKeoNdl4N8a3Gh3UckUrKFIPB6V7T8dvgiviKOfWtFhEeqIN00CjAnA7j/a/nXzAhe2kKONrDqK+frUHTdmfrWX5hHF0+eD1PsPwL8QmtbuTWNIILSgHUdKBwLkf89UXtIvf+9X0FoWtWfiTTIbyylE0Mq7gw/ka/O/wX4vl0u6jxIVKkbWzX0v8NfiSmlySajaHfbtg6hp4P8A5Gj9/wC8P8nPD13QlyS2OPOMojjoPEUF76/E+hWtyeMVG+mKwOV/KrOn31vq1lDeWsglglUMrLVsLgdK99NSV0flU1KEnGW6MJ9HT0qu2gxnPyj8q6Yxg0CFT2FDRUZtHNx6Eg/hH5VPHoyD+H9K6FYFpwhHpXO0a+0Mq30xV/hAq/FaKnarKoAKeq0rFKpcSOPsBU6Rhfc05BhaWoLTHYFOQcmkpV71k0apj1HFKBikUjFLWTGmFeY/G3436Z8I9A3ki71u6G2zsB1J/vN6LVr4yfGPTPhP4caecrc6lMCtnYKfmkPb6LX59+KPFGpeL9cvNZ1m4a5vpyTyeIx/dX0Fc0tT6nKsteJftavwr8SPxD4h1HxTrN1q2rXb3uo3BzJM5yFH91fQVhzT7QQvFSiXIrc8DeANV+IniCHStJhMkrkGSUj5Yk7s3tUcp903ChDskUvA/gfWPiFrkOmaZA0sshG5gPlQd2PtX338FvgtpXwv0VYLeNbjUJQDc3rD5pW/ugdlqf4TfCTSvhnoKWNhGJLhgDcXbL88zd/oPQV6daW4ijGBWb8j4jMMyliG4Q2FigINXYosCo0GKmR8VB4KY9V20tNDZpwrKxohy9DTl601e9LWbRaH0UgOaWsrGooOacDimU4VLLTH0oNNXpS1gzZMfSqaaKUVmy0x44p1Mp9YM2ix9OHNNpV71i0axY9e9OXvTF609etZNGyY9ehp69KYtOWsGi0x606mU4GsrG0WPpy96Yppw4qGjZMevenUynA1g0aJjgfWlptCnFTY0THg4p1Mpy9KyaKuSUq9DTVHFP6Cudo1QU5elMXvTxwKmxpcGbioC1PdutRDk0mhXJEOKfmogcUb6waLTPnKgHFMzS5r+yrH8h3HhvWlqMNSg0rFJkgOKUGmbqXIqbFpj6OlMB96XJpWKuS0A4pgNLmosO48H1paYDSipsUmPBxSg5pgalyKixaY+imjijJqbFcxLTgc1GDilBzUWLTJAcU6owfWlBqbFpjwcU4HNR7qcDUWNUyRTS0wGlBxU2LTJaUHFMBpd1YtGiY8c0oOKYKUN61NikyQc0oOKYDilBqLFpkg5oplKDipsUpDgcU4Go8mnA5qHE1TuPoBxmmUqnrU2NEySmuOtLnikPNZuJomRFeDWfdw7latMDOaryx5BrDlN1M5LUdMEysQPmr50+OXwN/tkT61osOzUly01ugwJx6j/a/9Cr6pmtgc8VharpYlU8c1zVqKqRsz2MuzCpg6inBn5tRs9tKysCrKcEHgg13/AIB8bTaVeIyyEMOCOzCvS/j18ETcef4g0KDFwoLXsCD74/56KPX+9+dfPFtcfZ+lfN1qLi+WR+xYDHQxVNVaT9T7h+FXxCj0YIyOX0eYgXNoOfszf319q9+inS4iR42WSJ1DK68hl9a/OrwH48l0y4TEnXhlPR1/u19VfCX4mRQRxWNxITp0x/0aVmz9mf8A55t7H+Gqwtd0peznseHnmURxcXicOrTW67/8E9upV60lFfQH5dclXpTlqMcU8Gs2ikx4GTT1FMFPWsmjRMkXpRQvSisi02PoopCcCoN0xN3vXF/Ff4raT8KPCs+r6lIGk+5bWoOGnk7KK0vGvjLTfA3h+71fVLgQWkCktk8sewX3r86Pin8T9T+K/ieXVb92S1QkWtrniNexx6muKpLoj6XKsseLl7Sp8K/Eh8ZeP9X8fa/da1rU/nXcx/dpn5YE7IvoK595i2c96rZ961/CPhnUvGuv2uj6Vbm4up2xx0Re7H2FYLU/Q+aFGHZI0PAfgXVPiBr0Ol6XCZHc/PJj5Y17kmvvz4T/AAo0v4aaElnZoJLlgDcXRHzTt/Rf9mq3wZ+D+mfDDw7HZ26LLeOAbq7I+aVv8BXpsCKowBgVdtD4TMs0eIk4Q2FhhAXhQPwq4OlMUcVJU2R8+hw6U5e9NpQcVm0apki9KcDxUYOKcDWTRqmPBzRTacDmsWi0xwOaWmU4NWTRqmSU5elMBpVOKhlJki9DS00cU6sGbJjh0py96YppwOKzZSY8dadTRxTqwZtFj6BxSKaWs2jeLHU8UxelOXpWTRsiQcU8cVGOlPHSsGi0x9FIvSlrKxtFjxxTqbSr3rNo2THqaWmUoOKysUmOBxThzTQc0q1DRomPXpTl701e9OXrWEkaJkq9qU9Kappc1g4miYq96cThaYDikduDU8pdyNm5pV6GoyeacrYFPlI5hXbFRb6JG61FurJxLUj54zS5plGa/six/ISY/dSgimA+tLRylJkgOKN1MBxSg1Ni0x+RSg0yilylXJgaMmmA0oaosO4/dSg+lMBBoqLFpkgb1pQaYDS1Nikx+aMmmUuTUWLuS5pQc1GDinVnYvmJA3rTgfSmA5o6VNi0yQGlBqMH1p1RY0UiQH1pwOKjBzSqamxakTBqN1NB45oBzWVjZMeKcGqMHFOqLFpjwcU4NUYOKdU2LTHijNMzilU1Nih4NL0ptOBzUNG0WOBpaZTlOazsaokooFFZtFgB1pjJkGpF70EVi0VcqPF1qnNbhgeK1GUGoXj61FjSMrHG6xpeQxAz6ivkv48fBo6NcT6/o0H+hud1zbIP9We7Aeh9K+07233Ka5bWdFjuoZI5Iw6MMMrDgiuWtQjVjZn0OWZjUwVVSi9D86YLhrdhzx/KvUfAXjVrWRYpX3I3BB/iH+NQfGv4SS+B9Xe8sIy2i3DZUj/lif7rV5zY3r2koBJGOh9K+bq0nFuMj9nwuIhiaSq09mfoj8H/AIiLrdlHpd3NvuY1/cSsf9anofcV6fX5/wDw58dyW80SmYxyIQyODyp9a+1fh143g8Y6Kkm4LeRALMme/r9DXXg8TZ+ym/Q+A4jyfkf13DrT7S/U64HIpV70wU4cV67R8JFki96cDimDinZFZtGqZKppcmo1PFLvwKycTRMlqtql/BplnNdXUqw20Kl5JGOAAKU3BzXxz+1Z8ef7cvLjwVoU3+gxN/xMbhTxIw/gX+tcdV2R7eWYKWPrcn2VucF+0P8AGqb4teJHgs3ZPD9ixW2QHiZh/wAtG/8AZa8ixxT6kt7aS6lWOJSzscACvOP1elShRgoQVkg0fRb7xBqkGn2ETT3MzBVRRmvvf4B/BO0+F+hB5kWbWrpQbicjlf8AYHoK579nD4FQ+AtOj1rU4Q+v3SggMP8AUIf4R7+te/29vitoQ7nw2bZn7V+xov3V+JNAgCgDoKuRJUUSYqwuAMVpY+WHU+mU+s7G6HUUZFFZtDTFBxSg5ptFZNGqZKDmlpg4p4rFotMcDmim9KcKyaNUx9OU1GOKd0rNxNESKacDimCnDkVg4myH05Tmo1NPBxWTiWh6nNOU4pgp1YuJtEfT6ZTl6Vm0bxHL3p696YvenL3rJo1TJF6U9elRr3p696wZohy96dTRTqysbRH0DikyKMipsbXH0UgPFLkVHKCYo4pw4plPHNQ4mkWPWnUwU+uaUTZDt1Kpph6GiPvWfKNEpOBUDvUkjYFVWfJNCgO4/NBfApFPFRO3WjlJuKWzRTFOafWbiNM+dKOlJuoyK/sKx/JFx4PrS0ygHFKw7j80u6mg5paVikxd1KrU2gcVNh3JRzR0poOKUNUhccGp1MpQcVFi0xwOKdTaVTipsaJi0q96SlHFRYtMkXpS00HFG6s7FIeDS0wHNOBqbFpjwc0tMBpQ1RY0TJAaUHFMyKKmxaZKGpwNR0oPrUWNUyQU4HNRg4pwqGjRMeOKcDmow1OB9KzaNUyRTxS9KYDTg1Z2NEx+aWmUoOKmxaY9TS0wHNOBxUNFqRIOaVTimA0oOazaNEySimA4pd1Ryl3EoxmgDNOAxWTiUmVposg8VlXVtweK3SuQaqzwgg8cVlY2hOzPOPGHhKz8RaXdWN5CJraddrqf518QfEj4e3ngHXpbCcM9sxLW056Onp9RX6HXlr1GOK8w+K/wztfHWhTWkihbpAWtpsco9cGJoe1jdbn2mS5u8HU5Knws+KND1BrWZTkgqa9/+EHxHl0LUYLlJCVGFlTP3o/8RXz1qum3Oh6nPa3KGKeBzG6njkVseH9cexmV1Y7c818tUg0z9cShVg4y1TP000TV4Na0+K6gcOjqGBFaNfM3wA+KC2d1HpFzLmzuf9WWP+rf0/z/ALVfSoNe/hK3tYWluj8cznLv7OxFl8MtiTpS7qaDmlrvWqPBHg4phbg0+uM+KvxCsfhv4Qvtc1B8RQIdkSn5pX7KvvWFRqEW2dWHozxFRUqe7PMP2nPjqPAGjNoOjzbvEWoIwDIebaP+J/rXxBEMZJO525Zj3PrVrxH4l1Hxl4g1DWtUkMl3eyb2yfuL2Qew/nVNDXgzm5u5+w4DBwwVFUqZYr6m/Zb+CQdovF2swfLkHToXHXn/AFjD/wBBryz9n74RyfErxQsl1Gw0WyYSXMnZ+eEHua+/NLsYrSCNI41iijULHGowFA6cVpSp82rPDzrM/YxeHpPV7/5Fq2tBGBVpRg0wVIorp5T4LmvqSKcVIDUY6U4HNS0WmSL1p1MHIpwNZtGqY7dSg5puaOlZNFoeOKdTAc05TWLRoiQcinL0qMHFOqWjVD6UGmg5paxaNB1PplOXpWTRoh46U5e9NXpSrxWLRrEdTl6U2nL0NYNG8R69DS0i9DS1k0aoevWnr3qOnqazaNESL3p696jXrTwcVg0axHDin0ylU1i0bIkXpRTQcU4HNTymiYu6jdSUVmomnMPDelLupg4pwOaTQJjxUi96iXpT1NZG8WSr0p4OajU04VhJHQmOpw4FMBpssmAazUbjuNmk61XzyaRpMmlHStlGxg5Dt+BUTNnNMeSiM5qHC2pKkTJTt1RlsCmb6y5LmqmfPG6lyKj3Uu6v6/sfyNzDwfSnBvWowfSlDUrD5iSlB9aYDilBzSsPmJKKZS5NTYfMP3UuRUe6lBrOxaZIDilBzUYOKcDmosWmSA4pQc0wH1pRU2NEx4OKXdTA1LkVNi0yTJpQ1M3Uo5qLFXHg5pQajpwOamxaY8GnA+tRjinA5qLGiY8HNFNoziosWmSg0oNR08HIqLFqRIDilFMBzSg4qWjRSJA3rSg+lMBzSg4rJo2UiUH0pQ1Rg4p9RY0Uh1KG9aaDS1Nikx4pQfWmA4p1Q0WmPBxTgc0xTxSjis2jRMeDil3U0c0VFi7j1OKfUY4pynFQ0aKQpNRsMinUVi4miZSuIdwNYl9abgwxXSOmQaz7q33A8Vg1Y6ITtoz5c/aQ+FP9rae/iLToc3tquLqNB9+P+9/vD+VfMNpKYpCpr9ItTsFlR8oGBGGUjhhXw98cfhy3gTxTJJbof7NuyZbduw/vJ/wH+VeHjaH24n6tw3mftYfVar1W3oM8Ha89vIE8wowxhgeh7Gvtn4KfEhPGehLaXMg/tO0UK/PLr2Nfnhp960Tgg8ivWPhZ49n8L67aalA5CxEC4TP+siz83/fP3q8ilN0p3R9TmOAhmOHlRktenqffympB0rN0PVbfXdKt7+1kEsMyhgwrQr6mL5o3R+JVKcqU3CW6HSSiKJpD9xfvH0r4D/aS+LknxS8XvZ2UxGgaa5jgUHiVx9+Q/wDste6fta/GD/hDvDA8NabPt1fV0IZkPzRW/IZv+Bfdr4tWvGxtW8uRdD9D4by90qX1mqtZbeg0Lmt3wb4Ov/G3iC00fTk3XM7Y3EcIvdj7Cs+2tw3Jr7Q/Zk+Eg8J+Hm13UItuqaiqlAw5ig/hX6t94/8AAa4qcHUdkfRZhjo5fQ9p9roepfDjwFp/gXw7a6VYRhYIQC8hHzSv3Y12UfemooAwOAKevWvWjBRVkfkkqjqScpbk0fQ1KOKiTpUgOaVhDgc05ajp46Vm0WmPU4p1NFOHIrNo1TCnKc02lHFZtGiY4cU4c02nL0rFo0THqcinKaYvenDioaNkx1KppKKxaNEyVTSrTBxThWTRqmSLTqYKfWTRpFjhyKcvemL3py96waN4sevenU1e9OrJo2THU5elIKcBWLRsh4p1NFOrFo0TFU4p1Mpy9Kysapj1OaWmU4Glyl3HbqN1NzS0uWxNxwOaVetMXrT161jJGsR696evQ01RwaeBgVzM3iOXpS5xTVOKXIrFq5snYUtiq8suc06V8A1VLZNawgZuYqnk05pMDFMzgVC0mTXSoX1MHMcTuNSpwDUUYzTi2Kzkr6EqQrPTaQcmn7KxasapnztupQabRX9a2P5JuP6U4H1qMHFKDmixVyQHFOBqMHFKDU2HckBxRupgNGTSsO4/dShqjyaUN61Ni7kgOKcDmowcU4HNTYtMkB9acDiowc04HFRY0THg5paZSg4qbFpktFNyaN1ZWKTHg0tMBzTgcVNi0x4OaWmA5pQ1Q0aJjw3rTutR5FLU2LTJAc04HFRg5pwNRYpSJBxTgc1GDinCoaNFIf0pwOajDetOB9KyaNoyJFNKDimA04NUWNFIkoBxTd1KDmpsapj6cpqMHFOBzUNGiY8cU4c0xTSg4rNo0THg4pQaaDmlqLFpjqVeKQHNFZWKH0UgNLSsNMQjNQSx7gasUhWocTdMxbu3BLdq8w+K/wAPrfxt4ZutOlQebgy28ndZB92vXZ4gSaxdTtN6sMe4rnnTUk0z1cLiZUZqpB6o/NS+06fSL65tLhDFPbyGN0PUEGtvw/dBeCa9c/ac+Hv9nalF4ltIsQXJEV0FHCv2b8f6V4haS+XnFfIV6TpzcWfumBxkcXQjWj1PsX9mf4ni1nbwvqE37mTc1kzHp/eT8P6+1e8eJPElp4c0a91G9lWC1tYmmlkJ+6oGTX536Zrt1DClxYzGDUrdhLBL6OOn59K7D4v/ALSo+JvgfR9J0tjDc3Q36yn/ADyZWK+X+YLf7pFb4bFOnBwfQ+czTJvrWNhWh8MviPOPiF4zu/iL401PxBdkg3Eo8iM/8soV+6o/z3rEUE0oFaOkaTcavfQWlqhkuJnCIo7k1xzvKVz6yMVTioR2R6z+zh8Kz4/8Vpc3cRbRtOKyzk9JG/hT8cc+1fdVvBiuK+D/AMP4fh74RsdHRR5iqJbl8f6yQ/ervVFe1hqHs4XfU/Jc4x/13EO3wx0Q9BinL1pB0py961seImPXvTwc1GOKcKVjVMlHSnL3qNTinjismi0yRehpQcU0HFOrJo1THUUZorFotMfTl6GmKc05TWLRpFj170tNBxTqho2TH0UgNLWLRomPpV70wHFOHFZWNEyRelOXvTFp68Vk0axY5aevWmU8Vg0bxY9adTV606srGyY9etPXrTBxTgaycTZMeOKdTAc0oOKycS0x1L0pu6jdUcpakPBzS0wHNKD70cpfMOoBxTcmnVnJDix69akUdajXtUq9q5ZI6Yj1FOpoOKC1YOJsnYdmml8CmF+tRtJ1ojATkEj5zUIODQXzTS2BXXGmczmDvwahHJpc5NKBitGuVGVyRTgU0nNJuoUVyyVjSJLGKlqFTin765nFs64vQ+csmnA5ptC9a/rqx/I46iiilYBwb1pRzTKKVikPozTQaXdSsA7dSg5ptKKiwx4OKcOKZTl6VFi0PpwOaYvSnKcVFjRMcDinUwHNKOKmxaY/OKUNTA1KOaixSY4HNOBxUdOU5qLFpjwc04H1qOnA5qbGiY8Gim0ZqLFXJQaUGo6cDkVNikyUHFKKYppQcVm0aJkgNKD6UwHNKprNo2iyQH0pwNRg4pwOaixomS7qWmUdKmxomSA4pw9qjBzSg4qGjRMlBzSg4plKprNo0TJAc0UynKazaNEySlU00HIpaxsbodSg4pByKKLDH0UUVBpcjlTINZ9zFvU1qEZFVZI+tZyRrTlys888d+FbfxNoV9plygaG5jKZI+6ex/A818E6rpc+g6xd6fcqVlt5DE2fYnmv0h1G13K3FfIv7UPgr+ztWh8QW8eIrv8AdXBA6SL90/iv/oNeJj6N4c66H6NwxjeSq8PJ6PY8csbgxSDB71m6vZQ2+oyyW6CPzj5kmO7Hqf5UQXHOehFS3D+fJuNfNpWP07canQV9I/skfD/+09ZuPEl1Fm2sf3duGHDTH+If7o/nXz1pVhJqF9DbxqWeRgoA9TX6JfCjwbH4G8DaZpIUCWKMPMfV25Nd2Fpe0qa7I+Z4gx/1TDckX70tPl1O3g6Zq0g4qrBVpPu175+R3HhaXpSAjFLWDRqmFKvekpVpWNUyRelOU0xacvWsmi0yRelOBxTFp1ZNGsWPpQaaDmlrJo1THCng5qNehpy96xaNESKc04HFRjin1DRsmOpc01ehpaxaNEPpw6U2nL0rJo0Q8U+mDpT6yaNYj6cKYvSnr0rBo3iPFPpi9qfWVjZChqcDimUqmp5TRMkBpd1MHFLurNxKTHbqN1M3e9Ab8ankKTHhqUGmA5py96XKVckpy9KavSnL0rlmjaNyRalXtUS9akU8VzWOqJJTGagmo3brS5Sm7DGfGahZ+tDt1qEtXRCmc8pjt9JuzTM0V0qFjDmuPXrTs4plGeazlG+pohRyakXpTENOLcVyyjc0TsIXxSeZUbN1pm+pVMrnseA5FGRTMilr+rj+Tbj6M0ylB9aB3HZNLupKKkpMXdSg5ptKvekO5IOaKRelLU2KuOXvS0wcU+paKTHL0pQcUxTinVDRaY4HNLTKcG9amxSZJRSBqWszVMFOKdTacpyKixVxVp1Mp4OamxSYDinA5ptFQUmSg5optKDU2NExymnUynBvWoaNEySlB4qMHFODVm0aJknSlDVGD70oaosWmTA05Tiog1OBrOxqmSg4pciowacDUNGiY+lBxUfSnA5qLGyZIKcDUamnA4rNotMkBpwOKi3U5WrI0TJVOKdUStTgag0TJd1GRTA1LmpY0xxNNIyKQmkqTWLKN2mVNeUfGXwiPFPgzVbELmYxmWHj+NeR/UfjXrkwzmsLVrQSRtxmuarTU4NHrYLEvD1o1F0PzS8po5CGGCDgircSZ5rqPih4aPhnxxq9jt2xrMZI/wDdbkfzrnrRNw+lfEVIOMmmf0BRqKpBTjsz2X9mLwGPE3j62vZ491npg+0uSOCw+4P++v5V9yRQ8V4D+yL4Wk07wbfapKuP7Qn2xH1RDg/+Pbq+g4xgYr38DS5Kd31PyLiTF+3x0qa2hp/mOjTbUw6VGvenA4ruaPmUx+aUc02lXvWDRrFki9KVe9NXoacOtZtG6Y6nL0ptOXpWTRqmPXpSikHSnKOKysbxYtOHSm08VmO45elOXoaaOlOXpWbRpFi0+mU+sWbRHDpTl6GmjpTl6VmaoWnr1plPFZM1RIvenL3pi09etYSRrEcKdTacOlYtG8WPHSikXoaWlY2TCnL0NNxSg4qLF8w8GkzTd1N3VagK47dSqaYDmnL3qJRLiyVOhqVKjTvUinFc7djaJIvSlpoOKUHNcclc64tDl608HFR9KUtWPKacySHlqhd+tNaTFQNJ1rohTuc86grt1qLNG7NJXWocqOZyuPFKFpBTs1ky0IelJQTSFuKhq5onYA2M0GSoWemqSTUqnbVi5iXOc0bDT4VzU+yndRGtT5zooor+oLH8pXHA0tMpQakaY9TjNOplAOKB3H0U3dS5qbDuPpQcU0NSjmkUmPHNKDimDilBzU2KTJOtAOKYDinA5qbFpjxzRTaMmosVcloHFNBpQaixSkPBzS9KZSg+tRYtMkBzSjimUoNTY0THg0tMoqbFpkuc0tMpQcVNi0xw4pwOabQvBrNo0THg4pQc02lWs2jRMdSg0lFRYu5IppwOKZSg+tKxSkSA+lOBzUYOKcD6Vm0aKQ8HFOpgNKDismjZSJAc07NRhqXdUWNFIfk0qmo8mlDVlylRkTKaepqENT1ap5TZSJqcvSoQ9ODis7FKRJRimb/egSVNjWLI5lqhdR7kNabfMKqyJkEVm0dUJHjPxO+DGmfEFFnkdrPU4gViuAM8ejDuK5Twj+yPFHqAm1PVxPaf88oI9pP+FfRD2wbqoNXLKFYkwFxXBUwtOcuZrU+jwueY3CUfYUp+6T6TpltpNlDaWkSwW8ShEjQYAAq9UMbYFSg5quW2iPFvfVklAOKQEUVJZItPWowc04HNZNGsSRaeKjU08HNZtGyH04dKYppymsWjRMkFPHSo1PFOBxWdjeLHU5elMyKcpxWNhpki9KVe9NU04cVm0axHU+mU5elYtHREevSnL0NNXpTl6Vm0bIWnCm0+sWjZD1604cU0cU6s+UtMeOaVTTAcUoOanlNFIkBxThzUYOKXIo5SuYfSZpm6lBzS5LApC5pKUDNOAxUPQ0ixFGKeooUU5RXPJnTEevenr0pi9Kco61zNXN0SCnL3qMHFOyKw5QUrClqieTGaR5MZqrJL1rWFK5LqD3l61EWqMvSr3rsjBRRz81yRTkU8UxelOBwKTNIjt1N3UlJXO4ml7C7qY0lIzYzUfWqjT6sjmuOB3ZqWNKZElWFGBUzfRGiHIdop/mVCWpu6s/Z33K5rHz7RTcmjJr+nD+U0x1FJuozQMd0oyaTNFQNDt1AOabR0oKJRyKWmUob1oKHg+tLTaUHFTYpMeDmlplKDiosWh4alyKbRU2KuS5FFNoBxU2BDwcU4c0wHNKOKmxaHg4p1MBzQDiosaJjwcUoNNBzS1Ni0yQHNLTKUHFTYtMeDinVGGpQfeoaLRIpp3Sot1KGrNo0TJQaXNRb6XfUWLuS7qN1RbxSb6ktE4alD1W8yl82s2aItB6UPVXzfejzfesWaot+ZR5lU/OpPO96yNEXhIKUSe9UfP96PP96DSKZfEtOEvvWd9oFL9p96hm6Roial86s37T70fafesmWomn51KJs96y/tPvSrddeazubxiawkz3pN4rPW7x3pPtY9azbNUjSVhUiOBWWt4PWnreD1rJs1VzXWQYpyy+9ZIvQO9OW9HrWLZsos1xLThL71lLeD1pwvMd6zbNVFmqJRT1lrKF3jvT1u+vNZHRGJqrLTxJWWt171It171mzZI0xJT1krNW596kW4681kykjRV6cHqis/vThPms2apF0PTlaqYmp6ze9ZWNEi6rU4NVRZaestZtGkUW1anqaqLLUiy1k0bRLSmnA4quslOElZNGqJw1OVqr+Z705XrLlNEywrU4NjvUCvTg9HKUmTbqUNUIanBqXKUmSg+hpd1RBqcD71Nikx+acpplOWs2zREq96cvemLTulc0jeI+nL0pgOaUHFc7R0RZKOlOXpUStTt3FRY15h26mNJimNJUDy1cKVzCUx0kvWqzNmhnzmm12xpqKOfmuKvepU6GolGKkU4rOSNYktFMDUu73rDlZd7DqazYBppk4qMtk1pCn1Yua4pOafGmaSNc1Mvy0pvoikKBtFG6mF6ZurFU+rL57ElJupm+jdWqjchu54BkUZFNor+jrH8uj6KaDinUhhThzTaVehpDQtFFFKw7j6KQHNLTFcUHFOplOXpUlJjl70tNpw5qCkxQcUoOabRU2LTJQc0tMpynNKxshacOabSqamwxwOKdTKcpqLFIWlBxSUVJSH0ZNN3Ubqk1Q/NG6o80VDNESbqN9R03dWTNETb6N9Q5NGaixZL5lJ5lQ7qQnioNES+b70nm+9QZpu6smapFnzfek873qtupN9YM1SLBmpDP71VL03fWJtFFnz/ek+0VUL0wyVNzrjEu/auOtNN371QMh5qNpTzWbZvGKNI3nvTftvvWUZTUZmPNYtmsYGx9u96T7f71imdqb9oPrWVzojBG7/AGh70n9o+9YRuDTftB9als1VNHQrqHvTxqHvXOrcH1p4uT61m2aqmdANQ96kXUPeueFwfWpEuD61i2bKCOiW/wDepFv/AHrnkuD61Mk59aybNVE6Bb33qRb33rDSY+tTJIaGUkbaXnvUyXfvWLHIamjkNZs0SNpLr3qZLr3rHjkNTpIaxY0jXS596kS496ykkNSpIazZrFGos9SLP71mpJ1qRZKRqkaST1Ks/vWasnvUqSe9ZspI0VmqRZqzlepUesmi0aCzU8Te9UVc1Ij1nYouiTNPWSqisakRqnlHctq9PV6rI1SKadikywrU8NUCmpFqGjREqmnr3qJelPQ1mWiVelPXvTF6GnL3rnaNkSL0p9Rr3qRa52bRY4DFBNLTD3qbXL5rBvppkpjNjNQu/WtI07kuY9petRF81GWNArrUFFHO5XF609RmmqOtPXoahjQtLSUhrLlNlIXd70FuKYTihTmqUAuBJzUka0irUgwBSl2Q1oOU4zTWemlutRk5qFTvuVzDi3vQDmm05BkU3CwriqM0/bTkXAp2KjYtHzyvQ0tNBxSqc1/Rh/LgtFFFKwBTl6U2nL0qQuLRRRQFx1FAOaKk0QU8dKZTx0pFIBT6ZT6ktBRRRQMdTl702lHFQWOpVpKBUlIfSrSUDioLQ6iiioKQuaVe9Npy9KyZshaKKULUWLTEpu2pNtG2psaJkeKSpNtG2psXci20m2p9lJ5dZ2NIsrlaaVqz5dJ5dZtHRFlUqaaVNWzFSeTWLRtGRSKk0hQ4q75PtSeR9ayaN4yRQMRNM8k1qeRSfZxWLRspoyTAaYYDzWubf2pPsvtWTRvGZim3NRm2PpW59l9qabT2rJxOmM0YZtjTfsp9K3fsftQLL2rOxspowvshPam/ZD6V0Isv9mgWP+zUNGsahzoszT1s29K6AWHtTl0/2rLlNVUMBbQ+lSJaHmt9dOHpT10+pcTRVDCS1NTR2praWx5PFPWx9qy5TT2hlJbkdqmjhNai2XHSnrZ+1ZOJamZ8cRqdI6uraU9bbrxWbiaKZWSOpUjNWktsZ4qVLepcS1IrJGalVKspB7U8QVk4mqmQIlSKhqwkFSrDgVPKWpldIzUqR1KsVPWP2qeUOe5GFIp6KcVMsVPWKpsNMjReDUig09Y6eExS5TVMRelSpSBKkRamxdx6d6kWmqtPArMLj171IvWo1HFSL1rJo0TJF6Gnr3qKnoetZWNUyde9OXvTFPWnZx3qGrmqY+nBsVGG/GkLcVnyGikS+ZUZk61EXppatFSJcxXkqPfk0hNNHU1ooWM3Ik60Ui9KWlyj5h9KvembqN4FTyhzEtRs2CaZ59IPnzRGIlIcBvp6ptpittqQPuptGiYo5o2mkUgUGQYpcpfMBOKaWzTCxanIlHKHMKg61OgwKaowKep4rKSNEPFFGRRkVnYs+d6UcUlFf0RY/l8fRSKaWkAUDg0UUrAPopoOKdUgKvelptKvQ0rFi05elNpV70ikOpw6U2lXvU2LQ6iiikUOoooqSkx9FIvelqWUh9FIvQ0tQy0OopFPWlqRhT6atOqLGiYqinAZpF6U5e9TYtMULRRSrUWNEwwaMGnUVNi0xNtG2nAZpQMVnYuLGhKNlPpQMVm0aqQzZR5dSgZpQMVm4lqRD5VL5VTBc0u2s+U1UyDyaPJqyEpdgrPlKUyr5NL5HtVoJTggNZuJtGZT+zj0pfs4q6IwacIxWLidEahQ+ze1Ktt14q+IqcsQrPlNVUKS23HSlFpkVfWIYpdg6VDiaxqFAWmKkW1x2q6sYp6xjms+U1VRlJbbGacLervligIKlxNVNlMWw9KctuPSrgjAp3l+1Zcpqpsqi3GKcIB6VYAFPVaycTZTKy2/tT1txzVlVFPCAVk4mqmV1gqRYKnCgU8Lik4lqZAsNPWGplWnKtZOJqpkaw09YalUcU9RxWbRpGRAIqcsVThQKdsFZs2REsdOCU+lC1Fi0xoWnBaWlWlY0TALinqtKo4pyisWXcFXFPC0KKWs7DTFUU4U1e9OpNGiY6lXvSUVk0apkqtS76i3Uhb3pKJdyXfSF+OtQ7qTdWigRzEhekpgOaXJq7WJUh1AGKB0o7VBomG7Hejd70wmmlvenyk8xJvpN2aizRk0cocxJtpyttqNXNPUZpOJSZKo30Y20wSbBSeZuoUTRMcZKRcnNNC5pw+WjlFzEirgUuai8w09TmlyjTJlbijdTVHFLWDR0ok3UbqSip0ND58ooor+gT+Ygp45ooqWAUUUUgClBxRRQA6gUUVBQ6lHFFFJlIdSg4oopFodRRRSGOoooqShV606iioLFWnUUVBQUoOaKKkseveloopDQ5e9KOKKKktDqKKKhmiClU0UVJZIvSloorItAvWnUUVLNEOXpS0UVmxj6KKKg0Q4HNFFFQaDlNOU0UVDNIjlNOoorFm8R9FFFZmqH0q9DRRUM0QtPoorM2Q+iiismaodT6KKzNohRRRWbNlsSL3qSiismOO4+nUUVLN4jx0pV60UVkzZEg6UUUVizaOw8HFPoorJm8Qp1FFSWgpV60UUFskHSloorFoqI6n0UVCNQp9FFJmiHUUUVkUw7GozRRWkUJsSiiitGgCiiiswQ+gng0UVMUadCI96iJOaKK2MkOXrUgHFFFQaD8Cm5xRRSKGk5p1FFAkPoooqTQKevWiis5DRIOlLRRWctjoiSL3paKK5kbI//9k=";var r3=t=>{throw TypeError(t)},i7=(t,e,n)=>e.has(t)||r3("Cannot "+n),jx=(t,e,n)=>(i7(t,e,"read from private field"),n?n.call(t):e.get(t)),s7=(t,e,n)=>e.has(t)?r3("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,n),uM="popstate";function a7(t={}){function e(s,a){let{pathname:o="/",search:r="",hash:c=""}=Oo(s.location.hash.substring(1));return!o.startsWith("/")&&!o.startsWith(".")&&(o="/"+o),um("",{pathname:o,search:r,hash:c},a.state&&a.state.usr||null,a.state&&a.state.key||"default")}function n(s,a){let o=s.document.querySelector("base"),r="";if(o&&o.getAttribute("href")){let c=s.location.href,d=c.indexOf("#");r=d===-1?c:c.slice(0,d)}return r+"#"+(typeof a=="string"?a:No(a))}function i(s,a){Wn(s.pathname.charAt(0)==="/",`relative pathnames are not supported in hash history.push(${JSON.stringify(a)})`)}return r7(e,n,i,t)}function Bt(t,e){if(t===!1||t===null||typeof t>"u")throw new Error(e)}function Wn(t,e){if(!t){typeof console<"u"&&console.warn(e);try{throw new Error(e)}catch{}}}function o7(){return Math.random().toString(36).substring(2,10)}function dM(t,e){return{usr:t.state,key:t.key,idx:e}}function um(t,e,n=null,i){return{pathname:typeof t=="string"?t:t.pathname,search:"",hash:"",...typeof e=="string"?Oo(e):e,state:n,key:e&&e.key||i||o7()}}function No({pathname:t="/",search:e="",hash:n=""}){return e&&e!=="?"&&(t+=e.charAt(0)==="?"?e:"?"+e),n&&n!=="#"&&(t+=n.charAt(0)==="#"?n:"#"+n),t}function Oo(t){let e={};if(t){let n=t.indexOf("#");n>=0&&(e.hash=t.substring(n),t=t.substring(0,n));let i=t.indexOf("?");i>=0&&(e.search=t.substring(i),t=t.substring(0,i)),t&&(e.pathname=t)}return e}function r7(t,e,n,i={}){let{window:s=document.defaultView,v5Compat:a=!1}=i,o=s.history,r="POP",c=null,d=f();d==null&&(d=0,o.replaceState({...o.state,idx:d},""));function f(){return(o.state||{idx:null}).idx}function p(){r="POP";let x=f(),k=x==null?null:x-d;d=x,c&&c({action:r,location:v.location,delta:k})}function g(x,k){r="PUSH";let C=um(v.location,x,k);n&&n(C,x),d=f()+1;let N=dM(C,d),L=v.createHref(C);try{o.pushState(N,"",L)}catch(M){if(M instanceof DOMException&&M.name==="DataCloneError")throw M;s.location.assign(L)}a&&c&&c({action:r,location:v.location,delta:1})}function y(x,k){r="REPLACE";let C=um(v.location,x,k);n&&n(C,x),d=f();let N=dM(C,d),L=v.createHref(C);o.replaceState(N,"",L),a&&c&&c({action:r,location:v.location,delta:0})}function _(x){return l3(x)}let v={get action(){return r},get location(){return t(s,o)},listen(x){if(c)throw new Error("A history only accepts one active listener");return s.addEventListener(uM,p),c=x,()=>{s.removeEventListener(uM,p),c=null}},createHref(x){return e(s,x)},createURL:_,encodeLocation(x){let k=_(x);return{pathname:k.pathname,search:k.search,hash:k.hash}},push:g,replace:y,go(x){return o.go(x)}};return v}function l3(t,e=!1){let n="http://localhost";typeof window<"u"&&(n=window.location.origin!=="null"?window.location.origin:window.location.href),Bt(n,"No window.location.(origin|href) available to create URL");let i=typeof t=="string"?t:No(t);return i=i.replace(/ $/,"%20"),!e&&i.startsWith("//")&&(i=n+i),new URL(i,n)}var wf,hM=class{constructor(t){if(s7(this,wf,new Map),t)for(let[e,n]of t)this.set(e,n)}get(t){if(jx(this,wf).has(t))return jx(this,wf).get(t);if(t.defaultValue!==void 0)return t.defaultValue;throw new Error("No value found for context")}set(t,e){jx(this,wf).set(t,e)}};wf=new WeakMap;var l7=new Set(["lazy","caseSensitive","path","id","index","children"]);function c7(t){return l7.has(t)}var u7=new Set(["lazy","caseSensitive","path","id","index","middleware","children"]);function d7(t){return u7.has(t)}function h7(t){return t.index===!0}function dm(t,e,n=[],i={},s=!1){return t.map((a,o)=>{let r=[...n,String(o)],c=typeof a.id=="string"?a.id:r.join("-");if(Bt(a.index!==!0||!a.children,"Cannot specify children on an index route"),Bt(s||!i[c],`Found a route id collision on id "${c}". Route id's must be globally unique within Data Router usages`),h7(a)){let d={...a,id:c};return i[c]=fM(d,e(d)),d}else{let d={...a,id:c,children:void 0};return i[c]=fM(d,e(d)),a.children&&(d.children=dm(a.children,e,r,i,s)),d}})}function fM(t,e){return Object.assign(t,{...e,...typeof e.lazy=="object"&&e.lazy!=null?{lazy:{...t.lazy,...e.lazy}}:{}})}function hl(t,e,n="/"){return kf(t,e,n,!1)}function kf(t,e,n,i){let s=typeof e=="string"?Oo(e):e,a=Us(s.pathname||"/",n);if(a==null)return null;let o=c3(t);m7(o);let r=null;for(let c=0;r==null&&c<o.length;++c){let d=C7(a);r=w7(o[c],d,i)}return r}function f7(t,e){let{route:n,pathname:i,params:s}=t;return{id:n.id,pathname:i,params:s,data:e[n.id],loaderData:e[n.id],handle:n.handle}}function c3(t,e=[],n=[],i="",s=!1){let a=(o,r,c=s,d)=>{let f={relativePath:d===void 0?o.path||"":d,caseSensitive:o.caseSensitive===!0,childrenIndex:r,route:o};if(f.relativePath.startsWith("/")){if(!f.relativePath.startsWith(i)&&c)return;Bt(f.relativePath.startsWith(i),`Absolute route path "${f.relativePath}" nested under path "${i}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),f.relativePath=f.relativePath.slice(i.length)}let p=Co([i,f.relativePath]),g=n.concat(f);o.children&&o.children.length>0&&(Bt(o.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${p}".`),c3(o.children,e,g,p,c)),!(o.path==null&&!o.index)&&e.push({path:p,score:x7(p,o.index),routesMeta:g})};return t.forEach((o,r)=>{if(o.path===""||!o.path?.includes("?"))a(o,r);else for(let c of u3(o.path))a(o,r,!0,c)}),e}function u3(t){let e=t.split("/");if(e.length===0)return[];let[n,...i]=e,s=n.endsWith("?"),a=n.replace(/\?$/,"");if(i.length===0)return s?[a,""]:[a];let o=u3(i.join("/")),r=[];return r.push(...o.map(c=>c===""?a:[a,c].join("/"))),s&&r.push(...o),r.map(c=>t.startsWith("/")&&c===""?"/":c)}function m7(t){t.sort((e,n)=>e.score!==n.score?n.score-e.score:S7(e.routesMeta.map(i=>i.childrenIndex),n.routesMeta.map(i=>i.childrenIndex)))}var p7=/^:[\w-]+$/,g7=3,_7=2,y7=1,b7=10,v7=-2,mM=t=>t==="*";function x7(t,e){let n=t.split("/"),i=n.length;return n.some(mM)&&(i+=v7),e&&(i+=_7),n.filter(s=>!mM(s)).reduce((s,a)=>s+(p7.test(a)?g7:a===""?y7:b7),i)}function S7(t,e){return t.length===e.length&&t.slice(0,-1).every((i,s)=>i===e[s])?t[t.length-1]-e[e.length-1]:0}function w7(t,e,n=!1){let{routesMeta:i}=t,s={},a="/",o=[];for(let r=0;r<i.length;++r){let c=i[r],d=r===i.length-1,f=a==="/"?e:e.slice(a.length)||"/",p=k0({path:c.relativePath,caseSensitive:c.caseSensitive,end:d},f),g=c.route;if(!p&&d&&n&&!i[i.length-1].route.index&&(p=k0({path:c.relativePath,caseSensitive:c.caseSensitive,end:!1},f)),!p)return null;Object.assign(s,p.params),o.push({params:s,pathname:Co([a,p.pathname]),pathnameBase:T7(Co([a,p.pathnameBase])),route:g}),p.pathnameBase!=="/"&&(a=Co([a,p.pathnameBase]))}return o}function k0(t,e){typeof t=="string"&&(t={path:t,caseSensitive:!1,end:!0});let[n,i]=k7(t.path,t.caseSensitive,t.end),s=e.match(n);if(!s)return null;let a=s[0],o=a.replace(/(.)\/+$/,"$1"),r=s.slice(1);return{params:i.reduce((d,{paramName:f,isOptional:p},g)=>{if(f==="*"){let _=r[g]||"";o=a.slice(0,a.length-_.length).replace(/(.)\/+$/,"$1")}const y=r[g];return p&&!y?d[f]=void 0:d[f]=(y||"").replace(/%2F/g,"/"),d},{}),pathname:a,pathnameBase:o,pattern:t}}function k7(t,e=!1,n=!0){Wn(t==="*"||!t.endsWith("*")||t.endsWith("/*"),`Route path "${t}" will be treated as if it were "${t.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${t.replace(/\*$/,"/*")}".`);let i=[],s="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(o,r,c)=>(i.push({paramName:r,isOptional:c!=null}),c?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return t.endsWith("*")?(i.push({paramName:"*"}),s+=t==="*"||t==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?s+="\\/*$":t!==""&&t!=="/"&&(s+="(?:(?=\\/|$))"),[new RegExp(s,e?void 0:"i"),i]}function C7(t){try{return t.split("/").map(e=>decodeURIComponent(e).replace(/\//g,"%2F")).join("/")}catch(e){return Wn(!1,`The URL path "${t}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${e}).`),t}}function Us(t,e){if(e==="/")return t;if(!t.toLowerCase().startsWith(e.toLowerCase()))return null;let n=e.endsWith("/")?e.length-1:e.length,i=t.charAt(n);return i&&i!=="/"?null:t.slice(n)||"/"}function A7({basename:t,pathname:e}){return e==="/"?t:Co([t,e])}var d3=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,ky=t=>d3.test(t);function N7(t,e="/"){let{pathname:n,search:i="",hash:s=""}=typeof t=="string"?Oo(t):t,a;if(n)if(ky(n))a=n;else{if(n.includes("//")){let o=n;n=n.replace(/\/\/+/g,"/"),Wn(!1,`Pathnames cannot have embedded double slashes - normalizing ${o} -> ${n}`)}n.startsWith("/")?a=pM(n.substring(1),"/"):a=pM(n,e)}else a=e;return{pathname:a,search:M7(i),hash:L7(s)}}function pM(t,e){let n=e.replace(/\/+$/,"").split("/");return t.split("/").forEach(s=>{s===".."?n.length>1&&n.pop():s!=="."&&n.push(s)}),n.length>1?n.join("/"):"/"}function Rx(t,e,n,i){return`Cannot include a '${t}' character in a manually specified \`to.${e}\` field [${JSON.stringify(i)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function h3(t){return t.filter((e,n)=>n===0||e.route.path&&e.route.path.length>0)}function Cy(t){let e=h3(t);return e.map((n,i)=>i===e.length-1?n.pathname:n.pathnameBase)}function Ay(t,e,n,i=!1){let s;typeof t=="string"?s=Oo(t):(s={...t},Bt(!s.pathname||!s.pathname.includes("?"),Rx("?","pathname","search",s)),Bt(!s.pathname||!s.pathname.includes("#"),Rx("#","pathname","hash",s)),Bt(!s.search||!s.search.includes("#"),Rx("#","search","hash",s)));let a=t===""||s.pathname==="",o=a?"/":s.pathname,r;if(o==null)r=n;else{let p=e.length-1;if(!i&&o.startsWith("..")){let g=o.split("/");for(;g[0]==="..";)g.shift(),p-=1;s.pathname=g.join("/")}r=p>=0?e[p]:"/"}let c=N7(s,r),d=o&&o!=="/"&&o.endsWith("/"),f=(a||o===".")&&n.endsWith("/");return!c.pathname.endsWith("/")&&(d||f)&&(c.pathname+="/"),c}var Co=t=>t.join("/").replace(/\/\/+/g,"/"),T7=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),M7=t=>!t||t==="?"?"":t.startsWith("?")?t:"?"+t,L7=t=>!t||t==="#"?"":t.startsWith("#")?t:"#"+t,zm=class{constructor(t,e,n,i=!1){this.status=t,this.statusText=e||"",this.internal=i,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function hm(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}function Km(t){return t.map(e=>e.route.path).filter(Boolean).join("/").replace(/\/\/*/g,"/")||"/"}var f3=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function m3(t,e){let n=t;if(typeof n!="string"||!d3.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let i=n,s=!1;if(f3)try{let a=new URL(window.location.href),o=n.startsWith("//")?new URL(a.protocol+n):new URL(n),r=Us(o.pathname,e);o.origin===a.origin&&r!=null?n=r+o.search+o.hash:s=!0}catch{Wn(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:i,isExternal:s,to:n}}var pl=Symbol("Uninstrumented");function O7(t,e){let n={lazy:[],"lazy.loader":[],"lazy.action":[],"lazy.middleware":[],middleware:[],loader:[],action:[]};t.forEach(s=>s({id:e.id,index:e.index,path:e.path,instrument(a){let o=Object.keys(n);for(let r of o)a[r]&&n[r].push(a[r])}}));let i={};if(typeof e.lazy=="function"&&n.lazy.length>0){let s=Xu(n.lazy,e.lazy,()=>{});s&&(i.lazy=s)}if(typeof e.lazy=="object"){let s=e.lazy;["middleware","loader","action"].forEach(a=>{let o=s[a],r=n[`lazy.${a}`];if(typeof o=="function"&&r.length>0){let c=Xu(r,o,()=>{});c&&(i.lazy=Object.assign(i.lazy||{},{[a]:c}))}})}return["loader","action"].forEach(s=>{let a=e[s];if(typeof a=="function"&&n[s].length>0){let o=a[pl]??a,r=Xu(n[s],o,(...c)=>gM(c[0]));r&&(s==="loader"&&o.hydrate===!0&&(r.hydrate=!0),r[pl]=o,i[s]=r)}}),e.middleware&&e.middleware.length>0&&n.middleware.length>0&&(i.middleware=e.middleware.map(s=>{let a=s[pl]??s,o=Xu(n.middleware,a,(...r)=>gM(r[0]));return o?(o[pl]=a,o):s})),i}function P7(t,e){let n={navigate:[],fetch:[]};if(e.forEach(i=>i({instrument(s){let a=Object.keys(s);for(let o of a)s[o]&&n[o].push(s[o])}})),n.navigate.length>0){let i=t.navigate[pl]??t.navigate,s=Xu(n.navigate,i,(...a)=>{let[o,r]=a;return{to:typeof o=="number"||typeof o=="string"?o:o?No(o):".",..._M(t,r??{})}});s&&(s[pl]=i,t.navigate=s)}if(n.fetch.length>0){let i=t.fetch[pl]??t.fetch,s=Xu(n.fetch,i,(...a)=>{let[o,,r,c]=a;return{href:r??".",fetcherKey:o,..._M(t,c??{})}});s&&(s[pl]=i,t.fetch=s)}return t}function Xu(t,e,n){return t.length===0?null:async(...i)=>{let s=await p3(t,n(...i),()=>e(...i),t.length-1);if(s.type==="error")throw s.value;return s.value}}async function p3(t,e,n,i){let s=t[i],a;if(s){let o,r=async()=>(o?console.error("You cannot call instrumented handlers more than once"):o=p3(t,e,n,i-1),a=await o,Bt(a,"Expected a result"),a.type==="error"&&a.value instanceof Error?{status:"error",error:a.value}:{status:"success",error:void 0});try{await s(r,e)}catch(c){console.error("An instrumentation function threw an error:",c)}o||await r(),await o}else try{a={type:"success",value:await n()}}catch(o){a={type:"error",value:o}}return a||{type:"error",value:new Error("No result assigned in instrumentation chain.")}}function gM(t){let{request:e,context:n,params:i,unstable_pattern:s}=t;return{request:E7(e),params:{...i},unstable_pattern:s,context:j7(n)}}function _M(t,e){return{currentUrl:No(t.state.location),..."formMethod"in e?{formMethod:e.formMethod}:{},..."formEncType"in e?{formEncType:e.formEncType}:{},..."formData"in e?{formData:e.formData}:{},..."body"in e?{body:e.body}:{}}}function E7(t){return{method:t.method,url:t.url,headers:{get:(...e)=>t.headers.get(...e)}}}function j7(t){if(D7(t)){let e={...t};return Object.freeze(e),e}else return{get:e=>t.get(e)}}var R7=Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function D7(t){if(t===null||typeof t!="object")return!1;const e=Object.getPrototypeOf(t);return e===Object.prototype||e===null||Object.getOwnPropertyNames(e).sort().join("\0")===R7}var g3=["POST","PUT","PATCH","DELETE"],F7=new Set(g3),I7=["GET",...g3],B7=new Set(I7),_3=new Set([301,302,303,307,308]),U7=new Set([307,308]),Dx={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},q7={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},Vu={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},z7=t=>({hasErrorBoundary:!!t.hasErrorBoundary}),y3="remix-router-transitions",b3=Symbol("ResetLoaderData");function K7(t){const e=t.window?t.window:typeof window<"u"?window:void 0,n=typeof e<"u"&&typeof e.document<"u"&&typeof e.document.createElement<"u";Bt(t.routes.length>0,"You must provide a non-empty routes array to createRouter");let i=t.hydrationRouteProperties||[],s=t.mapRouteProperties||z7,a=s;if(t.unstable_instrumentations){let Z=t.unstable_instrumentations;a=oe=>({...s(oe),...O7(Z.map(_e=>_e.route).filter(Boolean),oe)})}let o={},r=dm(t.routes,a,void 0,o),c,d=t.basename||"/";d.startsWith("/")||(d=`/${d}`);let f=t.dataStrategy||$7,p={...t.future},g=null,y=new Set,_=null,v=null,x=null,k=t.hydrationData!=null,C=hl(r,t.history.location,d),N=!1,L=null,M;if(C==null&&!t.patchRoutesOnNavigation){let Z=ga(404,{pathname:t.history.location.pathname}),{matches:oe,route:_e}=Fg(r);M=!0,C=oe,L={[_e.id]:Z}}else if(C&&!t.hydrationData&&it(C,r,t.history.location.pathname).active&&(C=null),C)if(C.some(Z=>Z.route.lazy))M=!1;else if(!C.some(Z=>xw(Z.route)))M=!0;else{let Z=t.hydrationData?t.hydrationData.loaderData:null,oe=t.hydrationData?t.hydrationData.errors:null;if(oe){let _e=C.findIndex(Pe=>oe[Pe.route.id]!==void 0);M=C.slice(0,_e+1).every(Pe=>!k2(Pe.route,Z,oe))}else M=C.every(_e=>!k2(_e.route,Z,oe))}else{M=!1,C=[];let Z=it(null,r,t.history.location.pathname);Z.active&&Z.matches&&(N=!0,C=Z.matches)}let O,T={historyAction:t.history.action,location:t.history.location,matches:C,initialized:M,navigation:Dx,restoreScrollPosition:t.hydrationData!=null?!1:null,preventScrollReset:!1,revalidation:"idle",loaderData:t.hydrationData&&t.hydrationData.loaderData||{},actionData:t.hydrationData&&t.hydrationData.actionData||null,errors:t.hydrationData&&t.hydrationData.errors||L,fetchers:new Map,blockers:new Map},P="POP",E=null,R=!1,q,I=!1,Y=new Map,X=null,K=!1,B=!1,H=new Set,z=new Map,Q=0,W=-1,D=new Map,U=new Set,$=new Map,te=new Map,ie=new Set,F=new Map,ee,J=null;function re(){if(g=t.history.listen(({action:Z,location:oe,delta:_e})=>{if(ee){ee(),ee=void 0;return}Wn(F.size===0||_e!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let Pe=Xn({currentLocation:T.location,nextLocation:oe,historyAction:Z});if(Pe&&_e!=null){let De=new Promise(Je=>{ee=Je});t.history.go(_e*-1),Rn(Pe,{state:"blocked",location:oe,proceed(){Rn(Pe,{state:"proceeding",proceed:void 0,reset:void 0,location:oe}),De.then(()=>t.history.go(_e))},reset(){let Je=new Map(T.blockers);Je.set(Pe,Vu),de({blockers:Je})}}),E?.resolve(),E=null;return}return Te(Z,oe)}),n){h9(e,Y);let Z=()=>f9(e,Y);e.addEventListener("pagehide",Z),X=()=>e.removeEventListener("pagehide",Z)}return T.initialized||Te("POP",T.location,{initialHydration:!0}),O}function fe(){g&&g(),X&&X(),y.clear(),q&&q.abort(),T.fetchers.forEach((Z,oe)=>_t(oe)),T.blockers.forEach((Z,oe)=>ei(oe))}function me(Z){return y.add(Z),()=>y.delete(Z)}function de(Z,oe={}){Z.matches&&(Z.matches=Z.matches.map(De=>{let Je=o[De.route.id],ze=De.route;return ze.element!==Je.element||ze.errorElement!==Je.errorElement||ze.hydrateFallbackElement!==Je.hydrateFallbackElement?{...De,route:Je}:De})),T={...T,...Z};let _e=[],Pe=[];T.fetchers.forEach((De,Je)=>{De.state==="idle"&&(ie.has(Je)?_e.push(Je):Pe.push(Je))}),ie.forEach(De=>{!T.fetchers.has(De)&&!z.has(De)&&_e.push(De)}),[...y].forEach(De=>De(T,{deletedFetchers:_e,newErrors:Z.errors??null,viewTransitionOpts:oe.viewTransitionOpts,flushSync:oe.flushSync===!0})),_e.forEach(De=>_t(De)),Pe.forEach(De=>T.fetchers.delete(De))}function ne(Z,oe,{flushSync:_e}={}){let Pe=T.actionData!=null&&T.navigation.formMethod!=null&&Zi(T.navigation.formMethod)&&T.navigation.state==="loading"&&Z.state?._isRedirect!==!0,De;oe.actionData?Object.keys(oe.actionData).length>0?De=oe.actionData:De=null:Pe?De=T.actionData:De=null;let Je=oe.loaderData?NM(T.loaderData,oe.loaderData,oe.matches||[],oe.errors):T.loaderData,ze=T.blockers;ze.size>0&&(ze=new Map(ze),ze.forEach((ht,ct)=>ze.set(ct,Vu)));let Fe=K?!1:Le(Z,oe.matches||T.matches),Ve=R===!0||T.navigation.formMethod!=null&&Zi(T.navigation.formMethod)&&Z.state?._isRedirect!==!0;c&&(r=c,c=void 0),K||P==="POP"||(P==="PUSH"?t.history.push(Z,Z.state):P==="REPLACE"&&t.history.replace(Z,Z.state));let st;if(P==="POP"){let ht=Y.get(T.location.pathname);ht&&ht.has(Z.pathname)?st={currentLocation:T.location,nextLocation:Z}:Y.has(Z.pathname)&&(st={currentLocation:Z,nextLocation:T.location})}else if(I){let ht=Y.get(T.location.pathname);ht?ht.add(Z.pathname):(ht=new Set([Z.pathname]),Y.set(T.location.pathname,ht)),st={currentLocation:T.location,nextLocation:Z}}de({...oe,actionData:De,loaderData:Je,historyAction:P,location:Z,initialized:!0,navigation:Dx,revalidation:"idle",restoreScrollPosition:Fe,preventScrollReset:Ve,blockers:ze},{viewTransitionOpts:st,flushSync:_e===!0}),P="POP",R=!1,I=!1,K=!1,B=!1,E?.resolve(),E=null,J?.resolve(),J=null}async function Be(Z,oe){if(E?.resolve(),E=null,typeof Z=="number"){E||(E=OM());let zt=E.promise;return t.history.go(Z),zt}let _e=w2(T.location,T.matches,d,Z,oe?.fromRouteId,oe?.relative),{path:Pe,submission:De,error:Je}=yM(!1,_e,oe),ze=T.location,Fe=um(T.location,Pe,oe&&oe.state);Fe={...Fe,...t.history.encodeLocation(Fe)};let Ve=oe&&oe.replace!=null?oe.replace:void 0,st="PUSH";Ve===!0?st="REPLACE":Ve===!1||De!=null&&Zi(De.formMethod)&&De.formAction===T.location.pathname+T.location.search&&(st="REPLACE");let ht=oe&&"preventScrollReset"in oe?oe.preventScrollReset===!0:void 0,ct=(oe&&oe.flushSync)===!0,qt=Xn({currentLocation:ze,nextLocation:Fe,historyAction:st});if(qt){Rn(qt,{state:"blocked",location:Fe,proceed(){Rn(qt,{state:"proceeding",proceed:void 0,reset:void 0,location:Fe}),Be(Z,oe)},reset(){let zt=new Map(T.blockers);zt.set(qt,Vu),de({blockers:zt})}});return}await Te(st,Fe,{submission:De,pendingError:Je,preventScrollReset:ht,replace:oe&&oe.replace,enableViewTransition:oe&&oe.viewTransition,flushSync:ct,callSiteDefaultShouldRevalidate:oe&&oe.unstable_defaultShouldRevalidate})}function Ke(){J||(J=OM()),ce(),de({revalidation:"loading"});let Z=J.promise;return T.navigation.state==="submitting"?Z:T.navigation.state==="idle"?(Te(T.historyAction,T.location,{startUninterruptedRevalidation:!0}),Z):(Te(P||T.historyAction,T.navigation.location,{overrideNavigation:T.navigation,enableViewTransition:I===!0}),Z)}async function Te(Z,oe,_e){q&&q.abort(),q=null,P=Z,K=(_e&&_e.startUninterruptedRevalidation)===!0,ws(T.location,T.matches),R=(_e&&_e.preventScrollReset)===!0,I=(_e&&_e.enableViewTransition)===!0;let Pe=c||r,De=_e&&_e.overrideNavigation,Je=_e?.initialHydration&&T.matches&&T.matches.length>0&&!N?T.matches:hl(Pe,oe,d),ze=(_e&&_e.flushSync)===!0;if(Je&&T.initialized&&!B&&n9(T.location,oe)&&!(_e&&_e.submission&&Zi(_e.submission.formMethod))){ne(oe,{matches:Je},{flushSync:ze});return}let Fe=it(Je,Pe,oe.pathname);if(Fe.active&&Fe.matches&&(Je=Fe.matches),!Je){let{error:On,notFoundMatches:qn,route:Dt}=un(oe.pathname);ne(oe,{matches:qn,loaderData:{},errors:{[Dt.id]:On}},{flushSync:ze});return}q=new AbortController;let Ve=Hu(t.history,oe,q.signal,_e&&_e.submission),st=t.getContext?await t.getContext():new hM,ht;if(_e&&_e.pendingError)ht=[fl(Je).route.id,{type:"error",error:_e.pendingError}];else if(_e&&_e.submission&&Zi(_e.submission.formMethod)){let On=await Qe(Ve,oe,_e.submission,Je,st,Fe.active,_e&&_e.initialHydration===!0,{replace:_e.replace,flushSync:ze});if(On.shortCircuited)return;if(On.pendingActionResult){let[qn,Dt]=On.pendingActionResult;if(Zs(Dt)&&hm(Dt.error)&&Dt.error.status===404){q=null,ne(oe,{matches:On.matches,loaderData:{},errors:{[qn]:Dt.error}});return}}Je=On.matches||Je,ht=On.pendingActionResult,De=Fx(oe,_e.submission),ze=!1,Fe.active=!1,Ve=Hu(t.history,Ve.url,Ve.signal)}let{shortCircuited:ct,matches:qt,loaderData:zt,errors:pn}=await at(Ve,oe,Je,st,Fe.active,De,_e&&_e.submission,_e&&_e.fetcherSubmission,_e&&_e.replace,_e&&_e.initialHydration===!0,ze,ht,_e&&_e.callSiteDefaultShouldRevalidate);ct||(q=null,ne(oe,{matches:qt||Je,...TM(ht),loaderData:zt,errors:pn}))}async function Qe(Z,oe,_e,Pe,De,Je,ze,Fe={}){ce();let Ve=u9(oe,_e);if(de({navigation:Ve},{flushSync:Fe.flushSync===!0}),Je){let ct=await bt(Pe,oe.pathname,Z.signal);if(ct.type==="aborted")return{shortCircuited:!0};if(ct.type==="error"){if(ct.partialMatches.length===0){let{matches:zt,route:pn}=Fg(r);return{matches:zt,pendingActionResult:[pn.id,{type:"error",error:ct.error}]}}let qt=fl(ct.partialMatches).route.id;return{matches:ct.partialMatches,pendingActionResult:[qt,{type:"error",error:ct.error}]}}else if(ct.matches)Pe=ct.matches;else{let{notFoundMatches:qt,error:zt,route:pn}=un(oe.pathname);return{matches:qt,pendingActionResult:[pn.id,{type:"error",error:zt}]}}}let st,ht=Y_(Pe,oe);if(!ht.route.action&&!ht.route.lazy)st={type:"error",error:ga(405,{method:Z.method,pathname:oe.pathname,routeId:ht.route.id})};else{let ct=ld(a,o,Z,Pe,ht,ze?[]:i,De),qt=await Tt(Z,ct,De,null);if(st=qt[ht.route.id],!st){for(let zt of Pe)if(qt[zt.route.id]){st=qt[zt.route.id];break}}if(Z.signal.aborted)return{shortCircuited:!0}}if(bc(st)){let ct;return Fe&&Fe.replace!=null?ct=Fe.replace:ct=kM(st.response.headers.get("Location"),new URL(Z.url),d,t.history)===T.location.pathname+T.location.search,await wt(Z,st,!0,{submission:_e,replace:ct}),{shortCircuited:!0}}if(Zs(st)){let ct=fl(Pe,ht.route.id);return(Fe&&Fe.replace)!==!0&&(P="PUSH"),{matches:Pe,pendingActionResult:[ct.route.id,st,ht.route.id]}}return{matches:Pe,pendingActionResult:[ht.route.id,st]}}async function at(Z,oe,_e,Pe,De,Je,ze,Fe,Ve,st,ht,ct,qt){let zt=Je||Fx(oe,ze),pn=ze||Fe||LM(zt),On=!K&&!st;if(De){if(On){let zn=Ce(ct);de({navigation:zt,...zn!==void 0?{actionData:zn}:{}},{flushSync:ht})}let Gt=await bt(_e,oe.pathname,Z.signal);if(Gt.type==="aborted")return{shortCircuited:!0};if(Gt.type==="error"){if(Gt.partialMatches.length===0){let{matches:Cs,route:hi}=Fg(r);return{matches:Cs,loaderData:{},errors:{[hi.id]:Gt.error}}}let zn=fl(Gt.partialMatches).route.id;return{matches:Gt.partialMatches,loaderData:{},errors:{[zn]:Gt.error}}}else if(Gt.matches)_e=Gt.matches;else{let{error:zn,notFoundMatches:Cs,route:hi}=un(oe.pathname);return{matches:Cs,loaderData:{},errors:{[hi.id]:zn}}}}let qn=c||r,{dsMatches:Dt,revalidatingFetchers:Qn}=bM(Z,Pe,a,o,t.history,T,_e,pn,oe,st?[]:i,st===!0,B,H,ie,$,U,qn,d,t.patchRoutesOnNavigation!=null,ct,qt);if(W=++Q,!t.dataStrategy&&!Dt.some(Gt=>Gt.shouldLoad)&&!Dt.some(Gt=>Gt.route.middleware&&Gt.route.middleware.length>0)&&Qn.length===0){let Gt=qe();return ne(oe,{matches:_e,loaderData:{},errors:ct&&Zs(ct[1])?{[ct[0]]:ct[1].error}:null,...TM(ct),...Gt?{fetchers:new Map(T.fetchers)}:{}},{flushSync:ht}),{shortCircuited:!0}}if(On){let Gt={};if(!De){Gt.navigation=zt;let zn=Ce(ct);zn!==void 0&&(Gt.actionData=zn)}Qn.length>0&&(Gt.fetchers=ft(Qn)),de(Gt,{flushSync:ht})}Qn.forEach(Gt=>{ot(Gt.key),Gt.controller&&z.set(Gt.key,Gt.controller)});let Fi=()=>Qn.forEach(Gt=>ot(Gt.key));q&&q.signal.addEventListener("abort",Fi);let{loaderResults:dn,fetcherResults:Xi}=await on(Dt,Qn,Z,Pe);if(Z.signal.aborted)return{shortCircuited:!0};q&&q.signal.removeEventListener("abort",Fi),Qn.forEach(Gt=>z.delete(Gt.key));let di=Ig(dn);if(di)return await wt(Z,di.result,!0,{replace:Ve}),{shortCircuited:!0};if(di=Ig(Xi),di)return U.add(di.key),await wt(Z,di.result,!0,{replace:Ve}),{shortCircuited:!0};let{loaderData:ks,errors:Si}=AM(T,_e,dn,ct,Qn,Xi);st&&T.errors&&(Si={...T.errors,...Si});let sa=qe(),Io=Ut(W),Ii=sa||Io||Qn.length>0;return{matches:_e,loaderData:ks,errors:Si,...Ii?{fetchers:new Map(T.fetchers)}:{}}}function Ce(Z){if(Z&&!Zs(Z[1]))return{[Z[0]]:Z[1].data};if(T.actionData)return Object.keys(T.actionData).length===0?null:T.actionData}function ft(Z){return Z.forEach(oe=>{let _e=T.fetchers.get(oe.key),Pe=Vh(void 0,_e?_e.data:void 0);T.fetchers.set(oe.key,Pe)}),new Map(T.fetchers)}async function mt(Z,oe,_e,Pe){ot(Z);let De=(Pe&&Pe.flushSync)===!0,Je=c||r,ze=w2(T.location,T.matches,d,_e,oe,Pe?.relative),Fe=hl(Je,ze,d),Ve=it(Fe,Je,ze);if(Ve.active&&Ve.matches&&(Fe=Ve.matches),!Fe){Ue(Z,oe,ga(404,{pathname:ze}),{flushSync:De});return}let{path:st,submission:ht,error:ct}=yM(!0,ze,Pe);if(ct){Ue(Z,oe,ct,{flushSync:De});return}let qt=t.getContext?await t.getContext():new hM,zt=(Pe&&Pe.preventScrollReset)===!0;if(ht&&Zi(ht.formMethod)){await kt(Z,oe,st,Fe,qt,Ve.active,De,zt,ht,Pe&&Pe.unstable_defaultShouldRevalidate);return}$.set(Z,{routeId:oe,path:st}),await Pt(Z,oe,st,Fe,qt,Ve.active,De,zt,ht)}async function kt(Z,oe,_e,Pe,De,Je,ze,Fe,Ve,st){ce(),$.delete(Z);let ht=T.fetchers.get(Z);ye(Z,d9(Ve,ht),{flushSync:ze});let ct=new AbortController,qt=Hu(t.history,_e,ct.signal,Ve);if(Je){let Ht=await bt(Pe,new URL(qt.url).pathname,qt.signal,Z);if(Ht.type==="aborted")return;if(Ht.type==="error"){Ue(Z,oe,Ht.error,{flushSync:ze});return}else if(Ht.matches)Pe=Ht.matches;else{Ue(Z,oe,ga(404,{pathname:_e}),{flushSync:ze});return}}let zt=Y_(Pe,_e);if(!zt.route.action&&!zt.route.lazy){let Ht=ga(405,{method:Ve.formMethod,pathname:_e,routeId:oe});Ue(Z,oe,Ht,{flushSync:ze});return}z.set(Z,ct);let pn=Q,On=ld(a,o,qt,Pe,zt,i,De),qn=await Tt(qt,On,De,Z),Dt=qn[zt.route.id];if(!Dt){for(let Ht of On)if(qn[Ht.route.id]){Dt=qn[Ht.route.id];break}}if(qt.signal.aborted){z.get(Z)===ct&&z.delete(Z);return}if(ie.has(Z)){if(bc(Dt)||Zs(Dt)){ye(Z,ur(void 0));return}}else{if(bc(Dt))if(z.delete(Z),W>pn){ye(Z,ur(void 0));return}else return U.add(Z),ye(Z,Vh(Ve)),wt(qt,Dt,!1,{fetcherSubmission:Ve,preventScrollReset:Fe});if(Zs(Dt)){Ue(Z,oe,Dt.error);return}}let Qn=T.navigation.location||T.location,Fi=Hu(t.history,Qn,ct.signal),dn=c||r,Xi=T.navigation.state!=="idle"?hl(dn,T.navigation.location,d):T.matches;Bt(Xi,"Didn't find any matches after fetcher action");let di=++Q;D.set(Z,di);let ks=Vh(Ve,Dt.data);T.fetchers.set(Z,ks);let{dsMatches:Si,revalidatingFetchers:sa}=bM(Fi,De,a,o,t.history,T,Xi,Ve,Qn,i,!1,B,H,ie,$,U,dn,d,t.patchRoutesOnNavigation!=null,[zt.route.id,Dt],st);sa.filter(Ht=>Ht.key!==Z).forEach(Ht=>{let Bo=Ht.key,Zc=T.fetchers.get(Bo),Il=Vh(void 0,Zc?Zc.data:void 0);T.fetchers.set(Bo,Il),ot(Bo),Ht.controller&&z.set(Bo,Ht.controller)}),de({fetchers:new Map(T.fetchers)});let Io=()=>sa.forEach(Ht=>ot(Ht.key));ct.signal.addEventListener("abort",Io);let{loaderResults:Ii,fetcherResults:Gt}=await on(Si,sa,Fi,De);if(ct.signal.aborted)return;if(ct.signal.removeEventListener("abort",Io),D.delete(Z),z.delete(Z),sa.forEach(Ht=>z.delete(Ht.key)),T.fetchers.has(Z)){let Ht=ur(Dt.data);T.fetchers.set(Z,Ht)}let zn=Ig(Ii);if(zn)return wt(Fi,zn.result,!1,{preventScrollReset:Fe});if(zn=Ig(Gt),zn)return U.add(zn.key),wt(Fi,zn.result,!1,{preventScrollReset:Fe});let{loaderData:Cs,errors:hi}=AM(T,Xi,Ii,void 0,sa,Gt);Ut(di),T.navigation.state==="loading"&&di>W?(Bt(P,"Expected pending action"),q&&q.abort(),ne(T.navigation.location,{matches:Xi,loaderData:Cs,errors:hi,fetchers:new Map(T.fetchers)})):(de({errors:hi,loaderData:NM(T.loaderData,Cs,Xi,hi),fetchers:new Map(T.fetchers)}),B=!1)}async function Pt(Z,oe,_e,Pe,De,Je,ze,Fe,Ve){let st=T.fetchers.get(Z);ye(Z,Vh(Ve,st?st.data:void 0),{flushSync:ze});let ht=new AbortController,ct=Hu(t.history,_e,ht.signal);if(Je){let Dt=await bt(Pe,new URL(ct.url).pathname,ct.signal,Z);if(Dt.type==="aborted")return;if(Dt.type==="error"){Ue(Z,oe,Dt.error,{flushSync:ze});return}else if(Dt.matches)Pe=Dt.matches;else{Ue(Z,oe,ga(404,{pathname:_e}),{flushSync:ze});return}}let qt=Y_(Pe,_e);z.set(Z,ht);let zt=Q,pn=ld(a,o,ct,Pe,qt,i,De),qn=(await Tt(ct,pn,De,Z))[qt.route.id];if(z.get(Z)===ht&&z.delete(Z),!ct.signal.aborted){if(ie.has(Z)){ye(Z,ur(void 0));return}if(bc(qn))if(W>zt){ye(Z,ur(void 0));return}else{U.add(Z),await wt(ct,qn,!1,{preventScrollReset:Fe});return}if(Zs(qn)){Ue(Z,oe,qn.error);return}ye(Z,ur(qn.data))}}async function wt(Z,oe,_e,{submission:Pe,fetcherSubmission:De,preventScrollReset:Je,replace:ze}={}){_e||(E?.resolve(),E=null),oe.response.headers.has("X-Remix-Revalidate")&&(B=!0);let Fe=oe.response.headers.get("Location");Bt(Fe,"Expected a Location header on the redirect Response"),Fe=kM(Fe,new URL(Z.url),d,t.history);let Ve=um(T.location,Fe,{_isRedirect:!0});if(n){let pn=!1;if(oe.response.headers.has("X-Remix-Reload-Document"))pn=!0;else if(ky(Fe)){const On=l3(Fe,!0);pn=On.origin!==e.location.origin||Us(On.pathname,d)==null}if(pn){ze?e.location.replace(Fe):e.location.assign(Fe);return}}q=null;let st=ze===!0||oe.response.headers.has("X-Remix-Replace")?"REPLACE":"PUSH",{formMethod:ht,formAction:ct,formEncType:qt}=T.navigation;!Pe&&!De&&ht&&ct&&qt&&(Pe=LM(T.navigation));let zt=Pe||De;if(U7.has(oe.response.status)&&zt&&Zi(zt.formMethod))await Te(st,Ve,{submission:{...zt,formAction:Fe},preventScrollReset:Je||R,enableViewTransition:_e?I:void 0});else{let pn=Fx(Ve,Pe);await Te(st,Ve,{overrideNavigation:pn,fetcherSubmission:De,preventScrollReset:Je||R,enableViewTransition:_e?I:void 0})}}async function Tt(Z,oe,_e,Pe){let De,Je={};try{De=await Q7(f,Z,oe,Pe,_e,!1)}catch(ze){return oe.filter(Fe=>Fe.shouldLoad).forEach(Fe=>{Je[Fe.route.id]={type:"error",error:ze}}),Je}if(Z.signal.aborted)return Je;if(!Zi(Z.method))for(let ze of oe){if(De[ze.route.id]?.type==="error")break;!De.hasOwnProperty(ze.route.id)&&!T.loaderData.hasOwnProperty(ze.route.id)&&(!T.errors||!T.errors.hasOwnProperty(ze.route.id))&&ze.shouldCallHandler()&&(De[ze.route.id]={type:"error",result:new Error(`No result returned from dataStrategy for route ${ze.route.id}`)})}for(let[ze,Fe]of Object.entries(De))if(o9(Fe)){let Ve=Fe.result;Je[ze]={type:"redirect",response:e9(Ve,Z,ze,oe,d)}}else Je[ze]=await Z7(Fe);return Je}async function on(Z,oe,_e,Pe){let De=Tt(_e,Z,Pe,null),Je=Promise.all(oe.map(async Ve=>{if(Ve.matches&&Ve.match&&Ve.request&&Ve.controller){let ht=(await Tt(Ve.request,Ve.matches,Pe,Ve.key))[Ve.match.route.id];return{[Ve.key]:ht}}else return Promise.resolve({[Ve.key]:{type:"error",error:ga(404,{pathname:Ve.path})}})})),ze=await De,Fe=(await Je).reduce((Ve,st)=>Object.assign(Ve,st),{});return{loaderResults:ze,fetcherResults:Fe}}function ce(){B=!0,$.forEach((Z,oe)=>{z.has(oe)&&H.add(oe),ot(oe)})}function ye(Z,oe,_e={}){T.fetchers.set(Z,oe),de({fetchers:new Map(T.fetchers)},{flushSync:(_e&&_e.flushSync)===!0})}function Ue(Z,oe,_e,Pe={}){let De=fl(T.matches,oe);_t(Z),de({errors:{[De.route.id]:_e},fetchers:new Map(T.fetchers)},{flushSync:(Pe&&Pe.flushSync)===!0})}function Me(Z){return te.set(Z,(te.get(Z)||0)+1),ie.has(Z)&&ie.delete(Z),T.fetchers.get(Z)||q7}function Ye(Z,oe){ot(Z,oe?.reason),ye(Z,ur(null))}function _t(Z){let oe=T.fetchers.get(Z);z.has(Z)&&!(oe&&oe.state==="loading"&&D.has(Z))&&ot(Z),$.delete(Z),D.delete(Z),U.delete(Z),ie.delete(Z),H.delete(Z),T.fetchers.delete(Z)}function pt(Z){let oe=(te.get(Z)||0)-1;oe<=0?(te.delete(Z),ie.add(Z)):te.set(Z,oe),de({fetchers:new Map(T.fetchers)})}function ot(Z,oe){let _e=z.get(Z);_e&&(_e.abort(oe),z.delete(Z))}function ue(Z){for(let oe of Z){let _e=Me(oe),Pe=ur(_e.data);T.fetchers.set(oe,Pe)}}function qe(){let Z=[],oe=!1;for(let _e of U){let Pe=T.fetchers.get(_e);Bt(Pe,`Expected fetcher: ${_e}`),Pe.state==="loading"&&(U.delete(_e),Z.push(_e),oe=!0)}return ue(Z),oe}function Ut(Z){let oe=[];for(let[_e,Pe]of D)if(Pe<Z){let De=T.fetchers.get(_e);Bt(De,`Expected fetcher: ${_e}`),De.state==="loading"&&(ot(_e),D.delete(_e),oe.push(_e))}return ue(oe),oe.length>0}function Ti(Z,oe){let _e=T.blockers.get(Z)||Vu;return F.get(Z)!==oe&&F.set(Z,oe),_e}function ei(Z){T.blockers.delete(Z),F.delete(Z)}function Rn(Z,oe){let _e=T.blockers.get(Z)||Vu;Bt(_e.state==="unblocked"&&oe.state==="blocked"||_e.state==="blocked"&&oe.state==="blocked"||_e.state==="blocked"&&oe.state==="proceeding"||_e.state==="blocked"&&oe.state==="unblocked"||_e.state==="proceeding"&&oe.state==="unblocked",`Invalid blocker state transition: ${_e.state} -> ${oe.state}`);let Pe=new Map(T.blockers);Pe.set(Z,oe),de({blockers:Pe})}function Xn({currentLocation:Z,nextLocation:oe,historyAction:_e}){if(F.size===0)return;F.size>1&&Wn(!1,"A router only supports one blocker at a time");let Pe=Array.from(F.entries()),[De,Je]=Pe[Pe.length-1],ze=T.blockers.get(De);if(!(ze&&ze.state==="proceeding")&&Je({currentLocation:Z,nextLocation:oe,historyAction:_e}))return De}function un(Z){let oe=ga(404,{pathname:Z}),_e=c||r,{matches:Pe,route:De}=Fg(_e);return{notFoundMatches:Pe,route:De,error:oe}}function Di(Z,oe,_e){if(_=Z,x=oe,v=_e||null,!k&&T.navigation===Dx){k=!0;let Pe=Le(T.location,T.matches);Pe!=null&&de({restoreScrollPosition:Pe})}return()=>{_=null,x=null,v=null}}function ds(Z,oe){return v&&v(Z,oe.map(Pe=>f7(Pe,T.loaderData)))||Z.key}function ws(Z,oe){if(_&&x){let _e=ds(Z,oe);_[_e]=x()}}function Le(Z,oe){if(_){let _e=ds(Z,oe),Pe=_[_e];if(typeof Pe=="number")return Pe}return null}function it(Z,oe,_e){if(t.patchRoutesOnNavigation)if(Z){if(Object.keys(Z[0].params).length>0)return{active:!0,matches:kf(oe,_e,d,!0)}}else return{active:!0,matches:kf(oe,_e,d,!0)||[]};return{active:!1,matches:null}}async function bt(Z,oe,_e,Pe){if(!t.patchRoutesOnNavigation)return{type:"success",matches:Z};let De=Z;for(;;){let Je=c==null,ze=c||r,Fe=o;try{await t.patchRoutesOnNavigation({signal:_e,path:oe,matches:De,fetcherKey:Pe,patch:(ht,ct)=>{_e.aborted||vM(ht,ct,ze,Fe,a,!1)}})}catch(ht){return{type:"error",error:ht,partialMatches:De}}finally{Je&&!_e.aborted&&(r=[...r])}if(_e.aborted)return{type:"aborted"};let Ve=hl(ze,oe,d),st=null;if(Ve){if(Object.keys(Ve[0].params).length===0)return{type:"success",matches:Ve};if(st=kf(ze,oe,d,!0),!(st&&De.length<st.length&&ti(De,st.slice(0,De.length))))return{type:"success",matches:Ve}}if(st||(st=kf(ze,oe,d,!0)),!st||ti(De,st))return{type:"success",matches:null};De=st}}function ti(Z,oe){return Z.length===oe.length&&Z.every((_e,Pe)=>_e.route.id===oe[Pe].route.id)}function Ln(Z){o={},c=dm(Z,a,void 0,o)}function ui(Z,oe,_e=!1){let Pe=c==null;vM(Z,oe,c||r,o,a,_e),Pe&&(r=[...r],de({}))}return O={get basename(){return d},get future(){return p},get state(){return T},get routes(){return r},get window(){return e},initialize:re,subscribe:me,enableScrollRestoration:Di,navigate:Be,fetch:mt,revalidate:Ke,createHref:Z=>t.history.createHref(Z),encodeLocation:Z=>t.history.encodeLocation(Z),getFetcher:Me,resetFetcher:Ye,deleteFetcher:pt,dispose:fe,getBlocker:Ti,deleteBlocker:ei,patchRoutes:ui,_internalFetchControllers:z,_internalSetRoutes:Ln,_internalSetStateDoNotUseOrYouWillBreakYourApp(Z){de(Z)}},t.unstable_instrumentations&&(O=P7(O,t.unstable_instrumentations.map(Z=>Z.router).filter(Boolean))),O}function V7(t){return t!=null&&("formData"in t&&t.formData!=null||"body"in t&&t.body!==void 0)}function w2(t,e,n,i,s,a){let o,r;if(s){o=[];for(let d of e)if(o.push(d),d.route.id===s){r=d;break}}else o=e,r=e[e.length-1];let c=Ay(i||".",Cy(o),Us(t.pathname,n)||t.pathname,a==="path");if(i==null&&(c.search=t.search,c.hash=t.hash),(i==null||i===""||i===".")&&r){let d=ww(c.search);if(r.route.index&&!d)c.search=c.search?c.search.replace(/^\?/,"?index&"):"?index";else if(!r.route.index&&d){let f=new URLSearchParams(c.search),p=f.getAll("index");f.delete("index"),p.filter(y=>y).forEach(y=>f.append("index",y));let g=f.toString();c.search=g?`?${g}`:""}}return n!=="/"&&(c.pathname=A7({basename:n,pathname:c.pathname})),No(c)}function yM(t,e,n){if(!n||!V7(n))return{path:e};if(n.formMethod&&!c9(n.formMethod))return{path:e,error:ga(405,{method:n.formMethod})};let i=()=>({path:e,error:ga(400,{type:"invalid-body"})}),a=(n.formMethod||"get").toUpperCase(),o=C3(e);if(n.body!==void 0){if(n.formEncType==="text/plain"){if(!Zi(a))return i();let p=typeof n.body=="string"?n.body:n.body instanceof FormData||n.body instanceof URLSearchParams?Array.from(n.body.entries()).reduce((g,[y,_])=>`${g}${y}=${_}
`,""):String(n.body);return{path:e,submission:{formMethod:a,formAction:o,formEncType:n.formEncType,formData:void 0,json:void 0,text:p}}}else if(n.formEncType==="application/json"){if(!Zi(a))return i();try{let p=typeof n.body=="string"?JSON.parse(n.body):n.body;return{path:e,submission:{formMethod:a,formAction:o,formEncType:n.formEncType,formData:void 0,json:p,text:void 0}}}catch{return i()}}}Bt(typeof FormData=="function","FormData is not available in this environment");let r,c;if(n.formData)r=A2(n.formData),c=n.formData;else if(n.body instanceof FormData)r=A2(n.body),c=n.body;else if(n.body instanceof URLSearchParams)r=n.body,c=CM(r);else if(n.body==null)r=new URLSearchParams,c=new FormData;else try{r=new URLSearchParams(n.body),c=CM(r)}catch{return i()}let d={formMethod:a,formAction:o,formEncType:n&&n.formEncType||"application/x-www-form-urlencoded",formData:c,json:void 0,text:void 0};if(Zi(d.formMethod))return{path:e,submission:d};let f=Oo(e);return t&&f.search&&ww(f.search)&&r.append("index",""),f.search=`?${r}`,{path:No(f),submission:d}}function bM(t,e,n,i,s,a,o,r,c,d,f,p,g,y,_,v,x,k,C,N,L){let M=N?Zs(N[1])?N[1].error:N[1].data:void 0,O=s.createURL(a.location),T=s.createURL(c),P;if(f&&a.errors){let K=Object.keys(a.errors)[0];P=o.findIndex(B=>B.route.id===K)}else if(N&&Zs(N[1])){let K=N[0];P=o.findIndex(B=>B.route.id===K)-1}let E=N?N[1].statusCode:void 0,R=E&&E>=400,q={currentUrl:O,currentParams:a.matches[0]?.params||{},nextUrl:T,nextParams:o[0].params,...r,actionResult:M,actionStatus:E},I=Km(o),Y=o.map((K,B)=>{let{route:H}=K,z=null;if(P!=null&&B>P?z=!1:H.lazy?z=!0:xw(H)?f?z=k2(H,a.loaderData,a.errors):H7(a.loaderData,a.matches[B],K)&&(z=!0):z=!1,z!==null)return C2(n,i,t,I,K,d,e,z);let Q=!1;typeof L=="boolean"?Q=L:R?Q=!1:(p||O.pathname+O.search===T.pathname+T.search||O.search!==T.search||W7(a.matches[B],K))&&(Q=!0);let W={...q,defaultShouldRevalidate:Q},D=Uf(K,W);return C2(n,i,t,I,K,d,e,D,W,L)}),X=[];return _.forEach((K,B)=>{if(f||!o.some(te=>te.route.id===K.routeId)||y.has(B))return;let H=a.fetchers.get(B),z=H&&H.state!=="idle"&&H.data===void 0,Q=hl(x,K.path,k);if(!Q){if(C&&z)return;X.push({key:B,routeId:K.routeId,path:K.path,matches:null,match:null,request:null,controller:null});return}if(v.has(B))return;let W=Y_(Q,K.path),D=new AbortController,U=Hu(s,K.path,D.signal),$=null;if(g.has(B))g.delete(B),$=ld(n,i,U,Q,W,d,e);else if(z)p&&($=ld(n,i,U,Q,W,d,e));else{let te;typeof L=="boolean"?te=L:R?te=!1:te=p;let ie={...q,defaultShouldRevalidate:te};Uf(W,ie)&&($=ld(n,i,U,Q,W,d,e,ie))}$&&X.push({key:B,routeId:K.routeId,path:K.path,matches:$,match:W,request:U,controller:D})}),{dsMatches:Y,revalidatingFetchers:X}}function xw(t){return t.loader!=null||t.middleware!=null&&t.middleware.length>0}function k2(t,e,n){if(t.lazy)return!0;if(!xw(t))return!1;let i=e!=null&&t.id in e,s=n!=null&&n[t.id]!==void 0;return!i&&s?!1:typeof t.loader=="function"&&t.loader.hydrate===!0?!0:!i&&!s}function H7(t,e,n){let i=!e||n.route.id!==e.route.id,s=!t.hasOwnProperty(n.route.id);return i||s}function W7(t,e){let n=t.route.path;return t.pathname!==e.pathname||n!=null&&n.endsWith("*")&&t.params["*"]!==e.params["*"]}function Uf(t,e){if(t.route.shouldRevalidate){let n=t.route.shouldRevalidate(e);if(typeof n=="boolean")return n}return e.defaultShouldRevalidate}function vM(t,e,n,i,s,a){let o;if(t){let d=i[t];Bt(d,`No route found to patch children into: routeId = ${t}`),d.children||(d.children=[]),o=d.children}else o=n;let r=[],c=[];if(e.forEach(d=>{let f=o.find(p=>v3(d,p));f?c.push({existingRoute:f,newRoute:d}):r.push(d)}),r.length>0){let d=dm(r,s,[t||"_","patch",String(o?.length||"0")],i);o.push(...d)}if(a&&c.length>0)for(let d=0;d<c.length;d++){let{existingRoute:f,newRoute:p}=c[d],g=f,[y]=dm([p],s,[],{},!0);Object.assign(g,{element:y.element?y.element:g.element,errorElement:y.errorElement?y.errorElement:g.errorElement,hydrateFallbackElement:y.hydrateFallbackElement?y.hydrateFallbackElement:g.hydrateFallbackElement})}}function v3(t,e){return"id"in t&&"id"in e&&t.id===e.id?!0:t.index===e.index&&t.path===e.path&&t.caseSensitive===e.caseSensitive?(!t.children||t.children.length===0)&&(!e.children||e.children.length===0)?!0:t.children.every((n,i)=>e.children?.some(s=>v3(n,s))):!1}var xM=new WeakMap,x3=({key:t,route:e,manifest:n,mapRouteProperties:i})=>{let s=n[e.id];if(Bt(s,"No route found in manifest"),!s.lazy||typeof s.lazy!="object")return;let a=s.lazy[t];if(!a)return;let o=xM.get(s);o||(o={},xM.set(s,o));let r=o[t];if(r)return r;let c=(async()=>{let d=c7(t),p=s[t]!==void 0&&t!=="hasErrorBoundary";if(d)Wn(!d,"Route property "+t+" is not a supported lazy route property. This property will be ignored."),o[t]=Promise.resolve();else if(p)Wn(!1,`Route "${s.id}" has a static property "${t}" defined. The lazy property will be ignored.`);else{let g=await a();g!=null&&(Object.assign(s,{[t]:g}),Object.assign(s,i(s)))}typeof s.lazy=="object"&&(s.lazy[t]=void 0,Object.values(s.lazy).every(g=>g===void 0)&&(s.lazy=void 0))})();return o[t]=c,c},SM=new WeakMap;function G7(t,e,n,i,s){let a=n[t.id];if(Bt(a,"No route found in manifest"),!t.lazy)return{lazyRoutePromise:void 0,lazyHandlerPromise:void 0};if(typeof t.lazy=="function"){let f=SM.get(a);if(f)return{lazyRoutePromise:f,lazyHandlerPromise:f};let p=(async()=>{Bt(typeof t.lazy=="function","No lazy route function found");let g=await t.lazy(),y={};for(let _ in g){let v=g[_];if(v===void 0)continue;let x=d7(_),C=a[_]!==void 0&&_!=="hasErrorBoundary";x?Wn(!x,"Route property "+_+" is not a supported property to be returned from a lazy route function. This property will be ignored."):C?Wn(!C,`Route "${a.id}" has a static property "${_}" defined but its lazy function is also returning a value for this property. The lazy route property "${_}" will be ignored.`):y[_]=v}Object.assign(a,y),Object.assign(a,{...i(a),lazy:void 0})})();return SM.set(a,p),p.catch(()=>{}),{lazyRoutePromise:p,lazyHandlerPromise:p}}let o=Object.keys(t.lazy),r=[],c;for(let f of o){if(s&&s.includes(f))continue;let p=x3({key:f,route:t,manifest:n,mapRouteProperties:i});p&&(r.push(p),f===e&&(c=p))}let d=r.length>0?Promise.all(r).then(()=>{}):void 0;return d?.catch(()=>{}),c?.catch(()=>{}),{lazyRoutePromise:d,lazyHandlerPromise:c}}async function wM(t){let e=t.matches.filter(s=>s.shouldLoad),n={};return(await Promise.all(e.map(s=>s.resolve()))).forEach((s,a)=>{n[e[a].route.id]=s}),n}async function $7(t){return t.matches.some(e=>e.route.middleware)?S3(t,()=>wM(t)):wM(t)}function S3(t,e){return X7(t,e,i=>{if(l9(i))throw i;return i},s9,n);function n(i,s,a){if(a)return Promise.resolve(Object.assign(a.value,{[s]:{type:"error",result:i}}));{let{matches:o}=t,r=Math.min(Math.max(o.findIndex(d=>d.route.id===s),0),Math.max(o.findIndex(d=>d.shouldCallHandler()),0)),c=fl(o,o[r].route.id).route.id;return Promise.resolve({[c]:{type:"error",result:i}})}}}async function X7(t,e,n,i,s){let{matches:a,request:o,params:r,context:c,unstable_pattern:d}=t,f=a.flatMap(g=>g.route.middleware?g.route.middleware.map(y=>[g.route.id,y]):[]);return await w3({request:o,params:r,context:c,unstable_pattern:d},f,e,n,i,s)}async function w3(t,e,n,i,s,a,o=0){let{request:r}=t;if(r.signal.aborted)throw r.signal.reason??new Error(`Request aborted: ${r.method} ${r.url}`);let c=e[o];if(!c)return await n();let[d,f]=c,p,g=async()=>{if(p)throw new Error("You may only call `next()` once per middleware");try{return p={value:await w3(t,e,n,i,s,a,o+1)},p.value}catch(y){return p={value:await a(y,d,p)},p.value}};try{let y=await f(t,g),_=y!=null?i(y):void 0;return s(_)?_:p?_??p.value:(p={value:await g()},p.value)}catch(y){return await a(y,d,p)}}function k3(t,e,n,i,s){let a=x3({key:"middleware",route:i.route,manifest:e,mapRouteProperties:t}),o=G7(i.route,Zi(n.method)?"action":"loader",e,t,s);return{middleware:a,route:o.lazyRoutePromise,handler:o.lazyHandlerPromise}}function C2(t,e,n,i,s,a,o,r,c=null,d){let f=!1,p=k3(t,e,n,s,a);return{...s,_lazyPromises:p,shouldLoad:r,shouldRevalidateArgs:c,shouldCallHandler(g){return f=!0,c?typeof d=="boolean"?Uf(s,{...c,defaultShouldRevalidate:d}):typeof g=="boolean"?Uf(s,{...c,defaultShouldRevalidate:g}):Uf(s,c):r},resolve(g){let{lazy:y,loader:_,middleware:v}=s.route,x=f||r||g&&!Zi(n.method)&&(y||_),k=v&&v.length>0&&!_&&!y;return x&&(Zi(n.method)||!k)?Y7({request:n,unstable_pattern:i,match:s,lazyHandlerPromise:p?.handler,lazyRoutePromise:p?.route,handlerOverride:g,scopedContext:o}):Promise.resolve({type:"data",result:void 0})}}}function ld(t,e,n,i,s,a,o,r=null){return i.map(c=>c.route.id!==s.route.id?{...c,shouldLoad:!1,shouldRevalidateArgs:r,shouldCallHandler:()=>!1,_lazyPromises:k3(t,e,n,c,a),resolve:()=>Promise.resolve({type:"data",result:void 0})}:C2(t,e,n,Km(i),c,a,o,!0,r))}async function Q7(t,e,n,i,s,a){n.some(d=>d._lazyPromises?.middleware)&&await Promise.all(n.map(d=>d._lazyPromises?.middleware));let o={request:e,unstable_pattern:Km(n),params:n[0].params,context:s,matches:n},c=await t({...o,fetcherKey:i,runClientMiddleware:d=>{let f=o;return S3(f,()=>d({...f,fetcherKey:i,runClientMiddleware:()=>{throw new Error("Cannot call `runClientMiddleware()` from within an `runClientMiddleware` handler")}}))}});try{await Promise.all(n.flatMap(d=>[d._lazyPromises?.handler,d._lazyPromises?.route]))}catch{}return c}async function Y7({request:t,unstable_pattern:e,match:n,lazyHandlerPromise:i,lazyRoutePromise:s,handlerOverride:a,scopedContext:o}){let r,c,d=Zi(t.method),f=d?"action":"loader",p=g=>{let y,_=new Promise((k,C)=>y=C);c=()=>y(),t.signal.addEventListener("abort",c);let v=k=>typeof g!="function"?Promise.reject(new Error(`You cannot call the handler for a route which defines a boolean "${f}" [routeId: ${n.route.id}]`)):g({request:t,unstable_pattern:e,params:n.params,context:o},...k!==void 0?[k]:[]),x=(async()=>{try{return{type:"data",result:await(a?a(C=>v(C)):v())}}catch(k){return{type:"error",result:k}}})();return Promise.race([x,_])};try{let g=d?n.route.action:n.route.loader;if(i||s)if(g){let y,[_]=await Promise.all([p(g).catch(v=>{y=v}),i,s]);if(y!==void 0)throw y;r=_}else{await i;let y=d?n.route.action:n.route.loader;if(y)[r]=await Promise.all([p(y),s]);else if(f==="action"){let _=new URL(t.url),v=_.pathname+_.search;throw ga(405,{method:t.method,pathname:v,routeId:n.route.id})}else return{type:"data",result:void 0}}else if(g)r=await p(g);else{let y=new URL(t.url),_=y.pathname+y.search;throw ga(404,{pathname:_})}}catch(g){return{type:"error",result:g}}finally{c&&t.signal.removeEventListener("abort",c)}return r}async function J7(t){let e=t.headers.get("Content-Type");return e&&/\bapplication\/json\b/.test(e)?t.body==null?null:t.json():t.text()}async function Z7(t){let{result:e,type:n}=t;if(Sw(e)){let i;try{i=await J7(e)}catch(s){return{type:"error",error:s}}return n==="error"?{type:"error",error:new zm(e.status,e.statusText,i),statusCode:e.status,headers:e.headers}:{type:"data",data:i,statusCode:e.status,headers:e.headers}}return n==="error"?MM(e)?e.data instanceof Error?{type:"error",error:e.data,statusCode:e.init?.status,headers:e.init?.headers?new Headers(e.init.headers):void 0}:{type:"error",error:i9(e),statusCode:hm(e)?e.status:void 0,headers:e.init?.headers?new Headers(e.init.headers):void 0}:{type:"error",error:e,statusCode:hm(e)?e.status:void 0}:MM(e)?{type:"data",data:e.data,statusCode:e.init?.status,headers:e.init?.headers?new Headers(e.init.headers):void 0}:{type:"data",data:e}}function e9(t,e,n,i,s){let a=t.headers.get("Location");if(Bt(a,"Redirects returned/thrown from loaders/actions must have a Location header"),!ky(a)){let o=i.slice(0,i.findIndex(r=>r.route.id===n)+1);a=w2(new URL(e.url),o,s,a),t.headers.set("Location",a)}return t}function kM(t,e,n,i){let s=["about:","blob:","chrome:","chrome-untrusted:","content:","data:","devtools:","file:","filesystem:","javascript:"];if(ky(t)){let a=t,o=a.startsWith("//")?new URL(e.protocol+a):new URL(a);if(s.includes(o.protocol))throw new Error("Invalid redirect location");let r=Us(o.pathname,n)!=null;if(o.origin===e.origin&&r)return o.pathname+o.search+o.hash}try{let a=i.createURL(t);if(s.includes(a.protocol))throw new Error("Invalid redirect location")}catch{}return t}function Hu(t,e,n,i){let s=t.createURL(C3(e)).toString(),a={signal:n};if(i&&Zi(i.formMethod)){let{formMethod:o,formEncType:r}=i;a.method=o.toUpperCase(),r==="application/json"?(a.headers=new Headers({"Content-Type":r}),a.body=JSON.stringify(i.json)):r==="text/plain"?a.body=i.text:r==="application/x-www-form-urlencoded"&&i.formData?a.body=A2(i.formData):a.body=i.formData}return new Request(s,a)}function A2(t){let e=new URLSearchParams;for(let[n,i]of t.entries())e.append(n,typeof i=="string"?i:i.name);return e}function CM(t){let e=new FormData;for(let[n,i]of t.entries())e.append(n,i);return e}function t9(t,e,n,i=!1,s=!1){let a={},o=null,r,c=!1,d={},f=n&&Zs(n[1])?n[1].error:void 0;return t.forEach(p=>{if(!(p.route.id in e))return;let g=p.route.id,y=e[g];if(Bt(!bc(y),"Cannot handle redirect results in processLoaderData"),Zs(y)){let _=y.error;if(f!==void 0&&(_=f,f=void 0),o=o||{},s)o[g]=_;else{let v=fl(t,g);o[v.route.id]==null&&(o[v.route.id]=_)}i||(a[g]=b3),c||(c=!0,r=hm(y.error)?y.error.status:500),y.headers&&(d[g]=y.headers)}else a[g]=y.data,y.statusCode&&y.statusCode!==200&&!c&&(r=y.statusCode),y.headers&&(d[g]=y.headers)}),f!==void 0&&n&&(o={[n[0]]:f},n[2]&&(a[n[2]]=void 0)),{loaderData:a,errors:o,statusCode:r||200,loaderHeaders:d}}function AM(t,e,n,i,s,a){let{loaderData:o,errors:r}=t9(e,n,i);return s.filter(c=>!c.matches||c.matches.some(d=>d.shouldLoad)).forEach(c=>{let{key:d,match:f,controller:p}=c;if(p&&p.signal.aborted)return;let g=a[d];if(Bt(g,"Did not find corresponding fetcher result"),Zs(g)){let y=fl(t.matches,f?.route.id);r&&r[y.route.id]||(r={...r,[y.route.id]:g.error}),t.fetchers.delete(d)}else if(bc(g))Bt(!1,"Unhandled fetcher revalidation redirect");else{let y=ur(g.data);t.fetchers.set(d,y)}}),{loaderData:o,errors:r}}function NM(t,e,n,i){let s=Object.entries(e).filter(([,a])=>a!==b3).reduce((a,[o,r])=>(a[o]=r,a),{});for(let a of n){let o=a.route.id;if(!e.hasOwnProperty(o)&&t.hasOwnProperty(o)&&a.route.loader&&(s[o]=t[o]),i&&i.hasOwnProperty(o))break}return s}function TM(t){return t?Zs(t[1])?{actionData:{}}:{actionData:{[t[0]]:t[1].data}}:{}}function fl(t,e){return(e?t.slice(0,t.findIndex(i=>i.route.id===e)+1):[...t]).reverse().find(i=>i.route.hasErrorBoundary===!0)||t[0]}function Fg(t){let e=t.length===1?t[0]:t.find(n=>n.index||!n.path||n.path==="/")||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:e}],route:e}}function ga(t,{pathname:e,routeId:n,method:i,type:s,message:a}={}){let o="Unknown Server Error",r="Unknown @remix-run/router error";return t===400?(o="Bad Request",i&&e&&n?r=`You made a ${i} request to "${e}" but did not provide a \`loader\` for route "${n}", so there is no way to handle the request.`:s==="invalid-body"&&(r="Unable to encode submission body")):t===403?(o="Forbidden",r=`Route "${n}" does not match URL "${e}"`):t===404?(o="Not Found",r=`No route matches URL "${e}"`):t===405&&(o="Method Not Allowed",i&&e&&n?r=`You made a ${i.toUpperCase()} request to "${e}" but did not provide an \`action\` for route "${n}", so there is no way to handle the request.`:i&&(r=`Invalid request method "${i.toUpperCase()}"`)),new zm(t||500,o,new Error(r),!0)}function Ig(t){let e=Object.entries(t);for(let n=e.length-1;n>=0;n--){let[i,s]=e[n];if(bc(s))return{key:i,result:s}}}function C3(t){let e=typeof t=="string"?Oo(t):t;return No({...e,hash:""})}function n9(t,e){return t.pathname!==e.pathname||t.search!==e.search?!1:t.hash===""?e.hash!=="":t.hash===e.hash?!0:e.hash!==""}function i9(t){return new zm(t.init?.status??500,t.init?.statusText??"Internal Server Error",t.data)}function s9(t){return t!=null&&typeof t=="object"&&Object.entries(t).every(([e,n])=>typeof e=="string"&&a9(n))}function a9(t){return t!=null&&typeof t=="object"&&"type"in t&&"result"in t&&(t.type==="data"||t.type==="error")}function o9(t){return Sw(t.result)&&_3.has(t.result.status)}function Zs(t){return t.type==="error"}function bc(t){return(t&&t.type)==="redirect"}function MM(t){return typeof t=="object"&&t!=null&&"type"in t&&"data"in t&&"init"in t&&t.type==="DataWithResponseInit"}function Sw(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.headers=="object"&&typeof t.body<"u"}function r9(t){return _3.has(t)}function l9(t){return Sw(t)&&r9(t.status)&&t.headers.has("Location")}function c9(t){return B7.has(t.toUpperCase())}function Zi(t){return F7.has(t.toUpperCase())}function ww(t){return new URLSearchParams(t).getAll("index").some(e=>e==="")}function Y_(t,e){let n=typeof e=="string"?Oo(e).search:e.search;if(t[t.length-1].route.index&&ww(n||""))return t[t.length-1];let i=h3(t);return i[i.length-1]}function LM(t){let{formMethod:e,formAction:n,formEncType:i,text:s,formData:a,json:o}=t;if(!(!e||!n||!i)){if(s!=null)return{formMethod:e,formAction:n,formEncType:i,formData:void 0,json:void 0,text:s};if(a!=null)return{formMethod:e,formAction:n,formEncType:i,formData:a,json:void 0,text:void 0};if(o!==void 0)return{formMethod:e,formAction:n,formEncType:i,formData:void 0,json:o,text:void 0}}}function Fx(t,e){return e?{state:"loading",location:t,formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text}:{state:"loading",location:t,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function u9(t,e){return{state:"submitting",location:t,formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text}}function Vh(t,e){return t?{state:"loading",formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text,data:e}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function d9(t,e){return{state:"submitting",formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text,data:e?e.data:void 0}}function ur(t){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function h9(t,e){try{let n=t.sessionStorage.getItem(y3);if(n){let i=JSON.parse(n);for(let[s,a]of Object.entries(i||{}))a&&Array.isArray(a)&&e.set(s,new Set(a||[]))}}catch{}}function f9(t,e){if(e.size>0){let n={};for(let[i,s]of e)n[i]=[...s];try{t.sessionStorage.setItem(y3,JSON.stringify(n))}catch(i){Wn(!1,`Failed to save applied view transitions in sessionStorage (${i}).`)}}}function OM(){let t,e,n=new Promise((i,s)=>{t=async a=>{i(a);try{await n}catch{}},e=async a=>{s(a);try{await n}catch{}}});return{promise:n,resolve:t,reject:e}}var Wc=S.createContext(null);Wc.displayName="DataRouter";var Vm=S.createContext(null);Vm.displayName="DataRouterState";var A3=S.createContext(!1);function m9(){return S.useContext(A3)}var kw=S.createContext({isTransitioning:!1});kw.displayName="ViewTransition";var N3=S.createContext(new Map);N3.displayName="Fetchers";var p9=S.createContext(null);p9.displayName="Await";var ia=S.createContext(null);ia.displayName="Navigation";var Hm=S.createContext(null);Hm.displayName="Location";var Oa=S.createContext({outlet:null,matches:[],isDataRoute:!1});Oa.displayName="Route";var Cw=S.createContext(null);Cw.displayName="RouteError";var T3="REACT_ROUTER_ERROR",g9="REDIRECT",_9="ROUTE_ERROR_RESPONSE";function y9(t){if(t.startsWith(`${T3}:${g9}:{`))try{let e=JSON.parse(t.slice(28));if(typeof e=="object"&&e&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.location=="string"&&typeof e.reloadDocument=="boolean"&&typeof e.replace=="boolean")return e}catch{}}function b9(t){if(t.startsWith(`${T3}:${_9}:{`))try{let e=JSON.parse(t.slice(40));if(typeof e=="object"&&e&&typeof e.status=="number"&&typeof e.statusText=="string")return new zm(e.status,e.statusText,e.data)}catch{}}function v9(t,{relative:e}={}){Bt(qd(),"useHref() may be used only in the context of a <Router> component.");let{basename:n,navigator:i}=S.useContext(ia),{hash:s,pathname:a,search:o}=Gm(t,{relative:e}),r=a;return n!=="/"&&(r=a==="/"?n:Co([n,a])),i.createHref({pathname:r,search:o,hash:s})}function qd(){return S.useContext(Hm)!=null}function $n(){return Bt(qd(),"useLocation() may be used only in the context of a <Router> component."),S.useContext(Hm).location}var M3="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function L3(t){S.useContext(ia).static||S.useLayoutEffect(t)}function Ri(){let{isDataRoute:t}=S.useContext(Oa);return t?j9():x9()}function x9(){Bt(qd(),"useNavigate() may be used only in the context of a <Router> component.");let t=S.useContext(Wc),{basename:e,navigator:n}=S.useContext(ia),{matches:i}=S.useContext(Oa),{pathname:s}=$n(),a=JSON.stringify(Cy(i)),o=S.useRef(!1);return L3(()=>{o.current=!0}),S.useCallback((c,d={})=>{if(Wn(o.current,M3),!o.current)return;if(typeof c=="number"){n.go(c);return}let f=Ay(c,JSON.parse(a),s,d.relative==="path");t==null&&e!=="/"&&(f.pathname=f.pathname==="/"?e:Co([e,f.pathname])),(d.replace?n.replace:n.push)(f,d.state,d)},[e,n,a,s,t])}var O3=S.createContext(null);function Ny(){return S.useContext(O3)}function S9(t){let e=S.useContext(Oa).outlet;return S.useMemo(()=>e&&S.createElement(O3.Provider,{value:t},e),[e,t])}function Wm(){let{matches:t}=S.useContext(Oa),e=t[t.length-1];return e?e.params:{}}function Gm(t,{relative:e}={}){let{matches:n}=S.useContext(Oa),{pathname:i}=$n(),s=JSON.stringify(Cy(n));return S.useMemo(()=>Ay(t,JSON.parse(s),i,e==="path"),[t,s,i,e])}function w9(t,e){return P3(t,e)}function P3(t,e,n,i,s){Bt(qd(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:a}=S.useContext(ia),{matches:o}=S.useContext(Oa),r=o[o.length-1],c=r?r.params:{},d=r?r.pathname:"/",f=r?r.pathnameBase:"/",p=r&&r.route;{let C=p&&p.path||"";D3(d,!p||C.endsWith("*")||C.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${d}" (under <Route path="${C}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
Please change the parent <Route path="${C}"> to <Route path="${C==="/"?"*":`${C}/*`}">.`)}let g=$n(),y;if(e){let C=typeof e=="string"?Oo(e):e;Bt(f==="/"||C.pathname?.startsWith(f),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${f}" but pathname "${C.pathname}" was given in the \`location\` prop.`),y=C}else y=g;let _=y.pathname||"/",v=_;if(f!=="/"){let C=f.replace(/^\//,"").split("/");v="/"+_.replace(/^\//,"").split("/").slice(C.length).join("/")}let x=hl(t,{pathname:v});Wn(p||x!=null,`No routes matched location "${y.pathname}${y.search}${y.hash}" `),Wn(x==null||x[x.length-1].route.element!==void 0||x[x.length-1].route.Component!==void 0||x[x.length-1].route.lazy!==void 0,`Matched leaf route at location "${y.pathname}${y.search}${y.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let k=T9(x&&x.map(C=>Object.assign({},C,{params:Object.assign({},c,C.params),pathname:Co([f,a.encodeLocation?a.encodeLocation(C.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:C.pathname]),pathnameBase:C.pathnameBase==="/"?f:Co([f,a.encodeLocation?a.encodeLocation(C.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:C.pathnameBase])})),o,n,i,s);return e&&k?S.createElement(Hm.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...y},navigationType:"POP"}},k):k}function k9(){let t=O9(),e=hm(t)?`${t.status} ${t.statusText}`:t instanceof Error?t.message:JSON.stringify(t),n=t instanceof Error?t.stack:null,i="rgba(200,200,200, 0.5)",s={padding:"0.5rem",backgroundColor:i},a={padding:"2px 4px",backgroundColor:i},o=null;return console.error("Error handled by React Router default ErrorBoundary:",t),o=S.createElement(S.Fragment,null,S.createElement("p",null,"💿 Hey developer 👋"),S.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",S.createElement("code",{style:a},"ErrorBoundary")," or"," ",S.createElement("code",{style:a},"errorElement")," prop on your route.")),S.createElement(S.Fragment,null,S.createElement("h2",null,"Unexpected Application Error!"),S.createElement("h3",{style:{fontStyle:"italic"}},e),n?S.createElement("pre",{style:s},n):null,o)}var C9=S.createElement(k9,null),E3=class extends S.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,e){return e.location!==t.location||e.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:e.error,location:e.location,revalidation:t.revalidation||e.revalidation}}componentDidCatch(t,e){this.props.onError?this.props.onError(t,e):console.error("React Router caught the following error during render",t)}render(){let t=this.state.error;if(this.context&&typeof t=="object"&&t&&"digest"in t&&typeof t.digest=="string"){const n=b9(t.digest);n&&(t=n)}let e=t!==void 0?S.createElement(Oa.Provider,{value:this.props.routeContext},S.createElement(Cw.Provider,{value:t,children:this.props.component})):this.props.children;return this.context?S.createElement(A9,{error:t},e):e}};E3.contextType=A3;var Ix=new WeakMap;function A9({children:t,error:e}){let{basename:n}=S.useContext(ia);if(typeof e=="object"&&e&&"digest"in e&&typeof e.digest=="string"){let i=y9(e.digest);if(i){let s=Ix.get(e);if(s)throw s;let a=m3(i.location,n);if(f3&&!Ix.get(e))if(a.isExternal||i.reloadDocument)window.location.href=a.absoluteURL||a.to;else{const o=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(a.to,{replace:i.replace}));throw Ix.set(e,o),o}return S.createElement("meta",{httpEquiv:"refresh",content:`0;url=${a.absoluteURL||a.to}`})}}return t}function N9({routeContext:t,match:e,children:n}){let i=S.useContext(Wc);return i&&i.static&&i.staticContext&&(e.route.errorElement||e.route.ErrorBoundary)&&(i.staticContext._deepestRenderedBoundaryId=e.route.id),S.createElement(Oa.Provider,{value:t},n)}function T9(t,e=[],n=null,i=null,s=null){if(t==null){if(!n)return null;if(n.errors)t=n.matches;else if(e.length===0&&!n.initialized&&n.matches.length>0)t=n.matches;else return null}let a=t,o=n?.errors;if(o!=null){let f=a.findIndex(p=>p.route.id&&o?.[p.route.id]!==void 0);Bt(f>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(o).join(",")}`),a=a.slice(0,Math.min(a.length,f+1))}let r=!1,c=-1;if(n)for(let f=0;f<a.length;f++){let p=a[f];if((p.route.HydrateFallback||p.route.hydrateFallbackElement)&&(c=f),p.route.id){let{loaderData:g,errors:y}=n,_=p.route.loader&&!g.hasOwnProperty(p.route.id)&&(!y||y[p.route.id]===void 0);if(p.route.lazy||_){r=!0,c>=0?a=a.slice(0,c+1):a=[a[0]];break}}}let d=n&&i?(f,p)=>{i(f,{location:n.location,params:n.matches?.[0]?.params??{},unstable_pattern:Km(n.matches),errorInfo:p})}:void 0;return a.reduceRight((f,p,g)=>{let y,_=!1,v=null,x=null;n&&(y=o&&p.route.id?o[p.route.id]:void 0,v=p.route.errorElement||C9,r&&(c<0&&g===0?(D3("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),_=!0,x=null):c===g&&(_=!0,x=p.route.hydrateFallbackElement||null)));let k=e.concat(a.slice(0,g+1)),C=()=>{let N;return y?N=v:_?N=x:p.route.Component?N=S.createElement(p.route.Component,null):p.route.element?N=p.route.element:N=f,S.createElement(N9,{match:p,routeContext:{outlet:f,matches:k,isDataRoute:n!=null},children:N})};return n&&(p.route.ErrorBoundary||p.route.errorElement||g===0)?S.createElement(E3,{location:n.location,revalidation:n.revalidation,component:v,error:y,children:C(),routeContext:{outlet:null,matches:k,isDataRoute:!0},onError:d}):C()},null)}function Aw(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function j3(t){let e=S.useContext(Wc);return Bt(e,Aw(t)),e}function R3(t){let e=S.useContext(Vm);return Bt(e,Aw(t)),e}function M9(t){let e=S.useContext(Oa);return Bt(e,Aw(t)),e}function Nw(t){let e=M9(t),n=e.matches[e.matches.length-1];return Bt(n.route.id,`${t} can only be used on routes that contain a unique "id"`),n.route.id}function L9(){return Nw("useRouteId")}function O9(){let t=S.useContext(Cw),e=R3("useRouteError"),n=Nw("useRouteError");return t!==void 0?t:e.errors?.[n]}var P9=0;function E9(t){let{router:e,basename:n}=j3("useBlocker"),i=R3("useBlocker"),[s,a]=S.useState(""),o=S.useCallback(r=>{if(typeof t!="function")return!!t;if(n==="/")return t(r);let{currentLocation:c,nextLocation:d,historyAction:f}=r;return t({currentLocation:{...c,pathname:Us(c.pathname,n)||c.pathname},nextLocation:{...d,pathname:Us(d.pathname,n)||d.pathname},historyAction:f})},[n,t]);return S.useEffect(()=>{let r=String(++P9);return a(r),()=>e.deleteBlocker(r)},[e]),S.useEffect(()=>{s!==""&&e.getBlocker(s,o)},[e,s,o]),s&&i.blockers.has(s)?i.blockers.get(s):Vu}function j9(){let{router:t}=j3("useNavigate"),e=Nw("useNavigate"),n=S.useRef(!1);return L3(()=>{n.current=!0}),S.useCallback(async(s,a={})=>{Wn(n.current,M3),n.current&&(typeof s=="number"?await t.navigate(s):await t.navigate(s,{fromRouteId:e,...a}))},[t,e])}var PM={};function D3(t,e,n){!e&&!PM[t]&&(PM[t]=!0,Wn(!1,n))}var EM={};function jM(t,e){!t&&!EM[e]&&(EM[e]=!0,console.warn(e))}var R9="useOptimistic",RM=QU[R9],D9=()=>{};function F9(t){return RM?RM(t):[t,D9]}function I9(t){let e={hasErrorBoundary:t.hasErrorBoundary||t.ErrorBoundary!=null||t.errorElement!=null};return t.Component&&(t.element&&Wn(!1,"You should not include both `Component` and `element` on your route - `Component` will be used."),Object.assign(e,{element:S.createElement(t.Component),Component:void 0})),t.HydrateFallback&&(t.hydrateFallbackElement&&Wn(!1,"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used."),Object.assign(e,{hydrateFallbackElement:S.createElement(t.HydrateFallback),HydrateFallback:void 0})),t.ErrorBoundary&&(t.errorElement&&Wn(!1,"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used."),Object.assign(e,{errorElement:S.createElement(t.ErrorBoundary),ErrorBoundary:void 0})),e}var B9=["HydrateFallback","hydrateFallbackElement"],U9=class{constructor(){this.status="pending",this.promise=new Promise((t,e)=>{this.resolve=n=>{this.status==="pending"&&(this.status="resolved",t(n))},this.reject=n=>{this.status==="pending"&&(this.status="rejected",e(n))}})}};function q9({router:t,flushSync:e,onError:n,unstable_useTransitions:i}){i=m9()||i;let[a,o]=S.useState(t.state),[r,c]=F9(a),[d,f]=S.useState(),[p,g]=S.useState({isTransitioning:!1}),[y,_]=S.useState(),[v,x]=S.useState(),[k,C]=S.useState(),N=S.useRef(new Map),L=S.useCallback((P,{deletedFetchers:E,newErrors:R,flushSync:q,viewTransitionOpts:I})=>{R&&n&&Object.values(R).forEach(X=>n(X,{location:P.location,params:P.matches[0]?.params??{},unstable_pattern:Km(P.matches)})),P.fetchers.forEach((X,K)=>{X.data!==void 0&&N.current.set(K,X.data)}),E.forEach(X=>N.current.delete(X)),jM(q===!1||e!=null,'You provided the `flushSync` option to a router update, but you are not using the `<RouterProvider>` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable. Please update your app to `import { RouterProvider } from "react-router/dom"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.');let Y=t.window!=null&&t.window.document!=null&&typeof t.window.document.startViewTransition=="function";if(jM(I==null||Y,"You provided the `viewTransition` option to a router update, but you do not appear to be running in a DOM environment as `window.startViewTransition` is not available."),!I||!Y){e&&q?e(()=>o(P)):i===!1?o(P):S.startTransition(()=>{i===!0&&c(X=>DM(X,P)),o(P)});return}if(e&&q){e(()=>{v&&(y?.resolve(),v.skipTransition()),g({isTransitioning:!0,flushSync:!0,currentLocation:I.currentLocation,nextLocation:I.nextLocation})});let X=t.window.document.startViewTransition(()=>{e(()=>o(P))});X.finished.finally(()=>{e(()=>{_(void 0),x(void 0),f(void 0),g({isTransitioning:!1})})}),e(()=>x(X));return}v?(y?.resolve(),v.skipTransition(),C({state:P,currentLocation:I.currentLocation,nextLocation:I.nextLocation})):(f(P),g({isTransitioning:!0,flushSync:!1,currentLocation:I.currentLocation,nextLocation:I.nextLocation}))},[t.window,e,v,y,i,c,n]);S.useLayoutEffect(()=>t.subscribe(L),[t,L]),S.useEffect(()=>{p.isTransitioning&&!p.flushSync&&_(new U9)},[p]),S.useEffect(()=>{if(y&&d&&t.window){let P=d,E=y.promise,R=t.window.document.startViewTransition(async()=>{i===!1?o(P):S.startTransition(()=>{i===!0&&c(q=>DM(q,P)),o(P)}),await E});R.finished.finally(()=>{_(void 0),x(void 0),f(void 0),g({isTransitioning:!1})}),x(R)}},[d,y,t.window,i,c]),S.useEffect(()=>{y&&d&&r.location.key===d.location.key&&y.resolve()},[y,v,r.location,d]),S.useEffect(()=>{!p.isTransitioning&&k&&(f(k.state),g({isTransitioning:!0,flushSync:!1,currentLocation:k.currentLocation,nextLocation:k.nextLocation}),C(void 0))},[p.isTransitioning,k]);let M=S.useMemo(()=>({createHref:t.createHref,encodeLocation:t.encodeLocation,go:P=>t.navigate(P),push:(P,E,R)=>t.navigate(P,{state:E,preventScrollReset:R?.preventScrollReset}),replace:(P,E,R)=>t.navigate(P,{replace:!0,state:E,preventScrollReset:R?.preventScrollReset})}),[t]),O=t.basename||"/",T=S.useMemo(()=>({router:t,navigator:M,static:!1,basename:O,onError:n}),[t,M,O,n]);return S.createElement(S.Fragment,null,S.createElement(Wc.Provider,{value:T},S.createElement(Vm.Provider,{value:r},S.createElement(N3.Provider,{value:N.current},S.createElement(kw.Provider,{value:p},S.createElement(V9,{basename:O,location:r.location,navigationType:r.historyAction,navigator:M,unstable_useTransitions:i},S.createElement(z9,{routes:t.routes,future:t.future,state:r,onError:n})))))),null)}function DM(t,e){return{...t,navigation:e.navigation.state!=="idle"?e.navigation:t.navigation,revalidation:e.revalidation!=="idle"?e.revalidation:t.revalidation,actionData:e.navigation.state!=="submitting"?e.actionData:t.actionData,fetchers:e.fetchers}}var z9=S.memo(K9);function K9({routes:t,future:e,state:n,onError:i}){return P3(t,void 0,n,i,e)}function qf({to:t,replace:e,state:n,relative:i}){Bt(qd(),"<Navigate> may be used only in the context of a <Router> component.");let{static:s}=S.useContext(ia);Wn(!s,"<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.");let{matches:a}=S.useContext(Oa),{pathname:o}=$n(),r=Ri(),c=Ay(t,Cy(a),o,i==="path"),d=JSON.stringify(c);return S.useEffect(()=>{r(JSON.parse(d),{replace:e,state:n,relative:i})},[r,d,i,e,n]),null}function Tw(t){return S9(t.context)}function V9({basename:t="/",children:e=null,location:n,navigationType:i="POP",navigator:s,static:a=!1,unstable_useTransitions:o}){Bt(!qd(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let r=t.replace(/^\/*/,"/"),c=S.useMemo(()=>({basename:r,navigator:s,static:a,unstable_useTransitions:o,future:{}}),[r,s,a,o]);typeof n=="string"&&(n=Oo(n));let{pathname:d="/",search:f="",hash:p="",state:g=null,key:y="default"}=n,_=S.useMemo(()=>{let v=Us(d,r);return v==null?null:{location:{pathname:v,search:f,hash:p,state:g,key:y},navigationType:i}},[r,d,f,p,g,y,i]);return Wn(_!=null,`<Router basename="${r}"> is not able to match the URL "${d}${f}${p}" because it does not start with the basename, so the <Router> won't render anything.`),_==null?null:S.createElement(ia.Provider,{value:c},S.createElement(Hm.Provider,{children:e,value:_}))}var J_="get",Z_="application/x-www-form-urlencoded";function Ty(t){return typeof HTMLElement<"u"&&t instanceof HTMLElement}function H9(t){return Ty(t)&&t.tagName.toLowerCase()==="button"}function W9(t){return Ty(t)&&t.tagName.toLowerCase()==="form"}function G9(t){return Ty(t)&&t.tagName.toLowerCase()==="input"}function $9(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function X9(t,e){return t.button===0&&(!e||e==="_self")&&!$9(t)}function N2(t=""){return new URLSearchParams(typeof t=="string"||Array.isArray(t)||t instanceof URLSearchParams?t:Object.keys(t).reduce((e,n)=>{let i=t[n];return e.concat(Array.isArray(i)?i.map(s=>[n,s]):[[n,i]])},[]))}function Q9(t,e){let n=N2(t);return e&&e.forEach((i,s)=>{n.has(s)||e.getAll(s).forEach(a=>{n.append(s,a)})}),n}var Bg=null;function Y9(){if(Bg===null)try{new FormData(document.createElement("form"),0),Bg=!1}catch{Bg=!0}return Bg}var J9=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Bx(t){return t!=null&&!J9.has(t)?(Wn(!1,`"${t}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${Z_}"`),null):t}function Z9(t,e){let n,i,s,a,o;if(W9(t)){let r=t.getAttribute("action");i=r?Us(r,e):null,n=t.getAttribute("method")||J_,s=Bx(t.getAttribute("enctype"))||Z_,a=new FormData(t)}else if(H9(t)||G9(t)&&(t.type==="submit"||t.type==="image")){let r=t.form;if(r==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let c=t.getAttribute("formaction")||r.getAttribute("action");if(i=c?Us(c,e):null,n=t.getAttribute("formmethod")||r.getAttribute("method")||J_,s=Bx(t.getAttribute("formenctype"))||Bx(r.getAttribute("enctype"))||Z_,a=new FormData(r,t),!Y9()){let{name:d,type:f,value:p}=t;if(f==="image"){let g=d?`${d}.`:"";a.append(`${g}x`,"0"),a.append(`${g}y`,"0")}else d&&a.append(d,p)}}else{if(Ty(t))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');n=J_,i=null,s=Z_,o=t}return a&&s==="text/plain"&&(o=a,a=void 0),{action:i,method:n.toLowerCase(),encType:s,formData:a,body:o}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function Mw(t,e){if(t===!1||t===null||typeof t>"u")throw new Error(e)}function eq(t,e,n,i){let s=typeof t=="string"?new URL(t,typeof window>"u"?"server://singlefetch/":window.location.origin):t;return n?s.pathname.endsWith("/")?s.pathname=`${s.pathname}_.${i}`:s.pathname=`${s.pathname}.${i}`:s.pathname==="/"?s.pathname=`_root.${i}`:e&&Us(s.pathname,e)==="/"?s.pathname=`${e.replace(/\/$/,"")}/_root.${i}`:s.pathname=`${s.pathname.replace(/\/$/,"")}.${i}`,s}async function tq(t,e){if(t.id in e)return e[t.id];try{let n=await import(t.module);return e[t.id]=n,n}catch(n){return console.error(`Error loading route module \`${t.module}\`, reloading page...`),console.error(n),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function nq(t){return t==null?!1:t.href==null?t.rel==="preload"&&typeof t.imageSrcSet=="string"&&typeof t.imageSizes=="string":typeof t.rel=="string"&&typeof t.href=="string"}async function iq(t,e,n){let i=await Promise.all(t.map(async s=>{let a=e.routes[s.route.id];if(a){let o=await tq(a,n);return o.links?o.links():[]}return[]}));return rq(i.flat(1).filter(nq).filter(s=>s.rel==="stylesheet"||s.rel==="preload").map(s=>s.rel==="stylesheet"?{...s,rel:"prefetch",as:"style"}:{...s,rel:"prefetch"}))}function FM(t,e,n,i,s,a){let o=(c,d)=>n[d]?c.route.id!==n[d].route.id:!0,r=(c,d)=>n[d].pathname!==c.pathname||n[d].route.path?.endsWith("*")&&n[d].params["*"]!==c.params["*"];return a==="assets"?e.filter((c,d)=>o(c,d)||r(c,d)):a==="data"?e.filter((c,d)=>{let f=i.routes[c.route.id];if(!f||!f.hasLoader)return!1;if(o(c,d)||r(c,d))return!0;if(c.route.shouldRevalidate){let p=c.route.shouldRevalidate({currentUrl:new URL(s.pathname+s.search+s.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(t,window.origin),nextParams:c.params,defaultShouldRevalidate:!0});if(typeof p=="boolean")return p}return!0}):[]}function sq(t,e,{includeHydrateFallback:n}={}){return aq(t.map(i=>{let s=e.routes[i.route.id];if(!s)return[];let a=[s.module];return s.clientActionModule&&(a=a.concat(s.clientActionModule)),s.clientLoaderModule&&(a=a.concat(s.clientLoaderModule)),n&&s.hydrateFallbackModule&&(a=a.concat(s.hydrateFallbackModule)),s.imports&&(a=a.concat(s.imports)),a}).flat(1))}function aq(t){return[...new Set(t)]}function oq(t){let e={},n=Object.keys(t).sort();for(let i of n)e[i]=t[i];return e}function rq(t,e){let n=new Set;return new Set(e),t.reduce((i,s)=>{let a=JSON.stringify(oq(s));return n.has(a)||(n.add(a),i.push({key:a,link:s})),i},[])}function F3(){let t=S.useContext(Wc);return Mw(t,"You must render this element inside a <DataRouterContext.Provider> element"),t}function lq(){let t=S.useContext(Vm);return Mw(t,"You must render this element inside a <DataRouterStateContext.Provider> element"),t}var Lw=S.createContext(void 0);Lw.displayName="FrameworkContext";function I3(){let t=S.useContext(Lw);return Mw(t,"You must render this element inside a <HydratedRouter> element"),t}function cq(t,e){let n=S.useContext(Lw),[i,s]=S.useState(!1),[a,o]=S.useState(!1),{onFocus:r,onBlur:c,onMouseEnter:d,onMouseLeave:f,onTouchStart:p}=e,g=S.useRef(null);S.useEffect(()=>{if(t==="render"&&o(!0),t==="viewport"){let v=k=>{k.forEach(C=>{o(C.isIntersecting)})},x=new IntersectionObserver(v,{threshold:.5});return g.current&&x.observe(g.current),()=>{x.disconnect()}}},[t]),S.useEffect(()=>{if(i){let v=setTimeout(()=>{o(!0)},100);return()=>{clearTimeout(v)}}},[i]);let y=()=>{s(!0)},_=()=>{s(!1),o(!1)};return n?t!=="intent"?[a,g,{}]:[a,g,{onFocus:Hh(r,y),onBlur:Hh(c,_),onMouseEnter:Hh(d,y),onMouseLeave:Hh(f,_),onTouchStart:Hh(p,y)}]:[!1,g,{}]}function Hh(t,e){return n=>{t&&t(n),n.defaultPrevented||e(n)}}function uq({page:t,...e}){let{router:n}=F3(),i=S.useMemo(()=>hl(n.routes,t,n.basename),[n.routes,t,n.basename]);return i?S.createElement(hq,{page:t,matches:i,...e}):null}function dq(t){let{manifest:e,routeModules:n}=I3(),[i,s]=S.useState([]);return S.useEffect(()=>{let a=!1;return iq(t,e,n).then(o=>{a||s(o)}),()=>{a=!0}},[t,e,n]),i}function hq({page:t,matches:e,...n}){let i=$n(),{future:s,manifest:a,routeModules:o}=I3(),{basename:r}=F3(),{loaderData:c,matches:d}=lq(),f=S.useMemo(()=>FM(t,e,d,a,i,"data"),[t,e,d,a,i]),p=S.useMemo(()=>FM(t,e,d,a,i,"assets"),[t,e,d,a,i]),g=S.useMemo(()=>{if(t===i.pathname+i.search+i.hash)return[];let v=new Set,x=!1;if(e.forEach(C=>{let N=a.routes[C.route.id];!N||!N.hasLoader||(!f.some(L=>L.route.id===C.route.id)&&C.route.id in c&&o[C.route.id]?.shouldRevalidate||N.hasClientLoader?x=!0:v.add(C.route.id))}),v.size===0)return[];let k=eq(t,r,s.unstable_trailingSlashAwareDataRequests,"data");return x&&v.size>0&&k.searchParams.set("_routes",e.filter(C=>v.has(C.route.id)).map(C=>C.route.id).join(",")),[k.pathname+k.search]},[r,s.unstable_trailingSlashAwareDataRequests,c,i,a,f,e,t,o]),y=S.useMemo(()=>sq(p,a),[p,a]),_=dq(p);return S.createElement(S.Fragment,null,g.map(v=>S.createElement("link",{key:v,rel:"prefetch",as:"fetch",href:v,...n})),y.map(v=>S.createElement("link",{key:v,rel:"modulepreload",href:v,...n})),_.map(({key:v,link:x})=>S.createElement("link",{key:v,nonce:n.nonce,...x})))}function fq(...t){return e=>{t.forEach(n=>{typeof n=="function"?n(e):n!=null&&(n.current=e)})}}var mq=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{mq&&(window.__reactRouterVersion="7.12.0")}catch{}function pq(t,e){return K7({basename:e?.basename,getContext:e?.getContext,future:e?.future,history:a7({window:e?.window}),hydrationData:gq(),routes:t,mapRouteProperties:I9,hydrationRouteProperties:B9,dataStrategy:e?.dataStrategy,patchRoutesOnNavigation:e?.patchRoutesOnNavigation,window:e?.window,unstable_instrumentations:e?.unstable_instrumentations}).initialize()}function gq(){let t=window?.__staticRouterHydrationData;return t&&t.errors&&(t={...t,errors:_q(t.errors)}),t}function _q(t){if(!t)return null;let e=Object.entries(t),n={};for(let[i,s]of e)if(s&&s.__type==="RouteErrorResponse")n[i]=new zm(s.status,s.statusText,s.data,s.internal===!0);else if(s&&s.__type==="Error"){if(s.__subType){let a=window[s.__subType];if(typeof a=="function")try{let o=new a(s.message);o.stack="",n[i]=o}catch{}}if(n[i]==null){let a=new Error(s.message);a.stack="",n[i]=a}}else n[i]=s;return n}var B3=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,C0=S.forwardRef(function({onClick:e,discover:n="render",prefetch:i="none",relative:s,reloadDocument:a,replace:o,state:r,target:c,to:d,preventScrollReset:f,viewTransition:p,unstable_defaultShouldRevalidate:g,...y},_){let{basename:v,unstable_useTransitions:x}=S.useContext(ia),k=typeof d=="string"&&B3.test(d),C=m3(d,v);d=C.to;let N=v9(d,{relative:s}),[L,M,O]=cq(i,y),T=vq(d,{replace:o,state:r,target:c,preventScrollReset:f,relative:s,viewTransition:p,unstable_defaultShouldRevalidate:g,unstable_useTransitions:x});function P(R){e&&e(R),R.defaultPrevented||T(R)}let E=S.createElement("a",{...y,...O,href:C.absoluteURL||N,onClick:C.isExternal||a?e:P,ref:fq(_,M),target:c,"data-discover":!k&&n==="render"?"true":void 0});return L&&!k?S.createElement(S.Fragment,null,E,S.createElement(uq,{page:N})):E});C0.displayName="Link";var U3=S.forwardRef(function({"aria-current":e="page",caseSensitive:n=!1,className:i="",end:s=!1,style:a,to:o,viewTransition:r,children:c,...d},f){let p=Gm(o,{relative:d.relative}),g=$n(),y=S.useContext(Vm),{navigator:_,basename:v}=S.useContext(ia),x=y!=null&&Cq(p)&&r===!0,k=_.encodeLocation?_.encodeLocation(p).pathname:p.pathname,C=g.pathname,N=y&&y.navigation&&y.navigation.location?y.navigation.location.pathname:null;n||(C=C.toLowerCase(),N=N?N.toLowerCase():null,k=k.toLowerCase()),N&&v&&(N=Us(N,v)||N);const L=k!=="/"&&k.endsWith("/")?k.length-1:k.length;let M=C===k||!s&&C.startsWith(k)&&C.charAt(L)==="/",O=N!=null&&(N===k||!s&&N.startsWith(k)&&N.charAt(k.length)==="/"),T={isActive:M,isPending:O,isTransitioning:x},P=M?e:void 0,E;typeof i=="function"?E=i(T):E=[i,M?"active":null,O?"pending":null,x?"transitioning":null].filter(Boolean).join(" ");let R=typeof a=="function"?a(T):a;return S.createElement(C0,{...d,"aria-current":P,className:E,ref:f,style:R,to:o,viewTransition:r},typeof c=="function"?c(T):c)});U3.displayName="NavLink";var yq=S.forwardRef(({discover:t="render",fetcherKey:e,navigate:n,reloadDocument:i,replace:s,state:a,method:o=J_,action:r,onSubmit:c,relative:d,preventScrollReset:f,viewTransition:p,unstable_defaultShouldRevalidate:g,...y},_)=>{let{unstable_useTransitions:v}=S.useContext(ia),x=wq(),k=kq(r,{relative:d}),C=o.toLowerCase()==="get"?"get":"post",N=typeof r=="string"&&B3.test(r),L=M=>{if(c&&c(M),M.defaultPrevented)return;M.preventDefault();let O=M.nativeEvent.submitter,T=O?.getAttribute("formmethod")||o,P=()=>x(O||M.currentTarget,{fetcherKey:e,method:T,navigate:n,replace:s,state:a,relative:d,preventScrollReset:f,viewTransition:p,unstable_defaultShouldRevalidate:g});v&&n!==!1?S.startTransition(()=>P()):P()};return S.createElement("form",{ref:_,method:C,action:k,onSubmit:i?c:L,...y,"data-discover":!N&&t==="render"?"true":void 0})});yq.displayName="Form";function bq(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function q3(t){let e=S.useContext(Wc);return Bt(e,bq(t)),e}function vq(t,{target:e,replace:n,state:i,preventScrollReset:s,relative:a,viewTransition:o,unstable_defaultShouldRevalidate:r,unstable_useTransitions:c}={}){let d=Ri(),f=$n(),p=Gm(t,{relative:a});return S.useCallback(g=>{if(X9(g,e)){g.preventDefault();let y=n!==void 0?n:No(f)===No(p),_=()=>d(t,{replace:y,state:i,preventScrollReset:s,relative:a,viewTransition:o,unstable_defaultShouldRevalidate:r});c?S.startTransition(()=>_()):_()}},[f,d,p,n,i,e,t,s,a,o,r,c])}function z3(t){Wn(typeof URLSearchParams<"u","You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let e=S.useRef(N2(t)),n=S.useRef(!1),i=$n(),s=S.useMemo(()=>Q9(i.search,n.current?null:e.current),[i.search]),a=Ri(),o=S.useCallback((r,c)=>{const d=N2(typeof r=="function"?r(new URLSearchParams(s)):r);n.current=!0,a("?"+d,c)},[a,s]);return[s,o]}var xq=0,Sq=()=>`__${String(++xq)}__`;function wq(){let{router:t}=q3("useSubmit"),{basename:e}=S.useContext(ia),n=L9(),i=t.fetch,s=t.navigate;return S.useCallback(async(a,o={})=>{let{action:r,method:c,encType:d,formData:f,body:p}=Z9(a,e);if(o.navigate===!1){let g=o.fetcherKey||Sq();await i(g,n,o.action||r,{unstable_defaultShouldRevalidate:o.unstable_defaultShouldRevalidate,preventScrollReset:o.preventScrollReset,formData:f,body:p,formMethod:o.method||c,formEncType:o.encType||d,flushSync:o.flushSync})}else await s(o.action||r,{unstable_defaultShouldRevalidate:o.unstable_defaultShouldRevalidate,preventScrollReset:o.preventScrollReset,formData:f,body:p,formMethod:o.method||c,formEncType:o.encType||d,replace:o.replace,state:o.state,fromRouteId:n,flushSync:o.flushSync,viewTransition:o.viewTransition})},[i,s,e,n])}function kq(t,{relative:e}={}){let{basename:n}=S.useContext(ia),i=S.useContext(Oa);Bt(i,"useFormAction must be used inside a RouteContext");let[s]=i.matches.slice(-1),a={...Gm(t||".",{relative:e})},o=$n();if(t==null){a.search=o.search;let r=new URLSearchParams(a.search),c=r.getAll("index");if(c.some(f=>f==="")){r.delete("index"),c.filter(p=>p).forEach(p=>r.append("index",p));let f=r.toString();a.search=f?`?${f}`:""}}return(!t||t===".")&&s.route.index&&(a.search=a.search?a.search.replace(/^\?/,"?index&"):"?index"),n!=="/"&&(a.pathname=a.pathname==="/"?n:Co([n,a.pathname])),No(a)}function Cq(t,{relative:e}={}){let n=S.useContext(kw);Bt(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:i}=q3("useViewTransitionState"),s=Gm(t,{relative:e});if(!n.isTransitioning)return!1;let a=Us(n.currentLocation.pathname,i)||n.currentLocation.pathname,o=Us(n.nextLocation.pathname,i)||n.nextLocation.pathname;return k0(s.pathname,o)!=null||k0(s.pathname,a)!=null}var Po=o3();function Aq(t){return S.createElement(q9,{flushSync:Po.flushSync,...t})}const Nt=t=>typeof t=="string",Wh=()=>{let t,e;const n=new Promise((i,s)=>{t=i,e=s});return n.resolve=t,n.reject=e,n},IM=t=>t==null?"":""+t,Nq=(t,e,n)=>{t.forEach(i=>{e[i]&&(n[i]=e[i])})},Tq=/###/g,BM=t=>t&&t.indexOf("###")>-1?t.replace(Tq,"."):t,UM=t=>!t||Nt(t),zf=(t,e,n)=>{const i=Nt(e)?e.split("."):e;let s=0;for(;s<i.length-1;){if(UM(t))return{};const a=BM(i[s]);!t[a]&&n&&(t[a]=new n),Object.prototype.hasOwnProperty.call(t,a)?t=t[a]:t={},++s}return UM(t)?{}:{obj:t,k:BM(i[s])}},qM=(t,e,n)=>{const{obj:i,k:s}=zf(t,e,Object);if(i!==void 0||e.length===1){i[s]=n;return}let a=e[e.length-1],o=e.slice(0,e.length-1),r=zf(t,o,Object);for(;r.obj===void 0&&o.length;)a=`${o[o.length-1]}.${a}`,o=o.slice(0,o.length-1),r=zf(t,o,Object),r?.obj&&typeof r.obj[`${r.k}.${a}`]<"u"&&(r.obj=void 0);r.obj[`${r.k}.${a}`]=n},Mq=(t,e,n,i)=>{const{obj:s,k:a}=zf(t,e,Object);s[a]=s[a]||[],s[a].push(n)},A0=(t,e)=>{const{obj:n,k:i}=zf(t,e);if(n&&Object.prototype.hasOwnProperty.call(n,i))return n[i]},Lq=(t,e,n)=>{const i=A0(t,n);return i!==void 0?i:A0(e,n)},K3=(t,e,n)=>{for(const i in e)i!=="__proto__"&&i!=="constructor"&&(i in t?Nt(t[i])||t[i]instanceof String||Nt(e[i])||e[i]instanceof String?n&&(t[i]=e[i]):K3(t[i],e[i],n):t[i]=e[i]);return t},Eu=t=>t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var Oq={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#x2F;"};const Pq=t=>Nt(t)?t.replace(/[&<>"'\/]/g,e=>Oq[e]):t;class Eq{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){const n=this.regExpMap.get(e);if(n!==void 0)return n;const i=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,i),this.regExpQueue.push(e),i}}const jq=[" ",",","?","!",";"],Rq=new Eq(20),Dq=(t,e,n)=>{e=e||"",n=n||"";const i=jq.filter(o=>e.indexOf(o)<0&&n.indexOf(o)<0);if(i.length===0)return!0;const s=Rq.getRegExp(`(${i.map(o=>o==="?"?"\\?":o).join("|")})`);let a=!s.test(t);if(!a){const o=t.indexOf(n);o>0&&!s.test(t.substring(0,o))&&(a=!0)}return a},T2=(t,e,n=".")=>{if(!t)return;if(t[e])return Object.prototype.hasOwnProperty.call(t,e)?t[e]:void 0;const i=e.split(n);let s=t;for(let a=0;a<i.length;){if(!s||typeof s!="object")return;let o,r="";for(let c=a;c<i.length;++c)if(c!==a&&(r+=n),r+=i[c],o=s[r],o!==void 0){if(["string","number","boolean"].indexOf(typeof o)>-1&&c<i.length-1)continue;a+=c-a+1;break}s=o}return s},fm=t=>t?.replace("_","-"),Fq={type:"logger",log(t){this.output("log",t)},warn(t){this.output("warn",t)},error(t){this.output("error",t)},output(t,e){console?.[t]?.apply?.(console,e)}};class N0{constructor(e,n={}){this.init(e,n)}init(e,n={}){this.prefix=n.prefix||"i18next:",this.logger=e||Fq,this.options=n,this.debug=n.debug}log(...e){return this.forward(e,"log","",!0)}warn(...e){return this.forward(e,"warn","",!0)}error(...e){return this.forward(e,"error","")}deprecate(...e){return this.forward(e,"warn","WARNING DEPRECATED: ",!0)}forward(e,n,i,s){return s&&!this.debug?null:(Nt(e[0])&&(e[0]=`${i}${this.prefix} ${e[0]}`),this.logger[n](e))}create(e){return new N0(this.logger,{prefix:`${this.prefix}:${e}:`,...this.options})}clone(e){return e=e||this.options,e.prefix=e.prefix||this.prefix,new N0(this.logger,e)}}var So=new N0;class My{constructor(){this.observers={}}on(e,n){return e.split(" ").forEach(i=>{this.observers[i]||(this.observers[i]=new Map);const s=this.observers[i].get(n)||0;this.observers[i].set(n,s+1)}),this}off(e,n){if(this.observers[e]){if(!n){delete this.observers[e];return}this.observers[e].delete(n)}}emit(e,...n){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([s,a])=>{for(let o=0;o<a;o++)s(...n)}),this.observers["*"]&&Array.from(this.observers["*"].entries()).forEach(([s,a])=>{for(let o=0;o<a;o++)s.apply(s,[e,...n])})}}class zM extends My{constructor(e,n={ns:["translation"],defaultNS:"translation"}){super(),this.data=e||{},this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(e){this.options.ns.indexOf(e)<0&&this.options.ns.push(e)}removeNamespaces(e){const n=this.options.ns.indexOf(e);n>-1&&this.options.ns.splice(n,1)}getResource(e,n,i,s={}){const a=s.keySeparator!==void 0?s.keySeparator:this.options.keySeparator,o=s.ignoreJSONStructure!==void 0?s.ignoreJSONStructure:this.options.ignoreJSONStructure;let r;e.indexOf(".")>-1?r=e.split("."):(r=[e,n],i&&(Array.isArray(i)?r.push(...i):Nt(i)&&a?r.push(...i.split(a)):r.push(i)));const c=A0(this.data,r);return!c&&!n&&!i&&e.indexOf(".")>-1&&(e=r[0],n=r[1],i=r.slice(2).join(".")),c||!o||!Nt(i)?c:T2(this.data?.[e]?.[n],i,a)}addResource(e,n,i,s,a={silent:!1}){const o=a.keySeparator!==void 0?a.keySeparator:this.options.keySeparator;let r=[e,n];i&&(r=r.concat(o?i.split(o):i)),e.indexOf(".")>-1&&(r=e.split("."),s=n,n=r[1]),this.addNamespaces(n),qM(this.data,r,s),a.silent||this.emit("added",e,n,i,s)}addResources(e,n,i,s={silent:!1}){for(const a in i)(Nt(i[a])||Array.isArray(i[a]))&&this.addResource(e,n,a,i[a],{silent:!0});s.silent||this.emit("added",e,n,i)}addResourceBundle(e,n,i,s,a,o={silent:!1,skipCopy:!1}){let r=[e,n];e.indexOf(".")>-1&&(r=e.split("."),s=i,i=n,n=r[1]),this.addNamespaces(n);let c=A0(this.data,r)||{};o.skipCopy||(i=JSON.parse(JSON.stringify(i))),s?K3(c,i,a):c={...c,...i},qM(this.data,r,c),o.silent||this.emit("added",e,n,i)}removeResourceBundle(e,n){this.hasResourceBundle(e,n)&&delete this.data[e][n],this.removeNamespaces(n),this.emit("removed",e,n)}hasResourceBundle(e,n){return this.getResource(e,n)!==void 0}getResourceBundle(e,n){return n||(n=this.options.defaultNS),this.getResource(e,n)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){const n=this.getDataByLanguage(e);return!!(n&&Object.keys(n)||[]).find(s=>n[s]&&Object.keys(n[s]).length>0)}toJSON(){return this.data}}var V3={processors:{},addPostProcessor(t){this.processors[t.name]=t},handle(t,e,n,i,s){return t.forEach(a=>{e=this.processors[a]?.process(e,n,i,s)??e}),e}};const H3=Symbol("i18next/PATH_KEY");function Iq(){const t=[],e=Object.create(null);let n;return e.get=(i,s)=>(n?.revoke?.(),s===H3?t:(t.push(s),n=Proxy.revocable(i,e),n.proxy)),Proxy.revocable(Object.create(null),e).proxy}function T0(t,e){const{[H3]:n}=t(Iq());return n.join(e?.keySeparator??".")}const KM={},Ux=t=>!Nt(t)&&typeof t!="boolean"&&typeof t!="number";class M0 extends My{constructor(e,n={}){super(),Nq(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],e,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=So.create("translator")}changeLanguage(e){e&&(this.language=e)}exists(e,n={interpolation:{}}){const i={...n};if(e==null)return!1;const s=this.resolve(e,i);if(s?.res===void 0)return!1;const a=Ux(s.res);return!(i.returnObjects===!1&&a)}extractFromKey(e,n){let i=n.nsSeparator!==void 0?n.nsSeparator:this.options.nsSeparator;i===void 0&&(i=":");const s=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator;let a=n.ns||this.options.defaultNS||[];const o=i&&e.indexOf(i)>-1,r=!this.options.userDefinedKeySeparator&&!n.keySeparator&&!this.options.userDefinedNsSeparator&&!n.nsSeparator&&!Dq(e,i,s);if(o&&!r){const c=e.match(this.interpolator.nestingRegexp);if(c&&c.length>0)return{key:e,namespaces:Nt(a)?[a]:a};const d=e.split(i);(i!==s||i===s&&this.options.ns.indexOf(d[0])>-1)&&(a=d.shift()),e=d.join(s)}return{key:e,namespaces:Nt(a)?[a]:a}}translate(e,n,i){let s=typeof n=="object"?{...n}:n;if(typeof s!="object"&&this.options.overloadTranslationOptionHandler&&(s=this.options.overloadTranslationOptionHandler(arguments)),typeof s=="object"&&(s={...s}),s||(s={}),e==null)return"";typeof e=="function"&&(e=T0(e,{...this.options,...s})),Array.isArray(e)||(e=[String(e)]);const a=s.returnDetails!==void 0?s.returnDetails:this.options.returnDetails,o=s.keySeparator!==void 0?s.keySeparator:this.options.keySeparator,{key:r,namespaces:c}=this.extractFromKey(e[e.length-1],s),d=c[c.length-1];let f=s.nsSeparator!==void 0?s.nsSeparator:this.options.nsSeparator;f===void 0&&(f=":");const p=s.lng||this.language,g=s.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(p?.toLowerCase()==="cimode")return g?a?{res:`${d}${f}${r}`,usedKey:r,exactUsedKey:r,usedLng:p,usedNS:d,usedParams:this.getUsedParamsDetails(s)}:`${d}${f}${r}`:a?{res:r,usedKey:r,exactUsedKey:r,usedLng:p,usedNS:d,usedParams:this.getUsedParamsDetails(s)}:r;const y=this.resolve(e,s);let _=y?.res;const v=y?.usedKey||r,x=y?.exactUsedKey||r,k=["[object Number]","[object Function]","[object RegExp]"],C=s.joinArrays!==void 0?s.joinArrays:this.options.joinArrays,N=!this.i18nFormat||this.i18nFormat.handleAsObject,L=s.count!==void 0&&!Nt(s.count),M=M0.hasDefaultValue(s),O=L?this.pluralResolver.getSuffix(p,s.count,s):"",T=s.ordinal&&L?this.pluralResolver.getSuffix(p,s.count,{ordinal:!1}):"",P=L&&!s.ordinal&&s.count===0,E=P&&s[`defaultValue${this.options.pluralSeparator}zero`]||s[`defaultValue${O}`]||s[`defaultValue${T}`]||s.defaultValue;let R=_;N&&!_&&M&&(R=E);const q=Ux(R),I=Object.prototype.toString.apply(R);if(N&&R&&q&&k.indexOf(I)<0&&!(Nt(C)&&Array.isArray(R))){if(!s.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const Y=this.options.returnedObjectHandler?this.options.returnedObjectHandler(v,R,{...s,ns:c}):`key '${r} (${this.language})' returned an object instead of string.`;return a?(y.res=Y,y.usedParams=this.getUsedParamsDetails(s),y):Y}if(o){const Y=Array.isArray(R),X=Y?[]:{},K=Y?x:v;for(const B in R)if(Object.prototype.hasOwnProperty.call(R,B)){const H=`${K}${o}${B}`;M&&!_?X[B]=this.translate(H,{...s,defaultValue:Ux(E)?E[B]:void 0,joinArrays:!1,ns:c}):X[B]=this.translate(H,{...s,joinArrays:!1,ns:c}),X[B]===H&&(X[B]=R[B])}_=X}}else if(N&&Nt(C)&&Array.isArray(_))_=_.join(C),_&&(_=this.extendTranslation(_,e,s,i));else{let Y=!1,X=!1;!this.isValidLookup(_)&&M&&(Y=!0,_=E),this.isValidLookup(_)||(X=!0,_=r);const B=(s.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&X?void 0:_,H=M&&E!==_&&this.options.updateMissing;if(X||Y||H){if(this.logger.log(H?"updateKey":"missingKey",p,d,r,H?E:_),o){const D=this.resolve(r,{...s,keySeparator:!1});D&&D.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let z=[];const Q=this.languageUtils.getFallbackCodes(this.options.fallbackLng,s.lng||this.language);if(this.options.saveMissingTo==="fallback"&&Q&&Q[0])for(let D=0;D<Q.length;D++)z.push(Q[D]);else this.options.saveMissingTo==="all"?z=this.languageUtils.toResolveHierarchy(s.lng||this.language):z.push(s.lng||this.language);const W=(D,U,$)=>{const te=M&&$!==_?$:B;this.options.missingKeyHandler?this.options.missingKeyHandler(D,d,U,te,H,s):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(D,d,U,te,H,s),this.emit("missingKey",D,d,U,_)};this.options.saveMissing&&(this.options.saveMissingPlurals&&L?z.forEach(D=>{const U=this.pluralResolver.getSuffixes(D,s);P&&s[`defaultValue${this.options.pluralSeparator}zero`]&&U.indexOf(`${this.options.pluralSeparator}zero`)<0&&U.push(`${this.options.pluralSeparator}zero`),U.forEach($=>{W([D],r+$,s[`defaultValue${$}`]||E)})}):W(z,r,E))}_=this.extendTranslation(_,e,s,y,i),X&&_===r&&this.options.appendNamespaceToMissingKey&&(_=`${d}${f}${r}`),(X||Y)&&this.options.parseMissingKeyHandler&&(_=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${d}${f}${r}`:r,Y?_:void 0,s))}return a?(y.res=_,y.usedParams=this.getUsedParamsDetails(s),y):_}extendTranslation(e,n,i,s,a){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...i},i.lng||this.language||s.usedLng,s.usedNS,s.usedKey,{resolved:s});else if(!i.skipInterpolation){i.interpolation&&this.interpolator.init({...i,interpolation:{...this.options.interpolation,...i.interpolation}});const c=Nt(e)&&(i?.interpolation?.skipOnVariables!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let d;if(c){const p=e.match(this.interpolator.nestingRegexp);d=p&&p.length}let f=i.replace&&!Nt(i.replace)?i.replace:i;if(this.options.interpolation.defaultVariables&&(f={...this.options.interpolation.defaultVariables,...f}),e=this.interpolator.interpolate(e,f,i.lng||this.language||s.usedLng,i),c){const p=e.match(this.interpolator.nestingRegexp),g=p&&p.length;d<g&&(i.nest=!1)}!i.lng&&s&&s.res&&(i.lng=this.language||s.usedLng),i.nest!==!1&&(e=this.interpolator.nest(e,(...p)=>a?.[0]===p[0]&&!i.context?(this.logger.warn(`It seems you are nesting recursively key: ${p[0]} in key: ${n[0]}`),null):this.translate(...p,n),i)),i.interpolation&&this.interpolator.reset()}const o=i.postProcess||this.options.postProcess,r=Nt(o)?[o]:o;return e!=null&&r?.length&&i.applyPostProcessor!==!1&&(e=V3.handle(r,e,n,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...s,usedParams:this.getUsedParamsDetails(i)},...i}:i,this)),e}resolve(e,n={}){let i,s,a,o,r;return Nt(e)&&(e=[e]),e.forEach(c=>{if(this.isValidLookup(i))return;const d=this.extractFromKey(c,n),f=d.key;s=f;let p=d.namespaces;this.options.fallbackNS&&(p=p.concat(this.options.fallbackNS));const g=n.count!==void 0&&!Nt(n.count),y=g&&!n.ordinal&&n.count===0,_=n.context!==void 0&&(Nt(n.context)||typeof n.context=="number")&&n.context!=="",v=n.lngs?n.lngs:this.languageUtils.toResolveHierarchy(n.lng||this.language,n.fallbackLng);p.forEach(x=>{this.isValidLookup(i)||(r=x,!KM[`${v[0]}-${x}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(r)&&(KM[`${v[0]}-${x}`]=!0,this.logger.warn(`key "${s}" for languages "${v.join(", ")}" won't get resolved as namespace "${r}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),v.forEach(k=>{if(this.isValidLookup(i))return;o=k;const C=[f];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(C,f,k,x,n);else{let L;g&&(L=this.pluralResolver.getSuffix(k,n.count,n));const M=`${this.options.pluralSeparator}zero`,O=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(g&&(n.ordinal&&L.indexOf(O)===0&&C.push(f+L.replace(O,this.options.pluralSeparator)),C.push(f+L),y&&C.push(f+M)),_){const T=`${f}${this.options.contextSeparator||"_"}${n.context}`;C.push(T),g&&(n.ordinal&&L.indexOf(O)===0&&C.push(T+L.replace(O,this.options.pluralSeparator)),C.push(T+L),y&&C.push(T+M))}}let N;for(;N=C.pop();)this.isValidLookup(i)||(a=N,i=this.getResource(k,x,N,n))}))})}),{res:i,usedKey:s,exactUsedKey:a,usedLng:o,usedNS:r}}isValidLookup(e){return e!==void 0&&!(!this.options.returnNull&&e===null)&&!(!this.options.returnEmptyString&&e==="")}getResource(e,n,i,s={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,n,i,s):this.resourceStore.getResource(e,n,i,s)}getUsedParamsDetails(e={}){const n=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],i=e.replace&&!Nt(e.replace);let s=i?e.replace:e;if(i&&typeof e.count<"u"&&(s.count=e.count),this.options.interpolation.defaultVariables&&(s={...this.options.interpolation.defaultVariables,...s}),!i){s={...s};for(const a of n)delete s[a]}return s}static hasDefaultValue(e){const n="defaultValue";for(const i in e)if(Object.prototype.hasOwnProperty.call(e,i)&&n===i.substring(0,n.length)&&e[i]!==void 0)return!0;return!1}}class VM{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=So.create("languageUtils")}getScriptPartFromCode(e){if(e=fm(e),!e||e.indexOf("-")<0)return null;const n=e.split("-");return n.length===2||(n.pop(),n[n.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(n.join("-"))}getLanguagePartFromCode(e){if(e=fm(e),!e||e.indexOf("-")<0)return e;const n=e.split("-");return this.formatLanguageCode(n[0])}formatLanguageCode(e){if(Nt(e)&&e.indexOf("-")>-1){let n;try{n=Intl.getCanonicalLocales(e)[0]}catch{}return n&&this.options.lowerCaseLng&&(n=n.toLowerCase()),n||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}getBestMatchFromCodes(e){if(!e)return null;let n;return e.forEach(i=>{if(n)return;const s=this.formatLanguageCode(i);(!this.options.supportedLngs||this.isSupportedCode(s))&&(n=s)}),!n&&this.options.supportedLngs&&e.forEach(i=>{if(n)return;const s=this.getScriptPartFromCode(i);if(this.isSupportedCode(s))return n=s;const a=this.getLanguagePartFromCode(i);if(this.isSupportedCode(a))return n=a;n=this.options.supportedLngs.find(o=>{if(o===a)return o;if(!(o.indexOf("-")<0&&a.indexOf("-")<0)&&(o.indexOf("-")>0&&a.indexOf("-")<0&&o.substring(0,o.indexOf("-"))===a||o.indexOf(a)===0&&a.length>1))return o})}),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n}getFallbackCodes(e,n){if(!e)return[];if(typeof e=="function"&&(e=e(n)),Nt(e)&&(e=[e]),Array.isArray(e))return e;if(!n)return e.default||[];let i=e[n];return i||(i=e[this.getScriptPartFromCode(n)]),i||(i=e[this.formatLanguageCode(n)]),i||(i=e[this.getLanguagePartFromCode(n)]),i||(i=e.default),i||[]}toResolveHierarchy(e,n){const i=this.getFallbackCodes((n===!1?[]:n)||this.options.fallbackLng||[],e),s=[],a=o=>{o&&(this.isSupportedCode(o)?s.push(o):this.logger.warn(`rejecting language code not found in supportedLngs: ${o}`))};return Nt(e)&&(e.indexOf("-")>-1||e.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&a(this.formatLanguageCode(e)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&a(this.getScriptPartFromCode(e)),this.options.load!=="currentOnly"&&a(this.getLanguagePartFromCode(e))):Nt(e)&&a(this.formatLanguageCode(e)),i.forEach(o=>{s.indexOf(o)<0&&a(this.formatLanguageCode(o))}),s}}const HM={zero:0,one:1,two:2,few:3,many:4,other:5},WM={select:t=>t===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class Bq{constructor(e,n={}){this.languageUtils=e,this.options=n,this.logger=So.create("pluralResolver"),this.pluralRulesCache={}}addRule(e,n){this.rules[e]=n}clearCache(){this.pluralRulesCache={}}getRule(e,n={}){const i=fm(e==="dev"?"en":e),s=n.ordinal?"ordinal":"cardinal",a=JSON.stringify({cleanedCode:i,type:s});if(a in this.pluralRulesCache)return this.pluralRulesCache[a];let o;try{o=new Intl.PluralRules(i,{type:s})}catch{if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),WM;if(!e.match(/-|_/))return WM;const c=this.languageUtils.getLanguagePartFromCode(e);o=this.getRule(c,n)}return this.pluralRulesCache[a]=o,o}needsPlural(e,n={}){let i=this.getRule(e,n);return i||(i=this.getRule("dev",n)),i?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,n,i={}){return this.getSuffixes(e,i).map(s=>`${n}${s}`)}getSuffixes(e,n={}){let i=this.getRule(e,n);return i||(i=this.getRule("dev",n)),i?i.resolvedOptions().pluralCategories.sort((s,a)=>HM[s]-HM[a]).map(s=>`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${s}`):[]}getSuffix(e,n,i={}){const s=this.getRule(e,i);return s?`${this.options.prepend}${i.ordinal?`ordinal${this.options.prepend}`:""}${s.select(n)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix("dev",n,i))}}const GM=(t,e,n,i=".",s=!0)=>{let a=Lq(t,e,n);return!a&&s&&Nt(n)&&(a=T2(t,n,i),a===void 0&&(a=T2(e,n,i))),a},qx=t=>t.replace(/\$/g,"$$$$");class $M{constructor(e={}){this.logger=So.create("interpolator"),this.options=e,this.format=e?.interpolation?.format||(n=>n),this.init(e)}init(e={}){e.interpolation||(e.interpolation={escapeValue:!0});const{escape:n,escapeValue:i,useRawValueToEscape:s,prefix:a,prefixEscaped:o,suffix:r,suffixEscaped:c,formatSeparator:d,unescapeSuffix:f,unescapePrefix:p,nestingPrefix:g,nestingPrefixEscaped:y,nestingSuffix:_,nestingSuffixEscaped:v,nestingOptionsSeparator:x,maxReplaces:k,alwaysFormat:C}=e.interpolation;this.escape=n!==void 0?n:Pq,this.escapeValue=i!==void 0?i:!0,this.useRawValueToEscape=s!==void 0?s:!1,this.prefix=a?Eu(a):o||"{{",this.suffix=r?Eu(r):c||"}}",this.formatSeparator=d||",",this.unescapePrefix=f?"":p||"-",this.unescapeSuffix=this.unescapePrefix?"":f||"",this.nestingPrefix=g?Eu(g):y||Eu("$t("),this.nestingSuffix=_?Eu(_):v||Eu(")"),this.nestingOptionsSeparator=x||",",this.maxReplaces=k||1e3,this.alwaysFormat=C!==void 0?C:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const e=(n,i)=>n?.source===i?(n.lastIndex=0,n):new RegExp(i,"g");this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,n,i,s){let a,o,r;const c=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},d=y=>{if(y.indexOf(this.formatSeparator)<0){const k=GM(n,c,y,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(k,void 0,i,{...s,...n,interpolationkey:y}):k}const _=y.split(this.formatSeparator),v=_.shift().trim(),x=_.join(this.formatSeparator).trim();return this.format(GM(n,c,v,this.options.keySeparator,this.options.ignoreJSONStructure),x,i,{...s,...n,interpolationkey:v})};this.resetRegExp();const f=s?.missingInterpolationHandler||this.options.missingInterpolationHandler,p=s?.interpolation?.skipOnVariables!==void 0?s.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:y=>qx(y)},{regex:this.regexp,safeValue:y=>this.escapeValue?qx(this.escape(y)):qx(y)}].forEach(y=>{for(r=0;a=y.regex.exec(e);){const _=a[1].trim();if(o=d(_),o===void 0)if(typeof f=="function"){const x=f(e,a,s);o=Nt(x)?x:""}else if(s&&Object.prototype.hasOwnProperty.call(s,_))o="";else if(p){o=a[0];continue}else this.logger.warn(`missed to pass in variable ${_} for interpolating ${e}`),o="";else!Nt(o)&&!this.useRawValueToEscape&&(o=IM(o));const v=y.safeValue(o);if(e=e.replace(a[0],v),p?(y.regex.lastIndex+=o.length,y.regex.lastIndex-=a[0].length):y.regex.lastIndex=0,r++,r>=this.maxReplaces)break}}),e}nest(e,n,i={}){let s,a,o;const r=(c,d)=>{const f=this.nestingOptionsSeparator;if(c.indexOf(f)<0)return c;const p=c.split(new RegExp(`${f}[ ]*{`));let g=`{${p[1]}`;c=p[0],g=this.interpolate(g,o);const y=g.match(/'/g),_=g.match(/"/g);((y?.length??0)%2===0&&!_||_.length%2!==0)&&(g=g.replace(/'/g,'"'));try{o=JSON.parse(g),d&&(o={...d,...o})}catch(v){return this.logger.warn(`failed parsing options string in nesting for key ${c}`,v),`${c}${f}${g}`}return o.defaultValue&&o.defaultValue.indexOf(this.prefix)>-1&&delete o.defaultValue,c};for(;s=this.nestingRegexp.exec(e);){let c=[];o={...i},o=o.replace&&!Nt(o.replace)?o.replace:o,o.applyPostProcessor=!1,delete o.defaultValue;const d=/{.*}/.test(s[1])?s[1].lastIndexOf("}")+1:s[1].indexOf(this.formatSeparator);if(d!==-1&&(c=s[1].slice(d).split(this.formatSeparator).map(f=>f.trim()).filter(Boolean),s[1]=s[1].slice(0,d)),a=n(r.call(this,s[1].trim(),o),o),a&&s[0]===e&&!Nt(a))return a;Nt(a)||(a=IM(a)),a||(this.logger.warn(`missed to resolve ${s[1]} for nesting ${e}`),a=""),c.length&&(a=c.reduce((f,p)=>this.format(f,p,i.lng,{...i,interpolationkey:s[1].trim()}),a.trim())),e=e.replace(s[0],a),this.regexp.lastIndex=0}return e}}const Uq=t=>{let e=t.toLowerCase().trim();const n={};if(t.indexOf("(")>-1){const i=t.split("(");e=i[0].toLowerCase().trim();const s=i[1].substring(0,i[1].length-1);e==="currency"&&s.indexOf(":")<0?n.currency||(n.currency=s.trim()):e==="relativetime"&&s.indexOf(":")<0?n.range||(n.range=s.trim()):s.split(";").forEach(o=>{if(o){const[r,...c]=o.split(":"),d=c.join(":").trim().replace(/^'+|'+$/g,""),f=r.trim();n[f]||(n[f]=d),d==="false"&&(n[f]=!1),d==="true"&&(n[f]=!0),isNaN(d)||(n[f]=parseInt(d,10))}})}return{formatName:e,formatOptions:n}},XM=t=>{const e={};return(n,i,s)=>{let a=s;s&&s.interpolationkey&&s.formatParams&&s.formatParams[s.interpolationkey]&&s[s.interpolationkey]&&(a={...a,[s.interpolationkey]:void 0});const o=i+JSON.stringify(a);let r=e[o];return r||(r=t(fm(i),s),e[o]=r),r(n)}},qq=t=>(e,n,i)=>t(fm(n),i)(e);class zq{constructor(e={}){this.logger=So.create("formatter"),this.options=e,this.init(e)}init(e,n={interpolation:{}}){this.formatSeparator=n.interpolation.formatSeparator||",";const i=n.cacheInBuiltFormats?XM:qq;this.formats={number:i((s,a)=>{const o=new Intl.NumberFormat(s,{...a});return r=>o.format(r)}),currency:i((s,a)=>{const o=new Intl.NumberFormat(s,{...a,style:"currency"});return r=>o.format(r)}),datetime:i((s,a)=>{const o=new Intl.DateTimeFormat(s,{...a});return r=>o.format(r)}),relativetime:i((s,a)=>{const o=new Intl.RelativeTimeFormat(s,{...a});return r=>o.format(r,a.range||"day")}),list:i((s,a)=>{const o=new Intl.ListFormat(s,{...a});return r=>o.format(r)})}}add(e,n){this.formats[e.toLowerCase().trim()]=n}addCached(e,n){this.formats[e.toLowerCase().trim()]=XM(n)}format(e,n,i,s={}){const a=n.split(this.formatSeparator);if(a.length>1&&a[0].indexOf("(")>1&&a[0].indexOf(")")<0&&a.find(r=>r.indexOf(")")>-1)){const r=a.findIndex(c=>c.indexOf(")")>-1);a[0]=[a[0],...a.splice(1,r)].join(this.formatSeparator)}return a.reduce((r,c)=>{const{formatName:d,formatOptions:f}=Uq(c);if(this.formats[d]){let p=r;try{const g=s?.formatParams?.[s.interpolationkey]||{},y=g.locale||g.lng||s.locale||s.lng||i;p=this.formats[d](r,y,{...f,...s,...g})}catch(g){this.logger.warn(g)}return p}else this.logger.warn(`there was no format function for ${d}`);return r},e)}}const Kq=(t,e)=>{t.pending[e]!==void 0&&(delete t.pending[e],t.pendingCount--)};class Vq extends My{constructor(e,n,i,s={}){super(),this.backend=e,this.store=n,this.services=i,this.languageUtils=i.languageUtils,this.options=s,this.logger=So.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=s.maxParallelReads||10,this.readingCalls=0,this.maxRetries=s.maxRetries>=0?s.maxRetries:5,this.retryTimeout=s.retryTimeout>=1?s.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(i,s.backend,s)}queueLoad(e,n,i,s){const a={},o={},r={},c={};return e.forEach(d=>{let f=!0;n.forEach(p=>{const g=`${d}|${p}`;!i.reload&&this.store.hasResourceBundle(d,p)?this.state[g]=2:this.state[g]<0||(this.state[g]===1?o[g]===void 0&&(o[g]=!0):(this.state[g]=1,f=!1,o[g]===void 0&&(o[g]=!0),a[g]===void 0&&(a[g]=!0),c[p]===void 0&&(c[p]=!0)))}),f||(r[d]=!0)}),(Object.keys(a).length||Object.keys(o).length)&&this.queue.push({pending:o,pendingCount:Object.keys(o).length,loaded:{},errors:[],callback:s}),{toLoad:Object.keys(a),pending:Object.keys(o),toLoadLanguages:Object.keys(r),toLoadNamespaces:Object.keys(c)}}loaded(e,n,i){const s=e.split("|"),a=s[0],o=s[1];n&&this.emit("failedLoading",a,o,n),!n&&i&&this.store.addResourceBundle(a,o,i,void 0,void 0,{skipCopy:!0}),this.state[e]=n?-1:2,n&&i&&(this.state[e]=0);const r={};this.queue.forEach(c=>{Mq(c.loaded,[a],o),Kq(c,e),n&&c.errors.push(n),c.pendingCount===0&&!c.done&&(Object.keys(c.loaded).forEach(d=>{r[d]||(r[d]={});const f=c.loaded[d];f.length&&f.forEach(p=>{r[d][p]===void 0&&(r[d][p]=!0)})}),c.done=!0,c.errors.length?c.callback(c.errors):c.callback())}),this.emit("loaded",r),this.queue=this.queue.filter(c=>!c.done)}read(e,n,i,s=0,a=this.retryTimeout,o){if(!e.length)return o(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:e,ns:n,fcName:i,tried:s,wait:a,callback:o});return}this.readingCalls++;const r=(d,f)=>{if(this.readingCalls--,this.waitingReads.length>0){const p=this.waitingReads.shift();this.read(p.lng,p.ns,p.fcName,p.tried,p.wait,p.callback)}if(d&&f&&s<this.maxRetries){setTimeout(()=>{this.read.call(this,e,n,i,s+1,a*2,o)},a);return}o(d,f)},c=this.backend[i].bind(this.backend);if(c.length===2){try{const d=c(e,n);d&&typeof d.then=="function"?d.then(f=>r(null,f)).catch(r):r(null,d)}catch(d){r(d)}return}return c(e,n,r)}prepareLoading(e,n,i={},s){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),s&&s();Nt(e)&&(e=this.languageUtils.toResolveHierarchy(e)),Nt(n)&&(n=[n]);const a=this.queueLoad(e,n,i,s);if(!a.toLoad.length)return a.pending.length||s(),null;a.toLoad.forEach(o=>{this.loadOne(o)})}load(e,n,i){this.prepareLoading(e,n,{},i)}reload(e,n,i){this.prepareLoading(e,n,{reload:!0},i)}loadOne(e,n=""){const i=e.split("|"),s=i[0],a=i[1];this.read(s,a,"read",void 0,void 0,(o,r)=>{o&&this.logger.warn(`${n}loading namespace ${a} for language ${s} failed`,o),!o&&r&&this.logger.log(`${n}loaded namespace ${a} for language ${s}`,r),this.loaded(e,o,r)})}saveMissing(e,n,i,s,a,o={},r=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(n)){this.logger.warn(`did not save key "${i}" as the namespace "${n}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(i==null||i==="")){if(this.backend?.create){const c={...o,isUpdate:a},d=this.backend.create.bind(this.backend);if(d.length<6)try{let f;d.length===5?f=d(e,n,i,s,c):f=d(e,n,i,s),f&&typeof f.then=="function"?f.then(p=>r(null,p)).catch(r):r(null,f)}catch(f){r(f)}else d(e,n,i,s,r,c)}!e||!e[0]||this.store.addResource(e[0],n,i,s)}}}const QM=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:t=>{let e={};if(typeof t[1]=="object"&&(e=t[1]),Nt(t[1])&&(e.defaultValue=t[1]),Nt(t[2])&&(e.tDescription=t[2]),typeof t[2]=="object"||typeof t[3]=="object"){const n=t[3]||t[2];Object.keys(n).forEach(i=>{e[i]=n[i]})}return e},interpolation:{escapeValue:!0,format:t=>t,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),YM=t=>(Nt(t.ns)&&(t.ns=[t.ns]),Nt(t.fallbackLng)&&(t.fallbackLng=[t.fallbackLng]),Nt(t.fallbackNS)&&(t.fallbackNS=[t.fallbackNS]),t.supportedLngs?.indexOf?.("cimode")<0&&(t.supportedLngs=t.supportedLngs.concat(["cimode"])),typeof t.initImmediate=="boolean"&&(t.initAsync=t.initImmediate),t),Ug=()=>{},Hq=t=>{Object.getOwnPropertyNames(Object.getPrototypeOf(t)).forEach(n=>{typeof t[n]=="function"&&(t[n]=t[n].bind(t))})};class Kf extends My{constructor(e={},n){if(super(),this.options=YM(e),this.services={},this.logger=So,this.modules={external:[]},Hq(this),n&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,n),this;setTimeout(()=>{this.init(e,n)},0)}}init(e={},n){this.isInitializing=!0,typeof e=="function"&&(n=e,e={}),e.defaultNS==null&&e.ns&&(Nt(e.ns)?e.defaultNS=e.ns:e.ns.indexOf("translation")<0&&(e.defaultNS=e.ns[0]));const i=QM();this.options={...i,...this.options,...YM(e)},this.options.interpolation={...i.interpolation,...this.options.interpolation},e.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=e.keySeparator),e.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=e.nsSeparator);const s=d=>d?typeof d=="function"?new d:d:null;if(!this.options.isClone){this.modules.logger?So.init(s(this.modules.logger),this.options):So.init(null,this.options);let d;this.modules.formatter?d=this.modules.formatter:d=zq;const f=new VM(this.options);this.store=new zM(this.options.resources,this.options);const p=this.services;p.logger=So,p.resourceStore=this.store,p.languageUtils=f,p.pluralResolver=new Bq(f,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),this.options.interpolation.format&&this.options.interpolation.format!==i.interpolation.format&&this.logger.deprecate("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),d&&(!this.options.interpolation.format||this.options.interpolation.format===i.interpolation.format)&&(p.formatter=s(d),p.formatter.init&&p.formatter.init(p,this.options),this.options.interpolation.format=p.formatter.format.bind(p.formatter)),p.interpolator=new $M(this.options),p.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},p.backendConnector=new Vq(s(this.modules.backend),p.resourceStore,p,this.options),p.backendConnector.on("*",(y,..._)=>{this.emit(y,..._)}),this.modules.languageDetector&&(p.languageDetector=s(this.modules.languageDetector),p.languageDetector.init&&p.languageDetector.init(p,this.options.detection,this.options)),this.modules.i18nFormat&&(p.i18nFormat=s(this.modules.i18nFormat),p.i18nFormat.init&&p.i18nFormat.init(this)),this.translator=new M0(this.services,this.options),this.translator.on("*",(y,..._)=>{this.emit(y,..._)}),this.modules.external.forEach(y=>{y.init&&y.init(this)})}if(this.format=this.options.interpolation.format,n||(n=Ug),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const d=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);d.length>0&&d[0]!=="dev"&&(this.options.lng=d[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(d=>{this[d]=(...f)=>this.store[d](...f)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(d=>{this[d]=(...f)=>(this.store[d](...f),this)});const r=Wh(),c=()=>{const d=(f,p)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),r.resolve(p),n(f,p)};if(this.languages&&!this.isInitialized)return d(null,this.t.bind(this));this.changeLanguage(this.options.lng,d)};return this.options.resources||!this.options.initAsync?c():setTimeout(c,0),r}loadResources(e,n=Ug){let i=n;const s=Nt(e)?e:this.language;if(typeof e=="function"&&(i=e),!this.options.resources||this.options.partialBundledLanguages){if(s?.toLowerCase()==="cimode"&&(!this.options.preload||this.options.preload.length===0))return i();const a=[],o=r=>{if(!r||r==="cimode")return;this.services.languageUtils.toResolveHierarchy(r).forEach(d=>{d!=="cimode"&&a.indexOf(d)<0&&a.push(d)})};s?o(s):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(c=>o(c)),this.options.preload?.forEach?.(r=>o(r)),this.services.backendConnector.load(a,this.options.ns,r=>{!r&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),i(r)})}else i(null)}reloadResources(e,n,i){const s=Wh();return typeof e=="function"&&(i=e,e=void 0),typeof n=="function"&&(i=n,n=void 0),e||(e=this.languages),n||(n=this.options.ns),i||(i=Ug),this.services.backendConnector.reload(e,n,a=>{s.resolve(),i(a)}),s}use(e){if(!e)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return e.type==="backend"&&(this.modules.backend=e),(e.type==="logger"||e.log&&e.warn&&e.error)&&(this.modules.logger=e),e.type==="languageDetector"&&(this.modules.languageDetector=e),e.type==="i18nFormat"&&(this.modules.i18nFormat=e),e.type==="postProcessor"&&V3.addPostProcessor(e),e.type==="formatter"&&(this.modules.formatter=e),e.type==="3rdParty"&&this.modules.external.push(e),this}setResolvedLanguage(e){if(!(!e||!this.languages)&&!(["cimode","dev"].indexOf(e)>-1)){for(let n=0;n<this.languages.length;n++){const i=this.languages[n];if(!(["cimode","dev"].indexOf(i)>-1)&&this.store.hasLanguageSomeTranslations(i)){this.resolvedLanguage=i;break}}!this.resolvedLanguage&&this.languages.indexOf(e)<0&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,n){this.isLanguageChangingTo=e;const i=Wh();this.emit("languageChanging",e);const s=r=>{this.language=r,this.languages=this.services.languageUtils.toResolveHierarchy(r),this.resolvedLanguage=void 0,this.setResolvedLanguage(r)},a=(r,c)=>{c?this.isLanguageChangingTo===e&&(s(c),this.translator.changeLanguage(c),this.isLanguageChangingTo=void 0,this.emit("languageChanged",c),this.logger.log("languageChanged",c)):this.isLanguageChangingTo=void 0,i.resolve((...d)=>this.t(...d)),n&&n(r,(...d)=>this.t(...d))},o=r=>{!e&&!r&&this.services.languageDetector&&(r=[]);const c=Nt(r)?r:r&&r[0],d=this.store.hasLanguageSomeTranslations(c)?c:this.services.languageUtils.getBestMatchFromCodes(Nt(r)?[r]:r);d&&(this.language||s(d),this.translator.language||this.translator.changeLanguage(d),this.services.languageDetector?.cacheUserLanguage?.(d)),this.loadResources(d,f=>{a(f,d)})};return!e&&this.services.languageDetector&&!this.services.languageDetector.async?o(this.services.languageDetector.detect()):!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(o):this.services.languageDetector.detect(o):o(e),i}getFixedT(e,n,i){const s=(a,o,...r)=>{let c;typeof o!="object"?c=this.options.overloadTranslationOptionHandler([a,o].concat(r)):c={...o},c.lng=c.lng||s.lng,c.lngs=c.lngs||s.lngs,c.ns=c.ns||s.ns,c.keyPrefix!==""&&(c.keyPrefix=c.keyPrefix||i||s.keyPrefix);const d=this.options.keySeparator||".";let f;return c.keyPrefix&&Array.isArray(a)?f=a.map(p=>(typeof p=="function"&&(p=T0(p,{...this.options,...o})),`${c.keyPrefix}${d}${p}`)):(typeof a=="function"&&(a=T0(a,{...this.options,...o})),f=c.keyPrefix?`${c.keyPrefix}${d}${a}`:a),this.t(f,c)};return Nt(e)?s.lng=e:s.lngs=e,s.ns=n,s.keyPrefix=i,s}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,n={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const i=n.lng||this.resolvedLanguage||this.languages[0],s=this.options?this.options.fallbackLng:!1,a=this.languages[this.languages.length-1];if(i.toLowerCase()==="cimode")return!0;const o=(r,c)=>{const d=this.services.backendConnector.state[`${r}|${c}`];return d===-1||d===0||d===2};if(n.precheck){const r=n.precheck(this,o);if(r!==void 0)return r}return!!(this.hasResourceBundle(i,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||o(i,e)&&(!s||o(a,e)))}loadNamespaces(e,n){const i=Wh();return this.options.ns?(Nt(e)&&(e=[e]),e.forEach(s=>{this.options.ns.indexOf(s)<0&&this.options.ns.push(s)}),this.loadResources(s=>{i.resolve(),n&&n(s)}),i):(n&&n(),Promise.resolve())}loadLanguages(e,n){const i=Wh();Nt(e)&&(e=[e]);const s=this.options.preload||[],a=e.filter(o=>s.indexOf(o)<0&&this.services.languageUtils.isSupportedCode(o));return a.length?(this.options.preload=s.concat(a),this.loadResources(o=>{i.resolve(),n&&n(o)}),i):(n&&n(),Promise.resolve())}dir(e){if(e||(e=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language)),!e)return"rtl";try{const s=new Intl.Locale(e);if(s&&s.getTextInfo){const a=s.getTextInfo();if(a&&a.direction)return a.direction}}catch{}const n=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],i=this.services?.languageUtils||new VM(QM());return e.toLowerCase().indexOf("-latn")>1?"ltr":n.indexOf(i.getLanguagePartFromCode(e))>-1||e.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(e={},n){const i=new Kf(e,n);return i.createInstance=Kf.createInstance,i}cloneInstance(e={},n=Ug){const i=e.forkResourceStore;i&&delete e.forkResourceStore;const s={...this.options,...e,isClone:!0},a=new Kf(s);if((e.debug!==void 0||e.prefix!==void 0)&&(a.logger=a.logger.clone(e)),["store","services","language"].forEach(r=>{a[r]=this[r]}),a.services={...this.services},a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},i){const r=Object.keys(this.store.data).reduce((c,d)=>(c[d]={...this.store.data[d]},c[d]=Object.keys(c[d]).reduce((f,p)=>(f[p]={...c[d][p]},f),c[d]),c),{});a.store=new zM(r,s),a.services.resourceStore=a.store}return e.interpolation&&(a.services.interpolator=new $M(s)),a.translator=new M0(a.services,s),a.translator.on("*",(r,...c)=>{a.emit(r,...c)}),a.init(s,n),a.translator.options=s,a.translator.backendConnector.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const Gi=Kf.createInstance();Gi.createInstance;Gi.dir;Gi.init;Gi.loadResources;Gi.reloadResources;Gi.use;Gi.changeLanguage;Gi.getFixedT;Gi.t;Gi.exists;Gi.setDefaultNamespace;Gi.hasLoadedNamespace;Gi.loadNamespaces;Gi.loadLanguages;var zx,JM;function Wq(){return JM||(JM=1,zx={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}),zx}var Gq=Wq();const $q=a3(Gq);var Xq=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function ZM(t){var e={type:"tag",name:"",voidElement:!1,attrs:{},children:[]},n=t.match(/<\/?([^\s]+?)[/\s>]/);if(n&&(e.name=n[1],($q[n[1]]||t.charAt(t.length-2)==="/")&&(e.voidElement=!0),e.name.startsWith("!--"))){var i=t.indexOf("-->");return{type:"comment",comment:i!==-1?t.slice(4,i):""}}for(var s=new RegExp(Xq),a=null;(a=s.exec(t))!==null;)if(a[0].trim())if(a[1]){var o=a[1].trim(),r=[o,""];o.indexOf("=")>-1&&(r=o.split("=")),e.attrs[r[0]]=r[1],s.lastIndex--}else a[2]&&(e.attrs[a[2]]=a[3].trim().substring(1,a[3].length-1));return e}var Qq=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,Yq=/^\s*$/,Jq=Object.create(null);function W3(t,e){switch(e.type){case"text":return t+e.content;case"tag":return t+="<"+e.name+(e.attrs?(function(n){var i=[];for(var s in n)i.push(s+'="'+n[s]+'"');return i.length?" "+i.join(" "):""})(e.attrs):"")+(e.voidElement?"/>":">"),e.voidElement?t:t+e.children.reduce(W3,"")+"</"+e.name+">";case"comment":return t+"\x3C!--"+e.comment+"-->"}}var Zq={parse:function(t,e){e||(e={}),e.components||(e.components=Jq);var n,i=[],s=[],a=-1,o=!1;if(t.indexOf("<")!==0){var r=t.indexOf("<");i.push({type:"text",content:r===-1?t:t.substring(0,r)})}return t.replace(Qq,function(c,d){if(o){if(c!=="</"+n.name+">")return;o=!1}var f,p=c.charAt(1)!=="/",g=c.startsWith("\x3C!--"),y=d+c.length,_=t.charAt(y);if(g){var v=ZM(c);return a<0?(i.push(v),i):((f=s[a]).children.push(v),i)}if(p&&(a++,(n=ZM(c)).type==="tag"&&e.components[n.name]&&(n.type="component",o=!0),n.voidElement||o||!_||_==="<"||n.children.push({type:"text",content:t.slice(y,t.indexOf("<",y))}),a===0&&i.push(n),(f=s[a-1])&&f.children.push(n),s[a]=n),(!p||n.voidElement)&&(a>-1&&(n.voidElement||n.name===c.slice(2,-1))&&(a--,n=a===-1?i:s[a]),!o&&_!=="<"&&_)){f=a===-1?i:s[a].children;var x=t.indexOf("<",y),k=t.slice(y,x===-1?void 0:x);Yq.test(k)&&(k=" "),(x>-1&&a+f.length>=0||k!==" ")&&f.push({type:"text",content:k})}}),i},stringify:function(t){return t.reduce(function(e,n){return e+W3("",n)},"")}};const e0=(t,e,n,i)=>{const s=[n,{code:e,...i||{}}];if(t?.services?.logger?.forward)return t.services.logger.forward(s,"warn","react-i18next::",!0);na(s[0])&&(s[0]=`react-i18next:: ${s[0]}`),t?.services?.logger?.warn?t.services.logger.warn(...s):console?.warn&&console.warn(...s)},eL={},Ly=(t,e,n,i)=>{na(n)&&eL[n]||(na(n)&&(eL[n]=new Date),e0(t,e,n,i))},G3=(t,e)=>()=>{if(t.isInitialized)e();else{const n=()=>{setTimeout(()=>{t.off("initialized",n)},0),e()};t.on("initialized",n)}},M2=(t,e,n)=>{t.loadNamespaces(e,G3(t,n))},tL=(t,e,n,i)=>{if(na(n)&&(n=[n]),t.options.preload&&t.options.preload.indexOf(e)>-1)return M2(t,n,i);n.forEach(s=>{t.options.ns.indexOf(s)<0&&t.options.ns.push(s)}),t.loadLanguages(e,G3(t,i))},ez=(t,e,n={})=>!e.languages||!e.languages.length?(Ly(e,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:e.languages}),!0):e.hasLoadedNamespace(t,{lng:n.lng,precheck:(i,s)=>{if(n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1&&i.services.backendConnector.backend&&i.isLanguageChangingTo&&!s(i.isLanguageChangingTo,t))return!1}}),na=t=>typeof t=="string",br=t=>typeof t=="object"&&t!==null,tz=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,nz={"&amp;":"&","&#38;":"&","&lt;":"<","&#60;":"<","&gt;":">","&#62;":">","&apos;":"'","&#39;":"'","&quot;":'"',"&#34;":'"',"&nbsp;":" ","&#160;":" ","&copy;":"©","&#169;":"©","&reg;":"®","&#174;":"®","&hellip;":"…","&#8230;":"…","&#x2F;":"/","&#47;":"/"},iz=t=>nz[t],sz=t=>t.replace(tz,iz);let L2={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:sz};const az=(t={})=>{L2={...L2,...t}},$3=()=>L2;let X3;const oz=t=>{X3=t},Ow=()=>X3,t0=(t,e)=>{if(!t)return!1;const n=t.props?.children??t.children;return e?n.length>0:!!n},n0=t=>{if(!t)return[];const e=t.props?.children??t.children;return t.props?.i18nIsDynamicList?vc(e):e},rz=t=>Array.isArray(t)&&t.every(S.isValidElement),vc=t=>Array.isArray(t)?t:[t],lz=(t,e)=>{const n={...e};return n.props=Object.assign(t.props,e.props),n},cz=t=>{const e={};if(!t)return e;const n=i=>{vc(i).forEach(a=>{na(a)||(t0(a)?n(n0(a)):br(a)&&!S.isValidElement(a)&&Object.assign(e,a))})};return n(t),e},Q3=(t,e,n,i)=>{if(!t)return"";let s="";const a=vc(t),o=e?.transSupportBasicHtmlNodes?e.transKeepBasicHtmlNodesFor??[]:[];return a.forEach((r,c)=>{if(na(r)){s+=`${r}`;return}if(S.isValidElement(r)){const{props:d,type:f}=r,p=Object.keys(d).length,g=o.indexOf(f)>-1,y=d.children;if(!y&&g&&!p){s+=`<${f}/>`;return}if(!y&&(!g||p)||d.i18nIsDynamicList){s+=`<${c}></${c}>`;return}if(g&&p===1&&na(y)){s+=`<${f}>${y}</${f}>`;return}const _=Q3(y,e,n,i);s+=`<${c}>${_}</${c}>`;return}if(r===null){e0(n,"TRANS_NULL_VALUE","Passed in a null value as child",{i18nKey:i});return}if(br(r)){const{format:d,...f}=r,p=Object.keys(f);if(p.length===1){const g=d?`${p[0]}, ${d}`:p[0];s+=`{{${g}}}`;return}e0(n,"TRANS_INVALID_OBJ","Invalid child - Object should only have keys {{ value, format }} (format is optional).",{i18nKey:i,child:r});return}e0(n,"TRANS_INVALID_VAR","Passed in a variable like {number} - pass variables for interpolation as full objects like {{number}}.",{i18nKey:i,child:r})}),s},uz=(t,e=[],n={})=>{if(!t)return t;const i=Object.keys(n),s=[...e,...i];let a="",o=0;for(;o<t.length;)if(t[o]==="<"){let r=!1;const c=t.slice(o).match(/^<\/(\d+|[a-zA-Z][a-zA-Z0-9-]*)>/);if(c){const d=c[1];(/^\d+$/.test(d)||s.includes(d))&&(r=!0,a+=c[0],o+=c[0].length)}if(!r){const d=t.slice(o).match(/^<(\d+|[a-zA-Z][a-zA-Z0-9-]*)(\s+[\w-]+(?:=(?:"[^"]*"|'[^']*'|[^\s>]+))?)*\s*(\/)?>/);if(d){const f=d[1];(/^\d+$/.test(f)||s.includes(f))&&(r=!0,a+=d[0],o+=d[0].length)}}r||(a+="&lt;",o+=1)}else a+=t[o],o+=1;return a},dz=(t,e,n,i,s,a,o)=>{if(n==="")return[];const r=s.transKeepBasicHtmlNodesFor||[],c=n&&new RegExp(r.map(C=>`<${C}`).join("|")).test(n);if(!t&&!e&&!c&&!o)return[n];const d=e??{},f=C=>{vc(C).forEach(L=>{na(L)||(t0(L)?f(n0(L)):br(L)&&!S.isValidElement(L)&&Object.assign(d,L))})};f(t);const p=uz(n,r,d),g=Zq.parse(`<0>${p}</0>`),y={...d,...a},_=(C,N,L)=>{const M=n0(C),O=x(M,N.children,L);return rz(M)&&O.length===0||C.props?.i18nIsDynamicList?M:O},v=(C,N,L,M,O)=>{C.dummy?(C.children=N,L.push(S.cloneElement(C,{key:M},O?void 0:N))):L.push(...S.Children.map([C],T=>{const P="data-i18n-is-dynamic-list",E={key:M,[P]:void 0};return T&&T.props&&Object.keys(T.props).forEach(R=>{R==="ref"||R==="children"||R==="i18nIsDynamicList"||R===P||(E[R]=T.props[R])}),S.cloneElement(T,E,O?null:N)}))},x=(C,N,L)=>{const M=vc(C);return vc(N).reduce((T,P,E)=>{const R=P.children?.[0]?.content&&i.services.interpolator.interpolate(P.children[0].content,y,i.language);if(P.type==="tag"){let q=M[parseInt(P.name,10)];!q&&e&&(q=e[P.name]),L.length===1&&!q&&(q=L[0][P.name]),q||(q={});const I=Object.keys(P.attrs).length!==0?lz({props:P.attrs},q):q,Y=S.isValidElement(I),X=Y&&t0(P,!0)&&!P.voidElement,K=c&&br(I)&&I.dummy&&!Y,B=br(e)&&Object.hasOwnProperty.call(e,P.name);if(na(I)){const H=i.services.interpolator.interpolate(I,y,i.language);T.push(H)}else if(t0(I)||X){const H=_(I,P,L);v(I,H,T,E)}else if(K){const H=x(M,P.children,L);v(I,H,T,E)}else if(Number.isNaN(parseFloat(P.name)))if(B){const H=_(I,P,L);v(I,H,T,E,P.voidElement)}else if(s.transSupportBasicHtmlNodes&&r.indexOf(P.name)>-1)if(P.voidElement)T.push(S.createElement(P.name,{key:`${P.name}-${E}`}));else{const H=x(M,P.children,L);T.push(S.createElement(P.name,{key:`${P.name}-${E}`},H))}else if(P.voidElement)T.push(`<${P.name} />`);else{const H=x(M,P.children,L);T.push(`<${P.name}>${H}</${P.name}>`)}else if(br(I)&&!Y){const H=P.children[0]?R:null;H&&T.push(H)}else v(I,R,T,E,P.children.length!==1||!R)}else if(P.type==="text"){const q=s.transWrapTextNodes,I=o?s.unescape(i.services.interpolator.interpolate(P.content,y,i.language)):i.services.interpolator.interpolate(P.content,y,i.language);q?T.push(S.createElement(q,{key:`${P.name}-${E}`},I)):T.push(I)}return T},[])},k=x([{dummy:!0,children:t||[]}],g,vc(t||[]));return n0(k[0])},Y3=(t,e,n)=>{const i=t.key||e,s=S.cloneElement(t,{key:i});if(!s.props||!s.props.children||n.indexOf(`${e}/>`)<0&&n.indexOf(`${e} />`)<0)return s;function a(){return S.createElement(S.Fragment,null,s)}return S.createElement(a,{key:i})},hz=(t,e)=>t.map((n,i)=>Y3(n,i,e)),fz=(t,e)=>{const n={};return Object.keys(t).forEach(i=>{Object.assign(n,{[i]:Y3(t[i],i,e)})}),n},mz=(t,e,n,i)=>t?Array.isArray(t)?hz(t,e):br(t)?fz(t,e):(Ly(n,"TRANS_INVALID_COMPONENTS",'<Trans /> "components" prop expects an object or array',{i18nKey:i}),null):null,pz=t=>!br(t)||Array.isArray(t)?!1:Object.keys(t).reduce((e,n)=>e&&Number.isNaN(Number.parseFloat(n)),!0);function gz({children:t,count:e,parent:n,i18nKey:i,context:s,tOptions:a={},values:o,defaults:r,components:c,ns:d,i18n:f,t:p,shouldUnescape:g,...y}){const _=f||Ow();if(!_)return Ly(_,"NO_I18NEXT_INSTANCE","Trans: You need to pass in an i18next instance using i18nextReactModule",{i18nKey:i}),t;const v=p||_.t.bind(_)||(K=>K),x={...$3(),..._.options?.react};let k=d||v.ns||_.options?.defaultNS;k=na(k)?[k]:k||["translation"];const C=Q3(t,x,_,i),N=r||a?.defaultValue||C||x.transEmptyNodeValue||(typeof i=="function"?T0(i):i),{hashTransKey:L}=x,M=i||(L?L(C||N):C||N);_.options?.interpolation?.defaultVariables&&(o=o&&Object.keys(o).length>0?{...o,..._.options.interpolation.defaultVariables}:{..._.options.interpolation.defaultVariables});const O=cz(t);O&&typeof O.count=="number"&&e===void 0&&(e=O.count);const T=o||e!==void 0&&!_.options?.interpolation?.alwaysFormat||!t?a.interpolation:{interpolation:{...a.interpolation,prefix:"#$?",suffix:"?$#"}},P={...a,context:s||a.context,count:e,...o,...T,defaultValue:N,ns:k};let E=M?v(M,P):N;E===M&&N&&(E=N);const R=mz(c,E,_,i);let q=R||t,I=null;pz(R)&&(I=R,q=t);const Y=dz(q,I,E,_,x,P,g),X=n??x.defaultTransParent;return X?S.createElement(X,y,Y):Y}const _z={type:"3rdParty",init(t){az(t.options.react),oz(t)}},J3=S.createContext();class yz{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(n=>{this.usedNamespaces[n]||(this.usedNamespaces[n]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}function nL({children:t,count:e,parent:n,i18nKey:i,context:s,tOptions:a={},values:o,defaults:r,components:c,ns:d,i18n:f,t:p,shouldUnescape:g,...y}){const{i18n:_,defaultNS:v}=S.useContext(J3)||{},x=f||_||Ow(),k=p||x?.t.bind(x);return gz({children:t,count:e,parent:n,i18nKey:i,context:s,tOptions:a,values:o,defaults:r,components:c,ns:d||k?.ns||v||x?.options?.defaultNS,i18n:x,t:p,shouldUnescape:g,...y})}var Kx={exports:{}},Vx={};var iL;function bz(){if(iL)return Vx;iL=1;var t=wy();function e(p,g){return p===g&&(p!==0||1/p===1/g)||p!==p&&g!==g}var n=typeof Object.is=="function"?Object.is:e,i=t.useState,s=t.useEffect,a=t.useLayoutEffect,o=t.useDebugValue;function r(p,g){var y=g(),_=i({inst:{value:y,getSnapshot:g}}),v=_[0].inst,x=_[1];return a(function(){v.value=y,v.getSnapshot=g,c(v)&&x({inst:v})},[p,y,g]),s(function(){return c(v)&&x({inst:v}),p(function(){c(v)&&x({inst:v})})},[p]),o(y),y}function c(p){var g=p.getSnapshot;p=p.value;try{var y=g();return!n(p,y)}catch{return!0}}function d(p,g){return g()}var f=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?d:r;return Vx.useSyncExternalStore=t.useSyncExternalStore!==void 0?t.useSyncExternalStore:f,Vx}var sL;function vz(){return sL||(sL=1,Kx.exports=bz()),Kx.exports}var xz=vz();const Sz=(t,e)=>na(e)?e:br(e)&&na(e.defaultValue)?e.defaultValue:Array.isArray(t)?t[t.length-1]:t,wz={t:Sz,ready:!1},kz=()=>()=>{},nt=(t,e={})=>{const{i18n:n}=e,{i18n:i,defaultNS:s}=S.useContext(J3)||{},a=n||i||Ow();a&&!a.reportNamespaces&&(a.reportNamespaces=new yz),a||Ly(a,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const o=S.useMemo(()=>({...$3(),...a?.options?.react,...e}),[a,e]),{useSuspense:r,keyPrefix:c}=o,d=s||a?.options?.defaultNS,f=na(d)?[d]:d||["translation"],p=S.useMemo(()=>f,f);a?.reportNamespaces?.addUsedNamespaces?.(p);const g=S.useRef(0),y=S.useCallback(E=>{if(!a)return kz;const{bindI18n:R,bindI18nStore:q}=o,I=()=>{g.current+=1,E()};return R&&a.on(R,I),q&&a.store.on(q,I),()=>{R&&R.split(" ").forEach(Y=>a.off(Y,I)),q&&q.split(" ").forEach(Y=>a.store.off(Y,I))}},[a,o]),_=S.useRef(),v=S.useCallback(()=>{if(!a)return wz;const E=!!(a.isInitialized||a.initializedStoreOnce)&&p.every(K=>ez(K,a,o)),R=e.lng||a.language,q=g.current,I=_.current;if(I&&I.ready===E&&I.lng===R&&I.keyPrefix===c&&I.revision===q)return I;const X={t:a.getFixedT(R,o.nsMode==="fallback"?p:p[0],c),ready:E,lng:R,keyPrefix:c,revision:q};return _.current=X,X},[a,p,c,o,e.lng]),[x,k]=S.useState(0),{t:C,ready:N}=xz.useSyncExternalStore(y,v,v);S.useEffect(()=>{if(a&&!N&&!r){const E=()=>k(R=>R+1);e.lng?tL(a,e.lng,p,E):M2(a,p,E)}},[a,e.lng,p,N,r,x]);const L=a||{},M=S.useRef(null),O=S.useRef(),T=E=>{const R=Object.getOwnPropertyDescriptors(E);R.__original&&delete R.__original;const q=Object.create(Object.getPrototypeOf(E),R);if(!Object.prototype.hasOwnProperty.call(q,"__original"))try{Object.defineProperty(q,"__original",{value:E,writable:!1,enumerable:!1,configurable:!1})}catch{}return q},P=S.useMemo(()=>{const E=L,R=E?.language;let q=E;E&&(M.current&&M.current.__original===E?O.current!==R?(q=T(E),M.current=q,O.current=R):q=M.current:(q=T(E),M.current=q,O.current=R));const I=[C,q,N];return I.t=C,I.i18n=q,I.ready=N,I},[C,L,N,L.resolvedLanguage,L.language,L.languages]);if(a&&r&&!N)throw new Promise(E=>{const R=()=>E();e.lng?tL(a,e.lng,p,R):M2(a,p,R)});return P};function he({children:t,variant:e="primary",size:n="md",fullWidth:i=!1,loading:s=!1,className:a="",disabled:o,...r}){const c=t!=null&&t!==!1,d=["btn",`btn-${e}`,n==="sm"?"btn-sm":"",i?"btn-full":"",a].filter(Boolean).join(" ");return h.jsxs("button",{className:d,disabled:o||s,...r,children:[s&&h.jsx("span",{className:"loading-spinner","aria-hidden":"true"}),c&&h.jsx("span",{children:t})]})}function lt({label:t,hint:e,error:n,rightElement:i,className:s="",id:a,...o}){const r=S.useId(),c=a??r,d=e?`${c}-hint`:void 0,f=n?`${c}-error`:void 0,p=[o["aria-describedby"],f,d].filter(Boolean).join(" ")||void 0;return h.jsxs("div",{className:"form-group",children:[t&&h.jsx("label",{htmlFor:c,children:t}),h.jsxs("div",{style:{position:"relative"},children:[h.jsx("input",{id:c,className:`input ${s}`.trim(),"aria-invalid":!!n||o["aria-invalid"],"aria-describedby":p,...o}),i&&h.jsx("div",{style:{position:"absolute",right:8,top:"50%",transform:"translateY(-50%)"},children:i})]}),e&&h.jsx("div",{id:d,className:"hint",children:e}),n&&h.jsx("div",{id:f,className:"error-box",children:n})]})}const _n={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",focusable:"false"},Pr={..._n,strokeWidth:1.72,strokeLinecap:"square",strokeLinejoin:"miter",strokeMiterlimit:10};function Cz({size:t=20,...e}){return h.jsxs("svg",{..._n,width:t,height:t,...e,children:[h.jsx("line",{x1:"21",x2:"14",y1:"4",y2:"4"}),h.jsx("line",{x1:"10",x2:"3",y1:"4",y2:"4"}),h.jsx("line",{x1:"21",x2:"12",y1:"12",y2:"12"}),h.jsx("line",{x1:"8",x2:"3",y1:"12",y2:"12"}),h.jsx("line",{x1:"21",x2:"16",y1:"20",y2:"20"}),h.jsx("line",{x1:"12",x2:"3",y1:"20",y2:"20"}),h.jsx("line",{x1:"14",x2:"14",y1:"2",y2:"6"}),h.jsx("line",{x1:"8",x2:"8",y1:"10",y2:"14"}),h.jsx("line",{x1:"16",x2:"16",y1:"18",y2:"22"})]})}function O2({size:t=20,...e}){return h.jsxs("svg",{..._n,width:t,height:t,...e,children:[h.jsx("path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4"}),h.jsx("path",{d:"m21 2-9.6 9.6"}),h.jsx("circle",{cx:"7.5",cy:"15.5",r:"5.5"})]})}function Az({size:t=20,...e}){return h.jsxs("svg",{..._n,width:t,height:t,...e,children:[h.jsx("path",{d:"M12 8V4H8"}),h.jsx("rect",{width:"16",height:"12",x:"4",y:"8",rx:"2"}),h.jsx("path",{d:"M2 14h2"}),h.jsx("path",{d:"M20 14h2"}),h.jsx("path",{d:"M15 13v2"}),h.jsx("path",{d:"M9 13v2"})]})}function Nz({size:t=20,...e}){return h.jsxs("svg",{..._n,width:t,height:t,...e,children:[h.jsx("rect",{x:"3",y:"5",width:"6",height:"6",rx:"1.5"}),h.jsx("rect",{x:"15",y:"5",width:"6",height:"6",rx:"1.5"}),h.jsx("rect",{x:"9",y:"13",width:"6",height:"6",rx:"1.5"}),h.jsx("path",{d:"M9 8h6"}),h.jsx("path",{d:"M12 11v2"}),h.jsx("path",{d:"M7.5 11v2"}),h.jsx("path",{d:"M16.5 11v2"})]})}function Tz({size:t=20,...e}){return h.jsxs("svg",{..._n,width:t,height:t,...e,children:[h.jsx("rect",{x:"3.5",y:"3.5",width:"5",height:"5",rx:"1.4"}),h.jsx("rect",{x:"15.5",y:"3.5",width:"5",height:"5",rx:"1.4"}),h.jsx("rect",{x:"3.5",y:"15.5",width:"5",height:"5",rx:"1.4"}),h.jsx("rect",{x:"15.5",y:"15.5",width:"5",height:"5",rx:"1.4"}),h.jsx("path",{d:"M8.5 8.5 10.75 10.75"}),h.jsx("path",{d:"M15.5 8.5 13.25 10.75"}),h.jsx("path",{d:"M8.5 15.5 10.75 13.25"}),h.jsx("path",{d:"M15.5 15.5 13.25 13.25"}),h.jsx("circle",{cx:"12",cy:"12",r:"1.6",fill:"currentColor",stroke:"none"})]})}function Mz({size:t=20,...e}){return h.jsxs("svg",{..._n,width:t,height:t,...e,children:[h.jsx("path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"}),h.jsx("path",{d:"M14 2v4a2 2 0 0 0 2 2h4"}),h.jsx("path",{d:"M10 9H8"}),h.jsx("path",{d:"M16 13H8"}),h.jsx("path",{d:"M16 17H8"})]})}function aL({size:t=20,...e}){return h.jsx("svg",{..._n,width:t,height:t,...e,children:h.jsx("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"})})}function P2({size:t=20,...e}){return h.jsxs("svg",{..._n,width:t,height:t,...e,children:[h.jsx("path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"}),h.jsx("circle",{cx:"12",cy:"12",r:"3"})]})}function Pw({size:t=20,...e}){return h.jsxs("svg",{..._n,width:t,height:t,...e,children:[h.jsx("circle",{cx:"12",cy:"12",r:"10"}),h.jsx("path",{d:"M12 16v-4"}),h.jsx("path",{d:"M12 8h.01"})]})}function Ew({size:t=20,...e}){return h.jsxs("svg",{..._n,width:t,height:t,...e,children:[h.jsx("path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"}),h.jsx("path",{d:"M21 3v5h-5"})]})}function Z3({size:t=20,...e}){return h.jsxs("svg",{..._n,width:t,height:t,...e,children:[h.jsx("path",{d:"M12 15V3"}),h.jsx("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),h.jsx("path",{d:"m7 10 5 5 5-5"})]})}function Oy({size:t=20,...e}){return h.jsxs("svg",{..._n,width:t,height:t,...e,children:[h.jsx("path",{d:"M3 6h18"}),h.jsx("path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"}),h.jsx("path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"}),h.jsx("line",{x1:"10",x2:"10",y1:"11",y2:"17"}),h.jsx("line",{x1:"14",x2:"14",y1:"11",y2:"17"})]})}function jw({size:t=20,...e}){return h.jsx("svg",{..._n,width:t,height:t,...e,children:h.jsx("path",{d:"m18 15-6-6-6 6"})})}function Py({size:t=20,...e}){return h.jsx("svg",{..._n,width:t,height:t,...e,children:h.jsx("path",{d:"m6 9 6 6 6-6"})})}function Lz({size:t=20,...e}){return h.jsx("svg",{..._n,width:t,height:t,...e,children:h.jsx("path",{d:"m15 18-6-6 6-6"})})}function e4({size:t=20,...e}){return h.jsxs("svg",{..._n,width:t,height:t,...e,children:[h.jsx("path",{d:"m21 21-4.34-4.34"}),h.jsx("circle",{cx:"11",cy:"11",r:"8"})]})}function Gc({size:t=20,...e}){return h.jsxs("svg",{..._n,width:t,height:t,...e,children:[h.jsx("path",{d:"M18 6 6 18"}),h.jsx("path",{d:"m6 6 12 12"})]})}function Rw({size:t=20,...e}){return h.jsx("svg",{..._n,width:t,height:t,...e,children:h.jsx("path",{d:"M20 6 9 17l-5-5"})})}function Oz({size:t=20,...e}){return h.jsxs("svg",{..._n,width:t,height:t,...e,children:[h.jsx("path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"}),h.jsx("circle",{cx:"12",cy:"12",r:"3"})]})}function t4({size:t=20,...e}){return h.jsxs("svg",{..._n,width:t,height:t,...e,children:[h.jsx("path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"}),h.jsx("path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242"}),h.jsx("path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"}),h.jsx("path",{d:"m2 2 20 20"})]})}function Pz({size:t=20,...e}){return h.jsxs("svg",{..._n,width:t,height:t,...e,children:[h.jsx("polyline",{points:"22 12 16 12 14 15 10 15 8 12 2 12"}),h.jsx("path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z"})]})}function Qu({size:t=20,...e}){return h.jsxs("svg",{..._n,width:t,height:t,...e,children:[h.jsx("path",{d:"m13.5 6.5-3.148-3.148a1.205 1.205 0 0 0-1.704 0L6.352 5.648a1.205 1.205 0 0 0 0 1.704L9.5 10.5"}),h.jsx("path",{d:"M16.5 7.5 19 5"}),h.jsx("path",{d:"m17.5 10.5 3.148 3.148a1.205 1.205 0 0 1 0 1.704l-2.296 2.296a1.205 1.205 0 0 1-1.704 0L13.5 14.5"}),h.jsx("path",{d:"M9 21a6 6 0 0 0-6-6"}),h.jsx("path",{d:"M9.352 10.648a1.205 1.205 0 0 0 0 1.704l2.296 2.296a1.205 1.205 0 0 0 1.704 0l4.296-4.296a1.205 1.205 0 0 0 0-1.704l-2.296-2.296a1.205 1.205 0 0 0-1.704 0z"})]})}function E2({size:t=20,...e}){return h.jsx("svg",{..._n,width:t,height:t,...e,children:h.jsx("path",{d:"M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41l-7.59-7.59a2.41 2.41 0 0 0-3.41 0Z"})})}function L0({size:t=20,...e}){return h.jsxs("svg",{..._n,width:t,height:t,...e,children:[h.jsx("line",{x1:"10",x2:"14",y1:"2",y2:"2"}),h.jsx("line",{x1:"12",x2:"15",y1:"14",y2:"11"}),h.jsx("circle",{cx:"12",cy:"14",r:"8"})]})}function j2({size:t=20,...e}){return h.jsxs("svg",{..._n,width:t,height:t,...e,children:[h.jsx("path",{d:"M16 7h6v6"}),h.jsx("path",{d:"m22 7-8.5 8.5-5-5L2 17"})]})}function Ez({size:t=20,...e}){return h.jsxs("svg",{..._n,width:t,height:t,...e,children:[h.jsx("line",{x1:"12",x2:"12",y1:"2",y2:"22"}),h.jsx("path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"})]})}function jz({size:t=20,...e}){return h.jsxs("svg",{..._n,width:t,height:t,...e,children:[h.jsx("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"}),h.jsx("path",{d:"M9 18c-4.51 2-5-2-7-2"})]})}function Hx({size:t=20,...e}){return h.jsxs("svg",{..._n,width:t,height:t,...e,children:[h.jsx("path",{d:"M15 3h6v6"}),h.jsx("path",{d:"M10 14 21 3"}),h.jsx("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"})]})}function Rz({size:t=20,...e}){return h.jsxs("svg",{..._n,width:t,height:t,...e,children:[h.jsx("path",{d:"M12 7v14"}),h.jsx("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"})]})}function O0({size:t=20,...e}){return h.jsxs("svg",{..._n,width:t,height:t,...e,children:[h.jsx("polyline",{points:"16 18 22 12 16 6"}),h.jsx("polyline",{points:"8 6 2 12 8 18"})]})}function Dz({size:t=20,...e}){return h.jsxs("svg",{...Pr,width:t,height:t,...e,children:[h.jsx("rect",{x:"3",y:"3",width:"7.5",height:"8",rx:"1.5"}),h.jsx("rect",{x:"13.5",y:"3",width:"7.5",height:"5",rx:"1.5",fill:"currentColor",fillOpacity:"0.12"}),h.jsx("rect",{x:"3",y:"14",width:"7.5",height:"7",rx:"1.5",fill:"currentColor",fillOpacity:"0.12"}),h.jsx("rect",{x:"13.5",y:"11",width:"7.5",height:"10",rx:"1.5"})]})}function Fz({size:t=20,...e}){return h.jsxs("svg",{...Pr,width:t,height:t,...e,children:[h.jsx("path",{d:"M4 8h16"}),h.jsx("path",{d:"M4 16h16"}),h.jsx("circle",{cx:"9.5",cy:"8",r:"2.8",fill:"currentColor",fillOpacity:"0.12"}),h.jsx("circle",{cx:"15",cy:"16",r:"2.8",fill:"currentColor",fillOpacity:"0.12"})]})}function Iz({size:t=20,...e}){return h.jsxs("svg",{...Pr,width:t,height:t,...e,children:[h.jsx("circle",{cx:"12",cy:"5.5",r:"2.8",fill:"currentColor",fillOpacity:"0.12"}),h.jsx("circle",{cx:"5.5",cy:"18.5",r:"2.8"}),h.jsx("circle",{cx:"18.5",cy:"18.5",r:"2.8"}),h.jsx("path",{d:"M10.2 7.8 7 16.2"}),h.jsx("path",{d:"M13.8 7.8 17 16.2"}),h.jsx("path",{d:"M8.3 18.5h7.4"})]})}function Bz({size:t=20,...e}){return h.jsxs("svg",{...Pr,width:t,height:t,...e,children:[h.jsx("path",{d:"M7 3h7l4 4v12a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2Z"}),h.jsx("path",{d:"M14 3v4h4",fill:"currentColor",fillOpacity:"0.12"}),h.jsx("path",{d:"M9 13l2 2 4-4"})]})}function Uz({size:t=20,...e}){return h.jsxs("svg",{...Pr,width:t,height:t,...e,children:[h.jsx("path",{d:"M12 3l8 4v5c0 5.25-3.4 8.25-8 10-4.6-1.75-8-4.75-8-10V7Z",fill:"currentColor",fillOpacity:"0.08"}),h.jsx("circle",{cx:"12",cy:"11",r:"1.5",fill:"currentColor",stroke:"none"}),h.jsx("path",{d:"M12 12.5v2.5"})]})}function qz({size:t=20,...e}){return h.jsxs("svg",{...Pr,width:t,height:t,...e,children:[h.jsx("circle",{cx:"12",cy:"12",r:"8"}),h.jsx("path",{d:"M12 12V4a8 8 0 0 1 8 8Z",fill:"currentColor",fillOpacity:"0.12"})]})}function zz({size:t=20,...e}){return h.jsxs("svg",{...Pr,width:t,height:t,...e,children:[h.jsx("path",{d:"M3.5 20h17"}),h.jsx("rect",{x:"5",y:"13",width:"3.5",height:"7",rx:"0.5"}),h.jsx("rect",{x:"10.25",y:"7",width:"3.5",height:"13",rx:"0.5",fill:"currentColor",fillOpacity:"0.12"}),h.jsx("rect",{x:"15.5",y:"10",width:"3.5",height:"10",rx:"0.5"})]})}function Kz({size:t=20,...e}){return h.jsxs("svg",{...Pr,width:t,height:t,...e,children:[h.jsx("rect",{x:"3",y:"4",width:"18",height:"16",rx:"2"}),h.jsx("path",{d:"M3 8.5h18"}),h.jsx("circle",{cx:"5.5",cy:"6.2",r:"0.8",fill:"currentColor",stroke:"none"}),h.jsx("circle",{cx:"7.8",cy:"6.2",r:"0.8",fill:"currentColor",fillOpacity:"0.4",stroke:"none"}),h.jsx("path",{d:"M7 12l3 2.5-3 2.5"}),h.jsx("path",{d:"M13 17h4"})]})}function Vz({size:t=20,...e}){return h.jsxs("svg",{...Pr,width:t,height:t,...e,children:[h.jsx("rect",{x:"6",y:"6",width:"12",height:"12",rx:"2"}),h.jsx("rect",{x:"9",y:"9",width:"6",height:"6",rx:"1",fill:"currentColor",fillOpacity:"0.12"}),h.jsx("path",{d:"M6 10H3"}),h.jsx("path",{d:"M6 14H3"}),h.jsx("path",{d:"M21 10h-3"}),h.jsx("path",{d:"M21 14h-3"}),h.jsx("path",{d:"M10 6V3"}),h.jsx("path",{d:"M14 6V3"}),h.jsx("path",{d:"M10 21v-3"}),h.jsx("path",{d:"M14 21v-3"})]})}const Hz="Select-module__wrap___8GKsa",Wz="Select-module__wrapFullWidth___uQ1gt",Gz="Select-module__trigger___nKY0l",$z="Select-module__triggerText___zQEIp",Xz="Select-module__placeholder___N04iW",Qz="Select-module__triggerIcon___ipYKn",Yz="Select-module__dropdown___6YdcD",Jz="Select-module__option___EKsSG",Zz="Select-module__optionActive___y280o",eK="Select-module__optionHighlighted___CPa3K",so={wrap:Hz,wrapFullWidth:Wz,trigger:Gz,triggerText:$z,placeholder:Xz,triggerIcon:Qz,dropdown:Yz,option:Jz,optionActive:Zz,optionHighlighted:eK},ju=8,qg=6,oL=240,rL=2010,tK=(t,e,n)=>Math.min(Math.max(t,e),n),nK=t=>{const e=t.getBoundingClientRect(),n=window.innerWidth,i=window.innerHeight,s=Math.min(e.width,Math.max(0,n-ju*2)),a=tK(e.left,ju,Math.max(ju,n-s-ju)),o=i-e.bottom-ju-qg,r=e.top-ju-qg,c=o>=oL||o>=r?"down":"up",d=Math.max(0,Math.min(oL,c==="down"?o:r));return c==="down"?{position:"fixed",top:e.bottom+qg,left:a,width:s,maxHeight:d,zIndex:rL}:{position:"fixed",bottom:i-e.top+qg,left:a,width:s,maxHeight:d,zIndex:rL}};function Hi({value:t,options:e,onChange:n,placeholder:i,className:s,disabled:a=!1,ariaLabel:o,ariaLabelledBy:r,ariaDescribedBy:c,fullWidth:d=!0,id:f}){const p=S.useId(),g=f??p,y=`${g}-listbox`,[_,v]=S.useState(!1),[x,k]=S.useState(-1),C=S.useRef(null),N=S.useRef(null),L=S.useRef(null),[M,O]=S.useState(null),T=_&&!a;S.useEffect(()=>{if(!_||a)return;const Q=W=>{const D=W.target;C.current?.contains(D)||N.current?.contains(D)||v(!1)};return document.addEventListener("mousedown",Q),()=>document.removeEventListener("mousedown",Q)},[a,_]);const P=S.useCallback(()=>{C.current&&O(nK(C.current))},[]),E=S.useCallback(()=>{typeof window>"u"||(L.current!==null&&window.cancelAnimationFrame(L.current),L.current=window.requestAnimationFrame(()=>{L.current=null,P()}))},[P]);S.useLayoutEffect(()=>{if(!T){L.current!==null&&typeof window<"u"&&(window.cancelAnimationFrame(L.current),L.current=null);return}P();const Q=()=>{E()},W=typeof ResizeObserver<"u"&&C.current?new ResizeObserver(()=>{E()}):null;return W&&C.current&&W.observe(C.current),window.addEventListener("resize",Q),window.addEventListener("scroll",Q,!0),()=>{window.removeEventListener("resize",Q),window.removeEventListener("scroll",Q,!0),W?.disconnect(),L.current!==null&&(window.cancelAnimationFrame(L.current),L.current=null)}},[T,E,P]);const R=S.useMemo(()=>e.findIndex(Q=>Q.value===t),[e,t]),q=x>=0?x:R>=0?R:e.length>0?0:-1,I=R>=0?e[R]:void 0,Y=I?.label??i??"",X=!I&&i,K=S.useCallback(Q=>{const W=e[Q];W&&(n(W.value),v(!1),k(Q))},[n,e]),B=S.useCallback(Q=>{if(e.length===0)return;const W=(q+Q+e.length)%e.length;k(W)},[e.length,q]),H=S.useCallback(Q=>{if(!a)switch(Q.key){case"ArrowDown":if(Q.preventDefault(),!T){v(!0);return}B(1);return;case"ArrowUp":if(Q.preventDefault(),!T){v(!0);return}B(-1);return;case"Home":if(!T||e.length===0)return;Q.preventDefault(),k(0);return;case"End":if(!T||e.length===0)return;Q.preventDefault(),k(e.length-1);return;case"Enter":case" ":{if(Q.preventDefault(),!T){v(!0);return}q>=0&&K(q);return}case"Escape":if(!T)return;Q.preventDefault(),v(!1);return;case"Tab":T&&v(!1);return;default:return}},[K,a,T,B,e.length,q]);S.useEffect(()=>{if(!T||q<0)return;document.getElementById(`${g}-option-${q}`)?.scrollIntoView({block:"nearest"})},[T,q,g]);const z=T&&M?h.jsx("div",{ref:N,className:so.dropdown,id:y,role:"listbox","aria-label":o,style:M,children:e.map((Q,W)=>{const D=Q.value===t,U=W===q;return h.jsx("button",{id:`${g}-option-${W}`,type:"button",role:"option","aria-selected":D,className:`${so.option} ${D?so.optionActive:""} ${U?so.optionHighlighted:""}`.trim(),onMouseEnter:()=>k(W),onKeyDown:H,onClick:()=>K(W),children:Q.label},Q.value)})}):null;return h.jsxs(h.Fragment,{children:[h.jsx("div",{className:`${so.wrap} ${d?so.wrapFullWidth:""} ${s??""}`,ref:C,children:h.jsxs("button",{id:g,type:"button",className:so.trigger,onClick:a?void 0:()=>v(Q=>!Q),onKeyDown:H,"aria-haspopup":"listbox","aria-expanded":T,"aria-controls":T?y:void 0,"aria-activedescendant":T&&q>=0?`${g}-option-${q}`:void 0,"aria-label":o,"aria-labelledby":r,"aria-describedby":c,disabled:a,children:[h.jsx("span",{className:`${so.triggerText} ${X?so.placeholder:""}`,children:Y}),h.jsx("span",{className:so.triggerIcon,"aria-hidden":"true",children:h.jsx(Py,{size:14})})]})}),z&&(typeof document>"u"?z:Po.createPortal(z,document.body))]})}const iK="SelectionCheckbox-module__root___LiMQt",sK="SelectionCheckbox-module__disabled___-T-uP",aK="SelectionCheckbox-module__input___b-Hpm",oK="SelectionCheckbox-module__box___FRD4m",rK="SelectionCheckbox-module__boxChecked___4lydu",lK="SelectionCheckbox-module__label___twhQj",Ru={root:iK,disabled:sK,input:aK,box:oK,boxChecked:rK,label:lK};function Nl({checked:t,onChange:e,label:n,ariaLabel:i,title:s,disabled:a=!1,className:o,labelClassName:r}){const c=[Ru.root,a?Ru.disabled:"",o].filter(Boolean).join(" "),d=[Ru.box,t?Ru.boxChecked:""].filter(Boolean).join(" "),f=[Ru.label,r].filter(Boolean).join(" "),p=g=>{e(g.target.checked)};return h.jsxs("label",{className:c,title:s,children:[h.jsx("input",{className:Ru.input,type:"checkbox",checked:t,onChange:p,"aria-label":i,disabled:a}),h.jsx("span",{className:d,children:t?h.jsx(Rw,{size:12}):null}),n?h.jsx("div",{className:f,children:n}):null]})}const lL=t=>{let e;const n=new Set,i=(d,f)=>{const p=typeof d=="function"?d(e):d;if(!Object.is(p,e)){const g=e;e=f??(typeof p!="object"||p===null)?p:Object.assign({},e,p),n.forEach(y=>y(e,g))}},s=()=>e,r={setState:i,getState:s,getInitialState:()=>c,subscribe:d=>(n.add(d),()=>n.delete(d))},c=e=t(i,s,r);return r},cK=(t=>t?lL(t):lL),uK=t=>t;function dK(t,e=uK){const n=xo.useSyncExternalStore(t.subscribe,xo.useCallback(()=>e(t.getState()),[t,e]),xo.useCallback(()=>e(t.getInitialState()),[t,e]));return xo.useDebugValue(n),n}const cL=t=>{const e=cK(t),n=i=>dK(e,i);return Object.assign(n,e),n},Eo=(t=>t?cL(t):cL);function Dw(){return`${Date.now()}-${Math.random().toString(36).substr(2,9)}`}const hK=t=>t,n4=30*1e3,fK=8317,R2="/v0/management",uL=30*1e3,mK=["x-cpa-version","x-server-version"],pK=["x-cpa-build-date","x-server-build-date"],zg=60*1e3,P0=10*1024*1024,i4="cli-proxy-auth",gK="cli-proxy-theme",s4="cli-proxy-language",cd=hK(["zh-CN","en","ru"]),a4={"zh-CN":"language.chinese",en:"language.english",ru:"language.russian"},_K=cd,yK=3e3,mn=Eo(t=>({notifications:[],confirmation:{isOpen:!1,isLoading:!1,options:null},showNotification:(e,n="info",i=yK)=>{const s=Dw(),a={id:s,message:e,type:n,duration:i};t(o=>({notifications:[...o.notifications,a]})),i>0&&setTimeout(()=>{t(o=>({notifications:o.notifications.filter(r=>r.id!==s)}))},i)},removeNotification:e=>{t(n=>({notifications:n.notifications.filter(i=>i.id!==e)}))},clearAll:()=>{t({notifications:[]})},showConfirmation:e=>{t({confirmation:{isOpen:!0,isLoading:!1,options:e}})},hideConfirmation:()=>{t(e=>({confirmation:{...e.confirmation,isOpen:!1,options:null}}))},setConfirmationLoading:e=>{t(n=>({confirmation:{...n.confirmation,isLoading:e}}))}}));function o4(t,e){let n;try{n=t()}catch{return}return{getItem:s=>{var a;const o=c=>c===null?null:JSON.parse(c,void 0),r=(a=n.getItem(s))!=null?a:null;return r instanceof Promise?r.then(o):o(r)},setItem:(s,a)=>n.setItem(s,JSON.stringify(a,void 0)),removeItem:s=>n.removeItem(s)}}const D2=t=>e=>{try{const n=t(e);return n instanceof Promise?n:{then(i){return D2(i)(n)},catch(i){return this}}}catch(n){return{then(i){return this},catch(i){return D2(i)(n)}}}},bK=(t,e)=>(n,i,s)=>{let a={storage:o4(()=>localStorage),partialize:v=>v,version:0,merge:(v,x)=>({...x,...v}),...e},o=!1;const r=new Set,c=new Set;let d=a.storage;if(!d)return t((...v)=>{console.warn(`[zustand persist middleware] Unable to update item '${a.name}', the given storage is currently unavailable.`),n(...v)},i,s);const f=()=>{const v=a.partialize({...i()});return d.setItem(a.name,{state:v,version:a.version})},p=s.setState;s.setState=(v,x)=>(p(v,x),f());const g=t((...v)=>(n(...v),f()),i,s);s.getInitialState=()=>g;let y;const _=()=>{var v,x;if(!d)return;o=!1,r.forEach(C=>{var N;return C((N=i())!=null?N:g)});const k=((x=a.onRehydrateStorage)==null?void 0:x.call(a,(v=i())!=null?v:g))||void 0;return D2(d.getItem.bind(d))(a.name).then(C=>{if(C)if(typeof C.version=="number"&&C.version!==a.version){if(a.migrate){const N=a.migrate(C.state,C.version);return N instanceof Promise?N.then(L=>[!0,L]):[!0,N]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}else return[!1,C.state];return[!1,void 0]}).then(C=>{var N;const[L,M]=C;if(y=a.merge(M,(N=i())!=null?N:g),n(y,!0),L)return f()}).then(()=>{k?.(y,void 0),y=i(),o=!0,c.forEach(C=>C(y))}).catch(C=>{k?.(void 0,C)})};return s.persist={setOptions:v=>{a={...a,...v},v.storage&&(d=v.storage)},clearStorage:()=>{d?.removeItem(a.name)},getOptions:()=>a,rehydrate:()=>_(),hasHydrated:()=>o,onHydrate:v=>(r.add(v),()=>{r.delete(v)}),onFinishHydration:v=>(c.add(v),()=>{c.delete(v)})},a.skipHydration||_(),y||g},Fw=bK,vK=()=>window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light",r4=()=>vK()==="dark"?"dark":"white",dL=t=>t==="dark"?"dark":"light",xK=t=>t==="auto"?r4():t==="white"?"white":t,hL=t=>{if(t==="dark"){document.documentElement.setAttribute("data-theme","dark");return}if(t==="white"){document.documentElement.setAttribute("data-theme","white");return}document.documentElement.removeAttribute("data-theme")},Aa=Eo()(Fw((t,e)=>({theme:"auto",resolvedTheme:"light",setTheme:n=>{const i=xK(n);hL(i),t({theme:n,resolvedTheme:dL(i)})},cycleTheme:()=>{const{theme:n,setTheme:i}=e(),s=["light","white","dark","auto"],a=s.indexOf(n),o=s[(a+1)%s.length];i(o)},initializeTheme:()=>{const{theme:n,setTheme:i}=e();if(i(n),!window.matchMedia)return()=>{};const s=window.matchMedia("(prefers-color-scheme: dark)"),a=()=>{const{theme:o}=e();if(o==="auto"){const r=r4();hL(r),t({resolvedTheme:dL(r)})}};return s.addEventListener("change",a),()=>s.removeEventListener("change",a)}}),{name:gK})),SK={login:"登录",logout:"登出",back:"返回",cancel:"取消",confirm:"确认",leave:"离开",stay:"继续编辑",save:"保存",delete:"删除",edit:"编辑",add:"添加",update:"更新",refresh:"刷新",close:"关闭",success:"成功",error:"错误",info:"信息",warning:"警告",loading:"加载中...",connecting:"连接中...",connected:"已连接",disconnected:"未连接",connecting_status:"连接中",connected_status:"已连接",disconnected_status:"未连接",yes:"是",no:"否",not_set:"未设置",optional:"可选",required:"必填",api_key:"密钥",base_url:"地址",prefix:"前缀",proxy_url:"代理",priority:"优先级",alias:"别名",failure:"失败",unknown_error:"未知错误",quota_update_required:"请更新 CPA 版本或检查更新",quota_check_credential:"请检查凭证状态",copy:"复制",expand:"展开",collapse:"收起",status:"状态",action:"操作",custom_headers_label:"自定义请求头",custom_headers_hint:"可选,设置需要附带到请求中的 HTTP 头,名称和值均不能为空。",custom_headers_add:"添加请求头",custom_headers_key_placeholder:"Header 名称,例如 X-Custom-Header",custom_headers_value_placeholder:"Header 值",model_name_placeholder:"模型名称,例如 claude-3-5-sonnet-20241022",model_alias_placeholder:"模型别名 (可选)",invalid_provider_index:"无效的提供商索引。",unsaved_changes_title:"未保存的更改",unsaved_changes_message:"你有未保存的更改,离开后将丢失这些更改。确定要离开吗?"},wK={main:"CLI Proxy API Management Center",login:"CLI Proxy API Management Center",abbr:"CPAMC"},kK={title:"CLI Proxy API",subtitle:"管理中心"},CK={title:"正在自动登录...",message:"正在使用本地保存的连接信息尝试连接服务器"},AK={subtitle:"请输入连接信息以访问管理界面",connection_title:"连接地址",connection_current:"当前地址",connection_auto_hint:"系统将自动使用当前访问地址进行连接",custom_connection_label:"自定义连接地址:",custom_connection_placeholder:"例如: https://example.com:8317",custom_connection_hint:"默认使用当前访问地址,若需要可手动输入其他地址。",use_current_address:"使用当前地址",remember_password_label:"记住密码",management_key_label:"管理密钥:",management_key_placeholder:"请输入管理密钥",connect_button:"连接",submit_button:"登录",submitting:"连接中...",error_title:"登录失败",error_required:"请填写完整的连接信息",error_invalid:"连接失败,请检查地址和密钥",error_network:"网络连接失败,请检查网络或服务器地址",error_timeout:"连接超时,服务器无响应",error_unauthorized:"认证失败,管理密钥无效",error_forbidden:"访问被拒绝,权限不足",error_not_found:"服务器地址无效或管理接口未启用",error_server:"服务器内部错误,请稍后重试",error_cors:"跨域请求被阻止,请检查服务器配置",error_ssl:"SSL/TLS 证书验证失败"},NK={check_connection:"检查连接",refresh_all:"刷新全部",logout:"登出"},TK={title:"连接信息",server_address:"服务器地址:",management_key:"管理密钥:",status:"连接状态:"},MK={dashboard:"仪表盘",basic_settings:"基础设置",api_keys:"API 密钥",ai_providers:"AI 提供商",auth_files:"认证文件",oauth:"OAuth 登录",quota_management:"配额管理",usage_stats:"使用统计",config_management:"配置面板",logs:"日志查看",system_info:"中心信息"},LK={title:"仪表盘",subtitle:"欢迎使用 CLI Proxy API 管理中心",openai_providers:"OpenAI 提供商",quick_actions:"快捷操作",current_config:"当前配置",management_keys:"管理密钥",provider_keys_detail:"G:{{gemini}} C:{{codex}} Cl:{{claude}} O:{{openai}}",oauth_credentials:"OAuth 凭证",usage_overview:"使用概览",total_requests:"总请求数",total_tokens:"总 Token 数",rpm_30min:"RPM (30分钟)",tpm_30min:"TPM (30分钟)",models_used:"使用模型数",no_usage_data:"暂无使用数据",view_detailed_usage:"查看详细统计",edit_settings:"编辑设置",routing_strategy:"路由策略",available_models:"可用模型",available_models_desc:"所有提供商的模型总数",welcome_back:"欢迎回来",greeting_morning:"早上好",greeting_afternoon:"下午好",greeting_evening:"晚上好",greeting_night:"夜深了",caring_morning:"新的一天,准备大展身手吧。",caring_afternoon:"稳步推进中,继续加油。",caring_evening:"今天辛苦了,收尾工作做好哦。",caring_night:"夜深了,别忘了早些休息。",system_overview:"系统概览"},OK={title:"基础设置",debug_title:"调试模式",debug_enable:"启用调试模式",proxy_title:"代理设置",proxy_url_label:"代理 URL:",proxy_url_placeholder:"例如: socks5://user:pass@127.0.0.1:1080/",proxy_update:"更新",proxy_clear:"清空",retry_title:"请求重试",retry_count_label:"重试次数:",retry_update:"更新",quota_title:"配额超出行为",quota_switch_project:"自动切换项目",quota_switch_preview:"切换到预览模型",usage_statistics_title:"使用统计",usage_statistics_enable:"启用使用统计",logging_title:"日志记录",logging_to_file_enable:"启用日志记录到文件",logs_max_total_size_title:"日志容量限制",logs_max_total_size_label:"日志总大小上限 (MB):",logs_max_total_size_hint:"设置为 0 表示不限制。",logs_max_total_size_update:"更新",request_log_title:"请求日志",request_log_enable:"启用请求日志",request_log_warning:"仅在需要排查问题时开启,日常请保持关闭。",force_model_prefix_enable:"强制模型前缀",ws_auth_title:"WebSocket 鉴权",ws_auth_enable:"启用 /ws/* 鉴权",routing_title:"路由策略",routing_strategy_label:"路由策略:",routing_strategy_hint:"round-robin 为轮询,fill-first 为优先填充。",routing_strategy_update:"更新",routing_strategy_round_robin:"round-robin (轮询)",routing_strategy_fill_first:"fill-first (优先填充)"},PK={title:"API 密钥管理",proxy_auth_title:"代理服务认证密钥",add_button:"添加密钥",empty_title:"暂无API密钥",empty_desc:"点击上方按钮添加第一个密钥",item_title:"API密钥",add_modal_title:"添加API密钥",add_modal_key_label:"API密钥:",add_modal_key_placeholder:"请输入API密钥",edit_modal_title:"编辑API密钥",edit_modal_key_label:"API密钥:",delete_confirm:"确定要删除这个API密钥吗?"},EK=JSON.parse('{"title":"AI 提供商配置","gemini_title":"Gemini API 密钥","gemini_add_button":"添加密钥","gemini_empty_title":"暂无Gemini密钥","gemini_empty_desc":"点击上方按钮添加第一个密钥","gemini_item_title":"Gemini密钥","gemini_add_modal_title":"添加Gemini API密钥","gemini_add_modal_key_label":"API密钥","gemini_add_modal_key_placeholder":"输入 Gemini API 密钥","gemini_add_modal_key_hint":"逐条输入密钥,可同时指定可选 Base URL。","gemini_keys_add_btn":"添加密钥","gemini_base_url_label":"Base URL (可选)","gemini_base_url_placeholder":"例如: https://generativelanguage.googleapis.com","gemini_add_modal_proxy_label":"代理 URL (可选):","gemini_add_modal_proxy_placeholder":"例如: socks5://proxy.example.com:1080","gemini_models_label":"自定义模型 (可选):","gemini_models_hint":"为空表示使用全部模型;可填写 name[, alias] 以限制或重命名模型。","gemini_models_add_btn":"添加模型","gemini_models_fetch_button":"从 /v1beta/models 获取","gemini_models_fetch_title":"从 Gemini /v1beta/models 选择模型","gemini_models_fetch_hint":"按 Gemini API 规范请求 GET /v1beta/models;默认附带 x-goog-api-key(来自 API Key 字段)并合并你配置的自定义请求头。","gemini_models_fetch_url_label":"请求地址","gemini_models_fetch_refresh":"重新获取","gemini_models_fetch_loading":"正在从 Gemini /v1beta/models 获取模型列表...","gemini_models_fetch_empty":"未获取到模型,请检查 Base URL、API Key 或请求头。","gemini_models_fetch_error":"获取 Gemini 模型失败","gemini_models_fetch_apply":"添加所选模型","model_discovery_select_visible":"全选当前列表","model_discovery_clear_selection":"清空已选","model_discovery_selected_count":"已选 {{count}} 项","gemini_models_search_label":"搜索模型","gemini_models_search_placeholder":"按名称、别名或描述筛选","gemini_models_search_empty":"没有匹配的模型,请更换关键字试试。","gemini_models_fetch_added":"已添加 {{count}} 个新模型","gemini_models_count":"模型数量","gemini_edit_modal_title":"编辑Gemini API密钥","gemini_edit_modal_key_label":"API密钥:","gemini_delete_confirm":"确定要删除这个Gemini密钥吗?","excluded_models_label":"排除的模型 (可选):","excluded_models_placeholder":"用逗号或换行分隔,例如: gemini-1.5-pro, gemini-1.5-flash","excluded_models_hint":"留空表示不过滤;保存时会自动去重并忽略空白。","excluded_models_count":"排除 {{count}} 个模型","prefix_label":"前缀 (可选):","prefix_placeholder":"例如: team-a","prefix_hint":"设置后可用 prefix/<model> 选择该条目。","priority_label":"优先级 (可选):","priority_hint":"数值越大优先级越高;留空表示默认(0)。","config_toggle_label":"启用","config_disabled_badge":"已停用","codex_title":"Codex API 配置","codex_add_button":"添加配置","codex_empty_title":"暂无Codex配置","codex_empty_desc":"点击上方按钮添加第一个配置","codex_item_title":"Codex配置","codex_add_modal_title":"添加Codex API配置","codex_add_modal_key_label":"API密钥:","codex_add_modal_key_placeholder":"请输入Codex API密钥","codex_add_modal_url_label":"Base URL (必填):","codex_add_modal_url_placeholder":"例如: https://api.example.com","codex_add_modal_proxy_label":"代理 URL (可选):","codex_add_modal_proxy_placeholder":"例如: socks5://proxy.example.com:1080","codex_websockets_label":"Websockets","codex_websockets_hint":"开启 Responses API 的 websocket 传输。","codex_models_label":"自定义模型 (可选):","codex_models_hint":"为空表示使用全部模型;可填写 name[, alias] 以限制或重命名模型。","codex_models_add_btn":"添加模型","codex_models_fetch_button":"从 /v1/models 获取","codex_models_fetch_title":"从 /v1/models 选择模型","codex_models_fetch_hint":"使用上方 Base URL 调用 /v1/models 端点,附带 API KeyBearer)与自定义请求头。","codex_models_fetch_url_label":"请求地址","codex_models_fetch_refresh":"重新获取","codex_models_fetch_loading":"正在从 /v1/models 获取模型列表...","codex_models_fetch_empty":"未获取到模型,请检查端点或鉴权信息。","codex_models_fetch_error":"获取模型失败","codex_models_fetch_apply":"添加所选模型","codex_models_search_label":"搜索模型","codex_models_search_placeholder":"按名称、别名或描述筛选","codex_models_search_empty":"没有匹配的模型,请更换关键字试试。","codex_models_fetch_added":"已添加 {{count}} 个新模型","codex_models_count":"模型数量","codex_edit_modal_title":"编辑Codex API配置","codex_edit_modal_key_label":"API密钥:","codex_edit_modal_url_label":"Base URL (必填):","codex_edit_modal_proxy_label":"代理 URL (可选):","codex_delete_confirm":"确定要删除这个Codex配置吗?","claude_title":"Claude API 配置","claude_add_button":"添加配置","claude_empty_title":"暂无Claude配置","claude_empty_desc":"点击上方按钮添加第一个配置","claude_item_title":"Claude配置","claude_add_modal_title":"添加Claude API配置","claude_add_modal_key_label":"API密钥:","claude_add_modal_key_placeholder":"请输入Claude API密钥","claude_add_modal_url_label":"Base URL (可选):","claude_add_modal_url_placeholder":"例如: https://api.anthropic.com","claude_add_modal_proxy_label":"代理 URL (可选):","claude_add_modal_proxy_placeholder":"例如: socks5://proxy.example.com:1080","claude_edit_modal_title":"编辑Claude API配置","claude_edit_modal_key_label":"API密钥:","claude_edit_modal_url_label":"Base URL (可选):","claude_edit_modal_proxy_label":"代理 URL (可选):","claude_delete_confirm":"确定要删除这个Claude配置吗?","claude_models_label":"自定义模型 (可选):","claude_models_hint":"为空表示使用全部模型;可填写 name[, alias] 以限制或重命名模型。","claude_models_add_btn":"添加模型","claude_models_count":"模型数量","claude_models_fetch_button":"从 /v1/models 获取","claude_models_fetch_title":"从 Claude /v1/models 选择模型","claude_models_fetch_hint":"按 Anthropic 规范请求 GET /v1/models,默认附带 x-api-key 与 anthropic-version: 2023-06-01;也会合并你配置的自定义请求头。","claude_models_fetch_url_label":"请求地址","claude_models_fetch_refresh":"重新获取","claude_models_fetch_loading":"正在从 Claude /v1/models 获取模型列表...","claude_models_fetch_empty":"未获取到模型,请检查 Base URL、API Key 或请求头。","claude_models_fetch_error":"获取 Claude 模型失败","claude_models_fetch_apply":"添加所选模型","claude_models_search_label":"搜索模型","claude_models_search_placeholder":"按名称、别名或描述筛选","claude_models_search_empty":"没有匹配的模型,请更换关键字试试。","claude_models_fetch_added":"已添加 {{count}} 个新模型","claude_test_title":"连通性测试","claude_test_hint":"按 Anthropic 规范向 /v1/messages 发送测试请求,验证当前配置是否可用。","claude_test_select_placeholder":"从当前模型列表选择","claude_test_select_empty":"当前未配置模型,请先添加模型","claude_test_action":"测试","claude_test_running":"正在发送 Claude 测试请求...","claude_test_timeout":"测试请求超时({{seconds}}秒)。","claude_test_success":"测试成功,Claude 模型可用。","claude_test_failed":"测试失败","claude_test_key_required":"请先填写 Claude API Key 或在自定义请求头中设置 x-api-key","claude_test_model_required":"请选择要测试的模型","claude_test_endpoint_invalid":"无法构造有效的 Claude /v1/messages 请求地址","claude_cloak_title":"请求伪装 (可选):","claude_cloak_toggle_label":"启用","claude_cloak_toggle_aria":"切换请求伪装","claude_cloak_hint":"对非 Claude Code 客户端,将请求伪装成 Claude Code CLI 的格式。","claude_cloak_mode_label":"模式:","claude_cloak_mode_hint":"auto: 仅对非 Claude Code 客户端伪装;always: 总是伪装;never: 从不伪装。","claude_cloak_mode_auto":"自动(仅非 Claude Code","claude_cloak_mode_always":"总是","claude_cloak_mode_never":"从不","claude_cloak_strict_label":"严格模式:","claude_cloak_strict_hint":"启用后会移除用户 system 消息,仅保留 Claude Code 提示词。","claude_cloak_sensitive_words_label":"敏感词 (可选):","claude_cloak_sensitive_words_placeholder":"用逗号或换行分隔,例如: internal-project","claude_cloak_sensitive_words_hint":"这些词会被插入零宽字符进行混淆。","claude_cloak_sensitive_words_count":"敏感词","vertex_title":"Vertex API 配置","vertex_add_button":"添加配置","vertex_empty_title":"暂无Vertex配置","vertex_empty_desc":"点击上方按钮添加第一个配置","vertex_item_title":"Vertex配置","vertex_add_modal_title":"添加Vertex API配置","vertex_add_modal_key_label":"API密钥:","vertex_add_modal_key_placeholder":"请输入Vertex API密钥","vertex_add_modal_url_label":"Base URL:","vertex_add_modal_url_placeholder":"例如: https://example.com/api","vertex_add_modal_proxy_label":"代理 URL (可选):","vertex_add_modal_proxy_placeholder":"例如: socks5://proxy.example.com:1080","vertex_edit_modal_title":"编辑Vertex API配置","vertex_edit_modal_key_label":"API密钥:","vertex_edit_modal_url_label":"Base URL:","vertex_edit_modal_proxy_label":"代理 URL (可选):","vertex_delete_confirm":"确定要删除这个Vertex配置吗?","vertex_models_label":"模型别名:","vertex_models_add_btn":"添加映射","vertex_models_count":"别名数量","ampcode_title":"Amp CLI 集成 (ampcode)","ampcode_modal_title":"配置 Ampcode","ampcode_upstream_url_label":"Upstream URL","ampcode_upstream_url_placeholder":"例如: https://ampcode.com","ampcode_upstream_url_hint":"可选;留空表示使用默认/自动发现的控制平面地址。","ampcode_upstream_api_key_label":"Upstream API Key (Amp官方)","ampcode_upstream_api_key_placeholder":"输入 sk-amp...(留空不修改)","ampcode_upstream_api_key_hint":"可选;留空不会修改当前Amp官方密钥,需清除请点击下方按钮。","ampcode_upstream_api_key_current":"当前Amp官方密钥: {{key}}","ampcode_clear_upstream_api_key":"清除官方密钥","ampcode_clear_upstream_api_key_confirm":"确定要清除 Ampcode 的 upstream API keyAmp官方)吗?","ampcode_upstream_api_keys_label":"多上游 API Key 路由","ampcode_upstream_api_keys_hint":"为指定客户端 API Key 绑定不同的 Amp 上游 API Key;客户端 key 可用逗号或换行分隔。","ampcode_upstream_api_keys_add_btn":"添加多上游映射","ampcode_upstream_api_keys_upstream_placeholder":"上游 API Keysk-amp-...","ampcode_upstream_api_keys_clients_placeholder":"客户端 API Keys,用逗号或换行分隔","ampcode_upstream_api_keys_item_title":"上游映射 #{{index}}","ampcode_upstream_api_keys_count":"多上游映射","ampcode_force_model_mappings_label":"强制应用模型映射","ampcode_force_model_mappings_hint":"开启后,模型映射将覆盖本地 API Key 可用性判断。","ampcode_model_mappings_label":"模型映射 (from → to)","ampcode_model_mappings_hint":"用于重写 Amp 请求中的模型名称;留空表示不做映射。","ampcode_model_mappings_add_btn":"添加映射","ampcode_model_mappings_from_placeholder":"from 模型(原始)","ampcode_model_mappings_to_placeholder":"to 模型(目标)","ampcode_model_mappings_count":"映射数量","ampcode_lists_overwrite_title":"覆盖列表配置","ampcode_lists_overwrite_confirm":"当前未成功加载服务器已有多上游/模型映射配置,继续保存可能覆盖或清空这些列表,是否继续?","ampcode_mappings_overwrite_confirm":"当前未成功加载服务器已有映射,继续保存可能覆盖或清空已有映射,是否继续?","openai_title":"OpenAI 兼容提供商","openai_add_button":"添加提供商","openai_empty_title":"暂无OpenAI兼容提供商","openai_empty_desc":"点击上方按钮添加第一个提供商","openai_add_modal_title":"添加OpenAI兼容提供商","openai_add_modal_name_label":"提供商名称:","openai_add_modal_name_placeholder":"例如: openrouter","openai_add_modal_url_label":"Base URL:","openai_add_modal_url_placeholder":"例如: https://openrouter.ai/api/v1","openai_add_modal_keys_label":"API密钥","openai_edit_modal_keys_label":"API密钥","openai_keys_hint":"每个密钥可搭配一个可选代理地址,更便于管理。","openai_keys_add_btn":"添加密钥","openai_key_placeholder":"输入 sk- 开头的密钥","openai_proxy_placeholder":"可选代理 URL (如 socks5://...)","openai_add_modal_models_label":"模型列表 (name[, alias] 每行一个):","openai_models_hint":"示例:gpt-4o-mini 或 moonshotai/kimi-k2:free, kimi-k2","openai_model_name_placeholder":"模型名称,如 moonshotai/kimi-k2:free","openai_model_alias_placeholder":"模型别名 (可选)","openai_models_add_btn":"添加模型","openai_models_fetch_button":"从 /models 获取","openai_models_fetch_title":"从 /models 选择模型","openai_models_fetch_hint":"使用上方 Base URL 调用 /models 端点,附带首个 API KeyBearer)与自定义请求头。","openai_models_fetch_url_label":"请求地址","openai_models_fetch_refresh":"重新获取","openai_models_fetch_loading":"正在从 /models 获取模型列表...","openai_models_fetch_empty":"未获取到模型,请检查端点或鉴权信息。","openai_models_fetch_error":"获取模型失败","openai_models_fetch_back":"返回编辑","openai_models_fetch_apply":"添加所选模型","openai_models_search_label":"搜索模型","openai_models_search_placeholder":"按名称、别名或描述筛选","openai_models_search_empty":"没有匹配的模型,请更换关键字试试。","openai_models_fetch_invalid_url":"请先填写有效的 Base URL","openai_models_fetch_added":"已添加 {{count}} 个新模型","openai_edit_modal_title":"编辑OpenAI兼容提供商","openai_edit_modal_name_label":"提供商名称:","openai_edit_modal_url_label":"Base URL:","openai_edit_modal_models_label":"模型列表 (name[, alias] 每行一个):","openai_delete_confirm":"确定要删除这个OpenAI提供商吗?","openai_keys_count":"密钥数量","openai_models_count":"模型数量","openai_test_title":"连通性测试","openai_test_hint":"使用当前配置向 /chat/completions 请求,验证是否可用。","openai_test_model_placeholder":"选择或输入要测试的模型","openai_test_action":"发送测试","openai_test_running":"正在发送测试请求...","openai_test_timeout":"测试请求超时({{seconds}}秒)。","openai_test_success":"测试成功,模型可用。","openai_test_failed":"测试失败","openai_test_select_placeholder":"从当前模型列表选择","openai_test_select_empty":"当前未配置模型,请先添加模型","openai_test_single_action":"测试","openai_test_all_action":"一键测试全部密钥","openai_test_all_hint":"测试所有密钥的连接状态","openai_test_all_success":"所有 {{count}} 个密钥测试通过","openai_test_all_failed":"所有 {{count}} 个密钥测试失败","openai_test_all_partial":"测试完成:{{success}} 个通过,{{failed}} 个失败"}'),jK={title:"认证文件管理",title_section:"认证文件",description:"这里集中管理 CLI Proxy 支持的所有 JSON 认证文件(如 Qwen、Gemini、Vertex 等),上传后即可在运行时启用相应的 AI 服务。",upload_button:"上传文件",delete_all_button:"删除全部",empty_title:"暂无认证文件",empty_desc:"点击上方按钮上传第一个文件",search_empty_title:"没有匹配的配置文件",search_empty_desc:"请调整筛选条件或清空搜索关键字再试一次。",file_size:"大小",file_modified:"修改时间",health_status_label:"健康状态",health_status_healthy:"健康",health_status_warning:"警告",health_status_disabled:"已停用",health_status_unknown:"未知",health_status_no_message:"暂无状态说明",last_refresh_label:"最近刷新",refresh_not_available:"暂无",refresh_just_now:"刚刚",download_button:"下载",delete_button:"删除",delete_confirm:"确定要删除文件",delete_all_confirm:"确定要删除所有认证文件吗?此操作不可恢复!",delete_filtered_confirm:"确定要删除筛选出的 {{type}} 认证文件吗?此操作不可恢复!",delete_problem_button:"删除问题凭证",delete_problem_button_with_type:"删除 {{type}} 问题凭证",delete_problem_confirm:"确定要删除所有有问题的认证文件吗?此操作不可恢复!",delete_problem_filtered_confirm:"确定要删除筛选出的有问题的 {{type}} 认证文件吗?此操作不可恢复!",upload_error_json:"只能上传JSON文件",upload_error_size:"文件大小不能超过 {{maxSize}}",upload_success:"文件上传成功",download_success:"文件下载成功",delete_success:"文件删除成功",delete_all_success:"成功删除",delete_filtered_success:"成功删除 {{count}} 个 {{type}} 认证文件",delete_filtered_partial:"{{type}} 认证文件删除完成,成功 {{success}} 个,失败 {{failed}} 个",delete_filtered_none:"当前筛选类型 ({{type}}) 下没有可删除的认证文件",delete_problem_success:"成功删除 {{count}} 个有问题的认证文件",delete_problem_filtered_success:"成功删除 {{count}} 个有问题的 {{type}} 认证文件",delete_problem_partial:"有问题认证文件删除完成,成功 {{success}} 个,失败 {{failed}} 个",delete_problem_filtered_partial:"有问题的 {{type}} 认证文件删除完成,成功 {{success}} 个,失败 {{failed}} 个",delete_problem_none:"当前没有可删除的有问题认证文件",delete_problem_filtered_none:"当前筛选类型 ({{type}}) 下没有可删除的有问题认证文件",files_count:"个文件",pagination_prev:"上一页",pagination_next:"下一页",pagination_info:"第 {{current}} / {{total}} 页 · 共 {{count}} 个文件",search_label:"搜索配置文件",search_placeholder:"输入名称、类型或提供方关键字,支持 * 通配",problem_filter_label:"问题筛选",problem_filter_only:"仅显示有问题凭证",display_options_label:"显示选项",compact_mode_label:"简略模式",sort_label:"排序",sort_default:"默认",sort_az:"A-Z 名称",sort_priority:"优先级",priority_display:"优先级",page_size_label:"单页数量",page_size_unit:"个/页",view_mode_paged:"按页显示",view_mode_all:"显示全部",too_many_files_warning:"您的凭证总数过多,全部加载会导致页面卡顿,请保持单页浏览。",filter_all:"全部",filter_qwen:"Qwen",filter_gemini:"Gemini","filter_gemini-cli":"GeminiCLI",filter_kimi:"Kimi",filter_aistudio:"AIStudio",filter_claude:"Claude",filter_codex:"Codex",filter_antigravity:"Antigravity",filter_iflow:"iFlow",filter_vertex:"Vertex",filter_empty:"空文件",filter_unknown:"其他",type_qwen:"Qwen",type_gemini:"Gemini","type_gemini-cli":"GeminiCLI",type_kimi:"Kimi",type_aistudio:"AIStudio",type_claude:"Claude",type_codex:"Codex",type_antigravity:"Antigravity",type_iflow:"iFlow",type_vertex:"Vertex",type_empty:"空文件",type_unknown:"其他",type_virtual:"虚拟认证文件",models_button:"模型",models_title:"支持的模型",models_loading:"正在加载模型列表...",models_empty:"该凭证暂无可用模型",models_empty_desc:"该认证凭证可能尚未被服务器加载或没有绑定任何模型",models_unsupported:"当前版本不支持此功能",models_unsupported_desc:"请更新 CLI Proxy API 到最新版本后重试",models_excluded_badge:"已禁用",models_excluded_hint:"此 OAuth 模型已被禁用",status_toggle_label:"启用",status_enabled_success:'已启用 "{{name}}"',status_disabled_success:'已停用 "{{name}}"',batch_status_success:"已成功更新 {{count}} 个文件",batch_status_partial:"成功 {{success}} 个,失败 {{failed}} 个",batch_delete_title:"删除选中文件",batch_delete_confirm:"确定要删除 {{count}} 个文件吗?",batch_selected:"已选 {{count}} 项",batch_select_all:"全选",batch_select_page:"全选当前页",batch_select_filtered:"全选筛选结果",batch_invert_page:"反选当前页",batch_deselect:"取消选择",batch_download:"下载选中",batch_download_success:"已开始下载 {{count}} 个文件",batch_download_partial:"下载完成:成功 {{success}} 个,失败 {{failed}} 个",batch_enable:"启用",batch_disable:"禁用",prefix_proxy_button:"认证文件详情 / 编辑",auth_field_editor_title:"认证文件详情 / 编辑 - {{name}}",prefix_proxy_loading:"正在加载认证文件...",prefix_proxy_info_label:"认证文件信息(info",prefix_proxy_source_label:"认证文件 JSON(预览)",prefix_label:"前缀(prefix",proxy_url_label:"代理 URLproxy_url",prefix_placeholder:"",proxy_url_placeholder:"socks5://username:password@proxy_ip:port/",priority_label:"优先级(priority",priority_placeholder:"例如: 10 或 -1",priority_hint:"仅支持整数;非法值会被忽略。数值越大优先级越高。",excluded_models_label:"排除模型(excluded_models",excluded_models_placeholder:"用逗号或换行分隔,例如: model-a, gpt-5-*, *-preview",excluded_models_hint:"保存为数组;会自动 trim、小写、去重并排序。",disable_cooling_label:"禁用冷却(disable_cooling",disable_cooling_placeholder:"例如: true / false / 1 / 0",disable_cooling_hint:"支持布尔值、0/非0 数字或字符串 true/false/1/0;无法解析时忽略。",note_label:"备注(note",note_placeholder:"输入备注信息,例如:张三的账号",note_hint:"可选,用于标记凭证用途或归属;留空则不写入。",note_display:"备注",prefix_proxy_invalid_json:"该认证文件不是 JSON 对象,无法编辑字段。",prefix_proxy_saved_success:'已更新认证文件 "{{name}}"',quota_refresh_success:'已刷新 "{{name}}" 的额度',quota_refresh_failed:'刷新 "{{name}}" 的额度失败:{{message}}'},RK={title:"Antigravity 额度",empty_title:"暂无 Antigravity 认证",empty_desc:"上传 Antigravity 认证文件后即可查看额度。",idle:"点击此处刷新额度",loading:"正在加载额度...",load_failed:"额度获取失败:{{message}}",missing_auth_index:"认证文件缺少 auth_index",empty_models:"暂无额度数据",refresh_button:"刷新额度",fetch_all:"获取全部"},DK={title:"Claude 额度",empty_title:"暂无 Claude OAuth 认证",empty_desc:"使用 Claude OAuth 登录后即可查看额度。",idle:"点击此处刷新额度",loading:"正在加载额度...",load_failed:"额度获取失败:{{message}}",missing_auth_index:"认证文件缺少 auth_index",empty_windows:"暂无额度数据",refresh_button:"刷新额度",fetch_all:"获取全部",five_hour:"5 小时限额",seven_day:"7 天限额",seven_day_oauth_apps:"7 天 OAuth 应用",seven_day_opus:"7 天 Opus",seven_day_sonnet:"7 天 Sonnet",seven_day_cowork:"7 天 Cowork",iguana_necktie:"Iguana Necktie",extra_usage_label:"额外用量",plan_label:"套餐",plan_unknown:"未知",plan_free:"免费版",plan_pro:"专业版",plan_max:"Max",plan_max5:"Max 5x",plan_max20:"Max 20x"},FK={title:"Codex 额度",empty_title:"暂无 Codex 认证",empty_desc:"上传 Codex 认证文件后即可查看额度。",idle:"点击此处刷新额度",loading:"正在加载额度...",load_failed:"额度获取失败:{{message}}",missing_auth_index:"认证文件缺少 auth_index",missing_account_id:"Codex 凭证缺少 ChatGPT 账号 ID",empty_windows:"暂无额度数据",no_access:"该凭证已无 Codex 访问权限(free)。",refresh_button:"刷新额度",fetch_all:"获取全部",primary_window:"5 小时限额",secondary_window:"周限额",code_review_primary_window:"代码审查 5 小时限额",code_review_secondary_window:"代码审查周限额",additional_primary_window:"{{name}} 5 小时限额",additional_secondary_window:"{{name}} 周限额",plan_label:"套餐",plan_plus:"Plus",plan_team:"Team",plan_free:"Free",plan_pro:"Pro"},IK={title:"Gemini CLI 额度",empty_title:"暂无 Gemini CLI 认证",empty_desc:"上传 Gemini CLI 认证文件后即可查看额度。",idle:"点击此处刷新额度",loading:"正在加载额度...",load_failed:"额度获取失败:{{message}}",missing_auth_index:"认证文件缺少 auth_index",missing_project_id:"Gemini CLI 凭证缺少 Project ID",empty_buckets:"暂无额度数据",refresh_button:"刷新额度",fetch_all:"获取全部",remaining_amount:"剩余 {{count}}",tier_label:"层级",tier_free:"免费版",tier_legacy:"旧版",tier_standard:"标准版",tier_pro:"Pro",tier_ultra:"Ultra",credit_label:"Google One AI 积分",credit_amount:"{{count}} 积分"},BK={title:"Kimi 额度",empty_title:"暂无 Kimi 认证",empty_desc:"上传 Kimi 认证文件后即可查看额度。",idle:"点击此处刷新额度",loading:"正在加载额度...",load_failed:"额度获取失败:{{message}}",missing_auth_index:"认证文件缺少 auth_index",empty_data:"暂无额度数据",refresh_button:"刷新额度",fetch_all:"获取全部",weekly_limit:"周限额",limit_window:"{{duration}} 限额",limit_index:"限额 #{{index}}",reset_hint:"{{hint}} 后重置"},UK={title:"Vertex JSON 登录",description:"上传 Google 服务账号 JSON,使用 CLI vertex-import 同步规则写入 auth-dir/vertex-<project>.json。",location_label:"目标区域 (可选)",location_placeholder:"us-central1",location_hint:"留空表示使用默认区域 us-central1。",file_label:"服务账号密钥 JSON",file_hint:"仅支持 Google Cloud service account key JSON 文件,私钥会自动规范化。",file_placeholder:"尚未选择文件",choose_file:"选择文件",import_button:"导入 Vertex 凭证",file_required:"请先选择 .json 凭证文件",success:"Vertex 凭证导入成功",result_title:"凭证已保存",result_project:"项目 ID",result_email:"服务账号",result_location:"区域",result_file:"存储文件"},qK={title:"OAuth 模型禁用",description:"按提供商分列展示,点击卡片编辑或删除;支持 * 通配符,范围跟随上方的配置文件过滤标签。",add:"新增禁用",add_title:"新增提供商模型禁用",edit_title:"编辑 {{provider}} 的模型禁用",refresh:"刷新",refreshing:"刷新中...",provider_label:"提供商",provider_auto:"跟随当前过滤",provider_placeholder:"例如 gemini-cli / openai",provider_hint:"默认选中当前筛选的提供商,也可直接输入或选择其他名称。",models_label:"禁用的模型",models_loading:"正在加载模型列表...",models_unsupported:"当前 CPA 版本不支持获取模型列表。",models_loaded:"已加载 {{count}} 个模型,勾选要禁用的模型。",no_models_available:"该提供商暂无可用模型列表。",save:"保存/更新",saving:"正在保存...",save_success:"模型禁用已更新",save_failed:"更新模型禁用失败",delete:"删除提供商",delete_confirm:"确定要删除 {{provider}} 的模型禁用吗?",delete_success:"已删除该提供商的模型禁用",delete_failed:"删除模型禁用失败",deleting:"正在删除...",no_models:"未配置禁用模型",model_count:"禁用 {{count}} 个模型",list_empty_all:"暂无任何提供商的模型禁用,点击“新增禁用”创建。",list_empty_filtered:"当前筛选下没有禁用项,点击“新增禁用”添加。",disconnected:"请先连接服务器以查看模型禁用",load_failed:"加载模型禁用失败",provider_required:"请先填写提供商名称",scope_all:"当前范围:全局(显示所有提供商)",scope_provider:"当前范围:{{provider}}",upgrade_required:"当前 CPA 版本不支持 OAuth 模型禁用,请升级 CPA 版本",upgrade_required_title:"需要升级 CPA 版本",upgrade_required_desc:"当前服务器版本不支持获取 OAuth 模型禁用功能,请升级到最新版本的 CPA(CLI Proxy API)后重试。"},zK={title:"OAuth 模型别名",add:"新增别名",add_title:"新增提供商模型别名",provider_label:"提供商",provider_placeholder:"例如 gemini-cli / vertex",provider_hint:"默认选中当前筛选的提供商,也可直接输入或选择其他名称。",model_source_loading:"正在加载模型列表...",model_source_unsupported:"当前 CPA 版本不支持获取模型列表(仍可手动输入)。",model_source_loaded:"已加载 {{count}} 个模型,可在“原模型名称”中下拉选择;也可手动输入。留空保存将删除该提供商记录;开启“保留原名”会在保留原模型名的同时新增别名。",alias_label:"模型别名",alias_name_placeholder:"原模型名称",alias_placeholder:"别名 (必填)",alias_fork_label:"保留原名",add_alias:"添加别名",save:"保存/更新",save_success:"模型别名已更新",save_failed:"更新模型别名失败",delete:"删除提供商",delete_confirm:"确定要删除 {{provider}} 的模型别名吗?",delete_link_title:"取消链接",delete_link_confirm:"确定取消 <code>{{sourceModel}}</code>{{provider}})到别名 <code>{{alias}}</code> 的映射?",delete_alias_title:"删除别名",delete_alias_confirm:"确定删除别名 <code>{{alias}}</code> 并取消所有关联模型的映射?",delete_success:"已删除该提供商的模型别名",delete_failed:"删除模型别名失败",no_models:"未配置模型别名",model_count:"{{count}} 条别名",list_empty_all:"暂无任何提供商的模型别名,点击“新增别名”创建。",chart_title:"全部映射概览",diagram_providers:"提供商",diagram_source_models:"源模型",diagram_aliases:"别名",diagram_expand:"展开",diagram_collapse:"收起",diagram_add_alias:"添加别名",diagram_rename:"重命名",diagram_rename_alias_title:"重命名别名",diagram_rename_alias_label:"新别名名称",diagram_rename_placeholder:"输入别名名称...",diagram_delete_link:"取消链接 {{provider}} / {{name}}",diagram_delete_alias:"删除别名",diagram_please_enter_alias:"请输入别名名称。",diagram_alias_exists:"该别名已存在。",diagram_add_alias_title:"添加别名",diagram_add_alias_label:"别名名称",diagram_add_placeholder:"输入新别名名称...",diagram_rename_btn:"重命名",diagram_add_btn:"添加",diagram_settings:"设置",diagram_settings_title:"别名设置 — {{alias}}",diagram_settings_source_title:"源模型设置",diagram_settings_empty:"该别名暂无映射。",diagram_tap_hint:"触摸设备上:先点选源模型,再点选别名即可建立映射。",view_mode:"视图模式",view_mode_diagram:"概览",view_mode_list:"管理",provider_required:"请先填写提供商名称",upgrade_required:"当前 CPA 版本不支持模型别名功能,请升级 CPA 版本",upgrade_required_title:"需要升级 CPA 版本",upgrade_required_desc:"当前服务器版本不支持 OAuth 模型别名功能,请升级到最新版本的 CPA(CLI Proxy API)后重试。"},KK={codex_oauth_title:"Codex OAuth",codex_oauth_button:"开始 Codex 登录",codex_oauth_hint:"通过 OAuth 流程登录 Codex 服务,自动获取并保存认证文件。",codex_oauth_url_label:"授权链接:",codex_open_link:"打开链接",codex_copy_link:"复制链接",codex_oauth_status_waiting:"等待认证中...",codex_oauth_status_success:"认证成功!",codex_oauth_status_error:"认证失败:",codex_oauth_start_error:"启动 Codex OAuth 失败:",codex_oauth_polling_error:"检查认证状态失败:",anthropic_oauth_title:"Anthropic OAuth",anthropic_oauth_button:"开始 Anthropic 登录",anthropic_oauth_hint:"通过 OAuth 流程登录 Anthropic (Claude) 服务,自动获取并保存认证文件。",anthropic_oauth_url_label:"授权链接:",anthropic_open_link:"打开链接",anthropic_copy_link:"复制链接",anthropic_oauth_status_waiting:"等待认证中...",anthropic_oauth_status_success:"认证成功!",anthropic_oauth_status_error:"认证失败:",anthropic_oauth_start_error:"启动 Anthropic OAuth 失败:",anthropic_oauth_polling_error:"检查认证状态失败:",antigravity_oauth_title:"Antigravity OAuth",antigravity_oauth_button:"开始 Antigravity 登录",antigravity_oauth_hint:"通过 OAuth 流程登录 AntigravityGoogle 账号)服务,自动获取并保存认证文件。",antigravity_oauth_url_label:"授权链接:",antigravity_open_link:"打开链接",antigravity_copy_link:"复制链接",antigravity_oauth_status_waiting:"等待认证中...",antigravity_oauth_status_success:"认证成功!",antigravity_oauth_status_error:"认证失败:",antigravity_oauth_start_error:"启动 Antigravity OAuth 失败:",antigravity_oauth_polling_error:"检查认证状态失败:",gemini_cli_oauth_title:"Gemini CLI OAuth",gemini_cli_oauth_button:"开始 Gemini CLI 登录",gemini_cli_oauth_hint:"通过 OAuth 流程登录 Google Gemini CLI 服务,自动获取并保存认证文件。",gemini_cli_project_id_label:"Google Cloud 项目 ID (可选):",gemini_cli_project_id_placeholder:"留空将自动选择第一个可用项目",gemini_cli_project_id_hint:"可选填写项目 ID。如不填写,系统将自动选择您账号下的第一个可用项目。输入 ALL 可获取全部项目。",gemini_cli_project_id_required:"请填写 Google Cloud 项目 ID。",gemini_cli_oauth_url_label:"授权链接:",gemini_cli_open_link:"打开链接",gemini_cli_copy_link:"复制链接",gemini_cli_oauth_status_waiting:"等待认证中...",gemini_cli_oauth_status_success:"认证成功!",gemini_cli_oauth_status_error:"认证失败:",gemini_cli_oauth_start_error:"启动 Gemini CLI OAuth 失败:",gemini_cli_oauth_polling_error:"检查认证状态失败:",kimi_oauth_title:"Kimi OAuth",kimi_oauth_button:"开始 Kimi 登录",kimi_oauth_hint:"通过设备授权流程登录 Kimi 服务,自动获取并保存认证文件。",kimi_oauth_url_label:"授权链接:",kimi_open_link:"打开链接",kimi_copy_link:"复制链接",kimi_oauth_status_waiting:"等待认证中...",kimi_oauth_status_success:"认证成功!",kimi_oauth_status_error:"认证失败:",kimi_oauth_start_error:"启动 Kimi OAuth 失败:",kimi_oauth_polling_error:"检查认证状态失败:",qwen_oauth_title:"Qwen OAuth",qwen_oauth_button:"开始 Qwen 登录",qwen_oauth_hint:"通过设备授权流程登录 Qwen 服务,自动获取并保存认证文件。",qwen_oauth_url_label:"授权链接:",qwen_open_link:"打开链接",qwen_copy_link:"复制链接",qwen_oauth_status_waiting:"等待认证中...",qwen_oauth_status_success:"认证成功!",qwen_oauth_status_error:"认证失败:",qwen_oauth_start_error:"启动 Qwen OAuth 失败:",qwen_oauth_polling_error:"检查认证状态失败:",oauth_callback_label:"回调 URL",oauth_callback_placeholder:"http://localhost:1455/auth/callback?code=...&state=...",oauth_callback_hint:"远程浏览器模式:当授权跳转到 http://localhost:... 后,复制完整 URL 并提交到这里。",oauth_callback_button:"提交回调 URL",oauth_callback_required:"请先粘贴完整的回调 URL。",oauth_callback_success:"回调 URL 已提交,请继续等待认证。",oauth_callback_error:"提交回调 URL 失败:",oauth_callback_upgrade_hint:"请更新CLI Proxy API或检查连接",oauth_callback_status_success:"回调 URL 已提交,等待认证中...",oauth_callback_status_error:"回调 URL 提交失败:",missing_state:"无法获取认证状态参数",iflow_oauth_title:"iFlow OAuth",iflow_oauth_button:"开始 iFlow 登录",iflow_oauth_hint:"通过 OAuth 流程登录 iFlow 服务,自动获取并保存认证文件。",iflow_oauth_url_label:"授权链接:",iflow_open_link:"打开链接",iflow_copy_link:"复制链接",iflow_oauth_status_waiting:"等待认证中...",iflow_oauth_status_success:"认证成功!",iflow_oauth_status_error:"认证失败:",iflow_oauth_start_error:"启动 iFlow OAuth 失败:",iflow_oauth_polling_error:"检查认证状态失败:",iflow_cookie_title:"iFlow Cookie 登录",iflow_cookie_label:"Cookie 内容:",iflow_cookie_placeholder:"填入BXAuth值 以BXAuth=开头",iflow_cookie_hint:"直接提交 Cookie 以完成登录(无需打开授权链接),服务端将自动保存凭据。",iflow_cookie_key_hint:"提示:需在平台上先创建 Key。",iflow_cookie_button:"提交 Cookie 登录",iflow_cookie_status_success:"Cookie 登录成功,凭据已保存。",iflow_cookie_status_error:"Cookie 登录失败:",iflow_cookie_status_duplicate:"配置文件重复:",iflow_cookie_start_error:"提交 Cookie 登录失败:",iflow_cookie_config_duplicate:"检测到配置文件已存在(重复),如需重新保存请先删除原文件后重试。",iflow_cookie_required:"请先填写 Cookie 内容",iflow_cookie_result_title:"Cookie 登录结果",iflow_cookie_result_email:"账号",iflow_cookie_result_expired:"过期时间",iflow_cookie_result_path:"保存路径",iflow_cookie_result_type:"类型",remote_access_disabled:"远程访问不支持此登录方式,请从本地 (localhost) 访问"},VK={title:"使用统计",total_requests:"总请求数",success_requests:"成功请求",failed_requests:"失败请求",total_tokens:"总Token数",cached_tokens:"缓存 Tokens",reasoning_tokens:"思考 Tokens",rpm_30m:"RPM",tpm_30m:"TPM",rate_30m:"近30分钟速率",model_name:"模型名称",model_price_settings:"模型价格设置",saved_prices:"已保存的价格",requests_trend:"请求趋势",tokens_trend:"Token 使用趋势",api_details:"API 详细统计",by_hour:"按小时",by_day:"按天",range_filter:"时间范围",range_all:"全部时间",range_7h:"最近7小时",range_24h:"最近24小时",range_7d:"最近7天",filter_all:"全部",clear_filters:"清空筛选",refresh:"刷新",export:"导出数据",import:"导入数据",export_csv:"导出 CSV",export_json:"导出 JSON",export_success:"使用统计已导出",import_success:"导入完成:新增 {{added}},跳过 {{skipped}},总请求 {{total}},失败 {{failed}}",import_invalid:"导入文件格式不正确",chart_line_label_1:"曲线 1",chart_line_label_2:"曲线 2",chart_line_label_3:"曲线 3",chart_line_label_4:"曲线 4",chart_line_label_5:"曲线 5",chart_line_label_6:"曲线 6",chart_line_label_7:"曲线 7",chart_line_label_8:"曲线 8",chart_line_label_9:"曲线 9",chart_line_hidden:"不显示",chart_line_actions_label:"曲线数量",chart_line_add:"增加曲线",chart_line_all:"全部",chart_line_delete:"删除曲线",chart_line_hint:"最多同时显示 9 条模型曲线",no_data:"暂无数据",loading_error:"加载失败",api_endpoint:"API端点",requests_count:"请求次数",tokens_count:"Token数量",models:"模型统计",success_rate:"成功率",total_cost:"总花费",total_cost_hint:"基于已设置的模型单价",model_price_title:"模型价格",model_price_reset:"清除价格",model_price_model_label:"选择模型",model_price_select_placeholder:"选择模型",model_price_select_hint:"模型列表来自使用统计明细",model_price_prompt:"提示价格",model_price_completion:"补全价格",model_price_cache:"缓存价格",model_price_save:"保存价格",model_price_empty:"暂未设置任何模型价格",model_price_model:"模型",model_price_saved:"模型价格已保存",model_price_model_required:"请选择要设置价格的模型",cost_trend:"花费统计",cost_axis_label:"花费 ($)",cost_need_price:"请先设置模型价格",cost_need_usage:"暂无使用数据,无法计算花费",cost_no_data:"没有可计算的花费数据",credential_stats:"凭证统计",credential_name:"凭证",token_breakdown:"Token 类型分布",request_events_title:"请求事件明细",request_events_filter_model:"模型",request_events_filter_source:"来源",request_events_filter_auth_index:"认证索引",request_events_timestamp:"时间",request_events_source:"来源",request_events_auth_index:"认证索引",request_events_result:"结果",request_events_empty_title:"暂无请求事件",request_events_empty_desc:"当前时间范围内暂无可用的请求明细数据。",request_events_no_result_title:"没有匹配结果",request_events_no_result_desc:"请尝试调整筛选条件,或清空当前筛选。",request_events_count:"{{count}} 条事件",request_events_limit_hint:"为保证渲染性能,仅展示 {{shown}} / {{total}} 条事件。",input_tokens:"输入 Tokens",output_tokens:"输出 Tokens",last_updated:"更新于"},HK={success:"成功",failure:"失败"},WK={success_short:"✓",failure_short:"✗",no_requests:"无请求"},GK={title:"服务健康监测",window:"最近 7 天",oldest:"最早",newest:"最新"},$K={title:"日志查看",refresh_button:"刷新日志",clear_button:"清空日志",download_button:"下载日志",error_log_button:"选择错误日志",error_logs_modal_title:"错误请求日志",error_logs_description:"请选择要下载的错误请求日志文件(仅在关闭请求日志时生成)。",error_logs_request_log_enabled:"当前已开启请求日志,按接口约定错误请求日志列表会始终为空。关闭请求日志后再刷新即可查看。",error_logs_empty:"暂无错误请求日志文件",error_logs_load_error:"加载错误日志列表失败",error_logs_size:"大小",error_logs_modified:"最后修改",error_logs_download:"下载",error_log_download_success:"错误日志下载成功",request_log_download_title:"下载报文",request_log_download_confirm:"是否要下载id为{{id}}的报文?",request_log_download_success:"报文下载成功",empty_title:"暂无日志记录",empty_desc:'当启用"日志记录到文件"功能后,日志将显示在这里',log_content:"日志内容",loading:"正在加载日志...",load_error:"加载日志失败",clear_confirm:"确定要清空所有日志吗?此操作不可恢复!",clear_success:"日志已清空",download_success:"日志下载成功",auto_refresh:"自动刷新",auto_refresh_enabled:"自动刷新已开启",auto_refresh_disabled:"自动刷新已关闭",load_more_hint:"向上滚动加载更多",hidden_lines:"已隐藏 {{count}} 行",loaded_lines:"已载入 {{count}} 行",filtered_lines:"已过滤 {{count}} 行",hide_management_logs:"屏蔽 {{prefix}} 日志",show_raw_logs:"显示原始日志",show_raw_logs_hint:"直接显示原始日志文本,方便多行复制",search_placeholder:"搜索日志内容或关键字",filter_panel_title:"结构化筛选",filter_panel_expand:"展开结构化筛选",filter_panel_collapse:"收起结构化筛选",filter_panel_active_count:"已选 {{count}} 项",filter_method:"请求方法",filter_status:"状态码",filter_path:"路径",filter_path_empty:"暂无可筛选路径",filter_status_2xx:"2xx",filter_status_3xx:"3xx",filter_status_4xx:"4xx",filter_status_5xx:"5xx",clear_filters:"清空筛选",trace_button:"请求追踪",trace_title:"请求追踪 (V1)",trace_notice:"V1 通过日志与 usage 事件做启发式关联,结果为估算,不是严格 request_id 级精准匹配。",trace_log_info:"日志事件",trace_candidates_title:"Usage 候选匹配",trace_loading:"正在匹配 usage 事件...",trace_no_match:"未找到候选匹配结果。",trace_usage_load_error:"加载请求追踪所需 usage 明细失败",trace_download_request_log:"下载请求日志",trace_confidence_high:"高",trace_confidence_medium:"中",trace_confidence_low:"低",trace_score:"分数 {{score}}",trace_delta_seconds:"时间差 {{seconds}} 秒",trace_model_matched:"模型匹配",trace_request_id:"请求 ID",trace_method:"请求方法",trace_path:"路径",trace_status_code:"状态码",trace_latency:"耗时",trace_ip:"IP",trace_timestamp:"时间",trace_message:"消息",trace_endpoint:"Usage 接口",trace_model:"模型",trace_source:"来源",trace_auth_index:"认证索引",trace_result:"结果",search_empty_title:"未找到匹配的日志",search_empty_desc:"尝试更换关键字或清空筛选条件。",double_click_copy_hint:"双击复制日志原文",copy_success:"已复制日志原文",copy_failed:"复制失败",lines:"行",removed:"已过滤",upgrade_required_title:"需要升级 CLI Proxy API",upgrade_required_desc:"当前服务器版本不支持日志查看功能,请升级到最新版本的 CLI Proxy API 以使用此功能。"},XK={title:"配置面板",editor_title:"配置文件",reload:"重新加载",reload_confirm_message:"重新加载将丢弃你当前未保存的修改,确定继续吗?",save:"保存",description:"通过可视化或者源文件方式编辑 config.yaml 配置文件",status_idle:"等待操作",status_loading:"加载配置中...",status_loading_short:"加载中",status_loaded:"配置已加载",status_loaded_short:"已加载",status_dirty:"有未保存的更改",status_dirty_short:"未保存",status_disconnected:"请先连接服务器以加载配置",status_disconnected_short:"未连接",status_load_failed:"加载失败",status_load_failed_short:"失败",status_saving:"正在保存配置...",status_saving_short:"保存中",status_saved:"配置保存完成",status_save_failed:"保存失败",save_success:"配置已保存",error_yaml_not_supported:"服务器未返回 YAML 格式,请确认 /config.yaml 接口可用",visual_mode_unavailable:"YAML 语法修复前无法使用可视化编辑",visual_mode_unavailable_short:"YAML错误",validation_blocked_short:"待修复",visual_mode_unavailable_detail:"当前配置存在无效 YAML,暂时无法使用可视化编辑:{{message}}",visual_mode_save_blocked:"请先修复 YAML 语法错误,再从可视化模式保存",visual_mode_latest_yaml_invalid:"服务端最新配置包含无效 YAML,请先切回源码模式检查后再保存可视化修改:{{message}}",editor_placeholder:"key: value",search_placeholder:"搜索配置内容...",search_button:"搜索",search_no_results:"无结果",search_prev:"上一个",search_next:"下一个",diff:{title:"确认变更",current:"当前配置",modified:"修改后",confirm:"确认保存",no_changes:"未检测到变更"},tabs:{visual:"可视化编辑",source:"源文件编辑"},visual:{notice:"可视化模式覆盖常用字段,未覆盖的配置仍需在源文件模式中查看或编辑。",quick_jump:"快速跳转",sections:{server:{title:"服务器配置",description:"基础服务器设置",host:"主机地址",port:"端口"},tls:{title:"TLS/SSL 配置",description:"HTTPS 安全连接设置",enable:"启用 TLS",enable_desc:"启用 HTTPS 安全连接",cert:"证书文件路径",key:"私钥文件路径"},remote:{title:"远程管理",description:"远程访问和控制面板设置",allow_remote:"允许远程访问",allow_remote_desc:"允许从其他主机访问管理接口",disable_panel:"禁用控制面板",disable_panel_desc:"禁用内置的 Web 控制面板",secret_key:"管理密钥",secret_key_placeholder:"设置管理密钥",panel_repo:"面板仓库"},auth:{title:"认证配置",description:"API 密钥与认证文件目录设置",auth_dir:"认证文件目录 (auth-dir)",auth_dir_hint:"存放认证文件的目录路径(支持 ~"},system:{title:"系统配置",description:"调试、日志、统计与性能调试设置",debug:"调试模式",debug_desc:"启用详细的调试日志",commercial_mode:"商业模式",commercial_mode_desc:"禁用高开销中间件以支持高并发",logging_to_file:"写入日志文件",logging_to_file_desc:"将日志保存到文件",usage_statistics:"使用统计",usage_statistics_desc:"收集使用统计信息",logs_max_size:"日志文件大小限制 (MB)"},network:{title:"网络配置",description:"代理、重试和路由设置",proxy_url:"代理 URL",request_retry:"请求重试次数",max_retry_credentials:"最大重试凭据数",max_retry_credentials_hint:"留空表示不设置;设为 0 表示保留 legacy 行为,并尝试所有可用凭据。",max_retry_interval:"最大重试间隔 (秒)",routing_strategy:"路由策略",routing_strategy_hint:"选择凭据选择策略",strategy_round_robin:"轮询 (Round Robin)",strategy_fill_first:"填充优先 (Fill First)",force_model_prefix:"强制模型前缀",force_model_prefix_desc:"未带前缀的模型请求只使用无前缀凭据",ws_auth:"WebSocket 认证",ws_auth_desc:"启用 WebSocket 连接认证 (/v1/ws)"},quota:{title:"配额回退",description:"配额耗尽时的回退策略",switch_project:"切换项目",switch_project_desc:"配额耗尽时自动切换到其他项目",switch_preview_model:"切换预览模型",switch_preview_model_desc:"配额耗尽时切换到预览版本模型"},streaming:{title:"流式传输配置",description:"Keepalive 与 bootstrap 重试设置",keepalive_seconds:"Keepalive 秒数",keepalive_hint:"设置为 0 或留空表示禁用 keepalive",bootstrap_retries:"Bootstrap 重试次数",bootstrap_hint:"流式传输启动时(首包前)的重试次数",nonstream_keepalive:"非流式 Keepalive 间隔 (秒)",nonstream_keepalive_hint:"非流式响应时每隔 N 秒发送空行以防止空闲超时,设置为 0 或留空表示禁用",disabled:"已禁用"},payload:{title:"Payload 配置",description:"默认值、原始 JSON 规则、覆盖规则与过滤规则",default_rules:"默认规则",default_rules_desc:"当请求中未指定参数时,使用这些默认值",default_raw_rules:"默认 Raw 规则",default_raw_rules_desc:'当请求中未指定参数时,按原始 JSON 片段写入这些值,例如 true、123、"high" 或 {"type":"object"}',override_rules:"覆盖规则",override_rules_desc:"强制覆盖请求中的参数值",override_raw_rules:"覆盖 Raw 规则",override_raw_rules_desc:"始终按原始 JSON 片段覆盖参数值,适合 response_format、schema 等复杂字段",filter_rules:"过滤规则",filter_rules_desc:"通过 JSON Path 预过滤上游请求体,自动剔除不合规/冗余参数(Request Sanitization"}},api_keys:{label:"API 密钥列表 (api-keys)",add:"添加 API 密钥",generate:"生成",empty:"暂无 API 密钥",hint:"每个条目代表一个 API 密钥(与 「API 密钥管理」 页面样式一致)",edit_title:"编辑 API 密钥",add_title:"添加 API 密钥",input_label:"API 密钥",input_placeholder:"粘贴你的 API 密钥",input_hint:"此处仅修改本地配置文件内容,不会自动同步到 API 密钥管理接口",error_empty:"请输入 API 密钥",error_invalid:"API 密钥包含无效字符"},payload_rules:{rule:"规则",models:"适用模型",model_name:"模型名称",provider_type:"供应商类型",add_model:"添加模型",params:"参数设置",remove_params:"移除参数",json_path:"JSON 路径 (如 temperature)",json_path_filter:"JSON 路径 (gjson/sjson),如 generationConfig.thinkingConfig.thinkingBudget",param_type:"参数类型",param_value:"参数值",add_param:"添加参数",no_rules:"暂无规则",add_rule:"添加规则",provider_default:"默认",provider_openai:"OpenAI",provider_openai_response:"OpenAI Response",provider_gemini:"Gemini",provider_claude:"Claude",provider_codex:"Codex",provider_antigravity:"Antigravity",value_type_string:"字符串",value_type_number:"数字",value_type_boolean:"布尔",value_type_json:"JSON",value_string:"字符串值",value_number:"数字值 (如 0.7)",value_boolean:"true 或 false",value_json:"JSON 值",value_raw_json:'原始 JSON 片段,如 true、123、"high" 或 {"type":"object"}',value_default:"值",boolean_true:"true",boolean_false:"false"},validation:{validation_blocked:"请先修复表单校验错误再保存",port_range:"请输入 1 到 65535 之间的有效端口",non_negative_integer:"请输入非负整数",payload_invalid_number:"请输入有效数字",payload_invalid_boolean:"请选择 true 或 false",payload_invalid_json:"请输入有效的 JSON"},common:{edit:"编辑",delete:"删除",cancel:"取消",update:"更新",add:"添加"}}},QK={title:"配额管理",description:"集中查看 OAuth 额度与剩余情况",refresh_files:"刷新认证文件",refresh_files_and_quota:"刷新认证文件&额度",refresh_all_credentials:"刷新全部凭证",card_idle_hint:"请使用顶部“刷新全部凭证”按钮获取最新额度。"},YK={title:"管理中心信息",about_title:"CLI Proxy API Management Center",connection_status_title:"连接状态",api_status_label:"API 状态:",config_status_label:"配置状态:",last_update_label:"最后更新:",cache_data:"缓存数据",real_time_data:"实时数据",not_loaded:"未加载",seconds_ago:"秒前",models_title:"可用模型列表",models_desc:"展示 /models 返回的模型,并自动使用服务器保存的 API Key 进行鉴权。",models_loading:"正在加载可用模型...",models_empty:"未从 /models 获取到模型数据",models_error:"获取模型列表失败",models_count:"可用模型 {{count}} 个",version_check_title:"版本检查",version_check_desc:"调用 /latest-version 接口比对服务器版本,提示是否有可用更新。",version_current_label:"当前版本",version_latest_label:"最新版本",version_check_button:"检查更新",version_check_idle:"点击检查更新",version_checking:"正在检查最新版本...",version_update_available:"有新版本可用:{{version}}",version_is_latest:"当前已是最新版本",version_check_error:"检查更新失败",version_current_missing:"未获取到服务器版本号,暂无法比对",version_unknown:"未知",quick_links_title:"快捷链接",quick_links_desc:"访问项目仓库和文档,获取帮助和更新。",link_main_repo:"主程序仓库",link_main_repo_desc:"CLI Proxy API 核心程序源代码",link_webui_repo:"WebUI 仓库",link_webui_repo_desc:"管理中心前端界面源代码",link_docs:"使用教程",link_docs_desc:"配置指南和使用说明",clear_login_title:"本地登录信息",clear_login_desc:"清理本地保存的登录信息并退出登录,不会影响使用统计中的价格设置。",clear_login_button:"清理登录信息",clear_login_confirm:"确认清理本地登录信息并退出登录?"},JK={debug_updated:"调试设置已更新",proxy_updated:"代理设置已更新",proxy_cleared:"代理设置已清空",retry_updated:"重试设置已更新",quota_switch_project_updated:"项目切换设置已更新",quota_switch_preview_updated:"预览模型切换设置已更新",usage_statistics_updated:"使用统计设置已更新",logging_to_file_updated:"日志记录设置已更新",logs_max_total_size_updated:"日志容量设置已更新",request_log_updated:"请求日志设置已更新",force_model_prefix_updated:"模型前缀设置已更新",ws_auth_updated:"WebSocket 鉴权设置已更新",routing_strategy_updated:"路由策略已更新",login_storage_cleared:"本地登录信息已清理",api_key_added:"API密钥添加成功",api_key_updated:"API密钥更新成功",api_key_deleted:"API密钥删除成功",api_key_invalid_chars:"API密钥仅支持英文字母、数字和符号",gemini_key_added:"Gemini密钥添加成功",gemini_key_updated:"Gemini密钥更新成功",gemini_key_deleted:"Gemini密钥删除成功",gemini_multi_input_required:"请先输入至少一个Gemini密钥",gemini_multi_failed:"Gemini密钥批量添加失败",gemini_multi_summary:"Gemini批量添加完成:成功 {{success}},跳过 {{skipped}},失败 {{failed}}",codex_config_added:"Codex配置添加成功",codex_config_updated:"Codex配置更新成功",codex_config_deleted:"Codex配置删除成功",codex_base_url_required:"请填写Codex Base URL",claude_config_added:"Claude配置添加成功",claude_config_updated:"Claude配置更新成功",claude_config_deleted:"Claude配置删除成功",vertex_config_added:"Vertex配置添加成功",vertex_config_updated:"Vertex配置更新成功",vertex_config_deleted:"Vertex配置删除成功",config_enabled:"配置已启用",config_disabled:"配置已停用",field_required:"必填字段不能为空",openai_provider_required:"请填写提供商名称和Base URL",openai_provider_added:"OpenAI提供商添加成功",openai_provider_updated:"OpenAI提供商更新成功",openai_provider_deleted:"OpenAI提供商删除成功",ampcode_updated:"Ampcode 配置已更新",ampcode_upstream_api_key_cleared:"Ampcode upstream API key 覆盖已清除",openai_model_name_required:"请填写模型名称",openai_test_url_required:"请先填写有效的 Base URL 以进行测试",openai_test_key_required:"请至少填写一个 API 密钥以进行测试",openai_test_model_required:"请选择要测试的模型",data_refreshed:"数据刷新成功",connection_required:"请先建立连接",refresh_failed:"刷新失败",update_failed:"更新失败",add_failed:"添加失败",delete_failed:"删除失败",upload_failed:"上传失败",download_failed:"下载失败",login_failed:"登录失败",please_enter:"请输入",please_fill:"请填写",provider_name_url:"提供商名称和Base URL",api_key:"API密钥",gemini_api_key:"Gemini API密钥",codex_api_key:"Codex API密钥",claude_api_key:"Claude API密钥",commercial_mode_restart_required:"商业模式开关已变更,请重启服务后生效",copy_failed:"复制失败",link_copied:"已复制"},ZK={switch:"语言",chinese:"中文",english:"English",russian:"Русский"},eV={switch:"主题",light:"羊毛纸",white:"纯白",dark:"暗色",switch_to_light:"切换到羊毛纸模式",switch_to_dark:"切换到暗色模式",auto:"跟随系统"},tV={toggle_expand:"展开侧边栏",toggle_collapse:"收起侧边栏"},nV={api_version:"CLI Proxy API 版本",build_date:"构建时间",version:"管理中心版本",author:"作者"},iV={common:SK,title:wK,splash:kK,auto_login:CK,login:AK,header:NK,connection:TK,nav:MK,dashboard:LK,basic_settings:OK,api_keys:PK,ai_providers:EK,auth_files:jK,antigravity_quota:RK,claude_quota:DK,codex_quota:FK,gemini_cli_quota:IK,kimi_quota:BK,vertex_import:UK,oauth_excluded:qK,oauth_model_alias:zK,auth_login:KK,usage_stats:VK,stats:HK,status_bar:WK,service_health:GK,logs:$K,config_management:XK,quota_management:QK,system_info:YK,notification:JK,language:ZK,theme:eV,sidebar:tV,footer:nV},sV={login:"Login",logout:"Logout",back:"Back",cancel:"Cancel",confirm:"Confirm",leave:"Leave",stay:"Stay",save:"Save",delete:"Delete",edit:"Edit",add:"Add",update:"Update",refresh:"Refresh",close:"Close",success:"Success",error:"Error",info:"Info",warning:"Warning",loading:"Loading...",connecting:"Connecting...",connected:"Connected",disconnected:"Disconnected",connecting_status:"Connecting",connected_status:"Connected",disconnected_status:"Disconnected",yes:"Yes",no:"No",not_set:"Not set",optional:"Optional",required:"Required",api_key:"Key",base_url:"Address",prefix:"Prefix",proxy_url:"Proxy",priority:"Priority",alias:"Alias",failure:"Failure",unknown_error:"Unknown error",quota_update_required:"Please update the CPA version or check for updates",quota_check_credential:"Please check the credential status",copy:"Copy",expand:"Expand",collapse:"Collapse",status:"Status",action:"Action",custom_headers_label:"Custom Headers",custom_headers_hint:"Optional HTTP headers to send with the request. Leave blank to remove.",custom_headers_add:"Add Header",custom_headers_key_placeholder:"Header name, e.g. X-Custom-Header",custom_headers_value_placeholder:"Header value",model_name_placeholder:"Model name, e.g. claude-3-5-sonnet-20241022",model_alias_placeholder:"Model alias (optional)",invalid_provider_index:"Invalid provider index.",unsaved_changes_title:"Unsaved changes",unsaved_changes_message:"You have unsaved changes. Leaving now will discard them. Do you want to leave?"},aV={main:"CLI Proxy API Management Center",login:"CLI Proxy API Management Center",abbr:"CPAMC"},oV={title:"CLI Proxy API",subtitle:"Management Center"},rV={title:"Auto Login in Progress...",message:"Attempting to connect to server using locally saved connection information"},lV={subtitle:"Please enter connection information to access the management interface",connection_title:"Connection Address",connection_current:"Current URL",connection_auto_hint:"The system will automatically use the current URL for connection",custom_connection_label:"Custom Connection URL:",custom_connection_placeholder:"Eg: https://example.com:8317",custom_connection_hint:"By default the current URL is used. Override it here if needed.",use_current_address:"Use Current URL",remember_password_label:"Remember password",management_key_label:"Management Key:",management_key_placeholder:"Enter the management key",connect_button:"Connect",submit_button:"Login",submitting:"Connecting...",error_title:"Login Failed",error_required:"Please fill in complete connection information",error_invalid:"Connection failed, please check address and key",error_network:"Network connection failed, please check your network or server address",error_timeout:"Connection timed out, server not responding",error_unauthorized:"Authentication failed, invalid management key",error_forbidden:"Access denied, insufficient permissions",error_not_found:"Server address invalid or management API not enabled",error_server:"Internal server error, please try again later",error_cors:"Cross-origin request blocked, please check server configuration",error_ssl:"SSL/TLS certificate verification failed"},cV={check_connection:"Check Connection",refresh_all:"Refresh All",logout:"Logout"},uV={title:"Connection Information",server_address:"Server Address:",management_key:"Management Key:",status:"Connection Status:"},dV={dashboard:"Dashboard",basic_settings:"Basic Settings",api_keys:"API Keys",ai_providers:"AI Providers",auth_files:"Auth Files",oauth:"OAuth Login",quota_management:"Quota Management",usage_stats:"Usage Statistics",config_management:"Config Panel",logs:"Logs Viewer",system_info:"Management Center Info"},hV={title:"Dashboard",subtitle:"Welcome to CLI Proxy API Management Center",openai_providers:"OpenAI Providers",quick_actions:"Quick Actions",current_config:"Current Configuration",management_keys:"Management Keys",provider_keys_detail:"G:{{gemini}} C:{{codex}} Cl:{{claude}} O:{{openai}}",oauth_credentials:"OAuth Credentials",usage_overview:"Usage Overview",total_requests:"Total Requests",total_tokens:"Total Tokens",rpm_30min:"RPM (30min)",tpm_30min:"TPM (30min)",models_used:"Models Used",no_usage_data:"No usage data available",view_detailed_usage:"View Detailed Stats",edit_settings:"Edit Settings",routing_strategy:"Routing Strategy",available_models:"Available Models",available_models_desc:"Total models from all providers",welcome_back:"Welcome Back",greeting_morning:"Good Morning",greeting_afternoon:"Good Afternoon",greeting_evening:"Good Evening",greeting_night:"Good Night",caring_morning:"A fresh start — let's make today count.",caring_afternoon:"Steady progress — you're doing great.",caring_evening:"Wrapping up nicely — almost there.",caring_night:"Burning the midnight oil? Don't forget to rest.",system_overview:"System Overview"},fV={title:"Basic Settings",debug_title:"Debug Mode",debug_enable:"Enable Debug Mode",proxy_title:"Proxy Settings",proxy_url_label:"Proxy URL:",proxy_url_placeholder:"e.g.: socks5://user:pass@127.0.0.1:1080/",proxy_update:"Update",proxy_clear:"Clear",retry_title:"Request Retry",retry_count_label:"Retry Count:",retry_update:"Update",quota_title:"Quota Exceeded Behavior",quota_switch_project:"Auto Switch Project",quota_switch_preview:"Switch to Preview Model",usage_statistics_title:"Usage Statistics",usage_statistics_enable:"Enable usage statistics",logging_title:"Logging",logging_to_file_enable:"Enable logging to file",logs_max_total_size_title:"Log Size Limit",logs_max_total_size_label:"Total log size cap (MB):",logs_max_total_size_hint:"Set to 0 to disable the limit.",logs_max_total_size_update:"Update",request_log_title:"Request Logging",request_log_enable:"Enable request logging",request_log_warning:"Keep this off unless you need detailed troubleshooting.",force_model_prefix_enable:"Force model prefix",ws_auth_title:"WebSocket Authentication",ws_auth_enable:"Require auth for /ws/*",routing_title:"Routing Strategy",routing_strategy_label:"Routing strategy:",routing_strategy_hint:"round-robin cycles through keys; fill-first prioritizes the first available key.",routing_strategy_update:"Update",routing_strategy_round_robin:"round-robin (cycle)",routing_strategy_fill_first:"fill-first (prioritize)"},mV={title:"API Keys Management",proxy_auth_title:"Proxy Service Authentication Keys",add_button:"Add Key",empty_title:"No API Keys",empty_desc:"Click the button above to add the first key",item_title:"API Key",add_modal_title:"Add API Key",add_modal_key_label:"API Key:",add_modal_key_placeholder:"Please enter API key",edit_modal_title:"Edit API Key",edit_modal_key_label:"API Key:",delete_confirm:"Are you sure you want to delete this API key?"},pV=JSON.parse('{"title":"AI Providers Configuration","gemini_title":"Gemini API Keys","gemini_add_button":"Add Key","gemini_empty_title":"No Gemini Keys","gemini_empty_desc":"Click the button above to add the first key","gemini_item_title":"Gemini Key","gemini_add_modal_title":"Add Gemini API Key","gemini_add_modal_key_label":"API Keys:","gemini_add_modal_key_placeholder":"Enter Gemini API key","gemini_add_modal_key_hint":"Add keys one by one and optionally specify a Base URL.","gemini_keys_add_btn":"Add Key","gemini_base_url_label":"Base URL (Optional):","gemini_base_url_placeholder":"e.g.: https://generativelanguage.googleapis.com","gemini_add_modal_proxy_label":"Proxy URL (Optional):","gemini_add_modal_proxy_placeholder":"e.g.: socks5://proxy.example.com:1080","gemini_models_label":"Custom Models (Optional):","gemini_models_hint":"Leave empty to allow all models, or add name[, alias] entries to limit/alias them for this key.","gemini_models_add_btn":"Add Model","gemini_models_fetch_button":"Fetch via /v1beta/models","gemini_models_fetch_title":"Pick Models from Gemini /v1beta/models","gemini_models_fetch_hint":"Call GET /v1beta/models per the Gemini API. By default, it sends x-goog-api-key from the API Key field, merged with your custom headers.","gemini_models_fetch_url_label":"Request URL","gemini_models_fetch_refresh":"Refresh","gemini_models_fetch_loading":"Fetching models from Gemini /v1beta/models...","gemini_models_fetch_empty":"No models returned. Please check Base URL, API key, or headers.","gemini_models_fetch_error":"Failed to fetch Gemini models","gemini_models_fetch_apply":"Add selected models","model_discovery_select_visible":"Select current list","model_discovery_clear_selection":"Clear selection","model_discovery_selected_count":"{{count}} selected","gemini_models_search_label":"Search models","gemini_models_search_placeholder":"Filter by name, alias, or description","gemini_models_search_empty":"No models match your search. Try a different keyword.","gemini_models_fetch_added":"{{count}} new models added","gemini_models_count":"Models Count","gemini_edit_modal_title":"Edit Gemini API Key","gemini_edit_modal_key_label":"API Key:","gemini_delete_confirm":"Are you sure you want to delete this Gemini key?","excluded_models_label":"Excluded models (optional):","excluded_models_placeholder":"Comma or newline separated, e.g. gemini-1.5-pro, gemini-1.5-flash","excluded_models_hint":"Leave empty to allow all models; values are trimmed and deduplicated automatically.","excluded_models_count":"Excluding {{count}} models","prefix_label":"Prefix (Optional):","prefix_placeholder":"e.g.: team-a","prefix_hint":"When set, call models as prefix/<model> to target this entry.","priority_label":"Priority (Optional):","priority_hint":"Higher values are preferred. Leave empty for default (0).","config_toggle_label":"Enabled","config_disabled_badge":"Disabled","codex_title":"Codex API Configuration","codex_add_button":"Add Configuration","codex_empty_title":"No Codex Configuration","codex_empty_desc":"Click the button above to add the first configuration","codex_item_title":"Codex Configuration","codex_add_modal_title":"Add Codex API Configuration","codex_add_modal_key_label":"API Key:","codex_add_modal_key_placeholder":"Please enter Codex API key","codex_add_modal_url_label":"Base URL (Required):","codex_add_modal_url_placeholder":"e.g.: https://api.example.com","codex_add_modal_proxy_label":"Proxy URL (Optional):","codex_add_modal_proxy_placeholder":"e.g.: socks5://proxy.example.com:1080","codex_websockets_label":"Websockets","codex_websockets_hint":"Enable Responses API websocket transport for this key.","codex_models_label":"Custom Models (Optional):","codex_models_hint":"Leave empty to allow all models, or add name[, alias] entries to limit/alias them.","codex_models_add_btn":"Add Model","codex_models_fetch_button":"Fetch via /v1/models","codex_models_fetch_title":"Pick Models from /v1/models","codex_models_fetch_hint":"Call GET /v1/models using the Base URL above, sending the API key as Bearer (if provided) and merging your custom headers.","codex_models_fetch_url_label":"Request URL","codex_models_fetch_refresh":"Refresh","codex_models_fetch_loading":"Fetching models from /v1/models...","codex_models_fetch_empty":"No models returned. Please check Base URL, API key, or headers.","codex_models_fetch_error":"Failed to fetch models","codex_models_fetch_apply":"Add selected models","codex_models_search_label":"Search models","codex_models_search_placeholder":"Filter by name, alias, or description","codex_models_search_empty":"No models match your search. Try a different keyword.","codex_models_fetch_added":"{{count}} new models added","codex_models_count":"Models Count","codex_edit_modal_title":"Edit Codex API Configuration","codex_edit_modal_key_label":"API Key:","codex_edit_modal_url_label":"Base URL (Required):","codex_edit_modal_proxy_label":"Proxy URL (Optional):","codex_delete_confirm":"Are you sure you want to delete this Codex configuration?","claude_title":"Claude API Configuration","claude_add_button":"Add Configuration","claude_empty_title":"No Claude Configuration","claude_empty_desc":"Click the button above to add the first configuration","claude_item_title":"Claude Configuration","claude_add_modal_title":"Add Claude API Configuration","claude_add_modal_key_label":"API Key:","claude_add_modal_key_placeholder":"Please enter Claude API key","claude_add_modal_url_label":"Base URL (Optional):","claude_add_modal_url_placeholder":"e.g.: https://api.anthropic.com","claude_add_modal_proxy_label":"Proxy URL (Optional):","claude_add_modal_proxy_placeholder":"e.g.: socks5://proxy.example.com:1080","claude_edit_modal_title":"Edit Claude API Configuration","claude_edit_modal_key_label":"API Key:","claude_edit_modal_url_label":"Base URL (Optional):","claude_edit_modal_proxy_label":"Proxy URL (Optional):","claude_delete_confirm":"Are you sure you want to delete this Claude configuration?","claude_models_label":"Custom Models (Optional):","claude_models_hint":"Leave empty to allow all models, or add name[, alias] entries to limit/alias them.","claude_models_add_btn":"Add Model","claude_models_count":"Models Count","claude_models_fetch_button":"Fetch via /v1/models","claude_models_fetch_title":"Pick Models from Claude /v1/models","claude_models_fetch_hint":"Call GET /v1/models with Anthropic headers. By default, this sends x-api-key and anthropic-version: 2023-06-01, merged with your custom headers.","claude_models_fetch_url_label":"Request URL","claude_models_fetch_refresh":"Refresh","claude_models_fetch_loading":"Fetching models from Claude /v1/models...","claude_models_fetch_empty":"No models returned. Please check Base URL, API key, or headers.","claude_models_fetch_error":"Failed to fetch Claude models","claude_models_fetch_apply":"Add selected models","claude_models_search_label":"Search models","claude_models_search_placeholder":"Filter by name, alias, or description","claude_models_search_empty":"No models match your search. Try a different keyword.","claude_models_fetch_added":"{{count}} new models added","claude_test_title":"Connection Test","claude_test_hint":"Send a test request to /v1/messages using Anthropic headers to verify this configuration.","claude_test_select_placeholder":"Choose from current models","claude_test_select_empty":"No models configured. Add models first","claude_test_action":"Test","claude_test_running":"Sending Claude test request...","claude_test_timeout":"Test request timed out after {{seconds}} seconds.","claude_test_success":"Test succeeded. Claude model responded.","claude_test_failed":"Test failed","claude_test_key_required":"Please provide a Claude API key or set x-api-key in custom headers","claude_test_model_required":"Please select a model to test","claude_test_endpoint_invalid":"Unable to build a valid Claude /v1/messages endpoint","claude_cloak_title":"Request Cloaking (Optional):","claude_cloak_toggle_label":"Enable","claude_cloak_toggle_aria":"Toggle request cloaking","claude_cloak_hint":"Cloaking disguises requests to appear as coming from the official Claude Code CLI for non-Claude-Code clients.","claude_cloak_mode_label":"Mode:","claude_cloak_mode_hint":"auto: cloak only when client is not Claude Code; always: always cloak; never: never cloak.","claude_cloak_mode_auto":"Auto (non-Claude-Code only)","claude_cloak_mode_always":"Always","claude_cloak_mode_never":"Never","claude_cloak_strict_label":"Strict mode:","claude_cloak_strict_hint":"When enabled, strip user system messages and keep only the Claude Code prompt.","claude_cloak_sensitive_words_label":"Sensitive words (optional):","claude_cloak_sensitive_words_placeholder":"Comma or newline separated, e.g. internal-project","claude_cloak_sensitive_words_hint":"These words are obfuscated with zero-width characters.","claude_cloak_sensitive_words_count":"Sensitive words","vertex_title":"Vertex API Configuration","vertex_add_button":"Add Configuration","vertex_empty_title":"No Vertex Configuration","vertex_empty_desc":"Click the button above to add the first configuration","vertex_item_title":"Vertex Configuration","vertex_add_modal_title":"Add Vertex API Configuration","vertex_add_modal_key_label":"API Key:","vertex_add_modal_key_placeholder":"Please enter Vertex API key","vertex_add_modal_url_label":"Base URL:","vertex_add_modal_url_placeholder":"e.g.: https://example.com/api","vertex_add_modal_proxy_label":"Proxy URL (Optional):","vertex_add_modal_proxy_placeholder":"e.g.: socks5://proxy.example.com:1080","vertex_edit_modal_title":"Edit Vertex API Configuration","vertex_edit_modal_key_label":"API Key:","vertex_edit_modal_url_label":"Base URL:","vertex_edit_modal_proxy_label":"Proxy URL (Optional):","vertex_delete_confirm":"Are you sure you want to delete this Vertex configuration?","vertex_models_label":"Model aliases:","vertex_models_add_btn":"Add Mapping","vertex_models_count":"Alias count","ampcode_title":"Amp CLI Integration (ampcode)","ampcode_modal_title":"Configure Ampcode","ampcode_upstream_url_label":"Upstream URL","ampcode_upstream_url_placeholder":"e.g. https://ampcode.com","ampcode_upstream_url_hint":"Optional. Leave empty to use the default/auto-discovered control plane URL.","ampcode_upstream_api_key_label":"Upstream API Key (Amp Official)","ampcode_upstream_api_key_placeholder":"Enter sk-amp... (leave empty to keep current)","ampcode_upstream_api_key_hint":"Optional. Leaving it empty will not change the current Amp official key. Use the button below to clear it.","ampcode_upstream_api_key_current":"Current Amp official key: {{key}}","ampcode_clear_upstream_api_key":"Clear official key","ampcode_clear_upstream_api_key_confirm":"Are you sure you want to clear the Ampcode upstream API key (Amp official)?","ampcode_upstream_api_keys_label":"Multi-upstream API key routing","ampcode_upstream_api_keys_hint":"Bind different Amp upstream API keys to specific client API keys. Client keys can be separated by commas or new lines.","ampcode_upstream_api_keys_add_btn":"Add upstream mapping","ampcode_upstream_api_keys_upstream_placeholder":"Upstream API key (sk-amp-...)","ampcode_upstream_api_keys_clients_placeholder":"Client API keys, separated by commas or new lines","ampcode_upstream_api_keys_item_title":"Upstream mapping #{{index}}","ampcode_upstream_api_keys_count":"Upstream mappings","ampcode_force_model_mappings_label":"Force model mappings","ampcode_force_model_mappings_hint":"When enabled, mappings override local API-key availability checks.","ampcode_model_mappings_label":"Model mappings (from → to)","ampcode_model_mappings_hint":"Rewrites model names in Amp requests. Leave empty to disable mappings.","ampcode_model_mappings_add_btn":"Add mapping","ampcode_model_mappings_from_placeholder":"from model (source)","ampcode_model_mappings_to_placeholder":"to model (target)","ampcode_model_mappings_count":"Mappings Count","ampcode_lists_overwrite_title":"Overwrite list settings","ampcode_lists_overwrite_confirm":"Existing multi-upstream/model mapping lists could not be loaded. Continuing may overwrite or clear them. Continue?","ampcode_mappings_overwrite_confirm":"Existing mappings could not be loaded. Continuing may overwrite or clear them. Continue?","openai_title":"OpenAI Compatible Providers","openai_add_button":"Add Provider","openai_empty_title":"No OpenAI Compatible Providers","openai_empty_desc":"Click the button above to add the first provider","openai_add_modal_title":"Add OpenAI Compatible Provider","openai_add_modal_name_label":"Provider Name:","openai_add_modal_name_placeholder":"e.g.: openrouter","openai_add_modal_url_label":"Base URL:","openai_add_modal_url_placeholder":"e.g.: https://openrouter.ai/api/v1","openai_add_modal_keys_label":"API Keys","openai_edit_modal_keys_label":"API Keys","openai_keys_hint":"Add each key separately with an optional proxy URL to keep things organized.","openai_keys_add_btn":"Add Key","openai_key_placeholder":"sk-... key","openai_proxy_placeholder":"Optional proxy URL (e.g. socks5://...)","openai_add_modal_models_label":"Model List (name[, alias] one per line):","openai_models_hint":"Example: gpt-4o-mini or moonshotai/kimi-k2:free, kimi-k2","openai_model_name_placeholder":"Model name, e.g. moonshotai/kimi-k2:free","openai_model_alias_placeholder":"Model alias (optional)","openai_models_add_btn":"Add Model","openai_models_fetch_button":"Fetch via /models","openai_models_fetch_title":"Pick Models from /models","openai_models_fetch_hint":"Call the /models endpoint using the Base URL above, sending the first API key as Bearer plus custom headers.","openai_models_fetch_url_label":"Request URL","openai_models_fetch_refresh":"Refresh","openai_models_fetch_loading":"Fetching models from /models...","openai_models_fetch_empty":"No models returned. Please check the endpoint or auth.","openai_models_fetch_error":"Failed to fetch models","openai_models_fetch_back":"Back to edit","openai_models_fetch_apply":"Add selected models","openai_models_search_label":"Search models","openai_models_search_placeholder":"Filter by name, alias, or description","openai_models_search_empty":"No models match your search. Try a different keyword.","openai_models_fetch_invalid_url":"Please enter a valid Base URL first","openai_models_fetch_added":"{{count}} new models added","openai_edit_modal_title":"Edit OpenAI Compatible Provider","openai_edit_modal_name_label":"Provider Name:","openai_edit_modal_url_label":"Base URL:","openai_edit_modal_models_label":"Model List (name[, alias] one per line):","openai_delete_confirm":"Are you sure you want to delete this OpenAI provider?","openai_keys_count":"Keys Count","openai_models_count":"Models Count","openai_test_title":"Connection Test","openai_test_hint":"Send a /chat/completions request with the current settings to verify availability.","openai_test_model_placeholder":"Model to test","openai_test_action":"Run Test","openai_test_running":"Sending test request...","openai_test_timeout":"Test request timed out after {{seconds}} seconds.","openai_test_success":"Test succeeded. The model responded.","openai_test_failed":"Test failed","openai_test_select_placeholder":"Choose from current models","openai_test_select_empty":"No models configured. Add models first","openai_test_single_action":"Test","openai_test_all_action":"Test All Keys","openai_test_all_hint":"Test connection status for all keys","openai_test_all_success":"All {{count}} keys passed the test","openai_test_all_failed":"All {{count}} keys failed the test","openai_test_all_partial":"Test completed: {{success}} passed, {{failed}} failed"}'),gV={title:"Auth Files Management",title_section:"Auth Files",description:"Manage all CLI Proxy JSON auth files here (e.g. Qwen, Gemini, Vertex). Uploading a credential immediately enables the corresponding AI integration.",upload_button:"Upload File",delete_all_button:"Delete All",empty_title:"No Auth Files",empty_desc:"Click the button above to upload the first file",search_empty_title:"No matching files",search_empty_desc:"Try changing the filters or clearing the search box.",file_size:"Size",file_modified:"Modified",health_status_label:"Health",health_status_healthy:"Healthy",health_status_warning:"Warning",health_status_disabled:"Disabled",health_status_unknown:"Unknown",health_status_no_message:"No status message",last_refresh_label:"Last Refresh",refresh_not_available:"N/A",refresh_just_now:"Just now",download_button:"Download",delete_button:"Delete",delete_confirm:"Are you sure you want to delete file",delete_all_confirm:"Are you sure you want to delete all auth files? This operation cannot be undone!",delete_filtered_confirm:"Are you sure you want to delete all {{type}} auth files? This operation cannot be undone!",delete_problem_button:"Delete Problem Files",delete_problem_button_with_type:"Delete Problematic {{type}} Files",delete_problem_confirm:"Are you sure you want to delete all problematic auth files? This operation cannot be undone!",delete_problem_filtered_confirm:"Are you sure you want to delete all problematic {{type}} auth files? This operation cannot be undone!",upload_error_json:"Only JSON files are allowed",upload_error_size:"File size cannot exceed {{maxSize}}",upload_success:"File uploaded successfully",download_success:"File downloaded successfully",delete_success:"File deleted successfully",delete_all_success:"Successfully deleted",delete_filtered_success:"Deleted {{count}} {{type}} auth files successfully",delete_filtered_partial:"{{type}} auth files deletion finished: {{success}} succeeded, {{failed}} failed",delete_filtered_none:"No deletable auth files under the current filter ({{type}})",delete_problem_success:"Deleted {{count}} problematic auth files successfully",delete_problem_filtered_success:"Deleted {{count}} problematic {{type}} auth files successfully",delete_problem_partial:"Problematic auth files deletion finished: {{success}} succeeded, {{failed}} failed",delete_problem_filtered_partial:"Problematic {{type}} auth files deletion finished: {{success}} succeeded, {{failed}} failed",delete_problem_none:"No deletable problematic auth files under the current filter",delete_problem_filtered_none:"No deletable problematic {{type}} auth files under the current filter",files_count:"files",pagination_prev:"Previous",pagination_next:"Next",pagination_info:"Page {{current}} / {{total}} · {{count}} files",search_label:"Search configs",search_placeholder:"Filter by name, type, or provider. Use * as a wildcard",problem_filter_label:"Problem Filter",problem_filter_only:"Only show problematic credentials",display_options_label:"Display options",compact_mode_label:"Compact mode",sort_label:"Sort",sort_default:"Default",sort_az:"A-Z Name",sort_priority:"Priority",priority_display:"Priority",page_size_label:"Per page",page_size_unit:"items",view_mode_paged:"Paged",view_mode_all:"Show all",too_many_files_warning:"Too many credentials. Showing all may cause performance issues, please use paged view.",filter_all:"All",filter_qwen:"Qwen",filter_gemini:"Gemini","filter_gemini-cli":"GeminiCLI",filter_kimi:"Kimi",filter_aistudio:"AIStudio",filter_claude:"Claude",filter_codex:"Codex",filter_antigravity:"Antigravity",filter_iflow:"iFlow",filter_vertex:"Vertex",filter_empty:"Empty",filter_unknown:"Other",type_qwen:"Qwen",type_gemini:"Gemini","type_gemini-cli":"GeminiCLI",type_kimi:"Kimi",type_aistudio:"AIStudio",type_claude:"Claude",type_codex:"Codex",type_antigravity:"Antigravity",type_iflow:"iFlow",type_vertex:"Vertex",type_empty:"Empty",type_unknown:"Other",type_virtual:"Virtual auth file",models_button:"Models",models_title:"Supported models",models_loading:"Loading model list...",models_empty:"No available models for this credential",models_empty_desc:"This credential may not be loaded by the server yet, or no models are bound to it.",models_unsupported:"This feature is not supported in the current version",models_unsupported_desc:"Please update CLI Proxy API to the latest version and try again",models_excluded_badge:"Disabled",models_excluded_hint:"This OAuth model is disabled",status_toggle_label:"Enabled",status_enabled_success:'"{{name}}" enabled',status_disabled_success:'"{{name}}" disabled',batch_status_success:"{{count}} files updated successfully",batch_status_partial:"{{success}} updated, {{failed}} failed",batch_delete_title:"Delete Selected Files",batch_delete_confirm:"Are you sure you want to delete {{count}} files?",batch_selected:"{{count}} selected",batch_select_all:"Select All",batch_select_page:"Select page",batch_select_filtered:"Select filtered",batch_invert_page:"Invert page",batch_deselect:"Deselect",batch_download:"Download selected",batch_download_success:"Started downloading {{count}} files",batch_download_partial:"Download finished: {{success}} succeeded, {{failed}} failed",batch_enable:"Enable",batch_disable:"Disable",prefix_proxy_button:"Auth File Details / Edit",auth_field_editor_title:"Auth File Details / Edit - {{name}}",prefix_proxy_loading:"Loading auth file...",prefix_proxy_info_label:"Auth file info (info)",prefix_proxy_source_label:"Auth file JSON (preview)",prefix_label:"Prefix (prefix)",proxy_url_label:"Proxy URL (proxy_url)",prefix_placeholder:"",proxy_url_placeholder:"socks5://username:password@proxy_ip:port/",priority_label:"Priority (priority)",priority_placeholder:"e.g. 10 or -1",priority_hint:"Integers only. Invalid values are ignored. Larger value means higher priority.",excluded_models_label:"Excluded models (excluded_models)",excluded_models_placeholder:"Comma or newline separated, e.g. model-a, gpt-5-*, *-preview",excluded_models_hint:"Saved as an array and normalized by trim/lowercase/dedup/sort.",disable_cooling_label:"Disable cooling (disable_cooling)",disable_cooling_placeholder:"e.g. true / false / 1 / 0",disable_cooling_hint:"Supports booleans, numeric 0/non-0, and strings like true/false/1/0; unparseable values are ignored.",note_label:"Note",note_placeholder:"Enter a note, e.g.: John's account",note_hint:"Optional. Used to describe the purpose or owner of this credential; leave empty to omit.",note_display:"Note",prefix_proxy_invalid_json:"This auth file is not a JSON object, so fields cannot be edited.",prefix_proxy_saved_success:'Updated auth file "{{name}}" successfully',quota_refresh_success:'Quota refreshed for "{{name}}"',quota_refresh_failed:'Failed to refresh quota for "{{name}}": {{message}}'},_V={title:"Antigravity Quota",empty_title:"No Antigravity Auth Files",empty_desc:"Upload an Antigravity credential to view remaining quota.",idle:"Click here to refresh quota",loading:"Loading quota...",load_failed:"Failed to load quota: {{message}}",missing_auth_index:"Auth file missing auth_index",empty_models:"No quota data available",refresh_button:"Refresh Quota",fetch_all:"Fetch All"},yV={title:"Claude Quota",empty_title:"No Claude OAuth Files",empty_desc:"Log in with Claude OAuth to view quota.",idle:"Click here to refresh quota",loading:"Loading quota...",load_failed:"Failed to load quota: {{message}}",missing_auth_index:"Auth file missing auth_index",empty_windows:"No quota data available",refresh_button:"Refresh Quota",fetch_all:"Fetch All",five_hour:"5-hour limit",seven_day:"7-day limit",seven_day_oauth_apps:"7-day OAuth apps",seven_day_opus:"7-day Opus",seven_day_sonnet:"7-day Sonnet",seven_day_cowork:"7-day Cowork",iguana_necktie:"Iguana Necktie",extra_usage_label:"Extra Usage",plan_label:"Plan",plan_unknown:"Unknown",plan_free:"Free",plan_pro:"Pro",plan_max:"Max",plan_max5:"Max 5x",plan_max20:"Max 20x"},bV={title:"Codex Quota",empty_title:"No Codex Auth Files",empty_desc:"Upload a Codex credential to view quota.",idle:"Click here to refresh quota",loading:"Loading quota...",load_failed:"Failed to load quota: {{message}}",missing_auth_index:"Auth file missing auth_index",missing_account_id:"Codex credential missing ChatGPT account ID",empty_windows:"No quota data available",no_access:"This credential has no Codex access (plan: free).",refresh_button:"Refresh Quota",fetch_all:"Fetch All",primary_window:"5-hour limit",secondary_window:"Weekly limit",code_review_primary_window:"Code review 5-hour limit",code_review_secondary_window:"Code review weekly limit",additional_primary_window:"{{name}} 5-hour limit",additional_secondary_window:"{{name}} weekly limit",plan_label:"Plan",plan_plus:"Plus",plan_team:"Team",plan_free:"Free",plan_pro:"Pro"},vV={title:"Gemini CLI Quota",empty_title:"No Gemini CLI Auth Files",empty_desc:"Upload a Gemini CLI credential to view remaining quota.",idle:"Click here to refresh quota",loading:"Loading quota...",load_failed:"Failed to load quota: {{message}}",missing_auth_index:"Auth file missing auth_index",missing_project_id:"Gemini CLI credential missing project ID",empty_buckets:"No quota data available",refresh_button:"Refresh Quota",fetch_all:"Fetch All",remaining_amount:"Remaining {{count}}",tier_label:"Tier",tier_free:"Free",tier_legacy:"Legacy",tier_standard:"Standard",tier_pro:"Pro",tier_ultra:"Ultra",credit_label:"Google One AI Credits",credit_amount:"{{count}} credits"},xV={title:"Kimi Quota",empty_title:"No Kimi Auth Files",empty_desc:"Upload a Kimi credential to view remaining quota.",idle:"Click here to refresh quota",loading:"Loading quota...",load_failed:"Failed to load quota: {{message}}",missing_auth_index:"Auth file missing auth_index",empty_data:"No quota data available",refresh_button:"Refresh Quota",fetch_all:"Fetch All",weekly_limit:"Weekly limit",limit_window:"{{duration}} limit",limit_index:"Limit #{{index}}",reset_hint:"resets in {{hint}}"},SV={title:"Vertex JSON Login",description:"Upload a Google service account JSON to store it as auth-dir/vertex-<project>.json using the same rules as the CLI vertex-import helper.",location_label:"Region (optional)",location_placeholder:"us-central1",location_hint:"Leave empty to use the default region us-central1.",file_label:"Service account key JSON",file_hint:"Only Google Cloud service account key JSON files are accepted.",file_placeholder:"No file selected",choose_file:"Choose File",import_button:"Import Vertex Credential",file_required:"Select a .json credential file first",success:"Vertex credential imported successfully",result_title:"Credential saved",result_project:"Project ID",result_email:"Service account",result_location:"Region",result_file:"Persisted file"},wV={title:"OAuth Model Disablement",description:"Per-provider model disablement is shown as cards; click a card to edit or delete. Wildcards * are supported and the scope follows the auth file filter.",add:"Add Disablement",add_title:"Add provider model disablement",edit_title:"Edit model disablement for {{provider}}",refresh:"Refresh",refreshing:"Refreshing...",provider_label:"Provider",provider_auto:"Follow current filter",provider_placeholder:"e.g. gemini-cli",provider_hint:"Defaults to the current filter; pick an existing provider or type a new name.",models_label:"Models to disable",models_loading:"Loading models...",models_unsupported:"Current CPA version does not support fetching model lists.",models_loaded:"{{count}} models loaded. Check the models to disable.",no_models_available:"No models available for this provider.",save:"Save/Update",saving:"Saving...",save_success:"Model disablement updated",save_failed:"Failed to update model disablement",delete:"Delete Provider",delete_confirm:"Delete model disablement for {{provider}}?",delete_success:"Provider model disablement removed",delete_failed:"Failed to delete model disablement",deleting:"Deleting...",no_models:"No disabled models configured",model_count:"{{count}} models disabled",list_empty_all:"No provider model disablement yet; click “Add Disablement” to create one.",list_empty_filtered:"No disabled items in this scope; click “Add Disablement” to add.",disconnected:"Connect to the server to view model disablement",load_failed:"Failed to load model disablement",provider_required:"Please enter a provider first",scope_all:"Scope: All providers",scope_provider:"Scope: {{provider}}",upgrade_required:"Current CPA version does not support OAuth model disablement. Please upgrade.",upgrade_required_title:"Please upgrade CLI Proxy API",upgrade_required_desc:"The current server version does not support fetching OAuth model disablement. Please upgrade to the latest CPA (CLI Proxy API) version and try again."},kV={title:"OAuth Model Aliases",add:"Add Alias",add_title:"Add provider model aliases",provider_label:"Provider",provider_placeholder:"e.g. gemini-cli / vertex",provider_hint:"Defaults to the current filter; pick an existing provider or type a new name.",model_source_loading:"Loading models...",model_source_unsupported:"The current CPA version does not support fetching model lists (manual input still works).",model_source_loaded:"{{count}} models loaded. Use the dropdown in 'Source model name', or type custom values. Saving an empty list removes that provider. Enable 'Keep original' to keep the original name while adding the alias.",alias_label:"Model aliases",alias_name_placeholder:"Source model name",alias_placeholder:"Alias (required)",alias_fork_label:"Keep original",add_alias:"Add alias",save:"Save/Update",save_success:"Model aliases updated",save_failed:"Failed to update model aliases",delete:"Delete Provider",delete_confirm:"Delete model aliases for {{provider}}?",delete_link_title:"Unlink mapping",delete_link_confirm:"Unlink mapping from <code>{{sourceModel}}</code> ({{provider}}) to alias <code>{{alias}}</code>?",delete_alias_title:"Delete Alias",delete_alias_confirm:"Delete alias <code>{{alias}}</code> and unmap all associated models?",delete_success:"Model aliases removed",delete_failed:"Failed to delete model aliases",no_models:"No model aliases",model_count:"{{count}} aliases",list_empty_all:"No model aliases yet—use “Add Alias” to create one.",chart_title:"All mappings overview",diagram_providers:"Providers",diagram_source_models:"Source Models",diagram_aliases:"Aliases",diagram_expand:"Expand",diagram_collapse:"Collapse",diagram_add_alias:"Add Alias",diagram_rename:"Rename",diagram_rename_alias_title:"Rename alias",diagram_rename_alias_label:"New alias name",diagram_rename_placeholder:"Enter alias name...",diagram_delete_link:"Unlink from {{provider}} / {{name}}",diagram_delete_alias:"Delete alias",diagram_please_enter_alias:"Please enter an alias name.",diagram_alias_exists:"This alias already exists.",diagram_add_alias_title:"Add alias",diagram_add_alias_label:"Alias name",diagram_add_placeholder:"Enter new alias name...",diagram_rename_btn:"Rename",diagram_add_btn:"Add",diagram_settings:"Settings",diagram_settings_title:"Alias settings — {{alias}}",diagram_settings_source_title:"Source model settings",diagram_settings_empty:"No mappings for this alias yet.",diagram_tap_hint:"On touch devices: tap a source model, then tap an alias to link.",view_mode:"View mode",view_mode_diagram:"Diagram",view_mode_list:"List",provider_required:"Please enter a provider first",upgrade_required:"This feature requires a newer CLI Proxy API (CPA) version. Please upgrade.",upgrade_required_title:"Please upgrade CLI Proxy API",upgrade_required_desc:"The current server does not support the OAuth model aliases API. Please upgrade to the latest CLI Proxy API (CPA) version."},CV={codex_oauth_title:"Codex OAuth",codex_oauth_button:"Start Codex Login",codex_oauth_hint:"Login to Codex service through OAuth flow, automatically obtain and save authentication files.",codex_oauth_url_label:"Authorization URL:",codex_open_link:"Open Link",codex_copy_link:"Copy Link",codex_oauth_status_waiting:"Waiting for authentication...",codex_oauth_status_success:"Authentication successful!",codex_oauth_status_error:"Authentication failed:",codex_oauth_start_error:"Failed to start Codex OAuth:",codex_oauth_polling_error:"Failed to check authentication status:",anthropic_oauth_title:"Anthropic OAuth",anthropic_oauth_button:"Start Anthropic Login",anthropic_oauth_hint:"Login to Anthropic (Claude) service through OAuth flow, automatically obtain and save authentication files.",anthropic_oauth_url_label:"Authorization URL:",anthropic_open_link:"Open Link",anthropic_copy_link:"Copy Link",anthropic_oauth_status_waiting:"Waiting for authentication...",anthropic_oauth_status_success:"Authentication successful!",anthropic_oauth_status_error:"Authentication failed:",anthropic_oauth_start_error:"Failed to start Anthropic OAuth:",anthropic_oauth_polling_error:"Failed to check authentication status:",antigravity_oauth_title:"Antigravity OAuth",antigravity_oauth_button:"Start Antigravity Login",antigravity_oauth_hint:"Login to Antigravity service (Google account) through OAuth flow, automatically obtain and save authentication files.",antigravity_oauth_url_label:"Authorization URL:",antigravity_open_link:"Open Link",antigravity_copy_link:"Copy Link",antigravity_oauth_status_waiting:"Waiting for authentication...",antigravity_oauth_status_success:"Authentication successful!",antigravity_oauth_status_error:"Authentication failed:",antigravity_oauth_start_error:"Failed to start Antigravity OAuth:",antigravity_oauth_polling_error:"Failed to check authentication status:",gemini_cli_oauth_title:"Gemini CLI OAuth",gemini_cli_oauth_button:"Start Gemini CLI Login",gemini_cli_oauth_hint:"Login to Google Gemini CLI service through OAuth flow, automatically obtain and save authentication files.",gemini_cli_project_id_label:"Google Cloud Project ID (Optional):",gemini_cli_project_id_placeholder:"Leave blank to auto-select first available project",gemini_cli_project_id_hint:"Optional. If not provided, the system will automatically select the first available project from your account. Enter ALL to fetch all projects.",gemini_cli_project_id_required:"Please enter a Google Cloud project ID.",gemini_cli_oauth_url_label:"Authorization URL:",gemini_cli_open_link:"Open Link",gemini_cli_copy_link:"Copy Link",gemini_cli_oauth_status_waiting:"Waiting for authentication...",gemini_cli_oauth_status_success:"Authentication successful!",gemini_cli_oauth_status_error:"Authentication failed:",gemini_cli_oauth_start_error:"Failed to start Gemini CLI OAuth:",gemini_cli_oauth_polling_error:"Failed to check authentication status:",kimi_oauth_title:"Kimi OAuth",kimi_oauth_button:"Start Kimi Login",kimi_oauth_hint:"Login to Kimi service through OAuth device flow, automatically obtain and save authentication files.",kimi_oauth_url_label:"Authorization URL:",kimi_open_link:"Open Link",kimi_copy_link:"Copy Link",kimi_oauth_status_waiting:"Waiting for authentication...",kimi_oauth_status_success:"Authentication successful!",kimi_oauth_status_error:"Authentication failed:",kimi_oauth_start_error:"Failed to start Kimi OAuth:",kimi_oauth_polling_error:"Failed to check authentication status:",qwen_oauth_title:"Qwen OAuth",qwen_oauth_button:"Start Qwen Login",qwen_oauth_hint:"Login to Qwen service through device authorization flow, automatically obtain and save authentication files.",qwen_oauth_url_label:"Authorization URL:",qwen_open_link:"Open Link",qwen_copy_link:"Copy Link",qwen_oauth_status_waiting:"Waiting for authentication...",qwen_oauth_status_success:"Authentication successful!",qwen_oauth_status_error:"Authentication failed:",qwen_oauth_start_error:"Failed to start Qwen OAuth:",qwen_oauth_polling_error:"Failed to check authentication status:",oauth_callback_label:"Callback URL",oauth_callback_placeholder:"http://localhost:1455/auth/callback?code=...&state=...",oauth_callback_hint:"Remote browser mode: after the provider redirects to http://localhost:..., copy the full URL and submit it here.",oauth_callback_button:"Submit Callback URL",oauth_callback_required:"Please paste the full redirect URL first.",oauth_callback_success:"Callback URL submitted. Continue waiting for authentication.",oauth_callback_error:"Failed to submit callback URL:",oauth_callback_upgrade_hint:"Please update CLI Proxy API or check the connection.",oauth_callback_status_success:"Callback URL submitted, waiting for authentication...",oauth_callback_status_error:"Callback URL submission failed:",missing_state:"Unable to retrieve authentication state parameter",iflow_oauth_title:"iFlow OAuth",iflow_oauth_button:"Start iFlow Login",iflow_oauth_hint:"Login to iFlow service through OAuth flow, automatically obtain and save authentication files.",iflow_oauth_url_label:"Authorization URL:",iflow_open_link:"Open Link",iflow_copy_link:"Copy Link",iflow_oauth_status_waiting:"Waiting for authentication...",iflow_oauth_status_success:"Authentication successful!",iflow_oauth_status_error:"Authentication failed:",iflow_oauth_start_error:"Failed to start iFlow OAuth:",iflow_oauth_polling_error:"Failed to check authentication status:",iflow_cookie_title:"iFlow Cookie Login",iflow_cookie_label:"Cookie Value:",iflow_cookie_placeholder:"Enter the BXAuth value, starting with BXAuth=",iflow_cookie_hint:"Submit an existing cookie to finish login without opening the authorization link; the credential file will be saved automatically.",iflow_cookie_key_hint:"Note: Create a key on the platform first.",iflow_cookie_button:"Submit Cookie Login",iflow_cookie_status_success:"Cookie login succeeded and credentials are saved.",iflow_cookie_status_error:"Cookie login failed:",iflow_cookie_status_duplicate:"Duplicate config:",iflow_cookie_start_error:"Failed to submit cookie login:",iflow_cookie_config_duplicate:"A config file already exists (duplicate). Remove the existing file and try again if you want to re-save it.",iflow_cookie_required:"Please provide the Cookie value first.",iflow_cookie_result_title:"Cookie Login Result",iflow_cookie_result_email:"Account",iflow_cookie_result_expired:"Expires At",iflow_cookie_result_path:"Saved Path",iflow_cookie_result_type:"Type",remote_access_disabled:"This login method is not available for remote access. Please access from localhost."},AV={title:"Usage Statistics",total_requests:"Total Requests",success_requests:"Success Requests",failed_requests:"Failed Requests",total_tokens:"Total Tokens",cached_tokens:"Cached Tokens",reasoning_tokens:"Reasoning Tokens",rpm_30m:"RPM",tpm_30m:"TPM",rate_30m:"Rate (last 30 min)",model_name:"Model Name",model_price_settings:"Model Pricing Settings",saved_prices:"Saved Prices",requests_trend:"Request Trends",tokens_trend:"Token Usage Trends",api_details:"API Details",by_hour:"By Hour",by_day:"By Day",range_filter:"Time Range",range_all:"All Time",range_7h:"Last 7 Hours",range_24h:"Last 24 Hours",range_7d:"Last 7 Days",filter_all:"All",clear_filters:"Clear Filters",refresh:"Refresh",export:"Export",import:"Import",export_csv:"Export CSV",export_json:"Export JSON",export_success:"Usage export downloaded",import_success:"Import complete: added {{added}}, skipped {{skipped}}, total {{total}}, failed {{failed}}",import_invalid:"Invalid usage export file",chart_line_label_1:"Line 1",chart_line_label_2:"Line 2",chart_line_label_3:"Line 3",chart_line_label_4:"Line 4",chart_line_label_5:"Line 5",chart_line_label_6:"Line 6",chart_line_label_7:"Line 7",chart_line_label_8:"Line 8",chart_line_label_9:"Line 9",chart_line_hidden:"Hide",chart_line_actions_label:"Lines to display",chart_line_add:"Add line",chart_line_all:"All",chart_line_delete:"Delete line",chart_line_hint:"Show up to 9 model lines at once",no_data:"No Data Available",loading_error:"Loading Failed",api_endpoint:"API Endpoint",requests_count:"Request Count",tokens_count:"Token Count",models:"Model Statistics",success_rate:"Success Rate",total_cost:"Total Cost",total_cost_hint:"Based on configured model pricing",model_price_title:"Model Pricing",model_price_reset:"Clear Prices",model_price_model_label:"Model",model_price_select_placeholder:"Choose a model",model_price_select_hint:"Models come from usage details",model_price_prompt:"Prompt price",model_price_completion:"Completion price",model_price_cache:"Cache price",model_price_save:"Save Price",model_price_empty:"No model prices set",model_price_model:"Model",model_price_saved:"Model price saved",model_price_model_required:"Please choose a model to set pricing",cost_trend:"Cost Overview",cost_axis_label:"Cost ($)",cost_need_price:"Set a model price to view cost stats",cost_need_usage:"No usage data available to calculate cost",cost_no_data:"No cost data yet",credential_stats:"Credential Statistics",credential_name:"Credential",token_breakdown:"Token Type Breakdown",request_events_title:"Request Events",request_events_filter_model:"Model",request_events_filter_source:"Source",request_events_filter_auth_index:"Auth Index",request_events_timestamp:"Timestamp",request_events_source:"Source",request_events_auth_index:"Auth Index",request_events_result:"Result",request_events_empty_title:"No request events",request_events_empty_desc:"No request details are available for the selected time range.",request_events_no_result_title:"No matching events",request_events_no_result_desc:"Try different filters or clear the current filters.",request_events_count:"{{count}} events",request_events_limit_hint:"Showing {{shown}} of {{total}} events to keep rendering responsive.",input_tokens:"Input Tokens",output_tokens:"Output Tokens",last_updated:"Updated"},NV={success:"Success",failure:"Failure"},TV={success_short:"✓",failure_short:"✗",no_requests:"No requests"},MV={title:"Service Health",window:"Last 7 days",oldest:"Oldest",newest:"Latest"},LV={title:"Logs Viewer",refresh_button:"Refresh Logs",clear_button:"Clear Logs",download_button:"Download Logs",error_log_button:"Select Error Log",error_logs_modal_title:"Error Request Logs",error_logs_description:"Pick an error request log file to download (only generated when request logging is off).",error_logs_request_log_enabled:"Request logging is enabled, so this list will always be empty. Disable request logging and refresh to view error logs.",error_logs_empty:"No error request log files found",error_logs_load_error:"Failed to load error log list",error_logs_size:"Size",error_logs_modified:"Last modified",error_logs_download:"Download",error_log_download_success:"Error log downloaded successfully",request_log_download_title:"Download Request Log",request_log_download_confirm:"Download request log for ID {{id}}?",request_log_download_success:"Request log downloaded successfully",empty_title:"No Logs Available",empty_desc:'When "Enable logging to file" is enabled, logs will be displayed here',log_content:"Log Content",loading:"Loading logs...",load_error:"Failed to load logs",clear_confirm:"Are you sure you want to clear all logs? This action cannot be undone!",clear_success:"Logs cleared successfully",download_success:"Logs downloaded successfully",auto_refresh:"Auto Refresh",auto_refresh_enabled:"Auto refresh enabled",auto_refresh_disabled:"Auto refresh disabled",load_more_hint:"Scroll up to load more",hidden_lines:"Hidden: {{count}} lines",loaded_lines:"Loaded: {{count}} lines",filtered_lines:"Filtered: {{count}} lines",hide_management_logs:"Hide {{prefix}} logs",show_raw_logs:"Show Raw Logs",show_raw_logs_hint:"Show original log text for easier multi-line copy",search_placeholder:"Search logs by content or keyword",filter_panel_title:"Structured Filters",filter_panel_expand:"Expand structured filters",filter_panel_collapse:"Collapse structured filters",filter_panel_active_count:"{{count}} active",filter_method:"Method",filter_status:"Status",filter_path:"Path",filter_path_empty:"No path candidates",filter_status_2xx:"2xx",filter_status_3xx:"3xx",filter_status_4xx:"4xx",filter_status_5xx:"5xx",clear_filters:"Clear Filters",trace_button:"Trace",trace_title:"Request Trace (V1)",trace_notice:"V1 uses heuristic correlation between logs and usage events. Results are estimates, not strict request_id matches.",trace_log_info:"Log Event",trace_candidates_title:"Usage Match Candidates",trace_loading:"Matching usage events...",trace_no_match:"No candidate matches found.",trace_usage_load_error:"Failed to load usage details for tracing",trace_download_request_log:"Download Request Log",trace_confidence_high:"High",trace_confidence_medium:"Medium",trace_confidence_low:"Low",trace_score:"Score {{score}}",trace_delta_seconds:"Δt {{seconds}}s",trace_model_matched:"Model Matched",trace_request_id:"Request ID",trace_method:"Method",trace_path:"Path",trace_status_code:"Status",trace_latency:"Latency",trace_ip:"IP",trace_timestamp:"Timestamp",trace_message:"Message",trace_endpoint:"Usage Endpoint",trace_model:"Model",trace_source:"Source",trace_auth_index:"Auth Index",trace_result:"Result",search_empty_title:"No matching logs found",search_empty_desc:"Try a different keyword or clear the filters.",double_click_copy_hint:"Double-click to copy raw log line",copy_success:"Log copied to clipboard",copy_failed:"Copy failed",lines:"lines",removed:"Filtered",upgrade_required_title:"Please Upgrade CLI Proxy API",upgrade_required_desc:"The current server version does not support the logs viewing feature. Please upgrade to the latest version of CLI Proxy API to use this feature."},OV={title:"Config Panel",editor_title:"Configuration File",reload:"Reload",reload_confirm_message:"Reloading will discard your unsaved changes. Do you want to continue?",save:"Save",description:"Edit config.yaml via visual editor or source file",status_idle:"Waiting for action",status_loading:"Loading configuration...",status_loading_short:"Loading",status_loaded:"Configuration loaded",status_loaded_short:"Loaded",status_dirty:"Unsaved changes",status_dirty_short:"Unsaved",status_disconnected:"Connect to the server to load the configuration",status_disconnected_short:"Disconnected",status_load_failed:"Load failed",status_load_failed_short:"Failed",status_saving:"Saving configuration...",status_saving_short:"Saving",status_saved:"Configuration saved",status_save_failed:"Save failed",save_success:"Configuration saved successfully",error_yaml_not_supported:"Server did not return YAML. Verify the /config.yaml endpoint is available.",visual_mode_unavailable:"Visual editor unavailable until YAML syntax is fixed",visual_mode_unavailable_short:"YAML issue",validation_blocked_short:"Fix errors",visual_mode_unavailable_detail:"Visual editor is unavailable because the configuration contains invalid YAML: {{message}}",visual_mode_save_blocked:"Cannot save from visual mode until the YAML syntax is fixed",visual_mode_latest_yaml_invalid:"The latest server configuration contains invalid YAML. Review it in source mode before saving visual changes: {{message}}",editor_placeholder:"key: value",search_placeholder:"Search config...",search_button:"Search",search_no_results:"No results",search_prev:"Previous",search_next:"Next",diff:{title:"Review Changes",current:"Current",modified:"Modified",confirm:"Confirm Save",no_changes:"No changes detected"},tabs:{visual:"Visual Editor",source:"Source File Editor"},visual:{notice:"Visual mode covers common fields. Review or edit unsupported config.yaml entries in source mode.",quick_jump:"Quick Jump",sections:{server:{title:"Server Configuration",description:"Basic server settings",host:"Host Address",port:"Port"},tls:{title:"TLS/SSL Configuration",description:"HTTPS secure connection settings",enable:"Enable TLS",enable_desc:"Enable HTTPS secure connection",cert:"Certificate File Path",key:"Private Key File Path"},remote:{title:"Remote Management",description:"Remote access and control panel settings",allow_remote:"Allow Remote Access",allow_remote_desc:"Allow management access from other hosts",disable_panel:"Disable Control Panel",disable_panel_desc:"Disable the built-in web control panel",secret_key:"Management Key",secret_key_placeholder:"Set management key",panel_repo:"Panel Repository"},auth:{title:"Authentication Configuration",description:"API keys and authentication directory settings",auth_dir:"Auth Directory (auth-dir)",auth_dir_hint:"Directory path for authentication files (supports ~)"},system:{title:"System Configuration",description:"Debug, logging, statistics, and performance settings",debug:"Debug Mode",debug_desc:"Enable verbose debug logging",commercial_mode:"Commercial Mode",commercial_mode_desc:"Disable high-overhead middleware to support high concurrency",logging_to_file:"Log to File",logging_to_file_desc:"Save logs to files",usage_statistics:"Usage Statistics",usage_statistics_desc:"Collect usage statistics",logs_max_size:"Log File Size Limit (MB)"},network:{title:"Network Configuration",description:"Proxy, retry, and routing settings",proxy_url:"Proxy URL",request_retry:"Request Retry Count",max_retry_credentials:"Max Retry Credentials",max_retry_credentials_hint:"Leave empty to keep it unset. Set to 0 to preserve legacy behavior and try all available credentials.",max_retry_interval:"Max Retry Interval (seconds)",routing_strategy:"Routing Strategy",routing_strategy_hint:"Select credential selection strategy",strategy_round_robin:"Round Robin",strategy_fill_first:"Fill First",force_model_prefix:"Force Model Prefix",force_model_prefix_desc:"Unprefixed model requests only use credentials without prefix",ws_auth:"WebSocket Authentication",ws_auth_desc:"Enable WebSocket authentication (/v1/ws)"},quota:{title:"Quota Fallback",description:"Fallback strategy when quota is exceeded",switch_project:"Switch Project",switch_project_desc:"Automatically switch to another project when quota is exceeded",switch_preview_model:"Switch to Preview Model",switch_preview_model_desc:"Switch to preview model version when quota is exceeded"},streaming:{title:"Streaming Configuration",description:"Keepalive and bootstrap retry settings",keepalive_seconds:"Keepalive Seconds",keepalive_hint:"Set to 0 or leave empty to disable keepalive",bootstrap_retries:"Bootstrap Retries",bootstrap_hint:"Number of retries during stream startup (before first byte)",nonstream_keepalive:"Non-stream Keepalive Interval (seconds)",nonstream_keepalive_hint:"Send blank lines every N seconds for non-streaming responses to prevent idle timeout, set to 0 or leave empty to disable",disabled:"Disabled"},payload:{title:"Payload Configuration",description:"Default values, raw JSON rules, override rules, and filter rules",default_rules:"Default Rules",default_rules_desc:"Use these default values when parameters are not specified in the request",default_raw_rules:"Default Raw Rules",default_raw_rules_desc:'When parameters are missing, write these values as raw JSON fragments such as true, 123, "high", or {"type":"object"}',override_rules:"Override Rules",override_rules_desc:"Force override parameter values in the request",override_raw_rules:"Override Raw Rules",override_raw_rules_desc:"Always overwrite parameter values as raw JSON fragments, useful for response_format, schemas, and other complex fields",filter_rules:"Filter Rules",filter_rules_desc:"Pre-filter upstream request body via JSON Path, automatically remove non-compliant/redundant parameters (Request Sanitization)"}},api_keys:{label:"API Keys List (api-keys)",add:"Add API Key",generate:"Generate",empty:"No API keys",hint:"Each entry represents an API key (consistent with 'API Key Management' page style)",edit_title:"Edit API Key",add_title:"Add API Key",input_label:"API Key",input_placeholder:"Paste your API key",input_hint:"This only modifies the local config file content, it will not sync to the API Key Management interface",error_empty:"Please enter an API key",error_invalid:"API key contains invalid characters"},payload_rules:{rule:"Rule",models:"Applicable Models",model_name:"Model Name",provider_type:"Provider Type",add_model:"Add Model",params:"Parameter Settings",remove_params:"Remove Parameters",json_path:"JSON Path (e.g., temperature)",json_path_filter:"JSON Path (gjson/sjson), e.g., generationConfig.thinkingConfig.thinkingBudget",param_type:"Parameter Type",param_value:"Parameter Value",add_param:"Add Parameter",no_rules:"No rules",add_rule:"Add Rule",provider_default:"Default",provider_openai:"OpenAI",provider_openai_response:"OpenAI Response",provider_gemini:"Gemini",provider_claude:"Claude",provider_codex:"Codex",provider_antigravity:"Antigravity",value_type_string:"String",value_type_number:"Number",value_type_boolean:"Boolean",value_type_json:"JSON",value_string:"String value",value_number:"Number value (e.g., 0.7)",value_boolean:"true or false",value_json:"JSON value",value_raw_json:'Raw JSON fragment, e.g. true, 123, "high", or {"type":"object"}',value_default:"Value",boolean_true:"true",boolean_false:"false"},validation:{validation_blocked:"Fix validation errors before saving",port_range:"Enter a valid port between 1 and 65535",non_negative_integer:"Enter a non-negative whole number",payload_invalid_number:"Enter a valid number",payload_invalid_boolean:"Choose true or false",payload_invalid_json:"Enter valid JSON"},common:{edit:"Edit",delete:"Delete",cancel:"Cancel",update:"Update",add:"Add"}}},PV={title:"Quota Management",description:"Monitor OAuth quota status for Antigravity, Codex, and Gemini CLI credentials.",refresh_files:"Refresh auth files",refresh_files_and_quota:"Refresh files & quota",refresh_all_credentials:"Refresh all credentials",card_idle_hint:'Use the top "Refresh all credentials" button to fetch the latest quota data.'},EV={title:"Management Center Info",about_title:"CLI Proxy API Management Center",connection_status_title:"Connection Status",api_status_label:"API Status:",config_status_label:"Config Status:",last_update_label:"Last Update:",cache_data:"Cache Data",real_time_data:"Real-time Data",not_loaded:"Not Loaded",seconds_ago:"seconds ago",models_title:"Available Models",models_desc:"Shows the /models response and uses saved API keys for auth automatically.",models_loading:"Loading available models...",models_empty:"No models returned by /models",models_error:"Failed to load model list",models_count:"{{count}} available models",version_check_title:"Update Check",version_check_desc:"Call the /latest-version endpoint to compare with the server version and see if an update is available.",version_current_label:"Current version",version_latest_label:"Latest version",version_check_button:"Check for updates",version_check_idle:"Click to check for updates",version_checking:"Checking for the latest version...",version_update_available:"An update is available: {{version}}",version_is_latest:"You are on the latest version",version_check_error:"Update check failed",version_current_missing:"Server version is unavailable; cannot compare",version_unknown:"Unknown",quick_links_title:"Quick Links",quick_links_desc:"Access project repositories and documentation for help and updates.",link_main_repo:"Main Repository",link_main_repo_desc:"CLI Proxy API core program source code",link_webui_repo:"WebUI Repository",link_webui_repo_desc:"Management Center frontend source code",link_docs:"Documentation",link_docs_desc:"Usage tutorials and configuration guides",clear_login_title:"Local Login Data",clear_login_desc:"Clear locally saved login data and sign out. Usage stats pricing settings will remain untouched.",clear_login_button:"Clear login data",clear_login_confirm:"Clear local login data and sign out now?"},jV={debug_updated:"Debug settings updated",proxy_updated:"Proxy settings updated",proxy_cleared:"Proxy settings cleared",retry_updated:"Retry settings updated",quota_switch_project_updated:"Project switch settings updated",quota_switch_preview_updated:"Preview model switch settings updated",usage_statistics_updated:"Usage statistics settings updated",logging_to_file_updated:"Logging settings updated",logs_max_total_size_updated:"Log size limit updated",request_log_updated:"Request logging setting updated",force_model_prefix_updated:"Model prefix setting updated",ws_auth_updated:"WebSocket authentication setting updated",routing_strategy_updated:"Routing strategy updated",login_storage_cleared:"Local login data cleared",api_key_added:"API key added successfully",api_key_updated:"API key updated successfully",api_key_deleted:"API key deleted successfully",api_key_invalid_chars:"API key can only contain letters, numbers, and symbols",gemini_key_added:"Gemini key added successfully",gemini_key_updated:"Gemini key updated successfully",gemini_key_deleted:"Gemini key deleted successfully",gemini_multi_input_required:"Please enter at least one Gemini key",gemini_multi_failed:"Gemini bulk add failed",gemini_multi_summary:"Gemini bulk add finished: {{success}} added, {{skipped}} skipped, {{failed}} failed",codex_config_added:"Codex configuration added successfully",codex_config_updated:"Codex configuration updated successfully",codex_config_deleted:"Codex configuration deleted successfully",codex_base_url_required:"Please enter the Codex Base URL",claude_config_added:"Claude configuration added successfully",claude_config_updated:"Claude configuration updated successfully",claude_config_deleted:"Claude configuration deleted successfully",vertex_config_added:"Vertex configuration added successfully",vertex_config_updated:"Vertex configuration updated successfully",vertex_config_deleted:"Vertex configuration deleted successfully",config_enabled:"Configuration enabled",config_disabled:"Configuration disabled",field_required:"Required fields cannot be empty",openai_provider_required:"Please fill in provider name and Base URL",openai_provider_added:"OpenAI provider added successfully",openai_provider_updated:"OpenAI provider updated successfully",openai_provider_deleted:"OpenAI provider deleted successfully",ampcode_updated:"Ampcode configuration updated",ampcode_upstream_api_key_cleared:"Ampcode upstream API key override cleared",openai_model_name_required:"Model name is required",openai_test_url_required:"Please provide a valid Base URL before testing",openai_test_key_required:"Please add at least one API key before testing",openai_test_model_required:"Please select a model to test",data_refreshed:"Data refreshed successfully",connection_required:"Please establish connection first",refresh_failed:"Refresh failed",update_failed:"Update failed",add_failed:"Add failed",delete_failed:"Delete failed",upload_failed:"Upload failed",download_failed:"Download failed",login_failed:"Login failed",please_enter:"Please enter",please_fill:"Please fill",provider_name_url:"provider name and Base URL",api_key:"API key",gemini_api_key:"Gemini API key",codex_api_key:"Codex API key",claude_api_key:"Claude API key",commercial_mode_restart_required:"Commercial mode setting changed. Please restart the service for it to take effect",copy_failed:"Copy failed",link_copied:"Link copied to clipboard"},RV={switch:"Language",chinese:"中文",english:"English",russian:"Русский"},DV={switch:"Theme",light:"Wool Paper",white:"Pure White",dark:"Dark",switch_to_light:"Switch to wool paper mode",switch_to_dark:"Switch to dark mode",auto:"Follow system"},FV={toggle_expand:"Expand sidebar",toggle_collapse:"Collapse sidebar"},IV={api_version:"CLI Proxy API Version",build_date:"Build Time",version:"Management UI Version",author:"Author"},BV={common:sV,title:aV,splash:oV,auto_login:rV,login:lV,header:cV,connection:uV,nav:dV,dashboard:hV,basic_settings:fV,api_keys:mV,ai_providers:pV,auth_files:gV,antigravity_quota:_V,claude_quota:yV,codex_quota:bV,gemini_cli_quota:vV,kimi_quota:xV,vertex_import:SV,oauth_excluded:wV,oauth_model_alias:kV,auth_login:CV,usage_stats:AV,stats:NV,status_bar:TV,service_health:MV,logs:LV,config_management:OV,quota_management:PV,system_info:EV,notification:jV,language:RV,theme:DV,sidebar:FV,footer:IV},UV={login:"Войти",logout:"Выйти",back:"Назад",cancel:"Отмена",confirm:"Подтвердить",leave:"Уйти",stay:"Остаться",save:"Сохранить",delete:"Удалить",edit:"Редактировать",add:"Добавить",update:"Обновить",refresh:"Обновить",close:"Закрыть",success:"Успешно",error:"Ошибка",info:"Информация",warning:"Внимание",loading:"Загрузка...",connecting:"Подключение...",connected:"Подключено",disconnected:"Отключено",connecting_status:"Подключение",connected_status:"Подключено",disconnected_status:"Отключено",yes:"Да",no:"Нет",not_set:"Не задано",optional:"Необязательно",required:"Обязательно",api_key:"Ключ",base_url:"Адрес",prefix:"Префикс",proxy_url:"Прокси",priority:"Приоритет",alias:"Псевдоним",failure:"Сбой",unknown_error:"Неизвестная ошибка",quota_update_required:"Пожалуйста, обновите CPA или проверьте наличие обновлений",quota_check_credential:"Пожалуйста, проверьте статус учётных данных",copy:"Копировать",expand:"Развернуть",collapse:"Свернуть",status:"Статус",action:"Действие",custom_headers_label:"Пользовательские заголовки",custom_headers_hint:"Необязательно — HTTP-заголовки для отправки с запросом. Оставьте пустым для удаления.",custom_headers_add:"Добавить заголовок",custom_headers_key_placeholder:"Имя заголовка, например X-Custom-Header",custom_headers_value_placeholder:"Значение заголовка",model_name_placeholder:"Имя модели, напр. claude-3-5-sonnet-20241022",model_alias_placeholder:"Псевдоним модели (необязательно)",invalid_provider_index:"Неверный индекс провайдера.",unsaved_changes_title:"Несохранённые изменения",unsaved_changes_message:"У вас есть несохранённые изменения. Если вы уйдёте, они будут потеряны. Выйти?"},qV={main:"Центр управления CLI Proxy API",login:"Центр управления CLI Proxy API",abbr:"CPAMC"},zV={title:"CLI Proxy API",subtitle:"Центр управления"},KV={title:"Автовход...",message:"Пытаемся подключиться к серверу, используя сохранённые данные"},VV={subtitle:"Введите данные подключения, чтобы получить доступ к панели управления",connection_title:"Адрес подключения",connection_current:"Текущий URL",connection_auto_hint:"Система автоматически использует текущий URL для подключения",custom_connection_label:"Пользовательский URL подключения:",custom_connection_placeholder:"Напр.: https://example.com:8317",custom_connection_hint:"По умолчанию используется текущий URL. При необходимости замените его.",use_current_address:"Использовать текущий URL",remember_password_label:"Запомнить пароль",management_key_label:"Ключ управления:",management_key_placeholder:"Введите ключ управления",connect_button:"Подключиться",submit_button:"Войти",submitting:"Подключение...",error_title:"Ошибка входа",error_required:"Пожалуйста, заполните все данные подключения",error_invalid:"Подключение не удалось, проверьте адрес и ключ",error_network:"Сетевая ошибка, проверьте подключение или адрес сервера",error_timeout:"Время ожидания истекло, сервер не отвечает",error_unauthorized:"Аутентификация не удалась, неверный ключ управления",error_forbidden:"Доступ запрещён, недостаточно прав",error_not_found:"Неверный адрес сервера или интерфейс управления не включён",error_server:"Внутренняя ошибка сервера, попробуйте позже",error_cors:"Блокировка CORS, проверьте конфигурацию сервера",error_ssl:"Ошибка проверки SSL/TLS сертификата"},HV={check_connection:"Проверить подключение",refresh_all:"Обновить всё",logout:"Выйти"},WV={title:"Информация о подключении",server_address:"Адрес сервера:",management_key:"Ключ управления:",status:"Статус подключения:"},GV={dashboard:"Панель",basic_settings:"Основные настройки",api_keys:"API ключи",ai_providers:"Поставщики AI",auth_files:"Файлы аутентификации",oauth:"OAuth вход",quota_management:"Управление квотами",usage_stats:"Статистика использования",config_management:"Панель конфигурации",logs:"Просмотр логов",system_info:"Информация системы"},$V={title:"Панель управления",subtitle:"Добро пожаловать в Центр управления CLI Proxy API",openai_providers:"Поставщики OpenAI",quick_actions:"Быстрые действия",current_config:"Текущая конфигурация",management_keys:"Ключи управления",provider_keys_detail:"G:{{gemini}} C:{{codex}} Cl:{{claude}} O:{{openai}}",oauth_credentials:"Учётные данные OAuth",usage_overview:"Обзор использования",total_requests:"Всего запросов",total_tokens:"Всего токенов",rpm_30min:"RPM (30 мин)",tpm_30min:"TPM (30 мин)",models_used:"Используемые модели",no_usage_data:"Данные об использовании отсутствуют",view_detailed_usage:"Просмотреть детальную статистику",edit_settings:"Изменить настройки",routing_strategy:"Стратегия маршрутизации",available_models:"Доступные модели",available_models_desc:"Всего моделей от всех провайдеров",welcome_back:"С возвращением",greeting_morning:"Доброе утро",greeting_afternoon:"Добрый день",greeting_evening:"Добрый вечер",greeting_night:"Доброй ночи",caring_morning:"Новый день — начнём продуктивно.",caring_afternoon:"Уверенный прогресс — отличная работа.",caring_evening:"День подходит к концу — финальный рывок.",caring_night:"Поздняя работа? Не забудьте отдохнуть.",system_overview:"Обзор системы"},XV={title:"Основные настройки",debug_title:"Режим отладки",debug_enable:"Включить режим отладки",proxy_title:"Настройки прокси",proxy_url_label:"URL прокси:",proxy_url_placeholder:"например: socks5://user:pass@127.0.0.1:1080/",proxy_update:"Обновить",proxy_clear:"Очистить",retry_title:"Повтор запросов",retry_count_label:"Количество повторов:",retry_update:"Обновить",quota_title:"Поведение при превышении квоты",quota_switch_project:"Автоматически переключать проект",quota_switch_preview:"Переключаться на preview-модель",usage_statistics_title:"Статистика использования",usage_statistics_enable:"Включить статистику использования",logging_title:"Журналирование",logging_to_file_enable:"Включить журналирование в файл",logs_max_total_size_title:"Лимит размера журналов",logs_max_total_size_label:"Максимальный общий размер журналов (МБ):",logs_max_total_size_hint:"Установите 0, чтобы отключить лимит.",logs_max_total_size_update:"Обновить",request_log_title:"Журналирование запросов",request_log_enable:"Включить журналирование запросов",request_log_warning:"Оставьте выключенным, если подробная диагностика не нужна.",force_model_prefix_enable:"Включить принудительный префикс модели",ws_auth_title:"Аутентификация WebSocket",ws_auth_enable:"Требовать аутентификацию для /ws/*",routing_title:"Стратегия маршрутизации",routing_strategy_label:"Стратегия маршрутизации:",routing_strategy_hint:"round-robin циклически перебирает ключи; fill-first отдаёт приоритет первому доступному ключу.",routing_strategy_update:"Обновить",routing_strategy_round_robin:"round-robin (цикл)",routing_strategy_fill_first:"fill-first (приоритет)"},QV={title:"Управление API-ключами",proxy_auth_title:"Ключи аутентификации прокси-сервиса",add_button:"Добавить ключ",empty_title:"API-ключи отсутствуют",empty_desc:"Нажмите кнопку выше, чтобы добавить первый ключ",item_title:"API-ключ",add_modal_title:"Добавление API-ключа",add_modal_key_label:"API-ключ:",add_modal_key_placeholder:"Введите API-ключ",edit_modal_title:"Редактирование API-ключа",edit_modal_key_label:"API-ключ:",delete_confirm:"Удалить этот API-ключ?"},YV=JSON.parse('{"title":"Конфигурация AI-провайдеров","gemini_title":"API-ключи Gemini","gemini_add_button":"Добавить ключ","gemini_empty_title":"Ключи Gemini отсутствуют","gemini_empty_desc":"Нажмите кнопку выше, чтобы добавить первый ключ","gemini_item_title":"Ключ Gemini","gemini_add_modal_title":"Добавление API-ключа Gemini","gemini_add_modal_key_label":"API-ключи:","gemini_add_modal_key_placeholder":"Введите API-ключ Gemini","gemini_add_modal_key_hint":"Добавляйте ключи по одному и при необходимости указывайте базовый URL.","gemini_keys_add_btn":"Добавить ключ","gemini_base_url_label":"Базовый URL (необязательно):","gemini_base_url_placeholder":"например: https://generativelanguage.googleapis.com","gemini_add_modal_proxy_label":"URL прокси (необязательно):","gemini_add_modal_proxy_placeholder":"например: socks5://proxy.example.com:1080","gemini_models_label":"Пользовательские модели (необязательно):","gemini_models_hint":"Оставьте пустым, чтобы разрешить все модели, или добавьте записи name[, alias], чтобы ограничить/переименовать их для этого ключа.","gemini_models_add_btn":"Добавить модель","gemini_models_fetch_button":"Получить через /v1beta/models","gemini_models_fetch_title":"Выбор моделей из Gemini /v1beta/models","gemini_models_fetch_hint":"Вызывает GET /v1beta/models по спецификации Gemini API. По умолчанию отправляется x-goog-api-key из поля API-ключа, объединённый с вашими пользовательскими заголовками.","gemini_models_fetch_url_label":"URL запроса","gemini_models_fetch_refresh":"Обновить","gemini_models_fetch_loading":"Получение моделей из Gemini /v1beta/models...","gemini_models_fetch_empty":"Модели не получены. Проверьте Base URL, API-ключ или заголовки.","gemini_models_fetch_error":"Не удалось получить модели Gemini","gemini_models_fetch_apply":"Добавить выбранные модели","model_discovery_select_visible":"Выбрать текущий список","model_discovery_clear_selection":"Очистить выбор","model_discovery_selected_count":"Выбрано: {{count}}","gemini_models_search_label":"Поиск моделей","gemini_models_search_placeholder":"Фильтр по имени, псевдониму или описанию","gemini_models_search_empty":"Нет подходящих моделей. Попробуйте другой запрос.","gemini_models_fetch_added":"Добавлено новых моделей: {{count}}","gemini_models_count":"Количество моделей","gemini_edit_modal_title":"Редактирование API-ключа Gemini","gemini_edit_modal_key_label":"API-ключ:","gemini_delete_confirm":"Удалить этот ключ Gemini?","excluded_models_label":"Исключённые модели (необязательно):","excluded_models_placeholder":"Через запятую или с новой строки, например gemini-1.5-pro, gemini-1.5-flash","excluded_models_hint":"Оставьте пустым, чтобы разрешить все модели; значения автоматически обрезаются и дедуплицируются.","excluded_models_count":"Исключено моделей: {{count}}","prefix_label":"Префикс (необязательно):","prefix_placeholder":"например: team-a","prefix_hint":"Если задано, обращайтесь к моделям как prefix/<model>, чтобы выбрать эту запись.","priority_label":"Приоритет (необязательно):","priority_hint":"Чем больше значение, тем выше приоритет. Оставьте пустым для значения по умолчанию (0).","config_toggle_label":"Включено","config_disabled_badge":"Отключено","codex_title":"Конфигурация Codex API","codex_add_button":"Добавить конфигурацию","codex_empty_title":"Конфигурации Codex отсутствуют","codex_empty_desc":"Нажмите кнопку выше, чтобы добавить первую конфигурацию","codex_item_title":"Конфигурация Codex","codex_add_modal_title":"Добавление конфигурации Codex API","codex_add_modal_key_label":"API-ключ:","codex_add_modal_key_placeholder":"Введите API-ключ Codex","codex_add_modal_url_label":"Базовый URL (обязательно):","codex_add_modal_url_placeholder":"например: https://api.example.com","codex_add_modal_proxy_label":"URL прокси (необязательно):","codex_add_modal_proxy_placeholder":"например: socks5://proxy.example.com:1080","codex_websockets_label":"Websockets","codex_websockets_hint":"Включает websocket-транспорт Responses API для этого ключа.","codex_models_label":"Пользовательские модели (необязательно):","codex_models_hint":"Оставьте пустым, чтобы разрешить все модели, или добавьте записи name[, alias], чтобы ограничить/переименовать их.","codex_models_add_btn":"Добавить модель","codex_models_fetch_button":"Получить через /v1/models","codex_models_fetch_title":"Выбор моделей из Codex /v1/models","codex_models_fetch_hint":"Вызывает GET /v1/models по спецификации OpenAI. По умолчанию отправляет API-ключ как Bearer (если указан) и объединяет его с пользовательскими заголовками.","codex_models_fetch_url_label":"URL запроса","codex_models_fetch_refresh":"Обновить","codex_models_fetch_loading":"Получение моделей из /v1/models...","codex_models_fetch_empty":"Модели не получены. Проверьте Base URL, API-ключ или заголовки.","codex_models_fetch_error":"Не удалось получить модели","codex_models_fetch_apply":"Добавить выбранные модели","codex_models_search_label":"Поиск моделей","codex_models_search_placeholder":"Фильтр по имени, псевдониму или описанию","codex_models_search_empty":"Модели по запросу не найдены. Попробуйте другой запрос.","codex_models_fetch_added":"Добавлено новых моделей: {{count}}","codex_models_count":"Количество моделей","codex_edit_modal_title":"Редактирование конфигурации Codex API","codex_edit_modal_key_label":"API-ключ:","codex_edit_modal_url_label":"Базовый URL (обязательно):","codex_edit_modal_proxy_label":"URL прокси (необязательно):","codex_delete_confirm":"Удалить эту конфигурацию Codex?","claude_title":"Конфигурация Claude API","claude_add_button":"Добавить конфигурацию","claude_empty_title":"Конфигурации Claude отсутствуют","claude_empty_desc":"Нажмите кнопку выше, чтобы добавить первую конфигурацию","claude_item_title":"Конфигурация Claude","claude_add_modal_title":"Добавление конфигурации Claude API","claude_add_modal_key_label":"API-ключ:","claude_add_modal_key_placeholder":"Введите API-ключ Claude","claude_add_modal_url_label":"Базовый URL (необязательно):","claude_add_modal_url_placeholder":"например: https://api.anthropic.com","claude_add_modal_proxy_label":"URL прокси (необязательно):","claude_add_modal_proxy_placeholder":"например: socks5://proxy.example.com:1080","claude_edit_modal_title":"Редактирование конфигурации Claude API","claude_edit_modal_key_label":"API-ключ:","claude_edit_modal_url_label":"Базовый URL (необязательно):","claude_edit_modal_proxy_label":"URL прокси (необязательно):","claude_delete_confirm":"Удалить эту конфигурацию Claude?","claude_models_label":"Пользовательские модели (необязательно):","claude_models_hint":"Оставьте пустым, чтобы разрешить все модели, или добавьте записи name[, alias], чтобы ограничить/переименовать их.","claude_models_add_btn":"Добавить модель","claude_models_count":"Количество моделей","claude_models_fetch_button":"Получить через /v1/models","claude_models_fetch_title":"Выбор моделей из Claude /v1/models","claude_models_fetch_hint":"Вызывает GET /v1/models по спецификации Anthropic. По умолчанию отправляются x-api-key и anthropic-version: 2023-06-01, объединённые с вашими пользовательскими заголовками.","claude_models_fetch_url_label":"URL запроса","claude_models_fetch_refresh":"Обновить","claude_models_fetch_loading":"Получение моделей из Claude /v1/models...","claude_models_fetch_empty":"Модели не вернулись. Проверьте Base URL, API-ключ или заголовки.","claude_models_fetch_error":"Не удалось получить модели Claude","claude_models_fetch_apply":"Добавить выбранные модели","claude_models_search_label":"Поиск моделей","claude_models_search_placeholder":"Фильтр по имени, псевдониму или описанию","claude_models_search_empty":"Модели по запросу не найдены. Попробуйте другой ключ.","claude_models_fetch_added":"Добавлено новых моделей: {{count}}","claude_test_title":"Тест подключения","claude_test_hint":"Отправляет тестовый запрос в /v1/messages по спецификации Anthropic, чтобы проверить текущую конфигурацию.","claude_test_select_placeholder":"Выберите из текущих моделей","claude_test_select_empty":"Модели не настроены. Сначала добавьте модели","claude_test_action":"Тест","claude_test_running":"Отправка тестового запроса Claude...","claude_test_timeout":"Тестовый запрос превысил тайм-аут {{seconds}} с","claude_test_success":"Тест выполнен успешно. Модель Claude ответила.","claude_test_failed":"Тест не выполнен","claude_test_key_required":"Укажите Claude API-ключ или задайте x-api-key в пользовательских заголовках","claude_test_model_required":"Выберите модель для теста","claude_test_endpoint_invalid":"Не удалось сформировать корректный endpoint Claude /v1/messages","claude_cloak_title":"Маскировка запросов (необязательно):","claude_cloak_toggle_label":"Включить","claude_cloak_toggle_aria":"Переключить маскировку запросов","claude_cloak_hint":"Маскировка делает запросы похожими на запросы официального CLI Claude Code для клиентов, которые не являются Claude Code.","claude_cloak_mode_label":"Режим:","claude_cloak_mode_hint":"auto: маскировать только если клиент не Claude Code; always: всегда; never: никогда.","claude_cloak_mode_auto":"Auto (только не-Claude Code)","claude_cloak_mode_always":"Всегда","claude_cloak_mode_never":"Никогда","claude_cloak_strict_label":"Строгий режим:","claude_cloak_strict_hint":"Если включено, пользовательские system-сообщения удаляются, остаётся только промпт Claude Code.","claude_cloak_sensitive_words_label":"Чувствительные слова (необязательно):","claude_cloak_sensitive_words_placeholder":"Через запятую или с новой строки, например internal-project","claude_cloak_sensitive_words_hint":"Эти слова будут обфусцированы с помощью символов нулевой ширины.","claude_cloak_sensitive_words_count":"Чувствительные слова","vertex_title":"Конфигурация Vertex API","vertex_add_button":"Добавить конфигурацию","vertex_empty_title":"Конфигурации Vertex отсутствуют","vertex_empty_desc":"Нажмите кнопку выше, чтобы добавить первую конфигурацию","vertex_item_title":"Конфигурация Vertex","vertex_add_modal_title":"Добавление конфигурации Vertex API","vertex_add_modal_key_label":"API-ключ:","vertex_add_modal_key_placeholder":"Введите API-ключ Vertex","vertex_add_modal_url_label":"Базовый URL:","vertex_add_modal_url_placeholder":"например: https://example.com/api","vertex_add_modal_proxy_label":"URL прокси (необязательно):","vertex_add_modal_proxy_placeholder":"например: socks5://proxy.example.com:1080","vertex_edit_modal_title":"Редактирование конфигурации Vertex API","vertex_edit_modal_key_label":"API-ключ:","vertex_edit_modal_url_label":"Базовый URL:","vertex_edit_modal_proxy_label":"URL прокси (необязательно):","vertex_delete_confirm":"Удалить эту конфигурацию Vertex?","vertex_models_label":"Псевдонимы моделей:","vertex_models_add_btn":"Добавить сопоставление","vertex_models_count":"Количество псевдонимов","ampcode_title":"Интеграция Amp CLI (ampcode)","ampcode_modal_title":"Настройка Ampcode","ampcode_upstream_url_label":"Upstream URL","ampcode_upstream_url_placeholder":"например: https://ampcode.com","ampcode_upstream_url_hint":"Необязательно. Оставьте пустым, чтобы использовать URL плоскости управления по умолчанию/обнаруженный автоматически.","ampcode_upstream_api_key_label":"Upstream API-ключ (официальный Amp)","ampcode_upstream_api_key_placeholder":"Введите sk-amp... (оставьте пустым, чтобы сохранить текущий)","ampcode_upstream_api_key_hint":"Необязательно. Пустое значение не изменит текущий официальный ключ Amp. Используйте кнопку ниже, чтобы очистить его.","ampcode_upstream_api_key_current":"Текущий официальный ключ Amp: {{key}}","ampcode_clear_upstream_api_key":"Очистить официальный ключ","ampcode_clear_upstream_api_key_confirm":"Очистить upstream API-ключ Ampcode (официальный Amp)?","ampcode_upstream_api_keys_label":"Маршрутизация нескольких upstream API-ключей","ampcode_upstream_api_keys_hint":"Привяжите разные upstream API-ключи Amp к указанным клиентским API-ключам. Клиентские ключи можно разделять запятыми или переводами строки.","ampcode_upstream_api_keys_add_btn":"Добавить upstream-сопоставление","ampcode_upstream_api_keys_upstream_placeholder":"Upstream API-ключ (sk-amp-...)","ampcode_upstream_api_keys_clients_placeholder":"Клиентские API-ключи, через запятую или с новой строки","ampcode_upstream_api_keys_item_title":"Upstream-сопоставление #{{index}}","ampcode_upstream_api_keys_count":"Количество upstream-сопоставлений","ampcode_force_model_mappings_label":"Принудительно применять сопоставления моделей","ampcode_force_model_mappings_hint":"При включении сопоставления переопределяют локальные проверки доступности API-ключей.","ampcode_model_mappings_label":"Сопоставления моделей (из → в)","ampcode_model_mappings_hint":"Переименовывает модели в запросах Amp. Оставьте пустым, чтобы отключить сопоставления.","ampcode_model_mappings_add_btn":"Добавить сопоставление","ampcode_model_mappings_from_placeholder":"исходная модель","ampcode_model_mappings_to_placeholder":"целевая модель","ampcode_model_mappings_count":"Количество сопоставлений","ampcode_lists_overwrite_title":"Перезаписать списки","ampcode_lists_overwrite_confirm":"Существующие списки multi-upstream/сопоставлений моделей не удалось загрузить. Продолжение может перезаписать или очистить их. Продолжить?","ampcode_mappings_overwrite_confirm":"Не удалось загрузить существующие сопоставления. Продолжение может перезаписать или очистить их. Продолжить?","openai_title":"Совместимые с OpenAI провайдеры","openai_add_button":"Добавить провайдера","openai_empty_title":"Провайдеры OpenAI отсутствуют","openai_empty_desc":"Нажмите кнопку выше, чтобы добавить первого провайдера","openai_add_modal_title":"Добавление совместимого с OpenAI провайдера","openai_add_modal_name_label":"Имя провайдера:","openai_add_modal_name_placeholder":"например: openrouter","openai_add_modal_url_label":"Базовый URL:","openai_add_modal_url_placeholder":"например: https://openrouter.ai/api/v1","openai_add_modal_keys_label":"API-ключи","openai_edit_modal_keys_label":"API-ключи","openai_keys_hint":"Добавляйте каждый ключ отдельно с необязательным URL прокси для удобства.","openai_keys_add_btn":"Добавить ключ","openai_key_placeholder":"ключ вида sk-...","openai_proxy_placeholder":"Необязательный URL прокси (например, socks5://...)","openai_add_modal_models_label":"Список моделей (name[, alias] по строкам):","openai_models_hint":"Пример: gpt-4o-mini или moonshotai/kimi-k2:free, kimi-k2","openai_model_name_placeholder":"Имя модели, например moonshotai/kimi-k2:free","openai_model_alias_placeholder":"Псевдоним модели (необязательно)","openai_models_add_btn":"Добавить модель","openai_models_fetch_button":"Получить через /models","openai_models_fetch_title":"Выбор моделей из /models","openai_models_fetch_hint":"Вызовите эндпоинт /models, используя указанный выше базовый URL, отправив первый API-ключ как Bearer с дополнительными заголовками.","openai_models_fetch_url_label":"URL запроса","openai_models_fetch_refresh":"Обновить","openai_models_fetch_loading":"Получение моделей из /models...","openai_models_fetch_empty":"Модели не вернулись. Проверьте эндпоинт или авторизацию.","openai_models_fetch_error":"Не удалось получить модели","openai_models_fetch_back":"Вернуться к редактированию","openai_models_fetch_apply":"Добавить выбранные модели","openai_models_search_label":"Поиск моделей","openai_models_search_placeholder":"Фильтр по имени, псевдониму или описанию","openai_models_search_empty":"Модели по запросу не найдены. Попробуйте другой ключ.","openai_models_fetch_invalid_url":"Сначала введите корректный базовый URL","openai_models_fetch_added":"Добавлено новых моделей: {{count}}","openai_edit_modal_title":"Редактирование совместимого с OpenAI провайдера","openai_edit_modal_name_label":"Имя провайдера:","openai_edit_modal_url_label":"Базовый URL:","openai_edit_modal_models_label":"Список моделей (name[, alias] по строкам):","openai_delete_confirm":"Удалить этого провайдера OpenAI?","openai_keys_count":"Количество ключей","openai_models_count":"Количество моделей","openai_test_title":"Тест подключения","openai_test_hint":"Отправьте запрос /chat/completions с текущими настройками, чтобы проверить доступность.","openai_test_model_placeholder":"Модель для теста","openai_test_action":"Запустить тест","openai_test_running":"Отправка тестового запроса...","openai_test_timeout":"Тестовый запрос превысил тайм-аут {{seconds}} с","openai_test_success":"Тест выполнен успешно. Модель ответила.","openai_test_failed":"Тест не выполнен","openai_test_select_placeholder":"Выберите из текущих моделей","openai_test_select_empty":"Модели не настроены. Сначала добавьте модели","openai_test_single_action":"Тест","openai_test_all_action":"Тестировать все ключи","openai_test_all_hint":"Проверить состояние подключения для всех ключей","openai_test_all_success":"Все {{count}} ключей прошли тест","openai_test_all_failed":"Все {{count}} ключей не прошли тест","openai_test_all_partial":"Тест завершен: {{success}} прошло, {{failed}} не прошло"}'),JV={title:"Управление файлами авторизации",title_section:"Файлы авторизации",description:"Управляйте всеми JSON-файлами авторизации CLI Proxy (например, Qwen, Gemini, Vertex). Загрузка учётных данных сразу включает соответствующую интеграцию AI.",upload_button:"Загрузить файл",delete_all_button:"Удалить всё",empty_title:"Файлы авторизации отсутствуют",empty_desc:"Нажмите кнопку выше, чтобы загрузить первый файл",search_empty_title:"Файлы не найдены",search_empty_desc:"Попробуйте изменить фильтры или очистить строку поиска.",file_size:"Размер",file_modified:"Изменён",health_status_label:"Состояние",health_status_healthy:"Нормально",health_status_warning:"Предупреждение",health_status_disabled:"Отключено",health_status_unknown:"Неизвестно",health_status_no_message:"Нет сообщения о статусе",last_refresh_label:"Последнее обновление",refresh_not_available:"Н/Д",refresh_just_now:"Только что",download_button:"Скачать",delete_button:"Удалить",delete_confirm:"Удалить файл",delete_all_confirm:"Удалить все файлы авторизации? Это действие нельзя отменить!",delete_filtered_confirm:"Удалить все файлы авторизации {{type}}? Это действие нельзя отменить!",delete_problem_button:"Удалить проблемные",delete_problem_button_with_type:"Удалить проблемные файлы {{type}}",delete_problem_confirm:"Удалить все проблемные файлы авторизации? Это действие нельзя отменить!",delete_problem_filtered_confirm:"Удалить все проблемные файлы авторизации {{type}}? Это действие нельзя отменить!",upload_error_json:"Допустимы только файлы JSON",upload_error_size:"Размер файла не может превышать {{maxSize}}",upload_success:"Файл успешно загружен",download_success:"Файл успешно скачан",delete_success:"Файл успешно удалён",delete_all_success:"Удаление завершено",delete_filtered_success:"Удалено файлов {{type}}: {{count}}",delete_filtered_partial:"Удаление файлов {{type}} завершено: успешных {{success}}, ошибок {{failed}}",delete_filtered_none:"Нет файлов {{type}} для удаления при текущем фильтре",delete_problem_success:"Удалено проблемных файлов авторизации: {{count}}",delete_problem_filtered_success:"Удалено проблемных файлов авторизации {{type}}: {{count}}",delete_problem_partial:"Удаление проблемных файлов авторизации завершено: успешных {{success}}, ошибок {{failed}}",delete_problem_filtered_partial:"Удаление проблемных файлов авторизации {{type}} завершено: успешных {{success}}, ошибок {{failed}}",delete_problem_none:"Нет проблемных файлов авторизации для удаления при текущем фильтре",delete_problem_filtered_none:"Нет проблемных файлов авторизации {{type}} для удаления при текущем фильтре",files_count:"файлов",pagination_prev:"Предыдущая",pagination_next:"Следующая",pagination_info:"Страница {{current}} / {{total}} · {{count}} файлов",search_label:"Поиск конфигов",search_placeholder:"Фильтр по имени, типу или провайдеру, поддерживается wildcard *",problem_filter_label:"Фильтр проблем",problem_filter_only:"Показывать только проблемные учётные данные",display_options_label:"Параметры отображения",compact_mode_label:"Компактный режим",sort_label:"Сортировка",sort_default:"По умолчанию",sort_az:"A-Z Имя",sort_priority:"Приоритет",priority_display:"Приоритет",page_size_label:"На странице",page_size_unit:"элементов",view_mode_paged:"Постранично",view_mode_all:"Показать все",too_many_files_warning:"Слишком много учётных данных. Полный список может повлиять на производительность, используйте постраничный режим.",filter_all:"Все",filter_qwen:"Qwen",filter_gemini:"Gemini","filter_gemini-cli":"GeminiCLI",filter_kimi:"Kimi",filter_aistudio:"AIStudio",filter_claude:"Claude",filter_codex:"Codex",filter_antigravity:"Antigravity",filter_iflow:"iFlow",filter_vertex:"Vertex",filter_empty:"Пусто",filter_unknown:"Другое",type_qwen:"Qwen",type_gemini:"Gemini","type_gemini-cli":"GeminiCLI",type_kimi:"Kimi",type_aistudio:"AIStudio",type_claude:"Claude",type_codex:"Codex",type_antigravity:"Antigravity",type_iflow:"iFlow",type_vertex:"Vertex",type_empty:"Пусто",type_unknown:"Другое",type_virtual:"Виртуальный файл авторизации",models_button:"Модели",models_title:"Поддерживаемые модели",models_loading:"Загрузка списка моделей...",models_empty:"Для этих учётных данных нет доступных моделей",models_empty_desc:"Возможно, учётные данные ещё не загружены сервером или к ним не привязаны модели.",models_unsupported:"Функция не поддерживается в текущей версии",models_unsupported_desc:"Обновите CLI Proxy API до последней версии и повторите попытку",models_excluded_badge:"Отключена",models_excluded_hint:"Эта OAuth-модель отключена",status_toggle_label:"Включено",status_enabled_success:'"{{name}}" включён',status_disabled_success:'"{{name}}" отключён',batch_status_success:"{{count}} файлов обновлено",batch_status_partial:"{{success}} обновлено, {{failed}} не удалось",batch_delete_title:"Удалить выбранные файлы",batch_delete_confirm:"Удалить {{count}} файлов?",batch_selected:"{{count}} выбрано",batch_select_all:"Выбрать все",batch_select_page:"Выбрать страницу",batch_select_filtered:"Выбрать по фильтру",batch_invert_page:"Инвертировать страницу",batch_deselect:"Отменить",batch_download:"Скачать выбранные",batch_download_success:"Запущена загрузка {{count}} файлов",batch_download_partial:"Загрузка завершена: успешно {{success}}, ошибок {{failed}}",batch_enable:"Включить",batch_disable:"Отключить",prefix_proxy_button:"Просмотр / редактирование файла авторизации",auth_field_editor_title:"Просмотр / редактирование файла авторизации - {{name}}",prefix_proxy_loading:"Загрузка файла авторизации...",prefix_proxy_info_label:"Информация о файле авторизации (info)",prefix_proxy_source_label:"JSON файла авторизации (предпросмотр)",prefix_label:"Префикс (prefix)",proxy_url_label:"URL прокси (proxy_url)",prefix_placeholder:"",proxy_url_placeholder:"socks5://username:password@proxy_ip:port/",priority_label:"Приоритет (priority)",priority_placeholder:"например: 10 или -1",priority_hint:"Только целые числа. Некорректные значения игнорируются. Чем больше число, тем выше приоритет.",excluded_models_label:"Исключённые модели (excluded_models)",excluded_models_placeholder:"Через запятую или с новой строки, например: model-a, gpt-5-*, *-preview",excluded_models_hint:"Сохраняется как массив; значения trim/нижний регистр/без дублей/с сортировкой.",disable_cooling_label:"Отключение охлаждения (disable_cooling)",disable_cooling_placeholder:"например: true / false / 1 / 0",disable_cooling_hint:"Поддерживает boolean, числа 0/не 0 и строки true/false/1/0; непарсируемые значения игнорируются.",note_label:"Заметка (note)",note_placeholder:"Введите заметку, например: аккаунт Ивана",note_hint:"Необязательно. Используется для описания назначения или владельца учётных данных; оставьте пустым, чтобы не записывать.",note_display:"Заметка",prefix_proxy_invalid_json:"Этот файл авторизации не является JSON-объектом, поэтому поля нельзя редактировать.",prefix_proxy_saved_success:'Файл авторизации "{{name}}" успешно обновлён',card_tools_title:"Инструменты",quota_refresh_single:"Обновить квоту",quota_refresh_hint:"Обновить квоту только для этих учётных данных",quota_refresh_success:'Квота для "{{name}}" обновлена',quota_refresh_failed:'Не удалось обновить квоту для "{{name}}": {{message}}'},ZV={title:"Квота Antigravity",empty_title:"Файлы авторизации Antigravity отсутствуют",empty_desc:"Загрузите учётные данные Antigravity, чтобы увидеть оставшуюся квоту.",idle:'Не загружено. Нажмите "Обновить квоту".',loading:"Загрузка квоты...",load_failed:"Не удалось загрузить квоту: {{message}}",missing_auth_index:"В файле авторизации отсутствует auth_index",empty_models:"Данные по квоте отсутствуют",refresh_button:"Обновить квоту",fetch_all:"Получить все"},eH={title:"Квота Claude",empty_title:"Файлы авторизации Claude OAuth отсутствуют",empty_desc:"Войдите через Claude OAuth, чтобы увидеть квоту.",idle:'Не загружено. Нажмите "Обновить квоту".',loading:"Загрузка квоты...",load_failed:"Не удалось загрузить квоту: {{message}}",missing_auth_index:"В файле авторизации отсутствует auth_index",empty_windows:"Данные по квоте отсутствуют",refresh_button:"Обновить квоту",fetch_all:"Получить все",five_hour:"Лимит на 5 часов",seven_day:"Лимит на 7 дней",seven_day_oauth_apps:"7 дней OAuth приложения",seven_day_opus:"7 дней Opus",seven_day_sonnet:"7 дней Sonnet",seven_day_cowork:"7 дней Cowork",iguana_necktie:"Iguana Necktie",extra_usage_label:"Дополнительное использование",plan_label:"План",plan_unknown:"Неизвестно",plan_free:"Free",plan_pro:"Pro",plan_max:"Max",plan_max5:"Max 5x",plan_max20:"Max 20x"},tH={title:"Квота Codex",empty_title:"Файлы авторизации Codex отсутствуют",empty_desc:"Загрузите учётные данные Codex, чтобы увидеть квоту.",idle:'Не загружено. Нажмите "Обновить квоту".',loading:"Загрузка квоты...",load_failed:"Не удалось загрузить квоту: {{message}}",missing_auth_index:"В файле авторизации отсутствует auth_index",missing_account_id:"В учётных данных Codex отсутствует идентификатор аккаунта ChatGPT",empty_windows:"Данные по квоте отсутствуют",no_access:"У этих учётных данных нет доступа Codex (план: free).",refresh_button:"Обновить квоту",fetch_all:"Получить все",primary_window:"Лимит на 5 часов",secondary_window:"Недельный лимит",code_review_primary_window:"Лимит code review на 5 часов",code_review_secondary_window:"Недельный лимит code review",additional_primary_window:"{{name}}: лимит на 5 часов",additional_secondary_window:"{{name}}: недельный лимит",plan_label:"Тариф",plan_plus:"Plus",plan_team:"Team",plan_free:"Free",plan_pro:"Pro"},nH={title:"Квота Gemini CLI",empty_title:"Файлы авторизации Gemini CLI отсутствуют",empty_desc:"Загрузите учётные данные Gemini CLI, чтобы увидеть оставшуюся квоту.",idle:'Не загружено. Нажмите "Обновить квоту".',loading:"Загрузка квоты...",load_failed:"Не удалось загрузить квоту: {{message}}",missing_auth_index:"В файле авторизации отсутствует auth_index",missing_project_id:"В учётных данных Gemini CLI отсутствует идентификатор проекта",empty_buckets:"Данные по квоте отсутствуют",refresh_button:"Обновить квоту",fetch_all:"Получить все",remaining_amount:"Осталось {{count}}",tier_label:"Уровень",tier_free:"Бесплатный",tier_legacy:"Устаревший",tier_standard:"Стандартный",tier_pro:"Pro",tier_ultra:"Ultra",credit_label:"Google One AI кредиты",credit_amount:"{{count}} кредитов"},iH={title:"Квота Kimi",empty_title:"Файлы авторизации Kimi отсутствуют",empty_desc:"Загрузите учётные данные Kimi, чтобы увидеть оставшуюся квоту.",idle:'Не загружено. Нажмите "Обновить квоту".',loading:"Загрузка квоты...",load_failed:"Не удалось загрузить квоту: {{message}}",missing_auth_index:"В файле авторизации отсутствует auth_index",empty_data:"Данные по квоте отсутствуют",refresh_button:"Обновить квоту",fetch_all:"Получить все",weekly_limit:"Недельный лимит",limit_window:"Лимит {{duration}}",limit_index:"Лимит #{{index}}",reset_hint:"сброс через {{hint}}"},sH={title:"Вход с Vertex JSON",description:"Загрузите JSON ключа сервисного аккаунта Google, чтобы сохранить его как auth-dir/vertex-<project>.json по тем же правилам, что и помощник CLI vertex-import.",location_label:"Регион (необязательно)",location_placeholder:"us-central1",location_hint:"Оставьте пустым, чтобы использовать регион us-central1 по умолчанию.",file_label:"JSON ключ сервисного аккаунта",file_hint:"Принимаются только JSON-файлы ключей сервисных аккаунтов Google Cloud.",file_placeholder:"Файл не выбран",choose_file:"Выбрать файл",import_button:"Импортировать учётные данные Vertex",file_required:"Сначала выберите файл учётных данных .json",success:"Учётные данные Vertex успешно импортированы",result_title:"Учётные данные сохранены",result_project:"ID проекта",result_email:"Сервисный аккаунт",result_location:"Регион",result_file:"Сохранённый файл"},aH={title:"Отключение OAuth-моделей",description:"Отключения моделей по провайдерам отображаются карточками; нажмите карточку, чтобы изменить или удалить. Поддерживаются шаблоны *. Область зависит от фильтра файлов авторизации.",add:"Добавить отключение",add_title:"Добавление отключения моделей для провайдера",edit_title:"Редактирование отключения моделей для {{provider}}",refresh:"Обновить",refreshing:"Обновляется...",provider_label:"Провайдер",provider_auto:"Следовать текущему фильтру",provider_placeholder:"например: gemini-cli",provider_hint:"По умолчанию используется текущий фильтр; выберите существующего провайдера или введите новое имя.",models_label:"Отключаемые модели",models_loading:"Загрузка моделей...",models_unsupported:"Текущая версия CPA не поддерживает загрузку списка моделей.",models_loaded:"Загружено моделей: {{count}}. Отметьте модели, которые нужно отключить.",no_models_available:"Для этого провайдера нет доступных моделей.",save:"Сохранить/обновить",saving:"Сохранение...",save_success:"Отключение моделей обновлено",save_failed:"Не удалось обновить отключение моделей",delete:"Удалить провайдера",delete_confirm:"Удалить отключение моделей для {{provider}}?",delete_success:"Отключение моделей провайдера удалено",delete_failed:"Не удалось удалить отключение моделей",deleting:"Удаление...",no_models:"Отключаемые модели не настроены",model_count:"Отключено моделей: {{count}}",list_empty_all:'Отключений моделей пока нет — используйте "Добавить отключение".',list_empty_filtered:'В этой области нет отключённых моделей; нажмите "Добавить отключение".',disconnected:"Подключитесь к серверу, чтобы просматривать отключение моделей",load_failed:"Не удалось загрузить отключение моделей",provider_required:"Сначала укажите провайдера",scope_all:"Область: все провайдеры",scope_provider:"Область: {{provider}}",upgrade_required:"Текущая версия CPA не поддерживает отключение OAuth-моделей. Пожалуйста, обновите систему.",upgrade_required_title:"Пожалуйста, обновите CLI Proxy API",upgrade_required_desc:"Текущая версия сервера не поддерживает получение отключения OAuth-моделей. Обновите CPA (CLI Proxy API) до последней версии и повторите попытку."},oH={title:"Псевдонимы моделей OAuth",add:"Добавить псевдоним",add_title:"Добавление псевдонимов моделей провайдера",provider_label:"Провайдер",provider_placeholder:"например: gemini-cli / vertex",provider_hint:"По умолчанию используется текущий фильтр; выберите существующего провайдера или введите новое имя.",model_source_loading:"Загрузка моделей...",model_source_unsupported:"Текущая версия CPA не поддерживает загрузку списка моделей (ручной ввод остаётся доступным).",model_source_loaded:'Загружено моделей: {{count}}. Используйте выпадающий список "Исходная модель" или введите своё значение. Сохранение пустого списка удаляет провайдера. Включите "Сохранить оригинал", чтобы оставить исходное имя вместе с псевдонимом.',alias_label:"Псевдонимы моделей",alias_name_placeholder:"Исходное имя модели",alias_placeholder:"Псевдоним (обязательно)",alias_fork_label:"Сохранить оригинал",add_alias:"Добавить псевдоним",save:"Сохранить/обновить",save_success:"Псевдонимы моделей обновлены",save_failed:"Не удалось обновить псевдонимы моделей",delete:"Удалить провайдера",delete_confirm:"Удалить псевдонимы моделей для {{provider}}?",delete_link_title:"Убрать сопоставление",delete_link_confirm:"Удалить сопоставление из <code>{{sourceModel}}</code> ({{provider}}) к псевдониму <code>{{alias}}</code>?",delete_alias_title:"Удалить псевдоним",delete_alias_confirm:"Удалить псевдоним <code>{{alias}}</code> и все связанные сопоставления?",delete_success:"Псевдонимы моделей удалены",delete_failed:"Не удалось удалить псевдонимы моделей",no_models:"Псевдонимов нет",model_count:"Количество псевдонимов: {{count}}",list_empty_all:'Псевдонимы ещё не созданы — используйте "Добавить псевдоним".',chart_title:"Обзор всех сопоставлений",diagram_providers:"Провайдеры",diagram_source_models:"Исходные модели",diagram_aliases:"Псевдонимы",diagram_expand:"Развернуть",diagram_collapse:"Свернуть",diagram_add_alias:"Добавить псевдоним",diagram_rename:"Переименовать",diagram_rename_alias_title:"Переименование псевдонима",diagram_rename_alias_label:"Новое имя псевдонима",diagram_rename_placeholder:"Введите имя псевдонима...",diagram_delete_link:"Убрать связь {{provider}} / {{name}}",diagram_delete_alias:"Удалить псевдоним",diagram_please_enter_alias:"Введите имя псевдонима.",diagram_alias_exists:"Этот псевдоним уже существует.",diagram_add_alias_title:"Добавление псевдонима",diagram_add_alias_label:"Имя псевдонима",diagram_add_placeholder:"Введите новое имя псевдонима...",diagram_rename_btn:"Переименовать",diagram_add_btn:"Добавить",diagram_settings:"Настройки",diagram_settings_title:"Настройки псевдонима — {{alias}}",diagram_settings_source_title:"Настройки исходной модели",diagram_settings_empty:"Для этого псевдонима ещё нет сопоставлений.",diagram_tap_hint:"На сенсорных устройствах: коснитесь исходной модели, затем псевдонима для связывания.",view_mode:"Режим просмотра",view_mode_diagram:"Диаграмма",view_mode_list:"Список",provider_required:"Сначала укажите провайдера",upgrade_required:"Эта функция требует более новой версии CLI Proxy API (CPA). Обновите систему.",upgrade_required_title:"Пожалуйста, обновите CLI Proxy API",upgrade_required_desc:"Текущая версия сервера не поддерживает API псевдонимов моделей OAuth. Обновите CLI Proxy API (CPA) до последней версии."},rH={codex_oauth_title:"Codex OAuth",codex_oauth_button:"Начать вход Codex",codex_oauth_hint:"Выполните вход в сервис Codex через OAuth и автоматически получите/сохраните файлы авторизации.",codex_oauth_url_label:"URL авторизации:",codex_open_link:"Открыть ссылку",codex_copy_link:"Скопировать ссылку",codex_oauth_status_waiting:"Ожидание аутентификации...",codex_oauth_status_success:"Аутентификация успешна!",codex_oauth_status_error:"Ошибка аутентификации:",codex_oauth_start_error:"Не удалось запустить Codex OAuth:",codex_oauth_polling_error:"Не удалось проверить статус аутентификации:",anthropic_oauth_title:"Anthropic OAuth",anthropic_oauth_button:"Начать вход Anthropic",anthropic_oauth_hint:"Выполните вход в сервис Anthropic (Claude) через OAuth и автоматически получите/сохраните файлы авторизации.",anthropic_oauth_url_label:"URL авторизации:",anthropic_open_link:"Открыть ссылку",anthropic_copy_link:"Скопировать ссылку",anthropic_oauth_status_waiting:"Ожидание аутентификации...",anthropic_oauth_status_success:"Аутентификация успешна!",anthropic_oauth_status_error:"Ошибка аутентификации:",anthropic_oauth_start_error:"Не удалось запустить Anthropic OAuth:",anthropic_oauth_polling_error:"Не удалось проверить статус аутентификации:",antigravity_oauth_title:"Antigravity OAuth",antigravity_oauth_button:"Начать вход Antigravity",antigravity_oauth_hint:"Выполните вход в сервис Antigravity (Google) через OAuth и автоматически получите/сохраните файлы авторизации.",antigravity_oauth_url_label:"URL авторизации:",antigravity_open_link:"Открыть ссылку",antigravity_copy_link:"Скопировать ссылку",antigravity_oauth_status_waiting:"Ожидание аутентификации...",antigravity_oauth_status_success:"Аутентификация успешна!",antigravity_oauth_status_error:"Ошибка аутентификации:",antigravity_oauth_start_error:"Не удалось запустить Antigravity OAuth:",antigravity_oauth_polling_error:"Не удалось проверить статус аутентификации:",gemini_cli_oauth_title:"Gemini CLI OAuth",gemini_cli_oauth_button:"Начать вход Gemini CLI",gemini_cli_oauth_hint:"Выполните вход в сервис Google Gemini CLI через OAuth и автоматически получите/сохраните файлы авторизации.",gemini_cli_project_id_label:"Google Cloud Project ID (необязательно):",gemini_cli_project_id_placeholder:"Оставьте пустым, чтобы выбрать первый доступный проект автоматически",gemini_cli_project_id_hint:"Необязательно. Если не указано, система автоматически выберет первый доступный проект вашей учётной записи. Введите ALL, чтобы получить все проекты.",gemini_cli_project_id_required:"Укажите идентификатор проекта Google Cloud.",gemini_cli_oauth_url_label:"URL авторизации:",gemini_cli_open_link:"Открыть ссылку",gemini_cli_copy_link:"Скопировать ссылку",gemini_cli_oauth_status_waiting:"Ожидание аутентификации...",gemini_cli_oauth_status_success:"Аутентификация успешна!",gemini_cli_oauth_status_error:"Ошибка аутентификации:",gemini_cli_oauth_start_error:"Не удалось запустить Gemini CLI OAuth:",gemini_cli_oauth_polling_error:"Не удалось проверить статус аутентификации:",kimi_oauth_title:"Kimi OAuth",kimi_oauth_button:"Начать вход Kimi",kimi_oauth_hint:"Выполните вход в сервис Kimi через поток авторизации устройства и автоматически получите/сохраните файлы авторизации.",kimi_oauth_url_label:"URL авторизации:",kimi_open_link:"Открыть ссылку",kimi_copy_link:"Скопировать ссылку",kimi_oauth_status_waiting:"Ожидание аутентификации...",kimi_oauth_status_success:"Аутентификация успешна!",kimi_oauth_status_error:"Ошибка аутентификации:",kimi_oauth_start_error:"Не удалось запустить Kimi OAuth:",kimi_oauth_polling_error:"Не удалось проверить статус аутентификации:",qwen_oauth_title:"Qwen OAuth",qwen_oauth_button:"Начать вход Qwen",qwen_oauth_hint:"Выполните вход в сервис Qwen через поток авторизации устройства и автоматически получите/сохраните файлы авторизации.",qwen_oauth_url_label:"URL авторизации:",qwen_open_link:"Открыть ссылку",qwen_copy_link:"Скопировать ссылку",qwen_oauth_status_waiting:"Ожидание аутентификации...",qwen_oauth_status_success:"Аутентификация успешна!",qwen_oauth_status_error:"Ошибка аутентификации:",qwen_oauth_start_error:"Не удалось запустить Qwen OAuth:",qwen_oauth_polling_error:"Не удалось проверить статус аутентификации:",oauth_callback_label:"Callback URL",oauth_callback_placeholder:"http://localhost:1455/auth/callback?code=...&state=...",oauth_callback_hint:"Режим удалённого браузера: после перенаправления провайдера на http://localhost:... скопируйте полный URL и отправьте его здесь.",oauth_callback_button:"Отправить Callback URL",oauth_callback_required:"Сначала вставьте полный URL перенаправления.",oauth_callback_success:"Callback URL отправлен. Продолжайте ожидать аутентификацию.",oauth_callback_error:"Не удалось отправить Callback URL:",oauth_callback_upgrade_hint:"Обновите CLI Proxy API или проверьте подключение.",oauth_callback_status_success:"Callback URL отправлен, ожидаем аутентификацию...",oauth_callback_status_error:"Не удалось отправить Callback URL:",missing_state:"Не удалось получить параметр состояния аутентификации",iflow_oauth_title:"iFlow OAuth",iflow_oauth_button:"Начать вход iFlow",iflow_oauth_hint:"Выполните вход в сервис iFlow через OAuth и автоматически получите/сохраните файлы авторизации.",iflow_oauth_url_label:"URL авторизации:",iflow_open_link:"Открыть ссылку",iflow_copy_link:"Скопировать ссылку",iflow_oauth_status_waiting:"Ожидание аутентификации...",iflow_oauth_status_success:"Аутентификация успешна!",iflow_oauth_status_error:"Ошибка аутентификации:",iflow_oauth_start_error:"Не удалось запустить iFlow OAuth:",iflow_oauth_polling_error:"Не удалось проверить статус аутентификации:",iflow_cookie_title:"Вход iFlow по cookie",iflow_cookie_label:"Значение cookie:",iflow_cookie_placeholder:"Введите значение BXAuth, начиная с BXAuth=",iflow_cookie_hint:"Отправьте существующий cookie, чтобы завершить вход без открытия ссылки авторизации; файл учётных данных будет сохранён автоматически.",iflow_cookie_key_hint:"Примечание: сначала создайте ключ на платформе.",iflow_cookie_button:"Отправить вход по cookie",iflow_cookie_status_success:"Вход по cookie выполнен, учётные данные сохранены.",iflow_cookie_status_error:"Ошибка входа по cookie:",iflow_cookie_status_duplicate:"Дублирующая конфигурация:",iflow_cookie_start_error:"Не удалось отправить вход по cookie:",iflow_cookie_config_duplicate:"Такая конфигурация уже существует. Удалите файл и повторите, если хотите перезаписать.",iflow_cookie_required:"Сначала укажите значение cookie.",iflow_cookie_result_title:"Результат входа по cookie",iflow_cookie_result_email:"Аккаунт",iflow_cookie_result_expired:"Истекает",iflow_cookie_result_path:"Путь сохранения",iflow_cookie_result_type:"Тип",remote_access_disabled:"Этот способ входа недоступен при удалённом доступе. Подключитесь с localhost."},lH={title:"Статистика использования",total_requests:"Всего запросов",success_requests:"Успешные запросы",failed_requests:"Неуспешные запросы",total_tokens:"Всего токенов",cached_tokens:"Кэшированные токены",reasoning_tokens:"Токены рассуждений",rpm_30m:"RPM",tpm_30m:"TPM",rate_30m:"Скорость (последние 30 мин)",model_name:"Название модели",model_price_settings:"Настройки стоимости моделей",saved_prices:"Сохранённые цены",requests_trend:"Динамика запросов",tokens_trend:"Динамика токенов",api_details:"Детали API",by_hour:"По часам",by_day:"По дням",range_filter:"Диапазон времени",range_all:"За всё время",range_7h:"Последние 7 часов",range_24h:"Последние 24 часа",range_7d:"Последние 7 дней",filter_all:"Все",clear_filters:"Сбросить фильтры",refresh:"Обновить",export:"Экспорт",import:"Импорт",export_csv:"Экспорт CSV",export_json:"Экспорт JSON",export_success:"Экспорт использования скачан",import_success:"Импорт завершён: добавлено {{added}}, пропущено {{skipped}}, всего {{total}}, ошибок {{failed}}",import_invalid:"Недопустимый файл экспорта использования",chart_line_label_1:"Линия 1",chart_line_label_2:"Линия 2",chart_line_label_3:"Линия 3",chart_line_label_4:"Линия 4",chart_line_label_5:"Линия 5",chart_line_label_6:"Линия 6",chart_line_label_7:"Линия 7",chart_line_label_8:"Линия 8",chart_line_label_9:"Линия 9",chart_line_hidden:"Скрыть",chart_line_actions_label:"Линии для отображения",chart_line_add:"Добавить линию",chart_line_all:"Все",chart_line_delete:"Удалить линию",chart_line_hint:"Отображайте до 9 линий моделей одновременно",no_data:"Данные отсутствуют",loading_error:"Не удалось загрузить",api_endpoint:"API-эндпоинт",requests_count:"Количество запросов",tokens_count:"Количество токенов",models:"Статистика моделей",success_rate:"Успешность",total_cost:"Общая стоимость",total_cost_hint:"Основано на настроенной стоимости моделей",model_price_title:"Стоимость моделей",model_price_reset:"Сбросить цены",model_price_model_label:"Модель",model_price_select_placeholder:"Выберите модель",model_price_select_hint:"Модели берутся из детальной статистики использования",model_price_prompt:"Цена prompt",model_price_completion:"Цена completion",model_price_cache:"Цена кэша",model_price_save:"Сохранить цену",model_price_empty:"Цена для моделей не задана",model_price_model:"Модель",model_price_saved:"Цена модели сохранена",model_price_model_required:"Выберите модель для задания цены",cost_trend:"Обзор стоимости",cost_axis_label:"Стоимость ($)",cost_need_price:"Задайте стоимость модели, чтобы увидеть статистику затрат",cost_need_usage:"Нет данных использования для расчёта стоимости",cost_no_data:"Данных о стоимости ещё нет",credential_stats:"Статистика учётных данных",credential_name:"Учётные данные",token_breakdown:"Распределение типов токенов",request_events_title:"События запросов",request_events_filter_model:"Модель",request_events_filter_source:"Источник",request_events_filter_auth_index:"Auth Index",request_events_timestamp:"Время",request_events_source:"Источник",request_events_auth_index:"Auth Index",request_events_result:"Результат",request_events_empty_title:"События запросов отсутствуют",request_events_empty_desc:"Нет деталей запросов для выбранного диапазона времени.",request_events_no_result_title:"Совпадений не найдено",request_events_no_result_desc:"Попробуйте другие фильтры или очистите текущие.",request_events_count:"{{count}} событий",request_events_limit_hint:"Показано {{shown}} из {{total}} событий для стабильной производительности.",input_tokens:"Входные токены",output_tokens:"Выходные токены",last_updated:"Обновлено"},cH={success:"Успех",failure:"Сбой"},uH={success_short:"✓",failure_short:"✗",no_requests:"Нет запросов"},dH={title:"Состояние сервиса",window:"Последние 7 дней",oldest:"Старые",newest:"Новые"},hH={title:"Просмотр журналов",refresh_button:"Обновить журналы",clear_button:"Очистить журналы",download_button:"Скачать журналы",error_log_button:"Выбрать журнал ошибок",error_logs_modal_title:"Журналы ошибок запросов",error_logs_description:"Выберите файл журнала ошибок запроса для скачивания (создаётся только при отключённом журналировании запросов).",error_logs_request_log_enabled:"Журналирование запросов включено, поэтому этот список всегда будет пустым. Отключите журналирование запросов и обновите список, чтобы просмотреть журналы ошибок.",error_logs_empty:"Файлы журнала ошибок запросов не найдены",error_logs_load_error:"Не удалось загрузить список журналов ошибок",error_logs_size:"Размер",error_logs_modified:"Изменён",error_logs_download:"Скачать",error_log_download_success:"Журнал ошибок успешно скачан",request_log_download_title:"Скачать журнал запросов",request_log_download_confirm:"Скачать журнал запросов с идентификатором {{id}}?",request_log_download_success:"Журнал запросов успешно скачан",empty_title:"Журналы недоступны",empty_desc:'Когда включена опция "Включить журналирование в файл", журналы появятся здесь',log_content:"Содержимое журнала",loading:"Загрузка журналов...",load_error:"Не удалось загрузить журналы",clear_confirm:"Очистить все журналы? Действие нельзя отменить!",clear_success:"Журналы успешно очищены",download_success:"Журналы успешно скачаны",auto_refresh:"Автообновление",auto_refresh_enabled:"Автообновление включено",auto_refresh_disabled:"Автообновление выключено",load_more_hint:"Прокрутите вверх, чтобы загрузить ещё",hidden_lines:"Скрыто: {{count}} строк",loaded_lines:"Загружено: {{count}} строк",filtered_lines:"Отфильтровано: {{count}} строк",hide_management_logs:"Скрыть журналы {{prefix}}",show_raw_logs:"Показать исходные журналы",show_raw_logs_hint:"Показать текст журнала без обработки для удобного копирования в несколько строк",search_placeholder:"Искать по содержимому или ключевым словам",filter_panel_title:"Структурные фильтры",filter_panel_expand:"Развернуть структурные фильтры",filter_panel_collapse:"Свернуть структурные фильтры",filter_panel_active_count:"Активно: {{count}}",filter_method:"Метод",filter_status:"Статус",filter_path:"Путь",filter_path_empty:"Нет доступных путей",filter_status_2xx:"2xx",filter_status_3xx:"3xx",filter_status_4xx:"4xx",filter_status_5xx:"5xx",clear_filters:"Очистить фильтры",trace_button:"Трассировка",trace_title:"Трассировка запроса (V1)",trace_notice:"V1 использует эвристическую корреляцию между логами и usage-событиями. Результаты оценочные и не являются точным сопоставлением по request_id.",trace_log_info:"Событие лога",trace_candidates_title:"Кандидаты из usage",trace_loading:"Сопоставление usage-событий...",trace_no_match:"Подходящие кандидаты не найдены.",trace_usage_load_error:"Не удалось загрузить usage-детали для трассировки",trace_download_request_log:"Скачать журнал запроса",trace_confidence_high:"Высокая",trace_confidence_medium:"Средняя",trace_confidence_low:"Низкая",trace_score:"Оценка {{score}}",trace_delta_seconds:"Δt {{seconds}}с",trace_model_matched:"Модель совпала",trace_request_id:"Request ID",trace_method:"Метод",trace_path:"Путь",trace_status_code:"Статус",trace_latency:"Задержка",trace_ip:"IP",trace_timestamp:"Время",trace_message:"Сообщение",trace_endpoint:"Usage-эндпоинт",trace_model:"Модель",trace_source:"Источник",trace_auth_index:"Auth Index",trace_result:"Результат",search_empty_title:"Подходящих журналов не найдено",search_empty_desc:"Попробуйте другой запрос или сбросьте фильтры.",double_click_copy_hint:"Дважды нажмите, чтобы скопировать строку журнала",copy_success:"Строка журнала скопирована",copy_failed:"Не удалось скопировать",lines:"строк",removed:"Отфильтровано",upgrade_required_title:"Обновите CLI Proxy API",upgrade_required_desc:"Текущая версия сервера не поддерживает просмотр журналов. Обновите CLI Proxy API до последней версии, чтобы использовать эту функцию."},fH={title:"Панель конфигурации",editor_title:"Файл конфигурации",reload:"Перезагрузить",reload_confirm_message:"Перезагрузка отбросит ваши несохранённые изменения. Продолжить?",save:"Сохранить",description:"Редактируйте config.yaml через визуальный редактор или исходный файл",status_idle:"Ожидание действия",status_loading:"Загрузка конфигурации...",status_loading_short:"Загрузка",status_loaded:"Конфигурация загружена",status_loaded_short:"Загружено",status_dirty:"Есть несохранённые изменения",status_dirty_short:"Несохранено",status_disconnected:"Подключитесь к серверу, чтобы загрузить конфигурацию",status_disconnected_short:"Нет связи",status_load_failed:"Не удалось загрузить",status_load_failed_short:"Ошибка",status_saving:"Сохранение конфигурации...",status_saving_short:"Сохранение",status_saved:"Конфигурация сохранена",status_save_failed:"Не удалось сохранить",save_success:"Конфигурация успешно сохранена",error_yaml_not_supported:"Сервер не вернул YAML. Убедитесь, что доступна конечная точка /config.yaml.",visual_mode_unavailable:"Визуальный редактор недоступен, пока не исправлен синтаксис YAML",visual_mode_unavailable_short:"Ошибка YAML",validation_blocked_short:"Есть ошибки",visual_mode_unavailable_detail:"Визуальный редактор недоступен, потому что в конфигурации есть некорректный YAML: {{message}}",visual_mode_save_blocked:"Нельзя сохранять из визуального режима, пока не исправлен синтаксис YAML",visual_mode_latest_yaml_invalid:"Последняя конфигурация на сервере содержит некорректный YAML. Проверьте её в режиме исходника перед сохранением визуальных изменений: {{message}}",editor_placeholder:"key: value",search_placeholder:"Поиск по конфигурации...",search_button:"Поиск",search_no_results:"Нет результатов",search_prev:"Назад",search_next:"Вперёд",diff:{title:"Обзор изменений",current:"Текущая",modified:"Изменённая",confirm:"Подтвердить",no_changes:"Изменений не обнаружено"},tabs:{visual:"Визуальный редактор",source:"Редактор файла"},visual:{notice:"Визуальный режим охватывает основные поля. Остальные параметры config.yaml по-прежнему нужно проверять или редактировать в режиме исходника.",quick_jump:"Быстрый переход",sections:{server:{title:"Настройки сервера",description:"Базовые параметры сервера",host:"Адрес хоста",port:"Порт"},tls:{title:"Настройка TLS/SSL",description:"Параметры безопасного HTTPS-соединения",enable:"Включить TLS",enable_desc:"Включить безопасное HTTPS-соединение",cert:"Путь к сертификату",key:"Путь к закрытому ключу"},remote:{title:"Удалённое управление",description:"Настройки удалённого доступа и панели управления",allow_remote:"Разрешить удалённый доступ",allow_remote_desc:"Разрешить управление с других хостов",disable_panel:"Отключить панель",disable_panel_desc:"Отключить встроенную веб-панель управления",secret_key:"Ключ управления",secret_key_placeholder:"Задайте ключ управления",panel_repo:"Репозиторий панели"},auth:{title:"Настройки аутентификации",description:"API-ключи и каталог аутентификации",auth_dir:"Каталог auth-dir",auth_dir_hint:"Путь к каталогу с файлами аутентификации (поддерживает ~)"},system:{title:"Системные настройки",description:"Отладка, журналирование, статистика и производительность",debug:"Режим отладки",debug_desc:"Включить подробные отладочные журналы",commercial_mode:"Коммерческий режим",commercial_mode_desc:"Отключить тяжёлое промежуточное ПО для поддержки высокой нагрузки",logging_to_file:"Журналировать в файл",logging_to_file_desc:"Сохранять журналы в файлы",usage_statistics:"Статистика использования",usage_statistics_desc:"Собирать статистику использования",logs_max_size:"Максимальный размер файла журнала (МБ)",usage_retention_days:"Хранить статистику (дней)",usage_retention_hint:"0 означает без ограничений (без очистки)"},network:{title:"Сетевые настройки",description:"Параметры прокси, повторов и маршрутизации",proxy_url:"URL прокси",request_retry:"Количество повторов запросов",max_retry_credentials:"Максимум учётных данных для повторов",max_retry_credentials_hint:"Оставьте пустым, чтобы не задавать поле. Значение 0 сохраняет legacy-поведение и позволяет перебрать все доступные учётные данные.",max_retry_interval:"Максимальный интервал повтора (сек)",routing_strategy:"Стратегия маршрутизации",routing_strategy_hint:"Выберите стратегию подбора учётных данных",strategy_round_robin:"По кругу",strategy_fill_first:"Сначала заполнить",force_model_prefix:"Принудительный префикс модели",force_model_prefix_desc:"Запросы к моделям без префикса используют только учётные данные без префикса",ws_auth:"Аутентификация WebSocket",ws_auth_desc:"Включить аутентификацию WebSocket (/v1/ws)"},quota:{title:"Резерв по квоте",description:"Стратегия при превышении квоты",switch_project:"Переключить проект",switch_project_desc:"Автоматически переходить на другой проект при превышении квоты",switch_preview_model:"Переключить на preview-модель",switch_preview_model_desc:"Переключаться на preview-версию модели при превышении квоты"},streaming:{title:"Настройки стриминга",description:"Параметры keepalive и повторов запуска",keepalive_seconds:"Период keepalive (сек)",keepalive_hint:"Установите 0 или оставьте поле пустым, чтобы отключить keepalive",bootstrap_retries:"Повторы запуска",bootstrap_hint:"Количество попыток при запуске стрима (до первого байта)",nonstream_keepalive:"Интервал keepalive для нестиминговых ответов (сек)",nonstream_keepalive_hint:"Отправлять пустые строки каждые N секунд для нестиминговых ответов, чтобы избежать простоя; установите 0 или оставьте пустым для отключения",disabled:"Отключено"},payload:{title:"Настройки полезной нагрузки",description:"Значения по умолчанию, raw JSON-правила, правила переопределения и фильтрации",default_rules:"Правила по умолчанию",default_rules_desc:"Использовать эти значения, если параметр не указан в запросе",default_raw_rules:"Raw-правила по умолчанию",default_raw_rules_desc:'Если параметр отсутствует, записывать эти значения как raw JSON-фрагменты, например true, 123, "high" или {"type":"object"}',override_rules:"Правила переопределения",override_rules_desc:"Принудительно задавать значения параметров в запросе",override_raw_rules:"Raw-правила переопределения",override_raw_rules_desc:"Всегда перезаписывать значения как raw JSON-фрагменты; полезно для response_format, схем и других сложных полей",filter_rules:"Правила фильтрации",filter_rules_desc:"Предварительно фильтровать тело исходящего запроса через JSON Path, автоматически удалять несоответствующие или лишние параметры (санитизация запроса)"}},api_keys:{label:"Список API-ключей (api-keys)",add:"Добавить API-ключ",generate:"Сгенерировать",empty:"API-ключи отсутствуют",hint:"Каждая запись — это API-ключ (в том же стиле, что и на странице управления API-ключами)",edit_title:"Редактирование API-ключа",add_title:"Добавление API-ключа",input_label:"API-ключ",input_placeholder:"Вставьте API-ключ",input_hint:"Меняет только содержимое локального файла конфигурации, не синхронизируется с интерфейсом управления API-ключами",error_empty:"Введите API-ключ",error_invalid:"API-ключ содержит недопустимые символы"},payload_rules:{rule:"Правило",models:"Применимые модели",model_name:"Название модели",provider_type:"Тип провайдера",add_model:"Добавить модель",params:"Настройки параметров",remove_params:"Удалить параметры",json_path:"JSON Path (например, temperature)",json_path_filter:"JSON Path (gjson/sjson), например generationConfig.thinkingConfig.thinkingBudget",param_type:"Тип параметра",param_value:"Значение параметра",add_param:"Добавить параметр",no_rules:"Правил нет",add_rule:"Добавить правило",provider_default:"По умолчанию",provider_openai:"OpenAI",provider_openai_response:"OpenAI Response",provider_gemini:"Gemini",provider_claude:"Claude",provider_codex:"Codex",provider_antigravity:"Antigravity",value_type_string:"Строка",value_type_number:"Число",value_type_boolean:"Булево",value_type_json:"JSON",value_string:"Строковое значение",value_number:"Числовое значение (например, 0.7)",value_boolean:"true или false",value_json:"Значение JSON",value_raw_json:'Raw JSON-фрагмент, например true, 123, "high" или {"type":"object"}',value_default:"Значение",boolean_true:"true",boolean_false:"false"},validation:{validation_blocked:"Исправьте ошибки валидации перед сохранением",port_range:"Введите корректный порт от 1 до 65535",non_negative_integer:"Введите неотрицательное целое число",payload_invalid_number:"Введите корректное число",payload_invalid_boolean:"Выберите true или false",payload_invalid_json:"Введите корректный JSON"},common:{edit:"Изменить",delete:"Удалить",cancel:"Отменить",update:"Обновить",add:"Добавить"}}},mH={title:"Управление квотами",description:"Следите за статусом квот OAuth для учётных данных Antigravity, Codex и Gemini CLI.",refresh_files:"Обновить файлы авторизации",refresh_files_and_quota:"Обновить файлы и квоты",refresh_all_credentials:"Обновить все учётные данные",card_idle_hint:"Используйте кнопку «Обновить все учётные данные» сверху, чтобы загрузить актуальные данные по квотам."},pH={title:"Информация о центре управления",about_title:"CLI Proxy API Management Center",connection_status_title:"Статус подключения",api_status_label:"Статус API:",config_status_label:"Статус конфигурации:",last_update_label:"Последнее обновление:",cache_data:"Данные из кэша",real_time_data:"Данные в реальном времени",not_loaded:"Не загружено",seconds_ago:"секунд назад",models_title:"Доступные модели",models_desc:"Показывает ответ /models и автоматически использует сохранённые API-ключи для авторизации.",models_loading:"Загрузка доступных моделей...",models_empty:"Сервис /models не вернул модели",models_error:"Не удалось загрузить список моделей",models_count:"Доступно моделей: {{count}}",version_check_title:"Проверка обновлений",version_check_desc:"Вызовите эндпоинт /latest-version, чтобы сравнить с версией сервера и узнать о доступных обновлениях.",version_current_label:"Текущая версия",version_latest_label:"Последняя версия",version_check_button:"Проверить обновления",version_check_idle:"Нажмите, чтобы проверить обновления",version_checking:"Поиск последней версии...",version_update_available:"Доступно обновление: {{version}}",version_is_latest:"Установлена последняя версия",version_check_error:"Не удалось проверить обновление",version_current_missing:"Версия сервера недоступна; сравнение невозможно",version_unknown:"Неизвестно",quick_links_title:"Быстрые ссылки",quick_links_desc:"Доступ к репозиториям проекта и документации для помощи и обновлений.",link_main_repo:"Основной репозиторий",link_main_repo_desc:"Исходный код основной программы CLI Proxy API",link_webui_repo:"Репозиторий WebUI",link_webui_repo_desc:"Исходный код фронтенда центра управления",link_docs:"Документация",link_docs_desc:"Учебные пособия и руководства по настройке",clear_login_title:"Локальные данные входа",clear_login_desc:"Очистите локально сохранённые данные входа и выполните выход. Настройки стоимости статистики использования сохранятся.",clear_login_button:"Очистить данные входа",clear_login_confirm:"Очистить локальные данные входа и выйти?"},gH={debug_updated:"Настройки отладки обновлены",proxy_updated:"Настройки прокси обновлены",proxy_cleared:"Настройки прокси очищены",retry_updated:"Настройки повторов обновлены",quota_switch_project_updated:"Настройки переключения проектов обновлены",quota_switch_preview_updated:"Настройки переключения на preview-модель обновлены",usage_statistics_updated:"Настройки статистики использования обновлены",logging_to_file_updated:"Настройки журналирования обновлены",logs_max_total_size_updated:"Лимит размера журналов обновлён",request_log_updated:"Настройка журналирования запросов обновлена",force_model_prefix_updated:"Настройка префикса модели обновлена",ws_auth_updated:"Настройка аутентификации WebSocket обновлена",routing_strategy_updated:"Стратегия маршрутизации обновлена",login_storage_cleared:"Локальные данные входа очищены",api_key_added:"API-ключ успешно добавлен",api_key_updated:"API-ключ успешно обновлён",api_key_deleted:"API-ключ успешно удалён",api_key_invalid_chars:"API-ключ может содержать только буквы, цифры и символы",gemini_key_added:"Ключ Gemini успешно добавлен",gemini_key_updated:"Ключ Gemini успешно обновлён",gemini_key_deleted:"Ключ Gemini успешно удалён",gemini_multi_input_required:"Введите хотя бы один ключ Gemini",gemini_multi_failed:"Пакетное добавление Gemini не удалось",gemini_multi_summary:"Пакетное добавление Gemini завершено: добавлено {{success}}, пропущено {{skipped}}, ошибок {{failed}}",codex_config_added:"Конфигурация Codex успешно добавлена",codex_config_updated:"Конфигурация Codex успешно обновлена",codex_config_deleted:"Конфигурация Codex успешно удалена",codex_base_url_required:"Введите базовый URL Codex",claude_config_added:"Конфигурация Claude успешно добавлена",claude_config_updated:"Конфигурация Claude успешно обновлена",claude_config_deleted:"Конфигурация Claude успешно удалена",vertex_config_added:"Конфигурация Vertex успешно добавлена",vertex_config_updated:"Конфигурация Vertex успешно обновлена",vertex_config_deleted:"Конфигурация Vertex успешно удалена",config_enabled:"Конфигурация включена",config_disabled:"Конфигурация выключена",field_required:"Обязательные поля не могут быть пустыми",openai_provider_required:"Заполните имя провайдера и базовый URL",openai_provider_added:"Провайдер OpenAI успешно добавлен",openai_provider_updated:"Провайдер OpenAI успешно обновлён",openai_provider_deleted:"Провайдер OpenAI успешно удалён",ampcode_updated:"Настройки Ampcode обновлены",ampcode_upstream_api_key_cleared:"Переопределение upstream-ключа Ampcode очищено",openai_model_name_required:"Введите имя модели",openai_test_url_required:"Укажите корректный базовый URL перед тестированием",openai_test_key_required:"Добавьте хотя бы один API-ключ перед тестированием",openai_test_model_required:"Выберите модель для теста",data_refreshed:"Данные успешно обновлены",connection_required:"Сначала установите подключение",refresh_failed:"Не удалось обновить",update_failed:"Не удалось обновить",add_failed:"Не удалось добавить",delete_failed:"Не удалось удалить",upload_failed:"Не удалось загрузить",download_failed:"Не удалось скачать",login_failed:"Вход не выполнен",please_enter:"Пожалуйста, введите",please_fill:"Пожалуйста, заполните",provider_name_url:"имя провайдера и базовый URL",api_key:"API-ключ",gemini_api_key:"API-ключ Gemini",codex_api_key:"API-ключ Codex",claude_api_key:"API-ключ Claude",commercial_mode_restart_required:"Режим коммерческого использования изменён. Перезапустите сервис, чтобы применить изменения",copy_failed:"Не удалось скопировать",link_copied:"Ссылка скопирована в буфер обмена"},_H={switch:"Язык",chinese:"中文",english:"English",russian:"Русский"},yH={switch:"Тема",light:"Шерстяная бумага",white:"Чисто-белая",dark:"Тёмная",switch_to_light:"Переключиться на тему «Шерстяная бумага»",switch_to_dark:"Переключиться на тёмную тему",auto:"Следовать системе"},bH={toggle_expand:"Развернуть боковую панель",toggle_collapse:"Свернуть боковую панель"},vH={api_version:"Версия CLI Proxy API",build_date:"Время сборки",version:"Версия интерфейса управления",author:"Автор"},xH={common:UV,title:qV,splash:zV,auto_login:KV,login:VV,header:HV,connection:WV,nav:GV,dashboard:$V,basic_settings:XV,api_keys:QV,ai_providers:YV,auth_files:JV,antigravity_quota:ZV,claude_quota:eH,codex_quota:tH,gemini_cli_quota:nH,kimi_quota:iH,vertex_import:sH,oauth_excluded:aH,oauth_model_alias:oH,auth_login:rH,usage_stats:lH,stats:cH,status_bar:uH,service_health:dH,logs:hH,config_management:fH,quota_management:mH,system_info:pH,notification:gH,language:_H,theme:yH,sidebar:bH,footer:vH},Sd=t=>_K.includes(t),SH=t=>{try{const e=JSON.parse(t),n=e?.state?.language??e?.language??e;if(typeof n=="string"&&Sd(n))return n}catch{if(Sd(t))return t}return null},wH=()=>{if(typeof window>"u")return null;try{const t=localStorage.getItem(s4);return t?SH(t):null}catch{return null}},kH=()=>{if(typeof navigator>"u")return"zh-CN";const e=(navigator.languages?.[0]||navigator.language||"zh-CN").toLowerCase();return e.startsWith("zh")?"zh-CN":e.startsWith("ru")?"ru":"en"},l4=()=>wH()??kH();Gi.use(_z).init({resources:{"zh-CN":{translation:iV},en:{translation:BV},ru:{translation:xH}},lng:l4(),fallbackLng:"zh-CN",interpolation:{escapeValue:!1},react:{useSuspense:!1}});const wd=Eo()(Fw((t,e)=>({language:l4(),setLanguage:n=>{Sd(n)&&(Gi.changeLanguage(n),t({language:n}))},toggleLanguage:()=>{const{language:n,setLanguage:i}=e(),s=cd.indexOf(n),a=cd[(s+1)%cd.length];i(a)}}),{name:s4,merge:(t,e)=>{const n=t?.language;return typeof n=="string"&&Sd(n)?{...e,...t,language:n}:e}})),E0="enc::v1::",fL="cli-proxy-api-webui::secure-storage";let Gh=null;function F2(t){return new TextEncoder().encode(t)}function CH(t){return new TextDecoder().decode(t)}function c4(){if(Gh)return Gh;try{const t=window.location.host,e=navigator.userAgent;Gh=F2(`${fL}|${t}|${e}`)}catch(t){console.warn("Obfuscation fallback to simple key:",t),Gh=F2(fL)}return Gh}function u4(t,e){const n=new Uint8Array(t.length);for(let i=0;i<t.length;i++)n[i]=t[i]^e[i%e.length];return n}function AH(t){let e="";for(let n=0;n<t.length;n++)e+=String.fromCharCode(t[n]);return btoa(e)}function NH(t){const e=atob(t),n=new Uint8Array(e.length);for(let i=0;i<e.length;i++)n[i]=e.charCodeAt(i);return n}function TH(t){if(!t)return t;try{const e=c4(),n=u4(F2(t),e);return`${E0}${AH(n)}`}catch(e){return console.warn("Obfuscation failed, fallback to plaintext:",e),t}}function mL(t){if(!t||!t.startsWith(E0))return t;try{const e=t.slice(E0.length),n=NH(e),i=u4(n,c4());return CH(i)}catch(e){return console.warn("Deobfuscation failed, return as-is:",e),t}}function MH(t){return t?.startsWith(E0)||!1}class LH{setItem(e,n,i={}){const s=i.obfuscate??i.encrypt??!0;if(n==null){this.removeItem(e);return}const a=JSON.stringify(n),o=s?TH(a):a;localStorage.setItem(e,o)}getItem(e,n={}){const i=n.obfuscate??n.encrypt??!0,s=localStorage.getItem(e);if(s===null)return null;try{const a=i?mL(s):s;return JSON.parse(a)}catch{try{return i&&MH(s)?mL(s):s}catch{return null}}}removeItem(e){localStorage.removeItem(e)}clear(){localStorage.clear()}migratePlaintextKeys(e){e.forEach(n=>{const i=localStorage.getItem(n);if(!i||i.startsWith("enc::v1::"))return;let s=i;try{s=JSON.parse(i)}catch{s=i}try{this.setItem(n,s)}catch(a){console.warn(`Failed to migrate key "${n}":`,a)}})}hasItem(e){return localStorage.getItem(e)!==null}}const tc=new LH;function d4(t,e){return function(){return t.apply(e,arguments)}}const{toString:OH}=Object.prototype,{getPrototypeOf:Iw}=Object,{iterator:Ey,toStringTag:h4}=Symbol,jy=(t=>e=>{const n=OH.call(e);return t[n]||(t[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),Qa=t=>(t=t.toLowerCase(),e=>jy(e)===t),Ry=t=>e=>typeof e===t,{isArray:zd}=Array,kd=Ry("undefined");function $m(t){return t!==null&&!kd(t)&&t.constructor!==null&&!kd(t.constructor)&&Is(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const f4=Qa("ArrayBuffer");function PH(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&f4(t.buffer),e}const EH=Ry("string"),Is=Ry("function"),m4=Ry("number"),Xm=t=>t!==null&&typeof t=="object",jH=t=>t===!0||t===!1,i0=t=>{if(jy(t)!=="object")return!1;const e=Iw(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(h4 in t)&&!(Ey in t)},RH=t=>{if(!Xm(t)||$m(t))return!1;try{return Object.keys(t).length===0&&Object.getPrototypeOf(t)===Object.prototype}catch{return!1}},DH=Qa("Date"),FH=Qa("File"),IH=Qa("Blob"),BH=Qa("FileList"),UH=t=>Xm(t)&&Is(t.pipe),qH=t=>{let e;return t&&(typeof FormData=="function"&&t instanceof FormData||Is(t.append)&&((e=jy(t))==="formdata"||e==="object"&&Is(t.toString)&&t.toString()==="[object FormData]"))},zH=Qa("URLSearchParams"),[KH,VH,HH,WH]=["ReadableStream","Request","Response","Headers"].map(Qa),GH=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Qm(t,e,{allOwnKeys:n=!1}={}){if(t===null||typeof t>"u")return;let i,s;if(typeof t!="object"&&(t=[t]),zd(t))for(i=0,s=t.length;i<s;i++)e.call(null,t[i],i,t);else{if($m(t))return;const a=n?Object.getOwnPropertyNames(t):Object.keys(t),o=a.length;let r;for(i=0;i<o;i++)r=a[i],e.call(null,t[r],r,t)}}function p4(t,e){if($m(t))return null;e=e.toLowerCase();const n=Object.keys(t);let i=n.length,s;for(;i-- >0;)if(s=n[i],e===s.toLowerCase())return s;return null}const xc=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,g4=t=>!kd(t)&&t!==xc;function I2(){const{caseless:t,skipUndefined:e}=g4(this)&&this||{},n={},i=(s,a)=>{if(a==="__proto__"||a==="constructor"||a==="prototype")return;const o=t&&p4(n,a)||a;i0(n[o])&&i0(s)?n[o]=I2(n[o],s):i0(s)?n[o]=I2({},s):zd(s)?n[o]=s.slice():(!e||!kd(s))&&(n[o]=s)};for(let s=0,a=arguments.length;s<a;s++)arguments[s]&&Qm(arguments[s],i);return n}const $H=(t,e,n,{allOwnKeys:i}={})=>(Qm(e,(s,a)=>{n&&Is(s)?Object.defineProperty(t,a,{value:d4(s,n),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(t,a,{value:s,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:i}),t),XH=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),QH=(t,e,n,i)=>{t.prototype=Object.create(e.prototype,i),Object.defineProperty(t.prototype,"constructor",{value:t,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(t,"super",{value:e.prototype}),n&&Object.assign(t.prototype,n)},YH=(t,e,n,i)=>{let s,a,o;const r={};if(e=e||{},t==null)return e;do{for(s=Object.getOwnPropertyNames(t),a=s.length;a-- >0;)o=s[a],(!i||i(o,t,e))&&!r[o]&&(e[o]=t[o],r[o]=!0);t=n!==!1&&Iw(t)}while(t&&(!n||n(t,e))&&t!==Object.prototype);return e},JH=(t,e,n)=>{t=String(t),(n===void 0||n>t.length)&&(n=t.length),n-=e.length;const i=t.indexOf(e,n);return i!==-1&&i===n},ZH=t=>{if(!t)return null;if(zd(t))return t;let e=t.length;if(!m4(e))return null;const n=new Array(e);for(;e-- >0;)n[e]=t[e];return n},eW=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&Iw(Uint8Array)),tW=(t,e)=>{const i=(t&&t[Ey]).call(t);let s;for(;(s=i.next())&&!s.done;){const a=s.value;e.call(t,a[0],a[1])}},nW=(t,e)=>{let n;const i=[];for(;(n=t.exec(e))!==null;)i.push(n);return i},iW=Qa("HTMLFormElement"),sW=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,i,s){return i.toUpperCase()+s}),pL=(({hasOwnProperty:t})=>(e,n)=>t.call(e,n))(Object.prototype),aW=Qa("RegExp"),_4=(t,e)=>{const n=Object.getOwnPropertyDescriptors(t),i={};Qm(n,(s,a)=>{let o;(o=e(s,a,t))!==!1&&(i[a]=o||s)}),Object.defineProperties(t,i)},oW=t=>{_4(t,(e,n)=>{if(Is(t)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const i=t[n];if(Is(i)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},rW=(t,e)=>{const n={},i=s=>{s.forEach(a=>{n[a]=!0})};return zd(t)?i(t):i(String(t).split(e)),n},lW=()=>{},cW=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e;function uW(t){return!!(t&&Is(t.append)&&t[h4]==="FormData"&&t[Ey])}const dW=t=>{const e=new Array(10),n=(i,s)=>{if(Xm(i)){if(e.indexOf(i)>=0)return;if($m(i))return i;if(!("toJSON"in i)){e[s]=i;const a=zd(i)?[]:{};return Qm(i,(o,r)=>{const c=n(o,s+1);!kd(c)&&(a[r]=c)}),e[s]=void 0,a}}return i};return n(t,0)},hW=Qa("AsyncFunction"),fW=t=>t&&(Xm(t)||Is(t))&&Is(t.then)&&Is(t.catch),y4=((t,e)=>t?setImmediate:e?((n,i)=>(xc.addEventListener("message",({source:s,data:a})=>{s===xc&&a===n&&i.length&&i.shift()()},!1),s=>{i.push(s),xc.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",Is(xc.postMessage)),mW=typeof queueMicrotask<"u"?queueMicrotask.bind(xc):typeof process<"u"&&process.nextTick||y4,pW=t=>t!=null&&Is(t[Ey]),Se={isArray:zd,isArrayBuffer:f4,isBuffer:$m,isFormData:qH,isArrayBufferView:PH,isString:EH,isNumber:m4,isBoolean:jH,isObject:Xm,isPlainObject:i0,isEmptyObject:RH,isReadableStream:KH,isRequest:VH,isResponse:HH,isHeaders:WH,isUndefined:kd,isDate:DH,isFile:FH,isBlob:IH,isRegExp:aW,isFunction:Is,isStream:UH,isURLSearchParams:zH,isTypedArray:eW,isFileList:BH,forEach:Qm,merge:I2,extend:$H,trim:GH,stripBOM:XH,inherits:QH,toFlatObject:YH,kindOf:jy,kindOfTest:Qa,endsWith:JH,toArray:ZH,forEachEntry:tW,matchAll:nW,isHTMLForm:iW,hasOwnProperty:pL,hasOwnProp:pL,reduceDescriptors:_4,freezeMethods:oW,toObjectSet:rW,toCamelCase:sW,noop:lW,toFiniteNumber:cW,findKey:p4,global:xc,isContextDefined:g4,isSpecCompliantForm:uW,toJSONObject:dW,isAsyncFn:hW,isThenable:fW,setImmediate:y4,asap:mW,isIterable:pW};let Ct=class b4 extends Error{static from(e,n,i,s,a,o){const r=new b4(e.message,n||e.code,i,s,a);return r.cause=e,r.name=e.name,o&&Object.assign(r,o),r}constructor(e,n,i,s,a){super(e),this.name="AxiosError",this.isAxiosError=!0,n&&(this.code=n),i&&(this.config=i),s&&(this.request=s),a&&(this.response=a,this.status=a.status)}toJSON(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:Se.toJSONObject(this.config),code:this.code,status:this.status}}};Ct.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE";Ct.ERR_BAD_OPTION="ERR_BAD_OPTION";Ct.ECONNABORTED="ECONNABORTED";Ct.ETIMEDOUT="ETIMEDOUT";Ct.ERR_NETWORK="ERR_NETWORK";Ct.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS";Ct.ERR_DEPRECATED="ERR_DEPRECATED";Ct.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE";Ct.ERR_BAD_REQUEST="ERR_BAD_REQUEST";Ct.ERR_CANCELED="ERR_CANCELED";Ct.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT";Ct.ERR_INVALID_URL="ERR_INVALID_URL";const gW=null;function B2(t){return Se.isPlainObject(t)||Se.isArray(t)}function v4(t){return Se.endsWith(t,"[]")?t.slice(0,-2):t}function gL(t,e,n){return t?t.concat(e).map(function(s,a){return s=v4(s),!n&&a?"["+s+"]":s}).join(n?".":""):e}function _W(t){return Se.isArray(t)&&!t.some(B2)}const yW=Se.toFlatObject(Se,{},null,function(e){return/^is[A-Z]/.test(e)});function Dy(t,e,n){if(!Se.isObject(t))throw new TypeError("target must be an object");e=e||new FormData,n=Se.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(v,x){return!Se.isUndefined(x[v])});const i=n.metaTokens,s=n.visitor||f,a=n.dots,o=n.indexes,c=(n.Blob||typeof Blob<"u"&&Blob)&&Se.isSpecCompliantForm(e);if(!Se.isFunction(s))throw new TypeError("visitor must be a function");function d(_){if(_===null)return"";if(Se.isDate(_))return _.toISOString();if(Se.isBoolean(_))return _.toString();if(!c&&Se.isBlob(_))throw new Ct("Blob is not supported. Use a Buffer instead.");return Se.isArrayBuffer(_)||Se.isTypedArray(_)?c&&typeof Blob=="function"?new Blob([_]):Buffer.from(_):_}function f(_,v,x){let k=_;if(_&&!x&&typeof _=="object"){if(Se.endsWith(v,"{}"))v=i?v:v.slice(0,-2),_=JSON.stringify(_);else if(Se.isArray(_)&&_W(_)||(Se.isFileList(_)||Se.endsWith(v,"[]"))&&(k=Se.toArray(_)))return v=v4(v),k.forEach(function(N,L){!(Se.isUndefined(N)||N===null)&&e.append(o===!0?gL([v],L,a):o===null?v:v+"[]",d(N))}),!1}return B2(_)?!0:(e.append(gL(x,v,a),d(_)),!1)}const p=[],g=Object.assign(yW,{defaultVisitor:f,convertValue:d,isVisitable:B2});function y(_,v){if(!Se.isUndefined(_)){if(p.indexOf(_)!==-1)throw Error("Circular reference detected in "+v.join("."));p.push(_),Se.forEach(_,function(k,C){(!(Se.isUndefined(k)||k===null)&&s.call(e,k,Se.isString(C)?C.trim():C,v,g))===!0&&y(k,v?v.concat(C):[C])}),p.pop()}}if(!Se.isObject(t))throw new TypeError("data must be an object");return y(t),e}function _L(t){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,function(i){return e[i]})}function Bw(t,e){this._pairs=[],t&&Dy(t,this,e)}const x4=Bw.prototype;x4.append=function(e,n){this._pairs.push([e,n])};x4.toString=function(e){const n=e?function(i){return e.call(this,i,_L)}:_L;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function bW(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function S4(t,e,n){if(!e)return t;const i=n&&n.encode||bW,s=Se.isFunction(n)?{serialize:n}:n,a=s&&s.serialize;let o;if(a?o=a(e,s):o=Se.isURLSearchParams(e)?e.toString():new Bw(e,s).toString(i),o){const r=t.indexOf("#");r!==-1&&(t=t.slice(0,r)),t+=(t.indexOf("?")===-1?"?":"&")+o}return t}class yL{constructor(){this.handlers=[]}use(e,n,i){return this.handlers.push({fulfilled:e,rejected:n,synchronous:i?i.synchronous:!1,runWhen:i?i.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){Se.forEach(this.handlers,function(i){i!==null&&e(i)})}}const Uw={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0},vW=typeof URLSearchParams<"u"?URLSearchParams:Bw,xW=typeof FormData<"u"?FormData:null,SW=typeof Blob<"u"?Blob:null,wW={isBrowser:!0,classes:{URLSearchParams:vW,FormData:xW,Blob:SW},protocols:["http","https","file","blob","url","data"]},qw=typeof window<"u"&&typeof document<"u",U2=typeof navigator=="object"&&navigator||void 0,kW=qw&&(!U2||["ReactNative","NativeScript","NS"].indexOf(U2.product)<0),CW=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",AW=qw&&window.location.href||"http://localhost",NW=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:qw,hasStandardBrowserEnv:kW,hasStandardBrowserWebWorkerEnv:CW,navigator:U2,origin:AW},Symbol.toStringTag,{value:"Module"})),ts={...NW,...wW};function TW(t,e){return Dy(t,new ts.classes.URLSearchParams,{visitor:function(n,i,s,a){return ts.isNode&&Se.isBuffer(n)?(this.append(i,n.toString("base64")),!1):a.defaultVisitor.apply(this,arguments)},...e})}function MW(t){return Se.matchAll(/\w+|\[(\w*)]/g,t).map(e=>e[0]==="[]"?"":e[1]||e[0])}function LW(t){const e={},n=Object.keys(t);let i;const s=n.length;let a;for(i=0;i<s;i++)a=n[i],e[a]=t[a];return e}function w4(t){function e(n,i,s,a){let o=n[a++];if(o==="__proto__")return!0;const r=Number.isFinite(+o),c=a>=n.length;return o=!o&&Se.isArray(s)?s.length:o,c?(Se.hasOwnProp(s,o)?s[o]=[s[o],i]:s[o]=i,!r):((!s[o]||!Se.isObject(s[o]))&&(s[o]=[]),e(n,i,s[o],a)&&Se.isArray(s[o])&&(s[o]=LW(s[o])),!r)}if(Se.isFormData(t)&&Se.isFunction(t.entries)){const n={};return Se.forEachEntry(t,(i,s)=>{e(MW(i),s,n,0)}),n}return null}function OW(t,e,n){if(Se.isString(t))try{return(e||JSON.parse)(t),Se.trim(t)}catch(i){if(i.name!=="SyntaxError")throw i}return(n||JSON.stringify)(t)}const Ym={transitional:Uw,adapter:["xhr","http","fetch"],transformRequest:[function(e,n){const i=n.getContentType()||"",s=i.indexOf("application/json")>-1,a=Se.isObject(e);if(a&&Se.isHTMLForm(e)&&(e=new FormData(e)),Se.isFormData(e))return s?JSON.stringify(w4(e)):e;if(Se.isArrayBuffer(e)||Se.isBuffer(e)||Se.isStream(e)||Se.isFile(e)||Se.isBlob(e)||Se.isReadableStream(e))return e;if(Se.isArrayBufferView(e))return e.buffer;if(Se.isURLSearchParams(e))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let r;if(a){if(i.indexOf("application/x-www-form-urlencoded")>-1)return TW(e,this.formSerializer).toString();if((r=Se.isFileList(e))||i.indexOf("multipart/form-data")>-1){const c=this.env&&this.env.FormData;return Dy(r?{"files[]":e}:e,c&&new c,this.formSerializer)}}return a||s?(n.setContentType("application/json",!1),OW(e)):e}],transformResponse:[function(e){const n=this.transitional||Ym.transitional,i=n&&n.forcedJSONParsing,s=this.responseType==="json";if(Se.isResponse(e)||Se.isReadableStream(e))return e;if(e&&Se.isString(e)&&(i&&!this.responseType||s)){const o=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(e,this.parseReviver)}catch(r){if(o)throw r.name==="SyntaxError"?Ct.from(r,Ct.ERR_BAD_RESPONSE,this,null,this.response):r}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:ts.classes.FormData,Blob:ts.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};Se.forEach(["delete","get","head","post","put","patch"],t=>{Ym.headers[t]={}});const PW=Se.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),EW=t=>{const e={};let n,i,s;return t&&t.split(`
`).forEach(function(o){s=o.indexOf(":"),n=o.substring(0,s).trim().toLowerCase(),i=o.substring(s+1).trim(),!(!n||e[n]&&PW[n])&&(n==="set-cookie"?e[n]?e[n].push(i):e[n]=[i]:e[n]=e[n]?e[n]+", "+i:i)}),e},bL=Symbol("internals");function $h(t){return t&&String(t).trim().toLowerCase()}function s0(t){return t===!1||t==null?t:Se.isArray(t)?t.map(s0):String(t)}function jW(t){const e=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let i;for(;i=n.exec(t);)e[i[1]]=i[2];return e}const RW=t=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function Wx(t,e,n,i,s){if(Se.isFunction(i))return i.call(this,e,n);if(s&&(e=n),!!Se.isString(e)){if(Se.isString(i))return e.indexOf(i)!==-1;if(Se.isRegExp(i))return i.test(e)}}function DW(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,n,i)=>n.toUpperCase()+i)}function FW(t,e){const n=Se.toCamelCase(" "+e);["get","set","has"].forEach(i=>{Object.defineProperty(t,i+n,{value:function(s,a,o){return this[i].call(this,e,s,a,o)},configurable:!0})})}let Bs=class{constructor(e){e&&this.set(e)}set(e,n,i){const s=this;function a(r,c,d){const f=$h(c);if(!f)throw new Error("header name must be a non-empty string");const p=Se.findKey(s,f);(!p||s[p]===void 0||d===!0||d===void 0&&s[p]!==!1)&&(s[p||c]=s0(r))}const o=(r,c)=>Se.forEach(r,(d,f)=>a(d,f,c));if(Se.isPlainObject(e)||e instanceof this.constructor)o(e,n);else if(Se.isString(e)&&(e=e.trim())&&!RW(e))o(EW(e),n);else if(Se.isObject(e)&&Se.isIterable(e)){let r={},c,d;for(const f of e){if(!Se.isArray(f))throw TypeError("Object iterator must return a key-value pair");r[d=f[0]]=(c=r[d])?Se.isArray(c)?[...c,f[1]]:[c,f[1]]:f[1]}o(r,n)}else e!=null&&a(n,e,i);return this}get(e,n){if(e=$h(e),e){const i=Se.findKey(this,e);if(i){const s=this[i];if(!n)return s;if(n===!0)return jW(s);if(Se.isFunction(n))return n.call(this,s,i);if(Se.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,n){if(e=$h(e),e){const i=Se.findKey(this,e);return!!(i&&this[i]!==void 0&&(!n||Wx(this,this[i],i,n)))}return!1}delete(e,n){const i=this;let s=!1;function a(o){if(o=$h(o),o){const r=Se.findKey(i,o);r&&(!n||Wx(i,i[r],r,n))&&(delete i[r],s=!0)}}return Se.isArray(e)?e.forEach(a):a(e),s}clear(e){const n=Object.keys(this);let i=n.length,s=!1;for(;i--;){const a=n[i];(!e||Wx(this,this[a],a,e,!0))&&(delete this[a],s=!0)}return s}normalize(e){const n=this,i={};return Se.forEach(this,(s,a)=>{const o=Se.findKey(i,a);if(o){n[o]=s0(s),delete n[a];return}const r=e?DW(a):String(a).trim();r!==a&&delete n[a],n[r]=s0(s),i[r]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const n=Object.create(null);return Se.forEach(this,(i,s)=>{i!=null&&i!==!1&&(n[s]=e&&Se.isArray(i)?i.join(", "):i)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,n])=>e+": "+n).join(`
`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...n){const i=new this(e);return n.forEach(s=>i.set(s)),i}static accessor(e){const i=(this[bL]=this[bL]={accessors:{}}).accessors,s=this.prototype;function a(o){const r=$h(o);i[r]||(FW(s,o),i[r]=!0)}return Se.isArray(e)?e.forEach(a):a(e),this}};Bs.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);Se.reduceDescriptors(Bs.prototype,({value:t},e)=>{let n=e[0].toUpperCase()+e.slice(1);return{get:()=>t,set(i){this[n]=i}}});Se.freezeMethods(Bs);function Gx(t,e){const n=this||Ym,i=e||n,s=Bs.from(i.headers);let a=i.data;return Se.forEach(t,function(r){a=r.call(n,a,s.normalize(),e?e.status:void 0)}),s.normalize(),a}function k4(t){return!!(t&&t.__CANCEL__)}let Jm=class extends Ct{constructor(e,n,i){super(e??"canceled",Ct.ERR_CANCELED,n,i),this.name="CanceledError",this.__CANCEL__=!0}};function C4(t,e,n){const i=n.config.validateStatus;!n.status||!i||i(n.status)?t(n):e(new Ct("Request failed with status code "+n.status,[Ct.ERR_BAD_REQUEST,Ct.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function IW(t){const e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return e&&e[1]||""}function BW(t,e){t=t||10;const n=new Array(t),i=new Array(t);let s=0,a=0,o;return e=e!==void 0?e:1e3,function(c){const d=Date.now(),f=i[a];o||(o=d),n[s]=c,i[s]=d;let p=a,g=0;for(;p!==s;)g+=n[p++],p=p%t;if(s=(s+1)%t,s===a&&(a=(a+1)%t),d-o<e)return;const y=f&&d-f;return y?Math.round(g*1e3/y):void 0}}function UW(t,e){let n=0,i=1e3/e,s,a;const o=(d,f=Date.now())=>{n=f,s=null,a&&(clearTimeout(a),a=null),t(...d)};return[(...d)=>{const f=Date.now(),p=f-n;p>=i?o(d,f):(s=d,a||(a=setTimeout(()=>{a=null,o(s)},i-p)))},()=>s&&o(s)]}const j0=(t,e,n=3)=>{let i=0;const s=BW(50,250);return UW(a=>{const o=a.loaded,r=a.lengthComputable?a.total:void 0,c=o-i,d=s(c),f=o<=r;i=o;const p={loaded:o,total:r,progress:r?o/r:void 0,bytes:c,rate:d||void 0,estimated:d&&r&&f?(r-o)/d:void 0,event:a,lengthComputable:r!=null,[e?"download":"upload"]:!0};t(p)},n)},vL=(t,e)=>{const n=t!=null;return[i=>e[0]({lengthComputable:n,total:t,loaded:i}),e[1]]},xL=t=>(...e)=>Se.asap(()=>t(...e)),qW=ts.hasStandardBrowserEnv?((t,e)=>n=>(n=new URL(n,ts.origin),t.protocol===n.protocol&&t.host===n.host&&(e||t.port===n.port)))(new URL(ts.origin),ts.navigator&&/(msie|trident)/i.test(ts.navigator.userAgent)):()=>!0,zW=ts.hasStandardBrowserEnv?{write(t,e,n,i,s,a,o){if(typeof document>"u")return;const r=[`${t}=${encodeURIComponent(e)}`];Se.isNumber(n)&&r.push(`expires=${new Date(n).toUTCString()}`),Se.isString(i)&&r.push(`path=${i}`),Se.isString(s)&&r.push(`domain=${s}`),a===!0&&r.push("secure"),Se.isString(o)&&r.push(`SameSite=${o}`),document.cookie=r.join("; ")},read(t){if(typeof document>"u")return null;const e=document.cookie.match(new RegExp("(?:^|; )"+t+"=([^;]*)"));return e?decodeURIComponent(e[1]):null},remove(t){this.write(t,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function KW(t){return typeof t!="string"?!1:/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}function VW(t,e){return e?t.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):t}function A4(t,e,n){let i=!KW(e);return t&&(i||n==!1)?VW(t,e):e}const SL=t=>t instanceof Bs?{...t}:t;function Dc(t,e){e=e||{};const n={};function i(d,f,p,g){return Se.isPlainObject(d)&&Se.isPlainObject(f)?Se.merge.call({caseless:g},d,f):Se.isPlainObject(f)?Se.merge({},f):Se.isArray(f)?f.slice():f}function s(d,f,p,g){if(Se.isUndefined(f)){if(!Se.isUndefined(d))return i(void 0,d,p,g)}else return i(d,f,p,g)}function a(d,f){if(!Se.isUndefined(f))return i(void 0,f)}function o(d,f){if(Se.isUndefined(f)){if(!Se.isUndefined(d))return i(void 0,d)}else return i(void 0,f)}function r(d,f,p){if(p in e)return i(d,f);if(p in t)return i(void 0,d)}const c={url:a,method:a,data:a,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:r,headers:(d,f,p)=>s(SL(d),SL(f),p,!0)};return Se.forEach(Object.keys({...t,...e}),function(f){if(f==="__proto__"||f==="constructor"||f==="prototype")return;const p=Se.hasOwnProp(c,f)?c[f]:s,g=p(t[f],e[f],f);Se.isUndefined(g)&&p!==r||(n[f]=g)}),n}const N4=t=>{const e=Dc({},t);let{data:n,withXSRFToken:i,xsrfHeaderName:s,xsrfCookieName:a,headers:o,auth:r}=e;if(e.headers=o=Bs.from(o),e.url=S4(A4(e.baseURL,e.url,e.allowAbsoluteUrls),t.params,t.paramsSerializer),r&&o.set("Authorization","Basic "+btoa((r.username||"")+":"+(r.password?unescape(encodeURIComponent(r.password)):""))),Se.isFormData(n)){if(ts.hasStandardBrowserEnv||ts.hasStandardBrowserWebWorkerEnv)o.setContentType(void 0);else if(Se.isFunction(n.getHeaders)){const c=n.getHeaders(),d=["content-type","content-length"];Object.entries(c).forEach(([f,p])=>{d.includes(f.toLowerCase())&&o.set(f,p)})}}if(ts.hasStandardBrowserEnv&&(i&&Se.isFunction(i)&&(i=i(e)),i||i!==!1&&qW(e.url))){const c=s&&a&&zW.read(a);c&&o.set(s,c)}return e},HW=typeof XMLHttpRequest<"u",WW=HW&&function(t){return new Promise(function(n,i){const s=N4(t);let a=s.data;const o=Bs.from(s.headers).normalize();let{responseType:r,onUploadProgress:c,onDownloadProgress:d}=s,f,p,g,y,_;function v(){y&&y(),_&&_(),s.cancelToken&&s.cancelToken.unsubscribe(f),s.signal&&s.signal.removeEventListener("abort",f)}let x=new XMLHttpRequest;x.open(s.method.toUpperCase(),s.url,!0),x.timeout=s.timeout;function k(){if(!x)return;const N=Bs.from("getAllResponseHeaders"in x&&x.getAllResponseHeaders()),M={data:!r||r==="text"||r==="json"?x.responseText:x.response,status:x.status,statusText:x.statusText,headers:N,config:t,request:x};C4(function(T){n(T),v()},function(T){i(T),v()},M),x=null}"onloadend"in x?x.onloadend=k:x.onreadystatechange=function(){!x||x.readyState!==4||x.status===0&&!(x.responseURL&&x.responseURL.indexOf("file:")===0)||setTimeout(k)},x.onabort=function(){x&&(i(new Ct("Request aborted",Ct.ECONNABORTED,t,x)),x=null)},x.onerror=function(L){const M=L&&L.message?L.message:"Network Error",O=new Ct(M,Ct.ERR_NETWORK,t,x);O.event=L||null,i(O),x=null},x.ontimeout=function(){let L=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const M=s.transitional||Uw;s.timeoutErrorMessage&&(L=s.timeoutErrorMessage),i(new Ct(L,M.clarifyTimeoutError?Ct.ETIMEDOUT:Ct.ECONNABORTED,t,x)),x=null},a===void 0&&o.setContentType(null),"setRequestHeader"in x&&Se.forEach(o.toJSON(),function(L,M){x.setRequestHeader(M,L)}),Se.isUndefined(s.withCredentials)||(x.withCredentials=!!s.withCredentials),r&&r!=="json"&&(x.responseType=s.responseType),d&&([g,_]=j0(d,!0),x.addEventListener("progress",g)),c&&x.upload&&([p,y]=j0(c),x.upload.addEventListener("progress",p),x.upload.addEventListener("loadend",y)),(s.cancelToken||s.signal)&&(f=N=>{x&&(i(!N||N.type?new Jm(null,t,x):N),x.abort(),x=null)},s.cancelToken&&s.cancelToken.subscribe(f),s.signal&&(s.signal.aborted?f():s.signal.addEventListener("abort",f)));const C=IW(s.url);if(C&&ts.protocols.indexOf(C)===-1){i(new Ct("Unsupported protocol "+C+":",Ct.ERR_BAD_REQUEST,t));return}x.send(a||null)})},GW=(t,e)=>{const{length:n}=t=t?t.filter(Boolean):[];if(e||n){let i=new AbortController,s;const a=function(d){if(!s){s=!0,r();const f=d instanceof Error?d:this.reason;i.abort(f instanceof Ct?f:new Jm(f instanceof Error?f.message:f))}};let o=e&&setTimeout(()=>{o=null,a(new Ct(`timeout of ${e}ms exceeded`,Ct.ETIMEDOUT))},e);const r=()=>{t&&(o&&clearTimeout(o),o=null,t.forEach(d=>{d.unsubscribe?d.unsubscribe(a):d.removeEventListener("abort",a)}),t=null)};t.forEach(d=>d.addEventListener("abort",a));const{signal:c}=i;return c.unsubscribe=()=>Se.asap(r),c}},$W=function*(t,e){let n=t.byteLength;if(n<e){yield t;return}let i=0,s;for(;i<n;)s=i+e,yield t.slice(i,s),i=s},XW=async function*(t,e){for await(const n of QW(t))yield*$W(n,e)},QW=async function*(t){if(t[Symbol.asyncIterator]){yield*t;return}const e=t.getReader();try{for(;;){const{done:n,value:i}=await e.read();if(n)break;yield i}}finally{await e.cancel()}},wL=(t,e,n,i)=>{const s=XW(t,e);let a=0,o,r=c=>{o||(o=!0,i&&i(c))};return new ReadableStream({async pull(c){try{const{done:d,value:f}=await s.next();if(d){r(),c.close();return}let p=f.byteLength;if(n){let g=a+=p;n(g)}c.enqueue(new Uint8Array(f))}catch(d){throw r(d),d}},cancel(c){return r(c),s.return()}},{highWaterMark:2})},kL=64*1024,{isFunction:Kg}=Se,YW=(({Request:t,Response:e})=>({Request:t,Response:e}))(Se.global),{ReadableStream:CL,TextEncoder:AL}=Se.global,NL=(t,...e)=>{try{return!!t(...e)}catch{return!1}},JW=t=>{t=Se.merge.call({skipUndefined:!0},YW,t);const{fetch:e,Request:n,Response:i}=t,s=e?Kg(e):typeof fetch=="function",a=Kg(n),o=Kg(i);if(!s)return!1;const r=s&&Kg(CL),c=s&&(typeof AL=="function"?(_=>v=>_.encode(v))(new AL):async _=>new Uint8Array(await new n(_).arrayBuffer())),d=a&&r&&NL(()=>{let _=!1;const v=new n(ts.origin,{body:new CL,method:"POST",get duplex(){return _=!0,"half"}}).headers.has("Content-Type");return _&&!v}),f=o&&r&&NL(()=>Se.isReadableStream(new i("").body)),p={stream:f&&(_=>_.body)};s&&["text","arrayBuffer","blob","formData","stream"].forEach(_=>{!p[_]&&(p[_]=(v,x)=>{let k=v&&v[_];if(k)return k.call(v);throw new Ct(`Response type '${_}' is not supported`,Ct.ERR_NOT_SUPPORT,x)})});const g=async _=>{if(_==null)return 0;if(Se.isBlob(_))return _.size;if(Se.isSpecCompliantForm(_))return(await new n(ts.origin,{method:"POST",body:_}).arrayBuffer()).byteLength;if(Se.isArrayBufferView(_)||Se.isArrayBuffer(_))return _.byteLength;if(Se.isURLSearchParams(_)&&(_=_+""),Se.isString(_))return(await c(_)).byteLength},y=async(_,v)=>{const x=Se.toFiniteNumber(_.getContentLength());return x??g(v)};return async _=>{let{url:v,method:x,data:k,signal:C,cancelToken:N,timeout:L,onDownloadProgress:M,onUploadProgress:O,responseType:T,headers:P,withCredentials:E="same-origin",fetchOptions:R}=N4(_),q=e||fetch;T=T?(T+"").toLowerCase():"text";let I=GW([C,N&&N.toAbortSignal()],L),Y=null;const X=I&&I.unsubscribe&&(()=>{I.unsubscribe()});let K;try{if(O&&d&&x!=="get"&&x!=="head"&&(K=await y(P,k))!==0){let D=new n(v,{method:"POST",body:k,duplex:"half"}),U;if(Se.isFormData(k)&&(U=D.headers.get("content-type"))&&P.setContentType(U),D.body){const[$,te]=vL(K,j0(xL(O)));k=wL(D.body,kL,$,te)}}Se.isString(E)||(E=E?"include":"omit");const B=a&&"credentials"in n.prototype,H={...R,signal:I,method:x.toUpperCase(),headers:P.normalize().toJSON(),body:k,duplex:"half",credentials:B?E:void 0};Y=a&&new n(v,H);let z=await(a?q(Y,R):q(v,H));const Q=f&&(T==="stream"||T==="response");if(f&&(M||Q&&X)){const D={};["status","statusText","headers"].forEach(ie=>{D[ie]=z[ie]});const U=Se.toFiniteNumber(z.headers.get("content-length")),[$,te]=M&&vL(U,j0(xL(M),!0))||[];z=new i(wL(z.body,kL,$,()=>{te&&te(),X&&X()}),D)}T=T||"text";let W=await p[Se.findKey(p,T)||"text"](z,_);return!Q&&X&&X(),await new Promise((D,U)=>{C4(D,U,{data:W,headers:Bs.from(z.headers),status:z.status,statusText:z.statusText,config:_,request:Y})})}catch(B){throw X&&X(),B&&B.name==="TypeError"&&/Load failed|fetch/i.test(B.message)?Object.assign(new Ct("Network Error",Ct.ERR_NETWORK,_,Y,B&&B.response),{cause:B.cause||B}):Ct.from(B,B&&B.code,_,Y,B&&B.response)}}},ZW=new Map,T4=t=>{let e=t&&t.env||{};const{fetch:n,Request:i,Response:s}=e,a=[i,s,n];let o=a.length,r=o,c,d,f=ZW;for(;r--;)c=a[r],d=f.get(c),d===void 0&&f.set(c,d=r?new Map:JW(e)),f=d;return d};T4();const zw={http:gW,xhr:WW,fetch:{get:T4}};Se.forEach(zw,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{value:e})}catch{}Object.defineProperty(t,"adapterName",{value:e})}});const TL=t=>`- ${t}`,eG=t=>Se.isFunction(t)||t===null||t===!1;function tG(t,e){t=Se.isArray(t)?t:[t];const{length:n}=t;let i,s;const a={};for(let o=0;o<n;o++){i=t[o];let r;if(s=i,!eG(i)&&(s=zw[(r=String(i)).toLowerCase()],s===void 0))throw new Ct(`Unknown adapter '${r}'`);if(s&&(Se.isFunction(s)||(s=s.get(e))))break;a[r||"#"+o]=s}if(!s){const o=Object.entries(a).map(([c,d])=>`adapter ${c} `+(d===!1?"is not supported by the environment":"is not available in the build"));let r=n?o.length>1?`since :
`+o.map(TL).join(`
`):" "+TL(o[0]):"as no adapter specified";throw new Ct("There is no suitable adapter to dispatch the request "+r,"ERR_NOT_SUPPORT")}return s}const M4={getAdapter:tG,adapters:zw};function $x(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new Jm(null,t)}function ML(t){return $x(t),t.headers=Bs.from(t.headers),t.data=Gx.call(t,t.transformRequest),["post","put","patch"].indexOf(t.method)!==-1&&t.headers.setContentType("application/x-www-form-urlencoded",!1),M4.getAdapter(t.adapter||Ym.adapter,t)(t).then(function(i){return $x(t),i.data=Gx.call(t,t.transformResponse,i),i.headers=Bs.from(i.headers),i},function(i){return k4(i)||($x(t),i&&i.response&&(i.response.data=Gx.call(t,t.transformResponse,i.response),i.response.headers=Bs.from(i.response.headers))),Promise.reject(i)})}const L4="1.13.5",Fy={};["object","boolean","number","function","string","symbol"].forEach((t,e)=>{Fy[t]=function(i){return typeof i===t||"a"+(e<1?"n ":" ")+t}});const LL={};Fy.transitional=function(e,n,i){function s(a,o){return"[Axios v"+L4+"] Transitional option '"+a+"'"+o+(i?". "+i:"")}return(a,o,r)=>{if(e===!1)throw new Ct(s(o," has been removed"+(n?" in "+n:"")),Ct.ERR_DEPRECATED);return n&&!LL[o]&&(LL[o]=!0,console.warn(s(o," has been deprecated since v"+n+" and will be removed in the near future"))),e?e(a,o,r):!0}};Fy.spelling=function(e){return(n,i)=>(console.warn(`${i} is likely a misspelling of ${e}`),!0)};function nG(t,e,n){if(typeof t!="object")throw new Ct("options must be an object",Ct.ERR_BAD_OPTION_VALUE);const i=Object.keys(t);let s=i.length;for(;s-- >0;){const a=i[s],o=e[a];if(o){const r=t[a],c=r===void 0||o(r,a,t);if(c!==!0)throw new Ct("option "+a+" must be "+c,Ct.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new Ct("Unknown option "+a,Ct.ERR_BAD_OPTION)}}const a0={assertOptions:nG,validators:Fy},fa=a0.validators;let Mc=class{constructor(e){this.defaults=e||{},this.interceptors={request:new yL,response:new yL}}async request(e,n){try{return await this._request(e,n)}catch(i){if(i instanceof Error){let s={};Error.captureStackTrace?Error.captureStackTrace(s):s=new Error;const a=s.stack?s.stack.replace(/^.+\n/,""):"";try{i.stack?a&&!String(i.stack).endsWith(a.replace(/^.+\n.+\n/,""))&&(i.stack+=`
`+a):i.stack=a}catch{}}throw i}}_request(e,n){typeof e=="string"?(n=n||{},n.url=e):n=e||{},n=Dc(this.defaults,n);const{transitional:i,paramsSerializer:s,headers:a}=n;i!==void 0&&a0.assertOptions(i,{silentJSONParsing:fa.transitional(fa.boolean),forcedJSONParsing:fa.transitional(fa.boolean),clarifyTimeoutError:fa.transitional(fa.boolean),legacyInterceptorReqResOrdering:fa.transitional(fa.boolean)},!1),s!=null&&(Se.isFunction(s)?n.paramsSerializer={serialize:s}:a0.assertOptions(s,{encode:fa.function,serialize:fa.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),a0.assertOptions(n,{baseUrl:fa.spelling("baseURL"),withXsrfToken:fa.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let o=a&&Se.merge(a.common,a[n.method]);a&&Se.forEach(["delete","get","head","post","put","patch","common"],_=>{delete a[_]}),n.headers=Bs.concat(o,a);const r=[];let c=!0;this.interceptors.request.forEach(function(v){if(typeof v.runWhen=="function"&&v.runWhen(n)===!1)return;c=c&&v.synchronous;const x=n.transitional||Uw;x&&x.legacyInterceptorReqResOrdering?r.unshift(v.fulfilled,v.rejected):r.push(v.fulfilled,v.rejected)});const d=[];this.interceptors.response.forEach(function(v){d.push(v.fulfilled,v.rejected)});let f,p=0,g;if(!c){const _=[ML.bind(this),void 0];for(_.unshift(...r),_.push(...d),g=_.length,f=Promise.resolve(n);p<g;)f=f.then(_[p++],_[p++]);return f}g=r.length;let y=n;for(;p<g;){const _=r[p++],v=r[p++];try{y=_(y)}catch(x){v.call(this,x);break}}try{f=ML.call(this,y)}catch(_){return Promise.reject(_)}for(p=0,g=d.length;p<g;)f=f.then(d[p++],d[p++]);return f}getUri(e){e=Dc(this.defaults,e);const n=A4(e.baseURL,e.url,e.allowAbsoluteUrls);return S4(n,e.params,e.paramsSerializer)}};Se.forEach(["delete","get","head","options"],function(e){Mc.prototype[e]=function(n,i){return this.request(Dc(i||{},{method:e,url:n,data:(i||{}).data}))}});Se.forEach(["post","put","patch"],function(e){function n(i){return function(a,o,r){return this.request(Dc(r||{},{method:e,headers:i?{"Content-Type":"multipart/form-data"}:{},url:a,data:o}))}}Mc.prototype[e]=n(),Mc.prototype[e+"Form"]=n(!0)});let iG=class O4{constructor(e){if(typeof e!="function")throw new TypeError("executor must be a function.");let n;this.promise=new Promise(function(a){n=a});const i=this;this.promise.then(s=>{if(!i._listeners)return;let a=i._listeners.length;for(;a-- >0;)i._listeners[a](s);i._listeners=null}),this.promise.then=s=>{let a;const o=new Promise(r=>{i.subscribe(r),a=r}).then(s);return o.cancel=function(){i.unsubscribe(a)},o},e(function(a,o,r){i.reason||(i.reason=new Jm(a,o,r),n(i.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const n=this._listeners.indexOf(e);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const e=new AbortController,n=i=>{e.abort(i)};return this.subscribe(n),e.signal.unsubscribe=()=>this.unsubscribe(n),e.signal}static source(){let e;return{token:new O4(function(s){e=s}),cancel:e}}};function sG(t){return function(n){return t.apply(null,n)}}function aG(t){return Se.isObject(t)&&t.isAxiosError===!0}const q2={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(q2).forEach(([t,e])=>{q2[e]=t});function P4(t){const e=new Mc(t),n=d4(Mc.prototype.request,e);return Se.extend(n,Mc.prototype,e,{allOwnKeys:!0}),Se.extend(n,e,null,{allOwnKeys:!0}),n.create=function(s){return P4(Dc(t,s))},n}const Gn=P4(Ym);Gn.Axios=Mc;Gn.CanceledError=Jm;Gn.CancelToken=iG;Gn.isCancel=k4;Gn.VERSION=L4;Gn.toFormData=Dy;Gn.AxiosError=Ct;Gn.Cancel=Gn.CanceledError;Gn.all=function(e){return Promise.all(e)};Gn.spread=sG;Gn.isAxiosError=aG;Gn.mergeConfig=Dc;Gn.AxiosHeaders=Bs;Gn.formToJSON=t=>w4(Se.isHTMLForm(t)?new FormData(t):t);Gn.getAdapter=M4.getAdapter;Gn.HttpStatusCode=q2;Gn.default=Gn;const{Axios:xTe,AxiosError:STe,CanceledError:wTe,isCancel:kTe,CancelToken:CTe,VERSION:ATe,all:NTe,Cancel:TTe,isAxiosError:MTe,spread:LTe,toFormData:OTe,AxiosHeaders:PTe,HttpStatusCode:ETe,formToJSON:jTe,getAdapter:RTe,mergeConfig:DTe}=Gn,To=t=>{let e=(t||"").trim();return e?(e=e.replace(/\/?v0\/management\/?$/i,""),e=e.replace(/\/+$/i,""),/^https?:\/\//i.test(e)||(e=`http://${e}`),e):""},oG=t=>{const e=To(t);return e?`${e}${R2}`:""},E4=()=>{try{const{protocol:t,hostname:e,port:n}=window.location,i=n?`:${n}`:"";return To(`${t}//${e}${i}`)}catch(t){return console.warn("Failed to detect api base from location, fallback to default",t),To(`http://localhost:${fK}`)}};class rG{constructor(){Lt(this,"instance");Lt(this,"apiBase","");Lt(this,"managementKey","");this.instance=Gn.create({timeout:uL,headers:{"Content-Type":"application/json"}}),this.setupInterceptors()}setConfig(e){this.apiBase=oG(e.apiBase),this.managementKey=e.managementKey,e.timeout?this.instance.defaults.timeout=e.timeout:this.instance.defaults.timeout=uL}readHeader(e,n){if(!e)return null;const i=r=>{if(r==null)return null;if(Array.isArray(r)){const d=r.find(f=>f!=null&&String(f).trim());return d!==void 0?String(d):null}const c=String(r);return c||null},s=e.get;if(typeof s=="function")for(const r of n){const c=i(s.call(e,r));if(c)return c}const a=typeof e.entries=="function"?Array.from(e.entries()):Object.entries(e),o=Object.fromEntries(a.map(([r,c])=>[String(r).toLowerCase(),c]));for(const r of n){const c=i(o[r.toLowerCase()]);if(c)return c}return null}setupInterceptors(){this.instance.interceptors.request.use(e=>(e.baseURL=this.apiBase,e.url&&(e.url=e.url.replace(/\/generative-language-api-key\b/g,"/gemini-api-key")),this.managementKey&&(e.headers.Authorization=`Bearer ${this.managementKey}`),e),e=>Promise.reject(this.handleError(e))),this.instance.interceptors.response.use(e=>{const n=e.headers,i=this.readHeader(n,mK),s=this.readHeader(n,pK);return(i||s)&&window.dispatchEvent(new CustomEvent("server-version-update",{detail:{version:i||null,buildDate:s||null}})),e},e=>Promise.reject(this.handleError(e)))}handleError(e){const n=a=>a!==null&&typeof a=="object";if(Gn.isAxiosError(e)){const a=e.response?.data,o=n(a)?a:null,r=o?.error,c=typeof r=="string"?r:n(r)&&typeof r.message=="string"?r.message:typeof o?.message=="string"?o.message:e.message||"Request failed",d=new Error(c);return d.name="ApiError",d.status=e.response?.status,d.code=e.code,d.details=a,d.data=a,e.response?.status===401&&window.dispatchEvent(new Event("unauthorized")),d}const i=e instanceof Error?e.message:typeof e=="string"?e:"Unknown error occurred",s=new Error(i);return s.name="ApiError",s}async get(e,n){return(await this.instance.get(e,n)).data}async post(e,n,i){return(await this.instance.post(e,n,i)).data}async put(e,n,i){return(await this.instance.put(e,n,i)).data}async patch(e,n,i){return(await this.instance.patch(e,n,i)).data}async delete(e,n){return(await this.instance.delete(e,n)).data}async getRaw(e,n){return this.instance.get(e,n)}async postForm(e,n,i){return(await this.instance.post(e,n,{...i,headers:{...i?.headers||{},"Content-Type":"multipart/form-data"}})).data}async requestRaw(e){return this.instance.request(e)}}const Ie=new rG;function gs(t){return t?Array.isArray(t)?t.reduce((e,n)=>{const i=n?.key?.trim(),s=n?.value?.trim();return i&&s!==void 0&&s!==null&&s!==""&&(e[i]=s),e},{}):Object.entries(t).reduce((e,[n,i])=>{const s=n?.trim(),a=typeof i=="string"?i.trim():i;return s&&a!==void 0&&a!==null&&a!==""&&(e[s]=String(a)),e},{}):{}}function j4(t,e){if(!t)return!1;const n=e.toLowerCase();return Object.keys(t).some(i=>i.toLowerCase()===n)}function Zm(t){return!t||typeof t!="object"?[]:Object.entries(t).filter(([,e])=>e!=null&&e!=="").map(([e,n])=>({key:e,value:String(n)}))}const ep=t=>(t??[]).map(e=>({key:String(e?.key??"").trim(),value:String(e?.value??"").trim()})).filter(e=>e.key||e.value).sort((e,n)=>{const i=e.key.toLowerCase().localeCompare(n.key.toLowerCase());return i!==0?i:e.value.localeCompare(n.value)}),ss=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),za=t=>{if(t!=null){if(typeof t=="boolean")return t;if(typeof t=="number")return t!==0;if(typeof t=="string"){const e=t.trim().toLowerCase();if(["true","1","yes","y","on"].includes(e))return!0;if(["false","0","no","n","off"].includes(e))return!1}return!!t}},Kw=t=>Array.isArray(t)?t.map(e=>{if(e==null)return null;if(typeof e=="string"){const r=e.trim();return r?{name:r}:null}if(!ss(e))return null;const n=e.name||e.id||e.model;if(!n)return null;const i=e.alias||e.display_name||e.displayName,s=e.priority??e.priority,a=e["test-model"]??e.testModel,o={name:String(n)};if(i&&i!==n&&(o.alias=String(i)),s!==void 0){const r=Number(s);Number.isFinite(r)&&(o.priority=r)}return a&&(o.testModel=String(a)),o}).filter(Boolean):[],Iy=t=>{if(!t||typeof t!="object")return;const e=gs((Array.isArray(t),t));return Object.keys(e).length?e:void 0},R0=t=>{const e=Array.isArray(t)?t:typeof t=="string"?t.split(/[\n,]/):[],n=new Set,i=[];return e.forEach(s=>{const a=String(s??"").trim();if(!a)return;const o=a.toLowerCase();n.has(o)||(n.add(o),i.push(a))}),i},Vw=t=>{if(t==null)return;const e=String(t).trim();return e||void 0},OL=t=>{if(t==null)return null;const e=ss(t)?t:null,n=e?.["api-key"]??e?.apiKey??e?.key??(typeof t=="string"?t:""),i=String(n||"").trim();if(!i)return null;const s=e?e["proxy-url"]??e.proxyUrl:void 0,a=e?Iy(e.headers):void 0;return{apiKey:i,proxyUrl:s?String(s):void 0,headers:a}},ud=t=>{if(t==null)return null;const e=ss(t)?t:null,n=e?.["api-key"]??e?.apiKey??(typeof t=="string"?t:""),i=String(n||"").trim();if(!i)return null;const s={apiKey:i},a=e?.priority??e?.priority;if(a!=null&&String(a).trim()!==""){const _=Number(a);Number.isFinite(_)&&(s.priority=_)}const o=Vw(e?.prefix??e?.prefix);o&&(s.prefix=o);const r=e?e["base-url"]??e.baseUrl:void 0,c=e?e["proxy-url"]??e.proxyUrl:void 0;r&&(s.baseUrl=String(r));const d=za(e?.websockets??e?.websockets);d!==void 0&&(s.websockets=d),c&&(s.proxyUrl=String(c));const f=Iy(e?.headers);f&&(s.headers=f);const p=Kw(e?.models);p.length&&(s.models=p);const g=R0(e?.["excluded-models"]??e?.excludedModels??e?.excluded_models??e?.excluded_models);g.length&&(s.excludedModels=g);const y=e?.cloak;if(ss(y)){const _={},v=y.mode??y.mode;typeof v=="string"&&v.trim()&&(_.mode=v.trim());const x=za(y["strict-mode"]??y.strictMode??y.strict_mode);x!==void 0&&(_.strictMode=x);const k=R0(y["sensitive-words"]??y.sensitiveWords??y.sensitive_words);k.length&&(_.sensitiveWords=k),Object.keys(_).length&&(s.cloak=_)}return s},R4=t=>{if(t==null)return null;const e=ss(t)?t:null;let n=e?.["api-key"]??e?.apiKey;!n&&typeof t=="string"&&(n=t);const i=String(n||"").trim();if(!i)return null;const s={apiKey:i},a=e?.priority??e?.priority;if(a!=null&&String(a).trim()!==""){const g=Number(a);Number.isFinite(g)&&(s.priority=g)}const o=Vw(e?.prefix??e?.prefix);o&&(s.prefix=o);const r=e?e["base-url"]??e.baseUrl??e.base_url:void 0;r&&(s.baseUrl=String(r));const c=e?e["proxy-url"]??e.proxyUrl??e.proxy_url:void 0;c&&(s.proxyUrl=String(c));const d=Kw(e?.models);d.length&&(s.models=d);const f=Iy(e?.headers);f&&(s.headers=f);const p=R0(e?.["excluded-models"]??e?.excludedModels);return p.length&&(s.excludedModels=p),s},D4=t=>{if(!ss(t))return null;const e=t.name||t.id,n=t["base-url"]??t.baseUrl;if(!e||!n)return null;let i=[];Array.isArray(t["api-key-entries"])?i=t["api-key-entries"].map(f=>OL(f)).filter(Boolean):Array.isArray(t["api-keys"])&&(i=t["api-keys"].map(f=>OL({"api-key":f})).filter(Boolean));const s=Iy(t.headers),a=Kw(t.models),o=t.priority??t.priority,r=t["test-model"]??t.testModel,c={name:String(e),baseUrl:String(n),apiKeyEntries:i},d=Vw(t.prefix??t.prefix);return d&&(c.prefix=d),s&&(c.headers=s),a.length&&(c.models=a),o!==void 0&&(c.priority=Number(o)),r&&(c.testModel=String(r)),c},lG=t=>{if(!ss(t))return;const e=t["oauth-excluded-models"]??t.items??t;if(!ss(e))return;const n={};return Object.entries(e).forEach(([i,s])=>{const a=String(i||"").trim();if(!a)return;const o=R0(s);n[a.toLowerCase()]=o}),n},F4=t=>{if(!Array.isArray(t))return[];const e=new Set,n=[];return t.forEach(i=>{if(!ss(i))return;const s=String(i.from??i.from??"").trim(),a=String(i.to??i.to??"").trim();if(!s||!a)return;const o=s.toLowerCase();e.has(o)||(e.add(o),n.push({from:s,to:a}))}),n},I4=t=>{if(!Array.isArray(t))return[];const e=new Set,n=[];return t.forEach(i=>{if(!ss(i))return;const s=String(i["upstream-api-key"]??i.upstreamApiKey??i.upstream_api_key??"").trim();if(!s||e.has(s))return;const a=i["api-keys"]??i.apiKeys??i.api_keys??[],o=Array.isArray(a)?Array.from(new Set(a.map(r=>String(r??"").trim()).filter(Boolean))):[];o.length&&(e.add(s),n.push({upstreamApiKey:s,apiKeys:o}))}),n},B4=t=>{const e=ss(t)?t.ampcode??t:t;if(!ss(e))return;const n=e,i={},s=n["upstream-url"]??n.upstreamUrl??n.upstream_url;s&&(i.upstreamUrl=String(s));const a=n["upstream-api-key"]??n.upstreamApiKey??n.upstream_api_key;a&&(i.upstreamApiKey=String(a));const o=I4(n["upstream-api-keys"]??n.upstreamApiKeys??n.upstream_api_keys);o.length&&(i.upstreamApiKeys=o);const r=za(n["force-model-mappings"]??n.forceModelMappings??n.force_model_mappings);r!==void 0&&(i.forceModelMappings=r);const c=F4(n["model-mappings"]??n.modelMappings??n.model_mappings);return c.length&&(i.modelMappings=c),i},cG=t=>{const e={raw:ss(t)?t:{}};if(!ss(t))return e;e.debug=za(t.debug);const n=t["proxy-url"]??t.proxyUrl;e.proxyUrl=typeof n=="string"?n:n==null?void 0:String(n);const i=t["request-retry"]??t.requestRetry;if(typeof i=="number"&&Number.isFinite(i))e.requestRetry=i;else if(typeof i=="string"&&i.trim()!==""){const x=Number(i);Number.isFinite(x)&&(e.requestRetry=x)}const s=t["quota-exceeded"]??t.quotaExceeded;ss(s)&&(e.quotaExceeded={switchProject:za(s["switch-project"]??s.switchProject),switchPreviewModel:za(s["switch-preview-model"]??s.switchPreviewModel)}),e.usageStatisticsEnabled=za(t["usage-statistics-enabled"]??t.usageStatisticsEnabled),e.requestLog=za(t["request-log"]??t.requestLog),e.loggingToFile=za(t["logging-to-file"]??t.loggingToFile);const a=t["logs-max-total-size-mb"]??t.logsMaxTotalSizeMb;if(typeof a=="number"&&Number.isFinite(a))e.logsMaxTotalSizeMb=a;else if(typeof a=="string"&&a.trim()!==""){const x=Number(a);Number.isFinite(x)&&(e.logsMaxTotalSizeMb=x)}e.wsAuth=za(t["ws-auth"]??t.wsAuth),e.forceModelPrefix=za(t["force-model-prefix"]??t.forceModelPrefix);const o=t.routing,r=ss(o)?o.strategy??o.strategy:t["routing-strategy"]??t.routingStrategy;r!=null&&(e.routingStrategy=String(r));const c=t["api-keys"]??t.apiKeys;Array.isArray(c)&&(e.apiKeys=c.map(x=>String(x)).filter(x=>x.trim()!==""));const d=t["gemini-api-key"]??t.geminiApiKey??t.geminiApiKeys;Array.isArray(d)&&(e.geminiApiKeys=d.map(x=>R4(x)).filter(Boolean));const f=t["codex-api-key"]??t.codexApiKey??t.codexApiKeys;Array.isArray(f)&&(e.codexApiKeys=f.map(x=>ud(x)).filter(Boolean));const p=t["claude-api-key"]??t.claudeApiKey??t.claudeApiKeys;Array.isArray(p)&&(e.claudeApiKeys=p.map(x=>ud(x)).filter(Boolean));const g=t["vertex-api-key"]??t.vertexApiKey??t.vertexApiKeys;Array.isArray(g)&&(e.vertexApiKeys=g.map(x=>ud(x)).filter(Boolean));const y=t["openai-compatibility"]??t.openaiCompatibility??t.openAICompatibility;Array.isArray(y)&&(e.openaiCompatibility=y.map(x=>D4(x)).filter(Boolean));const _=B4(t.ampcode);_&&(e.ampcode=_);const v=lG(t["oauth-excluded-models"]??t.oauthExcludedModels);return v&&(e.oauthExcludedModels=v),e},U4={async getConfig(){const t=await Ie.get("/config");return cG(t)},getRawConfig:()=>Ie.get("/config"),updateDebug:t=>Ie.put("/debug",{value:t}),updateProxyUrl:t=>Ie.put("/proxy-url",{value:t}),clearProxyUrl:()=>Ie.delete("/proxy-url"),updateRequestRetry:t=>Ie.put("/request-retry",{value:t}),updateSwitchProject:t=>Ie.put("/quota-exceeded/switch-project",{value:t}),updateSwitchPreviewModel:t=>Ie.put("/quota-exceeded/switch-preview-model",{value:t}),updateUsageStatistics:t=>Ie.put("/usage-statistics-enabled",{value:t}),updateRequestLog:t=>Ie.put("/request-log",{value:t}),updateLoggingToFile:t=>Ie.put("/logging-to-file",{value:t}),async getLogsMaxTotalSizeMb(){const t=await Ie.get("/logs-max-total-size-mb"),e=t?.["logs-max-total-size-mb"]??t?.logsMaxTotalSizeMb??0,n=Number(e);return Number.isFinite(n)?n:0},updateLogsMaxTotalSizeMb:t=>Ie.put("/logs-max-total-size-mb",{value:t}),updateWsAuth:t=>Ie.put("/ws-auth",{value:t}),async getForceModelPrefix(){const t=await Ie.get("/force-model-prefix");return!!(t?.["force-model-prefix"]??t?.forceModelPrefix??!1)},updateForceModelPrefix:t=>Ie.put("/force-model-prefix",{value:t}),async getRoutingStrategy(){const t=await Ie.get("/routing/strategy"),e=t?.strategy??t?.["routing-strategy"]??t?.routingStrategy;return typeof e=="string"?e:"round-robin"},updateRoutingStrategy:t=>Ie.put("/routing/strategy",{value:t})};let Xh=0,nc=null;const uG=["debug","proxy-url","request-retry","quota-exceeded","usage-statistics-enabled","request-log","logging-to-file","logs-max-total-size-mb","ws-auth","force-model-prefix","routing/strategy","api-keys","ampcode","gemini-api-key","codex-api-key","claude-api-key","vertex-api-key","openai-compatibility","oauth-excluded-models"],Qh=(t,e)=>{if(t)switch(e){case"debug":return t.debug;case"proxy-url":return t.proxyUrl;case"request-retry":return t.requestRetry;case"quota-exceeded":return t.quotaExceeded;case"usage-statistics-enabled":return t.usageStatisticsEnabled;case"request-log":return t.requestLog;case"logging-to-file":return t.loggingToFile;case"logs-max-total-size-mb":return t.logsMaxTotalSizeMb;case"ws-auth":return t.wsAuth;case"force-model-prefix":return t.forceModelPrefix;case"routing/strategy":return t.routingStrategy;case"api-keys":return t.apiKeys;case"ampcode":return t.ampcode;case"gemini-api-key":return t.geminiApiKeys;case"codex-api-key":return t.codexApiKeys;case"claude-api-key":return t.claudeApiKeys;case"vertex-api-key":return t.vertexApiKeys;case"openai-compatibility":return t.openaiCompatibility;case"oauth-excluded-models":return t.oauthExcludedModels;default:return e?t.raw?.[e]:void 0}},It=Eo((t,e)=>({config:null,cache:new Map,loading:!1,error:null,fetchConfig:(async(n,i=!1)=>{const{cache:s,isCacheValid:a}=e(),o=n||"__full__";if(!i&&a(n)){const c=s.get(o);if(c)return c.data}if(!i&&n&&a()){const c=s.get("__full__");if(c?.data)return Qh(c.data,n)}if(nc){const c=await nc.promise;return n?Qh(c,n):c}t({loading:!0,error:null});const r=Xh+=1;try{const c=U4.getConfig();nc={id:r,promise:c};const d=await c,f=Date.now();if(r!==Xh)return n?Qh(d,n):d;const p=new Map(s);return p.set("__full__",{data:d,timestamp:f}),uG.forEach(g=>{const y=Qh(d,g);y!==void 0&&p.set(g,{data:y,timestamp:f})}),t({config:d,cache:p,loading:!1}),n?Qh(d,n):d}catch(c){const d=c instanceof Error?c.message:typeof c=="string"?c:"Failed to fetch config";throw r===Xh&&t({error:d||"Failed to fetch config",loading:!1}),c}finally{nc?.id===r&&(nc=null)}}),updateConfigValue:(n,i)=>{t(s=>{const a={...s.config?.raw||{}};a[n]=i;const o={...s.config||{},raw:a};switch(n){case"debug":o.debug=i;break;case"proxy-url":o.proxyUrl=i;break;case"request-retry":o.requestRetry=i;break;case"quota-exceeded":o.quotaExceeded=i;break;case"usage-statistics-enabled":o.usageStatisticsEnabled=i;break;case"request-log":o.requestLog=i;break;case"logging-to-file":o.loggingToFile=i;break;case"logs-max-total-size-mb":o.logsMaxTotalSizeMb=i;break;case"ws-auth":o.wsAuth=i;break;case"force-model-prefix":o.forceModelPrefix=i;break;case"routing/strategy":o.routingStrategy=i;break;case"api-keys":o.apiKeys=i;break;case"ampcode":o.ampcode=i;break;case"gemini-api-key":o.geminiApiKeys=i;break;case"codex-api-key":o.codexApiKeys=i;break;case"claude-api-key":o.claudeApiKeys=i;break;case"vertex-api-key":o.vertexApiKeys=i;break;case"openai-compatibility":o.openaiCompatibility=i;break;case"oauth-excluded-models":o.oauthExcludedModels=i;break}return{config:o}}),e().clearCache(n)},clearCache:n=>{const{cache:i}=e(),s=new Map(i);if(n){s.delete(n),s.delete("__full__"),Xh+=1,nc=null,t({cache:s,loading:!1,error:null});return}else s.clear();Xh+=1,nc=null,t({config:null,cache:s,loading:!1,error:null})},isCacheValid:n=>{const{cache:i}=e(),s=n||"__full__",a=i.get(s);return a?Date.now()-a.timestamp<n4:!1}})),dG=t=>{if(t==null)return{bodyText:"",body:null};if(typeof t=="string"){const e=t,n=e.trim();if(!n)return{bodyText:e,body:null};try{return{bodyText:e,body:JSON.parse(n)}}catch{return{bodyText:e,body:e}}}try{return{bodyText:JSON.stringify(t),body:t}}catch{return{bodyText:String(t),body:t}}},Ka=t=>{const e=o=>o!==null&&typeof o=="object",n=t.statusCode,i=t.body,s=t.bodyText;let a="";if(e(i)){const o=i.error;e(o)&&typeof o.message=="string"?a=o.message:typeof o=="string"&&(a=o),!a&&typeof i.message=="string"&&(a=i.message)}else typeof i=="string"&&(a=i);return!a&&s&&(a=s),n&&a?`${n} ${a}`.trim():n?`HTTP ${n}`:a||"Request failed"},ea={request:async(t,e)=>{const n=await Ie.post("/api-call",t,e),i=Number(n?.status_code??n?.statusCode??0),s=n?.header??n?.headers??{},{bodyText:a,body:o}=dG(n?.body);return{statusCode:i,header:s,bodyText:a,body:o}}},Cf={async fetchConfigYaml(){const e=(await Ie.getRaw("/config.yaml",{responseType:"text",headers:{Accept:"application/yaml, text/yaml, text/plain"}})).data;return typeof e=="string"?e:e==null?"":String(e)},async saveConfigYaml(t){await Ie.put("/config.yaml",t,{headers:{"Content-Type":"application/yaml",Accept:"application/json, text/plain, */*"}})}},z2={async list(){const t=await Ie.get("/api-keys"),e=t["api-keys"]??t.apiKeys;return Array.isArray(e)?e.map(n=>String(n)):[]},replace:t=>Ie.put("/api-keys",t),update:(t,e)=>Ie.patch("/api-keys",{index:t,value:e}),delete:t=>Ie.delete(`/api-keys?index=${t}`)},PL=t=>t.map(e=>({"upstream-api-key":e.upstreamApiKey,"api-keys":e.apiKeys})),qa={async getAmpcode(){const t=await Ie.get("/ampcode");return B4(t)??{}},updateUpstreamUrl:t=>Ie.put("/ampcode/upstream-url",{value:t}),clearUpstreamUrl:()=>Ie.delete("/ampcode/upstream-url"),updateUpstreamApiKey:t=>Ie.put("/ampcode/upstream-api-key",{value:t}),clearUpstreamApiKey:()=>Ie.delete("/ampcode/upstream-api-key"),async getUpstreamApiKeys(){const t=await Ie.get("/ampcode/upstream-api-keys"),e=t?.["upstream-api-keys"]??t?.upstreamApiKeys??t?.items??t;return I4(e)},saveUpstreamApiKeys:t=>Ie.put("/ampcode/upstream-api-keys",{value:PL(t)}),patchUpstreamApiKeys:t=>Ie.patch("/ampcode/upstream-api-keys",{value:PL(t)}),deleteUpstreamApiKeys:t=>Ie.delete("/ampcode/upstream-api-keys",{data:{value:t}}),async getModelMappings(){const t=await Ie.get("/ampcode/model-mappings"),e=t?.["model-mappings"]??t?.modelMappings??t?.items??t;return F4(e)},saveModelMappings:t=>Ie.put("/ampcode/model-mappings",{value:t}),patchModelMappings:t=>Ie.patch("/ampcode/model-mappings",{value:t}),clearModelMappings:()=>Ie.delete("/ampcode/model-mappings"),deleteModelMappings:t=>Ie.delete("/ampcode/model-mappings",{data:{value:t}}),updateForceModelMappings:t=>Ie.put("/ampcode/force-model-mappings",{value:t})},tp=t=>t&&Object.keys(t).length?t:void 0,hG=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),Yh=(t,e)=>{if(Array.isArray(t))return t;if(!hG(t))return[];const n=t[e]??t.items??t.data??t;return Array.isArray(n)?n:[]},Hw=t=>Array.isArray(t)?t.map(e=>{if(!e?.name)return null;const n={name:e.name};return e.alias&&e.alias!==e.name&&(n.alias=e.alias),e.priority!==void 0&&(n.priority=e.priority),e.testModel&&(n["test-model"]=e.testModel),n}).filter(Boolean):void 0,fG=t=>{const e={"api-key":t.apiKey};t.proxyUrl&&(e["proxy-url"]=t.proxyUrl);const n=tp(t.headers);return n&&(e.headers=n),e},Vg=t=>{const e={"api-key":t.apiKey};t.priority!==void 0&&(e.priority=t.priority),t.prefix?.trim()&&(e.prefix=t.prefix.trim()),t.baseUrl&&(e["base-url"]=t.baseUrl),t.websockets!==void 0&&(e.websockets=t.websockets),t.proxyUrl&&(e["proxy-url"]=t.proxyUrl);const n=tp(t.headers);n&&(e.headers=n);const i=Hw(t.models);if(i&&i.length&&(e.models=i),t.excludedModels&&t.excludedModels.length&&(e["excluded-models"]=t.excludedModels),t.cloak){const s={},a=t.cloak.mode?.trim();a&&(s.mode=a),t.cloak.strictMode!==void 0&&(s["strict-mode"]=t.cloak.strictMode),t.cloak.sensitiveWords&&t.cloak.sensitiveWords.length&&(s["sensitive-words"]=t.cloak.sensitiveWords),Object.keys(s).length&&(e.cloak=s)}return e},mG=t=>Array.isArray(t)?t.map(e=>{const n=typeof e?.name=="string"?e.name.trim():"",i=typeof e?.alias=="string"?e.alias.trim():"";return!n||!i?null:{name:n,alias:i}}).filter(Boolean):void 0,EL=t=>{const e={"api-key":t.apiKey};t.priority!==void 0&&(e.priority=t.priority),t.prefix?.trim()&&(e.prefix=t.prefix.trim()),t.baseUrl&&(e["base-url"]=t.baseUrl),t.proxyUrl&&(e["proxy-url"]=t.proxyUrl);const n=tp(t.headers);n&&(e.headers=n);const i=mG(t.models);return i&&i.length&&(e.models=i),t.excludedModels&&t.excludedModels.length&&(e["excluded-models"]=t.excludedModels),e},jL=t=>{const e={"api-key":t.apiKey};t.priority!==void 0&&(e.priority=t.priority),t.prefix?.trim()&&(e.prefix=t.prefix.trim()),t.baseUrl&&(e["base-url"]=t.baseUrl),t.proxyUrl&&(e["proxy-url"]=t.proxyUrl);const n=tp(t.headers);n&&(e.headers=n);const i=Hw(t.models);return i&&i.length&&(e.models=i),t.excludedModels&&t.excludedModels.length&&(e["excluded-models"]=t.excludedModels),e},RL=t=>{const e={name:t.name,"base-url":t.baseUrl,"api-key-entries":Array.isArray(t.apiKeyEntries)?t.apiKeyEntries.map(s=>fG(s)):[]};t.prefix?.trim()&&(e.prefix=t.prefix.trim());const n=tp(t.headers);n&&(e.headers=n);const i=Hw(t.models);return i&&i.length&&(e.models=i),t.priority!==void 0&&(e.priority=t.priority),t.testModel&&(e["test-model"]=t.testModel),e},_i={async getGeminiKeys(){const t=await Ie.get("/gemini-api-key");return Yh(t,"gemini-api-key").map(n=>R4(n)).filter(Boolean)},saveGeminiKeys:t=>Ie.put("/gemini-api-key",t.map(e=>jL(e))),updateGeminiKey:(t,e)=>Ie.patch("/gemini-api-key",{index:t,value:jL(e)}),deleteGeminiKey:t=>Ie.delete(`/gemini-api-key?api-key=${encodeURIComponent(t)}`),async getCodexConfigs(){const t=await Ie.get("/codex-api-key");return Yh(t,"codex-api-key").map(n=>ud(n)).filter(Boolean)},saveCodexConfigs:t=>Ie.put("/codex-api-key",t.map(e=>Vg(e))),updateCodexConfig:(t,e)=>Ie.patch("/codex-api-key",{index:t,value:Vg(e)}),deleteCodexConfig:t=>Ie.delete(`/codex-api-key?api-key=${encodeURIComponent(t)}`),async getClaudeConfigs(){const t=await Ie.get("/claude-api-key");return Yh(t,"claude-api-key").map(n=>ud(n)).filter(Boolean)},saveClaudeConfigs:t=>Ie.put("/claude-api-key",t.map(e=>Vg(e))),updateClaudeConfig:(t,e)=>Ie.patch("/claude-api-key",{index:t,value:Vg(e)}),deleteClaudeConfig:t=>Ie.delete(`/claude-api-key?api-key=${encodeURIComponent(t)}`),async getVertexConfigs(){const t=await Ie.get("/vertex-api-key");return Yh(t,"vertex-api-key").map(n=>ud(n)).filter(Boolean)},saveVertexConfigs:t=>Ie.put("/vertex-api-key",t.map(e=>EL(e))),updateVertexConfig:(t,e)=>Ie.patch("/vertex-api-key",{index:t,value:EL(e)}),deleteVertexConfig:t=>Ie.delete(`/vertex-api-key?api-key=${encodeURIComponent(t)}`),async getOpenAIProviders(){const t=await Ie.get("/openai-compatibility");return Yh(t,"openai-compatibility").map(n=>D4(n)).filter(Boolean)},saveOpenAIProviders:t=>Ie.put("/openai-compatibility",t.map(e=>RL(e))),updateOpenAIProvider:(t,e)=>Ie.patch("/openai-compatibility",{index:t,value:RL(e)}),deleteOpenAIProvider:t=>Ie.delete(`/openai-compatibility?name=${encodeURIComponent(t)}`)},DL="AUTH_FILE_INVALID_JSON_OBJECT",pG=t=>{if(!(!t||typeof t!="object")&&"status"in t)return t.status},q4=t=>{const e=new Set,n=[];return t.forEach(i=>{const s=String(i??"").trim();!s||e.has(s)||(e.add(s),n.push(s))}),n},z4=t=>Array.isArray(t)?q4(t.map(e=>String(e??""))):[],K4=t=>Array.isArray(t)?t.reduce((e,n)=>{if(!n||typeof n!="object")return e;const i=n,s=String(i.name??"").trim(),a=typeof i.error=="string"?i.error.trim():typeof i.message=="string"?i.message.trim():"";return!s&&!a||e.push({name:s,error:a||"Unknown error"}),e},[]):[],V4=(t,e)=>{const n=new Set(e.map(i=>i.name.trim()).filter(Boolean));return n.size===0?[...t]:t.filter(i=>!n.has(i))},gG=(t,e)=>{const n=K4(t?.failed),i=z4(t?.files),s=typeof t?.uploaded=="number"?t.uploaded:i.length>0?i.length:e.length===1&&n.length===0?1:0;let a=i;if(a.length===0&&s>0)if(n.length===0&&s===e.length)a=[...e];else{const o=V4(e,n);o.length===s&&(a=o)}return{status:typeof t?.status=="string"?t.status:n.length>0?"partial":"ok",uploaded:s,files:a,failed:n}},_G=(t,e)=>{const n=K4(t?.failed),i=z4(t?.files),s=typeof t?.deleted=="number"?t.deleted:i.length>0?i.length:e.length===1&&n.length===0?1:0;let a=i;if(a.length===0&&s>0)if(n.length===0&&s===e.length)a=[...e];else{const o=V4(e,n);o.length===s&&(a=o)}return{status:typeof t?.status=="string"?t.status:n.length>0?"partial":"ok",deleted:s,files:a,failed:n}},Vf=(t,e)=>{const n=t[e];return typeof n=="string"?n.trim():""},K2=t=>{const e=[t.modtime,t.modified,t.updated_at,t.last_refresh];for(const n of e){if(typeof n=="number"&&Number.isFinite(n))return n<1e12?n*1e3:n;if(typeof n=="string"){const i=n.trim();if(!i)continue;const s=Number(i);if(Number.isFinite(s))return s<1e12?s*1e3:s;const a=Date.parse(i);if(!Number.isNaN(a))return a}}return 0},yG=t=>{const e=t.runtime_only??t.runtimeOnly;return typeof e=="boolean"?e:typeof e=="string"?e.trim().toLowerCase()==="true":!1},V2=t=>t==null?!1:typeof t=="string"?t.trim().length>0:Array.isArray(t)?t.length>0:!0,FL=t=>Object.values(t).reduce((e,n)=>e+(V2(n)?1:0),0),IL=t=>{let e=0;return Vf(t,"source").toLowerCase()==="file"&&(e+=32),Vf(t,"path")&&(e+=16),yG(t)||(e+=8),t.disabled!==!0&&(e+=4),K2(t)>0&&(e+=2),e},bG=(t,e)=>{const n=IL(e)-IL(t);if(n!==0)return n;const i=K2(e)-K2(t);if(i!==0)return i;const s=FL(e)-FL(t);return s!==0?s:0},vG=t=>{const[e,...n]=[...t].sort(bG),i={...e};return n.forEach(s=>{Object.entries(s).forEach(([a,o])=>{!V2(i[a])&&V2(o)&&(i[a]=o)})}),i},xG=t=>{const e=Array.isArray(t?.files)?t.files:[],n=new Map;e.forEach(s=>{const o=Vf(s,"name")||JSON.stringify(s),r=n.get(o);if(r){r.push(s);return}n.set(o,[s])});const i=Array.from(n.values()).map(vG);return i.sort((s,a)=>Vf(s,"name").localeCompare(Vf(a,"name"),void 0,{sensitivity:"accent"})),{...t,files:i,total:i.length}},SG=t=>{const e=t.trim();let n;try{n=JSON.parse(e)}catch{throw new Error(DL)}if(!n||typeof n!="object"||Array.isArray(n))throw new Error(DL);return{...n}},BL=async(t,e)=>{const n=new File([e],t,{type:"application/json"});await At.upload(n)},UL=t=>{if(!t||typeof t!="object")return{};const e=t,n=e["oauth-excluded-models"]??e.items??t;if(!n||typeof n!="object")return{};const i={};return Object.entries(n).forEach(([s,a])=>{const o=String(s??"").trim().toLowerCase();if(!o)return;const r=Array.isArray(a)?a:typeof a=="string"?a.split(/[\n,]+/):[],c=new Set,d=[];r.forEach(f=>{const p=String(f??"").trim();if(!p)return;const g=p.toLowerCase();c.has(g)||(c.add(g),d.push(p))}),i[o]=d}),i},qL=t=>{if(!t||typeof t!="object")return{};const e=t,n=e["oauth-model-alias"]??e.items??t;if(!n||typeof n!="object")return{};const i={};return Object.entries(n).forEach(([s,a])=>{const o=String(s??"").trim().toLowerCase();if(!o||!Array.isArray(a))return;const r=new Set,c=a.map(d=>{if(!d||typeof d!="object")return null;const f=d,p=String(f.name??f.id??f.model??"").trim(),g=String(f.alias??"").trim();if(!p||!g)return null;const y=f.fork===!0;return y?{name:p,alias:g,fork:y}:{name:p,alias:g}}).filter(Boolean).filter(d=>{const f=d,p=`${f.name.toLowerCase()}::${f.alias.toLowerCase()}::${f.fork?"1":"0"}`;return r.has(p)?!1:(r.add(p),!0)});c.length&&(i[o]=c)}),i},Hg="/oauth-model-alias",At={list:async()=>xG(await Ie.get("/auth-files")),setStatus:(t,e)=>Ie.patch("/auth-files/status",{name:t,disabled:e}),uploadFiles:async t=>{const e=t.map(s=>s.name);if(e.length===0)return{status:"ok",uploaded:0,files:[],failed:[]};const n=new FormData;t.forEach(s=>{n.append("file",s,s.name)});const i=await Ie.postForm("/auth-files",n);return gG(i,e)},upload:t=>At.uploadFiles([t]),deleteFiles:async t=>{const e=q4(t);if(e.length===0)return{status:"ok",deleted:0,files:[],failed:[]};const n=await Ie.delete("/auth-files",{data:{names:e}});return _G(n,e)},deleteFile:t=>At.deleteFiles([t]),deleteAll:()=>Ie.delete("/auth-files",{params:{all:!0}}),downloadText:async t=>(await Ie.getRaw(`/auth-files/download?name=${encodeURIComponent(t)}`,{responseType:"blob"})).data.text(),async downloadJsonObject(t){const e=await At.downloadText(t);return SG(e)},saveText:(t,e)=>BL(t,e),saveJsonObject:(t,e)=>BL(t,JSON.stringify(e)),async getOauthExcludedModels(){const t=await Ie.get("/oauth-excluded-models");return UL(t)},saveOauthExcludedModels:(t,e)=>Ie.patch("/oauth-excluded-models",{provider:t,models:e}),deleteOauthExcludedEntry:t=>Ie.delete(`/oauth-excluded-models?provider=${encodeURIComponent(t)}`),replaceOauthExcludedModels:t=>Ie.put("/oauth-excluded-models",UL(t)),async getOauthModelAlias(){const t=await Ie.get(Hg);return qL(t)},saveOauthModelAlias:async(t,e)=>{const n=String(t??"").trim().toLowerCase(),i=qL({[n]:e})[n]??[];await Ie.patch(Hg,{channel:n,aliases:i})},deleteOauthModelAlias:async t=>{const e=String(t??"").trim().toLowerCase();try{await Ie.patch(Hg,{channel:e,aliases:[]})}catch(n){if(pG(n)!==405)throw n;await Ie.delete(`${Hg}?channel=${encodeURIComponent(e)}`)}},async getModelsForAuthFile(t){const e=await Ie.get(`/auth-files/models?name=${encodeURIComponent(t)}`),n=e.models??e.models;return Array.isArray(n)?n:[]},async getModelDefinitions(t){const e=String(t??"").trim().toLowerCase();if(!e)return[];const n=await Ie.get(`/model-definitions/${encodeURIComponent(e)}`),i=n.models??n.models;return Array.isArray(i)?i:[]}},wG=["codex","anthropic","antigravity","gemini-cli"],kG={"gemini-cli":"gemini"},Wg={startAuth:(t,e)=>{const n={};return wG.includes(t)&&(n.is_webui=!0),t==="gemini-cli"&&e?.projectId&&(n.project_id=e.projectId),Ie.get(`/${t}-auth-url`,{params:Object.keys(n).length?n:void 0})},getAuthStatus:t=>Ie.get("/get-auth-status",{params:{state:t}}),submitCallback:(t,e)=>{const n=kG[t]??t;return Ie.post("/oauth-callback",{provider:n,redirect_url:e})},iflowCookieAuth:t=>Ie.post("/iflow-auth-url",{cookie:t})};function Pa(t){const e=String(t||"").trim();if(!e)return"";const n=10,i=e.length<4?1:2,s=e.slice(0,i),a=e.slice(-i),o=Math.max(n-i*2,1),r="*".repeat(o);return`${s}${r}${a}`}function Ww(t){if(t===0)return"0 B";const e=["B","KB","MB","GB"],n=1024,i=Math.floor(Math.log(t)/Math.log(n));return`${(t/Math.pow(n,i)).toFixed(2)} ${e[i]}`}function CG(t,e){if(t==null||t==="")return"";const n=typeof t=="number"?t:Number(t),i=(()=>{if(!Number.isFinite(n)||Number.isNaN(n))return new Date(String(t));const s=Math.abs(n);return s<1e11?new Date(n*1e3):s<1e14?new Date(n):s<1e17?new Date(Math.round(n/1e3)):new Date(Math.round(n/1e6))})();return Number.isNaN(i.getTime())?"":e?i.toLocaleString(e):i.toLocaleString()}const Xx=1e6,H4="cli-proxy-model-prices-v2",AG=/^(GET|POST|PUT|PATCH|DELETE|OPTIONS|HEAD)\s+(\S+)/i,NG={"7h":420*60*1e3,"24h":1440*60*1e3,"7d":10080*60*1e3},Yt=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),$c=t=>{const e=Yt(t)?t:null,n=e?e.apis:null;return Yt(n)?n:null},Qx=()=>({totalRequests:0,successCount:0,failureCount:0,totalTokens:0}),Yx=t=>({total_requests:t.totalRequests,success_count:t.successCount,failure_count:t.failureCount,total_tokens:t.totalTokens});function TG(t,e,n=Date.now()){if(e==="all")return t;const i=Yt(t)?t:null,s=$c(t);if(!i||!s)return t;const a=NG[e];if(!Number.isFinite(a)||a<=0)return t;const o=n-a,r={},c=Qx();return Object.entries(s).forEach(([d,f])=>{if(!Yt(f))return;const p=Yt(f.models)?f.models:null;if(!p)return;const g={},y=Qx();let _=!1;Object.entries(p).forEach(([v,x])=>{if(!Yt(x))return;const k=Array.isArray(x.details)?x.details:[],C=Qx(),N=[];k.forEach(L=>{const M=Yt(L)?L:null;if(!M||typeof M.timestamp!="string")return;const O=Date.parse(M.timestamp);Number.isNaN(O)||O<o||O>n||(N.push(L),C.totalRequests+=1,M.failed===!0?C.failureCount+=1:C.successCount+=1,C.totalTokens+=Kd(M))}),N.length&&(g[v]={...x,...Yx(C),details:N},_=!0,y.totalRequests+=C.totalRequests,y.successCount+=C.successCount,y.failureCount+=C.failureCount,y.totalTokens+=C.totalTokens)}),_&&(r[d]={...f,...Yx(y),models:g},c.totalRequests+=y.totalRequests,c.successCount+=y.successCount,c.failureCount+=y.failureCount,c.totalTokens+=y.totalTokens)}),{...i,...Yx(c),apis:r}}const rs=t=>{if(typeof t=="number"&&Number.isFinite(t))return t.toString();if(typeof t=="string"){const e=t.trim();return e||null}return null},W4="k:",G4="m:",$4="t:",X4=/(sk-[A-Za-z0-9-_]{6,}|sk-ant-[A-Za-z0-9-_]{6,}|AIza[0-9A-Za-z-_]{8,}|AI[a-zA-Z0-9_-]{6,}|hf_[A-Za-z0-9]{6,}|pk_[A-Za-z0-9]{6,}|rk_[A-Za-z0-9]{6,})/,MG=/^[^\s]{1,24}(\*{2,}|\.{3}|…)[^\s]{1,24}$/,zL=new Map,Q4=t=>{const e=zL.get(t);if(e)return e;const n=0xcbf29ce484222325n,i=0x100000001b3n;let s=n;for(let o=0;o<t.length;o++)s^=BigInt(t.charCodeAt(o)),s=s*i&0xffffffffffffffffn;const a=s.toString(16).padStart(16,"0");return zL.set(t,a),a},Gg=t=>{if(!t||/\s/.test(t))return!1;const e=t.toLowerCase();return e.endsWith(".json")||e.startsWith("http://")||e.startsWith("https://")||/[\\/]/.test(t)?!1:X4.test(t)||t.length>=32&&t.length<=512?!0:t.length>=16&&t.length<32&&/^[A-Za-z0-9._=-]+$/.test(t)?/[A-Za-z]/.test(t)&&/\d/.test(t):!1},LG=t=>{if(!t)return null;if(Gg(t))return t;const e=t.match(X4);if(e?.[0])return e[0];const i=t.match(/(?:[?&])(api[-_]?key|key|token|access_token|authorization)=([^&#\s]+)/i)?.[2];if(i&&Gg(i))return i;const a=t.match(/(api[-_]?key|key|token|access[-_]?token|authorization)\s*[:=]\s*([A-Za-z0-9._=-]+)/i)?.[2];if(a&&Gg(a))return a;const r=t.match(/\bBearer\s+([A-Za-z0-9._=-]{6,})/i)?.[1];return r&&Gg(r)?r:null};function mm(t,e=Pa){const i=(typeof t=="string"?t:t==null?"":String(t)).trim();if(!i)return"";const s=LG(i);return s?`${W4}${Q4(s)}`:MG.test(i)?`${G4}${e(i)}`:`${$4}${i}`}function _s(t){const e=[],n=t.prefix?.trim();n&&e.push(`${$4}${n}`);const i=t.apiKey?.trim();return i&&(e.push(`${W4}${Q4(i)}`),e.push(`${G4}${Pa(i)}`)),Array.from(new Set(e))}function OG(t,e=Pa){if(t==null)return"";const n=typeof t=="string"?t:String(t);if(!n)return"";let i=n;const s=/([?&])(api[-_]?key|key|token|access_token|authorization)=([^&#\s]+)/gi;i=i.replace(s,(r,c,d,f)=>`${c}${d}=${e(f)}`);const a=/(api[-_]?key|key|token|access[-_]?token|authorization)\s*([:=])\s*([A-Za-z0-9._-]+)/gi;i=i.replace(a,(r,c,d,f)=>`${c}${d}${e(f)}`);const o=/(sk-[A-Za-z0-9]{6,}|AI[a-zA-Z0-9_-]{6,}|AIza[0-9A-Za-z-_]{8,}|hf_[A-Za-z0-9]{6,}|pk_[A-Za-z0-9]{6,}|rk_[A-Za-z0-9]{6,})/g;if(i=i.replace(o,r=>e(r)),i===n){const r=n.trim();if(r&&!/\s/.test(r)&&(/^sk-/i.test(r)||/^AI/i.test(r)||/^AIza/i.test(r)||/^hf_/i.test(r)||/^pk_/i.test(r)||/^rk_/i.test(r)||!/[\\/]/.test(r)&&(/\d/.test(r)||r.length>=10)||r.length>=24))return e(r)}return i}function KL(t){const e=Number(t);if(!Number.isFinite(e))return"0.00";const n=Math.abs(e);return n>=1e3?Math.round(e).toLocaleString():n>=100?e.toFixed(0):n>=10?e.toFixed(1):e.toFixed(2)}function _r(t){const e=Number(t);if(!Number.isFinite(e))return"0";const n=Math.abs(e);return n>=1e6?`${(e/1e6).toFixed(1)}M`:n>=1e3?`${(e/1e3).toFixed(1)}K`:n>=1?e.toFixed(0):e.toFixed(2)}function By(t){const e=Number(t);if(!Number.isFinite(e))return"$0.00";const n=e.toFixed(2);return`$${Number(n).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})}`}const VL=new WeakMap,HL=new WeakMap;function Ea(t){const e=Yt(t)?t:null;if(e){const o=VL.get(e);if(o)return o}const n=$c(t);if(!n)return[];const i=[],s=new Map,a=o=>{const c=(typeof o=="string"?o:o==null?"":String(o)).trim();if(!c)return"";const d=s.get(c);if(d!==void 0)return d;const f=mm(c);return s.set(c,f),f};return Object.values(n).forEach(o=>{if(!Yt(o))return;const r=o.models,c=Yt(r)?r:null;c&&Object.entries(c).forEach(([d,f])=>{if(!Yt(f))return;const p=f.details;(Array.isArray(p)?p:[]).forEach(y=>{if(!Yt(y)||typeof y.timestamp!="string")return;const _=y.timestamp,v=Date.parse(_),x=Yt(y.tokens)?y.tokens:{};i.push({timestamp:_,source:a(y.source),auth_index:y.auth_index,tokens:x,failed:y.failed===!0,__modelName:d,__timestampMs:Number.isNaN(v)?0:v})})})}),e&&VL.set(e,i),i}function PG(t){const e=Yt(t)?t:null;if(e){const o=HL.get(e);if(o)return o}const n=$c(t);if(!n)return[];const i=[],s=new Map,a=o=>{const c=(typeof o=="string"?o:o==null?"":String(o)).trim();if(!c)return"";const d=s.get(c);if(d!==void 0)return d;const f=mm(c);return s.set(c,f),f};return Object.entries(n).forEach(([o,r])=>{if(!Yt(r))return;const c=r.models,d=Yt(c)?c:null;if(!d)return;const f=o.match(AG),p=f?.[1]?.toUpperCase(),g=f?.[2];Object.entries(d).forEach(([y,_])=>{if(!Yt(_))return;const v=_.details;(Array.isArray(v)?v:[]).forEach(k=>{if(!Yt(k)||typeof k.timestamp!="string")return;const C=k.timestamp,N=Date.parse(C),L=Yt(k.tokens)?k.tokens:{};i.push({timestamp:C,source:a(k.source),auth_index:k.auth_index,tokens:L,failed:k.failed===!0,__modelName:y,__endpoint:o,__endpointMethod:p,__endpointPath:g,__timestampMs:Number.isNaN(N)?0:N})})})}),e&&HL.set(e,i),i}function Kd(t){const n=(Yt(t)?t:null)?.tokens,i=Yt(n)?n:{};if(typeof i.total_tokens=="number")return i.total_tokens;const s=typeof i.input_tokens=="number"?i.input_tokens:0,a=typeof i.output_tokens=="number"?i.output_tokens:0,o=typeof i.reasoning_tokens=="number"?i.reasoning_tokens:0,r=Math.max(typeof i.cached_tokens=="number"?Math.max(i.cached_tokens,0):0,typeof i.cache_tokens=="number"?Math.max(i.cache_tokens,0):0);return s+a+o+r}function EG(t){const e=$c(t);if(!e)return[];const n=new Set;return Object.values(e).forEach(i=>{if(!Yt(i))return;const s=i.models,a=Yt(s)?s:null;a&&Object.keys(a).forEach(o=>{o&&n.add(o)})}),Array.from(n).sort((i,s)=>i.localeCompare(s))}function np(t,e){const n=t.__modelName||"",i=e[n];if(!i)return 0;const s=t.tokens,a=Number(s.input_tokens),o=Number(s.output_tokens),r=Number(s.cached_tokens),c=Number(s.cache_tokens),d=Number.isFinite(a)?Math.max(a,0):0,f=Number.isFinite(o)?Math.max(o,0):0,p=Math.max(Number.isFinite(r)?Math.max(r,0):0,Number.isFinite(c)?Math.max(c,0):0),y=Math.max(d-p,0)/Xx*(Number(i.prompt)||0),_=p/Xx*(Number(i.cache)||0),v=f/Xx*(Number(i.completion)||0),x=y+_+v;return Number.isFinite(x)&&x>0?x:0}function jG(){try{if(typeof localStorage>"u")return{};const t=localStorage.getItem(H4);if(!t)return{};const e=JSON.parse(t);if(!Yt(e))return{};const n={};return Object.entries(e).forEach(([i,s])=>{if(!i)return;const a=Yt(s)?s:null,o=Number(a?.prompt),r=Number(a?.completion),c=Number(a?.cache);if(!Number.isFinite(o)&&!Number.isFinite(r)&&!Number.isFinite(c))return;const d=Number.isFinite(o)&&o>=0?o:0,f=Number.isFinite(r)&&r>=0?r:0,p=Number.isFinite(c)&&c>=0?c:Number.isFinite(o)&&o>=0?o:d;n[i]={prompt:d,completion:f,cache:p}}),n}catch{return{}}}function RG(t){try{if(typeof localStorage>"u")return;localStorage.setItem(H4,JSON.stringify(t))}catch{console.warn("保存模型价格失败")}}function DG(t,e){const n=$c(t);if(!n)return[];const i=[];return Object.entries(n).forEach(([s,a])=>{if(!Yt(a))return;const o={};let r=0,c=0,d=0;const f=Yt(a.models)?a.models:{};Object.entries(f).forEach(([_,v])=>{if(!Yt(v))return;const x=Array.isArray(v.details)?v.details:[],k=typeof v.success_count=="number"||typeof v.failure_count=="number";let C=0,N=0;k&&(C+=Number(v.success_count)||0,N+=Number(v.failure_count)||0);const L=e[_];x.length>0&&(!k||L)&&x.forEach(M=>{const O=Yt(M)?M:null;k||(O?.failed===!0?N+=1:C+=1),L&&O&&(d+=np({...O,__modelName:_},e))}),o[_]={requests:Number(v.total_requests)||0,successCount:C,failureCount:N,tokens:Number(v.total_tokens)||0},r+=C,c+=N});const p=typeof a.success_count=="number"||typeof a.failure_count=="number",g=p?Number(a.success_count)||0:r,y=p?Number(a.failure_count)||0:c;i.push({endpoint:OG(s)||s,totalRequests:Number(a.total_requests)||0,successCount:g,failureCount:y,totalTokens:Number(a.total_tokens)||0,totalCost:d,models:o})}),i}function FG(t,e){const n=$c(t);if(!n)return[];const i=new Map;return Object.values(n).forEach(s=>{if(!Yt(s))return;const a=s.models,o=Yt(a)?a:null;o&&Object.entries(o).forEach(([r,c])=>{if(!Yt(c))return;const d=i.get(r)||{requests:0,successCount:0,failureCount:0,tokens:0,cost:0};d.requests+=Number(c.total_requests)||0,d.tokens+=Number(c.total_tokens)||0;const f=Array.isArray(c.details)?c.details:[],p=e[r],g=typeof c.success_count=="number"||typeof c.failure_count=="number";g&&(d.successCount+=Number(c.success_count)||0,d.failureCount+=Number(c.failure_count)||0),f.length>0&&(!g||p)&&f.forEach(y=>{const _=Yt(y)?y:null;g||(_?.failed===!0?d.failureCount+=1:d.successCount+=1),p&&_&&(d.cost+=np({..._,__modelName:r},e))}),i.set(r,d)})}),Array.from(i.entries()).map(([s,a])=>({model:s,...a})).sort((s,a)=>a.requests-s.requests)}function Gw(t){if(!(t instanceof Date))return"";const e=(t.getMonth()+1).toString().padStart(2,"0"),n=t.getDate().toString().padStart(2,"0"),i=t.getHours().toString().padStart(2,"0");return`${e}-${n} ${i}:00`}function $w(t){if(!(t instanceof Date))return"";const e=t.getFullYear(),n=(t.getMonth()+1).toString().padStart(2,"0"),i=t.getDate().toString().padStart(2,"0");return`${e}-${n}-${i}`}function IG(t,e="requests",n=24){const s=Number.isFinite(n)&&n>0?Math.min(Math.max(Math.floor(n),1),744):24,a=new Date,o=new Date(a);o.setMinutes(0,0,0);const r=new Date(o);r.setHours(r.getHours()-(s-1));const c=r.getTime(),d=[];for(let y=0;y<s;y++){const _=c+y*36e5;d.push(Gw(new Date(_)))}const f=Ea(t),p=new Map;let g=!1;return f.length?(f.forEach(y=>{const _=typeof y.__timestampMs=="number"?y.__timestampMs:Date.parse(y.timestamp);if(!Number.isFinite(_)||_<=0)return;const v=new Date(_);v.setMinutes(0,0,0);const x=v.getTime(),k=c+(d.length-1)*36e5;if(x<c||x>k)return;const C=Math.floor((x-c)/36e5);if(C<0||C>=d.length)return;const N=y.__modelName||"Unknown";p.has(N)||p.set(N,new Array(d.length).fill(0));const L=p.get(N);e==="tokens"?L[C]+=Kd(y):L[C]+=1,g=!0}),{labels:d,dataByModel:p,hasData:g}):{labels:d,dataByModel:p,hasData:g}}function BG(t,e="requests"){const n=Ea(t),i=new Map,s=new Set;let a=!1;if(!n.length)return{labels:[],dataByModel:new Map,hasData:a};n.forEach(c=>{const d=typeof c.__timestampMs=="number"?c.__timestampMs:Date.parse(c.timestamp);if(!Number.isFinite(d)||d<=0)return;const f=$w(new Date(d));if(!f)return;const p=c.__modelName||"Unknown";i.has(p)||i.set(p,new Map);const g=i.get(p),y=e==="tokens"?Kd(c):1;g.set(f,(g.get(f)||0)+y),s.add(f),a=!0});const o=Array.from(s).sort(),r=new Map;return i.forEach((c,d)=>{const f=o.map(p=>c.get(p)||0);r.set(d,f)}),{labels:o,dataByModel:r,hasData:a}}const WL=[{borderColor:"#8b8680",backgroundColor:"rgba(139, 134, 128, 0.15)"},{borderColor:"#22c55e",backgroundColor:"rgba(34, 197, 94, 0.15)"},{borderColor:"#f59e0b",backgroundColor:"rgba(245, 158, 11, 0.15)"},{borderColor:"#c65746",backgroundColor:"rgba(198, 87, 70, 0.15)"},{borderColor:"#8b5cf6",backgroundColor:"rgba(139, 92, 246, 0.15)"},{borderColor:"#06b6d4",backgroundColor:"rgba(6, 182, 212, 0.15)"},{borderColor:"#ec4899",backgroundColor:"rgba(236, 72, 153, 0.15)"},{borderColor:"#84cc16",backgroundColor:"rgba(132, 204, 22, 0.15)"},{borderColor:"#f97316",backgroundColor:"rgba(249, 115, 22, 0.15)"}],UG=(t,e,n)=>Math.min(Math.max(t,e),n),qG=t=>{const e=t.trim().replace("#","");if(e.length!==6)return null;const n=Number.parseInt(e.slice(0,2),16),i=Number.parseInt(e.slice(2,4),16),s=Number.parseInt(e.slice(4,6),16);return[n,i,s].every(a=>Number.isFinite(a))?{r:n,g:i,b:s}:null},Jx=(t,e)=>{const n=qG(t);if(!n)return t;const i=UG(e,0,1);return`rgba(${n.r}, ${n.g}, ${n.b}, ${i})`},zG=(t,e,n)=>{const i=t.chart,s=i.ctx,a=i.chartArea;if(!a)return n;const o=s.createLinearGradient(0,a.top,0,a.bottom);return o.addColorStop(0,Jx(e,.28)),o.addColorStop(.6,Jx(e,.12)),o.addColorStop(1,Jx(e,.02)),o};function GL(t,e="day",n="requests",i=[],s={}){const a=e==="hour"?IG(t,n,s.hourWindowHours):BG(t,n),{labels:o,dataByModel:r}=a,c=()=>{const p=new Array(o.length).fill(0);return r.forEach(g=>{g.forEach((y,_)=>{p[_]=(p[_]||0)+y})}),p},d=i.length>0?i:["all"],f=d.map((p,g)=>{const y=p==="all",_=y?c():r.get(p)||new Array(o.length).fill(0),v=g%WL.length,x=WL[v],k=d.length===1||y&&d.length>1;return{label:y?"All Models":p,data:_,borderColor:x.borderColor,backgroundColor:k?C=>zG(C,x.borderColor,x.backgroundColor):x.backgroundColor,pointBackgroundColor:x.borderColor,pointBorderColor:x.borderColor,fill:k,tension:.35}});return{labels:o,datasets:f}}function Na(t,e,n){const o=Date.now(),r=o-12e6,c=Array.from({length:20},()=>({success:0,failure:0}));let d=0,f=0;t.forEach(v=>{const x=typeof v.__timestampMs=="number"?v.__timestampMs:Date.parse(v.timestamp);if(!Number.isFinite(x)||x<=0||x<r||x>o)return;const k=o-x,C=19-Math.floor(k/6e5);C>=0&&C<20&&(v.failed?(c[C].failure+=1,f+=1):(c[C].success+=1,d+=1))});const p=[],g=[];c.forEach((v,x)=>{const k=v.success+v.failure;k===0?p.push("idle"):v.failure===0?p.push("success"):v.success===0?p.push("failure"):p.push("mixed");const C=r+x*6e5;g.push({success:v.success,failure:v.failure,rate:k>0?v.success/k:-1,startTime:C,endTime:C+6e5})});const y=d+f,_=y>0?d/y*100:100;return{blocks:p,blockDetails:g,successRate:_,totalSuccess:d,totalFailure:f}}function KG(t){const o=Date.now(),r=o-6048e5,c=Array.from({length:672},()=>({success:0,failure:0}));let d=0,f=0;t.forEach(v=>{const x=typeof v.__timestampMs=="number"?v.__timestampMs:Date.parse(v.timestamp);if(!Number.isFinite(x)||x<=0||x<r||x>o)return;const k=o-x,C=671-Math.floor(k/9e5);C>=0&&C<672&&(v.failed?(c[C].failure+=1,f+=1):(c[C].success+=1,d+=1))});const p=[],g=[];c.forEach((v,x)=>{const k=v.success+v.failure;k===0?p.push("idle"):v.failure===0?p.push("success"):v.success===0?p.push("failure"):p.push("mixed");const C=r+x*9e5;g.push({success:v.success,failure:v.failure,rate:k>0?v.success/k:-1,startTime:C,endTime:C+9e5})});const y=d+f,_=y>0?d/y*100:100;return{blocks:p,blockDetails:g,successRate:_,totalSuccess:d,totalFailure:f,rows:7,cols:96}}function VG(t,e=Pa){const n=$c(t);if(!n)return{bySource:{},byAuthIndex:{}};const i={},s={},a=(o,r)=>(o[r]||(o[r]={success:0,failure:0}),o[r]);return Object.values(n).forEach(o=>{if(!Yt(o))return;const r=o.models,c=Yt(r)?r:null;c&&Object.values(c).forEach(d=>{if(!Yt(d))return;(Array.isArray(d.details)?d.details:[]).forEach(p=>{const g=Yt(p)?p:null,y=mm(g?.source,e),_=rs(g?.auth_index),v=g?.failed===!0;if(y){const x=a(i,y);v?x.failure+=1:x.success+=1}if(_){const x=a(s,_);v?x.failure+=1:x.success+=1}})})}),{bySource:i,byAuthIndex:s}}function HG(t){const e={},n={},i=(s,a)=>(s[a]||(s[a]={success:0,failure:0}),s[a]);return t.forEach(s=>{const a=s.source,o=rs(s.auth_index),r=s.failed===!0;if(a){const c=i(e,a);r?c.failure+=1:c.success+=1}if(o){const c=i(n,o);r?c.failure+=1:c.success+=1}}),{bySource:e,byAuthIndex:n}}function WG(t,e=24){const i=Number.isFinite(e)&&e>0?Math.min(Math.max(Math.floor(e),1),744):24,s=new Date,a=new Date(s);a.setMinutes(0,0,0);const o=new Date(a);o.setHours(o.getHours()-(i-1));const r=o.getTime(),c=[];for(let g=0;g<i;g++)c.push(Gw(new Date(r+g*36e5)));const d={input:new Array(c.length).fill(0),output:new Array(c.length).fill(0),cached:new Array(c.length).fill(0),reasoning:new Array(c.length).fill(0)},f=Ea(t);let p=!1;return f.forEach(g=>{const y=typeof g.__timestampMs=="number"?g.__timestampMs:Date.parse(g.timestamp);if(!Number.isFinite(y)||y<=0)return;const _=new Date(y);_.setMinutes(0,0,0);const v=_.getTime(),x=r+(c.length-1)*36e5;if(v<r||v>x)return;const k=Math.floor((v-r)/36e5);if(k<0||k>=c.length)return;const C=g.tokens,N=typeof C.input_tokens=="number"?Math.max(C.input_tokens,0):0,L=typeof C.output_tokens=="number"?Math.max(C.output_tokens,0):0,M=Math.max(typeof C.cached_tokens=="number"?Math.max(C.cached_tokens,0):0,typeof C.cache_tokens=="number"?Math.max(C.cache_tokens,0):0),O=typeof C.reasoning_tokens=="number"?Math.max(C.reasoning_tokens,0):0;d.input[k]+=N,d.output[k]+=L,d.cached[k]+=M,d.reasoning[k]+=O,p=!0}),{labels:c,dataByCategory:d,hasData:p}}function GG(t){const e=Ea(t),n={};let i=!1;e.forEach(o=>{const r=typeof o.__timestampMs=="number"?o.__timestampMs:Date.parse(o.timestamp);if(!Number.isFinite(r)||r<=0)return;const c=$w(new Date(r));if(!c)return;n[c]||(n[c]={input:0,output:0,cached:0,reasoning:0});const d=o.tokens,f=typeof d.input_tokens=="number"?Math.max(d.input_tokens,0):0,p=typeof d.output_tokens=="number"?Math.max(d.output_tokens,0):0,g=Math.max(typeof d.cached_tokens=="number"?Math.max(d.cached_tokens,0):0,typeof d.cache_tokens=="number"?Math.max(d.cache_tokens,0):0),y=typeof d.reasoning_tokens=="number"?Math.max(d.reasoning_tokens,0):0;n[c].input+=f,n[c].output+=p,n[c].cached+=g,n[c].reasoning+=y,i=!0});const s=Object.keys(n).sort(),a={input:s.map(o=>n[o].input),output:s.map(o=>n[o].output),cached:s.map(o=>n[o].cached),reasoning:s.map(o=>n[o].reasoning)};return{labels:s,dataByCategory:a,hasData:i}}function $G(t,e,n=24){const s=Number.isFinite(n)&&n>0?Math.min(Math.max(Math.floor(n),1),744):24,a=new Date,o=new Date(a);o.setMinutes(0,0,0);const r=new Date(o);r.setHours(r.getHours()-(s-1));const c=r.getTime(),d=[];for(let y=0;y<s;y++)d.push(Gw(new Date(c+y*36e5)));const f=new Array(d.length).fill(0),p=Ea(t);let g=!1;return p.forEach(y=>{const _=typeof y.__timestampMs=="number"?y.__timestampMs:Date.parse(y.timestamp);if(!Number.isFinite(_)||_<=0)return;const v=new Date(_);v.setMinutes(0,0,0);const x=v.getTime(),k=c+(d.length-1)*36e5;if(x<c||x>k)return;const C=Math.floor((x-c)/36e5);if(C<0||C>=d.length)return;const N=np(y,e);N>0&&(f[C]+=N,g=!0)}),{labels:d,data:f,hasData:g}}function XG(t,e){const n=Ea(t),i={};let s=!1;n.forEach(r=>{const c=typeof r.__timestampMs=="number"?r.__timestampMs:Date.parse(r.timestamp);if(!Number.isFinite(c)||c<=0)return;const d=$w(new Date(c));if(!d)return;const f=np(r,e);f>0&&(i[d]=(i[d]||0)+f,s=!0)});const a=Object.keys(i).sort(),o=a.map(r=>i[r]);return{labels:a,data:o,hasData:s}}const $g=60*1e3,H2={getUsage:()=>Ie.get("/usage",{timeout:$g}),exportUsage:()=>Ie.get("/usage/export",{timeout:$g}),importUsage:t=>Ie.post("/usage/import",t,{timeout:$g}),async getKeyStats(t){let e=t;if(!e){const n=await Ie.get("/usage",{timeout:$g});e=n?.usage??n}return VG(e)}},Jh={fetchLogs:(t={})=>Ie.get("/logs",{params:t,timeout:zg}),clearLogs:()=>Ie.delete("/logs"),fetchErrorLogs:()=>Ie.get("/request-error-logs",{timeout:zg}),downloadErrorLog:t=>Ie.getRaw(`/request-error-logs/${encodeURIComponent(t)}`,{responseType:"blob",timeout:zg}),downloadRequestLogById:t=>Ie.getRaw(`/request-log-by-id/${encodeURIComponent(t)}`,{responseType:"blob",timeout:zg})},QG={checkLatest:()=>Ie.get("/latest-version")},Y4=[{id:"gpt",label:"GPT",patterns:[/gpt/i,/\bo\d\b/i,/\bo\d+\.?/i,/\bchatgpt/i]},{id:"claude",label:"Claude",patterns:[/claude/i]},{id:"gemini",label:"Gemini",patterns:[/gemini/i,/\bgai\b/i]},{id:"kimi",label:"Kimi",patterns:[/kimi/i]},{id:"qwen",label:"Qwen",patterns:[/qwen/i]},{id:"glm",label:"GLM",patterns:[/glm/i,/chatglm/i]},{id:"grok",label:"Grok",patterns:[/grok/i]},{id:"deepseek",label:"DeepSeek",patterns:[/deepseek/i]},{id:"minimax",label:"MiniMax",patterns:[/minimax/i,/abab/i]}],YG=t=>{for(const e of Y4)if(e.patterns.some(n=>n.test(t)))return e.id;return null},$L=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);function Zh(t,{dedupe:e=!1}={}){const n=o=>{if(typeof o=="string")return{name:o};if(!$L(o))return null;const r=o.id||o.name||o.model||o.value;if(!r)return null;const c=o.alias||o.display_name||o.displayName,d=o.description||o.note||o.comment,f={name:String(r)};return c&&c!==r&&(f.alias=String(c)),d&&(f.description=String(d)),f};let i=[];Array.isArray(t)?i=t.map(n):$L(t)&&(Array.isArray(t.data)?i=t.data.map(n):Array.isArray(t.models)&&(i=t.models.map(n)));const s=i.filter(Boolean);if(!e)return s;const a=new Set;return s.filter(o=>{const r=(o?.name||"").toLowerCase();return!r||a.has(r)?!1:(a.add(r),!0)})}function JG(t=[],{otherLabel:e="Other"}={}){const n=Y4.map(a=>({id:a.id,label:a.label,items:[]})),i={id:"other",label:e,items:[]};t.forEach(a=>{const o=(a?.name||"").toString(),r=(a?.alias||"").toString(),c=`${o} ${r}`.toLowerCase(),d=YG(c),f=d?n.find(p=>p.id===d):null;f?f.items.push(a):i.items.push(a)});const s=n.filter(a=>a.items.length>0);return i.items.length&&s.push(i),s}const ZG="https://api.anthropic.com",e$="https://generativelanguage.googleapis.com",t$="2023-06-01",Zx=new Map,e1=new Map,n$=t=>t!==null&&typeof t=="object"&&!Array.isArray(t),XL=(t,e)=>{const n=Object.entries(e).sort(([i],[s])=>i.toLowerCase().localeCompare(s.toLowerCase())).map(([i,s])=>`${i}:${s}`).join("|");return`${t}||${n}`},i$=t=>{const e=To(t);if(!e)return"";const n=e.replace(/\/+$/g,"");return/\/models$/i.test(n)?n:`${n}/models`},t1=t=>{const e=To(t);if(!e)return"";const n=e.replace(/\/+$/g,"");return/\/v1\/models$/i.test(n)?n:/\/v1$/i.test(n)?`${n}/models`:`${n}/v1/models`},QL=t=>{let i=(To(t)||ZG).replace(/\/+$/g,"");return i=i.replace(/\/v1\/models$/i,""),i=i.replace(/\/v1(?:\/.*)?$/i,""),`${i}/v1/models`},YL=t=>{let i=(To(t)||e$).replace(/\/+$/g,"");return i=i.replace(/\/v1beta\/models$/i,""),i=i.replace(/\/v1beta(?:\/.*)?$/i,""),`${i}/v1beta/models`},s$=t=>{const e=String(t??"").trim();return e?e.replace(/^\/?models\//i,""):""},ic=(t,e)=>{const n=e.toLowerCase();return Object.keys(t).some(i=>i.toLowerCase()===n)},a$=t=>{const e=Object.entries(t).find(([s])=>s.toLowerCase()==="authorization");if(!e)return"";const n=String(e[1]??"").trim();return n&&n.match(/^Bearer\s+(.+)$/i)?.[1]?.trim()||""},Ar={async fetchModels(t,e,n={}){const i=t1(t);if(!i)throw new Error("Invalid base url");const s={...n};e&&!ic(s,"authorization")&&(s.Authorization=`Bearer ${e}`);const a=await Gn.get(i,{headers:Object.keys(s).length?s:void 0}),o=a.data?.data??a.data?.models??a.data;return Zh(o,{dedupe:!0})},async fetchV1ModelsViaApiCall(t,e,n={}){const i=t1(t);if(!i)throw new Error("Invalid base url");const s={...n};e&&!ic(s,"authorization")&&(s.Authorization=`Bearer ${e}`);const a=await ea.request({method:"GET",url:i,header:Object.keys(s).length?s:void 0});if(a.statusCode<200||a.statusCode>=300)throw new Error(Ka(a));const o=a.body??a.bodyText;return Zh(o,{dedupe:!0})},async fetchModelsViaApiCall(t,e,n={}){const i=i$(t);if(!i)throw new Error("Invalid base url");const s={...n};e&&!ic(s,"authorization")&&(s.Authorization=`Bearer ${e}`);const a=await ea.request({method:"GET",url:i,header:Object.keys(s).length?s:void 0});if(a.statusCode<200||a.statusCode>=300)throw new Error(Ka(a));const o=a.body??a.bodyText;return Zh(o,{dedupe:!0})},buildV1ModelsEndpoint(t){return t1(t)},buildClaudeModelsEndpoint(t){return QL(t)},buildGeminiModelsEndpoint(t){return YL(t)},async fetchClaudeModelsViaApiCall(t,e,n={}){const i=QL(t);if(!i)throw new Error("Invalid base url");const s={...n};let a=String(e??"").trim();!a&&!ic(s,"x-api-key")&&(a=a$(s)),a&&!ic(s,"x-api-key")&&(s["x-api-key"]=a),ic(s,"anthropic-version")||(s["anthropic-version"]=t$);const o=XL(i,s),r=Zx.get(o);if(r)return r;const c=(async()=>{const d=await ea.request({method:"GET",url:i,header:Object.keys(s).length?s:void 0});if(d.statusCode<200||d.statusCode>=300)throw new Error(Ka(d));const f=d.body??d.bodyText;return Zh(f,{dedupe:!0})})();Zx.set(o,c);try{return await c}finally{Zx.delete(o)}},async fetchGeminiModelsViaApiCall(t,e,n={}){const i=YL(t);if(!i)throw new Error("Invalid base url");const s={...n},a=String(e??"").trim();a&&!ic(s,"x-goog-api-key")&&(s["x-goog-api-key"]=a);const o=XL(i,s),r=e1.get(o);if(r)return r;const c=(async()=>{const d=new Set,f=[];let p="";for(let g=0;g<20;g+=1){const y=new URL(i);p&&y.searchParams.set("pageToken",p);const _=await ea.request({method:"GET",url:y.toString(),header:Object.keys(s).length?s:void 0});if(_.statusCode<200||_.statusCode>=300)throw new Error(Ka(_));const v=_.body??_.bodyText;Zh(v,{dedupe:!1}).forEach(C=>{const N=s$(C.name),L=(N||"").toLowerCase();if(!L||d.has(L))return;d.add(L);const M={...C,name:N};M.alias&&M.alias.trim()===N&&(M.alias=void 0),f.push(M)});const k=n$(v)&&typeof v.nextPageToken=="string"?v.nextPageToken:"";if(!k)break;p=k}return f})();e1.set(o,c);try{return await c}finally{e1.delete(o)}}},o$={importCredential:(t,e)=>{const n=new FormData;return n.append("file",t),e&&n.append("location",e),Ie.postForm("/vertex/import",n)}},wr=24e4,n1=()=>({bySource:{},byAuthIndex:{}});let ef=0,ao=null;const r$=t=>t instanceof Error?t.message:typeof t=="string"?t:Gi.t("usage_stats.loading_error"),ns=Eo((t,e)=>({usage:null,keyStats:n1(),usageDetails:[],loading:!1,error:null,lastRefreshedAt:null,scopeKey:"",loadUsageStats:async(n={})=>{const i=n.force===!0,s=n.staleTimeMs??wr,{apiBase:a="",managementKey:o=""}=en.getState(),r=`${a}::${o}`,c=e(),d=c.scopeKey!==r;if(ao&&ao.scopeKey===r){await ao.promise;return}ao&&ao.scopeKey!==r&&(ef+=1,ao=null);const f=!d&&c.lastRefreshedAt!==null&&Date.now()-c.lastRefreshedAt<s;if(!i&&f)return;d&&t({usage:null,keyStats:n1(),usageDetails:[],error:null,lastRefreshedAt:null,scopeKey:r});const p=ef+=1;t({loading:!0,error:null,scopeKey:r});const g=(async()=>{try{const y=await H2.getUsage(),_=y?.usage??y,v=_&&typeof _=="object"?_:null;if(p!==ef)return;const x=Ea(v);t({usage:v,keyStats:HG(x),usageDetails:x,loading:!1,error:null,lastRefreshedAt:Date.now(),scopeKey:r})}catch(y){if(p!==ef)return;const _=r$(y);throw t({loading:!1,error:_,scopeKey:r}),new Error(_)}finally{ao?.id===p&&(ao=null)}})();ao={id:p,scopeKey:r,promise:g},await g},clearUsageStats:()=>{ef+=1,ao=null,t({usage:null,keyStats:n1(),usageDetails:[],loading:!1,error:null,lastRefreshedAt:null,scopeKey:""})}})),vr=Eo((t,e)=>({models:[],loading:!1,error:null,cache:null,fetchModels:async(n,i,s=!1)=>{const{cache:a,isCacheValid:o}=e(),r=i?.trim()||"";if(!s&&o(n,r)&&a)return t({models:a.data,error:null}),a.data;t({loading:!0,error:null});try{const c=await Ar.fetchModels(n,r||void 0),d=Date.now();return t({models:c,loading:!1,cache:{data:c,timestamp:d,apiBase:n,apiKey:r}}),c}catch(c){const d=c instanceof Error?c.message:typeof c=="string"?c:"Failed to fetch models";throw t({error:d,loading:!1,models:[]}),c}},clearCache:()=>{t({cache:null,models:[]})},isCacheValid:(n,i)=>{const{cache:s}=e();if(!s||s.apiBase!==n)return!1;const a=i?.trim()||"";return(s.apiKey||"")!==a?!1:Date.now()-s.timestamp<n4}}));let tf=null;const en=Eo()(Fw((t,e)=>({isAuthenticated:!1,apiBase:"",managementKey:"",rememberPassword:!1,serverVersion:null,serverBuildDate:null,connectionStatus:"disconnected",connectionError:null,restoreSession:()=>tf||(tf=(async()=>{tc.migratePlaintextKeys(["apiBase","apiUrl","managementKey"]);const n=localStorage.getItem("isLoggedIn")==="true",i=tc.getItem("apiBase")||tc.getItem("apiUrl",{encrypt:!0}),s=tc.getItem("managementKey"),{apiBase:a,managementKey:o,rememberPassword:r}=e(),c=To(a||i||E4()),d=o||s||"",f=r||!!o||!!s;if(t({apiBase:c,managementKey:d,rememberPassword:f}),Ie.setConfig({apiBase:c,managementKey:d}),n&&c&&d)try{return await e().login({apiBase:c,managementKey:d,rememberPassword:f}),!0}catch(p){return console.warn("Auto login failed:",p),!1}return!1})(),tf),login:async n=>{const i=To(n.apiBase),s=n.managementKey.trim(),a=n.rememberPassword??e().rememberPassword??!1;try{t({connectionStatus:"connecting"}),vr.getState().clearCache(),Ie.setConfig({apiBase:i,managementKey:s}),await It.getState().fetchConfig(void 0,!0),t({isAuthenticated:!0,apiBase:i,managementKey:s,rememberPassword:a,connectionStatus:"connected",connectionError:null}),a?localStorage.setItem("isLoggedIn","true"):localStorage.removeItem("isLoggedIn")}catch(o){const r=o instanceof Error?o.message:typeof o=="string"?o:"Connection failed";throw t({connectionStatus:"error",connectionError:r||"Connection failed"}),o}},logout:()=>{tf=null,It.getState().clearCache(),ns.getState().clearUsageStats(),vr.getState().clearCache(),t({isAuthenticated:!1,apiBase:"",managementKey:"",serverVersion:null,serverBuildDate:null,connectionStatus:"disconnected",connectionError:null}),localStorage.removeItem("isLoggedIn")},checkAuth:async()=>{const{managementKey:n,apiBase:i}=e();if(!n||!i)return!1;try{return Ie.setConfig({apiBase:i,managementKey:n}),await It.getState().fetchConfig(),t({isAuthenticated:!0,connectionStatus:"connected"}),!0}catch{return t({isAuthenticated:!1,connectionStatus:"error"}),!1}},updateServerVersion:(n,i)=>{t({serverVersion:n||null,serverBuildDate:i||null})},updateConnectionStatus:(n,i=null)=>{t({connectionStatus:n,connectionError:i})}}),{name:i4,storage:o4(()=>({getItem:t=>{const e=tc.getItem(t);return e?JSON.stringify(e):null},setItem:(t,e)=>{tc.setItem(t,JSON.parse(e))},removeItem:t=>{tc.removeItem(t)}})),partialize:t=>({apiBase:t.apiBase,...t.rememberPassword?{managementKey:t.managementKey}:{},rememberPassword:t.rememberPassword,serverVersion:t.serverVersion,serverBuildDate:t.serverBuildDate})}));typeof window<"u"&&(window.addEventListener("unauthorized",()=>{en.getState().logout()}),window.addEventListener("server-version-update",(t=>{const e=t.detail||{};en.getState().updateServerVersion(e.version||null,e.buildDate||null)})));const nf=(t,e)=>typeof t=="function"?t(e):t,Cd=Eo(t=>({antigravityQuota:{},claudeQuota:{},codexQuota:{},geminiCliQuota:{},kimiQuota:{},setAntigravityQuota:e=>t(n=>({antigravityQuota:nf(e,n.antigravityQuota)})),setClaudeQuota:e=>t(n=>({claudeQuota:nf(e,n.claudeQuota)})),setCodexQuota:e=>t(n=>({codexQuota:nf(e,n.codexQuota)})),setGeminiCliQuota:e=>t(n=>({geminiCliQuota:nf(e,n.geminiCliQuota)})),setKimiQuota:e=>t(n=>({kimiQuota:nf(e,n.kimiQuota)})),clearQuotaCache:()=>t({antigravityQuota:{},claudeQuota:{},codexQuota:{},geminiCliQuota:{},kimiQuota:{}})})),Xw="*",Sa=t=>Array.isArray(t)&&t.some(e=>String(e??"").trim()===Xw),J4=t=>Array.isArray(t)?t.filter(e=>String(e??"").trim()!==Xw):[],JL=t=>[...J4(t),Xw],ZL=t=>J4(t),Qw=t=>t.split(/[\n,]+/).map(e=>e.trim()).filter(Boolean),Rl=Qw,Uy=t=>Array.isArray(t)?t.join(`
`):"",Z4=t=>{let e=String(t||"").trim();return e?(e=e.replace(/\/?v0\/management\/?$/i,""),e=e.replace(/\/+$/g,""),/^https?:\/\//i.test(e)||(e=`http://${e}`),e):""},l$=t=>{let e=String(t||"").trim();return e?(e=e.replace(/\/?v0\/management\/?$/i,""),e=e.replace(/\/+$/g,""),/^https?:\/\//i.test(e)||(e=`http://${e}`),e):"https://api.anthropic.com"},c$=t=>{const e=Z4(t);return e?`${e}/models`:""},eO=t=>{const e=Z4(t);return e?e.endsWith("/chat/completions")?e:`${e}/chat/completions`:""},u$=t=>{const e=l$(t);return e?e.endsWith("/v1/messages")?e:e.endsWith("/v1")?`${e}/messages`:`${e}/v1/messages`:""},ip=(t,e,n)=>{const i=e.bySource??{},s=_s({apiKey:t,prefix:n});if(!s.length)return{success:0,failure:0};let a=0,o=0;return s.forEach(r=>{const c=i[r];c&&(a+=c.success,o+=c.failure)}),{success:a,failure:o}},d$=(t,e,n)=>{const i=e.bySource??{},s=new Set;_s({prefix:n}).forEach(r=>s.add(r)),(t||[]).forEach(r=>{_s({apiKey:r?.apiKey}).forEach(c=>s.add(c))});let a=0,o=0;return s.forEach(r=>{const c=i[r];c&&(a+=c.success,o+=c.failure)}),{success:a,failure:o}},dd=t=>({apiKey:"",proxyUrl:"",headers:{}}),h$=t=>!Array.isArray(t)||t.length===0?[{name:"",alias:""}]:t.map(e=>({name:e.from??"",alias:e.to??""})),f$=t=>{const e=new Set,n=[];return t.forEach(i=>{const s=i.name.trim(),a=i.alias.trim();if(!s||!a)return;const o=s.toLowerCase();e.has(o)||(e.add(o),n.push({from:s,to:a}))}),n},m$=t=>!Array.isArray(t)||t.length===0?[{upstreamApiKey:"",clientApiKeysText:""}]:t.map(e=>({upstreamApiKey:e.upstreamApiKey??"",clientApiKeysText:Array.isArray(e.apiKeys)?e.apiKeys.join(`
`):""})),e5=t=>{const e=new Set,n=[];return t.forEach(i=>{const s=String(i?.upstreamApiKey??"").trim();if(!s||e.has(s))return;const a=Array.from(new Set(Qw(String(i?.clientApiKeysText??""))));a.length&&(e.add(s),n.push({upstreamApiKey:s,apiKeys:a}))}),n},Xg=t=>({upstreamUrl:t?.upstreamUrl??"",upstreamApiKey:"",forceModelMappings:t?.forceModelMappings??!1,mappingEntries:h$(t?.modelMappings),upstreamApiKeyEntries:m$(t?.upstreamApiKeys)}),Qg=(t,e)=>typeof t=="function"?t(e):t,p$=()=>({name:"",prefix:"",baseUrl:"",headers:[],apiKeyEntries:[dd()],modelEntries:[{name:"",alias:""}],testModel:void 0}),ir=()=>({initialized:!1,baselineSignature:"",form:p$(),testModel:"",testStatus:"idle",testMessage:"",keyTestStatuses:[]}),Ia=Eo((t,e)=>({drafts:{},refCounts:{},acquireDraft:n=>{n&&t(i=>{const s=i.drafts[n],a=i.refCounts[n]??0;return{drafts:s?i.drafts:{...i.drafts,[n]:ir()},refCounts:{...i.refCounts,[n]:a+1}}})},releaseDraft:n=>{n&&t(i=>{const s=i.refCounts[n];if(!s)return i;if(s>1)return{refCounts:{...i.refCounts,[n]:s-1}};const a={...i.refCounts};delete a[n];const o={...i.drafts};return delete o[n],{refCounts:a,drafts:o}})},ensureDraft:n=>{!n||e().drafts[n]||t(s=>({drafts:{...s.drafts,[n]:ir()}}))},initDraft:(n,i)=>{!n||e().drafts[n]?.initialized||t(a=>({drafts:{...a.drafts,[n]:{...i,initialized:!0}}}))},setDraftBaselineSignature:(n,i)=>{n&&t(s=>{const a=s.drafts[n]??ir();return{drafts:{...s.drafts,[n]:{...a,initialized:!0,baselineSignature:i}}}})},setDraftForm:(n,i)=>{n&&t(s=>{const a=s.drafts[n]??ir(),o=Qg(i,a.form);return{drafts:{...s.drafts,[n]:{...a,initialized:!0,form:o}}}})},setDraftTestModel:(n,i)=>{n&&t(s=>{const a=s.drafts[n]??ir(),o=Qg(i,a.testModel);return{drafts:{...s.drafts,[n]:{...a,initialized:!0,testModel:o}}}})},setDraftTestStatus:(n,i)=>{n&&t(s=>{const a=s.drafts[n]??ir(),o=Qg(i,a.testStatus);return{drafts:{...s.drafts,[n]:{...a,initialized:!0,testStatus:o}}}})},setDraftTestMessage:(n,i)=>{n&&t(s=>{const a=s.drafts[n]??ir(),o=Qg(i,a.testMessage);return{drafts:{...s.drafts,[n]:{...a,initialized:!0,testMessage:o}}}})},setDraftKeyTestStatus:(n,i,s)=>{n&&t(a=>{const o=a.drafts[n]??ir(),r=[...o.keyTestStatuses];return r[i]=s,{drafts:{...a.drafts,[n]:{...o,initialized:!0,keyTestStatuses:r}}}})},resetDraftKeyTestStatuses:(n,i)=>{n&&t(s=>{const a=s.drafts[n]??ir();return{drafts:{...s.drafts,[n]:{...a,initialized:!0,keyTestStatuses:Array.from({length:i},()=>({status:"idle",message:""}))}}}})},clearDraft:n=>{n&&t(i=>{if(!i.drafts[n]&&!i.refCounts[n])return i;const s={...i.drafts};delete s[n];const a={...i.refCounts};return delete a[n],{drafts:s,refCounts:a}})}})),Yg=(t,e)=>typeof t=="function"?t(e):t,g$=()=>({apiKey:"",prefix:"",baseUrl:"",proxyUrl:"",headers:[],models:[],excludedModels:[],modelEntries:[{name:"",alias:""}],excludedText:""}),sc=()=>({initialized:!1,baselineSignature:"",form:g$(),testModel:"",testStatus:"idle",testMessage:""}),sr=Eo((t,e)=>({drafts:{},refCounts:{},acquireDraft:n=>{n&&t(i=>{const s=i.drafts[n],a=i.refCounts[n]??0;return{drafts:s?i.drafts:{...i.drafts,[n]:sc()},refCounts:{...i.refCounts,[n]:a+1}}})},releaseDraft:n=>{n&&t(i=>{const s=i.refCounts[n];if(!s)return i;if(s>1)return{refCounts:{...i.refCounts,[n]:s-1}};const a={...i.refCounts};delete a[n];const o={...i.drafts};return delete o[n],{refCounts:a,drafts:o}})},ensureDraft:n=>{!n||e().drafts[n]||t(s=>({drafts:{...s.drafts,[n]:sc()}}))},initDraft:(n,i)=>{!n||e().drafts[n]?.initialized||t(a=>({drafts:{...a.drafts,[n]:{...i,initialized:!0}}}))},setDraftBaselineSignature:(n,i)=>{n&&t(s=>{const a=s.drafts[n]??sc();return{drafts:{...s.drafts,[n]:{...a,initialized:!0,baselineSignature:i}}}})},setDraftForm:(n,i)=>{n&&t(s=>{const a=s.drafts[n]??sc(),o=Yg(i,a.form);return{drafts:{...s.drafts,[n]:{...a,initialized:!0,form:o}}}})},setDraftTestModel:(n,i)=>{n&&t(s=>{const a=s.drafts[n]??sc(),o=Yg(i,a.testModel);return{drafts:{...s.drafts,[n]:{...a,initialized:!0,testModel:o}}}})},setDraftTestStatus:(n,i)=>{n&&t(s=>{const a=s.drafts[n]??sc(),o=Yg(i,a.testStatus);return{drafts:{...s.drafts,[n]:{...a,initialized:!0,testStatus:o}}}})},setDraftTestMessage:(n,i)=>{n&&t(s=>{const a=s.drafts[n]??sc(),o=Yg(i,a.testMessage);return{drafts:{...s.drafts,[n]:{...a,initialized:!0,testMessage:o}}}})},clearDraft:n=>{n&&t(i=>{if(!i.drafts[n]&&!i.refCounts[n])return i;const s={...i.drafts};delete s[n];const a={...i.refCounts};return delete a[n],{drafts:s,refCounts:a}})}})),_$="LoginPage-module__container___bHtIX",y$="LoginPage-module__brandPanel___kKUR5",b$="LoginPage-module__brandContent___ZEhbk",v$="LoginPage-module__brandWord___3DkwD",x$="LoginPage-module__formPanel___Nrtrt",S$="LoginPage-module__formContent___H8fD-",w$="LoginPage-module__logo___ASmao",k$="LoginPage-module__loginCard___OgP-R",C$="LoginPage-module__loginHeader___3kAvs",A$="LoginPage-module__titleRow___9h914",N$="LoginPage-module__title___I-LuY",T$="LoginPage-module__subtitle___Q41SH",M$="LoginPage-module__languageSelect___KUNwV",L$="LoginPage-module__connectionBox___B5--X",O$="LoginPage-module__label___2fkY-",P$="LoginPage-module__value___JFrYC",E$="LoginPage-module__hint___bcz4d",j$="LoginPage-module__toggleAdvanced___4aKnv",R$="LoginPage-module__toggleLabel___C3t9M",D$="LoginPage-module__errorBox___wX1tT",F$="LoginPage-module__splashContent___Cc3DZ",I$="LoginPage-module__splashLogo___yzbbw",B$="LoginPage-module__splashTitle___G-HEP",U$="LoginPage-module__splashSubtitle___BYSQi",q$="LoginPage-module__splashLoader___SdvUl",z$="LoginPage-module__splashLoaderBar___lyVXw",yn={container:_$,brandPanel:y$,brandContent:b$,brandWord:v$,formPanel:x$,formContent:S$,logo:w$,loginCard:k$,loginHeader:C$,titleRow:A$,title:N$,subtitle:T$,languageSelect:M$,connectionBox:L$,label:O$,value:P$,hint:E$,toggleAdvanced:j$,toggleLabel:R$,errorBox:D$,splashContent:F$,splashLogo:I$,splashTitle:B$,splashSubtitle:U$,splashLoader:q$,splashLoaderBar:z$};function K$(t,e){const n=t,i=typeof n.status=="number"?n.status:void 0,s=typeof n.code=="string"?n.code:void 0,a=t instanceof Error?t.message:typeof n.message=="string"?n.message:typeof t=="string"?t:"";return i===401?e("login.error_unauthorized"):i===403?e("login.error_forbidden"):i===404?e("login.error_not_found"):i&&i>=500?e("login.error_server"):s==="ECONNABORTED"||a.toLowerCase().includes("timeout")?e("login.error_timeout"):s==="ERR_NETWORK"||a.toLowerCase().includes("network error")?e("login.error_network"):s==="ERR_CERT_AUTHORITY_INVALID"||a.toLowerCase().includes("certificate")?e("login.error_ssl"):a.toLowerCase().includes("cors")||a.toLowerCase().includes("cross-origin")?e("login.error_cors"):e("login.error_invalid")}function V$(){const{t}=nt(),e=Ri(),n=$n(),{showNotification:i}=mn(),s=wd(W=>W.language),a=wd(W=>W.setLanguage),o=en(W=>W.isAuthenticated),r=en(W=>W.login),c=en(W=>W.restoreSession),d=en(W=>W.apiBase),f=en(W=>W.managementKey),p=en(W=>W.rememberPassword),[g,y]=S.useState(""),[_,v]=S.useState(""),[x,k]=S.useState(!1),[C,N]=S.useState(!1),[L,M]=S.useState(!1),[O,T]=S.useState(!1),[P,E]=S.useState(!0),[R,q]=S.useState(!1),[I,Y]=S.useState(""),X=S.useMemo(()=>E4(),[]),K=S.useMemo(()=>cd.map(W=>({value:W,label:t(a4[W])})),[t]),B=S.useCallback(W=>{Sd(W)&&a(W)},[a]);S.useEffect(()=>{(async()=>{try{await c()?(q(!0),setTimeout(()=>{const U=n.state?.from?.pathname||"/";e(U,{replace:!0})},1500)):(y(d||X),v(f||""),M(p||!!f))}finally{R||E(!1)}})()},[]);const H=S.useCallback(async()=>{if(!_.trim()){Y(t("login.error_required"));return}const W=g?To(g):X;T(!0),Y("");try{await r({apiBase:W,managementKey:_.trim(),rememberPassword:L}),i(t("common.connected_status"),"success"),e("/",{replace:!0})}catch(D){const U=K$(D,t);Y(U),i(`${t("notification.login_failed")}: ${U}`,"error")}finally{T(!1)}},[g,X,r,_,e,L,i,t]),z=S.useCallback(W=>{W.key==="Enter"&&!O&&(W.preventDefault(),H())},[O,H]);if(o&&!P&&!R){const W=n.state?.from?.pathname||"/";return h.jsx(qf,{to:W,replace:!0})}const Q=P||R;return h.jsxs("div",{className:yn.container,children:[h.jsx("div",{className:yn.brandPanel,children:h.jsxs("div",{className:yn.brandContent,children:[h.jsx("span",{className:yn.brandWord,children:"CLI"}),h.jsx("span",{className:yn.brandWord,children:"PROXY"}),h.jsx("span",{className:yn.brandWord,children:"API"})]})}),h.jsx("div",{className:yn.formPanel,children:Q?h.jsxs("div",{className:yn.splashContent,children:[h.jsx("img",{src:xd,alt:"CPAMC",className:yn.splashLogo}),h.jsx("h1",{className:yn.splashTitle,children:t("splash.title")}),h.jsx("p",{className:yn.splashSubtitle,children:t("splash.subtitle")}),h.jsx("div",{className:yn.splashLoader,children:h.jsx("div",{className:yn.splashLoaderBar})})]}):h.jsxs("div",{className:yn.formContent,children:[h.jsx("img",{src:xd,alt:"Logo",className:yn.logo}),h.jsxs("div",{className:yn.loginCard,children:[h.jsxs("div",{className:yn.loginHeader,children:[h.jsxs("div",{className:yn.titleRow,children:[h.jsx("div",{className:yn.title,children:t("title.login")}),h.jsx(Hi,{className:yn.languageSelect,value:s,options:K,onChange:B,fullWidth:!1,ariaLabel:t("language.switch")})]}),h.jsx("div",{className:yn.subtitle,children:t("login.subtitle")})]}),h.jsxs("div",{className:yn.connectionBox,children:[h.jsx("div",{className:yn.label,children:t("login.connection_current")}),h.jsx("div",{className:yn.value,children:g||X}),h.jsx("div",{className:yn.hint,children:t("login.connection_auto_hint")})]}),h.jsx("div",{className:yn.toggleAdvanced,children:h.jsx(Nl,{checked:x,onChange:k,ariaLabel:t("login.custom_connection_label"),label:t("login.custom_connection_label"),labelClassName:yn.toggleLabel})}),x&&h.jsx(lt,{label:t("login.custom_connection_label"),placeholder:t("login.custom_connection_placeholder"),value:g,onChange:W=>y(W.target.value),hint:t("login.custom_connection_hint")}),h.jsx(lt,{autoFocus:!0,label:t("login.management_key_label"),placeholder:t("login.management_key_placeholder"),type:C?"text":"password",value:_,onChange:W=>v(W.target.value),onKeyDown:z,rightElement:h.jsx("button",{type:"button",className:"btn btn-ghost btn-sm",onClick:()=>N(W=>!W),"aria-label":C?t("login.hide_key",{defaultValue:"隐藏密钥"}):t("login.show_key",{defaultValue:"显示密钥"}),title:C?t("login.hide_key",{defaultValue:"隐藏密钥"}):t("login.show_key",{defaultValue:"显示密钥"}),children:C?h.jsx(t4,{size:16}):h.jsx(Oz,{size:16})})}),h.jsx("div",{className:yn.toggleAdvanced,children:h.jsx(Nl,{checked:L,onChange:M,ariaLabel:t("login.remember_password_label"),label:t("login.remember_password_label"),labelClassName:yn.toggleLabel})}),h.jsx(he,{fullWidth:!0,onClick:H,loading:O,children:t(O?"login.submitting":"login.submit_button")}),I&&h.jsx("div",{className:yn.errorBox,children:I})]})]})})]})}const tO=300;function H$(){const{t}=nt(),{notifications:e,removeNotification:n}=mn(),[i,s]=S.useState([]),a=S.useRef([]);S.useEffect(()=>{const r=a.current,c=new Set(r.map(g=>g.id)),d=new Set(e.map(g=>g.id)),f=e.filter(g=>!c.has(g.id)),p=new Set(r.filter(g=>!d.has(g.id)).map(g=>g.id));s(g=>{let y=g.map(_=>p.has(_.id)?{..._,isExiting:!0}:_);return f.forEach(_=>{y.find(v=>v.id===_.id)||y.push({..._,isExiting:!1})}),y=y.filter(_=>d.has(_.id)||_.isExiting),y}),p.size>0&&setTimeout(()=>{s(g=>g.filter(y=>!p.has(y.id)))},tO),a.current=e},[e]);const o=r=>{s(c=>c.map(d=>d.id===r?{...d,isExiting:!0}:d)),setTimeout(()=>{n(r)},tO)};return i.length?h.jsx("div",{className:"notification-container",children:i.map(r=>h.jsxs("div",{className:`notification ${r.type} ${r.isExiting?"exiting":"entering"}`,children:[h.jsx("div",{className:"message",children:r.message}),h.jsx("button",{type:"button",className:"close-btn",onClick:()=>o(r.id),"aria-label":t("common.close"),children:h.jsx(Gc,{size:16})})]},r.id))}):null}const W$=350,D0="modal-open",G$=["a[href]","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])",'[tabindex]:not([tabindex="-1"])'].join(",");let Hf=0;const Vn={scrollY:0,contentScrollTop:0,contentEl:null,bodyPosition:"",bodyTop:"",bodyLeft:"",bodyRight:"",bodyWidth:"",bodyOverflow:"",htmlOverflow:""},$$=()=>{if(typeof document>"u")return null;const t=document.querySelector(".content");return t instanceof HTMLElement?t:null},X$=()=>{if(!(typeof document>"u")){if(Hf===0){const t=document.body,e=document.documentElement,n=$$();Vn.scrollY=window.scrollY||window.pageYOffset||e.scrollTop||0,Vn.contentEl=n,Vn.contentScrollTop=n?.scrollTop??0,Vn.bodyPosition=t.style.position,Vn.bodyTop=t.style.top,Vn.bodyLeft=t.style.left,Vn.bodyRight=t.style.right,Vn.bodyWidth=t.style.width,Vn.bodyOverflow=t.style.overflow,Vn.htmlOverflow=e.style.overflow,t.classList.add(D0),e.classList.add(D0),t.style.position="fixed",t.style.top=`-${Vn.scrollY}px`,t.style.left="0",t.style.right="0",t.style.width="100%",t.style.overflow="hidden",e.style.overflow="hidden"}Hf+=1}},Q$=()=>{if(!(typeof document>"u")&&(Hf=Math.max(0,Hf-1),Hf===0)){const t=document.body,e=document.documentElement,n=Vn.scrollY,i=Vn.contentScrollTop,s=Vn.contentEl;t.classList.remove(D0),e.classList.remove(D0),t.style.position=Vn.bodyPosition,t.style.top=Vn.bodyTop,t.style.left=Vn.bodyLeft,t.style.right=Vn.bodyRight,t.style.width=Vn.bodyWidth,t.style.overflow=Vn.bodyOverflow,e.style.overflow=Vn.htmlOverflow,s&&s.scrollTo({top:i,left:0,behavior:"auto"}),window.scrollTo({top:n,left:0,behavior:"auto"}),Vn.scrollY=0,Vn.contentScrollTop=0,Vn.contentEl=null}};function Ss({open:t,title:e,onClose:n,footer:i,width:s=520,className:a,closeDisabled:o=!1,children:r}){const{t:c}=nt(),d=S.useId(),[f,p]=S.useState(!1),[g,y]=S.useState(!1),_=S.useRef(null),v=S.useRef(null),x=S.useRef(null),k=S.useRef(null),C=S.useCallback(()=>v.current?Array.from(v.current.querySelectorAll(G$)).filter(E=>!E.hasAttribute("disabled")&&E.tabIndex!==-1):[],[]),N=S.useCallback(E=>{_.current===null&&(y(!0),_.current=window.setTimeout(()=>{p(!1),y(!1),_.current=null,E&&n()},W$))},[n]);S.useEffect(()=>{let E=!1;return t?(_.current!==null&&(window.clearTimeout(_.current),_.current=null),queueMicrotask(()=>{E||(p(!0),y(!1))})):f&&queueMicrotask(()=>{E||N(!1)}),()=>{E=!0}},[t,f,N]);const L=S.useCallback(()=>{N(!0)},[N]);S.useEffect(()=>()=>{_.current!==null&&window.clearTimeout(_.current)},[]);const M=t||f;if(S.useEffect(()=>{if(M)return X$(),()=>Q$()},[M]),S.useEffect(()=>{if(!t)return;k.current=document.activeElement instanceof HTMLElement?document.activeElement:null;const E=window.setTimeout(()=>{(C()[0]??x.current??v.current)?.focus()},0);return()=>{window.clearTimeout(E)}},[C,t]),S.useEffect(()=>{t||f||(k.current?.focus(),k.current=null)},[f,t]),S.useEffect(()=>{if(!t)return;const E=R=>{if(R.key==="Escape"){if(o)return;R.preventDefault(),L();return}if(R.key!=="Tab")return;const q=C();if(q.length===0){R.preventDefault(),v.current?.focus();return}const I=q[0],Y=q[q.length-1],X=document.activeElement;if(R.shiftKey){(X===I||X===v.current)&&(R.preventDefault(),Y.focus());return}X===Y&&(R.preventDefault(),I.focus())};return document.addEventListener("keydown",E),()=>document.removeEventListener("keydown",E)},[o,C,L,t]),!t&&!f)return null;const O=`modal-overlay ${g?"modal-overlay-closing":"modal-overlay-entering"}`,T=`modal ${g?"modal-closing":"modal-entering"}${a?` ${a}`:""}`,P=h.jsx("div",{className:O,children:h.jsxs("div",{ref:v,className:T,style:{width:s,maxWidth:"100%"},role:"dialog","aria-modal":"true","aria-labelledby":e?d:void 0,tabIndex:-1,children:[h.jsx("button",{ref:x,type:"button",className:"modal-close-floating",onClick:o?void 0:L,"aria-label":c("common.close"),disabled:o,children:h.jsx(Gc,{size:20})}),h.jsx("div",{className:"modal-header",children:h.jsx("div",{className:"modal-title",id:e?d:void 0,children:e})}),h.jsx("div",{className:"modal-body",children:r}),i&&h.jsx("div",{className:"modal-footer",children:i})]})});return typeof document>"u"?P:Po.createPortal(P,document.body)}function Y$(){const{t}=nt(),e=mn(x=>x.confirmation),n=mn(x=>x.hideConfirmation),i=mn(x=>x.setConfirmationLoading),{isOpen:s,isLoading:a,options:o}=e;if(!s||!o)return null;const{title:r,message:c,onConfirm:d,onCancel:f,confirmText:p,cancelText:g,variant:y="primary"}=o,_=async()=>{try{i(!0),await d(),n()}catch(x){console.error("Confirmation action failed:",x)}finally{i(!1)}},v=()=>{a||(f&&f(),n())};return h.jsxs(Ss,{open:s,onClose:v,title:r,closeDisabled:a,children:[typeof c=="string"?h.jsx("p",{style:{margin:"1rem 0"},children:c}):h.jsx("div",{style:{margin:"1rem 0"},children:c}),h.jsxs("div",{style:{display:"flex",justifyContent:"flex-end",gap:"1rem",marginTop:"2rem"},children:[h.jsx(he,{variant:"ghost",onClick:v,disabled:a,children:g||t("common.cancel")}),h.jsx(he,{variant:y,onClick:_,loading:a,children:p||t("common.confirm")})]})]})}let J$=()=>{};function Z$(t){let e;return()=>(e===void 0&&(e=t()),e)}const eX=t=>t,W2=t=>t*1e3,i1=t=>t/1e3,tX=t=>Array.isArray(t)&&typeof t[0]=="number",nX=(t,e,n=10)=>{let i="";const s=Math.max(Math.round(e/n),2);for(let a=0;a<s;a++)i+=Math.round(t(a/(s-1))*1e4)/1e4+", ";return`linear(${i.substring(0,i.length-2)})`},iX=t=>t!==null;function sX(t,{repeat:e,repeatType:n="loop"},i,s=1){const a=t.filter(iX),r=s<0||e&&n!=="loop"&&e%2===1?0:a.length-1;return!r||i===void 0?a[r]:i}class aX{constructor(){this.updateFinished()}get finished(){return this._finished}updateFinished(){this._finished=new Promise(e=>{this.resolve=e})}notifyFinished(){this.resolve()}then(e,n){return this.finished.then(e,n)}}function oX(t){for(let e=1;e<t.length;e++)t[e]??(t[e]=t[e-1])}const t5=t=>t.startsWith("--");function rX(t,e,n){t5(e)?t.style.setProperty(e,n):t.style[e]=n}const lX={};function n5(t,e){const n=Z$(t);return()=>lX[e]??n()}const cX=n5(()=>window.ScrollTimeline!==void 0,"scrollTimeline"),i5=n5(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch{return!1}return!0},"linearEasing"),Af=([t,e,n,i])=>`cubic-bezier(${t}, ${e}, ${n}, ${i})`,nO={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:Af([0,.65,.55,1]),circOut:Af([.55,0,1,.45]),backIn:Af([.31,.01,.66,-.59]),backOut:Af([.33,1.53,.69,.99])};function s5(t,e){if(t)return typeof t=="function"?i5()?nX(t,e):"ease-out":tX(t)?Af(t):Array.isArray(t)?t.map(n=>s5(n,e)||nO.easeOut):nO[t]}function uX(t,e,n,{delay:i=0,duration:s=300,repeat:a=0,repeatType:o="loop",ease:r="easeOut",times:c}={},d=void 0){const f={[e]:n};c&&(f.offset=c);const p=s5(r,s);Array.isArray(p)&&(f.easing=p);const g={delay:i,duration:s,easing:Array.isArray(p)?"linear":p,fill:"both",iterations:a+1,direction:o==="reverse"?"alternate":"normal"};return d&&(g.pseudoElement=d),t.animate(f,g)}function dX(t){return typeof t=="function"&&"applyToOptions"in t}function hX({type:t,...e}){return dX(t)&&i5()?t.applyToOptions(e):(e.duration??(e.duration=300),e.ease??(e.ease="easeOut"),e)}class fX extends aX{constructor(e){if(super(),this.finishedTime=null,this.isStopped=!1,this.manualStartTime=null,!e)return;const{element:n,name:i,keyframes:s,pseudoElement:a,allowFlatten:o=!1,finalKeyframe:r,onComplete:c}=e;this.isPseudoElement=!!a,this.allowFlatten=o,this.options=e,J$(typeof e.type!="string");const d=hX(e);this.animation=uX(n,i,s,d,a),d.autoplay===!1&&this.animation.pause(),this.animation.onfinish=()=>{if(this.finishedTime=this.time,!a){const f=sX(s,this.options,r,this.speed);this.updateMotionValue?this.updateMotionValue(f):rX(n,i,f),this.animation.cancel()}c?.(),this.notifyFinished()}}play(){this.isStopped||(this.manualStartTime=null,this.animation.play(),this.state==="finished"&&this.updateFinished())}pause(){this.animation.pause()}complete(){this.animation.finish?.()}cancel(){try{this.animation.cancel()}catch{}}stop(){if(this.isStopped)return;this.isStopped=!0;const{state:e}=this;e==="idle"||e==="finished"||(this.updateMotionValue?this.updateMotionValue():this.commitStyles(),this.isPseudoElement||this.cancel())}commitStyles(){const e=this.options?.element;!this.isPseudoElement&&e?.isConnected&&this.animation.commitStyles?.()}get duration(){const e=this.animation.effect?.getComputedTiming?.().duration||0;return i1(Number(e))}get iterationDuration(){const{delay:e=0}=this.options||{};return this.duration+i1(e)}get time(){return i1(Number(this.animation.currentTime)||0)}set time(e){this.manualStartTime=null,this.finishedTime=null,this.animation.currentTime=W2(e)}get speed(){return this.animation.playbackRate}set speed(e){e<0&&(this.finishedTime=null),this.animation.playbackRate=e}get state(){return this.finishedTime!==null?"finished":this.animation.playState}get startTime(){return this.manualStartTime??Number(this.animation.startTime)}set startTime(e){this.manualStartTime=this.animation.startTime=e}attachTimeline({timeline:e,observe:n}){return this.allowFlatten&&this.animation.effect?.updateTiming({easing:"linear"}),this.animation.onfinish=null,e&&cX()?(this.animation.timeline=e,eX):n(this)}}class mX{constructor(e){this.stop=()=>this.runAll("stop"),this.animations=e.filter(Boolean)}get finished(){return Promise.all(this.animations.map(e=>e.finished))}getAll(e){return this.animations[0][e]}setAll(e,n){for(let i=0;i<this.animations.length;i++)this.animations[i][e]=n}attachTimeline(e){const n=this.animations.map(i=>i.attachTimeline(e));return()=>{n.forEach((i,s)=>{i&&i(),this.animations[s].stop()})}}get time(){return this.getAll("time")}set time(e){this.setAll("time",e)}get speed(){return this.getAll("speed")}set speed(e){this.setAll("speed",e)}get state(){return this.getAll("state")}get startTime(){return this.getAll("startTime")}get duration(){return iO(this.animations,"duration")}get iterationDuration(){return iO(this.animations,"iterationDuration")}runAll(e){this.animations.forEach(n=>n[e]())}play(){this.runAll("play")}pause(){this.runAll("pause")}cancel(){this.runAll("cancel")}complete(){this.runAll("complete")}}function iO(t,e){let n=0;for(let i=0;i<t.length;i++){const s=t[i][e];s!==null&&s>n&&(n=s)}return n}class pX extends mX{then(e,n){return this.finished.finally(e).then(()=>{})}}const sO=new WeakMap,gX=(t,e="")=>`${t}:${e}`;function _X(t){const e=sO.get(t)||new Map;return sO.set(t,e),e}function yX(t,e){if(t?.inherit&&e){const{inherit:n,...i}=t;return{...e,...i}}return t}function bX(t,e){const n=t?.[e]??t?.default??t;return n!==t?yX(n,t):n}const vX=new Set(["borderWidth","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderRadius","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","width","maxWidth","height","maxHeight","top","right","bottom","left","inset","insetBlock","insetBlockStart","insetBlockEnd","insetInline","insetInlineStart","insetInlineEnd","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingBlock","paddingBlockStart","paddingBlockEnd","paddingInline","paddingInlineStart","paddingInlineEnd","margin","marginTop","marginRight","marginBottom","marginLeft","marginBlock","marginBlockStart","marginBlockEnd","marginInline","marginInlineStart","marginInlineEnd","fontSize","backgroundPositionX","backgroundPositionY"]);function xX(t,e){for(let n=0;n<t.length;n++)typeof t[n]=="number"&&vX.has(e)&&(t[n]=t[n]+"px")}function SX(t,e,n){if(t==null)return[];if(t instanceof EventTarget)return[t];if(typeof t=="string"){let i=document;e&&(i=e.current);const s=i.querySelectorAll(t);return s?Array.from(s):[]}return Array.from(t).filter(i=>i!=null)}function aO(t,e){const n=window.getComputedStyle(t);return t5(e)?n.getPropertyValue(e):n[e]}function wX(t,e,n,i){if(t==null)return[];const s=SX(t,i),a=s.length,o=[];for(let c=0;c<a;c++){const d=s[c],f={...n};typeof f.delay=="function"&&(f.delay=f.delay(c,a));for(const p in e){let g=e[p];Array.isArray(g)||(g=[g]);const y={...bX(f,p)};y.duration&&(y.duration=W2(y.duration)),y.delay&&(y.delay=W2(y.delay));const _=_X(d),v=gX(p,y.pseudoElement||""),x=_.get(v);x&&x.stop(),o.push({map:_,key:v,unresolvedKeyframes:g,options:{...y,element:d,name:p,allowFlatten:!f.type&&!f.ease}})}}for(let c=0;c<o.length;c++){const{unresolvedKeyframes:d,options:f}=o[c],{element:p,name:g,pseudoElement:y}=f;!y&&d[0]===null&&(d[0]=aO(p,g)),oX(d),xX(d,g),!y&&d.length<2&&d.unshift(aO(p,g)),f.keyframes=d}const r=[];for(let c=0;c<o.length;c++){const{map:d,key:f,options:p}=o[c],g=new fX(p);d.set(f,g),g.finished.finally(()=>d.delete(f)),r.push(g)}return r}const kX=t=>{function e(n,i,s){return new pX(wX(n,i,s,t))}return e},Yu=kX(),a5=S.createContext(null);function sp(){return S.useContext(a5)}const oO=.35,Jg=60,rO=.42,CX=100,AX=-30,NX=100,TX=-30,MX=.72,LX="-14px 0 24px rgba(0, 0, 0, 0.16)",lO=t=>1-(1-t)**3,cO=t=>Math.sqrt(1-(t-1)**2),Du=t=>`translate3d(0px, ${t}px, 0px)`,Fu=(t,e)=>`translate3d(${t}%, ${e}px, 0px)`,Zg=t=>{t&&(t.style.removeProperty("transform"),t.style.removeProperty("opacity"),t.style.removeProperty("box-shadow"))};function OX({render:t,getRouteOrder:e,getTransitionVariant:n,scrollContainerRef:i}){const s=$n(),a=S.useRef(null),o=S.useRef(null),r=S.useRef("forward"),c=S.useRef("vertical"),d=S.useRef(0),f=S.useRef(0),p=S.useRef(new Map),g=S.useRef(null),[y,_]=S.useState(!1),[v,x]=S.useState(()=>[{key:s.key,location:s,status:"current"}]),k=v.find(M=>M.status==="current")??v[v.length-1],C=k?.key??s.key,N=k?.location.pathname,L=S.useCallback(()=>i?.current?i.current:typeof document>"u"?null:document.scrollingElement,[i]);return S.useLayoutEffect(()=>{if(y||s.key===C||N===s.pathname)return;const O=L()?.scrollTop??0;d.current=O,p.current.set(C,O),f.current=p.current.get(s.key)??0;const T=Y=>{if(!e||!Y)return null;const X=e(Y);return typeof X=="number"&&X>=0?X:null},P=T(N),E=T(s.pathname),R=n?n(N??"",s.pathname):"vertical";let q=P===null||E===null||P===E||E>P?"forward":"backward";R==="ios"&&v.some(Y=>Y.key===s.key)&&(q="backward"),r.current=q,c.current=R;const I=(()=>{if(R!=="ios"||q!=="backward")return!1;const Y=B=>B.split("/").filter(Boolean).filter(H=>H.length>0),X=Y(N??""),K=Y(s.pathname);return!X.length||!K.length?!1:X[0]===K[0]&&K.length===1})();x(Y=>{const X=c.current,K=r.current,B=Y.findIndex(U=>U.status==="current"),H=B>=0?B:Y.length-1,z=Y[H],Q=Y.filter((U,$)=>$!==H).map(U=>({...U,status:"stacked"})),W={key:s.key,location:s,status:"current"};if(!z)return g.current=[W],[W];if(X==="ios"){if(K==="forward"){const $={...z,status:"exiting"},te={...z,status:"stacked"};return g.current=[...Q,te,W],[...Q,$,W]}const U=Y.findIndex($=>$.key===s.key);if(U!==-1){const $=Y.slice(0,U+1).map((ie,F)=>{const ee=F===U;return{...ie,location:ee?s:ie.location,status:ee?"current":"stacked"}});if(I)return g.current=$,$;const te={...z,status:"exiting"};return g.current=$,[...$,te]}}if(I)return g.current=[W],[W];const D={...z,status:"exiting"};return g.current=[W],[D,W]}),_(!0)},[y,s,C,N,e,n,L,v]),S.useLayoutEffect(()=>{if(!y||!a.current)return;const M=a.current,O=o.current,T=c.current;Zg(M),Zg(O);const P=L(),E=d.current,R=f.current;P&&E!==R&&P.scrollTo({top:R,left:0,behavior:"auto"});const I=r.current==="forward",Y=I?Jg:-Jg,X=I?-Jg:Jg,K=R-E,B=[];let H=!1,z=!1;const Q=()=>{if(z)return;z=!0;const W=g.current;g.current=null,x(D=>W??D.filter(U=>U.status!=="exiting")),_(!1),Zg(M),Zg(O)};if(T==="ios"){const W=I?AX:NX,D=I?CX:TX;O&&(O.style.transform=Fu(0,K),O.style.opacity="1"),M.style.transform=Fu(D,0),M.style.opacity="1";const U=I?M:O;U&&(U.style.boxShadow=LX),O&&B.push(Yu(O,{transform:[Fu(0,K),Fu(W,K)],opacity:[1,I?MX:1]},{duration:rO,ease:lO})),B.push(Yu(M,{transform:[Fu(D,0),Fu(0,0)],opacity:[1,1]},{duration:rO,ease:lO}))}else O&&(O.style.transform=Du(K),B.push(Yu(O,{transform:[Du(K),Du(K+X)],opacity:[1,0]},{duration:oO,ease:cO}))),M.style.transform=Du(Y),M.style.opacity="0",B.push(Yu(M,{transform:[Du(Y),Du(0)],opacity:[0,1]},{duration:oO,ease:cO}));return B.length?Promise.all(B.map(W=>W.finished.catch(()=>{}))).then(()=>{H||Q()}):Q(),()=>{H=!0,B.forEach(W=>W.stop())}},[y,L]),h.jsx("div",{className:`page-transition${y?" page-transition--animating":""}`,children:(()=>{const M=v.findIndex(P=>P.status==="current"),O=M===-1?v.length-1:M,T=v.slice(0,O).map((P,E)=>({layer:P,index:E})).reverse().find(({layer:P})=>P.status==="stacked")?.index;return v.map((P,E)=>{const R=P.status==="stacked"&&E===T;return h.jsx("div",{className:["page-transition__layer",P.status==="exiting"?"page-transition__layer--exit":"",P.status==="stacked"?"page-transition__layer--stacked":"",R?"page-transition__layer--stacked-keep":""].filter(Boolean).join(" "),"aria-hidden":P.status!=="current",inert:P.status!=="current",ref:P.status==="exiting"?o:P.status==="current"?a:void 0,children:h.jsx(a5.Provider,{value:{status:P.status},children:t(P.location)})},P.key)})})()})}const PX="DashboardPage-module__dashboard___c-JEy",EX="DashboardPage-module__backgroundOrbs___ZlInx",jX="DashboardPage-module__orb1___msZV4",RX="DashboardPage-module__orb2___rkxwt",DX="DashboardPage-module__hero___4gtI-",FX="DashboardPage-module__heroWatermark___eoPCs",IX="DashboardPage-module__heroContent___rRgSn",BX="DashboardPage-module__heroGreeting___LkC-3",UX="DashboardPage-module__heroTitle___583C6",qX="DashboardPage-module__heroCaring___4RIkE",zX="DashboardPage-module__heroMeta___-2WgN",KX="DashboardPage-module__dateTimeBlock___nv-GA",VX="DashboardPage-module__time___r-JWY",HX="DashboardPage-module__date___fd2-M",WX="DashboardPage-module__connectionPill___Jf-zm",GX="DashboardPage-module__statusDot___4w7W-",$X="DashboardPage-module__connected___CeELY",XX="DashboardPage-module__connecting___j03PZ",QX="DashboardPage-module__disconnected___3l11q",YX="DashboardPage-module__pillText___HO7gg",JX="DashboardPage-module__buildDate___zr4hY",ZX="DashboardPage-module__statsSection___E5LH9",eQ="DashboardPage-module__sectionHeading___j2-4e",tQ="DashboardPage-module__bentoGrid___L3GMN",nQ="DashboardPage-module__bentoCard___fZ0NR",iQ="DashboardPage-module__bentoLarge___OI8ha",sQ="DashboardPage-module__bentoValue___4z4aG",aQ="DashboardPage-module__bentoIcon___yMz7f",oQ="DashboardPage-module__bentoContent___7qrNg",rQ="DashboardPage-module__bentoLabel___s0-b2",lQ="DashboardPage-module__bentoSublabel___LRcJB",cQ="DashboardPage-module__configSection___G0W4F",uQ="DashboardPage-module__configPillGrid___Ie76m",dQ="DashboardPage-module__configPill___C2Adr",hQ="DashboardPage-module__configPillWide___2Bkpx",fQ="DashboardPage-module__configPillLabel___eK-LR",mQ="DashboardPage-module__configPillValue___k6VI3",pQ="DashboardPage-module__on___kqLdD",gQ="DashboardPage-module__off___gkz6F",_Q="DashboardPage-module__configPillMono___pEsgq",yQ="DashboardPage-module__configBadge___TrJTP",bQ="DashboardPage-module__configBadgeRoundRobin___wgPLB",vQ="DashboardPage-module__configBadgeFillFirst___N5vai",xQ="DashboardPage-module__configBadgeUnknown___Jo3zP",SQ="DashboardPage-module__viewMoreLink___wKvoJ",Ze={dashboard:PX,backgroundOrbs:EX,orb1:jX,orb2:RX,hero:DX,heroWatermark:FX,heroContent:IX,heroGreeting:BX,heroTitle:UX,heroCaring:qX,heroMeta:zX,dateTimeBlock:KX,time:VX,date:HX,connectionPill:WX,statusDot:GX,connected:$X,connecting:XX,disconnected:QX,pillText:YX,buildDate:JX,statsSection:ZX,sectionHeading:eQ,bentoGrid:tQ,bentoCard:nQ,bentoLarge:iQ,bentoValue:sQ,bentoIcon:aQ,bentoContent:oQ,bentoLabel:rQ,bentoSublabel:lQ,configSection:cQ,configPillGrid:uQ,configPill:dQ,configPillWide:hQ,configPillLabel:fQ,configPillValue:mQ,on:pQ,off:gQ,configPillMono:_Q,configBadge:yQ,configBadgeRoundRobin:bQ,configBadgeFillFirst:vQ,configBadgeUnknown:xQ,viewMoreLink:SQ};function uO(){const t=new Date().getHours();return t>=5&&t<12?"morning":t>=12&&t<17?"afternoon":t>=17&&t<21?"evening":"night"}function dO(){const{t,i18n:e}=nt(),n=en(Q=>Q.connectionStatus),i=en(Q=>Q.serverVersion),s=en(Q=>Q.serverBuildDate),a=en(Q=>Q.apiBase),o=It(Q=>Q.config),r=vr(Q=>Q.models),c=vr(Q=>Q.loading),d=vr(Q=>Q.fetchModels),[f,p]=S.useState({apiKeys:null,authFiles:null}),[g,y]=S.useState({gemini:null,codex:null,claude:null,openai:null}),[_,v]=S.useState(!0),[x,k]=S.useState(uO),[C,N]=S.useState(()=>new Date),L=S.useRef([]);S.useEffect(()=>{L.current=[]},[a,o?.apiKeys]),S.useEffect(()=>{const Q=setInterval(()=>{k(uO()),N(new Date)},6e4);return()=>clearInterval(Q)},[]);const M=Q=>{if(!Array.isArray(Q))return[];const W=new Set,D=[];return Q.forEach(U=>{const $=U!==null&&typeof U=="object"&&!Array.isArray(U)?U:null,te=typeof U=="string"?U:$?$["api-key"]??$.apiKey??$.key??$.Key:"",ie=String(te??"").trim();!ie||W.has(ie)||(W.add(ie),D.push(ie))}),D},O=S.useCallback(async()=>{if(L.current.length)return L.current;const Q=M(o?.apiKeys);if(Q.length)return L.current=Q,Q;try{const W=await z2.list(),D=M(W);return D.length&&(L.current=D),D}catch{return[]}},[o?.apiKeys]),T=S.useCallback(async()=>{if(!(n!=="connected"||!a))try{const W=(await O())[0];await d(a,W)}catch{}},[n,a,O,d]);S.useEffect(()=>{n==="connected"?((async()=>{v(!0);try{const[W,D,U,$,te,ie]=await Promise.allSettled([z2.list(),At.list(),_i.getGeminiKeys(),_i.getCodexConfigs(),_i.getClaudeConfigs(),_i.getOpenAIProviders()]);p({apiKeys:W.status==="fulfilled"?W.value.length:null,authFiles:D.status==="fulfilled"?D.value.files.length:null}),y({gemini:U.status==="fulfilled"?U.value.length:null,codex:$.status==="fulfilled"?$.value.length:null,claude:te.status==="fulfilled"?te.value.length:null,openai:ie.status==="fulfilled"?ie.value.length:null})}finally{v(!1)}})(),T()):v(!1)},[n,T]);const P=g.gemini!==null&&g.codex!==null&&g.claude!==null&&g.openai!==null,E=g.gemini!==null||g.codex!==null||g.claude!==null||g.openai!==null,R=P?(g.gemini??0)+(g.codex??0)+(g.claude??0)+(g.openai??0):0,q=[{label:t("dashboard.management_keys"),value:f.apiKeys??"-",icon:h.jsx(O2,{size:24}),path:"/config",loading:_&&f.apiKeys===null,sublabel:t("nav.config_management")},{label:t("nav.ai_providers"),value:_?"-":P?R:"-",icon:h.jsx(Az,{size:24}),path:"/ai-providers",loading:_,sublabel:E?t("dashboard.provider_keys_detail",{gemini:g.gemini??"-",codex:g.codex??"-",claude:g.claude??"-",openai:g.openai??"-"}):void 0},{label:t("nav.auth_files"),value:f.authFiles??"-",icon:h.jsx(Mz,{size:24}),path:"/auth-files",loading:_&&f.authFiles===null,sublabel:t("dashboard.oauth_credentials")},{label:t("dashboard.available_models"),value:c?"-":r.length,icon:h.jsx(Qu,{size:24}),path:"/system",loading:c,sublabel:t("dashboard.available_models_desc")}],I=o?.routingStrategy?.trim()||"",Y=I?I==="round-robin"?t("basic_settings.routing_strategy_round_robin"):I==="fill-first"?t("basic_settings.routing_strategy_fill_first"):I:"-",X=I?I==="round-robin"?Ze.configBadgeRoundRobin:I==="fill-first"?Ze.configBadgeFillFirst:Ze.configBadgeUnknown:Ze.configBadgeUnknown,K=`dashboard.greeting_${x}`,B=`dashboard.caring_${x}`,H=C.toLocaleDateString(e.language,{weekday:"long",year:"numeric",month:"long",day:"numeric"}),z=C.toLocaleTimeString(e.language,{hour:"2-digit",minute:"2-digit"});return h.jsxs("div",{className:Ze.dashboard,children:[h.jsxs("div",{className:Ze.backgroundOrbs,"aria-hidden":"true",children:[h.jsx("div",{className:Ze.orb1}),h.jsx("div",{className:Ze.orb2})]}),h.jsxs("section",{className:Ze.hero,children:[h.jsx("span",{className:Ze.heroWatermark,"aria-hidden":"true",children:"OVERVIEW"}),h.jsxs("div",{className:Ze.heroContent,children:[h.jsx("span",{className:Ze.heroGreeting,children:t(K)}),h.jsx("h1",{className:Ze.heroTitle,children:t("dashboard.welcome_back")}),h.jsx("p",{className:Ze.heroCaring,children:t(B)})]}),h.jsxs("div",{className:Ze.heroMeta,children:[h.jsxs("div",{className:Ze.dateTimeBlock,children:[h.jsx("span",{className:Ze.time,children:z}),h.jsx("span",{className:Ze.date,children:H})]}),h.jsxs("div",{className:Ze.connectionPill,children:[h.jsx("span",{className:`${Ze.statusDot} ${n==="connected"?Ze.connected:n==="connecting"?Ze.connecting:Ze.disconnected}`}),h.jsx("span",{className:Ze.pillText,children:i?`v${i.trim().replace(/^[vV]+/,"")}`:t(n==="connected"?"common.connected":n==="connecting"?"common.connecting":"common.disconnected")})]}),s&&h.jsx("span",{className:Ze.buildDate,children:new Date(s).toLocaleDateString(e.language)})]})]}),h.jsxs("section",{className:Ze.statsSection,children:[h.jsx("h2",{className:Ze.sectionHeading,children:t("dashboard.system_overview")}),h.jsx("div",{className:Ze.bentoGrid,children:q.map((Q,W)=>h.jsxs(C0,{to:Q.path,className:`${Ze.bentoCard} ${W===0?Ze.bentoLarge:""}`,style:{animationDelay:`${W*80}ms`},children:[h.jsx("div",{className:Ze.bentoIcon,children:Q.icon}),h.jsxs("div",{className:Ze.bentoContent,children:[h.jsx("span",{className:Ze.bentoValue,children:Q.loading?"...":Q.value}),h.jsx("span",{className:Ze.bentoLabel,children:Q.label}),Q.sublabel&&!Q.loading&&h.jsx("span",{className:Ze.bentoSublabel,children:Q.sublabel})]})]},Q.path))})]}),o&&h.jsxs("section",{className:Ze.configSection,children:[h.jsx("h2",{className:Ze.sectionHeading,children:t("dashboard.current_config")}),h.jsxs("div",{className:Ze.configPillGrid,children:[h.jsxs("div",{className:Ze.configPill,children:[h.jsx("span",{className:Ze.configPillLabel,children:t("basic_settings.debug_enable")}),h.jsx("span",{className:`${Ze.configPillValue} ${o.debug?Ze.on:Ze.off}`,children:o.debug?t("common.yes"):t("common.no")})]}),h.jsxs("div",{className:Ze.configPill,children:[h.jsx("span",{className:Ze.configPillLabel,children:t("basic_settings.usage_statistics_enable")}),h.jsx("span",{className:`${Ze.configPillValue} ${o.usageStatisticsEnabled?Ze.on:Ze.off}`,children:o.usageStatisticsEnabled?t("common.yes"):t("common.no")})]}),h.jsxs("div",{className:Ze.configPill,children:[h.jsx("span",{className:Ze.configPillLabel,children:t("basic_settings.logging_to_file_enable")}),h.jsx("span",{className:`${Ze.configPillValue} ${o.loggingToFile?Ze.on:Ze.off}`,children:o.loggingToFile?t("common.yes"):t("common.no")})]}),h.jsxs("div",{className:Ze.configPill,children:[h.jsx("span",{className:Ze.configPillLabel,children:t("basic_settings.retry_count_label")}),h.jsx("span",{className:Ze.configPillValue,children:o.requestRetry??0})]}),h.jsxs("div",{className:Ze.configPill,children:[h.jsx("span",{className:Ze.configPillLabel,children:t("basic_settings.ws_auth_enable")}),h.jsx("span",{className:`${Ze.configPillValue} ${o.wsAuth?Ze.on:Ze.off}`,children:o.wsAuth?t("common.yes"):t("common.no")})]}),h.jsxs("div",{className:Ze.configPill,children:[h.jsx("span",{className:Ze.configPillLabel,children:t("dashboard.routing_strategy")}),h.jsx("span",{className:`${Ze.configBadge} ${X}`,children:Y})]}),o.proxyUrl&&h.jsxs("div",{className:`${Ze.configPill} ${Ze.configPillWide}`,children:[h.jsx("span",{className:Ze.configPillLabel,children:t("basic_settings.proxy_url_label")}),h.jsx("span",{className:Ze.configPillMono,children:o.proxyUrl})]})]}),h.jsxs(C0,{to:"/config",className:Ze.viewMoreLink,children:[t("dashboard.edit_settings")," →"]})]})]})}function jt({title:t,extra:e,children:n,className:i}){return h.jsxs("div",{className:i?`card ${i}`:"card",children:[(t||e)&&h.jsxs("div",{className:"card-header",children:[h.jsx("div",{className:"title",children:t}),e]}),n]})}const o5="data:image/svg+xml,%3csvg%20width='400'%20height='400'%20viewBox='0%200%2028%2028'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M13.9197%2013.61L17.3816%2026.566L14.242%2027.4049L11.2645%2016.2643L0.119926%2013.2906L0.957817%2010.15L13.9197%2013.61Z'%20fill='%23F34E3F'/%3e%3cpath%20d='M13.7391%2016.0892L4.88169%2024.9056L2.58872%2022.6019L11.4461%2013.7865L13.7391%2016.0892Z'%20fill='%23F34E3F'/%3e%3cpath%20d='M18.9386%208.58315L22.4005%2021.5392L19.2609%2022.3781L16.2833%2011.2374L5.13879%208.26381L5.97668%205.12318L18.9386%208.58315Z'%20fill='%23F34E3F'/%3e%3cpath%20d='M23.9803%203.55632L27.4422%2016.5124L24.3025%2017.3512L21.325%206.21062L10.1805%203.23698L11.0183%200.0963593L23.9803%203.55632Z'%20fill='%23F34E3F'/%3e%3c/svg%3e",wQ="AiProvidersPage-module__container___y-jfS",kQ="AiProvidersPage-module__cardTitle___vO4i3",CQ="AiProvidersPage-module__cardTitleIcon___-rTw0",AQ="AiProvidersPage-module__pageTitle___DoSv8",NQ="AiProvidersPage-module__content___E2Czu",TQ="AiProvidersPage-module__cardStats___rELY1",MQ="AiProvidersPage-module__statPill___d812A",LQ="AiProvidersPage-module__statSuccess___5dRtj",OQ="AiProvidersPage-module__statFailure___krDjY",PQ="AiProvidersPage-module__fieldRow___XK6hX",EQ="AiProvidersPage-module__fieldLabel___cLX9f",jQ="AiProvidersPage-module__fieldValue___VdFCH",RQ="AiProvidersPage-module__headerBadgeList___kwkIM",DQ="AiProvidersPage-module__headerBadge___eN0Fd",FQ="AiProvidersPage-module__modelTagList___shUnj",IQ="AiProvidersPage-module__modelCountLabel___uV8s-",BQ="AiProvidersPage-module__modelTag___k-VuJ",UQ="AiProvidersPage-module__modelName___-6r4h",qQ="AiProvidersPage-module__modelAlias___ljQjM",zQ="AiProvidersPage-module__excludedModelTag___emTfi",KQ="AiProvidersPage-module__excludedModelsSection___XFykq",VQ="AiProvidersPage-module__excludedModelsLabel___Drdds",HQ="AiProvidersPage-module__apiKeyEntriesSection___60ydj",WQ="AiProvidersPage-module__apiKeyEntriesLabel___c5W8h",GQ="AiProvidersPage-module__apiKeyEntryList___-xrgk",$Q="AiProvidersPage-module__apiKeyEntryCard___Y5gRi",XQ="AiProvidersPage-module__apiKeyEntryIndex___h8oWW",QQ="AiProvidersPage-module__apiKeyEntryKey___JgU0c",YQ="AiProvidersPage-module__apiKeyEntryProxy___gy9Vu",JQ="AiProvidersPage-module__apiKeyEntryStats___Whq5E",ZQ="AiProvidersPage-module__apiKeyEntryStat___rwvkB",eY="AiProvidersPage-module__apiKeyEntryStatSuccess___GXIwG",tY="AiProvidersPage-module__apiKeyEntryStatFailure___XV9wg",nY="AiProvidersPage-module__modelDiscoveryList___HKeOb",iY="AiProvidersPage-module__modelDiscoveryRow___3J8pc",sY="AiProvidersPage-module__modelDiscoverySelectionLabel___GsF2O",aY="AiProvidersPage-module__modelDiscoveryRowSelected___VLfIp",oY="AiProvidersPage-module__modelDiscoveryMeta___7D6Y5",rY="AiProvidersPage-module__modelDiscoveryName___yf70V",lY="AiProvidersPage-module__modelDiscoveryAlias___N2nU7",cY="AiProvidersPage-module__modelDiscoveryDesc___nsrtd",uY="AiProvidersPage-module__modelDiscoveryToolbar___FOjvS",dY="AiProvidersPage-module__modelDiscoveryToolbarActions___a8qmb",hY="AiProvidersPage-module__modelDiscoverySelectionSummary___7PhM7",fY="AiProvidersPage-module__statusBar___gAS9s",mY="AiProvidersPage-module__statusBlocks___RESqk",pY="AiProvidersPage-module__statusBlockWrapper___crE7L",gY="AiProvidersPage-module__statusBlock___nUV1s",_Y="AiProvidersPage-module__statusBlockActive___MgbMs",yY="AiProvidersPage-module__statusBlockIdle___WEMXo",bY="AiProvidersPage-module__statusTooltip___leV9X",vY="AiProvidersPage-module__statusTooltipLeft___avU77",xY="AiProvidersPage-module__statusTooltipRight___k2gcI",SY="AiProvidersPage-module__tooltipTime___SU0zH",wY="AiProvidersPage-module__tooltipStats___c6Xho",kY="AiProvidersPage-module__tooltipSuccess___Nl3Pt",CY="AiProvidersPage-module__tooltipFailure___1XMCP",AY="AiProvidersPage-module__tooltipRate___YDCOe",NY="AiProvidersPage-module__statusRate___mqcEs",TY="AiProvidersPage-module__statusRateHigh___GpDhl",MY="AiProvidersPage-module__statusRateMedium___hdtEj",LY="AiProvidersPage-module__statusRateLow___mNI2c",OY="AiProvidersPage-module__openaiEditForm___axTov",PY="AiProvidersPage-module__modelConfigSection___0v-e8",EY="AiProvidersPage-module__sectionHint___-aBFT",jY="AiProvidersPage-module__openaiModelsContent___yEApy",RY="AiProvidersPage-module__openaiModelsEndpointSection___FvBIQ",DY="AiProvidersPage-module__openaiModelsEndpointLabel___-rOEU",FY="AiProvidersPage-module__openaiModelsEndpointControls___pLkMs",IY="AiProvidersPage-module__openaiModelsEndpointInput___4xH3Y",BY="AiProvidersPage-module__modelConfigHeader___bXtq4",UY="AiProvidersPage-module__modelConfigTitle___ppVRn",qY="AiProvidersPage-module__modelConfigToolbar___nrb6R",zY="AiProvidersPage-module__modelInputList___AbYq6",KY="AiProvidersPage-module__modelInputRow___j-ubV",VY="AiProvidersPage-module__modelInputField___QdqkU",HY="AiProvidersPage-module__modelRowRemoveButton___lEFpT",WY="AiProvidersPage-module__modelTestPanel___SyW9P",GY="AiProvidersPage-module__modelTestMeta___XMH-g",$Y="AiProvidersPage-module__modelTestLabel___HqcWx",XY="AiProvidersPage-module__modelTestHint___kUgyp",QY="AiProvidersPage-module__modelTestControls___yPmI0",YY="AiProvidersPage-module__keyEntriesSection___XD0xH",JY="AiProvidersPage-module__keyEntriesHeader___yZxok",ZY="AiProvidersPage-module__keyEntriesTitle___MEybu",eJ="AiProvidersPage-module__keyEntriesHint___gn0EN",tJ="AiProvidersPage-module__keyEntriesList___Gtpin",nJ="AiProvidersPage-module__keyEntriesToolbar___eSzyC",iJ="AiProvidersPage-module__keyEntriesCount___e6jgL",sJ="AiProvidersPage-module__keyTableShell___0nNxe",aJ="AiProvidersPage-module__keyTableHeader___ZbWah",oJ="AiProvidersPage-module__keyTableRow___0MOQW",rJ="AiProvidersPage-module__keyTableColIndex___U12X-",lJ="AiProvidersPage-module__keyTableColStatus___Dzw88",cJ="AiProvidersPage-module__keyTableColKey___V9Md3",uJ="AiProvidersPage-module__keyTableColProxy___9hcue",dJ="AiProvidersPage-module__keyTableColAction___oZsbE",hJ="AiProvidersPage-module__keyTableInput___bo5JN",fJ="AiProvidersPage-module__addKeyButton___xuMah",mJ="AiProvidersPage-module__openaiTestSelect___7-Upw",pJ="AiProvidersPage-module__modelTestAllButton___SRL9M",gJ="AiProvidersPage-module__statusIconSpin___DC8Ww",V={container:wQ,cardTitle:kQ,cardTitleIcon:CQ,pageTitle:AQ,content:NQ,cardStats:TQ,statPill:MQ,statSuccess:LQ,statFailure:OQ,fieldRow:PQ,fieldLabel:EQ,fieldValue:jQ,headerBadgeList:RQ,headerBadge:DQ,modelTagList:FQ,modelCountLabel:IQ,modelTag:BQ,modelName:UQ,modelAlias:qQ,excludedModelTag:zQ,excludedModelsSection:KQ,excludedModelsLabel:VQ,apiKeyEntriesSection:HQ,apiKeyEntriesLabel:WQ,apiKeyEntryList:GQ,apiKeyEntryCard:$Q,apiKeyEntryIndex:XQ,apiKeyEntryKey:QQ,apiKeyEntryProxy:YQ,apiKeyEntryStats:JQ,apiKeyEntryStat:ZQ,apiKeyEntryStatSuccess:eY,apiKeyEntryStatFailure:tY,modelDiscoveryList:nY,modelDiscoveryRow:iY,modelDiscoverySelectionLabel:sY,modelDiscoveryRowSelected:aY,modelDiscoveryMeta:oY,modelDiscoveryName:rY,modelDiscoveryAlias:lY,modelDiscoveryDesc:cY,modelDiscoveryToolbar:uY,modelDiscoveryToolbarActions:dY,modelDiscoverySelectionSummary:hY,statusBar:fY,statusBlocks:mY,statusBlockWrapper:pY,statusBlock:gY,statusBlockActive:_Y,statusBlockIdle:yY,statusTooltip:bY,statusTooltipLeft:vY,statusTooltipRight:xY,tooltipTime:SY,tooltipStats:wY,tooltipSuccess:kY,tooltipFailure:CY,tooltipRate:AY,statusRate:NY,statusRateHigh:TY,statusRateMedium:MY,statusRateLow:LY,openaiEditForm:OY,modelConfigSection:PY,sectionHint:EY,openaiModelsContent:jY,openaiModelsEndpointSection:RY,openaiModelsEndpointLabel:DY,openaiModelsEndpointControls:FY,openaiModelsEndpointInput:IY,modelConfigHeader:BY,modelConfigTitle:UY,modelConfigToolbar:qY,modelInputList:zY,modelInputRow:KY,modelInputField:VY,modelRowRemoveButton:HY,modelTestPanel:WY,modelTestMeta:GY,modelTestLabel:$Y,modelTestHint:XY,modelTestControls:QY,keyEntriesSection:YY,keyEntriesHeader:JY,keyEntriesTitle:ZY,keyEntriesHint:eJ,keyEntriesList:tJ,keyEntriesToolbar:nJ,keyEntriesCount:iJ,keyTableShell:sJ,keyTableHeader:aJ,keyTableRow:oJ,keyTableColIndex:rJ,keyTableColStatus:lJ,keyTableColKey:cJ,keyTableColProxy:uJ,keyTableColAction:dJ,keyTableInput:hJ,addKeyButton:fJ,openaiTestSelect:mJ,modelTestAllButton:pJ,statusIconSpin:gJ};function _J({config:t,loading:e,disableControls:n,isSwitching:i,onEdit:s}){const{t:a}=nt(),o=e&&!t;return h.jsx(h.Fragment,{children:h.jsx(jt,{title:h.jsxs("span",{className:V.cardTitle,children:[h.jsx("img",{src:o5,alt:"",className:V.cardTitleIcon}),a("ai_providers.ampcode_title")]}),extra:h.jsx(he,{size:"sm",onClick:s,disabled:n||e||i,children:a("common.edit")}),children:o?h.jsx("div",{className:"hint",children:a("common.loading")}):h.jsxs(h.Fragment,{children:[h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[a("ai_providers.ampcode_upstream_url_label"),":"]}),h.jsx("span",{className:V.fieldValue,children:t?.upstreamUrl||a("common.not_set")})]}),h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[a("ai_providers.ampcode_upstream_api_key_label"),":"]}),h.jsx("span",{className:V.fieldValue,children:t?.upstreamApiKey?Pa(t.upstreamApiKey):a("common.not_set")})]}),h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[a("ai_providers.ampcode_force_model_mappings_label"),":"]}),h.jsx("span",{className:V.fieldValue,children:t?.forceModelMappings??!1?a("common.yes"):a("common.no")})]}),h.jsxs("div",{className:V.fieldRow,style:{marginTop:8},children:[h.jsxs("span",{className:V.fieldLabel,children:[a("ai_providers.ampcode_model_mappings_count"),":"]}),h.jsx("span",{className:V.fieldValue,children:t?.modelMappings?.length||0})]}),h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[a("ai_providers.ampcode_upstream_api_keys_count"),":"]}),h.jsx("span",{className:V.fieldValue,children:t?.upstreamApiKeys?.length||0})]}),t?.modelMappings?.length?h.jsxs("div",{className:V.modelTagList,children:[t.modelMappings.slice(0,5).map(r=>h.jsxs("span",{className:V.modelTag,children:[h.jsx("span",{className:V.modelName,children:r.from}),h.jsx("span",{className:V.modelAlias,children:r.to})]},`${r.from}→${r.to}`)),t.modelMappings.length>5&&h.jsx("span",{className:V.modelTag,children:h.jsxs("span",{className:V.modelName,children:["+",t.modelMappings.length-5]})})]}):null]})})})}const yJ="ToggleSwitch-module__root___IUqKD",bJ="ToggleSwitch-module__labelLeft___Pc6fJ",vJ="ToggleSwitch-module__label___4iQkR",xJ="ToggleSwitch-module__disabled___GNGHj",SJ="ToggleSwitch-module__track___zFtXx",wJ="ToggleSwitch-module__thumb___gQ45C",Iu={root:yJ,labelLeft:bJ,label:vJ,disabled:xJ,track:SJ,thumb:wJ};function xi({checked:t,onChange:e,label:n,ariaLabel:i,disabled:s=!1,labelPosition:a="right"}){const o=c=>{e(c.target.checked)},r=[Iu.root,a==="left"?Iu.labelLeft:"",s?Iu.disabled:""].filter(Boolean).join(" ");return h.jsxs("label",{className:r,children:[h.jsx("input",{type:"checkbox",checked:t,onChange:o,disabled:s,"aria-label":i}),h.jsx("span",{className:Iu.track,children:h.jsx("span",{className:Iu.thumb})}),n&&h.jsx("span",{className:Iu.label,children:n})]})}const ap="data:image/svg+xml,%3csvg%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eClaude%3c/title%3e%3cpath%20d='M4.709%2015.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0%2011.784l.055-.352.48-.321.686.06%201.52.103%202.278.158%201.652.097%202.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686%201.908%201.476%202.491%201.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97%202.97%200%2001-.104-.729L6.283.134%206.696%200l.996.134.42.364.62%201.414%201.002%202.229%201.555%203.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286%201.851-.559%202.903-.364%201.942h.212l.243-.242.985-1.306%201.652-2.064.73-.82.85-.904.547-.431h1.033l.76%201.129-.34%201.166-1.064%201.347-.881%201.142-1.264%201.7-.79%201.36.073.11.188-.02%202.856-.606%201.543-.28%201.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061%201.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093%201.068%202.006%201.81%202.509%202.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649%202.345%203.521.122%201.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674%207.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434%201.967-2.18%202.945-1.726%201.845-.414.164-.717-.37.067-.662.401-.589%202.388-3.036%201.44-1.882.93-1.086-.006-.158h-.055L4.132%2018.56l-1.13.146-.487-.456.061-.746.231-.243%201.908-1.312-.006.006z'%20fill='%23D97757'%20fill-rule='nonzero'%3e%3c/path%3e%3c/svg%3e";function os({title:t,description:e,action:n}){return h.jsxs("div",{className:"empty-state",children:[h.jsxs("div",{className:"empty-content",children:[h.jsx("div",{className:"empty-icon","aria-hidden":"true",children:h.jsx(Pz,{size:20})}),h.jsxs("div",{children:[h.jsx("div",{className:"empty-title",children:t}),e&&h.jsx("div",{className:"empty-desc",children:e})]})]}),n&&h.jsx("div",{className:"empty-action",children:n})]})}function op({items:t,loading:e,keyField:n,renderContent:i,onEdit:s,onDelete:a,emptyTitle:o,emptyDescription:r,deleteLabel:c,actionsDisabled:d=!1,getRowDisabled:f,renderExtraActions:p}){const{t:g}=nt();return e&&t.length===0?h.jsx("div",{className:"hint",children:g("common.loading")}):t.length?h.jsx("div",{className:"item-list",children:t.map((y,_)=>{const v=f?f(y,_):!1;return h.jsxs("div",{className:"item-row",style:v?{opacity:.6}:void 0,children:[h.jsx("div",{className:"item-meta",children:i(y,_)}),h.jsxs("div",{className:"item-actions",children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>s(_),disabled:d,children:g("common.edit")}),h.jsx(he,{variant:"danger",size:"sm",onClick:()=>a(_),disabled:d,children:c||g("common.delete")}),p?p(y,_):null]})]},n(y,_))})}):h.jsx(os,{title:o,description:r})}const hO=[{r:239,g:68,b:68},{r:250,g:204,b:21},{r:34,g:197,b:94}];function kJ(t){const e=Math.max(0,Math.min(1,t)),n=e<.5?0:1,i=n===0?e*2:(e-.5)*2,s=hO[n],a=hO[n+1],o=Math.round(s.r+(a.r-s.r)*i),r=Math.round(s.g+(a.g-s.g)*i),c=Math.round(s.b+(a.b-s.b)*i);return`rgb(${o}, ${r}, ${c})`}function fO(t){const e=new Date(t),n=e.getHours().toString().padStart(2,"0"),i=e.getMinutes().toString().padStart(2,"0");return`${n}:${i}`}function CJ(t){const e=t.toFixed(1);return`${e.endsWith(".0")?e.slice(0,-2):e}%`}function Vd({statusData:t,styles:e}){const{t:n}=nt(),i=e||V,[s,a]=S.useState(null),o=S.useRef(null),r=t.totalSuccess+t.totalFailure>0,c=r?t.successRate>=90?i.statusRateHigh:t.successRate>=50?i.statusRateMedium:i.statusRateLow:"";S.useEffect(()=>{if(s===null)return;const _=v=>{o.current&&!o.current.contains(v.target)&&a(null)};return document.addEventListener("pointerdown",_),()=>document.removeEventListener("pointerdown",_)},[s]);const d=S.useCallback((_,v)=>{_.pointerType==="mouse"&&a(v)},[]),f=S.useCallback(_=>{_.pointerType==="mouse"&&a(null)},[]),p=S.useCallback((_,v)=>{_.pointerType==="touch"&&(_.preventDefault(),a(x=>x===v?null:v))},[]),g=(_,v)=>_<=2?i.statusTooltipLeft:_>=v-3?i.statusTooltipRight:"",y=(_,v)=>{const x=_.success+_.failure,k=g(v,t.blockDetails.length),C=`${fO(_.startTime)} ${fO(_.endTime)}`;return h.jsxs("div",{className:`${i.statusTooltip} ${k}`,children:[h.jsx("span",{className:i.tooltipTime,children:C}),x>0?h.jsxs("span",{className:i.tooltipStats,children:[h.jsxs("span",{className:i.tooltipSuccess,children:[n("status_bar.success_short")," ",_.success]}),h.jsxs("span",{className:i.tooltipFailure,children:[n("status_bar.failure_short")," ",_.failure]}),h.jsxs("span",{className:i.tooltipRate,children:["(",(_.rate*100).toFixed(1),"%)"]})]}):h.jsx("span",{className:i.tooltipStats,children:n("status_bar.no_requests")})]})};return h.jsxs("div",{className:i.statusBar,children:[h.jsx("div",{className:i.statusBlocks,ref:o,children:t.blockDetails.map((_,v)=>{const x=_.rate===-1,k=x?void 0:{backgroundColor:kJ(_.rate)},C=s===v;return h.jsxs("div",{className:`${i.statusBlockWrapper} ${C?i.statusBlockActive:""}`,onPointerEnter:N=>d(N,v),onPointerLeave:f,onPointerDown:N=>p(N,v),children:[h.jsx("div",{className:`${i.statusBlock} ${x?i.statusBlockIdle:""}`,style:k}),C&&y(_,v)]},v)})}),h.jsx("span",{className:`${i.statusRate} ${c}`,children:r?CJ(t.successRate):"--"})]})}function AJ({configs:t,keyStats:e,usageDetails:n,loading:i,disableControls:s,isSwitching:a,onAdd:o,onEdit:r,onDelete:c,onToggle:d}){const{t:f}=nt(),p=s||i||a,g=s||i||a,y=S.useMemo(()=>{const _=new Map;return t.forEach(v=>{if(!v.apiKey)return;const x=_s({apiKey:v.apiKey,prefix:v.prefix});if(!x.length)return;const k=new Set(x),C=n.filter(N=>k.has(N.source));_.set(v.apiKey,Na(C))}),_},[t,n]);return h.jsx(h.Fragment,{children:h.jsx(jt,{title:h.jsxs("span",{className:V.cardTitle,children:[h.jsx("img",{src:ap,alt:"",className:V.cardTitleIcon}),f("ai_providers.claude_title")]}),extra:h.jsx(he,{size:"sm",onClick:o,disabled:p,children:f("ai_providers.claude_add_button")}),children:h.jsx(op,{items:t,loading:i,keyField:_=>_.apiKey,emptyTitle:f("ai_providers.claude_empty_title"),emptyDescription:f("ai_providers.claude_empty_desc"),onEdit:r,onDelete:c,actionsDisabled:p,getRowDisabled:_=>Sa(_.excludedModels),renderExtraActions:(_,v)=>h.jsx(xi,{label:f("ai_providers.config_toggle_label"),checked:!Sa(_.excludedModels),disabled:g,onChange:x=>void d(v,x)}),renderContent:_=>{const v=ip(_.apiKey,e,_.prefix),x=Object.entries(_.headers||{}),k=Sa(_.excludedModels),C=_.excludedModels??[],N=y.get(_.apiKey)||Na([]);return h.jsxs(S.Fragment,{children:[h.jsx("div",{className:"item-title",children:f("ai_providers.claude_item_title")}),h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("common.api_key"),":"]}),h.jsx("span",{className:V.fieldValue,children:Pa(_.apiKey)})]}),_.priority!==void 0&&h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("common.priority"),":"]}),h.jsx("span",{className:V.fieldValue,children:_.priority})]}),_.prefix&&h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("common.prefix"),":"]}),h.jsx("span",{className:V.fieldValue,children:_.prefix})]}),_.baseUrl&&h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("common.base_url"),":"]}),h.jsx("span",{className:V.fieldValue,children:_.baseUrl})]}),_.proxyUrl&&h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("common.proxy_url"),":"]}),h.jsx("span",{className:V.fieldValue,children:_.proxyUrl})]}),_.cloak&&h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("ai_providers.claude_cloak_mode_label"),":"]}),h.jsx("span",{className:V.fieldValue,children:(()=>{const L=(_.cloak?.mode??"").trim().toLowerCase();return f(`ai_providers.claude_cloak_mode_${L==="always"||L==="never"?L:"auto"}`)})()})]}),_.cloak?.strictMode?h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("ai_providers.claude_cloak_strict_label"),":"]}),h.jsx("span",{className:V.fieldValue,children:f("common.yes")})]}):null,_.cloak?.sensitiveWords?.length?h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("ai_providers.claude_cloak_sensitive_words_count"),":"]}),h.jsx("span",{className:V.fieldValue,children:_.cloak.sensitiveWords.length})]}):null,x.length>0&&h.jsx("div",{className:V.headerBadgeList,children:x.map(([L,M])=>h.jsxs("span",{className:V.headerBadge,children:[h.jsxs("strong",{children:[L,":"]})," ",M]},L))}),k&&h.jsx("div",{className:"status-badge warning",style:{marginTop:8,marginBottom:0},children:f("ai_providers.config_disabled_badge")}),_.models?.length?h.jsxs("div",{className:V.modelTagList,children:[h.jsxs("span",{className:V.modelCountLabel,children:[f("ai_providers.claude_models_count"),": ",_.models.length]}),_.models.map(L=>h.jsxs("span",{className:V.modelTag,children:[h.jsx("span",{className:V.modelName,children:L.name}),L.alias&&L.alias!==L.name&&h.jsx("span",{className:V.modelAlias,children:L.alias})]},L.name))]}):null,C.length?h.jsxs("div",{className:V.excludedModelsSection,children:[h.jsx("div",{className:V.excludedModelsLabel,children:f("ai_providers.excluded_models_count",{count:C.length})}),h.jsx("div",{className:V.modelTagList,children:C.map(L=>h.jsx("span",{className:`${V.modelTag} ${V.excludedModelTag}`,children:h.jsx("span",{className:V.modelName,children:L})},L))})]}):null,h.jsxs("div",{className:V.cardStats,children:[h.jsxs("span",{className:`${V.statPill} ${V.statSuccess}`,children:[f("stats.success"),": ",v.success]}),h.jsxs("span",{className:`${V.statPill} ${V.statFailure}`,children:[f("stats.failure"),": ",v.failure]})]}),h.jsx(Vd,{statusData:N})]})}})})})}const qy="data:image/svg+xml,%3csvg%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eCodex%3c/title%3e%3cpath%20d='M19.503%200H4.496A4.496%204.496%200%20000%204.496v15.007A4.496%204.496%200%20004.496%2024h15.007A4.496%204.496%200%200024%2019.503V4.496A4.496%204.496%200%200019.503%200z'%20fill='%23fff'%3e%3c/path%3e%3cpath%20d='M9.064%203.344a4.578%204.578%200%20012.285-.312c1%20.115%201.891.54%202.673%201.275.01.01.024.017.037.021a.09.09%200%2000.043%200%204.55%204.55%200%20013.046.275l.047.022.116.057a4.581%204.581%200%20012.188%202.399c.209.51.313%201.041.315%201.595a4.24%204.24%200%2001-.134%201.223.123.123%200%2000.03.115c.594.607.988%201.33%201.183%202.17.289%201.425-.007%202.71-.887%203.854l-.136.166a4.548%204.548%200%2001-2.201%201.388.123.123%200%2000-.081.076c-.191.551-.383%201.023-.74%201.494-.9%201.187-2.222%201.846-3.711%201.838-1.187-.006-2.239-.44-3.157-1.302a.107.107%200%2000-.105-.024c-.388.125-.78.143-1.204.138a4.441%204.441%200%2001-1.945-.466%204.544%204.544%200%2001-1.61-1.335c-.152-.202-.303-.392-.414-.617a5.81%205.81%200%2001-.37-.961%204.582%204.582%200%2001-.014-2.298.124.124%200%2000.006-.056.085.085%200%2000-.027-.048%204.467%204.467%200%2001-1.034-1.651%203.896%203.896%200%2001-.251-1.192%205.189%205.189%200%2001.141-1.6c.337-1.112.982-1.985%201.933-2.618.212-.141.413-.251.601-.33.215-.089.43-.164.646-.227a.098.098%200%2000.065-.066%204.51%204.51%200%2001.829-1.615%204.535%204.535%200%20011.837-1.388zm3.482%2010.565a.637.637%200%20000%201.272h3.636a.637.637%200%20100-1.272h-3.636zM8.462%209.23a.637.637%200%2000-1.106.631l1.272%202.224-1.266%202.136a.636.636%200%20101.095.649l1.454-2.455a.636.636%200%2000.005-.64L8.462%209.23z'%20fill='url(%23lobe-icons-codex-fill)'%3e%3c/path%3e%3cdefs%3e%3clinearGradient%20gradientUnits='userSpaceOnUse'%20id='lobe-icons-codex-fill'%20x1='12'%20x2='12'%20y1='3'%20y2='21'%3e%3cstop%20stop-color='%23B1A7FF'%3e%3c/stop%3e%3cstop%20offset='.5'%20stop-color='%237A9DFF'%3e%3c/stop%3e%3cstop%20offset='1'%20stop-color='%233941FF'%3e%3c/stop%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e";function NJ({configs:t,keyStats:e,usageDetails:n,loading:i,disableControls:s,isSwitching:a,onAdd:o,onEdit:r,onDelete:c,onToggle:d}){const{t:f}=nt(),p=s||i||a,g=s||i||a,y=S.useMemo(()=>{const _=new Map;return t.forEach(v=>{if(!v.apiKey)return;const x=_s({apiKey:v.apiKey,prefix:v.prefix});if(!x.length)return;const k=new Set(x),C=n.filter(N=>k.has(N.source));_.set(v.apiKey,Na(C))}),_},[t,n]);return h.jsx(h.Fragment,{children:h.jsx(jt,{title:h.jsxs("span",{className:V.cardTitle,children:[h.jsx("img",{src:qy,alt:"",className:V.cardTitleIcon}),f("ai_providers.codex_title")]}),extra:h.jsx(he,{size:"sm",onClick:o,disabled:p,children:f("ai_providers.codex_add_button")}),children:h.jsx(op,{items:t,loading:i,keyField:_=>_.apiKey,emptyTitle:f("ai_providers.codex_empty_title"),emptyDescription:f("ai_providers.codex_empty_desc"),onEdit:r,onDelete:c,actionsDisabled:p,getRowDisabled:_=>Sa(_.excludedModels),renderExtraActions:(_,v)=>h.jsx(xi,{label:f("ai_providers.config_toggle_label"),checked:!Sa(_.excludedModels),disabled:g,onChange:x=>void d(v,x)}),renderContent:_=>{const v=ip(_.apiKey,e,_.prefix),x=Object.entries(_.headers||{}),k=Sa(_.excludedModels),C=_.excludedModels??[],N=y.get(_.apiKey)||Na([]);return h.jsxs(S.Fragment,{children:[h.jsx("div",{className:"item-title",children:f("ai_providers.codex_item_title")}),h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("common.api_key"),":"]}),h.jsx("span",{className:V.fieldValue,children:Pa(_.apiKey)})]}),_.priority!==void 0&&h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("common.priority"),":"]}),h.jsx("span",{className:V.fieldValue,children:_.priority})]}),_.prefix&&h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("common.prefix"),":"]}),h.jsx("span",{className:V.fieldValue,children:_.prefix})]}),_.baseUrl&&h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("common.base_url"),":"]}),h.jsx("span",{className:V.fieldValue,children:_.baseUrl})]}),_.proxyUrl&&h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("common.proxy_url"),":"]}),h.jsx("span",{className:V.fieldValue,children:_.proxyUrl})]}),_.websockets!==void 0&&h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("ai_providers.codex_websockets_label"),":"]}),h.jsx("span",{className:V.fieldValue,children:_.websockets?f("common.yes"):f("common.no")})]}),x.length>0&&h.jsx("div",{className:V.headerBadgeList,children:x.map(([L,M])=>h.jsxs("span",{className:V.headerBadge,children:[h.jsxs("strong",{children:[L,":"]})," ",M]},L))}),k&&h.jsx("div",{className:"status-badge warning",style:{marginTop:8,marginBottom:0},children:f("ai_providers.config_disabled_badge")}),_.models?.length?h.jsxs("div",{className:V.modelTagList,children:[h.jsxs("span",{className:V.modelCountLabel,children:[f("ai_providers.codex_models_count"),": ",_.models.length]}),_.models.map(L=>h.jsxs("span",{className:V.modelTag,children:[h.jsx("span",{className:V.modelName,children:L.name}),L.alias&&L.alias!==L.name&&h.jsx("span",{className:V.modelAlias,children:L.alias})]},L.name))]}):null,C.length?h.jsxs("div",{className:V.excludedModelsSection,children:[h.jsx("div",{className:V.excludedModelsLabel,children:f("ai_providers.excluded_models_count",{count:C.length})}),h.jsx("div",{className:V.modelTagList,children:C.map(L=>h.jsx("span",{className:`${V.modelTag} ${V.excludedModelTag}`,children:h.jsx("span",{className:V.modelName,children:L})},L))})]}):null,h.jsxs("div",{className:V.cardStats,children:[h.jsxs("span",{className:`${V.statPill} ${V.statSuccess}`,children:[f("stats.success"),": ",v.success]}),h.jsxs("span",{className:`${V.statPill} ${V.statFailure}`,children:[f("stats.failure"),": ",v.failure]})]}),h.jsx(Vd,{statusData:N})]})}})})})}const Lc="data:image/svg+xml,%3csvg%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eGemini%3c/title%3e%3cpath%20d='M20.616%2010.835a14.147%2014.147%200%2001-4.45-3.001%2014.111%2014.111%200%2001-3.678-6.452.503.503%200%2000-.975%200%2014.134%2014.134%200%2001-3.679%206.452%2014.155%2014.155%200%2001-4.45%203.001c-.65.28-1.318.505-2.002.678a.502.502%200%20000%20.975c.684.172%201.35.397%202.002.677a14.147%2014.147%200%20014.45%203.001%2014.112%2014.112%200%20013.679%206.453.502.502%200%2000.975%200c.172-.685.397-1.351.677-2.003a14.145%2014.145%200%20013.001-4.45%2014.113%2014.113%200%20016.453-3.678.503.503%200%20000-.975%2013.245%2013.245%200%2001-2.003-.678z'%20fill='%233186FF'%3e%3c/path%3e%3cpath%20d='M20.616%2010.835a14.147%2014.147%200%2001-4.45-3.001%2014.111%2014.111%200%2001-3.678-6.452.503.503%200%2000-.975%200%2014.134%2014.134%200%2001-3.679%206.452%2014.155%2014.155%200%2001-4.45%203.001c-.65.28-1.318.505-2.002.678a.502.502%200%20000%20.975c.684.172%201.35.397%202.002.677a14.147%2014.147%200%20014.45%203.001%2014.112%2014.112%200%20013.679%206.453.502.502%200%2000.975%200c.172-.685.397-1.351.677-2.003a14.145%2014.145%200%20013.001-4.45%2014.113%2014.113%200%20016.453-3.678.503.503%200%20000-.975%2013.245%2013.245%200%2001-2.003-.678z'%20fill='url(%23lobe-icons-gemini-fill-0)'%3e%3c/path%3e%3cpath%20d='M20.616%2010.835a14.147%2014.147%200%2001-4.45-3.001%2014.111%2014.111%200%2001-3.678-6.452.503.503%200%2000-.975%200%2014.134%2014.134%200%2001-3.679%206.452%2014.155%2014.155%200%2001-4.45%203.001c-.65.28-1.318.505-2.002.678a.502.502%200%20000%20.975c.684.172%201.35.397%202.002.677a14.147%2014.147%200%20014.45%203.001%2014.112%2014.112%200%20013.679%206.453.502.502%200%2000.975%200c.172-.685.397-1.351.677-2.003a14.145%2014.145%200%20013.001-4.45%2014.113%2014.113%200%20016.453-3.678.503.503%200%20000-.975%2013.245%2013.245%200%2001-2.003-.678z'%20fill='url(%23lobe-icons-gemini-fill-1)'%3e%3c/path%3e%3cpath%20d='M20.616%2010.835a14.147%2014.147%200%2001-4.45-3.001%2014.111%2014.111%200%2001-3.678-6.452.503.503%200%2000-.975%200%2014.134%2014.134%200%2001-3.679%206.452%2014.155%2014.155%200%2001-4.45%203.001c-.65.28-1.318.505-2.002.678a.502.502%200%20000%20.975c.684.172%201.35.397%202.002.677a14.147%2014.147%200%20014.45%203.001%2014.112%2014.112%200%20013.679%206.453.502.502%200%2000.975%200c.172-.685.397-1.351.677-2.003a14.145%2014.145%200%20013.001-4.45%2014.113%2014.113%200%20016.453-3.678.503.503%200%20000-.975%2013.245%2013.245%200%2001-2.003-.678z'%20fill='url(%23lobe-icons-gemini-fill-2)'%3e%3c/path%3e%3cdefs%3e%3clinearGradient%20gradientUnits='userSpaceOnUse'%20id='lobe-icons-gemini-fill-0'%20x1='7'%20x2='11'%20y1='15.5'%20y2='12'%3e%3cstop%20stop-color='%2308B962'%3e%3c/stop%3e%3cstop%20offset='1'%20stop-color='%2308B962'%20stop-opacity='0'%3e%3c/stop%3e%3c/linearGradient%3e%3clinearGradient%20gradientUnits='userSpaceOnUse'%20id='lobe-icons-gemini-fill-1'%20x1='8'%20x2='11.5'%20y1='5.5'%20y2='11'%3e%3cstop%20stop-color='%23F94543'%3e%3c/stop%3e%3cstop%20offset='1'%20stop-color='%23F94543'%20stop-opacity='0'%3e%3c/stop%3e%3c/linearGradient%3e%3clinearGradient%20gradientUnits='userSpaceOnUse'%20id='lobe-icons-gemini-fill-2'%20x1='3.5'%20x2='17.5'%20y1='13.5'%20y2='12'%3e%3cstop%20stop-color='%23FABC12'%3e%3c/stop%3e%3cstop%20offset='.46'%20stop-color='%23FABC12'%20stop-opacity='0'%3e%3c/stop%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e";function TJ({configs:t,keyStats:e,usageDetails:n,loading:i,disableControls:s,isSwitching:a,onAdd:o,onEdit:r,onDelete:c,onToggle:d}){const{t:f}=nt(),p=s||i||a,g=s||i||a,y=S.useMemo(()=>{const _=new Map;return t.forEach(v=>{if(!v.apiKey)return;const x=_s({apiKey:v.apiKey,prefix:v.prefix});if(!x.length)return;const k=new Set(x),C=n.filter(N=>k.has(N.source));_.set(v.apiKey,Na(C))}),_},[t,n]);return h.jsx(h.Fragment,{children:h.jsx(jt,{title:h.jsxs("span",{className:V.cardTitle,children:[h.jsx("img",{src:Lc,alt:"",className:V.cardTitleIcon}),f("ai_providers.gemini_title")]}),extra:h.jsx(he,{size:"sm",onClick:o,disabled:p,children:f("ai_providers.gemini_add_button")}),children:h.jsx(op,{items:t,loading:i,keyField:_=>_.apiKey,emptyTitle:f("ai_providers.gemini_empty_title"),emptyDescription:f("ai_providers.gemini_empty_desc"),onEdit:r,onDelete:c,actionsDisabled:p,getRowDisabled:_=>Sa(_.excludedModels),renderExtraActions:(_,v)=>h.jsx(xi,{label:f("ai_providers.config_toggle_label"),checked:!Sa(_.excludedModels),disabled:g,onChange:x=>void d(v,x)}),renderContent:(_,v)=>{const x=ip(_.apiKey,e,_.prefix),k=Object.entries(_.headers||{}),C=Sa(_.excludedModels),N=_.excludedModels??[],L=y.get(_.apiKey)||Na([]);return h.jsxs(S.Fragment,{children:[h.jsxs("div",{className:"item-title",children:[f("ai_providers.gemini_item_title")," #",v+1]}),h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("common.api_key"),":"]}),h.jsx("span",{className:V.fieldValue,children:Pa(_.apiKey)})]}),_.priority!==void 0&&h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("common.priority"),":"]}),h.jsx("span",{className:V.fieldValue,children:_.priority})]}),_.prefix&&h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("common.prefix"),":"]}),h.jsx("span",{className:V.fieldValue,children:_.prefix})]}),_.baseUrl&&h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("common.base_url"),":"]}),h.jsx("span",{className:V.fieldValue,children:_.baseUrl})]}),_.proxyUrl&&h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("common.proxy_url"),":"]}),h.jsx("span",{className:V.fieldValue,children:_.proxyUrl})]}),k.length>0&&h.jsx("div",{className:V.headerBadgeList,children:k.map(([M,O])=>h.jsxs("span",{className:V.headerBadge,children:[h.jsxs("strong",{children:[M,":"]})," ",O]},M))}),C&&h.jsx("div",{className:"status-badge warning",style:{marginTop:8,marginBottom:0},children:f("ai_providers.config_disabled_badge")}),_.models?.length?h.jsxs("div",{className:V.modelTagList,children:[h.jsxs("span",{className:V.modelCountLabel,children:[f("ai_providers.gemini_models_count"),": ",_.models.length]}),_.models.map(M=>h.jsxs("span",{className:V.modelTag,children:[h.jsx("span",{className:V.modelName,children:M.name}),M.alias&&M.alias!==M.name&&h.jsx("span",{className:V.modelAlias,children:M.alias})]},M.name))]}):null,N.length?h.jsxs("div",{className:V.excludedModelsSection,children:[h.jsx("div",{className:V.excludedModelsLabel,children:f("ai_providers.excluded_models_count",{count:N.length})}),h.jsx("div",{className:V.modelTagList,children:N.map(M=>h.jsx("span",{className:`${V.modelTag} ${V.excludedModelTag}`,children:h.jsx("span",{className:V.modelName,children:M})},M))})]}):null,h.jsxs("div",{className:V.cardStats,children:[h.jsxs("span",{className:`${V.statPill} ${V.statSuccess}`,children:[f("stats.success"),": ",x.success]}),h.jsxs("span",{className:`${V.statPill} ${V.statFailure}`,children:[f("stats.failure"),": ",x.failure]})]}),h.jsx(Vd,{statusData:L})]})}})})})}const Yw="data:image/svg+xml,%3csvg%20fill='%23000000'%20fill-rule='evenodd'%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eOpenAI%3c/title%3e%3cpath%20d='M21.55%2010.004a5.416%205.416%200%2000-.478-4.501c-1.217-2.09-3.662-3.166-6.05-2.66A5.59%205.59%200%200010.831%201C8.39.995%206.224%202.546%205.473%204.838A5.553%205.553%200%20001.76%207.496a5.487%205.487%200%2000.691%206.5%205.416%205.416%200%2000.477%204.502c1.217%202.09%203.662%203.165%206.05%202.66A5.586%205.586%200%200013.168%2023c2.443.006%204.61-1.546%205.361-3.84a5.553%205.553%200%20003.715-2.66%205.488%205.488%200%2000-.693-6.497v.001zm-8.381%2011.558a4.199%204.199%200%2001-2.675-.954c.034-.018.093-.05.132-.074l4.44-2.53a.71.71%200%2000.364-.623v-6.176l1.877%201.069c.02.01.033.029.036.05v5.115c-.003%202.274-1.87%204.118-4.174%204.123zM4.192%2017.78a4.059%204.059%200%2001-.498-2.763c.032.02.09.055.131.078l4.44%202.53c.225.13.504.13.73%200l5.42-3.088v2.138a.068.068%200%2001-.027.057L9.9%2019.288c-1.999%201.136-4.552.46-5.707-1.51h-.001zM3.023%208.216A4.15%204.15%200%20015.198%206.41l-.002.151v5.06a.711.711%200%2000.364.624l5.42%203.087-1.876%201.07a.067.067%200%2001-.063.005l-4.489-2.559c-1.995-1.14-2.679-3.658-1.53-5.63h.001zm15.417%203.54l-5.42-3.088L14.896%207.6a.067.067%200%2001.063-.006l4.489%202.557c1.998%201.14%202.683%203.662%201.529%205.633a4.163%204.163%200%2001-2.174%201.807V12.38a.71.71%200%2000-.363-.623zm1.867-2.773a6.04%206.04%200%2000-.132-.078l-4.44-2.53a.731.731%200%2000-.729%200l-5.42%203.088V7.325a.068.068%200%2001.027-.057L14.1%204.713c2-1.137%204.555-.46%205.707%201.513.487.833.664%201.809.499%202.757h.001zm-11.741%203.81l-1.877-1.068a.065.065%200%2001-.036-.051V6.559c.001-2.277%201.873-4.122%204.181-4.12.976%200%201.92.338%202.671.954-.034.018-.092.05-.131.073l-4.44%202.53a.71.71%200%2000-.365.623l-.003%206.173v.002zm1.02-2.168L12%209.25l2.414%201.375v2.75L12%2014.75l-2.415-1.375v-2.75z'%3e%3c/path%3e%3c/svg%3e",Jw="data:image/svg+xml,%3csvg%20fill='%23ffffff'%20fill-rule='evenodd'%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eOpenAI%3c/title%3e%3cpath%20d='M21.55%2010.004a5.416%205.416%200%2000-.478-4.501c-1.217-2.09-3.662-3.166-6.05-2.66A5.59%205.59%200%200010.831%201C8.39.995%206.224%202.546%205.473%204.838A5.553%205.553%200%20001.76%207.496a5.487%205.487%200%2000.691%206.5%205.416%205.416%200%2000.477%204.502c1.217%202.09%203.662%203.165%206.05%202.66A5.586%205.586%200%200013.168%2023c2.443.006%204.61-1.546%205.361-3.84a5.553%205.553%200%20003.715-2.66%205.488%205.488%200%2000-.693-6.497v.001zm-8.381%2011.558a4.199%204.199%200%2001-2.675-.954c.034-.018.093-.05.132-.074l4.44-2.53a.71.71%200%2000.364-.623v-6.176l1.877%201.069c.02.01.033.029.036.05v5.115c-.003%202.274-1.87%204.118-4.174%204.123zM4.192%2017.78a4.059%204.059%200%2001-.498-2.763c.032.02.09.055.131.078l4.44%202.53c.225.13.504.13.73%200l5.42-3.088v2.138a.068.068%200%2001-.027.057L9.9%2019.288c-1.999%201.136-4.552.46-5.707-1.51h-.001zM3.023%208.216A4.15%204.15%200%20015.198%206.41l-.002.151v5.06a.711.711%200%2000.364.624l5.42%203.087-1.876%201.07a.067.067%200%2001-.063.005l-4.489-2.559c-1.995-1.14-2.679-3.658-1.53-5.63h.001zm15.417%203.54l-5.42-3.088L14.896%207.6a.067.067%200%2001.063-.006l4.489%202.557c1.998%201.14%202.683%203.662%201.529%205.633a4.163%204.163%200%2001-2.174%201.807V12.38a.71.71%200%2000-.363-.623zm1.867-2.773a6.04%206.04%200%2000-.132-.078l-4.44-2.53a.731.731%200%2000-.729%200l-5.42%203.088V7.325a.068.068%200%2001.027-.057L14.1%204.713c2-1.137%204.555-.46%205.707%201.513.487.833.664%201.809.499%202.757h.001zm-11.741%203.81l-1.877-1.068a.065.065%200%2001-.036-.051V6.559c.001-2.277%201.873-4.122%204.181-4.12.976%200%201.92.338%202.671.954-.034.018-.092.05-.131.073l-4.44%202.53a.71.71%200%2000-.365.623l-.003%206.173v.002zm1.02-2.168L12%209.25l2.414%201.375v2.75L12%2014.75l-2.415-1.375v-2.75z'%3e%3c/path%3e%3c/svg%3e";function MJ({configs:t,keyStats:e,usageDetails:n,loading:i,disableControls:s,isSwitching:a,resolvedTheme:o,onAdd:r,onEdit:c,onDelete:d}){const{t:f}=nt(),p=s||i||a,g=S.useMemo(()=>{const y=new Map;return t.forEach(_=>{const v=new Set;_s({prefix:_.prefix}).forEach(k=>v.add(k)),(_.apiKeyEntries||[]).forEach(k=>{_s({apiKey:k.apiKey}).forEach(C=>v.add(C))});const x=v.size?n.filter(k=>v.has(k.source)):[];y.set(_.name,Na(x))}),y},[t,n]);return h.jsx(h.Fragment,{children:h.jsx(jt,{title:h.jsxs("span",{className:V.cardTitle,children:[h.jsx("img",{src:o==="dark"?Jw:Yw,alt:"",className:V.cardTitleIcon}),f("ai_providers.openai_title")]}),extra:h.jsx(he,{size:"sm",onClick:r,disabled:p,children:f("ai_providers.openai_add_button")}),children:h.jsx(op,{items:t,loading:i,keyField:(y,_)=>`openai-provider-${_}`,emptyTitle:f("ai_providers.openai_empty_title"),emptyDescription:f("ai_providers.openai_empty_desc"),onEdit:c,onDelete:d,actionsDisabled:p,renderContent:y=>{const _=d$(y.apiKeyEntries,e,y.prefix),v=Object.entries(y.headers||{}),x=y.apiKeyEntries||[],k=g.get(y.name)||Na([]);return h.jsxs(S.Fragment,{children:[h.jsx("div",{className:"item-title",children:y.name}),y.priority!==void 0&&h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("common.priority"),":"]}),h.jsx("span",{className:V.fieldValue,children:y.priority})]}),y.prefix&&h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("common.prefix"),":"]}),h.jsx("span",{className:V.fieldValue,children:y.prefix})]}),h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("common.base_url"),":"]}),h.jsx("span",{className:V.fieldValue,children:y.baseUrl})]}),v.length>0&&h.jsx("div",{className:V.headerBadgeList,children:v.map(([C,N])=>h.jsxs("span",{className:V.headerBadge,children:[h.jsxs("strong",{children:[C,":"]})," ",N]},C))}),x.length>0&&h.jsxs("div",{className:V.apiKeyEntriesSection,children:[h.jsxs("div",{className:V.apiKeyEntriesLabel,children:[f("ai_providers.openai_keys_count"),": ",x.length]}),h.jsx("div",{className:V.apiKeyEntryList,children:x.map((C,N)=>{const L=ip(C.apiKey,e);return h.jsxs("div",{className:V.apiKeyEntryCard,children:[h.jsx("span",{className:V.apiKeyEntryIndex,children:N+1}),h.jsx("span",{className:V.apiKeyEntryKey,children:Pa(C.apiKey)}),C.proxyUrl&&h.jsx("span",{className:V.apiKeyEntryProxy,children:C.proxyUrl}),h.jsxs("div",{className:V.apiKeyEntryStats,children:[h.jsxs("span",{className:`${V.apiKeyEntryStat} ${V.apiKeyEntryStatSuccess}`,children:[h.jsx(Rw,{size:12})," ",L.success]}),h.jsxs("span",{className:`${V.apiKeyEntryStat} ${V.apiKeyEntryStatFailure}`,children:[h.jsx(Gc,{size:12})," ",L.failure]})]})]},N)})})]}),h.jsxs("div",{className:V.fieldRow,style:{marginTop:"8px"},children:[h.jsxs("span",{className:V.fieldLabel,children:[f("ai_providers.openai_models_count"),":"]}),h.jsx("span",{className:V.fieldValue,children:y.models?.length||0})]}),y.models?.length?h.jsx("div",{className:V.modelTagList,children:y.models.map(C=>h.jsxs("span",{className:V.modelTag,children:[h.jsx("span",{className:V.modelName,children:C.name}),C.alias&&C.alias!==C.name&&h.jsx("span",{className:V.modelAlias,children:C.alias})]},C.name))}):null,y.testModel&&h.jsxs("div",{className:V.fieldRow,children:[h.jsx("span",{className:V.fieldLabel,children:"Test Model:"}),h.jsx("span",{className:V.fieldValue,children:y.testModel})]}),h.jsxs("div",{className:V.cardStats,children:[h.jsxs("span",{className:`${V.statPill} ${V.statSuccess}`,children:[f("stats.success"),": ",_.success]}),h.jsxs("span",{className:`${V.statPill} ${V.statFailure}`,children:[f("stats.failure"),": ",_.failure]})]}),h.jsx(Vd,{statusData:k})]})}})})})}const zy="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20width='24px'%20height='24px'%3e%3cpath%20d='M20,13.89A.77.77,0,0,0,19,13.73l-7,5.14v.22a.72.72,0,1,1,0,1.43v0a.74.74,0,0,0,.45-.15l7.41-5.47A.76.76,0,0,0,20,13.89Z'%20style='fill:%23669df6'/%3e%3cpath%20d='M12,20.52a.72.72,0,0,1,0-1.43h0v-.22L5,13.73a.76.76,0,0,0-1,.16.74.74,0,0,0,.16,1l7.41,5.47a.73.73,0,0,0,.44.15v0Z'%20style='fill:%23aecbfa'/%3e%3cpath%20d='M12,18.34a1.47,1.47,0,1,0,1.47,1.47A1.47,1.47,0,0,0,12,18.34Zm0,2.18a.72.72,0,1,1,.72-.71A.71.71,0,0,1,12,20.52Z'%20style='fill:%234285f4'/%3e%3cpath%20d='M6,6.11a.76.76,0,0,1-.75-.75V3.48a.76.76,0,1,1,1.51,0V5.36A.76.76,0,0,1,6,6.11Z'%20style='fill:%23aecbfa'/%3e%3ccircle%20cx='5.98'%20cy='12'%20r='0.76'%20style='fill:%23aecbfa'/%3e%3ccircle%20cx='5.98'%20cy='9.79'%20r='0.76'%20style='fill:%23aecbfa'/%3e%3ccircle%20cx='5.98'%20cy='7.57'%20r='0.76'%20style='fill:%23aecbfa'/%3e%3cpath%20d='M18,8.31a.76.76,0,0,1-.75-.76V5.67a.75.75,0,1,1,1.5,0V7.55A.75.75,0,0,1,18,8.31Z'%20style='fill:%234285f4'/%3e%3ccircle%20cx='18.02'%20cy='12.01'%20r='0.76'%20style='fill:%234285f4'/%3e%3ccircle%20cx='18.02'%20cy='9.76'%20r='0.76'%20style='fill:%234285f4'/%3e%3ccircle%20cx='18.02'%20cy='3.48'%20r='0.76'%20style='fill:%234285f4'/%3e%3cpath%20d='M12,15a.76.76,0,0,1-.75-.75V12.34a.76.76,0,0,1,1.51,0v1.89A.76.76,0,0,1,12,15Z'%20style='fill:%23669df6'/%3e%3ccircle%20cx='12'%20cy='16.45'%20r='0.76'%20style='fill:%23669df6'/%3e%3ccircle%20cx='12'%20cy='10.14'%20r='0.76'%20style='fill:%23669df6'/%3e%3ccircle%20cx='12'%20cy='7.92'%20r='0.76'%20style='fill:%23669df6'/%3e%3cpath%20d='M15,10.54a.76.76,0,0,1-.75-.75V7.91a.76.76,0,1,1,1.51,0V9.79A.76.76,0,0,1,15,10.54Z'%20style='fill:%234285f4'/%3e%3ccircle%20cx='15.01'%20cy='5.69'%20r='0.76'%20style='fill:%234285f4'/%3e%3ccircle%20cx='15.01'%20cy='14.19'%20r='0.76'%20style='fill:%234285f4'/%3e%3ccircle%20cx='15.01'%20cy='11.97'%20r='0.76'%20style='fill:%234285f4'/%3e%3ccircle%20cx='8.99'%20cy='14.19'%20r='0.76'%20style='fill:%23aecbfa'/%3e%3ccircle%20cx='8.99'%20cy='7.92'%20r='0.76'%20style='fill:%23aecbfa'/%3e%3ccircle%20cx='8.99'%20cy='5.69'%20r='0.76'%20style='fill:%23aecbfa'/%3e%3cpath%20d='M9,12.73A.76.76,0,0,1,8.24,12V10.1a.75.75,0,1,1,1.5,0V12A.75.75,0,0,1,9,12.73Z'%20style='fill:%23aecbfa'/%3e%3c/svg%3e";function LJ({configs:t,keyStats:e,usageDetails:n,loading:i,disableControls:s,isSwitching:a,onAdd:o,onEdit:r,onDelete:c,onToggle:d}){const{t:f}=nt(),p=s||i||a,g=s||i||a,y=S.useMemo(()=>{const _=new Map;return t.forEach(v=>{if(!v.apiKey)return;const x=_s({apiKey:v.apiKey,prefix:v.prefix});if(!x.length)return;const k=new Set(x),C=n.filter(N=>k.has(N.source));_.set(v.apiKey,Na(C))}),_},[t,n]);return h.jsx(h.Fragment,{children:h.jsx(jt,{title:h.jsxs("span",{className:V.cardTitle,children:[h.jsx("img",{src:zy,alt:"",className:V.cardTitleIcon}),f("ai_providers.vertex_title")]}),extra:h.jsx(he,{size:"sm",onClick:o,disabled:p,children:f("ai_providers.vertex_add_button")}),children:h.jsx(op,{items:t,loading:i,keyField:_=>_.apiKey,emptyTitle:f("ai_providers.vertex_empty_title"),emptyDescription:f("ai_providers.vertex_empty_desc"),onEdit:r,onDelete:c,actionsDisabled:p,getRowDisabled:_=>Sa(_.excludedModels),renderExtraActions:(_,v)=>h.jsx(xi,{label:f("ai_providers.config_toggle_label"),checked:!Sa(_.excludedModels),disabled:g,onChange:x=>void d(v,x)}),renderContent:(_,v)=>{const x=ip(_.apiKey,e,_.prefix),k=Object.entries(_.headers||{}),C=Sa(_.excludedModels),N=_.excludedModels??[],L=y.get(_.apiKey)||Na([]);return h.jsxs(S.Fragment,{children:[h.jsxs("div",{className:"item-title",children:[f("ai_providers.vertex_item_title")," #",v+1]}),h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("common.api_key"),":"]}),h.jsx("span",{className:V.fieldValue,children:Pa(_.apiKey)})]}),_.prefix&&h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("common.prefix"),":"]}),h.jsx("span",{className:V.fieldValue,children:_.prefix})]}),_.baseUrl&&h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("common.base_url"),":"]}),h.jsx("span",{className:V.fieldValue,children:_.baseUrl})]}),_.proxyUrl&&h.jsxs("div",{className:V.fieldRow,children:[h.jsxs("span",{className:V.fieldLabel,children:[f("common.proxy_url"),":"]}),h.jsx("span",{className:V.fieldValue,children:_.proxyUrl})]}),k.length>0&&h.jsx("div",{className:V.headerBadgeList,children:k.map(([M,O])=>h.jsxs("span",{className:V.headerBadge,children:[h.jsxs("strong",{children:[M,":"]})," ",O]},M))}),C&&h.jsx("div",{className:"status-badge warning",style:{marginTop:8,marginBottom:0},children:f("ai_providers.config_disabled_badge")}),_.models?.length?h.jsxs("div",{className:V.modelTagList,children:[h.jsxs("span",{className:V.modelCountLabel,children:[f("ai_providers.vertex_models_count"),": ",_.models.length]}),_.models.map(M=>h.jsxs("span",{className:V.modelTag,children:[h.jsx("span",{className:V.modelName,children:M.name}),M.alias&&h.jsx("span",{className:V.modelAlias,children:M.alias})]},`${M.name}-${M.alias||"default"}`))]}):null,N.length?h.jsxs("div",{className:V.excludedModelsSection,children:[h.jsx("div",{className:V.excludedModelsLabel,children:f("ai_providers.excluded_models_count",{count:N.length})}),h.jsx("div",{className:V.modelTagList,children:N.map(M=>h.jsx("span",{className:`${V.modelTag} ${V.excludedModelTag}`,children:h.jsx("span",{className:V.modelName,children:M})},M))})]}):null,h.jsxs("div",{className:V.cardStats,children:[h.jsxs("span",{className:`${V.statPill} ${V.statSuccess}`,children:[f("stats.success"),": ",x.success]}),h.jsxs("span",{className:`${V.statPill} ${V.statFailure}`,children:[f("stats.failure"),": ",x.failure]})]}),h.jsx(Vd,{statusData:L})]})}})})})}const OJ="ProviderNav-module__navContainer___Ym-Eg",PJ="ProviderNav-module__navList___7nsum",EJ="ProviderNav-module__indicator___Ta8ib",jJ="ProviderNav-module__indicatorVisible___U7LEL",RJ="ProviderNav-module__indicatorNoTransition___dtZdn",DJ="ProviderNav-module__navItem___LRkPI",FJ="ProviderNav-module__active___Jo0X6",IJ="ProviderNav-module__icon___X-NJQ",sl={navContainer:OJ,navList:PJ,indicator:EJ,indicatorVisible:jJ,indicatorNoTransition:RJ,navItem:DJ,active:FJ,icon:IJ},s1=[{id:"gemini",label:"Gemini",getIcon:()=>Lc},{id:"codex",label:"Codex",getIcon:()=>qy},{id:"claude",label:"Claude",getIcon:()=>ap},{id:"vertex",label:"Vertex",getIcon:()=>zy},{id:"ampcode",label:"Ampcode",getIcon:()=>o5},{id:"openai",label:"OpenAI",getIcon:t=>t==="dark"?Jw:Yw}],a1=24;function BJ(){const t=$n(),e=sp(),n=e?e.status==="current":!0,i=Aa(P=>P.resolvedTheme),[s,a]=S.useState(null),o=S.useRef(null),r=S.useRef(null),c=S.useRef(null),d=S.useRef({gemini:null,codex:null,claude:null,vertex:null,ampcode:null,openai:null}),[f,p]=S.useState(null),[g,y]=S.useState(!1),_=S.useRef(!1),v=t.pathname.length>1&&t.pathname.endsWith("/")?t.pathname.slice(0,-1):t.pathname,x=n&&v==="/ai-providers",k=S.useCallback(()=>{const P=document.querySelector(".main-header");if(P)return P.getBoundingClientRect().height;const E=getComputedStyle(document.documentElement).getPropertyValue("--header-height"),R=Number.parseFloat(E);return Number.isFinite(R)?R:0},[]),C=S.useCallback(()=>{if(o.current&&document.contains(o.current))return o.current;const P=document.querySelector(".content");return o.current=P,P},[]),N=S.useCallback(()=>window.matchMedia("(max-width: 768px)").matches?window:C()??window,[C]),L=S.useCallback(()=>{const P=N();if(!P)return;const E=P instanceof HTMLElement,R=E?0:k(),I=(E?P.getBoundingClientRect().top:0)+R+a1+1;let Y=null;for(const X of s1){const K=document.getElementById(`provider-${X.id}`);if(!K)continue;if(K.getBoundingClientRect().top<=I){Y=X.id;continue}if(Y)break}Y||(Y=s1.find(K=>document.getElementById(`provider-${K.id}`))?.id??null),a(Y)},[k,N]);S.useEffect(()=>{if(!x)return;const P=C();window.addEventListener("scroll",L,{passive:!0}),P?.addEventListener("scroll",L,{passive:!0}),window.addEventListener("resize",L);const E=requestAnimationFrame(L);return()=>{cancelAnimationFrame(E),window.removeEventListener("scroll",L),window.removeEventListener("resize",L),P?.removeEventListener("scroll",L)}},[C,L,x]);const M=S.useCallback(P=>{if(!P){p(null);return}const E=d.current[P];E&&(p({x:E.offsetLeft,y:E.offsetTop,width:E.offsetWidth,height:E.offsetHeight}),_.current||(_.current=!0,requestAnimationFrame(()=>y(!0))))},[]);S.useLayoutEffect(()=>{if(!x)return;const P=requestAnimationFrame(()=>M(s));return()=>cancelAnimationFrame(P)},[s,x,M]),S.useLayoutEffect(()=>{if(!x)return;const P=c.current;if(!P)return;const E=()=>{const q=P.getBoundingClientRect().height;document.documentElement.style.setProperty("--provider-nav-height",`${q}px`)};E(),window.addEventListener("resize",E);const R=typeof ResizeObserver>"u"?null:new ResizeObserver(E);return R?.observe(P),()=>{R?.disconnect(),window.removeEventListener("resize",E),document.documentElement.style.removeProperty("--provider-nav-height")}},[x]);const O=P=>{const E=N(),R=document.getElementById(`provider-${P}`);if(!R||!E)return;if(a(P),M(P),!(E instanceof HTMLElement)){const X=k(),K=R.getBoundingClientRect().top+window.scrollY,B=Math.max(0,K-X-a1);window.scrollTo({top:B,behavior:"smooth"});return}const q=E.getBoundingClientRect(),I=R.getBoundingClientRect(),Y=E.scrollTop+(I.top-q.top)-a1;E.scrollTo({top:Y,behavior:"smooth"})};S.useEffect(()=>{if(!x)return;const P=()=>M(s);return window.addEventListener("resize",P),()=>{window.removeEventListener("resize",P)}},[s,x,M]);const T=h.jsx("div",{className:sl.navContainer,ref:c,children:h.jsxs("div",{className:sl.navList,ref:r,children:[h.jsx("div",{className:[sl.indicator,f?sl.indicatorVisible:"",g?"":sl.indicatorNoTransition].filter(Boolean).join(" "),style:f?{transform:`translate3d(${f.x}px, ${f.y}px, 0)`,width:f.width,height:f.height}:void 0}),s1.map(P=>{const E=s===P.id;return h.jsx("button",{className:`${sl.navItem} ${E?sl.active:""}`,ref:R=>{d.current[P.id]=R},onClick:()=>O(P.id),title:P.label,type:"button","aria-label":P.label,"aria-pressed":E,children:h.jsx("img",{src:P.getIcon(i),alt:P.label,className:sl.icon})},P.id)})]})});return typeof document>"u"||!x?null:Po.createPortal(T,document.body)}function r5(t,e){const n=S.useRef(null);S.useEffect(()=>{n.current=t},[t]),S.useEffect(()=>{if(e===null)return;const s=setInterval(()=>{n.current?.()},e);return()=>clearInterval(s)},[e])}const UJ=()=>{const t=ns(o=>o.keyStats),e=ns(o=>o.usageDetails),n=ns(o=>o.loading),i=ns(o=>o.loadUsageStats),s=S.useCallback(async()=>{await i({staleTimeMs:wr})},[i]),a=S.useCallback(async()=>{await i({force:!0,staleTimeMs:wr})},[i]);return r5(()=>{a().catch(()=>{})},24e4),{keyStats:t,usageDetails:e,loadKeyStats:s,refreshKeyStats:a,isLoading:n}};let Wf=null;const l5=async()=>{Wf&&await Wf()},rp=t=>{S.useEffect(()=>{if(t)return Wf=t,()=>{Wf===t&&(Wf=null)}},[t])};function mO(){const{t}=nt(),e=Ri(),{showNotification:n,showConfirmation:i}=mn(),s=Aa(F=>F.resolvedTheme),a=en(F=>F.connectionStatus),o=It(F=>F.config),r=It(F=>F.fetchConfig),c=It(F=>F.updateConfigValue),d=It(F=>F.clearCache),f=It(F=>F.isCacheValid),p=S.useRef(!1),[g,y]=S.useState(()=>!f()),[_,v]=S.useState(""),[x,k]=S.useState(()=>o?.geminiApiKeys||[]),[C,N]=S.useState(()=>o?.codexApiKeys||[]),[L,M]=S.useState(()=>o?.claudeApiKeys||[]),[O,T]=S.useState(()=>o?.vertexApiKeys||[]),[P,E]=S.useState(()=>o?.openaiCompatibility||[]),[R,q]=S.useState(null),I=a!=="connected",Y=!!R,{keyStats:X,usageDetails:K,loadKeyStats:B,refreshKeyStats:H}=UJ(),z=F=>F instanceof Error?F.message:typeof F=="string"?F:"",Q=S.useCallback(async()=>{f()||y(!0),v("");try{const[ee,J,re]=await Promise.allSettled([r(),_i.getVertexConfigs(),qa.getAmpcode()]);if(ee.status!=="fulfilled")throw ee.reason;const fe=ee.value;k(fe?.geminiApiKeys||[]),N(fe?.codexApiKeys||[]),M(fe?.claudeApiKeys||[]),T(fe?.vertexApiKeys||[]),E(fe?.openaiCompatibility||[]),J.status==="fulfilled"&&(T(J.value||[]),c("vertex-api-key",J.value||[]),d("vertex-api-key")),re.status==="fulfilled"&&(c("ampcode",re.value),d("ampcode"))}catch(ee){const J=z(ee)||t("notification.refresh_failed");v(J)}finally{y(!1)}},[d,r,f,t,c]);S.useEffect(()=>{p.current||(p.current=!0,Q(),B().catch(()=>{}))},[Q,B]),S.useEffect(()=>{o?.geminiApiKeys&&k(o.geminiApiKeys),o?.codexApiKeys&&N(o.codexApiKeys),o?.claudeApiKeys&&M(o.claudeApiKeys),o?.vertexApiKeys&&T(o.vertexApiKeys),o?.openaiCompatibility&&E(o.openaiCompatibility)},[o?.geminiApiKeys,o?.codexApiKeys,o?.claudeApiKeys,o?.vertexApiKeys,o?.openaiCompatibility]),rp(H);const W=S.useCallback(F=>{e(F,{state:{fromAiProviders:!0}})},[e]),D=async F=>{const ee=x[F];ee&&i({title:t("ai_providers.gemini_delete_title",{defaultValue:"Delete Gemini Key"}),message:t("ai_providers.gemini_delete_confirm"),variant:"danger",confirmText:t("common.confirm"),onConfirm:async()=>{try{await _i.deleteGeminiKey(ee.apiKey);const J=x.filter((re,fe)=>fe!==F);k(J),c("gemini-api-key",J),d("gemini-api-key"),n(t("notification.gemini_key_deleted"),"success")}catch(J){const re=z(J);n(`${t("notification.delete_failed")}: ${re}`,"error")}}})},U=async(F,ee,J)=>{if(F==="gemini"){const Te=x[ee];if(!Te)return;const Qe=`${F}:${Te.apiKey}`;q(Qe);const at=x,Ce=J?ZL(Te.excludedModels):JL(Te.excludedModels),ft={...Te,excludedModels:Ce},mt=at.map((kt,Pt)=>Pt===ee?ft:kt);k(mt),c("gemini-api-key",mt),d("gemini-api-key");try{await _i.saveGeminiKeys(mt),n(t(J?"notification.config_enabled":"notification.config_disabled"),"success")}catch(kt){const Pt=z(kt);k(at),c("gemini-api-key",at),d("gemini-api-key"),n(`${t("notification.update_failed")}: ${Pt}`,"error")}finally{q(null)}return}const re=F==="codex"?C:F==="claude"?L:O,fe=re[ee];if(!fe)return;const me=`${F}:${fe.apiKey}`;q(me);const de=re,ne=J?ZL(fe.excludedModels):JL(fe.excludedModels),Be={...fe,excludedModels:ne},Ke=de.map((Te,Qe)=>Qe===ee?Be:Te);F==="codex"?(N(Ke),c("codex-api-key",Ke),d("codex-api-key")):F==="claude"?(M(Ke),c("claude-api-key",Ke),d("claude-api-key")):(T(Ke),c("vertex-api-key",Ke),d("vertex-api-key"));try{F==="codex"?await _i.saveCodexConfigs(Ke):F==="claude"?await _i.saveClaudeConfigs(Ke):await _i.saveVertexConfigs(Ke),n(t(J?"notification.config_enabled":"notification.config_disabled"),"success")}catch(Te){const Qe=z(Te);F==="codex"?(N(de),c("codex-api-key",de),d("codex-api-key")):F==="claude"?(M(de),c("claude-api-key",de),d("claude-api-key")):(T(de),c("vertex-api-key",de),d("vertex-api-key")),n(`${t("notification.update_failed")}: ${Qe}`,"error")}finally{q(null)}},$=async(F,ee)=>{const re=(F==="codex"?C:L)[ee];re&&i({title:t(`ai_providers.${F}_delete_title`,{defaultValue:`Delete ${F==="codex"?"Codex":"Claude"} Config`}),message:t(`ai_providers.${F}_delete_confirm`),variant:"danger",confirmText:t("common.confirm"),onConfirm:async()=>{try{if(F==="codex"){await _i.deleteCodexConfig(re.apiKey);const fe=C.filter((me,de)=>de!==ee);N(fe),c("codex-api-key",fe),d("codex-api-key"),n(t("notification.codex_config_deleted"),"success")}else{await _i.deleteClaudeConfig(re.apiKey);const fe=L.filter((me,de)=>de!==ee);M(fe),c("claude-api-key",fe),d("claude-api-key"),n(t("notification.claude_config_deleted"),"success")}}catch(fe){const me=z(fe);n(`${t("notification.delete_failed")}: ${me}`,"error")}}})},te=async F=>{const ee=O[F];ee&&i({title:t("ai_providers.vertex_delete_title",{defaultValue:"Delete Vertex Config"}),message:t("ai_providers.vertex_delete_confirm"),variant:"danger",confirmText:t("common.confirm"),onConfirm:async()=>{try{await _i.deleteVertexConfig(ee.apiKey);const J=O.filter((re,fe)=>fe!==F);T(J),c("vertex-api-key",J),d("vertex-api-key"),n(t("notification.vertex_config_deleted"),"success")}catch(J){const re=z(J);n(`${t("notification.delete_failed")}: ${re}`,"error")}}})},ie=async F=>{const ee=P[F];ee&&i({title:t("ai_providers.openai_delete_title",{defaultValue:"Delete OpenAI Provider"}),message:t("ai_providers.openai_delete_confirm"),variant:"danger",confirmText:t("common.confirm"),onConfirm:async()=>{try{await _i.deleteOpenAIProvider(ee.name);const J=P.filter((re,fe)=>fe!==F);E(J),c("openai-compatibility",J),d("openai-compatibility"),n(t("notification.openai_provider_deleted"),"success")}catch(J){const re=z(J);n(`${t("notification.delete_failed")}: ${re}`,"error")}}})};return h.jsxs("div",{className:V.container,children:[h.jsx("h1",{className:V.pageTitle,children:t("ai_providers.title")}),h.jsxs("div",{className:V.content,children:[_&&h.jsx("div",{className:"error-box",children:_}),h.jsx("div",{id:"provider-gemini",children:h.jsx(TJ,{configs:x,keyStats:X,usageDetails:K,loading:g,disableControls:I,isSwitching:Y,onAdd:()=>W("/ai-providers/gemini/new"),onEdit:F=>W(`/ai-providers/gemini/${F}`),onDelete:D,onToggle:(F,ee)=>void U("gemini",F,ee)})}),h.jsx("div",{id:"provider-codex",children:h.jsx(NJ,{configs:C,keyStats:X,usageDetails:K,loading:g,disableControls:I,isSwitching:Y,onAdd:()=>W("/ai-providers/codex/new"),onEdit:F=>W(`/ai-providers/codex/${F}`),onDelete:F=>void $("codex",F),onToggle:(F,ee)=>void U("codex",F,ee)})}),h.jsx("div",{id:"provider-claude",children:h.jsx(AJ,{configs:L,keyStats:X,usageDetails:K,loading:g,disableControls:I,isSwitching:Y,onAdd:()=>W("/ai-providers/claude/new"),onEdit:F=>W(`/ai-providers/claude/${F}`),onDelete:F=>void $("claude",F),onToggle:(F,ee)=>void U("claude",F,ee)})}),h.jsx("div",{id:"provider-vertex",children:h.jsx(LJ,{configs:O,keyStats:X,usageDetails:K,loading:g,disableControls:I,isSwitching:Y,onAdd:()=>W("/ai-providers/vertex/new"),onEdit:F=>W(`/ai-providers/vertex/${F}`),onDelete:te,onToggle:(F,ee)=>void U("vertex",F,ee)})}),h.jsx("div",{id:"provider-ampcode",children:h.jsx(_J,{config:o?.ampcode,loading:g,disableControls:I,isSwitching:Y,onEdit:()=>W("/ai-providers/ampcode")})}),h.jsx("div",{id:"provider-openai",children:h.jsx(MJ,{configs:P,keyStats:X,usageDetails:K,loading:g,disableControls:I,isSwitching:Y,resolvedTheme:s,onAdd:()=>W("/ai-providers/openai/new"),onEdit:F=>W(`/ai-providers/openai/${F}`),onDelete:ie})})]}),h.jsx(BJ,{})]})}function Hd({entries:t,onChange:e,addLabel:n,disabled:i=!1,namePlaceholder:s="model-name",aliasPlaceholder:a="alias (optional)",hideAddButton:o=!1,onAdd:r,className:c="",rowClassName:d="",inputClassName:f="",removeButtonClassName:p="",removeButtonTitle:g="Remove",removeButtonAriaLabel:y="Remove"}){const _=t.length?t:[{name:"",alias:""}],v=["header-input-list",c].filter(Boolean).join(" "),x=["input",f].filter(Boolean).join(" "),k=["header-input-row",d].filter(Boolean).join(" "),C=(M,O,T)=>{const P=_.map((E,R)=>R===M?{...E,[O]:T}:E);e(P)},N=()=>{r?r():e([..._,{name:"",alias:""}])},L=M=>{const O=_.filter((T,P)=>P!==M);e(O.length?O:[{name:"",alias:""}])};return h.jsxs("div",{className:v,children:[_.map((M,O)=>h.jsx(S.Fragment,{children:h.jsxs("div",{className:k,children:[h.jsx("input",{className:x,placeholder:s,value:M.name,onChange:T=>C(O,"name",T.target.value),disabled:i}),h.jsx("span",{className:"header-separator",children:"→"}),h.jsx("input",{className:x,placeholder:a,value:M.alias,onChange:T=>C(O,"alias",T.target.value),disabled:i}),h.jsx(he,{variant:"ghost",size:"sm",onClick:()=>L(O),disabled:i||_.length<=1,className:p,title:g,"aria-label":y,children:h.jsx(Gc,{size:14})})]})},O)),!o&&n&&h.jsx(he,{variant:"secondary",size:"sm",onClick:N,disabled:i,className:"align-start",children:n})]})}const qJ=28,zJ=90,pO=1.2;function jo({enabled:t=!0,edgeSize:e=qJ,threshold:n=zJ,onBack:i}){const s=S.useRef(null),a=S.useRef(null);return S.useEffect(()=>{if(!t)return;const o=s.current;if(!o)return;const r=()=>{a.current=null},c=g=>{const y=a.current;if(!y?.active||g.pointerId!==y.pointerId)return;const _=g.clientX-y.startX,v=g.clientY-y.startY;Math.abs(v)>Math.abs(_)*pO&&r()},d=g=>{const y=a.current;if(!y?.active||g.pointerId!==y.pointerId)return;const _=g.clientX-y.startX,v=g.clientY-y.startY,x=Math.abs(_)>Math.abs(v)*pO;r(),_>=n&&x&&i()},f=g=>{const y=a.current;y?.active&&g.pointerId===y.pointerId&&r()},p=g=>{g.pointerType==="touch"&&g.isPrimary&&(g.clientX>e||(a.current={pointerId:g.pointerId,startX:g.clientX,startY:g.clientY,active:!0}))};return o.addEventListener("pointerdown",p,{passive:!0}),window.addEventListener("pointermove",c,{passive:!0}),window.addEventListener("pointerup",d,{passive:!0}),window.addEventListener("pointercancel",f,{passive:!0}),()=>{o.removeEventListener("pointerdown",p),window.removeEventListener("pointermove",c),window.removeEventListener("pointerup",d),window.removeEventListener("pointercancel",f)}},[e,t,i,n]),s}function Wd(t){const{enabled:e=!0,shouldBlock:n,dialog:i}=t,{showConfirmation:s}=mn(),a=S.useRef(""),o=S.useRef(0),r=S.useRef(""),c=$n(),d=S.useCallback(()=>{o.current=Date.now()+2e3,r.current=""},[]),f=S.useCallback(y=>{if(!e)return!1;const _=Date.now();if(o.current>_){const v=`${y.nextLocation.pathname}${y.nextLocation.search}${y.nextLocation.hash}`;if(r.current||(r.current=v),r.current===v)return!1}else o.current!==0&&(o.current=0,r.current="");return typeof n=="function"?n(y):n},[e,n]),p=E9(f);S.useEffect(()=>{o.current!==0&&(o.current=0,r.current="")},[c.key]);const g=S.useMemo(()=>p.state!=="blocked"||!p.location?"":`${p.location.pathname}${p.location.search}${p.location.hash}`,[p.location,p.state]);return S.useEffect(()=>{if(p.state!=="blocked"){a.current="";return}!g||a.current===g||(a.current=g,s({title:i.title,message:i.message,confirmText:i.confirmText,cancelText:i.cancelText,variant:i.variant??"danger",onConfirm:()=>p.proceed(),onCancel:()=>p.reset()}))},[g,p,i,s]),{allowNextNavigation:d}}function Fc({size:t=20,className:e=""}){return h.jsx("div",{className:`loading-spinner${e?` ${e}`:""}`,style:{width:t,height:t,borderWidth:t/7},role:"status","aria-live":"polite"})}const KJ="SecondaryScreenShell-module__container___9DAwq",VJ="SecondaryScreenShell-module__topBar___vHzq4",HJ="SecondaryScreenShell-module__topBarTitle___Q8LCy",WJ="SecondaryScreenShell-module__backButton___d6Zgy",GJ="SecondaryScreenShell-module__backIcon___R8Iyn",$J="SecondaryScreenShell-module__backText___CODk7",XJ="SecondaryScreenShell-module__rightSlot___ZvWJR",QJ="SecondaryScreenShell-module__loadingState___4Jbsa",YJ="SecondaryScreenShell-module__content___nVk3R",JJ="SecondaryScreenShell-module__contentWithFloatingAction___4gXgb",ZJ="SecondaryScreenShell-module__floatingActionContainer___sSKk-",eZ="SecondaryScreenShell-module__floatingActionSurface___Wfab-",ma={container:KJ,topBar:VJ,topBarTitle:HJ,backButton:WJ,backIcon:GJ,backText:$J,rightSlot:XJ,loadingState:QJ,content:YJ,contentWithFloatingAction:JJ,floatingActionContainer:ZJ,floatingActionSurface:eZ},Ro=S.forwardRef(function({title:e,onBack:n,backLabel:i="Back",backAriaLabel:s,rightAction:a,hideTopBarBackButton:o=!1,hideTopBarRightAction:r=!1,floatingAction:c,isLoading:d=!1,loadingLabel:f="Loading...",className:p="",contentClassName:g="",children:y},_){const v=[ma.container,p].filter(Boolean).join(" "),x=[ma.content,c?ma.contentWithFloatingAction:"",g].filter(Boolean).join(" "),k=typeof e=="string"?e:void 0,C=s??i,N=sp(),L=N?N.status==="current":!0,M=!!c&&L,O=S.useRef(null);return S.useLayoutEffect(()=>{if(!M)return;const T=O.current;if(!T)return;const P=()=>{const R=T.getBoundingClientRect().height;document.documentElement.style.setProperty("--secondary-shell-floating-action-height",`${R}px`)};P(),window.addEventListener("resize",P);const E=typeof ResizeObserver>"u"?null:new ResizeObserver(P);return E?.observe(T),()=>{E?.disconnect(),window.removeEventListener("resize",P),document.documentElement.style.removeProperty("--secondary-shell-floating-action-height")}},[M]),h.jsxs(h.Fragment,{children:[h.jsxs("div",{className:v,ref:_,children:[h.jsxs("div",{className:ma.topBar,children:[n&&!o?h.jsxs(he,{variant:"ghost",size:"sm",onClick:n,className:ma.backButton,"aria-label":C,children:[h.jsx("span",{className:ma.backIcon,children:h.jsx(Lz,{size:18})}),h.jsx("span",{className:ma.backText,children:i})]}):h.jsx("div",{}),h.jsx("div",{className:ma.topBarTitle,title:k,children:e}),h.jsx("div",{className:ma.rightSlot,children:r?null:a})]}),d?h.jsxs("div",{className:ma.loadingState,children:[h.jsx(Fc,{size:16}),h.jsx("span",{children:f})]}):h.jsx("div",{className:x,children:y})]}),M&&typeof document<"u"?Po.createPortal(h.jsx("div",{className:ma.floatingActionContainer,children:h.jsx("div",{className:ma.floatingActionSurface,ref:O,children:c})}),document.body):null]})}),tZ="AiProvidersEditLayout-module__content___v2E8m",nZ="AiProvidersEditLayout-module__floatingActions___PxOCK",iZ="AiProvidersEditLayout-module__floatingBackButton___8aBq-",sZ="AiProvidersEditLayout-module__floatingSaveButton___mkAOu",aZ="AiProvidersEditLayout-module__upstreamApiKeyRow___z09Am",oZ="AiProvidersEditLayout-module__upstreamApiKeyHint___xz0n6",rZ="AiProvidersEditLayout-module__ampcodeUpstreamMappingsHeader___QmHOa",lZ="AiProvidersEditLayout-module__ampcodeUpstreamMappingsList___L5-l5",cZ="AiProvidersEditLayout-module__ampcodeUpstreamMappingCard___bQzJ0",uZ="AiProvidersEditLayout-module__ampcodeUpstreamMappingCardTop___V69Ba",dZ="AiProvidersEditLayout-module__ampcodeUpstreamMappingTitle___ofJgZ",Vt={content:tZ,floatingActions:nZ,floatingBackButton:iZ,floatingSaveButton:sZ,upstreamApiKeyRow:aZ,upstreamApiKeyHint:oZ,ampcodeUpstreamMappingsHeader:rZ,ampcodeUpstreamMappingsList:lZ,ampcodeUpstreamMappingCard:cZ,ampcodeUpstreamMappingCardTop:uZ,ampcodeUpstreamMappingTitle:dZ},o1=t=>t instanceof Error?t.message:typeof t=="string"?t:"",hZ=t=>(t??[]).reduce((e,n)=>{const i=String(n?.name??"").trim(),s=String(n?.alias??"").trim();return!i&&!s||e.push({from:i,to:s}),e},[]),fZ=t=>e5(t.upstreamApiKeyEntries).map(e=>({upstreamApiKey:e.upstreamApiKey,apiKeys:e.apiKeys})),sf=t=>JSON.stringify({upstreamUrl:String(t.upstreamUrl??"").trim(),upstreamApiKey:String(t.upstreamApiKey??"").trim(),forceModelMappings:!!t.forceModelMappings,upstreamApiKeys:fZ(t),modelMappings:hZ(t.mappingEntries)});function mZ(){const{t}=nt(),e=Ri(),n=$n(),{showNotification:i,showConfirmation:s}=mn(),o=en($=>$.connectionStatus)!=="connected",r=It($=>$.config),c=It($=>$.updateConfigValue),d=It($=>$.clearCache),[f,p]=S.useState(()=>Xg(null)),[g,y]=S.useState(!1),[_,v]=S.useState(!1),[x,k]=S.useState(!1),[C,N]=S.useState(!1),[L,M]=S.useState(""),[O,T]=S.useState(!1),[P,E]=S.useState(()=>sf(Xg(null))),R=S.useRef(!1),q=S.useRef(!1),I=S.useMemo(()=>t("ai_providers.ampcode_modal_title"),[t]),Y=S.useCallback(()=>{if(n.state?.fromAiProviders){e(-1);return}e("/ai-providers",{replace:!0})},[n.state,e]),X=jo({onBack:Y});S.useEffect(()=>{const $=te=>{te.key==="Escape"&&Y()};return window.addEventListener("keydown",$),()=>window.removeEventListener("keydown",$)},[Y]),S.useEffect(()=>(q.current=!0,()=>{q.current=!1}),[]),S.useEffect(()=>{if(R.current)return;R.current=!0,y(!0),v(!1),k(!1),N(!1),M("");const $=Xg(It.getState().config?.ampcode??null);p($),E(sf($)),(async()=>{try{const te=await qa.getAmpcode();if(!q.current)return;v(!0),c("ampcode",te),d("ampcode");const ie=Xg(te);p(ie),E(sf(ie))}catch(te){if(!q.current)return;M(o1(te)||t("notification.refresh_failed"))}finally{q.current&&y(!1)}})()},[d,t,c]);const K=S.useMemo(()=>sf(f),[f]),B=P!==K,H=!g&&!O,{allowNextNavigation:z}=Wd({enabled:H,shouldBlock:({currentLocation:$,nextLocation:te})=>B&&$.pathname!==te.pathname,dialog:{title:t("common.unsaved_changes_title"),message:t("common.unsaved_changes_message"),confirmText:t("common.leave"),cancelText:t("common.stay"),variant:"danger"}}),Q=async()=>{s({title:t("ai_providers.ampcode_clear_upstream_api_key_title",{defaultValue:"Clear Upstream API Key"}),message:t("ai_providers.ampcode_clear_upstream_api_key_confirm"),variant:"danger",confirmText:t("common.confirm"),onConfirm:async()=>{T(!0),M("");try{await qa.clearUpstreamApiKey();const te={...r?.ampcode??{}};delete te.upstreamApiKey,c("ampcode",te),d("ampcode"),i(t("notification.ampcode_upstream_api_key_cleared"),"success")}catch($){const te=o1($);M(te),i(`${t("notification.update_failed")}: ${te}`,"error")}finally{T(!1)}}})},W=async()=>{T(!0),M("");try{const $=f.upstreamUrl.trim(),te=f.upstreamApiKey.trim(),ie=e5(f.upstreamApiKeyEntries),F=f$(f.mappingEntries);$?await qa.updateUpstreamUrl($):await qa.clearUpstreamUrl(),await qa.updateForceModelMappings(f.forceModelMappings),(_||C)&&(ie.length?await qa.saveUpstreamApiKeys(ie):await qa.deleteUpstreamApiKeys([])),(_||x)&&(F.length?await qa.saveModelMappings(F):await qa.clearModelMappings()),te&&await qa.updateUpstreamApiKey(te);const J={...r?.ampcode??{},forceModelMappings:f.forceModelMappings};$?J.upstreamUrl=$:delete J.upstreamUrl,te&&(J.upstreamApiKey=te),(_||C)&&(ie.length?J.upstreamApiKeys=ie:delete J.upstreamApiKeys),(_||x)&&(F.length?J.modelMappings=F:delete J.modelMappings),c("ampcode",J),d("ampcode"),i(t("notification.ampcode_updated"),"success"),z(),E(sf(f)),Y()}catch($){const te=o1($);M(te),i(`${t("notification.update_failed")}: ${te}`,"error")}finally{T(!1)}},D=async()=>{if(!_&&(x||C)){s({title:t("ai_providers.ampcode_lists_overwrite_title"),message:t("ai_providers.ampcode_lists_overwrite_confirm"),variant:"secondary",confirmText:t("common.confirm"),onConfirm:W});return}await W()},U=!o&&!O&&!g;return h.jsx(Ro,{ref:X,contentClassName:Vt.content,title:I,onBack:Y,backLabel:t("common.back"),backAriaLabel:t("common.back"),hideTopBarBackButton:!0,hideTopBarRightAction:!0,floatingAction:h.jsxs("div",{className:Vt.floatingActions,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:Y,className:Vt.floatingBackButton,children:t("common.back")}),h.jsx(he,{size:"sm",onClick:()=>void D(),loading:O,disabled:!U,className:Vt.floatingSaveButton,children:t("common.save")})]}),isLoading:g,loadingLabel:t("common.loading"),children:h.jsxs(jt,{children:[L&&h.jsx("div",{className:"error-box",children:L}),h.jsx(lt,{label:t("ai_providers.ampcode_upstream_url_label"),placeholder:t("ai_providers.ampcode_upstream_url_placeholder"),value:f.upstreamUrl,onChange:$=>p(te=>({...te,upstreamUrl:$.target.value})),disabled:g||O||o,hint:t("ai_providers.ampcode_upstream_url_hint")}),h.jsx(lt,{label:t("ai_providers.ampcode_upstream_api_key_label"),placeholder:t("ai_providers.ampcode_upstream_api_key_placeholder"),type:"password",value:f.upstreamApiKey,onChange:$=>p(te=>({...te,upstreamApiKey:$.target.value})),disabled:g||O||o,hint:t("ai_providers.ampcode_upstream_api_key_hint")}),h.jsxs("div",{className:Vt.upstreamApiKeyRow,children:[h.jsx("div",{className:Vt.upstreamApiKeyHint,children:t("ai_providers.ampcode_upstream_api_key_current",{key:r?.ampcode?.upstreamApiKey?Pa(r.ampcode.upstreamApiKey):t("common.not_set")})}),h.jsx(he,{variant:"danger",size:"sm",onClick:()=>void Q(),disabled:g||O||o||!r?.ampcode?.upstreamApiKey,children:t("ai_providers.ampcode_clear_upstream_api_key")})]}),h.jsxs("div",{className:"form-group",children:[h.jsxs("div",{className:Vt.ampcodeUpstreamMappingsHeader,children:[h.jsx("label",{children:t("ai_providers.ampcode_upstream_api_keys_label")}),h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>{N(!0),p($=>({...$,upstreamApiKeyEntries:[...$.upstreamApiKeyEntries,{upstreamApiKey:"",clientApiKeysText:""}]}))},disabled:g||O||o,children:t("ai_providers.ampcode_upstream_api_keys_add_btn")})]}),h.jsx("div",{className:Vt.ampcodeUpstreamMappingsList,children:(f.upstreamApiKeyEntries.length?f.upstreamApiKeyEntries:[{upstreamApiKey:"",clientApiKeysText:""}]).map(($,te,ie)=>h.jsxs("div",{className:Vt.ampcodeUpstreamMappingCard,children:[h.jsxs("div",{className:Vt.ampcodeUpstreamMappingCardTop,children:[h.jsx("span",{className:Vt.ampcodeUpstreamMappingTitle,children:t("ai_providers.ampcode_upstream_api_keys_item_title",{index:te+1})}),h.jsx(he,{variant:"ghost",size:"sm",onClick:()=>{N(!0),p(F=>{const ee=F.upstreamApiKeyEntries.filter((J,re)=>re!==te);return{...F,upstreamApiKeyEntries:ee.length?ee:[{upstreamApiKey:"",clientApiKeysText:""}]}})},disabled:g||O||o||ie.length<=1,children:t("common.delete")})]}),h.jsx("input",{className:"input",placeholder:t("ai_providers.ampcode_upstream_api_keys_upstream_placeholder"),"aria-label":t("ai_providers.ampcode_upstream_api_keys_upstream_placeholder"),value:$.upstreamApiKey,onChange:F=>{const ee=F.target.value;N(!0),p(J=>({...J,upstreamApiKeyEntries:J.upstreamApiKeyEntries.map((re,fe)=>fe===te?{...re,upstreamApiKey:ee}:re)}))},disabled:g||O||o}),h.jsx("textarea",{className:"input",placeholder:t("ai_providers.ampcode_upstream_api_keys_clients_placeholder"),"aria-label":t("ai_providers.ampcode_upstream_api_keys_clients_placeholder"),value:$.clientApiKeysText,onChange:F=>{const ee=F.target.value;N(!0),p(J=>({...J,upstreamApiKeyEntries:J.upstreamApiKeyEntries.map((re,fe)=>fe===te?{...re,clientApiKeysText:ee}:re)}))},rows:3,disabled:g||O||o})]},te))}),h.jsx("div",{className:"hint",children:t("ai_providers.ampcode_upstream_api_keys_hint")})]}),h.jsxs("div",{className:"form-group",children:[h.jsx(xi,{label:t("ai_providers.ampcode_force_model_mappings_label"),checked:f.forceModelMappings,onChange:$=>p(te=>({...te,forceModelMappings:$})),disabled:g||O||o}),h.jsx("div",{className:"hint",children:t("ai_providers.ampcode_force_model_mappings_hint")})]}),h.jsxs("div",{className:"form-group",children:[h.jsx("label",{children:t("ai_providers.ampcode_model_mappings_label")}),h.jsx(Hd,{entries:f.mappingEntries,onChange:$=>{k(!0),p(te=>({...te,mappingEntries:$}))},addLabel:t("ai_providers.ampcode_model_mappings_add_btn"),namePlaceholder:t("ai_providers.ampcode_model_mappings_from_placeholder"),aliasPlaceholder:t("ai_providers.ampcode_model_mappings_to_placeholder"),removeButtonTitle:t("common.delete"),removeButtonAriaLabel:t("common.delete"),disabled:g||O||o}),h.jsx("div",{className:"hint",children:t("ai_providers.ampcode_model_mappings_hint")})]})]})})}const lp=t=>!Array.isArray(t)||t.length===0?[{name:"",alias:""}]:t.map(e=>({name:e.name||"",alias:e.alias||""})),Zw=t=>t.filter(e=>e.name.trim()).map(e=>{const n={name:e.name.trim()},i=e.alias.trim();return i&&i!==n.name&&(n.alias=i),n}),gO=()=>({apiKey:"",priority:void 0,prefix:"",baseUrl:"",proxyUrl:"",headers:[],models:[],excludedModels:[],modelEntries:[{name:"",alias:""}],excludedText:""}),pZ=t=>{if(!t)return null;const e=Number.parseInt(t,10);return Number.isFinite(e)?e:null},_O=t=>t instanceof Error?t.message:typeof t=="string"?t:"",gZ=t=>(t??[]).reduce((e,n)=>{const i=String(n?.name??"").trim();let s=String(n?.alias??"").trim();return i&&(s=s||i),!i&&!s||e.push({name:i,alias:s}),e},[]),_Z=t=>{if(!t)return null;const e=String(t.mode??"").trim().toLowerCase()||"auto",n=!!t.strictMode,i=Array.isArray(t.sensitiveWords)?t.sensitiveWords.map(s=>String(s??"").trim()).filter(Boolean):[];return{mode:e,strictMode:n,sensitiveWords:i.length?i:null}},e_=t=>JSON.stringify({apiKey:String(t.apiKey??"").trim(),priority:t.priority!==void 0&&Number.isFinite(t.priority)?Math.trunc(t.priority):null,prefix:String(t.prefix??"").trim(),baseUrl:String(t.baseUrl??"").trim(),proxyUrl:String(t.proxyUrl??"").trim(),headers:ep(t.headers),models:gZ(t.modelEntries),excludedModels:Rl(t.excludedText??""),cloak:_Z(t.cloak)});function yO(){const{t}=nt(),e=Ri(),n=$n(),{showNotification:i}=mn(),s=Wm(),a=typeof s.index=="string",o=S.useMemo(()=>pZ(s.index),[s.index]),r=a&&o===null,d=en(Te=>Te.connectionStatus)!=="connected",f=It(Te=>Te.config),p=It(Te=>Te.fetchConfig),g=It(Te=>Te.isCacheValid),y=It(Te=>Te.updateConfigValue),_=It(Te=>Te.clearCache),[v,x]=S.useState(()=>f?.claudeApiKeys??[]),[k,C]=S.useState(()=>!g("claude-api-key")),[N,L]=S.useState(!1),M=S.useMemo(()=>r?`claude:invalid:${s.index??"unknown"}`:o===null?"claude:new":`claude:${o}`,[o,r,s.index]),O=sr(Te=>Te.drafts[M]),T=sr(Te=>Te.acquireDraft),P=sr(Te=>Te.releaseDraft),E=sr(Te=>Te.initDraft),R=sr(Te=>Te.setDraftBaselineSignature),q=sr(Te=>Te.setDraftForm),I=sr(Te=>Te.setDraftTestModel),Y=sr(Te=>Te.setDraftTestStatus),X=sr(Te=>Te.setDraftTestMessage),K=O?.form??gO(),B=O?.testModel??"",H=O?.testStatus??"idle",z=O?.testMessage??"",Q=S.useCallback(Te=>{q(M,Te)},[M,q]),W=S.useCallback(Te=>{I(M,Te)},[M,I]),D=S.useCallback(Te=>{Y(M,Te)},[M,Y]),U=S.useCallback(Te=>{X(M,Te)},[M,X]),$=S.useMemo(()=>{if(o!==null)return v[o]},[v,o]),te=o!==null&&!$,ie=S.useMemo(()=>K.modelEntries.map(Te=>Te.name.trim()).filter(Boolean),[K.modelEntries]);S.useEffect(()=>(T(M),()=>P(M)),[T,M,P]);const F=S.useCallback(()=>{if(n.state?.fromAiProviders){e(-1);return}e("/ai-providers",{replace:!0})},[n.state,e]);S.useEffect(()=>{let Te=!1;return g("claude-api-key")||C(!0),p("claude-api-key").then(at=>{Te||x(Array.isArray(at)?at:[])}).catch(at=>{if(Te)return;const Ce=_O(at)||t("notification.refresh_failed");i(`${t("notification.load_failed")}: ${Ce}`,"error")}).finally(()=>{Te||C(!1)}),()=>{Te=!0}},[p,g,i,t]),S.useEffect(()=>{if(k||O?.initialized)return;if($){const Qe={...$,headers:Zm($.headers),modelEntries:lp($.models),excludedText:Uy($.excludedModels)},at=Qe.modelEntries.map(ft=>ft.name.trim()).filter(Boolean),Ce=e_(Qe);E(M,{baselineSignature:Ce,form:Qe,testModel:at[0]||"",testStatus:"idle",testMessage:""});return}const Te=gO();E(M,{baselineSignature:e_(Te),form:Te,testModel:"",testStatus:"idle",testMessage:""})},[O?.initialized,M,E,$,k]);const ee=!O?.initialized,J=S.useMemo(()=>e_(K),[K]),re=O?.baselineSignature??"",fe=!!O?.initialized&&re!==J,me=S.useMemo(()=>a?`/ai-providers/claude/${s.index??""}`:"/ai-providers/claude/new",[a,s.index]),de=!ee&&!N&&!r&&!te,{allowNextNavigation:ne}=Wd({enabled:de,shouldBlock:({nextLocation:Te})=>{const Qe=Te.pathname,at=Qe===me||Qe.startsWith(`${me}/`);return fe&&!at},dialog:{title:t("common.unsaved_changes_title"),message:t("common.unsaved_changes_message"),confirmText:t("common.leave"),cancelText:t("common.stay"),variant:"danger"}});S.useEffect(()=>{if(!ee){if(ie.length===0){B&&(W(""),D("idle"),U(""));return}(!B||!ie.includes(B))&&(W(ie[0]),D("idle"),U(""))}},[ie,ee,U,W,D,B]);const Be=S.useCallback(Te=>{if(!Te.length)return;let Qe=0;Q(at=>{const Ce=new Map;at.modelEntries.forEach(mt=>{const kt=mt.name.trim();kt&&Ce.set(kt,{name:kt,alias:mt.alias?.trim()||""})}),Te.forEach(mt=>{const kt=mt.name.trim();!kt||Ce.has(kt)||(Ce.set(kt,{name:kt,alias:mt.alias??""}),Qe+=1)});const ft=Array.from(Ce.values());return{...at,modelEntries:ft.length?ft:[{name:"",alias:""}]}}),Qe>0&&i(t("ai_providers.claude_models_fetch_added",{count:Qe}),"success")},[Q,i,t]),Ke=S.useCallback(async()=>{if(!d&&!N&&!ee&&!r&&!te){L(!0);try{const Qe={apiKey:K.apiKey.trim(),priority:K.priority!==void 0?Math.trunc(K.priority):void 0,prefix:K.prefix?.trim()||void 0,baseUrl:(K.baseUrl??"").trim()||void 0,proxyUrl:K.proxyUrl?.trim()||void 0,headers:gs(K.headers),models:K.modelEntries.map(Ce=>{const ft=Ce.name.trim();if(!ft)return null;const mt=Ce.alias.trim();return{name:ft,alias:mt||ft}}).filter(Boolean),excludedModels:Rl(K.excludedText),cloak:K.cloak},at=o!==null?v.map((Ce,ft)=>ft===o?Qe:Ce):[...v,Qe];await _i.saveClaudeConfigs(at),x(at),y("claude-api-key",at),_("claude-api-key"),i(t(o!==null?"notification.claude_config_updated":"notification.claude_config_added"),"success"),ne(),R(M,e_(K)),F()}catch(Qe){i(`${t("notification.update_failed")}: ${_O(Qe)}`,"error")}finally{L(!1)}}},[ne,_,v,M,d,o,K,F,te,r,ee,R,N,i,t,y]);return h.jsx(Tw,{context:{hasIndexParam:a,editIndex:o,invalidIndexParam:r,invalidIndex:te,disableControls:d,loading:ee,saving:N,form:K,setForm:Q,testModel:B,setTestModel:W,testStatus:H,setTestStatus:D,testMessage:z,setTestMessage:U,availableModels:ie,handleBack:F,handleSave:Ke,mergeDiscoveredModels:Be}})}function cp({entries:t,onChange:e,addLabel:n,disabled:i=!1,keyPlaceholder:s="X-Custom-Header",valuePlaceholder:a="value",removeButtonTitle:o="Remove",removeButtonAriaLabel:r="Remove"}){const c=t.length?t:[{key:"",value:""}],d=(g,y,_)=>{const v=c.map((x,k)=>k===g?{...x,[y]:_}:x);e(v)},f=()=>{e([...c,{key:"",value:""}])},p=g=>{const y=c.filter((_,v)=>v!==g);e(y.length?y:[{key:"",value:""}])};return h.jsxs("div",{className:"header-input-list",children:[c.map((g,y)=>h.jsx(S.Fragment,{children:h.jsxs("div",{className:"header-input-row",children:[h.jsx("input",{className:"input",placeholder:s,value:g.key,onChange:_=>d(y,"key",_.target.value),disabled:i}),h.jsx("span",{className:"header-separator",children:":"}),h.jsx("input",{className:"input",placeholder:a,value:g.value,onChange:_=>d(y,"value",_.target.value),disabled:i}),h.jsx(he,{variant:"ghost",size:"sm",onClick:()=>p(y),disabled:i||c.length<=1,title:o,"aria-label":r,children:h.jsx(Gc,{size:14})})]})},y)),h.jsx(he,{variant:"secondary",size:"sm",onClick:f,disabled:i,className:"align-start",children:n})]})}const bO=3e4,vO="2023-06-01",yZ=t=>t instanceof Error?t.message:typeof t=="string"?t:"",xO=(t,e)=>{const n=e.toLowerCase();return Object.keys(t).some(i=>i.toLowerCase()===n)},bZ=t=>{const e=Object.entries(t).find(([s])=>s.toLowerCase()==="authorization");if(!e)return"";const n=String(e[1]??"").trim();return n&&n.match(/^Bearer\s+(.+)$/i)?.[1]?.trim()||""};function SO(){const{t}=nt(),e=Ri(),{showNotification:n}=mn(),{hasIndexParam:i,invalidIndexParam:s,invalidIndex:a,disableControls:o,loading:r,saving:c,form:d,setForm:f,testModel:p,setTestModel:g,testStatus:y,setTestStatus:_,testMessage:v,setTestMessage:x,availableModels:k,handleBack:C,handleSave:N}=Ny(),L=t(i?"ai_providers.claude_edit_modal_title":"ai_providers.claude_add_modal_title"),M=jo({onBack:C}),[O,T]=S.useState(!1),P=S.useRef(null);S.useEffect(()=>{const H=z=>{z.key==="Escape"&&C()};return window.addEventListener("keydown",H),()=>window.removeEventListener("keydown",H)},[C]),S.useEffect(()=>{d.cloak&&(P.current=d.cloak)},[d.cloak]);const E=!o&&!r&&!c&&!s&&!a&&!O,R=S.useMemo(()=>{const H=new Set;return d.modelEntries.reduce((z,Q)=>{const W=Q.name.trim();if(!W||H.has(W))return z;H.add(W);const D=Q.alias.trim();return z.push({value:W,label:D&&D!==W?`${W} (${D})`:W}),z},[])},[d.modelEntries]),q=S.useMemo(()=>[{value:"auto",label:t("ai_providers.claude_cloak_mode_auto")},{value:"always",label:t("ai_providers.claude_cloak_mode_always")},{value:"never",label:t("ai_providers.claude_cloak_mode_never")}],[t]),I=S.useMemo(()=>{const H=(d.cloak?.mode??"").trim().toLowerCase();return!H||H==="provider"?"auto":H==="auto"||H==="always"||H==="never"?H:"auto"},[d.cloak?.mode]),Y=S.useMemo(()=>{const H=d.headers.map(Q=>`${Q.key.trim()}:${Q.value.trim()}`).join("|"),z=d.modelEntries.map(Q=>`${Q.name.trim()}:${Q.alias.trim()}`).join("|");return[d.apiKey.trim(),d.baseUrl?.trim()??"",p.trim(),H,z].join("||")},[d.apiKey,d.baseUrl,d.headers,d.modelEntries,p]),X=S.useRef(Y);S.useEffect(()=>{X.current!==Y&&(X.current=Y,_("idle"),x(""))},[Y,x,_]);const K=()=>{e("models")},B=S.useCallback(async()=>{if(O)return;const H=p.trim()||k[0]||"";if(!H){const ie=t("ai_providers.claude_test_model_required");_("error"),x(ie),n(ie,"error");return}const z=gs(d.headers),Q=d.apiKey.trim(),W=xO(z,"x-api-key"),D=bZ(z),U=Q||D;if(!U&&!W){const ie=t("ai_providers.claude_test_key_required");_("error"),x(ie),n(ie,"error");return}const $=u$(d.baseUrl??"");if(!$){const ie=t("ai_providers.claude_test_endpoint_invalid");_("error"),x(ie),n(ie,"error");return}const te={"Content-Type":"application/json",...z};xO(te,"anthropic-version")||(te["anthropic-version"]=vO),Object.prototype.hasOwnProperty.call(te,"Anthropic-Version")||(te["Anthropic-Version"]=te["anthropic-version"]??vO),!W&&U&&(te["x-api-key"]=U),!Object.prototype.hasOwnProperty.call(te,"X-Api-Key")&&U&&(te["X-Api-Key"]=U),T(!0),_("loading"),x(t("ai_providers.claude_test_running"));try{const ie=await ea.request({method:"POST",url:$,header:te,data:JSON.stringify({model:H,max_tokens:8,messages:[{role:"user",content:"Hi"}]})},{timeout:bO});if(ie.statusCode<200||ie.statusCode>=300)throw new Error(Ka(ie));const F=t("ai_providers.claude_test_success");_("success"),x(F),n(F,"success")}catch(ie){const F=yZ(ie),re=(typeof ie=="object"&&ie!==null&&"code"in ie?String(ie.code):"")==="ECONNABORTED"||F.toLowerCase().includes("timeout")?t("ai_providers.claude_test_timeout",{seconds:bO/1e3}):`${t("ai_providers.claude_test_failed")}: ${F||t("common.unknown_error")}`;_("error"),x(re),n(re,"error")}finally{T(!1)}},[k,d.apiKey,d.baseUrl,d.headers,O,x,_,n,t,p]);return h.jsx(Ro,{ref:M,contentClassName:Vt.content,title:L,onBack:C,backLabel:t("common.back"),backAriaLabel:t("common.back"),hideTopBarBackButton:!0,hideTopBarRightAction:!0,floatingAction:h.jsxs("div",{className:Vt.floatingActions,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:C,className:Vt.floatingBackButton,children:t("common.back")}),h.jsx(he,{size:"sm",onClick:()=>void N(),loading:c,disabled:!E,className:Vt.floatingSaveButton,children:t("common.save")})]}),isLoading:r,loadingLabel:t("common.loading"),children:h.jsx(jt,{children:s||a?h.jsx("div",{className:V.sectionHint,children:t("common.invalid_provider_index")}):h.jsxs("div",{className:V.openaiEditForm,children:[h.jsx(lt,{label:t("ai_providers.claude_add_modal_key_label"),value:d.apiKey,onChange:H=>f(z=>({...z,apiKey:H.target.value})),disabled:c||o||O}),h.jsx(lt,{label:t("ai_providers.priority_label"),hint:t("ai_providers.priority_hint"),type:"number",step:1,value:d.priority??"",onChange:H=>{const z=H.target.value,Q=z.trim()===""?void 0:Number(z);f(W=>({...W,priority:Q!==void 0&&Number.isFinite(Q)?Q:void 0}))},disabled:c||o||O}),h.jsx(lt,{label:t("ai_providers.prefix_label"),placeholder:t("ai_providers.prefix_placeholder"),value:d.prefix??"",onChange:H=>f(z=>({...z,prefix:H.target.value})),hint:t("ai_providers.prefix_hint"),disabled:c||o||O}),h.jsx(lt,{label:t("ai_providers.claude_add_modal_url_label"),value:d.baseUrl??"",onChange:H=>f(z=>({...z,baseUrl:H.target.value})),disabled:c||o||O}),h.jsx(lt,{label:t("ai_providers.claude_add_modal_proxy_label"),value:d.proxyUrl??"",onChange:H=>f(z=>({...z,proxyUrl:H.target.value})),disabled:c||o||O}),h.jsx(cp,{entries:d.headers,onChange:H=>f(z=>({...z,headers:H})),addLabel:t("common.custom_headers_add"),keyPlaceholder:t("common.custom_headers_key_placeholder"),valuePlaceholder:t("common.custom_headers_value_placeholder"),removeButtonTitle:t("common.delete"),removeButtonAriaLabel:t("common.delete"),disabled:c||o||O}),h.jsxs("div",{className:V.modelConfigSection,children:[h.jsxs("div",{className:V.modelConfigHeader,children:[h.jsx("label",{className:V.modelConfigTitle,children:t("ai_providers.claude_models_label")}),h.jsxs("div",{className:V.modelConfigToolbar,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>f(H=>({...H,modelEntries:[...H.modelEntries,{name:"",alias:""}]})),disabled:c||o||O,children:t("ai_providers.claude_models_add_btn")}),h.jsx(he,{variant:"secondary",size:"sm",onClick:K,disabled:c||o||O,children:t("ai_providers.claude_models_fetch_button")})]})]}),h.jsx("div",{className:V.sectionHint,children:t("ai_providers.claude_models_hint")}),h.jsx(Hd,{entries:d.modelEntries,onChange:H=>f(z=>({...z,modelEntries:H})),namePlaceholder:t("common.model_name_placeholder"),aliasPlaceholder:t("common.model_alias_placeholder"),disabled:c||o||O,hideAddButton:!0,className:V.modelInputList,rowClassName:V.modelInputRow,inputClassName:V.modelInputField,removeButtonClassName:V.modelRowRemoveButton,removeButtonTitle:t("common.delete"),removeButtonAriaLabel:t("common.delete")}),h.jsxs("div",{className:V.modelTestPanel,children:[h.jsxs("div",{className:V.modelTestMeta,children:[h.jsx("label",{className:V.modelTestLabel,children:t("ai_providers.claude_test_title")}),h.jsx("span",{className:V.modelTestHint,children:t("ai_providers.claude_test_hint")})]}),h.jsxs("div",{className:V.modelTestControls,children:[h.jsx(Hi,{value:p,options:R,onChange:H=>{g(H),_("idle"),x("")},placeholder:k.length?t("ai_providers.claude_test_select_placeholder"):t("ai_providers.claude_test_select_empty"),className:V.openaiTestSelect,ariaLabel:t("ai_providers.claude_test_title"),disabled:c||o||O||y==="loading"||k.length===0}),h.jsx(he,{variant:y==="error"?"danger":"secondary",size:"sm",onClick:()=>void B(),loading:y==="loading",disabled:c||o||O||y==="loading"||k.length===0,className:V.modelTestAllButton,children:t("ai_providers.claude_test_action")})]})]}),v&&h.jsx("div",{className:`status-badge ${y==="error"?"error":y==="success"?"success":"muted"}`,children:v})]}),h.jsxs("div",{className:"form-group",children:[h.jsx("label",{children:t("ai_providers.excluded_models_label")}),h.jsx("textarea",{className:"input",placeholder:t("ai_providers.excluded_models_placeholder"),value:d.excludedText,onChange:H=>f(z=>({...z,excludedText:H.target.value})),rows:4,disabled:c||o||O}),h.jsx("div",{className:"hint",children:t("ai_providers.excluded_models_hint")})]}),h.jsxs("div",{className:V.modelConfigSection,children:[h.jsxs("div",{className:V.modelConfigHeader,children:[h.jsx("label",{className:V.modelConfigTitle,children:t("ai_providers.claude_cloak_title")}),h.jsx("div",{className:V.modelConfigToolbar,children:h.jsx(xi,{checked:!!d.cloak,onChange:H=>f(z=>{if(!H)return z.cloak&&(P.current=z.cloak),{...z,cloak:void 0};const Q=z.cloak??P.current??{mode:"auto",strictMode:!1,sensitiveWords:[]},W=String(Q.mode??"auto").trim()||"auto";return{...z,cloak:{mode:W,strictMode:Q.strictMode??!1,sensitiveWords:Q.sensitiveWords??[]}}}),disabled:c||o||O,ariaLabel:t("ai_providers.claude_cloak_toggle_aria"),label:t("ai_providers.claude_cloak_toggle_label")})})]}),h.jsx("div",{className:V.sectionHint,children:t("ai_providers.claude_cloak_hint")}),d.cloak?h.jsxs(h.Fragment,{children:[h.jsxs("div",{className:"form-group",children:[h.jsx("label",{children:t("ai_providers.claude_cloak_mode_label")}),h.jsx(Hi,{value:I,options:q,onChange:H=>f(z=>({...z,cloak:{...z.cloak??{},mode:H}})),ariaLabel:t("ai_providers.claude_cloak_mode_label"),disabled:c||o||O}),h.jsx("div",{className:"hint",children:t("ai_providers.claude_cloak_mode_hint")})]}),h.jsxs("div",{className:"form-group",children:[h.jsx("label",{children:t("ai_providers.claude_cloak_strict_label")}),h.jsx(xi,{checked:!!d.cloak.strictMode,onChange:H=>f(z=>({...z,cloak:{...z.cloak??{},strictMode:H}})),disabled:c||o||O,ariaLabel:t("ai_providers.claude_cloak_strict_label")}),h.jsx("div",{className:"hint",children:t("ai_providers.claude_cloak_strict_hint")})]}),h.jsxs("div",{className:"form-group",children:[h.jsx("label",{children:t("ai_providers.claude_cloak_sensitive_words_label")}),h.jsx("textarea",{className:"input",placeholder:t("ai_providers.claude_cloak_sensitive_words_placeholder"),value:(d.cloak.sensitiveWords??[]).join(`
`),onChange:H=>{const z=Qw(H.target.value);f(Q=>({...Q,cloak:{...Q.cloak??{},sensitiveWords:z.length?z:void 0}}))},rows:3,disabled:c||o||O}),h.jsx("div",{className:"hint",children:t("ai_providers.claude_cloak_sensitive_words_hint")})]})]}):null]})]})})})}const vZ=t=>t instanceof Error?t.message:typeof t=="string"?t:"";function wO(){const{t}=nt(),e=Ri(),{disableControls:n,loading:i,saving:s,form:a,mergeDiscoveredModels:o}=Ny(),[r,c]=S.useState(""),[d,f]=S.useState([]),[p,g]=S.useState(!1),[y,_]=S.useState(""),[v,x]=S.useState(""),[k,C]=S.useState(new Set),N=S.useRef(""),L=S.useMemo(()=>{const K=v.trim().toLowerCase();return K?d.filter(B=>{const H=(B.name||"").toLowerCase(),z=(B.alias||"").toLowerCase(),Q=(B.description||"").toLowerCase();return H.includes(K)||z.includes(K)||Q.includes(K)}):d},[d,v]),M=S.useMemo(()=>L.map(K=>K.name),[L]),O=S.useMemo(()=>M.length>0&&M.every(K=>k.has(K)),[k,M]),T=S.useCallback(async()=>{g(!0),_("");const K=gs(a.headers);try{const B=await Ar.fetchClaudeModelsViaApiCall(a.baseUrl??"",a.apiKey.trim()||void 0,K);f(B)}catch(B){f([]);const H=vZ(B),z=Object.keys(K).some(U=>U.toLowerCase()==="x-api-key"),Q=Object.keys(K).some(U=>U.toLowerCase()==="authorization"),D=H.toLowerCase().includes("x-api-key")||H.includes("401")?` [diag: apiKeyField=${a.apiKey.trim()?"yes":"no"}, customXApiKey=${z?"yes":"no"}, customAuthorization=${Q?"yes":"no"}]`:"";_(`${t("ai_providers.claude_models_fetch_error")}: ${H}${D}`)}finally{g(!1)}},[a.apiKey,a.baseUrl,a.headers,t]);S.useEffect(()=>{if(i)return;const K=Ar.buildClaudeModelsEndpoint(a.baseUrl??"");c(K),f([]),x(""),C(new Set),_("");const B=gs(a.headers),H=Object.keys(B).some($=>$.toLowerCase()==="x-api-key"),z=Object.keys(B).some($=>$.toLowerCase()==="authorization");if(!(!!a.apiKey.trim()||H||z))return;const D=Object.entries(B).sort(([$],[te])=>$.toLowerCase().localeCompare(te.toLowerCase())).map(([$,te])=>`${$}:${te}`).join("|"),U=`${K}||${a.apiKey.trim()}||${D}`;N.current!==U&&(N.current=U,T())},[T,a.apiKey,a.baseUrl,a.headers,i]),S.useEffect(()=>{const K=new Set(d.map(B=>B.name));C(B=>{let H=!1;const z=new Set;return B.forEach(Q=>{K.has(Q)?z.add(Q):H=!0}),H?z:B})},[d]);const P=S.useCallback(()=>{e(-1)},[e]),E=jo({onBack:P});S.useEffect(()=>{const K=B=>{B.key==="Escape"&&P()};return window.addEventListener("keydown",K),()=>window.removeEventListener("keydown",K)},[P]);const R=K=>{C(B=>{const H=new Set(B);return H.has(K)?H.delete(K):H.add(K),H})},q=S.useCallback(()=>{C(K=>{const B=new Set(K);return M.forEach(H=>B.add(H)),B})},[M]),I=S.useCallback(()=>{C(new Set)},[]),Y=()=>{const K=d.filter(B=>k.has(B.name));K.length&&o(K),P()},X=!n&&!s&&!p&&k.size>0;return h.jsx(Ro,{ref:E,contentClassName:Vt.content,title:t("ai_providers.claude_models_fetch_title"),onBack:P,backLabel:t("common.back"),backAriaLabel:t("common.back"),hideTopBarBackButton:!0,hideTopBarRightAction:!0,floatingAction:h.jsxs("div",{className:Vt.floatingActions,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:P,className:Vt.floatingBackButton,children:t("common.back")}),h.jsx(he,{size:"sm",onClick:Y,disabled:!X,className:Vt.floatingSaveButton,children:t("ai_providers.claude_models_fetch_apply")})]}),isLoading:i,loadingLabel:t("common.loading"),children:h.jsx(jt,{children:h.jsxs("div",{className:V.openaiModelsContent,children:[h.jsx("div",{className:V.sectionHint,children:t("ai_providers.claude_models_fetch_hint")}),h.jsxs("div",{className:V.openaiModelsEndpointSection,children:[h.jsx("label",{className:V.openaiModelsEndpointLabel,children:t("ai_providers.claude_models_fetch_url_label")}),h.jsxs("div",{className:V.openaiModelsEndpointControls,children:[h.jsx("input",{className:`input ${V.openaiModelsEndpointInput}`,readOnly:!0,value:r}),h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>void T(),loading:p,disabled:n||s,children:t("ai_providers.claude_models_fetch_refresh")})]})]}),h.jsx(lt,{label:t("ai_providers.claude_models_search_label"),placeholder:t("ai_providers.claude_models_search_placeholder"),value:v,onChange:K=>x(K.target.value),disabled:p}),d.length>0&&h.jsxs("div",{className:V.modelDiscoveryToolbar,children:[h.jsxs("div",{className:V.modelDiscoveryToolbarActions,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:q,disabled:n||s||p||L.length===0||O,children:t("ai_providers.model_discovery_select_visible")}),h.jsx(he,{variant:"ghost",size:"sm",onClick:I,disabled:n||s||p||k.size===0,children:t("ai_providers.model_discovery_clear_selection")})]}),h.jsx("div",{className:V.modelDiscoverySelectionSummary,children:t("ai_providers.model_discovery_selected_count",{count:k.size})})]}),y&&h.jsx("div",{className:"error-box",children:y}),p?h.jsx("div",{className:V.sectionHint,children:t("ai_providers.claude_models_fetch_loading")}):d.length===0?h.jsx("div",{className:V.sectionHint,children:t("ai_providers.claude_models_fetch_empty")}):L.length===0?h.jsx("div",{className:V.sectionHint,children:t("ai_providers.claude_models_search_empty")}):h.jsx("div",{className:V.modelDiscoveryList,children:L.map(K=>{const B=k.has(K.name);return h.jsx(Nl,{checked:B,onChange:()=>R(K.name),disabled:n||s||p,ariaLabel:K.name,className:`${V.modelDiscoveryRow} ${B?V.modelDiscoveryRowSelected:""}`,labelClassName:V.modelDiscoverySelectionLabel,label:h.jsxs("div",{className:V.modelDiscoveryMeta,children:[h.jsxs("div",{className:V.modelDiscoveryName,children:[K.name,K.alias&&h.jsx("span",{className:V.modelDiscoveryAlias,children:K.alias})]}),K.description&&h.jsx("div",{className:V.modelDiscoveryDesc,children:K.description})]})},K.name)})})]})})})}const r1=()=>({apiKey:"",priority:void 0,prefix:"",baseUrl:"",websockets:!1,proxyUrl:"",headers:[],models:[],excludedModels:[],modelEntries:[{name:"",alias:""}],excludedText:""}),xZ=t=>{if(!t)return null;const e=Number.parseInt(t,10);return Number.isFinite(e)?e:null},SZ=t=>t instanceof Error?t.message:typeof t=="string"?t:"",wZ=t=>(t??[]).reduce((e,n)=>{const i=String(n?.name??"").trim();let s=String(n?.alias??"").trim();return i&&s===i&&(s=""),!i&&!s||e.push({name:i,alias:s}),e},[]),af=t=>JSON.stringify({apiKey:String(t.apiKey??"").trim(),priority:t.priority!==void 0&&Number.isFinite(t.priority)?Math.trunc(t.priority):null,prefix:String(t.prefix??"").trim(),baseUrl:String(t.baseUrl??"").trim(),websockets:!!t.websockets,proxyUrl:String(t.proxyUrl??"").trim(),headers:ep(t.headers),models:wZ(t.modelEntries),excludedModels:Rl(t.excludedText??"")});function kO(){const{t}=nt(),e=Ri(),n=$n(),i=Wm(),{showNotification:s}=mn(),o=en(ce=>ce.connectionStatus)!=="connected",r=It(ce=>ce.fetchConfig),c=It(ce=>ce.updateConfigValue),d=It(ce=>ce.clearCache),[f,p]=S.useState([]),[g,y]=S.useState(!0),[_,v]=S.useState(!1),[x,k]=S.useState(""),[C,N]=S.useState(()=>r1()),[L,M]=S.useState(()=>af(r1())),[O,T]=S.useState(!1),[P,E]=S.useState(""),[R,q]=S.useState([]),[I,Y]=S.useState(!1),[X,K]=S.useState(""),[B,H]=S.useState(""),[z,Q]=S.useState(new Set),W=S.useRef(""),D=S.useRef(0),U=typeof i.index=="string",$=S.useMemo(()=>xZ(i.index),[i.index]),te=U&&$===null,ie=S.useMemo(()=>{if($!==null)return f[$]},[f,$]),F=$!==null&&!ie,ee=t($!==null?"ai_providers.codex_edit_modal_title":"ai_providers.codex_add_modal_title"),J=S.useCallback(()=>{if(n.state?.fromAiProviders){e(-1);return}e("/ai-providers",{replace:!0})},[n.state,e]),re=jo({onBack:J});S.useEffect(()=>{const ce=ye=>{ye.key==="Escape"&&J()};return window.addEventListener("keydown",ce),()=>window.removeEventListener("keydown",ce)},[J]),S.useEffect(()=>{let ce=!1;return y(!0),k(""),r("codex-api-key").then(ye=>{ce||p(Array.isArray(ye)?ye:[])}).catch(ye=>{if(ce)return;const Ue=ye instanceof Error?ye.message:"";k(Ue||t("notification.refresh_failed"))}).finally(()=>{ce||y(!1)}),()=>{ce=!0}},[r,t]),S.useEffect(()=>{if(g)return;if(ie){const ye={...ie,websockets:!!ie.websockets,headers:Zm(ie.headers),modelEntries:lp(ie.models),excludedText:Uy(ie.excludedModels)};N(ye),M(af(ye));return}const ce=r1();N(ce),M(af(ce))},[ie,g]);const fe=S.useMemo(()=>af(C),[C]),me=L!==fe,de=!g&&!_&&!te&&!F,{allowNextNavigation:ne}=Wd({enabled:de,shouldBlock:({currentLocation:ce,nextLocation:ye})=>me&&ce.pathname!==ye.pathname,dialog:{title:t("common.unsaved_changes_title"),message:t("common.unsaved_changes_message"),confirmText:t("common.leave"),cancelText:t("common.stay"),variant:"danger"}}),Be=!o&&!_&&!g&&!te&&!F,Ke=S.useMemo(()=>{const ce=B.trim().toLowerCase();return ce?R.filter(ye=>{const Ue=(ye.name||"").toLowerCase(),Me=(ye.alias||"").toLowerCase(),Ye=(ye.description||"").toLowerCase();return Ue.includes(ce)||Me.includes(ce)||Ye.includes(ce)}):R},[R,B]),Te=S.useMemo(()=>Ke.map(ce=>ce.name),[Ke]),Qe=S.useMemo(()=>Te.length>0&&Te.every(ce=>z.has(ce)),[z,Te]),at=S.useCallback(ce=>{if(!ce.length)return;let ye=0;N(Ue=>{const Me=new Map;Ue.modelEntries.forEach(_t=>{const pt=_t.name.trim();pt&&Me.set(pt.toLowerCase(),{name:pt,alias:_t.alias?.trim()||""})}),ce.forEach(_t=>{const pt=String(_t.name??"").trim();if(!pt)return;const ot=pt.toLowerCase();Me.has(ot)||(Me.set(ot,{name:pt,alias:_t.alias??""}),ye+=1)});const Ye=Array.from(Me.values());return{...Ue,modelEntries:Ye.length?Ye:[{name:"",alias:""}]}}),ye>0&&s(t("ai_providers.codex_models_fetch_added",{count:ye}),"success")},[N,s,t]),Ce=S.useCallback(async()=>{const ce=D.current+=1;Y(!0),K("");try{const ye=gs(C.headers),Ue=Object.keys(ye).some(_t=>_t.toLowerCase()==="authorization"),Me=C.apiKey.trim()||void 0,Ye=await Ar.fetchV1ModelsViaApiCall(C.baseUrl??"",Ue?void 0:Me,ye);if(D.current!==ce)return;q(Ye)}catch(ye){if(D.current!==ce)return;q([]);const Ue=SZ(ye);K(`${t("ai_providers.codex_models_fetch_error")}: ${Ue}`)}finally{D.current===ce&&Y(!1)}},[C.apiKey,C.baseUrl,C.headers,t]);S.useEffect(()=>{if(!O){W.current="",D.current+=1,Y(!1);return}const ce=Ar.buildV1ModelsEndpoint(C.baseUrl??"");if(E(ce),q([]),H(""),Q(new Set),K(""),!ce)return;const ye=gs(C.headers),Ue=Object.keys(ye).some(ot=>ot.toLowerCase()==="authorization");if(!(!!C.apiKey.trim()||Ue))return;const _t=Object.entries(ye).sort(([ot],[ue])=>ot.toLowerCase().localeCompare(ue.toLowerCase())).map(([ot,ue])=>`${ot}:${ue}`).join("|"),pt=`${ce}||${C.apiKey.trim()}||${_t}`;W.current!==pt&&(W.current=pt,Ce())},[Ce,C.apiKey,C.baseUrl,C.headers,O]),S.useEffect(()=>{const ce=new Set(R.map(ye=>ye.name));Q(ye=>{let Ue=!1;const Me=new Set;return ye.forEach(Ye=>{ce.has(Ye)?Me.add(Ye):Ue=!0}),Ue?Me:ye})},[R]);const ft=ce=>{Q(ye=>{const Ue=new Set(ye);return Ue.has(ce)?Ue.delete(ce):Ue.add(ce),Ue})},mt=S.useCallback(()=>{Q(ce=>{const ye=new Set(ce);return Te.forEach(Ue=>ye.add(Ue)),ye})},[Te]),kt=S.useCallback(()=>{Q(new Set)},[]),Pt=()=>{const ce=R.filter(ye=>z.has(ye.name));ce.length&&at(ce),T(!1)},wt=S.useCallback(async()=>{if(!Be)return;const ye=(C.baseUrl??"").trim()||void 0;if(!ye){s(t("notification.codex_base_url_required"),"error");return}v(!0),k("");try{const Ue={apiKey:C.apiKey.trim(),priority:C.priority!==void 0?Math.trunc(C.priority):void 0,prefix:C.prefix?.trim()||void 0,baseUrl:ye,websockets:!!C.websockets,proxyUrl:C.proxyUrl?.trim()||void 0,headers:gs(C.headers),models:Zw(C.modelEntries),excludedModels:Rl(C.excludedText)},Me=$!==null?f.map((Ye,_t)=>_t===$?Ue:Ye):[...f,Ue];await _i.saveCodexConfigs(Me),c("codex-api-key",Me),d("codex-api-key"),s(t($!==null?"notification.codex_config_updated":"notification.codex_config_added"),"success"),ne(),M(af(C)),J()}catch(Ue){const Me=Ue instanceof Error?Ue.message:"";k(Me),s(`${t("notification.update_failed")}: ${Me}`,"error")}finally{v(!1)}},[ne,Be,d,f,$,C,J,s,t,c]),Tt=!o&&!_&&!g&&!te&&!F&&!!(C.baseUrl??"").trim(),on=!o&&!_&&!I&&z.size>0;return h.jsx(Ro,{ref:re,contentClassName:Vt.content,title:ee,onBack:J,backLabel:t("common.back"),backAriaLabel:t("common.back"),hideTopBarBackButton:!0,hideTopBarRightAction:!0,floatingAction:h.jsxs("div",{className:Vt.floatingActions,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:J,className:Vt.floatingBackButton,children:t("common.back")}),h.jsx(he,{size:"sm",onClick:wt,loading:_,disabled:!Be,className:Vt.floatingSaveButton,children:t("common.save")})]}),isLoading:g,loadingLabel:t("common.loading"),children:h.jsxs(jt,{children:[x&&h.jsx("div",{className:"error-box",children:x}),te||F?h.jsx("div",{className:"hint",children:t("common.invalid_provider_index")}):h.jsxs(h.Fragment,{children:[h.jsx(lt,{label:t("ai_providers.codex_add_modal_key_label"),value:C.apiKey,onChange:ce=>N(ye=>({...ye,apiKey:ce.target.value})),disabled:o||_}),h.jsx(lt,{label:t("ai_providers.priority_label"),hint:t("ai_providers.priority_hint"),type:"number",step:1,value:C.priority??"",onChange:ce=>{const ye=ce.target.value,Ue=ye.trim()===""?void 0:Number(ye);N(Me=>({...Me,priority:Ue!==void 0&&Number.isFinite(Ue)?Ue:void 0}))},disabled:o||_}),h.jsx(lt,{label:t("ai_providers.prefix_label"),placeholder:t("ai_providers.prefix_placeholder"),value:C.prefix??"",onChange:ce=>N(ye=>({...ye,prefix:ce.target.value})),hint:t("ai_providers.prefix_hint"),disabled:o||_}),h.jsx(lt,{label:t("ai_providers.codex_add_modal_url_label"),value:C.baseUrl??"",onChange:ce=>N(ye=>({...ye,baseUrl:ce.target.value})),disabled:o||_}),h.jsxs("div",{className:"form-group",children:[h.jsx("label",{children:t("ai_providers.codex_websockets_label")}),h.jsx(xi,{checked:!!C.websockets,onChange:ce=>N(ye=>({...ye,websockets:ce})),disabled:o||_,ariaLabel:t("ai_providers.codex_websockets_label")}),h.jsx("div",{className:"hint",children:t("ai_providers.codex_websockets_hint")})]}),h.jsx(lt,{label:t("ai_providers.codex_add_modal_proxy_label"),value:C.proxyUrl??"",onChange:ce=>N(ye=>({...ye,proxyUrl:ce.target.value})),disabled:o||_}),h.jsx(cp,{entries:C.headers,onChange:ce=>N(ye=>({...ye,headers:ce})),addLabel:t("common.custom_headers_add"),keyPlaceholder:t("common.custom_headers_key_placeholder"),valuePlaceholder:t("common.custom_headers_value_placeholder"),removeButtonTitle:t("common.delete"),removeButtonAriaLabel:t("common.delete"),disabled:o||_}),h.jsxs("div",{className:V.modelConfigSection,children:[h.jsxs("div",{className:V.modelConfigHeader,children:[h.jsx("label",{className:V.modelConfigTitle,children:t("ai_providers.codex_models_label")}),h.jsxs("div",{className:V.modelConfigToolbar,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>N(ce=>({...ce,modelEntries:[...ce.modelEntries,{name:"",alias:""}]})),disabled:o||_,children:t("ai_providers.codex_models_add_btn")}),h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>T(!0),disabled:!Tt,children:t("ai_providers.codex_models_fetch_button")})]})]}),h.jsx("div",{className:V.sectionHint,children:t("ai_providers.codex_models_hint")}),h.jsx(Hd,{entries:C.modelEntries,onChange:ce=>N(ye=>({...ye,modelEntries:ce})),namePlaceholder:t("common.model_name_placeholder"),aliasPlaceholder:t("common.model_alias_placeholder"),disabled:o||_,hideAddButton:!0,className:V.modelInputList,rowClassName:V.modelInputRow,inputClassName:V.modelInputField,removeButtonClassName:V.modelRowRemoveButton,removeButtonTitle:t("common.delete"),removeButtonAriaLabel:t("common.delete")})]}),h.jsxs("div",{className:"form-group",children:[h.jsx("label",{children:t("ai_providers.excluded_models_label")}),h.jsx("textarea",{className:"input",placeholder:t("ai_providers.excluded_models_placeholder"),value:C.excludedText,onChange:ce=>N(ye=>({...ye,excludedText:ce.target.value})),rows:4,disabled:o||_}),h.jsx("div",{className:"hint",children:t("ai_providers.excluded_models_hint")})]}),h.jsx(Ss,{open:O,title:t("ai_providers.codex_models_fetch_title"),onClose:()=>T(!1),width:720,footer:h.jsxs(h.Fragment,{children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>T(!1),disabled:I,children:t("common.cancel")}),h.jsx(he,{size:"sm",onClick:Pt,disabled:!on,children:t("ai_providers.codex_models_fetch_apply")})]}),children:h.jsxs("div",{className:V.openaiModelsContent,children:[h.jsx("div",{className:V.sectionHint,children:t("ai_providers.codex_models_fetch_hint")}),h.jsxs("div",{className:V.openaiModelsEndpointSection,children:[h.jsx("label",{className:V.openaiModelsEndpointLabel,children:t("ai_providers.codex_models_fetch_url_label")}),h.jsxs("div",{className:V.openaiModelsEndpointControls,children:[h.jsx("input",{className:`input ${V.openaiModelsEndpointInput}`,readOnly:!0,value:P}),h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>void Ce(),loading:I,disabled:o||_,children:t("ai_providers.codex_models_fetch_refresh")})]})]}),h.jsx(lt,{label:t("ai_providers.codex_models_search_label"),placeholder:t("ai_providers.codex_models_search_placeholder"),value:B,onChange:ce=>H(ce.target.value),disabled:I}),R.length>0&&h.jsxs("div",{className:V.modelDiscoveryToolbar,children:[h.jsxs("div",{className:V.modelDiscoveryToolbarActions,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:mt,disabled:o||_||I||Ke.length===0||Qe,children:t("ai_providers.model_discovery_select_visible")}),h.jsx(he,{variant:"ghost",size:"sm",onClick:kt,disabled:o||_||I||z.size===0,children:t("ai_providers.model_discovery_clear_selection")})]}),h.jsx("div",{className:V.modelDiscoverySelectionSummary,children:t("ai_providers.model_discovery_selected_count",{count:z.size})})]}),X&&h.jsx("div",{className:"error-box",children:X}),I?h.jsx("div",{className:V.sectionHint,children:t("ai_providers.codex_models_fetch_loading")}):R.length===0?h.jsx("div",{className:V.sectionHint,children:t("ai_providers.codex_models_fetch_empty")}):Ke.length===0?h.jsx("div",{className:V.sectionHint,children:t("ai_providers.codex_models_search_empty")}):h.jsx("div",{className:V.modelDiscoveryList,children:Ke.map(ce=>{const ye=z.has(ce.name);return h.jsx(Nl,{checked:ye,onChange:()=>ft(ce.name),disabled:o||_||I,ariaLabel:ce.name,className:`${V.modelDiscoveryRow} ${ye?V.modelDiscoveryRowSelected:""}`,labelClassName:V.modelDiscoverySelectionLabel,label:h.jsxs("div",{className:V.modelDiscoveryMeta,children:[h.jsxs("div",{className:V.modelDiscoveryName,children:[ce.name,ce.alias&&h.jsx("span",{className:V.modelDiscoveryAlias,children:ce.alias})]}),ce.description&&h.jsx("div",{className:V.modelDiscoveryDesc,children:ce.description})]})},ce.name)})})]})})]})]})})}const l1=()=>({apiKey:"",priority:void 0,prefix:"",baseUrl:"",proxyUrl:"",headers:[],modelEntries:[{name:"",alias:""}],excludedModels:[],excludedText:""}),kZ=t=>{if(!t)return null;const e=Number.parseInt(t,10);return Number.isFinite(e)?e:null},Nf=t=>String(t??"").trim().replace(/^\/?models\//i,""),CZ=t=>(t??[]).reduce((e,n)=>{const i=Nf(n?.name??"").trim();let s=String(n?.alias??"").trim();return i&&s===i&&(s=""),!i&&!s||e.push({name:i,alias:s}),e},[]),of=t=>JSON.stringify({apiKey:String(t.apiKey??"").trim(),priority:t.priority!==void 0&&Number.isFinite(t.priority)?Math.trunc(t.priority):null,prefix:String(t.prefix??"").trim(),baseUrl:String(t.baseUrl??"").trim(),proxyUrl:String(t.proxyUrl??"").trim(),headers:ep(t.headers),models:CZ(t.modelEntries),excludedModels:Rl(t.excludedText??"")});function CO(){const{t}=nt(),e=Ri(),n=$n(),i=Wm(),{showNotification:s}=mn(),o=en(ce=>ce.connectionStatus)!=="connected",r=It(ce=>ce.fetchConfig),c=It(ce=>ce.updateConfigValue),d=It(ce=>ce.clearCache),[f,p]=S.useState([]),[g,y]=S.useState(!0),[_,v]=S.useState(!1),[x,k]=S.useState(""),[C,N]=S.useState(()=>l1()),[L,M]=S.useState(()=>of(l1())),[O,T]=S.useState(!1),[P,E]=S.useState(""),[R,q]=S.useState([]),[I,Y]=S.useState(!1),[X,K]=S.useState(""),[B,H]=S.useState(""),[z,Q]=S.useState(new Set),W=S.useRef(""),D=S.useRef(0),U=typeof i.index=="string",$=S.useMemo(()=>kZ(i.index),[i.index]),te=U&&$===null,ie=S.useMemo(()=>{if($!==null)return f[$]},[f,$]),F=$!==null&&!ie,ee=t($!==null?"ai_providers.gemini_edit_modal_title":"ai_providers.gemini_add_modal_title"),J=S.useCallback(()=>{if(n.state?.fromAiProviders){e(-1);return}e("/ai-providers",{replace:!0})},[n.state,e]),re=jo({onBack:J});S.useEffect(()=>{const ce=ye=>{ye.key==="Escape"&&J()};return window.addEventListener("keydown",ce),()=>window.removeEventListener("keydown",ce)},[J]),S.useEffect(()=>{let ce=!1;return y(!0),k(""),r("gemini-api-key").then(ye=>{ce||p(Array.isArray(ye)?ye:[])}).catch(ye=>{if(ce)return;const Ue=ye instanceof Error?ye.message:"";k(Ue||t("notification.refresh_failed"))}).finally(()=>{ce||y(!1)}),()=>{ce=!0}},[r,t]),S.useEffect(()=>{if(g)return;if(ie){const{headers:ye,models:Ue,...Me}=ie,Ye={...Me,headers:Zm(ye),modelEntries:lp(Ue).map(_t=>({..._t,name:Nf(_t.name)})),excludedText:Uy(ie.excludedModels)};N(Ye),M(of(Ye));return}const ce=l1();N(ce),M(of(ce))},[ie,g]);const fe=!o&&!_&&!g&&!te&&!F,me=S.useMemo(()=>{const ce=B.trim().toLowerCase();return ce?R.filter(ye=>{const Ue=(ye.name||"").toLowerCase(),Me=(ye.alias||"").toLowerCase(),Ye=(ye.description||"").toLowerCase();return Ue.includes(ce)||Me.includes(ce)||Ye.includes(ce)}):R},[R,B]),de=S.useMemo(()=>me.map(ce=>ce.name),[me]),ne=S.useMemo(()=>de.length>0&&de.every(ce=>z.has(ce)),[z,de]),Be=S.useCallback(ce=>{if(!ce.length)return;let ye=0;N(Ue=>{const Me=new Map;Ue.modelEntries.forEach(_t=>{const pt=Nf(_t.name);pt&&Me.set(pt,{name:pt,alias:_t.alias?.trim()||""})}),ce.forEach(_t=>{const pt=Nf(_t.name);!pt||Me.has(pt)||(Me.set(pt,{name:pt,alias:_t.alias??""}),ye+=1)});const Ye=Array.from(Me.values());return{...Ue,modelEntries:Ye.length?Ye:[{name:"",alias:""}]}}),ye>0&&s(t("ai_providers.gemini_models_fetch_added",{count:ye}),"success")},[N,s,t]),Ke=S.useCallback(async()=>{const ce=D.current+=1;Y(!0),K("");const ye=gs(C.headers);try{const Ue=await Ar.fetchGeminiModelsViaApiCall(C.baseUrl??"",C.apiKey.trim()||void 0,ye);if(D.current!==ce)return;q(Ue)}catch(Ue){if(D.current!==ce)return;q([]);const Me=Ue instanceof Error?Ue.message:typeof Ue=="string"?Ue:"",Ye=Object.keys(ye).some(ue=>ue.toLowerCase()==="x-goog-api-key"),_t=Object.keys(ye).some(ue=>ue.toLowerCase()==="authorization"),ot=Me.toLowerCase().includes("api key")||Me.includes("401")?` [diag: apiKeyField=${C.apiKey.trim()?"yes":"no"}, customXGoogApiKey=${Ye?"yes":"no"}, customAuthorization=${_t?"yes":"no"}]`:"";K(`${t("ai_providers.gemini_models_fetch_error")}: ${Me}${ot}`)}finally{D.current===ce&&Y(!1)}},[C.apiKey,C.baseUrl,C.headers,t]);S.useEffect(()=>{if(!O){W.current="",D.current+=1,Y(!1);return}const ce=Ar.buildGeminiModelsEndpoint(C.baseUrl??"");E(ce),q([]),H(""),Q(new Set),K("");const ye=gs(C.headers),Ue=Object.keys(ye).some(ue=>ue.toLowerCase()==="x-goog-api-key"),Me=Object.keys(ye).some(ue=>ue.toLowerCase()==="authorization");if(!(!!C.apiKey.trim()||Ue||Me))return;const pt=Object.entries(ye).sort(([ue],[qe])=>ue.toLowerCase().localeCompare(qe.toLowerCase())).map(([ue,qe])=>`${ue}:${qe}`).join("|"),ot=`${ce}||${C.apiKey.trim()}||${pt}`;W.current!==ot&&(W.current=ot,Ke())},[Ke,C.apiKey,C.baseUrl,C.headers,O]),S.useEffect(()=>{const ce=new Set(R.map(ye=>ye.name));Q(ye=>{let Ue=!1;const Me=new Set;return ye.forEach(Ye=>{ce.has(Ye)?Me.add(Ye):Ue=!0}),Ue?Me:ye})},[R]);const Te=ce=>{Q(ye=>{const Ue=new Set(ye);return Ue.has(ce)?Ue.delete(ce):Ue.add(ce),Ue})},Qe=S.useCallback(()=>{Q(ce=>{const ye=new Set(ce);return de.forEach(Ue=>ye.add(Ue)),ye})},[de]),at=S.useCallback(()=>{Q(new Set)},[]),Ce=()=>{const ce=R.filter(ye=>z.has(ye.name));ce.length&&Be(ce),T(!1)},ft=S.useMemo(()=>of(C),[C]),mt=L!==ft,kt=!g&&!_&&!te&&!F,{allowNextNavigation:Pt}=Wd({enabled:kt,shouldBlock:({currentLocation:ce,nextLocation:ye})=>mt&&ce.pathname!==ye.pathname,dialog:{title:t("common.unsaved_changes_title"),message:t("common.unsaved_changes_message"),confirmText:t("common.leave"),cancelText:t("common.stay"),variant:"danger"}}),wt=S.useCallback(async()=>{if(fe){v(!0),k("");try{const ce=C.modelEntries.map(Me=>({...Me,name:Nf(Me.name)})),ye={apiKey:C.apiKey.trim(),priority:C.priority!==void 0?Math.trunc(C.priority):void 0,prefix:C.prefix?.trim()||void 0,baseUrl:C.baseUrl?.trim()||void 0,proxyUrl:C.proxyUrl?.trim()||void 0,headers:gs(C.headers),models:Zw(ce),excludedModels:Rl(C.excludedText)},Ue=$!==null?f.map((Me,Ye)=>Ye===$?ye:Me):[...f,ye];await _i.saveGeminiKeys(Ue),c("gemini-api-key",Ue),d("gemini-api-key"),s(t($!==null?"notification.gemini_key_updated":"notification.gemini_key_added"),"success"),Pt(),M(of(C)),J()}catch(ce){const ye=ce instanceof Error?ce.message:"";k(ye),s(`${t("notification.update_failed")}: ${ye}`,"error")}finally{v(!1)}}},[Pt,fe,d,f,$,C,J,s,t,c]),Tt=!o&&!_&&!g&&!te&&!F,on=!o&&!_&&!I&&z.size>0;return h.jsx(Ro,{ref:re,contentClassName:Vt.content,title:ee,onBack:J,backLabel:t("common.back"),backAriaLabel:t("common.back"),hideTopBarBackButton:!0,hideTopBarRightAction:!0,floatingAction:h.jsxs("div",{className:Vt.floatingActions,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:J,className:Vt.floatingBackButton,children:t("common.back")}),h.jsx(he,{size:"sm",onClick:wt,loading:_,disabled:!fe,className:Vt.floatingSaveButton,children:t("common.save")})]}),isLoading:g,loadingLabel:t("common.loading"),children:h.jsxs(jt,{children:[x&&h.jsx("div",{className:"error-box",children:x}),te||F?h.jsx("div",{className:"hint",children:t("common.invalid_provider_index")}):h.jsxs(h.Fragment,{children:[h.jsx(lt,{label:t("ai_providers.gemini_add_modal_key_label"),placeholder:t("ai_providers.gemini_add_modal_key_placeholder"),value:C.apiKey,onChange:ce=>N(ye=>({...ye,apiKey:ce.target.value})),disabled:o||_}),h.jsx(lt,{label:t("ai_providers.priority_label"),hint:t("ai_providers.priority_hint"),type:"number",step:1,value:C.priority??"",onChange:ce=>{const ye=ce.target.value,Ue=ye.trim()===""?void 0:Number(ye);N(Me=>({...Me,priority:Ue!==void 0&&Number.isFinite(Ue)?Ue:void 0}))},disabled:o||_}),h.jsx(lt,{label:t("ai_providers.prefix_label"),placeholder:t("ai_providers.prefix_placeholder"),value:C.prefix??"",onChange:ce=>N(ye=>({...ye,prefix:ce.target.value})),hint:t("ai_providers.prefix_hint"),disabled:o||_}),h.jsx(lt,{label:t("ai_providers.gemini_base_url_label"),placeholder:t("ai_providers.gemini_base_url_placeholder"),value:C.baseUrl??"",onChange:ce=>N(ye=>({...ye,baseUrl:ce.target.value})),disabled:o||_}),h.jsx(lt,{label:t("ai_providers.gemini_add_modal_proxy_label"),placeholder:t("ai_providers.gemini_add_modal_proxy_placeholder"),value:C.proxyUrl??"",onChange:ce=>N(ye=>({...ye,proxyUrl:ce.target.value})),disabled:o||_}),h.jsx(cp,{entries:C.headers,onChange:ce=>N(ye=>({...ye,headers:ce})),addLabel:t("common.custom_headers_add"),keyPlaceholder:t("common.custom_headers_key_placeholder"),valuePlaceholder:t("common.custom_headers_value_placeholder"),removeButtonTitle:t("common.delete"),removeButtonAriaLabel:t("common.delete"),disabled:o||_}),h.jsxs("div",{className:V.modelConfigSection,children:[h.jsxs("div",{className:V.modelConfigHeader,children:[h.jsx("label",{className:V.modelConfigTitle,children:t("ai_providers.gemini_models_label")}),h.jsxs("div",{className:V.modelConfigToolbar,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>N(ce=>({...ce,modelEntries:[...ce.modelEntries,{name:"",alias:""}]})),disabled:o||_,children:t("ai_providers.gemini_models_add_btn")}),h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>T(!0),disabled:!Tt,children:t("ai_providers.gemini_models_fetch_button")})]})]}),h.jsx("div",{className:V.sectionHint,children:t("ai_providers.gemini_models_hint")}),h.jsx(Hd,{entries:C.modelEntries,onChange:ce=>N(ye=>({...ye,modelEntries:ce})),namePlaceholder:t("common.model_name_placeholder"),aliasPlaceholder:t("common.model_alias_placeholder"),disabled:o||_,hideAddButton:!0,className:V.modelInputList,rowClassName:V.modelInputRow,inputClassName:V.modelInputField,removeButtonClassName:V.modelRowRemoveButton,removeButtonTitle:t("common.delete"),removeButtonAriaLabel:t("common.delete")})]}),h.jsxs("div",{className:"form-group",children:[h.jsx("label",{children:t("ai_providers.excluded_models_label")}),h.jsx("textarea",{className:"input",placeholder:t("ai_providers.excluded_models_placeholder"),value:C.excludedText,onChange:ce=>N(ye=>({...ye,excludedText:ce.target.value})),rows:4,disabled:o||_}),h.jsx("div",{className:"hint",children:t("ai_providers.excluded_models_hint")})]}),h.jsx(Ss,{open:O,title:t("ai_providers.gemini_models_fetch_title"),onClose:()=>T(!1),width:720,footer:h.jsxs(h.Fragment,{children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>T(!1),disabled:I,children:t("common.cancel")}),h.jsx(he,{size:"sm",onClick:Ce,disabled:!on,children:t("ai_providers.gemini_models_fetch_apply")})]}),children:h.jsxs("div",{className:V.openaiModelsContent,children:[h.jsx("div",{className:V.sectionHint,children:t("ai_providers.gemini_models_fetch_hint")}),h.jsxs("div",{className:V.openaiModelsEndpointSection,children:[h.jsx("label",{className:V.openaiModelsEndpointLabel,children:t("ai_providers.gemini_models_fetch_url_label")}),h.jsxs("div",{className:V.openaiModelsEndpointControls,children:[h.jsx("input",{className:`input ${V.openaiModelsEndpointInput}`,readOnly:!0,value:P}),h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>void Ke(),loading:I,disabled:o||_,children:t("ai_providers.gemini_models_fetch_refresh")})]})]}),h.jsx(lt,{label:t("ai_providers.gemini_models_search_label"),placeholder:t("ai_providers.gemini_models_search_placeholder"),value:B,onChange:ce=>H(ce.target.value),disabled:I}),R.length>0&&h.jsxs("div",{className:V.modelDiscoveryToolbar,children:[h.jsxs("div",{className:V.modelDiscoveryToolbarActions,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:Qe,disabled:o||_||I||me.length===0||ne,children:t("ai_providers.model_discovery_select_visible")}),h.jsx(he,{variant:"ghost",size:"sm",onClick:at,disabled:o||_||I||z.size===0,children:t("ai_providers.model_discovery_clear_selection")})]}),h.jsx("div",{className:V.modelDiscoverySelectionSummary,children:t("ai_providers.model_discovery_selected_count",{count:z.size})})]}),X&&h.jsx("div",{className:"error-box",children:X}),I?h.jsx("div",{className:V.sectionHint,children:t("ai_providers.gemini_models_fetch_loading")}):R.length===0?h.jsx("div",{className:V.sectionHint,children:t("ai_providers.gemini_models_fetch_empty")}):me.length===0?h.jsx("div",{className:V.sectionHint,children:t("ai_providers.gemini_models_search_empty")}):h.jsx("div",{className:V.modelDiscoveryList,children:me.map(ce=>{const ye=z.has(ce.name);return h.jsx(Nl,{checked:ye,onChange:()=>Te(ce.name),disabled:o||_||I,ariaLabel:ce.name,className:`${V.modelDiscoveryRow} ${ye?V.modelDiscoveryRowSelected:""}`,labelClassName:V.modelDiscoverySelectionLabel,label:h.jsxs("div",{className:V.modelDiscoveryMeta,children:[h.jsxs("div",{className:V.modelDiscoveryName,children:[ce.name,ce.alias&&h.jsx("span",{className:V.modelDiscoveryAlias,children:ce.alias})]}),ce.description&&h.jsx("div",{className:V.modelDiscoveryDesc,children:ce.description})]})},ce.name)})})]})})]})]})})}const AO=()=>({name:"",priority:void 0,prefix:"",baseUrl:"",headers:[],apiKeyEntries:[dd()],modelEntries:[{name:"",alias:""}],testModel:void 0}),AZ=t=>{if(!t)return null;const e=Number.parseInt(t,10);return Number.isFinite(e)?e:null},NO=t=>t instanceof Error?t.message:typeof t=="string"?t:"",NZ=t=>(t??[]).reduce((e,n)=>{const i=String(n?.name??"").trim();let s=String(n?.alias??"").trim();return i&&(s===""||s===i)&&(s=""),!i&&!s||e.push({name:i,alias:s}),e},[]),TZ=t=>!t||typeof t!="object"?[]:Object.entries(t).map(([e,n])=>({key:String(e??"").trim(),value:String(n??"").trim()})).filter(e=>e.key||e.value).sort((e,n)=>{const i=e.key.toLowerCase().localeCompare(n.key.toLowerCase());return i!==0?i:e.value.localeCompare(n.value)}),MZ=t=>(t??[]).reduce((e,n)=>{const i=String(n?.apiKey??"").trim(),s=String(n?.proxyUrl??"").trim(),a=TZ(n?.headers);return!i&&!s&&a.length===0||e.push({apiKey:i,proxyUrl:s,headers:a}),e},[]),t_=(t,e)=>JSON.stringify({name:String(t.name??"").trim(),priority:t.priority!==void 0&&Number.isFinite(t.priority)?Math.trunc(t.priority):null,prefix:String(t.prefix??"").trim(),baseUrl:String(t.baseUrl??"").trim(),headers:ep(t.headers),apiKeyEntries:MZ(t.apiKeyEntries),models:NZ(t.modelEntries),testModel:String(e??"").trim()});function TO(){const{t}=nt(),e=Ri(),n=$n(),{showNotification:i}=mn(),s=Wm(),a=typeof s.index=="string",o=S.useMemo(()=>AZ(s.index),[s.index]),r=a&&o===null,d=en(Ce=>Ce.connectionStatus)!=="connected",f=It(Ce=>Ce.config),p=It(Ce=>Ce.fetchConfig),g=It(Ce=>Ce.isCacheValid),[y,_]=S.useState(()=>f?.openaiCompatibility??[]),[v,x]=S.useState(()=>!g("openai-compatibility")),[k,C]=S.useState(!1),N=S.useMemo(()=>r?`openai:invalid:${s.index??"unknown"}`:o===null?"openai:new":`openai:${o}`,[o,r,s.index]),L=Ia(Ce=>Ce.drafts[N]),M=Ia(Ce=>Ce.acquireDraft),O=Ia(Ce=>Ce.releaseDraft),T=Ia(Ce=>Ce.initDraft),P=Ia(Ce=>Ce.setDraftBaselineSignature),E=Ia(Ce=>Ce.setDraftForm),R=Ia(Ce=>Ce.setDraftTestModel),q=Ia(Ce=>Ce.setDraftTestStatus),I=Ia(Ce=>Ce.setDraftTestMessage),Y=Ia(Ce=>Ce.setDraftKeyTestStatus),X=Ia(Ce=>Ce.resetDraftKeyTestStatuses),K=L?.form??AO(),B=L?.testModel??"",H=L?.testStatus??"idle",z=L?.testMessage??"",Q=L?.keyTestStatuses??[],W=S.useCallback(Ce=>{E(N,Ce)},[N,E]),D=S.useCallback(Ce=>{R(N,Ce)},[N,R]),U=S.useCallback(Ce=>{q(N,Ce)},[N,q]),$=S.useCallback(Ce=>{I(N,Ce)},[N,I]),te=S.useCallback((Ce,ft)=>{Y(N,Ce,ft)},[N,Y]),ie=S.useCallback(Ce=>{X(N,Ce)},[N,X]),F=S.useMemo(()=>{if(o!==null)return y[o]},[o,y]),ee=o!==null&&!F,J=S.useMemo(()=>K.modelEntries.map(Ce=>Ce.name.trim()).filter(Boolean),[K.modelEntries]);S.useEffect(()=>(M(N),()=>O(N)),[M,N,O]);const re=S.useCallback(()=>{if(n.state?.fromAiProviders){e(-1);return}e("/ai-providers",{replace:!0})},[n.state,e]);S.useEffect(()=>{let Ce=!1;return g("openai-compatibility")||x(!0),p("openai-compatibility").then(mt=>{Ce||_(Array.isArray(mt)?mt:[])}).catch(mt=>{if(Ce)return;const kt=NO(mt)||t("notification.refresh_failed");i(`${t("notification.load_failed")}: ${kt}`,"error")}).finally(()=>{Ce||x(!1)}),()=>{Ce=!0}},[p,g,i,t]),S.useEffect(()=>{if(!v&&!L?.initialized)if(F){const Ce=lp(F.models),ft={name:F.name,priority:F.priority,prefix:F.prefix??"",baseUrl:F.baseUrl,headers:Zm(F.headers),testModel:F.testModel,modelEntries:Ce,apiKeyEntries:F.apiKeyEntries?.length?F.apiKeyEntries:[dd()]},mt=Ce.map(wt=>wt.name.trim()).filter(Boolean),kt=F.testModel&&mt.includes(F.testModel)?F.testModel:mt[0]||"",Pt=t_(ft,kt);T(N,{baselineSignature:Pt,form:ft,testModel:kt,testStatus:"idle",testMessage:"",keyTestStatuses:[]})}else{const Ce=AO();T(N,{baselineSignature:t_(Ce,""),form:Ce,testModel:"",testStatus:"idle",testMessage:"",keyTestStatuses:[]})}},[L?.initialized,N,T,F,v]),S.useEffect(()=>{if(!v){if(J.length===0){B&&(D(""),U("idle"),$(""));return}(!B||!J.includes(B))&&(D(J[0]),U("idle"),$(""))}},[J,v,$,D,U,B]);const fe=S.useCallback(Ce=>{if(!Ce.length)return;let ft=0;W(mt=>{const kt=new Map;mt.modelEntries.forEach(wt=>{const Tt=wt.name.trim();Tt&&kt.set(Tt,{name:Tt,alias:wt.alias?.trim()||""})}),Ce.forEach(wt=>{const Tt=wt.name.trim();!Tt||kt.has(Tt)||(kt.set(Tt,{name:Tt,alias:wt.alias??""}),ft+=1)});const Pt=Array.from(kt.values());return{...mt,modelEntries:Pt.length?Pt:[{name:"",alias:""}]}}),ft>0&&i(t("ai_providers.openai_models_fetch_added",{count:ft}),"success")},[W,i,t]),me=!L?.initialized,de=S.useMemo(()=>t_(K,B),[K,B]),ne=L?.baselineSignature??"",Be=!!L?.initialized&&ne!==de,Ke=S.useMemo(()=>a?`/ai-providers/openai/${s.index??""}`:"/ai-providers/openai/new",[a,s.index]),Te=!me&&!k&&!r&&!ee,{allowNextNavigation:Qe}=Wd({enabled:Te,shouldBlock:({nextLocation:Ce})=>{const ft=Ce.pathname,mt=ft===Ke||ft.startsWith(`${Ke}/`);return Be&&!mt},dialog:{title:t("common.unsaved_changes_title"),message:t("common.unsaved_changes_message"),confirmText:t("common.leave"),cancelText:t("common.stay"),variant:"danger"}}),at=S.useCallback(async()=>{const Ce=K.name.trim(),ft=K.baseUrl.trim();if(!Ce||!ft){i(t("notification.openai_provider_required"),"error");return}C(!0);try{const mt={name:Ce,prefix:K.prefix?.trim()||void 0,baseUrl:ft,headers:gs(K.headers),apiKeyEntries:K.apiKeyEntries.map(on=>({apiKey:on.apiKey.trim(),proxyUrl:on.proxyUrl?.trim()||void 0,headers:on.headers}))};K.priority!==void 0&&Number.isFinite(K.priority)&&(mt.priority=Math.trunc(K.priority));const kt=B.trim();kt&&(mt.testModel=kt);const Pt=Zw(K.modelEntries);Pt.length&&(mt.models=Pt);const wt=o!==null?y.map((on,ce)=>ce===o?mt:on):[...y,mt];await _i.saveOpenAIProviders(wt);let Tt=wt;try{const on=await p("openai-compatibility",!0);Array.isArray(on)&&(Tt=on)}catch{}_(Tt),i(t(o!==null?"notification.openai_provider_updated":"notification.openai_provider_added"),"success"),Qe(),P(N,t_(K,B)),re()}catch(mt){i(`${t("notification.update_failed")}: ${NO(mt)}`,"error")}finally{C(!1)}},[Qe,N,o,p,K,re,y,P,i,t,B]);return h.jsx(Tw,{context:{hasIndexParam:a,editIndex:o,invalidIndexParam:r,invalidIndex:ee,disableControls:d,loading:me,saving:k,form:K,setForm:W,testModel:B,setTestModel:D,testStatus:H,setTestStatus:U,testMessage:z,setTestMessage:$,keyTestStatuses:Q,setDraftKeyTestStatus:te,resetDraftKeyTestStatuses:ie,availableModels:J,handleBack:re,handleSave:at,mergeDiscoveredModels:fe}})}const MO=3e4,LZ=t=>t instanceof Error?t.message:typeof t=="string"?t:"";function OZ(){return h.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",className:V.statusIconSpin,children:[h.jsx("circle",{cx:"8",cy:"8",r:"7",stroke:"currentColor",strokeOpacity:"0.25",strokeWidth:"2"}),h.jsx("path",{d:"M8 1A7 7 0 0 1 8 15",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})]})}function PZ(){return h.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:[h.jsx("circle",{cx:"8",cy:"8",r:"8",fill:"var(--success-color, #22c55e)"}),h.jsx("path",{d:"M4.5 8L7 10.5L11.5 6",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]})}function EZ(){return h.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:[h.jsx("circle",{cx:"8",cy:"8",r:"8",fill:"var(--danger-color, #c65746)"}),h.jsx("path",{d:"M5 5L11 11M11 5L5 11",stroke:"white",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]})}function jZ(){return h.jsx("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:h.jsx("circle",{cx:"8",cy:"8",r:"7",stroke:"var(--text-tertiary, #9ca3af)",strokeWidth:"2"})})}function RZ({status:t}){switch(t){case"loading":return h.jsx(OZ,{});case"success":return h.jsx(PZ,{});case"error":return h.jsx(EZ,{});default:return h.jsx(jZ,{})}}function LO(){const{t}=nt(),e=Ri(),{showNotification:n}=mn(),{hasIndexParam:i,invalidIndexParam:s,invalidIndex:a,disableControls:o,loading:r,saving:c,form:d,setForm:f,testModel:p,setTestModel:g,testStatus:y,setTestStatus:_,testMessage:v,setTestMessage:x,keyTestStatuses:k,setDraftKeyTestStatus:C,resetDraftKeyTestStatuses:N,availableModels:L,handleBack:M,handleSave:O}=Ny(),T=t(i?"ai_providers.openai_edit_modal_title":"ai_providers.openai_add_modal_title"),P=jo({onBack:M}),[E,R]=S.useState(!1);S.useEffect(()=>{const U=$=>{$.key==="Escape"&&M()};return window.addEventListener("keydown",U),()=>window.removeEventListener("keydown",U)},[M]);const q=!o&&!r&&!c&&!s&&!a&&!E,I=d.modelEntries.some(U=>U.name.trim()),Y=d.apiKeyEntries.some(U=>U.apiKey?.trim()),X=S.useMemo(()=>{const U=new Set;return d.modelEntries.reduce(($,te)=>{const ie=te.name.trim();if(!ie||U.has(ie))return $;U.add(ie);const F=te.alias.trim();return $.push({value:ie,label:F&&F!==ie?`${ie} (${F})`:ie}),$},[])},[d.modelEntries]),K=S.useMemo(()=>{const U=d.headers.map(te=>`${te.key.trim()}:${te.value.trim()}`).join("|"),$=d.modelEntries.map(te=>`${te.name.trim()}:${te.alias.trim()}`).join("|");return[d.baseUrl.trim(),p.trim(),U,$].join("||")},[d.baseUrl,d.headers,d.modelEntries,p]),B=S.useRef(K);S.useEffect(()=>{B.current!==K&&(B.current=K,N(d.apiKeyEntries.length),_("idle"),x(""))},[K,d.apiKeyEntries.length,N,_,x]);const H=S.useCallback(async U=>{const $=d.baseUrl.trim();if(!$)return n(t("notification.openai_test_url_required"),"error"),!1;const te=eO($);if(!te)return n(t("notification.openai_test_url_required"),"error"),!1;const ie=d.apiKeyEntries[U];if(!ie?.apiKey?.trim())return C(U,{status:"error",message:t("notification.openai_test_key_required")}),!1;const F=p.trim()||L[0]||"";if(!F)return n(t("notification.openai_test_model_required"),"error"),!1;const J={"Content-Type":"application/json",...gs(d.headers)};j4(J,"authorization")||(J.Authorization=`Bearer ${ie.apiKey.trim()}`),C(U,{status:"loading",message:""});try{const re=await ea.request({method:"POST",url:te,header:Object.keys(J).length?J:void 0,data:JSON.stringify({model:F,messages:[{role:"user",content:"Hi"}],stream:!1,max_tokens:5})},{timeout:MO});if(re.statusCode<200||re.statusCode>=300)throw new Error(Ka(re));return C(U,{status:"success",message:""}),!0}catch(re){const fe=LZ(re),ne=(typeof re=="object"&&re!==null&&"code"in re?String(re.code):"")==="ECONNABORTED"||fe.toLowerCase().includes("timeout")?t("ai_providers.openai_test_timeout",{seconds:MO/1e3}):fe;return C(U,{status:"error",message:ne}),!1}},[d.baseUrl,d.apiKeyEntries,d.headers,p,L,t,C,n]),z=S.useCallback(async U=>{if(E)return!1;R(!0);try{return await H(U)}finally{R(!1)}},[E,H]),Q=S.useCallback(async()=>{if(E)return;const U=d.baseUrl.trim();if(!U){const F=t("notification.openai_test_url_required");_("error"),x(F),n(F,"error");return}if(!eO(U)){const F=t("notification.openai_test_url_required");_("error"),x(F),n(F,"error");return}if(!(p.trim()||L[0]||"")){const F=t("notification.openai_test_model_required");_("error"),x(F),n(F,"error");return}const ie=d.apiKeyEntries.map((F,ee)=>F.apiKey?.trim()?ee:-1).filter(F=>F>=0);if(ie.length===0){const F=t("notification.openai_test_key_required");_("error"),x(F),n(F,"error");return}R(!0),_("loading"),x(t("ai_providers.openai_test_running")),N(d.apiKeyEntries.length);try{const ee=(await Promise.all(ie.map(re=>H(re)))).filter(Boolean).length,J=ie.length-ee;if(J===0){const re=t("ai_providers.openai_test_all_success",{count:ee});_("success"),x(re),n(re,"success")}else if(ee===0){const re=t("ai_providers.openai_test_all_failed",{count:J});_("error"),x(re),n(re,"error")}else{const re=t("ai_providers.openai_test_all_partial",{success:ee,failed:J});_("error"),x(re),n(re,"warning")}}finally{R(!1)}},[E,d.baseUrl,d.apiKeyEntries,p,L,t,_,x,N,H,n]),W=()=>{if(!d.baseUrl.trim()){n(t("ai_providers.openai_models_fetch_invalid_url"),"error");return}e("models")},D=U=>{const $=U.length?U:[dd()],te=(ee,J,re)=>{const fe=$.map((me,de)=>de===ee?{...me,[J]:re}:me);f(me=>({...me,apiKeyEntries:fe})),C(ee,{status:"idle",message:""}),_("idle"),x("")},ie=ee=>{const J=$.filter((fe,me)=>me!==ee),re=J.length?J.length:1;f(fe=>({...fe,apiKeyEntries:J.length?J:[dd()]})),N(re),_("idle"),x("")},F=()=>{f(ee=>({...ee,apiKeyEntries:[...$,dd()]})),N($.length+1),_("idle"),x("")};return h.jsxs("div",{className:V.keyEntriesList,children:[h.jsxs("div",{className:V.keyEntriesToolbar,children:[h.jsxs("span",{className:V.keyEntriesCount,children:[t("ai_providers.openai_keys_count"),": ",$.length]}),h.jsx(he,{variant:"secondary",size:"sm",onClick:F,disabled:c||o||E,className:V.addKeyButton,children:t("ai_providers.openai_keys_add_btn")})]}),h.jsxs("div",{className:V.keyTableShell,children:[h.jsxs("div",{className:V.keyTableHeader,children:[h.jsx("div",{className:V.keyTableColIndex,children:"#"}),h.jsx("div",{className:V.keyTableColStatus,children:t("common.status")}),h.jsx("div",{className:V.keyTableColKey,children:t("common.api_key")}),h.jsx("div",{className:V.keyTableColProxy,children:t("common.proxy_url")}),h.jsx("div",{className:V.keyTableColAction,children:t("common.action")})]}),$.map((ee,J)=>{const re=k[J]?.status??"idle",fe=!!ee.apiKey?.trim()&&I;return h.jsxs("div",{className:V.keyTableRow,children:[h.jsx("div",{className:V.keyTableColIndex,children:J+1}),h.jsx("div",{className:V.keyTableColStatus,title:k[J]?.message||"",children:h.jsx(RZ,{status:re})}),h.jsx("div",{className:V.keyTableColKey,children:h.jsx("input",{type:"text",value:ee.apiKey,onChange:me=>te(J,"apiKey",me.target.value),disabled:c||o||E,className:`input ${V.keyTableInput}`,placeholder:t("ai_providers.openai_key_placeholder")})}),h.jsx("div",{className:V.keyTableColProxy,children:h.jsx("input",{type:"text",value:ee.proxyUrl??"",onChange:me=>te(J,"proxyUrl",me.target.value),disabled:c||o||E,className:`input ${V.keyTableInput}`,placeholder:t("ai_providers.openai_proxy_placeholder")})}),h.jsxs("div",{className:V.keyTableColAction,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>void z(J),disabled:c||o||E||!fe,loading:re==="loading",children:t("ai_providers.openai_test_single_action")}),h.jsx(he,{variant:"ghost",size:"sm",onClick:()=>ie(J),disabled:c||o||E||$.length<=1,children:t("common.delete")})]})]},J)})]})]})};return h.jsx(Ro,{ref:P,contentClassName:Vt.content,title:T,onBack:M,backLabel:t("common.back"),backAriaLabel:t("common.back"),hideTopBarBackButton:!0,hideTopBarRightAction:!0,floatingAction:h.jsxs("div",{className:Vt.floatingActions,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:M,className:Vt.floatingBackButton,children:t("common.back")}),h.jsx(he,{size:"sm",onClick:()=>void O(),loading:c,disabled:!q,className:Vt.floatingSaveButton,children:t("common.save")})]}),isLoading:r,loadingLabel:t("common.loading"),children:h.jsx(jt,{children:s||a?h.jsx("div",{className:V.sectionHint,children:t("common.invalid_provider_index")}):h.jsxs("div",{className:V.openaiEditForm,children:[h.jsx(lt,{label:t("ai_providers.openai_add_modal_name_label"),value:d.name,onChange:U=>f($=>({...$,name:U.target.value})),disabled:c||o||E}),h.jsx(lt,{label:t("ai_providers.priority_label"),hint:t("ai_providers.priority_hint"),type:"number",step:1,value:d.priority??"",onChange:U=>{const $=U.target.value,te=$.trim()===""?void 0:Number($);f(ie=>({...ie,priority:te!==void 0&&Number.isFinite(te)?te:void 0}))},disabled:c||o||E}),h.jsx(lt,{label:t("ai_providers.prefix_label"),placeholder:t("ai_providers.prefix_placeholder"),value:d.prefix??"",onChange:U=>f($=>({...$,prefix:U.target.value})),hint:t("ai_providers.prefix_hint"),disabled:c||o||E}),h.jsx(lt,{label:t("ai_providers.openai_add_modal_url_label"),value:d.baseUrl,onChange:U=>f($=>({...$,baseUrl:U.target.value})),disabled:c||o||E}),h.jsx(cp,{entries:d.headers,onChange:U=>f($=>({...$,headers:U})),addLabel:t("common.custom_headers_add"),keyPlaceholder:t("common.custom_headers_key_placeholder"),valuePlaceholder:t("common.custom_headers_value_placeholder"),removeButtonTitle:t("common.delete"),removeButtonAriaLabel:t("common.delete"),disabled:c||o||E}),h.jsxs("div",{className:V.modelConfigSection,children:[h.jsxs("div",{className:V.modelConfigHeader,children:[h.jsx("label",{className:V.modelConfigTitle,children:t(i?"ai_providers.openai_edit_modal_models_label":"ai_providers.openai_add_modal_models_label")}),h.jsxs("div",{className:V.modelConfigToolbar,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>f(U=>({...U,modelEntries:[...U.modelEntries,{name:"",alias:""}]})),disabled:c||o||E,children:t("ai_providers.openai_models_add_btn")}),h.jsx(he,{variant:"secondary",size:"sm",onClick:W,disabled:c||o||E,children:t("ai_providers.openai_models_fetch_button")})]})]}),h.jsx("div",{className:V.sectionHint,children:t("ai_providers.openai_models_hint")}),h.jsx(Hd,{entries:d.modelEntries,onChange:U=>f($=>({...$,modelEntries:U})),namePlaceholder:t("common.model_name_placeholder"),aliasPlaceholder:t("common.model_alias_placeholder"),disabled:c||o||E,hideAddButton:!0,className:V.modelInputList,rowClassName:V.modelInputRow,inputClassName:V.modelInputField,removeButtonClassName:V.modelRowRemoveButton,removeButtonTitle:t("common.delete"),removeButtonAriaLabel:t("common.delete")}),h.jsxs("div",{className:V.modelTestPanel,children:[h.jsxs("div",{className:V.modelTestMeta,children:[h.jsx("label",{className:V.modelTestLabel,children:t("ai_providers.openai_test_title")}),h.jsx("span",{className:V.modelTestHint,children:t("ai_providers.openai_test_hint")})]}),h.jsxs("div",{className:V.modelTestControls,children:[h.jsx(Hi,{value:p,options:X,onChange:U=>{g(U),_("idle"),x("")},placeholder:L.length?t("ai_providers.openai_test_select_placeholder"):t("ai_providers.openai_test_select_empty"),className:V.openaiTestSelect,ariaLabel:t("ai_providers.openai_test_title"),disabled:c||o||E||y==="loading"||L.length===0}),h.jsx(he,{variant:y==="error"?"danger":"secondary",size:"sm",onClick:()=>void Q(),loading:y==="loading",disabled:c||o||E||y==="loading"||!I||!Y,title:t("ai_providers.openai_test_all_hint"),className:V.modelTestAllButton,children:t("ai_providers.openai_test_all_action")})]})]}),v&&h.jsx("div",{className:`status-badge ${y==="error"?"error":y==="success"?"success":"muted"}`,children:v})]}),h.jsxs("div",{className:V.keyEntriesSection,children:[h.jsxs("div",{className:V.keyEntriesHeader,children:[h.jsx("label",{className:V.keyEntriesTitle,children:t("ai_providers.openai_add_modal_keys_label")}),h.jsx("span",{className:V.keyEntriesHint,children:t("ai_providers.openai_keys_hint")})]}),D(d.apiKeyEntries)]})]})})})}const c1=t=>t instanceof Error?t.message:typeof t=="string"?t:"";function OO(){const{t}=nt(),e=Ri(),{disableControls:n,loading:i,saving:s,form:a,mergeDiscoveredModels:o}=Ny(),[r,c]=S.useState(""),[d,f]=S.useState([]),[p,g]=S.useState(!1),[y,_]=S.useState(""),[v,x]=S.useState(""),[k,C]=S.useState(new Set),N=S.useMemo(()=>{const X=v.trim().toLowerCase();return X?d.filter(K=>{const B=(K.name||"").toLowerCase(),H=(K.alias||"").toLowerCase(),z=(K.description||"").toLowerCase();return B.includes(X)||H.includes(X)||z.includes(X)}):d},[d,v]),L=S.useMemo(()=>N.map(X=>X.name),[N]),M=S.useMemo(()=>L.length>0&&L.every(X=>k.has(X)),[k,L]),O=S.useCallback(async({allowFallback:X=!0}={})=>{const K=a.baseUrl.trim();if(K){g(!0),_("");try{const B=gs(a.headers),H=a.apiKeyEntries.find(W=>W.apiKey?.trim())?.apiKey?.trim(),z=j4(B,"authorization"),Q=await Ar.fetchModelsViaApiCall(K,z?void 0:H,B);f(Q)}catch(B){if(X)try{const H=await Ar.fetchModelsViaApiCall(K);f(H);return}catch(H){const z=c1(H)||c1(B);f([]),_(`${t("ai_providers.openai_models_fetch_error")}: ${z}`)}else f([]),_(`${t("ai_providers.openai_models_fetch_error")}: ${c1(B)}`)}finally{g(!1)}}},[a.apiKeyEntries,a.baseUrl,a.headers,t]);S.useEffect(()=>{i||(c(c$(a.baseUrl)),f([]),x(""),C(new Set),_(""),O())},[O,a.baseUrl,i]),S.useEffect(()=>{const X=new Set(d.map(K=>K.name));C(K=>{let B=!1;const H=new Set;return K.forEach(z=>{X.has(z)?H.add(z):B=!0}),B?H:K})},[d]);const T=S.useCallback(()=>{e(-1)},[e]),P=jo({onBack:T});S.useEffect(()=>{const X=K=>{K.key==="Escape"&&T()};return window.addEventListener("keydown",X),()=>window.removeEventListener("keydown",X)},[T]);const E=X=>{C(K=>{const B=new Set(K);return B.has(X)?B.delete(X):B.add(X),B})},R=S.useCallback(()=>{C(X=>{const K=new Set(X);return L.forEach(B=>K.add(B)),K})},[L]),q=S.useCallback(()=>{C(new Set)},[]),I=()=>{const X=d.filter(K=>k.has(K.name));X.length&&o(X),T()},Y=!n&&!s&&!p&&k.size>0;return h.jsx(Ro,{ref:P,contentClassName:Vt.content,title:t("ai_providers.openai_models_fetch_title"),onBack:T,backLabel:t("common.back"),backAriaLabel:t("common.back"),hideTopBarBackButton:!0,hideTopBarRightAction:!0,floatingAction:h.jsxs("div",{className:Vt.floatingActions,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:T,className:Vt.floatingBackButton,children:t("common.back")}),h.jsx(he,{size:"sm",onClick:I,disabled:!Y,className:Vt.floatingSaveButton,children:t("ai_providers.openai_models_fetch_apply")})]}),isLoading:i,loadingLabel:t("common.loading"),children:h.jsx(jt,{children:h.jsxs("div",{className:V.openaiModelsContent,children:[h.jsx("div",{className:V.sectionHint,children:t("ai_providers.openai_models_fetch_hint")}),h.jsxs("div",{className:V.openaiModelsEndpointSection,children:[h.jsx("label",{className:V.openaiModelsEndpointLabel,children:t("ai_providers.openai_models_fetch_url_label")}),h.jsxs("div",{className:V.openaiModelsEndpointControls,children:[h.jsx("input",{className:`input ${V.openaiModelsEndpointInput}`,readOnly:!0,value:r}),h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>void O({allowFallback:!0}),loading:p,disabled:n||s,children:t("ai_providers.openai_models_fetch_refresh")})]})]}),h.jsx(lt,{label:t("ai_providers.openai_models_search_label"),placeholder:t("ai_providers.openai_models_search_placeholder"),value:v,onChange:X=>x(X.target.value),disabled:p}),d.length>0&&h.jsxs("div",{className:V.modelDiscoveryToolbar,children:[h.jsxs("div",{className:V.modelDiscoveryToolbarActions,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:R,disabled:n||s||p||N.length===0||M,children:t("ai_providers.model_discovery_select_visible")}),h.jsx(he,{variant:"ghost",size:"sm",onClick:q,disabled:n||s||p||k.size===0,children:t("ai_providers.model_discovery_clear_selection")})]}),h.jsx("div",{className:V.modelDiscoverySelectionSummary,children:t("ai_providers.model_discovery_selected_count",{count:k.size})})]}),y&&h.jsx("div",{className:"error-box",children:y}),p?h.jsx("div",{className:V.sectionHint,children:t("ai_providers.openai_models_fetch_loading")}):d.length===0?h.jsx("div",{className:V.sectionHint,children:t("ai_providers.openai_models_fetch_empty")}):N.length===0?h.jsx("div",{className:V.sectionHint,children:t("ai_providers.openai_models_search_empty")}):h.jsx("div",{className:V.modelDiscoveryList,children:N.map(X=>{const K=k.has(X.name);return h.jsx(Nl,{checked:K,onChange:()=>E(X.name),disabled:n||s||p,ariaLabel:X.name,className:`${V.modelDiscoveryRow} ${K?V.modelDiscoveryRowSelected:""}`,labelClassName:V.modelDiscoverySelectionLabel,label:h.jsxs("div",{className:V.modelDiscoveryMeta,children:[h.jsxs("div",{className:V.modelDiscoveryName,children:[X.name,X.alias&&h.jsx("span",{className:V.modelDiscoveryAlias,children:X.alias})]}),X.description&&h.jsx("div",{className:V.modelDiscoveryDesc,children:X.description})]})},X.name)})})]})})})}const u1=()=>({apiKey:"",prefix:"",baseUrl:"",proxyUrl:"",headers:[],models:[],excludedModels:[],modelEntries:[{name:"",alias:""}],excludedText:""}),DZ=t=>{if(!t)return null;const e=Number.parseInt(t,10);return Number.isFinite(e)?e:null},FZ=t=>(t??[]).reduce((e,n)=>{const i=String(n?.name??"").trim(),s=String(n?.alias??"").trim();return!i&&!s||e.push({name:i,alias:s}),e},[]),rf=t=>JSON.stringify({apiKey:String(t.apiKey??"").trim(),priority:t.priority!==void 0&&Number.isFinite(t.priority)?Math.trunc(t.priority):null,prefix:String(t.prefix??"").trim(),baseUrl:String(t.baseUrl??"").trim(),proxyUrl:String(t.proxyUrl??"").trim(),headers:ep(t.headers),models:FZ(t.modelEntries),excludedModels:Rl(t.excludedText??"")});function PO(){const{t}=nt(),e=Ri(),n=$n(),i=Wm(),{showNotification:s}=mn(),o=en(W=>W.connectionStatus)!=="connected",r=It(W=>W.fetchConfig),c=It(W=>W.updateConfigValue),d=It(W=>W.clearCache),[f,p]=S.useState([]),[g,y]=S.useState(!0),[_,v]=S.useState(!1),[x,k]=S.useState(""),[C,N]=S.useState(()=>u1()),[L,M]=S.useState(()=>rf(u1())),O=typeof i.index=="string",T=S.useMemo(()=>DZ(i.index),[i.index]),P=O&&T===null,E=S.useMemo(()=>{if(T!==null)return f[T]},[f,T]),R=T!==null&&!E,q=t(T!==null?"ai_providers.vertex_edit_modal_title":"ai_providers.vertex_add_modal_title"),I=S.useCallback(()=>{if(n.state?.fromAiProviders){e(-1);return}e("/ai-providers",{replace:!0})},[n.state,e]),Y=jo({onBack:I});S.useEffect(()=>{const W=D=>{D.key==="Escape"&&I()};return window.addEventListener("keydown",W),()=>window.removeEventListener("keydown",W)},[I]),S.useEffect(()=>{let W=!1;return y(!0),k(""),Promise.all([r("vertex-api-key"),_i.getVertexConfigs()]).then(([D,U])=>{if(W)return;const $=Array.isArray(U)?U:Array.isArray(D)?D:[];p($),c("vertex-api-key",$),d("vertex-api-key")}).catch(D=>{if(W)return;const U=D instanceof Error?D.message:"";k(U||t("notification.refresh_failed"))}).finally(()=>{W||y(!1)}),()=>{W=!0}},[d,r,t,c]),S.useEffect(()=>{if(g)return;if(E){const D={...E,headers:Zm(E.headers),modelEntries:lp(E.models),excludedText:Uy(E.excludedModels)};N(D),M(rf(D));return}const W=u1();N(W),M(rf(W))},[E,g]);const X=!o&&!_&&!g&&!P&&!R,K=S.useMemo(()=>rf(C),[C]),B=L!==K,H=!g&&!_&&!P&&!R,{allowNextNavigation:z}=Wd({enabled:H,shouldBlock:({currentLocation:W,nextLocation:D})=>B&&W.pathname!==D.pathname,dialog:{title:t("common.unsaved_changes_title"),message:t("common.unsaved_changes_message"),confirmText:t("common.leave"),cancelText:t("common.stay"),variant:"danger"}}),Q=S.useCallback(async()=>{if(!X)return;const D=(C.baseUrl??"").trim()||void 0;v(!0),k("");try{const U={apiKey:C.apiKey.trim(),priority:C.priority!==void 0&&Number.isFinite(C.priority)?Math.trunc(C.priority):void 0,prefix:C.prefix?.trim()||void 0,baseUrl:D,proxyUrl:C.proxyUrl?.trim()||void 0,headers:gs(C.headers),models:C.modelEntries.map(te=>{const ie=te.name.trim(),F=te.alias.trim();return!ie||!F?null:{name:ie,alias:F}}).filter(Boolean),excludedModels:Rl(C.excludedText)},$=T!==null?f.map((te,ie)=>ie===T?U:te):[...f,U];await _i.saveVertexConfigs($),c("vertex-api-key",$),d("vertex-api-key"),s(t(T!==null?"notification.vertex_config_updated":"notification.vertex_config_added"),"success"),z(),M(rf(C)),I()}catch(U){const $=U instanceof Error?U.message:"";k($),s(`${t("notification.update_failed")}: ${$}`,"error")}finally{v(!1)}},[z,X,d,f,T,C,I,s,t,c]);return h.jsx(Ro,{ref:Y,contentClassName:Vt.content,title:q,onBack:I,backLabel:t("common.back"),backAriaLabel:t("common.back"),hideTopBarBackButton:!0,hideTopBarRightAction:!0,floatingAction:h.jsxs("div",{className:Vt.floatingActions,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:I,className:Vt.floatingBackButton,children:t("common.back")}),h.jsx(he,{size:"sm",onClick:Q,loading:_,disabled:!X,className:Vt.floatingSaveButton,children:t("common.save")})]}),isLoading:g,loadingLabel:t("common.loading"),children:h.jsxs(jt,{children:[x&&h.jsx("div",{className:"error-box",children:x}),P||R?h.jsx("div",{className:"hint",children:t("common.invalid_provider_index")}):h.jsxs(h.Fragment,{children:[h.jsx(lt,{label:t("ai_providers.vertex_add_modal_key_label"),placeholder:t("ai_providers.vertex_add_modal_key_placeholder"),value:C.apiKey,onChange:W=>N(D=>({...D,apiKey:W.target.value})),disabled:o||_}),h.jsx(lt,{label:t("ai_providers.prefix_label"),placeholder:t("ai_providers.prefix_placeholder"),value:C.prefix??"",onChange:W=>N(D=>({...D,prefix:W.target.value})),hint:t("ai_providers.prefix_hint"),disabled:o||_}),h.jsx(lt,{label:t("ai_providers.vertex_add_modal_url_label"),placeholder:t("ai_providers.vertex_add_modal_url_placeholder"),value:C.baseUrl??"",onChange:W=>N(D=>({...D,baseUrl:W.target.value})),disabled:o||_}),h.jsx(lt,{label:t("ai_providers.vertex_add_modal_proxy_label"),placeholder:t("ai_providers.vertex_add_modal_proxy_placeholder"),value:C.proxyUrl??"",onChange:W=>N(D=>({...D,proxyUrl:W.target.value})),disabled:o||_}),h.jsx(cp,{entries:C.headers,onChange:W=>N(D=>({...D,headers:W})),addLabel:t("common.custom_headers_add"),keyPlaceholder:t("common.custom_headers_key_placeholder"),valuePlaceholder:t("common.custom_headers_value_placeholder"),removeButtonTitle:t("common.delete"),removeButtonAriaLabel:t("common.delete"),disabled:o||_}),h.jsxs("div",{className:"form-group",children:[h.jsx("label",{children:t("ai_providers.vertex_models_label")}),h.jsx(Hd,{entries:C.modelEntries,onChange:W=>N(D=>({...D,modelEntries:W})),addLabel:t("ai_providers.vertex_models_add_btn"),namePlaceholder:t("common.model_name_placeholder"),aliasPlaceholder:t("common.model_alias_placeholder"),removeButtonTitle:t("common.delete"),removeButtonAriaLabel:t("common.delete"),disabled:o||_})]}),h.jsxs("div",{className:"form-group",children:[h.jsx("label",{children:t("ai_providers.excluded_models_label")}),h.jsx("textarea",{className:"input",placeholder:t("ai_providers.excluded_models_placeholder"),value:C.excludedText,onChange:W=>N(D=>({...D,excludedText:W.target.value})),rows:4,disabled:o||_}),h.jsx("div",{className:"hint",children:t("ai_providers.excluded_models_hint")})]})]})]})})}async function Ky(t){try{if(typeof navigator<"u"&&navigator.clipboard?.writeText)return await navigator.clipboard.writeText(t),!0}catch{}try{if(typeof document>"u"||!document.body)return!1;const e=document.activeElement,n=document.createElement("textarea");n.value=t,n.setAttribute("readonly",""),n.style.position="fixed",n.style.opacity="0",n.style.pointerEvents="none",n.style.left="-9999px",n.style.top="0",n.style.width="1px",n.style.height="1px",n.style.padding="0",n.style.border="0",document.body.appendChild(n),n.focus(),n.select(),n.setSelectionRange(0,n.value.length);const i=document.execCommand("copy");if(document.body.removeChild(n),e?.focus)try{e.focus()}catch{}return i}catch{return!1}}const c5="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3c!--%20Generator:%20visioncortex%20VTracer%200.6.4%20--%3e%3csvg%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20width='64'%20height='59'%3e%3cpath%20d='M0,0%20L8,0%20L14,4%20L19,14%20L27,40%20L32,50%20L36,54%20L35,59%20L30,59%20L22,52%20L11,35%20L6,33%20L-1,34%20L-6,39%20L-14,52%20L-22,59%20L-28,59%20L-27,53%20L-22,47%20L-17,34%20L-10,12%20L-5,3%20Z%20'%20fill='%233789F9'%20transform='translate(28,0)'/%3e%3cpath%20d='M0,0%20L8,0%20L14,4%20L19,14%20L25,35%20L21,34%20L16,29%20L11,26%20L7,20%20L7,18%20L2,16%20L-3,15%20L-8,18%20L-12,19%20L-9,9%20L-4,2%20Z%20'%20fill='%236D80D8'%20transform='translate(28,0)'/%3e%3cpath%20d='M0,0%20L8,0%20L14,4%20L19,14%20L20,19%20L13,15%20L10,12%20L3,10%20L-1,8%20L-7,7%20L-4,2%20Z%20'%20fill='%23D78240'%20transform='translate(28,0)'/%3e%3cpath%20d='M0,0%20L5,1%20L10,4%20L12,9%20L1,8%20L-5,13%20L-10,21%20L-13,26%20L-16,26%20L-9,5%20L-4,2%20Z%20M6,7%20Z%20'%20fill='%233294CC'%20transform='translate(25,14)'/%3e%3cpath%20d='M0,0%20L5,2%20L10,10%20L12,18%20L5,14%20L1,10%20L0,4%20L-3,3%20L0,2%20Z%20'%20fill='%23E45C49'%20transform='translate(36,1)'/%3e%3cpath%20d='M0,0%20L9,1%20L12,3%20L12,5%20L7,6%20L4,8%20L-1,11%20L-5,12%20L-2,2%20Z%20'%20fill='%2390AE64'%20transform='translate(21,7)'/%3e%3cpath%20d='M0,0%20L5,1%20L5,4%20L-2,7%20L-7,11%20L-11,10%20L-9,5%20L-4,2%20Z%20'%20fill='%2353A89A'%20transform='translate(25,14)'/%3e%3cpath%20d='M0,0%20L5,0%20L16,9%20L17,13%20L12,12%20L8,9%20L8,7%20L4,5%20L0,2%20Z%20'%20fill='%23B5677D'%20transform='translate(33,11)'/%3e%3cpath%20d='M0,0%20L6,0%20L14,6%20L19,11%20L23,12%20L22,15%20L15,12%20L10,8%20L10,6%20L4,5%20Z%20'%20fill='%23778998'%20transform='translate(27,12)'/%3e%3cpath%20d='M0,0%20L4,2%20L-11,17%20L-12,14%20L-5,4%20Z%20'%20fill='%233390DF'%20transform='translate(26,21)'/%3e%3cpath%20d='M0,0%20L2,1%20L-4,5%20L-9,9%20L-13,13%20L-14,10%20L-13,7%20L-6,4%20L-3,1%20Z%20'%20fill='%233FA1B7'%20transform='translate(27,18)'/%3e%3cpath%20d='M0,0%20L4,0%20L9,5%20L13,6%20L12,9%20L5,6%20L0,2%20Z%20'%20fill='%238277BB'%20transform='translate(37,18)'/%3e%3cpath%20d='M0,0%20L5,1%20L7,6%20L-2,5%20Z%20M1,4%20Z%20'%20fill='%234989CF'%20transform='translate(30,17)'/%3e%3cpath%20d='M0,0%20L5,1%20L2,3%20L-3,6%20L-7,7%20L-6,3%20Z%20'%20fill='%2371B774'%20transform='translate(23,12)'/%3e%3cpath%20d='M0,0%20L7,1%20L9,7%20L5,6%20L0,1%20Z%20'%20fill='%236687E9'%20transform='translate(44,28)'/%3e%3cpath%20d='M0,0%20L7,0%20L5,1%20L5,3%20L8,4%20L4,5%20L-2,4%20Z%20'%20fill='%23C7AF38'%20transform='translate(23,3)'/%3e%3cpath%20d='M0,0%20L8,0%20L8,3%20L4,4%20L-4,3%20Z%20'%20fill='%23EF842A'%20transform='translate(28,0)'/%3e%3cpath%20d='M0,0%20L7,4%20L7,6%20L10,6%20L11,10%20L4,6%20L0,2%20Z%20'%20fill='%23CD5D67'%20transform='translate(37,9)'/%3e%3cpath%20d='M0,0%20L5,2%20L9,8%20L8,11%20L2,3%20L0,2%20Z%20'%20fill='%23F35241'%20transform='translate(36,1)'/%3e%3cpath%20d='M0,0%20L8,2%20L9,6%20L4,5%20L0,2%20Z%20'%20fill='%23A667A2'%20transform='translate(41,18)'/%3e%3cpath%20d='M0,0%20L9,1%20L8,3%20L-2,3%20Z%20'%20fill='%23A4B34C'%20transform='translate(21,7)'/%3e%3cpath%20d='M0,0%20L2,0%20L7,5%20L8,7%20L3,6%20L0,2%20Z%20'%20fill='%23617FCF'%20transform='translate(35,18)'/%3e%3cpath%20d='M0,0%20L5,2%20L8,7%20L4,5%20L0,2%20Z%20'%20fill='%239D7784'%20transform='translate(33,11)'/%3e%3cpath%20d='M0,0%20L6,2%20L6,4%20L0,3%20Z%20'%20fill='%23BC7F59'%20transform='translate(31,7)'/%3e%3c/svg%3e",u5="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20fill='none'%20version='1.1'%20width='32'%20height='32'%20viewBox='0%200%2032%2032'%3e%3cdefs%3e%3cfilter%20id='master_svg0_278_51503'%20filterUnits='objectBoundingBox'%20color-interpolation-filters='sRGB'%20x='0'%20y='0'%20width='1'%20height='1'%3e%3cfeFlood%20flood-opacity='0'%20result='BackgroundImageFix'/%3e%3cfeBlend%20mode='normal'%20in='SourceGraphic'%20in2='BackgroundImageFix'%20result='shape'/%3e%3cfeGaussianBlur%20in='BackgroundImageFix'%20stdDeviation='1.3333334922790527'/%3e%3cfeComposite%20in2='SourceAlpha'%20operator='in'%20result='effect1_foregroundBlur'/%3e%3cfeBlend%20mode='normal'%20in='SourceGraphic'%20in2='effect1_foregroundBlur'%20result='shape'/%3e%3c/filter%3e%3clinearGradient%20x1='0.07353696972131729'%20y1='0.12899449467658997'%20x2='0.9907095821060244'%20y2='0.9383787344260006'%20id='master_svg1_93_40276'%3e%3cstop%20offset='0%25'%20stop-color='%235C5CFF'%20stop-opacity='1'/%3e%3cstop%20offset='100%25'%20stop-color='%23AE5CFF'%20stop-opacity='1'/%3e%3c/linearGradient%3e%3c/defs%3e%3cg%3e%3cg%20filter='url(%23master_svg0_278_51503)'%3e%3crect%20x='0'%20y='0'%20width='32'%20height='32'%20rx='16'%20fill='%23F0F2F5'%20fill-opacity='0'/%3e%3c/g%3e%3cg%3e%3cg%3e%3cpath%20d='M31.843111328125,14.751C31.315411328125,7.18121,25.497411328125,1.04691,17.966011328125,0.119698C10.434711328125,-0.807512,3.302541328125,3.73244,0.954596328125,10.9482C0.345662328125,12.8248,1.732821328125,14.751,3.705641328125,14.751C4.950051328125,14.7517,6.055631328125,13.9569,6.451401328125,12.7772C7.497331328125,9.65101,10.504411328125,3.91401,18.482011328125,3.91401Q29.445911328125,3.91401,31.843111328125,14.751ZM9.127681328125,17.3314L9.127681328125,13.0862Q9.127681328125,13.0022,9.144081328125,12.9198Q9.160481328125,12.8373,9.192641328125,12.7597Q9.224801328125,12.682,9.271501328125,12.6122Q9.318191328125,12.5423,9.377621328125,12.4828Q9.437051328125,12.4234,9.506931328125,12.3767Q9.576811328125,12.33,9.654461328125,12.2979Q9.732111328125,12.2657,9.814541328125,12.2493Q9.896971328125,12.2329,9.981021328125,12.2329L11.049211328125,12.2329Q11.133211328125,12.2329,11.215711328125,12.2493Q11.298111328125,12.2657,11.375811328125,12.2979Q11.453411328125,12.33,11.523311328125,12.3767Q11.593211328125,12.4234,11.652611328125,12.4828Q11.712011328125,12.5423,11.758711328125,12.6122Q11.805411328125,12.682,11.837611328125,12.7597Q11.869711328125,12.8373,11.886111328125,12.9198Q11.902511328125,13.0022,11.902511328125,13.0862L11.902511328125,17.3314Q11.902511328125,17.4154,11.886111328125,17.4978Q11.869711328125,17.5803,11.837611328125,17.6579Q11.805411328125,17.7356,11.758711328125,17.8055Q11.712011328125,17.8753,11.652611328125,17.9348Q11.593211328125,17.9942,11.523311328125,18.0409Q11.453411328125,18.0876,11.375811328125,18.1197Q11.298111328125,18.1519,11.215711328125,18.1683Q11.133211328125,18.1847,11.049211328125,18.1847L9.981021328125,18.1847Q9.896971328125,18.1847,9.814541328125,18.1683Q9.732111328125,18.1519,9.654461328125,18.1197Q9.576811328125,18.0876,9.506931328125,18.0409Q9.437051328125,17.9942,9.377621328125,17.9348Q9.318191328125,17.8753,9.271501328125,17.8055Q9.224801328125,17.7356,9.192641328125,17.6579Q9.160481328125,17.5803,9.144081328125,17.4978Q9.127681328125,17.4154,9.127681328125,17.3314ZM17.273611328125,17.3295C17.272611328125,17.8015,17.654911328125,18.1847,18.126911328125,18.1847L19.408411328125,18.1847C19.879011328125,18.1847,20.260711328125,17.8038,20.261811328125,17.3332L20.266411328125,15.2107L20.266411328125,15.2069L20.261811328125,13.0844C20.260711328125,12.6138,19.879011328125,12.2329,19.408411328125,12.2329L18.126911328125,12.2329C17.654911328125,12.2329,17.272611328125,12.6161,17.273611328125,13.0881L17.278211328125,15.2069L17.278211328125,15.2107L17.273611328125,17.3295ZM13.574711328125,28.0523C21.552211328125,28.0523,24.559311328125,22.3153,25.605811328125,19.1897C26.001411328125,18.0098,27.107111328125,17.215,28.351511328125,17.2158C30.323811328125,17.2158,31.711511328125,19.1416,31.102611328125,21.0181C30.552411328125,22.7189,29.716211328125,24.3134,28.629811328125,25.733L30.137611328125,30.2235L24.775211328125,29.3432C14.645911328125,36.0484,1.048779328125,29.3346,0.214111328125,17.2158Q2.611231328125,28.0523,13.574711328125,28.0523Z'%20fill-rule='evenodd'%20fill='url(%23master_svg1_93_40276)'%20fill-opacity='1'/%3e%3c/g%3e%3c/g%3e%3c/g%3e%3c/svg%3e",ek="data:image/svg+xml,%3csvg%20fill='%23FFFFFF'%20fill-rule='evenodd'%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eKimi%3c/title%3e%3cpath%20d='M19.738%205.776c.163-.209.306-.4.457-.585.07-.087.064-.153-.004-.244-.655-.861-.717-1.817-.34-2.787.283-.73.909-1.072%201.674-1.145.477-.045.945.004%201.379.236.57.305.902.77%201.01%201.412.086.512.07%201.012-.075%201.508-.257.878-.888%201.333-1.753%201.448-.718.096-1.446.108-2.17.157-.056.004-.113%200-.178%200z'%20fill='%23FFFFFF'%3e%3c/path%3e%3cpath%20d='M17.962%201.844h-4.326l-3.425%207.81H5.369V1.878H1.5V22h3.87v-8.477h6.824a3.025%203.025%200%20002.743-1.75V22h3.87v-8.477a3.87%203.87%200%2000-3.588-3.86v-.01h-2.125a3.94%203.94%200%20002.323-2.12l2.545-5.689z'%3e%3c/path%3e%3c/svg%3e",tk="data:image/svg+xml,%3csvg%20fill='currentColor'%20fill-rule='evenodd'%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eKimi%3c/title%3e%3cpath%20d='M19.738%205.776c.163-.209.306-.4.457-.585.07-.087.064-.153-.004-.244-.655-.861-.717-1.817-.34-2.787.283-.73.909-1.072%201.674-1.145.477-.045.945.004%201.379.236.57.305.902.77%201.01%201.412.086.512.07%201.012-.075%201.508-.257.878-.888%201.333-1.753%201.448-.718.096-1.446.108-2.17.157-.056.004-.113%200-.178%200z'%20fill='%23027AFF'%3e%3c/path%3e%3cpath%20d='M17.962%201.844h-4.326l-3.425%207.81H5.369V1.878H1.5V22h3.87v-8.477h6.824a3.025%203.025%200%20002.743-1.75V22h3.87v-8.477a3.87%203.87%200%2000-3.588-3.86v-.01h-2.125a3.94%203.94%200%20002.323-2.12l2.545-5.689z'%3e%3c/path%3e%3c/svg%3e",nk="data:image/svg+xml,%3csvg%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eQwen%3c/title%3e%3cpath%20d='M12.604%201.34c.393.69.784%201.382%201.174%202.075a.18.18%200%2000.157.091h5.552c.174%200%20.322.11.446.327l1.454%202.57c.19.337.24.478.024.837-.26.43-.513.864-.76%201.3l-.367.658c-.106.196-.223.28-.04.512l2.652%204.637c.172.301.111.494-.043.77-.437.785-.882%201.564-1.335%202.34-.159.272-.352.375-.68.37-.777-.016-1.552-.01-2.327.016a.099.099%200%2000-.081.05%20575.097%20575.097%200%2001-2.705%204.74c-.169.293-.38.363-.725.364-.997.003-2.002.004-3.017.002a.537.537%200%2001-.465-.271l-1.335-2.323a.09.09%200%2000-.083-.049H4.982c-.285.03-.553-.001-.805-.092l-1.603-2.77a.543.543%200%2001-.002-.54l1.207-2.12a.198.198%200%20000-.197%20550.951%20550.951%200%2001-1.875-3.272l-.79-1.395c-.16-.31-.173-.496.095-.965.465-.813.927-1.625%201.387-2.436.132-.234.304-.334.584-.335a338.3%20338.3%200%20012.589-.001.124.124%200%2000.107-.063l2.806-4.895a.488.488%200%2001.422-.246c.524-.001%201.053%200%201.583-.006L11.704%201c.341-.003.724.032.9.34zm-3.432.403a.06.06%200%2000-.052.03L6.254%206.788a.157.157%200%2001-.135.078H3.253c-.056%200-.07.025-.041.074l5.81%2010.156c.025.042.013.062-.034.063l-2.795.015a.218.218%200%2000-.2.116l-1.32%202.31c-.044.078-.021.118.068.118l5.716.008c.046%200%20.08.02.104.061l1.403%202.454c.046.081.092.082.139%200l5.006-8.76.783-1.382a.055.055%200%2001.096%200l1.424%202.53a.122.122%200%2000.107.062l2.763-.02a.04.04%200%2000.035-.02.041.041%200%20000-.04l-2.9-5.086a.108.108%200%20010-.113l.293-.507%201.12-1.977c.024-.041.012-.062-.035-.062H9.2c-.059%200-.073-.026-.043-.077l1.434-2.505a.107.107%200%20000-.114L9.225%201.774a.06.06%200%2000-.053-.031zm6.29%208.02c.046%200%20.058.02.034.06l-.832%201.465-2.613%204.585a.056.056%200%2001-.05.029.058.058%200%2001-.05-.029L8.498%209.841c-.02-.034-.01-.052.028-.054l.216-.012%206.722-.012z'%20fill='url(%23lobe-icons-qwen-fill)'%20fill-rule='nonzero'%3e%3c/path%3e%3cdefs%3e%3clinearGradient%20id='lobe-icons-qwen-fill'%20x1='0%25'%20x2='100%25'%20y1='0%25'%20y2='0%25'%3e%3cstop%20offset='0%25'%20stop-color='%236336E7'%20stop-opacity='.84'%3e%3c/stop%3e%3cstop%20offset='100%25'%20stop-color='%236F69F7'%20stop-opacity='.84'%3e%3c/stop%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e",d5=new Set(["antigravity","claude","codex","gemini-cli","kimi"]),G2=3,$2=30,IZ=/^[+-]?\d+$/,BZ=new Set(["true","1","yes","y","on"]),UZ=new Set(["false","0","no","n","off"]),EO={qwen:{light:{bg:"#ede5fd",text:"#5530c7"},dark:{bg:"#36208a",text:"#b5a3f0"}},kimi:{light:{bg:"#dce8ff",text:"#0560cf"},dark:{bg:"#003880",text:"#70b5ff"}},gemini:{light:{bg:"#e3f2fd",text:"#1565c0"},dark:{bg:"#0d47a1",text:"#64b5f6"}},"gemini-cli":{light:{bg:"#e0e8ff",text:"#1e4fa3"},dark:{bg:"#1c3f73",text:"#a8c7ff"}},aistudio:{light:{bg:"#f0f2f5",text:"#2f343c"},dark:{bg:"#373c42",text:"#cfd3db"}},claude:{light:{bg:"#fbece4",text:"#c05621"},dark:{bg:"#5e2c14",text:"#e8a882"}},codex:{light:{bg:"#eae7ff",text:"#3538d4"},dark:{bg:"#262395",text:"#b5b0ff"}},antigravity:{light:{bg:"#e0f7fa",text:"#006064"},dark:{bg:"#004d40",text:"#80deea"}},iflow:{light:{bg:"#f5e3fc",text:"#9025c8"},dark:{bg:"#521490",text:"#d49cf5"}},vertex:{light:{bg:"#e4edfd",text:"#2b5fbc"},dark:{bg:"#1a3d80",text:"#89b3f7"}},empty:{light:{bg:"#f5f5f5",text:"#616161"},dark:{bg:"#424242",text:"#bdbdbd"}},unknown:{light:{bg:"#f0f0f0",text:"#666666",border:"1px dashed #999999"},dark:{bg:"#3a3a3a",text:"#aaaaaa",border:"1px dashed #666666"}}},qZ={antigravity:c5,aistudio:Lc,claude:ap,codex:qy,gemini:Lc,"gemini-cli":Lc,iflow:u5,kimi:{light:tk,dark:ek},qwen:nk,vertex:zy},n_=t=>Math.min($2,Math.max(G2,Math.round(t))),zZ=(t,e,n)=>e===404?t("common.quota_update_required"):e===403?t("common.quota_check_credential"):n,Ys=t=>t.trim().toLowerCase(),h5=t=>{const e=t.status_message??t.statusMessage;return typeof e=="string"?e.trim():e==null?"":String(e).trim()},f5=t=>h5(t).length>0,Ju=(t,e)=>{const n=`auth_files.filter_${e}`,i=t(n);return i!==n?i:e.toLowerCase()==="iflow"?"iFlow":e.charAt(0).toUpperCase()+e.slice(1)},m5=(t,e)=>{const n=EO[t]||EO.unknown;return e==="dark"&&n.dark?n.dark:n.light},p5=(t,e)=>{const n=qZ[Ys(t)];return n?typeof n=="string"?n:e==="dark"?n.dark:n.light:null},pm=t=>{if(typeof t=="number")return Number.isInteger(t)?t:void 0;if(typeof t!="string")return;const e=t.trim();if(!e||!IZ.test(e))return;const n=Number.parseInt(e,10);return Number.isSafeInteger(n)?n:void 0},g5=t=>{if(!Array.isArray(t))return[];const e=new Set,n=[];return t.forEach(i=>{const s=String(i??"").trim().toLowerCase();!s||e.has(s)||(e.add(s),n.push(s))}),n.sort((i,s)=>i.localeCompare(s))},KZ=t=>g5(t.split(/[\n,]+/)),ik=t=>{if(typeof t=="boolean")return t;if(typeof t=="number"&&Number.isFinite(t))return t!==0;if(typeof t!="string")return;const e=t.trim().toLowerCase();if(e){if(BZ.has(e))return!0;if(UZ.has(e))return!1}},jO=t=>ik(t.websockets)??!1,VZ=(t,e)=>{const n={...t};return delete n.websocket,n.websockets=e,n};function gl(t){const e=t.runtime_only??t.runtimeOnly;return typeof e=="boolean"?e:typeof e=="string"?e.trim().toLowerCase()==="true":!1}function HZ(t,e){const n={success:0,failure:0},i=t?.name||"",s=t.auth_index??t.authIndex,a=rs(s);if(a&&e.byAuthIndex?.[a])return e.byAuthIndex[a];const o=i?mm(i):"";if(o&&e.bySource?.[o]){const r=e.bySource[o];if(r.success>0||r.failure>0)return r}if(i){const r=i.replace(/\.[^/.]+$/,"");if(r&&r!==i){const c=mm(r),d=c?e.bySource?.[c]:void 0;if(d&&(d.success>0||d.failure>0))return d}}return n}const WZ=t=>{const e=t.modtime??t.modified;if(!e)return"-";const n=Number(e),i=Number.isFinite(n)&&!Number.isNaN(n)?new Date(n<1e12?n*1e3:n):new Date(String(e));return Number.isNaN(i.getTime())?"-":i.toLocaleString()},GZ=(t,e,n)=>{const i=Ys(e);return(n[i]||n[e]||[]).some(a=>{if(a.includes("*")){const o=a.split("*").map(c=>c.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join(".*");return new RegExp(`^${o}$`,"i").test(t)}return a.toLowerCase()===t.toLowerCase()})},RO={qwen:{light:{bg:"#ede5fd",text:"#5530c7"},dark:{bg:"#36208a",text:"#b5a3f0"}},gemini:{light:{bg:"#e3f2fd",text:"#1565c0"},dark:{bg:"#0d47a1",text:"#64b5f6"}},"gemini-cli":{light:{bg:"#e0e8ff",text:"#1e4fa3"},dark:{bg:"#1c3f73",text:"#a8c7ff"}},aistudio:{light:{bg:"#f0f2f5",text:"#2f343c"},dark:{bg:"#373c42",text:"#cfd3db"}},claude:{light:{bg:"#fbece4",text:"#c05621"},dark:{bg:"#5e2c14",text:"#e8a882"}},codex:{light:{bg:"#eae7ff",text:"#3538d4"},dark:{bg:"#262395",text:"#b5b0ff"}},kimi:{light:{bg:"#dce8ff",text:"#0560cf"},dark:{bg:"#003880",text:"#70b5ff"}},antigravity:{light:{bg:"#e0f7fa",text:"#006064"},dark:{bg:"#004d40",text:"#80deea"}},iflow:{light:{bg:"#f5e3fc",text:"#9025c8"},dark:{bg:"#521490",text:"#d49cf5"}},vertex:{light:{bg:"#e4edfd",text:"#2b5fbc"},dark:{bg:"#1a3d80",text:"#89b3f7"}},empty:{light:{bg:"#f5f5f5",text:"#616161"},dark:{bg:"#424242",text:"#bdbdbd"}},unknown:{light:{bg:"#f0f0f0",text:"#666666",border:"1px dashed #999999"},dark:{bg:"#3a3a3a",text:"#aaaaaa",border:"1px dashed #666666"}}},$Z=["https://daily-cloudcode-pa.googleapis.com/v1internal:fetchAvailableModels","https://daily-cloudcode-pa.sandbox.googleapis.com/v1internal:fetchAvailableModels","https://cloudcode-pa.googleapis.com/v1internal:fetchAvailableModels"],XZ={Authorization:"Bearer $TOKEN$","Content-Type":"application/json","User-Agent":"antigravity/1.11.5 windows/amd64"},QZ=[{id:"claude-gpt",label:"Claude/GPT",identifiers:["claude-sonnet-4-6","claude-opus-4-6-thinking","gpt-oss-120b-medium"]},{id:"gemini-3-pro",label:"Gemini 3 Pro",identifiers:["gemini-3-pro-high","gemini-3-pro-low"]},{id:"gemini-3-1-pro-series",label:"Gemini 3.1 Pro Series",identifiers:["gemini-3.1-pro-high","gemini-3.1-pro-low"]},{id:"gemini-2-5-flash",label:"Gemini 2.5 Flash",identifiers:["gemini-2.5-flash","gemini-2.5-flash-thinking"]},{id:"gemini-2-5-flash-lite",label:"Gemini 2.5 Flash Lite",identifiers:["gemini-2.5-flash-lite"]},{id:"gemini-2-5-cu",label:"Gemini 2.5 CU",identifiers:["rev19-uic3-1p"]},{id:"gemini-3-flash",label:"Gemini 3 Flash",identifiers:["gemini-3-flash"]},{id:"gemini-image",label:"gemini-3.1-flash-image",identifiers:["gemini-3.1-flash-image"],labelFromModel:!0}],YZ="https://cloudcode-pa.googleapis.com/v1internal:retrieveUserQuota",JZ="https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",_5={Authorization:"Bearer $TOKEN$","Content-Type":"application/json"},y5=[{id:"gemini-flash-lite-series",label:"Gemini Flash Lite Series",preferredModelId:"gemini-2.5-flash-lite",modelIds:["gemini-2.5-flash-lite"]},{id:"gemini-flash-series",label:"Gemini Flash Series",preferredModelId:"gemini-3-flash-preview",modelIds:["gemini-3-flash-preview","gemini-2.5-flash"]},{id:"gemini-pro-series",label:"Gemini Pro Series",preferredModelId:"gemini-3.1-pro-preview",modelIds:["gemini-3.1-pro-preview","gemini-3-pro-preview","gemini-2.5-pro"]}],ZZ=new Map(y5.map((t,e)=>[t.id,e])),eee=new Map(y5.flatMap(t=>t.modelIds.map(e=>[e,t]))),tee=["gemini-2.0-flash"],nee="https://api.anthropic.com/api/oauth/profile",iee="https://api.anthropic.com/api/oauth/usage",DO={Authorization:"Bearer $TOKEN$","Content-Type":"application/json","anthropic-beta":"oauth-2025-04-20"},see=[{key:"five_hour",id:"five-hour",labelKey:"claude_quota.five_hour"},{key:"seven_day",id:"seven-day",labelKey:"claude_quota.seven_day"},{key:"seven_day_oauth_apps",id:"seven-day-oauth-apps",labelKey:"claude_quota.seven_day_oauth_apps"},{key:"seven_day_opus",id:"seven-day-opus",labelKey:"claude_quota.seven_day_opus"},{key:"seven_day_sonnet",id:"seven-day-sonnet",labelKey:"claude_quota.seven_day_sonnet"},{key:"seven_day_cowork",id:"seven-day-cowork",labelKey:"claude_quota.seven_day_cowork"},{key:"iguana_necktie",id:"iguana-necktie",labelKey:"claude_quota.iguana_necktie"}],aee="https://chatgpt.com/backend-api/wham/usage",oee={Authorization:"Bearer $TOKEN$","Content-Type":"application/json","User-Agent":"codex_cli_rs/0.76.0 (Debian 13.0.0; x86_64) WindowsTerminal"},ree="https://api.kimi.com/coding/v1/usages",lee={Authorization:"Bearer $TOKEN$"},FO="_vertex";function ys(t){if(typeof t=="string"){const e=t.trim();return e||null}return typeof t=="number"&&Number.isFinite(t)?t.toString():null}function cee(t){const e=ys(t);return e?e.endsWith(FO)?e.slice(0,-FO.length):e:null}function Tl(t){if(typeof t=="number"&&Number.isFinite(t))return t;if(typeof t=="string"){const e=t.trim();if(!e)return null;const n=Number(e);return Number.isFinite(n)?n:null}return null}function b5(t){const e=Tl(t);if(e!==null)return e;if(typeof t=="string"){const n=t.trim();if(!n)return null;if(n.endsWith("%")){const i=Number(n.slice(0,-1));return Number.isFinite(i)?i/100:null}}return null}function F0(t){const e=ys(t);return e?e.toLowerCase():null}function uee(t){const e=t.trim();if(!e)return null;try{const n=e.replace(/-/g,"+").replace(/_/g,"/"),i=n.padEnd(Math.ceil(n.length/4)*4,"=");if(typeof window<"u"&&typeof window.atob=="function")return window.atob(i);if(typeof atob=="function")return atob(i)}catch{return null}return null}function dee(t){if(!t)return null;if(typeof t=="object")return Array.isArray(t)?null:t;if(typeof t!="string")return null;const e=t.trim();if(!e)return null;try{const s=JSON.parse(e);if(s&&typeof s=="object")return s}catch{}const n=e.split(".");if(n.length<2)return null;const i=uee(n[1]);if(!i)return null;try{const s=JSON.parse(i);if(s&&typeof s=="object")return s}catch{return null}return null}function hee(t){const e=s=>{if(s==null)return null;if(typeof s=="string"){const a=s.trim();if(!a)return null;try{const o=JSON.parse(a);if(o&&typeof o=="object"&&!Array.isArray(o))return o}catch{return null}return null}return typeof s=="object"&&!Array.isArray(s)?s:null},n=e(t);if(!n)return null;if("models"in n)return n;const i=e(n.body);return i||n}function fee(t){if(t==null)return null;if(typeof t=="string"){const e=t.trim();if(!e)return null;try{return JSON.parse(e)}catch{return null}}return typeof t=="object"?t:null}function mee(t){if(t==null)return null;if(typeof t=="string"){const e=t.trim();if(!e)return null;try{return JSON.parse(e)}catch{return null}}return typeof t=="object"?t:null}function pee(t){if(t==null)return null;if(typeof t=="string"){const e=t.trim();if(!e)return null;try{return JSON.parse(e)}catch{return null}}return typeof t=="object"?t:null}function gee(t){if(t==null)return null;if(typeof t=="string"){const e=t.trim();if(!e)return null;try{return JSON.parse(e)}catch{return null}}return typeof t=="object"?t:null}function _ee(t){if(t==null)return null;if(typeof t=="string"){const e=t.trim();if(!e)return null;try{return JSON.parse(e)}catch{return null}}return typeof t=="object"?t:null}function yee(t){const e=dee(t);return e?ys(e.chatgpt_account_id??e.chatgptAccountId):null}function bee(t){const e=t&&typeof t.metadata=="object"&&t.metadata!==null?t.metadata:null,n=t&&typeof t.attributes=="object"&&t.attributes!==null?t.attributes:null,i=[t.id_token,e?.id_token,n?.id_token];for(const s of i){const a=yee(s);if(a)return a}return null}function vee(t){const e=t&&typeof t.metadata=="object"&&t.metadata!==null?t.metadata:null,n=t&&typeof t.attributes=="object"&&t.attributes!==null?t.attributes:null,i=t&&typeof t.id_token=="object"&&t.id_token!==null?t.id_token:null,s=e&&typeof e.id_token=="object"&&e.id_token!==null?e.id_token:null,a=[t.plan_type,t.planType,t.plan_type,t.planType,t.id_token,i?.plan_type,i?.planType,e?.plan_type,e?.planType,e?.id_token,s?.plan_type,s?.planType,n?.plan_type,n?.planType,n?.id_token];for(const o of a){const r=F0(o);if(r)return r}return null}function xee(t){if(typeof t!="string")return null;const e=Array.from(t.matchAll(/\(([^()]+)\)/g));if(e.length===0)return null;const n=e[e.length-1]?.[1]?.trim();return n||null}function See(t){const e=t&&typeof t.metadata=="object"&&t.metadata!==null?t.metadata:null,n=t&&typeof t.attributes=="object"&&t.attributes!==null?t.attributes:null,i=[t.account,t.account,e?.account,n?.account];for(const s of i){const a=xee(s);if(a)return a}return null}function sk(t){if(!t)return"-";const e=new Date(t);return Number.isNaN(e.getTime())?"-":e.toLocaleString(void 0,{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1})}function IO(t){if(!t)return"-";const e=new Date(t*1e3);return Number.isNaN(e.getTime())?"-":e.toLocaleString(void 0,{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hour12:!1})}function wee(t){if(!t)return"-";const e=Tl(t.reset_at??t.resetAt);if(e!==null&&e>0)return IO(e);const n=Tl(t.reset_after_seconds??t.resetAfterSeconds);if(n!==null&&n>0){const i=Math.floor(Date.now()/1e3+n);return IO(i)}return"-"}function up(t,e){const n=new Error(t);return e!==void 0&&(n.status=e),n}function Vy(t){if(typeof t=="object"&&t!==null&&"status"in t){const e=t.status;if(typeof e=="number"&&Number.isFinite(e))return e;const n=Number(e);if(Number.isFinite(n)&&n>0)return n}}function kee(t,e){return e?t("kimi_quota.reset_hint",{hint:e}):""}function Gd(t){const e=t.provider??t.type??"";return String(e).trim().toLowerCase()}function Cee(t){return Gd(t)==="antigravity"}function Aee(t){return Gd(t)==="claude"}function Nee(t){return Gd(t)==="codex"}function Tee(t){return Gd(t)==="gemini-cli"}function Mee(t){return Gd(t)==="kimi"}function Lee(t){const e=t.runtime_only??t.runtimeOnly;return typeof e=="boolean"?e:typeof e=="string"?e.trim().toLowerCase()==="true":!1}function dp(t){const e=t.disabled;return typeof e=="boolean"?e:typeof e=="number"?e!==0:typeof e=="string"?e.trim().toLowerCase()==="true":!1}function Oee(t){return tee.some(e=>t===e||t.startsWith(`${e}-`))}function Pee(t,e){if(!t)return e;if(!e)return t;const n=new Date(t).getTime(),i=new Date(e).getTime();return Number.isNaN(n)?e:Number.isNaN(i)||n<=i?t:e}function BO(t,e){return t===null?e:e===null?t:Math.min(t,e)}function Eee(t){if(t.length===0)return[];const e=new Map;t.forEach(i=>{if(Oee(i.modelId))return;const s=eee.get(i.modelId),a=s?.id??i.modelId,o=s?.label??i.modelId,r=i.tokenType??"",c=`${a}::${r}`,d=e.get(c);if(!d){const f=s?.preferredModelId,p=f&&i.modelId===f?i:void 0;e.set(c,{id:`${a}${r?`-${r}`:""}`,label:o,tokenType:i.tokenType,modelIds:[i.modelId],preferredModelId:f,preferredBucket:p,fallbackRemainingFraction:i.remainingFraction,fallbackRemainingAmount:i.remainingAmount,fallbackResetTime:i.resetTime});return}d.fallbackRemainingFraction=BO(d.fallbackRemainingFraction,i.remainingFraction),d.fallbackRemainingAmount=BO(d.fallbackRemainingAmount,i.remainingAmount),d.fallbackResetTime=Pee(d.fallbackResetTime,i.resetTime),d.modelIds.push(i.modelId),d.preferredModelId&&i.modelId===d.preferredModelId&&(d.preferredBucket=i)});const n=i=>{const s=i.tokenType?`-${i.tokenType}`:"",a=i.id.endsWith(s)?i.id.slice(0,i.id.length-s.length):i.id;return ZZ.get(a)??Number.MAX_SAFE_INTEGER};return Array.from(e.values()).sort((i,s)=>{const a=n(i)-n(s);if(a!==0)return a;const o=i.tokenType??"",r=s.tokenType??"";return o.localeCompare(r)}).map(i=>{const s=Array.from(new Set(i.modelIds)),a=i.preferredBucket,o=a?a.remainingFraction:i.fallbackRemainingFraction,r=a?a.remainingAmount:i.fallbackRemainingAmount,c=a?a.resetTime:i.fallbackResetTime;return{id:i.id,label:i.label,remainingFraction:o,remainingAmount:r,resetTime:c,tokenType:i.tokenType,modelIds:s}})}function jee(t){if(!t)return{remainingFraction:null};const e=t.quotaInfo??t.quota_info??{},n=e.remainingFraction??e.remaining_fraction??e.remaining,i=b5(n),s=e.resetTime??e.reset_time,a=typeof s=="string"?s:void 0,o=typeof t.displayName=="string"?t.displayName:void 0;return{remainingFraction:i,resetTime:a,displayName:o}}function Ree(t,e){const n=t[e];if(n)return{id:e,entry:n};const i=Object.entries(t).find(([,s])=>(typeof s?.displayName=="string"?s.displayName:"").toLowerCase()===e.toLowerCase());return i?{id:i[0],entry:i[1]}:null}function Dee(t){const e=[],n=new Map(QZ.map(c=>[c.id,c])),i=(c,d)=>{const p=c.identifiers.map(x=>Ree(t,x)).filter(x=>!!x).map(({id:x,entry:k})=>{const C=jee(k),N=C.remainingFraction??(C.resetTime?0:null);return N===null?null:{id:x,remainingFraction:N,resetTime:C.resetTime,displayName:C.displayName}}).filter(x=>x!==null);if(p.length===0)return null;const g=Math.min(...p.map(x=>x.remainingFraction)),y=d??p.map(x=>x.resetTime).find(Boolean),_=p.map(x=>x.displayName).find(Boolean),v=c.labelFromModel&&_?_:c.label;return{id:c.id,label:v,models:p.map(x=>x.id),remainingFraction:g,resetTime:y}},s=(c,d)=>{const f=n.get(c);if(!f)return null;const p=i(f,d);return p&&e.push(p),p};s("claude-gpt");const a=s("gemini-3-1-pro-series"),o=s("gemini-3-pro"),r=a?.resetTime??o?.resetTime;return s("gemini-2-5-flash"),s("gemini-2-5-flash-lite"),s("gemini-2-5-cu"),s("gemini-3-flash"),s("gemini-image",r),e}function Oc(t){if(typeof t=="number"&&Number.isFinite(t))return Math.floor(t);if(typeof t=="string"){const e=Number(t.trim());return Number.isFinite(e)?Math.floor(e):null}return null}function Fee(t){const e=["reset_at","resetAt","reset_time","resetTime"];for(const i of e){const s=t[i];if(typeof s=="string"&&s.trim())try{const a=s.replace(/(\.\d{6})\d+/,"$1"),o=new Date(a);if(Number.isNaN(o.getTime()))continue;const r=Date.now(),c=o.getTime()-r;if(c<=0)return;const d=Math.floor(c/6e4),f=Math.floor(d/60),p=d%60;return f>0&&p>0?`${f}h ${p}m`:f>0?`${f}h`:p>0?`${p}m`:"<1m"}catch{continue}}const n=["reset_in","resetIn","ttl"];for(const i of n){const s=Oc(t[i]);if(s!==null&&s>0){const a=Math.floor(s/3600),o=Math.floor(s%3600/60);return a>0&&o>0?`${a}h ${o}m`:a>0?`${a}h`:o>0?`${o}m`:"<1m"}}}function Iee(t,e){const n=typeof e=="string"?e.trim().toUpperCase():"";return n==="MINUTES"?t%60===0?`${t/60}h`:`${t}m`:n==="HOURS"?`${t}h`:n==="DAYS"?`${t}d`:`${t}s`}function Bee(t,e,n,i){for(const o of["name","title","scope"]){const r=t[o]??e[o];if(typeof r=="string"&&r.trim())return{label:r.trim()}}const s=Oc(n.duration)??Oc(t.duration)??Oc(e.duration),a=n.timeUnit??t.timeUnit??e.timeUnit;return s!==null&&s>0?{labelKey:"kimi_quota.limit_window",labelParams:{duration:Iee(s,a)}}:{labelKey:"kimi_quota.limit_index",labelParams:{index:i+1}}}function UO(t,e){const n=Oc(t.limit);let i=Oc(t.used);if(i===null){const o=Oc(t.remaining);o!==null&&n!==null&&(i=n-o)}if(i===null&&n===null)return null;const s=typeof t.name=="string"&&t.name.trim()||typeof t.title=="string"&&t.title.trim();return{...s?{label:s}:e,used:i??0,limit:n??0,resetHint:Fee(t)}}function Uee(t){const e=[],n=t.usage;if(n&&typeof n=="object"){const s=UO(n,{labelKey:"kimi_quota.weekly_limit"});s&&e.push({id:"summary",...s})}const i=t.limits;return Array.isArray(i)&&i.forEach((s,a)=>{const o=s.detail&&typeof s.detail=="object"?s.detail:s,r=s.window&&typeof s.window=="object"?s.window:{},c=Bee(s,o,r,a),d=UO(o,c);d&&e.push({id:`limit-${a}`,...d})}),e}const qee="QuotaPage-module__container___CkTNE",zee="QuotaPage-module__pageHeader___7RVAE",Kee="QuotaPage-module__pageTitle___c6BF7",Vee="QuotaPage-module__description___qDPuI",Hee="QuotaPage-module__headerActions___Jfu3A",Wee="QuotaPage-module__titleWrapper___lHVCF",Gee="QuotaPage-module__countBadge___tuPLs",$ee="QuotaPage-module__errorBox___Ub2Qs",Xee="QuotaPage-module__pageSizeSelect___1AaaU",Qee="QuotaPage-module__statsInfo___coFxw",Yee="QuotaPage-module__antigravityGrid___d29-f",Jee="QuotaPage-module__claudeGrid___g3N0r",Zee="QuotaPage-module__codexGrid___gQjcK",ete="QuotaPage-module__geminiCliGrid___R6KEW",tte="QuotaPage-module__kimiGrid___-9u7J",nte="QuotaPage-module__antigravityControls___jdhuf",ite="QuotaPage-module__claudeControls___CJ9XX",ste="QuotaPage-module__codexControls___ZabMA",ate="QuotaPage-module__geminiCliControls___aWZsx",ote="QuotaPage-module__kimiControls___3WNBe",rte="QuotaPage-module__antigravityControl___Z2Ti6",lte="QuotaPage-module__claudeControl___4J9Tz",cte="QuotaPage-module__codexControl___P4r4g",ute="QuotaPage-module__geminiCliControl___SIXi-",dte="QuotaPage-module__kimiControl___5rxbt",hte="QuotaPage-module__viewModeToggle___BHo1O",fte="QuotaPage-module__viewModeButton___jjKnb",mte="QuotaPage-module__viewModeButtonActive___LGwRk",pte="QuotaPage-module__refreshAllButton___c9-I-",gte="QuotaPage-module__claudeCard___z9zBZ",_te="QuotaPage-module__antigravityCard___0jKaG",yte="QuotaPage-module__codexCard___2xhZX",bte="QuotaPage-module__geminiCliCard___i8Qjn",vte="QuotaPage-module__kimiCard___WWvTD",xte="QuotaPage-module__quotaSection___Yb6bk",Ste="QuotaPage-module__quotaRow___uNjD0",wte="QuotaPage-module__quotaRowHeader___jr9zd",kte="QuotaPage-module__quotaModel___-3mcR",Cte="QuotaPage-module__quotaBar___ATY20",Ate="QuotaPage-module__quotaBarFill___arMGf",Nte="QuotaPage-module__quotaBarFillHigh___yfdzz",Tte="QuotaPage-module__quotaBarFillMedium___PbU2j",Mte="QuotaPage-module__quotaBarFillLow___1dvgT",Lte="QuotaPage-module__quotaMeta___2Gr-S",Ote="QuotaPage-module__quotaPercent___dwFKN",Pte="QuotaPage-module__quotaReset___AQC0c",Ete="QuotaPage-module__quotaAmount___liJkK",jte="QuotaPage-module__quotaMessage___tXEKQ",Rte="QuotaPage-module__quotaMessageAction___lCJz4",Dte="QuotaPage-module__quotaError___rIKP-",Fte="QuotaPage-module__quotaWarning___phfIc",Ite="QuotaPage-module__codexPlan___cNsir",Bte="QuotaPage-module__codexPlanLabel___NR4tn",Ute="QuotaPage-module__codexPlanValue___TZDzO",qte="QuotaPage-module__premiumPlanValue___7ouKX",zte="QuotaPage-module__fileCard___7ZTk-",Kte="QuotaPage-module__cardHeader___vBGld",Vte="QuotaPage-module__typeBadge___ubtCA",Hte="QuotaPage-module__fileName___ATlvN",Wte="QuotaPage-module__pagination___W2eGv",Gte="QuotaPage-module__pageInfo___yNU7E",$te="QuotaPage-module__warningOverlay___lVjB7",Xte="QuotaPage-module__warningModal___2pPNd",gt={container:qee,pageHeader:zee,pageTitle:Kee,description:Vee,headerActions:Hee,titleWrapper:Wee,countBadge:Gee,errorBox:$ee,pageSizeSelect:Xee,statsInfo:Qee,antigravityGrid:Yee,claudeGrid:Jee,codexGrid:Zee,geminiCliGrid:ete,kimiGrid:tte,antigravityControls:nte,claudeControls:ite,codexControls:ste,geminiCliControls:ate,kimiControls:ote,antigravityControl:rte,claudeControl:lte,codexControl:cte,geminiCliControl:ute,kimiControl:dte,viewModeToggle:hte,viewModeButton:fte,viewModeButtonActive:mte,refreshAllButton:pte,claudeCard:gte,antigravityCard:_te,codexCard:yte,geminiCliCard:bte,kimiCard:vte,quotaSection:xte,quotaRow:Ste,quotaRowHeader:wte,quotaModel:kte,quotaBar:Cte,quotaBarFill:Ate,quotaBarFillHigh:Nte,quotaBarFillMedium:Tte,quotaBarFillLow:Mte,quotaMeta:Lte,quotaPercent:Ote,quotaReset:Pte,quotaAmount:Ete,quotaMessage:jte,quotaMessageAction:Rte,quotaError:Dte,quotaWarning:Fte,codexPlan:Ite,codexPlanLabel:Bte,codexPlanValue:Ute,premiumPlanValue:qte,fileCard:zte,cardHeader:Kte,typeBadge:Vte,fileName:Hte,pagination:Wte,pageInfo:Gte,warningOverlay:$te,warningModal:Xte};function Qte({percent:t,highThreshold:e,mediumThreshold:n}){const s=t===null?null:((r,c,d)=>Math.min(d,Math.max(c,r)))(t,0,100),a=s===null?gt.quotaBarFillMedium:s>=e?gt.quotaBarFillHigh:s>=n?gt.quotaBarFillMedium:gt.quotaBarFillLow,o=Math.round(s??0);return h.jsx("div",{className:gt.quotaBar,children:h.jsx("div",{className:`${gt.quotaBarFill} ${a}`,style:{width:`${o}%`}})})}function Yte({item:t,quota:e,resolvedTheme:n,i18nPrefix:i,cardIdleMessageKey:s,cardClassName:a,defaultType:o,canRefresh:r=!1,onRefresh:c,renderQuotaItems:d}){const{t:f}=nt(),p=t.type||t.provider||o,g=RO[p]||RO.unknown,y=n==="dark"&&g.dark?g.dark:g.light,_=e?.status??"idle",v=Jte(f,e?.errorStatus,e?.error||f("common.unknown_error")),x=c?`${i}.idle`:s??`${i}.idle`,k=C=>{const N=`auth_files.filter_${C}`,L=f(N);return L!==N?L:C.toLowerCase()==="iflow"?"iFlow":C.charAt(0).toUpperCase()+C.slice(1)};return h.jsxs("div",{className:`${gt.fileCard} ${a}`,children:[h.jsxs("div",{className:gt.cardHeader,children:[h.jsx("span",{className:gt.typeBadge,style:{backgroundColor:y.bg,color:y.text,...y.border?{border:y.border}:{}},children:k(p)}),h.jsx("span",{className:gt.fileName,children:t.name})]}),h.jsx("div",{className:gt.quotaSection,children:_==="loading"?h.jsx("div",{className:gt.quotaMessage,children:f(`${i}.loading`)}):_==="idle"?c?h.jsx("button",{type:"button",className:`${gt.quotaMessage} ${gt.quotaMessageAction}`,onClick:c,disabled:!r,children:f(x)}):h.jsx("div",{className:gt.quotaMessage,children:f(x)}):_==="error"?h.jsx("div",{className:gt.quotaError,children:f(`${i}.load_failed`,{message:v})}):e?d(e,f,{styles:gt,QuotaProgressBar:Qte}):h.jsx("div",{className:gt.quotaMessage,children:f(x)})})]})}const Jte=(t,e,n)=>e===404?t("common.quota_update_required"):e===403?t("common.quota_check_credential"):n;function Zte(t){const{t:e}=nt(),n=Cd(t.storeSelector),i=Cd(r=>r[t.storeSetter]),s=S.useRef(!1),a=S.useRef(0),o=S.useCallback(async(r,c,d)=>{if(s.current)return;s.current=!0;const f=++a.current;d(!0,c);try{if(r.length===0)return;i(g=>{const y={...g};return r.forEach(_=>{y[_.name]=t.buildLoadingState()}),y});const p=await Promise.all(r.map(async g=>{try{const y=await t.fetchQuota(g,e);return{name:g.name,status:"success",data:y}}catch(y){const _=y instanceof Error?y.message:e("common.unknown_error"),v=Vy(y);return{name:g.name,status:"error",error:_,errorStatus:v}}}));if(f!==a.current)return;i(g=>{const y={...g};return p.forEach(_=>{_.status==="success"?y[_.name]=t.buildSuccessState(_.data):y[_.name]=t.buildErrorState(_.error||e("common.unknown_error"),_.errorStatus)}),y})}finally{f===a.current&&(d(!1),s.current=!1)}},[t,i,e]);return{quota:n,loadQuota:o}}function ene(t,e=16){const[n,i]=S.useState(1),[s,a]=S.useState(null),o=S.useCallback(r=>{a(r)},[]);return S.useEffect(()=>{if(!s)return;const r=()=>{const d=s.clientWidth,f=t+e,p=Math.floor((d+e)/f);i(Math.max(1,p))};r();const c=new ResizeObserver(()=>{r()});return c.observe(s),()=>c.disconnect()},[s,t,e]),[n,o]}const tne=25,qO=30,nne=(t,e=6)=>{const[n,i]=S.useState(1),[s,a]=S.useState(e),[o,r]=S.useState(!1),[c,d]=S.useState(null),f=S.useMemo(()=>Math.max(1,Math.ceil(t.length/s)),[t.length,s]),p=S.useMemo(()=>Math.min(n,f),[n,f]),g=S.useMemo(()=>{const k=(p-1)*s;return t.slice(k,k+s)},[t,p,s]),y=S.useCallback(k=>{a(k),i(1)},[]),_=S.useCallback(()=>{i(k=>Math.max(1,k-1))},[]),v=S.useCallback(()=>{i(k=>Math.min(f,k+1))},[f]),x=S.useCallback((k,C)=>{r(k),d(k?C??null:null)},[]);return{pageSize:s,totalPages:f,currentPage:p,pageItems:g,setPageSize:y,goToPrev:_,goToNext:v,loading:o,loadingScope:c,setLoading:x}};function lf({config:t,files:e,loading:n,disabled:i}){const{t:s}=nt(),a=Aa(z=>z.resolvedTheme),o=mn(z=>z.showNotification),r=Cd(z=>z[t.storeSetter]),[c,d]=ene(380),[f,p]=S.useState("paged"),[g,y]=S.useState(!1),_=S.useMemo(()=>e.filter(z=>t.filterFn(z)),[e,t]),v=_.length<=qO,x=f==="all"&&!v?"paged":f,{pageSize:k,totalPages:C,currentPage:N,pageItems:L,setPageSize:M,goToPrev:O,goToNext:T,loading:P,setLoading:E}=nne(_);S.useEffect(()=>{if(v||f!=="all")return;let z=!1;return queueMicrotask(()=>{z||(p("paged"),y(!0))}),()=>{z=!0}},[v,f]),S.useEffect(()=>{M(x==="all"?Math.max(1,_.length):Math.min(c*3,tne))},[x,c,_.length,M]);const{quota:R,loadQuota:q}=Zte(t),I=S.useRef(!1),Y=S.useRef(n),X=S.useCallback(()=>{I.current=!0,l5()},[]);S.useEffect(()=>{const z=Y.current;if(Y.current=n,!I.current||n||!z)return;I.current=!1;const Q=x==="all"?"all":"page",W=x==="all"?_:L;W.length!==0&&q(W,Q,E)},[n,x,_,L,q,E]),S.useEffect(()=>{if(!n){if(_.length===0){r({});return}r(z=>{const Q={};return _.forEach(W=>{const D=z[W.name];D&&(Q[W.name]=D)}),Q})}},[_,n,r]);const K=S.useCallback(async z=>{if(!(i||z.disabled)&&R[z.name]?.status!=="loading"){r(Q=>({...Q,[z.name]:t.buildLoadingState()}));try{const Q=await t.fetchQuota(z,s);r(W=>({...W,[z.name]:t.buildSuccessState(Q)})),o(s("auth_files.quota_refresh_success",{name:z.name}),"success")}catch(Q){const W=Q instanceof Error?Q.message:s("common.unknown_error"),D=Vy(Q);r(U=>({...U,[z.name]:t.buildErrorState(W,D)})),o(s("auth_files.quota_refresh_failed",{name:z.name,message:W}),"error")}}},[t,i,R,r,o,s]),B=h.jsxs("div",{className:gt.titleWrapper,children:[h.jsx("span",{children:s(`${t.i18nPrefix}.title`)}),_.length>0&&h.jsx("span",{className:gt.countBadge,children:_.length})]}),H=P||n;return h.jsxs(jt,{title:B,extra:h.jsxs("div",{className:gt.headerActions,children:[h.jsxs("div",{className:gt.viewModeToggle,children:[h.jsx(he,{variant:"secondary",size:"sm",className:`${gt.viewModeButton} ${x==="paged"?gt.viewModeButtonActive:""}`,onClick:()=>p("paged"),children:s("auth_files.view_mode_paged")}),h.jsx(he,{variant:"secondary",size:"sm",className:`${gt.viewModeButton} ${x==="all"?gt.viewModeButtonActive:""}`,onClick:()=>{_.length>qO?y(!0):p("all")},children:s("auth_files.view_mode_all")})]}),h.jsxs(he,{variant:"secondary",size:"sm",className:gt.refreshAllButton,onClick:X,disabled:i||H,loading:H,title:s("quota_management.refresh_all_credentials"),"aria-label":s("quota_management.refresh_all_credentials"),children:[!H&&h.jsx(Ew,{size:16}),s("quota_management.refresh_all_credentials")]})]}),children:[_.length===0?h.jsx(os,{title:s(`${t.i18nPrefix}.empty_title`),description:s(`${t.i18nPrefix}.empty_desc`)}):h.jsxs(h.Fragment,{children:[h.jsx("div",{ref:d,className:t.gridClassName,children:L.map(z=>h.jsx(Yte,{item:z,quota:R[z.name],resolvedTheme:a,i18nPrefix:t.i18nPrefix,cardIdleMessageKey:t.cardIdleMessageKey,cardClassName:t.cardClassName,defaultType:t.type,canRefresh:!i&&!z.disabled,onRefresh:()=>void K(z),renderQuotaItems:t.renderQuotaItems},z.name))}),_.length>k&&x==="paged"&&h.jsxs("div",{className:gt.pagination,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:O,disabled:N<=1,children:s("auth_files.pagination_prev")}),h.jsx("div",{className:gt.pageInfo,children:s("auth_files.pagination_info",{current:N,total:C,count:_.length})}),h.jsx(he,{variant:"secondary",size:"sm",onClick:T,disabled:N>=C,children:s("auth_files.pagination_next")})]})]}),g&&h.jsx("div",{className:gt.warningOverlay,onClick:()=>y(!1),children:h.jsxs("div",{className:gt.warningModal,onClick:z=>z.stopPropagation(),children:[h.jsx("p",{children:s("auth_files.too_many_files_warning")}),h.jsx(he,{variant:"primary",size:"sm",onClick:()=>y(!1),children:s("common.confirm")})]})})]})}const d1="bamboo-precept-lgxtn",hp=70,fp=30,h1=new Map,X2=new Map,ine=async t=>{try{const n=(await At.downloadText(t.name)).trim();if(!n)return d1;const i=JSON.parse(n),s=ys(i.project_id??i.projectId);if(s)return s;const a=i.installed&&typeof i.installed=="object"&&i.installed!==null?i.installed:null,o=a?ys(a.project_id??a.projectId):null;if(o)return o;const r=i.web&&typeof i.web=="object"&&i.web!==null?i.web:null,c=r?ys(r.project_id??r.projectId):null;if(c)return c}catch{return d1}return d1},sne=async(t,e)=>{const n=t.auth_index??t.authIndex,i=rs(n);if(!i)throw new Error(e("antigravity_quota.missing_auth_index"));const s=await ine(t),a=JSON.stringify({project:s});let o="",r,c,d=!1;for(const f of $Z)try{const p=await ea.request({authIndex:i,method:"POST",url:f,header:{...XZ},data:a});if(p.statusCode<200||p.statusCode>=300){o=Ka(p),r=p.statusCode,(p.statusCode===403||p.statusCode===404)&&(c??(c=p.statusCode));continue}d=!0;const y=hee(p.body??p.bodyText)?.models;if(!y||typeof y!="object"||Array.isArray(y)){o=e("antigravity_quota.empty_models");continue}const _=Dee(y);if(_.length===0){o=e("antigravity_quota.empty_models");continue}return _}catch(p){o=p instanceof Error?p.message:e("common.unknown_error");const g=Vy(p);g&&(r=g,(g===403||g===404)&&(c??(c=g)))}if(d)return[];throw up(o||e("common.unknown_error"),c??r)},ane=(t,e)=>{const s={codeFiveHour:{id:"five-hour",labelKey:"codex_quota.primary_window"},codeWeekly:{id:"weekly",labelKey:"codex_quota.secondary_window"},codeReviewFiveHour:{id:"code-review-five-hour",labelKey:"codex_quota.code_review_primary_window"},codeReviewWeekly:{id:"code-review-weekly",labelKey:"codex_quota.code_review_secondary_window"}},a=t.rate_limit??t.rateLimit??void 0,o=t.code_review_rate_limit??t.codeReviewRateLimit??void 0,r=t.additional_rate_limits??t.additionalRateLimits??[],c=[],d=(N,L,M,O,T,P,E)=>{if(!T)return;const R=wee(T),Y=Tl(T.used_percent??T.usedPercent)??((!!P||E===!1)&&R!=="-"?100:null);c.push({id:N,label:L,labelKey:M,labelParams:O,usedPercent:Y,resetLabel:R})},f=N=>N?Tl(N.limit_window_seconds??N.limitWindowSeconds):null,p=a?.limit_reached??a?.limitReached,g=a?.allowed,y=(N,L)=>{const M=N?.primary_window??N?.primaryWindow??null,O=N?.secondary_window??N?.secondaryWindow??null,T=[M,O];let P=null,E=null;for(const R of T){if(!R)continue;const q=f(R);q===18e3&&!P?P=R:q===604800&&!E&&(E=R)}return P||(P=M&&M!==E?M:null),E||(E=O&&O!==P?O:null),{fiveHourWindow:P,weeklyWindow:E}},_=y(a);d(s.codeFiveHour.id,e(s.codeFiveHour.labelKey),s.codeFiveHour.labelKey,void 0,_.fiveHourWindow,p,g),d(s.codeWeekly.id,e(s.codeWeekly.labelKey),s.codeWeekly.labelKey,void 0,_.weeklyWindow,p,g);const v=y(o),x=o?.limit_reached??o?.limitReached,k=o?.allowed;d(s.codeReviewFiveHour.id,e(s.codeReviewFiveHour.labelKey),s.codeReviewFiveHour.labelKey,void 0,v.fiveHourWindow,x,k),d(s.codeReviewWeekly.id,e(s.codeReviewWeekly.labelKey),s.codeReviewWeekly.labelKey,void 0,v.weeklyWindow,x,k);const C=N=>N.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"");return Array.isArray(r)&&r.forEach((N,L)=>{const M=N?.rate_limit??N?.rateLimit??null;if(!M)return;const O=ys(N?.limit_name??N?.limitName)??ys(N?.metered_feature??N?.meteredFeature)??`additional-${L+1}`,T=C(O)||`additional-${L+1}`,P=M.primary_window??M.primaryWindow??null,E=M.secondary_window??M.secondaryWindow??null,R=M.limit_reached??M.limitReached,q=M.allowed;d(`${T}-five-hour-${L}`,e("codex_quota.additional_primary_window",{name:O}),"codex_quota.additional_primary_window",{name:O},P,R,q),d(`${T}-weekly-${L}`,e("codex_quota.additional_secondary_window",{name:O}),"codex_quota.additional_secondary_window",{name:O},E,R,q)}),c},one=async(t,e)=>{const n=t.auth_index??t.authIndex,i=rs(n);if(!i)throw new Error(e("codex_quota.missing_auth_index"));const s=vee(t),a=bee(t);if(!a)throw new Error(e("codex_quota.missing_account_id"));const o={...oee,"Chatgpt-Account-Id":a},r=await ea.request({authIndex:i,method:"GET",url:aee,header:o});if(r.statusCode<200||r.statusCode>=300)throw up(Ka(r),r.statusCode);const c=mee(r.body??r.bodyText);if(!c)throw new Error(e("codex_quota.empty_windows"));const d=F0(c.plan_type??c.planType),f=ane(c,e);return{planType:d??s,windows:f}},rne="GOOGLE_ONE_AI",lne={"free-tier":"tier_free","legacy-tier":"tier_legacy","standard-tier":"tier_standard","g1-pro-tier":"tier_pro","g1-ultra-tier":"tier_ultra"},cne=(t,e)=>{if(!t)return null;const n=t.currentTier??t.current_tier,i=t.paidTier??t.paid_tier,s=ys(i?.id)??ys(n?.id);if(!s)return null;const a=s.toLowerCase(),o=lne[a];return o?e(`gemini_cli_quota.${o}`):s},une=t=>{if(!t)return null;const e=t.currentTier??t.current_tier,n=t.paidTier??t.paid_tier,i=ys(n?.id)??ys(e?.id);return i?i.toLowerCase():null},dne=t=>{if(!t)return null;const e=t.paidTier??t.paid_tier,n=t.currentTier??t.current_tier,i=e??n;if(!i)return null;const s=i.availableCredits??i.available_credits??[];let a=0,o=!1;for(const r of s){if(ys(r.creditType??r.credit_type)!==rne)continue;const d=Tl(r.creditAmount??r.credit_amount);d!==null&&(a+=d,o=!0)}return o?a:null},hne=async(t,e,n)=>{try{const i=await ea.request({authIndex:t,method:"POST",url:JZ,header:{..._5},data:JSON.stringify({cloudaicompanionProject:e,metadata:{ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI",duetProject:e}})});if(i.statusCode<200||i.statusCode>=300)return{tierLabel:null,tierId:null,creditBalance:null};const s=gee(i.body??i.bodyText);return{tierLabel:cne(s,n),tierId:une(s),creditBalance:dne(s)}}catch{return{tierLabel:null,tierId:null,creditBalance:null}}},v5=(t,e)=>{const n=X2.get(t);return!n||n.requestId!==e?{tierLabel:null,tierId:null,creditBalance:null}:{tierLabel:n.tierLabel,tierId:n.tierId,creditBalance:n.creditBalance}},fne=(t,e,n,i)=>{const s=(h1.get(t)??0)+1;return h1.set(t,s),X2.delete(t),(async()=>{const a=await hne(e,n,i);h1.get(t)===s&&(X2.set(t,{requestId:s,...a}),Cd.getState().setGeminiCliQuota(o=>{const r=o[t];return!r||r.status!=="success"||r.tierLabel===a.tierLabel&&r.tierId===a.tierId&&r.creditBalance===a.creditBalance?o:{...o,[t]:{...r,tierLabel:a.tierLabel,tierId:a.tierId,creditBalance:a.creditBalance}}}))})(),s},mne=async(t,e)=>{const n=t.auth_index??t.authIndex,i=rs(n);if(!i)throw new Error(e("gemini_cli_quota.missing_auth_index"));const s=See(t);if(!s)throw new Error(e("gemini_cli_quota.missing_project_id"));const a=await ea.request({authIndex:i,method:"POST",url:YZ,header:{..._5},data:JSON.stringify({project:s})});if(a.statusCode<200||a.statusCode>=300)throw up(Ka(a),a.statusCode);const o=pee(a.body??a.bodyText),c=(Array.isArray(o?.buckets)?o?.buckets:[]).map(g=>{const y=cee(g.modelId??g.model_id);if(!y)return null;const _=ys(g.tokenType??g.token_type),v=b5(g.remainingFraction??g.remaining_fraction),x=Tl(g.remainingAmount??g.remaining_amount),k=ys(g.resetTime??g.reset_time)??void 0;let C=null;return x!==null?C=x<=0?0:null:k&&(C=0),{modelId:y,tokenType:_,remainingFraction:v??C,remainingAmount:x,resetTime:k}}).filter(g=>g!==null),d=Eee(c),f=fne(t.name,i,s,e),p=v5(t.name,f);return{fileName:t.name,supplementaryRequestId:f,buckets:d,tierLabel:p.tierLabel,tierId:p.tierId,creditBalance:p.creditBalance}},pne=(t,e,n)=>{const{styles:i,QuotaProgressBar:s}=n,{createElement:a}=xo,o=t.groups??[];return o.length===0?a("div",{className:i.quotaMessage},e("antigravity_quota.empty_models")):o.map(r=>{const c=Math.max(0,Math.min(1,r.remainingFraction)),d=Math.round(c*100),f=sk(r.resetTime);return a("div",{key:r.id,className:i.quotaRow},a("div",{className:i.quotaRowHeader},a("span",{className:i.quotaModel,title:r.models.join(", ")},r.label),a("div",{className:i.quotaMeta},a("span",{className:i.quotaPercent},`${d}%`),a("span",{className:i.quotaReset},f))),a(s,{percent:d,highThreshold:hp,mediumThreshold:fp}))})},gne=new Set(["g1-ultra-tier"]),_ne=(t,e,n)=>{const{styles:i,QuotaProgressBar:s}=n,{createElement:a,Fragment:o}=xo,r=t.windows??[],c=t.planType??null,f=(y=>{const _=F0(y);return _?_==="pro"?e("codex_quota.plan_pro"):_==="plus"?e("codex_quota.plan_plus"):_==="team"?e("codex_quota.plan_team"):_==="free"?e("codex_quota.plan_free"):y||_:null})(c),p=F0(c)==="pro",g=[];if(f){const y=p?i.premiumPlanValue:i.codexPlanValue;g.push(a("div",{key:"plan",className:i.codexPlan},a("span",{className:i.codexPlanLabel},e("codex_quota.plan_label")),a("span",{className:y},f)))}return r.length===0?(g.push(a("div",{key:"empty",className:i.quotaMessage},e("codex_quota.empty_windows"))),a(o,null,...g)):(g.push(...r.map(y=>{const _=y.usedPercent,v=_===null?null:Math.max(0,Math.min(100,_)),x=v===null?null:Math.max(0,Math.min(100,100-v)),k=x===null?"--":`${Math.round(x)}%`,C=y.labelKey?e(y.labelKey,y.labelParams):y.label;return a("div",{key:y.id,className:i.quotaRow},a("div",{className:i.quotaRowHeader},a("span",{className:i.quotaModel},C),a("div",{className:i.quotaMeta},a("span",{className:i.quotaPercent},k),a("span",{className:i.quotaReset},y.resetLabel))),a(s,{percent:x,highThreshold:hp,mediumThreshold:fp}))})),a(o,null,...g))},yne=(t,e,n)=>{const{styles:i,QuotaProgressBar:s}=n,{createElement:a,Fragment:o}=xo,r=t.buckets??[],c=t.tierLabel??null,d=t.tierId??null,f=t.creditBalance??null,p=d!==null&&gne.has(d),g=[];if(c){const y=p?i.premiumPlanValue:i.codexPlanValue;g.push(a("div",{key:"tier",className:i.codexPlan},a("span",{className:i.codexPlanLabel},e("gemini_cli_quota.tier_label")),a("span",{className:y},c)))}return f!==null&&g.push(a("div",{key:"credits",className:i.codexPlan},a("span",{className:i.codexPlanLabel},e("gemini_cli_quota.credit_label")),a("span",{className:i.codexPlanValue},e("gemini_cli_quota.credit_amount",{count:f})))),r.length===0?(g.push(a("div",{key:"empty",className:i.quotaMessage},e("gemini_cli_quota.empty_buckets"))),a(o,null,...g)):(g.push(...r.map(y=>{const _=y.remainingFraction,v=_===null?null:Math.max(0,Math.min(1,_)),x=v===null?null:Math.round(v*100),k=x===null?"--":`${x}%`,C=y.remainingAmount===null||y.remainingAmount===void 0?null:e("gemini_cli_quota.remaining_amount",{count:y.remainingAmount}),N=y.modelIds&&y.modelIds.length>0?y.modelIds.join(", "):y.label,L=y.tokenType?`${N} (${y.tokenType})`:N,M=sk(y.resetTime);return a("div",{key:y.id,className:i.quotaRow},a("div",{className:i.quotaRowHeader},a("span",{className:i.quotaModel,title:L},y.label),a("div",{className:i.quotaMeta},a("span",{className:i.quotaPercent},k),C?a("span",{className:i.quotaAmount},C):null,a("span",{className:i.quotaReset},M))),a(s,{percent:x,highThreshold:hp,mediumThreshold:fp}))})),a(o,null,...g))},bne=(t,e)=>{const n=[];for(const{key:i,id:s,labelKey:a}of see){const o=t[i];if(!o||typeof o!="object"||!("utilization"in o))continue;const r=o,c=Tl(r.utilization),d=sk(r.resets_at);n.push({id:s,label:e(a),labelKey:a,usedPercent:c,resetLabel:d})}return n},zO=t=>{if(t!=null){if(typeof t=="boolean")return t;if(typeof t=="number")return t!==0;if(typeof t=="string"){const e=t.trim().toLowerCase();if(["true","1","yes","y","on"].includes(e))return!0;if(["false","0","no","n","off"].includes(e))return!1}}},vne=t=>{if(t==null)return null;if(typeof t=="string"){const e=t.trim();if(!e)return null;try{return JSON.parse(e)}catch{return null}}return typeof t=="object"?t:null},xne=t=>{if(!t)return null;const e=zO(t.account?.has_claude_max);if(e)return"plan_max";const n=zO(t.account?.has_claude_pro);return n?"plan_pro":e===!1&&n===!1?"plan_free":null},Sne=async(t,e)=>{const n=t.auth_index??t.authIndex,i=rs(n);if(!i)throw new Error(e("claude_quota.missing_auth_index"));const[s,a]=await Promise.allSettled([ea.request({authIndex:i,method:"GET",url:iee,header:{...DO}}),ea.request({authIndex:i,method:"GET",url:nee,header:{...DO}})]);if(s.status==="rejected")throw s.reason;const o=s.value;if(o.statusCode<200||o.statusCode>=300)throw up(Ka(o),o.statusCode);const r=fee(o.body??o.bodyText);if(!r)throw new Error(e("claude_quota.empty_windows"));const c=bne(r,e),d=a.status==="fulfilled"&&a.value.statusCode>=200&&a.value.statusCode<300?xne(vne(a.value.body??a.value.bodyText)):null;return{windows:c,extraUsage:r.extra_usage,planType:d}},wne=(t,e,n)=>{const{styles:i,QuotaProgressBar:s}=n,{createElement:a,Fragment:o}=xo,r=t.windows??[],c=t.extraUsage??null,d=t.planType??null,f=[];if(d&&f.push(a("div",{key:"plan",className:i.codexPlan},a("span",{className:i.codexPlanLabel},e("claude_quota.plan_label")),a("span",{className:i.codexPlanValue},e(`claude_quota.${d}`)))),c&&c.is_enabled){const p=`$${(c.used_credits/100).toFixed(2)} / $${(c.monthly_limit/100).toFixed(2)}`;f.push(a("div",{key:"extra",className:i.codexPlan},a("span",{className:i.codexPlanLabel},e("claude_quota.extra_usage_label")),a("span",{className:i.codexPlanValue},p)))}return r.length===0?(f.push(a("div",{key:"empty",className:i.quotaMessage},e("claude_quota.empty_windows"))),a(o,null,...f)):(f.push(...r.map(p=>{const g=p.usedPercent,y=g===null?null:Math.max(0,Math.min(100,g)),_=y===null?null:Math.max(0,Math.min(100,100-y)),v=_===null?"--":`${Math.round(_)}%`,x=p.labelKey?e(p.labelKey):p.label;return a("div",{key:p.id,className:i.quotaRow},a("div",{className:i.quotaRowHeader},a("span",{className:i.quotaModel},x),a("div",{className:i.quotaMeta},a("span",{className:i.quotaPercent},v),a("span",{className:i.quotaReset},p.resetLabel))),a(s,{percent:_,highThreshold:hp,mediumThreshold:fp}))})),a(o,null,...f))},x5={type:"claude",i18nPrefix:"claude_quota",cardIdleMessageKey:"quota_management.card_idle_hint",filterFn:t=>Aee(t)&&!dp(t),fetchQuota:Sne,storeSelector:t=>t.claudeQuota,storeSetter:"setClaudeQuota",buildLoadingState:()=>({status:"loading",windows:[]}),buildSuccessState:t=>({status:"success",windows:t.windows,extraUsage:t.extraUsage,planType:t.planType}),buildErrorState:(t,e)=>({status:"error",windows:[],error:t,errorStatus:e}),cardClassName:gt.claudeCard,controlsClassName:gt.claudeControls,controlClassName:gt.claudeControl,gridClassName:gt.claudeGrid,renderQuotaItems:wne},S5={type:"antigravity",i18nPrefix:"antigravity_quota",cardIdleMessageKey:"quota_management.card_idle_hint",filterFn:t=>Cee(t)&&!dp(t),fetchQuota:sne,storeSelector:t=>t.antigravityQuota,storeSetter:"setAntigravityQuota",buildLoadingState:()=>({status:"loading",groups:[]}),buildSuccessState:t=>({status:"success",groups:t}),buildErrorState:(t,e)=>({status:"error",groups:[],error:t,errorStatus:e}),cardClassName:gt.antigravityCard,controlsClassName:gt.antigravityControls,controlClassName:gt.antigravityControl,gridClassName:gt.antigravityGrid,renderQuotaItems:pne},w5={type:"codex",i18nPrefix:"codex_quota",cardIdleMessageKey:"quota_management.card_idle_hint",filterFn:t=>Nee(t)&&!dp(t),fetchQuota:one,storeSelector:t=>t.codexQuota,storeSetter:"setCodexQuota",buildLoadingState:()=>({status:"loading",windows:[]}),buildSuccessState:t=>({status:"success",windows:t.windows,planType:t.planType}),buildErrorState:(t,e)=>({status:"error",windows:[],error:t,errorStatus:e}),cardClassName:gt.codexCard,controlsClassName:gt.codexControls,controlClassName:gt.codexControl,gridClassName:gt.codexGrid,renderQuotaItems:_ne},k5={type:"gemini-cli",i18nPrefix:"gemini_cli_quota",cardIdleMessageKey:"quota_management.card_idle_hint",filterFn:t=>Tee(t)&&!Lee(t)&&!dp(t),fetchQuota:mne,storeSelector:t=>t.geminiCliQuota,storeSetter:"setGeminiCliQuota",buildLoadingState:()=>({status:"loading",buckets:[],tierLabel:null,tierId:null,creditBalance:null}),buildSuccessState:t=>{const e=v5(t.fileName,t.supplementaryRequestId);return{status:"success",buckets:t.buckets,tierLabel:e.tierLabel??t.tierLabel,tierId:e.tierId??t.tierId,creditBalance:e.creditBalance??t.creditBalance}},buildErrorState:(t,e)=>({status:"error",buckets:[],error:t,errorStatus:e}),cardClassName:gt.geminiCliCard,controlsClassName:gt.geminiCliControls,controlClassName:gt.geminiCliControl,gridClassName:gt.geminiCliGrid,renderQuotaItems:yne},kne=async(t,e)=>{const n=t.auth_index??t.authIndex,i=rs(n);if(!i)throw new Error(e("kimi_quota.missing_auth_index"));const s=await ea.request({authIndex:i,method:"GET",url:ree,header:{...lee}});if(s.statusCode<200||s.statusCode>=300)throw up(Ka(s),s.statusCode);const a=_ee(s.body??s.bodyText);if(!a)throw new Error(e("kimi_quota.empty_data"));return Uee(a)},Cne=(t,e,n)=>{const{styles:i,QuotaProgressBar:s}=n,{createElement:a}=xo,o=t.rows??[];return o.length===0?a("div",{className:i.quotaMessage},e("kimi_quota.empty_data")):o.map(r=>{const c=r.limit,d=r.used,f=c>0?Math.max(0,Math.min(100,Math.round((c-d)/c*100))):d>0?0:null,p=f===null?"--":`${f}%`,g=r.labelKey?e(r.labelKey,r.labelParams??{}):r.label??"",y=kee(e,r.resetHint);return a("div",{key:r.id,className:i.quotaRow},a("div",{className:i.quotaRowHeader},a("span",{className:i.quotaModel},g),a("div",{className:i.quotaMeta},a("span",{className:i.quotaPercent},p),c>0?a("span",{className:i.quotaAmount},`${d} / ${c}`):null,y?a("span",{className:i.quotaReset},y):null)),a(s,{percent:f,highThreshold:hp,mediumThreshold:fp}))})},C5={type:"kimi",i18nPrefix:"kimi_quota",cardIdleMessageKey:"quota_management.card_idle_hint",filterFn:t=>Mee(t)&&!dp(t),fetchQuota:kne,storeSelector:t=>t.kimiQuota,storeSetter:"setKimiQuota",buildLoadingState:()=>({status:"loading",rows:[]}),buildSuccessState:t=>({status:"success",rows:t}),buildErrorState:(t,e)=>({status:"error",rows:[],error:t,errorStatus:e}),cardClassName:gt.kimiCard,controlsClassName:gt.kimiControls,controlClassName:gt.kimiControl,gridClassName:gt.kimiGrid,renderQuotaItems:Cne},Ane="AuthFilesPage-module__container___u1c4k",Nne="AuthFilesPage-module__pageHeader___DVV58",Tne="AuthFilesPage-module__pageTitle___1TOZn",Mne="AuthFilesPage-module__description___N3RjR",Lne="AuthFilesPage-module__headerActions___j0ROO",One="AuthFilesPage-module__titleWrapper___PLYyj",Pne="AuthFilesPage-module__countBadge___DQWug",Ene="AuthFilesPage-module__errorBox___A9vF2",jne="AuthFilesPage-module__filterSection___qQ3Zo",Rne="AuthFilesPage-module__filterRail___YRraq",Dne="AuthFilesPage-module__filterAllIconWrap___jMF1r",Fne="AuthFilesPage-module__filterAllIcon___mqchB",Ine="AuthFilesPage-module__filterContent___xfK-G",Bne="AuthFilesPage-module__filterTags___A24A3",Une="AuthFilesPage-module__filterTag___-YnCU",qne="AuthFilesPage-module__filterTagActive___Rnbcs",zne="AuthFilesPage-module__filterTagIconWrap___pN6-v",Kne="AuthFilesPage-module__filterTagLabel___pP8yh",Vne="AuthFilesPage-module__filterTagIcon___j068V",Hne="AuthFilesPage-module__filterTagIconFallback___4ALgn",Wne="AuthFilesPage-module__filterTagText___b9X07",Gne="AuthFilesPage-module__filterTagCount___RxSVk",$ne="AuthFilesPage-module__filterControlsPanel___V-IZn",Xne="AuthFilesPage-module__filterControls___PfZDU",Qne="AuthFilesPage-module__filterItem___Kko4o",Yne="AuthFilesPage-module__filterToggleItem___m2sGr",Jne="AuthFilesPage-module__filterToggleGroup___TdMH-",Zne="AuthFilesPage-module__filterToggleCard___N4oxi",eie="AuthFilesPage-module__filterToggle___mi9Sd",tie="AuthFilesPage-module__filterToggleLabel___5rAlu",nie="AuthFilesPage-module__pageSizeSelect___yEBvp",iie="AuthFilesPage-module__fileGrid___ajvi5",sie="AuthFilesPage-module__fileGridQuotaManaged___kOhRx",aie="AuthFilesPage-module__fileGridCompact___meaAl",oie="AuthFilesPage-module__antigravityGrid___N7Got",rie="AuthFilesPage-module__codexGrid___vLB3H",lie="AuthFilesPage-module__geminiCliGrid___5IwI3",cie="AuthFilesPage-module__antigravityControls___gn3rt",uie="AuthFilesPage-module__antigravityControl___rQ8wo",die="AuthFilesPage-module__codexControls___Clxl6",hie="AuthFilesPage-module__codexControl___E7Mtk",fie="AuthFilesPage-module__geminiCliControls___Y3V2-",mie="AuthFilesPage-module__geminiCliControl___ZOIpb",pie="AuthFilesPage-module__antigravityCard___rt36l",gie="AuthFilesPage-module__claudeCard___L-dIs",_ie="AuthFilesPage-module__codexCard___FiEQ6",yie="AuthFilesPage-module__geminiCliCard___4PuI5",bie="AuthFilesPage-module__kimiCard___zWq5C",vie="AuthFilesPage-module__quotaSection___hXy5f",xie="AuthFilesPage-module__quotaRow___P2dUi",Sie="AuthFilesPage-module__quotaRowHeader___IKu7H",wie="AuthFilesPage-module__quotaModel___huwv6",kie="AuthFilesPage-module__quotaBar___ex7am",Cie="AuthFilesPage-module__quotaBarFill___KqH7M",Aie="AuthFilesPage-module__quotaBarFillHigh___F8WGP",Nie="AuthFilesPage-module__quotaBarFillMedium___ae0Pi",Tie="AuthFilesPage-module__quotaBarFillLow___dX4lb",Mie="AuthFilesPage-module__quotaMeta___HcbUH",Lie="AuthFilesPage-module__quotaPercent___6J9UR",Oie="AuthFilesPage-module__quotaReset___bmEse",Pie="AuthFilesPage-module__quotaAmount___k3Wx6",Eie="AuthFilesPage-module__quotaMessage___1w3oM",jie="AuthFilesPage-module__quotaMessageAction___9r9cq",Rie="AuthFilesPage-module__quotaError___dEV4B",Die="AuthFilesPage-module__quotaWarning___G1Tvc",Fie="AuthFilesPage-module__codexPlan___4IbAU",Iie="AuthFilesPage-module__codexPlanLabel___RZN4K",Bie="AuthFilesPage-module__codexPlanValue___Z0Kgr",Uie="AuthFilesPage-module__premiumPlanValue___9WyhU",qie="AuthFilesPage-module__fileCard___j9Jtq",zie="AuthFilesPage-module__fileCardSelected___9i7m1",Kie="AuthFilesPage-module__fileCardDisabled___hbSbQ",Vie="AuthFilesPage-module__fileCardCompact___u9yZu",Hie="AuthFilesPage-module__fileCardMain___6JwC7",Wie="AuthFilesPage-module__cardHeader___uJMtL",Gie="AuthFilesPage-module__cardSelection___wOE11",$ie="AuthFilesPage-module__providerAvatar___4xnYu",Xie="AuthFilesPage-module__providerAvatarImage___QL5oK",Qie="AuthFilesPage-module__providerAvatarFallback___H9Mgn",Yie="AuthFilesPage-module__cardHeaderContent___rh9WP",Jie="AuthFilesPage-module__cardBadgeRow___SeOzZ",Zie="AuthFilesPage-module__typeBadge___Dtm6A",ese="AuthFilesPage-module__stateBadge___Cq7id",tse="AuthFilesPage-module__fileName___DZ39s",nse="AuthFilesPage-module__healthStatusMessage___KKfW-",ise="AuthFilesPage-module__cardActions___mJgkW",sse="AuthFilesPage-module__cardActionsMain___9Lsw7",ase="AuthFilesPage-module__primaryActionButton___ex-Us",ose="AuthFilesPage-module__cardUtilityActions___LX5uj",rse="AuthFilesPage-module__iconButton___XT5TY",lse="AuthFilesPage-module__statusToggle___H8bxD",cse="AuthFilesPage-module__statusToggleLabel___Wdwo7",use="AuthFilesPage-module__fileCardLayout___HRpBj",dse="AuthFilesPage-module__stateBadgeActive___Fo6ts",hse="AuthFilesPage-module__stateBadgeWarning___vMjci",fse="AuthFilesPage-module__stateBadgeDisabled___uB-Ra",mse="AuthFilesPage-module__stateBadgeVirtual___Ig7fr",pse="AuthFilesPage-module__cardMeta___H6kAQ",gse="AuthFilesPage-module__cardMetaCompact___h-CkT",_se="AuthFilesPage-module__metaLabel___4mGPs",yse="AuthFilesPage-module__metaValue___VKbWa",bse="AuthFilesPage-module__metaItem___f62C0",vse="AuthFilesPage-module__priorityBadge___vHY0g",xse="AuthFilesPage-module__priorityValue___cH2dN",Sse="AuthFilesPage-module__noteText___xsgqc",wse="AuthFilesPage-module__noteLabel___DrD8k",kse="AuthFilesPage-module__noteValue___-wZpH",Cse="AuthFilesPage-module__sortSelect___4fEjm",Ase="AuthFilesPage-module__messageIcon___X3Cwx",Nse="AuthFilesPage-module__cardInsights___ci5AY",Tse="AuthFilesPage-module__cardInsightsCompact___y0Q4G",Mse="AuthFilesPage-module__cardStats___JQ4ig",Lse="AuthFilesPage-module__cardStatsCompact___gRvUT",Ose="AuthFilesPage-module__statPill___wFsBu",Pse="AuthFilesPage-module__statLabel___x0iKO",Ese="AuthFilesPage-module__statValue___0Cyg5",jse="AuthFilesPage-module__statSuccess___mh8iR",Rse="AuthFilesPage-module__statFailure___ivDGu",Dse="AuthFilesPage-module__statusPanel___jxcFi",Fse="AuthFilesPage-module__statusPanelCompact___qla9F",Ise="AuthFilesPage-module__statusPanelLabel___D3k8N",Bse="AuthFilesPage-module__statusBar___n-3Gp",Use="AuthFilesPage-module__statusBlocks___DpQaY",qse="AuthFilesPage-module__statusBlockWrapper___XCgvC",zse="AuthFilesPage-module__statusRate___LZm5e",Kse="AuthFilesPage-module__statusBlock___RPMAs",Vse="AuthFilesPage-module__statusBlockActive___pjNyd",Hse="AuthFilesPage-module__statusBlockIdle___6Uc0C",Wse="AuthFilesPage-module__statusTooltip___skNaB",Gse="AuthFilesPage-module__statusTooltipLeft___ZK0OM",$se="AuthFilesPage-module__statusTooltipRight___MrcVP",Xse="AuthFilesPage-module__tooltipTime___6rx7A",Qse="AuthFilesPage-module__tooltipStats___rDF8h",Yse="AuthFilesPage-module__tooltipSuccess___DygUj",Jse="AuthFilesPage-module__tooltipFailure___Som0h",Zse="AuthFilesPage-module__tooltipRate___gbhZZ",eae="AuthFilesPage-module__statusRateHigh___seYyb",tae="AuthFilesPage-module__statusRateMedium___aNblo",nae="AuthFilesPage-module__statusRateLow___BxxBi",iae="AuthFilesPage-module__prefixProxyEditor___QyoN1",sae="AuthFilesPage-module__prefixProxyLoading___pipJw",aae="AuthFilesPage-module__prefixProxyError___HNtOZ",oae="AuthFilesPage-module__prefixProxyJsonWrapper___j237Y",rae="AuthFilesPage-module__prefixProxyLabel___IJHtd",lae="AuthFilesPage-module__prefixProxyTextarea___wcym6",cae="AuthFilesPage-module__prefixProxyFields___da72p",uae="AuthFilesPage-module__modelsActionButton___-ihP6",dae="AuthFilesPage-module__modelsActionIconWrap___KD-87",hae="AuthFilesPage-module__actionButtonLabel___B0RSa",fae="AuthFilesPage-module__actionIcon___F2TRI",mae="AuthFilesPage-module__pagination___Hwpg2",pae="AuthFilesPage-module__batchActionContainer___qPwxN",gae="AuthFilesPage-module__batchActionBar___YEJju",_ae="AuthFilesPage-module__batchActionLeft___g851y",yae="AuthFilesPage-module__batchActionRight___NDPeh",bae="AuthFilesPage-module__batchSelectionText___rSTLk",vae="AuthFilesPage-module__pageInfo___Fkfbg",xae="AuthFilesPage-module__excludedList___9OGiS",Sae="AuthFilesPage-module__excludedItem___J3Xxa",wae="AuthFilesPage-module__excludedInfo___0hKQa",kae="AuthFilesPage-module__excludedProvider___6pkYz",Cae="AuthFilesPage-module__excludedModels___QdpJB",Aae="AuthFilesPage-module__excludedActions___jP49M",Nae="AuthFilesPage-module__providerField___end0y",Tae="AuthFilesPage-module__providerTagList___dCCYW",Mae="AuthFilesPage-module__providerTag___RADdc",Lae="AuthFilesPage-module__providerTagActive___j4vQJ",Oae="AuthFilesPage-module__aliasChartSection___uS-yX",Pae="AuthFilesPage-module__aliasChartHeader___ABhkk",Eae="AuthFilesPage-module__aliasChartTitle___OSz75",jae="AuthFilesPage-module__aliasChart___XbONn",Rae="AuthFilesPage-module__cardExtraButtons___P-fL4",Dae="AuthFilesPage-module__viewModeSwitch___CxLpP",Fae="AuthFilesPage-module__mappingRow___b1MBs",Iae="AuthFilesPage-module__mappingSeparator___Wx18F",Bae="AuthFilesPage-module__mappingFork___nRhwu",Uae="AuthFilesPage-module__detailContent___K3wet",qae="AuthFilesPage-module__jsonContent___5lYBo",zae="AuthFilesPage-module__formGroup___1YGlp",Kae="AuthFilesPage-module__textarea___IAg4a",Vae="AuthFilesPage-module__hint___YExGS",Hae="AuthFilesPage-module__modelsList___KKhRE",Wae="AuthFilesPage-module__modelItem___VMfPD",Gae="AuthFilesPage-module__modelId___4wMUh",$ae="AuthFilesPage-module__modelDisplayName___znKrk",Xae="AuthFilesPage-module__modelType___B0C7D",Qae="AuthFilesPage-module__modelItemExcluded___I5sBn",Yae="AuthFilesPage-module__modelExcludedBadge___FyRdH",Jae="AuthFilesPage-module__excludedCheckList___8T3-H",Zae="AuthFilesPage-module__excludedCheckItem___2z42k",eoe="AuthFilesPage-module__excludedCheckLabel___tg4BJ",toe="AuthFilesPage-module__excludedCheckDisplayName___Cno8d",ge={container:Ane,pageHeader:Nne,pageTitle:Tne,description:Mne,headerActions:Lne,titleWrapper:One,countBadge:Pne,errorBox:Ene,filterSection:jne,filterRail:Rne,filterAllIconWrap:Dne,filterAllIcon:Fne,filterContent:Ine,filterTags:Bne,filterTag:Une,filterTagActive:qne,filterTagIconWrap:zne,filterTagLabel:Kne,filterTagIcon:Vne,filterTagIconFallback:Hne,filterTagText:Wne,filterTagCount:Gne,filterControlsPanel:$ne,filterControls:Xne,filterItem:Qne,filterToggleItem:Yne,filterToggleGroup:Jne,filterToggleCard:Zne,filterToggle:eie,filterToggleLabel:tie,pageSizeSelect:nie,fileGrid:iie,fileGridQuotaManaged:sie,fileGridCompact:aie,antigravityGrid:oie,codexGrid:rie,geminiCliGrid:lie,antigravityControls:cie,antigravityControl:uie,codexControls:die,codexControl:hie,geminiCliControls:fie,geminiCliControl:mie,antigravityCard:pie,claudeCard:gie,codexCard:_ie,geminiCliCard:yie,kimiCard:bie,quotaSection:vie,quotaRow:xie,quotaRowHeader:Sie,quotaModel:wie,quotaBar:kie,quotaBarFill:Cie,quotaBarFillHigh:Aie,quotaBarFillMedium:Nie,quotaBarFillLow:Tie,quotaMeta:Mie,quotaPercent:Lie,quotaReset:Oie,quotaAmount:Pie,quotaMessage:Eie,quotaMessageAction:jie,quotaError:Rie,quotaWarning:Die,codexPlan:Fie,codexPlanLabel:Iie,codexPlanValue:Bie,premiumPlanValue:Uie,fileCard:qie,fileCardSelected:zie,fileCardDisabled:Kie,fileCardCompact:Vie,fileCardMain:Hie,cardHeader:Wie,cardSelection:Gie,providerAvatar:$ie,providerAvatarImage:Xie,providerAvatarFallback:Qie,cardHeaderContent:Yie,cardBadgeRow:Jie,typeBadge:Zie,stateBadge:ese,fileName:tse,healthStatusMessage:nse,cardActions:ise,cardActionsMain:sse,primaryActionButton:ase,cardUtilityActions:ose,iconButton:rse,statusToggle:lse,statusToggleLabel:cse,fileCardLayout:use,stateBadgeActive:dse,stateBadgeWarning:hse,stateBadgeDisabled:fse,stateBadgeVirtual:mse,cardMeta:pse,cardMetaCompact:gse,metaLabel:_se,metaValue:yse,metaItem:bse,priorityBadge:vse,priorityValue:xse,noteText:Sse,noteLabel:wse,noteValue:kse,sortSelect:Cse,messageIcon:Ase,cardInsights:Nse,cardInsightsCompact:Tse,cardStats:Mse,cardStatsCompact:Lse,statPill:Ose,statLabel:Pse,statValue:Ese,statSuccess:jse,statFailure:Rse,statusPanel:Dse,statusPanelCompact:Fse,statusPanelLabel:Ise,statusBar:Bse,statusBlocks:Use,statusBlockWrapper:qse,statusRate:zse,statusBlock:Kse,statusBlockActive:Vse,statusBlockIdle:Hse,statusTooltip:Wse,statusTooltipLeft:Gse,statusTooltipRight:$se,tooltipTime:Xse,tooltipStats:Qse,tooltipSuccess:Yse,tooltipFailure:Jse,tooltipRate:Zse,statusRateHigh:eae,statusRateMedium:tae,statusRateLow:nae,prefixProxyEditor:iae,prefixProxyLoading:sae,prefixProxyError:aae,prefixProxyJsonWrapper:oae,prefixProxyLabel:rae,prefixProxyTextarea:lae,prefixProxyFields:cae,modelsActionButton:uae,modelsActionIconWrap:dae,actionButtonLabel:hae,actionIcon:fae,pagination:mae,batchActionContainer:pae,batchActionBar:gae,batchActionLeft:_ae,batchActionRight:yae,batchSelectionText:bae,pageInfo:vae,excludedList:xae,excludedItem:Sae,excludedInfo:wae,excludedProvider:kae,excludedModels:Cae,excludedActions:Aae,providerField:Nae,providerTagList:Tae,providerTag:Mae,providerTagActive:Lae,aliasChartSection:Oae,aliasChartHeader:Pae,aliasChartTitle:Eae,aliasChart:jae,cardExtraButtons:Rae,viewModeSwitch:Dae,mappingRow:Fae,mappingSeparator:Iae,mappingFork:Bae,detailContent:Uae,jsonContent:qae,formGroup:zae,textarea:Kae,hint:Vae,modelsList:Hae,modelItem:Wae,modelId:Gae,modelDisplayName:$ae,modelType:Xae,modelItemExcluded:Qae,modelExcludedBadge:Yae,excludedCheckList:Jae,excludedCheckItem:Zae,excludedCheckLabel:eoe,excludedCheckDisplayName:toe};function noe({percent:t,highThreshold:e,mediumThreshold:n}){const s=t===null?null:((r,c,d)=>Math.min(d,Math.max(c,r)))(t,0,100),a=s===null?ge.quotaBarFillMedium:s>=e?ge.quotaBarFillHigh:s>=n?ge.quotaBarFillMedium:ge.quotaBarFillLow,o=Math.round(s??0);return h.jsx("div",{className:ge.quotaBar,children:h.jsx("div",{className:`${ge.quotaBarFill} ${a}`,style:{width:`${o}%`}})})}const KO=t=>t==="antigravity"?S5:t==="claude"?x5:t==="codex"?w5:t==="kimi"?C5:k5;function ioe(t){const{file:e,quotaType:n,disableControls:i}=t,{t:s}=nt(),a=mn(y=>y.showNotification),o=Cd(y=>n==="antigravity"?y.antigravityQuota[e.name]:n==="claude"?y.claudeQuota[e.name]:n==="codex"?y.codexQuota[e.name]:n==="kimi"?y.kimiQuota[e.name]:y.geminiCliQuota[e.name]),r=Cd(y=>n==="antigravity"?y.setAntigravityQuota:n==="claude"?y.setClaudeQuota:n==="codex"?y.setCodexQuota:n==="kimi"?y.setKimiQuota:y.setGeminiCliQuota),c=S.useCallback(async()=>{if(i||gl(e)||e.disabled||o?.status==="loading")return;const y=KO(n);r(_=>({..._,[e.name]:y.buildLoadingState()}));try{const _=await y.fetchQuota(e,s);r(v=>({...v,[e.name]:y.buildSuccessState(_)})),a(s("auth_files.quota_refresh_success",{name:e.name}),"success")}catch(_){const v=_ instanceof Error?_.message:s("common.unknown_error"),x=Vy(_);r(k=>({...k,[e.name]:y.buildErrorState(v,x)})),a(s("auth_files.quota_refresh_failed",{name:e.name,message:v}),"error")}},[i,e,o?.status,n,a,s,r]),d=KO(n),f=o?.status??"idle",p=!i&&!e.disabled,g=zZ(s,o?.errorStatus,o?.error||s("common.unknown_error"));return h.jsx("div",{className:ge.quotaSection,children:f==="loading"?h.jsx("div",{className:ge.quotaMessage,children:s(`${d.i18nPrefix}.loading`)}):f==="idle"?h.jsx("button",{type:"button",className:`${ge.quotaMessage} ${ge.quotaMessageAction}`,onClick:()=>void c(),disabled:!p,children:s(`${d.i18nPrefix}.idle`)}):f==="error"?h.jsx("div",{className:ge.quotaError,children:s(`${d.i18nPrefix}.load_failed`,{message:g})}):o?d.renderQuotaItems(o,s,{styles:ge,QuotaProgressBar:noe}):h.jsx("div",{className:ge.quotaMessage,children:s(`${d.i18nPrefix}.idle`)})})}const soe=new Set(["ok","healthy","ready","success","available"]),aoe=t=>{const e=Gd(t);return d5.has(e)?e:null};function ooe(t){const{t:e}=nt(),{file:n,compact:i,selected:s,resolvedTheme:a,disableControls:o,deleting:r,statusUpdating:c,quotaFilterType:d,keyStats:f,statusBarCache:p,onShowModels:g,onDownload:y,onOpenPrefixProxyEditor:_,onDelete:v,onToggleStatus:x,onToggleSelect:k}=t,C=HZ(n,f),N=gl(n),L=(n.type||"").toLowerCase()==="aistudio",M=!N||L,O=m5(n.type||"unknown",a),T=Ju(e,n.type||"unknown"),P=p5(n.type||"unknown",a),E=d&&aoe(n)===d?d:null,R=!!E&&!N&&!i,q=E==="antigravity"?ge.antigravityCard:E==="claude"?ge.claudeCard:E==="codex"?ge.codexCard:E==="gemini-cli"?ge.geminiCliCard:E==="kimi"?ge.kimiCard:"",I=n.auth_index??n.authIndex,Y=rs(I),X=Y&&p.get(Y)||Na([]),K=h5(n),B=!!K&&!soe.has(K.toLowerCase()),H=pm(n.priority??n.priority),z=typeof n.note=="string"?n.note.trim():"",Q=N?e("auth_files.type_virtual")||"虚拟认证文件":n.disabled?e("auth_files.health_status_disabled"):e(B?"auth_files.health_status_warning":K?"auth_files.health_status_healthy":"auth_files.status_toggle_label"),W=N?ge.stateBadgeVirtual:n.disabled?ge.stateBadgeDisabled:B?ge.stateBadgeWarning:ge.stateBadgeActive;return h.jsx("div",{className:`${ge.fileCard} ${i?ge.fileCardCompact:""} ${q} ${s?ge.fileCardSelected:""} ${n.disabled?ge.fileCardDisabled:""}`,children:h.jsx("div",{className:ge.fileCardLayout,children:h.jsxs("div",{className:ge.fileCardMain,children:[h.jsxs("div",{className:ge.cardHeader,children:[!N&&h.jsx(Nl,{checked:s,onChange:()=>k(n.name),className:ge.cardSelection,"aria-label":e(s?"auth_files.batch_deselect":"auth_files.batch_select_all"),title:e(s?"auth_files.batch_deselect":"auth_files.batch_select_all")}),h.jsx("div",{className:ge.providerAvatar,style:{backgroundColor:O.bg,color:O.text,...O.border?{border:O.border}:{}},children:P?h.jsx("img",{src:P,alt:"",className:ge.providerAvatarImage}):h.jsx("span",{className:ge.providerAvatarFallback,children:T.slice(0,1).toUpperCase()})}),h.jsxs("div",{className:ge.cardHeaderContent,children:[h.jsxs("div",{className:ge.cardBadgeRow,children:[h.jsx("span",{className:ge.typeBadge,style:{backgroundColor:O.bg,color:O.text,...O.border?{border:O.border}:{}},children:T}),h.jsx("span",{className:`${ge.stateBadge} ${W}`,children:Q})]}),h.jsx("span",{className:ge.fileName,title:n.name,children:n.name}),!i&&z&&h.jsxs("div",{className:ge.noteText,title:z,children:[h.jsx("span",{className:ge.noteLabel,children:e("auth_files.note_display")}),h.jsx("span",{className:ge.noteValue,children:z})]})]})]}),h.jsxs("div",{className:`${ge.cardMeta} ${i?ge.cardMetaCompact:""}`,children:[h.jsxs("div",{className:ge.metaItem,children:[h.jsx("span",{className:ge.metaLabel,children:e("auth_files.file_size")}),h.jsx("span",{className:ge.metaValue,children:n.size?Ww(n.size):"-"})]}),h.jsxs("div",{className:ge.metaItem,children:[h.jsx("span",{className:ge.metaLabel,children:e("auth_files.file_modified")}),h.jsx("span",{className:ge.metaValue,children:WZ(n)})]}),H!==void 0&&h.jsxs("div",{className:`${ge.metaItem} ${ge.priorityBadge}`,children:[h.jsx("span",{className:ge.metaLabel,children:e("auth_files.priority_display")}),h.jsx("span",{className:`${ge.metaValue} ${ge.priorityValue}`,children:H})]})]}),K&&B&&h.jsxs("div",{className:ge.healthStatusMessage,title:K,children:[h.jsx(Pw,{className:ge.messageIcon,size:14}),h.jsx("span",{children:K})]}),h.jsxs("div",{className:`${ge.cardInsights} ${i?ge.cardInsightsCompact:""}`,children:[h.jsxs("div",{className:`${ge.cardStats} ${i?ge.cardStatsCompact:""}`,children:[h.jsxs("div",{className:`${ge.statPill} ${ge.statSuccess}`,children:[h.jsx("span",{className:ge.statLabel,children:e("stats.success")}),h.jsx("span",{className:ge.statValue,children:C.success})]}),h.jsxs("div",{className:`${ge.statPill} ${ge.statFailure}`,children:[h.jsx("span",{className:ge.statLabel,children:e("stats.failure")}),h.jsx("span",{className:ge.statValue,children:C.failure})]})]}),h.jsxs("div",{className:`${ge.statusPanel} ${i?ge.statusPanelCompact:""}`,children:[h.jsx("div",{className:ge.statusPanelLabel,children:h.jsx("span",{children:e("auth_files.health_status_label")})}),h.jsx(Vd,{statusData:X,styles:ge})]}),R&&E&&h.jsx(ioe,{file:n,quotaType:E,disableControls:o})]}),h.jsxs("div",{className:ge.cardActions,children:[h.jsxs("div",{className:ge.cardActionsMain,children:[M&&h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>g(n),className:`${ge.primaryActionButton} ${ge.modelsActionButton}`,title:e("auth_files.models_button",{defaultValue:"模型"}),disabled:o,children:h.jsxs(h.Fragment,{children:[h.jsx("span",{className:ge.modelsActionIconWrap,children:h.jsx(Nz,{className:ge.actionIcon,size:16})}),h.jsx("span",{className:ge.actionButtonLabel,children:e("auth_files.models_button",{defaultValue:"模型"})})]})}),!N&&h.jsxs("div",{className:ge.cardUtilityActions,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>y(n.name),className:ge.iconButton,title:e("auth_files.download_button"),disabled:o,children:h.jsx(Z3,{className:ge.actionIcon,size:16})}),h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>_(n),className:ge.iconButton,title:e("auth_files.prefix_proxy_button"),disabled:o,children:h.jsx(P2,{className:ge.actionIcon,size:16})}),h.jsx(he,{variant:"danger",size:"sm",onClick:()=>v(n.name),className:ge.iconButton,title:e("auth_files.delete_button"),disabled:o||r===n.name,children:r===n.name?h.jsx(Fc,{size:14}):h.jsx(Oy,{className:ge.actionIcon,size:16})})]})]}),!N&&h.jsxs("div",{className:ge.statusToggle,children:[h.jsx("span",{className:ge.statusToggleLabel,children:e("auth_files.status_toggle_label")}),h.jsx(xi,{ariaLabel:e("auth_files.status_toggle_label"),checked:!n.disabled,disabled:o||c[n.name]===!0,onChange:D=>x(n,D)})]})]})]})})})}function roe(t){const{t:e}=nt(),{open:n,fileName:i,fileType:s,loading:a,error:o,models:r,excluded:c,onClose:d,onCopyText:f}=t;return h.jsx(Ss,{open:n,onClose:d,title:e("auth_files.models_title",{defaultValue:"支持的模型"})+` - ${i}`,footer:h.jsx(he,{variant:"secondary",onClick:d,children:e("common.close")}),children:a?h.jsx("div",{className:ge.hint,children:e("auth_files.models_loading",{defaultValue:"正在加载模型列表..."})}):o==="unsupported"?h.jsx(os,{title:e("auth_files.models_unsupported",{defaultValue:"当前版本不支持此功能"}),description:e("auth_files.models_unsupported_desc",{defaultValue:"请更新 CLI Proxy API 到最新版本后重试"})}):r.length===0?h.jsx(os,{title:e("auth_files.models_empty",{defaultValue:"该凭证暂无可用模型"}),description:e("auth_files.models_empty_desc",{defaultValue:"该认证凭证可能尚未被服务器加载或没有绑定任何模型"})}):h.jsx("div",{className:ge.modelsList,children:r.map(p=>{const g=GZ(p.id,s,c);return h.jsxs("div",{className:`${ge.modelItem} ${g?ge.modelItemExcluded:""}`,onClick:()=>{f(p.id)},title:g?e("auth_files.models_excluded_hint",{defaultValue:"此 OAuth 模型已被禁用"}):e("common.copy",{defaultValue:"点击复制"}),children:[h.jsx("span",{className:ge.modelId,children:p.id}),p.display_name&&p.display_name!==p.id&&h.jsx("span",{className:ge.modelDisplayName,children:p.display_name}),p.type&&h.jsx("span",{className:ge.modelType,children:p.type}),g&&h.jsx("span",{className:ge.modelExcludedBadge,children:e("auth_files.models_excluded_badge",{defaultValue:"已禁用"})})]},p.id)})})})}function loe(t){const{t:e}=nt(),{disableControls:n,editor:i,updatedText:s,dirty:a,onClose:o,onCopyText:r,onSave:c,onChange:d}=t,p=(g=>{if(!g)return"";try{return JSON.stringify(JSON.parse(g),null,2)}catch{return g}})(s);return h.jsx(Ss,{open:!!i,onClose:o,closeDisabled:i?.saving===!0,width:720,title:i?.fileName?e("auth_files.auth_field_editor_title",{name:i.fileName}):e("auth_files.prefix_proxy_button"),footer:h.jsxs(h.Fragment,{children:[h.jsx(he,{variant:"secondary",onClick:o,disabled:i?.saving===!0,children:e(a?"common.cancel":"common.close")}),h.jsx(he,{variant:"secondary",onClick:()=>{s&&r(s)},disabled:i?.saving===!0||!s,children:e("common.copy")}),h.jsx(he,{onClick:c,loading:i?.saving===!0,disabled:n||i?.saving===!0||!a||!i?.json,children:e("common.save")})]}),children:i&&h.jsx("div",{className:ge.prefixProxyEditor,children:i.loading?h.jsxs("div",{className:ge.prefixProxyLoading,children:[h.jsx(Fc,{size:14}),h.jsx("span",{children:e("auth_files.prefix_proxy_loading")})]}):h.jsxs(h.Fragment,{children:[i.error&&h.jsx("div",{className:ge.prefixProxyError,children:i.error}),h.jsxs("div",{className:ge.prefixProxyJsonWrapper,children:[h.jsx("label",{className:ge.prefixProxyLabel,children:e("auth_files.prefix_proxy_info_label")}),h.jsx("textarea",{className:ge.prefixProxyTextarea,rows:8,readOnly:!0,value:i.fileInfoText})]}),h.jsxs("div",{className:ge.prefixProxyJsonWrapper,children:[h.jsx("label",{className:ge.prefixProxyLabel,children:e("auth_files.prefix_proxy_source_label")}),h.jsx("textarea",{className:ge.prefixProxyTextarea,rows:10,readOnly:!0,value:p})]}),h.jsxs("div",{className:ge.prefixProxyFields,children:[h.jsx(lt,{label:e("auth_files.prefix_label"),value:i.prefix,disabled:n||i.saving||!i.json,onChange:g=>d("prefix",g.target.value)}),h.jsx(lt,{label:e("auth_files.proxy_url_label"),value:i.proxyUrl,placeholder:e("auth_files.proxy_url_placeholder"),disabled:n||i.saving||!i.json,onChange:g=>d("proxyUrl",g.target.value)}),h.jsx(lt,{label:e("auth_files.priority_label"),value:i.priority,placeholder:e("auth_files.priority_placeholder"),hint:e("auth_files.priority_hint"),disabled:n||i.saving||!i.json,onChange:g=>d("priority",g.target.value)}),h.jsxs("div",{className:"form-group",children:[h.jsx("label",{children:e("auth_files.excluded_models_label")}),h.jsx("textarea",{className:"input",value:i.excludedModelsText,placeholder:e("auth_files.excluded_models_placeholder"),rows:4,disabled:n||i.saving||!i.json,onChange:g=>d("excludedModelsText",g.target.value)}),h.jsx("div",{className:"hint",children:e("auth_files.excluded_models_hint")})]}),h.jsx(lt,{label:e("auth_files.disable_cooling_label"),value:i.disableCooling,placeholder:e("auth_files.disable_cooling_placeholder"),hint:e("auth_files.disable_cooling_hint"),disabled:n||i.saving||!i.json,onChange:g=>d("disableCooling",g.target.value)}),h.jsx(lt,{label:e("auth_files.note_label"),value:i.note,placeholder:e("auth_files.note_placeholder"),hint:e("auth_files.note_hint"),disabled:n||i.saving||!i.json,onChange:g=>d("note",g.target.value)}),i.isCodexFile&&h.jsxs("div",{className:"form-group",children:[h.jsx("label",{children:e("ai_providers.codex_websockets_label")}),h.jsx(xi,{checked:!!i.websockets,disabled:n||i.saving||!i.json,ariaLabel:e("ai_providers.codex_websockets_label"),onChange:g=>d("websockets",g)}),h.jsx("div",{className:"hint",children:e("ai_providers.codex_websockets_hint")})]})]})]})})})}function coe(t){const{t:e}=nt(),{disableControls:n,excludedError:i,excluded:s,onAdd:a,onEdit:o,onDelete:r}=t;return h.jsx(jt,{title:e("oauth_excluded.title"),extra:h.jsx(he,{size:"sm",onClick:a,disabled:n||i==="unsupported",children:e("oauth_excluded.add")}),children:i==="unsupported"?h.jsx(os,{title:e("oauth_excluded.upgrade_required_title"),description:e("oauth_excluded.upgrade_required_desc")}):Object.keys(s).length===0?h.jsx(os,{title:e("oauth_excluded.list_empty_all")}):h.jsx("div",{className:ge.excludedList,children:Object.entries(s).map(([c,d])=>h.jsxs("div",{className:ge.excludedItem,children:[h.jsxs("div",{className:ge.excludedInfo,children:[h.jsx("div",{className:ge.excludedProvider,children:c}),h.jsx("div",{className:ge.excludedModels,children:d?.length?e("oauth_excluded.model_count",{count:d.length}):e("oauth_excluded.no_models")})]}),h.jsxs("div",{className:ge.excludedActions,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>o(c),children:e("common.edit")}),h.jsx(he,{variant:"danger",size:"sm",onClick:()=>r(c),children:e("oauth_excluded.delete")})]})]},c))})})}const uoe="ModelMappingDiagram-module__scrollContainer___CVtMl",doe="ModelMappingDiagram-module__tapHint___WVg9j",hoe="ModelMappingDiagram-module__container___5GMeJ",foe="ModelMappingDiagram-module__connections___-pgzq",moe="ModelMappingDiagram-module__column___Guf-v",poe="ModelMappingDiagram-module__providers___n0NN6",goe="ModelMappingDiagram-module__sources___N646E",_oe="ModelMappingDiagram-module__aliases___zg5ma",yoe="ModelMappingDiagram-module__columnHeader___QAC6y",boe="ModelMappingDiagram-module__item___KBTKp",voe="ModelMappingDiagram-module__dropTarget___dAYPB",xoe="ModelMappingDiagram-module__selected___r3Gyz",Soe="ModelMappingDiagram-module__providerItem___4PZQM",woe="ModelMappingDiagram-module__providerLabel___E2vNu",koe="ModelMappingDiagram-module__collapseBtn___RXanB",Coe="ModelMappingDiagram-module__chevronDown___AP7zK",Aoe="ModelMappingDiagram-module__chevronRight___bbMVy",Noe="ModelMappingDiagram-module__providerGroup___5JNQu",Toe="ModelMappingDiagram-module__sourceItem___TjDG6",Moe="ModelMappingDiagram-module__aliasItem___h6w7D",Loe="ModelMappingDiagram-module__dragging___lhx9y",Ooe="ModelMappingDiagram-module__dot___AOWIN",Poe="ModelMappingDiagram-module__dotLeft___BKXAm",Eoe="ModelMappingDiagram-module__itemName___MjfSv",joe="ModelMappingDiagram-module__itemCount___B-gtl",Roe="ModelMappingDiagram-module__contextMenu___VHX-s",Doe="ModelMappingDiagram-module__menuItem___e-LvI",Foe="ModelMappingDiagram-module__danger___klXxM",Ioe="ModelMappingDiagram-module__menuDivider___XtoCo",Boe="ModelMappingDiagram-module__settingsEmpty___N0gFF",Uoe="ModelMappingDiagram-module__settingsList___ovuWo",qoe="ModelMappingDiagram-module__settingsRow___wH-TW",zoe="ModelMappingDiagram-module__settingsNames___QDn9j",Koe="ModelMappingDiagram-module__settingsSource___Hz9zo",Voe="ModelMappingDiagram-module__settingsAlias___Ov9zt",Hoe="ModelMappingDiagram-module__settingsArrow___SKvFd",Woe="ModelMappingDiagram-module__settingsActions___PYXMU",Goe="ModelMappingDiagram-module__settingsLabel___R--i-",$oe="ModelMappingDiagram-module__settingsDelete___PDG7z",et={scrollContainer:uoe,tapHint:doe,container:hoe,connections:foe,column:moe,providers:poe,sources:goe,aliases:_oe,columnHeader:yoe,item:boe,dropTarget:voe,selected:xoe,providerItem:Soe,providerLabel:woe,collapseBtn:koe,chevronDown:Coe,chevronRight:Aoe,providerGroup:Noe,sourceItem:Toe,aliasItem:Moe,dragging:Loe,dot:Ooe,dotLeft:Poe,itemName:Eoe,itemCount:joe,contextMenu:Roe,menuItem:Doe,danger:Foe,menuDivider:Ioe,settingsEmpty:Boe,settingsList:Uoe,settingsRow:qoe,settingsNames:zoe,settingsSource:Koe,settingsAlias:Voe,settingsArrow:Hoe,settingsActions:Woe,settingsLabel:Goe,settingsDelete:$oe};function Xoe({providerNodes:t,collapsedProviders:e,getProviderColor:n,providerGroupHeights:i={},providerRefs:s,onToggleCollapse:a,onContextMenu:o,label:r,expandLabel:c,collapseLabel:d}){return h.jsxs("div",{className:`${et.column} ${et.providers}`,onContextMenu:f=>{f.preventDefault(),f.stopPropagation(),o(f,"background")},children:[h.jsx("div",{className:et.columnHeader,children:r}),t.map(({provider:f,sources:p})=>{const g=e.has(f),y=g?void 0:i[f];return h.jsx("div",{className:et.providerGroup,style:y?{height:y}:void 0,children:h.jsxs("div",{ref:_=>{_?s.current?.set(f,_):s.current?.delete(f)},className:`${et.item} ${et.providerItem}`,style:{borderLeftColor:n(f)},onContextMenu:_=>{_.preventDefault(),_.stopPropagation(),o(_,"provider",f)},children:[h.jsx("button",{type:"button",className:et.collapseBtn,onClick:()=>a(f),"aria-label":g?c:d,title:g?c:d,children:h.jsx("span",{className:g?et.chevronRight:et.chevronDown})}),h.jsx("span",{className:et.providerLabel,style:{color:n(f)},children:f}),h.jsx("span",{className:et.itemCount,children:p.length})]})},f)})]})}function Qoe({providerNodes:t,collapsedProviders:e,sourceRefs:n,getProviderColor:i,selectedSourceId:s,onSelectSource:a,draggedSource:o,dropTargetSource:r,draggable:c,onDragStart:d,onDragEnd:f,onDragOver:p,onDragLeave:g,onDrop:y,onContextMenu:_,label:v}){return h.jsxs("div",{className:`${et.column} ${et.sources}`,onContextMenu:x=>{x.preventDefault(),x.stopPropagation(),_(x,"background")},children:[h.jsx("div",{className:et.columnHeader,children:v}),t.flatMap(({provider:x,sources:k})=>e.has(x)?[]:k.map(C=>h.jsxs("div",{ref:N=>{N?n.current?.set(C.id,N):n.current?.delete(C.id)},className:`${et.item} ${et.sourceItem} ${o?.id===C.id?et.dragging:""} ${r===C.id?et.dropTarget:""} ${s===C.id?et.selected:""}`,onClick:()=>a?.(C),draggable:c,onDragStart:N=>d(N,C),onDragEnd:f,onDragOver:N=>p(N,C),onDragLeave:g,onDrop:N=>y(N,C),onContextMenu:N=>{N.preventDefault(),N.stopPropagation(),_(N,"source",C.id)},children:[h.jsx("span",{className:et.itemName,title:C.name,children:C.name}),h.jsx("div",{className:et.dot,style:{background:i(C.provider),opacity:C.aliases.length>0?1:.3}})]},C.id)))]})}function Yoe({aliasNodes:t,aliasRefs:e,dropTargetAlias:n,draggedAlias:i,selectedAlias:s,onSelectAlias:a,draggable:o,onDragStart:r,onDragEnd:c,onDragOver:d,onDragLeave:f,onDrop:p,onContextMenu:g,label:y}){return h.jsxs("div",{className:`${et.column} ${et.aliases}`,onContextMenu:_=>{_.preventDefault(),_.stopPropagation(),g(_,"background")},children:[h.jsx("div",{className:et.columnHeader,children:y}),t.map(_=>h.jsxs("div",{ref:v=>{v?e.current?.set(_.id,v):e.current?.delete(_.id)},className:`${et.item} ${et.aliasItem} ${n===_.alias?et.dropTarget:""} ${i===_.alias?et.dragging:""} ${s===_.alias?et.selected:""}`,onClick:()=>a?.(_.alias),draggable:o,onDragStart:v=>r(v,_.alias),onDragEnd:c,onDragOver:v=>d(v,_.alias),onDragLeave:f,onDrop:v=>p(v,_.alias),onContextMenu:v=>{v.preventDefault(),v.stopPropagation(),g(v,"alias",_.alias)},children:[h.jsx("div",{className:`${et.dot} ${et.dotLeft}`}),h.jsx("span",{className:et.itemName,title:_.alias,children:_.alias}),h.jsx("span",{className:et.itemCount,children:_.sources.length})]},_.id))]})}function Joe({contextMenu:t,t:e,onRequestClose:n,onAddAlias:i,onRenameAlias:s,onOpenAliasSettings:a,onDeleteAlias:o,onEditProvider:r,onDeleteProvider:c,onOpenSourceSettings:d}){const f=S.useRef(null);if(S.useEffect(()=>{if(!t)return;const k=C=>{f.current?.contains(C.target)||n()};return document.addEventListener("mousedown",k),()=>document.removeEventListener("mousedown",k)},[t,n]),!t)return null;const{type:p,data:g}=t,y=()=>h.jsx("div",{className:et.menuItem,onClick:i,children:h.jsx("span",{children:e("oauth_model_alias.diagram_add_alias")})}),_=()=>g?h.jsxs(h.Fragment,{children:[h.jsx("div",{className:et.menuItem,onClick:()=>s(g),children:h.jsx("span",{children:e("oauth_model_alias.diagram_rename")})}),h.jsx("div",{className:et.menuItem,onClick:()=>a(g),children:h.jsx("span",{children:e("oauth_model_alias.diagram_settings")})}),h.jsx("div",{className:et.menuDivider}),h.jsx("div",{className:`${et.menuItem} ${et.danger}`,onClick:()=>o(g),children:h.jsx("span",{children:e("oauth_model_alias.diagram_delete_alias")})})]}):null,v=()=>g?h.jsxs(h.Fragment,{children:[h.jsx("div",{className:et.menuItem,onClick:()=>r(g),children:h.jsx("span",{children:e("common.edit")})}),h.jsx("div",{className:et.menuDivider}),h.jsx("div",{className:`${et.menuItem} ${et.danger}`,onClick:()=>c(g),children:h.jsx("span",{children:e("oauth_model_alias.delete")})})]}):null,x=()=>g?h.jsx("div",{className:et.menuItem,onClick:()=>d(g),children:h.jsx("span",{children:e("oauth_model_alias.diagram_settings")})}):null;return Po.createPortal(h.jsxs("div",{ref:f,className:et.contextMenu,style:{top:t.y,left:t.x},onClick:k=>k.stopPropagation(),children:[p==="background"&&y(),p==="alias"&&_(),p==="provider"&&v(),p==="source"&&x()]}),document.body)}function Zoe({open:t,t:e,value:n,error:i,onChange:s,onClose:a,onSubmit:o}){return h.jsx(Ss,{open:t,onClose:a,title:e("oauth_model_alias.diagram_rename_alias_title"),width:400,footer:h.jsxs(h.Fragment,{children:[h.jsx(he,{variant:"secondary",onClick:a,children:e("common.cancel")}),h.jsx(he,{onClick:o,children:e("oauth_model_alias.diagram_rename_btn")})]}),children:h.jsx(lt,{label:e("oauth_model_alias.diagram_rename_alias_label"),value:n,onChange:r=>s(r.target.value),onKeyDown:r=>{r.key==="Enter"&&o()},error:i,placeholder:e("oauth_model_alias.diagram_rename_placeholder"),autoFocus:!0})})}function ere({open:t,t:e,value:n,error:i,onChange:s,onClose:a,onSubmit:o}){return h.jsx(Ss,{open:t,onClose:a,title:e("oauth_model_alias.diagram_add_alias_title"),width:400,footer:h.jsxs(h.Fragment,{children:[h.jsx(he,{variant:"secondary",onClick:a,children:e("common.cancel")}),h.jsx(he,{onClick:o,children:e("oauth_model_alias.diagram_add_btn")})]}),children:h.jsx(lt,{label:e("oauth_model_alias.diagram_add_alias_label"),value:n,onChange:r=>s(r.target.value),onKeyDown:r=>{r.key==="Enter"&&o()},error:i,placeholder:e("oauth_model_alias.diagram_add_placeholder"),autoFocus:!0})})}function tre({open:t,t:e,alias:n,aliasNodes:i,onClose:s,onToggleFork:a,onUnlink:o}){return h.jsx(Ss,{open:t,onClose:s,title:e("oauth_model_alias.diagram_settings_title",{alias:n??""}),width:720,footer:h.jsx(he,{variant:"secondary",onClick:s,children:e("common.close")}),children:n?(()=>{const r=i.find(c=>c.alias===n);return!r||r.sources.length===0?h.jsx("div",{className:et.settingsEmpty,children:e("oauth_model_alias.diagram_settings_empty")}):h.jsx("div",{className:et.settingsList,children:r.sources.map(c=>{const f=c.aliases.find(p=>p.alias===n)?.fork===!0;return h.jsxs("div",{className:et.settingsRow,children:[h.jsxs("div",{className:et.settingsNames,children:[h.jsx("span",{className:et.settingsSource,children:c.name}),h.jsx("span",{className:et.settingsArrow,children:"→"}),h.jsx("span",{className:et.settingsAlias,children:n})]}),h.jsxs("div",{className:et.settingsActions,children:[h.jsx("span",{className:et.settingsLabel,children:e("oauth_model_alias.alias_fork_label")}),h.jsx(xi,{checked:f,onChange:p=>a(c.provider,c.name,n,p),ariaLabel:e("oauth_model_alias.alias_fork_label")}),h.jsx("button",{type:"button",className:et.settingsDelete,onClick:()=>o(c.provider,c.name,n),"aria-label":e("oauth_model_alias.diagram_delete_link",{provider:c.provider,name:c.name}),title:e("oauth_model_alias.diagram_delete_link",{provider:c.provider,name:c.name}),children:h.jsx(Oy,{size:14})})]})]},c.id)})})})():null})}function nre({open:t,t:e,source:n,onClose:i,onToggleFork:s,onUnlink:a}){return h.jsx(Ss,{open:t,onClose:i,title:e("oauth_model_alias.diagram_settings_source_title"),width:720,footer:h.jsx(he,{variant:"secondary",onClick:i,children:e("common.close")}),children:n?n.aliases.length===0?h.jsx("div",{className:et.settingsEmpty,children:e("oauth_model_alias.diagram_settings_empty")}):h.jsx("div",{className:et.settingsList,children:n.aliases.map(o=>h.jsxs("div",{className:et.settingsRow,children:[h.jsxs("div",{className:et.settingsNames,children:[h.jsx("span",{className:et.settingsSource,children:n.name}),h.jsx("span",{className:et.settingsArrow,children:"→"}),h.jsx("span",{className:et.settingsAlias,children:o.alias})]}),h.jsxs("div",{className:et.settingsActions,children:[h.jsx("span",{className:et.settingsLabel,children:e("oauth_model_alias.alias_fork_label")}),h.jsx(xi,{checked:o.fork===!0,onChange:r=>s(n.provider,n.name,o.alias,r),ariaLabel:e("oauth_model_alias.alias_fork_label")}),h.jsx("button",{type:"button",className:et.settingsDelete,onClick:()=>a(n.provider,n.name,o.alias),"aria-label":e("oauth_model_alias.diagram_delete_link",{provider:n.provider,name:n.name}),title:e("oauth_model_alias.diagram_delete_link",{provider:n.provider,name:n.name}),children:h.jsx(Oy,{size:14})})]})]},`${n.id}-${o.alias}`))}):null})}const VO=["#8b8680","#10b981","#f59e0b","#c65746","#8b5cf6","#ec4899","#06b6d4","#84cc16"];function f1(t){const e=t.split("").reduce((n,i)=>n+i.charCodeAt(0),0);return VO[e%VO.length]}const ire=S.forwardRef(function({modelAlias:e,allProviderModels:n={},onUpdate:i,onDeleteLink:s,onToggleFork:a,onRenameAlias:o,onDeleteAlias:r,onEditProvider:c,onDeleteProvider:d,className:f},p){const{t:g}=nt(),_=Aa(Le=>Le.resolvedTheme)==="dark",v=S.useMemo(()=>typeof window>"u"||typeof window.matchMedia>"u"?!1:window.matchMedia("(any-pointer: coarse)").matches&&!window.matchMedia("(any-pointer: fine)").matches,[]),x=S.useRef(null),[k,C]=S.useState([]),[N,L]=S.useState(null),[M,O]=S.useState(null),[T,P]=S.useState(null),[E,R]=S.useState(null),[q,I]=S.useState(null),[Y,X]=S.useState(null),[K,B]=S.useState([]),[H,z]=S.useState(null),[Q,W]=S.useState(new Set),[D,U]=S.useState({}),[$,te]=S.useState(null),[ie,F]=S.useState(""),[ee,J]=S.useState(""),[re,fe]=S.useState(!1),[me,de]=S.useState(""),[ne,Be]=S.useState(""),[Ke,Te]=S.useState(null),[Qe,at]=S.useState(null),{aliasNodes:Ce,providerNodes:ft}=S.useMemo(()=>{const Le=new Map,it=new Set;Object.entries(e).forEach(([Z,oe])=>{(oe??[]).forEach(_e=>{const Pe=(_e?.name||"").trim(),De=(_e?.alias||"").trim();if(!Pe||!De)return;const Je=`${Z.toLowerCase()}::${Pe.toLowerCase()}`;Le.has(Je)||Le.set(Je,{provider:Z,name:Pe,aliases:new Map}),Le.get(Je).aliases.set(De,_e?.fork===!0),it.add(De)})}),Object.entries(n).forEach(([Z,oe])=>{(oe??[]).forEach(_e=>{const Pe=(_e.id||"").trim();if(!Pe)return;const De=`${Z.toLowerCase()}::${Pe.toLowerCase()}`;Le.has(De)||Le.set(De,{provider:Z,name:Pe,aliases:new Map})})});const bt=Array.from(Le.entries()).map(([Z,oe])=>({id:Z,provider:oe.provider,name:oe.name,aliases:Array.from(oe.aliases.entries()).map(([_e,Pe])=>({alias:_e,fork:Pe}))})).sort((Z,oe)=>Z.provider!==oe.provider?Z.provider.localeCompare(oe.provider):Z.name.localeCompare(oe.name));K.forEach(Z=>it.add(Z));const ti=Array.from(it).map(Z=>({id:Z,alias:Z,sources:bt.filter(oe=>oe.aliases.some(_e=>_e.alias===Z))})).sort((Z,oe)=>oe.sources.length!==Z.sources.length?oe.sources.length-Z.sources.length:Z.alias.localeCompare(oe.alias)),Ln=new Map;bt.forEach(Z=>{Ln.has(Z.provider)||Ln.set(Z.provider,[]),Ln.get(Z.provider).push(Z)});const ui=Array.from(Ln.entries()).map(([Z,oe])=>({provider:Z,sources:oe})).sort((Z,oe)=>Z.provider.localeCompare(oe.provider));return{aliasNodes:ti,providerNodes:ui}},[e,n,K]),mt=S.useRef(new Map),kt=S.useRef(new Map),Pt=S.useRef(new Map),wt=Le=>{W(it=>{const bt=new Set(it);return bt.has(Le)?bt.delete(Le):bt.add(Le),bt})},Tt=S.useCallback(()=>{if(!x.current)return;const Le=x.current.getBoundingClientRect(),it=[],bt={},ti=(Ln,ui,Z,oe)=>{const _e=Ln+(Z-Ln)*.5,Pe=Z-(Z-Ln)*.5;return`M ${Ln} ${ui} C ${_e} ${ui}, ${Pe} ${oe}, ${Z} ${oe}`};ft.forEach(({provider:Ln,sources:ui})=>{if(Q.has(Ln))return;if(ui.length>0){const ze=kt.current.get(ui[0].id),Fe=kt.current.get(ui[ui.length-1].id);if(ze&&Fe){const Ve=Math.max(0,Math.round(Fe.getBoundingClientRect().bottom-ze.getBoundingClientRect().top));Ve>0&&(bt[Ln]=Ve)}}const oe=mt.current.get(Ln);if(!oe)return;const _e=oe.getBoundingClientRect(),Pe=_e.right-Le.left,De=_e.top+_e.height/2-Le.top,Je=f1(Ln);ui.forEach(ze=>{const Fe=kt.current.get(ze.id);if(!Fe)return;const Ve=Fe.getBoundingClientRect(),st=Ve.left-Le.left,ht=Ve.top+Ve.height/2-Le.top;it.push({id:`provider-${Ln}-source-${ze.id}`,path:ti(Pe,De,st,ht),color:Je})}),ui.forEach(ze=>{!ze.aliases||ze.aliases.length===0||ze.aliases.forEach(Fe=>{const Ve=kt.current.get(ze.id),st=Pt.current.get(Fe.alias);if(!Ve||!st)return;const ht=Ve.getBoundingClientRect(),ct=st.getBoundingClientRect(),qt=ht.right-Le.left,zt=ht.top+ht.height/2-Le.top,pn=ct.left-Le.left,On=ct.top+ct.height/2-Le.top;it.push({id:`${ze.id}-${Fe.alias}`,path:ti(qt,zt,pn,On),color:Je})})})}),C(it),U(Ln=>{const ui=Object.keys(Ln),Z=Object.keys(bt);if(ui.length!==Z.length)return bt;for(const oe of Z)if(!(oe in Ln)||Ln[oe]!==bt[oe])return bt;return Ln})},[ft,Q]);S.useImperativeHandle(p,()=>({collapseAll:()=>W(new Set(ft.map(Le=>Le.provider))),refreshLayout:()=>Tt()}),[ft,Tt]),S.useLayoutEffect(()=>{const Le=requestAnimationFrame(Tt);return window.addEventListener("resize",Tt),()=>{cancelAnimationFrame(Le),window.removeEventListener("resize",Tt)}},[Tt,Ce]),S.useLayoutEffect(()=>{const Le=requestAnimationFrame(Tt);return()=>cancelAnimationFrame(Le)},[D,Tt]),S.useEffect(()=>{if(!x.current||typeof ResizeObserver>"u")return;const Le=new ResizeObserver(()=>Tt());return Le.observe(x.current),()=>Le.disconnect()},[Tt]);const on=(Le,it)=>{I(null),X(null),L(it),Le.dataTransfer.setData("text/plain",it.id),Le.dataTransfer.effectAllowed="link"},ce=(Le,it)=>{!N||N.aliases.some(bt=>bt.alias===it)||(Le.preventDefault(),Le.dataTransfer.dropEffect="link",P(it))},ye=()=>{P(null)},Ue=(Le,it)=>{Le.preventDefault(),N&&!N.aliases.some(bt=>bt.alias===it)&&i&&i(N.provider,N.name,it),L(null),P(null)},Me=(Le,it)=>{I(null),X(null),O(it),Le.dataTransfer.setData("text/plain",it),Le.dataTransfer.effectAllowed="link"},Ye=(Le,it)=>{!M||it.aliases.some(bt=>bt.alias===M)||(Le.preventDefault(),Le.dataTransfer.dropEffect="link",R(it.id))},_t=()=>{R(null)},pt=(Le,it)=>{Le.preventDefault(),M&&!it.aliases.some(bt=>bt.alias===M)&&i&&i(it.provider,it.name,M),O(null),R(null)},ot=(Le,it,bt)=>{Le.preventDefault(),Le.stopPropagation(),z({x:Le.clientX,y:Le.clientY,type:it,data:bt})},ue=()=>z(null),qe=S.useCallback(Le=>{if(!Le)return null;for(const{sources:it}of ft){const bt=it.find(ti=>ti.id===Le);if(bt)return bt}return null},[ft]),Ut=Le=>{if(i){if(q===Le.id){I(null);return}if(Y){i(Le.provider,Le.name,Y),I(null),X(null);return}I(Le.id),X(null)}},Ti=Le=>{if(i){if(Y===Le){X(null);return}if(q){const it=qe(q);it&&i(it.provider,it.name,Le),I(null),X(null);return}X(Le),I(null)}},ei=(Le,it,bt)=>{s&&s(Le,it,bt)},Rn=(Le,it,bt,ti)=>{a&&a(Le,it,bt,ti)},Xn=()=>{ue(),fe(!0),de(""),Be("")},un=()=>{const Le=me.trim();if(!Le){Be(g("oauth_model_alias.diagram_please_enter_alias"));return}if(Ce.some(it=>it.alias===Le)){Be(g("oauth_model_alias.diagram_alias_exists"));return}B(it=>[...it,Le]),fe(!1)},Di=Le=>{ue(),te({oldAlias:Le}),F(Le),J("")},ds=()=>{const Le=ie.trim();if(!Le){J(g("oauth_model_alias.diagram_please_enter_alias"));return}if(Le===$?.oldAlias){te(null);return}if(Ce.some(it=>it.alias===Le)){J(g("oauth_model_alias.diagram_alias_exists"));return}o&&$&&o($.oldAlias,Le),K.includes($?.oldAlias??"")&&B(it=>it.map(bt=>bt===$?.oldAlias?Le:bt)),te(null)},ws=Le=>{ue();const it=Ce.find(bt=>bt.alias===Le);it&&(it.sources.length===0?B(bt=>bt.filter(ti=>ti!==Le)):r&&r(Le))};return h.jsxs("div",{className:[et.scrollContainer,f].filter(Boolean).join(" "),children:[v&&i&&h.jsx("div",{className:et.tapHint,children:g("oauth_model_alias.diagram_tap_hint")}),h.jsxs("div",{className:et.container,ref:x,onContextMenu:Le=>{Le.preventDefault(),Le.stopPropagation(),ot(Le,"background")},children:[h.jsx("svg",{className:et.connections,children:k.map(Le=>h.jsx("path",{d:Le.path,stroke:Le.color,strokeOpacity:_?.4:.3},Le.id))}),h.jsx(Xoe,{providerNodes:ft,collapsedProviders:Q,getProviderColor:f1,providerGroupHeights:D,providerRefs:mt,onToggleCollapse:wt,onContextMenu:(Le,it,bt)=>ot(Le,it,bt),label:g("oauth_model_alias.diagram_providers"),expandLabel:g("oauth_model_alias.diagram_expand"),collapseLabel:g("oauth_model_alias.diagram_collapse")}),h.jsx(Qoe,{providerNodes:ft,collapsedProviders:Q,sourceRefs:kt,getProviderColor:f1,selectedSourceId:v?q:null,onSelectSource:v?Ut:void 0,draggedSource:N,dropTargetSource:E,draggable:!!i,onDragStart:on,onDragEnd:()=>{L(null),P(null)},onDragOver:Ye,onDragLeave:_t,onDrop:pt,onContextMenu:(Le,it,bt)=>ot(Le,it,bt),label:g("oauth_model_alias.diagram_source_models")}),h.jsx(Yoe,{aliasNodes:Ce,aliasRefs:Pt,dropTargetAlias:T,draggedAlias:M,selectedAlias:v?Y:null,onSelectAlias:v?Ti:void 0,draggable:!!i,onDragStart:Me,onDragEnd:()=>{O(null),R(null)},onDragOver:ce,onDragLeave:ye,onDrop:Ue,onContextMenu:(Le,it,bt)=>ot(Le,it,bt),label:g("oauth_model_alias.diagram_aliases")})]}),h.jsx(Joe,{contextMenu:H,t:g,onRequestClose:()=>z(null),onAddAlias:Xn,onRenameAlias:Di,onOpenAliasSettings:Le=>{z(null),Te(Le)},onDeleteAlias:ws,onEditProvider:Le=>{z(null),c?.(Le)},onDeleteProvider:Le=>{z(null),d?.(Le)},onOpenSourceSettings:Le=>{z(null),at(Le)}}),h.jsx(Zoe,{open:!!$,t:g,value:ie,error:ee,onChange:Le=>{F(Le),J("")},onClose:()=>te(null),onSubmit:ds}),h.jsx(ere,{open:re,t:g,value:me,error:ne,onChange:Le=>{de(Le),Be("")},onClose:()=>fe(!1),onSubmit:un}),h.jsx(tre,{open:!!Ke,t:g,alias:Ke,aliasNodes:Ce,onClose:()=>Te(null),onToggleFork:Rn,onUnlink:ei}),h.jsx(nre,{open:!!Qe,t:g,source:qe(Qe),onClose:()=>at(null),onToggleFork:Rn,onUnlink:ei})]})});function sre(t){const{t:e}=nt(),n=S.useRef(null),{disableControls:i,viewMode:s,onViewModeChange:a,onAdd:o,onEditProvider:r,onDeleteProvider:c,modelAliasError:d,modelAlias:f,allProviderModels:p,onUpdate:g,onDeleteLink:y,onToggleFork:_,onRenameAlias:v,onDeleteAlias:x}=t;return h.jsx(jt,{title:e("oauth_model_alias.title"),extra:h.jsxs("div",{className:ge.cardExtraButtons,children:[h.jsxs("div",{className:ge.viewModeSwitch,children:[h.jsx(he,{variant:s==="list"?"secondary":"ghost",size:"sm",onClick:()=>a("list"),disabled:i||d==="unsupported",children:e("oauth_model_alias.view_mode_list")}),h.jsx(he,{variant:s==="diagram"?"secondary":"ghost",size:"sm",onClick:()=>a("diagram"),disabled:i||d==="unsupported",children:e("oauth_model_alias.view_mode_diagram")})]}),h.jsx(he,{size:"sm",onClick:o,disabled:i||d==="unsupported",children:e("oauth_model_alias.add")})]}),children:d==="unsupported"?h.jsx(os,{title:e("oauth_model_alias.upgrade_required_title"),description:e("oauth_model_alias.upgrade_required_desc")}):s==="diagram"?Object.keys(f).length===0?h.jsx(os,{title:e("oauth_model_alias.list_empty_all")}):h.jsxs("div",{className:ge.aliasChartSection,children:[h.jsxs("div",{className:ge.aliasChartHeader,children:[h.jsx("h4",{className:ge.aliasChartTitle,children:e("oauth_model_alias.chart_title")}),h.jsx(he,{variant:"ghost",size:"sm",onClick:()=>n.current?.collapseAll(),disabled:i||d==="unsupported",title:e("oauth_model_alias.diagram_collapse"),"aria-label":e("oauth_model_alias.diagram_collapse"),children:h.jsx(jw,{size:16})})]}),h.jsx(ire,{ref:n,modelAlias:f,allProviderModels:p,onUpdate:g,onDeleteLink:y,onToggleFork:_,onRenameAlias:v,onDeleteAlias:x,onEditProvider:r,onDeleteProvider:c,className:ge.aliasChart})]}):Object.keys(f).length===0?h.jsx(os,{title:e("oauth_model_alias.list_empty_all")}):h.jsx("div",{className:ge.excludedList,children:Object.entries(f).map(([k,C])=>h.jsxs("div",{className:ge.excludedItem,children:[h.jsxs("div",{className:ge.excludedInfo,children:[h.jsx("div",{className:ge.excludedProvider,children:k}),h.jsx("div",{className:ge.excludedModels,children:C?.length?e("oauth_model_alias.model_count",{count:C.length}):e("oauth_model_alias.no_models")})]}),h.jsxs("div",{className:ge.excludedActions,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>r(k),children:e("common.edit")}),h.jsx(he,{variant:"danger",size:"sm",onClick:()=>c(k),children:e("oauth_model_alias.delete")})]})]},k))})})}function wl({filename:t,blob:e,revokeDelayMs:n=1e3}){const i=window.URL.createObjectURL(e),s=document.createElement("a");s.href=i,s.download=t,s.rel="noopener",s.style.display="none",document.body.appendChild(s),s.click(),window.setTimeout(()=>{window.URL.revokeObjectURL(i),s.remove()},n)}function are(t){const{refreshKeyStats:e}=t,{t:n}=nt(),{showNotification:i,showConfirmation:s}=mn(),[a,o]=S.useState([]),[r,c]=S.useState(!0),[d,f]=S.useState(""),[p,g]=S.useState(!1),[y,_]=S.useState(null),[v,x]=S.useState(!1),[k,C]=S.useState({}),[N,L]=S.useState(!1),[M,O]=S.useState(new Set),T=S.useRef(null),P=S.useRef(!1),E=M.size,R=S.useCallback(ie=>{O(F=>{const ee=new Set(F);return ee.has(ie)?ee.delete(ie):ee.add(ie),ee})},[]),q=S.useCallback(ie=>{const F=ie.filter(ee=>!gl(ee)).map(ee=>ee.name);F.length!==0&&O(ee=>{const J=new Set(ee);return F.forEach(re=>J.add(re)),J})},[]),I=S.useCallback(ie=>{const F=ie.filter(ee=>!gl(ee)).map(ee=>ee.name);F.length!==0&&O(ee=>{const J=new Set(ee);return F.forEach(re=>{J.has(re)?J.delete(re):J.add(re)}),J})},[]),Y=S.useCallback(()=>{O(new Set)},[]),X=S.useCallback(ie=>{const F=Array.from(new Set(ie.map(J=>J.trim()).filter(Boolean)));if(F.length===0)return;const ee=new Set(F);o(J=>J.filter(re=>!ee.has(re.name))),O(J=>{if(J.size===0)return J;let re=!1;const fe=new Set;return J.forEach(me=>{ee.has(me)?re=!0:fe.add(me)}),re?fe:J})},[]);S.useEffect(()=>{if(M.size===0)return;const ie=new Set(a.map(F=>F.name));O(F=>{let ee=!1;const J=new Set;return F.forEach(re=>{ie.has(re)?J.add(re):ee=!0}),ee?J:F})},[a,M.size]);const K=S.useCallback(async()=>{c(!0),f("");try{const ie=await At.list();o(ie?.files||[])}catch(ie){const F=ie instanceof Error?ie.message:n("notification.refresh_failed");f(F)}finally{c(!1)}},[n]),B=S.useCallback(()=>{T.current?.click()},[]),H=S.useCallback(async ie=>{const F=ie.target.files;if(!F||F.length===0)return;const ee=Array.from(F),J=[],re=[],fe=[];if(ee.forEach(me=>{if(!me.name.endsWith(".json")){re.push(me.name);return}if(me.size>P0){fe.push(me.name);return}J.push(me)}),re.length>0&&i(n("auth_files.upload_error_json"),"error"),fe.length>0&&i(n("auth_files.upload_error_size",{maxSize:Ww(P0)}),"error"),J.length===0){ie.target.value="";return}g(!0);try{const me=await At.uploadFiles(J),de=me.uploaded;if(de>0){const ne=J.length>1?` (${de}/${J.length})`:"";i(`${n("auth_files.upload_success")}${ne}`,me.failed.length?"warning":"success"),await K(),await e()}if(me.failed.length>0){const ne=me.failed.map(Be=>`${Be.name}: ${Be.error}`).join("; ");i(`${n("notification.upload_failed")}: ${ne}`,"error")}}catch(me){const de=me instanceof Error?me.message:"Unknown error";i(`${n("notification.upload_failed")}: ${de}`,"error")}finally{g(!1),ie.target.value=""}},[K,e,i,n]),z=S.useCallback(ie=>{s({title:n("auth_files.delete_title",{defaultValue:"Delete File"}),message:`${n("auth_files.delete_confirm")} "${ie}" ?`,variant:"danger",confirmText:n("common.confirm"),onConfirm:async()=>{_(ie);try{const F=await At.deleteFile(ie);i(n("auth_files.delete_success"),"success"),X(F.files.length>0?F.files:[ie])}catch(F){const ee=F instanceof Error?F.message:"";i(`${n("notification.delete_failed")}: ${ee}`,"error")}finally{_(null)}}})},[X,s,i,n]),Q=S.useCallback(ie=>{const{filter:F,problemOnly:ee,onResetFilterToAll:J,onResetProblemOnly:re}=ie,fe=F!=="all",me=ee===!0,de=fe?Ju(n,F):n("auth_files.filter_all"),ne=me?fe?n("auth_files.delete_problem_filtered_confirm",{type:de}):n("auth_files.delete_problem_confirm"):fe?n("auth_files.delete_filtered_confirm",{type:de}):n("auth_files.delete_all_confirm");s({title:n("auth_files.delete_all_title",{defaultValue:"Delete All Files"}),message:ne,variant:"danger",confirmText:n("common.confirm"),onConfirm:async()=>{x(!0);try{if(!fe&&!me)await At.deleteAll(),i(n("auth_files.delete_all_success"),"success"),o(Be=>Be.filter(Ke=>gl(Ke))),Y();else{const Be=a.filter(at=>!(gl(at)||fe&&at.type!==F||me&&!f5(at)));if(Be.length===0){const at=me?fe?n("auth_files.delete_problem_filtered_none",{type:de}):n("auth_files.delete_problem_none"):n("auth_files.delete_filtered_none",{type:de});i(at,"info"),x(!1);return}const Ke=await At.deleteFiles(Be.map(at=>at.name)),Te=Ke.deleted,Qe=Ke.failed.length;X(Ke.files),Qe===0&&me?i(fe?n("auth_files.delete_problem_filtered_success",{count:Te,type:de}):n("auth_files.delete_problem_success",{count:Te}),"success"):Qe===0?i(n("auth_files.delete_filtered_success",{count:Te,type:de}),"success"):i(me?fe?n("auth_files.delete_problem_filtered_partial",{success:Te,failed:Qe,type:de}):n("auth_files.delete_problem_partial",{success:Te,failed:Qe}):n("auth_files.delete_filtered_partial",{success:Te,failed:Qe,type:de}),"warning"),fe&&J(),me&&re()}}catch(Be){const Ke=Be instanceof Error?Be.message:"";i(`${n("notification.delete_failed")}: ${Ke}`,"error")}finally{x(!1)}}})},[X,Y,a,s,i,n]),W=S.useCallback(async ie=>{try{const F=await Ie.getRaw(`/auth-files/download?name=${encodeURIComponent(ie)}`,{responseType:"blob"}),ee=new Blob([F.data]);wl({filename:ie,blob:ee}),i(n("auth_files.download_success"),"success")}catch(F){const ee=F instanceof Error?F.message:"";i(`${n("notification.download_failed")}: ${ee}`,"error")}},[i,n]),D=S.useCallback(async(ie,F)=>{const ee=ie.name,J=!F,re=ie.disabled===!0;C(fe=>({...fe,[ee]:!0})),o(fe=>fe.map(me=>me.name===ee?{...me,disabled:J}:me));try{const fe=await At.setStatus(ee,J);o(me=>me.map(de=>de.name===ee?{...de,disabled:fe.disabled}:de)),i(F?n("auth_files.status_enabled_success",{name:ee}):n("auth_files.status_disabled_success",{name:ee}),"success")}catch(fe){const me=fe instanceof Error?fe.message:"";o(de=>de.map(ne=>ne.name===ee?{...ne,disabled:re}:ne)),i(`${n("notification.update_failed")}: ${me}`,"error")}finally{C(fe=>{if(!fe[ee])return fe;const me={...fe};return delete me[ee],me})}},[i,n]),U=S.useCallback(async(ie,F)=>{if(P.current)return;const ee=Array.from(new Set(ie));if(ee.length===0||ee.some(de=>k[de]===!0))return;const J=new Map(a.filter(de=>ee.includes(de.name)).map(de=>[de.name,de.disabled===!0])),re=new Set(J.keys()),fe=Array.from(re);if(fe.length===0)return;const me=!F;P.current=!0,L(!0),C(de=>{const ne={...de};return fe.forEach(Be=>{ne[Be]=!0}),ne}),o(de=>de.map(ne=>re.has(ne.name)?{...ne,disabled:me}:ne));try{const de=await Promise.allSettled(fe.map(Qe=>At.setStatus(Qe,me)));let ne=0,Be=0;const Ke=new Set,Te=new Map;de.forEach((Qe,at)=>{const Ce=fe[at];Qe.status==="fulfilled"?(ne++,Te.set(Ce,Qe.value.disabled)):(Be++,Ke.add(Ce))}),o(Qe=>Qe.map(at=>Ke.has(at.name)?{...at,disabled:J.get(at.name)===!0}:Te.has(at.name)?{...at,disabled:Te.get(at.name)}:at)),Be===0?i(n("auth_files.batch_status_success",{count:ne}),"success"):i(n("auth_files.batch_status_partial",{success:ne,failed:Be}),"warning"),Y()}finally{P.current=!1,L(!1),C(de=>{const ne={...de};return fe.forEach(Be=>{delete ne[Be]}),ne})}},[Y,a,i,k,n]),$=S.useCallback(async ie=>{const F=Array.from(new Set(ie));if(F.length===0)return;let ee=0,J=0;for(const re of F)try{const fe=await Ie.getRaw(`/auth-files/download?name=${encodeURIComponent(re)}`,{responseType:"blob"}),me=new Blob([fe.data]);wl({filename:re,blob:me}),ee++}catch{J++}J===0?i(n("auth_files.batch_download_success",{count:ee}),"success"):i(n("auth_files.batch_download_partial",{success:ee,failed:J}),"warning")},[i,n]),te=S.useCallback(ie=>{const F=Array.from(new Set(ie));F.length!==0&&s({title:n("auth_files.batch_delete_title"),message:n("auth_files.batch_delete_confirm",{count:F.length}),variant:"danger",confirmText:n("common.confirm"),onConfirm:async()=>{try{const ee=await At.deleteFiles(F);X(ee.files),ee.failed.length===0?i(`${n("auth_files.delete_all_success")} (${ee.deleted})`,"success"):i(n("auth_files.delete_filtered_partial",{success:ee.deleted,failed:ee.failed.length,type:n("auth_files.filter_all")}),"warning")}catch(ee){const J=ee instanceof Error?ee.message:"";i(`${n("notification.delete_failed")}: ${J}`,"error")}}})},[X,s,i,n]);return{files:a,selectedFiles:M,selectionCount:E,loading:r,error:d,uploading:p,deleting:y,deletingAll:v,statusUpdating:k,batchStatusUpdating:N,fileInputRef:T,loadFiles:K,handleUploadClick:B,handleFileChange:H,handleDelete:z,handleDeleteAll:Q,handleDownload:W,handleStatusToggle:D,toggleSelect:R,selectAllVisible:q,invertVisibleSelection:I,deselectAll:Y,batchDownload:$,batchSetStatus:U,batchDelete:te}}function ore(){const{t}=nt(),e=mn(k=>k.showNotification),[n,i]=S.useState(!1),[s,a]=S.useState(!1),[o,r]=S.useState([]),[c,d]=S.useState(""),[f,p]=S.useState(""),[g,y]=S.useState(null),_=S.useRef(new Map),v=S.useCallback(()=>{i(!1)},[]),x=S.useCallback(async k=>{d(k.name),p(k.type||""),r([]),y(null),i(!0);const C=_.current.get(k.name);if(C){r(C),a(!1);return}a(!0);try{const N=await At.getModelsForAuthFile(k.name);_.current.set(k.name,N),r(N)}catch(N){const L=N instanceof Error?N.message:"";L.includes("404")||L.includes("not found")||L.includes("Not Found")?y("unsupported"):e(`${t("notification.load_failed")}: ${L}`,"error")}finally{a(!1)}},[e,t]);return{modelsModalOpen:n,modelsLoading:s,modelsList:o,modelsFileName:c,modelsFileType:f,modelsError:g,showModels:x,closeModelsModal:v}}function rre(t){const{viewMode:e,files:n}=t,{t:i}=nt(),{showNotification:s,showConfirmation:a}=mn(),[o,r]=S.useState({}),[c,d]=S.useState(null),[f,p]=S.useState({}),[g,y]=S.useState(null),[_,v]=S.useState({}),x=S.useRef(!1),k=S.useRef(!1),C=S.useMemo(()=>{const I=new Set;return Object.keys(f).forEach(Y=>{const X=Y.trim().toLowerCase();X&&I.add(X)}),n.forEach(Y=>{if(typeof Y.type=="string"){const X=Y.type.trim().toLowerCase();X&&I.add(X)}if(typeof Y.provider=="string"){const X=Y.provider.trim().toLowerCase();X&&I.add(X)}}),Array.from(I)},[n,f]);S.useEffect(()=>{if(e!=="diagram")return;let I=!1;return(async()=>{if(C.length===0){I||v({});return}const X=await Promise.all(C.map(async B=>{try{const H=await At.getModelDefinitions(B);return{provider:B,models:H}}catch{return{provider:B,models:[]}}}));if(I)return;const K={};X.forEach(({provider:B,models:H})=>{H.length>0&&(K[B]=H)}),v(K)})(),()=>{I=!0}},[C,e]);const N=S.useCallback(async()=>{try{const I=await At.getOauthExcludedModels();x.current=!1,r(I||{}),d(null)}catch(I){if((typeof I=="object"&&I!==null&&"status"in I?I.status:void 0)===404){r({}),d("unsupported"),x.current||(x.current=!0,s(i("oauth_excluded.upgrade_required"),"warning"));return}}},[s,i]),L=S.useCallback(async()=>{try{const I=await At.getOauthModelAlias();k.current=!1,p(I||{}),y(null)}catch(I){if((typeof I=="object"&&I!==null&&"status"in I?I.status:void 0)===404){p({}),y("unsupported"),k.current||(k.current=!0,s(i("oauth_model_alias.upgrade_required"),"warning"));return}}},[s,i]),M=S.useCallback(I=>{const Y=I.trim()||I;a({title:i("oauth_excluded.delete_title",{defaultValue:"Delete Exclusion"}),message:i("oauth_excluded.delete_confirm",{provider:Y}),variant:"danger",confirmText:i("common.confirm"),onConfirm:async()=>{const X=Ys(I);if(!X){s(i("oauth_excluded.provider_required"),"error");return}try{await At.deleteOauthExcludedEntry(X),await N(),s(i("oauth_excluded.delete_success"),"success")}catch(K){try{const B=await At.getOauthExcludedModels(),H={};Object.entries(B).forEach(([z,Q])=>{Ys(z)!==X&&(H[z]=Q)}),await At.replaceOauthExcludedModels(H),await N(),s(i("oauth_excluded.delete_success"),"success")}catch(B){const H=B instanceof Error?B.message:K instanceof Error?K.message:"";s(`${i("oauth_excluded.delete_failed")}: ${H}`,"error")}}}})},[N,a,s,i]),O=S.useCallback(I=>{a({title:i("oauth_model_alias.delete_title",{defaultValue:"Delete Mappings"}),message:i("oauth_model_alias.delete_confirm",{provider:I}),variant:"danger",confirmText:i("common.confirm"),onConfirm:async()=>{try{await At.deleteOauthModelAlias(I),await L(),s(i("oauth_model_alias.delete_success"),"success")}catch(Y){const X=Y instanceof Error?Y.message:"";s(`${i("oauth_model_alias.delete_failed")}: ${X}`,"error")}}})},[L,a,s,i]),T=S.useCallback(async(I,Y,X)=>{if(!I||!Y||!X)return;const K=Ys(I);if(!K)return;const B=Object.keys(f).find($=>Ys($)===K),H=(B?f[B]:null)??[],z=Y.trim(),Q=X.trim(),W=z.toLowerCase(),D=Q.toLowerCase();if(H.some($=>($.name??"").trim().toLowerCase()===W&&($.alias??"").trim().toLowerCase()===D))return;const U=[...H,{name:z,alias:Q,fork:!0}];try{await At.saveOauthModelAlias(K,U),await L(),s(i("oauth_model_alias.save_success"),"success")}catch($){const te=$ instanceof Error?$.message:"";s(`${i("oauth_model_alias.save_failed")}: ${te}`,"error")}},[L,f,s,i]),P=S.useCallback((I,Y,X)=>{const K=Y.trim(),B=X.trim();!I||!K||!B||a({title:i("oauth_model_alias.delete_link_title",{defaultValue:"Unlink mapping"}),message:h.jsx(nL,{i18nKey:"oauth_model_alias.delete_link_confirm",values:{provider:I,sourceModel:K,alias:B},components:{code:h.jsx("code",{})}}),variant:"danger",confirmText:i("common.confirm"),onConfirm:async()=>{const H=Ys(I),z=Object.keys(f).find($=>Ys($)===H),Q=(z?f[z]:null)??[],W=K.toLowerCase(),D=B.toLowerCase(),U=Q.filter($=>($.name??"").trim().toLowerCase()!==W||($.alias??"").trim().toLowerCase()!==D);if(U.length!==Q.length)try{U.length===0?await At.deleteOauthModelAlias(H):await At.saveOauthModelAlias(H,U),await L(),s(i("oauth_model_alias.save_success"),"success")}catch($){const te=$ instanceof Error?$.message:"";s(`${i("oauth_model_alias.save_failed")}: ${te}`,"error")}}})},[L,f,a,s,i]),E=S.useCallback(async(I,Y,X,K)=>{const B=Ys(I);if(!B)return;const H=Object.keys(f).find($=>Ys($)===B),z=(H?f[H]:null)??[],Q=Y.trim().toLowerCase(),W=X.trim().toLowerCase();let D=!1;const U=z.map($=>{const te=($.name??"").trim().toLowerCase(),ie=($.alias??"").trim().toLowerCase();return te===Q&&ie===W?(D=!0,K?{...$,fork:!0}:{name:$.name,alias:$.alias}):$});if(D)try{await At.saveOauthModelAlias(B,U),await L(),s(i("oauth_model_alias.save_success"),"success")}catch($){const te=$ instanceof Error?$.message:"";s(`${i("oauth_model_alias.save_failed")}: ${te}`,"error")}},[L,f,s,i]),R=S.useCallback(async(I,Y)=>{const X=I.trim(),K=Y.trim();if(!X||!K||X===K)return;const B=X.toLowerCase(),H=Object.entries(f).filter(([W,D])=>D.some(U=>(U.alias??"").trim().toLowerCase()===B));if(H.length===0)return;let z=!1,Q="";try{const D=(await Promise.allSettled(H.map(([U,$])=>{const te=$.map(ie=>(ie.alias??"").trim().toLowerCase()===B?{...ie,alias:K}:ie);return At.saveOauthModelAlias(U,te)}))).filter(U=>U.status==="rejected");if(D.length>0){z=!0;const U=D[0].reason;Q=U instanceof Error?U.message:String(U??"")}}finally{await L()}z?s(Q?`${i("oauth_model_alias.save_failed")}: ${Q}`:i("oauth_model_alias.save_failed"),"error"):s(i("oauth_model_alias.save_success"),"success")},[L,f,s,i]),q=S.useCallback(I=>{const Y=I.trim();if(!Y)return;const X=Y.toLowerCase(),K=Object.entries(f).filter(([B,H])=>H.some(z=>(z.alias??"").trim().toLowerCase()===X));K.length!==0&&a({title:i("oauth_model_alias.delete_alias_title",{defaultValue:"Delete Alias"}),message:h.jsx(nL,{i18nKey:"oauth_model_alias.delete_alias_confirm",values:{alias:Y},components:{code:h.jsx("code",{})}}),variant:"danger",confirmText:i("common.confirm"),onConfirm:async()=>{let B=!1,H="";try{const Q=(await Promise.allSettled(K.map(([W,D])=>{const U=D.filter($=>($.alias??"").trim().toLowerCase()!==X);return U.length===0?At.deleteOauthModelAlias(W):At.saveOauthModelAlias(W,U)}))).filter(W=>W.status==="rejected");if(Q.length>0){B=!0;const W=Q[0].reason;H=W instanceof Error?W.message:String(W??"")}}finally{await L()}B?s(H?`${i("oauth_model_alias.delete_failed")}: ${H}`:i("oauth_model_alias.delete_failed"),"error"):s(i("oauth_model_alias.delete_success"),"success")}})},[L,f,a,s,i]);return{excluded:o,excludedError:c,modelAlias:f,modelAliasError:g,allProviderModels:_,providerList:C,loadExcluded:N,loadModelAlias:L,deleteExcluded:M,deleteModelAlias:O,handleMappingUpdate:T,handleDeleteLink:P,handleToggleFork:E,handleRenameAlias:R,handleDeleteAlias:q}}const lre=t=>{if(!t?.json)return t?.rawText??"";const e={...t.json};("prefix"in e||t.prefix.trim())&&(e.prefix=t.prefix),("proxy_url"in e||t.proxyUrl.trim())&&(e.proxy_url=t.proxyUrl);const n=pm(t.priority);n!==void 0?e.priority=n:"priority"in e&&delete e.priority;const i=KZ(t.excludedModelsText);i.length>0?e.excluded_models=i:"excluded_models"in e&&delete e.excluded_models;const s=ik(t.disableCooling);return s!==void 0?e.disable_cooling=s:"disable_cooling"in e&&delete e.disable_cooling,t.noteTouched&&(t.note.trim()?e.note=t.note:"note"in e&&delete e.note),JSON.stringify(t.isCodexFile?VZ(e,t.websockets):e)};function cre(t){const{disableControls:e,loadFiles:n,loadKeyStats:i}=t,{t:s}=nt(),a=mn(_=>_.showNotification),[o,r]=S.useState(null),c=lre(o),d=!!o?.json&&!!o?.originalText&&c!==o?.originalText;return{prefixProxyEditor:o,prefixProxyUpdatedText:c,prefixProxyDirty:d,openPrefixProxyEditor:async _=>{const v=_.name,x=String(_.type??"").trim().toLowerCase(),k=String(_.provider??"").trim().toLowerCase(),C=x==="codex"||k==="codex";if(!e){if(o?.fileName===v){r(null);return}r({fileName:v,fileInfoText:JSON.stringify(_,null,2),isCodexFile:C,loading:!0,saving:!1,error:null,originalText:"",rawText:"",json:null,prefix:"",proxyUrl:"",priority:"",excludedModelsText:"",disableCooling:"",websockets:!1,note:"",noteTouched:!1});try{const L=(await At.downloadText(v)).trim();let M;try{M=JSON.parse(L)}catch{r(K=>!K||K.fileName!==v?K:{...K,loading:!1,error:s("auth_files.prefix_proxy_invalid_json"),rawText:L,originalText:L});return}if(!M||typeof M!="object"||Array.isArray(M)){r(K=>!K||K.fileName!==v?K:{...K,loading:!1,error:s("auth_files.prefix_proxy_invalid_json"),rawText:L,originalText:L});return}const O={...M};if(C){const K=jO(O);delete O.websocket,O.websockets=K}const T=JSON.stringify(O),P=typeof O.prefix=="string"?O.prefix:"",E=typeof O.proxy_url=="string"?O.proxy_url:"",R=pm(O.priority),q=g5(O.excluded_models),I=ik(O.disable_cooling),Y=jO(O),X=typeof O.note=="string"?O.note:"";r(K=>!K||K.fileName!==v?K:{...K,loading:!1,originalText:T,rawText:T,json:O,prefix:P,proxyUrl:E,priority:R!==void 0?String(R):"",excludedModelsText:q.join(`
`),disableCooling:I===void 0?"":I?"true":"false",websockets:Y,note:X,noteTouched:!1,error:null})}catch(N){const L=N instanceof Error?N.message:s("notification.download_failed");r(M=>!M||M.fileName!==v?M:{...M,loading:!1,error:L,rawText:""}),a(`${s("notification.download_failed")}: ${L}`,"error")}}},closePrefixProxyEditor:()=>{r(null)},handlePrefixProxyChange:(_,v)=>{r(x=>x&&(_==="prefix"?{...x,prefix:String(v)}:_==="proxyUrl"?{...x,proxyUrl:String(v)}:_==="priority"?{...x,priority:String(v)}:_==="excludedModelsText"?{...x,excludedModelsText:String(v)}:_==="disableCooling"?{...x,disableCooling:String(v)}:_==="note"?{...x,note:String(v),noteTouched:!0}:{...x,websockets:!!v}))},handlePrefixProxySave:async()=>{if(!o?.json||!d)return;const _=o.fileName,v=c;if(new Blob([v]).size>P0){a(s("auth_files.upload_error_size",{maxSize:Ww(P0)}),"error");return}r(k=>!k||k.fileName!==_?k:{...k,saving:!0});try{await At.saveText(_,v),a(s("auth_files.prefix_proxy_saved_success",{name:_}),"success"),await n(),await i(),r(null)}catch(k){const C=k instanceof Error?k.message:"";a(`${s("notification.upload_failed")}: ${C}`,"error"),r(N=>!N||N.fileName!==_?N:{...N,saving:!1})}}}}function ure(){const t=ns(a=>a.keyStats),e=ns(a=>a.usageDetails),n=ns(a=>a.loadUsageStats),i=S.useCallback(async()=>{await n({staleTimeMs:wr})},[n]),s=S.useCallback(async()=>{await n({force:!0,staleTimeMs:wr})},[n]);return{keyStats:t,usageDetails:e,loadKeyStats:i,refreshKeyStats:s}}function dre(t,e){return S.useMemo(()=>{const n=new Map;return t.forEach(i=>{const s=i.auth_index??i.authIndex,a=rs(s);if(a){const o=e.filter(r=>{const c=rs(r.auth_index);return c!==null&&c===a});n.set(a,Na(o))}}),n},[t,e])}const hre=["default","az","priority"],Q2="authFilesPage.uiState",A5="authFilesPage.compactMode",fre=new Set(hre),HO=t=>typeof t=="string"&&fre.has(t),WO=t=>{if(!t)return null;const e=t.getItem(Q2);if(!e)return null;const n=JSON.parse(e);return n&&typeof n=="object"?n:null},mre=()=>{if(typeof window>"u")return null;try{return WO(window.localStorage)??WO(window.sessionStorage)}catch{return null}},pre=t=>{if(!(typeof window>"u")){try{window.localStorage.setItem(Q2,JSON.stringify(t))}catch{}try{window.sessionStorage.removeItem(Q2)}catch{}}},gre=()=>{if(typeof window>"u")return null;try{const t=window.localStorage.getItem(A5);return t===null?null:JSON.parse(t)===!0}catch{return null}},_re=t=>{if(!(typeof window>"u"))try{window.localStorage.setItem(A5,JSON.stringify(t))}catch{}},yre=t=>1-(1-t)**4,bre=t=>t**3,m1="translateX(-50%)",GO="translateX(-50%) translateY(56px)",$O=9,XO=12,vre=t=>t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),xre=t=>{if(!t.includes("*"))return null;const e=t.split("*").map(vre).join(".*");return new RegExp(e,"i")};function Sre(){const{t}=nt(),e=mn(He=>He.showNotification),n=en(He=>He.connectionStatus),i=Aa(He=>He.resolvedTheme),s=sp(),a=s?s.status==="current":!0,o=Ri(),[r,c]=S.useState("all"),[d,f]=S.useState(!1),[p,g]=S.useState(!1),[y,_]=S.useState(""),[v,x]=S.useState(1),[k,C]=S.useState({regular:$O,compact:XO}),[N,L]=S.useState("9"),[M,O]=S.useState("list"),[T,P]=S.useState("default"),[E,R]=S.useState(!1),[q,I]=S.useState(!1),Y=S.useRef(null),X=S.useRef(null),K=S.useRef(0),B=S.useRef(0),{keyStats:H,usageDetails:z,loadKeyStats:Q,refreshKeyStats:W}=ure(),{files:D,selectedFiles:U,selectionCount:$,loading:te,error:ie,uploading:F,deleting:ee,deletingAll:J,statusUpdating:re,batchStatusUpdating:fe,fileInputRef:me,loadFiles:de,handleUploadClick:ne,handleFileChange:Be,handleDelete:Ke,handleDeleteAll:Te,handleDownload:Qe,handleStatusToggle:at,toggleSelect:Ce,selectAllVisible:ft,invertVisibleSelection:mt,deselectAll:kt,batchDownload:Pt,batchSetStatus:wt,batchDelete:Tt}=are({refreshKeyStats:W}),on=dre(D,z),{excluded:ce,excludedError:ye,modelAlias:Ue,modelAliasError:Me,allProviderModels:Ye,loadExcluded:_t,loadModelAlias:pt,deleteExcluded:ot,deleteModelAlias:ue,handleMappingUpdate:qe,handleDeleteLink:Ut,handleToggleFork:Ti,handleRenameAlias:ei,handleDeleteAlias:Rn}=rre({viewMode:M,files:D}),{modelsModalOpen:Xn,modelsLoading:un,modelsList:Di,modelsFileName:ds,modelsFileType:ws,modelsError:Le,showModels:it,closeModelsModal:bt}=ore(),{prefixProxyEditor:ti,prefixProxyUpdatedText:Ln,prefixProxyDirty:ui,openPrefixProxyEditor:Z,closePrefixProxyEditor:oe,handlePrefixProxyChange:_e,handlePrefixProxySave:Pe}=cre({disableControls:n!=="connected",loadFiles:de,loadKeyStats:W}),De=n!=="connected",Je=Ys(String(r)),ze=d5.has(Je)?Je:null,Fe=p?k.compact:k.regular;S.useEffect(()=>{const He=gre();typeof He=="boolean"&&g(He);const We=mre();if(We){typeof We.filter=="string"&&We.filter.trim()&&c(We.filter),typeof We.problemOnly=="boolean"&&f(We.problemOnly),typeof He!="boolean"&&typeof We.compactMode=="boolean"&&g(We.compactMode),typeof We.search=="string"&&_(We.search),typeof We.page=="number"&&Number.isFinite(We.page)&&x(Math.max(1,Math.round(We.page)));const Kt=typeof We.pageSize=="number"&&Number.isFinite(We.pageSize)?n_(We.pageSize):null,$t=typeof We.regularPageSize=="number"&&Number.isFinite(We.regularPageSize)?n_(We.regularPageSize):Kt??$O,Qi=typeof We.compactPageSize=="number"&&Number.isFinite(We.compactPageSize)?n_(We.compactPageSize):Kt??XO;C({regular:$t,compact:Qi}),HO(We.sortMode)&&P(We.sortMode)}I(!0)},[]),S.useEffect(()=>{q&&(pre({filter:r,problemOnly:d,compactMode:p,search:y,page:v,pageSize:Fe,regularPageSize:k.regular,compactPageSize:k.compact,sortMode:T}),_re(p))},[p,r,v,Fe,k,d,y,T,q]),S.useEffect(()=>{L(String(Fe))},[Fe]);const Ve=S.useCallback(He=>{C(We=>p?{...We,compact:He}:{...We,regular:He})},[p]),st=He=>{const We=He.trim();if(!We){L(String(Fe));return}const Kt=Number(We);if(!Number.isFinite(Kt)){L(String(Fe));return}const $t=n_(Kt);Ve($t),L(String($t)),x(1)},ht=He=>{const We=He.currentTarget.value;L(We);const Kt=We.trim();if(!Kt)return;const $t=Number(Kt);if(!Number.isFinite($t))return;const Qi=Math.round($t);Qi<G2||Qi>$2||(Ve(Qi),x(1))},ct=S.useCallback(He=>{!HO(He)||He===T||(P(He),x(1),de().catch(()=>{}))},[de,T]),qt=S.useCallback(async()=>{await Promise.all([de(),W(),_t(),pt()])},[de,W,_t,pt]);rp(qt),S.useEffect(()=>{a&&(de(),Q().catch(()=>{}),_t(),pt())},[a,de,Q,_t,pt]),r5(()=>{W().catch(()=>{})},a?24e4:null);const zt=S.useMemo(()=>{const He=new Set(["all"]);return D.forEach(We=>{We.type&&He.add(We.type)}),Array.from(He)},[D]),pn=S.useMemo(()=>d?D.filter(f5):D,[D,d]),On=S.useMemo(()=>[{value:"default",label:t("auth_files.sort_default")},{value:"az",label:t("auth_files.sort_az")},{value:"priority",label:t("auth_files.sort_priority")}],[t]),qn=S.useMemo(()=>{const He={all:pn.length};return pn.forEach(We=>{We.type&&(He[We.type]=(He[We.type]||0)+1)}),He},[pn]),Dt=y.trim(),Qn=S.useMemo(()=>xre(Dt),[Dt]),Fi=S.useMemo(()=>{const He=Dt.toLowerCase();return pn.filter(We=>{const Kt=r==="all"||We.type===r,$t=!Dt||[We.name,We.type,We.provider].some(Qi=>{const jr=(Qi||"").toString();return Qn?Qn.test(jr):jr.toLowerCase().includes(He)});return Kt&&$t})},[pn,r,Dt,Qn]),dn=S.useMemo(()=>{const He=[...Fi];return T==="default"?He.sort((We,Kt)=>{const $t=Ys(String(We.provider??We.type??"unknown")),Qi=Ys(String(Kt.provider??Kt.type??"unknown")),jr=$t.localeCompare(Qi);return jr!==0?jr:We.name.localeCompare(Kt.name)}):T==="az"?He.sort((We,Kt)=>We.name.localeCompare(Kt.name)):T==="priority"&&He.sort((We,Kt)=>{const $t=pm(We.priority??We.priority)??0;return(pm(Kt.priority??Kt.priority)??0)-$t}),He},[Fi,T]),Xi=Math.max(1,Math.ceil(dn.length/Fe)),di=Math.min(v,Xi),ks=(di-1)*Fe,Si=dn.slice(ks,ks+Fe),sa=S.useMemo(()=>Si.filter(He=>!gl(He)),[Si]),Io=S.useMemo(()=>dn.filter(He=>!gl(He)),[dn]),Ii=S.useMemo(()=>Array.from(U),[U]),Gt=S.useMemo(()=>Ii.some(He=>re[He]===!0),[Ii,re]),zn=De||Ii.length===0||fe||Gt,Cs=S.useCallback(async He=>{const We=await Ky(He);e(We?t("notification.link_copied",{defaultValue:"Copied to clipboard"}):t("notification.copy_failed",{defaultValue:"Copy failed"}),We?"success":"error")},[e,t]),hi=S.useCallback(He=>{const We=(He||(r!=="all"?String(r):"")).trim(),Kt=new URLSearchParams;We&&Kt.set("provider",We);const $t=Kt.toString();o(`/auth-files/oauth-excluded${$t?`?${$t}`:""}`,{state:{fromAuthFiles:!0}})},[r,o]),Ht=S.useCallback(He=>{const We=(He||(r!=="all"?String(r):"")).trim(),Kt=new URLSearchParams;We&&Kt.set("provider",We);const $t=Kt.toString();o(`/auth-files/oauth-model-alias${$t?`?${$t}`:""}`,{state:{fromAuthFiles:!0}})},[r,o]);S.useLayoutEffect(()=>{if(typeof window>"u")return;const He=Y.current;if(!He){document.documentElement.style.removeProperty("--auth-files-action-bar-height");return}const We=()=>{const $t=He.getBoundingClientRect().height;document.documentElement.style.setProperty("--auth-files-action-bar-height",`${$t}px`)};We(),window.addEventListener("resize",We);const Kt=typeof ResizeObserver>"u"?null:new ResizeObserver(We);return Kt?.observe(He),()=>{Kt?.disconnect(),window.removeEventListener("resize",We),document.documentElement.style.removeProperty("--auth-files-action-bar-height")}},[E,$]),S.useEffect(()=>{B.current=$,$>0&&R(!0)},[$]),S.useLayoutEffect(()=>{if(!E)return;const He=$,We=K.current,Kt=Y.current;Kt&&(X.current?.stop(),X.current=null,He>0&&We===0?X.current=Yu(Kt,{transform:[GO,m1],opacity:[0,1]},{duration:.28,ease:yre,onComplete:()=>{Kt.style.transform=m1,Kt.style.opacity="1"}}):He===0&&We>0&&(X.current=Yu(Kt,{transform:[m1,GO],opacity:[1,0]},{duration:.22,ease:bre,onComplete:()=>{B.current===0&&R(!1)}})),K.current=He)},[E,$]),S.useEffect(()=>()=>{X.current?.stop(),X.current=null},[]);const Bo=()=>h.jsx("div",{className:ge.filterRail,children:h.jsx("div",{className:ge.filterTags,children:zt.map(He=>{const We=r===He,Kt=p5(He,i),$t=He==="all"?{bg:"var(--bg-tertiary)",text:"var(--text-primary)"}:m5(He,i),Qi={"--filter-color":$t.text,"--filter-surface":$t.bg,"--filter-active-text":i==="dark"?"#111827":"#ffffff"};return h.jsxs("button",{className:`${ge.filterTag} ${We?ge.filterTagActive:""}`,style:Qi,onClick:()=>{c(He),x(1)},children:[h.jsxs("span",{className:ge.filterTagLabel,children:[He==="all"?h.jsx("span",{className:`${ge.filterTagIconWrap} ${ge.filterAllIconWrap}`,children:h.jsx(Tz,{className:ge.filterAllIcon,size:16})}):h.jsx("span",{className:ge.filterTagIconWrap,children:Kt?h.jsx("img",{src:Kt,alt:"",className:ge.filterTagIcon}):h.jsx("span",{className:ge.filterTagIconFallback,children:Ju(t,He).slice(0,1).toUpperCase()})}),h.jsx("span",{className:ge.filterTagText,children:Ju(t,He)})]}),h.jsx("span",{className:ge.filterTagCount,children:qn[He]??0})]},He)})})}),Zc=h.jsxs("div",{className:ge.titleWrapper,children:[h.jsx("span",{children:t("auth_files.title_section")}),D.length>0&&h.jsx("span",{className:ge.countBadge,children:D.length})]}),Il=d?r==="all"?t("auth_files.delete_problem_button"):t("auth_files.delete_problem_button_with_type",{type:Ju(t,r)}):r==="all"?t("auth_files.delete_all_button"):`${t("common.delete")} ${Ju(t,r)}`;return h.jsxs("div",{className:ge.container,children:[h.jsxs("div",{className:ge.pageHeader,children:[h.jsx("h1",{className:ge.pageTitle,children:t("auth_files.title")}),h.jsx("p",{className:ge.description,children:t("auth_files.description")})]}),h.jsxs(jt,{title:Zc,extra:h.jsxs("div",{className:ge.headerActions,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:qt,disabled:te,children:t("common.refresh")}),h.jsx(he,{size:"sm",onClick:ne,disabled:De||F,loading:F,children:t("auth_files.upload_button")}),h.jsx(he,{variant:"danger",size:"sm",onClick:()=>Te({filter:r,problemOnly:d,onResetFilterToAll:()=>c("all"),onResetProblemOnly:()=>f(!1)}),disabled:De||te||J,loading:J,children:Il}),h.jsx("input",{ref:me,type:"file",accept:".json,application/json",multiple:!0,style:{display:"none"},onChange:Be})]}),children:[ie&&h.jsx("div",{className:ge.errorBox,children:ie}),h.jsxs("div",{className:ge.filterSection,children:[Bo(),h.jsxs("div",{className:ge.filterContent,children:[h.jsx("div",{className:ge.filterControlsPanel,children:h.jsxs("div",{className:ge.filterControls,children:[h.jsxs("div",{className:ge.filterItem,children:[h.jsx("label",{children:t("auth_files.search_label")}),h.jsx(lt,{value:y,onChange:He=>{_(He.target.value),x(1)},placeholder:t("auth_files.search_placeholder")})]}),h.jsxs("div",{className:ge.filterItem,children:[h.jsx("label",{children:t("auth_files.page_size_label")}),h.jsx("input",{className:ge.pageSizeSelect,type:"number",min:G2,max:$2,step:1,value:N,onChange:ht,onBlur:He=>st(He.currentTarget.value),onKeyDown:He=>{He.key==="Enter"&&He.currentTarget.blur()}})]}),h.jsxs("div",{className:ge.filterItem,children:[h.jsx("label",{children:t("auth_files.sort_label")}),h.jsx(Hi,{className:ge.sortSelect,value:T,options:On,onChange:ct,ariaLabel:t("auth_files.sort_label"),fullWidth:!0})]}),h.jsxs("div",{className:`${ge.filterItem} ${ge.filterToggleItem}`,children:[h.jsx("label",{children:t("auth_files.display_options_label")}),h.jsxs("div",{className:ge.filterToggleGroup,children:[h.jsx("div",{className:ge.filterToggleCard,children:h.jsx(xi,{checked:d,onChange:He=>{f(He),x(1)},ariaLabel:t("auth_files.problem_filter_only"),label:h.jsx("span",{className:ge.filterToggleLabel,children:t("auth_files.problem_filter_only")})})}),h.jsx("div",{className:ge.filterToggleCard,children:h.jsx(xi,{checked:p,onChange:He=>g(He),ariaLabel:t("auth_files.compact_mode_label"),label:h.jsx("span",{className:ge.filterToggleLabel,children:t("auth_files.compact_mode_label")})})})]})]})]})}),te?h.jsx("div",{className:ge.hint,children:t("common.loading")}):Si.length===0?h.jsx(os,{title:t("auth_files.search_empty_title"),description:t("auth_files.search_empty_desc")}):h.jsx("div",{className:`${ge.fileGrid} ${ze?ge.fileGridQuotaManaged:""} ${p?ge.fileGridCompact:""}`,children:Si.map(He=>h.jsx(ooe,{file:He,compact:p,selected:U.has(He.name),resolvedTheme:i,disableControls:De,deleting:ee,statusUpdating:re,quotaFilterType:ze,keyStats:H,statusBarCache:on,onShowModels:it,onDownload:Qe,onOpenPrefixProxyEditor:Z,onDelete:Ke,onToggleStatus:at,onToggleSelect:Ce},He.name))}),!te&&dn.length>Fe&&h.jsxs("div",{className:ge.pagination,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>x(Math.max(1,di-1)),disabled:di<=1,children:t("auth_files.pagination_prev")}),h.jsx("div",{className:ge.pageInfo,children:t("auth_files.pagination_info",{current:di,total:Xi,count:dn.length})}),h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>x(Math.min(Xi,di+1)),disabled:di>=Xi,children:t("auth_files.pagination_next")})]})]})]})]}),h.jsx(coe,{disableControls:De,excludedError:ye,excluded:ce,onAdd:()=>hi(),onEdit:hi,onDelete:ot}),h.jsx(sre,{disableControls:De,viewMode:M,onViewModeChange:O,onAdd:()=>Ht(),onEditProvider:Ht,onDeleteProvider:ue,modelAliasError:Me,modelAlias:Ue,allProviderModels:Ye,onUpdate:qe,onDeleteLink:Ut,onToggleFork:Ti,onRenameAlias:ei,onDeleteAlias:Rn}),h.jsx(roe,{open:Xn,fileName:ds,fileType:ws,loading:un,error:Le,models:Di,excluded:ce,onClose:bt,onCopyText:Cs}),h.jsx(loe,{disableControls:De,editor:ti,updatedText:Ln,dirty:ui,onClose:oe,onCopyText:Cs,onSave:Pe,onChange:_e}),E&&typeof document<"u"?Po.createPortal(h.jsx("div",{className:ge.batchActionContainer,ref:Y,children:h.jsxs("div",{className:ge.batchActionBar,children:[h.jsxs("div",{className:ge.batchActionLeft,children:[h.jsx("span",{className:ge.batchSelectionText,children:t("auth_files.batch_selected",{count:$})}),h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>ft(Si),disabled:sa.length===0,children:t("auth_files.batch_select_page")}),h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>ft(dn),disabled:Io.length===0,children:t("auth_files.batch_select_filtered")}),h.jsx(he,{variant:"ghost",size:"sm",onClick:()=>mt(Si),disabled:sa.length===0,children:t("auth_files.batch_invert_page")}),h.jsx(he,{variant:"ghost",size:"sm",onClick:kt,children:t("auth_files.batch_deselect")})]}),h.jsxs("div",{className:ge.batchActionRight,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>void Pt(Ii),disabled:De||Ii.length===0,children:t("auth_files.batch_download")}),h.jsx(he,{size:"sm",onClick:()=>wt(Ii,!0),disabled:zn,children:t("auth_files.batch_enable")}),h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>wt(Ii,!1),disabled:zn,children:t("auth_files.batch_disable")}),h.jsx(he,{variant:"danger",size:"sm",onClick:()=>Tt(Ii),disabled:De||Ii.length===0,children:t("common.delete")})]})]})}),document.body):null]})}function Y2({label:t,value:e,onChange:n,options:i,placeholder:s,disabled:a,hint:o,error:r,className:c="",wrapperClassName:d="",wrapperStyle:f,id:p,rightElement:g}){const[y,_]=S.useState(!1),[v,x]=S.useState(-1),k=S.useRef(null),N=i.map(T=>typeof T=="string"?{value:T,label:T}:{value:T.value,label:T.label||T.value}).filter(T=>{const P=e.toLowerCase();return T.value.toLowerCase().includes(P)||T.label&&T.label.toLowerCase().includes(P)});S.useEffect(()=>{const T=P=>{k.current&&!k.current.contains(P.target)&&_(!1)};return document.addEventListener("mousedown",T),()=>document.removeEventListener("mousedown",T)},[]);const L=T=>{n(T.target.value),_(!0),x(-1)},M=T=>{n(T),_(!1)},O=T=>{if(!a)if(T.key==="ArrowDown"){if(T.preventDefault(),!y){_(!0);return}x(P=>P<N.length-1?P+1:P)}else T.key==="ArrowUp"?(T.preventDefault(),x(P=>P>0?P-1:0)):T.key==="Enter"?y&&v>=0&&v<N.length?(T.preventDefault(),M(N[v].value)):y&&(T.preventDefault(),_(!1)):(T.key==="Escape"||T.key==="Tab")&&_(!1)};return h.jsxs("div",{className:`form-group ${d}`,ref:k,style:f,children:[t&&h.jsx("label",{htmlFor:p,children:t}),h.jsxs("div",{style:{position:"relative"},children:[h.jsx("input",{id:p,className:`input ${c}`.trim(),value:e,onChange:L,onFocus:()=>_(!0),onKeyDown:O,placeholder:s,disabled:a,autoComplete:"off",style:{paddingRight:32}}),h.jsxs("div",{style:{position:"absolute",right:8,top:"50%",transform:"translateY(-50%)",display:"flex",alignItems:"center",pointerEvents:a?"none":"auto",cursor:"pointer",height:"100%"},onClick:()=>!a&&_(!y),children:[g,h.jsx(Py,{size:16,style:{opacity:.5,marginLeft:4}})]}),y&&N.length>0&&!a&&h.jsx("div",{className:"autocomplete-dropdown",style:{position:"absolute",top:"calc(100% + 4px)",left:0,right:0,zIndex:1e3,backgroundColor:"var(--bg-secondary)",border:"1px solid var(--border-color)",borderRadius:"var(--radius-md)",maxHeight:200,overflowY:"auto",boxShadow:"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)"},children:N.map((T,P)=>h.jsxs("div",{onClick:()=>M(T.value),style:{padding:"8px 12px",cursor:"pointer",backgroundColor:P===v?"var(--bg-tertiary)":"transparent",color:"var(--text-primary)",display:"flex",flexDirection:"column",fontSize:"0.9rem"},onMouseEnter:()=>x(P),children:[h.jsx("span",{style:{fontWeight:500},children:T.value}),T.label&&T.label!==T.value&&h.jsx("span",{style:{fontSize:"0.85em",color:"var(--text-secondary)"},children:T.label})]},`${T.value}-${P}`))})]}),o&&h.jsx("div",{className:"hint",children:o}),r&&h.jsx("div",{className:"error-box",children:r})]})}const wre="AuthFilesOAuthExcludedEditPage-module__pageContent___42nA2",kre="AuthFilesOAuthExcludedEditPage-module__settingsCard___EE-1z",Cre="AuthFilesOAuthExcludedEditPage-module__settingsHeader___Jm0RO",Are="AuthFilesOAuthExcludedEditPage-module__settingsHeaderTitle___nOj9w",Nre="AuthFilesOAuthExcludedEditPage-module__settingsHeaderHint___EzQSN",Tre="AuthFilesOAuthExcludedEditPage-module__settingsSection___ozndx",Mre="AuthFilesOAuthExcludedEditPage-module__settingsRow___z6QPQ",Lre="AuthFilesOAuthExcludedEditPage-module__settingsInfo___lRYwp",Ore="AuthFilesOAuthExcludedEditPage-module__settingsLabel___KbPgc",Pre="AuthFilesOAuthExcludedEditPage-module__settingsDesc___6LSPN",Ere="AuthFilesOAuthExcludedEditPage-module__settingsControl___luVcd",jre="AuthFilesOAuthExcludedEditPage-module__tagList___Is0Fd",Rre="AuthFilesOAuthExcludedEditPage-module__tag___fyrKv",Dre="AuthFilesOAuthExcludedEditPage-module__tagActive___EkiBG",Fre="AuthFilesOAuthExcludedEditPage-module__modelsHint___Rm6l4",Ire="AuthFilesOAuthExcludedEditPage-module__loadingModels___-9Wy6",Bre="AuthFilesOAuthExcludedEditPage-module__modelList___6ebAr",Ure="AuthFilesOAuthExcludedEditPage-module__modelItem___v0y1o",qre="AuthFilesOAuthExcludedEditPage-module__modelText___50mQC",zre="AuthFilesOAuthExcludedEditPage-module__modelId___Z2Ylu",Kre="AuthFilesOAuthExcludedEditPage-module__modelDisplayName___ATlA5",Vre="AuthFilesOAuthExcludedEditPage-module__emptyModels___kAuwa",Pn={pageContent:wre,settingsCard:kre,settingsHeader:Cre,settingsHeaderTitle:Are,settingsHeaderHint:Nre,settingsSection:Tre,settingsRow:Mre,settingsInfo:Lre,settingsLabel:Ore,settingsDesc:Pre,settingsControl:Ere,tagList:jre,tag:Rre,tagActive:Dre,modelsHint:Fre,loadingModels:Ire,modelList:Bre,modelItem:Ure,modelText:qre,modelId:zre,modelDisplayName:Kre,emptyModels:Vre},QO=["gemini-cli","vertex","aistudio","antigravity","claude","codex","qwen","kimi","iflow"],Hre=new Set(["all","unknown","empty"]),p1=t=>t.trim().toLowerCase();function Wre(){const{t}=nt(),e=Ri(),n=$n(),{showNotification:i}=mn(),a=en(F=>F.connectionStatus)!=="connected",[o,r]=z3(),c=o.get("provider")??"",[d,f]=S.useState(c),[p,g]=S.useState([]),[y,_]=S.useState({}),[v,x]=S.useState({}),[k,C]=S.useState(!0),[N,L]=S.useState(!1),[M,O]=S.useState(new Set),[T,P]=S.useState([]),[E,R]=S.useState(!1),[q,I]=S.useState(null),[Y,X]=S.useState(!1);S.useEffect(()=>{f(c)},[c]);const K=S.useMemo(()=>{const F=new Set;Object.keys(y).forEach(fe=>F.add(fe)),Object.keys(v).forEach(fe=>F.add(fe)),p.forEach(fe=>{typeof fe.type=="string"&&F.add(fe.type),typeof fe.provider=="string"&&F.add(fe.provider)});const ee=Array.from(F).map(fe=>fe.trim()).filter(fe=>fe&&!Hre.has(fe.toLowerCase())),J=new Set(QO.map(fe=>fe.toLowerCase())),re=ee.filter(fe=>!J.has(fe.toLowerCase())).sort((fe,me)=>fe.localeCompare(me));return[...QO,...re]},[y,p,v]),B=S.useCallback(F=>{const ee=`auth_files.filter_${F}`,J=t(ee);return J!==ee?J:F.toLowerCase()==="iflow"?"iFlow":F.charAt(0).toUpperCase()+F.slice(1)},[t]),H=S.useMemo(()=>p1(d),[d]),z=S.useMemo(()=>H?Object.prototype.hasOwnProperty.call(y,H):!1,[y,H]),Q=S.useMemo(()=>z?t("oauth_excluded.edit_title",{provider:d.trim()||H}):t("oauth_excluded.add_title"),[z,d,H,t]),W=S.useCallback(()=>{if(n.state?.fromAuthFiles){e(-1);return}e("/auth-files",{replace:!0})},[n.state,e]),D=jo({onBack:W});S.useEffect(()=>{const F=ee=>{ee.key==="Escape"&&W()};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[W]),S.useEffect(()=>{let F=!1;return(async()=>{C(!0),L(!1);try{const[J,re,fe]=await Promise.allSettled([At.list(),At.getOauthExcludedModels(),At.getOauthModelAlias()]);if(F)return;if(J.status==="fulfilled"&&g(J.value?.files??[]),fe.status==="fulfilled"&&x(fe.value??{}),re.status==="fulfilled"){_(re.value??{});return}const me=re.status==="rejected"?re.reason:null;if((typeof me=="object"&&me!==null&&"status"in me?me.status:void 0)===404){L(!0);return}}finally{F||C(!1)}})().catch(()=>{F||C(!1)}),()=>{F=!0}},[]),S.useEffect(()=>{if(!H){O(new Set);return}const F=y[H]??[];O(new Set(F))},[y,H]),S.useEffect(()=>{if(!H||N){P([]),I(null),R(!1);return}let F=!1;return R(!0),I(null),At.getModelDefinitions(H).then(ee=>{F||P(ee)}).catch(ee=>{if(F)return;if((typeof ee=="object"&&ee!==null&&"status"in ee?ee.status:void 0)===404){P([]),I("unsupported");return}const re=ee instanceof Error?ee.message:"";i(`${t("notification.load_failed")}: ${re}`,"error")}).finally(()=>{F||R(!1)}),()=>{F=!0}},[N,H,i,t]);const U=S.useCallback(F=>{f(F);const ee=new URLSearchParams(o),J=F.trim();J?ee.set("provider",J):ee.delete("provider"),r(ee,{replace:!0})},[o,r]),$=S.useCallback((F,ee)=>{O(J=>{const re=new Set(J);return ee?re.add(F):re.delete(F),re})},[]),te=S.useCallback(async()=>{const F=p1(d);if(!F){i(t("oauth_excluded.provider_required"),"error");return}const ee=[...M];X(!0);try{ee.length?await At.saveOauthExcludedModels(F,ee):await At.deleteOauthExcludedEntry(F),i(t("oauth_excluded.save_success"),"success"),W()}catch(J){const re=J instanceof Error?J.message:"";i(`${t("oauth_excluded.save_failed")}: ${re}`,"error")}finally{X(!1)}},[W,d,M,i,t]),ie=!a&&!Y&&!N;return h.jsx(Ro,{ref:D,title:Q,onBack:W,backLabel:t("common.back"),backAriaLabel:t("common.back"),contentClassName:Pn.pageContent,rightAction:h.jsx(he,{size:"sm",onClick:te,loading:Y,disabled:!ie,children:t("oauth_excluded.save")}),isLoading:k,loadingLabel:t("common.loading"),children:N?h.jsx(jt,{children:h.jsx(os,{title:t("oauth_excluded.upgrade_required_title"),description:t("oauth_excluded.upgrade_required_desc")})}):h.jsxs(h.Fragment,{children:[h.jsxs(jt,{className:Pn.settingsCard,children:[h.jsxs("div",{className:Pn.settingsHeader,children:[h.jsxs("div",{className:Pn.settingsHeaderTitle,children:[h.jsx(Pw,{size:16}),h.jsx("span",{children:t("oauth_excluded.title")})]}),h.jsx("div",{className:Pn.settingsHeaderHint,children:t("oauth_excluded.description")})]}),h.jsxs("div",{className:Pn.settingsSection,children:[h.jsxs("div",{className:Pn.settingsRow,children:[h.jsxs("div",{className:Pn.settingsInfo,children:[h.jsx("div",{className:Pn.settingsLabel,children:t("oauth_excluded.provider_label")}),h.jsx("div",{className:Pn.settingsDesc,children:t("oauth_excluded.provider_hint")})]}),h.jsx("div",{className:Pn.settingsControl,children:h.jsx(Y2,{id:"oauth-excluded-provider",placeholder:t("oauth_excluded.provider_placeholder"),value:d,onChange:U,options:K,disabled:a||Y,wrapperStyle:{marginBottom:0}})})]}),K.length>0&&h.jsx("div",{className:Pn.tagList,children:K.map(F=>{const ee=p1(d)===F.toLowerCase();return h.jsx("button",{type:"button",className:`${Pn.tag} ${ee?Pn.tagActive:""}`,onClick:()=>U(F),disabled:a||Y,children:B(F)},F)})})]})]}),h.jsxs(jt,{className:Pn.settingsCard,children:[h.jsxs("div",{className:Pn.settingsHeader,children:[h.jsx("div",{className:Pn.settingsHeaderTitle,children:t("oauth_excluded.models_label")}),H&&h.jsx("div",{className:Pn.modelsHint,children:E?h.jsxs(h.Fragment,{children:[h.jsx(Fc,{size:14}),h.jsx("span",{children:t("oauth_excluded.models_loading")})]}):q==="unsupported"?h.jsx("span",{children:t("oauth_excluded.models_unsupported")}):T.length>0?h.jsx("span",{children:t("oauth_excluded.models_loaded",{count:T.length})}):h.jsx("span",{children:t("oauth_excluded.no_models_available")})})]}),E?h.jsxs("div",{className:Pn.loadingModels,children:[h.jsx(Fc,{size:16}),h.jsx("span",{children:t("common.loading")})]}):T.length>0?h.jsx("div",{className:Pn.modelList,children:T.map(F=>{const ee=M.has(F.id);return h.jsx(Nl,{checked:ee,disabled:a||Y,onChange:J=>$(F.id,J),className:Pn.modelItem,labelClassName:Pn.modelText,label:h.jsxs(h.Fragment,{children:[h.jsx("span",{className:Pn.modelId,children:F.id}),F.display_name&&F.display_name!==F.id&&h.jsx("span",{className:Pn.modelDisplayName,children:F.display_name})]})},F.id)})}):H?h.jsx("div",{className:Pn.emptyModels,children:t(q==="unsupported"?"oauth_excluded.models_unsupported":"oauth_excluded.no_models_available")}):h.jsx("div",{className:Pn.emptyModels,children:t("oauth_excluded.provider_required")})]})]})})}const Gre="AuthFilesOAuthModelAliasEditPage-module__pageContent___mxGSP",$re="AuthFilesOAuthModelAliasEditPage-module__settingsCard___4uMxA",Xre="AuthFilesOAuthModelAliasEditPage-module__settingsHeader___h4vIs",Qre="AuthFilesOAuthModelAliasEditPage-module__settingsHeaderTitle___GExPS",Yre="AuthFilesOAuthModelAliasEditPage-module__settingsHeaderHint___C94bR",Jre="AuthFilesOAuthModelAliasEditPage-module__settingsSection___JQr18",Zre="AuthFilesOAuthModelAliasEditPage-module__settingsRow___qzQdL",ele="AuthFilesOAuthModelAliasEditPage-module__settingsInfo___Jt7Ub",tle="AuthFilesOAuthModelAliasEditPage-module__settingsLabel___v6dmL",nle="AuthFilesOAuthModelAliasEditPage-module__settingsDesc___TgK3P",ile="AuthFilesOAuthModelAliasEditPage-module__settingsControl___nSl-3",sle="AuthFilesOAuthModelAliasEditPage-module__tagList___OxNTF",ale="AuthFilesOAuthModelAliasEditPage-module__tag___sULm6",ole="AuthFilesOAuthModelAliasEditPage-module__tagActive___CcyFC",rle="AuthFilesOAuthModelAliasEditPage-module__mappingsHeader___wddAp",lle="AuthFilesOAuthModelAliasEditPage-module__mappingsTitle___QywAa",cle="AuthFilesOAuthModelAliasEditPage-module__mappingsBody___jOz-S",ule="AuthFilesOAuthModelAliasEditPage-module__mappingRow___NTr41",dle="AuthFilesOAuthModelAliasEditPage-module__mappingSeparator___dN9rZ",hle="AuthFilesOAuthModelAliasEditPage-module__mappingAliasInput___iG0V3",fle="AuthFilesOAuthModelAliasEditPage-module__mappingFork___4pAg3",Zn={pageContent:Gre,settingsCard:$re,settingsHeader:Xre,settingsHeaderTitle:Qre,settingsHeaderHint:Yre,settingsSection:Jre,settingsRow:Zre,settingsInfo:ele,settingsLabel:tle,settingsDesc:nle,settingsControl:ile,tagList:sle,tag:ale,tagActive:ole,mappingsHeader:rle,mappingsTitle:lle,mappingsBody:cle,mappingRow:ule,mappingSeparator:dle,mappingAliasInput:hle,mappingFork:fle},YO=["gemini-cli","vertex","aistudio","antigravity","claude","codex","qwen","kimi","iflow"],mle=new Set(["all","unknown","empty"]),JO=t=>t.trim().toLowerCase(),Tf=()=>({id:Dw(),name:"",alias:"",fork:!0}),ple=t=>!Array.isArray(t)||t.length===0?[Tf()]:t.map(e=>({id:Dw(),name:e.name??"",alias:e.alias??"",fork:!!e.fork}));function gle(){const{t}=nt(),e=Ri(),n=$n(),{showNotification:i}=mn(),a=en(J=>J.connectionStatus)!=="connected",[o,r]=z3(),c=o.get("provider")??"",[d,f]=S.useState(c),[p,g]=S.useState([]),[y,_]=S.useState({}),[v,x]=S.useState({}),[k,C]=S.useState(!0),[N,L]=S.useState(!1),[M,O]=S.useState([Tf()]),[T,P]=S.useState([]),[E,R]=S.useState(!1),[q,I]=S.useState(null),[Y,X]=S.useState(!1);S.useEffect(()=>{f(c)},[c]);const K=S.useMemo(()=>{const J=new Set;Object.keys(y).forEach(de=>J.add(de)),Object.keys(v).forEach(de=>J.add(de)),p.forEach(de=>{typeof de.type=="string"&&J.add(de.type),typeof de.provider=="string"&&J.add(de.provider)});const re=Array.from(J).map(de=>de.trim()).filter(de=>de&&!mle.has(de.toLowerCase())),fe=new Set(YO.map(de=>de.toLowerCase())),me=re.filter(de=>!fe.has(de.toLowerCase())).sort((de,ne)=>de.localeCompare(ne));return[...YO,...me]},[y,p,v]),B=S.useCallback(J=>{const re=`auth_files.filter_${J}`,fe=t(re);return fe!==re?fe:J.toLowerCase()==="iflow"?"iFlow":J.charAt(0).toUpperCase()+J.slice(1)},[t]),H=S.useMemo(()=>JO(d),[d]),z=S.useMemo(()=>t("oauth_model_alias.add_title"),[t]),Q=S.useMemo(()=>d.trim()?E?t("oauth_model_alias.model_source_loading"):q==="unsupported"?t("oauth_model_alias.model_source_unsupported"):t("oauth_model_alias.model_source_loaded",{count:T.length}):t("oauth_model_alias.provider_hint"),[q,T.length,E,d,t]),W=S.useCallback(()=>{if(n.state?.fromAuthFiles){e(-1);return}e("/auth-files",{replace:!0})},[n.state,e]),D=jo({onBack:W});S.useEffect(()=>{const J=re=>{re.key==="Escape"&&W()};return window.addEventListener("keydown",J),()=>window.removeEventListener("keydown",J)},[W]),S.useEffect(()=>{let J=!1;return(async()=>{C(!0),L(!1);try{const[fe,me,de]=await Promise.allSettled([At.list(),At.getOauthExcludedModels(),At.getOauthModelAlias()]);if(J)return;if(fe.status==="fulfilled"&&g(fe.value?.files??[]),me.status==="fulfilled"&&_(me.value??{}),de.status==="fulfilled"){x(de.value??{});return}const ne=de.status==="rejected"?de.reason:null;if((typeof ne=="object"&&ne!==null&&"status"in ne?ne.status:void 0)===404){L(!0);return}}finally{J||C(!1)}})().catch(()=>{J||C(!1)}),()=>{J=!0}},[]),S.useEffect(()=>{if(!H){O([Tf()]);return}const J=v[H]??[];O(ple(J))},[v,H]),S.useEffect(()=>{if(!H||N){P([]),I(null),R(!1);return}let J=!1;return R(!0),I(null),At.getModelDefinitions(H).then(re=>{J||P(re)}).catch(re=>{if(J)return;if((typeof re=="object"&&re!==null&&"status"in re?re.status:void 0)===404){P([]),I("unsupported");return}const me=re instanceof Error?re.message:"";i(`${t("notification.load_failed")}: ${me}`,"error")}).finally(()=>{J||R(!1)}),()=>{J=!0}},[N,H,i,t]);const U=S.useCallback(J=>{f(J);const re=new URLSearchParams(o),fe=J.trim();fe?re.set("provider",fe):re.delete("provider"),r(re,{replace:!0})},[o,r]),$=S.useCallback((J,re,fe)=>{O(me=>me.map((de,ne)=>ne===J?{...de,[re]:fe}:de))},[]),te=S.useCallback(()=>{O(J=>[...J,Tf()])},[]),ie=S.useCallback(J=>{O(re=>{const fe=re.filter((me,de)=>de!==J);return fe.length?fe:[Tf()]})},[]),F=S.useCallback(async()=>{const J=d.trim();if(!J){i(t("oauth_model_alias.provider_required"),"error");return}const re=new Set,fe=M.map(me=>{const de=String(me.name??"").trim(),ne=String(me.alias??"").trim();if(!de||!ne)return null;const Be=`${de.toLowerCase()}::${ne.toLowerCase()}::${me.fork?"1":"0"}`;return re.has(Be)?null:(re.add(Be),me.fork?{name:de,alias:ne,fork:!0}:{name:de,alias:ne})}).filter(Boolean);X(!0);try{fe.length?await At.saveOauthModelAlias(J,fe):await At.deleteOauthModelAlias(J),i(t("oauth_model_alias.save_success"),"success"),W()}catch(me){const de=me instanceof Error?me.message:"";i(`${t("oauth_model_alias.save_failed")}: ${de}`,"error")}finally{X(!1)}},[W,M,d,i,t]),ee=!a&&!Y&&!N;return h.jsx(Ro,{ref:D,title:z,onBack:W,backLabel:t("common.back"),backAriaLabel:t("common.back"),contentClassName:Zn.pageContent,rightAction:h.jsx(he,{size:"sm",onClick:F,loading:Y,disabled:!ee,children:t("oauth_model_alias.save")}),isLoading:k,loadingLabel:t("common.loading"),children:N?h.jsx(jt,{children:h.jsx(os,{title:t("oauth_model_alias.upgrade_required_title"),description:t("oauth_model_alias.upgrade_required_desc")})}):h.jsxs(h.Fragment,{children:[h.jsxs(jt,{className:Zn.settingsCard,children:[h.jsxs("div",{className:Zn.settingsHeader,children:[h.jsxs("div",{className:Zn.settingsHeaderTitle,children:[h.jsx(Pw,{size:16}),h.jsx("span",{children:t("oauth_model_alias.title")})]}),h.jsx("div",{className:Zn.settingsHeaderHint,children:Q})]}),h.jsxs("div",{className:Zn.settingsSection,children:[h.jsxs("div",{className:Zn.settingsRow,children:[h.jsxs("div",{className:Zn.settingsInfo,children:[h.jsx("div",{className:Zn.settingsLabel,children:t("oauth_model_alias.provider_label")}),h.jsx("div",{className:Zn.settingsDesc,children:t("oauth_model_alias.provider_hint")})]}),h.jsx("div",{className:Zn.settingsControl,children:h.jsx(Y2,{id:"oauth-model-alias-provider",placeholder:t("oauth_model_alias.provider_placeholder"),value:d,onChange:U,options:K,disabled:a||Y,wrapperStyle:{marginBottom:0}})})]}),K.length>0&&h.jsx("div",{className:Zn.tagList,children:K.map(J=>{const re=JO(d)===J.toLowerCase();return h.jsx("button",{type:"button",className:`${Zn.tag} ${re?Zn.tagActive:""}`,onClick:()=>U(J),disabled:a||Y,children:B(J)},J)})})]})]}),h.jsxs(jt,{className:Zn.settingsCard,children:[h.jsxs("div",{className:Zn.mappingsHeader,children:[h.jsx("div",{className:Zn.mappingsTitle,children:t("oauth_model_alias.alias_label")}),h.jsx(he,{variant:"secondary",size:"sm",onClick:te,disabled:a||Y||N,children:t("oauth_model_alias.add_alias")})]}),h.jsx("div",{className:Zn.mappingsBody,children:M.map((J,re)=>h.jsxs("div",{className:Zn.mappingRow,children:[h.jsx(Y2,{wrapperStyle:{flex:1,marginBottom:0},placeholder:t("oauth_model_alias.alias_name_placeholder"),value:J.name,onChange:fe=>$(re,"name",fe),disabled:a||Y,options:T.map(fe=>({value:fe.id,label:fe.display_name&&fe.display_name!==fe.id?fe.display_name:void 0}))}),h.jsx("span",{className:Zn.mappingSeparator,children:"→"}),h.jsx("input",{className:`input ${Zn.mappingAliasInput}`,placeholder:t("oauth_model_alias.alias_placeholder"),value:J.alias,onChange:fe=>$(re,"alias",fe.target.value),disabled:a||Y}),h.jsx("div",{className:Zn.mappingFork,children:h.jsx(xi,{label:t("oauth_model_alias.alias_fork_label"),labelPosition:"left",checked:!!J.fork,onChange:fe=>$(re,"fork",fe),disabled:a||Y})}),h.jsx(he,{variant:"ghost",size:"sm",onClick:()=>ie(re),disabled:a||Y||M.length<=1,title:t("common.delete"),"aria-label":t("common.delete"),children:h.jsx(Gc,{size:14})})]},J.id))})]})]})})}const _le="OAuthPage-module__container___LCCdH",yle="OAuthPage-module__cardTitle___yFaP0",ble="OAuthPage-module__cardTitleIcon___eAnql",vle="OAuthPage-module__pageTitle___BQQ2z",xle="OAuthPage-module__content___Phg9V",Sle="OAuthPage-module__cardContent___1sXLA",wle="OAuthPage-module__cardHint___ttOpd",kle="OAuthPage-module__cardHintSecondary___tWM17",Cle="OAuthPage-module__callbackSection___8kA31",Ale="OAuthPage-module__callbackActions___wtkMI",Nle="OAuthPage-module__authUrlBox___Iu1d4",Tle="OAuthPage-module__authUrlLabel___mYFJB",Mle="OAuthPage-module__authUrlValue___axvUJ",Lle="OAuthPage-module__authUrlActions___venPj",Ole="OAuthPage-module__geminiProjectField___g456A",Ple="OAuthPage-module__formItem___Bgt9S",Ele="OAuthPage-module__formItemLabel___QZFrG",jle="OAuthPage-module__filePicker___NmFjy",Rle="OAuthPage-module__fileName___9ZbQI",Dle="OAuthPage-module__fileNamePlaceholder___WHjj4",Fle="OAuthPage-module__connectionBox___Gwo4r",Ile="OAuthPage-module__connectionLabel___cJMrf",Ble="OAuthPage-module__keyValueList___lEOY0",Ule="OAuthPage-module__keyValueItem___XOwWB",qle="OAuthPage-module__keyValueKey___WF-VN",zle="OAuthPage-module__keyValueValue___m2I-C",dt={container:_le,cardTitle:yle,cardTitleIcon:ble,pageTitle:vle,content:xle,cardContent:Sle,cardHint:wle,cardHintSecondary:kle,callbackSection:Cle,callbackActions:Ale,authUrlBox:Nle,authUrlLabel:Tle,authUrlValue:Mle,authUrlActions:Lle,geminiProjectField:Ole,formItem:Ple,formItemLabel:Ele,filePicker:jle,fileName:Rle,fileNamePlaceholder:Dle,connectionBox:Fle,connectionLabel:Ile,keyValueList:Ble,keyValueItem:Ule,keyValueKey:qle,keyValueValue:zle};function N5(t){return t!==null&&typeof t=="object"}function cf(t){return t instanceof Error||N5(t)&&typeof t.message=="string"?t.message:typeof t=="string"?t:""}function ZO(t){if(N5(t))return typeof t.status=="number"?t.status:void 0}const Kle=[{id:"codex",titleKey:"auth_login.codex_oauth_title",hintKey:"auth_login.codex_oauth_hint",urlLabelKey:"auth_login.codex_oauth_url_label",icon:qy},{id:"anthropic",titleKey:"auth_login.anthropic_oauth_title",hintKey:"auth_login.anthropic_oauth_hint",urlLabelKey:"auth_login.anthropic_oauth_url_label",icon:ap},{id:"antigravity",titleKey:"auth_login.antigravity_oauth_title",hintKey:"auth_login.antigravity_oauth_hint",urlLabelKey:"auth_login.antigravity_oauth_url_label",icon:c5},{id:"gemini-cli",titleKey:"auth_login.gemini_cli_oauth_title",hintKey:"auth_login.gemini_cli_oauth_hint",urlLabelKey:"auth_login.gemini_cli_oauth_url_label",icon:Lc},{id:"kimi",titleKey:"auth_login.kimi_oauth_title",hintKey:"auth_login.kimi_oauth_hint",urlLabelKey:"auth_login.kimi_oauth_url_label",icon:{light:tk,dark:ek}},{id:"qwen",titleKey:"auth_login.qwen_oauth_title",hintKey:"auth_login.qwen_oauth_hint",urlLabelKey:"auth_login.qwen_oauth_url_label",icon:nk}],Vle=["codex","anthropic","antigravity","gemini-cli"],Hle=t=>t.replace("-","_"),al=(t,e)=>`auth_login.${Hle(t)}_${e}`,Wle=(t,e)=>typeof t=="string"?t:t[e];function Gle(){const{t}=nt(),{showNotification:e}=mn(),n=Aa(M=>M.resolvedTheme),[i,s]=S.useState({}),[a,o]=S.useState({cookie:"",loading:!1}),[r,c]=S.useState({fileName:"",location:"",loading:!1}),d=S.useRef({}),f=S.useRef(null),p=S.useCallback(()=>{Object.values(d.current).forEach(M=>window.clearInterval(M)),d.current={}},[]);S.useEffect(()=>()=>{p()},[p]);const g=(M,O)=>{s(T=>({...T,[M]:{...T[M]??{},...O}}))},y=(M,O)=>{d.current[M]&&clearInterval(d.current[M]);const T=window.setInterval(async()=>{try{const P=await Wg.getAuthStatus(O);P.status==="ok"?(g(M,{status:"success",polling:!1}),e(t(al(M,"oauth_status_success")),"success"),window.clearInterval(T),delete d.current[M]):P.status==="error"&&(g(M,{status:"error",error:P.error,polling:!1}),e(`${t(al(M,"oauth_status_error"))} ${P.error||""}`,"error"),window.clearInterval(T),delete d.current[M])}catch(P){g(M,{status:"error",error:cf(P),polling:!1}),window.clearInterval(T),delete d.current[M]}},3e3);d.current[M]=T},_=async M=>{const O=M==="gemini-cli"?i[M]:void 0,T=M==="gemini-cli"?(O?.projectId||"").trim():"",P=T?T.toUpperCase()==="ALL"?"ALL":T:void 0;M==="gemini-cli"&&g(M,{projectIdError:void 0}),g(M,{status:"waiting",polling:!0,error:void 0,callbackStatus:void 0,callbackError:void 0,callbackUrl:""});try{const E=await Wg.startAuth(M,M==="gemini-cli"?{projectId:P||void 0}:void 0);g(M,{url:E.url,state:E.state,status:"waiting",polling:!0}),E.state&&y(M,E.state)}catch(E){const R=cf(E);g(M,{status:"error",error:R,polling:!1}),e(`${t(al(M,"oauth_start_error"))}${R?` ${R}`:""}`,"error")}},v=async M=>{if(!M)return;const O=await Ky(M);e(t(O?"notification.link_copied":"notification.copy_failed"),O?"success":"error")},x=async M=>{const O=(i[M]?.callbackUrl||"").trim();if(!O){e(t("auth_login.oauth_callback_required"),"warning");return}g(M,{callbackSubmitting:!0,callbackStatus:void 0,callbackError:void 0});try{await Wg.submitCallback(M,O),g(M,{callbackSubmitting:!1,callbackStatus:"success"}),e(t("auth_login.oauth_callback_success"),"success")}catch(T){const P=ZO(T),E=cf(T),R=P===404?t("auth_login.oauth_callback_upgrade_hint",{defaultValue:"Please update CLI Proxy API or check the connection."}):E||void 0;g(M,{callbackSubmitting:!1,callbackStatus:"error",callbackError:R});const q=R?`${t("auth_login.oauth_callback_error")} ${R}`:t("auth_login.oauth_callback_error");e(q,"error")}},k=async()=>{const M=a.cookie.trim();if(!M){e(t("auth_login.iflow_cookie_required"),"warning");return}o(O=>({...O,loading:!0,error:void 0,errorType:void 0,result:void 0}));try{const O=await Wg.iflowCookieAuth(M);O.status==="ok"?(o(T=>({...T,loading:!1,result:O})),e(t("auth_login.iflow_cookie_status_success"),"success")):(o(T=>({...T,loading:!1,error:O.error,errorType:"error"})),e(`${t("auth_login.iflow_cookie_status_error")} ${O.error||""}`,"error"))}catch(O){if(ZO(O)===409){const P=t("auth_login.iflow_cookie_config_duplicate");o(E=>({...E,loading:!1,error:P,errorType:"warning"})),e(P,"warning");return}const T=cf(O);o(P=>({...P,loading:!1,error:T,errorType:"error"})),e(`${t("auth_login.iflow_cookie_start_error")}${T?` ${T}`:""}`,"error")}},C=()=>{f.current?.click()},N=M=>{const O=M.target.files?.[0];if(O){if(!O.name.endsWith(".json")){e(t("vertex_import.file_required"),"warning"),M.target.value="";return}c(T=>({...T,file:O,fileName:O.name,error:void 0,result:void 0})),M.target.value=""}},L=async()=>{if(!r.file){const O=t("vertex_import.file_required");c(T=>({...T,error:O})),e(O,"warning");return}const M=r.location.trim();c(O=>({...O,loading:!0,error:void 0,result:void 0}));try{const O=await o$.importCredential(r.file,M||void 0),T={projectId:O.project_id,email:O.email,location:O.location,authFile:O["auth-file"]??O.auth_file};c(P=>({...P,loading:!1,result:T})),e(t("vertex_import.success"),"success")}catch(O){const T=cf(O);c(E=>({...E,loading:!1,error:T||t("notification.upload_failed")}));const P=T?`${t("notification.upload_failed")}: ${T}`:t("notification.upload_failed");e(P,"error")}};return h.jsxs("div",{className:dt.container,children:[h.jsx("h1",{className:dt.pageTitle,children:t("nav.oauth",{defaultValue:"OAuth"})}),h.jsxs("div",{className:dt.content,children:[Kle.map(M=>{const O=i[M.id]||{},T=Vle.includes(M.id)&&!!O.url;return h.jsx("div",{children:h.jsx(jt,{title:h.jsxs("span",{className:dt.cardTitle,children:[h.jsx("img",{src:Wle(M.icon,n),alt:"",className:dt.cardTitleIcon}),t(M.titleKey)]}),extra:h.jsx(he,{onClick:()=>_(M.id),loading:O.polling,children:t("common.login")}),children:h.jsxs("div",{className:dt.cardContent,children:[h.jsx("div",{className:dt.cardHint,children:t(M.hintKey)}),M.id==="gemini-cli"&&h.jsx("div",{className:dt.geminiProjectField,children:h.jsx(lt,{label:t("auth_login.gemini_cli_project_id_label"),hint:t("auth_login.gemini_cli_project_id_hint"),value:O.projectId||"",error:O.projectIdError,disabled:!!O.polling,onChange:P=>g(M.id,{projectId:P.target.value,projectIdError:void 0}),placeholder:t("auth_login.gemini_cli_project_id_placeholder")})}),O.url&&h.jsxs("div",{className:dt.authUrlBox,children:[h.jsx("div",{className:dt.authUrlLabel,children:t(M.urlLabelKey)}),h.jsx("div",{className:dt.authUrlValue,children:O.url}),h.jsxs("div",{className:dt.authUrlActions,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>v(O.url),children:t(al(M.id,"copy_link"))}),h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>window.open(O.url,"_blank","noopener,noreferrer"),children:t(al(M.id,"open_link"))})]})]}),T&&h.jsxs("div",{className:dt.callbackSection,children:[h.jsx(lt,{label:t("auth_login.oauth_callback_label"),hint:t("auth_login.oauth_callback_hint"),value:O.callbackUrl||"",onChange:P=>g(M.id,{callbackUrl:P.target.value,callbackStatus:void 0,callbackError:void 0}),placeholder:t("auth_login.oauth_callback_placeholder")}),h.jsx("div",{className:dt.callbackActions,children:h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>x(M.id),loading:O.callbackSubmitting,children:t("auth_login.oauth_callback_button")})}),O.callbackStatus==="success"&&O.status==="waiting"&&h.jsx("div",{className:"status-badge success",children:t("auth_login.oauth_callback_status_success")}),O.callbackStatus==="error"&&h.jsxs("div",{className:"status-badge error",children:[t("auth_login.oauth_callback_status_error")," ",O.callbackError||""]})]}),O.status&&O.status!=="idle"&&h.jsx("div",{className:"status-badge",children:O.status==="success"?t(al(M.id,"oauth_status_success")):O.status==="error"?`${t(al(M.id,"oauth_status_error"))} ${O.error||""}`:t(al(M.id,"oauth_status_waiting"))})]})})},M.id)}),h.jsx(jt,{title:h.jsxs("span",{className:dt.cardTitle,children:[h.jsx("img",{src:zy,alt:"",className:dt.cardTitleIcon}),t("vertex_import.title")]}),extra:h.jsx(he,{onClick:L,loading:r.loading,children:t("vertex_import.import_button")}),children:h.jsxs("div",{className:dt.cardContent,children:[h.jsx("div",{className:dt.cardHint,children:t("vertex_import.description")}),h.jsx(lt,{label:t("vertex_import.location_label"),hint:t("vertex_import.location_hint"),value:r.location,onChange:M=>c(O=>({...O,location:M.target.value})),placeholder:t("vertex_import.location_placeholder")}),h.jsxs("div",{className:dt.formItem,children:[h.jsx("label",{className:dt.formItemLabel,children:t("vertex_import.file_label")}),h.jsxs("div",{className:dt.filePicker,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:C,children:t("vertex_import.choose_file")}),h.jsx("div",{className:`${dt.fileName} ${r.fileName?"":dt.fileNamePlaceholder}`.trim(),children:r.fileName||t("vertex_import.file_placeholder")})]}),h.jsx("div",{className:dt.cardHintSecondary,children:t("vertex_import.file_hint")}),h.jsx("input",{ref:f,type:"file",accept:".json,application/json",style:{display:"none"},onChange:N})]}),r.error&&h.jsx("div",{className:"status-badge error",children:r.error}),r.result&&h.jsxs("div",{className:dt.connectionBox,children:[h.jsx("div",{className:dt.connectionLabel,children:t("vertex_import.result_title")}),h.jsxs("div",{className:dt.keyValueList,children:[r.result.projectId&&h.jsxs("div",{className:dt.keyValueItem,children:[h.jsx("span",{className:dt.keyValueKey,children:t("vertex_import.result_project")}),h.jsx("span",{className:dt.keyValueValue,children:r.result.projectId})]}),r.result.email&&h.jsxs("div",{className:dt.keyValueItem,children:[h.jsx("span",{className:dt.keyValueKey,children:t("vertex_import.result_email")}),h.jsx("span",{className:dt.keyValueValue,children:r.result.email})]}),r.result.location&&h.jsxs("div",{className:dt.keyValueItem,children:[h.jsx("span",{className:dt.keyValueKey,children:t("vertex_import.result_location")}),h.jsx("span",{className:dt.keyValueValue,children:r.result.location})]}),r.result.authFile&&h.jsxs("div",{className:dt.keyValueItem,children:[h.jsx("span",{className:dt.keyValueKey,children:t("vertex_import.result_file")}),h.jsx("span",{className:dt.keyValueValue,children:r.result.authFile})]})]})]})]})}),h.jsx(jt,{title:h.jsxs("span",{className:dt.cardTitle,children:[h.jsx("img",{src:u5,alt:"",className:dt.cardTitleIcon}),t("auth_login.iflow_cookie_title")]}),extra:h.jsx(he,{onClick:k,loading:a.loading,children:t("auth_login.iflow_cookie_button")}),children:h.jsxs("div",{className:dt.cardContent,children:[h.jsx("div",{className:dt.cardHint,children:t("auth_login.iflow_cookie_hint")}),h.jsx("div",{className:dt.cardHintSecondary,children:t("auth_login.iflow_cookie_key_hint")}),h.jsxs("div",{className:dt.formItem,children:[h.jsx("label",{className:dt.formItemLabel,children:t("auth_login.iflow_cookie_label")}),h.jsx(lt,{value:a.cookie,onChange:M=>o(O=>({...O,cookie:M.target.value})),placeholder:t("auth_login.iflow_cookie_placeholder")})]}),a.error&&h.jsxs("div",{className:`status-badge ${a.errorType==="warning"?"warning":"error"}`,children:[a.errorType==="warning"?t("auth_login.iflow_cookie_status_duplicate"):t("auth_login.iflow_cookie_status_error")," ",a.error]}),a.result&&a.result.status==="ok"&&h.jsxs("div",{className:dt.connectionBox,children:[h.jsx("div",{className:dt.connectionLabel,children:t("auth_login.iflow_cookie_result_title")}),h.jsxs("div",{className:dt.keyValueList,children:[a.result.email&&h.jsxs("div",{className:dt.keyValueItem,children:[h.jsx("span",{className:dt.keyValueKey,children:t("auth_login.iflow_cookie_result_email")}),h.jsx("span",{className:dt.keyValueValue,children:a.result.email})]}),a.result.expired&&h.jsxs("div",{className:dt.keyValueItem,children:[h.jsx("span",{className:dt.keyValueKey,children:t("auth_login.iflow_cookie_result_expired")}),h.jsx("span",{className:dt.keyValueValue,children:a.result.expired})]}),a.result.saved_path&&h.jsxs("div",{className:dt.keyValueItem,children:[h.jsx("span",{className:dt.keyValueKey,children:t("auth_login.iflow_cookie_result_path")}),h.jsx("span",{className:dt.keyValueValue,children:a.result.saved_path})]}),a.result.type&&h.jsxs("div",{className:dt.keyValueItem,children:[h.jsx("span",{className:dt.keyValueKey,children:t("auth_login.iflow_cookie_result_type")}),h.jsx("span",{className:dt.keyValueValue,children:a.result.type})]})]})]})]})})]})]})}function $le(){const{t}=nt(),e=en(g=>g.connectionStatus),[n,i]=S.useState([]),[s,a]=S.useState(!0),[o,r]=S.useState(""),c=e!=="connected",d=S.useCallback(async()=>{try{await Cf.fetchConfigYaml()}catch(g){const y=g instanceof Error?g.message:t("notification.refresh_failed");r(_=>_||y)}},[t]),f=S.useCallback(async()=>{a(!0),r("");try{const g=await At.list();i(g?.files||[])}catch(g){const y=g instanceof Error?g.message:t("notification.refresh_failed");r(y)}finally{a(!1)}},[t]),p=S.useCallback(async()=>{await Promise.all([d(),f()])},[d,f]);return rp(p),S.useEffect(()=>{f(),d()},[f,d]),h.jsxs("div",{className:gt.container,children:[h.jsxs("div",{className:gt.pageHeader,children:[h.jsx("h1",{className:gt.pageTitle,children:t("quota_management.title")}),h.jsx("p",{className:gt.description,children:t("quota_management.description")})]}),o&&h.jsx("div",{className:gt.errorBox,children:o}),h.jsx(lf,{config:x5,files:n,loading:s,disabled:c}),h.jsx(lf,{config:S5,files:n,loading:s,disabled:c}),h.jsx(lf,{config:w5,files:n,loading:s,disabled:c}),h.jsx(lf,{config:k5,files:n,loading:s,disabled:c}),h.jsx(lf,{config:C5,files:n,loading:s,disabled:c})]})}function mp(t){return t+.5|0}const _l=(t,e,n)=>Math.max(Math.min(t,n),e);function Mf(t){return _l(mp(t*2.55),0,255)}function kl(t){return _l(mp(t*255),0,255)}function fr(t){return _l(mp(t/2.55)/100,0,1)}function eP(t){return _l(mp(t*100),0,100)}const pa={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},J2=[..."0123456789ABCDEF"],Xle=t=>J2[t&15],Qle=t=>J2[(t&240)>>4]+J2[t&15],i_=t=>(t&240)>>4===(t&15),Yle=t=>i_(t.r)&&i_(t.g)&&i_(t.b)&&i_(t.a);function Jle(t){var e=t.length,n;return t[0]==="#"&&(e===4||e===5?n={r:255&pa[t[1]]*17,g:255&pa[t[2]]*17,b:255&pa[t[3]]*17,a:e===5?pa[t[4]]*17:255}:(e===7||e===9)&&(n={r:pa[t[1]]<<4|pa[t[2]],g:pa[t[3]]<<4|pa[t[4]],b:pa[t[5]]<<4|pa[t[6]],a:e===9?pa[t[7]]<<4|pa[t[8]]:255})),n}const Zle=(t,e)=>t<255?e(t):"";function ece(t){var e=Yle(t)?Xle:Qle;return t?"#"+e(t.r)+e(t.g)+e(t.b)+Zle(t.a,e):void 0}const tce=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function T5(t,e,n){const i=e*Math.min(n,1-n),s=(a,o=(a+t/30)%12)=>n-i*Math.max(Math.min(o-3,9-o,1),-1);return[s(0),s(8),s(4)]}function nce(t,e,n){const i=(s,a=(s+t/60)%6)=>n-n*e*Math.max(Math.min(a,4-a,1),0);return[i(5),i(3),i(1)]}function ice(t,e,n){const i=T5(t,1,.5);let s;for(e+n>1&&(s=1/(e+n),e*=s,n*=s),s=0;s<3;s++)i[s]*=1-e-n,i[s]+=e;return i}function sce(t,e,n,i,s){return t===s?(e-n)/i+(e<n?6:0):e===s?(n-t)/i+2:(t-e)/i+4}function ak(t){const n=t.r/255,i=t.g/255,s=t.b/255,a=Math.max(n,i,s),o=Math.min(n,i,s),r=(a+o)/2;let c,d,f;return a!==o&&(f=a-o,d=r>.5?f/(2-a-o):f/(a+o),c=sce(n,i,s,f,a),c=c*60+.5),[c|0,d||0,r]}function ok(t,e,n,i){return(Array.isArray(e)?t(e[0],e[1],e[2]):t(e,n,i)).map(kl)}function rk(t,e,n){return ok(T5,t,e,n)}function ace(t,e,n){return ok(ice,t,e,n)}function oce(t,e,n){return ok(nce,t,e,n)}function M5(t){return(t%360+360)%360}function rce(t){const e=tce.exec(t);let n=255,i;if(!e)return;e[5]!==i&&(n=e[6]?Mf(+e[5]):kl(+e[5]));const s=M5(+e[2]),a=+e[3]/100,o=+e[4]/100;return e[1]==="hwb"?i=ace(s,a,o):e[1]==="hsv"?i=oce(s,a,o):i=rk(s,a,o),{r:i[0],g:i[1],b:i[2],a:n}}function lce(t,e){var n=ak(t);n[0]=M5(n[0]+e),n=rk(n),t.r=n[0],t.g=n[1],t.b=n[2]}function cce(t){if(!t)return;const e=ak(t),n=e[0],i=eP(e[1]),s=eP(e[2]);return t.a<255?`hsla(${n}, ${i}%, ${s}%, ${fr(t.a)})`:`hsl(${n}, ${i}%, ${s}%)`}const tP={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},nP={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};function uce(){const t={},e=Object.keys(nP),n=Object.keys(tP);let i,s,a,o,r;for(i=0;i<e.length;i++){for(o=r=e[i],s=0;s<n.length;s++)a=n[s],r=r.replace(a,tP[a]);a=parseInt(nP[o],16),t[r]=[a>>16&255,a>>8&255,a&255]}return t}let s_;function dce(t){s_||(s_=uce(),s_.transparent=[0,0,0,0]);const e=s_[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:e.length===4?e[3]:255}}const hce=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function fce(t){const e=hce.exec(t);let n=255,i,s,a;if(e){if(e[7]!==i){const o=+e[7];n=e[8]?Mf(o):_l(o*255,0,255)}return i=+e[1],s=+e[3],a=+e[5],i=255&(e[2]?Mf(i):_l(i,0,255)),s=255&(e[4]?Mf(s):_l(s,0,255)),a=255&(e[6]?Mf(a):_l(a,0,255)),{r:i,g:s,b:a,a:n}}}function mce(t){return t&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${fr(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`)}const g1=t=>t<=.0031308?t*12.92:Math.pow(t,1/2.4)*1.055-.055,Bu=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function pce(t,e,n){const i=Bu(fr(t.r)),s=Bu(fr(t.g)),a=Bu(fr(t.b));return{r:kl(g1(i+n*(Bu(fr(e.r))-i))),g:kl(g1(s+n*(Bu(fr(e.g))-s))),b:kl(g1(a+n*(Bu(fr(e.b))-a))),a:t.a+n*(e.a-t.a)}}function a_(t,e,n){if(t){let i=ak(t);i[e]=Math.max(0,Math.min(i[e]+i[e]*n,e===0?360:1)),i=rk(i),t.r=i[0],t.g=i[1],t.b=i[2]}}function L5(t,e){return t&&Object.assign(e||{},t)}function iP(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=kl(t[3]))):(e=L5(t,{r:0,g:0,b:0,a:1}),e.a=kl(e.a)),e}function gce(t){return t.charAt(0)==="r"?fce(t):rce(t)}class gm{constructor(e){if(e instanceof gm)return e;const n=typeof e;let i;n==="object"?i=iP(e):n==="string"&&(i=Jle(e)||dce(e)||gce(e)),this._rgb=i,this._valid=!!i}get valid(){return this._valid}get rgb(){var e=L5(this._rgb);return e&&(e.a=fr(e.a)),e}set rgb(e){this._rgb=iP(e)}rgbString(){return this._valid?mce(this._rgb):void 0}hexString(){return this._valid?ece(this._rgb):void 0}hslString(){return this._valid?cce(this._rgb):void 0}mix(e,n){if(e){const i=this.rgb,s=e.rgb;let a;const o=n===a?.5:n,r=2*o-1,c=i.a-s.a,d=((r*c===-1?r:(r+c)/(1+r*c))+1)/2;a=1-d,i.r=255&d*i.r+a*s.r+.5,i.g=255&d*i.g+a*s.g+.5,i.b=255&d*i.b+a*s.b+.5,i.a=o*i.a+(1-o)*s.a,this.rgb=i}return this}interpolate(e,n){return e&&(this._rgb=pce(this._rgb,e._rgb,n)),this}clone(){return new gm(this.rgb)}alpha(e){return this._rgb.a=kl(e),this}clearer(e){const n=this._rgb;return n.a*=1-e,this}greyscale(){const e=this._rgb,n=mp(e.r*.3+e.g*.59+e.b*.11);return e.r=e.g=e.b=n,this}opaquer(e){const n=this._rgb;return n.a*=1+e,this}negate(){const e=this._rgb;return e.r=255-e.r,e.g=255-e.g,e.b=255-e.b,this}lighten(e){return a_(this._rgb,2,e),this}darken(e){return a_(this._rgb,2,-e),this}saturate(e){return a_(this._rgb,1,e),this}desaturate(e){return a_(this._rgb,1,-e),this}rotate(e){return lce(this._rgb,e),this}}function ar(){}const _ce=(()=>{let t=0;return()=>t++})();function En(t){return t==null}function Ai(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return e.slice(0,7)==="[object"&&e.slice(-6)==="Array]"}function ln(t){return t!==null&&Object.prototype.toString.call(t)==="[object Object]"}function ls(t){return(typeof t=="number"||t instanceof Number)&&isFinite(+t)}function oo(t,e){return ls(t)?t:e}function sn(t,e){return typeof t>"u"?e:t}const yce=(t,e)=>typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100*e:+t;function In(t,e,n){if(t&&typeof t.call=="function")return t.apply(n,e)}function Sn(t,e,n,i){let s,a,o;if(Ai(t))for(a=t.length,s=0;s<a;s++)e.call(n,t[s],s);else if(ln(t))for(o=Object.keys(t),a=o.length,s=0;s<a;s++)e.call(n,t[o[s]],o[s])}function I0(t,e){let n,i,s,a;if(!t||!e||t.length!==e.length)return!1;for(n=0,i=t.length;n<i;++n)if(s=t[n],a=e[n],s.datasetIndex!==a.datasetIndex||s.index!==a.index)return!1;return!0}function B0(t){if(Ai(t))return t.map(B0);if(ln(t)){const e=Object.create(null),n=Object.keys(t),i=n.length;let s=0;for(;s<i;++s)e[n[s]]=B0(t[n[s]]);return e}return t}function O5(t){return["__proto__","prototype","constructor"].indexOf(t)===-1}function bce(t,e,n,i){if(!O5(t))return;const s=e[t],a=n[t];ln(s)&&ln(a)?_m(s,a,i):e[t]=B0(a)}function _m(t,e,n){const i=Ai(e)?e:[e],s=i.length;if(!ln(t))return t;n=n||{};const a=n.merger||bce;let o;for(let r=0;r<s;++r){if(o=i[r],!ln(o))continue;const c=Object.keys(o);for(let d=0,f=c.length;d<f;++d)a(c[d],t,o,n)}return t}function Gf(t,e){return _m(t,e,{merger:vce})}function vce(t,e,n){if(!O5(t))return;const i=e[t],s=n[t];ln(i)&&ln(s)?Gf(i,s):Object.prototype.hasOwnProperty.call(e,t)||(e[t]=B0(s))}const sP={"":t=>t,x:t=>t.x,y:t=>t.y};function xce(t){const e=t.split("."),n=[];let i="";for(const s of e)i+=s,i.endsWith("\\")?i=i.slice(0,-1)+".":(n.push(i),i="");return n}function Sce(t){const e=xce(t);return n=>{for(const i of e){if(i==="")break;n=n&&n[i]}return n}}function U0(t,e){return(sP[e]||(sP[e]=Sce(e)))(t)}function lk(t){return t.charAt(0).toUpperCase()+t.slice(1)}const q0=t=>typeof t<"u",Ml=t=>typeof t=="function",aP=(t,e)=>{if(t.size!==e.size)return!1;for(const n of t)if(!e.has(n))return!1;return!0};function wce(t){return t.type==="mouseup"||t.type==="click"||t.type==="contextmenu"}const ji=Math.PI,Wa=2*ji,kce=Wa+ji,z0=Number.POSITIVE_INFINITY,Cce=ji/180,Va=ji/2,ac=ji/4,oP=ji*2/3,P5=Math.log10,Ad=Math.sign;function $f(t,e,n){return Math.abs(t-e)<n}function rP(t){const e=Math.round(t);t=$f(t,e,t/1e3)?e:t;const n=Math.pow(10,Math.floor(P5(t))),i=t/n;return(i<=1?1:i<=2?2:i<=5?5:10)*n}function Ace(t){const e=[],n=Math.sqrt(t);let i;for(i=1;i<n;i++)t%i===0&&(e.push(i),e.push(t/i));return n===(n|0)&&e.push(n),e.sort((s,a)=>s-a).pop(),e}function Nce(t){return typeof t=="symbol"||typeof t=="object"&&t!==null&&!(Symbol.toPrimitive in t||"toString"in t||"valueOf"in t)}function ym(t){return!Nce(t)&&!isNaN(parseFloat(t))&&isFinite(t)}function Tce(t,e){const n=Math.round(t);return n-e<=t&&n+e>=t}function Mce(t,e,n){let i,s,a;for(i=0,s=t.length;i<s;i++)a=t[i][n],isNaN(a)||(e.min=Math.min(e.min,a),e.max=Math.max(e.max,a))}function Sc(t){return t*(ji/180)}function Lce(t){return t*(180/ji)}function lP(t){if(!ls(t))return;let e=1,n=0;for(;Math.round(t*e)/e!==t;)e*=10,n++;return n}function Oce(t,e){const n=e.x-t.x,i=e.y-t.y,s=Math.sqrt(n*n+i*i);let a=Math.atan2(i,n);return a<-.5*ji&&(a+=Wa),{angle:a,distance:s}}function Z2(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function Pce(t,e){return(t-e+kce)%Wa-ji}function _o(t){return(t%Wa+Wa)%Wa}function E5(t,e,n,i){const s=_o(t),a=_o(e),o=_o(n),r=_o(a-s),c=_o(o-s),d=_o(s-a),f=_o(s-o);return s===a||s===o||i&&a===o||r>c&&d<f}function ya(t,e,n){return Math.max(e,Math.min(n,t))}function Ece(t){return ya(t,-32768,32767)}function Zu(t,e,n,i=1e-6){return t>=Math.min(e,n)-i&&t<=Math.max(e,n)+i}function ck(t,e,n){n=n||(o=>t[o]<e);let i=t.length-1,s=0,a;for(;i-s>1;)a=s+i>>1,n(a)?s=a:i=a;return{lo:s,hi:i}}const wc=(t,e,n,i)=>ck(t,n,i?s=>{const a=t[s][e];return a<n||a===n&&t[s+1][e]===n}:s=>t[s][e]<n),jce=(t,e,n)=>ck(t,n,i=>t[i][e]>=n);function Rce(t,e,n){let i=0,s=t.length;for(;i<s&&t[i]<e;)i++;for(;s>i&&t[s-1]>n;)s--;return i>0||s<t.length?t.slice(i,s):t}const j5=["push","pop","shift","splice","unshift"];function Dce(t,e){if(t._chartjs){t._chartjs.listeners.push(e);return}Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),j5.forEach(n=>{const i="_onData"+lk(n),s=t[n];Object.defineProperty(t,n,{configurable:!0,enumerable:!1,value(...a){const o=s.apply(this,a);return t._chartjs.listeners.forEach(r=>{typeof r[i]=="function"&&r[i](...a)}),o}})})}function cP(t,e){const n=t._chartjs;if(!n)return;const i=n.listeners,s=i.indexOf(e);s!==-1&&i.splice(s,1),!(i.length>0)&&(j5.forEach(a=>{delete t[a]}),delete t._chartjs)}function Fce(t){const e=new Set(t);return e.size===t.length?t:Array.from(e)}const R5=(function(){return typeof window>"u"?function(t){return t()}:window.requestAnimationFrame})();function D5(t,e){let n=[],i=!1;return function(...s){n=s,i||(i=!0,R5.call(window,()=>{i=!1,t.apply(e,n)}))}}function Ice(t,e){let n;return function(...i){return e?(clearTimeout(n),n=setTimeout(t,e,i)):t.apply(this,i),e}}const uk=t=>t==="start"?"left":t==="end"?"right":"center",Ji=(t,e,n)=>t==="start"?e:t==="end"?n:(e+n)/2,Bce=(t,e,n,i)=>t===(i?"left":"right")?n:t==="center"?(e+n)/2:e;function Uce(t,e,n){const i=e.length;let s=0,a=i;if(t._sorted){const{iScale:o,vScale:r,_parsed:c}=t,d=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null,f=o.axis,{min:p,max:g,minDefined:y,maxDefined:_}=o.getUserBounds();if(y){if(s=Math.min(wc(c,f,p).lo,n?i:wc(e,f,o.getPixelForValue(p)).lo),d){const v=c.slice(0,s+1).reverse().findIndex(x=>!En(x[r.axis]));s-=Math.max(0,v)}s=ya(s,0,i-1)}if(_){let v=Math.max(wc(c,o.axis,g,!0).hi+1,n?0:wc(e,f,o.getPixelForValue(g),!0).hi+1);if(d){const x=c.slice(v-1).findIndex(k=>!En(k[r.axis]));v+=Math.max(0,x)}a=ya(v,s,i)-s}else a=i-s}return{start:s,count:a}}function qce(t){const{xScale:e,yScale:n,_scaleRanges:i}=t,s={xmin:e.min,xmax:e.max,ymin:n.min,ymax:n.max};if(!i)return t._scaleRanges=s,!0;const a=i.xmin!==e.min||i.xmax!==e.max||i.ymin!==n.min||i.ymax!==n.max;return Object.assign(i,s),a}const o_=t=>t===0||t===1,uP=(t,e,n)=>-(Math.pow(2,10*(t-=1))*Math.sin((t-e)*Wa/n)),dP=(t,e,n)=>Math.pow(2,-10*t)*Math.sin((t-e)*Wa/n)+1,Xf={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>-Math.cos(t*Va)+1,easeOutSine:t=>Math.sin(t*Va),easeInOutSine:t=>-.5*(Math.cos(ji*t)-1),easeInExpo:t=>t===0?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>t===1?1:-Math.pow(2,-10*t)+1,easeInOutExpo:t=>o_(t)?t:t<.5?.5*Math.pow(2,10*(t*2-1)):.5*(-Math.pow(2,-10*(t*2-1))+2),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>o_(t)?t:uP(t,.075,.3),easeOutElastic:t=>o_(t)?t:dP(t,.075,.3),easeInOutElastic(t){return o_(t)?t:t<.5?.5*uP(t*2,.1125,.45):.5+.5*dP(t*2-1,.1125,.45)},easeInBack(t){return t*t*((1.70158+1)*t-1.70158)},easeOutBack(t){return(t-=1)*t*((1.70158+1)*t+1.70158)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?.5*(t*t*(((e*=1.525)+1)*t-e)):.5*((t-=2)*t*(((e*=1.525)+1)*t+e)+2)},easeInBounce:t=>1-Xf.easeOutBounce(1-t),easeOutBounce(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:t=>t<.5?Xf.easeInBounce(t*2)*.5:Xf.easeOutBounce(t*2-1)*.5+.5};function dk(t){if(t&&typeof t=="object"){const e=t.toString();return e==="[object CanvasPattern]"||e==="[object CanvasGradient]"}return!1}function hP(t){return dk(t)?t:new gm(t)}function _1(t){return dk(t)?t:new gm(t).saturate(.5).darken(.1).hexString()}const zce=["x","y","borderWidth","radius","tension"],Kce=["color","borderColor","backgroundColor"];function Vce(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:e=>e!=="onProgress"&&e!=="onComplete"&&e!=="fn"}),t.set("animations",{colors:{type:"color",properties:Kce},numbers:{type:"number",properties:zce}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:e=>e|0}}}})}function Hce(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}const fP=new Map;function Wce(t,e){e=e||{};const n=t+JSON.stringify(e);let i=fP.get(n);return i||(i=new Intl.NumberFormat(t,e),fP.set(n,i)),i}function F5(t,e,n){return Wce(e,n).format(t)}const Gce={values(t){return Ai(t)?t:""+t},numeric(t,e,n){if(t===0)return"0";const i=this.chart.options.locale;let s,a=t;if(n.length>1){const d=Math.max(Math.abs(n[0].value),Math.abs(n[n.length-1].value));(d<1e-4||d>1e15)&&(s="scientific"),a=$ce(t,n)}const o=P5(Math.abs(a)),r=isNaN(o)?1:Math.max(Math.min(-1*Math.floor(o),20),0),c={notation:s,minimumFractionDigits:r,maximumFractionDigits:r};return Object.assign(c,this.options.ticks.format),F5(t,i,c)}};function $ce(t,e){let n=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;return Math.abs(n)>=1&&t!==Math.floor(t)&&(n=t-Math.floor(t)),n}var I5={formatters:Gce};function Xce(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(e,n)=>n.lineWidth,tickColor:(e,n)=>n.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:I5.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:e=>!e.startsWith("before")&&!e.startsWith("after")&&e!=="callback"&&e!=="parser",_indexable:e=>e!=="borderDash"&&e!=="tickBorderDash"&&e!=="dash"}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:e=>e!=="backdropPadding"&&e!=="callback",_indexable:e=>e!=="backdropPadding"})}const Ic=Object.create(null),eS=Object.create(null);function Qf(t,e){if(!e)return t;const n=e.split(".");for(let i=0,s=n.length;i<s;++i){const a=n[i];t=t[a]||(t[a]=Object.create(null))}return t}function y1(t,e,n){return typeof e=="string"?_m(Qf(t,e),n):_m(Qf(t,""),e)}class Qce{constructor(e,n){this.animation=void 0,this.backgroundColor="rgba(0,0,0,0.1)",this.borderColor="rgba(0,0,0,0.1)",this.color="#666",this.datasets={},this.devicePixelRatio=i=>i.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(i,s)=>_1(s.backgroundColor),this.hoverBorderColor=(i,s)=>_1(s.borderColor),this.hoverColor=(i,s)=>_1(s.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(e),this.apply(n)}set(e,n){return y1(this,e,n)}get(e){return Qf(this,e)}describe(e,n){return y1(eS,e,n)}override(e,n){return y1(Ic,e,n)}route(e,n,i,s){const a=Qf(this,e),o=Qf(this,i),r="_"+n;Object.defineProperties(a,{[r]:{value:a[n],writable:!0},[n]:{enumerable:!0,get(){const c=this[r],d=o[s];return ln(c)?Object.assign({},d,c):sn(c,d)},set(c){this[r]=c}}})}apply(e){e.forEach(n=>n(this))}}var oi=new Qce({_scriptable:t=>!t.startsWith("on"),_indexable:t=>t!=="events",hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[Vce,Hce,Xce]);function Yce(t){return!t||En(t.size)||En(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function mP(t,e,n,i,s){let a=e[s];return a||(a=e[s]=t.measureText(s).width,n.push(s)),a>i&&(i=a),i}function oc(t,e,n){const i=t.currentDevicePixelRatio,s=n!==0?Math.max(n/2,.5):0;return Math.round((e-s)*i)/i+s}function pP(t,e){!e&&!t||(e=e||t.getContext("2d"),e.save(),e.resetTransform(),e.clearRect(0,0,t.width,t.height),e.restore())}function tS(t,e,n,i){B5(t,e,n,i,null)}function B5(t,e,n,i,s){let a,o,r,c,d,f,p,g;const y=e.pointStyle,_=e.rotation,v=e.radius;let x=(_||0)*Cce;if(y&&typeof y=="object"&&(a=y.toString(),a==="[object HTMLImageElement]"||a==="[object HTMLCanvasElement]")){t.save(),t.translate(n,i),t.rotate(x),t.drawImage(y,-y.width/2,-y.height/2,y.width,y.height),t.restore();return}if(!(isNaN(v)||v<=0)){switch(t.beginPath(),y){default:s?t.ellipse(n,i,s/2,v,0,0,Wa):t.arc(n,i,v,0,Wa),t.closePath();break;case"triangle":f=s?s/2:v,t.moveTo(n+Math.sin(x)*f,i-Math.cos(x)*v),x+=oP,t.lineTo(n+Math.sin(x)*f,i-Math.cos(x)*v),x+=oP,t.lineTo(n+Math.sin(x)*f,i-Math.cos(x)*v),t.closePath();break;case"rectRounded":d=v*.516,c=v-d,o=Math.cos(x+ac)*c,p=Math.cos(x+ac)*(s?s/2-d:c),r=Math.sin(x+ac)*c,g=Math.sin(x+ac)*(s?s/2-d:c),t.arc(n-p,i-r,d,x-ji,x-Va),t.arc(n+g,i-o,d,x-Va,x),t.arc(n+p,i+r,d,x,x+Va),t.arc(n-g,i+o,d,x+Va,x+ji),t.closePath();break;case"rect":if(!_){c=Math.SQRT1_2*v,f=s?s/2:c,t.rect(n-f,i-c,2*f,2*c);break}x+=ac;case"rectRot":p=Math.cos(x)*(s?s/2:v),o=Math.cos(x)*v,r=Math.sin(x)*v,g=Math.sin(x)*(s?s/2:v),t.moveTo(n-p,i-r),t.lineTo(n+g,i-o),t.lineTo(n+p,i+r),t.lineTo(n-g,i+o),t.closePath();break;case"crossRot":x+=ac;case"cross":p=Math.cos(x)*(s?s/2:v),o=Math.cos(x)*v,r=Math.sin(x)*v,g=Math.sin(x)*(s?s/2:v),t.moveTo(n-p,i-r),t.lineTo(n+p,i+r),t.moveTo(n+g,i-o),t.lineTo(n-g,i+o);break;case"star":p=Math.cos(x)*(s?s/2:v),o=Math.cos(x)*v,r=Math.sin(x)*v,g=Math.sin(x)*(s?s/2:v),t.moveTo(n-p,i-r),t.lineTo(n+p,i+r),t.moveTo(n+g,i-o),t.lineTo(n-g,i+o),x+=ac,p=Math.cos(x)*(s?s/2:v),o=Math.cos(x)*v,r=Math.sin(x)*v,g=Math.sin(x)*(s?s/2:v),t.moveTo(n-p,i-r),t.lineTo(n+p,i+r),t.moveTo(n+g,i-o),t.lineTo(n-g,i+o);break;case"line":o=s?s/2:Math.cos(x)*v,r=Math.sin(x)*v,t.moveTo(n-o,i-r),t.lineTo(n+o,i+r);break;case"dash":t.moveTo(n,i),t.lineTo(n+Math.cos(x)*(s?s/2:v),i+Math.sin(x)*v);break;case!1:t.closePath();break}t.fill(),e.borderWidth>0&&t.stroke()}}function bm(t,e,n){return n=n||.5,!e||t&&t.x>e.left-n&&t.x<e.right+n&&t.y>e.top-n&&t.y<e.bottom+n}function Hy(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()}function Wy(t){t.restore()}function Jce(t,e,n,i,s){if(!e)return t.lineTo(n.x,n.y);if(s==="middle"){const a=(e.x+n.x)/2;t.lineTo(a,e.y),t.lineTo(a,n.y)}else s==="after"!=!!i?t.lineTo(e.x,n.y):t.lineTo(n.x,e.y);t.lineTo(n.x,n.y)}function Zce(t,e,n,i){if(!e)return t.lineTo(n.x,n.y);t.bezierCurveTo(i?e.cp1x:e.cp2x,i?e.cp1y:e.cp2y,i?n.cp2x:n.cp1x,i?n.cp2y:n.cp1y,n.x,n.y)}function eue(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]),En(e.rotation)||t.rotate(e.rotation),e.color&&(t.fillStyle=e.color),e.textAlign&&(t.textAlign=e.textAlign),e.textBaseline&&(t.textBaseline=e.textBaseline)}function tue(t,e,n,i,s){if(s.strikethrough||s.underline){const a=t.measureText(i),o=e-a.actualBoundingBoxLeft,r=e+a.actualBoundingBoxRight,c=n-a.actualBoundingBoxAscent,d=n+a.actualBoundingBoxDescent,f=s.strikethrough?(c+d)/2:d;t.strokeStyle=t.fillStyle,t.beginPath(),t.lineWidth=s.decorationWidth||2,t.moveTo(o,f),t.lineTo(r,f),t.stroke()}}function nue(t,e){const n=t.fillStyle;t.fillStyle=e.color,t.fillRect(e.left,e.top,e.width,e.height),t.fillStyle=n}function vm(t,e,n,i,s,a={}){const o=Ai(e)?e:[e],r=a.strokeWidth>0&&a.strokeColor!=="";let c,d;for(t.save(),t.font=s.string,eue(t,a),c=0;c<o.length;++c)d=o[c],a.backdrop&&nue(t,a.backdrop),r&&(a.strokeColor&&(t.strokeStyle=a.strokeColor),En(a.strokeWidth)||(t.lineWidth=a.strokeWidth),t.strokeText(d,n,i,a.maxWidth)),t.fillText(d,n,i,a.maxWidth),tue(t,n,i,d,a),i+=Number(s.lineHeight);t.restore()}function nS(t,e){const{x:n,y:i,w:s,h:a,radius:o}=e;t.arc(n+o.topLeft,i+o.topLeft,o.topLeft,1.5*ji,ji,!0),t.lineTo(n,i+a-o.bottomLeft),t.arc(n+o.bottomLeft,i+a-o.bottomLeft,o.bottomLeft,ji,Va,!0),t.lineTo(n+s-o.bottomRight,i+a),t.arc(n+s-o.bottomRight,i+a-o.bottomRight,o.bottomRight,Va,0,!0),t.lineTo(n+s,i+o.topRight),t.arc(n+s-o.topRight,i+o.topRight,o.topRight,0,-Va,!0),t.lineTo(n+o.topLeft,i)}const iue=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,sue=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function aue(t,e){const n=(""+t).match(iue);if(!n||n[1]==="normal")return e*1.2;switch(t=+n[2],n[3]){case"px":return t;case"%":t/=100;break}return e*t}const oue=t=>+t||0;function U5(t,e){const n={},i=ln(e),s=i?Object.keys(e):e,a=ln(t)?i?o=>sn(t[o],t[e[o]]):o=>t[o]:()=>t;for(const o of s)n[o]=oue(a(o));return n}function rue(t){return U5(t,{top:"y",right:"x",bottom:"y",left:"x"})}function Yf(t){return U5(t,["topLeft","topRight","bottomLeft","bottomRight"])}function Ta(t){const e=rue(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function as(t,e){t=t||{},e=e||oi.font;let n=sn(t.size,e.size);typeof n=="string"&&(n=parseInt(n,10));let i=sn(t.style,e.style);i&&!(""+i).match(sue)&&(console.warn('Invalid font style specified: "'+i+'"'),i=void 0);const s={family:sn(t.family,e.family),lineHeight:aue(sn(t.lineHeight,e.lineHeight),n),size:n,style:i,weight:sn(t.weight,e.weight),string:""};return s.string=Yce(s),s}function r_(t,e,n,i){let s,a,o;for(s=0,a=t.length;s<a;++s)if(o=t[s],o!==void 0&&o!==void 0)return o}function lue(t,e,n){const{min:i,max:s}=t,a=yce(e,(s-i)/2),o=(r,c)=>n&&r===0?0:r+c;return{min:o(i,-Math.abs(a)),max:o(s,a)}}function Xc(t,e){return Object.assign(Object.create(t),e)}function hk(t,e=[""],n,i,s=()=>t[0]){const a=n||t;typeof i>"u"&&(i=V5("_fallback",t));const o={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:a,_fallback:i,_getTarget:s,override:r=>hk([r,...t],e,a,i)};return new Proxy(o,{deleteProperty(r,c){return delete r[c],delete r._keys,delete t[0][c],!0},get(r,c){return z5(r,c,()=>gue(c,e,t,r))},getOwnPropertyDescriptor(r,c){return Reflect.getOwnPropertyDescriptor(r._scopes[0],c)},getPrototypeOf(){return Reflect.getPrototypeOf(t[0])},has(r,c){return _P(r).includes(c)},ownKeys(r){return _P(r)},set(r,c,d){const f=r._storage||(r._storage=s());return r[c]=f[c]=d,delete r._keys,!0}})}function Nd(t,e,n,i){const s={_cacheable:!1,_proxy:t,_context:e,_subProxy:n,_stack:new Set,_descriptors:q5(t,i),setContext:a=>Nd(t,a,n,i),override:a=>Nd(t.override(a),e,n,i)};return new Proxy(s,{deleteProperty(a,o){return delete a[o],delete t[o],!0},get(a,o,r){return z5(a,o,()=>uue(a,o,r))},getOwnPropertyDescriptor(a,o){return a._descriptors.allKeys?Reflect.has(t,o)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,o)},getPrototypeOf(){return Reflect.getPrototypeOf(t)},has(a,o){return Reflect.has(t,o)},ownKeys(){return Reflect.ownKeys(t)},set(a,o,r){return t[o]=r,delete a[o],!0}})}function q5(t,e={scriptable:!0,indexable:!0}){const{_scriptable:n=e.scriptable,_indexable:i=e.indexable,_allKeys:s=e.allKeys}=t;return{allKeys:s,scriptable:n,indexable:i,isScriptable:Ml(n)?n:()=>n,isIndexable:Ml(i)?i:()=>i}}const cue=(t,e)=>t?t+lk(e):e,fk=(t,e)=>ln(e)&&t!=="adapters"&&(Object.getPrototypeOf(e)===null||e.constructor===Object);function z5(t,e,n){if(Object.prototype.hasOwnProperty.call(t,e)||e==="constructor")return t[e];const i=n();return t[e]=i,i}function uue(t,e,n){const{_proxy:i,_context:s,_subProxy:a,_descriptors:o}=t;let r=i[e];return Ml(r)&&o.isScriptable(e)&&(r=due(e,r,t,n)),Ai(r)&&r.length&&(r=hue(e,r,t,o.isIndexable)),fk(e,r)&&(r=Nd(r,s,a&&a[e],o)),r}function due(t,e,n,i){const{_proxy:s,_context:a,_subProxy:o,_stack:r}=n;if(r.has(t))throw new Error("Recursion detected: "+Array.from(r).join("->")+"->"+t);r.add(t);let c=e(a,o||i);return r.delete(t),fk(t,c)&&(c=mk(s._scopes,s,t,c)),c}function hue(t,e,n,i){const{_proxy:s,_context:a,_subProxy:o,_descriptors:r}=n;if(typeof a.index<"u"&&i(t))return e[a.index%e.length];if(ln(e[0])){const c=e,d=s._scopes.filter(f=>f!==c);e=[];for(const f of c){const p=mk(d,s,t,f);e.push(Nd(p,a,o&&o[t],r))}}return e}function K5(t,e,n){return Ml(t)?t(e,n):t}const fue=(t,e)=>t===!0?e:typeof t=="string"?U0(e,t):void 0;function mue(t,e,n,i,s){for(const a of e){const o=fue(n,a);if(o){t.add(o);const r=K5(o._fallback,n,s);if(typeof r<"u"&&r!==n&&r!==i)return r}else if(o===!1&&typeof i<"u"&&n!==i)return null}return!1}function mk(t,e,n,i){const s=e._rootScopes,a=K5(e._fallback,n,i),o=[...t,...s],r=new Set;r.add(i);let c=gP(r,o,n,a||n,i);return c===null||typeof a<"u"&&a!==n&&(c=gP(r,o,a,c,i),c===null)?!1:hk(Array.from(r),[""],s,a,()=>pue(e,n,i))}function gP(t,e,n,i,s){for(;n;)n=mue(t,e,n,i,s);return n}function pue(t,e,n){const i=t._getTarget();e in i||(i[e]={});const s=i[e];return Ai(s)&&ln(n)?n:s||{}}function gue(t,e,n,i){let s;for(const a of e)if(s=V5(cue(a,t),n),typeof s<"u")return fk(t,s)?mk(n,i,t,s):s}function V5(t,e){for(const n of e){if(!n)continue;const i=n[t];if(typeof i<"u")return i}}function _P(t){let e=t._keys;return e||(e=t._keys=_ue(t._scopes)),e}function _ue(t){const e=new Set;for(const n of t)for(const i of Object.keys(n).filter(s=>!s.startsWith("_")))e.add(i);return Array.from(e)}const yue=Number.EPSILON||1e-14,Td=(t,e)=>e<t.length&&!t[e].skip&&t[e],H5=t=>t==="x"?"y":"x";function bue(t,e,n,i){const s=t.skip?e:t,a=e,o=n.skip?e:n,r=Z2(a,s),c=Z2(o,a);let d=r/(r+c),f=c/(r+c);d=isNaN(d)?0:d,f=isNaN(f)?0:f;const p=i*d,g=i*f;return{previous:{x:a.x-p*(o.x-s.x),y:a.y-p*(o.y-s.y)},next:{x:a.x+g*(o.x-s.x),y:a.y+g*(o.y-s.y)}}}function vue(t,e,n){const i=t.length;let s,a,o,r,c,d=Td(t,0);for(let f=0;f<i-1;++f)if(c=d,d=Td(t,f+1),!(!c||!d)){if($f(e[f],0,yue)){n[f]=n[f+1]=0;continue}s=n[f]/e[f],a=n[f+1]/e[f],r=Math.pow(s,2)+Math.pow(a,2),!(r<=9)&&(o=3/Math.sqrt(r),n[f]=s*o*e[f],n[f+1]=a*o*e[f])}}function xue(t,e,n="x"){const i=H5(n),s=t.length;let a,o,r,c=Td(t,0);for(let d=0;d<s;++d){if(o=r,r=c,c=Td(t,d+1),!r)continue;const f=r[n],p=r[i];o&&(a=(f-o[n])/3,r[`cp1${n}`]=f-a,r[`cp1${i}`]=p-a*e[d]),c&&(a=(c[n]-f)/3,r[`cp2${n}`]=f+a,r[`cp2${i}`]=p+a*e[d])}}function Sue(t,e="x"){const n=H5(e),i=t.length,s=Array(i).fill(0),a=Array(i);let o,r,c,d=Td(t,0);for(o=0;o<i;++o)if(r=c,c=d,d=Td(t,o+1),!!c){if(d){const f=d[e]-c[e];s[o]=f!==0?(d[n]-c[n])/f:0}a[o]=r?d?Ad(s[o-1])!==Ad(s[o])?0:(s[o-1]+s[o])/2:s[o-1]:s[o]}vue(t,s,a),xue(t,a,e)}function l_(t,e,n){return Math.max(Math.min(t,n),e)}function wue(t,e){let n,i,s,a,o,r=bm(t[0],e);for(n=0,i=t.length;n<i;++n)o=a,a=r,r=n<i-1&&bm(t[n+1],e),a&&(s=t[n],o&&(s.cp1x=l_(s.cp1x,e.left,e.right),s.cp1y=l_(s.cp1y,e.top,e.bottom)),r&&(s.cp2x=l_(s.cp2x,e.left,e.right),s.cp2y=l_(s.cp2y,e.top,e.bottom)))}function kue(t,e,n,i,s){let a,o,r,c;if(e.spanGaps&&(t=t.filter(d=>!d.skip)),e.cubicInterpolationMode==="monotone")Sue(t,s);else{let d=i?t[t.length-1]:t[0];for(a=0,o=t.length;a<o;++a)r=t[a],c=bue(d,r,t[Math.min(a+1,o-(i?0:1))%o],e.tension),r.cp1x=c.previous.x,r.cp1y=c.previous.y,r.cp2x=c.next.x,r.cp2y=c.next.y,d=r}e.capBezierPoints&&wue(t,n)}function pk(){return typeof window<"u"&&typeof document<"u"}function gk(t){let e=t.parentNode;return e&&e.toString()==="[object ShadowRoot]"&&(e=e.host),e}function K0(t,e,n){let i;return typeof t=="string"?(i=parseInt(t,10),t.indexOf("%")!==-1&&(i=i/100*e.parentNode[n])):i=t,i}const Gy=t=>t.ownerDocument.defaultView.getComputedStyle(t,null);function Cue(t,e){return Gy(t).getPropertyValue(e)}const Aue=["top","right","bottom","left"];function Pc(t,e,n){const i={};n=n?"-"+n:"";for(let s=0;s<4;s++){const a=Aue[s];i[a]=parseFloat(t[e+"-"+a+n])||0}return i.width=i.left+i.right,i.height=i.top+i.bottom,i}const Nue=(t,e,n)=>(t>0||e>0)&&(!n||!n.shadowRoot);function Tue(t,e){const n=t.touches,i=n&&n.length?n[0]:t,{offsetX:s,offsetY:a}=i;let o=!1,r,c;if(Nue(s,a,t.target))r=s,c=a;else{const d=e.getBoundingClientRect();r=i.clientX-d.left,c=i.clientY-d.top,o=!0}return{x:r,y:c,box:o}}function hc(t,e){if("native"in t)return t;const{canvas:n,currentDevicePixelRatio:i}=e,s=Gy(n),a=s.boxSizing==="border-box",o=Pc(s,"padding"),r=Pc(s,"border","width"),{x:c,y:d,box:f}=Tue(t,n),p=o.left+(f&&r.left),g=o.top+(f&&r.top);let{width:y,height:_}=e;return a&&(y-=o.width+r.width,_-=o.height+r.height),{x:Math.round((c-p)/y*n.width/i),y:Math.round((d-g)/_*n.height/i)}}function Mue(t,e,n){let i,s;if(e===void 0||n===void 0){const a=t&&gk(t);if(!a)e=t.clientWidth,n=t.clientHeight;else{const o=a.getBoundingClientRect(),r=Gy(a),c=Pc(r,"border","width"),d=Pc(r,"padding");e=o.width-d.width-c.width,n=o.height-d.height-c.height,i=K0(r.maxWidth,a,"clientWidth"),s=K0(r.maxHeight,a,"clientHeight")}}return{width:e,height:n,maxWidth:i||z0,maxHeight:s||z0}}const yl=t=>Math.round(t*10)/10;function Lue(t,e,n,i){const s=Gy(t),a=Pc(s,"margin"),o=K0(s.maxWidth,t,"clientWidth")||z0,r=K0(s.maxHeight,t,"clientHeight")||z0,c=Mue(t,e,n);let{width:d,height:f}=c;if(s.boxSizing==="content-box"){const g=Pc(s,"border","width"),y=Pc(s,"padding");d-=y.width+g.width,f-=y.height+g.height}return d=Math.max(0,d-a.width),f=Math.max(0,i?d/i:f-a.height),d=yl(Math.min(d,o,c.maxWidth)),f=yl(Math.min(f,r,c.maxHeight)),d&&!f&&(f=yl(d/2)),(e!==void 0||n!==void 0)&&i&&c.height&&f>c.height&&(f=c.height,d=yl(Math.floor(f*i))),{width:d,height:f}}function yP(t,e,n){const i=e||1,s=yl(t.height*i),a=yl(t.width*i);t.height=yl(t.height),t.width=yl(t.width);const o=t.canvas;return o.style&&(n||!o.style.height&&!o.style.width)&&(o.style.height=`${t.height}px`,o.style.width=`${t.width}px`),t.currentDevicePixelRatio!==i||o.height!==s||o.width!==a?(t.currentDevicePixelRatio=i,o.height=s,o.width=a,t.ctx.setTransform(i,0,0,i,0,0),!0):!1}const Oue=(function(){let t=!1;try{const e={get passive(){return t=!0,!1}};pk()&&(window.addEventListener("test",null,e),window.removeEventListener("test",null,e))}catch{}return t})();function bP(t,e){const n=Cue(t,e),i=n&&n.match(/^(\d+)(\.\d+)?px$/);return i?+i[1]:void 0}function fc(t,e,n,i){return{x:t.x+n*(e.x-t.x),y:t.y+n*(e.y-t.y)}}function Pue(t,e,n,i){return{x:t.x+n*(e.x-t.x),y:i==="middle"?n<.5?t.y:e.y:i==="after"?n<1?t.y:e.y:n>0?e.y:t.y}}function Eue(t,e,n,i){const s={x:t.cp2x,y:t.cp2y},a={x:e.cp1x,y:e.cp1y},o=fc(t,s,n),r=fc(s,a,n),c=fc(a,e,n),d=fc(o,r,n),f=fc(r,c,n);return fc(d,f,n)}const jue=function(t,e){return{x(n){return t+t+e-n},setWidth(n){e=n},textAlign(n){return n==="center"?n:n==="right"?"left":"right"},xPlus(n,i){return n-i},leftForLtr(n,i){return n-i}}},Rue=function(){return{x(t){return t},setWidth(t){},textAlign(t){return t},xPlus(t,e){return t+e},leftForLtr(t,e){return t}}};function hd(t,e,n){return t?jue(e,n):Rue()}function W5(t,e){let n,i;(e==="ltr"||e==="rtl")&&(n=t.canvas.style,i=[n.getPropertyValue("direction"),n.getPropertyPriority("direction")],n.setProperty("direction",e,"important"),t.prevTextDirection=i)}function G5(t,e){e!==void 0&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function $5(t){return t==="angle"?{between:E5,compare:Pce,normalize:_o}:{between:Zu,compare:(e,n)=>e-n,normalize:e=>e}}function vP({start:t,end:e,count:n,loop:i,style:s}){return{start:t%n,end:e%n,loop:i&&(e-t+1)%n===0,style:s}}function Due(t,e,n){const{property:i,start:s,end:a}=n,{between:o,normalize:r}=$5(i),c=e.length;let{start:d,end:f,loop:p}=t,g,y;if(p){for(d+=c,f+=c,g=0,y=c;g<y&&o(r(e[d%c][i]),s,a);++g)d--,f--;d%=c,f%=c}return f<d&&(f+=c),{start:d,end:f,loop:p,style:t.style}}function X5(t,e,n){if(!n)return[t];const{property:i,start:s,end:a}=n,o=e.length,{compare:r,between:c,normalize:d}=$5(i),{start:f,end:p,loop:g,style:y}=Due(t,e,n),_=[];let v=!1,x=null,k,C,N;const L=()=>c(s,N,k)&&r(s,N)!==0,M=()=>r(a,k)===0||c(a,N,k),O=()=>v||L(),T=()=>!v||M();for(let P=f,E=f;P<=p;++P)C=e[P%o],!C.skip&&(k=d(C[i]),k!==N&&(v=c(k,s,a),x===null&&O()&&(x=r(k,s)===0?P:E),x!==null&&T()&&(_.push(vP({start:x,end:P,loop:g,count:o,style:y})),x=null),E=P,N=k));return x!==null&&_.push(vP({start:x,end:p,loop:g,count:o,style:y})),_}function Q5(t,e){const n=[],i=t.segments;for(let s=0;s<i.length;s++){const a=X5(i[s],t.points,e);a.length&&n.push(...a)}return n}function Fue(t,e,n,i){let s=0,a=e-1;if(n&&!i)for(;s<e&&!t[s].skip;)s++;for(;s<e&&t[s].skip;)s++;for(s%=e,n&&(a+=s);a>s&&t[a%e].skip;)a--;return a%=e,{start:s,end:a}}function Iue(t,e,n,i){const s=t.length,a=[];let o=e,r=t[e],c;for(c=e+1;c<=n;++c){const d=t[c%s];d.skip||d.stop?r.skip||(i=!1,a.push({start:e%s,end:(c-1)%s,loop:i}),e=o=d.stop?c:null):(o=c,r.skip&&(e=c)),r=d}return o!==null&&a.push({start:e%s,end:o%s,loop:i}),a}function Bue(t,e){const n=t.points,i=t.options.spanGaps,s=n.length;if(!s)return[];const a=!!t._loop,{start:o,end:r}=Fue(n,s,a,i);if(i===!0)return xP(t,[{start:o,end:r,loop:a}],n,e);const c=r<o?r+s:r,d=!!t._fullLoop&&o===0&&r===s-1;return xP(t,Iue(n,o,c,d),n,e)}function xP(t,e,n,i){return!i||!i.setContext||!n?e:Uue(t,e,n,i)}function Uue(t,e,n,i){const s=t._chart.getContext(),a=SP(t.options),{_datasetIndex:o,options:{spanGaps:r}}=t,c=n.length,d=[];let f=a,p=e[0].start,g=p;function y(_,v,x,k){const C=r?-1:1;if(_!==v){for(_+=c;n[_%c].skip;)_-=C;for(;n[v%c].skip;)v+=C;_%c!==v%c&&(d.push({start:_%c,end:v%c,loop:x,style:k}),f=k,p=v%c)}}for(const _ of e){p=r?p:_.start;let v=n[p%c],x;for(g=p+1;g<=_.end;g++){const k=n[g%c];x=SP(i.setContext(Xc(s,{type:"segment",p0:v,p1:k,p0DataIndex:(g-1)%c,p1DataIndex:g%c,datasetIndex:o}))),que(x,f)&&y(p,g-1,_.loop,f),v=k,f=x}p<g-1&&y(p,g-1,_.loop,f)}return d}function SP(t){return{backgroundColor:t.backgroundColor,borderCapStyle:t.borderCapStyle,borderDash:t.borderDash,borderDashOffset:t.borderDashOffset,borderJoinStyle:t.borderJoinStyle,borderWidth:t.borderWidth,borderColor:t.borderColor}}function que(t,e){if(!e)return!1;const n=[],i=function(s,a){return dk(a)?(n.includes(a)||n.push(a),n.indexOf(a)):a};return JSON.stringify(t,i)!==JSON.stringify(e,i)}function c_(t,e,n){return t.options.clip?t[n]:e[n]}function zue(t,e){const{xScale:n,yScale:i}=t;return n&&i?{left:c_(n,e,"left"),right:c_(n,e,"right"),top:c_(i,e,"top"),bottom:c_(i,e,"bottom")}:e}function Y5(t,e){const n=e._clip;if(n.disabled)return!1;const i=zue(e,t.chartArea);return{left:n.left===!1?0:i.left-(n.left===!0?0:n.left),right:n.right===!1?t.width:i.right+(n.right===!0?0:n.right),top:n.top===!1?0:i.top-(n.top===!0?0:n.top),bottom:n.bottom===!1?t.height:i.bottom+(n.bottom===!0?0:n.bottom)}}class Kue{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(e,n,i,s){const a=n.listeners[s],o=n.duration;a.forEach(r=>r({chart:e,initial:n.initial,numSteps:o,currentStep:Math.min(i-n.start,o)}))}_refresh(){this._request||(this._running=!0,this._request=R5.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(e=Date.now()){let n=0;this._charts.forEach((i,s)=>{if(!i.running||!i.items.length)return;const a=i.items;let o=a.length-1,r=!1,c;for(;o>=0;--o)c=a[o],c._active?(c._total>i.duration&&(i.duration=c._total),c.tick(e),r=!0):(a[o]=a[a.length-1],a.pop());r&&(s.draw(),this._notify(s,i,e,"progress")),a.length||(i.running=!1,this._notify(s,i,e,"complete"),i.initial=!1),n+=a.length}),this._lastDate=e,n===0&&(this._running=!1)}_getAnims(e){const n=this._charts;let i=n.get(e);return i||(i={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},n.set(e,i)),i}listen(e,n,i){this._getAnims(e).listeners[n].push(i)}add(e,n){!n||!n.length||this._getAnims(e).items.push(...n)}has(e){return this._getAnims(e).items.length>0}start(e){const n=this._charts.get(e);n&&(n.running=!0,n.start=Date.now(),n.duration=n.items.reduce((i,s)=>Math.max(i,s._duration),0),this._refresh())}running(e){if(!this._running)return!1;const n=this._charts.get(e);return!(!n||!n.running||!n.items.length)}stop(e){const n=this._charts.get(e);if(!n||!n.items.length)return;const i=n.items;let s=i.length-1;for(;s>=0;--s)i[s].cancel();n.items=[],this._notify(e,n,Date.now(),"complete")}remove(e){return this._charts.delete(e)}}var dr=new Kue;const wP="transparent",Vue={boolean(t,e,n){return n>.5?e:t},color(t,e,n){const i=hP(t||wP),s=i.valid&&hP(e||wP);return s&&s.valid?s.mix(i,n).hexString():e},number(t,e,n){return t+(e-t)*n}};class Hue{constructor(e,n,i,s){const a=n[i];s=r_([e.to,s,a,e.from]);const o=r_([e.from,a,s]);this._active=!0,this._fn=e.fn||Vue[e.type||typeof o],this._easing=Xf[e.easing]||Xf.linear,this._start=Math.floor(Date.now()+(e.delay||0)),this._duration=this._total=Math.floor(e.duration),this._loop=!!e.loop,this._target=n,this._prop=i,this._from=o,this._to=s,this._promises=void 0}active(){return this._active}update(e,n,i){if(this._active){this._notify(!1);const s=this._target[this._prop],a=i-this._start,o=this._duration-a;this._start=i,this._duration=Math.floor(Math.max(o,e.duration)),this._total+=a,this._loop=!!e.loop,this._to=r_([e.to,n,s,e.from]),this._from=r_([e.from,s,n])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(e){const n=e-this._start,i=this._duration,s=this._prop,a=this._from,o=this._loop,r=this._to;let c;if(this._active=a!==r&&(o||n<i),!this._active){this._target[s]=r,this._notify(!0);return}if(n<0){this._target[s]=a;return}c=n/i%2,c=o&&c>1?2-c:c,c=this._easing(Math.min(1,Math.max(0,c))),this._target[s]=this._fn(a,r,c)}wait(){const e=this._promises||(this._promises=[]);return new Promise((n,i)=>{e.push({res:n,rej:i})})}_notify(e){const n=e?"res":"rej",i=this._promises||[];for(let s=0;s<i.length;s++)i[s][n]()}}class J5{constructor(e,n){this._chart=e,this._properties=new Map,this.configure(n)}configure(e){if(!ln(e))return;const n=Object.keys(oi.animation),i=this._properties;Object.getOwnPropertyNames(e).forEach(s=>{const a=e[s];if(!ln(a))return;const o={};for(const r of n)o[r]=a[r];(Ai(a.properties)&&a.properties||[s]).forEach(r=>{(r===s||!i.has(r))&&i.set(r,o)})})}_animateOptions(e,n){const i=n.options,s=Gue(e,i);if(!s)return[];const a=this._createAnimations(s,i);return i.$shared&&Wue(e.options.$animations,i).then(()=>{e.options=i},()=>{}),a}_createAnimations(e,n){const i=this._properties,s=[],a=e.$animations||(e.$animations={}),o=Object.keys(n),r=Date.now();let c;for(c=o.length-1;c>=0;--c){const d=o[c];if(d.charAt(0)==="$")continue;if(d==="options"){s.push(...this._animateOptions(e,n));continue}const f=n[d];let p=a[d];const g=i.get(d);if(p)if(g&&p.active()){p.update(g,f,r);continue}else p.cancel();if(!g||!g.duration){e[d]=f;continue}a[d]=p=new Hue(g,e,d,f),s.push(p)}return s}update(e,n){if(this._properties.size===0){Object.assign(e,n);return}const i=this._createAnimations(e,n);if(i.length)return dr.add(this._chart,i),!0}}function Wue(t,e){const n=[],i=Object.keys(e);for(let s=0;s<i.length;s++){const a=t[i[s]];a&&a.active()&&n.push(a.wait())}return Promise.all(n)}function Gue(t,e){if(!e)return;let n=t.options;if(!n){t.options=e;return}return n.$shared&&(t.options=n=Object.assign({},n,{$shared:!1,$animations:{}})),n}function kP(t,e){const n=t&&t.options||{},i=n.reverse,s=n.min===void 0?e:0,a=n.max===void 0?e:0;return{start:i?a:s,end:i?s:a}}function $ue(t,e,n){if(n===!1)return!1;const i=kP(t,n),s=kP(e,n);return{top:s.end,right:i.end,bottom:s.start,left:i.start}}function Xue(t){let e,n,i,s;return ln(t)?(e=t.top,n=t.right,i=t.bottom,s=t.left):e=n=i=s=t,{top:e,right:n,bottom:i,left:s,disabled:t===!1}}function Z5(t,e){const n=[],i=t._getSortedDatasetMetas(e);let s,a;for(s=0,a=i.length;s<a;++s)n.push(i[s].index);return n}function CP(t,e,n,i={}){const s=t.keys,a=i.mode==="single";let o,r,c,d;if(e===null)return;let f=!1;for(o=0,r=s.length;o<r;++o){if(c=+s[o],c===n){if(f=!0,i.all)continue;break}d=t.values[c],ls(d)&&(a||e===0||Ad(e)===Ad(d))&&(e+=d)}return!f&&!i.all?0:e}function Que(t,e){const{iScale:n,vScale:i}=e,s=n.axis==="x"?"x":"y",a=i.axis==="x"?"x":"y",o=Object.keys(t),r=new Array(o.length);let c,d,f;for(c=0,d=o.length;c<d;++c)f=o[c],r[c]={[s]:f,[a]:t[f]};return r}function b1(t,e){const n=t&&t.options.stacked;return n||n===void 0&&e.stack!==void 0}function Yue(t,e,n){return`${t.id}.${e.id}.${n.stack||n.type}`}function Jue(t){const{min:e,max:n,minDefined:i,maxDefined:s}=t.getUserBounds();return{min:i?e:Number.NEGATIVE_INFINITY,max:s?n:Number.POSITIVE_INFINITY}}function Zue(t,e,n){const i=t[e]||(t[e]={});return i[n]||(i[n]={})}function AP(t,e,n,i){for(const s of e.getMatchingVisibleMetas(i).reverse()){const a=t[s.index];if(n&&a>0||!n&&a<0)return s.index}return null}function NP(t,e){const{chart:n,_cachedMeta:i}=t,s=n._stacks||(n._stacks={}),{iScale:a,vScale:o,index:r}=i,c=a.axis,d=o.axis,f=Yue(a,o,i),p=e.length;let g;for(let y=0;y<p;++y){const _=e[y],{[c]:v,[d]:x}=_,k=_._stacks||(_._stacks={});g=k[d]=Zue(s,f,v),g[r]=x,g._top=AP(g,o,!0,i.type),g._bottom=AP(g,o,!1,i.type);const C=g._visualValues||(g._visualValues={});C[r]=x}}function v1(t,e){const n=t.scales;return Object.keys(n).filter(i=>n[i].axis===e).shift()}function ede(t,e){return Xc(t,{active:!1,dataset:void 0,datasetIndex:e,index:e,mode:"default",type:"dataset"})}function tde(t,e,n){return Xc(t,{active:!1,dataIndex:e,parsed:void 0,raw:void 0,element:n,index:e,mode:"default",type:"data"})}function uf(t,e){const n=t.controller.index,i=t.vScale&&t.vScale.axis;if(i){e=e||t._parsed;for(const s of e){const a=s._stacks;if(!a||a[i]===void 0||a[i][n]===void 0)return;delete a[i][n],a[i]._visualValues!==void 0&&a[i]._visualValues[n]!==void 0&&delete a[i]._visualValues[n]}}}const x1=t=>t==="reset"||t==="none",TP=(t,e)=>e?t:Object.assign({},t),nde=(t,e,n)=>t&&!e.hidden&&e._stacked&&{keys:Z5(n,!0),values:null};class Jf{constructor(e,n){this.chart=e,this._ctx=e.ctx,this.index=n,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=b1(e.vScale,e),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(e){this.index!==e&&uf(this._cachedMeta),this.index=e}linkScales(){const e=this.chart,n=this._cachedMeta,i=this.getDataset(),s=(p,g,y,_)=>p==="x"?g:p==="r"?_:y,a=n.xAxisID=sn(i.xAxisID,v1(e,"x")),o=n.yAxisID=sn(i.yAxisID,v1(e,"y")),r=n.rAxisID=sn(i.rAxisID,v1(e,"r")),c=n.indexAxis,d=n.iAxisID=s(c,a,o,r),f=n.vAxisID=s(c,o,a,r);n.xScale=this.getScaleForId(a),n.yScale=this.getScaleForId(o),n.rScale=this.getScaleForId(r),n.iScale=this.getScaleForId(d),n.vScale=this.getScaleForId(f)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){const n=this._cachedMeta;return e===n.iScale?n.vScale:n.iScale}reset(){this._update("reset")}_destroy(){const e=this._cachedMeta;this._data&&cP(this._data,this),e._stacked&&uf(e)}_dataCheck(){const e=this.getDataset(),n=e.data||(e.data=[]),i=this._data;if(ln(n)){const s=this._cachedMeta;this._data=Que(n,s)}else if(i!==n){if(i){cP(i,this);const s=this._cachedMeta;uf(s),s._parsed=[]}n&&Object.isExtensible(n)&&Dce(n,this),this._syncList=[],this._data=n}}addElements(){const e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){const n=this._cachedMeta,i=this.getDataset();let s=!1;this._dataCheck();const a=n._stacked;n._stacked=b1(n.vScale,n),n.stack!==i.stack&&(s=!0,uf(n),n.stack=i.stack),this._resyncElements(e),(s||a!==n._stacked)&&(NP(this,n._parsed),n._stacked=b1(n.vScale,n))}configure(){const e=this.chart.config,n=e.datasetScopeKeys(this._type),i=e.getOptionScopes(this.getDataset(),n,!0);this.options=e.createResolver(i,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,n){const{_cachedMeta:i,_data:s}=this,{iScale:a,_stacked:o}=i,r=a.axis;let c=e===0&&n===s.length?!0:i._sorted,d=e>0&&i._parsed[e-1],f,p,g;if(this._parsing===!1)i._parsed=s,i._sorted=!0,g=s;else{Ai(s[e])?g=this.parseArrayData(i,s,e,n):ln(s[e])?g=this.parseObjectData(i,s,e,n):g=this.parsePrimitiveData(i,s,e,n);const y=()=>p[r]===null||d&&p[r]<d[r];for(f=0;f<n;++f)i._parsed[f+e]=p=g[f],c&&(y()&&(c=!1),d=p);i._sorted=c}o&&NP(this,g)}parsePrimitiveData(e,n,i,s){const{iScale:a,vScale:o}=e,r=a.axis,c=o.axis,d=a.getLabels(),f=a===o,p=new Array(s);let g,y,_;for(g=0,y=s;g<y;++g)_=g+i,p[g]={[r]:f||a.parse(d[_],_),[c]:o.parse(n[_],_)};return p}parseArrayData(e,n,i,s){const{xScale:a,yScale:o}=e,r=new Array(s);let c,d,f,p;for(c=0,d=s;c<d;++c)f=c+i,p=n[f],r[c]={x:a.parse(p[0],f),y:o.parse(p[1],f)};return r}parseObjectData(e,n,i,s){const{xScale:a,yScale:o}=e,{xAxisKey:r="x",yAxisKey:c="y"}=this._parsing,d=new Array(s);let f,p,g,y;for(f=0,p=s;f<p;++f)g=f+i,y=n[g],d[f]={x:a.parse(U0(y,r),g),y:o.parse(U0(y,c),g)};return d}getParsed(e){return this._cachedMeta._parsed[e]}getDataElement(e){return this._cachedMeta.data[e]}applyStack(e,n,i){const s=this.chart,a=this._cachedMeta,o=n[e.axis],r={keys:Z5(s,!0),values:n._stacks[e.axis]._visualValues};return CP(r,o,a.index,{mode:i})}updateRangeFromParsed(e,n,i,s){const a=i[n.axis];let o=a===null?NaN:a;const r=s&&i._stacks[n.axis];s&&r&&(s.values=r,o=CP(s,a,this._cachedMeta.index)),e.min=Math.min(e.min,o),e.max=Math.max(e.max,o)}getMinMax(e,n){const i=this._cachedMeta,s=i._parsed,a=i._sorted&&e===i.iScale,o=s.length,r=this._getOtherScale(e),c=nde(n,i,this.chart),d={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:f,max:p}=Jue(r);let g,y;function _(){y=s[g];const v=y[r.axis];return!ls(y[e.axis])||f>v||p<v}for(g=0;g<o&&!(!_()&&(this.updateRangeFromParsed(d,e,y,c),a));++g);if(a){for(g=o-1;g>=0;--g)if(!_()){this.updateRangeFromParsed(d,e,y,c);break}}return d}getAllParsedValues(e){const n=this._cachedMeta._parsed,i=[];let s,a,o;for(s=0,a=n.length;s<a;++s)o=n[s][e.axis],ls(o)&&i.push(o);return i}getMaxOverflow(){return!1}getLabelAndValue(e){const n=this._cachedMeta,i=n.iScale,s=n.vScale,a=this.getParsed(e);return{label:i?""+i.getLabelForValue(a[i.axis]):"",value:s?""+s.getLabelForValue(a[s.axis]):""}}_update(e){const n=this._cachedMeta;this.update(e||"default"),n._clip=Xue(sn(this.options.clip,$ue(n.xScale,n.yScale,this.getMaxOverflow())))}update(e){}draw(){const e=this._ctx,n=this.chart,i=this._cachedMeta,s=i.data||[],a=n.chartArea,o=[],r=this._drawStart||0,c=this._drawCount||s.length-r,d=this.options.drawActiveElementsOnTop;let f;for(i.dataset&&i.dataset.draw(e,a,r,c),f=r;f<r+c;++f){const p=s[f];p.hidden||(p.active&&d?o.push(p):p.draw(e,a))}for(f=0;f<o.length;++f)o[f].draw(e,a)}getStyle(e,n){const i=n?"active":"default";return e===void 0&&this._cachedMeta.dataset?this.resolveDatasetElementOptions(i):this.resolveDataElementOptions(e||0,i)}getContext(e,n,i){const s=this.getDataset();let a;if(e>=0&&e<this._cachedMeta.data.length){const o=this._cachedMeta.data[e];a=o.$context||(o.$context=tde(this.getContext(),e,o)),a.parsed=this.getParsed(e),a.raw=s.data[e],a.index=a.dataIndex=e}else a=this.$context||(this.$context=ede(this.chart.getContext(),this.index)),a.dataset=s,a.index=a.datasetIndex=this.index;return a.active=!!n,a.mode=i,a}resolveDatasetElementOptions(e){return this._resolveElementOptions(this.datasetElementType.id,e)}resolveDataElementOptions(e,n){return this._resolveElementOptions(this.dataElementType.id,n,e)}_resolveElementOptions(e,n="default",i){const s=n==="active",a=this._cachedDataOpts,o=e+"-"+n,r=a[o],c=this.enableOptionSharing&&q0(i);if(r)return TP(r,c);const d=this.chart.config,f=d.datasetElementScopeKeys(this._type,e),p=s?[`${e}Hover`,"hover",e,""]:[e,""],g=d.getOptionScopes(this.getDataset(),f),y=Object.keys(oi.elements[e]),_=()=>this.getContext(i,s,n),v=d.resolveNamedOptions(g,y,_,p);return v.$shared&&(v.$shared=c,a[o]=Object.freeze(TP(v,c))),v}_resolveAnimations(e,n,i){const s=this.chart,a=this._cachedDataOpts,o=`animation-${n}`,r=a[o];if(r)return r;let c;if(s.options.animation!==!1){const f=this.chart.config,p=f.datasetAnimationScopeKeys(this._type,n),g=f.getOptionScopes(this.getDataset(),p);c=f.createResolver(g,this.getContext(e,i,n))}const d=new J5(s,c&&c.animations);return c&&c._cacheable&&(a[o]=Object.freeze(d)),d}getSharedOptions(e){if(e.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},e))}includeOptions(e,n){return!n||x1(e)||this.chart._animationsDisabled}_getSharedOptions(e,n){const i=this.resolveDataElementOptions(e,n),s=this._sharedOptions,a=this.getSharedOptions(i),o=this.includeOptions(n,a)||a!==s;return this.updateSharedOptions(a,n,i),{sharedOptions:a,includeOptions:o}}updateElement(e,n,i,s){x1(s)?Object.assign(e,i):this._resolveAnimations(n,s).update(e,i)}updateSharedOptions(e,n,i){e&&!x1(n)&&this._resolveAnimations(void 0,n).update(e,i)}_setStyle(e,n,i,s){e.active=s;const a=this.getStyle(n,s);this._resolveAnimations(n,i,s).update(e,{options:!s&&this.getSharedOptions(a)||a})}removeHoverStyle(e,n,i){this._setStyle(e,i,"active",!1)}setHoverStyle(e,n,i){this._setStyle(e,i,"active",!0)}_removeDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!1)}_setDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!0)}_resyncElements(e){const n=this._data,i=this._cachedMeta.data;for(const[r,c,d]of this._syncList)this[r](c,d);this._syncList=[];const s=i.length,a=n.length,o=Math.min(a,s);o&&this.parse(0,o),a>s?this._insertElements(s,a-s,e):a<s&&this._removeElements(a,s-a)}_insertElements(e,n,i=!0){const s=this._cachedMeta,a=s.data,o=e+n;let r;const c=d=>{for(d.length+=n,r=d.length-1;r>=o;r--)d[r]=d[r-n]};for(c(a),r=e;r<o;++r)a[r]=new this.dataElementType;this._parsing&&c(s._parsed),this.parse(e,n),i&&this.updateElements(a,e,n,"reset")}updateElements(e,n,i,s){}_removeElements(e,n){const i=this._cachedMeta;if(this._parsing){const s=i._parsed.splice(e,n);i._stacked&&uf(i,s)}i.data.splice(e,n)}_sync(e){if(this._parsing)this._syncList.push(e);else{const[n,i,s]=e;this[n](i,s)}this.chart._dataChanges.push([this.index,...e])}_onDataPush(){const e=arguments.length;this._sync(["_insertElements",this.getDataset().data.length-e,e])}_onDataPop(){this._sync(["_removeElements",this._cachedMeta.data.length-1,1])}_onDataShift(){this._sync(["_removeElements",0,1])}_onDataSplice(e,n){n&&this._sync(["_removeElements",e,n]);const i=arguments.length-2;i&&this._sync(["_insertElements",e,i])}_onDataUnshift(){this._sync(["_insertElements",0,arguments.length])}}Lt(Jf,"defaults",{}),Lt(Jf,"datasetElementType",null),Lt(Jf,"dataElementType",null);class o0 extends Jf{initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(e){const n=this._cachedMeta,{dataset:i,data:s=[],_dataset:a}=n,o=this.chart._animationsDisabled;let{start:r,count:c}=Uce(n,s,o);this._drawStart=r,this._drawCount=c,qce(n)&&(r=0,c=s.length),i._chart=this.chart,i._datasetIndex=this.index,i._decimated=!!a._decimated,i.points=s;const d=this.resolveDatasetElementOptions(e);this.options.showLine||(d.borderWidth=0),d.segment=this.options.segment,this.updateElement(i,void 0,{animated:!o,options:d},e),this.updateElements(s,r,c,e)}updateElements(e,n,i,s){const a=s==="reset",{iScale:o,vScale:r,_stacked:c,_dataset:d}=this._cachedMeta,{sharedOptions:f,includeOptions:p}=this._getSharedOptions(n,s),g=o.axis,y=r.axis,{spanGaps:_,segment:v}=this.options,x=ym(_)?_:Number.POSITIVE_INFINITY,k=this.chart._animationsDisabled||a||s==="none",C=n+i,N=e.length;let L=n>0&&this.getParsed(n-1);for(let M=0;M<N;++M){const O=e[M],T=k?O:{};if(M<n||M>=C){T.skip=!0;continue}const P=this.getParsed(M),E=En(P[y]),R=T[g]=o.getPixelForValue(P[g],M),q=T[y]=a||E?r.getBasePixel():r.getPixelForValue(c?this.applyStack(r,P,c):P[y],M);T.skip=isNaN(R)||isNaN(q)||E,T.stop=M>0&&Math.abs(P[g]-L[g])>x,v&&(T.parsed=P,T.raw=d.data[M]),p&&(T.options=f||this.resolveDataElementOptions(M,O.active?"active":s)),k||this.updateElement(O,M,T,s),L=P}}getMaxOverflow(){const e=this._cachedMeta,n=e.dataset,i=n.options&&n.options.borderWidth||0,s=e.data||[];if(!s.length)return i;const a=s[0].size(this.resolveDataElementOptions(0)),o=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(i,a,o)/2}draw(){const e=this._cachedMeta;e.dataset.updateControlPoints(this.chart.chartArea,e.iScale.axis),super.draw()}}Lt(o0,"id","line"),Lt(o0,"defaults",{datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1}),Lt(o0,"overrides",{scales:{_index_:{type:"category"},_value_:{type:"linear"}}});function rc(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class _k{constructor(e){Lt(this,"options");this.options=e||{}}static override(e){Object.assign(_k.prototype,e)}init(){}formats(){return rc()}parse(){return rc()}format(){return rc()}add(){return rc()}diff(){return rc()}startOf(){return rc()}endOf(){return rc()}}var ide={_date:_k};function sde(t,e,n,i){const{controller:s,data:a,_sorted:o}=t,r=s._cachedMeta.iScale,c=t.dataset&&t.dataset.options?t.dataset.options.spanGaps:null;if(r&&e===r.axis&&e!=="r"&&o&&a.length){const d=r._reversePixels?jce:wc;if(i){if(s._sharedOptions){const f=a[0],p=typeof f.getRange=="function"&&f.getRange(e);if(p){const g=d(a,e,n-p),y=d(a,e,n+p);return{lo:g.lo,hi:y.hi}}}}else{const f=d(a,e,n);if(c){const{vScale:p}=s._cachedMeta,{_parsed:g}=t,y=g.slice(0,f.lo+1).reverse().findIndex(v=>!En(v[p.axis]));f.lo-=Math.max(0,y);const _=g.slice(f.hi).findIndex(v=>!En(v[p.axis]));f.hi+=Math.max(0,_)}return f}}return{lo:0,hi:a.length-1}}function $y(t,e,n,i,s){const a=t.getSortedVisibleDatasetMetas(),o=n[e];for(let r=0,c=a.length;r<c;++r){const{index:d,data:f}=a[r],{lo:p,hi:g}=sde(a[r],e,o,s);for(let y=p;y<=g;++y){const _=f[y];_.skip||i(_,d,y)}}}function ade(t){const e=t.indexOf("x")!==-1,n=t.indexOf("y")!==-1;return function(i,s){const a=e?Math.abs(i.x-s.x):0,o=n?Math.abs(i.y-s.y):0;return Math.sqrt(Math.pow(a,2)+Math.pow(o,2))}}function S1(t,e,n,i,s){const a=[];return!s&&!t.isPointInArea(e)||$y(t,n,e,function(r,c,d){!s&&!bm(r,t.chartArea,0)||r.inRange(e.x,e.y,i)&&a.push({element:r,datasetIndex:c,index:d})},!0),a}function ode(t,e,n,i){let s=[];function a(o,r,c){const{startAngle:d,endAngle:f}=o.getProps(["startAngle","endAngle"],i),{angle:p}=Oce(o,{x:e.x,y:e.y});E5(p,d,f)&&s.push({element:o,datasetIndex:r,index:c})}return $y(t,n,e,a),s}function rde(t,e,n,i,s,a){let o=[];const r=ade(n);let c=Number.POSITIVE_INFINITY;function d(f,p,g){const y=f.inRange(e.x,e.y,s);if(i&&!y)return;const _=f.getCenterPoint(s);if(!(!!a||t.isPointInArea(_))&&!y)return;const x=r(e,_);x<c?(o=[{element:f,datasetIndex:p,index:g}],c=x):x===c&&o.push({element:f,datasetIndex:p,index:g})}return $y(t,n,e,d),o}function w1(t,e,n,i,s,a){return!a&&!t.isPointInArea(e)?[]:n==="r"&&!i?ode(t,e,n,s):rde(t,e,n,i,s,a)}function MP(t,e,n,i,s){const a=[],o=n==="x"?"inXRange":"inYRange";let r=!1;return $y(t,n,e,(c,d,f)=>{c[o]&&c[o](e[n],s)&&(a.push({element:c,datasetIndex:d,index:f}),r=r||c.inRange(e.x,e.y,s))}),i&&!r?[]:a}var lde={modes:{index(t,e,n,i){const s=hc(e,t),a=n.axis||"x",o=n.includeInvisible||!1,r=n.intersect?S1(t,s,a,i,o):w1(t,s,a,!1,i,o),c=[];return r.length?(t.getSortedVisibleDatasetMetas().forEach(d=>{const f=r[0].index,p=d.data[f];p&&!p.skip&&c.push({element:p,datasetIndex:d.index,index:f})}),c):[]},dataset(t,e,n,i){const s=hc(e,t),a=n.axis||"xy",o=n.includeInvisible||!1;let r=n.intersect?S1(t,s,a,i,o):w1(t,s,a,!1,i,o);if(r.length>0){const c=r[0].datasetIndex,d=t.getDatasetMeta(c).data;r=[];for(let f=0;f<d.length;++f)r.push({element:d[f],datasetIndex:c,index:f})}return r},point(t,e,n,i){const s=hc(e,t),a=n.axis||"xy",o=n.includeInvisible||!1;return S1(t,s,a,i,o)},nearest(t,e,n,i){const s=hc(e,t),a=n.axis||"xy",o=n.includeInvisible||!1;return w1(t,s,a,n.intersect,i,o)},x(t,e,n,i){const s=hc(e,t);return MP(t,s,"x",n.intersect,i)},y(t,e,n,i){const s=hc(e,t);return MP(t,s,"y",n.intersect,i)}}};const eD=["left","top","right","bottom"];function df(t,e){return t.filter(n=>n.pos===e)}function LP(t,e){return t.filter(n=>eD.indexOf(n.pos)===-1&&n.box.axis===e)}function hf(t,e){return t.sort((n,i)=>{const s=e?i:n,a=e?n:i;return s.weight===a.weight?s.index-a.index:s.weight-a.weight})}function cde(t){const e=[];let n,i,s,a,o,r;for(n=0,i=(t||[]).length;n<i;++n)s=t[n],{position:a,options:{stack:o,stackWeight:r=1}}=s,e.push({index:n,box:s,pos:a,horizontal:s.isHorizontal(),weight:s.weight,stack:o&&a+o,stackWeight:r});return e}function ude(t){const e={};for(const n of t){const{stack:i,pos:s,stackWeight:a}=n;if(!i||!eD.includes(s))continue;const o=e[i]||(e[i]={count:0,placed:0,weight:0,size:0});o.count++,o.weight+=a}return e}function dde(t,e){const n=ude(t),{vBoxMaxWidth:i,hBoxMaxHeight:s}=e;let a,o,r;for(a=0,o=t.length;a<o;++a){r=t[a];const{fullSize:c}=r.box,d=n[r.stack],f=d&&r.stackWeight/d.weight;r.horizontal?(r.width=f?f*i:c&&e.availableWidth,r.height=s):(r.width=i,r.height=f?f*s:c&&e.availableHeight)}return n}function hde(t){const e=cde(t),n=hf(e.filter(d=>d.box.fullSize),!0),i=hf(df(e,"left"),!0),s=hf(df(e,"right")),a=hf(df(e,"top"),!0),o=hf(df(e,"bottom")),r=LP(e,"x"),c=LP(e,"y");return{fullSize:n,leftAndTop:i.concat(a),rightAndBottom:s.concat(c).concat(o).concat(r),chartArea:df(e,"chartArea"),vertical:i.concat(s).concat(c),horizontal:a.concat(o).concat(r)}}function OP(t,e,n,i){return Math.max(t[n],e[n])+Math.max(t[i],e[i])}function tD(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function fde(t,e,n,i){const{pos:s,box:a}=n,o=t.maxPadding;if(!ln(s)){n.size&&(t[s]-=n.size);const p=i[n.stack]||{size:0,count:1};p.size=Math.max(p.size,n.horizontal?a.height:a.width),n.size=p.size/p.count,t[s]+=n.size}a.getPadding&&tD(o,a.getPadding());const r=Math.max(0,e.outerWidth-OP(o,t,"left","right")),c=Math.max(0,e.outerHeight-OP(o,t,"top","bottom")),d=r!==t.w,f=c!==t.h;return t.w=r,t.h=c,n.horizontal?{same:d,other:f}:{same:f,other:d}}function mde(t){const e=t.maxPadding;function n(i){const s=Math.max(e[i]-t[i],0);return t[i]+=s,s}t.y+=n("top"),t.x+=n("left"),n("right"),n("bottom")}function pde(t,e){const n=e.maxPadding;function i(s){const a={left:0,top:0,right:0,bottom:0};return s.forEach(o=>{a[o]=Math.max(e[o],n[o])}),a}return i(t?["left","right"]:["top","bottom"])}function Lf(t,e,n,i){const s=[];let a,o,r,c,d,f;for(a=0,o=t.length,d=0;a<o;++a){r=t[a],c=r.box,c.update(r.width||e.w,r.height||e.h,pde(r.horizontal,e));const{same:p,other:g}=fde(e,n,r,i);d|=p&&s.length,f=f||g,c.fullSize||s.push(r)}return d&&Lf(s,e,n,i)||f}function u_(t,e,n,i,s){t.top=n,t.left=e,t.right=e+i,t.bottom=n+s,t.width=i,t.height=s}function PP(t,e,n,i){const s=n.padding;let{x:a,y:o}=e;for(const r of t){const c=r.box,d=i[r.stack]||{placed:0,weight:1},f=r.stackWeight/d.weight||1;if(r.horizontal){const p=e.w*f,g=d.size||c.height;q0(d.start)&&(o=d.start),c.fullSize?u_(c,s.left,o,n.outerWidth-s.right-s.left,g):u_(c,e.left+d.placed,o,p,g),d.start=o,d.placed+=p,o=c.bottom}else{const p=e.h*f,g=d.size||c.width;q0(d.start)&&(a=d.start),c.fullSize?u_(c,a,s.top,g,n.outerHeight-s.bottom-s.top):u_(c,a,e.top+d.placed,g,p),d.start=a,d.placed+=p,a=c.right}}e.x=a,e.y=o}var ba={addBox(t,e){t.boxes||(t.boxes=[]),e.fullSize=e.fullSize||!1,e.position=e.position||"top",e.weight=e.weight||0,e._layers=e._layers||function(){return[{z:0,draw(n){e.draw(n)}}]},t.boxes.push(e)},removeBox(t,e){const n=t.boxes?t.boxes.indexOf(e):-1;n!==-1&&t.boxes.splice(n,1)},configure(t,e,n){e.fullSize=n.fullSize,e.position=n.position,e.weight=n.weight},update(t,e,n,i){if(!t)return;const s=Ta(t.options.layout.padding),a=Math.max(e-s.width,0),o=Math.max(n-s.height,0),r=hde(t.boxes),c=r.vertical,d=r.horizontal;Sn(t.boxes,v=>{typeof v.beforeLayout=="function"&&v.beforeLayout()});const f=c.reduce((v,x)=>x.box.options&&x.box.options.display===!1?v:v+1,0)||1,p=Object.freeze({outerWidth:e,outerHeight:n,padding:s,availableWidth:a,availableHeight:o,vBoxMaxWidth:a/2/f,hBoxMaxHeight:o/2}),g=Object.assign({},s);tD(g,Ta(i));const y=Object.assign({maxPadding:g,w:a,h:o,x:s.left,y:s.top},s),_=dde(c.concat(d),p);Lf(r.fullSize,y,p,_),Lf(c,y,p,_),Lf(d,y,p,_)&&Lf(c,y,p,_),mde(y),PP(r.leftAndTop,y,p,_),y.x+=y.w,y.y+=y.h,PP(r.rightAndBottom,y,p,_),t.chartArea={left:y.left,top:y.top,right:y.left+y.w,bottom:y.top+y.h,height:y.h,width:y.w},Sn(r.chartArea,v=>{const x=v.box;Object.assign(x,t.chartArea),x.update(y.w,y.h,{left:0,top:0,right:0,bottom:0})})}};class nD{acquireContext(e,n){}releaseContext(e){return!1}addEventListener(e,n,i){}removeEventListener(e,n,i){}getDevicePixelRatio(){return 1}getMaximumSize(e,n,i,s){return n=Math.max(0,n||e.width),i=i||e.height,{width:n,height:Math.max(0,s?Math.floor(n/s):i)}}isAttached(e){return!0}updateConfig(e){}}class gde extends nD{acquireContext(e){return e&&e.getContext&&e.getContext("2d")||null}updateConfig(e){e.options.animation=!1}}const r0="$chartjs",_de={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},EP=t=>t===null||t==="";function yde(t,e){const n=t.style,i=t.getAttribute("height"),s=t.getAttribute("width");if(t[r0]={initial:{height:i,width:s,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",n.boxSizing=n.boxSizing||"border-box",EP(s)){const a=bP(t,"width");a!==void 0&&(t.width=a)}if(EP(i))if(t.style.height==="")t.height=t.width/(e||2);else{const a=bP(t,"height");a!==void 0&&(t.height=a)}return t}const iD=Oue?{passive:!0}:!1;function bde(t,e,n){t&&t.addEventListener(e,n,iD)}function vde(t,e,n){t&&t.canvas&&t.canvas.removeEventListener(e,n,iD)}function xde(t,e){const n=_de[t.type]||t.type,{x:i,y:s}=hc(t,e);return{type:n,chart:e,native:t,x:i!==void 0?i:null,y:s!==void 0?s:null}}function V0(t,e){for(const n of t)if(n===e||n.contains(e))return!0}function Sde(t,e,n){const i=t.canvas,s=new MutationObserver(a=>{let o=!1;for(const r of a)o=o||V0(r.addedNodes,i),o=o&&!V0(r.removedNodes,i);o&&n()});return s.observe(document,{childList:!0,subtree:!0}),s}function wde(t,e,n){const i=t.canvas,s=new MutationObserver(a=>{let o=!1;for(const r of a)o=o||V0(r.removedNodes,i),o=o&&!V0(r.addedNodes,i);o&&n()});return s.observe(document,{childList:!0,subtree:!0}),s}const xm=new Map;let jP=0;function sD(){const t=window.devicePixelRatio;t!==jP&&(jP=t,xm.forEach((e,n)=>{n.currentDevicePixelRatio!==t&&e()}))}function kde(t,e){xm.size||window.addEventListener("resize",sD),xm.set(t,e)}function Cde(t){xm.delete(t),xm.size||window.removeEventListener("resize",sD)}function Ade(t,e,n){const i=t.canvas,s=i&&gk(i);if(!s)return;const a=D5((r,c)=>{const d=s.clientWidth;n(r,c),d<s.clientWidth&&n()},window),o=new ResizeObserver(r=>{const c=r[0],d=c.contentRect.width,f=c.contentRect.height;d===0&&f===0||a(d,f)});return o.observe(s),kde(t,a),o}function k1(t,e,n){n&&n.disconnect(),e==="resize"&&Cde(t)}function Nde(t,e,n){const i=t.canvas,s=D5(a=>{t.ctx!==null&&n(xde(a,t))},t);return bde(i,e,s),s}class Tde extends nD{acquireContext(e,n){const i=e&&e.getContext&&e.getContext("2d");return i&&i.canvas===e?(yde(e,n),i):null}releaseContext(e){const n=e.canvas;if(!n[r0])return!1;const i=n[r0].initial;["height","width"].forEach(a=>{const o=i[a];En(o)?n.removeAttribute(a):n.setAttribute(a,o)});const s=i.style||{};return Object.keys(s).forEach(a=>{n.style[a]=s[a]}),n.width=n.width,delete n[r0],!0}addEventListener(e,n,i){this.removeEventListener(e,n);const s=e.$proxies||(e.$proxies={}),o={attach:Sde,detach:wde,resize:Ade}[n]||Nde;s[n]=o(e,n,i)}removeEventListener(e,n){const i=e.$proxies||(e.$proxies={}),s=i[n];if(!s)return;({attach:k1,detach:k1,resize:k1}[n]||vde)(e,n,s),i[n]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(e,n,i,s){return Lue(e,n,i,s)}isAttached(e){const n=e&&gk(e);return!!(n&&n.isConnected)}}function Mde(t){return!pk()||typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas?gde:Tde}class Nr{constructor(){Lt(this,"x");Lt(this,"y");Lt(this,"active",!1);Lt(this,"options");Lt(this,"$animations")}tooltipPosition(e){const{x:n,y:i}=this.getProps(["x","y"],e);return{x:n,y:i}}hasValue(){return ym(this.x)&&ym(this.y)}getProps(e,n){const i=this.$animations;if(!n||!i)return this;const s={};return e.forEach(a=>{s[a]=i[a]&&i[a].active()?i[a]._to:this[a]}),s}}Lt(Nr,"defaults",{}),Lt(Nr,"defaultRoutes");function Lde(t,e){const n=t.options.ticks,i=Ode(t),s=Math.min(n.maxTicksLimit||i,i),a=n.major.enabled?Ede(e):[],o=a.length,r=a[0],c=a[o-1],d=[];if(o>s)return jde(e,d,a,o/s),d;const f=Pde(a,e,s);if(o>0){let p,g;const y=o>1?Math.round((c-r)/(o-1)):null;for(d_(e,d,f,En(y)?0:r-y,r),p=0,g=o-1;p<g;p++)d_(e,d,f,a[p],a[p+1]);return d_(e,d,f,c,En(y)?e.length:c+y),d}return d_(e,d,f),d}function Ode(t){const e=t.options.offset,n=t._tickSize(),i=t._length/n+(e?0:1),s=t._maxLength/n;return Math.floor(Math.min(i,s))}function Pde(t,e,n){const i=Rde(t),s=e.length/n;if(!i)return Math.max(s,1);const a=Ace(i);for(let o=0,r=a.length-1;o<r;o++){const c=a[o];if(c>s)return c}return Math.max(s,1)}function Ede(t){const e=[];let n,i;for(n=0,i=t.length;n<i;n++)t[n].major&&e.push(n);return e}function jde(t,e,n,i){let s=0,a=n[0],o;for(i=Math.ceil(i),o=0;o<t.length;o++)o===a&&(e.push(t[o]),s++,a=n[s*i])}function d_(t,e,n,i,s){const a=sn(i,0),o=Math.min(sn(s,t.length),t.length);let r=0,c,d,f;for(n=Math.ceil(n),s&&(c=s-i,n=c/Math.floor(c/n)),f=a;f<0;)r++,f=Math.round(a+r*n);for(d=Math.max(a,0);d<o;d++)d===f&&(e.push(t[d]),r++,f=Math.round(a+r*n))}function Rde(t){const e=t.length;let n,i;if(e<2)return!1;for(i=t[0],n=1;n<e;++n)if(t[n]-t[n-1]!==i)return!1;return i}const Dde=t=>t==="left"?"right":t==="right"?"left":t,RP=(t,e,n)=>e==="top"||e==="left"?t[e]+n:t[e]-n,DP=(t,e)=>Math.min(e||t,t);function FP(t,e){const n=[],i=t.length/e,s=t.length;let a=0;for(;a<s;a+=i)n.push(t[Math.floor(a)]);return n}function Fde(t,e,n){const i=t.ticks.length,s=Math.min(e,i-1),a=t._startPixel,o=t._endPixel,r=1e-6;let c=t.getPixelForTick(s),d;if(!(n&&(i===1?d=Math.max(c-a,o-c):e===0?d=(t.getPixelForTick(1)-c)/2:d=(c-t.getPixelForTick(s-1))/2,c+=s<e?d:-d,c<a-r||c>o+r)))return c}function Ide(t,e){Sn(t,n=>{const i=n.gc,s=i.length/2;let a;if(s>e){for(a=0;a<s;++a)delete n.data[i[a]];i.splice(0,s)}})}function ff(t){return t.drawTicks?t.tickLength:0}function IP(t,e){if(!t.display)return 0;const n=as(t.font,e),i=Ta(t.padding);return(Ai(t.text)?t.text.length:1)*n.lineHeight+i.height}function Bde(t,e){return Xc(t,{scale:e,type:"scale"})}function Ude(t,e,n){return Xc(t,{tick:n,index:e,type:"tick"})}function qde(t,e,n){let i=uk(t);return(n&&e!=="right"||!n&&e==="right")&&(i=Dde(i)),i}function zde(t,e,n,i){const{top:s,left:a,bottom:o,right:r,chart:c}=t,{chartArea:d,scales:f}=c;let p=0,g,y,_;const v=o-s,x=r-a;if(t.isHorizontal()){if(y=Ji(i,a,r),ln(n)){const k=Object.keys(n)[0],C=n[k];_=f[k].getPixelForValue(C)+v-e}else n==="center"?_=(d.bottom+d.top)/2+v-e:_=RP(t,n,e);g=r-a}else{if(ln(n)){const k=Object.keys(n)[0],C=n[k];y=f[k].getPixelForValue(C)-x+e}else n==="center"?y=(d.left+d.right)/2-x+e:y=RP(t,n,e);_=Ji(i,o,s),p=n==="left"?-Va:Va}return{titleX:y,titleY:_,maxWidth:g,rotation:p}}class $d extends Nr{constructor(e){super(),this.id=e.id,this.type=e.type,this.options=void 0,this.ctx=e.ctx,this.chart=e.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(e){this.options=e.setContext(this.getContext()),this.axis=e.axis,this._userMin=this.parse(e.min),this._userMax=this.parse(e.max),this._suggestedMin=this.parse(e.suggestedMin),this._suggestedMax=this.parse(e.suggestedMax)}parse(e,n){return e}getUserBounds(){let{_userMin:e,_userMax:n,_suggestedMin:i,_suggestedMax:s}=this;return e=oo(e,Number.POSITIVE_INFINITY),n=oo(n,Number.NEGATIVE_INFINITY),i=oo(i,Number.POSITIVE_INFINITY),s=oo(s,Number.NEGATIVE_INFINITY),{min:oo(e,i),max:oo(n,s),minDefined:ls(e),maxDefined:ls(n)}}getMinMax(e){let{min:n,max:i,minDefined:s,maxDefined:a}=this.getUserBounds(),o;if(s&&a)return{min:n,max:i};const r=this.getMatchingVisibleMetas();for(let c=0,d=r.length;c<d;++c)o=r[c].controller.getMinMax(this,e),s||(n=Math.min(n,o.min)),a||(i=Math.max(i,o.max));return n=a&&n>i?i:n,i=s&&n>i?n:i,{min:oo(n,oo(i,n)),max:oo(i,oo(n,i))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const e=this.chart.data;return this.options.labels||(this.isHorizontal()?e.xLabels:e.yLabels)||e.labels||[]}getLabelItems(e=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(e))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){In(this.options.beforeUpdate,[this])}update(e,n,i){const{beginAtZero:s,grace:a,ticks:o}=this.options,r=o.sampleSize;this.beforeUpdate(),this.maxWidth=e,this.maxHeight=n,this._margins=i=Object.assign({left:0,right:0,top:0,bottom:0},i),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+i.left+i.right:this.height+i.top+i.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=lue(this,a,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const c=r<this.ticks.length;this._convertTicksToLabels(c?FP(this.ticks,r):this.ticks),this.configure(),this.beforeCalculateLabelRotation(),this.calculateLabelRotation(),this.afterCalculateLabelRotation(),o.display&&(o.autoSkip||o.source==="auto")&&(this.ticks=Lde(this,this.ticks),this._labelSizes=null,this.afterAutoSkip()),c&&this._convertTicksToLabels(this.ticks),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate()}configure(){let e=this.options.reverse,n,i;this.isHorizontal()?(n=this.left,i=this.right):(n=this.top,i=this.bottom,e=!e),this._startPixel=n,this._endPixel=i,this._reversePixels=e,this._length=i-n,this._alignToPixels=this.options.alignToPixels}afterUpdate(){In(this.options.afterUpdate,[this])}beforeSetDimensions(){In(this.options.beforeSetDimensions,[this])}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0}afterSetDimensions(){In(this.options.afterSetDimensions,[this])}_callHooks(e){this.chart.notifyPlugins(e,this.getContext()),In(this.options[e],[this])}beforeDataLimits(){this._callHooks("beforeDataLimits")}determineDataLimits(){}afterDataLimits(){this._callHooks("afterDataLimits")}beforeBuildTicks(){this._callHooks("beforeBuildTicks")}buildTicks(){return[]}afterBuildTicks(){this._callHooks("afterBuildTicks")}beforeTickToLabelConversion(){In(this.options.beforeTickToLabelConversion,[this])}generateTickLabels(e){const n=this.options.ticks;let i,s,a;for(i=0,s=e.length;i<s;i++)a=e[i],a.label=In(n.callback,[a.value,i,e],this)}afterTickToLabelConversion(){In(this.options.afterTickToLabelConversion,[this])}beforeCalculateLabelRotation(){In(this.options.beforeCalculateLabelRotation,[this])}calculateLabelRotation(){const e=this.options,n=e.ticks,i=DP(this.ticks.length,e.ticks.maxTicksLimit),s=n.minRotation||0,a=n.maxRotation;let o=s,r,c,d;if(!this._isVisible()||!n.display||s>=a||i<=1||!this.isHorizontal()){this.labelRotation=s;return}const f=this._getLabelSizes(),p=f.widest.width,g=f.highest.height,y=ya(this.chart.width-p,0,this.maxWidth);r=e.offset?this.maxWidth/i:y/(i-1),p+6>r&&(r=y/(i-(e.offset?.5:1)),c=this.maxHeight-ff(e.grid)-n.padding-IP(e.title,this.chart.options.font),d=Math.sqrt(p*p+g*g),o=Lce(Math.min(Math.asin(ya((f.highest.height+6)/r,-1,1)),Math.asin(ya(c/d,-1,1))-Math.asin(ya(g/d,-1,1)))),o=Math.max(s,Math.min(a,o))),this.labelRotation=o}afterCalculateLabelRotation(){In(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){In(this.options.beforeFit,[this])}fit(){const e={width:0,height:0},{chart:n,options:{ticks:i,title:s,grid:a}}=this,o=this._isVisible(),r=this.isHorizontal();if(o){const c=IP(s,n.options.font);if(r?(e.width=this.maxWidth,e.height=ff(a)+c):(e.height=this.maxHeight,e.width=ff(a)+c),i.display&&this.ticks.length){const{first:d,last:f,widest:p,highest:g}=this._getLabelSizes(),y=i.padding*2,_=Sc(this.labelRotation),v=Math.cos(_),x=Math.sin(_);if(r){const k=i.mirror?0:x*p.width+v*g.height;e.height=Math.min(this.maxHeight,e.height+k+y)}else{const k=i.mirror?0:v*p.width+x*g.height;e.width=Math.min(this.maxWidth,e.width+k+y)}this._calculatePadding(d,f,x,v)}}this._handleMargins(),r?(this.width=this._length=n.width-this._margins.left-this._margins.right,this.height=e.height):(this.width=e.width,this.height=this._length=n.height-this._margins.top-this._margins.bottom)}_calculatePadding(e,n,i,s){const{ticks:{align:a,padding:o},position:r}=this.options,c=this.labelRotation!==0,d=r!=="top"&&this.axis==="x";if(this.isHorizontal()){const f=this.getPixelForTick(0)-this.left,p=this.right-this.getPixelForTick(this.ticks.length-1);let g=0,y=0;c?d?(g=s*e.width,y=i*n.height):(g=i*e.height,y=s*n.width):a==="start"?y=n.width:a==="end"?g=e.width:a!=="inner"&&(g=e.width/2,y=n.width/2),this.paddingLeft=Math.max((g-f+o)*this.width/(this.width-f),0),this.paddingRight=Math.max((y-p+o)*this.width/(this.width-p),0)}else{let f=n.height/2,p=e.height/2;a==="start"?(f=0,p=e.height):a==="end"&&(f=n.height,p=0),this.paddingTop=f+o,this.paddingBottom=p+o}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){In(this.options.afterFit,[this])}isHorizontal(){const{axis:e,position:n}=this.options;return n==="top"||n==="bottom"||e==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(e){this.beforeTickToLabelConversion(),this.generateTickLabels(e);let n,i;for(n=0,i=e.length;n<i;n++)En(e[n].label)&&(e.splice(n,1),i--,n--);this.afterTickToLabelConversion()}_getLabelSizes(){let e=this._labelSizes;if(!e){const n=this.options.ticks.sampleSize;let i=this.ticks;n<i.length&&(i=FP(i,n)),this._labelSizes=e=this._computeLabelSizes(i,i.length,this.options.ticks.maxTicksLimit)}return e}_computeLabelSizes(e,n,i){const{ctx:s,_longestTextCache:a}=this,o=[],r=[],c=Math.floor(n/DP(n,i));let d=0,f=0,p,g,y,_,v,x,k,C,N,L,M;for(p=0;p<n;p+=c){if(_=e[p].label,v=this._resolveTickFontOptions(p),s.font=x=v.string,k=a[x]=a[x]||{data:{},gc:[]},C=v.lineHeight,N=L=0,!En(_)&&!Ai(_))N=mP(s,k.data,k.gc,N,_),L=C;else if(Ai(_))for(g=0,y=_.length;g<y;++g)M=_[g],!En(M)&&!Ai(M)&&(N=mP(s,k.data,k.gc,N,M),L+=C);o.push(N),r.push(L),d=Math.max(N,d),f=Math.max(L,f)}Ide(a,n);const O=o.indexOf(d),T=r.indexOf(f),P=E=>({width:o[E]||0,height:r[E]||0});return{first:P(0),last:P(n-1),widest:P(O),highest:P(T),widths:o,heights:r}}getLabelForValue(e){return e}getPixelForValue(e,n){return NaN}getValueForPixel(e){}getPixelForTick(e){const n=this.ticks;return e<0||e>n.length-1?null:this.getPixelForValue(n[e].value)}getPixelForDecimal(e){this._reversePixels&&(e=1-e);const n=this._startPixel+e*this._length;return Ece(this._alignToPixels?oc(this.chart,n,0):n)}getDecimalForPixel(e){const n=(e-this._startPixel)/this._length;return this._reversePixels?1-n:n}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:e,max:n}=this;return e<0&&n<0?n:e>0&&n>0?e:0}getContext(e){const n=this.ticks||[];if(e>=0&&e<n.length){const i=n[e];return i.$context||(i.$context=Ude(this.getContext(),e,i))}return this.$context||(this.$context=Bde(this.chart.getContext(),this))}_tickSize(){const e=this.options.ticks,n=Sc(this.labelRotation),i=Math.abs(Math.cos(n)),s=Math.abs(Math.sin(n)),a=this._getLabelSizes(),o=e.autoSkipPadding||0,r=a?a.widest.width+o:0,c=a?a.highest.height+o:0;return this.isHorizontal()?c*i>r*s?r/i:c/s:c*s<r*i?c/i:r/s}_isVisible(){const e=this.options.display;return e!=="auto"?!!e:this.getMatchingVisibleMetas().length>0}_computeGridLineItems(e){const n=this.axis,i=this.chart,s=this.options,{grid:a,position:o,border:r}=s,c=a.offset,d=this.isHorizontal(),p=this.ticks.length+(c?1:0),g=ff(a),y=[],_=r.setContext(this.getContext()),v=_.display?_.width:0,x=v/2,k=function(B){return oc(i,B,v)};let C,N,L,M,O,T,P,E,R,q,I,Y;if(o==="top")C=k(this.bottom),T=this.bottom-g,E=C-x,q=k(e.top)+x,Y=e.bottom;else if(o==="bottom")C=k(this.top),q=e.top,Y=k(e.bottom)-x,T=C+x,E=this.top+g;else if(o==="left")C=k(this.right),O=this.right-g,P=C-x,R=k(e.left)+x,I=e.right;else if(o==="right")C=k(this.left),R=e.left,I=k(e.right)-x,O=C+x,P=this.left+g;else if(n==="x"){if(o==="center")C=k((e.top+e.bottom)/2+.5);else if(ln(o)){const B=Object.keys(o)[0],H=o[B];C=k(this.chart.scales[B].getPixelForValue(H))}q=e.top,Y=e.bottom,T=C+x,E=T+g}else if(n==="y"){if(o==="center")C=k((e.left+e.right)/2);else if(ln(o)){const B=Object.keys(o)[0],H=o[B];C=k(this.chart.scales[B].getPixelForValue(H))}O=C-x,P=O-g,R=e.left,I=e.right}const X=sn(s.ticks.maxTicksLimit,p),K=Math.max(1,Math.ceil(p/X));for(N=0;N<p;N+=K){const B=this.getContext(N),H=a.setContext(B),z=r.setContext(B),Q=H.lineWidth,W=H.color,D=z.dash||[],U=z.dashOffset,$=H.tickWidth,te=H.tickColor,ie=H.tickBorderDash||[],F=H.tickBorderDashOffset;L=Fde(this,N,c),L!==void 0&&(M=oc(i,L,Q),d?O=P=R=I=M:T=E=q=Y=M,y.push({tx1:O,ty1:T,tx2:P,ty2:E,x1:R,y1:q,x2:I,y2:Y,width:Q,color:W,borderDash:D,borderDashOffset:U,tickWidth:$,tickColor:te,tickBorderDash:ie,tickBorderDashOffset:F}))}return this._ticksLength=p,this._borderValue=C,y}_computeLabelItems(e){const n=this.axis,i=this.options,{position:s,ticks:a}=i,o=this.isHorizontal(),r=this.ticks,{align:c,crossAlign:d,padding:f,mirror:p}=a,g=ff(i.grid),y=g+f,_=p?-f:y,v=-Sc(this.labelRotation),x=[];let k,C,N,L,M,O,T,P,E,R,q,I,Y="middle";if(s==="top")O=this.bottom-_,T=this._getXAxisLabelAlignment();else if(s==="bottom")O=this.top+_,T=this._getXAxisLabelAlignment();else if(s==="left"){const K=this._getYAxisLabelAlignment(g);T=K.textAlign,M=K.x}else if(s==="right"){const K=this._getYAxisLabelAlignment(g);T=K.textAlign,M=K.x}else if(n==="x"){if(s==="center")O=(e.top+e.bottom)/2+y;else if(ln(s)){const K=Object.keys(s)[0],B=s[K];O=this.chart.scales[K].getPixelForValue(B)+y}T=this._getXAxisLabelAlignment()}else if(n==="y"){if(s==="center")M=(e.left+e.right)/2-y;else if(ln(s)){const K=Object.keys(s)[0],B=s[K];M=this.chart.scales[K].getPixelForValue(B)}T=this._getYAxisLabelAlignment(g).textAlign}n==="y"&&(c==="start"?Y="top":c==="end"&&(Y="bottom"));const X=this._getLabelSizes();for(k=0,C=r.length;k<C;++k){N=r[k],L=N.label;const K=a.setContext(this.getContext(k));P=this.getPixelForTick(k)+a.labelOffset,E=this._resolveTickFontOptions(k),R=E.lineHeight,q=Ai(L)?L.length:1;const B=q/2,H=K.color,z=K.textStrokeColor,Q=K.textStrokeWidth;let W=T;o?(M=P,T==="inner"&&(k===C-1?W=this.options.reverse?"left":"right":k===0?W=this.options.reverse?"right":"left":W="center"),s==="top"?d==="near"||v!==0?I=-q*R+R/2:d==="center"?I=-X.highest.height/2-B*R+R:I=-X.highest.height+R/2:d==="near"||v!==0?I=R/2:d==="center"?I=X.highest.height/2-B*R:I=X.highest.height-q*R,p&&(I*=-1),v!==0&&!K.showLabelBackdrop&&(M+=R/2*Math.sin(v))):(O=P,I=(1-q)*R/2);let D;if(K.showLabelBackdrop){const U=Ta(K.backdropPadding),$=X.heights[k],te=X.widths[k];let ie=I-U.top,F=0-U.left;switch(Y){case"middle":ie-=$/2;break;case"bottom":ie-=$;break}switch(T){case"center":F-=te/2;break;case"right":F-=te;break;case"inner":k===C-1?F-=te:k>0&&(F-=te/2);break}D={left:F,top:ie,width:te+U.width,height:$+U.height,color:K.backdropColor}}x.push({label:L,font:E,textOffset:I,options:{rotation:v,color:H,strokeColor:z,strokeWidth:Q,textAlign:W,textBaseline:Y,translation:[M,O],backdrop:D}})}return x}_getXAxisLabelAlignment(){const{position:e,ticks:n}=this.options;if(-Sc(this.labelRotation))return e==="top"?"left":"right";let s="center";return n.align==="start"?s="left":n.align==="end"?s="right":n.align==="inner"&&(s="inner"),s}_getYAxisLabelAlignment(e){const{position:n,ticks:{crossAlign:i,mirror:s,padding:a}}=this.options,o=this._getLabelSizes(),r=e+a,c=o.widest.width;let d,f;return n==="left"?s?(f=this.right+a,i==="near"?d="left":i==="center"?(d="center",f+=c/2):(d="right",f+=c)):(f=this.right-r,i==="near"?d="right":i==="center"?(d="center",f-=c/2):(d="left",f=this.left)):n==="right"?s?(f=this.left+a,i==="near"?d="right":i==="center"?(d="center",f-=c/2):(d="left",f-=c)):(f=this.left+r,i==="near"?d="left":i==="center"?(d="center",f+=c/2):(d="right",f=this.right)):d="right",{textAlign:d,x:f}}_computeLabelArea(){if(this.options.ticks.mirror)return;const e=this.chart,n=this.options.position;if(n==="left"||n==="right")return{top:0,left:this.left,bottom:e.height,right:this.right};if(n==="top"||n==="bottom")return{top:this.top,left:0,bottom:this.bottom,right:e.width}}drawBackground(){const{ctx:e,options:{backgroundColor:n},left:i,top:s,width:a,height:o}=this;n&&(e.save(),e.fillStyle=n,e.fillRect(i,s,a,o),e.restore())}getLineWidthForValue(e){const n=this.options.grid;if(!this._isVisible()||!n.display)return 0;const s=this.ticks.findIndex(a=>a.value===e);return s>=0?n.setContext(this.getContext(s)).lineWidth:0}drawGrid(e){const n=this.options.grid,i=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(e));let a,o;const r=(c,d,f)=>{!f.width||!f.color||(i.save(),i.lineWidth=f.width,i.strokeStyle=f.color,i.setLineDash(f.borderDash||[]),i.lineDashOffset=f.borderDashOffset,i.beginPath(),i.moveTo(c.x,c.y),i.lineTo(d.x,d.y),i.stroke(),i.restore())};if(n.display)for(a=0,o=s.length;a<o;++a){const c=s[a];n.drawOnChartArea&&r({x:c.x1,y:c.y1},{x:c.x2,y:c.y2},c),n.drawTicks&&r({x:c.tx1,y:c.ty1},{x:c.tx2,y:c.ty2},{color:c.tickColor,width:c.tickWidth,borderDash:c.tickBorderDash,borderDashOffset:c.tickBorderDashOffset})}}drawBorder(){const{chart:e,ctx:n,options:{border:i,grid:s}}=this,a=i.setContext(this.getContext()),o=i.display?a.width:0;if(!o)return;const r=s.setContext(this.getContext(0)).lineWidth,c=this._borderValue;let d,f,p,g;this.isHorizontal()?(d=oc(e,this.left,o)-o/2,f=oc(e,this.right,r)+r/2,p=g=c):(p=oc(e,this.top,o)-o/2,g=oc(e,this.bottom,r)+r/2,d=f=c),n.save(),n.lineWidth=a.width,n.strokeStyle=a.color,n.beginPath(),n.moveTo(d,p),n.lineTo(f,g),n.stroke(),n.restore()}drawLabels(e){if(!this.options.ticks.display)return;const i=this.ctx,s=this._computeLabelArea();s&&Hy(i,s);const a=this.getLabelItems(e);for(const o of a){const r=o.options,c=o.font,d=o.label,f=o.textOffset;vm(i,d,0,f,c,r)}s&&Wy(i)}drawTitle(){const{ctx:e,options:{position:n,title:i,reverse:s}}=this;if(!i.display)return;const a=as(i.font),o=Ta(i.padding),r=i.align;let c=a.lineHeight/2;n==="bottom"||n==="center"||ln(n)?(c+=o.bottom,Ai(i.text)&&(c+=a.lineHeight*(i.text.length-1))):c+=o.top;const{titleX:d,titleY:f,maxWidth:p,rotation:g}=zde(this,c,n,r);vm(e,i.text,0,0,a,{color:i.color,maxWidth:p,rotation:g,textAlign:qde(r,n,s),textBaseline:"middle",translation:[d,f]})}draw(e){this._isVisible()&&(this.drawBackground(),this.drawGrid(e),this.drawBorder(),this.drawTitle(),this.drawLabels(e))}_layers(){const e=this.options,n=e.ticks&&e.ticks.z||0,i=sn(e.grid&&e.grid.z,-1),s=sn(e.border&&e.border.z,0);return!this._isVisible()||this.draw!==$d.prototype.draw?[{z:n,draw:a=>{this.draw(a)}}]:[{z:i,draw:a=>{this.drawBackground(),this.drawGrid(a),this.drawTitle()}},{z:s,draw:()=>{this.drawBorder()}},{z:n,draw:a=>{this.drawLabels(a)}}]}getMatchingVisibleMetas(e){const n=this.chart.getSortedVisibleDatasetMetas(),i=this.axis+"AxisID",s=[];let a,o;for(a=0,o=n.length;a<o;++a){const r=n[a];r[i]===this.id&&(!e||r.type===e)&&s.push(r)}return s}_resolveTickFontOptions(e){const n=this.options.ticks.setContext(this.getContext(e));return as(n.font)}_maxDigits(){const e=this._resolveTickFontOptions(0).lineHeight;return(this.isHorizontal()?this.width:this.height)/e}}class h_{constructor(e,n,i){this.type=e,this.scope=n,this.override=i,this.items=Object.create(null)}isForType(e){return Object.prototype.isPrototypeOf.call(this.type.prototype,e.prototype)}register(e){const n=Object.getPrototypeOf(e);let i;Hde(n)&&(i=this.register(n));const s=this.items,a=e.id,o=this.scope+"."+a;if(!a)throw new Error("class does not have id: "+e);return a in s||(s[a]=e,Kde(e,o,i),this.override&&oi.override(e.id,e.overrides)),o}get(e){return this.items[e]}unregister(e){const n=this.items,i=e.id,s=this.scope;i in n&&delete n[i],s&&i in oi[s]&&(delete oi[s][i],this.override&&delete Ic[i])}}function Kde(t,e,n){const i=_m(Object.create(null),[n?oi.get(n):{},oi.get(e),t.defaults]);oi.set(e,i),t.defaultRoutes&&Vde(e,t.defaultRoutes),t.descriptors&&oi.describe(e,t.descriptors)}function Vde(t,e){Object.keys(e).forEach(n=>{const i=n.split("."),s=i.pop(),a=[t].concat(i).join("."),o=e[n].split("."),r=o.pop(),c=o.join(".");oi.route(a,s,c,r)})}function Hde(t){return"id"in t&&"defaults"in t}class Wde{constructor(){this.controllers=new h_(Jf,"datasets",!0),this.elements=new h_(Nr,"elements"),this.plugins=new h_(Object,"plugins"),this.scales=new h_($d,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...e){this._each("register",e)}remove(...e){this._each("unregister",e)}addControllers(...e){this._each("register",e,this.controllers)}addElements(...e){this._each("register",e,this.elements)}addPlugins(...e){this._each("register",e,this.plugins)}addScales(...e){this._each("register",e,this.scales)}getController(e){return this._get(e,this.controllers,"controller")}getElement(e){return this._get(e,this.elements,"element")}getPlugin(e){return this._get(e,this.plugins,"plugin")}getScale(e){return this._get(e,this.scales,"scale")}removeControllers(...e){this._each("unregister",e,this.controllers)}removeElements(...e){this._each("unregister",e,this.elements)}removePlugins(...e){this._each("unregister",e,this.plugins)}removeScales(...e){this._each("unregister",e,this.scales)}_each(e,n,i){[...n].forEach(s=>{const a=i||this._getRegistryForType(s);i||a.isForType(s)||a===this.plugins&&s.id?this._exec(e,a,s):Sn(s,o=>{const r=i||this._getRegistryForType(o);this._exec(e,r,o)})})}_exec(e,n,i){const s=lk(e);In(i["before"+s],[],i),n[e](i),In(i["after"+s],[],i)}_getRegistryForType(e){for(let n=0;n<this._typedRegistries.length;n++){const i=this._typedRegistries[n];if(i.isForType(e))return i}return this.plugins}_get(e,n,i){const s=n.get(e);if(s===void 0)throw new Error('"'+e+'" is not a registered '+i+".");return s}}var go=new Wde;class Gde{constructor(){this._init=void 0}notify(e,n,i,s){if(n==="beforeInit"&&(this._init=this._createDescriptors(e,!0),this._notify(this._init,e,"install")),this._init===void 0)return;const a=s?this._descriptors(e).filter(s):this._descriptors(e),o=this._notify(a,e,n,i);return n==="afterDestroy"&&(this._notify(a,e,"stop"),this._notify(this._init,e,"uninstall"),this._init=void 0),o}_notify(e,n,i,s){s=s||{};for(const a of e){const o=a.plugin,r=o[i],c=[n,s,a.options];if(In(r,c,o)===!1&&s.cancelable)return!1}return!0}invalidate(){En(this._cache)||(this._oldCache=this._cache,this._cache=void 0)}_descriptors(e){if(this._cache)return this._cache;const n=this._cache=this._createDescriptors(e);return this._notifyStateChanges(e),n}_createDescriptors(e,n){const i=e&&e.config,s=sn(i.options&&i.options.plugins,{}),a=$de(i);return s===!1&&!n?[]:Qde(e,a,s,n)}_notifyStateChanges(e){const n=this._oldCache||[],i=this._cache,s=(a,o)=>a.filter(r=>!o.some(c=>r.plugin.id===c.plugin.id));this._notify(s(n,i),e,"stop"),this._notify(s(i,n),e,"start")}}function $de(t){const e={},n=[],i=Object.keys(go.plugins.items);for(let a=0;a<i.length;a++)n.push(go.getPlugin(i[a]));const s=t.plugins||[];for(let a=0;a<s.length;a++){const o=s[a];n.indexOf(o)===-1&&(n.push(o),e[o.id]=!0)}return{plugins:n,localIds:e}}function Xde(t,e){return!e&&t===!1?null:t===!0?{}:t}function Qde(t,{plugins:e,localIds:n},i,s){const a=[],o=t.getContext();for(const r of e){const c=r.id,d=Xde(i[c],s);d!==null&&a.push({plugin:r,options:Yde(t.config,{plugin:r,local:n[c]},d,o)})}return a}function Yde(t,{plugin:e,local:n},i,s){const a=t.pluginScopeKeys(e),o=t.getOptionScopes(i,a);return n&&e.defaults&&o.push(e.defaults),t.createResolver(o,s,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function iS(t,e){const n=oi.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||n.indexAxis||"x"}function Jde(t,e){let n=t;return t==="_index_"?n=e:t==="_value_"&&(n=e==="x"?"y":"x"),n}function Zde(t,e){return t===e?"_index_":"_value_"}function BP(t){if(t==="x"||t==="y"||t==="r")return t}function ehe(t){if(t==="top"||t==="bottom")return"x";if(t==="left"||t==="right")return"y"}function sS(t,...e){if(BP(t))return t;for(const n of e){const i=n.axis||ehe(n.position)||t.length>1&&BP(t[0].toLowerCase());if(i)return i}throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function UP(t,e,n){if(n[e+"AxisID"]===t)return{axis:e}}function the(t,e){if(e.data&&e.data.datasets){const n=e.data.datasets.filter(i=>i.xAxisID===t||i.yAxisID===t);if(n.length)return UP(t,"x",n[0])||UP(t,"y",n[0])}return{}}function nhe(t,e){const n=Ic[t.type]||{scales:{}},i=e.scales||{},s=iS(t.type,e),a=Object.create(null);return Object.keys(i).forEach(o=>{const r=i[o];if(!ln(r))return console.error(`Invalid scale configuration for scale: ${o}`);if(r._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${o}`);const c=sS(o,r,the(o,t),oi.scales[r.type]),d=Zde(c,s),f=n.scales||{};a[o]=Gf(Object.create(null),[{axis:c},r,f[c],f[d]])}),t.data.datasets.forEach(o=>{const r=o.type||t.type,c=o.indexAxis||iS(r,e),f=(Ic[r]||{}).scales||{};Object.keys(f).forEach(p=>{const g=Jde(p,c),y=o[g+"AxisID"]||g;a[y]=a[y]||Object.create(null),Gf(a[y],[{axis:g},i[y],f[p]])})}),Object.keys(a).forEach(o=>{const r=a[o];Gf(r,[oi.scales[r.type],oi.scale])}),a}function aD(t){const e=t.options||(t.options={});e.plugins=sn(e.plugins,{}),e.scales=nhe(t,e)}function oD(t){return t=t||{},t.datasets=t.datasets||[],t.labels=t.labels||[],t}function ihe(t){return t=t||{},t.data=oD(t.data),aD(t),t}const qP=new Map,rD=new Set;function f_(t,e){let n=qP.get(t);return n||(n=e(),qP.set(t,n),rD.add(n)),n}const mf=(t,e,n)=>{const i=U0(e,n);i!==void 0&&t.add(i)};class she{constructor(e){this._config=ihe(e),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(e){this._config.type=e}get data(){return this._config.data}set data(e){this._config.data=oD(e)}get options(){return this._config.options}set options(e){this._config.options=e}get plugins(){return this._config.plugins}update(){const e=this._config;this.clearCache(),aD(e)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(e){return f_(e,()=>[[`datasets.${e}`,""]])}datasetAnimationScopeKeys(e,n){return f_(`${e}.transition.${n}`,()=>[[`datasets.${e}.transitions.${n}`,`transitions.${n}`],[`datasets.${e}`,""]])}datasetElementScopeKeys(e,n){return f_(`${e}-${n}`,()=>[[`datasets.${e}.elements.${n}`,`datasets.${e}`,`elements.${n}`,""]])}pluginScopeKeys(e){const n=e.id,i=this.type;return f_(`${i}-plugin-${n}`,()=>[[`plugins.${n}`,...e.additionalOptionScopes||[]]])}_cachedScopes(e,n){const i=this._scopeCache;let s=i.get(e);return(!s||n)&&(s=new Map,i.set(e,s)),s}getOptionScopes(e,n,i){const{options:s,type:a}=this,o=this._cachedScopes(e,i),r=o.get(n);if(r)return r;const c=new Set;n.forEach(f=>{e&&(c.add(e),f.forEach(p=>mf(c,e,p))),f.forEach(p=>mf(c,s,p)),f.forEach(p=>mf(c,Ic[a]||{},p)),f.forEach(p=>mf(c,oi,p)),f.forEach(p=>mf(c,eS,p))});const d=Array.from(c);return d.length===0&&d.push(Object.create(null)),rD.has(n)&&o.set(n,d),d}chartOptionScopes(){const{options:e,type:n}=this;return[e,Ic[n]||{},oi.datasets[n]||{},{type:n},oi,eS]}resolveNamedOptions(e,n,i,s=[""]){const a={$shared:!0},{resolver:o,subPrefixes:r}=zP(this._resolverCache,e,s);let c=o;if(ohe(o,n)){a.$shared=!1,i=Ml(i)?i():i;const d=this.createResolver(e,i,r);c=Nd(o,i,d)}for(const d of n)a[d]=c[d];return a}createResolver(e,n,i=[""],s){const{resolver:a}=zP(this._resolverCache,e,i);return ln(n)?Nd(a,n,void 0,s):a}}function zP(t,e,n){let i=t.get(e);i||(i=new Map,t.set(e,i));const s=n.join();let a=i.get(s);return a||(a={resolver:hk(e,n),subPrefixes:n.filter(r=>!r.toLowerCase().includes("hover"))},i.set(s,a)),a}const ahe=t=>ln(t)&&Object.getOwnPropertyNames(t).some(e=>Ml(t[e]));function ohe(t,e){const{isScriptable:n,isIndexable:i}=q5(t);for(const s of e){const a=n(s),o=i(s),r=(o||a)&&t[s];if(a&&(Ml(r)||ahe(r))||o&&Ai(r))return!0}return!1}var rhe="4.5.1";const lhe=["top","bottom","left","right","chartArea"];function KP(t,e){return t==="top"||t==="bottom"||lhe.indexOf(t)===-1&&e==="x"}function VP(t,e){return function(n,i){return n[t]===i[t]?n[e]-i[e]:n[t]-i[t]}}function HP(t){const e=t.chart,n=e.options.animation;e.notifyPlugins("afterRender"),In(n&&n.onComplete,[t],e)}function che(t){const e=t.chart,n=e.options.animation;In(n&&n.onProgress,[t],e)}function lD(t){return pk()&&typeof t=="string"?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const l0={},WP=t=>{const e=lD(t);return Object.values(l0).filter(n=>n.canvas===e).pop()};function uhe(t,e,n){const i=Object.keys(t);for(const s of i){const a=+s;if(a>=e){const o=t[s];delete t[s],(n>0||a>e)&&(t[a+n]=o)}}}function dhe(t,e,n,i){return!n||t.type==="mouseout"?null:i?e:t}var ll;let Xy=(ll=class{static register(...e){go.add(...e),GP()}static unregister(...e){go.remove(...e),GP()}constructor(e,n){const i=this.config=new she(n),s=lD(e),a=WP(s);if(a)throw new Error("Canvas is already in use. Chart with ID '"+a.id+"' must be destroyed before the canvas with ID '"+a.canvas.id+"' can be reused.");const o=i.createResolver(i.chartOptionScopes(),this.getContext());this.platform=new(i.platform||Mde(s)),this.platform.updateConfig(i);const r=this.platform.acquireContext(s,o.aspectRatio),c=r&&r.canvas,d=c&&c.height,f=c&&c.width;if(this.id=_ce(),this.ctx=r,this.canvas=c,this.width=f,this.height=d,this._options=o,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Gde,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=Ice(p=>this.update(p),o.resizeDelay||0),this._dataChanges=[],l0[this.id]=this,!r||!c){console.error("Failed to create chart: can't acquire context from the given item");return}dr.listen(this,"complete",HP),dr.listen(this,"progress",che),this._initialize(),this.attached&&this.update()}get aspectRatio(){const{options:{aspectRatio:e,maintainAspectRatio:n},width:i,height:s,_aspectRatio:a}=this;return En(e)?n&&a?a:s?i/s:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}get registry(){return go}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():yP(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return pP(this.canvas,this.ctx),this}stop(){return dr.stop(this),this}resize(e,n){dr.running(this)?this._resizeBeforeDraw={width:e,height:n}:this._resize(e,n)}_resize(e,n){const i=this.options,s=this.canvas,a=i.maintainAspectRatio&&this.aspectRatio,o=this.platform.getMaximumSize(s,e,n,a),r=i.devicePixelRatio||this.platform.getDevicePixelRatio(),c=this.width?"resize":"attach";this.width=o.width,this.height=o.height,this._aspectRatio=this.aspectRatio,yP(this,r,!0)&&(this.notifyPlugins("resize",{size:o}),In(i.onResize,[this,o],this),this.attached&&this._doResize(c)&&this.render())}ensureScalesHaveIDs(){const n=this.options.scales||{};Sn(n,(i,s)=>{i.id=s})}buildOrUpdateScales(){const e=this.options,n=e.scales,i=this.scales,s=Object.keys(i).reduce((o,r)=>(o[r]=!1,o),{});let a=[];n&&(a=a.concat(Object.keys(n).map(o=>{const r=n[o],c=sS(o,r),d=c==="r",f=c==="x";return{options:r,dposition:d?"chartArea":f?"bottom":"left",dtype:d?"radialLinear":f?"category":"linear"}}))),Sn(a,o=>{const r=o.options,c=r.id,d=sS(c,r),f=sn(r.type,o.dtype);(r.position===void 0||KP(r.position,d)!==KP(o.dposition))&&(r.position=o.dposition),s[c]=!0;let p=null;if(c in i&&i[c].type===f)p=i[c];else{const g=go.getScale(f);p=new g({id:c,type:f,ctx:this.ctx,chart:this}),i[p.id]=p}p.init(r,e)}),Sn(s,(o,r)=>{o||delete i[r]}),Sn(i,o=>{ba.configure(this,o,o.options),ba.addBox(this,o)})}_updateMetasets(){const e=this._metasets,n=this.data.datasets.length,i=e.length;if(e.sort((s,a)=>s.index-a.index),i>n){for(let s=n;s<i;++s)this._destroyDatasetMeta(s);e.splice(n,i-n)}this._sortedMetasets=e.slice(0).sort(VP("order","index"))}_removeUnreferencedMetasets(){const{_metasets:e,data:{datasets:n}}=this;e.length>n.length&&delete this._stacks,e.forEach((i,s)=>{n.filter(a=>a===i._dataset).length===0&&this._destroyDatasetMeta(s)})}buildOrUpdateControllers(){const e=[],n=this.data.datasets;let i,s;for(this._removeUnreferencedMetasets(),i=0,s=n.length;i<s;i++){const a=n[i];let o=this.getDatasetMeta(i);const r=a.type||this.config.type;if(o.type&&o.type!==r&&(this._destroyDatasetMeta(i),o=this.getDatasetMeta(i)),o.type=r,o.indexAxis=a.indexAxis||iS(r,this.options),o.order=a.order||0,o.index=i,o.label=""+a.label,o.visible=this.isDatasetVisible(i),o.controller)o.controller.updateIndex(i),o.controller.linkScales();else{const c=go.getController(r),{datasetElementType:d,dataElementType:f}=oi.datasets[r];Object.assign(c,{dataElementType:go.getElement(f),datasetElementType:d&&go.getElement(d)}),o.controller=new c(this,i),e.push(o.controller)}}return this._updateMetasets(),e}_resetElements(){Sn(this.data.datasets,(e,n)=>{this.getDatasetMeta(n).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(e){const n=this.config;n.update();const i=this._options=n.createResolver(n.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!i.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:e,cancelable:!0})===!1)return;const a=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let o=0;for(let d=0,f=this.data.datasets.length;d<f;d++){const{controller:p}=this.getDatasetMeta(d),g=!s&&a.indexOf(p)===-1;p.buildOrUpdateElements(g),o=Math.max(+p.getMaxOverflow(),o)}o=this._minPadding=i.layout.autoPadding?o:0,this._updateLayout(o),s||Sn(a,d=>{d.reset()}),this._updateDatasets(e),this.notifyPlugins("afterUpdate",{mode:e}),this._layers.sort(VP("z","_idx"));const{_active:r,_lastEvent:c}=this;c?this._eventHandler(c,!0):r.length&&this._updateHoverStyles(r,r,!0),this.render()}_updateScales(){Sn(this.scales,e=>{ba.removeBox(this,e)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const e=this.options,n=new Set(Object.keys(this._listeners)),i=new Set(e.events);(!aP(n,i)||!!this._responsiveListeners!==e.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:e}=this,n=this._getUniformDataChanges()||[];for(const{method:i,start:s,count:a}of n){const o=i==="_removeElements"?-a:a;uhe(e,s,o)}}_getUniformDataChanges(){const e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];const n=this.data.datasets.length,i=a=>new Set(e.filter(o=>o[0]===a).map((o,r)=>r+","+o.splice(1).join(","))),s=i(0);for(let a=1;a<n;a++)if(!aP(s,i(a)))return;return Array.from(s).map(a=>a.split(",")).map(a=>({method:a[1],start:+a[2],count:+a[3]}))}_updateLayout(e){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;ba.update(this,this.width,this.height,e);const n=this.chartArea,i=n.width<=0||n.height<=0;this._layers=[],Sn(this.boxes,s=>{i&&s.position==="chartArea"||(s.configure&&s.configure(),this._layers.push(...s._layers()))},this),this._layers.forEach((s,a)=>{s._idx=a}),this.notifyPlugins("afterLayout")}_updateDatasets(e){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:e,cancelable:!0})!==!1){for(let n=0,i=this.data.datasets.length;n<i;++n)this.getDatasetMeta(n).controller.configure();for(let n=0,i=this.data.datasets.length;n<i;++n)this._updateDataset(n,Ml(e)?e({datasetIndex:n}):e);this.notifyPlugins("afterDatasetsUpdate",{mode:e})}}_updateDataset(e,n){const i=this.getDatasetMeta(e),s={meta:i,index:e,mode:n,cancelable:!0};this.notifyPlugins("beforeDatasetUpdate",s)!==!1&&(i.controller._update(n),s.cancelable=!1,this.notifyPlugins("afterDatasetUpdate",s))}render(){this.notifyPlugins("beforeRender",{cancelable:!0})!==!1&&(dr.has(this)?this.attached&&!dr.running(this)&&dr.start(this):(this.draw(),HP({chart:this})))}draw(){let e;if(this._resizeBeforeDraw){const{width:i,height:s}=this._resizeBeforeDraw;this._resizeBeforeDraw=null,this._resize(i,s)}if(this.clear(),this.width<=0||this.height<=0||this.notifyPlugins("beforeDraw",{cancelable:!0})===!1)return;const n=this._layers;for(e=0;e<n.length&&n[e].z<=0;++e)n[e].draw(this.chartArea);for(this._drawDatasets();e<n.length;++e)n[e].draw(this.chartArea);this.notifyPlugins("afterDraw")}_getSortedDatasetMetas(e){const n=this._sortedMetasets,i=[];let s,a;for(s=0,a=n.length;s<a;++s){const o=n[s];(!e||o.visible)&&i.push(o)}return i}getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)}_drawDatasets(){if(this.notifyPlugins("beforeDatasetsDraw",{cancelable:!0})===!1)return;const e=this.getSortedVisibleDatasetMetas();for(let n=e.length-1;n>=0;--n)this._drawDataset(e[n]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(e){const n=this.ctx,i={meta:e,index:e.index,cancelable:!0},s=Y5(this,e);this.notifyPlugins("beforeDatasetDraw",i)!==!1&&(s&&Hy(n,s),e.controller.draw(),s&&Wy(n),i.cancelable=!1,this.notifyPlugins("afterDatasetDraw",i))}isPointInArea(e){return bm(e,this.chartArea,this._minPadding)}getElementsAtEventForMode(e,n,i,s){const a=lde.modes[n];return typeof a=="function"?a(this,e,i,s):[]}getDatasetMeta(e){const n=this.data.datasets[e],i=this._metasets;let s=i.filter(a=>a&&a._dataset===n).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:n&&n.order||0,index:e,_dataset:n,_parsed:[],_sorted:!1},i.push(s)),s}getContext(){return this.$context||(this.$context=Xc(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){const n=this.data.datasets[e];if(!n)return!1;const i=this.getDatasetMeta(e);return typeof i.hidden=="boolean"?!i.hidden:!n.hidden}setDatasetVisibility(e,n){const i=this.getDatasetMeta(e);i.hidden=!n}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,n,i){const s=i?"show":"hide",a=this.getDatasetMeta(e),o=a.controller._resolveAnimations(void 0,s);q0(n)?(a.data[n].hidden=!i,this.update()):(this.setDatasetVisibility(e,i),o.update(a,{visible:i}),this.update(r=>r.datasetIndex===e?s:void 0))}hide(e,n){this._updateVisibility(e,n,!1)}show(e,n){this._updateVisibility(e,n,!0)}_destroyDatasetMeta(e){const n=this._metasets[e];n&&n.controller&&n.controller._destroy(),delete this._metasets[e]}_stop(){let e,n;for(this.stop(),dr.remove(this),e=0,n=this.data.datasets.length;e<n;++e)this._destroyDatasetMeta(e)}destroy(){this.notifyPlugins("beforeDestroy");const{canvas:e,ctx:n}=this;this._stop(),this.config.clearCache(),e&&(this.unbindEvents(),pP(e,n),this.platform.releaseContext(n),this.canvas=null,this.ctx=null),delete l0[this.id],this.notifyPlugins("afterDestroy")}toBase64Image(...e){return this.canvas.toDataURL(...e)}bindEvents(){this.bindUserEvents(),this.options.responsive?this.bindResponsiveEvents():this.attached=!0}bindUserEvents(){const e=this._listeners,n=this.platform,i=(a,o)=>{n.addEventListener(this,a,o),e[a]=o},s=(a,o,r)=>{a.offsetX=o,a.offsetY=r,this._eventHandler(a)};Sn(this.options.events,a=>i(a,s))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const e=this._responsiveListeners,n=this.platform,i=(c,d)=>{n.addEventListener(this,c,d),e[c]=d},s=(c,d)=>{e[c]&&(n.removeEventListener(this,c,d),delete e[c])},a=(c,d)=>{this.canvas&&this.resize(c,d)};let o;const r=()=>{s("attach",r),this.attached=!0,this.resize(),i("resize",a),i("detach",o)};o=()=>{this.attached=!1,s("resize",a),this._stop(),this._resize(0,0),i("attach",r)},n.isAttached(this.canvas)?r():o()}unbindEvents(){Sn(this._listeners,(e,n)=>{this.platform.removeEventListener(this,n,e)}),this._listeners={},Sn(this._responsiveListeners,(e,n)=>{this.platform.removeEventListener(this,n,e)}),this._responsiveListeners=void 0}updateHoverStyle(e,n,i){const s=i?"set":"remove";let a,o,r,c;for(n==="dataset"&&(a=this.getDatasetMeta(e[0].datasetIndex),a.controller["_"+s+"DatasetHoverStyle"]()),r=0,c=e.length;r<c;++r){o=e[r];const d=o&&this.getDatasetMeta(o.datasetIndex).controller;d&&d[s+"HoverStyle"](o.element,o.datasetIndex,o.index)}}getActiveElements(){return this._active||[]}setActiveElements(e){const n=this._active||[],i=e.map(({datasetIndex:a,index:o})=>{const r=this.getDatasetMeta(a);if(!r)throw new Error("No dataset found at index "+a);return{datasetIndex:a,element:r.data[o],index:o}});!I0(i,n)&&(this._active=i,this._lastEvent=null,this._updateHoverStyles(i,n))}notifyPlugins(e,n,i){return this._plugins.notify(this,e,n,i)}isPluginEnabled(e){return this._plugins._cache.filter(n=>n.plugin.id===e).length===1}_updateHoverStyles(e,n,i){const s=this.options.hover,a=(c,d)=>c.filter(f=>!d.some(p=>f.datasetIndex===p.datasetIndex&&f.index===p.index)),o=a(n,e),r=i?e:a(e,n);o.length&&this.updateHoverStyle(o,s.mode,!1),r.length&&s.mode&&this.updateHoverStyle(r,s.mode,!0)}_eventHandler(e,n){const i={event:e,replay:n,cancelable:!0,inChartArea:this.isPointInArea(e)},s=o=>(o.options.events||this.options.events).includes(e.native.type);if(this.notifyPlugins("beforeEvent",i,s)===!1)return;const a=this._handleEvent(e,n,i.inChartArea);return i.cancelable=!1,this.notifyPlugins("afterEvent",i,s),(a||i.changed)&&this.render(),this}_handleEvent(e,n,i){const{_active:s=[],options:a}=this,o=n,r=this._getActiveElements(e,s,i,o),c=wce(e),d=dhe(e,this._lastEvent,i,c);i&&(this._lastEvent=null,In(a.onHover,[e,r,this],this),c&&In(a.onClick,[e,r,this],this));const f=!I0(r,s);return(f||n)&&(this._active=r,this._updateHoverStyles(r,s,n)),this._lastEvent=d,f}_getActiveElements(e,n,i,s){if(e.type==="mouseout")return[];if(!i)return n;const a=this.options.hover;return this.getElementsAtEventForMode(e,a.mode,a,s)}},Lt(ll,"defaults",oi),Lt(ll,"instances",l0),Lt(ll,"overrides",Ic),Lt(ll,"registry",go),Lt(ll,"version",rhe),Lt(ll,"getChart",WP),ll);function GP(){return Sn(Xy.instances,t=>t._plugins.invalidate())}function cD(t,e,n=e){t.lineCap=sn(n.borderCapStyle,e.borderCapStyle),t.setLineDash(sn(n.borderDash,e.borderDash)),t.lineDashOffset=sn(n.borderDashOffset,e.borderDashOffset),t.lineJoin=sn(n.borderJoinStyle,e.borderJoinStyle),t.lineWidth=sn(n.borderWidth,e.borderWidth),t.strokeStyle=sn(n.borderColor,e.borderColor)}function hhe(t,e,n){t.lineTo(n.x,n.y)}function fhe(t){return t.stepped?Jce:t.tension||t.cubicInterpolationMode==="monotone"?Zce:hhe}function uD(t,e,n={}){const i=t.length,{start:s=0,end:a=i-1}=n,{start:o,end:r}=e,c=Math.max(s,o),d=Math.min(a,r),f=s<o&&a<o||s>r&&a>r;return{count:i,start:c,loop:e.loop,ilen:d<c&&!f?i+d-c:d-c}}function mhe(t,e,n,i){const{points:s,options:a}=e,{count:o,start:r,loop:c,ilen:d}=uD(s,n,i),f=fhe(a);let{move:p=!0,reverse:g}=i||{},y,_,v;for(y=0;y<=d;++y)_=s[(r+(g?d-y:y))%o],!_.skip&&(p?(t.moveTo(_.x,_.y),p=!1):f(t,v,_,g,a.stepped),v=_);return c&&(_=s[(r+(g?d:0))%o],f(t,v,_,g,a.stepped)),!!c}function phe(t,e,n,i){const s=e.points,{count:a,start:o,ilen:r}=uD(s,n,i),{move:c=!0,reverse:d}=i||{};let f=0,p=0,g,y,_,v,x,k;const C=L=>(o+(d?r-L:L))%a,N=()=>{v!==x&&(t.lineTo(f,x),t.lineTo(f,v),t.lineTo(f,k))};for(c&&(y=s[C(0)],t.moveTo(y.x,y.y)),g=0;g<=r;++g){if(y=s[C(g)],y.skip)continue;const L=y.x,M=y.y,O=L|0;O===_?(M<v?v=M:M>x&&(x=M),f=(p*f+L)/++p):(N(),t.lineTo(L,M),_=O,p=0,v=x=M),k=M}N()}function aS(t){const e=t.options,n=e.borderDash&&e.borderDash.length;return!t._decimated&&!t._loop&&!e.tension&&e.cubicInterpolationMode!=="monotone"&&!e.stepped&&!n?phe:mhe}function ghe(t){return t.stepped?Pue:t.tension||t.cubicInterpolationMode==="monotone"?Eue:fc}function _he(t,e,n,i){let s=e._path;s||(s=e._path=new Path2D,e.path(s,n,i)&&s.closePath()),cD(t,e.options),t.stroke(s)}function yhe(t,e,n,i){const{segments:s,options:a}=e,o=aS(e);for(const r of s)cD(t,a,r.style),t.beginPath(),o(t,e,r,{start:n,end:n+i-1})&&t.closePath(),t.stroke()}const bhe=typeof Path2D=="function";function vhe(t,e,n,i){bhe&&!e.options.segment?_he(t,e,n,i):yhe(t,e,n,i)}class bl extends Nr{constructor(e){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,e&&Object.assign(this,e)}updateControlPoints(e,n){const i=this.options;if((i.tension||i.cubicInterpolationMode==="monotone")&&!i.stepped&&!this._pointsUpdated){const s=i.spanGaps?this._loop:this._fullLoop;kue(this._points,i,e,s,n),this._pointsUpdated=!0}}set points(e){this._points=e,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=Bue(this,this.options.segment))}first(){const e=this.segments,n=this.points;return e.length&&n[e[0].start]}last(){const e=this.segments,n=this.points,i=e.length;return i&&n[e[i-1].end]}interpolate(e,n){const i=this.options,s=e[n],a=this.points,o=Q5(this,{property:n,start:s,end:s});if(!o.length)return;const r=[],c=ghe(i);let d,f;for(d=0,f=o.length;d<f;++d){const{start:p,end:g}=o[d],y=a[p],_=a[g];if(y===_){r.push(y);continue}const v=Math.abs((s-y[n])/(_[n]-y[n])),x=c(y,_,v,i.stepped);x[n]=e[n],r.push(x)}return r.length===1?r[0]:r}pathSegment(e,n,i){return aS(this)(e,this,n,i)}path(e,n,i){const s=this.segments,a=aS(this);let o=this._loop;n=n||0,i=i||this.points.length-n;for(const r of s)o&=a(e,this,r,{start:n,end:n+i-1});return!!o}draw(e,n,i,s){const a=this.options||{};(this.points||[]).length&&a.borderWidth&&(e.save(),vhe(e,this,i,s),e.restore()),this.animated&&(this._pointsUpdated=!1,this._path=void 0)}}Lt(bl,"id","line"),Lt(bl,"defaults",{borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0}),Lt(bl,"defaultRoutes",{backgroundColor:"backgroundColor",borderColor:"borderColor"}),Lt(bl,"descriptors",{_scriptable:!0,_indexable:e=>e!=="borderDash"&&e!=="fill"});function $P(t,e,n,i){const s=t.options,{[n]:a}=t.getProps([n],i);return Math.abs(e-a)<s.radius+s.hitRadius}class c0 extends Nr{constructor(n){super();Lt(this,"parsed");Lt(this,"skip");Lt(this,"stop");this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,n&&Object.assign(this,n)}inRange(n,i,s){const a=this.options,{x:o,y:r}=this.getProps(["x","y"],s);return Math.pow(n-o,2)+Math.pow(i-r,2)<Math.pow(a.hitRadius+a.radius,2)}inXRange(n,i){return $P(this,n,"x",i)}inYRange(n,i){return $P(this,n,"y",i)}getCenterPoint(n){const{x:i,y:s}=this.getProps(["x","y"],n);return{x:i,y:s}}size(n){n=n||this.options||{};let i=n.radius||0;i=Math.max(i,i&&n.hoverRadius||0);const s=i&&n.borderWidth||0;return(i+s)*2}draw(n,i){const s=this.options;this.skip||s.radius<.1||!bm(this,i,this.size(s)/2)||(n.strokeStyle=s.borderColor,n.lineWidth=s.borderWidth,n.fillStyle=s.backgroundColor,tS(n,s,this.x,this.y))}getRange(){const n=this.options||{};return n.radius+n.hitRadius}}Lt(c0,"id","point"),Lt(c0,"defaults",{borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0}),Lt(c0,"defaultRoutes",{backgroundColor:"backgroundColor",borderColor:"borderColor"});function xhe(t,e,n){const i=t.segments,s=t.points,a=e.points,o=[];for(const r of i){let{start:c,end:d}=r;d=Qy(c,d,s);const f=oS(n,s[c],s[d],r.loop);if(!e.segments){o.push({source:r,target:f,start:s[c],end:s[d]});continue}const p=Q5(e,f);for(const g of p){const y=oS(n,a[g.start],a[g.end],g.loop),_=X5(r,s,y);for(const v of _)o.push({source:v,target:g,start:{[n]:XP(f,y,"start",Math.max)},end:{[n]:XP(f,y,"end",Math.min)}})}}return o}function oS(t,e,n,i){if(i)return;let s=e[t],a=n[t];return t==="angle"&&(s=_o(s),a=_o(a)),{property:t,start:s,end:a}}function She(t,e){const{x:n=null,y:i=null}=t||{},s=e.points,a=[];return e.segments.forEach(({start:o,end:r})=>{r=Qy(o,r,s);const c=s[o],d=s[r];i!==null?(a.push({x:c.x,y:i}),a.push({x:d.x,y:i})):n!==null&&(a.push({x:n,y:c.y}),a.push({x:n,y:d.y}))}),a}function Qy(t,e,n){for(;e>t;e--){const i=n[e];if(!isNaN(i.x)&&!isNaN(i.y))break}return e}function XP(t,e,n,i){return t&&e?i(t[n],e[n]):t?t[n]:e?e[n]:0}function dD(t,e){let n=[],i=!1;return Ai(t)?(i=!0,n=t):n=She(t,e),n.length?new bl({points:n,options:{tension:0},_loop:i,_fullLoop:i}):null}function QP(t){return t&&t.fill!==!1}function whe(t,e,n){let s=t[e].fill;const a=[e];let o;if(!n)return s;for(;s!==!1&&a.indexOf(s)===-1;){if(!ls(s))return s;if(o=t[s],!o)return!1;if(o.visible)return s;a.push(s),s=o.fill}return!1}function khe(t,e,n){const i=The(t);if(ln(i))return isNaN(i.value)?!1:i;let s=parseFloat(i);return ls(s)&&Math.floor(s)===s?Che(i[0],e,s,n):["origin","start","end","stack","shape"].indexOf(i)>=0&&i}function Che(t,e,n,i){return(t==="-"||t==="+")&&(n=e+n),n===e||n<0||n>=i?!1:n}function Ahe(t,e){let n=null;return t==="start"?n=e.bottom:t==="end"?n=e.top:ln(t)?n=e.getPixelForValue(t.value):e.getBasePixel&&(n=e.getBasePixel()),n}function Nhe(t,e,n){let i;return t==="start"?i=n:t==="end"?i=e.options.reverse?e.min:e.max:ln(t)?i=t.value:i=e.getBaseValue(),i}function The(t){const e=t.options,n=e.fill;let i=sn(n&&n.target,n);return i===void 0&&(i=!!e.backgroundColor),i===!1||i===null?!1:i===!0?"origin":i}function Mhe(t){const{scale:e,index:n,line:i}=t,s=[],a=i.segments,o=i.points,r=Lhe(e,n);r.push(dD({x:null,y:e.bottom},i));for(let c=0;c<a.length;c++){const d=a[c];for(let f=d.start;f<=d.end;f++)Ohe(s,o[f],r)}return new bl({points:s,options:{}})}function Lhe(t,e){const n=[],i=t.getMatchingVisibleMetas("line");for(let s=0;s<i.length;s++){const a=i[s];if(a.index===e)break;a.hidden||n.unshift(a.dataset)}return n}function Ohe(t,e,n){const i=[];for(let s=0;s<n.length;s++){const a=n[s],{first:o,last:r,point:c}=Phe(a,e,"x");if(!(!c||o&&r)){if(o)i.unshift(c);else if(t.push(c),!r)break}}t.push(...i)}function Phe(t,e,n){const i=t.interpolate(e,n);if(!i)return{};const s=i[n],a=t.segments,o=t.points;let r=!1,c=!1;for(let d=0;d<a.length;d++){const f=a[d],p=o[f.start][n],g=o[f.end][n];if(Zu(s,p,g)){r=s===p,c=s===g;break}}return{first:r,last:c,point:i}}class hD{constructor(e){this.x=e.x,this.y=e.y,this.radius=e.radius}pathSegment(e,n,i){const{x:s,y:a,radius:o}=this;return n=n||{start:0,end:Wa},e.arc(s,a,o,n.end,n.start,!0),!i.bounds}interpolate(e){const{x:n,y:i,radius:s}=this,a=e.angle;return{x:n+Math.cos(a)*s,y:i+Math.sin(a)*s,angle:a}}}function Ehe(t){const{chart:e,fill:n,line:i}=t;if(ls(n))return jhe(e,n);if(n==="stack")return Mhe(t);if(n==="shape")return!0;const s=Rhe(t);return s instanceof hD?s:dD(s,i)}function jhe(t,e){const n=t.getDatasetMeta(e);return n&&t.isDatasetVisible(e)?n.dataset:null}function Rhe(t){return(t.scale||{}).getPointPositionForValue?Fhe(t):Dhe(t)}function Dhe(t){const{scale:e={},fill:n}=t,i=Ahe(n,e);if(ls(i)){const s=e.isHorizontal();return{x:s?i:null,y:s?null:i}}return null}function Fhe(t){const{scale:e,fill:n}=t,i=e.options,s=e.getLabels().length,a=i.reverse?e.max:e.min,o=Nhe(n,e,a),r=[];if(i.grid.circular){const c=e.getPointPositionForValue(0,a);return new hD({x:c.x,y:c.y,radius:e.getDistanceFromCenterForValue(o)})}for(let c=0;c<s;++c)r.push(e.getPointPositionForValue(c,o));return r}function C1(t,e,n){const i=Ehe(e),{chart:s,index:a,line:o,scale:r,axis:c}=e,d=o.options,f=d.fill,p=d.backgroundColor,{above:g=p,below:y=p}=f||{},_=s.getDatasetMeta(a),v=Y5(s,_);i&&o.points.length&&(Hy(t,n),Ihe(t,{line:o,target:i,above:g,below:y,area:n,scale:r,axis:c,clip:v}),Wy(t))}function Ihe(t,e){const{line:n,target:i,above:s,below:a,area:o,scale:r,clip:c}=e,d=n._loop?"angle":e.axis;t.save();let f=a;a!==s&&(d==="x"?(YP(t,i,o.top),A1(t,{line:n,target:i,color:s,scale:r,property:d,clip:c}),t.restore(),t.save(),YP(t,i,o.bottom)):d==="y"&&(JP(t,i,o.left),A1(t,{line:n,target:i,color:a,scale:r,property:d,clip:c}),t.restore(),t.save(),JP(t,i,o.right),f=s)),A1(t,{line:n,target:i,color:f,scale:r,property:d,clip:c}),t.restore()}function YP(t,e,n){const{segments:i,points:s}=e;let a=!0,o=!1;t.beginPath();for(const r of i){const{start:c,end:d}=r,f=s[c],p=s[Qy(c,d,s)];a?(t.moveTo(f.x,f.y),a=!1):(t.lineTo(f.x,n),t.lineTo(f.x,f.y)),o=!!e.pathSegment(t,r,{move:o}),o?t.closePath():t.lineTo(p.x,n)}t.lineTo(e.first().x,n),t.closePath(),t.clip()}function JP(t,e,n){const{segments:i,points:s}=e;let a=!0,o=!1;t.beginPath();for(const r of i){const{start:c,end:d}=r,f=s[c],p=s[Qy(c,d,s)];a?(t.moveTo(f.x,f.y),a=!1):(t.lineTo(n,f.y),t.lineTo(f.x,f.y)),o=!!e.pathSegment(t,r,{move:o}),o?t.closePath():t.lineTo(n,p.y)}t.lineTo(n,e.first().y),t.closePath(),t.clip()}function A1(t,e){const{line:n,target:i,property:s,color:a,scale:o,clip:r}=e,c=xhe(n,i,s);for(const{source:d,target:f,start:p,end:g}of c){const{style:{backgroundColor:y=a}={}}=d,_=i!==!0;t.save(),t.fillStyle=y,Bhe(t,o,r,_&&oS(s,p,g)),t.beginPath();const v=!!n.pathSegment(t,d);let x;if(_){v?t.closePath():ZP(t,i,g,s);const k=!!i.pathSegment(t,f,{move:v,reverse:!0});x=v&&k,x||ZP(t,i,p,s)}t.closePath(),t.fill(x?"evenodd":"nonzero"),t.restore()}}function Bhe(t,e,n,i){const s=e.chart.chartArea,{property:a,start:o,end:r}=i||{};if(a==="x"||a==="y"){let c,d,f,p;a==="x"?(c=o,d=s.top,f=r,p=s.bottom):(c=s.left,d=o,f=s.right,p=r),t.beginPath(),n&&(c=Math.max(c,n.left),f=Math.min(f,n.right),d=Math.max(d,n.top),p=Math.min(p,n.bottom)),t.rect(c,d,f-c,p-d),t.clip()}}function ZP(t,e,n,i){const s=e.interpolate(n,i);s&&t.lineTo(s.x,s.y)}var Uhe={id:"filler",afterDatasetsUpdate(t,e,n){const i=(t.data.datasets||[]).length,s=[];let a,o,r,c;for(o=0;o<i;++o)a=t.getDatasetMeta(o),r=a.dataset,c=null,r&&r.options&&r instanceof bl&&(c={visible:t.isDatasetVisible(o),index:o,fill:khe(r,o,i),chart:t,axis:a.controller.options.indexAxis,scale:a.vScale,line:r}),a.$filler=c,s.push(c);for(o=0;o<i;++o)c=s[o],!(!c||c.fill===!1)&&(c.fill=whe(s,o,n.propagate))},beforeDraw(t,e,n){const i=n.drawTime==="beforeDraw",s=t.getSortedVisibleDatasetMetas(),a=t.chartArea;for(let o=s.length-1;o>=0;--o){const r=s[o].$filler;r&&(r.line.updateControlPoints(a,r.axis),i&&r.fill&&C1(t.ctx,r,a))}},beforeDatasetsDraw(t,e,n){if(n.drawTime!=="beforeDatasetsDraw")return;const i=t.getSortedVisibleDatasetMetas();for(let s=i.length-1;s>=0;--s){const a=i[s].$filler;QP(a)&&C1(t.ctx,a,t.chartArea)}},beforeDatasetDraw(t,e,n){const i=e.meta.$filler;!QP(i)||n.drawTime!=="beforeDatasetDraw"||C1(t.ctx,i,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const eE=(t,e)=>{let{boxHeight:n=e,boxWidth:i=e}=t;return t.usePointStyle&&(n=Math.min(n,e),i=t.pointStyleWidth||Math.min(i,e)),{boxWidth:i,boxHeight:n,itemHeight:Math.max(e,n)}},qhe=(t,e)=>t!==null&&e!==null&&t.datasetIndex===e.datasetIndex&&t.index===e.index;class tE extends Nr{constructor(e){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,n,i){this.maxWidth=e,this.maxHeight=n,this._margins=i,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const e=this.options.labels||{};let n=In(e.generateLabels,[this.chart],this)||[];e.filter&&(n=n.filter(i=>e.filter(i,this.chart.data))),e.sort&&(n=n.sort((i,s)=>e.sort(i,s,this.chart.data))),this.options.reverse&&n.reverse(),this.legendItems=n}fit(){const{options:e,ctx:n}=this;if(!e.display){this.width=this.height=0;return}const i=e.labels,s=as(i.font),a=s.size,o=this._computeTitleHeight(),{boxWidth:r,itemHeight:c}=eE(i,a);let d,f;n.font=s.string,this.isHorizontal()?(d=this.maxWidth,f=this._fitRows(o,a,r,c)+10):(f=this.maxHeight,d=this._fitCols(o,s,r,c)+10),this.width=Math.min(d,e.maxWidth||this.maxWidth),this.height=Math.min(f,e.maxHeight||this.maxHeight)}_fitRows(e,n,i,s){const{ctx:a,maxWidth:o,options:{labels:{padding:r}}}=this,c=this.legendHitBoxes=[],d=this.lineWidths=[0],f=s+r;let p=e;a.textAlign="left",a.textBaseline="middle";let g=-1,y=-f;return this.legendItems.forEach((_,v)=>{const x=i+n/2+a.measureText(_.text).width;(v===0||d[d.length-1]+x+2*r>o)&&(p+=f,d[d.length-(v>0?0:1)]=0,y+=f,g++),c[v]={left:0,top:y,row:g,width:x,height:s},d[d.length-1]+=x+r}),p}_fitCols(e,n,i,s){const{ctx:a,maxHeight:o,options:{labels:{padding:r}}}=this,c=this.legendHitBoxes=[],d=this.columnSizes=[],f=o-e;let p=r,g=0,y=0,_=0,v=0;return this.legendItems.forEach((x,k)=>{const{itemWidth:C,itemHeight:N}=zhe(i,n,a,x,s);k>0&&y+N+2*r>f&&(p+=g+r,d.push({width:g,height:y}),_+=g+r,v++,g=y=0),c[k]={left:_,top:y,col:v,width:C,height:N},g=Math.max(g,C),y+=N+r}),p+=g,d.push({width:g,height:y}),p}adjustHitBoxes(){if(!this.options.display)return;const e=this._computeTitleHeight(),{legendHitBoxes:n,options:{align:i,labels:{padding:s},rtl:a}}=this,o=hd(a,this.left,this.width);if(this.isHorizontal()){let r=0,c=Ji(i,this.left+s,this.right-this.lineWidths[r]);for(const d of n)r!==d.row&&(r=d.row,c=Ji(i,this.left+s,this.right-this.lineWidths[r])),d.top+=this.top+e+s,d.left=o.leftForLtr(o.x(c),d.width),c+=d.width+s}else{let r=0,c=Ji(i,this.top+e+s,this.bottom-this.columnSizes[r].height);for(const d of n)d.col!==r&&(r=d.col,c=Ji(i,this.top+e+s,this.bottom-this.columnSizes[r].height)),d.top=c,d.left+=this.left+s,d.left=o.leftForLtr(o.x(d.left),d.width),c+=d.height+s}}isHorizontal(){return this.options.position==="top"||this.options.position==="bottom"}draw(){if(this.options.display){const e=this.ctx;Hy(e,this),this._draw(),Wy(e)}}_draw(){const{options:e,columnSizes:n,lineWidths:i,ctx:s}=this,{align:a,labels:o}=e,r=oi.color,c=hd(e.rtl,this.left,this.width),d=as(o.font),{padding:f}=o,p=d.size,g=p/2;let y;this.drawTitle(),s.textAlign=c.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=d.string;const{boxWidth:_,boxHeight:v,itemHeight:x}=eE(o,p),k=function(O,T,P){if(isNaN(_)||_<=0||isNaN(v)||v<0)return;s.save();const E=sn(P.lineWidth,1);if(s.fillStyle=sn(P.fillStyle,r),s.lineCap=sn(P.lineCap,"butt"),s.lineDashOffset=sn(P.lineDashOffset,0),s.lineJoin=sn(P.lineJoin,"miter"),s.lineWidth=E,s.strokeStyle=sn(P.strokeStyle,r),s.setLineDash(sn(P.lineDash,[])),o.usePointStyle){const R={radius:v*Math.SQRT2/2,pointStyle:P.pointStyle,rotation:P.rotation,borderWidth:E},q=c.xPlus(O,_/2),I=T+g;B5(s,R,q,I,o.pointStyleWidth&&_)}else{const R=T+Math.max((p-v)/2,0),q=c.leftForLtr(O,_),I=Yf(P.borderRadius);s.beginPath(),Object.values(I).some(Y=>Y!==0)?nS(s,{x:q,y:R,w:_,h:v,radius:I}):s.rect(q,R,_,v),s.fill(),E!==0&&s.stroke()}s.restore()},C=function(O,T,P){vm(s,P.text,O,T+x/2,d,{strikethrough:P.hidden,textAlign:c.textAlign(P.textAlign)})},N=this.isHorizontal(),L=this._computeTitleHeight();N?y={x:Ji(a,this.left+f,this.right-i[0]),y:this.top+f+L,line:0}:y={x:this.left+f,y:Ji(a,this.top+L+f,this.bottom-n[0].height),line:0},W5(this.ctx,e.textDirection);const M=x+f;this.legendItems.forEach((O,T)=>{s.strokeStyle=O.fontColor,s.fillStyle=O.fontColor;const P=s.measureText(O.text).width,E=c.textAlign(O.textAlign||(O.textAlign=o.textAlign)),R=_+g+P;let q=y.x,I=y.y;c.setWidth(this.width),N?T>0&&q+R+f>this.right&&(I=y.y+=M,y.line++,q=y.x=Ji(a,this.left+f,this.right-i[y.line])):T>0&&I+M>this.bottom&&(q=y.x=q+n[y.line].width+f,y.line++,I=y.y=Ji(a,this.top+L+f,this.bottom-n[y.line].height));const Y=c.x(q);if(k(Y,I,O),q=Bce(E,q+_+g,N?q+R:this.right,e.rtl),C(c.x(q),I,O),N)y.x+=R+f;else if(typeof O.text!="string"){const X=d.lineHeight;y.y+=fD(O,X)+f}else y.y+=M}),G5(this.ctx,e.textDirection)}drawTitle(){const e=this.options,n=e.title,i=as(n.font),s=Ta(n.padding);if(!n.display)return;const a=hd(e.rtl,this.left,this.width),o=this.ctx,r=n.position,c=i.size/2,d=s.top+c;let f,p=this.left,g=this.width;if(this.isHorizontal())g=Math.max(...this.lineWidths),f=this.top+d,p=Ji(e.align,p,this.right-g);else{const _=this.columnSizes.reduce((v,x)=>Math.max(v,x.height),0);f=d+Ji(e.align,this.top,this.bottom-_-e.labels.padding-this._computeTitleHeight())}const y=Ji(r,p,p+g);o.textAlign=a.textAlign(uk(r)),o.textBaseline="middle",o.strokeStyle=n.color,o.fillStyle=n.color,o.font=i.string,vm(o,n.text,y,f,i)}_computeTitleHeight(){const e=this.options.title,n=as(e.font),i=Ta(e.padding);return e.display?n.lineHeight+i.height:0}_getLegendItemAt(e,n){let i,s,a;if(Zu(e,this.left,this.right)&&Zu(n,this.top,this.bottom)){for(a=this.legendHitBoxes,i=0;i<a.length;++i)if(s=a[i],Zu(e,s.left,s.left+s.width)&&Zu(n,s.top,s.top+s.height))return this.legendItems[i]}return null}handleEvent(e){const n=this.options;if(!Hhe(e.type,n))return;const i=this._getLegendItemAt(e.x,e.y);if(e.type==="mousemove"||e.type==="mouseout"){const s=this._hoveredItem,a=qhe(s,i);s&&!a&&In(n.onLeave,[e,s,this],this),this._hoveredItem=i,i&&!a&&In(n.onHover,[e,i,this],this)}else i&&In(n.onClick,[e,i,this],this)}}function zhe(t,e,n,i,s){const a=Khe(i,t,e,n),o=Vhe(s,i,e.lineHeight);return{itemWidth:a,itemHeight:o}}function Khe(t,e,n,i){let s=t.text;return s&&typeof s!="string"&&(s=s.reduce((a,o)=>a.length>o.length?a:o)),e+n.size/2+i.measureText(s).width}function Vhe(t,e,n){let i=t;return typeof e.text!="string"&&(i=fD(e,n)),i}function fD(t,e){const n=t.text?t.text.length:0;return e*n}function Hhe(t,e){return!!((t==="mousemove"||t==="mouseout")&&(e.onHover||e.onLeave)||e.onClick&&(t==="click"||t==="mouseup"))}var Whe={id:"legend",_element:tE,start(t,e,n){const i=t.legend=new tE({ctx:t.ctx,options:n,chart:t});ba.configure(t,i,n),ba.addBox(t,i)},stop(t){ba.removeBox(t,t.legend),delete t.legend},beforeUpdate(t,e,n){const i=t.legend;ba.configure(t,i,n),i.options=n},afterUpdate(t){const e=t.legend;e.buildLabels(),e.adjustHitBoxes()},afterEvent(t,e){e.replay||t.legend.handleEvent(e.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(t,e,n){const i=e.datasetIndex,s=n.chart;s.isDatasetVisible(i)?(s.hide(i),e.hidden=!0):(s.show(i),e.hidden=!1)},onHover:null,onLeave:null,labels:{color:t=>t.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:n,pointStyle:i,textAlign:s,color:a,useBorderRadius:o,borderRadius:r}}=t.legend.options;return t._getSortedDatasetMetas().map(c=>{const d=c.controller.getStyle(n?0:void 0),f=Ta(d.borderWidth);return{text:e[c.index].label,fillStyle:d.backgroundColor,fontColor:a,hidden:!c.visible,lineCap:d.borderCapStyle,lineDash:d.borderDash,lineDashOffset:d.borderDashOffset,lineJoin:d.borderJoinStyle,lineWidth:(f.width+f.height)/4,strokeStyle:d.borderColor,pointStyle:i||d.pointStyle,rotation:d.rotation,textAlign:s||d.textAlign,borderRadius:o&&(r||d.borderRadius),datasetIndex:c.index}},this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class mD extends Nr{constructor(e){super(),this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,n){const i=this.options;if(this.left=0,this.top=0,!i.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=e,this.height=this.bottom=n;const s=Ai(i.text)?i.text.length:1;this._padding=Ta(i.padding);const a=s*as(i.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=a:this.width=a}isHorizontal(){const e=this.options.position;return e==="top"||e==="bottom"}_drawArgs(e){const{top:n,left:i,bottom:s,right:a,options:o}=this,r=o.align;let c=0,d,f,p;return this.isHorizontal()?(f=Ji(r,i,a),p=n+e,d=a-i):(o.position==="left"?(f=i+e,p=Ji(r,s,n),c=ji*-.5):(f=a-e,p=Ji(r,n,s),c=ji*.5),d=s-n),{titleX:f,titleY:p,maxWidth:d,rotation:c}}draw(){const e=this.ctx,n=this.options;if(!n.display)return;const i=as(n.font),a=i.lineHeight/2+this._padding.top,{titleX:o,titleY:r,maxWidth:c,rotation:d}=this._drawArgs(a);vm(e,n.text,0,0,i,{color:n.color,maxWidth:c,rotation:d,textAlign:uk(n.align),textBaseline:"middle",translation:[o,r]})}}function Ghe(t,e){const n=new mD({ctx:t.ctx,options:e,chart:t});ba.configure(t,n,e),ba.addBox(t,n),t.titleBlock=n}var $he={id:"title",_element:mD,start(t,e,n){Ghe(t,n)},stop(t){const e=t.titleBlock;ba.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,n){const i=t.titleBlock;ba.configure(t,i,n),i.options=n},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const Of={average(t){if(!t.length)return!1;let e,n,i=new Set,s=0,a=0;for(e=0,n=t.length;e<n;++e){const r=t[e].element;if(r&&r.hasValue()){const c=r.tooltipPosition();i.add(c.x),s+=c.y,++a}}return a===0||i.size===0?!1:{x:[...i].reduce((r,c)=>r+c)/i.size,y:s/a}},nearest(t,e){if(!t.length)return!1;let n=e.x,i=e.y,s=Number.POSITIVE_INFINITY,a,o,r;for(a=0,o=t.length;a<o;++a){const c=t[a].element;if(c&&c.hasValue()){const d=c.getCenterPoint(),f=Z2(e,d);f<s&&(s=f,r=c)}}if(r){const c=r.tooltipPosition();n=c.x,i=c.y}return{x:n,y:i}}};function mo(t,e){return e&&(Ai(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function hr(t){return(typeof t=="string"||t instanceof String)&&t.indexOf(`
`)>-1?t.split(`
`):t}function Xhe(t,e){const{element:n,datasetIndex:i,index:s}=e,a=t.getDatasetMeta(i).controller,{label:o,value:r}=a.getLabelAndValue(s);return{chart:t,label:o,parsed:a.getParsed(s),raw:t.data.datasets[i].data[s],formattedValue:r,dataset:a.getDataset(),dataIndex:s,datasetIndex:i,element:n}}function nE(t,e){const n=t.chart.ctx,{body:i,footer:s,title:a}=t,{boxWidth:o,boxHeight:r}=e,c=as(e.bodyFont),d=as(e.titleFont),f=as(e.footerFont),p=a.length,g=s.length,y=i.length,_=Ta(e.padding);let v=_.height,x=0,k=i.reduce((L,M)=>L+M.before.length+M.lines.length+M.after.length,0);if(k+=t.beforeBody.length+t.afterBody.length,p&&(v+=p*d.lineHeight+(p-1)*e.titleSpacing+e.titleMarginBottom),k){const L=e.displayColors?Math.max(r,c.lineHeight):c.lineHeight;v+=y*L+(k-y)*c.lineHeight+(k-1)*e.bodySpacing}g&&(v+=e.footerMarginTop+g*f.lineHeight+(g-1)*e.footerSpacing);let C=0;const N=function(L){x=Math.max(x,n.measureText(L).width+C)};return n.save(),n.font=d.string,Sn(t.title,N),n.font=c.string,Sn(t.beforeBody.concat(t.afterBody),N),C=e.displayColors?o+2+e.boxPadding:0,Sn(i,L=>{Sn(L.before,N),Sn(L.lines,N),Sn(L.after,N)}),C=0,n.font=f.string,Sn(t.footer,N),n.restore(),x+=_.width,{width:x,height:v}}function Qhe(t,e){const{y:n,height:i}=e;return n<i/2?"top":n>t.height-i/2?"bottom":"center"}function Yhe(t,e,n,i){const{x:s,width:a}=i,o=n.caretSize+n.caretPadding;if(t==="left"&&s+a+o>e.width||t==="right"&&s-a-o<0)return!0}function Jhe(t,e,n,i){const{x:s,width:a}=n,{width:o,chartArea:{left:r,right:c}}=t;let d="center";return i==="center"?d=s<=(r+c)/2?"left":"right":s<=a/2?d="left":s>=o-a/2&&(d="right"),Yhe(d,t,e,n)&&(d="center"),d}function iE(t,e,n){const i=n.yAlign||e.yAlign||Qhe(t,n);return{xAlign:n.xAlign||e.xAlign||Jhe(t,e,n,i),yAlign:i}}function Zhe(t,e){let{x:n,width:i}=t;return e==="right"?n-=i:e==="center"&&(n-=i/2),n}function efe(t,e,n){let{y:i,height:s}=t;return e==="top"?i+=n:e==="bottom"?i-=s+n:i-=s/2,i}function sE(t,e,n,i){const{caretSize:s,caretPadding:a,cornerRadius:o}=t,{xAlign:r,yAlign:c}=n,d=s+a,{topLeft:f,topRight:p,bottomLeft:g,bottomRight:y}=Yf(o);let _=Zhe(e,r);const v=efe(e,c,d);return c==="center"?r==="left"?_+=d:r==="right"&&(_-=d):r==="left"?_-=Math.max(f,g)+s:r==="right"&&(_+=Math.max(p,y)+s),{x:ya(_,0,i.width-e.width),y:ya(v,0,i.height-e.height)}}function m_(t,e,n){const i=Ta(n.padding);return e==="center"?t.x+t.width/2:e==="right"?t.x+t.width-i.right:t.x+i.left}function aE(t){return mo([],hr(t))}function tfe(t,e,n){return Xc(t,{tooltip:e,tooltipItems:n,type:"tooltip"})}function oE(t,e){const n=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return n?t.override(n):t}const pD={beforeTitle:ar,title(t){if(t.length>0){const e=t[0],n=e.chart.data.labels,i=n?n.length:0;if(this&&this.options&&this.options.mode==="dataset")return e.dataset.label||"";if(e.label)return e.label;if(i>0&&e.dataIndex<i)return n[e.dataIndex]}return""},afterTitle:ar,beforeBody:ar,beforeLabel:ar,label(t){if(this&&this.options&&this.options.mode==="dataset")return t.label+": "+t.formattedValue||t.formattedValue;let e=t.dataset.label||"";e&&(e+=": ");const n=t.formattedValue;return En(n)||(e+=n),e},labelColor(t){const n=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{borderColor:n.borderColor,backgroundColor:n.backgroundColor,borderWidth:n.borderWidth,borderDash:n.borderDash,borderDashOffset:n.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(t){const n=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{pointStyle:n.pointStyle,rotation:n.rotation}},afterLabel:ar,afterBody:ar,beforeFooter:ar,footer:ar,afterFooter:ar};function Ps(t,e,n,i){const s=t[e].call(n,i);return typeof s>"u"?pD[e].call(n,i):s}class rS extends Nr{constructor(e){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=e.chart,this.options=e.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(e){this.options=e,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const e=this._cachedAnimations;if(e)return e;const n=this.chart,i=this.options.setContext(this.getContext()),s=i.enabled&&n.options.animation&&i.animations,a=new J5(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(a)),a}getContext(){return this.$context||(this.$context=tfe(this.chart.getContext(),this,this._tooltipItems))}getTitle(e,n){const{callbacks:i}=n,s=Ps(i,"beforeTitle",this,e),a=Ps(i,"title",this,e),o=Ps(i,"afterTitle",this,e);let r=[];return r=mo(r,hr(s)),r=mo(r,hr(a)),r=mo(r,hr(o)),r}getBeforeBody(e,n){return aE(Ps(n.callbacks,"beforeBody",this,e))}getBody(e,n){const{callbacks:i}=n,s=[];return Sn(e,a=>{const o={before:[],lines:[],after:[]},r=oE(i,a);mo(o.before,hr(Ps(r,"beforeLabel",this,a))),mo(o.lines,Ps(r,"label",this,a)),mo(o.after,hr(Ps(r,"afterLabel",this,a))),s.push(o)}),s}getAfterBody(e,n){return aE(Ps(n.callbacks,"afterBody",this,e))}getFooter(e,n){const{callbacks:i}=n,s=Ps(i,"beforeFooter",this,e),a=Ps(i,"footer",this,e),o=Ps(i,"afterFooter",this,e);let r=[];return r=mo(r,hr(s)),r=mo(r,hr(a)),r=mo(r,hr(o)),r}_createItems(e){const n=this._active,i=this.chart.data,s=[],a=[],o=[];let r=[],c,d;for(c=0,d=n.length;c<d;++c)r.push(Xhe(this.chart,n[c]));return e.filter&&(r=r.filter((f,p,g)=>e.filter(f,p,g,i))),e.itemSort&&(r=r.sort((f,p)=>e.itemSort(f,p,i))),Sn(r,f=>{const p=oE(e.callbacks,f);s.push(Ps(p,"labelColor",this,f)),a.push(Ps(p,"labelPointStyle",this,f)),o.push(Ps(p,"labelTextColor",this,f))}),this.labelColors=s,this.labelPointStyles=a,this.labelTextColors=o,this.dataPoints=r,r}update(e,n){const i=this.options.setContext(this.getContext()),s=this._active;let a,o=[];if(!s.length)this.opacity!==0&&(a={opacity:0});else{const r=Of[i.position].call(this,s,this._eventPosition);o=this._createItems(i),this.title=this.getTitle(o,i),this.beforeBody=this.getBeforeBody(o,i),this.body=this.getBody(o,i),this.afterBody=this.getAfterBody(o,i),this.footer=this.getFooter(o,i);const c=this._size=nE(this,i),d=Object.assign({},r,c),f=iE(this.chart,i,d),p=sE(i,d,f,this.chart);this.xAlign=f.xAlign,this.yAlign=f.yAlign,a={opacity:1,x:p.x,y:p.y,width:c.width,height:c.height,caretX:r.x,caretY:r.y}}this._tooltipItems=o,this.$context=void 0,a&&this._resolveAnimations().update(this,a),e&&i.external&&i.external.call(this,{chart:this.chart,tooltip:this,replay:n})}drawCaret(e,n,i,s){const a=this.getCaretPosition(e,i,s);n.lineTo(a.x1,a.y1),n.lineTo(a.x2,a.y2),n.lineTo(a.x3,a.y3)}getCaretPosition(e,n,i){const{xAlign:s,yAlign:a}=this,{caretSize:o,cornerRadius:r}=i,{topLeft:c,topRight:d,bottomLeft:f,bottomRight:p}=Yf(r),{x:g,y}=e,{width:_,height:v}=n;let x,k,C,N,L,M;return a==="center"?(L=y+v/2,s==="left"?(x=g,k=x-o,N=L+o,M=L-o):(x=g+_,k=x+o,N=L-o,M=L+o),C=x):(s==="left"?k=g+Math.max(c,f)+o:s==="right"?k=g+_-Math.max(d,p)-o:k=this.caretX,a==="top"?(N=y,L=N-o,x=k-o,C=k+o):(N=y+v,L=N+o,x=k+o,C=k-o),M=N),{x1:x,x2:k,x3:C,y1:N,y2:L,y3:M}}drawTitle(e,n,i){const s=this.title,a=s.length;let o,r,c;if(a){const d=hd(i.rtl,this.x,this.width);for(e.x=m_(this,i.titleAlign,i),n.textAlign=d.textAlign(i.titleAlign),n.textBaseline="middle",o=as(i.titleFont),r=i.titleSpacing,n.fillStyle=i.titleColor,n.font=o.string,c=0;c<a;++c)n.fillText(s[c],d.x(e.x),e.y+o.lineHeight/2),e.y+=o.lineHeight+r,c+1===a&&(e.y+=i.titleMarginBottom-r)}}_drawColorBox(e,n,i,s,a){const o=this.labelColors[i],r=this.labelPointStyles[i],{boxHeight:c,boxWidth:d}=a,f=as(a.bodyFont),p=m_(this,"left",a),g=s.x(p),y=c<f.lineHeight?(f.lineHeight-c)/2:0,_=n.y+y;if(a.usePointStyle){const v={radius:Math.min(d,c)/2,pointStyle:r.pointStyle,rotation:r.rotation,borderWidth:1},x=s.leftForLtr(g,d)+d/2,k=_+c/2;e.strokeStyle=a.multiKeyBackground,e.fillStyle=a.multiKeyBackground,tS(e,v,x,k),e.strokeStyle=o.borderColor,e.fillStyle=o.backgroundColor,tS(e,v,x,k)}else{e.lineWidth=ln(o.borderWidth)?Math.max(...Object.values(o.borderWidth)):o.borderWidth||1,e.strokeStyle=o.borderColor,e.setLineDash(o.borderDash||[]),e.lineDashOffset=o.borderDashOffset||0;const v=s.leftForLtr(g,d),x=s.leftForLtr(s.xPlus(g,1),d-2),k=Yf(o.borderRadius);Object.values(k).some(C=>C!==0)?(e.beginPath(),e.fillStyle=a.multiKeyBackground,nS(e,{x:v,y:_,w:d,h:c,radius:k}),e.fill(),e.stroke(),e.fillStyle=o.backgroundColor,e.beginPath(),nS(e,{x,y:_+1,w:d-2,h:c-2,radius:k}),e.fill()):(e.fillStyle=a.multiKeyBackground,e.fillRect(v,_,d,c),e.strokeRect(v,_,d,c),e.fillStyle=o.backgroundColor,e.fillRect(x,_+1,d-2,c-2))}e.fillStyle=this.labelTextColors[i]}drawBody(e,n,i){const{body:s}=this,{bodySpacing:a,bodyAlign:o,displayColors:r,boxHeight:c,boxWidth:d,boxPadding:f}=i,p=as(i.bodyFont);let g=p.lineHeight,y=0;const _=hd(i.rtl,this.x,this.width),v=function(P){n.fillText(P,_.x(e.x+y),e.y+g/2),e.y+=g+a},x=_.textAlign(o);let k,C,N,L,M,O,T;for(n.textAlign=o,n.textBaseline="middle",n.font=p.string,e.x=m_(this,x,i),n.fillStyle=i.bodyColor,Sn(this.beforeBody,v),y=r&&x!=="right"?o==="center"?d/2+f:d+2+f:0,L=0,O=s.length;L<O;++L){for(k=s[L],C=this.labelTextColors[L],n.fillStyle=C,Sn(k.before,v),N=k.lines,r&&N.length&&(this._drawColorBox(n,e,L,_,i),g=Math.max(p.lineHeight,c)),M=0,T=N.length;M<T;++M)v(N[M]),g=p.lineHeight;Sn(k.after,v)}y=0,g=p.lineHeight,Sn(this.afterBody,v),e.y-=a}drawFooter(e,n,i){const s=this.footer,a=s.length;let o,r;if(a){const c=hd(i.rtl,this.x,this.width);for(e.x=m_(this,i.footerAlign,i),e.y+=i.footerMarginTop,n.textAlign=c.textAlign(i.footerAlign),n.textBaseline="middle",o=as(i.footerFont),n.fillStyle=i.footerColor,n.font=o.string,r=0;r<a;++r)n.fillText(s[r],c.x(e.x),e.y+o.lineHeight/2),e.y+=o.lineHeight+i.footerSpacing}}drawBackground(e,n,i,s){const{xAlign:a,yAlign:o}=this,{x:r,y:c}=e,{width:d,height:f}=i,{topLeft:p,topRight:g,bottomLeft:y,bottomRight:_}=Yf(s.cornerRadius);n.fillStyle=s.backgroundColor,n.strokeStyle=s.borderColor,n.lineWidth=s.borderWidth,n.beginPath(),n.moveTo(r+p,c),o==="top"&&this.drawCaret(e,n,i,s),n.lineTo(r+d-g,c),n.quadraticCurveTo(r+d,c,r+d,c+g),o==="center"&&a==="right"&&this.drawCaret(e,n,i,s),n.lineTo(r+d,c+f-_),n.quadraticCurveTo(r+d,c+f,r+d-_,c+f),o==="bottom"&&this.drawCaret(e,n,i,s),n.lineTo(r+y,c+f),n.quadraticCurveTo(r,c+f,r,c+f-y),o==="center"&&a==="left"&&this.drawCaret(e,n,i,s),n.lineTo(r,c+p),n.quadraticCurveTo(r,c,r+p,c),n.closePath(),n.fill(),s.borderWidth>0&&n.stroke()}_updateAnimationTarget(e){const n=this.chart,i=this.$animations,s=i&&i.x,a=i&&i.y;if(s||a){const o=Of[e.position].call(this,this._active,this._eventPosition);if(!o)return;const r=this._size=nE(this,e),c=Object.assign({},o,this._size),d=iE(n,e,c),f=sE(e,c,d,n);(s._to!==f.x||a._to!==f.y)&&(this.xAlign=d.xAlign,this.yAlign=d.yAlign,this.width=r.width,this.height=r.height,this.caretX=o.x,this.caretY=o.y,this._resolveAnimations().update(this,f))}}_willRender(){return!!this.opacity}draw(e){const n=this.options.setContext(this.getContext());let i=this.opacity;if(!i)return;this._updateAnimationTarget(n);const s={width:this.width,height:this.height},a={x:this.x,y:this.y};i=Math.abs(i)<.001?0:i;const o=Ta(n.padding),r=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;n.enabled&&r&&(e.save(),e.globalAlpha=i,this.drawBackground(a,e,s,n),W5(e,n.textDirection),a.y+=o.top,this.drawTitle(a,e,n),this.drawBody(a,e,n),this.drawFooter(a,e,n),G5(e,n.textDirection),e.restore())}getActiveElements(){return this._active||[]}setActiveElements(e,n){const i=this._active,s=e.map(({datasetIndex:r,index:c})=>{const d=this.chart.getDatasetMeta(r);if(!d)throw new Error("Cannot find a dataset at index "+r);return{datasetIndex:r,element:d.data[c],index:c}}),a=!I0(i,s),o=this._positionChanged(s,n);(a||o)&&(this._active=s,this._eventPosition=n,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(e,n,i=!0){if(n&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,a=this._active||[],o=this._getActiveElements(e,a,n,i),r=this._positionChanged(o,e),c=n||!I0(o,a)||r;return c&&(this._active=o,(s.enabled||s.external)&&(this._eventPosition={x:e.x,y:e.y},this.update(!0,n))),c}_getActiveElements(e,n,i,s){const a=this.options;if(e.type==="mouseout")return[];if(!s)return n.filter(r=>this.chart.data.datasets[r.datasetIndex]&&this.chart.getDatasetMeta(r.datasetIndex).controller.getParsed(r.index)!==void 0);const o=this.chart.getElementsAtEventForMode(e,a.mode,a,i);return a.reverse&&o.reverse(),o}_positionChanged(e,n){const{caretX:i,caretY:s,options:a}=this,o=Of[a.position].call(this,e,n);return o!==!1&&(i!==o.x||s!==o.y)}}Lt(rS,"positioners",Of);var nfe={id:"tooltip",_element:rS,positioners:Of,afterInit(t,e,n){n&&(t.tooltip=new rS({chart:t,options:n}))},beforeUpdate(t,e,n){t.tooltip&&t.tooltip.initialize(n)},reset(t,e,n){t.tooltip&&t.tooltip.initialize(n)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const n={tooltip:e};if(t.notifyPlugins("beforeTooltipDraw",{...n,cancelable:!0})===!1)return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",n)}},afterEvent(t,e){if(t.tooltip){const n=e.replay;t.tooltip.handleEvent(e.event,n,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:pD},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>t!=="filter"&&t!=="itemSort"&&t!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};const ife=(t,e,n,i)=>(typeof e=="string"?(n=t.push(e)-1,i.unshift({index:n,label:e})):isNaN(e)&&(n=null),n);function sfe(t,e,n,i){const s=t.indexOf(e);if(s===-1)return ife(t,e,n,i);const a=t.lastIndexOf(e);return s!==a?n:s}const afe=(t,e)=>t===null?null:ya(Math.round(t),0,e);function rE(t){const e=this.getLabels();return t>=0&&t<e.length?e[t]:t}class lS extends $d{constructor(e){super(e),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(e){const n=this._addedLabels;if(n.length){const i=this.getLabels();for(const{index:s,label:a}of n)i[s]===a&&i.splice(s,1);this._addedLabels=[]}super.init(e)}parse(e,n){if(En(e))return null;const i=this.getLabels();return n=isFinite(n)&&i[n]===e?n:sfe(i,e,sn(n,e),this._addedLabels),afe(n,i.length-1)}determineDataLimits(){const{minDefined:e,maxDefined:n}=this.getUserBounds();let{min:i,max:s}=this.getMinMax(!0);this.options.bounds==="ticks"&&(e||(i=0),n||(s=this.getLabels().length-1)),this.min=i,this.max=s}buildTicks(){const e=this.min,n=this.max,i=this.options.offset,s=[];let a=this.getLabels();a=e===0&&n===a.length-1?a:a.slice(e,n+1),this._valueRange=Math.max(a.length-(i?0:1),1),this._startValue=this.min-(i?.5:0);for(let o=e;o<=n;o++)s.push({value:o});return s}getLabelForValue(e){return rE.call(this,e)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(e){return typeof e!="number"&&(e=this.parse(e)),e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getPixelForTick(e){const n=this.ticks;return e<0||e>n.length-1?null:this.getPixelForValue(n[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}}Lt(lS,"id","category"),Lt(lS,"defaults",{ticks:{callback:rE}});function ofe(t,e){const n=[],{bounds:s,step:a,min:o,max:r,precision:c,count:d,maxTicks:f,maxDigits:p,includeBounds:g}=t,y=a||1,_=f-1,{min:v,max:x}=e,k=!En(o),C=!En(r),N=!En(d),L=(x-v)/(p+1);let M=rP((x-v)/_/y)*y,O,T,P,E;if(M<1e-14&&!k&&!C)return[{value:v},{value:x}];E=Math.ceil(x/M)-Math.floor(v/M),E>_&&(M=rP(E*M/_/y)*y),En(c)||(O=Math.pow(10,c),M=Math.ceil(M*O)/O),s==="ticks"?(T=Math.floor(v/M)*M,P=Math.ceil(x/M)*M):(T=v,P=x),k&&C&&a&&Tce((r-o)/a,M/1e3)?(E=Math.round(Math.min((r-o)/M,f)),M=(r-o)/E,T=o,P=r):N?(T=k?o:T,P=C?r:P,E=d-1,M=(P-T)/E):(E=(P-T)/M,$f(E,Math.round(E),M/1e3)?E=Math.round(E):E=Math.ceil(E));const R=Math.max(lP(M),lP(T));O=Math.pow(10,En(c)?R:c),T=Math.round(T*O)/O,P=Math.round(P*O)/O;let q=0;for(k&&(g&&T!==o?(n.push({value:o}),T<o&&q++,$f(Math.round((T+q*M)*O)/O,o,lE(o,L,t))&&q++):T<o&&q++);q<E;++q){const I=Math.round((T+q*M)*O)/O;if(C&&I>r)break;n.push({value:I})}return C&&g&&P!==r?n.length&&$f(n[n.length-1].value,r,lE(r,L,t))?n[n.length-1].value=r:n.push({value:r}):(!C||P===r)&&n.push({value:P}),n}function lE(t,e,{horizontal:n,minRotation:i}){const s=Sc(i),a=(n?Math.sin(s):Math.cos(s))||.001,o=.75*e*(""+t).length;return Math.min(e/a,o)}class rfe extends $d{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(e,n){return En(e)||(typeof e=="number"||e instanceof Number)&&!isFinite(+e)?null:+e}handleTickRangeOptions(){const{beginAtZero:e}=this.options,{minDefined:n,maxDefined:i}=this.getUserBounds();let{min:s,max:a}=this;const o=c=>s=n?s:c,r=c=>a=i?a:c;if(e){const c=Ad(s),d=Ad(a);c<0&&d<0?r(0):c>0&&d>0&&o(0)}if(s===a){let c=a===0?1:Math.abs(a*.05);r(a+c),e||o(s-c)}this.min=s,this.max=a}getTickLimit(){const e=this.options.ticks;let{maxTicksLimit:n,stepSize:i}=e,s;return i?(s=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,s>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${s} ticks. Limiting to 1000.`),s=1e3)):(s=this.computeTickLimit(),n=n||11),n&&(s=Math.min(n,s)),s}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const e=this.options,n=e.ticks;let i=this.getTickLimit();i=Math.max(2,i);const s={maxTicks:i,bounds:e.bounds,min:e.min,max:e.max,precision:n.precision,step:n.stepSize,count:n.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:n.minRotation||0,includeBounds:n.includeBounds!==!1},a=this._range||this,o=ofe(s,a);return e.bounds==="ticks"&&Mce(o,this,"value"),e.reverse?(o.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),o}configure(){const e=this.ticks;let n=this.min,i=this.max;if(super.configure(),this.options.offset&&e.length){const s=(i-n)/Math.max(e.length-1,1)/2;n-=s,i+=s}this._startValue=n,this._endValue=i,this._valueRange=i-n}getLabelForValue(e){return F5(e,this.chart.options.locale,this.options.ticks.format)}}class cS extends rfe{determineDataLimits(){const{min:e,max:n}=this.getMinMax(!0);this.min=ls(e)?e:0,this.max=ls(n)?n:1,this.handleTickRangeOptions()}computeTickLimit(){const e=this.isHorizontal(),n=e?this.width:this.height,i=Sc(this.options.ticks.minRotation),s=(e?Math.sin(i):Math.cos(i))||.001,a=this._resolveTickFontOptions(0);return Math.ceil(n/Math.min(40,a.lineHeight/s))}getPixelForValue(e){return e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getValueForPixel(e){return this._startValue+this.getDecimalForPixel(e)*this._valueRange}}Lt(cS,"id","linear"),Lt(cS,"defaults",{ticks:{callback:I5.formatters.numeric}});const Yy={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},Rs=Object.keys(Yy);function cE(t,e){return t-e}function uE(t,e){if(En(e))return null;const n=t._adapter,{parser:i,round:s,isoWeekday:a}=t._parseOpts;let o=e;return typeof i=="function"&&(o=i(o)),ls(o)||(o=typeof i=="string"?n.parse(o,i):n.parse(o)),o===null?null:(s&&(o=s==="week"&&(ym(a)||a===!0)?n.startOf(o,"isoWeek",a):n.startOf(o,s)),+o)}function dE(t,e,n,i){const s=Rs.length;for(let a=Rs.indexOf(t);a<s-1;++a){const o=Yy[Rs[a]],r=o.steps?o.steps:Number.MAX_SAFE_INTEGER;if(o.common&&Math.ceil((n-e)/(r*o.size))<=i)return Rs[a]}return Rs[s-1]}function lfe(t,e,n,i,s){for(let a=Rs.length-1;a>=Rs.indexOf(n);a--){const o=Rs[a];if(Yy[o].common&&t._adapter.diff(s,i,o)>=e-1)return o}return Rs[n?Rs.indexOf(n):0]}function cfe(t){for(let e=Rs.indexOf(t)+1,n=Rs.length;e<n;++e)if(Yy[Rs[e]].common)return Rs[e]}function hE(t,e,n){if(!n)t[e]=!0;else if(n.length){const{lo:i,hi:s}=ck(n,e),a=n[i]>=e?n[i]:n[s];t[a]=!0}}function ufe(t,e,n,i){const s=t._adapter,a=+s.startOf(e[0].value,i),o=e[e.length-1].value;let r,c;for(r=a;r<=o;r=+s.add(r,1,i))c=n[r],c>=0&&(e[c].major=!0);return e}function fE(t,e,n){const i=[],s={},a=e.length;let o,r;for(o=0;o<a;++o)r=e[o],s[r]=o,i.push({value:r,major:!1});return a===0||!n?i:ufe(t,i,s,n)}class H0 extends $d{constructor(e){super(e),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(e,n={}){const i=e.time||(e.time={}),s=this._adapter=new ide._date(e.adapters.date);s.init(n),Gf(i.displayFormats,s.formats()),this._parseOpts={parser:i.parser,round:i.round,isoWeekday:i.isoWeekday},super.init(e),this._normalized=n.normalized}parse(e,n){return e===void 0?null:uE(this,e)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const e=this.options,n=this._adapter,i=e.time.unit||"day";let{min:s,max:a,minDefined:o,maxDefined:r}=this.getUserBounds();function c(d){!o&&!isNaN(d.min)&&(s=Math.min(s,d.min)),!r&&!isNaN(d.max)&&(a=Math.max(a,d.max))}(!o||!r)&&(c(this._getLabelBounds()),(e.bounds!=="ticks"||e.ticks.source!=="labels")&&c(this.getMinMax(!1))),s=ls(s)&&!isNaN(s)?s:+n.startOf(Date.now(),i),a=ls(a)&&!isNaN(a)?a:+n.endOf(Date.now(),i)+1,this.min=Math.min(s,a-1),this.max=Math.max(s+1,a)}_getLabelBounds(){const e=this.getLabelTimestamps();let n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;return e.length&&(n=e[0],i=e[e.length-1]),{min:n,max:i}}buildTicks(){const e=this.options,n=e.time,i=e.ticks,s=i.source==="labels"?this.getLabelTimestamps():this._generate();e.bounds==="ticks"&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const a=this.min,o=this.max,r=Rce(s,a,o);return this._unit=n.unit||(i.autoSkip?dE(n.minUnit,this.min,this.max,this._getLabelCapacity(a)):lfe(this,r.length,n.minUnit,this.min,this.max)),this._majorUnit=!i.major.enabled||this._unit==="year"?void 0:cfe(this._unit),this.initOffsets(s),e.reverse&&r.reverse(),fE(this,r,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map(e=>+e.value))}initOffsets(e=[]){let n=0,i=0,s,a;this.options.offset&&e.length&&(s=this.getDecimalForValue(e[0]),e.length===1?n=1-s:n=(this.getDecimalForValue(e[1])-s)/2,a=this.getDecimalForValue(e[e.length-1]),e.length===1?i=a:i=(a-this.getDecimalForValue(e[e.length-2]))/2);const o=e.length<3?.5:.25;n=ya(n,0,o),i=ya(i,0,o),this._offsets={start:n,end:i,factor:1/(n+1+i)}}_generate(){const e=this._adapter,n=this.min,i=this.max,s=this.options,a=s.time,o=a.unit||dE(a.minUnit,n,i,this._getLabelCapacity(n)),r=sn(s.ticks.stepSize,1),c=o==="week"?a.isoWeekday:!1,d=ym(c)||c===!0,f={};let p=n,g,y;if(d&&(p=+e.startOf(p,"isoWeek",c)),p=+e.startOf(p,d?"day":o),e.diff(i,n,o)>1e5*r)throw new Error(n+" and "+i+" are too far apart with stepSize of "+r+" "+o);const _=s.ticks.source==="data"&&this.getDataTimestamps();for(g=p,y=0;g<i;g=+e.add(g,r,o),y++)hE(f,g,_);return(g===i||s.bounds==="ticks"||y===1)&&hE(f,g,_),Object.keys(f).sort(cE).map(v=>+v)}getLabelForValue(e){const n=this._adapter,i=this.options.time;return i.tooltipFormat?n.format(e,i.tooltipFormat):n.format(e,i.displayFormats.datetime)}format(e,n){const s=this.options.time.displayFormats,a=this._unit,o=n||s[a];return this._adapter.format(e,o)}_tickFormatFunction(e,n,i,s){const a=this.options,o=a.ticks.callback;if(o)return In(o,[e,n,i],this);const r=a.time.displayFormats,c=this._unit,d=this._majorUnit,f=c&&r[c],p=d&&r[d],g=i[n],y=d&&p&&g&&g.major;return this._adapter.format(e,s||(y?p:f))}generateTickLabels(e){let n,i,s;for(n=0,i=e.length;n<i;++n)s=e[n],s.label=this._tickFormatFunction(s.value,n,e)}getDecimalForValue(e){return e===null?NaN:(e-this.min)/(this.max-this.min)}getPixelForValue(e){const n=this._offsets,i=this.getDecimalForValue(e);return this.getPixelForDecimal((n.start+i)*n.factor)}getValueForPixel(e){const n=this._offsets,i=this.getDecimalForPixel(e)/n.factor-n.end;return this.min+i*(this.max-this.min)}_getLabelSize(e){const n=this.options.ticks,i=this.ctx.measureText(e).width,s=Sc(this.isHorizontal()?n.maxRotation:n.minRotation),a=Math.cos(s),o=Math.sin(s),r=this._resolveTickFontOptions(0).size;return{w:i*a+r*o,h:i*o+r*a}}_getLabelCapacity(e){const n=this.options.time,i=n.displayFormats,s=i[n.unit]||i.millisecond,a=this._tickFormatFunction(e,0,fE(this,[e],this._majorUnit),s),o=this._getLabelSize(a),r=Math.floor(this.isHorizontal()?this.width/o.w:this.height/o.h)-1;return r>0?r:1}getDataTimestamps(){let e=this._cache.data||[],n,i;if(e.length)return e;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(n=0,i=s.length;n<i;++n)e=e.concat(s[n].controller.getAllParsedValues(this));return this._cache.data=this.normalize(e)}getLabelTimestamps(){const e=this._cache.labels||[];let n,i;if(e.length)return e;const s=this.getLabels();for(n=0,i=s.length;n<i;++n)e.push(uE(this,s[n]));return this._cache.labels=this._normalized?e:this.normalize(e)}normalize(e){return Fce(e.sort(cE))}}Lt(H0,"id","time"),Lt(H0,"defaults",{bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}});function p_(t,e,n){let i=0,s=t.length-1,a,o,r,c;n?(e>=t[i].pos&&e<=t[s].pos&&({lo:i,hi:s}=wc(t,"pos",e)),{pos:a,time:r}=t[i],{pos:o,time:c}=t[s]):(e>=t[i].time&&e<=t[s].time&&({lo:i,hi:s}=wc(t,"time",e)),{time:a,pos:r}=t[i],{time:o,pos:c}=t[s]);const d=o-a;return d?r+(c-r)*(e-a)/d:r}class mE extends H0{constructor(e){super(e),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const e=this._getTimestampsForTable(),n=this._table=this.buildLookupTable(e);this._minPos=p_(n,this.min),this._tableRange=p_(n,this.max)-this._minPos,super.initOffsets(e)}buildLookupTable(e){const{min:n,max:i}=this,s=[],a=[];let o,r,c,d,f;for(o=0,r=e.length;o<r;++o)d=e[o],d>=n&&d<=i&&s.push(d);if(s.length<2)return[{time:n,pos:0},{time:i,pos:1}];for(o=0,r=s.length;o<r;++o)f=s[o+1],c=s[o-1],d=s[o],Math.round((f+c)/2)!==d&&a.push({time:d,pos:o/(r-1)});return a}_generate(){const e=this.min,n=this.max;let i=super.getDataTimestamps();return(!i.includes(e)||!i.length)&&i.splice(0,0,e),(!i.includes(n)||i.length===1)&&i.push(n),i.sort((s,a)=>s-a)}_getTimestampsForTable(){let e=this._cache.all||[];if(e.length)return e;const n=this.getDataTimestamps(),i=this.getLabelTimestamps();return n.length&&i.length?e=this.normalize(n.concat(i)):e=n.length?n:i,e=this._cache.all=e,e}getDecimalForValue(e){return(p_(this._table,e)-this._minPos)/this._tableRange}getValueForPixel(e){const n=this._offsets,i=this.getDecimalForPixel(e)/n.factor-n.end;return p_(this._table,i*this._tableRange+this._minPos,!0)}}Lt(mE,"id","timeseries"),Lt(mE,"defaults",H0.defaults);function W0(t){const[e,n]=S.useState(()=>window.matchMedia(t).matches);return S.useEffect(()=>{const i=window.matchMedia(t),s=a=>{n(a.matches)};return s({matches:i.matches}),i.addEventListener("change",s),()=>i.removeEventListener("change",s)},[t]),e}function dfe(){const{t}=nt(),{showNotification:e}=mn(),n=ns(O=>O.usage),i=ns(O=>O.loading),s=ns(O=>O.error),a=ns(O=>O.lastRefreshedAt),o=ns(O=>O.loadUsageStats),[r,c]=S.useState({}),[d,f]=S.useState(!1),[p,g]=S.useState(!1),y=S.useRef(null),_=S.useCallback(async()=>{await o({force:!0,staleTimeMs:wr})},[o]);S.useEffect(()=>{o({staleTimeMs:wr}).catch(()=>{}),c(jG())},[o]);const v=async()=>{f(!0);try{const O=await H2.exportUsage(),T=typeof O?.exported_at=="string"?new Date(O.exported_at):new Date,E=`usage-export-${(Number.isNaN(T.getTime())?new Date().toISOString():T.toISOString()).replace(/[:.]/g,"-")}.json`;wl({filename:E,blob:new Blob([JSON.stringify(O??{},null,2)],{type:"application/json"})}),e(t("usage_stats.export_success"),"success")}catch(O){const T=O instanceof Error?O.message:"";e(`${t("notification.download_failed")}${T?`: ${T}`:""}`,"error")}finally{f(!1)}},x=()=>{y.current?.click()},k=async O=>{const T=O.target.files?.[0];if(O.target.value="",!!T){g(!0);try{const P=await T.text();let E;try{E=JSON.parse(P)}catch{e(t("usage_stats.import_invalid"),"error");return}const R=await H2.importUsage(E);e(t("usage_stats.import_success",{added:R?.added??0,skipped:R?.skipped??0,total:R?.total_requests??0,failed:R?.failed_requests??0}),"success");try{await o({force:!0,staleTimeMs:wr})}catch(q){const I=q instanceof Error?q.message:"";e(`${t("notification.refresh_failed")}${I?`: ${I}`:""}`,"error")}}catch(P){const E=P instanceof Error?P.message:"";e(`${t("notification.upload_failed")}${E?`: ${E}`:""}`,"error")}finally{g(!1)}}},C=S.useCallback(O=>{c(O),RG(O)},[]),N=n,L=s||"",M=a?new Date(a):null;return{usage:N,loading:i,error:L,lastRefreshedAt:M,modelPrices:r,setModelPrices:C,loadUsage:_,handleExport:v,handleImport:x,handleImportChange:k,importInputRef:y,exporting:d,importing:p}}function hfe({usage:t,loading:e,nowMs:n}){const i=S.useMemo(()=>{if(!t)return{labels:[],requests:[],tokens:[]};if(!Number.isFinite(n)||n<=0)return{labels:[],requests:[],tokens:[]};const f=Ea(t);if(!f.length)return{labels:[],requests:[],tokens:[]};const p=60,g=n,y=g-p*60*1e3,_=new Array(p).fill(0),v=new Array(p).fill(0);return f.forEach(k=>{const C=k.__timestampMs??0;if(!Number.isFinite(C)||C<y||C>g)return;const N=Math.min(p-1,Math.floor((C-y)/6e4));_[N]+=1,v[N]+=Kd(k)}),{labels:_.map((k,C)=>{const N=new Date(y+(C+1)*6e4),L=N.getHours().toString().padStart(2,"0"),M=N.getMinutes().toString().padStart(2,"0");return`${L}:${M}`}),requests:_,tokens:v}},[n,t]),s=S.useCallback((f,p,g)=>{if(e||!f?.data?.length)return null;const y=Math.max(f.data.length-60,0),_=f.labels.slice(y),v=f.data.slice(y);return{data:{labels:_,datasets:[{data:v,borderColor:p,backgroundColor:g,fill:!0,tension:.45,pointRadius:0,borderWidth:2}]}}},[e]),a=S.useMemo(()=>s({labels:i.labels,data:i.requests},"#8b8680","rgba(139, 134, 128, 0.18)"),[s,i.labels,i.requests]),o=S.useMemo(()=>s({labels:i.labels,data:i.tokens},"#8b5cf6","rgba(139, 92, 246, 0.18)"),[s,i.labels,i.tokens]),r=S.useMemo(()=>s({labels:i.labels,data:i.requests},"#22c55e","rgba(34, 197, 94, 0.18)"),[s,i.labels,i.requests]),c=S.useMemo(()=>s({labels:i.labels,data:i.tokens},"#f97316","rgba(249, 115, 22, 0.18)"),[s,i.labels,i.tokens]),d=S.useMemo(()=>s({labels:i.labels,data:i.tokens},"#f59e0b","rgba(245, 158, 11, 0.18)"),[s,i.labels,i.tokens]);return{requestsSparkline:a,tokensSparkline:o,rpmSparkline:r,tpmSparkline:c,costSparkline:d}}const ffe={responsive:!0,maintainAspectRatio:!1,plugins:{legend:{display:!1},tooltip:{enabled:!1}},scales:{x:{display:!1},y:{display:!1}},elements:{line:{tension:.45},point:{radius:0}}};function G0({period:t,labels:e,isDark:n,isMobile:i}){const s=i&&t==="hour"?0:i?2:4,a=i?10:12,o=i?t==="hour"?8:6:t==="hour"?12:10,r=n?"rgba(255, 255, 255, 0.06)":"rgba(17, 24, 39, 0.06)",c=n?"rgba(255, 255, 255, 0.10)":"rgba(17, 24, 39, 0.10)",d=n?"rgba(255, 255, 255, 0.72)":"rgba(17, 24, 39, 0.72)";return{responsive:!0,maintainAspectRatio:!1,interaction:{mode:"index",intersect:!1},plugins:{legend:{display:!1},tooltip:{backgroundColor:n?"rgba(17, 24, 39, 0.92)":"rgba(255, 255, 255, 0.98)",titleColor:n?"#ffffff":"#111827",bodyColor:n?"rgba(255, 255, 255, 0.86)":"#374151",borderColor:n?"rgba(255, 255, 255, 0.10)":"rgba(17, 24, 39, 0.10)",borderWidth:1,padding:10,displayColors:!0,usePointStyle:!0}},scales:{x:{grid:{color:r,drawTicks:!1},border:{color:c},ticks:{color:d,font:{size:a},maxRotation:i?0:45,minRotation:0,autoSkip:!0,maxTicksLimit:o,callback:_=>{const v=typeof _=="number"?_:Number(_),x=Number.isFinite(v)&&e[v]?e[v]:typeof _=="string"?_:"";if(t==="hour"){const[k,C]=x.split(" ");return C?C.startsWith("00:")&&k?[k,C]:C:x}if(i){const k=x.split("-");if(k.length===3)return`${k[1]}-${k[2]}`}return x}}},y:{beginAtZero:!0,grid:{color:r},border:{color:c},ticks:{color:d,font:{size:a}}}},elements:{line:{tension:.35,borderWidth:i?1.5:2},point:{borderWidth:2,radius:s,hoverRadius:4}}}}function yk(t,e){return!e||t<=0?void 0:`${Math.min(t*56,3e3)}px`}function mfe({usage:t,chartLines:e,isDark:n,isMobile:i,hourWindowHours:s}){const[a,o]=S.useState("day"),[r,c]=S.useState("day"),d=S.useMemo(()=>t?GL(t,a,"requests",e,{hourWindowHours:s}):{labels:[],datasets:[]},[t,a,e,s]),f=S.useMemo(()=>t?GL(t,r,"tokens",e,{hourWindowHours:s}):{labels:[],datasets:[]},[t,r,e,s]),p=S.useMemo(()=>G0({period:a,labels:d.labels,isDark:n,isMobile:i}),[a,d.labels,n,i]),g=S.useMemo(()=>G0({period:r,labels:f.labels,isDark:n,isMobile:i}),[r,f.labels,n,i]);return{requestsPeriod:a,setRequestsPeriod:o,tokensPeriod:r,setTokensPeriod:c,requestsChartData:d,tokensChartData:f,requestsChartOptions:p,tokensChartOptions:g}}const gD="label";function pE(t,e){typeof t=="function"?t(e):t&&(t.current=e)}function pfe(t,e){const n=t.options;n&&e&&Object.assign(n,e)}function _D(t,e){t.labels=e}function yD(t,e,n=gD){const i=[];t.datasets=e.map(s=>{const a=t.datasets.find(o=>o[n]===s[n]);return!a||!s.data||i.includes(a)?{...s}:(i.push(a),Object.assign(a,s),a)})}function gfe(t,e=gD){const n={labels:[],datasets:[]};return _D(n,t.labels),yD(n,t.datasets,e),n}function _fe(t,e){const{height:n=150,width:i=300,redraw:s=!1,datasetIdKey:a,type:o,data:r,options:c,plugins:d=[],fallbackContent:f,updateMode:p,...g}=t,y=S.useRef(null),_=S.useRef(null),v=()=>{y.current&&(_.current=new Xy(y.current,{type:o,data:gfe(r,a),options:c&&{...c},plugins:d}),pE(e,_.current))},x=()=>{pE(e,null),_.current&&(_.current.destroy(),_.current=null)};return S.useEffect(()=>{!s&&_.current&&c&&pfe(_.current,c)},[s,c]),S.useEffect(()=>{!s&&_.current&&_D(_.current.config.data,r.labels)},[s,r.labels]),S.useEffect(()=>{!s&&_.current&&r.datasets&&yD(_.current.config.data,r.datasets,a)},[s,r.datasets]),S.useEffect(()=>{_.current&&(s?(x(),setTimeout(v)):_.current.update(p))},[s,c,r.labels,r.datasets,p]),S.useEffect(()=>{_.current&&(x(),setTimeout(v))},[o]),S.useEffect(()=>(v(),()=>x()),[]),h.jsx("canvas",{ref:y,role:"img",height:n,width:i,...g,children:f})}const yfe=S.forwardRef(_fe);function bfe(t,e){return Xy.register(e),S.forwardRef((n,i)=>h.jsx(yfe,{...n,ref:i,type:t}))}const Jy=bfe("line",o0),vfe="UsagePage-module__container___nCAFc",xfe="UsagePage-module__header___HxnC8",Sfe="UsagePage-module__headerActions___3cXLO",wfe="UsagePage-module__lastRefreshed___cqlrd",kfe="UsagePage-module__timeRangeGroup___hI2kH",Cfe="UsagePage-module__timeRangeLabel___2VsOz",Afe="UsagePage-module__timeRangeSelectControl___6vBeH",Nfe="UsagePage-module__pageTitle___70rs5",Tfe="UsagePage-module__errorBox___gB8Rj",Mfe="UsagePage-module__hint___pUQ06",Lfe="UsagePage-module__loadingOverlay___BuX9V",Ofe="UsagePage-module__loadingOverlayContent___3vf0S",Pfe="UsagePage-module__loadingOverlaySpinner___MvMZD",Efe="UsagePage-module__loadingOverlayText___64YIy",jfe="UsagePage-module__statsGrid___Q0sW-",Rfe="UsagePage-module__statCard___iCndn",Dfe="UsagePage-module__statValue___duHNu",Ffe="UsagePage-module__statCardHeader___IbBKW",Ife="UsagePage-module__statLabelGroup___SMxKl",Bfe="UsagePage-module__statIconBadge___bPCTx",Ufe="UsagePage-module__statLabel___V2mir",qfe="UsagePage-module__statSuccess___AmaqC",zfe="UsagePage-module__statFailure___jWtUQ",Kfe="UsagePage-module__statNeutral___IhwNw",Vfe="UsagePage-module__statMetaRow___VB7gR",Hfe="UsagePage-module__statMetaItem___YIXw2",Wfe="UsagePage-module__statMetaDot___daNGF",Gfe="UsagePage-module__statSubtle___yXU7t",$fe="UsagePage-module__statTrend___ra06-",Xfe="UsagePage-module__statTrendPlaceholder___oRADx",Qfe="UsagePage-module__sparkline___1tqGF",Yfe="UsagePage-module__apiSortBar___MpyiE",Jfe="UsagePage-module__apiSortBtn___AkzG0",Zfe="UsagePage-module__apiSortBtnActive___-PugQ",eme="UsagePage-module__apiList___2kChf",tme="UsagePage-module__apiItem___cyn0u",nme="UsagePage-module__apiHeader___tT8FK",ime="UsagePage-module__apiInfo___OFEK-",sme="UsagePage-module__apiEndpoint___J38DV",ame="UsagePage-module__apiStats___blw7G",ome="UsagePage-module__apiBadge___OAqI7",rme="UsagePage-module__expandIcon___5FU6h",lme="UsagePage-module__apiModels___eZNUp",cme="UsagePage-module__modelRow___ZKhXO",ume="UsagePage-module__modelName___mlOFW",dme="UsagePage-module__modelStat___9behg",hme="UsagePage-module__detailsFixedCard___5TOHu",fme="UsagePage-module__detailsScroll___FxWDO",mme="UsagePage-module__tableWrapper___Sax8l",pme="UsagePage-module__table___-sWaI",gme="UsagePage-module__sortableHeader___khBCr",_me="UsagePage-module__sortHeaderButton___T3KIB",yme="UsagePage-module__modelCell___0d7fk",bme="UsagePage-module__credentialType___FoGup",vme="UsagePage-module__requestCountCell___17o3C",xme="UsagePage-module__requestBreakdown___VDvhm",Sme="UsagePage-module__pricingSection___jk8kk",wme="UsagePage-module__priceForm___OJwRe",kme="UsagePage-module__formRow___sHXY2",Cme="UsagePage-module__formField___Vf4b-",Ame="UsagePage-module__pricesList___ys67C",Nme="UsagePage-module__pricesTitle___CJRmb",Tme="UsagePage-module__pricesGrid___rCyGv",Mme="UsagePage-module__priceItem___I0JbD",Lme="UsagePage-module__priceInfo___TteL5",Ome="UsagePage-module__priceModel___GvFG8",Pme="UsagePage-module__priceMeta___V2rEi",Eme="UsagePage-module__priceActions___2BFSQ",jme="UsagePage-module__editModalBody___z4n58",Rme="UsagePage-module__chartWrapper___lAIqa",Dme="UsagePage-module__chartLegend___OA6vI",Fme="UsagePage-module__legendItem___g2pb0",Ime="UsagePage-module__legendDot___Ehp8J",Bme="UsagePage-module__legendLabel___pjtGV",Ume="UsagePage-module__chartArea___ZykTT",qme="UsagePage-module__chartScroller___AtIi0",zme="UsagePage-module__chartCanvas___NYz9z",Kme="UsagePage-module__periodButtons___MD8jm",Vme="UsagePage-module__chartsGrid___k56wO",Hme="UsagePage-module__detailsGrid___zSOOI",Wme="UsagePage-module__requestEventsActions___cJzSl",Gme="UsagePage-module__requestEventsToolbar___xx5kv",$me="UsagePage-module__requestEventsFilterItem___5vPqu",Xme="UsagePage-module__requestEventsFilterLabel___UeBCu",Qme="UsagePage-module__requestEventsSelect___GDYz1",Yme="UsagePage-module__requestEventsMeta___jhpNH",Jme="UsagePage-module__requestEventsLimitHint___vP-TA",Zme="UsagePage-module__requestEventsTableWrapper___QQY-f",epe="UsagePage-module__requestEventsTimestamp___I6vM1",tpe="UsagePage-module__requestEventsSourceCell___y8Who",npe="UsagePage-module__requestEventsAuthIndex___DAZfi",ipe="UsagePage-module__requestEventsResultSuccess___Ovwcs",spe="UsagePage-module__requestEventsResultFailed___sUYiy",ape="UsagePage-module__chartLineHeader___xPk4F",ope="UsagePage-module__chartLineList___Le-PV",rpe="UsagePage-module__chartLineItem___p7NYT",lpe="UsagePage-module__chartLineLabel___jA5Ww",cpe="UsagePage-module__chartLineCount___yVkE2",upe="UsagePage-module__chartLineHint___v7FGv",dpe="UsagePage-module__healthCard___FpTJ7",hpe="UsagePage-module__healthHeader___uxdUE",fpe="UsagePage-module__healthTitle___G-5Ux",mpe="UsagePage-module__healthMeta___DeEqL",ppe="UsagePage-module__healthWindow___T1kJo",gpe="UsagePage-module__healthRate___EKiz8",_pe="UsagePage-module__healthRateHigh___iGuwG",ype="UsagePage-module__healthRateMedium___E67ug",bpe="UsagePage-module__healthRateLow___RqYIj",vpe="UsagePage-module__healthGridScroller___g50pg",xpe="UsagePage-module__healthGrid___QWLzl",Spe="UsagePage-module__healthBlockWrapper___1Q1f5",wpe="UsagePage-module__healthBlock___7ZNns",kpe="UsagePage-module__healthBlockActive___vtccW",Cpe="UsagePage-module__healthBlockIdle___qnkeV",Ape="UsagePage-module__healthTooltip___Ah2TY",Npe="UsagePage-module__healthTooltipBelow___IwlME",Tpe="UsagePage-module__healthTooltipLeft___bxqyd",Mpe="UsagePage-module__healthTooltipRight___snBMi",Lpe="UsagePage-module__healthTooltipTime___aOKYR",Ope="UsagePage-module__healthTooltipStats___EqRXO",Ppe="UsagePage-module__healthTooltipSuccess___Qc947",Epe="UsagePage-module__healthTooltipFailure___4fKGK",jpe="UsagePage-module__healthTooltipRate___rg7Rm",Rpe="UsagePage-module__healthLegend___lLmsq",Dpe="UsagePage-module__healthLegendLabel___muJul",Fpe="UsagePage-module__healthLegendColors___HbDI-",Ipe="UsagePage-module__healthLegendBlock___r3rdr",ae={container:vfe,header:xfe,headerActions:Sfe,lastRefreshed:wfe,timeRangeGroup:kfe,timeRangeLabel:Cfe,timeRangeSelectControl:Afe,pageTitle:Nfe,errorBox:Tfe,hint:Mfe,loadingOverlay:Lfe,loadingOverlayContent:Ofe,loadingOverlaySpinner:Pfe,loadingOverlayText:Efe,statsGrid:jfe,statCard:Rfe,statValue:Dfe,statCardHeader:Ffe,statLabelGroup:Ife,statIconBadge:Bfe,statLabel:Ufe,statSuccess:qfe,statFailure:zfe,statNeutral:Kfe,statMetaRow:Vfe,statMetaItem:Hfe,statMetaDot:Wfe,statSubtle:Gfe,statTrend:$fe,statTrendPlaceholder:Xfe,sparkline:Qfe,apiSortBar:Yfe,apiSortBtn:Jfe,apiSortBtnActive:Zfe,apiList:eme,apiItem:tme,apiHeader:nme,apiInfo:ime,apiEndpoint:sme,apiStats:ame,apiBadge:ome,expandIcon:rme,apiModels:lme,modelRow:cme,modelName:ume,modelStat:dme,detailsFixedCard:hme,detailsScroll:fme,tableWrapper:mme,table:pme,sortableHeader:gme,sortHeaderButton:_me,modelCell:yme,credentialType:bme,requestCountCell:vme,requestBreakdown:xme,pricingSection:Sme,priceForm:wme,formRow:kme,formField:Cme,pricesList:Ame,pricesTitle:Nme,pricesGrid:Tme,priceItem:Mme,priceInfo:Lme,priceModel:Ome,priceMeta:Pme,priceActions:Eme,editModalBody:jme,chartWrapper:Rme,chartLegend:Dme,legendItem:Fme,legendDot:Ime,legendLabel:Bme,chartArea:Ume,chartScroller:qme,chartCanvas:zme,periodButtons:Kme,chartsGrid:Vme,detailsGrid:Hme,requestEventsActions:Wme,requestEventsToolbar:Gme,requestEventsFilterItem:$me,requestEventsFilterLabel:Xme,requestEventsSelect:Qme,requestEventsMeta:Yme,requestEventsLimitHint:Jme,requestEventsTableWrapper:Zme,requestEventsTimestamp:epe,requestEventsSourceCell:tpe,requestEventsAuthIndex:npe,requestEventsResultSuccess:ipe,requestEventsResultFailed:spe,chartLineHeader:ape,chartLineList:ope,chartLineItem:rpe,chartLineLabel:lpe,chartLineCount:cpe,chartLineHint:upe,healthCard:dpe,healthHeader:hpe,healthTitle:fpe,healthMeta:mpe,healthWindow:ppe,healthRate:gpe,healthRateHigh:_pe,healthRateMedium:ype,healthRateLow:bpe,healthGridScroller:vpe,healthGrid:xpe,healthBlockWrapper:Spe,healthBlock:wpe,healthBlockActive:kpe,healthBlockIdle:Cpe,healthTooltip:Ape,healthTooltipBelow:Npe,healthTooltipLeft:Tpe,healthTooltipRight:Mpe,healthTooltipTime:Lpe,healthTooltipStats:Ope,healthTooltipSuccess:Ppe,healthTooltipFailure:Epe,healthTooltipRate:jpe,healthLegend:Rpe,healthLegendLabel:Dpe,healthLegendColors:Fpe,healthLegendBlock:Ipe};function Bpe({usage:t,loading:e,modelPrices:n,nowMs:i,sparklines:s}){const{t:a}=nt(),o=Object.keys(n).length>0,{tokenBreakdown:r,rateStats:c,totalCost:d}=S.useMemo(()=>{const p={tokenBreakdown:{cachedTokens:0,reasoningTokens:0},rateStats:{rpm:0,tpm:0,windowMinutes:30,requestCount:0,tokenCount:0},totalCost:0};if(!t)return p;const g=Ea(t);if(!g.length)return p;let y=0,_=0,v=0;const x=i,k=30,C=x-k*60*1e3;let N=0,L=0;const M=Number.isFinite(x)&&x>0;g.forEach(T=>{const P=T.tokens;y+=Math.max(typeof P.cached_tokens=="number"?Math.max(P.cached_tokens,0):0,typeof P.cache_tokens=="number"?Math.max(P.cache_tokens,0):0),typeof P.reasoning_tokens=="number"&&(_+=P.reasoning_tokens);const E=T.__timestampMs??0;M&&Number.isFinite(E)&&E>=C&&E<=x&&(N+=1,L+=Kd(T)),o&&(v+=np(T,n))});const O=k;return{tokenBreakdown:{cachedTokens:y,reasoningTokens:_},rateStats:{rpm:N/O,tpm:L/O,windowMinutes:k,requestCount:N,tokenCount:L},totalCost:v}},[o,n,i,t]),f=[{key:"requests",label:a("usage_stats.total_requests"),icon:h.jsx(Qu,{size:16}),accent:"#8b8680",accentSoft:"rgba(139, 134, 128, 0.18)",accentBorder:"rgba(139, 134, 128, 0.35)",value:e?"-":(t?.total_requests??0).toLocaleString(),meta:h.jsxs(h.Fragment,{children:[h.jsxs("span",{className:ae.statMetaItem,children:[h.jsx("span",{className:ae.statMetaDot,style:{backgroundColor:"#10b981"}}),a("usage_stats.success_requests"),": ",e?"-":t?.success_count??0]}),h.jsxs("span",{className:ae.statMetaItem,children:[h.jsx("span",{className:ae.statMetaDot,style:{backgroundColor:"#c65746"}}),a("usage_stats.failed_requests"),": ",e?"-":t?.failure_count??0]})]}),trend:s.requests},{key:"tokens",label:a("usage_stats.total_tokens"),icon:h.jsx(E2,{size:16}),accent:"#8b5cf6",accentSoft:"rgba(139, 92, 246, 0.18)",accentBorder:"rgba(139, 92, 246, 0.35)",value:e?"-":_r(t?.total_tokens??0),meta:h.jsxs(h.Fragment,{children:[h.jsxs("span",{className:ae.statMetaItem,children:[a("usage_stats.cached_tokens"),": ",e?"-":_r(r.cachedTokens)]}),h.jsxs("span",{className:ae.statMetaItem,children:[a("usage_stats.reasoning_tokens"),": ",e?"-":_r(r.reasoningTokens)]})]}),trend:s.tokens},{key:"rpm",label:a("usage_stats.rpm_30m"),icon:h.jsx(L0,{size:16}),accent:"#22c55e",accentSoft:"rgba(34, 197, 94, 0.18)",accentBorder:"rgba(34, 197, 94, 0.32)",value:e?"-":KL(c.rpm),meta:h.jsxs("span",{className:ae.statMetaItem,children:[a("usage_stats.total_requests"),": ",e?"-":c.requestCount.toLocaleString()]}),trend:s.rpm},{key:"tpm",label:a("usage_stats.tpm_30m"),icon:h.jsx(j2,{size:16}),accent:"#f97316",accentSoft:"rgba(249, 115, 22, 0.18)",accentBorder:"rgba(249, 115, 22, 0.32)",value:e?"-":KL(c.tpm),meta:h.jsxs("span",{className:ae.statMetaItem,children:[a("usage_stats.total_tokens"),": ",e?"-":_r(c.tokenCount)]}),trend:s.tpm},{key:"cost",label:a("usage_stats.total_cost"),icon:h.jsx(Ez,{size:16}),accent:"#f59e0b",accentSoft:"rgba(245, 158, 11, 0.18)",accentBorder:"rgba(245, 158, 11, 0.32)",value:e?"-":o?By(d):"--",meta:h.jsxs(h.Fragment,{children:[h.jsxs("span",{className:ae.statMetaItem,children:[a("usage_stats.total_tokens"),": ",e?"-":_r(t?.total_tokens??0)]}),!o&&h.jsx("span",{className:`${ae.statMetaItem} ${ae.statSubtle}`,children:a("usage_stats.cost_need_price")})]}),trend:o?s.cost:null}];return h.jsx("div",{className:ae.statsGrid,children:f.map(p=>h.jsxs("div",{className:ae.statCard,style:{"--accent":p.accent,"--accent-soft":p.accentSoft,"--accent-border":p.accentBorder},children:[h.jsxs("div",{className:ae.statCardHeader,children:[h.jsx("div",{className:ae.statLabelGroup,children:h.jsx("span",{className:ae.statLabel,children:p.label})}),h.jsx("span",{className:ae.statIconBadge,children:p.icon})]}),h.jsx("div",{className:ae.statValue,children:p.value}),p.meta&&h.jsx("div",{className:ae.statMetaRow,children:p.meta}),h.jsx("div",{className:ae.statTrend,children:p.trend?h.jsx(Jy,{className:ae.sparkline,data:p.trend.data,options:ffe}):h.jsx("div",{className:ae.statTrendPlaceholder})})]},p.key))})}function gE({title:t,period:e,onPeriodChange:n,chartData:i,chartOptions:s,loading:a,isMobile:o,emptyText:r}){const{t:c}=nt();return h.jsx(jt,{title:t,extra:h.jsxs("div",{className:ae.periodButtons,children:[h.jsx(he,{variant:e==="hour"?"primary":"secondary",size:"sm",onClick:()=>n("hour"),children:c("usage_stats.by_hour")}),h.jsx(he,{variant:e==="day"?"primary":"secondary",size:"sm",onClick:()=>n("day"),children:c("usage_stats.by_day")})]}),children:a?h.jsx("div",{className:ae.hint,children:c("common.loading")}):i.labels.length>0?h.jsxs("div",{className:ae.chartWrapper,children:[h.jsx("div",{className:ae.chartLegend,"aria-label":"Chart legend",children:i.datasets.map((d,f)=>h.jsxs("div",{className:ae.legendItem,title:d.label,children:[h.jsx("span",{className:ae.legendDot,style:{backgroundColor:d.borderColor}}),h.jsx("span",{className:ae.legendLabel,children:d.label})]},`${d.label}-${f}`))}),h.jsx("div",{className:ae.chartArea,children:h.jsx("div",{className:ae.chartScroller,children:h.jsx("div",{className:ae.chartCanvas,style:e==="hour"?{minWidth:yk(i.labels.length,o)}:void 0,children:h.jsx(Jy,{data:i,options:s})})})})]}):h.jsx("div",{className:ae.hint,children:r})})}function Upe({chartLines:t,modelNames:e,maxLines:n=9,onChange:i}){const{t:s}=nt(),a=()=>{if(t.length>=n)return;const d=e.find(f=>!t.includes(f));i(d?[...t,d]:[...t,"all"])},o=d=>{if(t.length<=1)return;const f=[...t];f.splice(d,1),i(f)},r=(d,f)=>{const p=[...t];p[d]=f,i(p)},c=S.useMemo(()=>[{value:"all",label:s("usage_stats.chart_line_all")},...e.map(d=>({value:d,label:d}))],[e,s]);return h.jsxs(jt,{title:s("usage_stats.chart_line_actions_label"),extra:h.jsxs("div",{className:ae.chartLineHeader,children:[h.jsxs("span",{className:ae.chartLineCount,children:[t.length,"/",n]}),h.jsx(he,{variant:"secondary",size:"sm",onClick:a,disabled:t.length>=n,children:s("usage_stats.chart_line_add")})]}),children:[h.jsx("div",{className:ae.chartLineList,children:t.map((d,f)=>h.jsxs("div",{className:ae.chartLineItem,children:[h.jsx("span",{className:ae.chartLineLabel,children:s(`usage_stats.chart_line_label_${f+1}`)}),h.jsx(Hi,{value:d,options:c,onChange:p=>r(f,p)}),t.length>1&&h.jsx(he,{variant:"danger",size:"sm",onClick:()=>o(f),children:s("usage_stats.chart_line_delete")})]},f))}),h.jsx("p",{className:ae.chartLineHint,children:s("usage_stats.chart_line_hint")})]})}function qpe({apiStats:t,loading:e,hasPrices:n}){const{t:i}=nt(),[s,a]=S.useState(new Set),[o,r]=S.useState("requests"),[c,d]=S.useState("desc"),f=_=>{a(v=>{const x=new Set(v);return x.has(_)?x.delete(_):x.add(_),x})},p=_=>{o===_?d(v=>v==="asc"?"desc":"asc"):(r(_),d(_==="endpoint"?"asc":"desc"))},g=S.useMemo(()=>{const _=[...t],v=c==="asc"?1:-1;return _.sort((x,k)=>{switch(o){case"endpoint":return v*x.endpoint.localeCompare(k.endpoint);case"requests":return v*(x.totalRequests-k.totalRequests);case"tokens":return v*(x.totalTokens-k.totalTokens);case"cost":return v*(x.totalCost-k.totalCost);default:return 0}}),_},[t,o,c]),y=_=>o===_?c==="asc"?" ▲":" ▼":"";return h.jsx(jt,{title:i("usage_stats.api_details"),className:ae.detailsFixedCard,children:e?h.jsx("div",{className:ae.hint,children:i("common.loading")}):g.length>0?h.jsxs(h.Fragment,{children:[h.jsx("div",{className:ae.apiSortBar,children:[["endpoint","usage_stats.api_endpoint"],["requests","usage_stats.requests_count"],["tokens","usage_stats.tokens_count"],...n?[["cost","usage_stats.total_cost"]]:[]].map(([_,v])=>h.jsxs("button",{type:"button","aria-pressed":o===_,className:`${ae.apiSortBtn} ${o===_?ae.apiSortBtnActive:""}`,onClick:()=>p(_),children:[i(v),y(_)]},_))}),h.jsx("div",{className:ae.detailsScroll,children:h.jsx("div",{className:ae.apiList,children:g.map((_,v)=>{const x=s.has(_.endpoint),k=`api-models-${v}`;return h.jsxs("div",{className:ae.apiItem,children:[h.jsxs("button",{type:"button",className:ae.apiHeader,onClick:()=>f(_.endpoint),"aria-expanded":x,"aria-controls":k,children:[h.jsxs("div",{className:ae.apiInfo,children:[h.jsx("span",{className:ae.apiEndpoint,children:_.endpoint}),h.jsxs("div",{className:ae.apiStats,children:[h.jsx("span",{className:ae.apiBadge,children:h.jsxs("span",{className:ae.requestCountCell,children:[h.jsxs("span",{children:[i("usage_stats.requests_count"),": ",_.totalRequests.toLocaleString()]}),h.jsxs("span",{className:ae.requestBreakdown,children:["(",h.jsx("span",{className:ae.statSuccess,children:_.successCount.toLocaleString()})," ",h.jsx("span",{className:ae.statFailure,children:_.failureCount.toLocaleString()}),")"]})]})}),h.jsxs("span",{className:ae.apiBadge,children:[i("usage_stats.tokens_count"),": ",_r(_.totalTokens)]}),n&&_.totalCost>0&&h.jsxs("span",{className:ae.apiBadge,children:[i("usage_stats.total_cost"),": ",By(_.totalCost)]})]})]}),h.jsx("span",{className:ae.expandIcon,children:x?"▼":"▶"})]}),x&&h.jsx("div",{id:k,className:ae.apiModels,children:Object.entries(_.models).map(([C,N])=>h.jsxs("div",{className:ae.modelRow,children:[h.jsx("span",{className:ae.modelName,children:C}),h.jsx("span",{className:ae.modelStat,children:h.jsxs("span",{className:ae.requestCountCell,children:[h.jsx("span",{children:N.requests.toLocaleString()}),h.jsxs("span",{className:ae.requestBreakdown,children:["(",h.jsx("span",{className:ae.statSuccess,children:N.successCount.toLocaleString()})," ",h.jsx("span",{className:ae.statFailure,children:N.failureCount.toLocaleString()}),")"]})]})}),h.jsx("span",{className:ae.modelStat,children:_r(N.tokens)})]},C))})]},_.endpoint)})})})]}):h.jsx("div",{className:ae.hint,children:i("usage_stats.no_data")})})}function zpe({modelStats:t,loading:e,hasPrices:n}){const{t:i}=nt(),[s,a]=S.useState("requests"),[o,r]=S.useState("desc"),c=g=>{s===g?r(y=>y==="asc"?"desc":"asc"):(a(g),r(g==="model"?"asc":"desc"))},d=S.useMemo(()=>{const g=t.map(_=>({..._,successRate:_.requests>0?_.successCount/_.requests*100:100})),y=o==="asc"?1:-1;return g.sort((_,v)=>s==="model"?y*_.model.localeCompare(v.model):y*(_[s]-v[s])),g},[t,s,o]),f=g=>s===g?o==="asc"?" ▲":" ▼":"",p=g=>s===g?o==="asc"?"ascending":"descending":"none";return h.jsx(jt,{title:i("usage_stats.models"),className:ae.detailsFixedCard,children:e?h.jsx("div",{className:ae.hint,children:i("common.loading")}):d.length>0?h.jsx("div",{className:ae.detailsScroll,children:h.jsx("div",{className:ae.tableWrapper,children:h.jsxs("table",{className:ae.table,children:[h.jsx("thead",{children:h.jsxs("tr",{children:[h.jsx("th",{className:ae.sortableHeader,"aria-sort":p("model"),children:h.jsxs("button",{type:"button",className:ae.sortHeaderButton,onClick:()=>c("model"),children:[i("usage_stats.model_name"),f("model")]})}),h.jsx("th",{className:ae.sortableHeader,"aria-sort":p("requests"),children:h.jsxs("button",{type:"button",className:ae.sortHeaderButton,onClick:()=>c("requests"),children:[i("usage_stats.requests_count"),f("requests")]})}),h.jsx("th",{className:ae.sortableHeader,"aria-sort":p("tokens"),children:h.jsxs("button",{type:"button",className:ae.sortHeaderButton,onClick:()=>c("tokens"),children:[i("usage_stats.tokens_count"),f("tokens")]})}),h.jsx("th",{className:ae.sortableHeader,"aria-sort":p("successRate"),children:h.jsxs("button",{type:"button",className:ae.sortHeaderButton,onClick:()=>c("successRate"),children:[i("usage_stats.success_rate"),f("successRate")]})}),n&&h.jsx("th",{className:ae.sortableHeader,"aria-sort":p("cost"),children:h.jsxs("button",{type:"button",className:ae.sortHeaderButton,onClick:()=>c("cost"),children:[i("usage_stats.total_cost"),f("cost")]})})]})}),h.jsx("tbody",{children:d.map(g=>h.jsxs("tr",{children:[h.jsx("td",{className:ae.modelCell,children:g.model}),h.jsx("td",{children:h.jsxs("span",{className:ae.requestCountCell,children:[h.jsx("span",{children:g.requests.toLocaleString()}),h.jsxs("span",{className:ae.requestBreakdown,children:["(",h.jsx("span",{className:ae.statSuccess,children:g.successCount.toLocaleString()})," ",h.jsx("span",{className:ae.statFailure,children:g.failureCount.toLocaleString()}),")"]})]})}),h.jsx("td",{children:_r(g.tokens)}),h.jsx("td",{children:h.jsxs("span",{className:g.successRate>=95?ae.statSuccess:g.successRate>=80?ae.statNeutral:ae.statFailure,children:[g.successRate.toFixed(1),"%"]})}),n&&h.jsx("td",{children:g.cost>0?By(g.cost):"--"})]},g.model))})]})})}):h.jsx("div",{className:ae.hint,children:i("usage_stats.no_data")})})}function Kpe({modelNames:t,modelPrices:e,onPricesChange:n}){const{t:i}=nt(),[s,a]=S.useState(""),[o,r]=S.useState(""),[c,d]=S.useState(""),[f,p]=S.useState(""),[g,y]=S.useState(null),[_,v]=S.useState(""),[x,k]=S.useState(""),[C,N]=S.useState(""),L=()=>{if(!s)return;const R=parseFloat(o)||0,q=parseFloat(c)||0,I=f.trim()===""?R:parseFloat(f)||0,Y={...e,[s]:{prompt:R,completion:q,cache:I}};n(Y),a(""),r(""),d(""),p("")},M=R=>{const q={...e};delete q[R],n(q)},O=R=>{const q=e[R];y(R),v(q?.prompt?.toString()||""),k(q?.completion?.toString()||""),N(q?.cache?.toString()||"")},T=()=>{if(!g)return;const R=parseFloat(_)||0,q=parseFloat(x)||0,I=C.trim()===""?R:parseFloat(C)||0,Y={...e,[g]:{prompt:R,completion:q,cache:I}};n(Y),y(null)},P=R=>{a(R);const q=e[R];q?(r(q.prompt.toString()),d(q.completion.toString()),p(q.cache.toString())):(r(""),d(""),p(""))},E=S.useMemo(()=>[{value:"",label:i("usage_stats.model_price_select_placeholder")},...t.map(R=>({value:R,label:R}))],[t,i]);return h.jsxs(jt,{title:i("usage_stats.model_price_settings"),children:[h.jsxs("div",{className:ae.pricingSection,children:[h.jsx("div",{className:ae.priceForm,children:h.jsxs("div",{className:ae.formRow,children:[h.jsxs("div",{className:ae.formField,children:[h.jsx("label",{children:i("usage_stats.model_name")}),h.jsx(Hi,{value:s,options:E,onChange:P,placeholder:i("usage_stats.model_price_select_placeholder")})]}),h.jsxs("div",{className:ae.formField,children:[h.jsxs("label",{children:[i("usage_stats.model_price_prompt")," ($/1M)"]}),h.jsx(lt,{type:"number",value:o,onChange:R=>r(R.target.value),placeholder:"0.00",step:"0.0001"})]}),h.jsxs("div",{className:ae.formField,children:[h.jsxs("label",{children:[i("usage_stats.model_price_completion")," ($/1M)"]}),h.jsx(lt,{type:"number",value:c,onChange:R=>d(R.target.value),placeholder:"0.00",step:"0.0001"})]}),h.jsxs("div",{className:ae.formField,children:[h.jsxs("label",{children:[i("usage_stats.model_price_cache")," ($/1M)"]}),h.jsx(lt,{type:"number",value:f,onChange:R=>p(R.target.value),placeholder:"0.00",step:"0.0001"})]}),h.jsx(he,{variant:"primary",onClick:L,disabled:!s,children:i("common.save")})]})}),h.jsxs("div",{className:ae.pricesList,children:[h.jsx("h4",{className:ae.pricesTitle,children:i("usage_stats.saved_prices")}),Object.keys(e).length>0?h.jsx("div",{className:ae.pricesGrid,children:Object.entries(e).map(([R,q])=>h.jsxs("div",{className:ae.priceItem,children:[h.jsxs("div",{className:ae.priceInfo,children:[h.jsx("span",{className:ae.priceModel,children:R}),h.jsxs("div",{className:ae.priceMeta,children:[h.jsxs("span",{children:[i("usage_stats.model_price_prompt"),": $",q.prompt.toFixed(4),"/1M"]}),h.jsxs("span",{children:[i("usage_stats.model_price_completion"),": $",q.completion.toFixed(4),"/1M"]}),h.jsxs("span",{children:[i("usage_stats.model_price_cache"),": $",q.cache.toFixed(4),"/1M"]})]})]}),h.jsxs("div",{className:ae.priceActions,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>O(R),children:i("common.edit")}),h.jsx(he,{variant:"danger",size:"sm",onClick:()=>M(R),children:i("common.delete")})]})]},R))}):h.jsx("div",{className:ae.hint,children:i("usage_stats.model_price_empty")})]})]}),h.jsx(Ss,{open:g!==null,title:g??"",onClose:()=>y(null),footer:h.jsxs("div",{className:ae.priceActions,children:[h.jsx(he,{variant:"secondary",onClick:()=>y(null),children:i("common.cancel")}),h.jsx(he,{variant:"primary",onClick:T,children:i("common.save")})]}),width:420,children:h.jsxs("div",{className:ae.editModalBody,children:[h.jsxs("div",{className:ae.formField,children:[h.jsxs("label",{children:[i("usage_stats.model_price_prompt")," ($/1M)"]}),h.jsx(lt,{type:"number",value:_,onChange:R=>v(R.target.value),placeholder:"0.00",step:"0.0001"})]}),h.jsxs("div",{className:ae.formField,children:[h.jsxs("label",{children:[i("usage_stats.model_price_completion")," ($/1M)"]}),h.jsx(lt,{type:"number",value:x,onChange:R=>k(R.target.value),placeholder:"0.00",step:"0.0001"})]}),h.jsxs("div",{className:ae.formField,children:[h.jsxs("label",{children:[i("usage_stats.model_price_cache")," ($/1M)"]}),h.jsx(lt,{type:"number",value:C,onChange:R=>N(R.target.value),placeholder:"0.00",step:"0.0001"})]})]})})]})}function Vpe({usage:t,loading:e,geminiKeys:n,claudeConfigs:i,codexConfigs:s,vertexConfigs:a,openaiProviders:o}){const{t:r}=nt(),[c,d]=S.useState(new Map);S.useEffect(()=>{let p=!1;return At.list().then(g=>{if(p)return;const y=Array.isArray(g)?g:g?.files;if(!Array.isArray(y))return;const _=new Map;y.forEach(v=>{const x=v.auth_index??v.authIndex,k=rs(x);k&&_.set(k,{name:v.name||k,type:(v.type||v.provider||"").toString()})}),d(_)}).catch(()=>{}),()=>{p=!0}},[]);const f=S.useMemo(()=>{if(!t)return[];const p=Ea(t),g={},y=[],_=new Set,v=new Map,x=new Map,k=new Map,C=new Map;p.forEach(M=>{const O=rs(M.auth_index),T=M.source,P=M.failed===!0;if(!T){if(!O)return;const R=C.get(O)??{success:0,failure:0};P?R.failure+=1:R.success+=1,C.set(O,R);return}const E=g[T]??{success:0,failure:0};if(P?E.failure+=1:E.success+=1,g[T]=E,O&&!x.has(T)&&x.set(T,O),O&&!k.has(T)){const R=c.get(O);R&&k.set(T,R)}});const N=(M,O)=>{const T=y[M];T&&(T.success+=O.success,T.failure+=O.failure,T.total=T.success+T.failure,T.successRate=T.total>0?T.success/T.total*100:100)},L=(M,O,T,P,E)=>{const R=_s({apiKey:M,prefix:O});let q=0,I=0;R.forEach(X=>{const K=g[X];K&&(q+=K.success,I+=K.failure,_.add(X))});const Y=q+I;Y>0&&y.push({key:E,displayName:T,type:P,success:q,failure:I,total:Y,successRate:q/Y*100})};return n.forEach((M,O)=>L(M.apiKey,M.prefix,M.prefix?.trim()||`Gemini #${O+1}`,"gemini",`gemini:${O}`)),i.forEach((M,O)=>L(M.apiKey,M.prefix,M.prefix?.trim()||`Claude #${O+1}`,"claude",`claude:${O}`)),s.forEach((M,O)=>L(M.apiKey,M.prefix,M.prefix?.trim()||`Codex #${O+1}`,"codex",`codex:${O}`)),a.forEach((M,O)=>L(M.apiKey,M.prefix,M.prefix?.trim()||`Vertex #${O+1}`,"vertex",`vertex:${O}`)),o.forEach((M,O)=>{const T=M.prefix,P=T?.trim()||M.name||`OpenAI #${O+1}`,E=new Set;_s({prefix:T}).forEach(Y=>E.add(Y)),(M.apiKeyEntries||[]).forEach(Y=>{_s({apiKey:Y.apiKey}).forEach(X=>E.add(X))});let R=0,q=0;E.forEach(Y=>{const X=g[Y];X&&(R+=X.success,q+=X.failure,_.add(Y))});const I=R+q;I>0&&y.push({key:`openai:${O}`,displayName:P,type:"openai",success:R,failure:q,total:I,successRate:R/I*100})}),Object.entries(g).forEach(([M,O])=>{if(_.has(M))return;const T=O.success+O.failure,P=k.get(M),E={key:M,displayName:P?.name||(M.startsWith("t:")?M.slice(2):M),type:P?.type||"",success:O.success,failure:O.failure,total:T,successRate:T>0?O.success/T*100:100},R=y.push(E)-1,q=x.get(M);q&&!v.has(q)&&v.set(q,R)}),C.forEach((M,O)=>{if(M.success+M.failure===0)return;const T=c.get(O);let P=v.get(O);if(P===void 0&&T){const q=y.findIndex(I=>I.displayName===T.name&&I.type===T.type);q>=0&&(P=q,v.set(O,q))}if(P!==void 0){N(P,M);return}const E=M.success+M.failure,R=y.push({key:`auth:${O}`,displayName:T?.name||O,type:T?.type||"",success:M.success,failure:M.failure,total:E,successRate:M.success/E*100})-1;v.set(O,R)}),y.sort((M,O)=>O.total-M.total)},[t,n,i,s,a,o,c]);return h.jsx(jt,{title:r("usage_stats.credential_stats"),className:ae.detailsFixedCard,children:e?h.jsx("div",{className:ae.hint,children:r("common.loading")}):f.length>0?h.jsx("div",{className:ae.detailsScroll,children:h.jsx("div",{className:ae.tableWrapper,children:h.jsxs("table",{className:ae.table,children:[h.jsx("thead",{children:h.jsxs("tr",{children:[h.jsx("th",{children:r("usage_stats.credential_name")}),h.jsx("th",{children:r("usage_stats.requests_count")}),h.jsx("th",{children:r("usage_stats.success_rate")})]})}),h.jsx("tbody",{children:f.map(p=>h.jsxs("tr",{children:[h.jsxs("td",{className:ae.modelCell,children:[h.jsx("span",{children:p.displayName}),p.type&&h.jsx("span",{className:ae.credentialType,children:p.type})]}),h.jsx("td",{children:h.jsxs("span",{className:ae.requestCountCell,children:[h.jsx("span",{children:_r(p.total)}),h.jsxs("span",{className:ae.requestBreakdown,children:["(",h.jsx("span",{className:ae.statSuccess,children:p.success.toLocaleString()})," ",h.jsx("span",{className:ae.statFailure,children:p.failure.toLocaleString()}),")"]})]})}),h.jsx("td",{children:h.jsxs("span",{className:p.successRate>=95?ae.statSuccess:p.successRate>=80?ae.statNeutral:ae.statFailure,children:[p.successRate.toFixed(1),"%"]})})]},p.key))})]})})}):h.jsx("div",{className:ae.hint,children:r("usage_stats.no_data")})})}const g_={input:{border:"#8b8680",bg:"rgba(139, 134, 128, 0.25)"},output:{border:"#22c55e",bg:"rgba(34, 197, 94, 0.25)"},cached:{border:"#f59e0b",bg:"rgba(245, 158, 11, 0.25)"},reasoning:{border:"#8b5cf6",bg:"rgba(139, 92, 246, 0.25)"}},Hpe=["input","output","cached","reasoning"];function Wpe({usage:t,loading:e,isDark:n,isMobile:i,hourWindowHours:s}){const{t:a}=nt(),[o,r]=S.useState("hour"),{chartData:c,chartOptions:d}=S.useMemo(()=>{const f=o==="hour"?WG(t,s):GG(t),p={input:a("usage_stats.input_tokens"),output:a("usage_stats.output_tokens"),cached:a("usage_stats.cached_tokens"),reasoning:a("usage_stats.reasoning_tokens")},g={labels:f.labels,datasets:Hpe.map(v=>({label:p[v],data:f.dataByCategory[v],borderColor:g_[v].border,backgroundColor:g_[v].bg,pointBackgroundColor:g_[v].border,pointBorderColor:g_[v].border,fill:!0,tension:.35}))},y=G0({period:o,labels:f.labels,isDark:n,isMobile:i}),_={...y,scales:{...y.scales,y:{...y.scales?.y,stacked:!0},x:{...y.scales?.x,stacked:!0}}};return{chartData:g,chartOptions:_}},[t,o,n,i,s,a]);return h.jsx(jt,{title:a("usage_stats.token_breakdown"),extra:h.jsxs("div",{className:ae.periodButtons,children:[h.jsx(he,{variant:o==="hour"?"primary":"secondary",size:"sm",onClick:()=>r("hour"),children:a("usage_stats.by_hour")}),h.jsx(he,{variant:o==="day"?"primary":"secondary",size:"sm",onClick:()=>r("day"),children:a("usage_stats.by_day")})]}),children:e?h.jsx("div",{className:ae.hint,children:a("common.loading")}):c.labels.length>0?h.jsxs("div",{className:ae.chartWrapper,children:[h.jsx("div",{className:ae.chartLegend,"aria-label":"Chart legend",children:c.datasets.map((f,p)=>h.jsxs("div",{className:ae.legendItem,title:f.label,children:[h.jsx("span",{className:ae.legendDot,style:{backgroundColor:f.borderColor}}),h.jsx("span",{className:ae.legendLabel,children:f.label})]},`${f.label}-${p}`))}),h.jsx("div",{className:ae.chartArea,children:h.jsx("div",{className:ae.chartScroller,children:h.jsx("div",{className:ae.chartCanvas,style:o==="hour"?{minWidth:yk(c.labels.length,i)}:void 0,children:h.jsx(Jy,{data:c,options:d})})})})]}):h.jsx("div",{className:ae.hint,children:a("usage_stats.no_data")})})}const N1="#f59e0b",Gpe="rgba(245, 158, 11, 0.15)";function $pe(t){const e=t.chart,n=e.chartArea;if(!n)return Gpe;const i=e.ctx.createLinearGradient(0,n.top,0,n.bottom);return i.addColorStop(0,"rgba(245, 158, 11, 0.28)"),i.addColorStop(.6,"rgba(245, 158, 11, 0.12)"),i.addColorStop(1,"rgba(245, 158, 11, 0.02)"),i}function Xpe({usage:t,loading:e,isDark:n,isMobile:i,modelPrices:s,hourWindowHours:a}){const{t:o}=nt(),[r,c]=S.useState("hour"),d=Object.keys(s).length>0,{chartData:f,chartOptions:p,hasData:g}=S.useMemo(()=>{if(!d||!t)return{chartData:{labels:[],datasets:[]},chartOptions:{},hasData:!1};const y=r==="hour"?$G(t,s,a):XG(t,s),_={labels:y.labels,datasets:[{label:o("usage_stats.total_cost"),data:y.data,borderColor:N1,backgroundColor:$pe,pointBackgroundColor:N1,pointBorderColor:N1,fill:!0,tension:.35}]},v=G0({period:r,labels:y.labels,isDark:n,isMobile:i}),x={...v,scales:{...v.scales,y:{...v.scales?.y,ticks:{...v.scales?.y&&"ticks"in v.scales.y?v.scales.y.ticks:{},callback:k=>By(Number(k))}}}};return{chartData:_,chartOptions:x,hasData:y.hasData}},[t,r,n,i,s,d,a,o]);return h.jsx(jt,{title:o("usage_stats.cost_trend"),extra:h.jsxs("div",{className:ae.periodButtons,children:[h.jsx(he,{variant:r==="hour"?"primary":"secondary",size:"sm",onClick:()=>c("hour"),children:o("usage_stats.by_hour")}),h.jsx(he,{variant:r==="day"?"primary":"secondary",size:"sm",onClick:()=>c("day"),children:o("usage_stats.by_day")})]}),children:e?h.jsx("div",{className:ae.hint,children:o("common.loading")}):d?g?h.jsx("div",{className:ae.chartWrapper,children:h.jsx("div",{className:ae.chartArea,children:h.jsx("div",{className:ae.chartScroller,children:h.jsx("div",{className:ae.chartCanvas,style:r==="hour"?{minWidth:yk(f.labels.length,i)}:void 0,children:h.jsx(Jy,{data:f,options:p})})})})}):h.jsx("div",{className:ae.hint,children:o("usage_stats.cost_no_data")}):h.jsx("div",{className:ae.hint,children:o("usage_stats.cost_need_price")})})}const _E=[{r:239,g:68,b:68},{r:250,g:204,b:21},{r:34,g:197,b:94}],yE=8,bE=180,Qpe=72;function Ype(t){const e=Math.max(0,Math.min(1,t)),n=e<.5?0:1,i=n===0?e*2:(e-.5)*2,s=_E[n],a=_E[n+1],o=Math.round(s.r+(a.r-s.r)*i),r=Math.round(s.g+(a.g-s.g)*i),c=Math.round(s.b+(a.b-s.b)*i);return`rgb(${o}, ${r}, ${c})`}function vE(t){const e=new Date(t),n=(e.getMonth()+1).toString().padStart(2,"0"),i=e.getDate().toString().padStart(2,"0"),s=e.getHours().toString().padStart(2,"0"),a=e.getMinutes().toString().padStart(2,"0");return`${n}/${i} ${s}:${a}`}function Jpe({usage:t,loading:e}){const{t:n}=nt(),[i,s]=S.useState(null),a=S.useRef(null),o=S.useMemo(()=>{const v=t?Ea(t):[];return KG(v)},[t]),r=o.totalSuccess+o.totalFailure>0;S.useEffect(()=>{if(i===null)return;const v=x=>{a.current&&!a.current.contains(x.target)&&s(null)};return document.addEventListener("pointerdown",v),()=>document.removeEventListener("pointerdown",v)},[i]);const c=S.useCallback((v,x)=>{if(!x||!x.isConnected)return null;const k=x.getBoundingClientRect(),C=k.left+k.width/2;let N="center",L=C;C<=bE/2?(N="left",L=k.left):C>=window.innerWidth-bE/2&&(N="right",L=k.right);const M=k.top<=Qpe?"below":"above",O=M==="below"?k.bottom+yE:k.top-yE,T=N==="center"?"-50%":N==="right"?"-100%":"0",P=M==="below"?"0":"-100%";return{idx:v,anchorEl:x,horizontal:N,vertical:M,left:Math.round(L),top:Math.round(O),transform:`translate(${T}, ${P})`}},[]);S.useEffect(()=>{if(!i)return;const v=()=>{if(!document.body.contains(i.anchorEl)){s(null);return}s(c(i.idx,i.anchorEl))};return window.addEventListener("resize",v),window.addEventListener("scroll",v,!0),()=>{window.removeEventListener("resize",v),window.removeEventListener("scroll",v,!0)}},[i,c]);const d=S.useCallback((v,x)=>{s(c(v,x))},[c]),f=S.useCallback((v,x)=>{v.pointerType==="mouse"&&d(x,v.currentTarget)},[d]),p=S.useCallback(v=>{v.pointerType==="mouse"&&s(null)},[]),g=S.useCallback((v,x)=>{if(v.pointerType==="touch"){v.preventDefault();const k=v.currentTarget;s(C=>C?.idx===x?null:c(x,k))}},[c]),y=(v,x)=>{const k=v.success+v.failure,C=x.horizontal==="left"?ae.healthTooltipLeft:x.horizontal==="right"?ae.healthTooltipRight:"",N=x.vertical==="below"?ae.healthTooltipBelow:"",L=`${vE(v.startTime)} ${vE(v.endTime)}`,M=h.jsxs("div",{className:`${ae.healthTooltip} ${C} ${N}`,style:{position:"fixed",left:`${x.left}px`,top:`${x.top}px`,bottom:"auto",right:"auto",transform:x.transform},children:[h.jsx("span",{className:ae.healthTooltipTime,children:L}),k>0?h.jsxs("span",{className:ae.healthTooltipStats,children:[h.jsxs("span",{className:ae.healthTooltipSuccess,children:[n("status_bar.success_short")," ",v.success]}),h.jsxs("span",{className:ae.healthTooltipFailure,children:[n("status_bar.failure_short")," ",v.failure]}),h.jsxs("span",{className:ae.healthTooltipRate,children:["(",(v.rate*100).toFixed(1),"%)"]})]}):h.jsx("span",{className:ae.healthTooltipStats,children:n("status_bar.no_requests")})]});return typeof document>"u"?M:Po.createPortal(M,document.body)},_=r?o.successRate>=90?ae.healthRateHigh:o.successRate>=50?ae.healthRateMedium:ae.healthRateLow:"";return h.jsxs("div",{className:ae.healthCard,children:[h.jsxs("div",{className:ae.healthHeader,children:[h.jsx("h3",{className:ae.healthTitle,children:n("service_health.title")}),h.jsxs("div",{className:ae.healthMeta,children:[h.jsx("span",{className:ae.healthWindow,children:n("service_health.window")}),h.jsx("span",{className:`${ae.healthRate} ${_}`,children:e?"--":r?`${o.successRate.toFixed(1)}%`:"--"})]})]}),h.jsx("div",{className:ae.healthGridScroller,children:h.jsx("div",{className:ae.healthGrid,ref:a,children:o.blockDetails.map((v,x)=>{const k=v.rate===-1,C=k?void 0:{backgroundColor:Ype(v.rate)},N=i?.idx===x;return h.jsxs("div",{className:`${ae.healthBlockWrapper} ${N?ae.healthBlockActive:""}`,onPointerEnter:L=>f(L,x),onPointerLeave:p,onPointerDown:L=>g(L,x),children:[h.jsx("div",{className:`${ae.healthBlock} ${k?ae.healthBlockIdle:""}`,style:C}),N&&i&&y(v,i)]},x)})})}),h.jsxs("div",{className:ae.healthLegend,children:[h.jsx("span",{className:ae.healthLegendLabel,children:n("service_health.oldest")}),h.jsxs("div",{className:ae.healthLegendColors,children:[h.jsx("div",{className:`${ae.healthLegendBlock} ${ae.healthBlockIdle}`}),h.jsx("div",{className:ae.healthLegendBlock,style:{backgroundColor:"#ef4444"}}),h.jsx("div",{className:ae.healthLegendBlock,style:{backgroundColor:"#facc15"}}),h.jsx("div",{className:ae.healthLegendBlock,style:{backgroundColor:"#22c55e"}})]}),h.jsx("span",{className:ae.healthLegendLabel,children:n("service_health.newest")})]})]})}function bD(t){const e=new Map,n=(a,o,r)=>{!a||!o||e.has(a)||e.set(a,{displayName:o,type:r})},i=(a,o,r)=>{r.forEach(c=>n(c,a,o))};return[{items:t.geminiApiKeys||[],type:"gemini",label:"Gemini"},{items:t.claudeApiKeys||[],type:"claude",label:"Claude"},{items:t.codexApiKeys||[],type:"codex",label:"Codex"},{items:t.vertexApiKeys||[],type:"vertex",label:"Vertex"}].forEach(({items:a,type:o,label:r})=>{a.forEach((c,d)=>{const f=c.prefix?.trim()||`${r} #${d+1}`;i(f,o,_s({apiKey:c.apiKey,prefix:c.prefix}))})}),(t.openaiCompatibility||[]).forEach((a,o)=>{const r=a.prefix?.trim()||a.name||`OpenAI #${o+1}`,c=new Set;_s({prefix:a.prefix}).forEach(d=>c.add(d)),(a.apiKeyEntries||[]).forEach(d=>{_s({apiKey:d.apiKey}).forEach(f=>c.add(f))}),i(r,"openai",Array.from(c))}),e}function vD(t,e,n,i){const s=t.trim(),a=n.get(s);if(a)return a;const o=rs(e);if(o){const r=i.get(o);if(r)return{displayName:r.name||o,type:r.type}}return{displayName:s.startsWith("t:")?s.slice(2):s||"-",type:""}}const Li="__all__",T1=500,Uu=t=>{const e=Number(t);return Number.isFinite(e)?e:0},Zpe=t=>{const e=String(t??""),n=e.replace(/^\s+/,"");return`"${(n&&/^[=+\-@]/.test(n)?`'${e}`:e).replace(/"/g,'""')}"`};function ege({usage:t,loading:e,geminiKeys:n,claudeConfigs:i,codexConfigs:s,vertexConfigs:a,openaiProviders:o}){const{t:r,i18n:c}=nt(),[d,f]=S.useState(Li),[p,g]=S.useState(Li),[y,_]=S.useState(Li),[v,x]=S.useState(new Map);S.useEffect(()=>{let z=!1;return At.list().then(Q=>{if(z)return;const W=Array.isArray(Q)?Q:Q?.files;if(!Array.isArray(W))return;const D=new Map;W.forEach(U=>{const $=rs(U.auth_index??U.authIndex);$&&D.set($,{name:U.name||$,type:(U.type||U.provider||"").toString()})}),x(D)}).catch(()=>{}),()=>{z=!0}},[]);const k=S.useMemo(()=>bD({geminiApiKeys:n,claudeApiKeys:i,codexApiKeys:s,vertexApiKeys:a,openaiCompatibility:o}),[i,s,n,o,a]),C=S.useMemo(()=>Ea(t).map((Q,W)=>{const D=Q.timestamp,U=typeof Q.__timestampMs=="number"&&Q.__timestampMs>0?Q.__timestampMs:Date.parse(D),$=Number.isNaN(U)?null:new Date(U),te=String(Q.source??"").trim(),ie=Q.auth_index,F=ie==null||ie===""?"-":String(ie),ee=vD(te,ie,k,v),J=ee.displayName,re=ee.type,fe=String(Q.__modelName??"").trim()||"-",me=Math.max(Uu(Q.tokens?.input_tokens),0),de=Math.max(Uu(Q.tokens?.output_tokens),0),ne=Math.max(Uu(Q.tokens?.reasoning_tokens),0),Be=Math.max(Math.max(Uu(Q.tokens?.cached_tokens),0),Math.max(Uu(Q.tokens?.cache_tokens),0)),Ke=Math.max(Uu(Q.tokens?.total_tokens),Kd(Q));return{id:`${D}-${fe}-${te||J}-${F}-${W}`,timestamp:D,timestampMs:Number.isNaN(U)?0:U,timestampLabel:$?$.toLocaleString(c.language):D||"-",model:fe,sourceRaw:te||"-",source:J,sourceType:re,authIndex:F,failed:Q.failed===!0,inputTokens:me,outputTokens:de,reasoningTokens:ne,cachedTokens:Be,totalTokens:Ke}}).sort((Q,W)=>W.timestampMs-Q.timestampMs),[v,c.language,k,t]),N=S.useMemo(()=>[{value:Li,label:r("usage_stats.filter_all")},...Array.from(new Set(C.map(z=>z.model))).map(z=>({value:z,label:z}))],[C,r]),L=S.useMemo(()=>[{value:Li,label:r("usage_stats.filter_all")},...Array.from(new Set(C.map(z=>z.source))).map(z=>({value:z,label:z}))],[C,r]),M=S.useMemo(()=>[{value:Li,label:r("usage_stats.filter_all")},...Array.from(new Set(C.map(z=>z.authIndex))).map(z=>({value:z,label:z}))],[C,r]),O=S.useMemo(()=>new Set(N.map(z=>z.value)),[N]),T=S.useMemo(()=>new Set(L.map(z=>z.value)),[L]),P=S.useMemo(()=>new Set(M.map(z=>z.value)),[M]),E=O.has(d)?d:Li,R=T.has(p)?p:Li,q=P.has(y)?y:Li,I=S.useMemo(()=>C.filter(z=>{const Q=E===Li||z.model===E,W=R===Li||z.source===R,D=q===Li||z.authIndex===q;return Q&&W&&D}),[q,E,R,C]),Y=S.useMemo(()=>I.slice(0,T1),[I]),X=E!==Li||R!==Li||q!==Li,K=()=>{f(Li),g(Li),_(Li)},B=()=>{if(!I.length)return;const z=["timestamp","model","source","source_raw","auth_index","result","input_tokens","output_tokens","reasoning_tokens","cached_tokens","total_tokens"],Q=I.map(U=>[U.timestamp,U.model,U.source,U.sourceRaw,U.authIndex,U.failed?"failed":"success",U.inputTokens,U.outputTokens,U.reasoningTokens,U.cachedTokens,U.totalTokens].map($=>Zpe($)).join(",")),W=[z.join(","),...Q].join(`
`),D=new Date().toISOString().replace(/[:.]/g,"-");wl({filename:`usage-events-${D}.csv`,blob:new Blob([W],{type:"text/csv;charset=utf-8"})})},H=()=>{if(!I.length)return;const z=I.map(D=>({timestamp:D.timestamp,model:D.model,source:D.source,source_raw:D.sourceRaw,auth_index:D.authIndex,failed:D.failed,tokens:{input_tokens:D.inputTokens,output_tokens:D.outputTokens,reasoning_tokens:D.reasoningTokens,cached_tokens:D.cachedTokens,total_tokens:D.totalTokens}})),Q=JSON.stringify(z,null,2),W=new Date().toISOString().replace(/[:.]/g,"-");wl({filename:`usage-events-${W}.json`,blob:new Blob([Q],{type:"application/json;charset=utf-8"})})};return h.jsxs(jt,{title:r("usage_stats.request_events_title"),extra:h.jsxs("div",{className:ae.requestEventsActions,children:[h.jsx(he,{variant:"ghost",size:"sm",onClick:K,disabled:!X,children:r("usage_stats.clear_filters")}),h.jsx(he,{variant:"secondary",size:"sm",onClick:B,disabled:I.length===0,children:r("usage_stats.export_csv")}),h.jsx(he,{variant:"secondary",size:"sm",onClick:H,disabled:I.length===0,children:r("usage_stats.export_json")})]}),children:[h.jsxs("div",{className:ae.requestEventsToolbar,children:[h.jsxs("div",{className:ae.requestEventsFilterItem,children:[h.jsx("span",{className:ae.requestEventsFilterLabel,children:r("usage_stats.request_events_filter_model")}),h.jsx(Hi,{value:E,options:N,onChange:f,className:ae.requestEventsSelect,ariaLabel:r("usage_stats.request_events_filter_model"),fullWidth:!1})]}),h.jsxs("div",{className:ae.requestEventsFilterItem,children:[h.jsx("span",{className:ae.requestEventsFilterLabel,children:r("usage_stats.request_events_filter_source")}),h.jsx(Hi,{value:R,options:L,onChange:g,className:ae.requestEventsSelect,ariaLabel:r("usage_stats.request_events_filter_source"),fullWidth:!1})]}),h.jsxs("div",{className:ae.requestEventsFilterItem,children:[h.jsx("span",{className:ae.requestEventsFilterLabel,children:r("usage_stats.request_events_filter_auth_index")}),h.jsx(Hi,{value:q,options:M,onChange:_,className:ae.requestEventsSelect,ariaLabel:r("usage_stats.request_events_filter_auth_index"),fullWidth:!1})]})]}),e&&C.length===0?h.jsx("div",{className:ae.hint,children:r("common.loading")}):C.length===0?h.jsx(os,{title:r("usage_stats.request_events_empty_title"),description:r("usage_stats.request_events_empty_desc")}):I.length===0?h.jsx(os,{title:r("usage_stats.request_events_no_result_title"),description:r("usage_stats.request_events_no_result_desc")}):h.jsxs(h.Fragment,{children:[h.jsxs("div",{className:ae.requestEventsMeta,children:[h.jsx("span",{children:r("usage_stats.request_events_count",{count:I.length})}),I.length>T1&&h.jsx("span",{className:ae.requestEventsLimitHint,children:r("usage_stats.request_events_limit_hint",{shown:T1,total:I.length})})]}),h.jsx("div",{className:ae.requestEventsTableWrapper,children:h.jsxs("table",{className:ae.table,children:[h.jsx("thead",{children:h.jsxs("tr",{children:[h.jsx("th",{children:r("usage_stats.request_events_timestamp")}),h.jsx("th",{children:r("usage_stats.model_name")}),h.jsx("th",{children:r("usage_stats.request_events_source")}),h.jsx("th",{children:r("usage_stats.request_events_auth_index")}),h.jsx("th",{children:r("usage_stats.request_events_result")}),h.jsx("th",{children:r("usage_stats.input_tokens")}),h.jsx("th",{children:r("usage_stats.output_tokens")}),h.jsx("th",{children:r("usage_stats.reasoning_tokens")}),h.jsx("th",{children:r("usage_stats.cached_tokens")}),h.jsx("th",{children:r("usage_stats.total_tokens")})]})}),h.jsx("tbody",{children:Y.map(z=>h.jsxs("tr",{children:[h.jsx("td",{title:z.timestamp,className:ae.requestEventsTimestamp,children:z.timestampLabel}),h.jsx("td",{className:ae.modelCell,children:z.model}),h.jsxs("td",{className:ae.requestEventsSourceCell,title:z.source,children:[h.jsx("span",{children:z.source}),z.sourceType&&h.jsx("span",{className:ae.credentialType,children:z.sourceType})]}),h.jsx("td",{className:ae.requestEventsAuthIndex,title:z.authIndex,children:z.authIndex}),h.jsx("td",{children:h.jsx("span",{className:z.failed?ae.requestEventsResultFailed:ae.requestEventsResultSuccess,children:z.failed?r("stats.failure"):r("stats.success")})}),h.jsx("td",{children:z.inputTokens.toLocaleString()}),h.jsx("td",{children:z.outputTokens.toLocaleString()}),h.jsx("td",{children:z.reasoningTokens.toLocaleString()}),h.jsx("td",{children:z.cachedTokens.toLocaleString()}),h.jsx("td",{children:z.totalTokens.toLocaleString()})]},z.id))})]})})]})]})}Xy.register(lS,cS,c0,bl,$he,nfe,Whe,Uhe);const xD="cli-proxy-usage-chart-lines-v1",SD="cli-proxy-usage-time-range-v1",Zf=["all"],M1="24h",wD=9,tge=[{value:"all",labelKey:"usage_stats.range_all"},{value:"7h",labelKey:"usage_stats.range_7h"},{value:"24h",labelKey:"usage_stats.range_24h"},{value:"7d",labelKey:"usage_stats.range_7d"}],nge={"7h":7,"24h":24,"7d":168},ige=t=>t==="7h"||t==="24h"||t==="7d"||t==="all",kD=(t,e=wD)=>{if(!Array.isArray(t))return Zf;const n=t.filter(i=>typeof i=="string").map(i=>i.trim()).filter(Boolean).slice(0,e);return n.length?n:Zf},sge=()=>{try{if(typeof localStorage>"u")return Zf;const t=localStorage.getItem(xD);return t?kD(JSON.parse(t)):Zf}catch{return Zf}},age=()=>{try{if(typeof localStorage>"u")return M1;const t=localStorage.getItem(SD);return ige(t)?t:M1}catch{return M1}};function oge(){const{t}=nt(),e=W0("(max-width: 768px)"),i=Aa(J=>J.resolvedTheme)==="dark",s=It(J=>J.config),{usage:a,loading:o,error:r,lastRefreshedAt:c,modelPrices:d,setModelPrices:f,loadUsage:p,handleExport:g,handleImport:y,handleImportChange:_,importInputRef:v,exporting:x,importing:k}=dfe();rp(p);const[C,N]=S.useState(sge),[L,M]=S.useState(age),O=S.useMemo(()=>tge.map(J=>({value:J.value,label:t(J.labelKey)})),[t]),T=S.useMemo(()=>a?TG(a,L):null,[a,L]),P=L==="all"?void 0:nge[L],E=S.useCallback(J=>{N(kD(J))},[]);S.useEffect(()=>{try{if(typeof localStorage>"u")return;localStorage.setItem(xD,JSON.stringify(C))}catch{}},[C]),S.useEffect(()=>{try{if(typeof localStorage>"u")return;localStorage.setItem(SD,L)}catch{}},[L]);const R=c?.getTime()??0,{requestsSparkline:q,tokensSparkline:I,rpmSparkline:Y,tpmSparkline:X,costSparkline:K}=hfe({usage:T,loading:o,nowMs:R}),{requestsPeriod:B,setRequestsPeriod:H,tokensPeriod:z,setTokensPeriod:Q,requestsChartData:W,tokensChartData:D,requestsChartOptions:U,tokensChartOptions:$}=mfe({usage:T,chartLines:C,isDark:i,isMobile:e,hourWindowHours:P}),te=S.useMemo(()=>EG(a),[a]),ie=S.useMemo(()=>DG(T,d),[T,d]),F=S.useMemo(()=>FG(T,d),[T,d]),ee=Object.keys(d).length>0;return h.jsxs("div",{className:ae.container,children:[o&&!a&&h.jsx("div",{className:ae.loadingOverlay,"aria-busy":"true",children:h.jsxs("div",{className:ae.loadingOverlayContent,children:[h.jsx(Fc,{size:28,className:ae.loadingOverlaySpinner}),h.jsx("span",{className:ae.loadingOverlayText,children:t("common.loading")})]})}),h.jsxs("div",{className:ae.header,children:[h.jsx("h1",{className:ae.pageTitle,children:t("usage_stats.title")}),h.jsxs("div",{className:ae.headerActions,children:[h.jsxs("div",{className:ae.timeRangeGroup,children:[h.jsx("span",{className:ae.timeRangeLabel,children:t("usage_stats.range_filter")}),h.jsx(Hi,{value:L,options:O,onChange:J=>M(J),className:ae.timeRangeSelectControl,ariaLabel:t("usage_stats.range_filter"),fullWidth:!1})]}),h.jsx(he,{variant:"secondary",size:"sm",onClick:g,loading:x,disabled:o||k,children:t("usage_stats.export")}),h.jsx(he,{variant:"secondary",size:"sm",onClick:y,loading:k,disabled:o||x,children:t("usage_stats.import")}),h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>void p().catch(()=>{}),disabled:o||x||k,children:t(o?"common.loading":"usage_stats.refresh")}),h.jsx("input",{ref:v,type:"file",accept:".json,application/json",style:{display:"none"},onChange:_}),c&&h.jsxs("span",{className:ae.lastRefreshed,children:[t("usage_stats.last_updated"),": ",c.toLocaleTimeString()]})]})]}),r&&h.jsx("div",{className:ae.errorBox,children:r}),h.jsx(Bpe,{usage:T,loading:o,modelPrices:d,nowMs:R,sparklines:{requests:q,tokens:I,rpm:Y,tpm:X,cost:K}}),h.jsx(Upe,{chartLines:C,modelNames:te,maxLines:wD,onChange:E}),h.jsx(Jpe,{usage:a,loading:o}),h.jsxs("div",{className:ae.chartsGrid,children:[h.jsx(gE,{title:t("usage_stats.requests_trend"),period:B,onPeriodChange:H,chartData:W,chartOptions:U,loading:o,isMobile:e,emptyText:t("usage_stats.no_data")}),h.jsx(gE,{title:t("usage_stats.tokens_trend"),period:z,onPeriodChange:Q,chartData:D,chartOptions:$,loading:o,isMobile:e,emptyText:t("usage_stats.no_data")})]}),h.jsx(Wpe,{usage:T,loading:o,isDark:i,isMobile:e,hourWindowHours:P}),h.jsx(Xpe,{usage:T,loading:o,isDark:i,isMobile:e,modelPrices:d,hourWindowHours:P}),h.jsxs("div",{className:ae.detailsGrid,children:[h.jsx(qpe,{apiStats:ie,loading:o,hasPrices:ee}),h.jsx(zpe,{modelStats:F,loading:o,hasPrices:ee})]}),h.jsx(ege,{usage:T,loading:o,geminiKeys:s?.geminiApiKeys||[],claudeConfigs:s?.claudeApiKeys||[],codexConfigs:s?.codexApiKeys||[],vertexConfigs:s?.vertexApiKeys||[],openaiProviders:s?.openaiCompatibility||[]}),h.jsx(Vpe,{usage:T,loading:o,geminiKeys:s?.geminiApiKeys||[],claudeConfigs:s?.claudeApiKeys||[],codexConfigs:s?.codexApiKeys||[],vertexConfigs:s?.vertexApiKeys||[],openaiProviders:s?.openaiCompatibility||[]}),h.jsx(Kpe,{modelNames:te,modelPrices:d,onPricesChange:f})]})}function uS(){return uS=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)({}).hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t},uS.apply(null,arguments)}function rge(t,e){if(t==null)return{};var n={};for(var i in t)if({}.hasOwnProperty.call(t,i)){if(e.indexOf(i)!==-1)continue;n[i]=t[i]}return n}let dS=[],CD=[];(()=>{let t="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,n=0;e<t.length;e++)(e%2?CD:dS).push(n=n+t[e])})();function lge(t){if(t<768)return!1;for(let e=0,n=dS.length;;){let i=e+n>>1;if(t<dS[i])n=i;else if(t>=CD[i])e=i+1;else return!0;if(e==n)return!1}}function xE(t){return t>=127462&&t<=127487}const SE=8205;function cge(t,e,n=!0,i=!0){return(n?AD:uge)(t,e,i)}function AD(t,e,n){if(e==t.length)return e;e&&ND(t.charCodeAt(e))&&TD(t.charCodeAt(e-1))&&e--;let i=L1(t,e);for(e+=wE(i);e<t.length;){let s=L1(t,e);if(i==SE||s==SE||n&&lge(s))e+=wE(s),i=s;else if(xE(s)){let a=0,o=e-2;for(;o>=0&&xE(L1(t,o));)a++,o-=2;if(a%2==0)break;e+=2}else break}return e}function uge(t,e,n){for(;e>0;){let i=AD(t,e-2,n);if(i<e)return i;e--}return 0}function L1(t,e){let n=t.charCodeAt(e);if(!TD(n)||e+1==t.length)return n;let i=t.charCodeAt(e+1);return ND(i)?(n-55296<<10)+(i-56320)+65536:n}function ND(t){return t>=56320&&t<57344}function TD(t){return t>=55296&&t<56320}function wE(t){return t<65536?1:2}class an{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,n,i){[e,n]=Md(this,e,n);let s=[];return this.decompose(0,e,s,2),i.length&&i.decompose(0,i.length,s,3),this.decompose(n,this.length,s,1),yo.from(s,this.length-(n-e)+i.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,n=this.length){[e,n]=Md(this,e,n);let i=[];return this.decompose(e,n,i,0),yo.from(i,n-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let n=this.scanIdentical(e,1),i=this.length-this.scanIdentical(e,-1),s=new em(this),a=new em(e);for(let o=n,r=n;;){if(s.next(o),a.next(o),o=0,s.lineBreak!=a.lineBreak||s.done!=a.done||s.value!=a.value)return!1;if(r+=s.value.length,s.done||r>=i)return!0}}iter(e=1){return new em(this,e)}iterRange(e,n=this.length){return new MD(this,e,n)}iterLines(e,n){let i;if(e==null)i=this.iter();else{n==null&&(n=this.lines+1);let s=this.line(e).from;i=this.iterRange(s,Math.max(s,n==this.lines+1?this.length:n<=1?0:this.line(n-1).to))}return new LD(i)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?an.empty:e.length<=32?new si(e):yo.from(si.split(e,[]))}}class si extends an{constructor(e,n=dge(e)){super(),this.text=e,this.length=n}get lines(){return this.text.length}get children(){return null}lineInner(e,n,i,s){for(let a=0;;a++){let o=this.text[a],r=s+o.length;if((n?i:r)>=e)return new hge(s,r,i,o);s=r+1,i++}}decompose(e,n,i,s){let a=e<=0&&n>=this.length?this:new si(kE(this.text,e,n),Math.min(n,this.length)-Math.max(0,e));if(s&1){let o=i.pop(),r=u0(a.text,o.text.slice(),0,a.length);if(r.length<=32)i.push(new si(r,o.length+a.length));else{let c=r.length>>1;i.push(new si(r.slice(0,c)),new si(r.slice(c)))}}else i.push(a)}replace(e,n,i){if(!(i instanceof si))return super.replace(e,n,i);[e,n]=Md(this,e,n);let s=u0(this.text,u0(i.text,kE(this.text,0,e)),n),a=this.length+i.length-(n-e);return s.length<=32?new si(s,a):yo.from(si.split(s,[]),a)}sliceString(e,n=this.length,i=`
`){[e,n]=Md(this,e,n);let s="";for(let a=0,o=0;a<=n&&o<this.text.length;o++){let r=this.text[o],c=a+r.length;a>e&&o&&(s+=i),e<c&&n>a&&(s+=r.slice(Math.max(0,e-a),n-a)),a=c+1}return s}flatten(e){for(let n of this.text)e.push(n)}scanIdentical(){return 0}static split(e,n){let i=[],s=-1;for(let a of e)i.push(a),s+=a.length+1,i.length==32&&(n.push(new si(i,s)),i=[],s=-1);return s>-1&&n.push(new si(i,s)),n}}class yo extends an{constructor(e,n){super(),this.children=e,this.length=n,this.lines=0;for(let i of e)this.lines+=i.lines}lineInner(e,n,i,s){for(let a=0;;a++){let o=this.children[a],r=s+o.length,c=i+o.lines-1;if((n?c:r)>=e)return o.lineInner(e,n,i,s);s=r+1,i=c+1}}decompose(e,n,i,s){for(let a=0,o=0;o<=n&&a<this.children.length;a++){let r=this.children[a],c=o+r.length;if(e<=c&&n>=o){let d=s&((o<=e?1:0)|(c>=n?2:0));o>=e&&c<=n&&!d?i.push(r):r.decompose(e-o,n-o,i,d)}o=c+1}}replace(e,n,i){if([e,n]=Md(this,e,n),i.lines<this.lines)for(let s=0,a=0;s<this.children.length;s++){let o=this.children[s],r=a+o.length;if(e>=a&&n<=r){let c=o.replace(e-a,n-a,i),d=this.lines-o.lines+c.lines;if(c.lines<d>>4&&c.lines>d>>6){let f=this.children.slice();return f[s]=c,new yo(f,this.length-(n-e)+i.length)}return super.replace(a,r,c)}a=r+1}return super.replace(e,n,i)}sliceString(e,n=this.length,i=`
`){[e,n]=Md(this,e,n);let s="";for(let a=0,o=0;a<this.children.length&&o<=n;a++){let r=this.children[a],c=o+r.length;o>e&&a&&(s+=i),e<c&&n>o&&(s+=r.sliceString(e-o,n-o,i)),o=c+1}return s}flatten(e){for(let n of this.children)n.flatten(e)}scanIdentical(e,n){if(!(e instanceof yo))return 0;let i=0,[s,a,o,r]=n>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;s+=n,a+=n){if(s==o||a==r)return i;let c=this.children[s],d=e.children[a];if(c!=d)return i+c.scanIdentical(d,n);i+=c.length+1}}static from(e,n=e.reduce((i,s)=>i+s.length+1,-1)){let i=0;for(let y of e)i+=y.lines;if(i<32){let y=[];for(let _ of e)_.flatten(y);return new si(y,n)}let s=Math.max(32,i>>5),a=s<<1,o=s>>1,r=[],c=0,d=-1,f=[];function p(y){let _;if(y.lines>a&&y instanceof yo)for(let v of y.children)p(v);else y.lines>o&&(c>o||!c)?(g(),r.push(y)):y instanceof si&&c&&(_=f[f.length-1])instanceof si&&y.lines+_.lines<=32?(c+=y.lines,d+=y.length+1,f[f.length-1]=new si(_.text.concat(y.text),_.length+1+y.length)):(c+y.lines>s&&g(),c+=y.lines,d+=y.length+1,f.push(y))}function g(){c!=0&&(r.push(f.length==1?f[0]:yo.from(f,d)),d=-1,c=f.length=0)}for(let y of e)p(y);return g(),r.length==1?r[0]:new yo(r,n)}}an.empty=new si([""],0);function dge(t){let e=-1;for(let n of t)e+=n.length+1;return e}function u0(t,e,n=0,i=1e9){for(let s=0,a=0,o=!0;a<t.length&&s<=i;a++){let r=t[a],c=s+r.length;c>=n&&(c>i&&(r=r.slice(0,i-s)),s<n&&(r=r.slice(n-s)),o?(e[e.length-1]+=r,o=!1):e.push(r)),s=c+1}return e}function kE(t,e,n){return u0(t,[""],e,n)}class em{constructor(e,n=1){this.dir=n,this.done=!1,this.lineBreak=!1,this.value="",this.nodes=[e],this.offsets=[n>0?1:(e instanceof si?e.text.length:e.children.length)<<1]}nextInner(e,n){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,s=this.nodes[i],a=this.offsets[i],o=a>>1,r=s instanceof si?s.text.length:s.children.length;if(o==(n>0?r:0)){if(i==0)return this.done=!0,this.value="",this;n>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((a&1)==(n>0?0:1)){if(this.offsets[i]+=n,e==0)return this.lineBreak=!0,this.value=`
`,this;e--}else if(s instanceof si){let c=s.text[o+(n<0?-1:0)];if(this.offsets[i]+=n,c.length>Math.max(0,e))return this.value=e==0?c:n>0?c.slice(e):c.slice(0,c.length-e),this;e-=c.length}else{let c=s.children[o+(n<0?-1:0)];e>c.length?(e-=c.length,this.offsets[i]+=n):(n<0&&this.offsets[i]--,this.nodes.push(c),this.offsets.push(n>0?1:(c instanceof si?c.text.length:c.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class MD{constructor(e,n,i){this.value="",this.done=!1,this.cursor=new em(e,n>i?-1:1),this.pos=n>i?e.length:0,this.from=Math.min(n,i),this.to=Math.max(n,i)}nextInner(e,n){if(n<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,n<0?this.pos-this.to:this.from-this.pos);let i=n<0?this.pos-this.from:this.to-this.pos;e>i&&(e=i),i-=e;let{value:s}=this.cursor.next(e);return this.pos+=(s.length+e)*n,this.value=s.length<=i?s:n<0?s.slice(s.length-i):s.slice(0,i),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class LD{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:n,lineBreak:i,value:s}=this.inner.next(e);return n&&this.afterBreak?(this.value="",this.afterBreak=!1):n?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol<"u"&&(an.prototype[Symbol.iterator]=function(){return this.iter()},em.prototype[Symbol.iterator]=MD.prototype[Symbol.iterator]=LD.prototype[Symbol.iterator]=function(){return this});class hge{constructor(e,n,i,s){this.from=e,this.to=n,this.number=i,this.text=s}get length(){return this.to-this.from}}function Md(t,e,n){return e=Math.max(0,Math.min(t.length,e)),[e,Math.max(e,Math.min(t.length,n))]}function Wi(t,e,n=!0,i=!0){return cge(t,e,n,i)}function fge(t){return t>=56320&&t<57344}function mge(t){return t>=55296&&t<56320}function Es(t,e){let n=t.charCodeAt(e);if(!mge(n)||e+1==t.length)return n;let i=t.charCodeAt(e+1);return fge(i)?(n-55296<<10)+(i-56320)+65536:n}function bk(t){return t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode((t>>10)+55296,(t&1023)+56320))}function bo(t){return t<65536?1:2}const hS=/\r\n?|\n/;var ps=(function(t){return t[t.Simple=0]="Simple",t[t.TrackDel=1]="TrackDel",t[t.TrackBefore=2]="TrackBefore",t[t.TrackAfter=3]="TrackAfter",t})(ps||(ps={}));class Ao{constructor(e){this.sections=e}get length(){let e=0;for(let n=0;n<this.sections.length;n+=2)e+=this.sections[n];return e}get newLength(){let e=0;for(let n=0;n<this.sections.length;n+=2){let i=this.sections[n+1];e+=i<0?this.sections[n]:i}return e}get empty(){return this.sections.length==0||this.sections.length==2&&this.sections[1]<0}iterGaps(e){for(let n=0,i=0,s=0;n<this.sections.length;){let a=this.sections[n++],o=this.sections[n++];o<0?(e(i,s,a),s+=a):s+=o,i+=a}}iterChangedRanges(e,n=!1){fS(this,e,n)}get invertedDesc(){let e=[];for(let n=0;n<this.sections.length;){let i=this.sections[n++],s=this.sections[n++];s<0?e.push(i,s):e.push(s,i)}return new Ao(e)}composeDesc(e){return this.empty?e:e.empty?this:OD(this,e)}mapDesc(e,n=!1){return e.empty?this:mS(this,e,n)}mapPos(e,n=-1,i=ps.Simple){let s=0,a=0;for(let o=0;o<this.sections.length;){let r=this.sections[o++],c=this.sections[o++],d=s+r;if(c<0){if(d>e)return a+(e-s);a+=r}else{if(i!=ps.Simple&&d>=e&&(i==ps.TrackDel&&s<e&&d>e||i==ps.TrackBefore&&s<e||i==ps.TrackAfter&&d>e))return null;if(d>e||d==e&&n<0&&!r)return e==s||n<0?a:a+c;a+=c}s=d}if(e>s)throw new RangeError(`Position ${e} is out of range for changeset of length ${s}`);return a}touchesRange(e,n=e){for(let i=0,s=0;i<this.sections.length&&s<=n;){let a=this.sections[i++],o=this.sections[i++],r=s+a;if(o>=0&&s<=n&&r>=e)return s<e&&r>n?"cover":!0;s=r}return!1}toString(){let e="";for(let n=0;n<this.sections.length;){let i=this.sections[n++],s=this.sections[n++];e+=(e?" ":"")+i+(s>=0?":"+s:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(n=>typeof n!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new Ao(e)}static create(e){return new Ao(e)}}class ki extends Ao{constructor(e,n){super(e),this.inserted=n}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return fS(this,(n,i,s,a,o)=>e=e.replace(s,s+(i-n),o),!1),e}mapDesc(e,n=!1){return mS(this,e,n,!0)}invert(e){let n=this.sections.slice(),i=[];for(let s=0,a=0;s<n.length;s+=2){let o=n[s],r=n[s+1];if(r>=0){n[s]=r,n[s+1]=o;let c=s>>1;for(;i.length<c;)i.push(an.empty);i.push(o?e.slice(a,a+o):an.empty)}a+=o}return new ki(n,i)}compose(e){return this.empty?e:e.empty?this:OD(this,e,!0)}map(e,n=!1){return e.empty?this:mS(this,e,n,!0)}iterChanges(e,n=!1){fS(this,e,n)}get desc(){return Ao.create(this.sections)}filter(e){let n=[],i=[],s=[],a=new Sm(this);e:for(let o=0,r=0;;){let c=o==e.length?1e9:e[o++];for(;r<c||r==c&&a.len==0;){if(a.done)break e;let f=Math.min(a.len,c-r);es(s,f,-1);let p=a.ins==-1?-1:a.off==0?a.ins:0;es(n,f,p),p>0&&vl(i,n,a.text),a.forward(f),r+=f}let d=e[o++];for(;r<d;){if(a.done)break e;let f=Math.min(a.len,d-r);es(n,f,-1),es(s,f,a.ins==-1?-1:a.off==0?a.ins:0),a.forward(f),r+=f}}return{changes:new ki(n,i),filtered:Ao.create(s)}}toJSON(){let e=[];for(let n=0;n<this.sections.length;n+=2){let i=this.sections[n],s=this.sections[n+1];s<0?e.push(i):s==0?e.push([i]):e.push([i].concat(this.inserted[n>>1].toJSON()))}return e}static of(e,n,i){let s=[],a=[],o=0,r=null;function c(f=!1){if(!f&&!s.length)return;o<n&&es(s,n-o,-1);let p=new ki(s,a);r=r?r.compose(p.map(r)):p,s=[],a=[],o=0}function d(f){if(Array.isArray(f))for(let p of f)d(p);else if(f instanceof ki){if(f.length!=n)throw new RangeError(`Mismatched change set length (got ${f.length}, expected ${n})`);c(),r=r?r.compose(f.map(r)):f}else{let{from:p,to:g=p,insert:y}=f;if(p>g||p<0||g>n)throw new RangeError(`Invalid change range ${p} to ${g} (in doc of length ${n})`);let _=y?typeof y=="string"?an.of(y.split(i||hS)):y:an.empty,v=_.length;if(p==g&&v==0)return;p<o&&c(),p>o&&es(s,p-o,-1),es(s,g-p,v),vl(a,s,_),o=g}}return d(e),c(!r),r}static empty(e){return new ki(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let n=[],i=[];for(let s=0;s<e.length;s++){let a=e[s];if(typeof a=="number")n.push(a,-1);else{if(!Array.isArray(a)||typeof a[0]!="number"||a.some((o,r)=>r&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(a.length==1)n.push(a[0],0);else{for(;i.length<s;)i.push(an.empty);i[s]=an.of(a.slice(1)),n.push(a[0],i[s].length)}}}return new ki(n,i)}static createSet(e,n){return new ki(e,n)}}function es(t,e,n,i=!1){if(e==0&&n<=0)return;let s=t.length-2;s>=0&&n<=0&&n==t[s+1]?t[s]+=e:s>=0&&e==0&&t[s]==0?t[s+1]+=n:i?(t[s]+=e,t[s+1]+=n):t.push(e,n)}function vl(t,e,n){if(n.length==0)return;let i=e.length-2>>1;if(i<t.length)t[t.length-1]=t[t.length-1].append(n);else{for(;t.length<i;)t.push(an.empty);t.push(n)}}function fS(t,e,n){let i=t.inserted;for(let s=0,a=0,o=0;o<t.sections.length;){let r=t.sections[o++],c=t.sections[o++];if(c<0)s+=r,a+=r;else{let d=s,f=a,p=an.empty;for(;d+=r,f+=c,c&&i&&(p=p.append(i[o-2>>1])),!(n||o==t.sections.length||t.sections[o+1]<0);)r=t.sections[o++],c=t.sections[o++];e(s,d,a,f,p),s=d,a=f}}}function mS(t,e,n,i=!1){let s=[],a=i?[]:null,o=new Sm(t),r=new Sm(e);for(let c=-1;;){if(o.done&&r.len||r.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&r.ins==-1){let d=Math.min(o.len,r.len);es(s,d,-1),o.forward(d),r.forward(d)}else if(r.ins>=0&&(o.ins<0||c==o.i||o.off==0&&(r.len<o.len||r.len==o.len&&!n))){let d=r.len;for(es(s,r.ins,-1);d;){let f=Math.min(o.len,d);o.ins>=0&&c<o.i&&o.len<=f&&(es(s,0,o.ins),a&&vl(a,s,o.text),c=o.i),o.forward(f),d-=f}r.next()}else if(o.ins>=0){let d=0,f=o.len;for(;f;)if(r.ins==-1){let p=Math.min(f,r.len);d+=p,f-=p,r.forward(p)}else if(r.ins==0&&r.len<f)f-=r.len,r.next();else break;es(s,d,c<o.i?o.ins:0),a&&c<o.i&&vl(a,s,o.text),c=o.i,o.forward(o.len-f)}else{if(o.done&&r.done)return a?ki.createSet(s,a):Ao.create(s);throw new Error("Mismatched change set lengths")}}}function OD(t,e,n=!1){let i=[],s=n?[]:null,a=new Sm(t),o=new Sm(e);for(let r=!1;;){if(a.done&&o.done)return s?ki.createSet(i,s):Ao.create(i);if(a.ins==0)es(i,a.len,0,r),a.next();else if(o.len==0&&!o.done)es(i,0,o.ins,r),s&&vl(s,i,o.text),o.next();else{if(a.done||o.done)throw new Error("Mismatched change set lengths");{let c=Math.min(a.len2,o.len),d=i.length;if(a.ins==-1){let f=o.ins==-1?-1:o.off?0:o.ins;es(i,c,f,r),s&&f&&vl(s,i,o.text)}else o.ins==-1?(es(i,a.off?0:a.len,c,r),s&&vl(s,i,a.textBit(c))):(es(i,a.off?0:a.len,o.off?0:o.ins,r),s&&!o.off&&vl(s,i,o.text));r=(a.ins>c||o.ins>=0&&o.len>c)&&(r||i.length>d),a.forward2(c),o.forward(c)}}}}class Sm{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i<e.length?(this.len=e[this.i++],this.ins=e[this.i++]):(this.len=0,this.ins=-2),this.off=0}get done(){return this.ins==-2}get len2(){return this.ins<0?this.len:this.ins}get text(){let{inserted:e}=this.set,n=this.i-2>>1;return n>=e.length?an.empty:e[n]}textBit(e){let{inserted:n}=this.set,i=this.i-2>>1;return i>=n.length&&!e?an.empty:n[i].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class kc{constructor(e,n,i){this.from=e,this.to=n,this.flags=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(e,n=-1){let i,s;return this.empty?i=s=e.mapPos(this.from,n):(i=e.mapPos(this.from,1),s=e.mapPos(this.to,-1)),i==this.from&&s==this.to?this:new kc(i,s,this.flags)}extend(e,n=e){if(e<=this.anchor&&n>=this.anchor)return je.range(e,n);let i=Math.abs(e-this.anchor)>Math.abs(n-this.anchor)?e:n;return je.range(this.anchor,i)}eq(e,n=!1){return this.anchor==e.anchor&&this.head==e.head&&(!n||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return je.range(e.anchor,e.head)}static create(e,n,i){return new kc(e,n,i)}}class je{constructor(e,n){this.ranges=e,this.mainIndex=n}map(e,n=-1){return e.empty?this:je.create(this.ranges.map(i=>i.map(e,n)),this.mainIndex)}eq(e,n=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let i=0;i<this.ranges.length;i++)if(!this.ranges[i].eq(e.ranges[i],n))return!1;return!0}get main(){return this.ranges[this.mainIndex]}asSingle(){return this.ranges.length==1?this:new je([this.main],0)}addRange(e,n=!0){return je.create([e].concat(this.ranges),n?0:this.mainIndex+1)}replaceRange(e,n=this.mainIndex){let i=this.ranges.slice();return i[n]=e,je.create(i,this.mainIndex)}toJSON(){return{ranges:this.ranges.map(e=>e.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new je(e.ranges.map(n=>kc.fromJSON(n)),e.main)}static single(e,n=e){return new je([je.range(e,n)],0)}static create(e,n=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,s=0;s<e.length;s++){let a=e[s];if(a.empty?a.from<=i:a.from<i)return je.normalized(e.slice(),n);i=a.to}return new je(e,n)}static cursor(e,n=0,i,s){return kc.create(e,e,(n==0?0:n<0?8:16)|(i==null?7:Math.min(6,i))|(s??16777215)<<6)}static range(e,n,i,s){let a=(i??16777215)<<6|(s==null?7:Math.min(6,s));return n<e?kc.create(n,e,48|a):kc.create(e,n,(n>e?8:0)|a)}static normalized(e,n=0){let i=e[n];e.sort((s,a)=>s.from-a.from),n=e.indexOf(i);for(let s=1;s<e.length;s++){let a=e[s],o=e[s-1];if(a.empty?a.from<=o.to:a.from<o.to){let r=o.from,c=Math.max(a.to,o.to);s<=n&&n--,e.splice(--s,2,a.anchor>a.head?je.range(c,r):je.range(r,c))}}return new je(e,n)}}function PD(t,e){for(let n of t.ranges)if(n.to>e)throw new RangeError("Selection points outside of document")}let vk=0;class tt{constructor(e,n,i,s,a){this.combine=e,this.compareInput=n,this.compare=i,this.isStatic=s,this.id=vk++,this.default=e([]),this.extensions=typeof a=="function"?a(this):a}get reader(){return this}static define(e={}){return new tt(e.combine||(n=>n),e.compareInput||((n,i)=>n===i),e.compare||(e.combine?(n,i)=>n===i:xk),!!e.static,e.enables)}of(e){return new d0([],this,0,e)}compute(e,n){if(this.isStatic)throw new Error("Can't compute a static facet");return new d0(e,this,1,n)}computeN(e,n){if(this.isStatic)throw new Error("Can't compute a static facet");return new d0(e,this,2,n)}from(e,n){return n||(n=i=>i),this.compute([e],i=>n(i.field(e)))}}function xk(t,e){return t==e||t.length==e.length&&t.every((n,i)=>n===e[i])}class d0{constructor(e,n,i,s){this.dependencies=e,this.facet=n,this.type=i,this.value=s,this.id=vk++}dynamicSlot(e){var n;let i=this.value,s=this.facet.compareInput,a=this.id,o=e[a]>>1,r=this.type==2,c=!1,d=!1,f=[];for(let p of this.dependencies)p=="doc"?c=!0:p=="selection"?d=!0:(((n=e[p.id])!==null&&n!==void 0?n:1)&1)==0&&f.push(e[p.id]);return{create(p){return p.values[o]=i(p),1},update(p,g){if(c&&g.docChanged||d&&(g.docChanged||g.selection)||pS(p,f)){let y=i(p);if(r?!CE(y,p.values[o],s):!s(y,p.values[o]))return p.values[o]=y,1}return 0},reconfigure:(p,g)=>{let y,_=g.config.address[a];if(_!=null){let v=X0(g,_);if(this.dependencies.every(x=>x instanceof tt?g.facet(x)===p.facet(x):x instanceof $i?g.field(x,!1)==p.field(x,!1):!0)||(r?CE(y=i(p),v,s):s(y=i(p),v)))return p.values[o]=v,0}else y=i(p);return p.values[o]=y,1}}}}function CE(t,e,n){if(t.length!=e.length)return!1;for(let i=0;i<t.length;i++)if(!n(t[i],e[i]))return!1;return!0}function pS(t,e){let n=!1;for(let i of e)tm(t,i)&1&&(n=!0);return n}function pge(t,e,n){let i=n.map(c=>t[c.id]),s=n.map(c=>c.type),a=i.filter(c=>!(c&1)),o=t[e.id]>>1;function r(c){let d=[];for(let f=0;f<i.length;f++){let p=X0(c,i[f]);if(s[f]==2)for(let g of p)d.push(g);else d.push(p)}return e.combine(d)}return{create(c){for(let d of i)tm(c,d);return c.values[o]=r(c),1},update(c,d){if(!pS(c,a))return 0;let f=r(c);return e.compare(f,c.values[o])?0:(c.values[o]=f,1)},reconfigure(c,d){let f=pS(c,i),p=d.config.facets[e.id],g=d.facet(e);if(p&&!f&&xk(n,p))return c.values[o]=g,0;let y=r(c);return e.compare(y,g)?(c.values[o]=g,0):(c.values[o]=y,1)}}}const __=tt.define({static:!0});class $i{constructor(e,n,i,s,a){this.id=e,this.createF=n,this.updateF=i,this.compareF=s,this.spec=a,this.provides=void 0}static define(e){let n=new $i(vk++,e.create,e.update,e.compare||((i,s)=>i===s),e);return e.provide&&(n.provides=e.provide(n)),n}create(e){let n=e.facet(__).find(i=>i.field==this);return(n?.create||this.createF)(e)}slot(e){let n=e[this.id]>>1;return{create:i=>(i.values[n]=this.create(i),1),update:(i,s)=>{let a=i.values[n],o=this.updateF(a,s);return this.compareF(a,o)?0:(i.values[n]=o,1)},reconfigure:(i,s)=>{let a=i.facet(__),o=s.facet(__),r;return(r=a.find(c=>c.field==this))&&r!=o.find(c=>c.field==this)?(i.values[n]=r.create(i),1):s.config.address[this.id]!=null?(i.values[n]=s.field(this),0):(i.values[n]=this.create(i),1)}}}init(e){return[this,__.of({field:this,create:e})]}get extension(){return this}}const gc={lowest:4,low:3,default:2,high:1,highest:0};function pf(t){return e=>new ED(e,t)}const Qc={highest:pf(gc.highest),high:pf(gc.high),default:pf(gc.default),low:pf(gc.low),lowest:pf(gc.lowest)};class ED{constructor(e,n){this.inner=e,this.prec=n}}class Zy{of(e){return new gS(this,e)}reconfigure(e){return Zy.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class gS{constructor(e,n){this.compartment=e,this.inner=n}}class $0{constructor(e,n,i,s,a,o){for(this.base=e,this.compartments=n,this.dynamicSlots=i,this.address=s,this.staticValues=a,this.facets=o,this.statusTemplate=[];this.statusTemplate.length<i.length;)this.statusTemplate.push(0)}staticFacet(e){let n=this.address[e.id];return n==null?e.default:this.staticValues[n>>1]}static resolve(e,n,i){let s=[],a=Object.create(null),o=new Map;for(let g of gge(e,n,o))g instanceof $i?s.push(g):(a[g.facet.id]||(a[g.facet.id]=[])).push(g);let r=Object.create(null),c=[],d=[];for(let g of s)r[g.id]=d.length<<1,d.push(y=>g.slot(y));let f=i?.config.facets;for(let g in a){let y=a[g],_=y[0].facet,v=f&&f[g]||[];if(y.every(x=>x.type==0))if(r[_.id]=c.length<<1|1,xk(v,y))c.push(i.facet(_));else{let x=_.combine(y.map(k=>k.value));c.push(i&&_.compare(x,i.facet(_))?i.facet(_):x)}else{for(let x of y)x.type==0?(r[x.id]=c.length<<1|1,c.push(x.value)):(r[x.id]=d.length<<1,d.push(k=>x.dynamicSlot(k)));r[_.id]=d.length<<1,d.push(x=>pge(x,_,y))}}let p=d.map(g=>g(r));return new $0(e,o,p,r,c,a)}}function gge(t,e,n){let i=[[],[],[],[],[]],s=new Map;function a(o,r){let c=s.get(o);if(c!=null){if(c<=r)return;let d=i[c].indexOf(o);d>-1&&i[c].splice(d,1),o instanceof gS&&n.delete(o.compartment)}if(s.set(o,r),Array.isArray(o))for(let d of o)a(d,r);else if(o instanceof gS){if(n.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let d=e.get(o.compartment)||o.inner;n.set(o.compartment,d),a(d,r)}else if(o instanceof ED)a(o.inner,o.prec);else if(o instanceof $i)i[r].push(o),o.provides&&a(o.provides,r);else if(o instanceof d0)i[r].push(o),o.facet.extensions&&a(o.facet.extensions,gc.default);else{let d=o.extension;if(!d)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);a(d,r)}}return a(t,gc.default),i.reduce((o,r)=>o.concat(r))}function tm(t,e){if(e&1)return 2;let n=e>>1,i=t.status[n];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;t.status[n]=4;let s=t.computeSlot(t,t.config.dynamicSlots[n]);return t.status[n]=2|s}function X0(t,e){return e&1?t.config.staticValues[e>>1]:t.values[e>>1]}const jD=tt.define(),_S=tt.define({combine:t=>t.some(e=>e),static:!0}),RD=tt.define({combine:t=>t.length?t[0]:void 0,static:!0}),DD=tt.define(),FD=tt.define(),ID=tt.define(),BD=tt.define({combine:t=>t.length?t[0]:!1});class Do{constructor(e,n){this.type=e,this.value=n}static define(){return new _ge}}class _ge{of(e){return new Do(this,e)}}class yge{constructor(e){this.map=e}of(e){return new Rt(this,e)}}class Rt{constructor(e,n){this.type=e,this.value=n}map(e){let n=this.type.map(this.value,e);return n===void 0?void 0:n==this.value?this:new Rt(this.type,n)}is(e){return this.type==e}static define(e={}){return new yge(e.map||(n=>n))}static mapEffects(e,n){if(!e.length)return e;let i=[];for(let s of e){let a=s.map(n);a&&i.push(a)}return i}}Rt.reconfigure=Rt.define();Rt.appendConfig=Rt.define();class Ni{constructor(e,n,i,s,a,o){this.startState=e,this.changes=n,this.selection=i,this.effects=s,this.annotations=a,this.scrollIntoView=o,this._doc=null,this._state=null,i&&PD(i,n.newLength),a.some(r=>r.type==Ni.time)||(this.annotations=a.concat(Ni.time.of(Date.now())))}static create(e,n,i,s,a,o){return new Ni(e,n,i,s,a,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let n of this.annotations)if(n.type==e)return n.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let n=this.annotation(Ni.userEvent);return!!(n&&(n==e||n.length>e.length&&n.slice(0,e.length)==e&&n[e.length]=="."))}}Ni.time=Do.define();Ni.userEvent=Do.define();Ni.addToHistory=Do.define();Ni.remote=Do.define();function bge(t,e){let n=[];for(let i=0,s=0;;){let a,o;if(i<t.length&&(s==e.length||e[s]>=t[i]))a=t[i++],o=t[i++];else if(s<e.length)a=e[s++],o=e[s++];else return n;!n.length||n[n.length-1]<a?n.push(a,o):n[n.length-1]<o&&(n[n.length-1]=o)}}function UD(t,e,n){var i;let s,a,o;return n?(s=e.changes,a=ki.empty(e.changes.length),o=t.changes.compose(e.changes)):(s=e.changes.map(t.changes),a=t.changes.mapDesc(e.changes,!0),o=t.changes.compose(s)),{changes:o,selection:e.selection?e.selection.map(a):(i=t.selection)===null||i===void 0?void 0:i.map(s),effects:Rt.mapEffects(t.effects,s).concat(Rt.mapEffects(e.effects,a)),annotations:t.annotations.length?t.annotations.concat(e.annotations):e.annotations,scrollIntoView:t.scrollIntoView||e.scrollIntoView}}function yS(t,e,n){let i=e.selection,s=fd(e.annotations);return e.userEvent&&(s=s.concat(Ni.userEvent.of(e.userEvent))),{changes:e.changes instanceof ki?e.changes:ki.of(e.changes||[],n,t.facet(RD)),selection:i&&(i instanceof je?i:je.single(i.anchor,i.head)),effects:fd(e.effects),annotations:s,scrollIntoView:!!e.scrollIntoView}}function qD(t,e,n){let i=yS(t,e.length?e[0]:{},t.doc.length);e.length&&e[0].filter===!1&&(n=!1);for(let a=1;a<e.length;a++){e[a].filter===!1&&(n=!1);let o=!!e[a].sequential;i=UD(i,yS(t,e[a],o?i.changes.newLength:t.doc.length),o)}let s=Ni.create(t,i.changes,i.selection,i.effects,i.annotations,i.scrollIntoView);return xge(n?vge(s):s)}function vge(t){let e=t.startState,n=!0;for(let s of e.facet(DD)){let a=s(t);if(a===!1){n=!1;break}Array.isArray(a)&&(n=n===!0?a:bge(n,a))}if(n!==!0){let s,a;if(n===!1)a=t.changes.invertedDesc,s=ki.empty(e.doc.length);else{let o=t.changes.filter(n);s=o.changes,a=o.filtered.mapDesc(o.changes).invertedDesc}t=Ni.create(e,s,t.selection&&t.selection.map(a),Rt.mapEffects(t.effects,a),t.annotations,t.scrollIntoView)}let i=e.facet(FD);for(let s=i.length-1;s>=0;s--){let a=i[s](t);a instanceof Ni?t=a:Array.isArray(a)&&a.length==1&&a[0]instanceof Ni?t=a[0]:t=qD(e,fd(a),!1)}return t}function xge(t){let e=t.startState,n=e.facet(ID),i=t;for(let s=n.length-1;s>=0;s--){let a=n[s](t);a&&Object.keys(a).length&&(i=UD(i,yS(e,a,t.changes.newLength),!0))}return i==t?t:Ni.create(e,t.changes,t.selection,i.effects,i.annotations,i.scrollIntoView)}const Sge=[];function fd(t){return t==null?Sge:Array.isArray(t)?t:[t]}var Hn=(function(t){return t[t.Word=0]="Word",t[t.Space=1]="Space",t[t.Other=2]="Other",t})(Hn||(Hn={}));const wge=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let bS;try{bS=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function kge(t){if(bS)return bS.test(t);for(let e=0;e<t.length;e++){let n=t[e];if(/\w/.test(n)||n>"€"&&(n.toUpperCase()!=n.toLowerCase()||wge.test(n)))return!0}return!1}function Cge(t){return e=>{if(!/\S/.test(e))return Hn.Space;if(kge(e))return Hn.Word;for(let n=0;n<t.length;n++)if(e.indexOf(t[n])>-1)return Hn.Word;return Hn.Other}}class nn{constructor(e,n,i,s,a,o){this.config=e,this.doc=n,this.selection=i,this.values=s,this.status=e.statusTemplate.slice(),this.computeSlot=a,o&&(o._state=this);for(let r=0;r<this.config.dynamicSlots.length;r++)tm(this,r<<1);this.computeSlot=null}field(e,n=!0){let i=this.config.address[e.id];if(i==null){if(n)throw new RangeError("Field is not present in this state");return}return tm(this,i),X0(this,i)}update(...e){return qD(this,e,!0)}applyTransaction(e){let n=this.config,{base:i,compartments:s}=n;for(let r of e.effects)r.is(Zy.reconfigure)?(n&&(s=new Map,n.compartments.forEach((c,d)=>s.set(d,c)),n=null),s.set(r.value.compartment,r.value.extension)):r.is(Rt.reconfigure)?(n=null,i=r.value):r.is(Rt.appendConfig)&&(n=null,i=fd(i).concat(r.value));let a;n?a=e.startState.values.slice():(n=$0.resolve(i,s,this),a=new nn(n,this.doc,this.selection,n.dynamicSlots.map(()=>null),(c,d)=>d.reconfigure(c,this),null).values);let o=e.startState.facet(_S)?e.newSelection:e.newSelection.asSingle();new nn(n,e.newDoc,o,a,(r,c)=>c.update(r,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(n=>({changes:{from:n.from,to:n.to,insert:e},range:je.cursor(n.from+e.length)}))}changeByRange(e){let n=this.selection,i=e(n.ranges[0]),s=this.changes(i.changes),a=[i.range],o=fd(i.effects);for(let r=1;r<n.ranges.length;r++){let c=e(n.ranges[r]),d=this.changes(c.changes),f=d.map(s);for(let g=0;g<r;g++)a[g]=a[g].map(f);let p=s.mapDesc(d,!0);a.push(c.range.map(p)),s=s.compose(f),o=Rt.mapEffects(o,f).concat(Rt.mapEffects(fd(c.effects),p))}return{changes:s,selection:je.create(a,n.mainIndex),effects:o}}changes(e=[]){return e instanceof ki?e:ki.of(e,this.doc.length,this.facet(nn.lineSeparator))}toText(e){return an.of(e.split(this.facet(nn.lineSeparator)||hS))}sliceDoc(e=0,n=this.doc.length){return this.doc.sliceString(e,n,this.lineBreak)}facet(e){let n=this.config.address[e.id];return n==null?e.default:(tm(this,n),X0(this,n))}toJSON(e){let n={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(e)for(let i in e){let s=e[i];s instanceof $i&&this.config.address[s.id]!=null&&(n[i]=s.spec.toJSON(this.field(e[i]),this))}return n}static fromJSON(e,n={},i){if(!e||typeof e.doc!="string")throw new RangeError("Invalid JSON representation for EditorState");let s=[];if(i){for(let a in i)if(Object.prototype.hasOwnProperty.call(e,a)){let o=i[a],r=e[a];s.push(o.init(c=>o.spec.fromJSON(r,c)))}}return nn.create({doc:e.doc,selection:je.fromJSON(e.selection),extensions:n.extensions?s.concat([n.extensions]):s})}static create(e={}){let n=$0.resolve(e.extensions||[],new Map),i=e.doc instanceof an?e.doc:an.of((e.doc||"").split(n.staticFacet(nn.lineSeparator)||hS)),s=e.selection?e.selection instanceof je?e.selection:je.single(e.selection.anchor,e.selection.head):je.single(0);return PD(s,i.length),n.staticFacet(_S)||(s=s.asSingle()),new nn(n,i,s,n.dynamicSlots.map(()=>null),(a,o)=>o.create(a),null)}get tabSize(){return this.facet(nn.tabSize)}get lineBreak(){return this.facet(nn.lineSeparator)||`
`}get readOnly(){return this.facet(BD)}phrase(e,...n){for(let i of this.facet(nn.phrases))if(Object.prototype.hasOwnProperty.call(i,e)){e=i[e];break}return n.length&&(e=e.replace(/\$(\$|\d*)/g,(i,s)=>{if(s=="$")return"$";let a=+(s||1);return!a||a>n.length?i:n[a-1]})),e}languageDataAt(e,n,i=-1){let s=[];for(let a of this.facet(jD))for(let o of a(this,n,i))Object.prototype.hasOwnProperty.call(o,e)&&s.push(o[e]);return s}charCategorizer(e){return Cge(this.languageDataAt("wordChars",e).join(""))}wordAt(e){let{text:n,from:i,length:s}=this.doc.lineAt(e),a=this.charCategorizer(e),o=e-i,r=e-i;for(;o>0;){let c=Wi(n,o,!1);if(a(n.slice(c,o))!=Hn.Word)break;o=c}for(;r<s;){let c=Wi(n,r);if(a(n.slice(r,c))!=Hn.Word)break;r=c}return o==r?null:je.range(o+i,r+i)}}nn.allowMultipleSelections=_S;nn.tabSize=tt.define({combine:t=>t.length?t[0]:4});nn.lineSeparator=RD;nn.readOnly=BD;nn.phrases=tt.define({compare(t,e){let n=Object.keys(t),i=Object.keys(e);return n.length==i.length&&n.every(s=>t[s]==e[s])}});nn.languageData=jD;nn.changeFilter=DD;nn.transactionFilter=FD;nn.transactionExtender=ID;Zy.reconfigure=Rt.define();function Fo(t,e,n={}){let i={};for(let s of t)for(let a of Object.keys(s)){let o=s[a],r=i[a];if(r===void 0)i[a]=o;else if(!(r===o||o===void 0))if(Object.hasOwnProperty.call(n,a))i[a]=n[a](r,o);else throw new Error("Config merge conflict for field "+a)}for(let s in e)i[s]===void 0&&(i[s]=e[s]);return i}class Bc{eq(e){return this==e}range(e,n=e){return vS.create(e,n,this)}}Bc.prototype.startSide=Bc.prototype.endSide=0;Bc.prototype.point=!1;Bc.prototype.mapMode=ps.TrackDel;let vS=class zD{constructor(e,n,i){this.from=e,this.to=n,this.value=i}static create(e,n,i){return new zD(e,n,i)}};function xS(t,e){return t.from-e.from||t.value.startSide-e.value.startSide}let Age=class KD{constructor(e,n,i,s){this.from=e,this.to=n,this.value=i,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(e,n,i,s=0){let a=i?this.to:this.from;for(let o=s,r=a.length;;){if(o==r)return o;let c=o+r>>1,d=a[c]-e||(i?this.value[c].endSide:this.value[c].startSide)-n;if(c==o)return d>=0?o:r;d>=0?r=c:o=c+1}}between(e,n,i,s){for(let a=this.findIndex(n,-1e9,!0),o=this.findIndex(i,1e9,!1,a);a<o;a++)if(s(this.from[a]+e,this.to[a]+e,this.value[a])===!1)return!1}map(e,n){let i=[],s=[],a=[],o=-1,r=-1;for(let c=0;c<this.value.length;c++){let d=this.value[c],f=this.from[c]+e,p=this.to[c]+e,g,y;if(f==p){let _=n.mapPos(f,d.startSide,d.mapMode);if(_==null||(g=y=_,d.startSide!=d.endSide&&(y=n.mapPos(f,d.endSide),y<g)))continue}else if(g=n.mapPos(f,d.startSide),y=n.mapPos(p,d.endSide),g>y||g==y&&d.startSide>0&&d.endSide<=0)continue;(y-g||d.endSide-d.startSide)<0||(o<0&&(o=g),d.point&&(r=Math.max(r,y-g)),i.push(d),s.push(g-o),a.push(y-o))}return{mapped:i.length?new KD(s,a,i,r):null,pos:o}}};class cn{constructor(e,n,i,s){this.chunkPos=e,this.chunk=n,this.nextLayer=i,this.maxPoint=s}static create(e,n,i,s){return new cn(e,n,i,s)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let n of this.chunk)e+=n.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:n=[],sort:i=!1,filterFrom:s=0,filterTo:a=this.length}=e,o=e.filter;if(n.length==0&&!o)return this;if(i&&(n=n.slice().sort(xS)),this.isEmpty)return n.length?cn.of(n):this;let r=new VD(this,null,-1).goto(0),c=0,d=[],f=new Tr;for(;r.value||c<n.length;)if(c<n.length&&(r.from-n[c].from||r.startSide-n[c].value.startSide)>=0){let p=n[c++];f.addInner(p.from,p.to,p.value)||d.push(p)}else r.rangeIndex==1&&r.chunkIndex<this.chunk.length&&(c==n.length||this.chunkEnd(r.chunkIndex)<n[c].from)&&(!o||s>this.chunkEnd(r.chunkIndex)||a<this.chunkPos[r.chunkIndex])&&f.addChunk(this.chunkPos[r.chunkIndex],this.chunk[r.chunkIndex])?r.nextChunk():((!o||s>r.to||a<r.from||o(r.from,r.to,r.value))&&(f.addInner(r.from,r.to,r.value)||d.push(vS.create(r.from,r.to,r.value))),r.next());return f.finishInner(this.nextLayer.isEmpty&&!d.length?cn.empty:this.nextLayer.update({add:d,filter:o,filterFrom:s,filterTo:a}))}map(e){if(e.empty||this.isEmpty)return this;let n=[],i=[],s=-1;for(let o=0;o<this.chunk.length;o++){let r=this.chunkPos[o],c=this.chunk[o],d=e.touchesRange(r,r+c.length);if(d===!1)s=Math.max(s,c.maxPoint),n.push(c),i.push(e.mapPos(r));else if(d===!0){let{mapped:f,pos:p}=c.map(r,e);f&&(s=Math.max(s,f.maxPoint),n.push(f),i.push(p))}}let a=this.nextLayer.map(e);return n.length==0?a:new cn(i,n,a||cn.empty,s)}between(e,n,i){if(!this.isEmpty){for(let s=0;s<this.chunk.length;s++){let a=this.chunkPos[s],o=this.chunk[s];if(n>=a&&e<=a+o.length&&o.between(a,e-a,n-a,i)===!1)return}this.nextLayer.between(e,n,i)}}iter(e=0){return wm.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,n=0){return wm.from(e).goto(n)}static compare(e,n,i,s,a=-1){let o=e.filter(p=>p.maxPoint>0||!p.isEmpty&&p.maxPoint>=a),r=n.filter(p=>p.maxPoint>0||!p.isEmpty&&p.maxPoint>=a),c=AE(o,r,i),d=new gf(o,c,a),f=new gf(r,c,a);i.iterGaps((p,g,y)=>NE(d,p,f,g,y,s)),i.empty&&i.length==0&&NE(d,0,f,0,0,s)}static eq(e,n,i=0,s){s==null&&(s=999999999);let a=e.filter(f=>!f.isEmpty&&n.indexOf(f)<0),o=n.filter(f=>!f.isEmpty&&e.indexOf(f)<0);if(a.length!=o.length)return!1;if(!a.length)return!0;let r=AE(a,o),c=new gf(a,r,0).goto(i),d=new gf(o,r,0).goto(i);for(;;){if(c.to!=d.to||!SS(c.active,d.active)||c.point&&(!d.point||!c.point.eq(d.point)))return!1;if(c.to>s)return!0;c.next(),d.next()}}static spans(e,n,i,s,a=-1){let o=new gf(e,null,a).goto(n),r=n,c=o.openStart;for(;;){let d=Math.min(o.to,i);if(o.point){let f=o.activeForPoint(o.to),p=o.pointFrom<n?f.length+1:o.point.startSide<0?f.length:Math.min(f.length,c);s.point(r,d,o.point,f,p,o.pointRank),c=Math.min(o.openEnd(d),f.length)}else d>r&&(s.span(r,d,o.active,c),c=o.openEnd(d));if(o.to>i)return c+(o.point&&o.to>i?1:0);r=o.to,o.next()}}static of(e,n=!1){let i=new Tr;for(let s of e instanceof vS?[e]:n?Nge(e):e)i.add(s.from,s.to,s.value);return i.finish()}static join(e){if(!e.length)return cn.empty;let n=e[e.length-1];for(let i=e.length-2;i>=0;i--)for(let s=e[i];s!=cn.empty;s=s.nextLayer)n=new cn(s.chunkPos,s.chunk,n,Math.max(s.maxPoint,n.maxPoint));return n}}cn.empty=new cn([],[],null,-1);function Nge(t){if(t.length>1)for(let e=t[0],n=1;n<t.length;n++){let i=t[n];if(xS(e,i)>0)return t.slice().sort(xS);e=i}return t}cn.empty.nextLayer=cn.empty;class Tr{finishChunk(e){this.chunks.push(new Age(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,n,i){this.addInner(e,n,i)||(this.nextLayer||(this.nextLayer=new Tr)).add(e,n,i)}addInner(e,n,i){let s=e-this.lastTo||i.startSide-this.last.endSide;if(s<=0&&(e-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(n-this.chunkStart),this.last=i,this.lastFrom=e,this.lastTo=n,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,n-e)),!0)}addChunk(e,n){if((e-this.lastTo||n.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,n.maxPoint),this.chunks.push(n),this.chunkPos.push(e);let i=n.value.length-1;return this.last=n.value[i],this.lastFrom=n.from[i]+e,this.lastTo=n.to[i]+e,!0}finish(){return this.finishInner(cn.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let n=cn.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,n}}function AE(t,e,n){let i=new Map;for(let a of t)for(let o=0;o<a.chunk.length;o++)a.chunk[o].maxPoint<=0&&i.set(a.chunk[o],a.chunkPos[o]);let s=new Set;for(let a of e)for(let o=0;o<a.chunk.length;o++){let r=i.get(a.chunk[o]);r!=null&&(n?n.mapPos(r):r)==a.chunkPos[o]&&!n?.touchesRange(r,r+a.chunk[o].length)&&s.add(a.chunk[o])}return s}class VD{constructor(e,n,i,s=0){this.layer=e,this.skip=n,this.minPoint=i,this.rank=s}get startSide(){return this.value?this.value.startSide:0}get endSide(){return this.value?this.value.endSide:0}goto(e,n=-1e9){return this.chunkIndex=this.rangeIndex=0,this.gotoInner(e,n,!1),this}gotoInner(e,n,i){for(;this.chunkIndex<this.layer.chunk.length;){let s=this.layer.chunk[this.chunkIndex];if(!(this.skip&&this.skip.has(s)||this.layer.chunkEnd(this.chunkIndex)<e||s.maxPoint<this.minPoint))break;this.chunkIndex++,i=!1}if(this.chunkIndex<this.layer.chunk.length){let s=this.layer.chunk[this.chunkIndex].findIndex(e-this.layer.chunkPos[this.chunkIndex],n,!0);(!i||this.rangeIndex<s)&&this.setRangeIndex(s)}this.next()}forward(e,n){(this.to-e||this.endSide-n)<0&&this.gotoInner(e,n,!0)}next(){for(;;)if(this.chunkIndex==this.layer.chunk.length){this.from=this.to=1e9,this.value=null;break}else{let e=this.layer.chunkPos[this.chunkIndex],n=this.layer.chunk[this.chunkIndex],i=e+n.from[this.rangeIndex];if(this.from=i,this.to=e+n.to[this.rangeIndex],this.value=n.value[this.rangeIndex],this.setRangeIndex(this.rangeIndex+1),this.minPoint<0||this.value.point&&this.to-this.from>=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex<this.layer.chunk.length&&this.skip.has(this.layer.chunk[this.chunkIndex]);)this.chunkIndex++;this.rangeIndex=0}else this.rangeIndex=e}nextChunk(){this.chunkIndex++,this.rangeIndex=0,this.next()}compare(e){return this.from-e.from||this.startSide-e.startSide||this.rank-e.rank||this.to-e.to||this.endSide-e.endSide}}class wm{constructor(e){this.heap=e}static from(e,n=null,i=-1){let s=[];for(let a=0;a<e.length;a++)for(let o=e[a];!o.isEmpty;o=o.nextLayer)o.maxPoint>=i&&s.push(new VD(o,n,i,a));return s.length==1?s[0]:new wm(s)}get startSide(){return this.value?this.value.startSide:0}goto(e,n=-1e9){for(let i of this.heap)i.goto(e,n);for(let i=this.heap.length>>1;i>=0;i--)O1(this.heap,i);return this.next(),this}forward(e,n){for(let i of this.heap)i.forward(e,n);for(let i=this.heap.length>>1;i>=0;i--)O1(this.heap,i);(this.to-e||this.value.endSide-n)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),O1(this.heap,0)}}}function O1(t,e){for(let n=t[e];;){let i=(e<<1)+1;if(i>=t.length)break;let s=t[i];if(i+1<t.length&&s.compare(t[i+1])>=0&&(s=t[i+1],i++),n.compare(s)<0)break;t[i]=n,t[e]=s,e=i}}class gf{constructor(e,n,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=wm.from(e,n,i)}goto(e,n=-1e9){return this.cursor.goto(e,n),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=n,this.openStart=-1,this.next(),this}forward(e,n){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-n)<0;)this.removeActive(this.minActive);this.cursor.forward(e,n)}removeActive(e){y_(this.active,e),y_(this.activeTo,e),y_(this.activeRank,e),this.minActive=TE(this.active,this.activeTo)}addActive(e){let n=0,{value:i,to:s,rank:a}=this.cursor;for(;n<this.activeRank.length&&(a-this.activeRank[n]||s-this.activeTo[n])>0;)n++;b_(this.active,n,i),b_(this.activeTo,n,s),b_(this.activeRank,n,a),e&&b_(e,n,this.cursor.from),this.minActive=TE(this.active,this.activeTo)}next(){let e=this.to,n=this.point;this.point=null;let i=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>e){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),i&&y_(i,s)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let a=this.cursor.value;if(!a.point)this.addActive(i),this.cursor.next();else if(n&&this.cursor.to==this.to&&this.cursor.from<this.cursor.to)this.cursor.next();else{this.point=a,this.pointFrom=this.cursor.from,this.pointRank=this.cursor.rank,this.to=this.cursor.to,this.endSide=a.endSide,this.cursor.next(),this.forward(this.to,this.endSide);break}}else{this.to=this.endSide=1e9;break}}if(i){this.openStart=0;for(let s=i.length-1;s>=0&&i[s]<e;s--)this.openStart++}}activeForPoint(e){if(!this.active.length)return this.active;let n=[];for(let i=this.active.length-1;i>=0&&!(this.activeRank[i]<this.pointRank);i--)(this.activeTo[i]>e||this.activeTo[i]==e&&this.active[i].endSide>=this.point.endSide)&&n.push(this.active[i]);return n.reverse()}openEnd(e){let n=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>e;i--)n++;return n}}function NE(t,e,n,i,s,a){t.goto(e),n.goto(i);let o=i+s,r=i,c=i-e;for(;;){let d=t.to+c-n.to,f=d||t.endSide-n.endSide,p=f<0?t.to+c:n.to,g=Math.min(p,o);if(t.point||n.point?t.point&&n.point&&(t.point==n.point||t.point.eq(n.point))&&SS(t.activeForPoint(t.to),n.activeForPoint(n.to))||a.comparePoint(r,g,t.point,n.point):g>r&&!SS(t.active,n.active)&&a.compareRange(r,g,t.active,n.active),p>o)break;(d||t.openEnd!=n.openEnd)&&a.boundChange&&a.boundChange(p),r=p,f<=0&&t.next(),f>=0&&n.next()}}function SS(t,e){if(t.length!=e.length)return!1;for(let n=0;n<t.length;n++)if(t[n]!=e[n]&&!t[n].eq(e[n]))return!1;return!0}function y_(t,e){for(let n=e,i=t.length-1;n<i;n++)t[n]=t[n+1];t.pop()}function b_(t,e,n){for(let i=t.length-1;i>=e;i--)t[i+1]=t[i];t[e]=n}function TE(t,e){let n=-1,i=1e9;for(let s=0;s<e.length;s++)(e[s]-i||t[s].endSide-t[n].endSide)<0&&(n=s,i=e[s]);return n}function Xd(t,e,n=t.length){let i=0;for(let s=0;s<n&&s<t.length;)t.charCodeAt(s)==9?(i+=e-i%e,s++):(i++,s=Wi(t,s));return i}function wS(t,e,n,i){for(let s=0,a=0;;){if(a>=e)return s;if(s==t.length)break;a+=t.charCodeAt(s)==9?n-a%n:1,s=Wi(t,s)}return i===!0?-1:t.length}const kS="ͼ",ME=typeof Symbol>"u"?"__"+kS:Symbol.for(kS),CS=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),LE=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{};class Ll{constructor(e,n){this.rules=[];let{finish:i}=n||{};function s(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function a(o,r,c,d){let f=[],p=/^@(\w+)\b/.exec(o[0]),g=p&&p[1]=="keyframes";if(p&&r==null)return c.push(o[0]+";");for(let y in r){let _=r[y];if(/&/.test(y))a(y.split(/,\s*/).map(v=>o.map(x=>v.replace(/&/,x))).reduce((v,x)=>v.concat(x)),_,c);else if(_&&typeof _=="object"){if(!p)throw new RangeError("The value of a property ("+y+") should be a primitive value.");a(s(y),_,f,g)}else _!=null&&f.push(y.replace(/_.*/,"").replace(/[A-Z]/g,v=>"-"+v.toLowerCase())+": "+_+";")}(f.length||g)&&c.push((i&&!p&&!d?o.map(i):o).join(", ")+" {"+f.join(" ")+"}")}for(let o in e)a(s(o),e[o],this.rules)}getRules(){return this.rules.join(`
`)}static newName(){let e=LE[ME]||1;return LE[ME]=e+1,kS+e.toString(36)}static mount(e,n,i){let s=e[CS],a=i&&i.nonce;s?a&&s.setNonce(a):s=new Tge(e,a),s.mount(Array.isArray(n)?n:[n],e)}}let OE=new Map;class Tge{constructor(e,n){let i=e.ownerDocument||e,s=i.defaultView;if(!e.head&&e.adoptedStyleSheets&&s.CSSStyleSheet){let a=OE.get(i);if(a)return e[CS]=a;this.sheet=new s.CSSStyleSheet,OE.set(i,this)}else this.styleTag=i.createElement("style"),n&&this.styleTag.setAttribute("nonce",n);this.modules=[],e[CS]=this}mount(e,n){let i=this.sheet,s=0,a=0;for(let o=0;o<e.length;o++){let r=e[o],c=this.modules.indexOf(r);if(c<a&&c>-1&&(this.modules.splice(c,1),a--,c=-1),c==-1){if(this.modules.splice(a++,0,r),i)for(let d=0;d<r.rules.length;d++)i.insertRule(r.rules[d],s++)}else{for(;a<c;)s+=this.modules[a++].rules.length;s+=r.rules.length,a++}}if(i)n.adoptedStyleSheets.indexOf(this.sheet)<0&&(n.adoptedStyleSheets=[this.sheet,...n.adoptedStyleSheets]);else{let o="";for(let c=0;c<this.modules.length;c++)o+=this.modules[c].getRules()+`
`;this.styleTag.textContent=o;let r=n.head||n;this.styleTag.parentNode!=r&&r.insertBefore(this.styleTag,r.firstChild)}}setNonce(e){this.styleTag&&this.styleTag.getAttribute("nonce")!=e&&this.styleTag.setAttribute("nonce",e)}}var Ol={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},km={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},Mge=typeof navigator<"u"&&/Mac/.test(navigator.platform),Lge=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(var Vi=0;Vi<10;Vi++)Ol[48+Vi]=Ol[96+Vi]=String(Vi);for(var Vi=1;Vi<=24;Vi++)Ol[Vi+111]="F"+Vi;for(var Vi=65;Vi<=90;Vi++)Ol[Vi]=String.fromCharCode(Vi+32),km[Vi]=String.fromCharCode(Vi);for(var P1 in Ol)km.hasOwnProperty(P1)||(km[P1]=Ol[P1]);function Oge(t){var e=Mge&&t.metaKey&&t.shiftKey&&!t.ctrlKey&&!t.altKey||Lge&&t.shiftKey&&t.key&&t.key.length==1||t.key=="Unidentified",n=!e&&t.key||(t.shiftKey?km:Ol)[t.keyCode]||t.key||"Unidentified";return n=="Esc"&&(n="Escape"),n=="Del"&&(n="Delete"),n=="Left"&&(n="ArrowLeft"),n=="Up"&&(n="ArrowUp"),n=="Right"&&(n="ArrowRight"),n=="Down"&&(n="ArrowDown"),n}function Tn(){var t=arguments[0];typeof t=="string"&&(t=document.createElement(t));var e=1,n=arguments[1];if(n&&typeof n=="object"&&n.nodeType==null&&!Array.isArray(n)){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var s=n[i];typeof s=="string"?t.setAttribute(i,s):s!=null&&(t[i]=s)}e++}for(;e<arguments.length;e++)HD(t,arguments[e]);return t}function HD(t,e){if(typeof e=="string")t.appendChild(document.createTextNode(e));else if(e!=null)if(e.nodeType!=null)t.appendChild(e);else if(Array.isArray(e))for(var n=0;n<e.length;n++)HD(t,e[n]);else throw new RangeError("Unsupported child node: "+e)}let ms=typeof navigator<"u"?navigator:{userAgent:"",vendor:"",platform:""},AS=typeof document<"u"?document:{documentElement:{style:{}}};const NS=/Edge\/(\d+)/.exec(ms.userAgent),WD=/MSIE \d/.test(ms.userAgent),TS=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(ms.userAgent),eb=!!(WD||TS||NS),PE=!eb&&/gecko\/(\d+)/i.test(ms.userAgent),E1=!eb&&/Chrome\/(\d+)/.exec(ms.userAgent),Pge="webkitFontSmoothing"in AS.documentElement.style,MS=!eb&&/Apple Computer/.test(ms.vendor),EE=MS&&(/Mobile\/\w+/.test(ms.userAgent)||ms.maxTouchPoints>2);var $e={mac:EE||/Mac/.test(ms.platform),windows:/Win/.test(ms.platform),linux:/Linux|X11/.test(ms.platform),ie:eb,ie_version:WD?AS.documentMode||6:TS?+TS[1]:NS?+NS[1]:0,gecko:PE,gecko_version:PE?+(/Firefox\/(\d+)/.exec(ms.userAgent)||[0,0])[1]:0,chrome:!!E1,chrome_version:E1?+E1[1]:0,ios:EE,android:/Android\b/.test(ms.userAgent),webkit_version:Pge?+(/\bAppleWebKit\/(\d+)/.exec(ms.userAgent)||[0,0])[1]:0,safari:MS,safari_version:MS?+(/\bVersion\/(\d+(\.\d+)?)/.exec(ms.userAgent)||[0,0])[1]:0,tabSize:AS.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function Cm(t){let e;return t.nodeType==11?e=t.getSelection?t:t.ownerDocument:e=t,e.getSelection()}function LS(t,e){return e?t==e||t.contains(e.nodeType!=1?e.parentNode:e):!1}function h0(t,e){if(!e.anchorNode)return!1;try{return LS(t,e.anchorNode)}catch{return!1}}function Ld(t){return t.nodeType==3?qc(t,0,t.nodeValue.length).getClientRects():t.nodeType==1?t.getClientRects():[]}function nm(t,e,n,i){return n?jE(t,e,n,i,-1)||jE(t,e,n,i,1):!1}function Uc(t){for(var e=0;;e++)if(t=t.previousSibling,!t)return e}function Q0(t){return t.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(t.nodeName)}function jE(t,e,n,i,s){for(;;){if(t==n&&e==i)return!0;if(e==(s<0?0:Mo(t))){if(t.nodeName=="DIV")return!1;let a=t.parentNode;if(!a||a.nodeType!=1)return!1;e=Uc(t)+(s<0?0:1),t=a}else if(t.nodeType==1){if(t=t.childNodes[e+(s<0?-1:0)],t.nodeType==1&&t.contentEditable=="false")return!1;e=s<0?Mo(t):0}else return!1}}function Mo(t){return t.nodeType==3?t.nodeValue.length:t.childNodes.length}function pp(t,e){let n=e?t.left:t.right;return{left:n,right:n,top:t.top,bottom:t.bottom}}function Ege(t){let e=t.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:t.innerWidth,top:0,bottom:t.innerHeight}}function GD(t,e){let n=e.width/t.offsetWidth,i=e.height/t.offsetHeight;return(n>.995&&n<1.005||!isFinite(n)||Math.abs(e.width-t.offsetWidth)<1)&&(n=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(e.height-t.offsetHeight)<1)&&(i=1),{scaleX:n,scaleY:i}}function jge(t,e,n,i,s,a,o,r){let c=t.ownerDocument,d=c.defaultView||window;for(let f=t,p=!1;f&&!p;)if(f.nodeType==1){let g,y=f==c.body,_=1,v=1;if(y)g=Ege(d);else{if(/^(fixed|sticky)$/.test(getComputedStyle(f).position)&&(p=!0),f.scrollHeight<=f.clientHeight&&f.scrollWidth<=f.clientWidth){f=f.assignedSlot||f.parentNode;continue}let C=f.getBoundingClientRect();({scaleX:_,scaleY:v}=GD(f,C)),g={left:C.left,right:C.left+f.clientWidth*_,top:C.top,bottom:C.top+f.clientHeight*v}}let x=0,k=0;if(s=="nearest")e.top<g.top?(k=e.top-(g.top+o),n>0&&e.bottom>g.bottom+k&&(k=e.bottom-g.bottom+o)):e.bottom>g.bottom&&(k=e.bottom-g.bottom+o,n<0&&e.top-k<g.top&&(k=e.top-(g.top+o)));else{let C=e.bottom-e.top,N=g.bottom-g.top;k=(s=="center"&&C<=N?e.top+C/2-N/2:s=="start"||s=="center"&&n<0?e.top-o:e.bottom-N+o)-g.top}if(i=="nearest"?e.left<g.left?(x=e.left-(g.left+a),n>0&&e.right>g.right+x&&(x=e.right-g.right+a)):e.right>g.right&&(x=e.right-g.right+a,n<0&&e.left<g.left+x&&(x=e.left-(g.left+a))):x=(i=="center"?e.left+(e.right-e.left)/2-(g.right-g.left)/2:i=="start"==r?e.left-a:e.right-(g.right-g.left)+a)-g.left,x||k)if(y)d.scrollBy(x,k);else{let C=0,N=0;if(k){let L=f.scrollTop;f.scrollTop+=k/v,N=(f.scrollTop-L)*v}if(x){let L=f.scrollLeft;f.scrollLeft+=x/_,C=(f.scrollLeft-L)*_}e={left:e.left-C,top:e.top-N,right:e.right-C,bottom:e.bottom-N},C&&Math.abs(C-x)<1&&(i="nearest"),N&&Math.abs(N-k)<1&&(s="nearest")}if(y)break;(e.top<g.top||e.bottom>g.bottom||e.left<g.left||e.right>g.right)&&(e={left:Math.max(e.left,g.left),right:Math.min(e.right,g.right),top:Math.max(e.top,g.top),bottom:Math.min(e.bottom,g.bottom)}),f=f.assignedSlot||f.parentNode}else if(f.nodeType==11)f=f.host;else break}function Rge(t){let e=t.ownerDocument,n,i;for(let s=t.parentNode;s&&!(s==e.body||n&&i);)if(s.nodeType==1)!i&&s.scrollHeight>s.clientHeight&&(i=s),!n&&s.scrollWidth>s.clientWidth&&(n=s),s=s.assignedSlot||s.parentNode;else if(s.nodeType==11)s=s.host;else break;return{x:n,y:i}}class Dge{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:n,focusNode:i}=e;this.set(n,Math.min(e.anchorOffset,n?Mo(n):0),i,Math.min(e.focusOffset,i?Mo(i):0))}set(e,n,i,s){this.anchorNode=e,this.anchorOffset=n,this.focusNode=i,this.focusOffset=s}}let mc=null;$e.safari&&$e.safari_version>=26&&(mc=!1);function $D(t){if(t.setActive)return t.setActive();if(mc)return t.focus(mc);let e=[];for(let n=t;n&&(e.push(n,n.scrollTop,n.scrollLeft),n!=n.ownerDocument);n=n.parentNode);if(t.focus(mc==null?{get preventScroll(){return mc={preventScroll:!0},!0}}:void 0),!mc){mc=!1;for(let n=0;n<e.length;){let i=e[n++],s=e[n++],a=e[n++];i.scrollTop!=s&&(i.scrollTop=s),i.scrollLeft!=a&&(i.scrollLeft=a)}}}let RE;function qc(t,e,n=e){let i=RE||(RE=document.createRange());return i.setEnd(t,n),i.setStart(t,e),i}function md(t,e,n,i){let s={key:e,code:e,keyCode:n,which:n,cancelable:!0};i&&({altKey:s.altKey,ctrlKey:s.ctrlKey,shiftKey:s.shiftKey,metaKey:s.metaKey}=i);let a=new KeyboardEvent("keydown",s);a.synthetic=!0,t.dispatchEvent(a);let o=new KeyboardEvent("keyup",s);return o.synthetic=!0,t.dispatchEvent(o),a.defaultPrevented||o.defaultPrevented}function Fge(t){for(;t;){if(t&&(t.nodeType==9||t.nodeType==11&&t.host))return t;t=t.assignedSlot||t.parentNode}return null}function XD(t){for(;t.attributes.length;)t.removeAttributeNode(t.attributes[0])}function Ige(t,e){let n=e.focusNode,i=e.focusOffset;if(!n||e.anchorNode!=n||e.anchorOffset!=i)return!1;for(i=Math.min(i,Mo(n));;)if(i){if(n.nodeType!=1)return!1;let s=n.childNodes[i-1];s.contentEditable=="false"?i--:(n=s,i=Mo(n))}else{if(n==t)return!0;i=Uc(n),n=n.parentNode}}function QD(t){return t.scrollTop>Math.max(1,t.scrollHeight-t.clientHeight-4)}function YD(t,e){for(let n=t,i=e;;){if(n.nodeType==3&&i>0)return{node:n,offset:i};if(n.nodeType==1&&i>0){if(n.contentEditable=="false")return null;n=n.childNodes[i-1],i=Mo(n)}else if(n.parentNode&&!Q0(n))i=Uc(n),n=n.parentNode;else return null}}function JD(t,e){for(let n=t,i=e;;){if(n.nodeType==3&&i<n.nodeValue.length)return{node:n,offset:i};if(n.nodeType==1&&i<n.childNodes.length){if(n.contentEditable=="false")return null;n=n.childNodes[i],i=0}else if(n.parentNode&&!Q0(n))i=Uc(n)+1,n=n.parentNode;else return null}}class is{constructor(e,n,i=!0){this.node=e,this.offset=n,this.precise=i}static before(e,n){return new is(e.parentNode,Uc(e),n)}static after(e,n){return new is(e.parentNode,Uc(e)+1,n)}}const Sk=[];class An{constructor(){this.parent=null,this.dom=null,this.flags=2}get overrideDOMText(){return null}get posAtStart(){return this.parent?this.parent.posBefore(this):0}get posAtEnd(){return this.posAtStart+this.length}posBefore(e){let n=this.posAtStart;for(let i of this.children){if(i==e)return n;n+=i.length+i.breakAfter}throw new RangeError("Invalid child in posBefore")}posAfter(e){return this.posBefore(e)+e.length}sync(e,n){if(this.flags&2){let i=this.dom,s=null,a;for(let o of this.children){if(o.flags&7){if(!o.dom&&(a=s?s.nextSibling:i.firstChild)){let r=An.get(a);(!r||!r.parent&&r.canReuseDOM(o))&&o.reuseDOM(a)}o.sync(e,n),o.flags&=-8}if(a=s?s.nextSibling:i.firstChild,n&&!n.written&&n.node==i&&a!=o.dom&&(n.written=!0),o.dom.parentNode==i)for(;a&&a!=o.dom;)a=DE(a);else i.insertBefore(o.dom,a);s=o.dom}for(a=s?s.nextSibling:i.firstChild,a&&n&&n.node==i&&(n.written=!0);a;)a=DE(a)}else if(this.flags&1)for(let i of this.children)i.flags&7&&(i.sync(e,n),i.flags&=-8)}reuseDOM(e){}localPosFromDOM(e,n){let i;if(e==this.dom)i=this.dom.childNodes[n];else{let s=Mo(e)==0?0:n==0?-1:1;for(;;){let a=e.parentNode;if(a==this.dom)break;s==0&&a.firstChild!=a.lastChild&&(e==a.firstChild?s=-1:s=1),e=a}s<0?i=e:i=e.nextSibling}if(i==this.dom.firstChild)return 0;for(;i&&!An.get(i);)i=i.nextSibling;if(!i)return this.length;for(let s=0,a=0;;s++){let o=this.children[s];if(o.dom==i)return a;a+=o.length+o.breakAfter}}domBoundsAround(e,n,i=0){let s=-1,a=-1,o=-1,r=-1;for(let c=0,d=i,f=i;c<this.children.length;c++){let p=this.children[c],g=d+p.length;if(d<e&&g>n)return p.domBoundsAround(e,n,d);if(g>=e&&s==-1&&(s=c,a=d),d>n&&p.dom.parentNode==this.dom){o=c,r=f;break}f=g,d=g+p.breakAfter}return{from:a,to:r<0?i+this.length:r,startDOM:(s?this.children[s-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:o<this.children.length&&o>=0?this.children[o].dom:null}}markDirty(e=!1){this.flags|=2,this.markParentsDirty(e)}markParentsDirty(e){for(let n=this.parent;n;n=n.parent){if(e&&(n.flags|=2),n.flags&1)return;n.flags|=1,e=!1}}setParent(e){this.parent!=e&&(this.parent=e,this.flags&7&&this.markParentsDirty(!0))}setDOM(e){this.dom!=e&&(this.dom&&(this.dom.cmView=null),this.dom=e,e.cmView=this)}get rootView(){for(let e=this;;){let n=e.parent;if(!n)return e;e=n}}replaceChildren(e,n,i=Sk){this.markDirty();for(let s=e;s<n;s++){let a=this.children[s];a.parent==this&&i.indexOf(a)<0&&a.destroy()}i.length<250?this.children.splice(e,n-e,...i):this.children=[].concat(this.children.slice(0,e),i,this.children.slice(n));for(let s=0;s<i.length;s++)i[s].setParent(this)}ignoreMutation(e){return!1}ignoreEvent(e){return!1}childCursor(e=this.length){return new ZD(this.children,e,this.children.length)}childPos(e,n=1){return this.childCursor().findPos(e,n)}toString(){let e=this.constructor.name.replace("View","");return e+(this.children.length?"("+this.children.join()+")":this.length?"["+(e=="Text"?this.text:this.length)+"]":"")+(this.breakAfter?"#":"")}static get(e){return e.cmView}get isEditable(){return!0}get isWidget(){return!1}get isHidden(){return!1}merge(e,n,i,s,a,o){return!1}become(e){return!1}canReuseDOM(e){return e.constructor==this.constructor&&!((this.flags|e.flags)&8)}getSide(){return 0}destroy(){for(let e of this.children)e.parent==this&&e.destroy();this.parent=null}}An.prototype.breakAfter=0;function DE(t){let e=t.nextSibling;return t.parentNode.removeChild(t),e}class ZD{constructor(e,n,i){this.children=e,this.pos=n,this.i=i,this.off=0}findPos(e,n=1){for(;;){if(e>this.pos||e==this.pos&&(n>0||this.i==0||this.children[this.i-1].breakAfter))return this.off=e-this.pos,this;let i=this.children[--this.i];this.pos-=i.length+i.breakAfter}}}function e6(t,e,n,i,s,a,o,r,c){let{children:d}=t,f=d.length?d[e]:null,p=a.length?a[a.length-1]:null,g=p?p.breakAfter:o;if(!(e==i&&f&&!o&&!g&&a.length<2&&f.merge(n,s,a.length?p:null,n==0,r,c))){if(i<d.length){let y=d[i];y&&(s<y.length||y.breakAfter&&p?.breakAfter)?(e==i&&(y=y.split(s),s=0),!g&&p&&y.merge(0,s,p,!0,0,c)?a[a.length-1]=y:((s||y.children.length&&!y.children[0].length)&&y.merge(0,s,null,!1,0,c),a.push(y))):y?.breakAfter&&(p?p.breakAfter=1:o=1),i++}for(f&&(f.breakAfter=o,n>0&&(!o&&a.length&&f.merge(n,f.length,a[0],!1,r,0)?f.breakAfter=a.shift().breakAfter:(n<f.length||f.children.length&&f.children[f.children.length-1].length==0)&&f.merge(n,f.length,null,!1,r,0),e++));e<i&&a.length;)if(d[i-1].become(a[a.length-1]))i--,a.pop(),c=a.length?0:r;else if(d[e].become(a[0]))e++,a.shift(),r=a.length?0:c;else break;!a.length&&e&&i<d.length&&!d[e-1].breakAfter&&d[i].merge(0,0,d[e-1],!1,r,c)&&e--,(e<i||a.length)&&t.replaceChildren(e,i,a)}}function t6(t,e,n,i,s,a){let o=t.childCursor(),{i:r,off:c}=o.findPos(n,1),{i:d,off:f}=o.findPos(e,-1),p=e-n;for(let g of i)p+=g.length;t.length+=p,e6(t,d,f,r,c,i,0,s,a)}const Bge=256;class $a extends An{constructor(e){super(),this.text=e}get length(){return this.text.length}createDOM(e){this.setDOM(e||document.createTextNode(this.text))}sync(e,n){this.dom||this.createDOM(),this.dom.nodeValue!=this.text&&(n&&n.node==this.dom&&(n.written=!0),this.dom.nodeValue=this.text)}reuseDOM(e){e.nodeType==3&&this.createDOM(e)}merge(e,n,i){return this.flags&8||i&&(!(i instanceof $a)||this.length-(n-e)+i.length>Bge||i.flags&8)?!1:(this.text=this.text.slice(0,e)+(i?i.text:"")+this.text.slice(n),this.markDirty(),!0)}split(e){let n=new $a(this.text.slice(e));return this.text=this.text.slice(0,e),this.markDirty(),n.flags|=this.flags&8,n}localPosFromDOM(e,n){return e==this.dom?n:n?this.text.length:0}domAtPos(e){return new is(this.dom,e)}domBoundsAround(e,n,i){return{from:i,to:i+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(e,n){return Uge(this.dom,e,n)}}class Mr extends An{constructor(e,n=[],i=0){super(),this.mark=e,this.children=n,this.length=i;for(let s of n)s.setParent(this)}setAttrs(e){if(XD(e),this.mark.class&&(e.className=this.mark.class),this.mark.attrs)for(let n in this.mark.attrs)e.setAttribute(n,this.mark.attrs[n]);return e}canReuseDOM(e){return super.canReuseDOM(e)&&!((this.flags|e.flags)&8)}reuseDOM(e){e.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(e),this.flags|=6)}sync(e,n){this.dom?this.flags&4&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(e,n)}merge(e,n,i,s,a,o){return i&&(!(i instanceof Mr&&i.mark.eq(this.mark))||e&&a<=0||n<this.length&&o<=0)?!1:(t6(this,e,n,i?i.children.slice():[],a-1,o-1),this.markDirty(),!0)}split(e){let n=[],i=0,s=-1,a=0;for(let r of this.children){let c=i+r.length;c>e&&n.push(i<e?r.split(e-i):r),s<0&&i>=e&&(s=a),i=c,a++}let o=this.length-e;return this.length=e,s>-1&&(this.children.length=s,this.markDirty()),new Mr(this.mark,n,o)}domAtPos(e){return n6(this,e)}coordsAt(e,n){return s6(this,e,n)}}function Uge(t,e,n){let i=t.nodeValue.length;e>i&&(e=i);let s=e,a=e,o=0;e==0&&n<0||e==i&&n>=0?$e.chrome||$e.gecko||(e?(s--,o=1):a<i&&(a++,o=-1)):n<0?s--:a<i&&a++;let r=qc(t,s,a).getClientRects();if(!r.length)return null;let c=r[(o?o<0:n>=0)?0:r.length-1];return $e.safari&&!o&&c.width==0&&(c=Array.prototype.find.call(r,d=>d.width)||c),o?pp(c,o<0):c||null}class xr extends An{static create(e,n,i){return new xr(e,n,i)}constructor(e,n,i){super(),this.widget=e,this.length=n,this.side=i,this.prevWidget=null}split(e){let n=xr.create(this.widget,this.length-e,this.side);return this.length-=e,n}sync(e){(!this.dom||!this.widget.updateDOM(this.dom,e))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(e)),this.widget.editable||(this.dom.contentEditable="false"))}getSide(){return this.side}merge(e,n,i,s,a,o){return i&&(!(i instanceof xr)||!this.widget.compare(i.widget)||e>0&&a<=0||n<this.length&&o<=0)?!1:(this.length=e+(i?i.length:0)+(this.length-n),!0)}become(e){return e instanceof xr&&e.side==this.side&&this.widget.constructor==e.widget.constructor?(this.widget.compare(e.widget)||this.markDirty(!0),this.dom&&!this.prevWidget&&(this.prevWidget=this.widget),this.widget=e.widget,this.length=e.length,!0):!1}ignoreMutation(){return!0}ignoreEvent(e){return this.widget.ignoreEvent(e)}get overrideDOMText(){if(this.length==0)return an.empty;let e=this;for(;e.parent;)e=e.parent;let{view:n}=e,i=n&&n.state.doc,s=this.posAtStart;return i?i.slice(s,s+this.length):an.empty}domAtPos(e){return(this.length?e==0:this.side>0)?is.before(this.dom):is.after(this.dom,e==this.length)}domBoundsAround(){return null}coordsAt(e,n){let i=this.widget.coordsAt(this.dom,e,n);if(i)return i;let s=this.dom.getClientRects(),a=null;if(!s.length)return null;let o=this.side?this.side<0:e>0;for(let r=o?s.length-1:0;a=s[r],!(e>0?r==0:r==s.length-1||a.top<a.bottom);r+=o?-1:1);return pp(a,!o)}get isEditable(){return!1}get isWidget(){return!0}get isHidden(){return this.widget.isHidden}destroy(){super.destroy(),this.dom&&this.widget.destroy(this.dom)}}class Od extends An{constructor(e){super(),this.side=e}get length(){return 0}merge(){return!1}become(e){return e instanceof Od&&e.side==this.side}split(){return new Od(this.side)}sync(){if(!this.dom){let e=document.createElement("img");e.className="cm-widgetBuffer",e.setAttribute("aria-hidden","true"),this.setDOM(e)}}getSide(){return this.side}domAtPos(e){return this.side>0?is.before(this.dom):is.after(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(e){return this.dom.getBoundingClientRect()}get overrideDOMText(){return an.empty}get isHidden(){return!0}}$a.prototype.children=xr.prototype.children=Od.prototype.children=Sk;function n6(t,e){let n=t.dom,{children:i}=t,s=0;for(let a=0;s<i.length;s++){let o=i[s],r=a+o.length;if(!(r==a&&o.getSide()<=0)){if(e>a&&e<r&&o.dom.parentNode==n)return o.domAtPos(e-a);if(e<=a)break;a=r}}for(let a=s;a>0;a--){let o=i[a-1];if(o.dom.parentNode==n)return o.domAtPos(o.length)}for(let a=s;a<i.length;a++){let o=i[a];if(o.dom.parentNode==n)return o.domAtPos(0)}return new is(n,0)}function i6(t,e,n){let i,{children:s}=t;n>0&&e instanceof Mr&&s.length&&(i=s[s.length-1])instanceof Mr&&i.mark.eq(e.mark)?i6(i,e.children[0],n-1):(s.push(e),e.setParent(t)),t.length+=e.length}function s6(t,e,n){let i=null,s=-1,a=null,o=-1;function r(d,f){for(let p=0,g=0;p<d.children.length&&g<=f;p++){let y=d.children[p],_=g+y.length;_>=f&&(y.children.length?r(y,f-g):(!a||a.isHidden&&(n>0||zge(a,y)))&&(_>f||g==_&&y.getSide()>0)?(a=y,o=f-g):(g<f||g==_&&y.getSide()<0&&!y.isHidden)&&(i=y,s=f-g)),g=_}}r(t,e);let c=(n<0?i:a)||i||a;return c?c.coordsAt(Math.max(0,c==i?s:o),n):qge(t)}function qge(t){let e=t.dom.lastChild;if(!e)return t.dom.getBoundingClientRect();let n=Ld(e);return n[n.length-1]||null}function zge(t,e){let n=t.coordsAt(0,1),i=e.coordsAt(0,1);return n&&i&&i.top<n.bottom}function OS(t,e){for(let n in t)n=="class"&&e.class?e.class+=" "+t.class:n=="style"&&e.style?e.style+=";"+t.style:e[n]=t[n];return e}const FE=Object.create(null);function Y0(t,e,n){if(t==e)return!0;t||(t=FE),e||(e=FE);let i=Object.keys(t),s=Object.keys(e);if(i.length-(n&&i.indexOf(n)>-1?1:0)!=s.length-(n&&s.indexOf(n)>-1?1:0))return!1;for(let a of i)if(a!=n&&(s.indexOf(a)==-1||t[a]!==e[a]))return!1;return!0}function PS(t,e,n){let i=!1;if(e)for(let s in e)n&&s in n||(i=!0,s=="style"?t.style.cssText="":t.removeAttribute(s));if(n)for(let s in n)e&&e[s]==n[s]||(i=!0,s=="style"?t.style.cssText=n[s]:t.setAttribute(s,n[s]));return i}function Kge(t){let e=Object.create(null);for(let n=0;n<t.attributes.length;n++){let i=t.attributes[n];e[i.name]=i.value}return e}class Er{eq(e){return!1}updateDOM(e,n){return!1}compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}get estimatedHeight(){return-1}get lineBreaks(){return 0}ignoreEvent(e){return!0}coordsAt(e,n,i){return null}get isHidden(){return!1}get editable(){return!1}destroy(e){}}var bs=(function(t){return t[t.Text=0]="Text",t[t.WidgetBefore=1]="WidgetBefore",t[t.WidgetAfter=2]="WidgetAfter",t[t.WidgetRange=3]="WidgetRange",t})(bs||(bs={}));class xt extends Bc{constructor(e,n,i,s){super(),this.startSide=e,this.endSide=n,this.widget=i,this.spec=s}get heightRelevant(){return!1}static mark(e){return new gp(e)}static widget(e){let n=Math.max(-1e4,Math.min(1e4,e.side||0)),i=!!e.block;return n+=i&&!e.inlineOrder?n>0?3e8:-4e8:n>0?1e8:-1e8,new Pl(e,n,n,i,e.widget||null,!1)}static replace(e){let n=!!e.block,i,s;if(e.isBlockGap)i=-5e8,s=4e8;else{let{start:a,end:o}=a6(e,n);i=(a?n?-3e8:-1:5e8)-1,s=(o?n?2e8:1:-6e8)+1}return new Pl(e,i,s,n,e.widget||null,!0)}static line(e){return new _p(e)}static set(e,n=!1){return cn.of(e,n)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}}xt.none=cn.empty;class gp extends xt{constructor(e){let{start:n,end:i}=a6(e);super(n?-1:5e8,i?1:-6e8,null,e),this.tagName=e.tagName||"span",this.class=e.class||"",this.attrs=e.attributes||null}eq(e){var n,i;return this==e||e instanceof gp&&this.tagName==e.tagName&&(this.class||((n=this.attrs)===null||n===void 0?void 0:n.class))==(e.class||((i=e.attrs)===null||i===void 0?void 0:i.class))&&Y0(this.attrs,e.attrs,"class")}range(e,n=e){if(e>=n)throw new RangeError("Mark decorations may not be empty");return super.range(e,n)}}gp.prototype.point=!1;class _p extends xt{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof _p&&this.spec.class==e.spec.class&&Y0(this.spec.attributes,e.spec.attributes)}range(e,n=e){if(n!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,n)}}_p.prototype.mapMode=ps.TrackBefore;_p.prototype.point=!0;class Pl extends xt{constructor(e,n,i,s,a,o){super(n,i,a,e),this.block=s,this.isReplace=o,this.mapMode=s?n<=0?ps.TrackBefore:ps.TrackAfter:ps.TrackDel}get type(){return this.startSide!=this.endSide?bs.WidgetRange:this.startSide<=0?bs.WidgetBefore:bs.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof Pl&&Vge(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,n=e){if(this.isReplace&&(e>n||e==n&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&n!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,n)}}Pl.prototype.point=!0;function a6(t,e=!1){let{inclusiveStart:n,inclusiveEnd:i}=t;return n==null&&(n=t.inclusive),i==null&&(i=t.inclusive),{start:n??e,end:i??e}}function Vge(t,e){return t==e||!!(t&&e&&t.compare(e))}function f0(t,e,n,i=0){let s=n.length-1;s>=0&&n[s]+i>=t?n[s]=Math.max(n[s],e):n.push(t,e)}class yi extends An{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(e,n,i,s,a,o){if(i){if(!(i instanceof yi))return!1;this.dom||i.transferDOM(this)}return s&&this.setDeco(i?i.attrs:null),t6(this,e,n,i?i.children.slice():[],a,o),!0}split(e){let n=new yi;if(n.breakAfter=this.breakAfter,this.length==0)return n;let{i,off:s}=this.childPos(e);s&&(n.append(this.children[i].split(s),0),this.children[i].merge(s,this.children[i].length,null,!1,0,0),i++);for(let a=i;a<this.children.length;a++)n.append(this.children[a],0);for(;i>0&&this.children[i-1].length==0;)this.children[--i].destroy();return this.children.length=i,this.markDirty(),this.length=e,n}transferDOM(e){this.dom&&(this.markDirty(),e.setDOM(this.dom),e.prevAttrs=this.prevAttrs===void 0?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(e){Y0(this.attrs,e)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=e)}append(e,n){i6(this,e,n)}addLineDeco(e){let n=e.spec.attributes,i=e.spec.class;n&&(this.attrs=OS(n,this.attrs||{})),i&&(this.attrs=OS({class:i},this.attrs||{}))}domAtPos(e){return n6(this,e)}reuseDOM(e){e.nodeName=="DIV"&&(this.setDOM(e),this.flags|=6)}sync(e,n){var i;this.dom?this.flags&4&&(XD(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),this.prevAttrs!==void 0&&(PS(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(e,n);let s=this.dom.lastChild;for(;s&&An.get(s)instanceof Mr;)s=s.lastChild;if(!s||!this.length||s.nodeName!="BR"&&((i=An.get(s))===null||i===void 0?void 0:i.isEditable)==!1&&(!$e.ios||!this.children.some(a=>a instanceof $a))){let a=document.createElement("BR");a.cmIgnore=!0,this.dom.appendChild(a)}}measureTextSize(){if(this.children.length==0||this.length>20)return null;let e=0,n;for(let i of this.children){if(!(i instanceof $a)||/[^ -~]/.test(i.text))return null;let s=Ld(i.dom);if(s.length!=1)return null;e+=s[0].width,n=s[0].height}return e?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length,textHeight:n}:null}coordsAt(e,n){let i=s6(this,e,n);if(!this.children.length&&i&&this.parent){let{heightOracle:s}=this.parent.view.viewState,a=i.bottom-i.top;if(Math.abs(a-s.lineHeight)<2&&s.textHeight<a){let o=(a-s.textHeight)/2;return{top:i.top+o,bottom:i.bottom-o,left:i.left,right:i.left}}}return i}become(e){return e instanceof yi&&this.children.length==0&&e.children.length==0&&Y0(this.attrs,e.attrs)&&this.breakAfter==e.breakAfter}covers(){return!0}static find(e,n){for(let i=0,s=0;i<e.children.length;i++){let a=e.children[i],o=s+a.length;if(o>=n){if(a instanceof yi)return a;if(o>n)break}s=o+a.breakAfter}return null}}class kr extends An{constructor(e,n,i){super(),this.widget=e,this.length=n,this.deco=i,this.breakAfter=0,this.prevWidget=null}merge(e,n,i,s,a,o){return i&&(!(i instanceof kr)||!this.widget.compare(i.widget)||e>0&&a<=0||n<this.length&&o<=0)?!1:(this.length=e+(i?i.length:0)+(this.length-n),!0)}domAtPos(e){return e==0?is.before(this.dom):is.after(this.dom,e==this.length)}split(e){let n=this.length-e;this.length=e;let i=new kr(this.widget,n,this.deco);return i.breakAfter=this.breakAfter,i}get children(){return Sk}sync(e){(!this.dom||!this.widget.updateDOM(this.dom,e))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(e)),this.widget.editable||(this.dom.contentEditable="false"))}get overrideDOMText(){return this.parent?this.parent.view.state.doc.slice(this.posAtStart,this.posAtEnd):an.empty}domBoundsAround(){return null}become(e){return e instanceof kr&&e.widget.constructor==this.widget.constructor?(e.widget.compare(this.widget)||this.markDirty(!0),this.dom&&!this.prevWidget&&(this.prevWidget=this.widget),this.widget=e.widget,this.length=e.length,this.deco=e.deco,this.breakAfter=e.breakAfter,!0):!1}ignoreMutation(){return!0}ignoreEvent(e){return this.widget.ignoreEvent(e)}get isEditable(){return!1}get isWidget(){return!0}coordsAt(e,n){let i=this.widget.coordsAt(this.dom,e,n);return i||(this.widget instanceof ES?null:pp(this.dom.getBoundingClientRect(),this.length?e==0:n<=0))}destroy(){super.destroy(),this.dom&&this.widget.destroy(this.dom)}covers(e){let{startSide:n,endSide:i}=this.deco;return n==i?!1:e<0?n<0:i>0}}class ES extends Er{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}}class im{constructor(e,n,i,s){this.doc=e,this.pos=n,this.end=i,this.disallowBlockEffectsFor=s,this.content=[],this.curLine=null,this.breakAtStart=0,this.pendingBuffer=0,this.bufferMarks=[],this.atCursorPos=!0,this.openStart=-1,this.openEnd=-1,this.text="",this.textOff=0,this.cursor=e.iter(),this.skip=n}posCovered(){if(this.content.length==0)return!this.breakAtStart&&this.doc.lineAt(this.pos).from!=this.pos;let e=this.content[this.content.length-1];return!(e.breakAfter||e instanceof kr&&e.deco.endSide<0)}getLine(){return this.curLine||(this.content.push(this.curLine=new yi),this.atCursorPos=!0),this.curLine}flushBuffer(e=this.bufferMarks){this.pendingBuffer&&(this.curLine.append(v_(new Od(-1),e),e.length),this.pendingBuffer=0)}addBlockWidget(e){this.flushBuffer(),this.curLine=null,this.content.push(e)}finish(e){this.pendingBuffer&&e<=this.bufferMarks.length?this.flushBuffer():this.pendingBuffer=0,!this.posCovered()&&!(e&&this.content.length&&this.content[this.content.length-1]instanceof kr)&&this.getLine()}buildText(e,n,i){for(;e>0;){if(this.textOff==this.text.length){let{value:o,lineBreak:r,done:c}=this.cursor.next(this.skip);if(this.skip=0,c)throw new Error("Ran out of text content when drawing inline views");if(r){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer(),this.curLine=null,this.atCursorPos=!0,e--;continue}else this.text=o,this.textOff=0}let s=Math.min(this.text.length-this.textOff,e),a=Math.min(s,512);this.flushBuffer(n.slice(n.length-i)),this.getLine().append(v_(new $a(this.text.slice(this.textOff,this.textOff+a)),n),i),this.atCursorPos=!0,this.textOff+=a,e-=a,i=s<=a?0:n.length}}span(e,n,i,s){this.buildText(n-e,i,s),this.pos=n,this.openStart<0&&(this.openStart=s)}point(e,n,i,s,a,o){if(this.disallowBlockEffectsFor[o]&&i instanceof Pl){if(i.block)throw new RangeError("Block decorations may not be specified via plugins");if(n>this.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}let r=n-e;if(i instanceof Pl)if(i.block)i.startSide>0&&!this.posCovered()&&this.getLine(),this.addBlockWidget(new kr(i.widget||Pd.block,r,i));else{let c=xr.create(i.widget||Pd.inline,r,r?0:i.startSide),d=this.atCursorPos&&!c.isEditable&&a<=s.length&&(e<n||i.startSide>0),f=!c.isEditable&&(e<n||a>s.length||i.startSide<=0),p=this.getLine();this.pendingBuffer==2&&!d&&!c.isEditable&&(this.pendingBuffer=0),this.flushBuffer(s),d&&(p.append(v_(new Od(1),s),a),a=s.length+Math.max(0,a-s.length)),p.append(v_(c,s),a),this.atCursorPos=f,this.pendingBuffer=f?e<n||a>s.length?1:2:0,this.pendingBuffer&&(this.bufferMarks=s.slice())}else this.doc.lineAt(this.pos).from==this.pos&&this.getLine().addLineDeco(i);r&&(this.textOff+r<=this.text.length?this.textOff+=r:(this.skip+=r-(this.text.length-this.textOff),this.text="",this.textOff=0),this.pos=n),this.openStart<0&&(this.openStart=a)}static build(e,n,i,s,a){let o=new im(e,n,i,a);return o.openEnd=cn.spans(s,n,i,o),o.openStart<0&&(o.openStart=o.openEnd),o.finish(o.openEnd),o}}function v_(t,e){for(let n of e)t=new Mr(n,[t],t.length);return t}class Pd extends Er{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}}Pd.inline=new Pd("span");Pd.block=new Pd("div");var Un=(function(t){return t[t.LTR=0]="LTR",t[t.RTL=1]="RTL",t})(Un||(Un={}));const zc=Un.LTR,wk=Un.RTL;function o6(t){let e=[];for(let n=0;n<t.length;n++)e.push(1<<+t[n]);return e}const Hge=o6("88888888888888888888888888888888888666888888787833333333337888888000000000000000000000000008888880000000000000000000000000088888888888888888888888888888888888887866668888088888663380888308888800000000000000000000000800000000000000000000000000000008"),Wge=o6("4444448826627288999999999992222222222222222222222222222222222222222222222229999999999999999999994444444444644222822222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222999999949999999229989999223333333333"),jS=Object.create(null),ro=[];for(let t of["()","[]","{}"]){let e=t.charCodeAt(0),n=t.charCodeAt(1);jS[e]=n,jS[n]=-e}function r6(t){return t<=247?Hge[t]:1424<=t&&t<=1524?2:1536<=t&&t<=1785?Wge[t-1536]:1774<=t&&t<=2220?4:8192<=t&&t<=8204?256:64336<=t&&t<=65023?4:1}const Gge=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\ufb50-\ufdff]/;class xl{get dir(){return this.level%2?wk:zc}constructor(e,n,i){this.from=e,this.to=n,this.level=i}side(e,n){return this.dir==n==e?this.to:this.from}forward(e,n){return e==(this.dir==n)}static find(e,n,i,s){let a=-1;for(let o=0;o<e.length;o++){let r=e[o];if(r.from<=n&&r.to>=n){if(r.level==i)return o;(a<0||(s!=0?s<0?r.from<n:r.to>n:e[a].level>r.level))&&(a=o)}}if(a<0)throw new RangeError("Index out of range");return a}}function l6(t,e){if(t.length!=e.length)return!1;for(let n=0;n<t.length;n++){let i=t[n],s=e[n];if(i.from!=s.from||i.to!=s.to||i.direction!=s.direction||!l6(i.inner,s.inner))return!1}return!0}const Mn=[];function $ge(t,e,n,i,s){for(let a=0;a<=i.length;a++){let o=a?i[a-1].to:e,r=a<i.length?i[a].from:n,c=a?256:s;for(let d=o,f=c,p=c;d<r;d++){let g=r6(t.charCodeAt(d));g==512?g=f:g==8&&p==4&&(g=16),Mn[d]=g==4?2:g,g&7&&(p=g),f=g}for(let d=o,f=c,p=c;d<r;d++){let g=Mn[d];if(g==128)d<r-1&&f==Mn[d+1]&&f&24?g=Mn[d]=f:Mn[d]=256;else if(g==64){let y=d+1;for(;y<r&&Mn[y]==64;)y++;let _=d&&f==8||y<n&&Mn[y]==8?p==1?1:8:256;for(let v=d;v<y;v++)Mn[v]=_;d=y-1}else g==8&&p==1&&(Mn[d]=1);f=g,g&7&&(p=g)}}}function Xge(t,e,n,i,s){let a=s==1?2:1;for(let o=0,r=0,c=0;o<=i.length;o++){let d=o?i[o-1].to:e,f=o<i.length?i[o].from:n;for(let p=d,g,y,_;p<f;p++)if(y=jS[g=t.charCodeAt(p)])if(y<0){for(let v=r-3;v>=0;v-=3)if(ro[v+1]==-y){let x=ro[v+2],k=x&2?s:x&4?x&1?a:s:0;k&&(Mn[p]=Mn[ro[v]]=k),r=v;break}}else{if(ro.length==189)break;ro[r++]=p,ro[r++]=g,ro[r++]=c}else if((_=Mn[p])==2||_==1){let v=_==s;c=v?0:1;for(let x=r-3;x>=0;x-=3){let k=ro[x+2];if(k&2)break;if(v)ro[x+2]|=2;else{if(k&4)break;ro[x+2]|=4}}}}}function Qge(t,e,n,i){for(let s=0,a=i;s<=n.length;s++){let o=s?n[s-1].to:t,r=s<n.length?n[s].from:e;for(let c=o;c<r;){let d=Mn[c];if(d==256){let f=c+1;for(;;)if(f==r){if(s==n.length)break;f=n[s++].to,r=s<n.length?n[s].from:e}else if(Mn[f]==256)f++;else break;let p=a==1,g=(f<e?Mn[f]:i)==1,y=p==g?p?1:2:i;for(let _=f,v=s,x=v?n[v-1].to:t;_>c;)_==x&&(_=n[--v].from,x=v?n[v-1].to:t),Mn[--_]=y;c=f}else a=d,c++}}}function RS(t,e,n,i,s,a,o){let r=i%2?2:1;if(i%2==s%2)for(let c=e,d=0;c<n;){let f=!0,p=!1;if(d==a.length||c<a[d].from){let v=Mn[c];v!=r&&(f=!1,p=v==16)}let g=!f&&r==1?[]:null,y=f?i:i+1,_=c;e:for(;;)if(d<a.length&&_==a[d].from){if(p)break e;let v=a[d];if(!f)for(let x=v.to,k=d+1;;){if(x==n)break e;if(k<a.length&&a[k].from==x)x=a[k++].to;else{if(Mn[x]==r)break e;break}}if(d++,g)g.push(v);else{v.from>c&&o.push(new xl(c,v.from,y));let x=v.direction==zc!=!(y%2);DS(t,x?i+1:i,s,v.inner,v.from,v.to,o),c=v.to}_=v.to}else{if(_==n||(f?Mn[_]!=r:Mn[_]==r))break;_++}g?RS(t,c,_,i+1,s,g,o):c<_&&o.push(new xl(c,_,y)),c=_}else for(let c=n,d=a.length;c>e;){let f=!0,p=!1;if(!d||c>a[d-1].to){let v=Mn[c-1];v!=r&&(f=!1,p=v==16)}let g=!f&&r==1?[]:null,y=f?i:i+1,_=c;e:for(;;)if(d&&_==a[d-1].to){if(p)break e;let v=a[--d];if(!f)for(let x=v.from,k=d;;){if(x==e)break e;if(k&&a[k-1].to==x)x=a[--k].from;else{if(Mn[x-1]==r)break e;break}}if(g)g.push(v);else{v.to<c&&o.push(new xl(v.to,c,y));let x=v.direction==zc!=!(y%2);DS(t,x?i+1:i,s,v.inner,v.from,v.to,o),c=v.from}_=v.from}else{if(_==e||(f?Mn[_-1]!=r:Mn[_-1]==r))break;_--}g?RS(t,_,c,i+1,s,g,o):_<c&&o.push(new xl(_,c,y)),c=_}}function DS(t,e,n,i,s,a,o){let r=e%2?2:1;$ge(t,s,a,i,r),Xge(t,s,a,i,r),Qge(s,a,i,r),RS(t,s,a,e,n,i,o)}function Yge(t,e,n){if(!t)return[new xl(0,0,e==wk?1:0)];if(e==zc&&!n.length&&!Gge.test(t))return c6(t.length);if(n.length)for(;t.length>Mn.length;)Mn[Mn.length]=256;let i=[],s=e==zc?0:1;return DS(t,s,s,n,0,t.length,i),i}function c6(t){return[new xl(0,t,0)]}let u6="";function Jge(t,e,n,i,s){var a;let o=i.head-t.from,r=xl.find(e,o,(a=i.bidiLevel)!==null&&a!==void 0?a:-1,i.assoc),c=e[r],d=c.side(s,n);if(o==d){let g=r+=s?1:-1;if(g<0||g>=e.length)return null;c=e[r=g],o=c.side(!s,n),d=c.side(s,n)}let f=Wi(t.text,o,c.forward(s,n));(f<c.from||f>c.to)&&(f=d),u6=t.text.slice(Math.min(o,f),Math.max(o,f));let p=r==(s?e.length-1:0)?null:e[r+(s?1:-1)];return p&&f==d&&p.level+(s?0:1)<c.level?je.cursor(p.side(!s,n)+t.from,p.forward(s,n)?1:-1,p.level):je.cursor(f+t.from,c.forward(s,n)?-1:1,c.level)}function Zge(t,e,n){for(let i=e;i<n;i++){let s=r6(t.charCodeAt(i));if(s==1)return zc;if(s==2||s==4)return wk}return zc}const d6=tt.define(),h6=tt.define(),f6=tt.define(),m6=tt.define(),FS=tt.define(),p6=tt.define(),g6=tt.define(),kk=tt.define(),Ck=tt.define(),_6=tt.define({combine:t=>t.some(e=>e)}),y6=tt.define({combine:t=>t.some(e=>e)}),b6=tt.define();class pd{constructor(e,n="nearest",i="nearest",s=5,a=5,o=!1){this.range=e,this.y=n,this.x=i,this.yMargin=s,this.xMargin=a,this.isSnapshot=o}map(e){return e.empty?this:new pd(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new pd(je.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}}const x_=Rt.define({map:(t,e)=>t.map(e)}),v6=Rt.define();function Ds(t,e,n){let i=t.facet(m6);i.length?i[0](e):window.onerror&&window.onerror(String(e),n,void 0,void 0,e)||(n?console.error(n+":",e):console.error(e))}const yr=tt.define({combine:t=>t.length?t[0]:!0});let e_e=0;const ed=tt.define({combine(t){return t.filter((e,n)=>{for(let i=0;i<n;i++)if(t[i].plugin==e.plugin)return!1;return!0})}});class li{constructor(e,n,i,s,a){this.id=e,this.create=n,this.domEventHandlers=i,this.domEventObservers=s,this.baseExtensions=a(this),this.extension=this.baseExtensions.concat(ed.of({plugin:this,arg:void 0}))}of(e){return this.baseExtensions.concat(ed.of({plugin:this,arg:e}))}static define(e,n){const{eventHandlers:i,eventObservers:s,provide:a,decorations:o}=n||{};return new li(e_e++,e,i,s,r=>{let c=[];return o&&c.push(Am.of(d=>{let f=d.plugin(r);return f?o(f):xt.none})),a&&c.push(a(r)),c})}static fromClass(e,n){return li.define((i,s)=>new e(i,s),n)}}class j1{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(e){if(this.value){if(this.mustUpdate){let n=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(n)}catch(i){if(Ds(n.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg)}catch(n){Ds(e.state,n,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var n;if(!((n=this.value)===null||n===void 0)&&n.destroy)try{this.value.destroy()}catch(i){Ds(e.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const x6=tt.define(),Ak=tt.define(),Am=tt.define(),S6=tt.define(),yp=tt.define(),w6=tt.define();function IE(t,e){let n=t.state.facet(w6);if(!n.length)return n;let i=n.map(a=>a instanceof Function?a(t):a),s=[];return cn.spans(i,e.from,e.to,{point(){},span(a,o,r,c){let d=a-e.from,f=o-e.from,p=s;for(let g=r.length-1;g>=0;g--,c--){let y=r[g].spec.bidiIsolate,_;if(y==null&&(y=Zge(e.text,d,f)),c>0&&p.length&&(_=p[p.length-1]).to==d&&_.direction==y)_.to=f,p=_.inner;else{let v={from:d,to:f,direction:y,inner:[]};p.push(v),p=v.inner}}}}),s}const k6=tt.define();function Nk(t){let e=0,n=0,i=0,s=0;for(let a of t.state.facet(k6)){let o=a(t);o&&(o.left!=null&&(e=Math.max(e,o.left)),o.right!=null&&(n=Math.max(n,o.right)),o.top!=null&&(i=Math.max(i,o.top)),o.bottom!=null&&(s=Math.max(s,o.bottom)))}return{left:e,right:n,top:i,bottom:s}}const Pf=tt.define();class wa{constructor(e,n,i,s){this.fromA=e,this.toA=n,this.fromB=i,this.toB=s}join(e){return new wa(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let n=e.length,i=this;for(;n>0;n--){let s=e[n-1];if(!(s.fromA>i.toA)){if(s.toA<i.fromA)break;i=i.join(s),e.splice(n-1,1)}}return e.splice(n,0,i),e}static extendWithRanges(e,n){if(n.length==0)return e;let i=[];for(let s=0,a=0,o=0,r=0;;s++){let c=s==e.length?null:e[s],d=o-r,f=c?c.fromB:1e9;for(;a<n.length&&n[a]<f;){let p=n[a],g=n[a+1],y=Math.max(r,p),_=Math.min(f,g);if(y<=_&&new wa(y+d,_+d,y,_).addToSet(i),g>f)break;a+=2}if(!c)return i;new wa(c.fromA,c.toA,c.fromB,c.toB).addToSet(i),o=c.toA,r=c.toB}}}class J0{constructor(e,n,i){this.view=e,this.state=n,this.transactions=i,this.flags=0,this.startState=e.state,this.changes=ki.empty(this.startState.doc.length);for(let a of i)this.changes=this.changes.compose(a.changes);let s=[];this.changes.iterChangedRanges((a,o,r,c)=>s.push(new wa(a,o,r,c))),this.changedRanges=s}static create(e,n,i){return new J0(e,n,i)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}}class BE extends An{get length(){return this.view.state.doc.length}constructor(e){super(),this.view=e,this.decorations=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.markedForComposition=new Set,this.editContextFormatting=xt.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(e.contentDOM),this.children=[new yi],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new wa(0,0,0,e.state.doc.length)],0,null)}update(e){var n;let i=e.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:d,toA:f})=>f<this.minWidthFrom||d>this.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((n=this.domChanged)===null||n===void 0)&&n.newSel?s=this.domChanged.newSel.head:!r_e(e.changes,this.hasComposition)&&!e.selectionSet&&(s=e.state.selection.main.head));let a=s>-1?n_e(this.view,e.changes,s):null;if(this.domChanged=null,this.hasComposition){this.markedForComposition.clear();let{from:d,to:f}=this.hasComposition;i=new wa(d,f,e.changes.mapPos(d,-1),e.changes.mapPos(f,1)).addToSet(i.slice())}this.hasComposition=a?{from:a.range.fromB,to:a.range.toB}:null,($e.ie||$e.chrome)&&!a&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,r=this.updateDeco(),c=a_e(o,r,e.changes);return i=wa.extendWithRanges(i,c),!(this.flags&7)&&i.length==0?!1:(this.updateInner(i,e.startState.doc.length,a),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,n,i){this.view.viewState.mustMeasureContent=!0,this.updateChildren(e,n,i);let{observer:s}=this.view;s.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let o=$e.chrome||$e.ios?{node:s.selectionRange.focusNode,written:!1}:void 0;this.sync(this.view,o),this.flags&=-8,o&&(o.written||s.selectionRange.focusNode!=o.node)&&(this.forceSelection=!0),this.dom.style.height=""}),this.markedForComposition.forEach(o=>o.flags&=-9);let a=[];if(this.view.viewport.from||this.view.viewport.to<this.view.state.doc.length)for(let o of this.children)o instanceof kr&&o.widget instanceof ES&&a.push(o.dom);s.updateGaps(a)}updateChildren(e,n,i){let s=i?i.range.addToSet(e.slice()):e,a=this.childCursor(n);for(let o=s.length-1;;o--){let r=o>=0?s[o]:null;if(!r)break;let{fromA:c,toA:d,fromB:f,toB:p}=r,g,y,_,v;if(i&&i.range.fromB<p&&i.range.toB>f){let L=im.build(this.view.state.doc,f,i.range.fromB,this.decorations,this.dynamicDecorationMap),M=im.build(this.view.state.doc,i.range.toB,p,this.decorations,this.dynamicDecorationMap);y=L.breakAtStart,_=L.openStart,v=M.openEnd;let O=this.compositionView(i);M.breakAtStart?O.breakAfter=1:M.content.length&&O.merge(O.length,O.length,M.content[0],!1,M.openStart,0)&&(O.breakAfter=M.content[0].breakAfter,M.content.shift()),L.content.length&&O.merge(0,0,L.content[L.content.length-1],!0,0,L.openEnd)&&L.content.pop(),g=L.content.concat(O).concat(M.content)}else({content:g,breakAtStart:y,openStart:_,openEnd:v}=im.build(this.view.state.doc,f,p,this.decorations,this.dynamicDecorationMap));let{i:x,off:k}=a.findPos(d,1),{i:C,off:N}=a.findPos(c,-1);e6(this,C,N,x,k,g,y,_,v)}i&&this.fixCompositionDOM(i)}updateEditContextFormatting(e){this.editContextFormatting=this.editContextFormatting.map(e.changes);for(let n of e.transactions)for(let i of n.effects)i.is(v6)&&(this.editContextFormatting=i.value)}compositionView(e){let n=new $a(e.text.nodeValue);n.flags|=8;for(let{deco:s}of e.marks)n=new Mr(s,[n],n.length);let i=new yi;return i.append(n,0),i}fixCompositionDOM(e){let n=(a,o)=>{o.flags|=8|(o.children.some(c=>c.flags&7)?1:0),this.markedForComposition.add(o);let r=An.get(a);r&&r!=o&&(r.dom=null),o.setDOM(a)},i=this.childPos(e.range.fromB,1),s=this.children[i.i];n(e.line,s);for(let a=e.marks.length-1;a>=-1;a--)i=s.childPos(i.off,1),s=s.children[i.i],n(a>=0?e.marks[a].node:e.text,s)}updateSelection(e=!1,n=!1){(e||!this.view.observer.selectionRange.focusNode)&&this.view.observer.readSelectionRange();let i=this.view.root.activeElement,s=i==this.dom,a=!s&&!(this.view.state.facet(yr)||this.dom.tabIndex>-1)&&h0(this.dom,this.view.observer.selectionRange)&&!(i&&this.dom.contains(i));if(!(s||n||a))return;let o=this.forceSelection;this.forceSelection=!1;let r=this.view.state.selection.main,c=this.moveToLine(this.domAtPos(r.anchor)),d=r.empty?c:this.moveToLine(this.domAtPos(r.head));if($e.gecko&&r.empty&&!this.hasComposition&&t_e(c)){let p=document.createTextNode("");this.view.observer.ignore(()=>c.node.insertBefore(p,c.node.childNodes[c.offset]||null)),c=d=new is(p,0),o=!0}let f=this.view.observer.selectionRange;(o||!f.focusNode||(!nm(c.node,c.offset,f.anchorNode,f.anchorOffset)||!nm(d.node,d.offset,f.focusNode,f.focusOffset))&&!this.suppressWidgetCursorChange(f,r))&&(this.view.observer.ignore(()=>{$e.android&&$e.chrome&&this.dom.contains(f.focusNode)&&o_e(f.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let p=Cm(this.view.root);if(p)if(r.empty){if($e.gecko){let g=i_e(c.node,c.offset);if(g&&g!=3){let y=(g==1?YD:JD)(c.node,c.offset);y&&(c=new is(y.node,y.offset))}}p.collapse(c.node,c.offset),r.bidiLevel!=null&&p.caretBidiLevel!==void 0&&(p.caretBidiLevel=r.bidiLevel)}else if(p.extend){p.collapse(c.node,c.offset);try{p.extend(d.node,d.offset)}catch{}}else{let g=document.createRange();r.anchor>r.head&&([c,d]=[d,c]),g.setEnd(d.node,d.offset),g.setStart(c.node,c.offset),p.removeAllRanges(),p.addRange(g)}a&&this.view.root.activeElement==this.dom&&(this.dom.blur(),i&&i.focus())}),this.view.observer.setSelectionRange(c,d)),this.impreciseAnchor=c.precise?null:new is(f.anchorNode,f.anchorOffset),this.impreciseHead=d.precise?null:new is(f.focusNode,f.focusOffset)}suppressWidgetCursorChange(e,n){return this.hasComposition&&n.empty&&nm(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==n.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,n=e.state.selection.main,i=Cm(e.root),{anchorNode:s,anchorOffset:a}=e.observer.selectionRange;if(!i||!n.empty||!n.assoc||!i.modify)return;let o=yi.find(this,n.head);if(!o)return;let r=o.posAtStart;if(n.head==r||n.head==r+o.length)return;let c=this.coordsAt(n.head,-1),d=this.coordsAt(n.head,1);if(!c||!d||c.bottom>d.top)return;let f=this.domAtPos(n.head+n.assoc);i.collapse(f.node,f.offset),i.modify("move",n.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let p=e.observer.selectionRange;e.docView.posFromDOM(p.anchorNode,p.anchorOffset)!=n.from&&i.collapse(s,a)}moveToLine(e){let n=this.dom,i;if(e.node!=n)return e;for(let s=e.offset;!i&&s<n.childNodes.length;s++){let a=An.get(n.childNodes[s]);a instanceof yi&&(i=a.domAtPos(0))}for(let s=e.offset-1;!i&&s>=0;s--){let a=An.get(n.childNodes[s]);a instanceof yi&&(i=a.domAtPos(a.length))}return i?new is(i.node,i.offset,!0):e}nearest(e){for(let n=e;n;){let i=An.get(n);if(i&&i.rootView==this)return i;n=n.parentNode}return null}posFromDOM(e,n){let i=this.nearest(e);if(!i)throw new RangeError("Trying to find position for a DOM position outside of the document");return i.localPosFromDOM(e,n)+i.posAtStart}domAtPos(e){let{i:n,off:i}=this.childCursor().findPos(e,-1);for(;n<this.children.length-1;){let s=this.children[n];if(i<s.length||s instanceof yi)break;n++,i=0}return this.children[n].domAtPos(i)}coordsAt(e,n){let i=null,s=0;for(let a=this.length,o=this.children.length-1;o>=0;o--){let r=this.children[o],c=a-r.breakAfter,d=c-r.length;if(c<e)break;if(d<=e&&(d<e||r.covers(-1))&&(c>e||r.covers(1))&&(!i||r instanceof yi&&!(i instanceof yi&&n>=0)))i=r,s=d;else if(i&&d==e&&c==e&&r instanceof kr&&Math.abs(n)<2){if(r.deco.startSide<0)break;o&&(i=null)}a=d}return i?i.coordsAt(e-s,n):null}coordsForChar(e){let{i:n,off:i}=this.childPos(e,1),s=this.children[n];if(!(s instanceof yi))return null;for(;s.children.length;){let{i:r,off:c}=s.childPos(i,1);for(;;r++){if(r==s.children.length)return null;if((s=s.children[r]).length)break}i=c}if(!(s instanceof $a))return null;let a=Wi(s.text,i);if(a==i)return null;let o=qc(s.dom,i,a).getClientRects();for(let r=0;r<o.length;r++){let c=o[r];if(r==o.length-1||c.top<c.bottom&&c.left<c.right)return c}return null}measureVisibleLineHeights(e){let n=[],{from:i,to:s}=e,a=this.view.contentDOM.clientWidth,o=a>Math.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,r=-1,c=this.view.textDirection==Un.LTR;for(let d=0,f=0;f<this.children.length;f++){let p=this.children[f],g=d+p.length;if(g>s)break;if(d>=i){let y=p.dom.getBoundingClientRect();if(n.push(y.height),o){let _=p.dom.lastChild,v=_?Ld(_):[];if(v.length){let x=v[v.length-1],k=c?x.right-y.left:y.right-x.left;k>r&&(r=k,this.minWidth=a,this.minWidthFrom=d,this.minWidthTo=g)}}}d=g+p.breakAfter}return n}textDirectionAt(e){let{i:n}=this.childPos(e,1);return getComputedStyle(this.children[n].dom).direction=="rtl"?Un.RTL:Un.LTR}measureTextSize(){for(let a of this.children)if(a instanceof yi){let o=a.measureTextSize();if(o)return o}let e=document.createElement("div"),n,i,s;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.dom.appendChild(e);let a=Ld(e.firstChild)[0];n=e.getBoundingClientRect().height,i=a?a.width/27:7,s=a?a.height:n,e.remove()}),{lineHeight:n,charWidth:i,textHeight:s}}childCursor(e=this.length){let n=this.children.length;return n&&(e-=this.children[--n].length),new ZD(this.children,e,n)}computeBlockGapDeco(){let e=[],n=this.view.viewState;for(let i=0,s=0;;s++){let a=s==n.viewports.length?null:n.viewports[s],o=a?a.from-1:this.length;if(o>i){let r=(n.lineBlockAt(o).bottom-n.lineBlockAt(i).top)/this.view.scaleY;e.push(xt.replace({widget:new ES(r),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!a)break;i=a.to+1}return xt.set(e)}updateDeco(){let e=1,n=this.view.state.facet(Am).map(a=>(this.dynamicDecorationMap[e++]=typeof a=="function")?a(this.view):a),i=!1,s=this.view.state.facet(S6).map((a,o)=>{let r=typeof a=="function";return r&&(i=!0),r?a(this.view):a});for(s.length&&(this.dynamicDecorationMap[e++]=i,n.push(cn.join(s))),this.decorations=[this.editContextFormatting,...n,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];e<this.decorations.length;)this.dynamicDecorationMap[e++]=!1;return this.decorations}scrollIntoView(e){if(e.isSnapshot){let d=this.view.viewState.lineBlockAt(e.range.head);this.view.scrollDOM.scrollTop=d.top-e.yMargin,this.view.scrollDOM.scrollLeft=e.xMargin;return}for(let d of this.view.state.facet(b6))try{if(d(this.view,e.range,e))return!0}catch(f){Ds(this.view.state,f,"scroll handler")}let{range:n}=e,i=this.coordsAt(n.head,n.empty?n.assoc:n.head>n.anchor?-1:1),s;if(!i)return;!n.empty&&(s=this.coordsAt(n.anchor,n.anchor>n.head?-1:1))&&(i={left:Math.min(i.left,s.left),top:Math.min(i.top,s.top),right:Math.max(i.right,s.right),bottom:Math.max(i.bottom,s.bottom)});let a=Nk(this.view),o={left:i.left-a.left,top:i.top-a.top,right:i.right+a.right,bottom:i.bottom+a.bottom},{offsetWidth:r,offsetHeight:c}=this.view.scrollDOM;jge(this.view.scrollDOM,o,n.head<n.anchor?-1:1,e.x,e.y,Math.max(Math.min(e.xMargin,r),-r),Math.max(Math.min(e.yMargin,c),-c),this.view.textDirection==Un.LTR)}lineHasWidget(e){let{i:n}=this.childCursor().findPos(e);if(n==this.children.length)return!1;let i=s=>s instanceof xr||s.children.some(i);return i(this.children[n])}}function t_e(t){return t.node.nodeType==1&&t.node.firstChild&&(t.offset==0||t.node.childNodes[t.offset-1].contentEditable=="false")&&(t.offset==t.node.childNodes.length||t.node.childNodes[t.offset].contentEditable=="false")}function C6(t,e){let n=t.observer.selectionRange;if(!n.focusNode)return null;let i=YD(n.focusNode,n.focusOffset),s=JD(n.focusNode,n.focusOffset),a=i||s;if(s&&i&&s.node!=i.node){let r=An.get(s.node);if(!r||r instanceof $a&&r.text!=s.node.nodeValue)a=s;else if(t.docView.lastCompositionAfterCursor){let c=An.get(i.node);!c||c instanceof $a&&c.text!=i.node.nodeValue||(a=s)}}if(t.docView.lastCompositionAfterCursor=a!=i,!a)return null;let o=e-a.offset;return{from:o,to:o+a.node.nodeValue.length,node:a.node}}function n_e(t,e,n){let i=C6(t,n);if(!i)return null;let{node:s,from:a,to:o}=i,r=s.nodeValue;if(/[\n\r]/.test(r)||t.state.doc.sliceString(i.from,i.to)!=r)return null;let c=e.invertedDesc,d=new wa(c.mapPos(a),c.mapPos(o),a,o),f=[];for(let p=s.parentNode;;p=p.parentNode){let g=An.get(p);if(g instanceof Mr)f.push({node:p,deco:g.mark});else{if(g instanceof yi||p.nodeName=="DIV"&&p.parentNode==t.contentDOM)return{range:d,text:s,marks:f,line:p};if(p!=t.contentDOM)f.push({node:p,deco:new gp({inclusive:!0,attributes:Kge(p),tagName:p.tagName.toLowerCase()})});else return null}}}function i_e(t,e){return t.nodeType!=1?0:(e&&t.childNodes[e-1].contentEditable=="false"?1:0)|(e<t.childNodes.length&&t.childNodes[e].contentEditable=="false"?2:0)}let s_e=class{constructor(){this.changes=[]}compareRange(e,n){f0(e,n,this.changes)}comparePoint(e,n){f0(e,n,this.changes)}boundChange(e){f0(e,e,this.changes)}};function a_e(t,e,n){let i=new s_e;return cn.compare(t,e,n,i),i.changes}function o_e(t,e){for(let n=t;n&&n!=e;n=n.assignedSlot||n.parentNode)if(n.nodeType==1&&n.contentEditable=="false")return!0;return!1}function r_e(t,e){let n=!1;return e&&t.iterChangedRanges((i,s)=>{i<e.to&&s>e.from&&(n=!0)}),n}function l_e(t,e,n=1){let i=t.charCategorizer(e),s=t.doc.lineAt(e),a=e-s.from;if(s.length==0)return je.cursor(e);a==0?n=1:a==s.length&&(n=-1);let o=a,r=a;n<0?o=Wi(s.text,a,!1):r=Wi(s.text,a);let c=i(s.text.slice(o,r));for(;o>0;){let d=Wi(s.text,o,!1);if(i(s.text.slice(d,o))!=c)break;o=d}for(;r<s.length;){let d=Wi(s.text,r);if(i(s.text.slice(r,d))!=c)break;r=d}return je.range(o+s.from,r+s.from)}function c_e(t,e){return e.left>t?e.left-t:Math.max(0,t-e.right)}function u_e(t,e){return e.top>t?e.top-t:Math.max(0,t-e.bottom)}function R1(t,e){return t.top<e.bottom-1&&t.bottom>e.top+1}function UE(t,e){return e<t.top?{top:e,left:t.left,right:t.right,bottom:t.bottom}:t}function qE(t,e){return e>t.bottom?{top:t.top,left:t.left,right:t.right,bottom:e}:t}function IS(t,e,n){let i,s,a,o,r=!1,c,d,f,p;for(let _=t.firstChild;_;_=_.nextSibling){let v=Ld(_);for(let x=0;x<v.length;x++){let k=v[x];s&&R1(s,k)&&(k=UE(qE(k,s.bottom),s.top));let C=c_e(e,k),N=u_e(n,k);if(C==0&&N==0)return _.nodeType==3?zE(_,e,n):IS(_,e,n);(!i||o>N||o==N&&a>C)&&(i=_,s=k,a=C,o=N,r=C?e<k.left?x>0:x<v.length-1:!0),C==0?n>k.bottom&&(!f||f.bottom<k.bottom)?(c=_,f=k):n<k.top&&(!p||p.top>k.top)&&(d=_,p=k):f&&R1(f,k)?f=qE(f,k.bottom):p&&R1(p,k)&&(p=UE(p,k.top))}}if(f&&f.bottom>=n?(i=c,s=f):p&&p.top<=n&&(i=d,s=p),!i)return{node:t,offset:0};let g=Math.max(s.left,Math.min(s.right,e));if(i.nodeType==3)return zE(i,g,n);if(r&&i.contentEditable!="false")return IS(i,g,n);let y=Array.prototype.indexOf.call(t.childNodes,i)+(e>=(s.left+s.right)/2?1:0);return{node:t,offset:y}}function zE(t,e,n){let i=t.nodeValue.length,s=-1,a=1e9,o=0;for(let r=0;r<i;r++){let c=qc(t,r,r+1).getClientRects();for(let d=0;d<c.length;d++){let f=c[d];if(f.top==f.bottom)continue;o||(o=e-f.left);let p=(f.top>n?f.top-n:n-f.bottom)-1;if(f.left-1<=e&&f.right+1>=e&&p<a){let g=e>=(f.left+f.right)/2,y=g;if($e.chrome||$e.gecko){let _=qc(t,r).getBoundingClientRect();Math.abs(_.left-f.right)<.1&&(y=!g)}if(p<=0)return{node:t,offset:r+(y?1:0)};s=r+(y?1:0),a=p}}}return{node:t,offset:s>-1?s:o>0?t.nodeValue.length:0}}function A6(t,e,n,i=-1){var s,a;let o=t.contentDOM.getBoundingClientRect(),r=o.top+t.viewState.paddingTop,c,{docHeight:d}=t.viewState,{x:f,y:p}=e,g=p-r;if(g<0)return 0;if(g>d)return t.state.doc.length;for(let L=t.viewState.heightOracle.textHeight/2,M=!1;c=t.elementAtHeight(g),c.type!=bs.Text;)for(;g=i>0?c.bottom+L:c.top-L,!(g>=0&&g<=d);){if(M)return n?null:0;M=!0,i=-i}p=r+g;let y=c.from;if(y<t.viewport.from)return t.viewport.from==0?0:n?null:KE(t,o,c,f,p);if(y>t.viewport.to)return t.viewport.to==t.state.doc.length?t.state.doc.length:n?null:KE(t,o,c,f,p);let _=t.dom.ownerDocument,v=t.root.elementFromPoint?t.root:_,x=v.elementFromPoint(f,p);x&&!t.contentDOM.contains(x)&&(x=null),x||(f=Math.max(o.left+1,Math.min(o.right-1,f)),x=v.elementFromPoint(f,p),x&&!t.contentDOM.contains(x)&&(x=null));let k,C=-1;if(x&&((s=t.docView.nearest(x))===null||s===void 0?void 0:s.isEditable)!=!1){if(_.caretPositionFromPoint){let L=_.caretPositionFromPoint(f,p);L&&({offsetNode:k,offset:C}=L)}else if(_.caretRangeFromPoint){let L=_.caretRangeFromPoint(f,p);L&&({startContainer:k,startOffset:C}=L)}k&&(!t.contentDOM.contains(k)||$e.safari&&d_e(k,C,f)||$e.chrome&&h_e(k,C,f))&&(k=void 0),k&&(C=Math.min(Mo(k),C))}if(!k||!t.docView.dom.contains(k)){let L=yi.find(t.docView,y);if(!L)return g>c.top+c.height/2?c.to:c.from;({node:k,offset:C}=IS(L.dom,f,p))}let N=t.docView.nearest(k);if(!N)return null;if(N.isWidget&&((a=N.dom)===null||a===void 0?void 0:a.nodeType)==1){let L=N.dom.getBoundingClientRect();return e.y<L.top||e.y<=L.bottom&&e.x<=(L.left+L.right)/2?N.posAtStart:N.posAtEnd}else return N.localPosFromDOM(k,C)+N.posAtStart}function KE(t,e,n,i,s){let a=Math.round((i-e.left)*t.defaultCharacterWidth);if(t.lineWrapping&&n.height>t.defaultLineHeight*1.5){let r=t.viewState.heightOracle.textHeight,c=Math.floor((s-n.top-(t.defaultLineHeight-r)*.5)/r);a+=c*t.viewState.heightOracle.lineLength}let o=t.state.sliceDoc(n.from,n.to);return n.from+wS(o,a,t.state.tabSize)}function N6(t,e,n){let i,s=t;if(t.nodeType!=3||e!=(i=t.nodeValue.length))return!1;for(;;){let a=s.nextSibling;if(a){if(a.nodeName=="BR")break;return!1}else{let o=s.parentNode;if(!o||o.nodeName=="DIV")break;s=o}}return qc(t,i-1,i).getBoundingClientRect().right>n}function d_e(t,e,n){return N6(t,e,n)}function h_e(t,e,n){if(e!=0)return N6(t,e,n);for(let s=t;;){let a=s.parentNode;if(!a||a.nodeType!=1||a.firstChild!=s)return!1;if(a.classList.contains("cm-line"))break;s=a}let i=t.nodeType==1?t.getBoundingClientRect():qc(t,0,Math.max(t.nodeValue.length,1)).getBoundingClientRect();return n-i.left>5}function BS(t,e,n){let i=t.lineBlockAt(e);if(Array.isArray(i.type)){let s;for(let a of i.type){if(a.from>e)break;if(!(a.to<e)){if(a.from<e&&a.to>e)return a;(!s||a.type==bs.Text&&(s.type!=a.type||(n<0?a.from<e:a.to>e)))&&(s=a)}}return s||i}return i}function f_e(t,e,n,i){let s=BS(t,e.head,e.assoc||-1),a=!i||s.type!=bs.Text||!(t.lineWrapping||s.widgetLineBreaks)?null:t.coordsAtPos(e.assoc<0&&e.head>s.from?e.head-1:e.head);if(a){let o=t.dom.getBoundingClientRect(),r=t.textDirectionAt(s.from),c=t.posAtCoords({x:n==(r==Un.LTR)?o.right-1:o.left+1,y:(a.top+a.bottom)/2});if(c!=null)return je.cursor(c,n?-1:1)}return je.cursor(n?s.to:s.from,n?-1:1)}function VE(t,e,n,i){let s=t.state.doc.lineAt(e.head),a=t.bidiSpans(s),o=t.textDirectionAt(s.from);for(let r=e,c=null;;){let d=Jge(s,a,o,r,n),f=u6;if(!d){if(s.number==(n?t.state.doc.lines:1))return r;f=`
`,s=t.state.doc.line(s.number+(n?1:-1)),a=t.bidiSpans(s),d=t.visualLineSide(s,!n)}if(c){if(!c(f))return r}else{if(!i)return d;c=i(f)}r=d}}function m_e(t,e,n){let i=t.state.charCategorizer(e),s=i(n);return a=>{let o=i(a);return s==Hn.Space&&(s=o),s==o}}function p_e(t,e,n,i){let s=e.head,a=n?1:-1;if(s==(n?t.state.doc.length:0))return je.cursor(s,e.assoc);let o=e.goalColumn,r,c=t.contentDOM.getBoundingClientRect(),d=t.coordsAtPos(s,e.assoc||-1),f=t.documentTop;if(d)o==null&&(o=d.left-c.left),r=a<0?d.top:d.bottom;else{let y=t.viewState.lineBlockAt(s);o==null&&(o=Math.min(c.right-c.left,t.defaultCharacterWidth*(s-y.from))),r=(a<0?y.top:y.bottom)+f}let p=c.left+o,g=i??t.viewState.heightOracle.textHeight>>1;for(let y=0;;y+=10){let _=r+(g+y)*a,v=A6(t,{x:p,y:_},!1,a);if(_<c.top||_>c.bottom||(a<0?v<s:v>s)){let x=t.docView.coordsForChar(v),k=!x||_<x.top?-1:1;return je.cursor(v,k,void 0,o)}}}function sm(t,e,n){for(;;){let i=0;for(let s of t)s.between(e-1,e+1,(a,o,r)=>{if(e>a&&e<o){let c=i||n||(e-a<o-e?-1:1);e=c<0?a:o,i=c}});if(!i)return e}}function T6(t,e){let n=null;for(let i=0;i<e.ranges.length;i++){let s=e.ranges[i],a=null;if(s.empty){let o=sm(t,s.from,0);o!=s.from&&(a=je.cursor(o,-1))}else{let o=sm(t,s.from,-1),r=sm(t,s.to,1);(o!=s.from||r!=s.to)&&(a=je.range(s.from==s.anchor?o:r,s.from==s.head?o:r))}a&&(n||(n=e.ranges.slice()),n[i]=a)}return n?je.create(n,e.mainIndex):e}function D1(t,e,n){let i=sm(t.state.facet(yp).map(s=>s(t)),n.from,e.head>n.from?-1:1);return i==n.from?n:je.cursor(i,i<n.from?1:-1)}const Ef="￿";class g_e{constructor(e,n){this.points=e,this.text="",this.lineSeparator=n.facet(nn.lineSeparator)}append(e){this.text+=e}lineBreak(){this.text+=Ef}readRange(e,n){if(!e)return this;let i=e.parentNode;for(let s=e;;){this.findPointBefore(i,s);let a=this.text.length;this.readNode(s);let o=s.nextSibling;if(o==n)break;let r=An.get(s),c=An.get(o);(r&&c?r.breakAfter:(r?r.breakAfter:Q0(s))||Q0(o)&&(s.nodeName!="BR"||s.cmIgnore)&&this.text.length>a)&&!y_e(o,n)&&this.lineBreak(),s=o}return this.findPointBefore(i,n),this}readTextNode(e){let n=e.nodeValue;for(let i of this.points)i.node==e&&(i.pos=this.text.length+Math.min(i.offset,n.length));for(let i=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let a=-1,o=1,r;if(this.lineSeparator?(a=n.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(r=s.exec(n))&&(a=r.index,o=r[0].length),this.append(n.slice(i,a<0?n.length:a)),a<0)break;if(this.lineBreak(),o>1)for(let c of this.points)c.node==e&&c.pos>this.text.length&&(c.pos-=o-1);i=a+o}}readNode(e){if(e.cmIgnore)return;let n=An.get(e),i=n&&n.overrideDOMText;if(i!=null){this.findPointInside(e,i.length);for(let s=i.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,n){for(let i of this.points)i.node==e&&e.childNodes[i.offset]==n&&(i.pos=this.text.length)}findPointInside(e,n){for(let i of this.points)(e.nodeType==3?i.node==e:e.contains(i.node))&&(i.pos=this.text.length+(__e(e,i.node,i.offset)?n:0))}}function __e(t,e,n){for(;;){if(!e||n<Mo(e))return!1;if(e==t)return!0;n=Uc(e)+1,e=e.parentNode}}function y_e(t,e){let n;for(;!(t==e||!t);t=t.nextSibling){let i=An.get(t);if(!(i?.isWidget||t.cmIgnore))return!1;i&&(n||(n=[])).push(i)}if(n)for(let i of n){let s=i.overrideDOMText;if(s?.length)return!1}return!0}class HE{constructor(e,n){this.node=e,this.offset=n,this.pos=-1}}class b_e{constructor(e,n,i,s){this.typeOver=s,this.bounds=null,this.text="",this.domChanged=n>-1;let{impreciseHead:a,impreciseAnchor:o}=e.docView;if(e.state.readOnly&&n>-1)this.newSel=null;else if(n>-1&&(this.bounds=e.docView.domBoundsAround(n,i,0))){let r=a||o?[]:x_e(e),c=new g_e(r,e.state);c.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=c.text,this.newSel=S_e(r,this.bounds.from)}else{let r=e.observer.selectionRange,c=a&&a.node==r.focusNode&&a.offset==r.focusOffset||!LS(e.contentDOM,r.focusNode)?e.state.selection.main.head:e.docView.posFromDOM(r.focusNode,r.focusOffset),d=o&&o.node==r.anchorNode&&o.offset==r.anchorOffset||!LS(e.contentDOM,r.anchorNode)?e.state.selection.main.anchor:e.docView.posFromDOM(r.anchorNode,r.anchorOffset),f=e.viewport;if(($e.ios||$e.chrome)&&e.state.selection.main.empty&&c!=d&&(f.from>0||f.to<e.state.doc.length)){let p=Math.min(c,d),g=Math.max(c,d),y=f.from-p,_=f.to-g;(y==0||y==1||p==0)&&(_==0||_==-1||g==e.state.doc.length)&&(c=0,d=e.state.doc.length)}e.inputState.composing>-1&&e.state.selection.ranges.length>1?this.newSel=e.state.selection.replaceRange(je.range(d,c)):this.newSel=je.single(d,c)}}}function M6(t,e){let n,{newSel:i}=e,s=t.state.selection.main,a=t.inputState.lastKeyTime>Date.now()-100?t.inputState.lastKeyCode:-1;if(e.bounds){let{from:o,to:r}=e.bounds,c=s.from,d=null;(a===8||$e.android&&e.text.length<r-o)&&(c=s.to,d="end");let f=L6(t.state.doc.sliceString(o,r,Ef),e.text,c-o,d);f&&($e.chrome&&a==13&&f.toB==f.from+2&&e.text.slice(f.from,f.toB)==Ef+Ef&&f.toB--,n={from:o+f.from,to:o+f.toA,insert:an.of(e.text.slice(f.from,f.toB).split(Ef))})}else i&&(!t.hasFocus&&t.state.facet(yr)||i.main.eq(s))&&(i=null);if(!n&&!i)return!1;if(!n&&e.typeOver&&!s.empty&&i&&i.main.empty?n={from:s.from,to:s.to,insert:t.state.doc.slice(s.from,s.to)}:($e.mac||$e.android)&&n&&n.from==n.to&&n.from==s.head-1&&/^\. ?$/.test(n.insert.toString())&&t.contentDOM.getAttribute("autocorrect")=="off"?(i&&n.insert.length==2&&(i=je.single(i.main.anchor-1,i.main.head-1)),n={from:n.from,to:n.to,insert:an.of([n.insert.toString().replace("."," ")])}):n&&n.from>=s.from&&n.to<=s.to&&(n.from!=s.from||n.to!=s.to)&&s.to-s.from-(n.to-n.from)<=4?n={from:s.from,to:s.to,insert:t.state.doc.slice(s.from,n.from).append(n.insert).append(t.state.doc.slice(n.to,s.to))}:t.state.doc.lineAt(s.from).to<s.to&&t.docView.lineHasWidget(s.to)&&t.inputState.insertingTextAt>Date.now()-50?n={from:s.from,to:s.to,insert:t.state.toText(t.inputState.insertingText)}:$e.chrome&&n&&n.from==n.to&&n.from==s.head&&n.insert.toString()==`
`&&t.lineWrapping&&(i&&(i=je.single(i.main.anchor-1,i.main.head-1)),n={from:s.from,to:s.to,insert:an.of([" "])}),n)return Tk(t,n,i,a);if(i&&!i.main.eq(s)){let o=!1,r="select";return t.inputState.lastSelectionTime>Date.now()-50&&(t.inputState.lastSelectionOrigin=="select"&&(o=!0),r=t.inputState.lastSelectionOrigin,r=="select.pointer"&&(i=T6(t.state.facet(yp).map(c=>c(t)),i))),t.dispatch({selection:i,scrollIntoView:o,userEvent:r}),!0}else return!1}function Tk(t,e,n,i=-1){if($e.ios&&t.inputState.flushIOSKey(e))return!0;let s=t.state.selection.main;if($e.android&&(e.to==s.to&&(e.from==s.from||e.from==s.from-1&&t.state.sliceDoc(e.from,s.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&md(t.contentDOM,"Enter",13)||(e.from==s.from-1&&e.to==s.to&&e.insert.length==0||i==8&&e.insert.length<e.to-e.from&&e.to>s.head)&&md(t.contentDOM,"Backspace",8)||e.from==s.from&&e.to==s.to+1&&e.insert.length==0&&md(t.contentDOM,"Delete",46)))return!0;let a=e.insert.toString();t.inputState.composing>=0&&t.inputState.composing++;let o,r=()=>o||(o=v_e(t,e,n));return t.state.facet(p6).some(c=>c(t,e.from,e.to,a,r))||t.dispatch(r()),!0}function v_e(t,e,n){let i,s=t.state,a=s.selection.main,o=-1;if(e.from==e.to&&e.from<a.from||e.from>a.to){let c=e.from<a.from?-1:1,d=c<0?a.from:a.to,f=sm(s.facet(yp).map(p=>p(t)),d,c);e.from==f&&(o=f)}if(o>-1)i={changes:e,selection:je.cursor(e.from+e.insert.length,-1)};else if(e.from>=a.from&&e.to<=a.to&&e.to-e.from>=(a.to-a.from)/3&&(!n||n.main.empty&&n.main.from==e.from+e.insert.length)&&t.inputState.composing<0){let c=a.from<e.from?s.sliceDoc(a.from,e.from):"",d=a.to>e.to?s.sliceDoc(e.to,a.to):"";i=s.replaceSelection(t.state.toText(c+e.insert.sliceString(0,void 0,t.state.lineBreak)+d))}else{let c=s.changes(e),d=n&&n.main.to<=c.newLength?n.main:void 0;if(s.selection.ranges.length>1&&(t.inputState.composing>=0||t.inputState.compositionPendingChange)&&e.to<=a.to+10&&e.to>=a.to-10){let f=t.state.sliceDoc(e.from,e.to),p,g=n&&C6(t,n.main.head);if(g){let _=e.insert.length-(e.to-e.from);p={from:g.from,to:g.to-_}}else p=t.state.doc.lineAt(a.head);let y=a.to-e.to;i=s.changeByRange(_=>{if(_.from==a.from&&_.to==a.to)return{changes:c,range:d||_.map(c)};let v=_.to-y,x=v-f.length;if(t.state.sliceDoc(x,v)!=f||v>=p.from&&x<=p.to)return{range:_};let k=s.changes({from:x,to:v,insert:e.insert}),C=_.to-a.to;return{changes:k,range:d?je.range(Math.max(0,d.anchor+C),Math.max(0,d.head+C)):_.map(k)}})}else i={changes:c,selection:d&&s.selection.replaceRange(d)}}let r="input.type";return(t.composing||t.inputState.compositionPendingChange&&t.inputState.compositionEndedAt>Date.now()-50)&&(t.inputState.compositionPendingChange=!1,r+=".compose",t.inputState.compositionFirstChange&&(r+=".start",t.inputState.compositionFirstChange=!1)),s.update(i,{userEvent:r,scrollIntoView:!0})}function L6(t,e,n,i){let s=Math.min(t.length,e.length),a=0;for(;a<s&&t.charCodeAt(a)==e.charCodeAt(a);)a++;if(a==s&&t.length==e.length)return null;let o=t.length,r=e.length;for(;o>0&&r>0&&t.charCodeAt(o-1)==e.charCodeAt(r-1);)o--,r--;if(i=="end"){let c=Math.max(0,a-Math.min(o,r));n-=o+c-a}if(o<a&&t.length<e.length){let c=n<=a&&n>=o?a-n:0;a-=c,r=a+(r-o),o=a}else if(r<a){let c=n<=a&&n>=r?a-n:0;a-=c,o=a+(o-r),r=a}return{from:a,toA:o,toB:r}}function x_e(t){let e=[];if(t.root.activeElement!=t.contentDOM)return e;let{anchorNode:n,anchorOffset:i,focusNode:s,focusOffset:a}=t.observer.selectionRange;return n&&(e.push(new HE(n,i)),(s!=n||a!=i)&&e.push(new HE(s,a))),e}function S_e(t,e){if(t.length==0)return null;let n=t[0].pos,i=t.length==2?t[1].pos:n;return n>-1&&i>-1?je.single(n+e,i+e):null}class w_e{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,$e.safari&&e.contentDOM.addEventListener("input",()=>null),$e.gecko&&B_e(e.contentDOM.ownerDocument)}handleEvent(e){!O_e(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,n){let i=this.handlers[e];if(i){for(let s of i.observers)s(this.view,n);for(let s of i.handlers){if(n.defaultPrevented)break;if(s(this.view,n)){n.preventDefault();break}}}}ensureHandlers(e){let n=k_e(e),i=this.handlers,s=this.view.contentDOM;for(let a in n)if(a!="scroll"){let o=!n[a].handlers.length,r=i[a];r&&o!=!r.handlers.length&&(s.removeEventListener(a,this.handleEvent),r=null),r||s.addEventListener(a,this.handleEvent,{passive:o})}for(let a in i)a!="scroll"&&!n[a]&&s.removeEventListener(a,this.handleEvent);this.handlers=n}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&P6.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),$e.android&&$e.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;let n;return $e.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&((n=O6.find(i=>i.keyCode==e.keyCode))&&!e.ctrlKey||C_e.indexOf(e.key)>-1&&e.ctrlKey&&!e.shiftKey)?(this.pendingIOSKey=n||e,setTimeout(()=>this.flushIOSKey(),250),!0):(e.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(e){let n=this.pendingIOSKey;return!n||n.key=="Enter"&&e&&e.from<e.to&&/^\S+$/.test(e.insert.toString())?!1:(this.pendingIOSKey=void 0,md(this.view.contentDOM,n.key,n.keyCode,n instanceof KeyboardEvent?n:void 0))}ignoreDuringComposition(e){return!/^key/.test(e.type)||e.synthetic?!1:this.composing>0?!0:$e.safari&&!$e.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}function WE(t,e){return(n,i)=>{try{return e.call(t,i,n)}catch(s){Ds(n.state,s)}}}function k_e(t){let e=Object.create(null);function n(i){return e[i]||(e[i]={observers:[],handlers:[]})}for(let i of t){let s=i.spec,a=s&&s.plugin.domEventHandlers,o=s&&s.plugin.domEventObservers;if(a)for(let r in a){let c=a[r];c&&n(r).handlers.push(WE(i.value,c))}if(o)for(let r in o){let c=o[r];c&&n(r).observers.push(WE(i.value,c))}}for(let i in Xa)n(i).handlers.push(Xa[i]);for(let i in Ma)n(i).observers.push(Ma[i]);return e}const O6=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],C_e="dthko",P6=[16,17,18,20,91,92,224,225],S_=6;function w_(t){return Math.max(0,t)*.7+8}function A_e(t,e){return Math.max(Math.abs(t.clientX-e.clientX),Math.abs(t.clientY-e.clientY))}class N_e{constructor(e,n,i,s){this.view=e,this.startEvent=n,this.style=i,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=n,this.scrollParents=Rge(e.contentDOM),this.atoms=e.state.facet(yp).map(o=>o(e));let a=e.contentDOM.ownerDocument;a.addEventListener("mousemove",this.move=this.move.bind(this)),a.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=n.shiftKey,this.multiple=e.state.facet(nn.allowMultipleSelections)&&T_e(e,n),this.dragging=L_e(e,n)&&R6(n)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&A_e(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let n=0,i=0,s=0,a=0,o=this.view.win.innerWidth,r=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:a,bottom:r}=this.scrollParents.y.getBoundingClientRect());let c=Nk(this.view);e.clientX-c.left<=s+S_?n=-w_(s-e.clientX):e.clientX+c.right>=o-S_&&(n=w_(e.clientX-o)),e.clientY-c.top<=a+S_?i=-w_(a-e.clientY):e.clientY+c.bottom>=r-S_&&(i=w_(e.clientY-r)),this.setScrollSpeed(n,i)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,n){this.scrollSpeed={x:e,y:n},e||n?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:n}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),n&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=n,n=0),(e||n)&&this.view.win.scrollBy(e,n),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:n}=this,i=T6(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!i.eq(n.state.selection,this.dragging===!1))&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){e.transactions.some(n=>n.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}}function T_e(t,e){let n=t.state.facet(d6);return n.length?n[0](e):$e.mac?e.metaKey:e.ctrlKey}function M_e(t,e){let n=t.state.facet(h6);return n.length?n[0](e):$e.mac?!e.altKey:!e.ctrlKey}function L_e(t,e){let{main:n}=t.state.selection;if(n.empty)return!1;let i=Cm(t.root);if(!i||i.rangeCount==0)return!0;let s=i.getRangeAt(0).getClientRects();for(let a=0;a<s.length;a++){let o=s[a];if(o.left<=e.clientX&&o.right>=e.clientX&&o.top<=e.clientY&&o.bottom>=e.clientY)return!0}return!1}function O_e(t,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let n=e.target,i;n!=t.contentDOM;n=n.parentNode)if(!n||n.nodeType==11||(i=An.get(n))&&i.ignoreEvent(e))return!1;return!0}const Xa=Object.create(null),Ma=Object.create(null),E6=$e.ie&&$e.ie_version<15||$e.ios&&$e.webkit_version<604;function P_e(t){let e=t.dom.parentNode;if(!e)return;let n=e.appendChild(document.createElement("textarea"));n.style.cssText="position: fixed; left: -10000px; top: 10px",n.focus(),setTimeout(()=>{t.focus(),n.remove(),j6(t,n.value)},50)}function tb(t,e,n){for(let i of t.facet(e))n=i(n,t);return n}function j6(t,e){e=tb(t.state,kk,e);let{state:n}=t,i,s=1,a=n.toText(e),o=a.lines==n.selection.ranges.length;if(US!=null&&n.selection.ranges.every(c=>c.empty)&&US==a.toString()){let c=-1;i=n.changeByRange(d=>{let f=n.doc.lineAt(d.from);if(f.from==c)return{range:d};c=f.from;let p=n.toText((o?a.line(s++).text:e)+n.lineBreak);return{changes:{from:f.from,insert:p},range:je.cursor(d.from+p.length)}})}else o?i=n.changeByRange(c=>{let d=a.line(s++);return{changes:{from:c.from,to:c.to,insert:d.text},range:je.cursor(c.from+d.length)}}):i=n.replaceSelection(a);t.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}Ma.scroll=t=>{t.inputState.lastScrollTop=t.scrollDOM.scrollTop,t.inputState.lastScrollLeft=t.scrollDOM.scrollLeft};Xa.keydown=(t,e)=>(t.inputState.setSelectionOrigin("select"),e.keyCode==27&&t.inputState.tabFocusMode!=0&&(t.inputState.tabFocusMode=Date.now()+2e3),!1);Ma.touchstart=(t,e)=>{t.inputState.lastTouchTime=Date.now(),t.inputState.setSelectionOrigin("select.pointer")};Ma.touchmove=t=>{t.inputState.setSelectionOrigin("select.pointer")};Xa.mousedown=(t,e)=>{if(t.observer.flush(),t.inputState.lastTouchTime>Date.now()-2e3)return!1;let n=null;for(let i of t.state.facet(f6))if(n=i(t,e),n)break;if(!n&&e.button==0&&(n=R_e(t,e)),n){let i=!t.hasFocus;t.inputState.startMouseSelection(new N_e(t,e,n,i)),i&&t.observer.ignore(()=>{$D(t.contentDOM);let a=t.root.activeElement;a&&!a.contains(t.contentDOM)&&a.blur()});let s=t.inputState.mouseSelection;if(s)return s.start(e),s.dragging===!1}else t.inputState.setSelectionOrigin("select.pointer");return!1};function GE(t,e,n,i){if(i==1)return je.cursor(e,n);if(i==2)return l_e(t.state,e,n);{let s=yi.find(t.docView,e),a=t.state.doc.lineAt(s?s.posAtEnd:e),o=s?s.posAtStart:a.from,r=s?s.posAtEnd:a.to;return r<t.state.doc.length&&r==a.to&&r++,je.range(o,r)}}let $E=(t,e,n)=>e>=n.top&&e<=n.bottom&&t>=n.left&&t<=n.right;function E_e(t,e,n,i){let s=yi.find(t.docView,e);if(!s)return 1;let a=e-s.posAtStart;if(a==0)return 1;if(a==s.length)return-1;let o=s.coordsAt(a,-1);if(o&&$E(n,i,o))return-1;let r=s.coordsAt(a,1);return r&&$E(n,i,r)?1:o&&o.bottom>=i?-1:1}function XE(t,e){let n=t.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:n,bias:E_e(t,n,e.clientX,e.clientY)}}const j_e=$e.ie&&$e.ie_version<=11;let QE=null,YE=0,JE=0;function R6(t){if(!j_e)return t.detail;let e=QE,n=JE;return QE=t,JE=Date.now(),YE=!e||n>Date.now()-400&&Math.abs(e.clientX-t.clientX)<2&&Math.abs(e.clientY-t.clientY)<2?(YE+1)%3:1}function R_e(t,e){let n=XE(t,e),i=R6(e),s=t.state.selection;return{update(a){a.docChanged&&(n.pos=a.changes.mapPos(n.pos),s=s.map(a.changes))},get(a,o,r){let c=XE(t,a),d,f=GE(t,c.pos,c.bias,i);if(n.pos!=c.pos&&!o){let p=GE(t,n.pos,n.bias,i),g=Math.min(p.from,f.from),y=Math.max(p.to,f.to);f=g<f.from?je.range(g,y):je.range(y,g)}return o?s.replaceRange(s.main.extend(f.from,f.to)):r&&i==1&&s.ranges.length>1&&(d=D_e(s,c.pos))?d:r?s.addRange(f):je.create([f])}}}function D_e(t,e){for(let n=0;n<t.ranges.length;n++){let{from:i,to:s}=t.ranges[n];if(i<=e&&s>=e)return je.create(t.ranges.slice(0,n).concat(t.ranges.slice(n+1)),t.mainIndex==n?0:t.mainIndex-(t.mainIndex>n?1:0))}return null}Xa.dragstart=(t,e)=>{let{selection:{main:n}}=t.state;if(e.target.draggable){let s=t.docView.nearest(e.target);if(s&&s.isWidget){let a=s.posAtStart,o=a+s.length;(a>=n.to||o<=n.from)&&(n=je.range(a,o))}}let{inputState:i}=t;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=n,e.dataTransfer&&(e.dataTransfer.setData("Text",tb(t.state,Ck,t.state.sliceDoc(n.from,n.to))),e.dataTransfer.effectAllowed="copyMove"),!1};Xa.dragend=t=>(t.inputState.draggedContent=null,!1);function ZE(t,e,n,i){if(n=tb(t.state,kk,n),!n)return;let s=t.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:a}=t.inputState,o=i&&a&&M_e(t,e)?{from:a.from,to:a.to}:null,r={from:s,insert:n},c=t.state.changes(o?[o,r]:r);t.focus(),t.dispatch({changes:c,selection:{anchor:c.mapPos(s,-1),head:c.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"}),t.inputState.draggedContent=null}Xa.drop=(t,e)=>{if(!e.dataTransfer)return!1;if(t.state.readOnly)return!0;let n=e.dataTransfer.files;if(n&&n.length){let i=Array(n.length),s=0,a=()=>{++s==n.length&&ZE(t,e,i.filter(o=>o!=null).join(t.state.lineBreak),!1)};for(let o=0;o<n.length;o++){let r=new FileReader;r.onerror=a,r.onload=()=>{/[\x00-\x08\x0e-\x1f]{2}/.test(r.result)||(i[o]=r.result),a()},r.readAsText(n[o])}return!0}else{let i=e.dataTransfer.getData("Text");if(i)return ZE(t,e,i,!0),!0}return!1};Xa.paste=(t,e)=>{if(t.state.readOnly)return!0;t.observer.flush();let n=E6?null:e.clipboardData;return n?(j6(t,n.getData("text/plain")||n.getData("text/uri-list")),!0):(P_e(t),!1)};function F_e(t,e){let n=t.dom.parentNode;if(!n)return;let i=n.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=e,i.focus(),i.selectionEnd=e.length,i.selectionStart=0,setTimeout(()=>{i.remove(),t.focus()},50)}function I_e(t){let e=[],n=[],i=!1;for(let s of t.selection.ranges)s.empty||(e.push(t.sliceDoc(s.from,s.to)),n.push(s));if(!e.length){let s=-1;for(let{from:a}of t.selection.ranges){let o=t.doc.lineAt(a);o.number>s&&(e.push(o.text),n.push({from:o.from,to:Math.min(t.doc.length,o.to+1)})),s=o.number}i=!0}return{text:tb(t,Ck,e.join(t.lineBreak)),ranges:n,linewise:i}}let US=null;Xa.copy=Xa.cut=(t,e)=>{let{text:n,ranges:i,linewise:s}=I_e(t.state);if(!n&&!s)return!1;US=s?n:null,e.type=="cut"&&!t.state.readOnly&&t.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let a=E6?null:e.clipboardData;return a?(a.clearData(),a.setData("text/plain",n),!0):(F_e(t,n),!1)};const D6=Do.define();function F6(t,e){let n=[];for(let i of t.facet(g6)){let s=i(t,e);s&&n.push(s)}return n.length?t.update({effects:n,annotations:D6.of(!0)}):null}function I6(t){setTimeout(()=>{let e=t.hasFocus;if(e!=t.inputState.notifiedFocused){let n=F6(t.state,e);n?t.dispatch(n):t.update([])}},10)}Ma.focus=t=>{t.inputState.lastFocusTime=Date.now(),!t.scrollDOM.scrollTop&&(t.inputState.lastScrollTop||t.inputState.lastScrollLeft)&&(t.scrollDOM.scrollTop=t.inputState.lastScrollTop,t.scrollDOM.scrollLeft=t.inputState.lastScrollLeft),I6(t)};Ma.blur=t=>{t.observer.clearSelectionRange(),I6(t)};Ma.compositionstart=Ma.compositionupdate=t=>{t.observer.editContext||(t.inputState.compositionFirstChange==null&&(t.inputState.compositionFirstChange=!0),t.inputState.composing<0&&(t.inputState.composing=0))};Ma.compositionend=t=>{t.observer.editContext||(t.inputState.composing=-1,t.inputState.compositionEndedAt=Date.now(),t.inputState.compositionPendingKey=!0,t.inputState.compositionPendingChange=t.observer.pendingRecords().length>0,t.inputState.compositionFirstChange=null,$e.chrome&&$e.android?t.observer.flushSoon():t.inputState.compositionPendingChange?Promise.resolve().then(()=>t.observer.flush()):setTimeout(()=>{t.inputState.composing<0&&t.docView.hasComposition&&t.update([])},50))};Ma.contextmenu=t=>{t.inputState.lastContextMenu=Date.now()};Xa.beforeinput=(t,e)=>{var n,i;if((e.inputType=="insertText"||e.inputType=="insertCompositionText")&&(t.inputState.insertingText=e.data,t.inputState.insertingTextAt=Date.now()),e.inputType=="insertReplacementText"&&t.observer.editContext){let a=(n=e.dataTransfer)===null||n===void 0?void 0:n.getData("text/plain"),o=e.getTargetRanges();if(a&&o.length){let r=o[0],c=t.posAtDOM(r.startContainer,r.startOffset),d=t.posAtDOM(r.endContainer,r.endOffset);return Tk(t,{from:c,to:d,insert:t.state.toText(a)},null),!0}}let s;if($e.chrome&&$e.android&&(s=O6.find(a=>a.inputType==e.inputType))&&(t.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let a=((i=window.visualViewport)===null||i===void 0?void 0:i.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>a+10&&t.hasFocus&&(t.contentDOM.blur(),t.focus())},100)}return $e.ios&&e.inputType=="deleteContentForward"&&t.observer.flushSoon(),$e.safari&&e.inputType=="insertText"&&t.inputState.composing>=0&&setTimeout(()=>Ma.compositionend(t,e),20),!1};const ej=new Set;function B_e(t){ej.has(t)||(ej.add(t),t.addEventListener("copy",()=>{}),t.addEventListener("cut",()=>{}))}const tj=["pre-wrap","normal","pre-line","break-spaces"];let Ed=!1;function nj(){Ed=!1}class U_e{constructor(e){this.lineWrapping=e,this.doc=an.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,n){let i=this.doc.lineAt(n).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((n-e-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return tj.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let n=!1;for(let i=0;i<e.length;i++){let s=e[i];s<0?i++:this.heightSamples[Math.floor(s*10)]||(n=!0,this.heightSamples[Math.floor(s*10)]=!0)}return n}refresh(e,n,i,s,a,o){let r=tj.indexOf(e)>-1,c=Math.round(n)!=Math.round(this.lineHeight)||this.lineWrapping!=r;if(this.lineWrapping=r,this.lineHeight=n,this.charWidth=i,this.textHeight=s,this.lineLength=a,c){this.heightSamples={};for(let d=0;d<o.length;d++){let f=o[d];f<0?d++:this.heightSamples[Math.floor(f*10)]=!0}}return c}}class q_e{constructor(e,n){this.from=e,this.heights=n,this.index=0}get more(){return this.index<this.heights.length}}class vo{constructor(e,n,i,s,a){this.from=e,this.length=n,this.top=i,this.height=s,this._content=a}get type(){return typeof this._content=="number"?bs.Text:Array.isArray(this._content)?this._content:this._content.type}get to(){return this.from+this.length}get bottom(){return this.top+this.height}get widget(){return this._content instanceof Pl?this._content.widget:null}get widgetLineBreaks(){return typeof this._content=="number"?this._content:0}join(e){let n=(Array.isArray(this._content)?this._content:[this]).concat(Array.isArray(e._content)?e._content:[e]);return new vo(this.from,this.length+e.length,this.top,this.height+e.height,n)}}var Bn=(function(t){return t[t.ByPos=0]="ByPos",t[t.ByHeight=1]="ByHeight",t[t.ByPosNoHeight=2]="ByPosNoHeight",t})(Bn||(Bn={}));const m0=.001;class vs{constructor(e,n,i=2){this.length=e,this.height=n,this.flags=i}get outdated(){return(this.flags&2)>0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>m0&&(Ed=!0),this.height=e)}replace(e,n,i){return vs.of(i)}decomposeLeft(e,n){n.push(this)}decomposeRight(e,n){n.push(this)}applyChanges(e,n,i,s){let a=this,o=i.doc;for(let r=s.length-1;r>=0;r--){let{fromA:c,toA:d,fromB:f,toB:p}=s[r],g=a.lineAt(c,Bn.ByPosNoHeight,i.setDoc(n),0,0),y=g.to>=d?g:a.lineAt(d,Bn.ByPosNoHeight,i,0,0);for(p+=y.to-d,d=y.to;r>0&&g.from<=s[r-1].toA;)c=s[r-1].fromA,f=s[r-1].fromB,r--,c<g.from&&(g=a.lineAt(c,Bn.ByPosNoHeight,i,0,0));f+=g.from-c,c=g.from;let _=Mk.build(i.setDoc(o),e,f,p);a=Z0(a,a.replace(c,d,_))}return a.updateHeight(i,0)}static empty(){return new Js(0,0)}static of(e){if(e.length==1)return e[0];let n=0,i=e.length,s=0,a=0;for(;;)if(n==i)if(s>a*2){let r=e[n-1];r.break?e.splice(--n,1,r.left,null,r.right):e.splice(--n,1,r.left,r.right),i+=1+r.break,s-=r.size}else if(a>s*2){let r=e[i];r.break?e.splice(i,1,r.left,null,r.right):e.splice(i,1,r.left,r.right),i+=2+r.break,a-=r.size}else break;else if(s<a){let r=e[n++];r&&(s+=r.size)}else{let r=e[--i];r&&(a+=r.size)}let o=0;return e[n-1]==null?(o=1,n--):e[n]==null&&(o=1,i++),new z_e(vs.of(e.slice(0,n)),o,vs.of(e.slice(i)))}}function Z0(t,e){return t==e?t:(t.constructor!=e.constructor&&(Ed=!0),e)}vs.prototype.size=1;class B6 extends vs{constructor(e,n,i){super(e,n),this.deco=i}blockAt(e,n,i,s){return new vo(s,this.length,i,this.height,this.deco||0)}lineAt(e,n,i,s,a){return this.blockAt(0,i,s,a)}forEachLine(e,n,i,s,a,o){e<=a+this.length&&n>=a&&o(this.blockAt(0,i,s,a))}updateHeight(e,n=0,i=!1,s){return s&&s.from<=n&&s.more&&this.setHeight(s.heights[s.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}}class Js extends B6{constructor(e,n){super(e,n,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0}blockAt(e,n,i,s){return new vo(s,this.length,i,this.height,this.breaks)}replace(e,n,i){let s=i[0];return i.length==1&&(s instanceof Js||s instanceof Ki&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof Ki?s=new Js(s.length,this.height):s.height=this.height,this.outdated||(s.outdated=!1),s):vs.of(i)}updateHeight(e,n=0,i=!1,s){return s&&s.from<=n&&s.more?this.setHeight(s.heights[s.index++]):(i||this.outdated)&&this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class Ki extends vs{constructor(e){super(e,0)}heightMetrics(e,n){let i=e.doc.lineAt(n).number,s=e.doc.lineAt(n+this.length).number,a=s-i+1,o,r=0;if(e.lineWrapping){let c=Math.min(this.height,e.lineHeight*a);o=c/a,this.length>a+1&&(r=(this.height-c)/(this.length-a-1))}else o=this.height/a;return{firstLine:i,lastLine:s,perLine:o,perChar:r}}blockAt(e,n,i,s){let{firstLine:a,lastLine:o,perLine:r,perChar:c}=this.heightMetrics(n,s);if(n.lineWrapping){let d=s+(e<n.lineHeight?0:Math.round(Math.max(0,Math.min(1,(e-i)/this.height))*this.length)),f=n.doc.lineAt(d),p=r+f.length*c,g=Math.max(i,e-p/2);return new vo(f.from,f.length,g,p,0)}else{let d=Math.max(0,Math.min(o-a,Math.floor((e-i)/r))),{from:f,length:p}=n.doc.line(a+d);return new vo(f,p,i+r*d,r,0)}}lineAt(e,n,i,s,a){if(n==Bn.ByHeight)return this.blockAt(e,i,s,a);if(n==Bn.ByPosNoHeight){let{from:y,to:_}=i.doc.lineAt(e);return new vo(y,_-y,0,0,0)}let{firstLine:o,perLine:r,perChar:c}=this.heightMetrics(i,a),d=i.doc.lineAt(e),f=r+d.length*c,p=d.number-o,g=s+r*p+c*(d.from-a-p);return new vo(d.from,d.length,Math.max(s,Math.min(g,s+this.height-f)),f,0)}forEachLine(e,n,i,s,a,o){e=Math.max(e,a),n=Math.min(n,a+this.length);let{firstLine:r,perLine:c,perChar:d}=this.heightMetrics(i,a);for(let f=e,p=s;f<=n;){let g=i.doc.lineAt(f);if(f==e){let _=g.number-r;p+=c*_+d*(e-a-_)}let y=c+d*g.length;o(new vo(g.from,g.length,p,y,0)),p+=y,f=g.to+1}}replace(e,n,i){let s=this.length-n;if(s>0){let a=i[i.length-1];a instanceof Ki?i[i.length-1]=new Ki(a.length+s):i.push(null,new Ki(s-1))}if(e>0){let a=i[0];a instanceof Ki?i[0]=new Ki(e+a.length):i.unshift(new Ki(e-1),null)}return vs.of(i)}decomposeLeft(e,n){n.push(new Ki(e-1),null)}decomposeRight(e,n){n.push(null,new Ki(this.length-e-1))}updateHeight(e,n=0,i=!1,s){let a=n+this.length;if(s&&s.from<=n+this.length&&s.more){let o=[],r=Math.max(n,s.from),c=-1;for(s.from>n&&o.push(new Ki(s.from-n-1).updateHeight(e,n));r<=a&&s.more;){let f=e.doc.lineAt(r).length;o.length&&o.push(null);let p=s.heights[s.index++];c==-1?c=p:Math.abs(p-c)>=m0&&(c=-2);let g=new Js(f,p);g.outdated=!1,o.push(g),r+=f+1}r<=a&&o.push(null,new Ki(a-r).updateHeight(e,r));let d=vs.of(o);return(c<0||Math.abs(d.height-this.height)>=m0||Math.abs(c-this.heightMetrics(e,n).perLine)>=m0)&&(Ed=!0),Z0(this,d)}else(i||this.outdated)&&(this.setHeight(e.heightForGap(n,n+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}}class z_e extends vs{constructor(e,n,i){super(e.length+n+i.length,e.height+i.height,n|(e.outdated||i.outdated?2:0)),this.left=e,this.right=i,this.size=e.size+i.size}get break(){return this.flags&1}blockAt(e,n,i,s){let a=i+this.left.height;return e<a?this.left.blockAt(e,n,i,s):this.right.blockAt(e,n,a,s+this.left.length+this.break)}lineAt(e,n,i,s,a){let o=s+this.left.height,r=a+this.left.length+this.break,c=n==Bn.ByHeight?e<o:e<r,d=c?this.left.lineAt(e,n,i,s,a):this.right.lineAt(e,n,i,o,r);if(this.break||(c?d.to<r:d.from>r))return d;let f=n==Bn.ByPosNoHeight?Bn.ByPosNoHeight:Bn.ByPos;return c?d.join(this.right.lineAt(r,f,i,o,r)):this.left.lineAt(r,f,i,s,a).join(d)}forEachLine(e,n,i,s,a,o){let r=s+this.left.height,c=a+this.left.length+this.break;if(this.break)e<c&&this.left.forEachLine(e,n,i,s,a,o),n>=c&&this.right.forEachLine(e,n,i,r,c,o);else{let d=this.lineAt(c,Bn.ByPos,i,s,a);e<d.from&&this.left.forEachLine(e,d.from-1,i,s,a,o),d.to>=e&&d.from<=n&&o(d),n>d.to&&this.right.forEachLine(d.to+1,n,i,r,c,o)}}replace(e,n,i){let s=this.left.length+this.break;if(n<s)return this.balanced(this.left.replace(e,n,i),this.right);if(e>this.left.length)return this.balanced(this.left,this.right.replace(e-s,n-s,i));let a=[];e>0&&this.decomposeLeft(e,a);let o=a.length;for(let r of i)a.push(r);if(e>0&&ij(a,o-1),n<this.length){let r=a.length;this.decomposeRight(n,a),ij(a,r)}return vs.of(a)}decomposeLeft(e,n){let i=this.left.length;if(e<=i)return this.left.decomposeLeft(e,n);n.push(this.left),this.break&&(i++,e>=i&&n.push(null)),e>i&&this.right.decomposeLeft(e-i,n)}decomposeRight(e,n){let i=this.left.length,s=i+this.break;if(e>=s)return this.right.decomposeRight(e-s,n);e<i&&this.left.decomposeRight(e,n),this.break&&e<s&&n.push(null),n.push(this.right)}balanced(e,n){return e.size>2*n.size||n.size>2*e.size?vs.of(this.break?[e,null,n]:[e,n]):(this.left=Z0(this.left,e),this.right=Z0(this.right,n),this.setHeight(e.height+n.height),this.outdated=e.outdated||n.outdated,this.size=e.size+n.size,this.length=e.length+this.break+n.length,this)}updateHeight(e,n=0,i=!1,s){let{left:a,right:o}=this,r=n+a.length+this.break,c=null;return s&&s.from<=n+a.length&&s.more?c=a=a.updateHeight(e,n,i,s):a.updateHeight(e,n,i),s&&s.from<=r+o.length&&s.more?c=o=o.updateHeight(e,r,i,s):o.updateHeight(e,r,i),c?this.balanced(a,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function ij(t,e){let n,i;t[e]==null&&(n=t[e-1])instanceof Ki&&(i=t[e+1])instanceof Ki&&t.splice(e-1,3,new Ki(n.length+1+i.length))}const K_e=5;class Mk{constructor(e,n){this.pos=e,this.oracle=n,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,n){if(this.lineStart>-1){let i=Math.min(n,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof Js?s.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new Js(i-this.pos,-1)),this.writtenTo=i,n>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=n}point(e,n,i){if(e<n||i.heightRelevant){let s=i.widget?i.widget.estimatedHeight:0,a=i.widget?i.widget.lineBreaks:0;s<0&&(s=this.oracle.lineHeight);let o=n-e;i.block?this.addBlock(new B6(o,s,i)):(o||a||s>=K_e)&&this.addLineDeco(s,a,o)}else n>e&&this.span(e,n);this.lineEnd>-1&&this.lineEnd<this.pos&&(this.lineEnd=this.oracle.doc.lineAt(this.pos).to)}enterLine(){if(this.lineStart>-1)return;let{from:e,to:n}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=n,this.writtenTo<e&&((this.writtenTo<e-1||this.nodes[this.nodes.length-1]==null)&&this.nodes.push(this.blankContent(this.writtenTo,e-1)),this.nodes.push(null)),this.pos>e&&this.nodes.push(new Js(this.pos-e,-1)),this.writtenTo=this.pos}blankContent(e,n){let i=new Ki(n-e);return this.oracle.doc.lineAt(e).to==n&&(i.flags|=4),i}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof Js)return e;let n=new Js(0,-1);return this.nodes.push(n),n}addBlock(e){this.enterLine();let n=e.deco;n&&n.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,n&&n.endSide>0&&(this.covering=e)}addLineDeco(e,n,i){let s=this.ensureLine();s.length+=i,s.collapsed+=i,s.widgetHeight=Math.max(s.widgetHeight,e),s.breaks+=n,this.writtenTo=this.pos=this.pos+i}finish(e){let n=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(n instanceof Js)&&!this.isCovered?this.nodes.push(new Js(0,-1)):(this.writtenTo<this.pos||n==null)&&this.nodes.push(this.blankContent(this.writtenTo,this.pos));let i=e;for(let s of this.nodes)s instanceof Js&&s.updateHeight(this.oracle,i),i+=s?s.length:1;return this.nodes}static build(e,n,i,s){let a=new Mk(i,e);return cn.spans(n,i,s,a,0),a.finish(i)}}function V_e(t,e,n){let i=new H_e;return cn.compare(t,e,n,i,0),i.changes}class H_e{constructor(){this.changes=[]}compareRange(){}comparePoint(e,n,i,s){(e<n||i&&i.heightRelevant||s&&s.heightRelevant)&&f0(e,n,this.changes,5)}}function W_e(t,e){let n=t.getBoundingClientRect(),i=t.ownerDocument,s=i.defaultView||window,a=Math.max(0,n.left),o=Math.min(s.innerWidth,n.right),r=Math.max(0,n.top),c=Math.min(s.innerHeight,n.bottom);for(let d=t.parentNode;d&&d!=i.body;)if(d.nodeType==1){let f=d,p=window.getComputedStyle(f);if((f.scrollHeight>f.clientHeight||f.scrollWidth>f.clientWidth)&&p.overflow!="visible"){let g=f.getBoundingClientRect();a=Math.max(a,g.left),o=Math.min(o,g.right),r=Math.max(r,g.top),c=Math.min(d==t.parentNode?s.innerHeight:c,g.bottom)}d=p.position=="absolute"||p.position=="fixed"?f.offsetParent:f.parentNode}else if(d.nodeType==11)d=d.host;else break;return{left:a-n.left,right:Math.max(a,o)-n.left,top:r-(n.top+e),bottom:Math.max(r,c)-(n.top+e)}}function G_e(t){let e=t.getBoundingClientRect(),n=t.ownerDocument.defaultView||window;return e.left<n.innerWidth&&e.right>0&&e.top<n.innerHeight&&e.bottom>0}function $_e(t,e){let n=t.getBoundingClientRect();return{left:0,right:n.right-n.left,top:e,bottom:n.bottom-(n.top+e)}}class F1{constructor(e,n,i,s){this.from=e,this.to=n,this.size=i,this.displaySize=s}static same(e,n){if(e.length!=n.length)return!1;for(let i=0;i<e.length;i++){let s=e[i],a=n[i];if(s.from!=a.from||s.to!=a.to||s.size!=a.size)return!1}return!0}draw(e,n){return xt.replace({widget:new X_e(this.displaySize*(n?e.scaleY:e.scaleX),n)}).range(this.from,this.to)}}class X_e extends Er{constructor(e,n){super(),this.size=e,this.vertical=n}eq(e){return e.size==this.size&&e.vertical==this.vertical}toDOM(){let e=document.createElement("div");return this.vertical?e.style.height=this.size+"px":(e.style.width=this.size+"px",e.style.height="2px",e.style.display="inline-block"),e}get estimatedHeight(){return this.vertical?this.size:-1}}class sj{constructor(e){this.state=e,this.pixelViewport={left:0,right:window.innerWidth,top:0,bottom:0},this.inView=!0,this.paddingTop=0,this.paddingBottom=0,this.contentDOMWidth=0,this.contentDOMHeight=0,this.editorHeight=0,this.editorWidth=0,this.scrollTop=0,this.scrolledToBottom=!1,this.scaleX=1,this.scaleY=1,this.scrollAnchorPos=0,this.scrollAnchorHeight=-1,this.scaler=aj,this.scrollTarget=null,this.printing=!1,this.mustMeasureContent=!0,this.defaultTextDirection=Un.LTR,this.visibleRanges=[],this.mustEnforceCursorAssoc=!1;let n=e.facet(Ak).some(i=>typeof i!="function"&&i.class=="cm-lineWrapping");this.heightOracle=new U_e(n),this.stateDeco=e.facet(Am).filter(i=>typeof i!="function"),this.heightMap=vs.empty().applyChanges(this.stateDeco,an.empty,this.heightOracle.setDoc(e.doc),[new wa(0,0,0,e.doc.length)]);for(let i=0;i<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());i++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=xt.set(this.lineGaps.map(i=>i.draw(this,!1))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:n}=this.state.selection;for(let i=0;i<=1;i++){let s=i?n.head:n.anchor;if(!e.some(({from:a,to:o})=>s>=a&&s<=o)){let{from:a,to:o}=this.lineBlockAt(s);e.push(new k_(a,o))}}return this.viewports=e.sort((i,s)=>i.from-s.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?aj:new Lk(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(jf(e,this.scaler))})}update(e,n=null){this.state=e.state;let i=this.stateDeco;this.stateDeco=this.state.facet(Am).filter(f=>typeof f!="function");let s=e.changedRanges,a=wa.extendWithRanges(s,V_e(i,this.stateDeco,e?e.changes:ki.empty(this.state.doc.length))),o=this.heightMap.height,r=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);nj(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),a),(this.heightMap.height!=o||Ed)&&(e.flags|=2),r?(this.scrollAnchorPos=e.changes.mapPos(r.from,-1),this.scrollAnchorHeight=r.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let c=a.length?this.mapViewport(this.viewport,e.changes):this.viewport;(n&&(n.range.head<c.from||n.range.head>c.to)||!this.viewportIsAppropriate(c))&&(c=this.getViewport(0,n));let d=c.from!=this.viewport.from||c.to!=this.viewport.to;this.viewport=c,e.flags|=this.updateForViewport(),(d||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),n&&(this.scrollTarget=n),!this.mustEnforceCursorAssoc&&e.selectionSet&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(y6)&&(this.mustEnforceCursorAssoc=!0)}measure(e){let n=e.contentDOM,i=window.getComputedStyle(n),s=this.heightOracle,a=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?Un.RTL:Un.LTR;let o=this.heightOracle.mustRefreshForWrapping(a),r=n.getBoundingClientRect(),c=o||this.mustMeasureContent||this.contentDOMHeight!=r.height;this.contentDOMHeight=r.height,this.mustMeasureContent=!1;let d=0,f=0;if(r.width&&r.height){let{scaleX:L,scaleY:M}=GD(n,r);(L>.005&&Math.abs(this.scaleX-L)>.005||M>.005&&Math.abs(this.scaleY-M)>.005)&&(this.scaleX=L,this.scaleY=M,d|=16,o=c=!0)}let p=(parseInt(i.paddingTop)||0)*this.scaleY,g=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=p||this.paddingBottom!=g)&&(this.paddingTop=p,this.paddingBottom=g,d|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(s.lineWrapping&&(c=!0),this.editorWidth=e.scrollDOM.clientWidth,d|=16);let y=e.scrollDOM.scrollTop*this.scaleY;this.scrollTop!=y&&(this.scrollAnchorHeight=-1,this.scrollTop=y),this.scrolledToBottom=QD(e.scrollDOM);let _=(this.printing?$_e:W_e)(n,this.paddingTop),v=_.top-this.pixelViewport.top,x=_.bottom-this.pixelViewport.bottom;this.pixelViewport=_;let k=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(k!=this.inView&&(this.inView=k,k&&(c=!0)),!this.inView&&!this.scrollTarget&&!G_e(e.dom))return 0;let C=r.width;if((this.contentDOMWidth!=C||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=r.width,this.editorHeight=e.scrollDOM.clientHeight,d|=16),c){let L=e.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(L)&&(o=!0),o||s.lineWrapping&&Math.abs(C-this.contentDOMWidth)>s.charWidth){let{lineHeight:M,charWidth:O,textHeight:T}=e.docView.measureTextSize();o=M>0&&s.refresh(a,M,O,T,Math.max(5,C/O),L),o&&(e.docView.minWidth=0,d|=16)}v>0&&x>0?f=Math.max(v,x):v<0&&x<0&&(f=Math.min(v,x)),nj();for(let M of this.viewports){let O=M.from==this.viewport.from?L:e.docView.measureVisibleLineHeights(M);this.heightMap=(o?vs.empty().applyChanges(this.stateDeco,an.empty,this.heightOracle,[new wa(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new q_e(M.from,O))}Ed&&(d|=2)}let N=!this.viewportIsAppropriate(this.viewport,f)||this.scrollTarget&&(this.scrollTarget.range.head<this.viewport.from||this.scrollTarget.range.head>this.viewport.to);return N&&(d&2&&(d|=this.updateScaler()),this.viewport=this.getViewport(f,this.scrollTarget),d|=this.updateForViewport()),(d&2||N)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,e)),d|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),d}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,n){let i=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),s=this.heightMap,a=this.heightOracle,{visibleTop:o,visibleBottom:r}=this,c=new k_(s.lineAt(o-i*1e3,Bn.ByHeight,a,0,0).from,s.lineAt(r+(1-i)*1e3,Bn.ByHeight,a,0,0).to);if(n){let{head:d}=n.range;if(d<c.from||d>c.to){let f=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),p=s.lineAt(d,Bn.ByPos,a,0,0),g;n.y=="center"?g=(p.top+p.bottom)/2-f/2:n.y=="start"||n.y=="nearest"&&d<c.from?g=p.top:g=p.bottom-f,c=new k_(s.lineAt(g-1e3/2,Bn.ByHeight,a,0,0).from,s.lineAt(g+f+1e3/2,Bn.ByHeight,a,0,0).to)}}return c}mapViewport(e,n){let i=n.mapPos(e.from,-1),s=n.mapPos(e.to,1);return new k_(this.heightMap.lineAt(i,Bn.ByPos,this.heightOracle,0,0).from,this.heightMap.lineAt(s,Bn.ByPos,this.heightOracle,0,0).to)}viewportIsAppropriate({from:e,to:n},i=0){if(!this.inView)return!0;let{top:s}=this.heightMap.lineAt(e,Bn.ByPos,this.heightOracle,0,0),{bottom:a}=this.heightMap.lineAt(n,Bn.ByPos,this.heightOracle,0,0),{visibleTop:o,visibleBottom:r}=this;return(e==0||s<=o-Math.max(10,Math.min(-i,250)))&&(n==this.state.doc.length||a>=r+Math.max(10,Math.min(i,250)))&&s>o-2*1e3&&a<r+2*1e3}mapLineGaps(e,n){if(!e.length||n.empty)return e;let i=[];for(let s of e)n.touchesRange(s.from,s.to)||i.push(new F1(n.mapPos(s.from),n.mapPos(s.to),s.size,s.displaySize));return i}ensureLineGaps(e,n){let i=this.heightOracle.lineWrapping,s=i?1e4:2e3,a=s>>1,o=s<<1;if(this.defaultTextDirection!=Un.LTR&&!i)return[];let r=[],c=(f,p,g,y)=>{if(p-f<a)return;let _=this.state.selection.main,v=[_.from];_.empty||v.push(_.to);for(let k of v)if(k>f&&k<p){c(f,k-10,g,y),c(k+10,p,g,y);return}let x=Y_e(e,k=>k.from>=g.from&&k.to<=g.to&&Math.abs(k.from-f)<a&&Math.abs(k.to-p)<a&&!v.some(C=>k.from<C&&k.to>C));if(!x){if(p<g.to&&n&&i&&n.visibleRanges.some(N=>N.from<=p&&N.to>=p)){let N=n.moveToLineBoundary(je.cursor(p),!1,!0).head;N>f&&(p=N)}let k=this.gapSize(g,f,p,y),C=i||k<2e6?k:2e6;x=new F1(f,p,k,C)}r.push(x)},d=f=>{if(f.length<o||f.type!=bs.Text)return;let p=Q_e(f.from,f.to,this.stateDeco);if(p.total<o)return;let g=this.scrollTarget?this.scrollTarget.range.head:null,y,_;if(i){let v=s/this.heightOracle.lineLength*this.heightOracle.lineHeight,x,k;if(g!=null){let C=A_(p,g),N=((this.visibleBottom-this.visibleTop)/2+v)/f.height;x=C-N,k=C+N}else x=(this.visibleTop-f.top-v)/f.height,k=(this.visibleBottom-f.top+v)/f.height;y=C_(p,x),_=C_(p,k)}else{let v=p.total*this.heightOracle.charWidth,x=s*this.heightOracle.charWidth,k=0;if(v>2e6)for(let O of e)O.from>=f.from&&O.from<f.to&&O.size!=O.displaySize&&O.from*this.heightOracle.charWidth+k<this.pixelViewport.left&&(k=O.size-O.displaySize);let C=this.pixelViewport.left+k,N=this.pixelViewport.right+k,L,M;if(g!=null){let O=A_(p,g),T=((N-C)/2+x)/v;L=O-T,M=O+T}else L=(C-x)/v,M=(N+x)/v;y=C_(p,L),_=C_(p,M)}y>f.from&&c(f.from,y,f,p),_<f.to&&c(_,f.to,f,p)};for(let f of this.viewportLines)Array.isArray(f.type)?f.type.forEach(d):d(f);return r}gapSize(e,n,i,s){let a=A_(s,i)-A_(s,n);return this.heightOracle.lineWrapping?e.height*a:s.total*this.heightOracle.charWidth*a}updateLineGaps(e){F1.same(e,this.lineGaps)||(this.lineGaps=e,this.lineGapDeco=xt.set(e.map(n=>n.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let n=this.stateDeco;this.lineGaps.length&&(n=n.concat(this.lineGapDeco));let i=[];cn.spans(n,this.viewport.from,this.viewport.to,{span(a,o){i.push({from:a,to:o})},point(){}},20);let s=0;if(i.length!=this.visibleRanges.length)s=12;else for(let a=0;a<i.length&&!(s&8);a++){let o=this.visibleRanges[a],r=i[a];(o.from!=r.from||o.to!=r.to)&&(s|=4,e&&e.mapPos(o.from,-1)==r.from&&e.mapPos(o.to,1)==r.to||(s|=8))}return this.visibleRanges=i,s}lineBlockAt(e){return e>=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(n=>n.from<=e&&n.to>=e)||jf(this.heightMap.lineAt(e,Bn.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(n=>n.top<=e&&n.bottom>=e)||jf(this.heightMap.lineAt(this.scaler.fromDOM(e),Bn.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(e){let n=this.lineBlockAtHeight(e+8);return n.from>=this.viewport.from||this.viewportLines[0].top-e>200?n:this.viewportLines[0]}elementAtHeight(e){return jf(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}class k_{constructor(e,n){this.from=e,this.to=n}}function Q_e(t,e,n){let i=[],s=t,a=0;return cn.spans(n,t,e,{span(){},point(o,r){o>s&&(i.push({from:s,to:o}),a+=o-s),s=r}},20),s<e&&(i.push({from:s,to:e}),a+=e-s),{total:a,ranges:i}}function C_({total:t,ranges:e},n){if(n<=0)return e[0].from;if(n>=1)return e[e.length-1].to;let i=Math.floor(t*n);for(let s=0;;s++){let{from:a,to:o}=e[s],r=o-a;if(i<=r)return a+i;i-=r}}function A_(t,e){let n=0;for(let{from:i,to:s}of t.ranges){if(e<=s){n+=e-i;break}n+=s-i}return n/t.total}function Y_e(t,e){for(let n of t)if(e(n))return n}const aj={toDOM(t){return t},fromDOM(t){return t},scale:1,eq(t){return t==this}};class Lk{constructor(e,n,i){let s=0,a=0,o=0;this.viewports=i.map(({from:r,to:c})=>{let d=n.lineAt(r,Bn.ByPos,e,0,0).top,f=n.lineAt(c,Bn.ByPos,e,0,0).bottom;return s+=f-d,{from:r,to:c,top:d,bottom:f,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(n.height-s);for(let r of this.viewports)r.domTop=o+(r.top-a)*this.scale,o=r.domBottom=r.domTop+(r.bottom-r.top),a=r.bottom}toDOM(e){for(let n=0,i=0,s=0;;n++){let a=n<this.viewports.length?this.viewports[n]:null;if(!a||e<a.top)return s+(e-i)*this.scale;if(e<=a.bottom)return a.domTop+(e-a.top);i=a.bottom,s=a.domBottom}}fromDOM(e){for(let n=0,i=0,s=0;;n++){let a=n<this.viewports.length?this.viewports[n]:null;if(!a||e<a.domTop)return i+(e-s)/this.scale;if(e<=a.domBottom)return a.top+(e-a.domTop);i=a.bottom,s=a.domBottom}}eq(e){return e instanceof Lk?this.scale==e.scale&&this.viewports.length==e.viewports.length&&this.viewports.every((n,i)=>n.from==e.viewports[i].from&&n.to==e.viewports[i].to):!1}}function jf(t,e){if(e.scale==1)return t;let n=e.toDOM(t.top),i=e.toDOM(t.bottom);return new vo(t.from,t.length,n,i-n,Array.isArray(t._content)?t._content.map(s=>jf(s,e)):t._content)}const N_=tt.define({combine:t=>t.join(" ")}),qS=tt.define({combine:t=>t.indexOf(!0)>-1}),zS=Ll.newName(),U6=Ll.newName(),q6=Ll.newName(),z6={"&light":"."+U6,"&dark":"."+q6};function KS(t,e,n){return new Ll(e,{finish(i){return/&/.test(i)?i.replace(/&\w*/,s=>{if(s=="&")return t;if(!n||!n[s])throw new RangeError(`Unsupported selector: ${s}`);return n[s]}):t+" "+i}})}const J_e=KS("."+zS,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="200" height="20"><path stroke="%23888" stroke-width="1" fill="none" d="M1 10H196L190 5M190 15L196 10M197 4L197 16"/></svg>')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},z6),Z_e={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},I1=$e.ie&&$e.ie_version<=11;class e0e{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new Dge,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(n=>{for(let i of n)this.queue.push(i);($e.ie&&$e.ie_version<=11||$e.ios&&e.composing)&&n.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&$e.android&&e.constructor.EDIT_CONTEXT!==!1&&!($e.chrome&&$e.chrome_version<126)&&(this.editContext=new n0e(e),e.state.facet(yr)&&(e.contentDOM.editContext=this.editContext.editContext)),I1&&(this.onCharData=n=>{this.queue.push({target:n.target,type:"characterData",oldValue:n.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var n;((n=this.view.docView)===null||n===void 0?void 0:n.lastUpdate)<Date.now()-75&&this.onResize()}),this.resizeScroll.observe(e.scrollDOM)),this.addWindowListeners(this.win=e.win),this.start(),typeof IntersectionObserver=="function"&&(this.intersection=new IntersectionObserver(n=>{this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),n.length>0&&n[n.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(n=>{n.length>0&&n[n.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type=="change"||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((n,i)=>n!=e[i]))){this.gapIntersection.disconnect();for(let n of e)this.gapIntersection.observe(n);this.gaps=e}}onSelectionChange(e){let n=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,s=this.selectionRange;if(i.state.facet(yr)?i.root.activeElement!=this.dom:!h0(this.dom,s))return;let a=s.anchorNode&&i.docView.nearest(s.anchorNode);if(a&&a.ignoreEvent(e)){n||(this.selectionChanged=!1);return}($e.ie&&$e.ie_version<=11||$e.android&&$e.chrome)&&!i.state.selection.main.empty&&s.focusNode&&nm(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,n=Cm(e.root);if(!n)return!1;let i=$e.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&t0e(this.view,n)||n;if(!i||this.selectionRange.eq(i))return!1;let s=h0(this.dom,i);return s&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime<Date.now()-300&&Ige(this.dom,i)?(this.view.inputState.lastFocusTime=0,e.docView.updateSelection(),!1):(this.selectionRange.setRange(i),s&&(this.selectionChanged=!0),!0)}setSelectionRange(e,n){this.selectionRange.set(e.node,e.offset,n.node,n.offset),this.selectionChanged=!1}clearSelectionRange(){this.selectionRange.set(null,0,null,0)}listenForScroll(){this.parentCheck=-1;let e=0,n=null;for(let i=this.dom;i;)if(i.nodeType==1)!n&&e<this.scrollTargets.length&&this.scrollTargets[e]==i?e++:n||(n=this.scrollTargets.slice(0,e)),n&&n.push(i),i=i.assignedSlot||i.parentNode;else if(i.nodeType==11)i=i.host;else break;if(e<this.scrollTargets.length&&!n&&(n=this.scrollTargets.slice(0,e)),n){for(let i of this.scrollTargets)i.removeEventListener("scroll",this.onScroll);for(let i of this.scrollTargets=n)i.addEventListener("scroll",this.onScroll)}}ignore(e){if(!this.active)return e();try{return this.stop(),e()}finally{this.start(),this.clear()}}start(){this.active||(this.observer.observe(this.dom,Z_e),I1&&this.dom.addEventListener("DOMCharacterDataModified",this.onCharData),this.active=!0)}stop(){this.active&&(this.active=!1,this.observer.disconnect(),I1&&this.dom.removeEventListener("DOMCharacterDataModified",this.onCharData))}clear(){this.processRecords(),this.queue.length=0,this.selectionChanged=!1}delayAndroidKey(e,n){var i;if(!this.delayedAndroidKey){let s=()=>{let a=this.delayedAndroidKey;a&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=a.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&a.force&&md(this.dom,a.key,a.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:n,force:this.lastChange<Date.now()-50||!!(!((i=this.delayedAndroidKey)===null||i===void 0)&&i.force)})}clearDelayedAndroidKey(){this.win.cancelAnimationFrame(this.flushingAndroidKey),this.delayedAndroidKey=null,this.flushingAndroidKey=-1}flushSoon(){this.delayedFlush<0&&(this.delayedFlush=this.view.win.requestAnimationFrame(()=>{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let n=-1,i=-1,s=!1;for(let a of e){let o=this.readMutation(a);o&&(o.typeOver&&(s=!0),n==-1?{from:n,to:i}=o:(n=Math.min(o.from,n),i=Math.max(o.to,i)))}return{from:n,to:i,typeOver:s}}readChange(){let{from:e,to:n,typeOver:i}=this.processRecords(),s=this.selectionChanged&&h0(this.dom,this.selectionRange);if(e<0&&!s)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let a=new b_e(this.view,e,n,i);return this.view.docView.domChanged={newSel:a.newSel?a.newSel.main:null},a}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let n=this.readChange();if(!n)return this.view.requestMeasure(),!1;let i=this.view.state,s=M6(this.view,n);return this.view.state==i&&(n.domChanged||n.newSel&&!n.newSel.main.eq(this.view.state.selection.main))&&this.view.update([]),s}readMutation(e){let n=this.view.docView.nearest(e.target);if(!n||n.ignoreMutation(e))return null;if(n.markDirty(e.type=="attributes"),e.type=="attributes"&&(n.flags|=4),e.type=="childList"){let i=oj(n,e.previousSibling||e.target.previousSibling,-1),s=oj(n,e.nextSibling||e.target.nextSibling,1);return{from:i?n.posAfter(i):n.posAtStart,to:s?n.posBefore(s):n.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:n.posAtStart,to:n.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(yr)!=e.state.facet(yr)&&(e.view.contentDOM.editContext=e.state.facet(yr)?this.editContext.editContext:null))}destroy(){var e,n,i;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(n=this.gapIntersection)===null||n===void 0||n.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}}function oj(t,e,n){for(;e;){let i=An.get(e);if(i&&i.parent==t)return i;let s=e.parentNode;e=s!=t.dom?s:n>0?e.nextSibling:e.previousSibling}return null}function rj(t,e){let n=e.startContainer,i=e.startOffset,s=e.endContainer,a=e.endOffset,o=t.docView.domAtPos(t.state.selection.main.anchor);return nm(o.node,o.offset,s,a)&&([n,i,s,a]=[s,a,n,i]),{anchorNode:n,anchorOffset:i,focusNode:s,focusOffset:a}}function t0e(t,e){if(e.getComposedRanges){let s=e.getComposedRanges(t.root)[0];if(s)return rj(t,s)}let n=null;function i(s){s.preventDefault(),s.stopImmediatePropagation(),n=s.getTargetRanges()[0]}return t.contentDOM.addEventListener("beforeinput",i,!0),t.dom.ownerDocument.execCommand("indent"),t.contentDOM.removeEventListener("beforeinput",i,!0),n?rj(t,n):null}class n0e{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let n=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=i=>{let s=e.state.selection.main,{anchor:a,head:o}=s,r=this.toEditorPos(i.updateRangeStart),c=this.toEditorPos(i.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:i.updateRangeStart,editorBase:r,drifted:!1});let d=c-r>i.text.length;r==this.from&&a<this.from?r=a:c==this.to&&a>this.to&&(c=a);let f=L6(e.state.sliceDoc(r,c),i.text,(d?s.from:s.to)-r,d?"end":null);if(!f){let g=je.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd));g.main.eq(s)||e.dispatch({selection:g,userEvent:"select"});return}let p={from:f.from+r,to:f.toA+r,insert:an.of(i.text.slice(f.from,f.toB).split(`
`))};if(($e.mac||$e.android)&&p.from==o-1&&/^\. ?$/.test(i.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(p={from:r,to:c,insert:an.of([i.text.replace("."," ")])}),this.pendingContextChange=p,!e.state.readOnly){let g=this.to-this.from+(p.to-p.from+p.insert.length);Tk(e,p,je.single(this.toEditorPos(i.selectionStart,g),this.toEditorPos(i.selectionEnd,g)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),p.from<p.to&&!p.insert.length&&e.inputState.composing>=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(n.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(n.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let s=[],a=null;for(let o=this.toEditorPos(i.rangeStart),r=this.toEditorPos(i.rangeEnd);o<r;o++){let c=e.coordsForChar(o);a=c&&new DOMRect(c.left,c.top,c.right-c.left,c.bottom-c.top)||a||new DOMRect,s.push(a)}n.updateCharacterBounds(i.rangeStart,s)},this.handlers.textformatupdate=i=>{let s=[];for(let a of i.getTextFormats()){let o=a.underlineStyle,r=a.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(r)){let c=this.toEditorPos(a.rangeStart),d=this.toEditorPos(a.rangeEnd);if(c<d){let f=`text-decoration: underline ${/^[a-z]/.test(o)?o+" ":o=="Dashed"?"dashed ":o=="Squiggle"?"wavy ":""}${/thin/i.test(r)?1:2}px`;s.push(xt.mark({attributes:{style:f}}).range(c,d))}}}e.dispatch({effects:v6.of(xt.set(s))})},this.handlers.compositionstart=()=>{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(e.state)}};for(let i in this.handlers)n.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let s=Cm(i.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let n=0,i=!1,s=this.pendingContextChange;return e.changes.iterChanges((a,o,r,c,d)=>{if(i)return;let f=d.length-(o-a);if(s&&o>=s.to)if(s.from==a&&s.to==o&&s.insert.eq(d)){s=this.pendingContextChange=null,n+=f,this.to+=f;return}else s=null,this.revertPending(e.state);if(a+=n,o+=n,o<=this.from)this.from+=f,this.to+=f;else if(a<this.to){if(a<this.from||o>this.to||this.to-this.from+d.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(a),this.toContextPos(o),d.toString()),this.to+=f}n+=f}),s&&!i&&this.revertPending(e.state),!i}update(e){let n=this.pendingContextChange,i=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(i.from,i.to)&&e.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||n)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:n}=e.selection.main;this.from=Math.max(0,n-1e4),this.to=Math.min(e.doc.length,n+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let n=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(n.from),this.toContextPos(n.from+n.insert.length),e.doc.sliceString(n.from,n.to))}setSelection(e){let{main:n}=e.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,n.anchor))),s=this.toContextPos(n.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(i,s)}rangeIsValid(e){let{head:n}=e.selection.main;return!(this.from>0&&n-this.from<500||this.to<e.doc.length&&this.to-n<500||this.to-this.from>1e4*3)}toEditorPos(e,n=this.to-this.from){e=Math.min(e,n);let i=this.composing;return i&&i.drifted?i.editorBase+(e-i.contextBase):e+this.from}toContextPos(e){let n=this.composing;return n&&n.drifted?n.contextBase+(e-n.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}}class Xe{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var n;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:i}=e;this.dispatchTransactions=e.dispatchTransactions||i&&(s=>s.forEach(a=>i(a,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=e.root||Fge(e.parent)||document,this.viewState=new sj(e.state||nn.create(e)),e.scrollTo&&e.scrollTo.is(x_)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(ed).map(s=>new j1(s));for(let s of this.plugins)s.update(this);this.observer=new e0e(this),this.inputState=new w_e(this),this.inputState.ensureHandlers(this.plugins),this.docView=new BE(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((n=document.fonts)===null||n===void 0)&&n.ready&&document.fonts.ready.then(()=>this.requestMeasure())}dispatch(...e){let n=e.length==1&&e[0]instanceof Ni?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(n,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let n=!1,i=!1,s,a=this.state;for(let g of e){if(g.startState!=a)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");a=g.state}if(this.destroyed){this.viewState.state=a;return}let o=this.hasFocus,r=0,c=null;e.some(g=>g.annotation(D6))?(this.inputState.notifiedFocused=o,r=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,c=F6(a,o),c||(r=1));let d=this.observer.delayedAndroidKey,f=null;if(d?(this.observer.clearDelayedAndroidKey(),f=this.observer.readChange(),(f&&!this.state.doc.eq(a.doc)||!this.state.selection.eq(a.selection))&&(f=null)):this.observer.clear(),a.facet(nn.phrases)!=this.state.facet(nn.phrases))return this.setState(a);s=J0.create(this,a,e),s.flags|=r;let p=this.viewState.scrollTarget;try{this.updateState=2;for(let g of e){if(p&&(p=p.map(g.changes)),g.scrollIntoView){let{main:y}=g.state.selection;p=new pd(y.empty?y:je.cursor(y.head,y.head>y.anchor?-1:1))}for(let y of g.effects)y.is(x_)&&(p=y.value.clip(this.state))}this.viewState.update(s,p),this.bidiCache=ey.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),n=this.docView.update(s),this.state.facet(Pf)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(n,e.some(g=>g.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(N_)!=s.state.facet(N_)&&(this.viewState.mustMeasureContent=!0),(n||i||p||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),n&&this.docViewUpdate(),!s.empty)for(let g of this.state.facet(FS))try{g(s)}catch(y){Ds(this.state,y,"update listener")}(c||f)&&Promise.resolve().then(()=>{c&&this.state==c.startState&&this.dispatch(c),f&&!M6(this,f)&&d.force&&md(this.contentDOM,d.key,d.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let n=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new sj(e),this.plugins=e.facet(ed).map(i=>new j1(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new BE(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}n&&this.focus(),this.requestMeasure()}updatePlugins(e){let n=e.startState.facet(ed),i=e.state.facet(ed);if(n!=i){let s=[];for(let a of i){let o=n.indexOf(a);if(o<0)s.push(new j1(a));else{let r=this.plugins[o];r.mustUpdate=e,s.push(r)}}for(let a of this.plugins)a.mustUpdate!=e&&a.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=e;for(let s=0;s<this.plugins.length;s++)this.plugins[s].update(this);n!=i&&this.inputState.ensureHandlers(this.plugins)}docViewUpdate(){for(let e of this.plugins){let n=e.value;if(n&&n.docViewUpdate)try{n.docViewUpdate(this)}catch(i){Ds(this.state,i,"doc view update listener")}}}measure(e=!0){if(this.destroyed)return;if(this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let n=null,i=this.scrollDOM,s=i.scrollTop*this.scaleY,{scrollAnchorPos:a,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollTop)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let r=0;;r++){if(o<0)if(QD(i))a=-1,o=this.viewState.heightMap.height;else{let y=this.viewState.scrollAnchorAt(s);a=y.from,o=y.top}this.updateState=1;let c=this.viewState.measure(this);if(!c&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(r>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let d=[];c&4||([this.measureRequests,d]=[d,this.measureRequests]);let f=d.map(y=>{try{return y.read(this)}catch(_){return Ds(this.state,_),lj}}),p=J0.create(this,this.state,[]),g=!1;p.flags|=c,n?n.flags|=c:n=p,this.updateState=2,p.empty||(this.updatePlugins(p),this.inputState.update(p),this.updateAttrs(),g=this.docView.update(p),g&&this.docViewUpdate());for(let y=0;y<d.length;y++)if(f[y]!=lj)try{let _=d[y];_.write&&_.write(f[y],this)}catch(_){Ds(this.state,_)}if(g&&this.docView.updateSelection(!0),!p.viewportChanged&&this.measureRequests.length==0){if(this.viewState.editorHeight)if(this.viewState.scrollTarget){this.docView.scrollIntoView(this.viewState.scrollTarget),this.viewState.scrollTarget=null,o=-1;continue}else{let _=(a<0?this.viewState.heightMap.height:this.viewState.lineBlockAt(a).top)-o;if(_>1||_<-1){s=s+_,i.scrollTop=s/this.scaleY,o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(n&&!n.empty)for(let r of this.state.facet(FS))r(n)}get themeClasses(){return zS+" "+(this.state.facet(qS)?q6:U6)+" "+this.state.facet(N_)}updateAttrs(){let e=cj(this,x6,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),n={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(yr)?"true":"false",class:"cm-content",style:`${$e.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(n["aria-readonly"]="true"),cj(this,Ak,n);let i=this.observer.ignore(()=>{let s=PS(this.contentDOM,this.contentAttrs,n),a=PS(this.dom,this.editorAttrs,e);return s||a});return this.editorAttrs=e,this.contentAttrs=n,i}showAnnouncements(e){let n=!0;for(let i of e)for(let s of i.effects)if(s.is(Xe.announce)){n&&(this.announceDOM.textContent=""),n=!1;let a=this.announceDOM.appendChild(document.createElement("div"));a.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(Pf);let e=this.state.facet(Xe.cspNonce);Ll.mount(this.root,this.styleModules.concat(J_e).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let n=0;n<this.measureRequests.length;n++)if(this.measureRequests[n].key===e.key){this.measureRequests[n]=e;return}}this.measureRequests.push(e)}}plugin(e){let n=this.pluginMap.get(e);return(n===void 0||n&&n.plugin!=e)&&this.pluginMap.set(e,n=this.plugins.find(i=>i.plugin==e)||null),n&&n.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,n,i){return D1(this,e,VE(this,e,n,i))}moveByGroup(e,n){return D1(this,e,VE(this,e,n,i=>m_e(this,e.head,i)))}visualLineSide(e,n){let i=this.bidiSpans(e),s=this.textDirectionAt(e.from),a=i[n?i.length-1:0];return je.cursor(a.side(n,s)+e.from,a.forward(!n,s)?1:-1)}moveToLineBoundary(e,n,i=!0){return f_e(this,e,n,i)}moveVertically(e,n,i){return D1(this,e,p_e(this,e,n,i))}domAtPos(e){return this.docView.domAtPos(e)}posAtDOM(e,n=0){return this.docView.posFromDOM(e,n)}posAtCoords(e,n=!0){return this.readMeasured(),A6(this,e,n)}coordsAtPos(e,n=1){this.readMeasured();let i=this.docView.coordsAt(e,n);if(!i||i.left==i.right)return i;let s=this.state.doc.lineAt(e),a=this.bidiSpans(s),o=a[xl.find(a,e-s.from,-1,n)];return pp(i,o.dir==Un.LTR==n>0)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(_6)||e<this.viewport.from||e>this.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>i0e)return c6(e.length);let n=this.textDirectionAt(e.from),i;for(let a of this.bidiCache)if(a.from==e.from&&a.dir==n&&(a.fresh||l6(a.isolates,i=IE(this,e))))return a.order;i||(i=IE(this,e));let s=Yge(e.text,n,i);return this.bidiCache.push(new ey(e.from,e.to,n,i,!0,s)),s}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||$e.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{$D(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,n={}){return x_.of(new pd(typeof e=="number"?je.cursor(e):e,n.y,n.x,n.yMargin,n.xMargin))}scrollSnapshot(){let{scrollTop:e,scrollLeft:n}=this.scrollDOM,i=this.viewState.scrollAnchorAt(e);return x_.of(new pd(je.cursor(i.from),"start","start",i.top-e,n,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return li.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return li.define(()=>({}),{eventObservers:e})}static theme(e,n){let i=Ll.newName(),s=[N_.of(i),Pf.of(KS(`.${i}`,e))];return n&&n.dark&&s.push(qS.of(!0)),s}static baseTheme(e){return Qc.lowest(Pf.of(KS("."+zS,e,z6)))}static findFromDOM(e){var n;let i=e.querySelector(".cm-content"),s=i&&An.get(i)||An.get(e);return((n=s?.rootView)===null||n===void 0?void 0:n.view)||null}}Xe.styleModule=Pf;Xe.inputHandler=p6;Xe.clipboardInputFilter=kk;Xe.clipboardOutputFilter=Ck;Xe.scrollHandler=b6;Xe.focusChangeEffect=g6;Xe.perLineTextDirection=_6;Xe.exceptionSink=m6;Xe.updateListener=FS;Xe.editable=yr;Xe.mouseSelectionStyle=f6;Xe.dragMovesSelection=h6;Xe.clickAddsSelectionRange=d6;Xe.decorations=Am;Xe.outerDecorations=S6;Xe.atomicRanges=yp;Xe.bidiIsolatedRanges=w6;Xe.scrollMargins=k6;Xe.darkTheme=qS;Xe.cspNonce=tt.define({combine:t=>t.length?t[0]:""});Xe.contentAttributes=Ak;Xe.editorAttributes=x6;Xe.lineWrapping=Xe.contentAttributes.of({class:"cm-lineWrapping"});Xe.announce=Rt.define();const i0e=4096,lj={};class ey{constructor(e,n,i,s,a,o){this.from=e,this.to=n,this.dir=i,this.isolates=s,this.fresh=a,this.order=o}static update(e,n){if(n.empty&&!e.some(a=>a.fresh))return e;let i=[],s=e.length?e[e.length-1].dir:Un.LTR;for(let a=Math.max(0,e.length-10);a<e.length;a++){let o=e[a];o.dir==s&&!n.touchesRange(o.from,o.to)&&i.push(new ey(n.mapPos(o.from,1),n.mapPos(o.to,-1),o.dir,o.isolates,!1,o.order))}return i}}function cj(t,e,n){for(let i=t.state.facet(e),s=i.length-1;s>=0;s--){let a=i[s],o=typeof a=="function"?a(t):a;o&&OS(o,n)}return n}const s0e=$e.mac?"mac":$e.windows?"win":$e.linux?"linux":"key";function a0e(t,e){const n=t.split(/-(?!$)/);let i=n[n.length-1];i=="Space"&&(i=" ");let s,a,o,r;for(let c=0;c<n.length-1;++c){const d=n[c];if(/^(cmd|meta|m)$/i.test(d))r=!0;else if(/^a(lt)?$/i.test(d))s=!0;else if(/^(c|ctrl|control)$/i.test(d))a=!0;else if(/^s(hift)?$/i.test(d))o=!0;else if(/^mod$/i.test(d))e=="mac"?r=!0:a=!0;else throw new Error("Unrecognized modifier name: "+d)}return s&&(i="Alt-"+i),a&&(i="Ctrl-"+i),r&&(i="Meta-"+i),o&&(i="Shift-"+i),i}function T_(t,e,n){return e.altKey&&(t="Alt-"+t),e.ctrlKey&&(t="Ctrl-"+t),e.metaKey&&(t="Meta-"+t),n!==!1&&e.shiftKey&&(t="Shift-"+t),t}const o0e=Qc.default(Xe.domEventHandlers({keydown(t,e){return V6(K6(e.state),t,e,"editor")}})),bp=tt.define({enables:o0e}),uj=new WeakMap;function K6(t){let e=t.facet(bp),n=uj.get(e);return n||uj.set(e,n=c0e(e.reduce((i,s)=>i.concat(s),[]))),n}function r0e(t,e,n){return V6(K6(t.state),e,t,n)}let ml=null;const l0e=4e3;function c0e(t,e=s0e){let n=Object.create(null),i=Object.create(null),s=(o,r)=>{let c=i[o];if(c==null)i[o]=r;else if(c!=r)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},a=(o,r,c,d,f)=>{var p,g;let y=n[o]||(n[o]=Object.create(null)),_=r.split(/ (?!$)/).map(k=>a0e(k,e));for(let k=1;k<_.length;k++){let C=_.slice(0,k).join(" ");s(C,!0),y[C]||(y[C]={preventDefault:!0,stopPropagation:!1,run:[N=>{let L=ml={view:N,prefix:C,scope:o};return setTimeout(()=>{ml==L&&(ml=null)},l0e),!0}]})}let v=_.join(" ");s(v,!1);let x=y[v]||(y[v]={preventDefault:!1,stopPropagation:!1,run:((g=(p=y._any)===null||p===void 0?void 0:p.run)===null||g===void 0?void 0:g.slice())||[]});c&&x.run.push(c),d&&(x.preventDefault=!0),f&&(x.stopPropagation=!0)};for(let o of t){let r=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let d of r){let f=n[d]||(n[d]=Object.create(null));f._any||(f._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:p}=o;for(let g in f)f[g].run.push(y=>p(y,VS))}let c=o[e]||o.key;if(c)for(let d of r)a(d,c,o.run,o.preventDefault,o.stopPropagation),o.shift&&a(d,"Shift-"+c,o.shift,o.preventDefault,o.stopPropagation)}return n}let VS=null;function V6(t,e,n,i){VS=e;let s=Oge(e),a=Es(s,0),o=bo(a)==s.length&&s!=" ",r="",c=!1,d=!1,f=!1;ml&&ml.view==n&&ml.scope==i&&(r=ml.prefix+" ",P6.indexOf(e.keyCode)<0&&(d=!0,ml=null));let p=new Set,g=x=>{if(x){for(let k of x.run)if(!p.has(k)&&(p.add(k),k(n)))return x.stopPropagation&&(f=!0),!0;x.preventDefault&&(x.stopPropagation&&(f=!0),d=!0)}return!1},y=t[i],_,v;return y&&(g(y[r+T_(s,e,!o)])?c=!0:o&&(e.altKey||e.metaKey||e.ctrlKey)&&!($e.windows&&e.ctrlKey&&e.altKey)&&!($e.mac&&e.altKey&&!(e.ctrlKey||e.metaKey))&&(_=Ol[e.keyCode])&&_!=s?(g(y[r+T_(_,e,!0)])||e.shiftKey&&(v=km[e.keyCode])!=s&&v!=_&&g(y[r+T_(v,e,!1)]))&&(c=!0):o&&e.shiftKey&&g(y[r+T_(s,e,!0)])&&(c=!0),!c&&g(y._any)&&(c=!0)),d&&(c=!0),c&&f&&e.stopPropagation(),VS=null,c}class vp{constructor(e,n,i,s,a){this.className=e,this.left=n,this.top=i,this.width=s,this.height=a}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,n){return n.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,n,i){if(i.empty){let s=e.coordsAtPos(i.head,i.assoc||1);if(!s)return[];let a=H6(e);return[new vp(n,s.left-a.left,s.top-a.top,null,s.bottom-s.top)]}else return u0e(e,n,i)}}function H6(t){let e=t.scrollDOM.getBoundingClientRect();return{left:(t.textDirection==Un.LTR?e.left:e.right-t.scrollDOM.clientWidth*t.scaleX)-t.scrollDOM.scrollLeft*t.scaleX,top:e.top-t.scrollDOM.scrollTop*t.scaleY}}function dj(t,e,n,i){let s=t.coordsAtPos(e,n*2);if(!s)return i;let a=t.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,r=t.posAtCoords({x:a.left+1,y:o}),c=t.posAtCoords({x:a.right-1,y:o});return r==null||c==null?i:{from:Math.max(i.from,Math.min(r,c)),to:Math.min(i.to,Math.max(r,c))}}function u0e(t,e,n){if(n.to<=t.viewport.from||n.from>=t.viewport.to)return[];let i=Math.max(n.from,t.viewport.from),s=Math.min(n.to,t.viewport.to),a=t.textDirection==Un.LTR,o=t.contentDOM,r=o.getBoundingClientRect(),c=H6(t),d=o.querySelector(".cm-line"),f=d&&window.getComputedStyle(d),p=r.left+(f?parseInt(f.paddingLeft)+Math.min(0,parseInt(f.textIndent)):0),g=r.right-(f?parseInt(f.paddingRight):0),y=BS(t,i,1),_=BS(t,s,-1),v=y.type==bs.Text?y:null,x=_.type==bs.Text?_:null;if(v&&(t.lineWrapping||y.widgetLineBreaks)&&(v=dj(t,i,1,v)),x&&(t.lineWrapping||_.widgetLineBreaks)&&(x=dj(t,s,-1,x)),v&&x&&v.from==x.from&&v.to==x.to)return C(N(n.from,n.to,v));{let M=v?N(n.from,null,v):L(y,!1),O=x?N(null,n.to,x):L(_,!0),T=[];return(v||y).to<(x||_).from-(v&&x?1:0)||y.widgetLineBreaks>1&&M.bottom+t.defaultLineHeight/2<O.top?T.push(k(p,M.bottom,g,O.top)):M.bottom<O.top&&t.elementAtHeight((M.bottom+O.top)/2).type==bs.Text&&(M.bottom=O.top=(M.bottom+O.top)/2),C(M).concat(T).concat(C(O))}function k(M,O,T,P){return new vp(e,M-c.left,O-c.top,T-M,P-O)}function C({top:M,bottom:O,horizontal:T}){let P=[];for(let E=0;E<T.length;E+=2)P.push(k(T[E],M,T[E+1],O));return P}function N(M,O,T){let P=1e9,E=-1e9,R=[];function q(X,K,B,H,z){let Q=t.coordsAtPos(X,X==T.to?-2:2),W=t.coordsAtPos(B,B==T.from?2:-2);!Q||!W||(P=Math.min(Q.top,W.top,P),E=Math.max(Q.bottom,W.bottom,E),z==Un.LTR?R.push(a&&K?p:Q.left,a&&H?g:W.right):R.push(!a&&H?p:W.left,!a&&K?g:Q.right))}let I=M??T.from,Y=O??T.to;for(let X of t.visibleRanges)if(X.to>I&&X.from<Y)for(let K=Math.max(X.from,I),B=Math.min(X.to,Y);;){let H=t.state.doc.lineAt(K);for(let z of t.bidiSpans(H)){let Q=z.from+H.from,W=z.to+H.from;if(Q>=B)break;W>K&&q(Math.max(Q,K),M==null&&Q<=I,Math.min(W,B),O==null&&W>=Y,z.dir)}if(K=H.to+1,K>=B)break}return R.length==0&&q(I,M==null,Y,O==null,t.textDirection),{top:P,bottom:E,horizontal:R}}function L(M,O){let T=r.top+(O?M.top:M.bottom);return{top:T,bottom:T,horizontal:[]}}}function d0e(t,e){return t.constructor==e.constructor&&t.eq(e)}class h0e{constructor(e,n){this.view=e,this.layer=n,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),n.above&&this.dom.classList.add("cm-layer-above"),n.class&&this.dom.classList.add(n.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),n.mount&&n.mount(this.dom,e)}update(e){e.startState.facet(p0)!=e.state.facet(p0)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let n=0,i=e.facet(p0);for(;n<i.length&&i[n]!=this.layer;)n++;this.dom.style.zIndex=String((this.layer.above?150:-1)-n)}measure(){return this.layer.markers(this.view)}scale(){let{scaleX:e,scaleY:n}=this.view;(e!=this.scaleX||n!=this.scaleY)&&(this.scaleX=e,this.scaleY=n,this.dom.style.transform=`scale(${1/e}, ${1/n})`)}draw(e){if(e.length!=this.drawn.length||e.some((n,i)=>!d0e(n,this.drawn[i]))){let n=this.dom.firstChild,i=0;for(let s of e)s.update&&n&&s.constructor&&this.drawn[i].constructor&&s.update(n,this.drawn[i])?(n=n.nextSibling,i++):this.dom.insertBefore(s.draw(),n);for(;n;){let s=n.nextSibling;n.remove(),n=s}this.drawn=e,$e.safari&&$e.safari_version>=26&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}}const p0=tt.define();function W6(t){return[li.define(e=>new h0e(e,t)),p0.of(t)]}const Nm=tt.define({combine(t){return Fo(t,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,n)=>Math.min(e,n),drawRangeCursor:(e,n)=>e||n})}});function f0e(t={}){return[Nm.of(t),m0e,p0e,g0e,y6.of(!0)]}function G6(t){return t.startState.facet(Nm)!=t.state.facet(Nm)}const m0e=W6({above:!0,markers(t){let{state:e}=t,n=e.facet(Nm),i=[];for(let s of e.selection.ranges){let a=s==e.selection.main;if(s.empty||n.drawRangeCursor){let o=a?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",r=s.empty?s:je.cursor(s.head,s.head>s.anchor?-1:1);for(let c of vp.forRange(t,o,r))i.push(c)}}return i},update(t,e){t.transactions.some(i=>i.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let n=G6(t);return n&&hj(t.state,e),t.docChanged||t.selectionSet||n},mount(t,e){hj(e.state,t)},class:"cm-cursorLayer"});function hj(t,e){e.style.animationDuration=t.facet(Nm).cursorBlinkRate+"ms"}const p0e=W6({above:!1,markers(t){return t.state.selection.ranges.map(e=>e.empty?[]:vp.forRange(t,"cm-selectionBackground",e)).reduce((e,n)=>e.concat(n))},update(t,e){return t.docChanged||t.selectionSet||t.viewportChanged||G6(t)},class:"cm-selectionLayer"}),g0e=Qc.highest(Xe.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}})),$6=Rt.define({map(t,e){return t==null?null:e.mapPos(t)}}),Rf=$i.define({create(){return null},update(t,e){return t!=null&&(t=e.changes.mapPos(t)),e.effects.reduce((n,i)=>i.is($6)?i.value:n,t)}}),_0e=li.fromClass(class{constructor(t){this.view=t,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(t){var e;let n=t.state.field(Rf);n==null?this.cursor!=null&&((e=this.cursor)===null||e===void 0||e.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(t.startState.field(Rf)!=n||t.docChanged||t.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:t}=this,e=t.state.field(Rf),n=e!=null&&t.coordsAtPos(e);if(!n)return null;let i=t.scrollDOM.getBoundingClientRect();return{left:n.left-i.left+t.scrollDOM.scrollLeft*t.scaleX,top:n.top-i.top+t.scrollDOM.scrollTop*t.scaleY,height:n.bottom-n.top}}drawCursor(t){if(this.cursor){let{scaleX:e,scaleY:n}=this.view;t?(this.cursor.style.left=t.left/e+"px",this.cursor.style.top=t.top/n+"px",this.cursor.style.height=t.height/n+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(t){this.view.state.field(Rf)!=t&&this.view.dispatch({effects:$6.of(t)})}},{eventObservers:{dragover(t){this.setDropPos(this.view.posAtCoords({x:t.clientX,y:t.clientY}))},dragleave(t){(t.target==this.view.contentDOM||!this.view.contentDOM.contains(t.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function y0e(){return[Rf,_0e]}function fj(t,e,n,i,s){e.lastIndex=0;for(let a=t.iterRange(n,i),o=n,r;!a.next().done;o+=a.value.length)if(!a.lineBreak)for(;r=e.exec(a.value);)s(o+r.index,r)}function b0e(t,e){let n=t.visibleRanges;if(n.length==1&&n[0].from==t.viewport.from&&n[0].to==t.viewport.to)return n;let i=[];for(let{from:s,to:a}of n)s=Math.max(t.state.doc.lineAt(s).from,s-e),a=Math.min(t.state.doc.lineAt(a).to,a+e),i.length&&i[i.length-1].to>=s?i[i.length-1].to=a:i.push({from:s,to:a});return i}class v0e{constructor(e){const{regexp:n,decoration:i,decorate:s,boundary:a,maxLength:o=1e3}=e;if(!n.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=n,s)this.addMatch=(r,c,d,f)=>s(f,d,d+r[0].length,r,c);else if(typeof i=="function")this.addMatch=(r,c,d,f)=>{let p=i(r,c,d);p&&f(d,d+r[0].length,p)};else if(i)this.addMatch=(r,c,d,f)=>f(d,d+r[0].length,i);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=a,this.maxLength=o}createDeco(e){let n=new Tr,i=n.add.bind(n);for(let{from:s,to:a}of b0e(e,this.maxLength))fj(e.state.doc,this.regexp,s,a,(o,r)=>this.addMatch(r,e,o,i));return n.finish()}updateDeco(e,n){let i=1e9,s=-1;return e.docChanged&&e.changes.iterChanges((a,o,r,c)=>{c>=e.view.viewport.from&&r<=e.view.viewport.to&&(i=Math.min(r,i),s=Math.max(c,s))}),e.viewportMoved||s-i>1e3?this.createDeco(e.view):s>-1?this.updateRange(e.view,n.map(e.changes),i,s):n}updateRange(e,n,i,s){for(let a of e.visibleRanges){let o=Math.max(a.from,i),r=Math.min(a.to,s);if(r>=o){let c=e.state.doc.lineAt(o),d=c.to<r?e.state.doc.lineAt(r):c,f=Math.max(a.from,c.from),p=Math.min(a.to,d.to);if(this.boundary){for(;o>c.from;o--)if(this.boundary.test(c.text[o-1-c.from])){f=o;break}for(;r<d.to;r++)if(this.boundary.test(d.text[r-d.from])){p=r;break}}let g=[],y,_=(v,x,k)=>g.push(k.range(v,x));if(c==d)for(this.regexp.lastIndex=f-c.from;(y=this.regexp.exec(c.text))&&y.index<p-c.from;)this.addMatch(y,e,y.index+c.from,_);else fj(e.state.doc,this.regexp,f,p,(v,x)=>this.addMatch(x,e,v,_));n=n.update({filterFrom:f,filterTo:p,filter:(v,x)=>v<f||x>p,add:g})}}return n}}const HS=/x/.unicode!=null?"gu":"g",x0e=new RegExp(`[\0-\b
--Ÿ­؜\u2028\u2029\uFEFF-]`,HS),S0e={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let B1=null;function w0e(){var t;if(B1==null&&typeof document<"u"&&document.body){let e=document.body.style;B1=((t=e.tabSize)!==null&&t!==void 0?t:e.MozTabSize)!=null}return B1||!1}const g0=tt.define({combine(t){let e=Fo(t,{render:null,specialChars:x0e,addSpecialChars:null});return(e.replaceTabs=!w0e())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,HS)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,HS)),e}});function k0e(t={}){return[g0.of(t),C0e()]}let mj=null;function C0e(){return mj||(mj=li.fromClass(class{constructor(t){this.view=t,this.decorations=xt.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(t.state.facet(g0)),this.decorations=this.decorator.createDeco(t)}makeDecorator(t){return new v0e({regexp:t.specialChars,decoration:(e,n,i)=>{let{doc:s}=n.state,a=Es(e[0],0);if(a==9){let o=s.lineAt(i),r=n.state.tabSize,c=Xd(o.text,r,i-o.from);return xt.replace({widget:new M0e((r-c%r)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[a]||(this.decorationCache[a]=xt.replace({widget:new T0e(t,a)}))},boundary:t.replaceTabs?void 0:/[^]/})}update(t){let e=t.state.facet(g0);t.startState.facet(g0)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(t.view)):this.decorations=this.decorator.updateDeco(t,this.decorations)}},{decorations:t=>t.decorations}))}const A0e="•";function N0e(t){return t>=32?A0e:t==10?"␤":String.fromCharCode(9216+t)}class T0e extends Er{constructor(e,n){super(),this.options=e,this.code=n}eq(e){return e.code==this.code}toDOM(e){let n=N0e(this.code),i=e.state.phrase("Control character")+" "+(S0e[this.code]||"0x"+this.code.toString(16)),s=this.options.render&&this.options.render(this.code,i,n);if(s)return s;let a=document.createElement("span");return a.textContent=n,a.title=i,a.setAttribute("aria-label",i),a.className="cm-specialChar",a}ignoreEvent(){return!1}}class M0e extends Er{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}}function L0e(){return P0e}const O0e=xt.line({class:"cm-activeLine"}),P0e=li.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.docChanged||t.selectionSet)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=-1,n=[];for(let i of t.state.selection.ranges){let s=t.lineBlockAt(i.head);s.from>e&&(n.push(O0e.range(s.from)),e=s.from)}return xt.set(n)}},{decorations:t=>t.decorations});class E0e extends Er{constructor(e){super(),this.content=e}toDOM(e){let n=document.createElement("span");return n.className="cm-placeholder",n.style.pointerEvents="none",n.appendChild(typeof this.content=="string"?document.createTextNode(this.content):typeof this.content=="function"?this.content(e):this.content.cloneNode(!0)),n.setAttribute("aria-hidden","true"),n}coordsAt(e){let n=e.firstChild?Ld(e.firstChild):[];if(!n.length)return null;let i=window.getComputedStyle(e.parentNode),s=pp(n[0],i.direction!="rtl"),a=parseInt(i.lineHeight);return s.bottom-s.top>a*1.5?{left:s.left,right:s.right,top:s.top,bottom:s.top+a}:s}ignoreEvent(){return!1}}function j0e(t){let e=li.fromClass(class{constructor(n){this.view=n,this.placeholder=t?xt.set([xt.widget({widget:new E0e(t),side:1}).range(0)]):xt.none}get decorations(){return this.view.state.doc.length?xt.none:this.placeholder}},{decorations:n=>n.decorations});return typeof t=="string"?[e,Xe.contentAttributes.of({"aria-placeholder":t})]:e}const WS=2e3;function R0e(t,e,n){let i=Math.min(e.line,n.line),s=Math.max(e.line,n.line),a=[];if(e.off>WS||n.off>WS||e.col<0||n.col<0){let o=Math.min(e.off,n.off),r=Math.max(e.off,n.off);for(let c=i;c<=s;c++){let d=t.doc.line(c);d.length<=r&&a.push(je.range(d.from+o,d.to+r))}}else{let o=Math.min(e.col,n.col),r=Math.max(e.col,n.col);for(let c=i;c<=s;c++){let d=t.doc.line(c),f=wS(d.text,o,t.tabSize,!0);if(f<0)a.push(je.cursor(d.to));else{let p=wS(d.text,r,t.tabSize);a.push(je.range(d.from+f,d.from+p))}}}return a}function D0e(t,e){let n=t.coordsAtPos(t.viewport.from);return n?Math.round(Math.abs((n.left-e)/t.defaultCharacterWidth)):-1}function pj(t,e){let n=t.posAtCoords({x:e.clientX,y:e.clientY},!1),i=t.state.doc.lineAt(n),s=n-i.from,a=s>WS?-1:s==i.length?D0e(t,e.clientX):Xd(i.text,t.state.tabSize,n-i.from);return{line:i.number,col:a,off:s}}function F0e(t,e){let n=pj(t,e),i=t.state.selection;return n?{update(s){if(s.docChanged){let a=s.changes.mapPos(s.startState.doc.line(n.line).from),o=s.state.doc.lineAt(a);n={line:o.number,col:n.col,off:Math.min(n.off,o.length)},i=i.map(s.changes)}},get(s,a,o){let r=pj(t,s);if(!r)return i;let c=R0e(t.state,n,r);return c.length?o?je.create(c.concat(i.ranges)):je.create(c):i}}:null}function I0e(t){let e=(n=>n.altKey&&n.button==0);return Xe.mouseSelectionStyle.of((n,i)=>e(i)?F0e(n,i):null)}const B0e={Alt:[18,t=>!!t.altKey],Control:[17,t=>!!t.ctrlKey],Shift:[16,t=>!!t.shiftKey],Meta:[91,t=>!!t.metaKey]},U0e={style:"cursor: crosshair"};function q0e(t={}){let[e,n]=B0e[t.key||"Alt"],i=li.fromClass(class{constructor(s){this.view=s,this.isDown=!1}set(s){this.isDown!=s&&(this.isDown=s,this.view.update([]))}},{eventObservers:{keydown(s){this.set(s.keyCode==e||n(s))},keyup(s){(s.keyCode==e||!n(s))&&this.set(!1)},mousemove(s){this.set(n(s))}}});return[i,Xe.contentAttributes.of(s=>{var a;return!((a=s.plugin(i))===null||a===void 0)&&a.isDown?U0e:null})]}const M_="-10000px";class X6{constructor(e,n,i,s){this.facet=n,this.createTooltipView=i,this.removeTooltipView=s,this.input=e.state.facet(n),this.tooltips=this.input.filter(o=>o);let a=null;this.tooltipViews=this.tooltips.map(o=>a=i(o,a))}update(e,n){var i;let s=e.state.facet(this.facet),a=s.filter(c=>c);if(s===this.input){for(let c of this.tooltipViews)c.update&&c.update(e);return!1}let o=[],r=n?[]:null;for(let c=0;c<a.length;c++){let d=a[c],f=-1;if(d){for(let p=0;p<this.tooltips.length;p++){let g=this.tooltips[p];g&&g.create==d.create&&(f=p)}if(f<0)o[c]=this.createTooltipView(d,c?o[c-1]:null),r&&(r[c]=!!d.above);else{let p=o[c]=this.tooltipViews[f];r&&(r[c]=n[f]),p.update&&p.update(e)}}}for(let c of this.tooltipViews)o.indexOf(c)<0&&(this.removeTooltipView(c),(i=c.destroy)===null||i===void 0||i.call(c));return n&&(r.forEach((c,d)=>n[d]=c),n.length=r.length),this.input=s,this.tooltips=a,this.tooltipViews=o,!0}}function z0e(t){let e=t.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:e.clientHeight,right:e.clientWidth}}const U1=tt.define({combine:t=>{var e,n,i;return{position:$e.ios?"absolute":((e=t.find(s=>s.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((n=t.find(s=>s.parent))===null||n===void 0?void 0:n.parent)||null,tooltipSpace:((i=t.find(s=>s.tooltipSpace))===null||i===void 0?void 0:i.tooltipSpace)||z0e}}}),gj=new WeakMap,Ok=li.fromClass(class{constructor(t){this.view=t,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let e=t.state.facet(U1);this.position=e.position,this.parent=e.parent,this.classes=t.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.resizeObserver=typeof ResizeObserver=="function"?new ResizeObserver(()=>this.measureSoon()):null,this.manager=new X6(t,Pk,(n,i)=>this.createTooltip(n,i),n=>{this.resizeObserver&&this.resizeObserver.unobserve(n.dom),n.dom.remove()}),this.above=this.manager.tooltips.map(n=>!!n.above),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(n=>{Date.now()>this.lastTransaction-50&&n.length>0&&n[n.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),t.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let t of this.manager.tooltipViews)this.intersectionObserver.observe(t.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(t){t.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(t,this.above);e&&this.observeIntersection();let n=e||t.geometryChanged,i=t.state.facet(U1);if(i.position!=this.position&&!this.madeAbsolute){this.position=i.position;for(let s of this.manager.tooltipViews)s.dom.style.position=this.position;n=!0}if(i.parent!=this.parent){this.parent&&this.container.remove(),this.parent=i.parent,this.createContainer();for(let s of this.manager.tooltipViews)this.container.appendChild(s.dom);n=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);n&&this.maybeMeasure()}createTooltip(t,e){let n=t.create(this.view),i=e?e.dom:null;if(n.dom.classList.add("cm-tooltip"),t.arrow&&!n.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let s=document.createElement("div");s.className="cm-tooltip-arrow",n.dom.appendChild(s)}return n.dom.style.position=this.position,n.dom.style.top=M_,n.dom.style.left="0px",this.container.insertBefore(n.dom,i),n.mount&&n.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(n.dom),n}destroy(){var t,e,n;this.view.win.removeEventListener("resize",this.measureSoon);for(let i of this.manager.tooltipViews)i.dom.remove(),(t=i.destroy)===null||t===void 0||t.call(i);this.parent&&this.container.remove(),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),(n=this.intersectionObserver)===null||n===void 0||n.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let t=1,e=1,n=!1;if(this.position=="fixed"&&this.manager.tooltipViews.length){let{dom:a}=this.manager.tooltipViews[0];if($e.safari){let o=a.getBoundingClientRect();n=Math.abs(o.top+1e4)>1||Math.abs(o.left)>1}else n=!!a.offsetParent&&a.offsetParent!=this.container.ownerDocument.body}if(n||this.position=="absolute")if(this.parent){let a=this.parent.getBoundingClientRect();a.width&&a.height&&(t=a.width/this.parent.offsetWidth,e=a.height/this.parent.offsetHeight)}else({scaleX:t,scaleY:e}=this.view.viewState);let i=this.view.scrollDOM.getBoundingClientRect(),s=Nk(this.view);return{visible:{left:i.left+s.left,top:i.top+s.top,right:i.right-s.right,bottom:i.bottom-s.bottom},parent:this.parent?this.container.getBoundingClientRect():this.view.dom.getBoundingClientRect(),pos:this.manager.tooltips.map((a,o)=>{let r=this.manager.tooltipViews[o];return r.getCoords?r.getCoords(a.pos):this.view.coordsAtPos(a.pos)}),size:this.manager.tooltipViews.map(({dom:a})=>a.getBoundingClientRect()),space:this.view.state.facet(U1).tooltipSpace(this.view),scaleX:t,scaleY:e,makeAbsolute:n}}writeMeasure(t){var e;if(t.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let r of this.manager.tooltipViews)r.dom.style.position="absolute"}let{visible:n,space:i,scaleX:s,scaleY:a}=t,o=[];for(let r=0;r<this.manager.tooltips.length;r++){let c=this.manager.tooltips[r],d=this.manager.tooltipViews[r],{dom:f}=d,p=t.pos[r],g=t.size[r];if(!p||c.clip!==!1&&(p.bottom<=Math.max(n.top,i.top)||p.top>=Math.min(n.bottom,i.bottom)||p.right<Math.max(n.left,i.left)-.1||p.left>Math.min(n.right,i.right)+.1)){f.style.top=M_;continue}let y=c.arrow?d.dom.querySelector(".cm-tooltip-arrow"):null,_=y?7:0,v=g.right-g.left,x=(e=gj.get(d))!==null&&e!==void 0?e:g.bottom-g.top,k=d.offset||V0e,C=this.view.textDirection==Un.LTR,N=g.width>i.right-i.left?C?i.left:i.right-g.width:C?Math.max(i.left,Math.min(p.left-(y?14:0)+k.x,i.right-v)):Math.min(Math.max(i.left,p.left-v+(y?14:0)-k.x),i.right-v),L=this.above[r];!c.strictSide&&(L?p.top-x-_-k.y<i.top:p.bottom+x+_+k.y>i.bottom)&&L==i.bottom-p.bottom>p.top-i.top&&(L=this.above[r]=!L);let M=(L?p.top-i.top:i.bottom-p.bottom)-_;if(M<x&&d.resize!==!1){if(M<this.view.defaultLineHeight){f.style.top=M_;continue}gj.set(d,x),f.style.height=(x=M)/a+"px"}else f.style.height&&(f.style.height="");let O=L?p.top-x-_-k.y:p.bottom+_+k.y,T=N+v;if(d.overlap!==!0)for(let P of o)P.left<T&&P.right>N&&P.top<O+x&&P.bottom>O&&(O=L?P.top-x-2-_:P.bottom+_+2);if(this.position=="absolute"?(f.style.top=(O-t.parent.top)/a+"px",_j(f,(N-t.parent.left)/s)):(f.style.top=O/a+"px",_j(f,N/s)),y){let P=p.left+(C?k.x:-k.x)-(N+14-7);y.style.left=P/s+"px"}d.overlap!==!0&&o.push({left:N,top:O,right:T,bottom:O+x}),f.classList.toggle("cm-tooltip-above",L),f.classList.toggle("cm-tooltip-below",!L),d.positioned&&d.positioned(t.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let t of this.manager.tooltipViews)t.dom.style.top=M_}},{eventObservers:{scroll(){this.maybeMeasure()}}});function _j(t,e){let n=parseInt(t.style.left,10);(isNaN(n)||Math.abs(e-n)>1)&&(t.style.left=e+"px")}const K0e=Xe.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:"14px",position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),V0e={x:0,y:0},Pk=tt.define({enables:[Ok,K0e]}),ty=tt.define({combine:t=>t.reduce((e,n)=>e.concat(n),[])});class nb{static create(e){return new nb(e)}constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new X6(e,ty,(n,i)=>this.createHostedView(n,i),n=>n.dom.remove())}createHostedView(e,n){let i=e.create(this.view);return i.dom.classList.add("cm-tooltip-section"),this.dom.insertBefore(i.dom,n?n.dom.nextSibling:this.dom.firstChild),this.mounted&&i.mount&&i.mount(this.view),i}mount(e){for(let n of this.manager.tooltipViews)n.mount&&n.mount(e);this.mounted=!0}positioned(e){for(let n of this.manager.tooltipViews)n.positioned&&n.positioned(e)}update(e){this.manager.update(e)}destroy(){var e;for(let n of this.manager.tooltipViews)(e=n.destroy)===null||e===void 0||e.call(n)}passProp(e){let n;for(let i of this.manager.tooltipViews){let s=i[e];if(s!==void 0){if(n===void 0)n=s;else if(n!==s)return}}return n}get offset(){return this.passProp("offset")}get getCoords(){return this.passProp("getCoords")}get overlap(){return this.passProp("overlap")}get resize(){return this.passProp("resize")}}const H0e=Pk.compute([ty],t=>{let e=t.facet(ty);return e.length===0?null:{pos:Math.min(...e.map(n=>n.pos)),end:Math.max(...e.map(n=>{var i;return(i=n.end)!==null&&i!==void 0?i:n.pos})),create:nb.create,above:e[0].above,arrow:e.some(n=>n.arrow)}});class W0e{constructor(e,n,i,s,a){this.view=e,this.source=n,this.field=i,this.setHover=s,this.hoverTime=a,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active.length)return;let e=Date.now()-this.lastMove.time;e<this.hoverTime?this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime-e):this.startHover()}startHover(){clearTimeout(this.restartTimeout);let{view:e,lastMove:n}=this,i=e.docView.nearest(n.target);if(!i)return;let s,a=1;if(i instanceof xr)s=i.posAtStart;else{if(s=e.posAtCoords(n),s==null)return;let r=e.coordsAtPos(s);if(!r||n.y<r.top||n.y>r.bottom||n.x<r.left-e.defaultCharacterWidth||n.x>r.right+e.defaultCharacterWidth)return;let c=e.bidiSpans(e.state.doc.lineAt(s)).find(f=>f.from<=s&&f.to>=s),d=c&&c.dir==Un.RTL?-1:1;a=n.x<r.left?-d:d}let o=this.source(e,s,a);if(o?.then){let r=this.pending={pos:s};o.then(c=>{this.pending==r&&(this.pending=null,c&&!(Array.isArray(c)&&!c.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(c)?c:[c])}))},c=>Ds(e.state,c,"hover tooltip"))}else o&&!(Array.isArray(o)&&!o.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(o)?o:[o])})}get tooltip(){let e=this.view.plugin(Ok),n=e?e.manager.tooltips.findIndex(i=>i.create==nb.create):-1;return n>-1?e.manager.tooltipViews[n]:null}mousemove(e){var n,i;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let{active:s,tooltip:a}=this;if(s.length&&a&&!G0e(a.dom,e)||this.pending){let{pos:o}=s[0]||this.pending,r=(i=(n=s[0])===null||n===void 0?void 0:n.end)!==null&&i!==void 0?i:o;(o==r?this.view.posAtCoords(this.lastMove)!=o:!$0e(this.view,o,r,e.clientX,e.clientY))&&(this.view.dispatch({effects:this.setHover.of([])}),this.pending=null)}}mouseleave(e){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;let{active:n}=this;if(n.length){let{tooltip:i}=this;i&&i.dom.contains(e.relatedTarget)?this.watchTooltipLeave(i.dom):this.view.dispatch({effects:this.setHover.of([])})}}watchTooltipLeave(e){let n=i=>{e.removeEventListener("mouseleave",n),this.active.length&&!this.view.dom.contains(i.relatedTarget)&&this.view.dispatch({effects:this.setHover.of([])})};e.addEventListener("mouseleave",n)}destroy(){clearTimeout(this.hoverTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}}const L_=4;function G0e(t,e){let{left:n,right:i,top:s,bottom:a}=t.getBoundingClientRect(),o;if(o=t.querySelector(".cm-tooltip-arrow")){let r=o.getBoundingClientRect();s=Math.min(r.top,s),a=Math.max(r.bottom,a)}return e.clientX>=n-L_&&e.clientX<=i+L_&&e.clientY>=s-L_&&e.clientY<=a+L_}function $0e(t,e,n,i,s,a){let o=t.scrollDOM.getBoundingClientRect(),r=t.documentTop+t.documentPadding.top+t.contentHeight;if(o.left>i||o.right<i||o.top>s||Math.min(o.bottom,r)<s)return!1;let c=t.posAtCoords({x:i,y:s},!1);return c>=e&&c<=n}function X0e(t,e={}){let n=Rt.define(),i=$i.define({create(){return[]},update(s,a){if(s.length&&(e.hideOnChange&&(a.docChanged||a.selection)?s=[]:e.hideOn&&(s=s.filter(o=>!e.hideOn(a,o))),a.docChanged)){let o=[];for(let r of s){let c=a.changes.mapPos(r.pos,-1,ps.TrackDel);if(c!=null){let d=Object.assign(Object.create(null),r);d.pos=c,d.end!=null&&(d.end=a.changes.mapPos(d.end)),o.push(d)}}s=o}for(let o of a.effects)o.is(n)&&(s=o.value),o.is(Q0e)&&(s=[]);return s},provide:s=>ty.from(s)});return{active:i,extension:[i,li.define(s=>new W0e(s,t,i,n,e.hoverTime||300)),H0e]}}function Q6(t,e){let n=t.plugin(Ok);if(!n)return null;let i=n.manager.tooltips.indexOf(e);return i<0?null:n.manager.tooltipViews[i]}const Q0e=Rt.define(),yj=tt.define({combine(t){let e,n;for(let i of t)e=e||i.topContainer,n=n||i.bottomContainer;return{topContainer:e,bottomContainer:n}}});function Tm(t,e){let n=t.plugin(Y6),i=n?n.specs.indexOf(e):-1;return i>-1?n.panels[i]:null}const Y6=li.fromClass(class{constructor(t){this.input=t.state.facet(Mm),this.specs=this.input.filter(n=>n),this.panels=this.specs.map(n=>n(t));let e=t.state.facet(yj);this.top=new O_(t,!0,e.topContainer),this.bottom=new O_(t,!1,e.bottomContainer),this.top.sync(this.panels.filter(n=>n.top)),this.bottom.sync(this.panels.filter(n=>!n.top));for(let n of this.panels)n.dom.classList.add("cm-panel"),n.mount&&n.mount()}update(t){let e=t.state.facet(yj);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new O_(t.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new O_(t.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let n=t.state.facet(Mm);if(n!=this.input){let i=n.filter(c=>c),s=[],a=[],o=[],r=[];for(let c of i){let d=this.specs.indexOf(c),f;d<0?(f=c(t.view),r.push(f)):(f=this.panels[d],f.update&&f.update(t)),s.push(f),(f.top?a:o).push(f)}this.specs=i,this.panels=s,this.top.sync(a),this.bottom.sync(o);for(let c of r)c.dom.classList.add("cm-panel"),c.mount&&c.mount()}else for(let i of this.panels)i.update&&i.update(t)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:t=>Xe.scrollMargins.of(e=>{let n=e.plugin(t);return n&&{top:n.top.scrollMargin(),bottom:n.bottom.scrollMargin()}})});class O_{constructor(e,n,i){this.view=e,this.top=n,this.container=i,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let n of this.panels)n.destroy&&e.indexOf(n)<0&&n.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let n=this.container||this.view.dom;n.insertBefore(this.dom,this.top?n.firstChild:null)}let e=this.dom.firstChild;for(let n of this.panels)if(n.dom.parentNode==this.dom){for(;e!=n.dom;)e=bj(e);e=e.nextSibling}else this.dom.insertBefore(n.dom,e);for(;e;)e=bj(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}}function bj(t){let e=t.nextSibling;return t.remove(),e}const Mm=tt.define({enables:Y6});class Lr extends Bc{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}}Lr.prototype.elementClass="";Lr.prototype.toDOM=void 0;Lr.prototype.mapMode=ps.TrackBefore;Lr.prototype.startSide=Lr.prototype.endSide=-1;Lr.prototype.point=!0;const _0=tt.define(),Y0e=tt.define(),J0e={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>cn.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{},side:"before"},am=tt.define();function Z0e(t){return[J6(),am.of({...J0e,...t})]}const vj=tt.define({combine:t=>t.some(e=>e)});function J6(t){return[eye]}const eye=li.fromClass(class{constructor(t){this.view=t,this.domAfter=null,this.prevViewport=t.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=t.state.facet(am).map(e=>new Sj(t,e)),this.fixed=!t.state.facet(vj);for(let e of this.gutters)e.config.side=="after"?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),t.scrollDOM.insertBefore(this.dom,t.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(t){if(this.updateGutters(t)){let e=this.prevViewport,n=t.view.viewport,i=Math.min(e.to,n.to)-Math.max(e.from,n.from);this.syncGutters(i<(n.to-n.from)*.8)}if(t.geometryChanged){let e=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=e,this.domAfter&&(this.domAfter.style.minHeight=e)}this.view.state.facet(vj)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=t.view.viewport}syncGutters(t){let e=this.dom.nextSibling;t&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let n=cn.iter(this.view.state.facet(_0),this.view.viewport.from),i=[],s=this.gutters.map(a=>new tye(a,this.view.viewport,-this.view.documentPadding.top));for(let a of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(a.type)){let o=!0;for(let r of a.type)if(r.type==bs.Text&&o){GS(n,i,r.from);for(let c of s)c.line(this.view,r,i);o=!1}else if(r.widget)for(let c of s)c.widget(this.view,r)}else if(a.type==bs.Text){GS(n,i,a.from);for(let o of s)o.line(this.view,a,i)}else if(a.widget)for(let o of s)o.widget(this.view,a);for(let a of s)a.finish();t&&(this.view.scrollDOM.insertBefore(this.dom,e),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(t){let e=t.startState.facet(am),n=t.state.facet(am),i=t.docChanged||t.heightChanged||t.viewportChanged||!cn.eq(t.startState.facet(_0),t.state.facet(_0),t.view.viewport.from,t.view.viewport.to);if(e==n)for(let s of this.gutters)s.update(t)&&(i=!0);else{i=!0;let s=[];for(let a of n){let o=e.indexOf(a);o<0?s.push(new Sj(this.view,a)):(this.gutters[o].update(t),s.push(this.gutters[o]))}for(let a of this.gutters)a.dom.remove(),s.indexOf(a)<0&&a.destroy();for(let a of s)a.config.side=="after"?this.getDOMAfter().appendChild(a.dom):this.dom.appendChild(a.dom);this.gutters=s}return i}destroy(){for(let t of this.gutters)t.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:t=>Xe.scrollMargins.of(e=>{let n=e.plugin(t);if(!n||n.gutters.length==0||!n.fixed)return null;let i=n.dom.offsetWidth*e.scaleX,s=n.domAfter?n.domAfter.offsetWidth*e.scaleX:0;return e.textDirection==Un.LTR?{left:i,right:s}:{right:i,left:s}})});function xj(t){return Array.isArray(t)?t:[t]}function GS(t,e,n){for(;t.value&&t.from<=n;)t.from==n&&e.push(t.value),t.next()}class tye{constructor(e,n,i){this.gutter=e,this.height=i,this.i=0,this.cursor=cn.iter(e.markers,n.from)}addElement(e,n,i){let{gutter:s}=this,a=(n.top-this.height)/e.scaleY,o=n.height/e.scaleY;if(this.i==s.elements.length){let r=new Z6(e,o,a,i);s.elements.push(r),s.dom.appendChild(r.dom)}else s.elements[this.i].update(e,o,a,i);this.height=n.bottom,this.i++}line(e,n,i){let s=[];GS(this.cursor,s,n.from),i.length&&(s=s.concat(i));let a=this.gutter.config.lineMarker(e,n,s);a&&s.unshift(a);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(e,n,s)}widget(e,n){let i=this.gutter.config.widgetMarker(e,n.widget,n),s=i?[i]:null;for(let a of e.state.facet(Y0e)){let o=a(e,n.widget,n);o&&(s||(s=[])).push(o)}s&&this.addElement(e,n,s)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let n=e.elements.pop();e.dom.removeChild(n.dom),n.destroy()}}}class Sj{constructor(e,n){this.view=e,this.config=n,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in n.domEventHandlers)this.dom.addEventListener(i,s=>{let a=s.target,o;if(a!=this.dom&&this.dom.contains(a)){for(;a.parentNode!=this.dom;)a=a.parentNode;let c=a.getBoundingClientRect();o=(c.top+c.bottom)/2}else o=s.clientY;let r=e.lineBlockAtHeight(o-e.documentTop);n.domEventHandlers[i](e,r,s)&&s.preventDefault()});this.markers=xj(n.markers(e)),n.initialSpacer&&(this.spacer=new Z6(e,0,0,[n.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let n=this.markers;if(this.markers=xj(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],e);s!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[s])}let i=e.view.viewport;return!cn.eq(this.markers,n,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}}class Z6{constructor(e,n,i,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,n,i,s)}update(e,n,i,s){this.height!=n&&(this.height=n,this.dom.style.height=n+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),nye(this.markers,s)||this.setMarkers(e,s)}setMarkers(e,n){let i="cm-gutterElement",s=this.dom.firstChild;for(let a=0,o=0;;){let r=o,c=a<n.length?n[a++]:null,d=!1;if(c){let f=c.elementClass;f&&(i+=" "+f);for(let p=o;p<this.markers.length;p++)if(this.markers[p].compare(c)){r=p,d=!0;break}}else r=this.markers.length;for(;o<r;){let f=this.markers[o++];if(f.toDOM){f.destroy(s);let p=s.nextSibling;s.remove(),s=p}}if(!c)break;c.toDOM&&(d?s=s.nextSibling:this.dom.insertBefore(c.toDOM(e),s)),d&&o++}this.dom.className=i,this.markers=n}destroy(){this.setMarkers(null,[])}}function nye(t,e){if(t.length!=e.length)return!1;for(let n=0;n<t.length;n++)if(!t[n].compare(e[n]))return!1;return!0}const iye=tt.define(),sye=tt.define(),td=tt.define({combine(t){return Fo(t,{formatNumber:String,domEventHandlers:{}},{domEventHandlers(e,n){let i=Object.assign({},e);for(let s in n){let a=i[s],o=n[s];i[s]=a?(r,c,d)=>a(r,c,d)||o(r,c,d):o}return i}})}});class q1 extends Lr{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}}function z1(t,e){return t.state.facet(td).formatNumber(e,t.state)}const aye=am.compute([td],t=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(iye)},lineMarker(e,n,i){return i.some(s=>s.toDOM)?null:new q1(z1(e,e.state.doc.lineAt(n.from).number))},widgetMarker:(e,n,i)=>{for(let s of e.state.facet(sye)){let a=s(e,n,i);if(a)return a}return null},lineMarkerChange:e=>e.startState.facet(td)!=e.state.facet(td),initialSpacer(e){return new q1(z1(e,wj(e.state.doc.lines)))},updateSpacer(e,n){let i=z1(n.view,wj(n.view.state.doc.lines));return i==e.number?e:new q1(i)},domEventHandlers:t.facet(td).domEventHandlers,side:"before"}));function oye(t={}){return[td.of(t),J6(),aye]}function wj(t){let e=9;for(;e<t;)e=e*10+9;return e}const rye=new class extends Lr{constructor(){super(...arguments),this.elementClass="cm-activeLineGutter"}},lye=_0.compute(["selection"],t=>{let e=[],n=-1;for(let i of t.selection.ranges){let s=t.doc.lineAt(i.head).from;s>n&&(n=s,e.push(rye.range(s)))}return cn.of(e)});function cye(){return lye}const e8=1024;let uye=0;class K1{constructor(e,n){this.from=e,this.to=n}}class Wt{constructor(e={}){this.id=uye++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=e.combine||null}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=qs.match(e)),n=>{let i=e(n);return i===void 0?null:[this,i]}}}Wt.closedBy=new Wt({deserialize:t=>t.split(" ")});Wt.openedBy=new Wt({deserialize:t=>t.split(" ")});Wt.group=new Wt({deserialize:t=>t.split(" ")});Wt.isolate=new Wt({deserialize:t=>{if(t&&t!="rtl"&&t!="ltr"&&t!="auto")throw new RangeError("Invalid value for isolate: "+t);return t||"auto"}});Wt.contextHash=new Wt({perNode:!0});Wt.lookAhead=new Wt({perNode:!0});Wt.mounted=new Wt({perNode:!0});class ny{constructor(e,n,i){this.tree=e,this.overlay=n,this.parser=i}static get(e){return e&&e.props&&e.props[Wt.mounted.id]}}const dye=Object.create(null);class qs{constructor(e,n,i,s=0){this.name=e,this.props=n,this.id=i,this.flags=s}static define(e){let n=e.props&&e.props.length?Object.create(null):dye,i=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),s=new qs(e.name||"",n,e.id,i);if(e.props){for(let a of e.props)if(Array.isArray(a)||(a=a(s)),a){if(a[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");n[a[0].id]=a[1]}}return s}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let n=this.prop(Wt.group);return n?n.indexOf(e)>-1:!1}return this.id==e}static match(e){let n=Object.create(null);for(let i in e)for(let s of i.split(" "))n[s]=e[i];return i=>{for(let s=i.prop(Wt.group),a=-1;a<(s?s.length:0);a++){let o=n[a<0?i.name:s[a]];if(o)return o}}}}qs.none=new qs("",Object.create(null),0,8);class Ek{constructor(e){this.types=e;for(let n=0;n<e.length;n++)if(e[n].id!=n)throw new RangeError("Node type ids should correspond to array positions when creating a node set")}extend(...e){let n=[];for(let i of this.types){let s=null;for(let a of e){let o=a(i);if(o){s||(s=Object.assign({},i.props));let r=o[1],c=o[0];c.combine&&c.id in s&&(r=c.combine(s[c.id],r)),s[c.id]=r}}n.push(s?new qs(i.name,s,i.id,i.flags):i)}return new Ek(n)}}const P_=new WeakMap,kj=new WeakMap;var Pi;(function(t){t[t.ExcludeBuffers=1]="ExcludeBuffers",t[t.IncludeAnonymous=2]="IncludeAnonymous",t[t.IgnoreMounts=4]="IgnoreMounts",t[t.IgnoreOverlays=8]="IgnoreOverlays"})(Pi||(Pi={}));class vi{constructor(e,n,i,s,a){if(this.type=e,this.children=n,this.positions=i,this.length=s,this.props=null,a&&a.length){this.props=Object.create(null);for(let[o,r]of a)this.props[typeof o=="number"?o:o.id]=r}}toString(){let e=ny.get(this);if(e&&!e.overlay)return e.tree.toString();let n="";for(let i of this.children){let s=i.toString();s&&(n&&(n+=","),n+=s)}return this.type.name?(/\W/.test(this.type.name)&&!this.type.isError?JSON.stringify(this.type.name):this.type.name)+(n.length?"("+n+")":""):n}cursor(e=0){return new XS(this.topNode,e)}cursorAt(e,n=0,i=0){let s=P_.get(this)||this.topNode,a=new XS(s);return a.moveTo(e,n),P_.set(this,a._tree),a}get topNode(){return new ka(this,0,0,null)}resolve(e,n=0){let i=Lm(P_.get(this)||this.topNode,e,n,!1);return P_.set(this,i),i}resolveInner(e,n=0){let i=Lm(kj.get(this)||this.topNode,e,n,!0);return kj.set(this,i),i}resolveStack(e,n=0){return mye(this,e,n)}iterate(e){let{enter:n,leave:i,from:s=0,to:a=this.length}=e,o=e.mode||0,r=(o&Pi.IncludeAnonymous)>0;for(let c=this.cursor(o|Pi.IncludeAnonymous);;){let d=!1;if(c.from<=a&&c.to>=s&&(!r&&c.type.isAnonymous||n(c)!==!1)){if(c.firstChild())continue;d=!0}for(;d&&i&&(r||!c.type.isAnonymous)&&i(c),!c.nextSibling();){if(!c.parent())return;d=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let n in this.props)e.push([+n,this.props[n]]);return e}balance(e={}){return this.children.length<=8?this:Dk(qs.none,this.children,this.positions,0,this.children.length,0,this.length,(n,i,s)=>new vi(this.type,n,i,s,this.propValues),e.makeTree||((n,i,s)=>new vi(qs.none,n,i,s)))}static build(e){return pye(e)}}vi.empty=new vi(qs.none,[],[],0);class jk{constructor(e,n){this.buffer=e,this.index=n}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new jk(this.buffer,this.index)}}class El{constructor(e,n,i){this.buffer=e,this.length=n,this.set=i}get type(){return qs.none}toString(){let e=[];for(let n=0;n<this.buffer.length;)e.push(this.childString(n)),n=this.buffer[n+3];return e.join(",")}childString(e){let n=this.buffer[e],i=this.buffer[e+3],s=this.set.types[n],a=s.name;if(/\W/.test(a)&&!s.isError&&(a=JSON.stringify(a)),e+=4,i==e)return a;let o=[];for(;e<i;)o.push(this.childString(e)),e=this.buffer[e+3];return a+"("+o.join(",")+")"}findChild(e,n,i,s,a){let{buffer:o}=this,r=-1;for(let c=e;c!=n&&!(t8(a,s,o[c+1],o[c+2])&&(r=c,i>0));c=o[c+3]);return r}slice(e,n,i){let s=this.buffer,a=new Uint16Array(n-e),o=0;for(let r=e,c=0;r<n;){a[c++]=s[r++],a[c++]=s[r++]-i;let d=a[c++]=s[r++]-i;a[c++]=s[r++]-e,o=Math.max(o,d)}return new El(a,o,this.set)}}function t8(t,e,n,i){switch(t){case-2:return n<e;case-1:return i>=e&&n<e;case 0:return n<e&&i>e;case 1:return n<=e&&i>e;case 2:return i>e;case 4:return!0}}function Lm(t,e,n,i){for(var s;t.from==t.to||(n<1?t.from>=e:t.from>e)||(n>-1?t.to<=e:t.to<e);){let o=!i&&t instanceof ka&&t.index<0?null:t.parent;if(!o)return t;t=o}let a=i?0:Pi.IgnoreOverlays;if(i)for(let o=t,r=o.parent;r;o=r,r=o.parent)o instanceof ka&&o.index<0&&((s=r.enter(e,n,a))===null||s===void 0?void 0:s.from)!=o.from&&(t=r);for(;;){let o=t.enter(e,n,a);if(!o)return t;t=o}}class n8{cursor(e=0){return new XS(this,e)}getChild(e,n=null,i=null){let s=Cj(this,e,n,i);return s.length?s[0]:null}getChildren(e,n=null,i=null){return Cj(this,e,n,i)}resolve(e,n=0){return Lm(this,e,n,!1)}resolveInner(e,n=0){return Lm(this,e,n,!0)}matchContext(e){return $S(this.parent,e)}enterUnfinishedNodesBefore(e){let n=this.childBefore(e),i=this;for(;n;){let s=n.lastChild;if(!s||s.to!=n.to)break;s.type.isError&&s.from==s.to?(i=n,n=s.prevSibling):n=s}return i}get node(){return this}get next(){return this.parent}}class ka extends n8{constructor(e,n,i,s){super(),this._tree=e,this.from=n,this.index=i,this._parent=s}get type(){return this._tree.type}get name(){return this._tree.type.name}get to(){return this.from+this._tree.length}nextChild(e,n,i,s,a=0){for(let o=this;;){for(let{children:r,positions:c}=o._tree,d=n>0?r.length:-1;e!=d;e+=n){let f=r[e],p=c[e]+o.from;if(t8(s,i,p,p+f.length)){if(f instanceof El){if(a&Pi.ExcludeBuffers)continue;let g=f.findChild(0,f.buffer.length,n,i-p,s);if(g>-1)return new Sl(new hye(o,f,e,p),null,g)}else if(a&Pi.IncludeAnonymous||!f.type.isAnonymous||Rk(f)){let g;if(!(a&Pi.IgnoreMounts)&&(g=ny.get(f))&&!g.overlay)return new ka(g.tree,p,e,o);let y=new ka(f,p,e,o);return a&Pi.IncludeAnonymous||!y.type.isAnonymous?y:y.nextChild(n<0?f.children.length-1:0,n,i,s)}}}if(a&Pi.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?e=o.index+n:e=n<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}prop(e){return this._tree.prop(e)}enter(e,n,i=0){let s;if(!(i&Pi.IgnoreOverlays)&&(s=ny.get(this._tree))&&s.overlay){let a=e-this.from;for(let{from:o,to:r}of s.overlay)if((n>0?o<=a:o<a)&&(n<0?r>=a:r>a))return new ka(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,n,i)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function Cj(t,e,n,i){let s=t.cursor(),a=[];if(!s.firstChild())return a;if(n!=null){for(let o=!1;!o;)if(o=s.type.is(n),!s.nextSibling())return a}for(;;){if(i!=null&&s.type.is(i))return a;if(s.type.is(e)&&a.push(s.node),!s.nextSibling())return i==null?a:[]}}function $S(t,e,n=e.length-1){for(let i=t;n>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(e[n]&&e[n]!=i.name)return!1;n--}}return!0}class hye{constructor(e,n,i,s){this.parent=e,this.buffer=n,this.index=i,this.start=s}}class Sl extends n8{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,n,i){super(),this.context=e,this._parent=n,this.index=i,this.type=e.buffer.set.types[e.buffer.buffer[i]]}child(e,n,i){let{buffer:s}=this.context,a=s.findChild(this.index+4,s.buffer[this.index+3],e,n-this.context.start,i);return a<0?null:new Sl(this.context,this,a)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}prop(e){return this.type.prop(e)}enter(e,n,i=0){if(i&Pi.ExcludeBuffers)return null;let{buffer:s}=this.context,a=s.findChild(this.index+4,s.buffer[this.index+3],n>0?1:-1,e-this.context.start,n);return a<0?null:new Sl(this.context,this,a)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,n=e.buffer[this.index+3];return n<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new Sl(this.context,this._parent,n):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,n=this._parent?this._parent.index+4:0;return this.index==n?this.externalSibling(-1):new Sl(this.context,this._parent,e.findChild(n,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],n=[],{buffer:i}=this.context,s=this.index+4,a=i.buffer[this.index+3];if(a>s){let o=i.buffer[this.index+1];e.push(i.slice(s,a,o)),n.push(0)}return new vi(this.type,e,n,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function i8(t){if(!t.length)return null;let e=0,n=t[0];for(let a=1;a<t.length;a++){let o=t[a];(o.from>n.from||o.to<n.to)&&(n=o,e=a)}let i=n instanceof ka&&n.index<0?null:n.parent,s=t.slice();return i?s[e]=i:s.splice(e,1),new fye(s,n)}class fye{constructor(e,n){this.heads=e,this.node=n}get next(){return i8(this.heads)}}function mye(t,e,n){let i=t.resolveInner(e,n),s=null;for(let a=i instanceof ka?i:i.context.parent;a;a=a.parent)if(a.index<0){let o=a.parent;(s||(s=[i])).push(o.resolve(e,n)),a=o}else{let o=ny.get(a.tree);if(o&&o.overlay&&o.overlay[0].from<=e&&o.overlay[o.overlay.length-1].to>=e){let r=new ka(o.tree,o.overlay[0].from+a.from,-1,a);(s||(s=[i])).push(Lm(r,e,n,!1))}}return s?i8(s):i}class XS{get name(){return this.type.name}constructor(e,n=0){if(this.mode=n,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,e instanceof ka)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let i=e._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,n){this.index=e;let{start:i,buffer:s}=this.buffer;return this.type=n||s.set.types[s.buffer[e]],this.from=i+s.buffer[e+1],this.to=i+s.buffer[e+2],!0}yield(e){return e?e instanceof ka?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,n,i){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,n,i,this.mode));let{buffer:s}=this.buffer,a=s.findChild(this.index+4,s.buffer[this.index+3],e,n-this.buffer.start,i);return a<0?!1:(this.stack.push(this.index),this.yieldBuf(a))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,n,i=this.mode){return this.buffer?i&Pi.ExcludeBuffers?!1:this.enterChild(1,e,n):this.yield(this._tree.enter(e,n,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&Pi.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&Pi.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:n}=this.buffer,i=this.stack.length-1;if(e<0){let s=i<0?0:this.stack[i]+4;if(this.index!=s)return this.yieldBuf(n.findChild(s,this.index,-1,0,4))}else{let s=n.buffer[this.index+3];if(s<(i<0?n.buffer.length:n.buffer[this.stack[i]+3]))return this.yieldBuf(s)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let n,i,{buffer:s}=this;if(s){if(e>0){if(this.index<s.buffer.buffer.length)return!1}else for(let a=0;a<this.index;a++)if(s.buffer.buffer[a+3]<this.index)return!1;({index:n,parent:i}=s)}else({index:n,_parent:i}=this._tree);for(;i;{index:n,_parent:i}=i)if(n>-1)for(let a=n+e,o=e<0?-1:i._tree.children.length;a!=o;a+=e){let r=i._tree.children[a];if(this.mode&Pi.IncludeAnonymous||r instanceof El||!r.type.isAnonymous||Rk(r))return!1}return!0}move(e,n){if(n&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,n=0){for(;(this.from==this.to||(n<1?this.from>=e:this.from>e)||(n>-1?this.to<=e:this.to<e))&&this.parent(););for(;this.enterChild(1,e,n););return this}get node(){if(!this.buffer)return this._tree;let e=this.bufferNode,n=null,i=0;if(e&&e.context==this.buffer)e:for(let s=this.index,a=this.stack.length;a>=0;){for(let o=e;o;o=o._parent)if(o.index==s){if(s==this.index)return o;n=o,i=a+1;break e}s=this.stack[--a]}for(let s=i;s<this.stack.length;s++)n=new Sl(this.buffer,n,this.stack[s]);return this.bufferNode=new Sl(this.buffer,n,this.index)}get tree(){return this.buffer?null:this._tree._tree}iterate(e,n){for(let i=0;;){let s=!1;if(this.type.isAnonymous||e(this)!==!1){if(this.firstChild()){i++;continue}this.type.isAnonymous||(s=!0)}for(;;){if(s&&n&&n(this),s=this.type.isAnonymous,!i)return;if(this.nextSibling())break;this.parent(),i--,s=!0}}}matchContext(e){if(!this.buffer)return $S(this.node.parent,e);let{buffer:n}=this.buffer,{types:i}=n.set;for(let s=e.length-1,a=this.stack.length-1;s>=0;a--){if(a<0)return $S(this._tree,e,s);let o=i[n.buffer[this.stack[a]]];if(!o.isAnonymous){if(e[s]&&e[s]!=o.name)return!1;s--}}return!0}}function Rk(t){return t.children.some(e=>e instanceof El||!e.type.isAnonymous||Rk(e))}function pye(t){var e;let{buffer:n,nodeSet:i,maxBufferLength:s=e8,reused:a=[],minRepeatType:o=i.types.length}=t,r=Array.isArray(n)?new jk(n,n.length):n,c=i.types,d=0,f=0;function p(M,O,T,P,E,R){let{id:q,start:I,end:Y,size:X}=r,K=f,B=d;if(X<0)if(r.next(),X==-1){let D=a[q];T.push(D),P.push(I-M);return}else if(X==-3){d=q;return}else if(X==-4){f=q;return}else throw new RangeError(`Unrecognized record size: ${X}`);let H=c[q],z,Q,W=I-M;if(Y-I<=s&&(Q=x(r.pos-O,E))){let D=new Uint16Array(Q.size-Q.skip),U=r.pos-Q.size,$=D.length;for(;r.pos>U;)$=k(Q.start,D,$);z=new El(D,Y-Q.start,i),W=Q.start-M}else{let D=r.pos-X;r.next();let U=[],$=[],te=q>=o?q:-1,ie=0,F=Y;for(;r.pos>D;)te>=0&&r.id==te&&r.size>=0?(r.end<=F-s&&(_(U,$,I,ie,r.end,F,te,K,B),ie=U.length,F=r.end),r.next()):R>2500?g(I,D,U,$):p(I,D,U,$,te,R+1);if(te>=0&&ie>0&&ie<U.length&&_(U,$,I,ie,I,F,te,K,B),U.reverse(),$.reverse(),te>-1&&ie>0){let ee=y(H,B);z=Dk(H,U,$,0,U.length,0,Y-I,ee,ee)}else z=v(H,U,$,Y-I,K-Y,B)}T.push(z),P.push(W)}function g(M,O,T,P){let E=[],R=0,q=-1;for(;r.pos>O;){let{id:I,start:Y,end:X,size:K}=r;if(K>4)r.next();else{if(q>-1&&Y<q)break;q<0&&(q=X-s),E.push(I,Y,X),R++,r.next()}}if(R){let I=new Uint16Array(R*4),Y=E[E.length-2];for(let X=E.length-3,K=0;X>=0;X-=3)I[K++]=E[X],I[K++]=E[X+1]-Y,I[K++]=E[X+2]-Y,I[K++]=K;T.push(new El(I,E[2]-Y,i)),P.push(Y-M)}}function y(M,O){return(T,P,E)=>{let R=0,q=T.length-1,I,Y;if(q>=0&&(I=T[q])instanceof vi){if(!q&&I.type==M&&I.length==E)return I;(Y=I.prop(Wt.lookAhead))&&(R=P[q]+I.length+Y)}return v(M,T,P,E,R,O)}}function _(M,O,T,P,E,R,q,I,Y){let X=[],K=[];for(;M.length>P;)X.push(M.pop()),K.push(O.pop()+T-E);M.push(v(i.types[q],X,K,R-E,I-R,Y)),O.push(E-T)}function v(M,O,T,P,E,R,q){if(R){let I=[Wt.contextHash,R];q=q?[I].concat(q):[I]}if(E>25){let I=[Wt.lookAhead,E];q=q?[I].concat(q):[I]}return new vi(M,O,T,P,q)}function x(M,O){let T=r.fork(),P=0,E=0,R=0,q=T.end-s,I={size:0,start:0,skip:0};e:for(let Y=T.pos-M;T.pos>Y;){let X=T.size;if(T.id==O&&X>=0){I.size=P,I.start=E,I.skip=R,R+=4,P+=4,T.next();continue}let K=T.pos-X;if(X<0||K<Y||T.start<q)break;let B=T.id>=o?4:0,H=T.start;for(T.next();T.pos>K;){if(T.size<0)if(T.size==-3||T.size==-4)B+=4;else break e;else T.id>=o&&(B+=4);T.next()}E=H,P+=X,R+=B}return(O<0||P==M)&&(I.size=P,I.start=E,I.skip=R),I.size>4?I:void 0}function k(M,O,T){let{id:P,start:E,end:R,size:q}=r;if(r.next(),q>=0&&P<o){let I=T;if(q>4){let Y=r.pos-(q-4);for(;r.pos>Y;)T=k(M,O,T)}O[--T]=I,O[--T]=R-M,O[--T]=E-M,O[--T]=P}else q==-3?d=P:q==-4&&(f=P);return T}let C=[],N=[];for(;r.pos>0;)p(t.start||0,t.bufferStart||0,C,N,-1,0);let L=(e=t.length)!==null&&e!==void 0?e:C.length?N[0]+C[0].length:0;return new vi(c[t.topID],C.reverse(),N.reverse(),L)}const Aj=new WeakMap;function y0(t,e){if(!t.isAnonymous||e instanceof El||e.type!=t)return 1;let n=Aj.get(e);if(n==null){n=1;for(let i of e.children){if(i.type!=t||!(i instanceof vi)){n=1;break}n+=y0(t,i)}Aj.set(e,n)}return n}function Dk(t,e,n,i,s,a,o,r,c){let d=0;for(let _=i;_<s;_++)d+=y0(t,e[_]);let f=Math.ceil(d*1.5/8),p=[],g=[];function y(_,v,x,k,C){for(let N=x;N<k;){let L=N,M=v[N],O=y0(t,_[N]);for(N++;N<k;N++){let T=y0(t,_[N]);if(O+T>=f)break;O+=T}if(N==L+1){if(O>f){let T=_[L];y(T.children,T.positions,0,T.children.length,v[L]+C);continue}p.push(_[L])}else{let T=v[N-1]+_[N-1].length-M;p.push(Dk(t,_,v,L,N,M,T,null,c))}g.push(M+C-a)}}return y(e,n,i,s,0),(r||c)(p,g,o)}class Ec{constructor(e,n,i,s,a=!1,o=!1){this.from=e,this.to=n,this.tree=i,this.offset=s,this.open=(a?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,n=[],i=!1){let s=[new Ec(0,e.length,e,0,!1,i)];for(let a of n)a.to>e.length&&s.push(a);return s}static applyChanges(e,n,i=128){if(!n.length)return e;let s=[],a=1,o=e.length?e[0]:null;for(let r=0,c=0,d=0;;r++){let f=r<n.length?n[r]:null,p=f?f.fromA:1e9;if(p-c>=i)for(;o&&o.from<p;){let g=o;if(c>=g.from||p<=g.to||d){let y=Math.max(g.from,c)-d,_=Math.min(g.to,p)-d;g=y>=_?null:new Ec(y,_,g.tree,g.offset+d,r>0,!!f)}if(g&&s.push(g),o.to>p)break;o=a<e.length?e[a++]:null}if(!f)break;c=f.toA,d=f.toA-f.toB}return s}}let s8=class{startParse(e,n,i){return typeof e=="string"&&(e=new gye(e)),i=i?i.length?i.map(s=>new K1(s.from,s.to)):[new K1(0,0)]:[new K1(0,e.length)],this.createParse(e,n||[],i)}parse(e,n,i){let s=this.startParse(e,n,i);for(;;){let a=s.advance();if(a)return a}}};class gye{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,n){return this.string.slice(e,n)}}new Wt({perNode:!0});let _ye=0,mr=class QS{constructor(e,n,i,s){this.name=e,this.set=n,this.base=i,this.modified=s,this.id=_ye++}toString(){let{name:e}=this;for(let n of this.modified)n.name&&(e=`${n.name}(${e})`);return e}static define(e,n){let i=typeof e=="string"?e:"?";if(e instanceof QS&&(n=e),n?.base)throw new Error("Can not derive from a modified tag");let s=new QS(i,[],null,[]);if(s.set.push(s),n)for(let a of n.set)s.set.push(a);return s}static defineModifier(e){let n=new iy(e);return i=>i.modified.indexOf(n)>-1?i:iy.get(i.base||i,i.modified.concat(n).sort((s,a)=>s.id-a.id))}},yye=0;class iy{constructor(e){this.name=e,this.instances=[],this.id=yye++}static get(e,n){if(!n.length)return e;let i=n[0].instances.find(r=>r.base==e&&bye(n,r.modified));if(i)return i;let s=[],a=new mr(e.name,s,e,n);for(let r of n)r.instances.push(a);let o=vye(n);for(let r of e.set)if(!r.modified.length)for(let c of o)s.push(iy.get(r,c));return a}}function bye(t,e){return t.length==e.length&&t.every((n,i)=>n==e[i])}function vye(t){let e=[[]];for(let n=0;n<t.length;n++)for(let i=0,s=e.length;i<s;i++)e.push(e[i].concat(t[n]));return e.sort((n,i)=>i.length-n.length)}function a8(t){let e=Object.create(null);for(let n in t){let i=t[n];Array.isArray(i)||(i=[i]);for(let s of n.split(" "))if(s){let a=[],o=2,r=s;for(let p=0;;){if(r=="..."&&p>0&&p+3==s.length){o=1;break}let g=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(r);if(!g)throw new RangeError("Invalid path: "+s);if(a.push(g[0]=="*"?"":g[0][0]=='"'?JSON.parse(g[0]):g[0]),p+=g[0].length,p==s.length)break;let y=s[p++];if(p==s.length&&y=="!"){o=0;break}if(y!="/")throw new RangeError("Invalid path: "+s);r=s.slice(p)}let c=a.length-1,d=a[c];if(!d)throw new RangeError("Invalid path: "+s);let f=new Om(i,o,c>0?a.slice(0,c):null);e[d]=f.sort(e[d])}}return o8.add(e)}const o8=new Wt({combine(t,e){let n,i,s;for(;t||e;){if(!t||e&&t.depth>=e.depth?(s=e,e=e.next):(s=t,t=t.next),n&&n.mode==s.mode&&!s.context&&!n.context)continue;let a=new Om(s.tags,s.mode,s.context);n?n.next=a:i=a,n=a}return i}});class Om{constructor(e,n,i,s){this.tags=e,this.mode=n,this.context=i,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth<this.depth?(this.next=e,this):(e.next=this.sort(e.next),e)}get depth(){return this.context?this.context.length:0}}Om.empty=new Om([],2,null);function r8(t,e){let n=Object.create(null);for(let a of t)if(!Array.isArray(a.tag))n[a.tag.id]=a.class;else for(let o of a.tag)n[o.id]=a.class;let{scope:i,all:s=null}=e||{};return{style:a=>{let o=s;for(let r of a)for(let c of r.set){let d=n[c.id];if(d){o=o?o+" "+d:d;break}}return o},scope:i}}function xye(t,e){let n=null;for(let i of t){let s=i.style(e);s&&(n=n?n+" "+s:s)}return n}function Sye(t,e,n,i=0,s=t.length){let a=new wye(i,Array.isArray(e)?e:[e],n);a.highlightRange(t.cursor(),i,s,"",a.highlighters),a.flush(s)}class wye{constructor(e,n,i){this.at=e,this.highlighters=n,this.span=i,this.class=""}startSpan(e,n){n!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=n)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,n,i,s,a){let{type:o,from:r,to:c}=e;if(r>=i||c<=n)return;o.isTop&&(a=this.highlighters.filter(y=>!y.scope||y.scope(o)));let d=s,f=kye(e)||Om.empty,p=xye(a,f.tags);if(p&&(d&&(d+=" "),d+=p,f.mode==1&&(s+=(s?" ":"")+p)),this.startSpan(Math.max(n,r),d),f.opaque)return;let g=e.tree&&e.tree.prop(Wt.mounted);if(g&&g.overlay){let y=e.node.enter(g.overlay[0].from+r,1),_=this.highlighters.filter(x=>!x.scope||x.scope(g.tree.type)),v=e.firstChild();for(let x=0,k=r;;x++){let C=x<g.overlay.length?g.overlay[x]:null,N=C?C.from+r:c,L=Math.max(n,k),M=Math.min(i,N);if(L<M&&v)for(;e.from<M&&(this.highlightRange(e,L,M,s,a),this.startSpan(Math.min(M,e.to),d),!(e.to>=N||!e.nextSibling())););if(!C||N>i)break;k=C.to+r,k>n&&(this.highlightRange(y.cursor(),Math.max(n,C.from+r),Math.min(i,k),"",_),this.startSpan(Math.min(i,k),d))}v&&e.parent()}else if(e.firstChild()){g&&(s="");do if(!(e.to<=n)){if(e.from>=i)break;this.highlightRange(e,n,i,s,a),this.startSpan(Math.min(i,e.to),d)}while(e.nextSibling());e.parent()}}}function kye(t){let e=t.type.prop(o8);for(;e&&e.context&&!t.matchContext(e.context);)e=e.next;return e||null}const Ge=mr.define,E_=Ge(),cl=Ge(),Nj=Ge(cl),Tj=Ge(cl),ul=Ge(),j_=Ge(ul),V1=Ge(ul),po=Ge(),lc=Ge(po),lo=Ge(),co=Ge(),YS=Ge(),_f=Ge(YS),R_=Ge(),ke={comment:E_,lineComment:Ge(E_),blockComment:Ge(E_),docComment:Ge(E_),name:cl,variableName:Ge(cl),typeName:Nj,tagName:Ge(Nj),propertyName:Tj,attributeName:Ge(Tj),className:Ge(cl),labelName:Ge(cl),namespace:Ge(cl),macroName:Ge(cl),literal:ul,string:j_,docString:Ge(j_),character:Ge(j_),attributeValue:Ge(j_),number:V1,integer:Ge(V1),float:Ge(V1),bool:Ge(ul),regexp:Ge(ul),escape:Ge(ul),color:Ge(ul),url:Ge(ul),keyword:lo,self:Ge(lo),null:Ge(lo),atom:Ge(lo),unit:Ge(lo),modifier:Ge(lo),operatorKeyword:Ge(lo),controlKeyword:Ge(lo),definitionKeyword:Ge(lo),moduleKeyword:Ge(lo),operator:co,derefOperator:Ge(co),arithmeticOperator:Ge(co),logicOperator:Ge(co),bitwiseOperator:Ge(co),compareOperator:Ge(co),updateOperator:Ge(co),definitionOperator:Ge(co),typeOperator:Ge(co),controlOperator:Ge(co),punctuation:YS,separator:Ge(YS),bracket:_f,angleBracket:Ge(_f),squareBracket:Ge(_f),paren:Ge(_f),brace:Ge(_f),content:po,heading:lc,heading1:Ge(lc),heading2:Ge(lc),heading3:Ge(lc),heading4:Ge(lc),heading5:Ge(lc),heading6:Ge(lc),contentSeparator:Ge(po),list:Ge(po),quote:Ge(po),emphasis:Ge(po),strong:Ge(po),link:Ge(po),monospace:Ge(po),strikethrough:Ge(po),inserted:Ge(),deleted:Ge(),changed:Ge(),invalid:Ge(),meta:R_,documentMeta:Ge(R_),annotation:Ge(R_),processingInstruction:Ge(R_),definition:mr.defineModifier("definition"),constant:mr.defineModifier("constant"),function:mr.defineModifier("function"),standard:mr.defineModifier("standard"),local:mr.defineModifier("local"),special:mr.defineModifier("special")};for(let t in ke){let e=ke[t];e instanceof mr&&(e.name=t)}r8([{tag:ke.link,class:"tok-link"},{tag:ke.heading,class:"tok-heading"},{tag:ke.emphasis,class:"tok-emphasis"},{tag:ke.strong,class:"tok-strong"},{tag:ke.keyword,class:"tok-keyword"},{tag:ke.atom,class:"tok-atom"},{tag:ke.bool,class:"tok-bool"},{tag:ke.url,class:"tok-url"},{tag:ke.labelName,class:"tok-labelName"},{tag:ke.inserted,class:"tok-inserted"},{tag:ke.deleted,class:"tok-deleted"},{tag:ke.literal,class:"tok-literal"},{tag:ke.string,class:"tok-string"},{tag:ke.number,class:"tok-number"},{tag:[ke.regexp,ke.escape,ke.special(ke.string)],class:"tok-string2"},{tag:ke.variableName,class:"tok-variableName"},{tag:ke.local(ke.variableName),class:"tok-variableName tok-local"},{tag:ke.definition(ke.variableName),class:"tok-variableName tok-definition"},{tag:ke.special(ke.variableName),class:"tok-variableName2"},{tag:ke.definition(ke.propertyName),class:"tok-propertyName tok-definition"},{tag:ke.typeName,class:"tok-typeName"},{tag:ke.namespace,class:"tok-namespace"},{tag:ke.className,class:"tok-className"},{tag:ke.macroName,class:"tok-macroName"},{tag:ke.propertyName,class:"tok-propertyName"},{tag:ke.operator,class:"tok-operator"},{tag:ke.comment,class:"tok-comment"},{tag:ke.meta,class:"tok-meta"},{tag:ke.invalid,class:"tok-invalid"},{tag:ke.punctuation,class:"tok-punctuation"}]);var H1;const nd=new Wt;function Cye(t){return tt.define({combine:t?e=>e.concat(t):void 0})}const Aye=new Wt;class Ha{constructor(e,n,i=[],s=""){this.data=e,this.name=s,nn.prototype.hasOwnProperty("tree")||Object.defineProperty(nn.prototype,"tree",{get(){return cs(this)}}),this.parser=n,this.extension=[jl.of(this),nn.languageData.of((a,o,r)=>{let c=Mj(a,o,r),d=c.type.prop(nd);if(!d)return[];let f=a.facet(d),p=c.type.prop(Aye);if(p){let g=c.resolve(o-c.from,r);for(let y of p)if(y.test(g,a)){let _=a.facet(y.facet);return y.type=="replace"?_:_.concat(f)}}return f})].concat(i)}isActiveAt(e,n,i=-1){return Mj(e,n,i).type.prop(nd)==this.data}findRegions(e){let n=e.facet(jl);if(n?.data==this.data)return[{from:0,to:e.doc.length}];if(!n||!n.allowsNesting)return[];let i=[],s=(a,o)=>{if(a.prop(nd)==this.data){i.push({from:o,to:o+a.length});return}let r=a.prop(Wt.mounted);if(r){if(r.tree.prop(nd)==this.data){if(r.overlay)for(let c of r.overlay)i.push({from:c.from+o,to:c.to+o});else i.push({from:o,to:o+a.length});return}else if(r.overlay){let c=i.length;if(s(r.tree,r.overlay[0].from+o),i.length>c)return}}for(let c=0;c<a.children.length;c++){let d=a.children[c];d instanceof vi&&s(d,a.positions[c]+o)}};return s(cs(e),0),i}get allowsNesting(){return!0}}Ha.setState=Rt.define();function Mj(t,e,n){let i=t.facet(jl),s=cs(t).topNode;if(!i||i.allowsNesting)for(let a=s;a;a=a.enter(e,n,Pi.ExcludeBuffers))a.type.isTop&&(s=a);return s}class sy extends Ha{constructor(e,n,i){super(e,n,[],i),this.parser=n}static define(e){let n=Cye(e.languageData);return new sy(n,e.parser.configure({props:[nd.add(i=>i.isTop?n:void 0)]}),e.name)}configure(e,n){return new sy(this.data,this.parser.configure(e),n||this.name)}get allowsNesting(){return this.parser.hasWrappers()}}function cs(t){let e=t.field(Ha.state,!1);return e?e.tree:vi.empty}class Nye{constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,n){let i=this.cursorPos-this.string.length;return e<i||n>=this.cursorPos?this.doc.sliceString(e,n):this.string.slice(e-i,n-i)}}let yf=null;class ay{constructor(e,n,i=[],s,a,o,r,c){this.parser=e,this.state=n,this.fragments=i,this.tree=s,this.treeLen=a,this.viewport=o,this.skipped=r,this.scheduleOn=c,this.parse=null,this.tempSkipped=[]}static create(e,n,i){return new ay(e,n,[],vi.empty,0,i,[],null)}startParse(){return this.parser.startParse(new Nye(this.state.doc),this.fragments)}work(e,n){return n!=null&&n>=this.state.doc.length&&(n=void 0),this.tree!=vi.empty&&this.isDone(n??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof e=="number"){let s=Date.now()+e;e=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),n!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>n)&&n<this.state.doc.length&&this.parse.stopAt(n);;){let s=this.parse.advance();if(s)if(this.fragments=this.withoutTempSkipped(Ec.addTree(s,this.fragments,this.parse.stoppedAt!=null)),this.treeLen=(i=this.parse.stoppedAt)!==null&&i!==void 0?i:this.state.doc.length,this.tree=s,this.parse=null,this.treeLen<(n??this.state.doc.length))this.parse=this.startParse();else return!0;if(e())return!1}})}takeTree(){let e,n;this.parse&&(e=this.parse.parsedPos)>=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(n=this.parse.advance()););}),this.treeLen=e,this.tree=n,this.fragments=this.withoutTempSkipped(Ec.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let n=yf;yf=this;try{return e()}finally{yf=n}}withoutTempSkipped(e){for(let n;n=this.tempSkipped.pop();)e=Lj(e,n.from,n.to);return e}changes(e,n){let{fragments:i,tree:s,treeLen:a,viewport:o,skipped:r}=this;if(this.takeTree(),!e.empty){let c=[];if(e.iterChangedRanges((d,f,p,g)=>c.push({fromA:d,toA:f,fromB:p,toB:g})),i=Ec.applyChanges(i,c),s=vi.empty,a=0,o={from:e.mapPos(o.from,-1),to:e.mapPos(o.to,1)},this.skipped.length){r=[];for(let d of this.skipped){let f=e.mapPos(d.from,1),p=e.mapPos(d.to,-1);f<p&&r.push({from:f,to:p})}}}return new ay(this.parser,n,i,s,a,o,r,this.scheduleOn)}updateViewport(e){if(this.viewport.from==e.from&&this.viewport.to==e.to)return!1;this.viewport=e;let n=this.skipped.length;for(let i=0;i<this.skipped.length;i++){let{from:s,to:a}=this.skipped[i];s<e.to&&a>e.from&&(this.fragments=Lj(this.fragments,s,a),this.skipped.splice(i--,1))}return this.skipped.length>=n?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,n){this.skipped.push({from:e,to:n})}static getSkippingParser(e){return new class extends s8{createParse(n,i,s){let a=s[0].from,o=s[s.length-1].to;return{parsedPos:a,advance(){let c=yf;if(c){for(let d of s)c.tempSkipped.push(d);e&&(c.scheduleOn=c.scheduleOn?Promise.all([c.scheduleOn,e]):e)}return this.parsedPos=o,new vi(qs.none,[],[],o-a)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let n=this.fragments;return this.treeLen>=e&&n.length&&n[0].from==0&&n[0].to>=e}static get(){return yf}}function Lj(t,e,n){return Ec.applyChanges(t,[{fromA:e,toA:n,fromB:e,toB:n}])}class jd{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let n=this.context.changes(e.changes,e.state),i=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),n.viewport.to);return n.work(20,i)||n.takeTree(),new jd(n)}static init(e){let n=Math.min(3e3,e.doc.length),i=ay.create(e.facet(jl).parser,e,{from:0,to:n});return i.work(20,n)||i.takeTree(),new jd(i)}}Ha.state=$i.define({create:jd.init,update(t,e){for(let n of e.effects)if(n.is(Ha.setState))return n.value;return e.startState.facet(jl)!=e.state.facet(jl)?jd.init(e.state):t.apply(e)}});let l8=t=>{let e=setTimeout(()=>t(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(l8=t=>{let e=-1,n=setTimeout(()=>{e=requestIdleCallback(t,{timeout:400})},100);return()=>e<0?clearTimeout(n):cancelIdleCallback(e)});const W1=typeof navigator<"u"&&(!((H1=navigator.scheduling)===null||H1===void 0)&&H1.isInputPending)?()=>navigator.scheduling.isInputPending():null,Tye=li.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let n=this.view.state.field(Ha.state).context;(n.updateViewport(e.view.viewport)||this.view.viewport.to>n.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(n)}scheduleWork(){if(this.working)return;let{state:e}=this.view,n=e.field(Ha.state);(n.tree!=n.context.tree||!n.context.isDone(e.doc.length))&&(this.working=l8(this.work))}work(e){this.working=null;let n=Date.now();if(this.chunkEnd<n&&(this.chunkEnd<0||this.view.hasFocus)&&(this.chunkEnd=n+3e4,this.chunkBudget=3e3),this.chunkBudget<=0)return;let{state:i,viewport:{to:s}}=this.view,a=i.field(Ha.state);if(a.tree==a.context.tree&&a.context.isDone(s+1e5))return;let o=Date.now()+Math.min(this.chunkBudget,100,e&&!W1?Math.max(25,e.timeRemaining()-5):1e9),r=a.context.treeLen<s&&i.doc.length>s+1e3,c=a.context.work(()=>W1&&W1()||Date.now()>o,s+(r?0:1e5));this.chunkBudget-=Date.now()-n,(c||this.chunkBudget<=0)&&(a.context.takeTree(),this.view.dispatch({effects:Ha.setState.of(new jd(a.context))})),this.chunkBudget>0&&!(c&&!r)&&this.scheduleWork(),this.checkAsyncSchedule(a.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(n=>Ds(this.view.state,n)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),jl=tt.define({combine(t){return t.length?t[0]:null},enables:t=>[Ha.state,Tye,Xe.contentAttributes.compute([t],e=>{let n=e.facet(t);return n&&n.name?{"data-language":n.name}:{}})]});class Mye{constructor(e,n=[]){this.language=e,this.support=n,this.extension=[e,n]}}const Lye=tt.define(),ib=tt.define({combine:t=>{if(!t.length)return" ";let e=t[0];if(!e||/\S/.test(e)||Array.from(e).some(n=>n!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(t[0]));return e}});function oy(t){let e=t.facet(ib);return e.charCodeAt(0)==9?t.tabSize*e.length:e.length}function Pm(t,e){let n="",i=t.tabSize,s=t.facet(ib)[0];if(s==" "){for(;e>=i;)n+=" ",e-=i;s=" "}for(let a=0;a<e;a++)n+=s;return n}function Fk(t,e){t instanceof nn&&(t=new sb(t));for(let i of t.state.facet(Lye)){let s=i(t,e);if(s!==void 0)return s}let n=cs(t.state);return n.length>=e?Oye(t,n,e):null}class sb{constructor(e,n={}){this.state=e,this.options=n,this.unit=oy(e)}lineAt(e,n=1){let i=this.state.doc.lineAt(e),{simulateBreak:s,simulateDoubleBreak:a}=this.options;return s!=null&&s>=i.from&&s<=i.to?a&&s==e?{text:"",from:e}:(n<0?s<e:s<=e)?{text:i.text.slice(s-i.from),from:s}:{text:i.text.slice(0,s-i.from),from:i.from}:i}textAfterPos(e,n=1){if(this.options.simulateDoubleBreak&&e==this.options.simulateBreak)return"";let{text:i,from:s}=this.lineAt(e,n);return i.slice(e-s,Math.min(i.length,e+100-s))}column(e,n=1){let{text:i,from:s}=this.lineAt(e,n),a=this.countColumn(i,e-s),o=this.options.overrideIndentation?this.options.overrideIndentation(s):-1;return o>-1&&(a+=o-this.countColumn(i,i.search(/\S|$/))),a}countColumn(e,n=e.length){return Xd(e,this.state.tabSize,n)}lineIndent(e,n=1){let{text:i,from:s}=this.lineAt(e,n),a=this.options.overrideIndentation;if(a){let o=a(s);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const c8=new Wt;function Oye(t,e,n){let i=e.resolveStack(n),s=e.resolveInner(n,-1).resolve(n,0).enterUnfinishedNodesBefore(n);if(s!=i.node){let a=[];for(let o=s;o&&!(o.from<i.node.from||o.to>i.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)a.push(o);for(let o=a.length-1;o>=0;o--)i={node:a[o],next:i}}return u8(i,t,n)}function u8(t,e,n){for(let i=t;i;i=i.next){let s=Eye(i.node);if(s)return s(Ik.create(e,n,i))}return 0}function Pye(t){return t.pos==t.options.simulateBreak&&t.options.simulateDoubleBreak}function Eye(t){let e=t.type.prop(c8);if(e)return e;let n=t.firstChild,i;if(n&&(i=n.type.prop(Wt.closedBy))){let s=t.lastChild,a=s&&i.indexOf(s.name)>-1;return o=>d8(o,!0,1,void 0,a&&!Pye(o)?s.from:void 0)}return t.parent==null?jye:null}function jye(){return 0}class Ik extends sb{constructor(e,n,i){super(e.state,e.options),this.base=e,this.pos=n,this.context=i}get node(){return this.context.node}static create(e,n,i){return new Ik(e,n,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let n=this.state.doc.lineAt(e.from);for(;;){let i=e.resolve(n.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(Rye(i,e))break;n=this.state.doc.lineAt(i.from)}return this.lineIndent(n.from)}continue(){return u8(this.context.next,this.base,this.pos)}}function Rye(t,e){for(let n=e;n;n=n.parent)if(t==n)return!0;return!1}function Dye(t){let e=t.node,n=e.childAfter(e.from),i=e.lastChild;if(!n)return null;let s=t.options.simulateBreak,a=t.state.doc.lineAt(n.from),o=s==null||s<=a.from?a.to:Math.min(a.to,s);for(let r=n.to;;){let c=e.childAfter(r);if(!c||c==i)return null;if(!c.type.isSkipped){if(c.from>=o)return null;let d=/^ */.exec(a.text.slice(n.to-a.from))[0].length;return{from:n.from,to:n.to+d}}r=c.to}}function Oj({closing:t,align:e=!0,units:n=1}){return i=>d8(i,e,n,t)}function d8(t,e,n,i,s){let a=t.textAfter,o=a.match(/^\s*/)[0].length,r=i&&a.slice(o,o+i.length)==i||s==t.pos+o,c=e?Dye(t):null;return c?r?t.column(c.from):t.column(c.to):t.baseIndent+(r?0:t.unit*n)}const Fye=200;function Iye(){return nn.transactionFilter.of(t=>{if(!t.docChanged||!t.isUserEvent("input.type")&&!t.isUserEvent("input.complete"))return t;let e=t.startState.languageDataAt("indentOnInput",t.startState.selection.main.head);if(!e.length)return t;let n=t.newDoc,{head:i}=t.newSelection.main,s=n.lineAt(i);if(i>s.from+Fye)return t;let a=n.sliceString(s.from,i);if(!e.some(d=>d.test(a)))return t;let{state:o}=t,r=-1,c=[];for(let{head:d}of o.selection.ranges){let f=o.doc.lineAt(d);if(f.from==r)continue;r=f.from;let p=Fk(o,f.from);if(p==null)continue;let g=/^\s*/.exec(f.text)[0],y=Pm(o,p);g!=y&&c.push({from:f.from,to:f.from+g.length,insert:y})}return c.length?[t,{changes:c,sequential:!0}]:t})}const Bye=tt.define(),h8=new Wt;function Uye(t){let e=t.firstChild,n=t.lastChild;return e&&e.to<n.from?{from:e.to,to:n.type.isError?t.to:n.from}:null}function qye(t,e,n){let i=cs(t);if(i.length<n)return null;let s=i.resolveStack(n,1),a=null;for(let o=s;o;o=o.next){let r=o.node;if(r.to<=n||r.from>n)continue;if(a&&r.from<e)break;let c=r.type.prop(h8);if(c&&(r.to<i.length-50||i.length==t.doc.length||!zye(r))){let d=c(r,t);d&&d.from<=n&&d.from>=e&&d.to>n&&(a=d)}}return a}function zye(t){let e=t.lastChild;return e&&e.to==t.to&&e.type.isError}function ry(t,e,n){for(let i of t.facet(Bye)){let s=i(t,e,n);if(s)return s}return qye(t,e,n)}function f8(t,e){let n=e.mapPos(t.from,1),i=e.mapPos(t.to,-1);return n>=i?void 0:{from:n,to:i}}const ab=Rt.define({map:f8}),xp=Rt.define({map:f8});function m8(t){let e=[];for(let{head:n}of t.state.selection.ranges)e.some(i=>i.from<=n&&i.to>=n)||e.push(t.lineBlockAt(n));return e}const Kc=$i.define({create(){return xt.none},update(t,e){e.isUserEvent("delete")&&e.changes.iterChangedRanges((n,i)=>t=Pj(t,n,i)),t=t.map(e.changes);for(let n of e.effects)if(n.is(ab)&&!Kye(t,n.value.from,n.value.to)){let{preparePlaceholder:i}=e.state.facet(_8),s=i?xt.replace({widget:new Qye(i(e.state,n.value))}):Ej;t=t.update({add:[s.range(n.value.from,n.value.to)]})}else n.is(xp)&&(t=t.update({filter:(i,s)=>n.value.from!=i||n.value.to!=s,filterFrom:n.value.from,filterTo:n.value.to}));return e.selection&&(t=Pj(t,e.selection.main.head)),t},provide:t=>Xe.decorations.from(t),toJSON(t,e){let n=[];return t.between(0,e.doc.length,(i,s)=>{n.push(i,s)}),n},fromJSON(t){if(!Array.isArray(t)||t.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let n=0;n<t.length;){let i=t[n++],s=t[n++];if(typeof i!="number"||typeof s!="number")throw new RangeError("Invalid JSON for fold state");e.push(Ej.range(i,s))}return xt.set(e,!0)}});function Pj(t,e,n=e){let i=!1;return t.between(e,n,(s,a)=>{s<n&&a>e&&(i=!0)}),i?t.update({filterFrom:e,filterTo:n,filter:(s,a)=>s>=n||a<=e}):t}function ly(t,e,n){var i;let s=null;return(i=t.field(Kc,!1))===null||i===void 0||i.between(e,n,(a,o)=>{(!s||s.from>a)&&(s={from:a,to:o})}),s}function Kye(t,e,n){let i=!1;return t.between(e,e,(s,a)=>{s==e&&a==n&&(i=!0)}),i}function p8(t,e){return t.field(Kc,!1)?e:e.concat(Rt.appendConfig.of(y8()))}const Vye=t=>{for(let e of m8(t)){let n=ry(t.state,e.from,e.to);if(n)return t.dispatch({effects:p8(t.state,[ab.of(n),g8(t,n)])}),!0}return!1},Hye=t=>{if(!t.state.field(Kc,!1))return!1;let e=[];for(let n of m8(t)){let i=ly(t.state,n.from,n.to);i&&e.push(xp.of(i),g8(t,i,!1))}return e.length&&t.dispatch({effects:e}),e.length>0};function g8(t,e,n=!0){let i=t.state.doc.lineAt(e.from).number,s=t.state.doc.lineAt(e.to).number;return Xe.announce.of(`${t.state.phrase(n?"Folded lines":"Unfolded lines")} ${i} ${t.state.phrase("to")} ${s}.`)}const Wye=t=>{let{state:e}=t,n=[];for(let i=0;i<e.doc.length;){let s=t.lineBlockAt(i),a=ry(e,s.from,s.to);a&&n.push(ab.of(a)),i=(a?t.lineBlockAt(a.to):s).to+1}return n.length&&t.dispatch({effects:p8(t.state,n)}),!!n.length},Gye=t=>{let e=t.state.field(Kc,!1);if(!e||!e.size)return!1;let n=[];return e.between(0,t.state.doc.length,(i,s)=>{n.push(xp.of({from:i,to:s}))}),t.dispatch({effects:n}),!0},$ye=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:Vye},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:Hye},{key:"Ctrl-Alt-[",run:Wye},{key:"Ctrl-Alt-]",run:Gye}],Xye={placeholderDOM:null,preparePlaceholder:null,placeholderText:"…"},_8=tt.define({combine(t){return Fo(t,Xye)}});function y8(t){return[Kc,Zye]}function b8(t,e){let{state:n}=t,i=n.facet(_8),s=o=>{let r=t.lineBlockAt(t.posAtDOM(o.target)),c=ly(t.state,r.from,r.to);c&&t.dispatch({effects:xp.of(c)}),o.preventDefault()};if(i.placeholderDOM)return i.placeholderDOM(t,s,e);let a=document.createElement("span");return a.textContent=i.placeholderText,a.setAttribute("aria-label",n.phrase("folded code")),a.title=n.phrase("unfold"),a.className="cm-foldPlaceholder",a.onclick=s,a}const Ej=xt.replace({widget:new class extends Er{toDOM(t){return b8(t,null)}}});class Qye extends Er{constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return b8(e,this.value)}}const Yye={openText:"⌄",closedText:"",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1};class G1 extends Lr{constructor(e,n){super(),this.config=e,this.open=n}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let n=document.createElement("span");return n.textContent=this.open?this.config.openText:this.config.closedText,n.title=e.state.phrase(this.open?"Fold line":"Unfold line"),n}}function Jye(t={}){let e={...Yye,...t},n=new G1(e,!0),i=new G1(e,!1),s=li.fromClass(class{constructor(o){this.from=o.viewport.from,this.markers=this.buildMarkers(o)}update(o){(o.docChanged||o.viewportChanged||o.startState.facet(jl)!=o.state.facet(jl)||o.startState.field(Kc,!1)!=o.state.field(Kc,!1)||cs(o.startState)!=cs(o.state)||e.foldingChanged(o))&&(this.markers=this.buildMarkers(o.view))}buildMarkers(o){let r=new Tr;for(let c of o.viewportLineBlocks){let d=ly(o.state,c.from,c.to)?i:ry(o.state,c.from,c.to)?n:null;d&&r.add(c.from,c.from,d)}return r.finish()}}),{domEventHandlers:a}=e;return[s,Z0e({class:"cm-foldGutter",markers(o){var r;return((r=o.plugin(s))===null||r===void 0?void 0:r.markers)||cn.empty},initialSpacer(){return new G1(e,!1)},domEventHandlers:{...a,click:(o,r,c)=>{if(a.click&&a.click(o,r,c))return!0;let d=ly(o.state,r.from,r.to);if(d)return o.dispatch({effects:xp.of(d)}),!0;let f=ry(o.state,r.from,r.to);return f?(o.dispatch({effects:ab.of(f)}),!0):!1}}}),y8()]}const Zye=Xe.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}});class Sp{constructor(e,n){this.specs=e;let i;function s(r){let c=Ll.newName();return(i||(i=Object.create(null)))["."+c]=r,c}const a=typeof n.all=="string"?n.all:n.all?s(n.all):void 0,o=n.scope;this.scope=o instanceof Ha?r=>r.prop(nd)==o.data:o?r=>r==o:void 0,this.style=r8(e.map(r=>({tag:r.tag,class:r.class||s(Object.assign({},r,{tag:null}))})),{all:a}).style,this.module=i?new Ll(i):null,this.themeType=n.themeType}static define(e,n){return new Sp(e,n||{})}}const JS=tt.define(),v8=tt.define({combine(t){return t.length?[t[0]]:null}});function $1(t){let e=t.facet(JS);return e.length?e:t.facet(v8)}function x8(t,e){let n=[tbe],i;return t instanceof Sp&&(t.module&&n.push(Xe.styleModule.of(t.module)),i=t.themeType),e?.fallback?n.push(v8.of(t)):i?n.push(JS.computeN([Xe.darkTheme],s=>s.facet(Xe.darkTheme)==(i=="dark")?[t]:[])):n.push(JS.of(t)),n}class ebe{constructor(e){this.markCache=Object.create(null),this.tree=cs(e.state),this.decorations=this.buildDeco(e,$1(e.state)),this.decoratedTo=e.viewport.to}update(e){let n=cs(e.state),i=$1(e.state),s=i!=$1(e.startState),{viewport:a}=e.view,o=e.changes.mapPos(this.decoratedTo,1);n.length<a.to&&!s&&n.type==this.tree.type&&o>=a.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=o):(n!=this.tree||e.viewportChanged||s)&&(this.tree=n,this.decorations=this.buildDeco(e.view,i),this.decoratedTo=a.to)}buildDeco(e,n){if(!n||!this.tree.length)return xt.none;let i=new Tr;for(let{from:s,to:a}of e.visibleRanges)Sye(this.tree,n,(o,r,c)=>{i.add(o,r,this.markCache[c]||(this.markCache[c]=xt.mark({class:c})))},s,a);return i.finish()}}const tbe=Qc.high(li.fromClass(ebe,{decorations:t=>t.decorations})),nbe=Sp.define([{tag:ke.meta,color:"#404740"},{tag:ke.link,textDecoration:"underline"},{tag:ke.heading,textDecoration:"underline",fontWeight:"bold"},{tag:ke.emphasis,fontStyle:"italic"},{tag:ke.strong,fontWeight:"bold"},{tag:ke.strikethrough,textDecoration:"line-through"},{tag:ke.keyword,color:"#708"},{tag:[ke.atom,ke.bool,ke.url,ke.contentSeparator,ke.labelName],color:"#219"},{tag:[ke.literal,ke.inserted],color:"#164"},{tag:[ke.string,ke.deleted],color:"#a11"},{tag:[ke.regexp,ke.escape,ke.special(ke.string)],color:"#e40"},{tag:ke.definition(ke.variableName),color:"#00f"},{tag:ke.local(ke.variableName),color:"#30a"},{tag:[ke.typeName,ke.namespace],color:"#085"},{tag:ke.className,color:"#167"},{tag:[ke.special(ke.variableName),ke.macroName],color:"#256"},{tag:ke.definition(ke.propertyName),color:"#00c"},{tag:ke.comment,color:"#940"},{tag:ke.invalid,color:"#f00"}]),ibe=Xe.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),S8=1e4,w8="()[]{}",k8=tt.define({combine(t){return Fo(t,{afterCursor:!0,brackets:w8,maxScanDistance:S8,renderMatch:obe})}}),sbe=xt.mark({class:"cm-matchingBracket"}),abe=xt.mark({class:"cm-nonmatchingBracket"});function obe(t){let e=[],n=t.matched?sbe:abe;return e.push(n.range(t.start.from,t.start.to)),t.end&&e.push(n.range(t.end.from,t.end.to)),e}const rbe=$i.define({create(){return xt.none},update(t,e){if(!e.docChanged&&!e.selection)return t;let n=[],i=e.state.facet(k8);for(let s of e.state.selection.ranges){if(!s.empty)continue;let a=wo(e.state,s.head,-1,i)||s.head>0&&wo(e.state,s.head-1,1,i)||i.afterCursor&&(wo(e.state,s.head,1,i)||s.head<e.state.doc.length&&wo(e.state,s.head+1,-1,i));a&&(n=n.concat(i.renderMatch(a,e.state)))}return xt.set(n,!0)},provide:t=>Xe.decorations.from(t)}),lbe=[rbe,ibe];function cbe(t={}){return[k8.of(t),lbe]}const ube=new Wt;function ZS(t,e,n){let i=t.prop(e<0?Wt.openedBy:Wt.closedBy);if(i)return i;if(t.name.length==1){let s=n.indexOf(t.name);if(s>-1&&s%2==(e<0?1:0))return[n[s+e]]}return null}function ew(t){let e=t.type.prop(ube);return e?e(t.node):t}function wo(t,e,n,i={}){let s=i.maxScanDistance||S8,a=i.brackets||w8,o=cs(t),r=o.resolveInner(e,n);for(let c=r;c;c=c.parent){let d=ZS(c.type,n,a);if(d&&c.from<c.to){let f=ew(c);if(f&&(n>0?e>=f.from&&e<f.to:e>f.from&&e<=f.to))return dbe(t,e,n,c,f,d,a)}}return hbe(t,e,n,o,r.type,s,a)}function dbe(t,e,n,i,s,a,o){let r=i.parent,c={from:s.from,to:s.to},d=0,f=r?.cursor();if(f&&(n<0?f.childBefore(i.from):f.childAfter(i.to)))do if(n<0?f.to<=i.from:f.from>=i.to){if(d==0&&a.indexOf(f.type.name)>-1&&f.from<f.to){let p=ew(f);return{start:c,end:p?{from:p.from,to:p.to}:void 0,matched:!0}}else if(ZS(f.type,n,o))d++;else if(ZS(f.type,-n,o)){if(d==0){let p=ew(f);return{start:c,end:p&&p.from<p.to?{from:p.from,to:p.to}:void 0,matched:!1}}d--}}while(n<0?f.prevSibling():f.nextSibling());return{start:c,matched:!1}}function hbe(t,e,n,i,s,a,o){let r=n<0?t.sliceDoc(e-1,e):t.sliceDoc(e,e+1),c=o.indexOf(r);if(c<0||c%2==0!=n>0)return null;let d={from:n<0?e-1:e,to:n>0?e+1:e},f=t.doc.iterRange(e,n>0?t.doc.length:0),p=0;for(let g=0;!f.next().done&&g<=a;){let y=f.value;n<0&&(g+=y.length);let _=e+g*n;for(let v=n>0?0:y.length-1,x=n>0?y.length:-1;v!=x;v+=n){let k=o.indexOf(y[v]);if(!(k<0||i.resolveInner(_+v,1).type!=s))if(k%2==0==n>0)p++;else{if(p==1)return{start:d,end:{from:_+v,to:_+v+1},matched:k>>1==c>>1};p--}}n>0&&(g+=y.length)}return f.done?{start:d,matched:!1}:null}const fbe=Object.create(null),jj=[qs.none],Rj=[],Dj=Object.create(null),mbe=Object.create(null);for(let[t,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])mbe[t]=pbe(fbe,e);function X1(t,e){Rj.indexOf(t)>-1||(Rj.push(t),console.warn(e))}function pbe(t,e){let n=[];for(let r of e.split(" ")){let c=[];for(let d of r.split(".")){let f=t[d]||ke[d];f?typeof f=="function"?c.length?c=c.map(f):X1(d,`Modifier ${d} used at start of tag`):c.length?X1(d,`Tag ${d} used as modifier`):c=Array.isArray(f)?f:[f]:X1(d,`Unknown highlighting tag ${d}`)}for(let d of c)n.push(d)}if(!n.length)return 0;let i=e.replace(/ /g,"_"),s=i+" "+n.map(r=>r.id),a=Dj[s];if(a)return a.id;let o=Dj[s]=qs.define({id:jj.length,name:i,props:[a8({[i]:n})]});return jj.push(o),o.id}Un.RTL,Un.LTR;const gbe=t=>{let{state:e}=t,n=e.doc.lineAt(e.selection.main.from),i=Uk(t.state,n.from);return i.line?_be(t):i.block?bbe(t):!1};function Bk(t,e){return({state:n,dispatch:i})=>{if(n.readOnly)return!1;let s=t(e,n);return s?(i(n.update(s)),!0):!1}}const _be=Bk(Sbe,0),ybe=Bk(C8,0),bbe=Bk((t,e)=>C8(t,e,xbe(e)),0);function Uk(t,e){let n=t.languageDataAt("commentTokens",e,1);return n.length?n[0]:{}}const bf=50;function vbe(t,{open:e,close:n},i,s){let a=t.sliceDoc(i-bf,i),o=t.sliceDoc(s,s+bf),r=/\s*$/.exec(a)[0].length,c=/^\s*/.exec(o)[0].length,d=a.length-r;if(a.slice(d-e.length,d)==e&&o.slice(c,c+n.length)==n)return{open:{pos:i-r,margin:r&&1},close:{pos:s+c,margin:c&&1}};let f,p;s-i<=2*bf?f=p=t.sliceDoc(i,s):(f=t.sliceDoc(i,i+bf),p=t.sliceDoc(s-bf,s));let g=/^\s*/.exec(f)[0].length,y=/\s*$/.exec(p)[0].length,_=p.length-y-n.length;return f.slice(g,g+e.length)==e&&p.slice(_,_+n.length)==n?{open:{pos:i+g+e.length,margin:/\s/.test(f.charAt(g+e.length))?1:0},close:{pos:s-y-n.length,margin:/\s/.test(p.charAt(_-1))?1:0}}:null}function xbe(t){let e=[];for(let n of t.selection.ranges){let i=t.doc.lineAt(n.from),s=n.to<=i.to?i:t.doc.lineAt(n.to);s.from>i.from&&s.from==n.to&&(s=n.to==i.to+1?i:t.doc.lineAt(n.to-1));let a=e.length-1;a>=0&&e[a].to>i.from?e[a].to=s.to:e.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:s.to})}return e}function C8(t,e,n=e.selection.ranges){let i=n.map(a=>Uk(e,a.from).block);if(!i.every(a=>a))return null;let s=n.map((a,o)=>vbe(e,i[o],a.from,a.to));if(t!=2&&!s.every(a=>a))return{changes:e.changes(n.map((a,o)=>s[o]?[]:[{from:a.from,insert:i[o].open+" "},{from:a.to,insert:" "+i[o].close}]))};if(t!=1&&s.some(a=>a)){let a=[];for(let o=0,r;o<s.length;o++)if(r=s[o]){let c=i[o],{open:d,close:f}=r;a.push({from:d.pos-c.open.length,to:d.pos+d.margin},{from:f.pos-f.margin,to:f.pos+c.close.length})}return{changes:a}}return null}function Sbe(t,e,n=e.selection.ranges){let i=[],s=-1;for(let{from:a,to:o}of n){let r=i.length,c=1e9,d=Uk(e,a).line;if(d){for(let f=a;f<=o;){let p=e.doc.lineAt(f);if(p.from>s&&(a==o||o>p.from)){s=p.from;let g=/^\s*/.exec(p.text)[0].length,y=g==p.length,_=p.text.slice(g,g+d.length)==d?g:-1;g<p.text.length&&g<c&&(c=g),i.push({line:p,comment:_,token:d,indent:g,empty:y,single:!1})}f=p.to+1}if(c<1e9)for(let f=r;f<i.length;f++)i[f].indent<i[f].line.text.length&&(i[f].indent=c);i.length==r+1&&(i[r].single=!0)}}if(t!=2&&i.some(a=>a.comment<0&&(!a.empty||a.single))){let a=[];for(let{line:r,token:c,indent:d,empty:f,single:p}of i)(p||!f)&&a.push({from:r.from+d,insert:c+" "});let o=e.changes(a);return{changes:o,selection:e.selection.map(o,1)}}else if(t!=1&&i.some(a=>a.comment>=0)){let a=[];for(let{line:o,comment:r,token:c}of i)if(r>=0){let d=o.from+r,f=d+c.length;o.text[f-o.from]==" "&&f++,a.push({from:d,to:f})}return{changes:a}}return null}const tw=Do.define(),wbe=Do.define(),kbe=tt.define(),A8=tt.define({combine(t){return Fo(t,{minDepth:100,newGroupDelay:500,joinToEvent:(e,n)=>n},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,n)=>(i,s)=>e(i,s)||n(i,s)})}}),N8=$i.define({create(){return ko.empty},update(t,e){let n=e.state.facet(A8),i=e.annotation(tw);if(i){let c=Fs.fromTransaction(e,i.selection),d=i.side,f=d==0?t.undone:t.done;return c?f=cy(f,f.length,n.minDepth,c):f=L8(f,e.startState.selection),new ko(d==0?i.rest:f,d==0?f:i.rest)}let s=e.annotation(wbe);if((s=="full"||s=="before")&&(t=t.isolate()),e.annotation(Ni.addToHistory)===!1)return e.changes.empty?t:t.addMapping(e.changes.desc);let a=Fs.fromTransaction(e),o=e.annotation(Ni.time),r=e.annotation(Ni.userEvent);return a?t=t.addChanges(a,o,r,n,e):e.selection&&(t=t.addSelection(e.startState.selection,o,r,n.newGroupDelay)),(s=="full"||s=="after")&&(t=t.isolate()),t},toJSON(t){return{done:t.done.map(e=>e.toJSON()),undone:t.undone.map(e=>e.toJSON())}},fromJSON(t){return new ko(t.done.map(Fs.fromJSON),t.undone.map(Fs.fromJSON))}});function Cbe(t={}){return[N8,A8.of(t),Xe.domEventHandlers({beforeinput(e,n){let i=e.inputType=="historyUndo"?T8:e.inputType=="historyRedo"?nw:null;return i?(e.preventDefault(),i(n)):!1}})]}function ob(t,e){return function({state:n,dispatch:i}){if(!e&&n.readOnly)return!1;let s=n.field(N8,!1);if(!s)return!1;let a=s.pop(t,n,e);return a?(i(a),!0):!1}}const T8=ob(0,!1),nw=ob(1,!1),Abe=ob(0,!0),Nbe=ob(1,!0);class Fs{constructor(e,n,i,s,a){this.changes=e,this.effects=n,this.mapped=i,this.startSelection=s,this.selectionsAfter=a}setSelAfter(e){return new Fs(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,n,i;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(n=this.mapped)===null||n===void 0?void 0:n.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(e){return new Fs(e.changes&&ki.fromJSON(e.changes),[],e.mapped&&Ao.fromJSON(e.mapped),e.startSelection&&je.fromJSON(e.startSelection),e.selectionsAfter.map(je.fromJSON))}static fromTransaction(e,n){let i=va;for(let s of e.startState.facet(kbe)){let a=s(e);a.length&&(i=i.concat(a))}return!i.length&&e.changes.empty?null:new Fs(e.changes.invert(e.startState.doc),i,void 0,n||e.startState.selection,va)}static selection(e){return new Fs(void 0,va,void 0,void 0,e)}}function cy(t,e,n,i){let s=e+1>n+20?e-n-1:0,a=t.slice(s,e);return a.push(i),a}function Tbe(t,e){let n=[],i=!1;return t.iterChangedRanges((s,a)=>n.push(s,a)),e.iterChangedRanges((s,a,o,r)=>{for(let c=0;c<n.length;){let d=n[c++],f=n[c++];r>=d&&o<=f&&(i=!0)}}),i}function Mbe(t,e){return t.ranges.length==e.ranges.length&&t.ranges.filter((n,i)=>n.empty!=e.ranges[i].empty).length===0}function M8(t,e){return t.length?e.length?t.concat(e):t:e}const va=[],Lbe=200;function L8(t,e){if(t.length){let n=t[t.length-1],i=n.selectionsAfter.slice(Math.max(0,n.selectionsAfter.length-Lbe));return i.length&&i[i.length-1].eq(e)?t:(i.push(e),cy(t,t.length-1,1e9,n.setSelAfter(i)))}else return[Fs.selection([e])]}function Obe(t){let e=t[t.length-1],n=t.slice();return n[t.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),n}function Q1(t,e){if(!t.length)return t;let n=t.length,i=va;for(;n;){let s=Pbe(t[n-1],e,i);if(s.changes&&!s.changes.empty||s.effects.length){let a=t.slice(0,n);return a[n-1]=s,a}else e=s.mapped,n--,i=s.selectionsAfter}return i.length?[Fs.selection(i)]:va}function Pbe(t,e,n){let i=M8(t.selectionsAfter.length?t.selectionsAfter.map(r=>r.map(e)):va,n);if(!t.changes)return Fs.selection(i);let s=t.changes.map(e),a=e.mapDesc(t.changes,!0),o=t.mapped?t.mapped.composeDesc(a):a;return new Fs(s,Rt.mapEffects(t.effects,e),o,t.startSelection.map(a),i)}const Ebe=/^(input\.type|delete)($|\.)/;class ko{constructor(e,n,i=0,s=void 0){this.done=e,this.undone=n,this.prevTime=i,this.prevUserEvent=s}isolate(){return this.prevTime?new ko(this.done,this.undone):this}addChanges(e,n,i,s,a){let o=this.done,r=o[o.length-1];return r&&r.changes&&!r.changes.empty&&e.changes&&(!i||Ebe.test(i))&&(!r.selectionsAfter.length&&n-this.prevTime<s.newGroupDelay&&s.joinToEvent(a,Tbe(r.changes,e.changes))||i=="input.type.compose")?o=cy(o,o.length-1,s.minDepth,new Fs(e.changes.compose(r.changes),M8(Rt.mapEffects(e.effects,r.changes),r.effects),r.mapped,r.startSelection,va)):o=cy(o,o.length,s.minDepth,e),new ko(o,va,n,i)}addSelection(e,n,i,s){let a=this.done.length?this.done[this.done.length-1].selectionsAfter:va;return a.length>0&&n-this.prevTime<s&&i==this.prevUserEvent&&i&&/^select($|\.)/.test(i)&&Mbe(a[a.length-1],e)?this:new ko(L8(this.done,e),this.undone,n,i)}addMapping(e){return new ko(Q1(this.done,e),Q1(this.undone,e),this.prevTime,this.prevUserEvent)}pop(e,n,i){let s=e==0?this.done:this.undone;if(s.length==0)return null;let a=s[s.length-1],o=a.selectionsAfter[0]||n.selection;if(i&&a.selectionsAfter.length)return n.update({selection:a.selectionsAfter[a.selectionsAfter.length-1],annotations:tw.of({side:e,rest:Obe(s),selection:o}),userEvent:e==0?"select.undo":"select.redo",scrollIntoView:!0});if(a.changes){let r=s.length==1?va:s.slice(0,s.length-1);return a.mapped&&(r=Q1(r,a.mapped)),n.update({changes:a.changes,selection:a.startSelection,effects:a.effects,annotations:tw.of({side:e,rest:r,selection:o}),filter:!1,userEvent:e==0?"undo":"redo",scrollIntoView:!0})}else return null}}ko.empty=new ko(va,va);const jbe=[{key:"Mod-z",run:T8,preventDefault:!0},{key:"Mod-y",mac:"Mod-Shift-z",run:nw,preventDefault:!0},{linux:"Ctrl-Shift-z",run:nw,preventDefault:!0},{key:"Mod-u",run:Abe,preventDefault:!0},{key:"Alt-u",mac:"Mod-Shift-u",run:Nbe,preventDefault:!0}];function Qd(t,e){return je.create(t.ranges.map(e),t.mainIndex)}function Ya(t,e){return t.update({selection:e,scrollIntoView:!0,userEvent:"select"})}function Ja({state:t,dispatch:e},n){let i=Qd(t.selection,n);return i.eq(t.selection,!0)?!1:(e(Ya(t,i)),!0)}function rb(t,e){return je.cursor(e?t.to:t.from)}function O8(t,e){return Ja(t,n=>n.empty?t.moveByChar(n,e):rb(n,e))}function us(t){return t.textDirectionAt(t.state.selection.main.head)==Un.LTR}const P8=t=>O8(t,!us(t)),E8=t=>O8(t,us(t));function j8(t,e){return Ja(t,n=>n.empty?t.moveByGroup(n,e):rb(n,e))}const Rbe=t=>j8(t,!us(t)),Dbe=t=>j8(t,us(t));function Fbe(t,e,n){if(e.type.prop(n))return!0;let i=e.to-e.from;return i&&(i>2||/[^\s,.;:]/.test(t.sliceDoc(e.from,e.to)))||e.firstChild}function lb(t,e,n){let i=cs(t).resolveInner(e.head),s=n?Wt.closedBy:Wt.openedBy;for(let c=e.head;;){let d=n?i.childAfter(c):i.childBefore(c);if(!d)break;Fbe(t,d,s)?i=d:c=n?d.to:d.from}let a=i.type.prop(s),o,r;return a&&(o=n?wo(t,i.from,1):wo(t,i.to,-1))&&o.matched?r=n?o.end.to:o.end.from:r=n?i.to:i.from,je.cursor(r,n?-1:1)}const Ibe=t=>Ja(t,e=>lb(t.state,e,!us(t))),Bbe=t=>Ja(t,e=>lb(t.state,e,us(t)));function R8(t,e){return Ja(t,n=>{if(!n.empty)return rb(n,e);let i=t.moveVertically(n,e);return i.head!=n.head?i:t.moveToLineBoundary(n,e)})}const D8=t=>R8(t,!1),F8=t=>R8(t,!0);function I8(t){let e=t.scrollDOM.clientHeight<t.scrollDOM.scrollHeight-2,n=0,i=0,s;if(e){for(let a of t.state.facet(Xe.scrollMargins)){let o=a(t);o?.top&&(n=Math.max(o?.top,n)),o?.bottom&&(i=Math.max(o?.bottom,i))}s=t.scrollDOM.clientHeight-n-i}else s=(t.dom.ownerDocument.defaultView||window).innerHeight;return{marginTop:n,marginBottom:i,selfScroll:e,height:Math.max(t.defaultLineHeight,s-5)}}function B8(t,e){let n=I8(t),{state:i}=t,s=Qd(i.selection,o=>o.empty?t.moveVertically(o,e,n.height):rb(o,e));if(s.eq(i.selection))return!1;let a;if(n.selfScroll){let o=t.coordsAtPos(i.selection.main.head),r=t.scrollDOM.getBoundingClientRect(),c=r.top+n.marginTop,d=r.bottom-n.marginBottom;o&&o.top>c&&o.bottom<d&&(a=Xe.scrollIntoView(s.main.head,{y:"start",yMargin:o.top-c}))}return t.dispatch(Ya(i,s),{effects:a}),!0}const Fj=t=>B8(t,!1),iw=t=>B8(t,!0);function Dl(t,e,n){let i=t.lineBlockAt(e.head),s=t.moveToLineBoundary(e,n);if(s.head==e.head&&s.head!=(n?i.to:i.from)&&(s=t.moveToLineBoundary(e,n,!1)),!n&&s.head==i.from&&i.length){let a=/^\s*/.exec(t.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;a&&e.head!=i.from+a&&(s=je.cursor(i.from+a))}return s}const Ube=t=>Ja(t,e=>Dl(t,e,!0)),qbe=t=>Ja(t,e=>Dl(t,e,!1)),zbe=t=>Ja(t,e=>Dl(t,e,!us(t))),Kbe=t=>Ja(t,e=>Dl(t,e,us(t))),Vbe=t=>Ja(t,e=>je.cursor(t.lineBlockAt(e.head).from,1)),Hbe=t=>Ja(t,e=>je.cursor(t.lineBlockAt(e.head).to,-1));function Wbe(t,e,n){let i=!1,s=Qd(t.selection,a=>{let o=wo(t,a.head,-1)||wo(t,a.head,1)||a.head>0&&wo(t,a.head-1,1)||a.head<t.doc.length&&wo(t,a.head+1,-1);if(!o||!o.end)return a;i=!0;let r=o.start.from==a.head?o.end.to:o.end.from;return je.cursor(r)});return i?(e(Ya(t,s)),!0):!1}const Gbe=({state:t,dispatch:e})=>Wbe(t,e);function ja(t,e){let n=Qd(t.state.selection,i=>{let s=e(i);return je.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0)});return n.eq(t.state.selection)?!1:(t.dispatch(Ya(t.state,n)),!0)}function U8(t,e){return ja(t,n=>t.moveByChar(n,e))}const q8=t=>U8(t,!us(t)),z8=t=>U8(t,us(t));function K8(t,e){return ja(t,n=>t.moveByGroup(n,e))}const $be=t=>K8(t,!us(t)),Xbe=t=>K8(t,us(t)),Qbe=t=>ja(t,e=>lb(t.state,e,!us(t))),Ybe=t=>ja(t,e=>lb(t.state,e,us(t)));function V8(t,e){return ja(t,n=>t.moveVertically(n,e))}const H8=t=>V8(t,!1),W8=t=>V8(t,!0);function G8(t,e){return ja(t,n=>t.moveVertically(n,e,I8(t).height))}const Ij=t=>G8(t,!1),Bj=t=>G8(t,!0),Jbe=t=>ja(t,e=>Dl(t,e,!0)),Zbe=t=>ja(t,e=>Dl(t,e,!1)),eve=t=>ja(t,e=>Dl(t,e,!us(t))),tve=t=>ja(t,e=>Dl(t,e,us(t))),nve=t=>ja(t,e=>je.cursor(t.lineBlockAt(e.head).from)),ive=t=>ja(t,e=>je.cursor(t.lineBlockAt(e.head).to)),Uj=({state:t,dispatch:e})=>(e(Ya(t,{anchor:0})),!0),qj=({state:t,dispatch:e})=>(e(Ya(t,{anchor:t.doc.length})),!0),zj=({state:t,dispatch:e})=>(e(Ya(t,{anchor:t.selection.main.anchor,head:0})),!0),Kj=({state:t,dispatch:e})=>(e(Ya(t,{anchor:t.selection.main.anchor,head:t.doc.length})),!0),sve=({state:t,dispatch:e})=>(e(t.update({selection:{anchor:0,head:t.doc.length},userEvent:"select"})),!0),ave=({state:t,dispatch:e})=>{let n=cb(t).map(({from:i,to:s})=>je.range(i,Math.min(s+1,t.doc.length)));return e(t.update({selection:je.create(n),userEvent:"select"})),!0},ove=({state:t,dispatch:e})=>{let n=Qd(t.selection,i=>{let s=cs(t),a=s.resolveStack(i.from,1);if(i.empty){let o=s.resolveStack(i.from,-1);o.node.from>=a.node.from&&o.node.to<=a.node.to&&(a=o)}for(let o=a;o;o=o.next){let{node:r}=o;if((r.from<i.from&&r.to>=i.to||r.to>i.to&&r.from<=i.from)&&o.next)return je.range(r.to,r.from)}return i});return n.eq(t.selection)?!1:(e(Ya(t,n)),!0)};function $8(t,e){let{state:n}=t,i=n.selection,s=n.selection.ranges.slice();for(let a of n.selection.ranges){let o=n.doc.lineAt(a.head);if(e?o.to<t.state.doc.length:o.from>0)for(let r=a;;){let c=t.moveVertically(r,e);if(c.head<o.from||c.head>o.to){s.some(d=>d.head==c.head)||s.push(c);break}else{if(c.head==r.head)break;r=c}}}return s.length==i.ranges.length?!1:(t.dispatch(Ya(n,je.create(s,s.length-1))),!0)}const rve=t=>$8(t,!1),lve=t=>$8(t,!0),cve=({state:t,dispatch:e})=>{let n=t.selection,i=null;return n.ranges.length>1?i=je.create([n.main]):n.main.empty||(i=je.create([je.cursor(n.main.head)])),i?(e(Ya(t,i)),!0):!1};function wp(t,e){if(t.state.readOnly)return!1;let n="delete.selection",{state:i}=t,s=i.changeByRange(a=>{let{from:o,to:r}=a;if(o==r){let c=e(a);c<o?(n="delete.backward",c=D_(t,c,!1)):c>o&&(n="delete.forward",c=D_(t,c,!0)),o=Math.min(o,c),r=Math.max(r,c)}else o=D_(t,o,!1),r=D_(t,r,!0);return o==r?{range:a}:{changes:{from:o,to:r},range:je.cursor(o,o<a.head?-1:1)}});return s.changes.empty?!1:(t.dispatch(i.update(s,{scrollIntoView:!0,userEvent:n,effects:n=="delete.selection"?Xe.announce.of(i.phrase("Selection deleted")):void 0})),!0)}function D_(t,e,n){if(t instanceof Xe)for(let i of t.state.facet(Xe.atomicRanges).map(s=>s(t)))i.between(e,e,(s,a)=>{s<e&&a>e&&(e=n?a:s)});return e}const X8=(t,e,n)=>wp(t,i=>{let s=i.from,{state:a}=t,o=a.doc.lineAt(s),r,c;if(n&&!e&&s>o.from&&s<o.from+200&&!/[^ \t]/.test(r=o.text.slice(0,s-o.from))){if(r[r.length-1]==" ")return s-1;let d=Xd(r,a.tabSize),f=d%oy(a)||oy(a);for(let p=0;p<f&&r[r.length-1-p]==" ";p++)s--;c=s}else c=Wi(o.text,s-o.from,e,e)+o.from,c==s&&o.number!=(e?a.doc.lines:1)?c+=e?1:-1:!e&&/[\ufe00-\ufe0f]/.test(o.text.slice(c-o.from,s-o.from))&&(c=Wi(o.text,c-o.from,!1,!1)+o.from);return c}),sw=t=>X8(t,!1,!0),Q8=t=>X8(t,!0,!1),Y8=(t,e)=>wp(t,n=>{let i=n.head,{state:s}=t,a=s.doc.lineAt(i),o=s.charCategorizer(i);for(let r=null;;){if(i==(e?a.to:a.from)){i==n.head&&a.number!=(e?s.doc.lines:1)&&(i+=e?1:-1);break}let c=Wi(a.text,i-a.from,e)+a.from,d=a.text.slice(Math.min(i,c)-a.from,Math.max(i,c)-a.from),f=o(d);if(r!=null&&f!=r)break;(d!=" "||i!=n.head)&&(r=f),i=c}return i}),J8=t=>Y8(t,!1),uve=t=>Y8(t,!0),dve=t=>wp(t,e=>{let n=t.lineBlockAt(e.head).to;return e.head<n?n:Math.min(t.state.doc.length,e.head+1)}),hve=t=>wp(t,e=>{let n=t.moveToLineBoundary(e,!1).head;return e.head>n?n:Math.max(0,e.head-1)}),fve=t=>wp(t,e=>{let n=t.moveToLineBoundary(e,!0).head;return e.head<n?n:Math.min(t.state.doc.length,e.head+1)}),mve=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let n=t.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:an.of(["",""])},range:je.cursor(i.from)}));return e(t.update(n,{scrollIntoView:!0,userEvent:"input"})),!0},pve=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let n=t.changeByRange(i=>{if(!i.empty||i.from==0||i.from==t.doc.length)return{range:i};let s=i.from,a=t.doc.lineAt(s),o=s==a.from?s-1:Wi(a.text,s-a.from,!1)+a.from,r=s==a.to?s+1:Wi(a.text,s-a.from,!0)+a.from;return{changes:{from:o,to:r,insert:t.doc.slice(s,r).append(t.doc.slice(o,s))},range:je.cursor(r)}});return n.changes.empty?!1:(e(t.update(n,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function cb(t){let e=[],n=-1;for(let i of t.selection.ranges){let s=t.doc.lineAt(i.from),a=t.doc.lineAt(i.to);if(!i.empty&&i.to==a.from&&(a=t.doc.lineAt(i.to-1)),n>=s.number){let o=e[e.length-1];o.to=a.to,o.ranges.push(i)}else e.push({from:s.from,to:a.to,ranges:[i]});n=a.number+1}return e}function Z8(t,e,n){if(t.readOnly)return!1;let i=[],s=[];for(let a of cb(t)){if(n?a.to==t.doc.length:a.from==0)continue;let o=t.doc.lineAt(n?a.to+1:a.from-1),r=o.length+1;if(n){i.push({from:a.to,to:o.to},{from:a.from,insert:o.text+t.lineBreak});for(let c of a.ranges)s.push(je.range(Math.min(t.doc.length,c.anchor+r),Math.min(t.doc.length,c.head+r)))}else{i.push({from:o.from,to:a.from},{from:a.to,insert:t.lineBreak+o.text});for(let c of a.ranges)s.push(je.range(c.anchor-r,c.head-r))}}return i.length?(e(t.update({changes:i,scrollIntoView:!0,selection:je.create(s,t.selection.mainIndex),userEvent:"move.line"})),!0):!1}const gve=({state:t,dispatch:e})=>Z8(t,e,!1),_ve=({state:t,dispatch:e})=>Z8(t,e,!0);function eF(t,e,n){if(t.readOnly)return!1;let i=[];for(let s of cb(t))n?i.push({from:s.from,insert:t.doc.slice(s.from,s.to)+t.lineBreak}):i.push({from:s.to,insert:t.lineBreak+t.doc.slice(s.from,s.to)});return e(t.update({changes:i,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const yve=({state:t,dispatch:e})=>eF(t,e,!1),bve=({state:t,dispatch:e})=>eF(t,e,!0),vve=t=>{if(t.state.readOnly)return!1;let{state:e}=t,n=e.changes(cb(e).map(({from:s,to:a})=>(s>0?s--:a<e.doc.length&&a++,{from:s,to:a}))),i=Qd(e.selection,s=>{let a;if(t.lineWrapping){let o=t.lineBlockAt(s.head),r=t.coordsAtPos(s.head,s.assoc||1);r&&(a=o.bottom+t.documentTop-r.bottom+t.defaultLineHeight/2)}return t.moveVertically(s,!0,a)}).map(n);return t.dispatch({changes:n,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function xve(t,e){if(/\(\)|\[\]|\{\}/.test(t.sliceDoc(e-1,e+1)))return{from:e,to:e};let n=cs(t).resolveInner(e),i=n.childBefore(e),s=n.childAfter(e),a;return i&&s&&i.to<=e&&s.from>=e&&(a=i.type.prop(Wt.closedBy))&&a.indexOf(s.name)>-1&&t.doc.lineAt(i.to).from==t.doc.lineAt(s.from).from&&!/\S/.test(t.sliceDoc(i.to,s.from))?{from:i.to,to:s.from}:null}const Vj=tF(!1),Sve=tF(!0);function tF(t){return({state:e,dispatch:n})=>{if(e.readOnly)return!1;let i=e.changeByRange(s=>{let{from:a,to:o}=s,r=e.doc.lineAt(a),c=!t&&a==o&&xve(e,a);t&&(a=o=(o<=r.to?r:e.doc.lineAt(o)).to);let d=new sb(e,{simulateBreak:a,simulateDoubleBreak:!!c}),f=Fk(d,a);for(f==null&&(f=Xd(/^\s*/.exec(e.doc.lineAt(a).text)[0],e.tabSize));o<r.to&&/\s/.test(r.text[o-r.from]);)o++;c?{from:a,to:o}=c:a>r.from&&a<r.from+100&&!/\S/.test(r.text.slice(0,a))&&(a=r.from);let p=["",Pm(e,f)];return c&&p.push(Pm(e,d.lineIndent(r.from,-1))),{changes:{from:a,to:o,insert:an.of(p)},range:je.cursor(a+1+p[1].length)}});return n(e.update(i,{scrollIntoView:!0,userEvent:"input"})),!0}}function qk(t,e){let n=-1;return t.changeByRange(i=>{let s=[];for(let o=i.from;o<=i.to;){let r=t.doc.lineAt(o);r.number>n&&(i.empty||i.to>r.from)&&(e(r,s,i),n=r.number),o=r.to+1}let a=t.changes(s);return{changes:s,range:je.range(a.mapPos(i.anchor,1),a.mapPos(i.head,1))}})}const wve=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let n=Object.create(null),i=new sb(t,{overrideIndentation:a=>{let o=n[a];return o??-1}}),s=qk(t,(a,o,r)=>{let c=Fk(i,a.from);if(c==null)return;/\S/.test(a.text)||(c=0);let d=/^\s*/.exec(a.text)[0],f=Pm(t,c);(d!=f||r.from<a.from+d.length)&&(n[a.from]=c,o.push({from:a.from,to:a.from+d.length,insert:f}))});return s.changes.empty||e(t.update(s,{userEvent:"indent"})),!0},nF=({state:t,dispatch:e})=>t.readOnly?!1:(e(t.update(qk(t,(n,i)=>{i.push({from:n.from,insert:t.facet(ib)})}),{userEvent:"input.indent"})),!0),iF=({state:t,dispatch:e})=>t.readOnly?!1:(e(t.update(qk(t,(n,i)=>{let s=/^\s*/.exec(n.text)[0];if(!s)return;let a=Xd(s,t.tabSize),o=0,r=Pm(t,Math.max(0,a-oy(t)));for(;o<s.length&&o<r.length&&s.charCodeAt(o)==r.charCodeAt(o);)o++;i.push({from:n.from+o,to:n.from+s.length,insert:r.slice(o)})}),{userEvent:"delete.dedent"})),!0),kve=t=>(t.setTabFocusMode(),!0),Cve=[{key:"Ctrl-b",run:P8,shift:q8,preventDefault:!0},{key:"Ctrl-f",run:E8,shift:z8},{key:"Ctrl-p",run:D8,shift:H8},{key:"Ctrl-n",run:F8,shift:W8},{key:"Ctrl-a",run:Vbe,shift:nve},{key:"Ctrl-e",run:Hbe,shift:ive},{key:"Ctrl-d",run:Q8},{key:"Ctrl-h",run:sw},{key:"Ctrl-k",run:dve},{key:"Ctrl-Alt-h",run:J8},{key:"Ctrl-o",run:mve},{key:"Ctrl-t",run:pve},{key:"Ctrl-v",run:iw}],Ave=[{key:"ArrowLeft",run:P8,shift:q8,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:Rbe,shift:$be,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:zbe,shift:eve,preventDefault:!0},{key:"ArrowRight",run:E8,shift:z8,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:Dbe,shift:Xbe,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Kbe,shift:tve,preventDefault:!0},{key:"ArrowUp",run:D8,shift:H8,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Uj,shift:zj},{mac:"Ctrl-ArrowUp",run:Fj,shift:Ij},{key:"ArrowDown",run:F8,shift:W8,preventDefault:!0},{mac:"Cmd-ArrowDown",run:qj,shift:Kj},{mac:"Ctrl-ArrowDown",run:iw,shift:Bj},{key:"PageUp",run:Fj,shift:Ij},{key:"PageDown",run:iw,shift:Bj},{key:"Home",run:qbe,shift:Zbe,preventDefault:!0},{key:"Mod-Home",run:Uj,shift:zj},{key:"End",run:Ube,shift:Jbe,preventDefault:!0},{key:"Mod-End",run:qj,shift:Kj},{key:"Enter",run:Vj,shift:Vj},{key:"Mod-a",run:sve},{key:"Backspace",run:sw,shift:sw,preventDefault:!0},{key:"Delete",run:Q8,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:J8,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:uve,preventDefault:!0},{mac:"Mod-Backspace",run:hve,preventDefault:!0},{mac:"Mod-Delete",run:fve,preventDefault:!0}].concat(Cve.map(t=>({mac:t.key,run:t.run,shift:t.shift}))),Nve=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:Ibe,shift:Qbe},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:Bbe,shift:Ybe},{key:"Alt-ArrowUp",run:gve},{key:"Shift-Alt-ArrowUp",run:yve},{key:"Alt-ArrowDown",run:_ve},{key:"Shift-Alt-ArrowDown",run:bve},{key:"Mod-Alt-ArrowUp",run:rve},{key:"Mod-Alt-ArrowDown",run:lve},{key:"Escape",run:cve},{key:"Mod-Enter",run:Sve},{key:"Alt-l",mac:"Ctrl-l",run:ave},{key:"Mod-i",run:ove,preventDefault:!0},{key:"Mod-[",run:iF},{key:"Mod-]",run:nF},{key:"Mod-Alt-\\",run:wve},{key:"Shift-Mod-k",run:vve},{key:"Shift-Mod-\\",run:Gbe},{key:"Mod-/",run:gbe},{key:"Alt-A",run:ybe},{key:"Ctrl-m",mac:"Shift-Alt-m",run:kve}].concat(Ave),Tve={key:"Tab",run:nF,shift:iF},Hj=typeof String.prototype.normalize=="function"?t=>t.normalize("NFKD"):t=>t;class Rd{constructor(e,n,i=0,s=e.length,a,o){this.test=o,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(i,s),this.bufferStart=i,this.normalize=a?r=>a(Hj(r)):Hj,this.query=this.normalize(n)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return Es(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let n=bk(e),i=this.bufferStart+this.bufferPos;this.bufferPos+=bo(e);let s=this.normalize(n);if(s.length)for(let a=0,o=i;;a++){let r=s.charCodeAt(a),c=this.match(r,o,this.bufferPos+this.bufferStart);if(a==s.length-1){if(c)return this.value=c,this;break}o==i&&a<n.length&&n.charCodeAt(a)==r&&o++}}}match(e,n,i){let s=null;for(let a=0;a<this.matches.length;a+=2){let o=this.matches[a],r=!1;this.query.charCodeAt(o)==e&&(o==this.query.length-1?s={from:this.matches[a+1],to:i}:(this.matches[a]++,r=!0)),r||(this.matches.splice(a,2),a-=2)}return this.query.charCodeAt(0)==e&&(this.query.length==1?s={from:n,to:i}:this.matches.push(1,n)),s&&this.test&&!this.test(s.from,s.to,this.buffer,this.bufferStart)&&(s=null),s}}typeof Symbol<"u"&&(Rd.prototype[Symbol.iterator]=function(){return this});const sF={from:-1,to:-1,match:/.*/.exec("")},zk="gm"+(/x/.unicode==null?"":"u");class aF{constructor(e,n,i,s=0,a=e.length){if(this.text=e,this.to=a,this.curLine="",this.done=!1,this.value=sF,/\\[sWDnr]|\n|\r|\[\^/.test(n))return new oF(e,n,i,s,a);this.re=new RegExp(n,zk+(i?.ignoreCase?"i":"")),this.test=i?.test,this.iter=e.iter();let o=e.lineAt(s);this.curLineStart=o.from,this.matchPos=uy(e,s),this.getLine(this.curLineStart)}getLine(e){this.iter.next(e),this.iter.lineBreak?this.curLine="":(this.curLine=this.iter.value,this.curLineStart+this.curLine.length>this.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let n=this.matchPos<=this.to&&this.re.exec(this.curLine);if(n){let i=this.curLineStart+n.index,s=i+n[0].length;if(this.matchPos=uy(this.text,s+(i==s?1:0)),i==this.curLineStart+this.curLine.length&&this.nextLine(),(i<s||i>this.value.to)&&(!this.test||this.test(i,s,n)))return this.value={from:i,to:s,match:n},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length<this.to)this.nextLine(),e=0;else return this.done=!0,this}}}const Y1=new WeakMap;class gd{constructor(e,n){this.from=e,this.text=n}get to(){return this.from+this.text.length}static get(e,n,i){let s=Y1.get(e);if(!s||s.from>=i||s.to<=n){let r=new gd(n,e.sliceString(n,i));return Y1.set(e,r),r}if(s.from==n&&s.to==i)return s;let{text:a,from:o}=s;return o>n&&(a=e.sliceString(n,o)+a,o=n),s.to<i&&(a+=e.sliceString(s.to,i)),Y1.set(e,new gd(o,a)),new gd(n,a.slice(n-o,i-o))}}class oF{constructor(e,n,i,s,a){this.text=e,this.to=a,this.done=!1,this.value=sF,this.matchPos=uy(e,s),this.re=new RegExp(n,zk+(i?.ignoreCase?"i":"")),this.test=i?.test,this.flat=gd.get(e,s,this.chunkEnd(s+5e3))}chunkEnd(e){return e>=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,n=this.re.exec(this.flat.text);if(n&&!n[0]&&n.index==e&&(this.re.lastIndex=e+1,n=this.re.exec(this.flat.text)),n){let i=this.flat.from+n.index,s=i+n[0].length;if((this.flat.to>=this.to||n.index+n[0].length<=this.flat.text.length-10)&&(!this.test||this.test(i,s,n)))return this.value={from:i,to:s,match:n},this.matchPos=uy(this.text,s+(i==s?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=gd.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}typeof Symbol<"u"&&(aF.prototype[Symbol.iterator]=oF.prototype[Symbol.iterator]=function(){return this});function Mve(t){try{return new RegExp(t,zk),!0}catch{return!1}}function uy(t,e){if(e>=t.length)return e;let n=t.lineAt(e),i;for(;e<n.to&&(i=n.text.charCodeAt(e-n.from))>=56320&&i<57344;)e++;return e}function aw(t){let e=String(t.state.doc.lineAt(t.state.selection.main.head).number),n=Tn("input",{class:"cm-textfield",name:"line",value:e}),i=Tn("form",{class:"cm-gotoLine",onkeydown:a=>{a.keyCode==27?(a.preventDefault(),t.dispatch({effects:om.of(!1)}),t.focus()):a.keyCode==13&&(a.preventDefault(),s())},onsubmit:a=>{a.preventDefault(),s()}},Tn("label",t.state.phrase("Go to line"),": ",n)," ",Tn("button",{class:"cm-button",type:"submit"},t.state.phrase("go")),Tn("button",{name:"close",onclick:()=>{t.dispatch({effects:om.of(!1)}),t.focus()},"aria-label":t.state.phrase("close"),type:"button"},["×"]));function s(){let a=/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(n.value);if(!a)return;let{state:o}=t,r=o.doc.lineAt(o.selection.main.head),[,c,d,f,p]=a,g=f?+f.slice(1):0,y=d?+d:r.number;if(d&&p){let x=y/100;c&&(x=x*(c=="-"?-1:1)+r.number/o.doc.lines),y=Math.round(o.doc.lines*x)}else d&&c&&(y=y*(c=="-"?-1:1)+r.number);let _=o.doc.line(Math.max(1,Math.min(o.doc.lines,y))),v=je.cursor(_.from+Math.max(0,Math.min(g,_.length)));t.dispatch({effects:[om.of(!1),Xe.scrollIntoView(v.from,{y:"center"})],selection:v}),t.focus()}return{dom:i}}const om=Rt.define(),Wj=$i.define({create(){return!0},update(t,e){for(let n of e.effects)n.is(om)&&(t=n.value);return t},provide:t=>Mm.from(t,e=>e?aw:null)}),Lve=t=>{let e=Tm(t,aw);if(!e){let n=[om.of(!0)];t.state.field(Wj,!1)==null&&n.push(Rt.appendConfig.of([Wj,Ove])),t.dispatch({effects:n}),e=Tm(t,aw)}return e&&e.dom.querySelector("input").select(),!0},Ove=Xe.baseTheme({".cm-panel.cm-gotoLine":{padding:"2px 6px 4px",position:"relative","& label":{fontSize:"80%"},"& [name=close]":{position:"absolute",top:"0",bottom:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:"0"}}}),Pve={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},Eve=tt.define({combine(t){return Fo(t,Pve,{highlightWordAroundCursor:(e,n)=>e||n,minSelectionLength:Math.min,maxMatches:Math.min})}});function rF(t){return[Ive,Fve]}const jve=xt.mark({class:"cm-selectionMatch"}),Rve=xt.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function Gj(t,e,n,i){return(n==0||t(e.sliceDoc(n-1,n))!=Hn.Word)&&(i==e.doc.length||t(e.sliceDoc(i,i+1))!=Hn.Word)}function Dve(t,e,n,i){return t(e.sliceDoc(n,n+1))==Hn.Word&&t(e.sliceDoc(i-1,i))==Hn.Word}const Fve=li.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.selectionSet||t.docChanged||t.viewportChanged)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=t.state.facet(Eve),{state:n}=t,i=n.selection;if(i.ranges.length>1)return xt.none;let s=i.main,a,o=null;if(s.empty){if(!e.highlightWordAroundCursor)return xt.none;let c=n.wordAt(s.head);if(!c)return xt.none;o=n.charCategorizer(s.head),a=n.sliceDoc(c.from,c.to)}else{let c=s.to-s.from;if(c<e.minSelectionLength||c>200)return xt.none;if(e.wholeWords){if(a=n.sliceDoc(s.from,s.to),o=n.charCategorizer(s.head),!(Gj(o,n,s.from,s.to)&&Dve(o,n,s.from,s.to)))return xt.none}else if(a=n.sliceDoc(s.from,s.to),!a)return xt.none}let r=[];for(let c of t.visibleRanges){let d=new Rd(n.doc,a,c.from,c.to);for(;!d.next().done;){let{from:f,to:p}=d.value;if((!o||Gj(o,n,f,p))&&(s.empty&&f<=s.from&&p>=s.to?r.push(Rve.range(f,p)):(f>=s.to||p<=s.from)&&r.push(jve.range(f,p)),r.length>e.maxMatches))return xt.none}}return xt.set(r)}},{decorations:t=>t.decorations}),Ive=Xe.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),Bve=({state:t,dispatch:e})=>{let{selection:n}=t,i=je.create(n.ranges.map(s=>t.wordAt(s.head)||je.cursor(s.head)),n.mainIndex);return i.eq(n)?!1:(e(t.update({selection:i})),!0)};function Uve(t,e){let{main:n,ranges:i}=t.selection,s=t.wordAt(n.head),a=s&&s.from==n.from&&s.to==n.to;for(let o=!1,r=new Rd(t.doc,e,i[i.length-1].to);;)if(r.next(),r.done){if(o)return null;r=new Rd(t.doc,e,0,Math.max(0,i[i.length-1].from-1)),o=!0}else{if(o&&i.some(c=>c.from==r.value.from))continue;if(a){let c=t.wordAt(r.value.from);if(!c||c.from!=r.value.from||c.to!=r.value.to)continue}return r.value}}const qve=({state:t,dispatch:e})=>{let{ranges:n}=t.selection;if(n.some(a=>a.from===a.to))return Bve({state:t,dispatch:e});let i=t.sliceDoc(n[0].from,n[0].to);if(t.selection.ranges.some(a=>t.sliceDoc(a.from,a.to)!=i))return!1;let s=Uve(t,i);return s?(e(t.update({selection:t.selection.addRange(je.range(s.from,s.to),!1),effects:Xe.scrollIntoView(s.to)})),!0):!1},Yc=tt.define({combine(t){return Fo(t,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new Zve(e),scrollToMatch:e=>Xe.scrollIntoView(e)})}});function zve(t){return t?[Yc.of(t),rw]:rw}class lF{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||Mve(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(n,i)=>i=="n"?`
`:i=="r"?"\r":i=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord}create(){return this.regexp?new Wve(this):new Vve(this)}getCursor(e,n=0,i){let s=e.doc?e:nn.create({doc:e});return i==null&&(i=s.doc.length),this.regexp?Gu(this,s,n,i):Wu(this,s,n,i)}}class cF{constructor(e){this.spec=e}}function Wu(t,e,n,i){return new Rd(e.doc,t.unquoted,n,i,t.caseSensitive?void 0:s=>s.toLowerCase(),t.wholeWord?Kve(e.doc,e.charCategorizer(e.selection.main.head)):void 0)}function Kve(t,e){return(n,i,s,a)=>((a>n||a+s.length<i)&&(a=Math.max(0,n-2),s=t.sliceString(a,Math.min(t.length,i+2))),(e(dy(s,n-a))!=Hn.Word||e(hy(s,n-a))!=Hn.Word)&&(e(hy(s,i-a))!=Hn.Word||e(dy(s,i-a))!=Hn.Word))}class Vve extends cF{constructor(e){super(e)}nextMatch(e,n,i){let s=Wu(this.spec,e,i,e.doc.length).nextOverlapping();if(s.done){let a=Math.min(e.doc.length,n+this.spec.unquoted.length);s=Wu(this.spec,e,0,a).nextOverlapping()}return s.done||s.value.from==n&&s.value.to==i?null:s.value}prevMatchInRange(e,n,i){for(let s=i;;){let a=Math.max(n,s-1e4-this.spec.unquoted.length),o=Wu(this.spec,e,a,s),r=null;for(;!o.nextOverlapping().done;)r=o.value;if(r)return r;if(a==n)return null;s-=1e4}}prevMatch(e,n,i){let s=this.prevMatchInRange(e,0,n);return s||(s=this.prevMatchInRange(e,Math.max(0,i-this.spec.unquoted.length),e.doc.length)),s&&(s.from!=n||s.to!=i)?s:null}getReplacement(e){return this.spec.unquote(this.spec.replace)}matchAll(e,n){let i=Wu(this.spec,e,0,e.doc.length),s=[];for(;!i.next().done;){if(s.length>=n)return null;s.push(i.value)}return s}highlight(e,n,i,s){let a=Wu(this.spec,e,Math.max(0,n-this.spec.unquoted.length),Math.min(i+this.spec.unquoted.length,e.doc.length));for(;!a.next().done;)s(a.value.from,a.value.to)}}function Gu(t,e,n,i){return new aF(e.doc,t.search,{ignoreCase:!t.caseSensitive,test:t.wholeWord?Hve(e.charCategorizer(e.selection.main.head)):void 0},n,i)}function dy(t,e){return t.slice(Wi(t,e,!1),e)}function hy(t,e){return t.slice(e,Wi(t,e))}function Hve(t){return(e,n,i)=>!i[0].length||(t(dy(i.input,i.index))!=Hn.Word||t(hy(i.input,i.index))!=Hn.Word)&&(t(hy(i.input,i.index+i[0].length))!=Hn.Word||t(dy(i.input,i.index+i[0].length))!=Hn.Word)}class Wve extends cF{nextMatch(e,n,i){let s=Gu(this.spec,e,i,e.doc.length).next();return s.done&&(s=Gu(this.spec,e,0,n).next()),s.done?null:s.value}prevMatchInRange(e,n,i){for(let s=1;;s++){let a=Math.max(n,i-s*1e4),o=Gu(this.spec,e,a,i),r=null;for(;!o.next().done;)r=o.value;if(r&&(a==n||r.from>a+10))return r;if(a==n)return null}}prevMatch(e,n,i){return this.prevMatchInRange(e,0,n)||this.prevMatchInRange(e,i,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(n,i)=>{if(i=="&")return e.match[0];if(i=="$")return"$";for(let s=i.length;s>0;s--){let a=+i.slice(0,s);if(a>0&&a<e.match.length)return e.match[a]+i.slice(s)}return n})}matchAll(e,n){let i=Gu(this.spec,e,0,e.doc.length),s=[];for(;!i.next().done;){if(s.length>=n)return null;s.push(i.value)}return s}highlight(e,n,i,s){let a=Gu(this.spec,e,Math.max(0,n-250),Math.min(i+250,e.doc.length));for(;!a.next().done;)s(a.value.from,a.value.to)}}const Em=Rt.define(),Kk=Rt.define(),Cl=$i.define({create(t){return new J1(ow(t).create(),null)},update(t,e){for(let n of e.effects)n.is(Em)?t=new J1(n.value.create(),t.panel):n.is(Kk)&&(t=new J1(t.query,n.value?Vk:null));return t},provide:t=>Mm.from(t,e=>e.panel)});class J1{constructor(e,n){this.query=e,this.panel=n}}const Gve=xt.mark({class:"cm-searchMatch"}),$ve=xt.mark({class:"cm-searchMatch cm-searchMatch-selected"}),Xve=li.fromClass(class{constructor(t){this.view=t,this.decorations=this.highlight(t.state.field(Cl))}update(t){let e=t.state.field(Cl);(e!=t.startState.field(Cl)||t.docChanged||t.selectionSet||t.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:t,panel:e}){if(!e||!t.spec.valid)return xt.none;let{view:n}=this,i=new Tr;for(let s=0,a=n.visibleRanges,o=a.length;s<o;s++){let{from:r,to:c}=a[s];for(;s<o-1&&c>a[s+1].from-500;)c=a[++s].to;t.highlight(n.state,r,c,(d,f)=>{let p=n.state.selection.ranges.some(g=>g.from==d&&g.to==f);i.add(d,f,p?$ve:Gve)})}return i.finish()}},{decorations:t=>t.decorations});function kp(t){return e=>{let n=e.state.field(Cl,!1);return n&&n.query.spec.valid?t(e,n):hF(e)}}const fy=kp((t,{query:e})=>{let{to:n}=t.state.selection.main,i=e.nextMatch(t.state,n,n);if(!i)return!1;let s=je.single(i.from,i.to),a=t.state.facet(Yc);return t.dispatch({selection:s,effects:[Hk(t,i),a.scrollToMatch(s.main,t)],userEvent:"select.search"}),dF(t),!0}),my=kp((t,{query:e})=>{let{state:n}=t,{from:i}=n.selection.main,s=e.prevMatch(n,i,i);if(!s)return!1;let a=je.single(s.from,s.to),o=t.state.facet(Yc);return t.dispatch({selection:a,effects:[Hk(t,s),o.scrollToMatch(a.main,t)],userEvent:"select.search"}),dF(t),!0}),Qve=kp((t,{query:e})=>{let n=e.matchAll(t.state,1e3);return!n||!n.length?!1:(t.dispatch({selection:je.create(n.map(i=>je.range(i.from,i.to))),userEvent:"select.search.matches"}),!0)}),Yve=({state:t,dispatch:e})=>{let n=t.selection;if(n.ranges.length>1||n.main.empty)return!1;let{from:i,to:s}=n.main,a=[],o=0;for(let r=new Rd(t.doc,t.sliceDoc(i,s));!r.next().done;){if(a.length>1e3)return!1;r.value.from==i&&(o=a.length),a.push(je.range(r.value.from,r.value.to))}return e(t.update({selection:je.create(a,o),userEvent:"select.search.matches"})),!0},$j=kp((t,{query:e})=>{let{state:n}=t,{from:i,to:s}=n.selection.main;if(n.readOnly)return!1;let a=e.nextMatch(n,i,i);if(!a)return!1;let o=a,r=[],c,d,f=[];o.from==i&&o.to==s&&(d=n.toText(e.getReplacement(o)),r.push({from:o.from,to:o.to,insert:d}),o=e.nextMatch(n,o.from,o.to),f.push(Xe.announce.of(n.phrase("replaced match on line $",n.doc.lineAt(i).number)+".")));let p=t.state.changes(r);return o&&(c=je.single(o.from,o.to).map(p),f.push(Hk(t,o)),f.push(n.facet(Yc).scrollToMatch(c.main,t))),t.dispatch({changes:p,selection:c,effects:f,userEvent:"input.replace"}),!0}),Jve=kp((t,{query:e})=>{if(t.state.readOnly)return!1;let n=e.matchAll(t.state,1e9).map(s=>{let{from:a,to:o}=s;return{from:a,to:o,insert:e.getReplacement(s)}});if(!n.length)return!1;let i=t.state.phrase("replaced $ matches",n.length)+".";return t.dispatch({changes:n,effects:Xe.announce.of(i),userEvent:"input.replace.all"}),!0});function Vk(t){return t.state.facet(Yc).createPanel(t)}function ow(t,e){var n,i,s,a,o;let r=t.selection.main,c=r.empty||r.to>r.from+100?"":t.sliceDoc(r.from,r.to);if(e&&!c)return e;let d=t.facet(Yc);return new lF({search:((n=e?.literal)!==null&&n!==void 0?n:d.literal)?c:c.replace(/\n/g,"\\n"),caseSensitive:(i=e?.caseSensitive)!==null&&i!==void 0?i:d.caseSensitive,literal:(s=e?.literal)!==null&&s!==void 0?s:d.literal,regexp:(a=e?.regexp)!==null&&a!==void 0?a:d.regexp,wholeWord:(o=e?.wholeWord)!==null&&o!==void 0?o:d.wholeWord})}function uF(t){let e=Tm(t,Vk);return e&&e.dom.querySelector("[main-field]")}function dF(t){let e=uF(t);e&&e==t.root.activeElement&&e.select()}const hF=t=>{let e=t.state.field(Cl,!1);if(e&&e.panel){let n=uF(t);if(n&&n!=t.root.activeElement){let i=ow(t.state,e.query.spec);i.valid&&t.dispatch({effects:Em.of(i)}),n.focus(),n.select()}}else t.dispatch({effects:[Kk.of(!0),e?Em.of(ow(t.state,e.query.spec)):Rt.appendConfig.of(rw)]});return!0},fF=t=>{let e=t.state.field(Cl,!1);if(!e||!e.panel)return!1;let n=Tm(t,Vk);return n&&n.dom.contains(t.root.activeElement)&&t.focus(),t.dispatch({effects:Kk.of(!1)}),!0},mF=[{key:"Mod-f",run:hF,scope:"editor search-panel"},{key:"F3",run:fy,shift:my,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:fy,shift:my,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:fF,scope:"editor search-panel"},{key:"Mod-Shift-l",run:Yve},{key:"Mod-Alt-g",run:Lve},{key:"Mod-d",run:qve,preventDefault:!0}];class Zve{constructor(e){this.view=e;let n=this.query=e.state.field(Cl).query.spec;this.commit=this.commit.bind(this),this.searchField=Tn("input",{value:n.search,placeholder:Xs(e,"Find"),"aria-label":Xs(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=Tn("input",{value:n.replace,placeholder:Xs(e,"Replace"),"aria-label":Xs(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=Tn("input",{type:"checkbox",name:"case",form:"",checked:n.caseSensitive,onchange:this.commit}),this.reField=Tn("input",{type:"checkbox",name:"re",form:"",checked:n.regexp,onchange:this.commit}),this.wordField=Tn("input",{type:"checkbox",name:"word",form:"",checked:n.wholeWord,onchange:this.commit});function i(s,a,o){return Tn("button",{class:"cm-button",name:s,onclick:a,type:"button"},o)}this.dom=Tn("div",{onkeydown:s=>this.keydown(s),class:"cm-search"},[this.searchField,i("next",()=>fy(e),[Xs(e,"next")]),i("prev",()=>my(e),[Xs(e,"previous")]),i("select",()=>Qve(e),[Xs(e,"all")]),Tn("label",null,[this.caseField,Xs(e,"match case")]),Tn("label",null,[this.reField,Xs(e,"regexp")]),Tn("label",null,[this.wordField,Xs(e,"by word")]),...e.state.readOnly?[]:[Tn("br"),this.replaceField,i("replace",()=>$j(e),[Xs(e,"replace")]),i("replaceAll",()=>Jve(e),[Xs(e,"replace all")])],Tn("button",{name:"close",onclick:()=>fF(e),"aria-label":Xs(e,"close"),type:"button"},["×"])])}commit(){let e=new lF({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:Em.of(e)}))}keydown(e){r0e(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?my:fy)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),$j(this.view))}update(e){for(let n of e.transactions)for(let i of n.effects)i.is(Em)&&!i.value.eq(this.query)&&this.setQuery(i.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(Yc).top}}function Xs(t,e){return t.state.phrase(e)}const F_=30,I_=/[\s\.,:;?!]/;function Hk(t,{from:e,to:n}){let i=t.state.doc.lineAt(e),s=t.state.doc.lineAt(n).to,a=Math.max(i.from,e-F_),o=Math.min(s,n+F_),r=t.state.sliceDoc(a,o);if(a!=i.from){for(let c=0;c<F_;c++)if(!I_.test(r[c+1])&&I_.test(r[c])){r=r.slice(c);break}}if(o!=s){for(let c=r.length-1;c>r.length-F_;c--)if(!I_.test(r[c-1])&&I_.test(r[c])){r=r.slice(0,c);break}}return Xe.announce.of(`${t.state.phrase("current match")}. ${r} ${t.state.phrase("on line")} ${i.number}.`)}const exe=Xe.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),rw=[Cl,Qc.low(Xve),exe];class pF{constructor(e,n,i,s){this.state=e,this.pos=n,this.explicit=i,this.view=s,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let n=cs(this.state).resolveInner(this.pos,-1);for(;n&&e.indexOf(n.name)<0;)n=n.parent;return n?{from:n.from,to:this.pos,text:this.state.sliceDoc(n.from,this.pos),type:n.type}:null}matchBefore(e){let n=this.state.doc.lineAt(this.pos),i=Math.max(n.from,this.pos-250),s=n.text.slice(i-n.from,this.pos-n.from),a=s.search(gF(e,!1));return a<0?null:{from:i+a,to:this.pos,text:s.slice(a)}}get aborted(){return this.abortListeners==null}addEventListener(e,n,i){e=="abort"&&this.abortListeners&&(this.abortListeners.push(n),i&&i.onDocChange&&(this.abortOnDocChange=!0))}}function Xj(t){let e=Object.keys(t).join(""),n=/\w/.test(e);return n&&(e=e.replace(/\w/g,"")),`[${n?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function txe(t){let e=Object.create(null),n=Object.create(null);for(let{label:s}of t){e[s[0]]=!0;for(let a=1;a<s.length;a++)n[s[a]]=!0}let i=Xj(e)+Xj(n)+"*$";return[new RegExp("^"+i),new RegExp(i)]}function nxe(t){let e=t.map(s=>typeof s=="string"?{label:s}:s),[n,i]=e.every(s=>/^\w+$/.test(s.label))?[/\w*$/,/\w+$/]:txe(e);return s=>{let a=s.matchBefore(i);return a||s.explicit?{from:a?a.from:s.pos,options:e,validFor:n}:null}}class Qj{constructor(e,n,i,s){this.completion=e,this.source=n,this.match=i,this.score=s}}function jc(t){return t.selection.main.from}function gF(t,e){var n;let{source:i}=t,s=e&&i[0]!="^",a=i[i.length-1]!="$";return!s&&!a?t:new RegExp(`${s?"^":""}(?:${i})${a?"$":""}`,(n=t.flags)!==null&&n!==void 0?n:t.ignoreCase?"i":"")}const _F=Do.define();function ixe(t,e,n,i){let{main:s}=t.selection,a=n-s.from,o=i-s.from;return{...t.changeByRange(r=>{if(r!=s&&n!=i&&t.sliceDoc(r.from+a,r.from+o)!=t.sliceDoc(n,i))return{range:r};let c=t.toText(e);return{changes:{from:r.from+a,to:i==s.from?r.to:r.from+o,insert:c},range:je.cursor(r.from+a+c.length)}}),scrollIntoView:!0,userEvent:"input.complete"}}const Yj=new WeakMap;function sxe(t){if(!Array.isArray(t))return t;let e=Yj.get(t);return e||Yj.set(t,e=nxe(t)),e}const py=Rt.define(),jm=Rt.define();class axe{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let n=0;n<e.length;){let i=Es(e,n),s=bo(i);this.chars.push(i);let a=e.slice(n,n+s),o=a.toUpperCase();this.folded.push(Es(o==a?a.toLowerCase():o,0)),n+=s}this.astral=e.length!=this.chars.length}ret(e,n){return this.score=e,this.matched=n,this}match(e){if(this.pattern.length==0)return this.ret(-100,[]);if(e.length<this.pattern.length)return null;let{chars:n,folded:i,any:s,precise:a,byWord:o}=this;if(n.length==1){let C=Es(e,0),N=bo(C),L=N==e.length?0:-100;if(C!=n[0])if(C==i[0])L+=-200;else return null;return this.ret(L,[0,N])}let r=e.indexOf(this.pattern);if(r==0)return this.ret(e.length==this.pattern.length?0:-100,[0,this.pattern.length]);let c=n.length,d=0;if(r<0){for(let C=0,N=Math.min(e.length,200);C<N&&d<c;){let L=Es(e,C);(L==n[d]||L==i[d])&&(s[d++]=C),C+=bo(L)}if(d<c)return null}let f=0,p=0,g=!1,y=0,_=-1,v=-1,x=/[a-z]/.test(e),k=!0;for(let C=0,N=Math.min(e.length,200),L=0;C<N&&p<c;){let M=Es(e,C);r<0&&(f<c&&M==n[f]&&(a[f++]=C),y<c&&(M==n[y]||M==i[y]?(y==0&&(_=C),v=C+1,y++):y=0));let O,T=M<255?M>=48&&M<=57||M>=97&&M<=122?2:M>=65&&M<=90?1:0:(O=bk(M))!=O.toLowerCase()?1:O!=O.toUpperCase()?2:0;(!C||T==1&&x||L==0&&T!=0)&&(n[p]==M||i[p]==M&&(g=!0)?o[p++]=C:o.length&&(k=!1)),L=T,C+=bo(M)}return p==c&&o[0]==0&&k?this.result(-100+(g?-200:0),o,e):y==c&&_==0?this.ret(-200-e.length+(v==e.length?0:-100),[0,v]):r>-1?this.ret(-700-e.length,[r,r+this.pattern.length]):y==c?this.ret(-900-e.length,[_,v]):p==c?this.result(-100+(g?-200:0)+-700+(k?0:-1100),o,e):n.length==2?null:this.result((s[0]?-700:0)+-200+-1100,s,e)}result(e,n,i){let s=[],a=0;for(let o of n){let r=o+(this.astral?bo(Es(i,o)):1);a&&s[a-1]==o?s[a-1]=r:(s[a++]=o,s[a++]=r)}return this.ret(e-i.length,s)}}class oxe{constructor(e){this.pattern=e,this.matched=[],this.score=0,this.folded=e.toLowerCase()}match(e){if(e.length<this.pattern.length)return null;let n=e.slice(0,this.pattern.length),i=n==this.pattern?0:n.toLowerCase()==this.folded?-200:null;return i==null?null:(this.matched=[0,n.length],this.score=i+(e.length==this.pattern.length?0:-100),this)}}const Ei=tt.define({combine(t){return Fo(t,{activateOnTyping:!0,activateOnCompletion:()=>!1,activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:()=>"",optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:rxe,filterStrict:!1,compareCompletions:(e,n)=>(e.sortText||e.label).localeCompare(n.sortText||n.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(e,n)=>e&&n,closeOnBlur:(e,n)=>e&&n,icons:(e,n)=>e&&n,tooltipClass:(e,n)=>i=>Jj(e(i),n(i)),optionClass:(e,n)=>i=>Jj(e(i),n(i)),addToOptions:(e,n)=>e.concat(n),filterStrict:(e,n)=>e||n})}});function Jj(t,e){return t?e?t+" "+e:t:e}function rxe(t,e,n,i,s,a){let o=t.textDirection==Un.RTL,r=o,c=!1,d="top",f,p,g=e.left-s.left,y=s.right-e.right,_=i.right-i.left,v=i.bottom-i.top;if(r&&g<Math.min(_,y)?r=!1:!r&&y<Math.min(_,g)&&(r=!0),_<=(r?g:y))f=Math.max(s.top,Math.min(n.top,s.bottom-v))-e.top,p=Math.min(400,r?g:y);else{c=!0,p=Math.min(400,(o?e.right:s.right-e.left)-30);let C=s.bottom-e.bottom;C>=v||C>e.top?f=n.bottom-e.top:(d="bottom",f=e.bottom-n.top)}let x=(e.bottom-e.top)/a.offsetHeight,k=(e.right-e.left)/a.offsetWidth;return{style:`${d}: ${f/x}px; max-width: ${p/k}px`,class:"cm-completionInfo-"+(c?o?"left-narrow":"right-narrow":r?"left":"right")}}function lxe(t){let e=t.addToOptions.slice();return t.icons&&e.push({render(n){let i=document.createElement("div");return i.classList.add("cm-completionIcon"),n.type&&i.classList.add(...n.type.split(/\s+/g).map(s=>"cm-completionIcon-"+s)),i.setAttribute("aria-hidden","true"),i},position:20}),e.push({render(n,i,s,a){let o=document.createElement("span");o.className="cm-completionLabel";let r=n.displayLabel||n.label,c=0;for(let d=0;d<a.length;){let f=a[d++],p=a[d++];f>c&&o.appendChild(document.createTextNode(r.slice(c,f)));let g=o.appendChild(document.createElement("span"));g.appendChild(document.createTextNode(r.slice(f,p))),g.className="cm-completionMatchedText",c=p}return c<r.length&&o.appendChild(document.createTextNode(r.slice(c))),o},position:50},{render(n){if(!n.detail)return null;let i=document.createElement("span");return i.className="cm-completionDetail",i.textContent=n.detail,i},position:80}),e.sort((n,i)=>n.position-i.position).map(n=>n.render)}function Z1(t,e,n){if(t<=n)return{from:0,to:t};if(e<0&&(e=0),e<=t>>1){let s=Math.floor(e/n);return{from:s*n,to:(s+1)*n}}let i=Math.floor((t-e)/n);return{from:t-(i+1)*n,to:t-i*n}}class cxe{constructor(e,n,i){this.view=e,this.stateField=n,this.applyCompletion=i,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:()=>this.measureInfo(),write:c=>this.placeInfo(c),key:this},this.space=null,this.currentClass="";let s=e.state.field(n),{options:a,selected:o}=s.open,r=e.state.facet(Ei);this.optionContent=lxe(r),this.optionClass=r.optionClass,this.tooltipClass=r.tooltipClass,this.range=Z1(a.length,o,r.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.updateTooltipClass(e.state),this.dom.addEventListener("mousedown",c=>{let{options:d}=e.state.field(n).open;for(let f=c.target,p;f&&f!=this.dom;f=f.parentNode)if(f.nodeName=="LI"&&(p=/-(\d+)$/.exec(f.id))&&+p[1]<d.length){this.applyCompletion(e,d[+p[1]]),c.preventDefault();return}}),this.dom.addEventListener("focusout",c=>{let d=e.state.field(this.stateField,!1);d&&d.tooltip&&e.state.facet(Ei).closeOnBlur&&c.relatedTarget!=e.contentDOM&&e.dispatch({effects:jm.of(null)})}),this.showOptions(a,s.id)}mount(){this.updateSel()}showOptions(e,n){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(e,n,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(e){var n;let i=e.state.field(this.stateField),s=e.startState.field(this.stateField);if(this.updateTooltipClass(e.state),i!=s){let{options:a,selected:o,disabled:r}=i.open;(!s.open||s.open.options!=a)&&(this.range=Z1(a.length,o,e.state.facet(Ei).maxRenderedOptions),this.showOptions(a,i.id)),this.updateSel(),r!=((n=s.open)===null||n===void 0?void 0:n.disabled)&&this.dom.classList.toggle("cm-tooltip-autocomplete-disabled",!!r)}}updateTooltipClass(e){let n=this.tooltipClass(e);if(n!=this.currentClass){for(let i of this.currentClass.split(" "))i&&this.dom.classList.remove(i);for(let i of n.split(" "))i&&this.dom.classList.add(i);this.currentClass=n}}positioned(e){this.space=e,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let e=this.view.state.field(this.stateField),n=e.open;(n.selected>-1&&n.selected<this.range.from||n.selected>=this.range.to)&&(this.range=Z1(n.options.length,n.selected,this.view.state.facet(Ei).maxRenderedOptions),this.showOptions(n.options,e.id));let i=this.updateSelectedOption(n.selected);if(i){this.destroyInfo();let{completion:s}=n.options[n.selected],{info:a}=s;if(!a)return;let o=typeof a=="string"?document.createTextNode(a):a(s);if(!o)return;"then"in o?o.then(r=>{r&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(r,s)}).catch(r=>Ds(this.view.state,r,"completion info")):(this.addInfoPane(o,s),i.setAttribute("aria-describedby",this.info.id))}}addInfoPane(e,n){this.destroyInfo();let i=this.info=document.createElement("div");if(i.className="cm-tooltip cm-completionInfo",i.id="cm-completionInfo-"+Math.floor(Math.random()*65535).toString(16),e.nodeType!=null)i.appendChild(e),this.infoDestroy=null;else{let{dom:s,destroy:a}=e;i.appendChild(s),this.infoDestroy=a||null}this.dom.appendChild(i),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(e){let n=null;for(let i=this.list.firstChild,s=this.range.from;i;i=i.nextSibling,s++)i.nodeName!="LI"||!i.id?s--:s==e?i.hasAttribute("aria-selected")||(i.setAttribute("aria-selected","true"),n=i):i.hasAttribute("aria-selected")&&(i.removeAttribute("aria-selected"),i.removeAttribute("aria-describedby"));return n&&dxe(this.list,n),n}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let n=this.dom.getBoundingClientRect(),i=this.info.getBoundingClientRect(),s=e.getBoundingClientRect(),a=this.space;if(!a){let o=this.dom.ownerDocument.documentElement;a={left:0,top:0,right:o.clientWidth,bottom:o.clientHeight}}return s.top>Math.min(a.bottom,n.bottom)-10||s.bottom<Math.max(a.top,n.top)+10?null:this.view.state.facet(Ei).positionInfo(this.view,n,s,i,a,this.dom)}placeInfo(e){this.info&&(e?(e.style&&(this.info.style.cssText=e.style),this.info.className="cm-tooltip cm-completionInfo "+(e.class||"")):this.info.style.cssText="top: -1e6px")}createListBox(e,n,i){const s=document.createElement("ul");s.id=n,s.setAttribute("role","listbox"),s.setAttribute("aria-expanded","true"),s.setAttribute("aria-label",this.view.state.phrase("Completions")),s.addEventListener("mousedown",o=>{o.target==s&&o.preventDefault()});let a=null;for(let o=i.from;o<i.to;o++){let{completion:r,match:c}=e[o],{section:d}=r;if(d){let g=typeof d=="string"?d:d.name;if(g!=a&&(o>i.from||i.from==0))if(a=g,typeof d!="string"&&d.header)s.appendChild(d.header(d));else{let y=s.appendChild(document.createElement("completion-section"));y.textContent=g}}const f=s.appendChild(document.createElement("li"));f.id=n+"-"+o,f.setAttribute("role","option");let p=this.optionClass(r);p&&(f.className=p);for(let g of this.optionContent){let y=g(r,this.view.state,this.view,c);y&&f.appendChild(y)}}return i.from&&s.classList.add("cm-completionListIncompleteTop"),i.to<e.length&&s.classList.add("cm-completionListIncompleteBottom"),s}destroyInfo(){this.info&&(this.infoDestroy&&this.infoDestroy(),this.info.remove(),this.info=null)}destroy(){this.destroyInfo()}}function uxe(t,e){return n=>new cxe(n,t,e)}function dxe(t,e){let n=t.getBoundingClientRect(),i=e.getBoundingClientRect(),s=n.height/t.offsetHeight;i.top<n.top?t.scrollTop-=(n.top-i.top)/s:i.bottom>n.bottom&&(t.scrollTop+=(i.bottom-n.bottom)/s)}function Zj(t){return(t.boost||0)*100+(t.apply?10:0)+(t.info?5:0)+(t.type?1:0)}function hxe(t,e){let n=[],i=null,s=null,a=f=>{n.push(f);let{section:p}=f.completion;if(p){i||(i=[]);let g=typeof p=="string"?p:p.name;i.some(y=>y.name==g)||i.push(typeof p=="string"?{name:g}:p)}},o=e.facet(Ei);for(let f of t)if(f.hasResult()){let p=f.result.getMatch;if(f.result.filter===!1)for(let g of f.result.options)a(new Qj(g,f.source,p?p(g):[],1e9-n.length));else{let g=e.sliceDoc(f.from,f.to),y,_=o.filterStrict?new oxe(g):new axe(g);for(let v of f.result.options)if(y=_.match(v.label)){let x=v.displayLabel?p?p(v,y.matched):[]:y.matched,k=y.score+(v.boost||0);if(a(new Qj(v,f.source,x,k)),typeof v.section=="object"&&v.section.rank==="dynamic"){let{name:C}=v.section;s||(s=Object.create(null)),s[C]=Math.max(k,s[C]||-1e9)}}}}if(i){let f=Object.create(null),p=0,g=(y,_)=>(y.rank==="dynamic"&&_.rank==="dynamic"?s[_.name]-s[y.name]:0)||(typeof y.rank=="number"?y.rank:1e9)-(typeof _.rank=="number"?_.rank:1e9)||(y.name<_.name?-1:1);for(let y of i.sort(g))p-=1e5,f[y.name]=p;for(let y of n){let{section:_}=y.completion;_&&(y.score+=f[typeof _=="string"?_:_.name])}}let r=[],c=null,d=o.compareCompletions;for(let f of n.sort((p,g)=>g.score-p.score||d(p.completion,g.completion))){let p=f.completion;!c||c.label!=p.label||c.detail!=p.detail||c.type!=null&&p.type!=null&&c.type!=p.type||c.apply!=p.apply||c.boost!=p.boost?r.push(f):Zj(f.completion)>Zj(c)&&(r[r.length-1]=f),c=f.completion}return r}class id{constructor(e,n,i,s,a,o){this.options=e,this.attrs=n,this.tooltip=i,this.timestamp=s,this.selected=a,this.disabled=o}setSelected(e,n){return e==this.selected||e>=this.options.length?this:new id(this.options,eR(n,e),this.tooltip,this.timestamp,e,this.disabled)}static build(e,n,i,s,a,o){if(s&&!o&&e.some(d=>d.isPending))return s.setDisabled();let r=hxe(e,n);if(!r.length)return s&&e.some(d=>d.isPending)?s.setDisabled():null;let c=n.facet(Ei).selectOnOpen?0:-1;if(s&&s.selected!=c&&s.selected!=-1){let d=s.options[s.selected].completion;for(let f=0;f<r.length;f++)if(r[f].completion==d){c=f;break}}return new id(r,eR(i,c),{pos:e.reduce((d,f)=>f.hasResult()?Math.min(d,f.from):d,1e8),create:yxe,above:a.aboveCursor},s?s.timestamp:Date.now(),c,!1)}map(e){return new id(this.options,this.attrs,{...this.tooltip,pos:e.mapPos(this.tooltip.pos)},this.timestamp,this.selected,this.disabled)}setDisabled(){return new id(this.options,this.attrs,this.tooltip,this.timestamp,this.selected,!0)}}class gy{constructor(e,n,i){this.active=e,this.id=n,this.open=i}static start(){return new gy(gxe,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:n}=e,i=n.facet(Ei),a=(i.override||n.languageDataAt("autocomplete",jc(n)).map(sxe)).map(c=>(this.active.find(f=>f.source==c)||new xa(c,this.active.some(f=>f.state!=0)?1:0)).update(e,i));a.length==this.active.length&&a.every((c,d)=>c==this.active[d])&&(a=this.active);let o=this.open,r=e.effects.some(c=>c.is(Wk));o&&e.docChanged&&(o=o.map(e.changes)),e.selection||a.some(c=>c.hasResult()&&e.changes.touchesRange(c.from,c.to))||!fxe(a,this.active)||r?o=id.build(a,n,this.id,o,i,r):o&&o.disabled&&!a.some(c=>c.isPending)&&(o=null),!o&&a.every(c=>!c.isPending)&&a.some(c=>c.hasResult())&&(a=a.map(c=>c.hasResult()?new xa(c.source,0):c));for(let c of e.effects)c.is(bF)&&(o=o&&o.setSelected(c.value,this.id));return a==this.active&&o==this.open?this:new gy(a,this.id,o)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?mxe:pxe}}function fxe(t,e){if(t==e)return!0;for(let n=0,i=0;;){for(;n<t.length&&!t[n].hasResult();)n++;for(;i<e.length&&!e[i].hasResult();)i++;let s=n==t.length,a=i==e.length;if(s||a)return s==a;if(t[n++].result!=e[i++].result)return!1}}const mxe={"aria-autocomplete":"list"},pxe={};function eR(t,e){let n={"aria-autocomplete":"list","aria-haspopup":"listbox","aria-controls":t};return e>-1&&(n["aria-activedescendant"]=t+"-"+e),n}const gxe=[];function yF(t,e){if(t.isUserEvent("input.complete")){let i=t.annotation(_F);if(i&&e.activateOnCompletion(i))return 12}let n=t.isUserEvent("input.type");return n&&e.activateOnTyping?5:n?1:t.isUserEvent("delete.backward")?2:t.selection?8:t.docChanged?16:0}class xa{constructor(e,n,i=!1){this.source=e,this.state=n,this.explicit=i}hasResult(){return!1}get isPending(){return this.state==1}update(e,n){let i=yF(e,n),s=this;(i&8||i&16&&this.touches(e))&&(s=new xa(s.source,0)),i&4&&s.state==0&&(s=new xa(this.source,1)),s=s.updateFor(e,i);for(let a of e.effects)if(a.is(py))s=new xa(s.source,1,a.value);else if(a.is(jm))s=new xa(s.source,0);else if(a.is(Wk))for(let o of a.value)o.source==s.source&&(s=o);return s}updateFor(e,n){return this.map(e.changes)}map(e){return this}touches(e){return e.changes.touchesRange(jc(e.state))}}class _d extends xa{constructor(e,n,i,s,a,o){super(e,3,n),this.limit=i,this.result=s,this.from=a,this.to=o}hasResult(){return!0}updateFor(e,n){var i;if(!(n&3))return this.map(e.changes);let s=this.result;s.map&&!e.changes.empty&&(s=s.map(s,e.changes));let a=e.changes.mapPos(this.from),o=e.changes.mapPos(this.to,1),r=jc(e.state);if(r>o||!s||n&2&&(jc(e.startState)==this.from||r<this.limit))return new xa(this.source,n&4?1:0);let c=e.changes.mapPos(this.limit);return _xe(s.validFor,e.state,a,o)?new _d(this.source,this.explicit,c,s,a,o):s.update&&(s=s.update(s,a,o,new pF(e.state,r,!1)))?new _d(this.source,this.explicit,c,s,s.from,(i=s.to)!==null&&i!==void 0?i:jc(e.state)):new xa(this.source,1,this.explicit)}map(e){return e.empty?this:(this.result.map?this.result.map(this.result,e):this.result)?new _d(this.source,this.explicit,e.mapPos(this.limit),this.result,e.mapPos(this.from),e.mapPos(this.to,1)):new xa(this.source,0)}touches(e){return e.changes.touchesRange(this.from,this.to)}}function _xe(t,e,n,i){if(!t)return!1;let s=e.sliceDoc(n,i);return typeof t=="function"?t(s,n,i,e):gF(t,!0).test(s)}const Wk=Rt.define({map(t,e){return t.map(n=>n.map(e))}}),bF=Rt.define(),js=$i.define({create(){return gy.start()},update(t,e){return t.update(e)},provide:t=>[Pk.from(t,e=>e.tooltip),Xe.contentAttributes.from(t,e=>e.attrs)]});function Gk(t,e){const n=e.completion.apply||e.completion.label;let i=t.state.field(js).active.find(s=>s.source==e.source);return i instanceof _d?(typeof n=="string"?t.dispatch({...ixe(t.state,n,i.from,i.to),annotations:_F.of(e.completion)}):n(t,e.completion,i.from,i.to),!0):!1}const yxe=uxe(js,Gk);function B_(t,e="option"){return n=>{let i=n.state.field(js,!1);if(!i||!i.open||i.open.disabled||Date.now()-i.open.timestamp<n.state.facet(Ei).interactionDelay)return!1;let s=1,a;e=="page"&&(a=Q6(n,i.open.tooltip))&&(s=Math.max(2,Math.floor(a.dom.offsetHeight/a.dom.querySelector("li").offsetHeight)-1));let{length:o}=i.open.options,r=i.open.selected>-1?i.open.selected+s*(t?1:-1):t?0:o-1;return r<0?r=e=="page"?0:o-1:r>=o&&(r=e=="page"?o-1:0),n.dispatch({effects:bF.of(r)}),!0}}const bxe=t=>{let e=t.state.field(js,!1);return t.state.readOnly||!e||!e.open||e.open.selected<0||e.open.disabled||Date.now()-e.open.timestamp<t.state.facet(Ei).interactionDelay?!1:Gk(t,e.open.options[e.open.selected])},e2=t=>t.state.field(js,!1)?(t.dispatch({effects:py.of(!0)}),!0):!1,vxe=t=>{let e=t.state.field(js,!1);return!e||!e.active.some(n=>n.state!=0)?!1:(t.dispatch({effects:jm.of(null)}),!0)};class xxe{constructor(e,n){this.active=e,this.context=n,this.time=Date.now(),this.updates=[],this.done=void 0}}const Sxe=50,wxe=1e3,kxe=li.fromClass(class{constructor(t){this.view=t,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(let e of t.state.field(js).active)e.isPending&&this.startQuery(e)}update(t){let e=t.state.field(js),n=t.state.facet(Ei);if(!t.selectionSet&&!t.docChanged&&t.startState.field(js)==e)return;let i=t.transactions.some(a=>{let o=yF(a,n);return o&8||(a.selection||a.docChanged)&&!(o&3)});for(let a=0;a<this.running.length;a++){let o=this.running[a];if(i||o.context.abortOnDocChange&&t.docChanged||o.updates.length+t.transactions.length>Sxe&&Date.now()-o.time>wxe){for(let r of o.context.abortListeners)try{r()}catch(c){Ds(this.view.state,c)}o.context.abortListeners=null,this.running.splice(a--,1)}else o.updates.push(...t.transactions)}this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),t.transactions.some(a=>a.effects.some(o=>o.is(py)))&&(this.pendingStart=!0);let s=this.pendingStart?50:n.activateOnTypingDelay;if(this.debounceUpdate=e.active.some(a=>a.isPending&&!this.running.some(o=>o.active.source==a.source))?setTimeout(()=>this.startUpdate(),s):-1,this.composing!=0)for(let a of t.transactions)a.isUserEvent("input.type")?this.composing=2:this.composing==2&&a.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;let{state:t}=this.view,e=t.field(js);for(let n of e.active)n.isPending&&!this.running.some(i=>i.active.source==n.source)&&this.startQuery(n);this.running.length&&e.open&&e.open.disabled&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(Ei).updateSyncTime))}startQuery(t){let{state:e}=this.view,n=jc(e),i=new pF(e,n,t.explicit,this.view),s=new xxe(t,i);this.running.push(s),Promise.resolve(t.source(i)).then(a=>{s.context.aborted||(s.done=a||null,this.scheduleAccept())},a=>{this.view.dispatch({effects:jm.of(null)}),Ds(this.view.state,a)})}scheduleAccept(){this.running.every(t=>t.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(Ei).updateSyncTime))}accept(){var t;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],n=this.view.state.facet(Ei),i=this.view.state.field(js);for(let s=0;s<this.running.length;s++){let a=this.running[s];if(a.done===void 0)continue;if(this.running.splice(s--,1),a.done){let r=jc(a.updates.length?a.updates[0].startState:this.view.state),c=Math.min(r,a.done.from+(a.active.explicit?0:1)),d=new _d(a.active.source,a.active.explicit,c,a.done,a.done.from,(t=a.done.to)!==null&&t!==void 0?t:r);for(let f of a.updates)d=d.update(f,n);if(d.hasResult()){e.push(d);continue}}let o=i.active.find(r=>r.source==a.active.source);if(o&&o.isPending)if(a.done==null){let r=new xa(a.active.source,0);for(let c of a.updates)r=r.update(c,n);r.isPending||e.push(r)}else this.startQuery(o)}(e.length||i.open&&i.open.disabled)&&this.view.dispatch({effects:Wk.of(e)})}},{eventHandlers:{blur(t){let e=this.view.state.field(js,!1);if(e&&e.tooltip&&this.view.state.facet(Ei).closeOnBlur){let n=e.open&&Q6(this.view,e.open.tooltip);(!n||!n.dom.contains(t.relatedTarget))&&setTimeout(()=>this.view.dispatch({effects:jm.of(null)}),10)}},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:py.of(!1)}),20),this.composing=0}}}),Cxe=typeof navigator=="object"&&/Win/.test(navigator.platform),Axe=Qc.highest(Xe.domEventHandlers({keydown(t,e){let n=e.state.field(js,!1);if(!n||!n.open||n.open.disabled||n.open.selected<0||t.key.length>1||t.ctrlKey&&!(Cxe&&t.altKey)||t.metaKey)return!1;let i=n.open.options[n.open.selected],s=n.active.find(o=>o.source==i.source),a=i.completion.commitCharacters||s.result.commitCharacters;return a&&a.indexOf(t.key)>-1&&Gk(e,i),!1}})),Nxe=Xe.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li, & > completion-section":{padding:"1px 3px",lineHeight:1.2},"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer"},"& > completion-section":{display:"list-item",borderBottom:"1px solid silver",paddingLeft:"0.5em",opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"···"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"400px",boxSizing:"border-box",whiteSpace:"pre-line"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:"30px"},".cm-completionInfo.cm-completionInfo-right-narrow":{left:"30px"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'ƒ'"}},".cm-completionIcon-class":{"&:after":{content:"'○'"}},".cm-completionIcon-interface":{"&:after":{content:"'◌'"}},".cm-completionIcon-variable":{"&:after":{content:"'𝑥'"}},".cm-completionIcon-constant":{"&:after":{content:"'𝐶'"}},".cm-completionIcon-type":{"&:after":{content:"'𝑡'"}},".cm-completionIcon-enum":{"&:after":{content:"''"}},".cm-completionIcon-property":{"&:after":{content:"'□'"}},".cm-completionIcon-keyword":{"&:after":{content:"'🔑︎'"}},".cm-completionIcon-namespace":{"&:after":{content:"'▢'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}}),Rm={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},Cc=Rt.define({map(t,e){let n=e.mapPos(t,-1,ps.TrackAfter);return n??void 0}}),$k=new class extends Bc{};$k.startSide=1;$k.endSide=-1;const vF=$i.define({create(){return cn.empty},update(t,e){if(t=t.map(e.changes),e.selection){let n=e.state.doc.lineAt(e.selection.main.head);t=t.update({filter:i=>i>=n.from&&i<=n.to})}for(let n of e.effects)n.is(Cc)&&(t=t.update({add:[$k.range(n.value,n.value+1)]}));return t}});function Txe(){return[Lxe,vF]}const t2="()[]{}<>«»»«[]{}";function xF(t){for(let e=0;e<t2.length;e+=2)if(t2.charCodeAt(e)==t)return t2.charAt(e+1);return bk(t<128?t:t+1)}function SF(t,e){return t.languageDataAt("closeBrackets",e)[0]||Rm}const Mxe=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),Lxe=Xe.inputHandler.of((t,e,n,i)=>{if((Mxe?t.composing:t.compositionStarted)||t.state.readOnly)return!1;let s=t.state.selection.main;if(i.length>2||i.length==2&&bo(Es(i,0))==1||e!=s.from||n!=s.to)return!1;let a=Exe(t.state,i);return a?(t.dispatch(a),!0):!1}),Oxe=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let i=SF(t,t.selection.main.head).brackets||Rm.brackets,s=null,a=t.changeByRange(o=>{if(o.empty){let r=jxe(t.doc,o.head);for(let c of i)if(c==r&&ub(t.doc,o.head)==xF(Es(c,0)))return{changes:{from:o.head-c.length,to:o.head+c.length},range:je.cursor(o.head-c.length)}}return{range:s=o}});return s||e(t.update(a,{scrollIntoView:!0,userEvent:"delete.backward"})),!s},Pxe=[{key:"Backspace",run:Oxe}];function Exe(t,e){let n=SF(t,t.selection.main.head),i=n.brackets||Rm.brackets;for(let s of i){let a=xF(Es(s,0));if(e==s)return a==s?Fxe(t,s,i.indexOf(s+s+s)>-1,n):Rxe(t,s,a,n.before||Rm.before);if(e==a&&wF(t,t.selection.main.from))return Dxe(t,s,a)}return null}function wF(t,e){let n=!1;return t.field(vF).between(0,t.doc.length,i=>{i==e&&(n=!0)}),n}function ub(t,e){let n=t.sliceString(e,e+2);return n.slice(0,bo(Es(n,0)))}function jxe(t,e){let n=t.sliceString(e-2,e);return bo(Es(n,0))==n.length?n:n.slice(1)}function Rxe(t,e,n,i){let s=null,a=t.changeByRange(o=>{if(!o.empty)return{changes:[{insert:e,from:o.from},{insert:n,from:o.to}],effects:Cc.of(o.to+e.length),range:je.range(o.anchor+e.length,o.head+e.length)};let r=ub(t.doc,o.head);return!r||/\s/.test(r)||i.indexOf(r)>-1?{changes:{insert:e+n,from:o.head},effects:Cc.of(o.head+e.length),range:je.cursor(o.head+e.length)}:{range:s=o}});return s?null:t.update(a,{scrollIntoView:!0,userEvent:"input.type"})}function Dxe(t,e,n){let i=null,s=t.changeByRange(a=>a.empty&&ub(t.doc,a.head)==n?{changes:{from:a.head,to:a.head+n.length,insert:n},range:je.cursor(a.head+n.length)}:i={range:a});return i?null:t.update(s,{scrollIntoView:!0,userEvent:"input.type"})}function Fxe(t,e,n,i){let s=i.stringPrefixes||Rm.stringPrefixes,a=null,o=t.changeByRange(r=>{if(!r.empty)return{changes:[{insert:e,from:r.from},{insert:e,from:r.to}],effects:Cc.of(r.to+e.length),range:je.range(r.anchor+e.length,r.head+e.length)};let c=r.head,d=ub(t.doc,c),f;if(d==e){if(tR(t,c))return{changes:{insert:e+e,from:c},effects:Cc.of(c+e.length),range:je.cursor(c+e.length)};if(wF(t,c)){let g=n&&t.sliceDoc(c,c+e.length*3)==e+e+e?e+e+e:e;return{changes:{from:c,to:c+g.length,insert:g},range:je.cursor(c+g.length)}}}else{if(n&&t.sliceDoc(c-2*e.length,c)==e+e&&(f=nR(t,c-2*e.length,s))>-1&&tR(t,f))return{changes:{insert:e+e+e+e,from:c},effects:Cc.of(c+e.length),range:je.cursor(c+e.length)};if(t.charCategorizer(c)(d)!=Hn.Word&&nR(t,c,s)>-1&&!Ixe(t,c,e,s))return{changes:{insert:e+e,from:c},effects:Cc.of(c+e.length),range:je.cursor(c+e.length)}}return{range:a=r}});return a?null:t.update(o,{scrollIntoView:!0,userEvent:"input.type"})}function tR(t,e){let n=cs(t).resolveInner(e+1);return n.parent&&n.from==e}function Ixe(t,e,n,i){let s=cs(t).resolveInner(e,-1),a=i.reduce((o,r)=>Math.max(o,r.length),0);for(let o=0;o<5;o++){let r=t.sliceDoc(s.from,Math.min(s.to,s.from+n.length+a)),c=r.indexOf(n);if(!c||c>-1&&i.indexOf(r.slice(0,c))>-1){let f=s.firstChild;for(;f&&f.from==s.from&&f.to-f.from>n.length+c;){if(t.sliceDoc(f.to-n.length,f.to)==n)return!1;f=f.firstChild}return!0}let d=s.to==e&&s.parent;if(!d)break;s=d}return!1}function nR(t,e,n){let i=t.charCategorizer(e);if(i(t.sliceDoc(e-1,e))!=Hn.Word)return e;for(let s of n){let a=e-s.length;if(t.sliceDoc(a,e)==s&&i(t.sliceDoc(a-1,a))!=Hn.Word)return a}return-1}function Bxe(t={}){return[Axe,js,Ei.of(t),kxe,Uxe,Nxe]}const kF=[{key:"Ctrl-Space",run:e2},{mac:"Alt-`",run:e2},{mac:"Alt-i",run:e2},{key:"Escape",run:vxe},{key:"ArrowDown",run:B_(!0)},{key:"ArrowUp",run:B_(!1)},{key:"PageDown",run:B_(!0,"page")},{key:"PageUp",run:B_(!1,"page")},{key:"Enter",run:bxe}],Uxe=Qc.highest(bp.computeN([Ei],t=>t.facet(Ei).defaultKeymap?[kF]:[]));class iR{constructor(e,n,i){this.from=e,this.to=n,this.diagnostic=i}}class _c{constructor(e,n,i){this.diagnostics=e,this.panel=n,this.selected=i}static init(e,n,i){let s=i.facet(Dm).markerFilter;s&&(e=s(e,i));let a=e.slice().sort((y,_)=>y.from-_.from||y.to-_.to),o=new Tr,r=[],c=0,d=i.doc.iter(),f=0,p=i.doc.length;for(let y=0;;){let _=y==a.length?null:a[y];if(!_&&!r.length)break;let v,x;if(r.length)v=c,x=r.reduce((N,L)=>Math.min(N,L.to),_&&_.from>v?_.from:1e8);else{if(v=_.from,v>p)break;x=_.to,r.push(_),y++}for(;y<a.length;){let N=a[y];if(N.from==v&&(N.to>N.from||N.to==v))r.push(N),y++,x=Math.min(N.to,x);else{x=Math.min(N.from,x);break}}x=Math.min(x,p);let k=!1;if(r.some(N=>N.from==v&&(N.to==x||x==p))&&(k=v==x,!k&&x-v<10)){let N=v-(f+d.value.length);N>0&&(d.next(N),f=v);for(let L=v;;){if(L>=x){k=!0;break}if(!d.lineBreak&&f+d.value.length>L)break;L=f+d.value.length,f+=d.value.length,d.next()}}let C=Zxe(r);if(k)o.add(v,v,xt.widget({widget:new Xxe(C),diagnostics:r.slice()}));else{let N=r.reduce((L,M)=>M.markClass?L+" "+M.markClass:L,"");o.add(v,x,xt.mark({class:"cm-lintRange cm-lintRange-"+C+N,diagnostics:r.slice(),inclusiveEnd:r.some(L=>L.to>x)}))}if(c=x,c==p)break;for(let N=0;N<r.length;N++)r[N].to<=c&&r.splice(N--,1)}let g=o.finish();return new _c(g,n,Dd(g))}}function Dd(t,e=null,n=0){let i=null;return t.between(n,1e9,(s,a,{spec:o})=>{if(!(e&&o.diagnostics.indexOf(e)<0))if(!i)i=new iR(s,a,e||o.diagnostics[0]);else{if(o.diagnostics.indexOf(i.diagnostic)<0)return!1;i=new iR(i.from,a,i.diagnostic)}}),i}function qxe(t,e){let n=e.pos,i=e.end||n,s=t.state.facet(Dm).hideOn(t,n,i);if(s!=null)return s;let a=t.startState.doc.lineAt(e.pos);return!!(t.effects.some(o=>o.is(CF))||t.changes.touchesRange(a.from,Math.max(a.to,i)))}function zxe(t,e){return t.field(ta,!1)?e:e.concat(Rt.appendConfig.of(e1e))}const CF=Rt.define(),Xk=Rt.define(),AF=Rt.define(),ta=$i.define({create(){return new _c(xt.none,null,null)},update(t,e){if(e.docChanged&&t.diagnostics.size){let n=t.diagnostics.map(e.changes),i=null,s=t.panel;if(t.selected){let a=e.changes.mapPos(t.selected.from,1);i=Dd(n,t.selected.diagnostic,a)||Dd(n,null,a)}!n.size&&s&&e.state.facet(Dm).autoPanel&&(s=null),t=new _c(n,s,i)}for(let n of e.effects)if(n.is(CF)){let i=e.state.facet(Dm).autoPanel?n.value.length?Fm.open:null:t.panel;t=_c.init(n.value,i,e.state)}else n.is(Xk)?t=new _c(t.diagnostics,n.value?Fm.open:null,t.selected):n.is(AF)&&(t=new _c(t.diagnostics,t.panel,n.value));return t},provide:t=>[Mm.from(t,e=>e.panel),Xe.decorations.from(t,e=>e.diagnostics)]}),Kxe=xt.mark({class:"cm-lintRange cm-lintRange-active"});function Vxe(t,e,n){let{diagnostics:i}=t.state.field(ta),s,a=-1,o=-1;i.between(e-(n<0?1:0),e+(n>0?1:0),(c,d,{spec:f})=>{if(e>=c&&e<=d&&(c==d||(e>c||n>0)&&(e<d||n<0)))return s=f.diagnostics,a=c,o=d,!1});let r=t.state.facet(Dm).tooltipFilter;return s&&r&&(s=r(s,t.state)),s?{pos:a,end:o,above:t.state.doc.lineAt(a).to<o,create(){return{dom:Hxe(t,s)}}}:null}function Hxe(t,e){return Tn("ul",{class:"cm-tooltip-lint"},e.map(n=>TF(t,n,!1)))}const Wxe=t=>{let e=t.state.field(ta,!1);(!e||!e.panel)&&t.dispatch({effects:zxe(t.state,[Xk.of(!0)])});let n=Tm(t,Fm.open);return n&&n.dom.querySelector(".cm-panel-lint ul").focus(),!0},sR=t=>{let e=t.state.field(ta,!1);return!e||!e.panel?!1:(t.dispatch({effects:Xk.of(!1)}),!0)},Gxe=t=>{let e=t.state.field(ta,!1);if(!e)return!1;let n=t.state.selection.main,i=e.diagnostics.iter(n.to+1);return!i.value&&(i=e.diagnostics.iter(0),!i.value||i.from==n.from&&i.to==n.to)?!1:(t.dispatch({selection:{anchor:i.from,head:i.to},scrollIntoView:!0}),!0)},$xe=[{key:"Mod-Shift-m",run:Wxe,preventDefault:!0},{key:"F8",run:Gxe}],Dm=tt.define({combine(t){return{sources:t.map(e=>e.source).filter(e=>e!=null),...Fo(t.map(e=>e.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null,hideOn:()=>null},{delay:Math.max,markerFilter:aR,tooltipFilter:aR,needsRefresh:(e,n)=>e?n?i=>e(i)||n(i):e:n,hideOn:(e,n)=>e?n?(i,s,a)=>e(i,s,a)||n(i,s,a):e:n,autoPanel:(e,n)=>e||n})}}});function aR(t,e){return t?e?(n,i)=>e(t(n,i),i):t:e}function NF(t){let e=[];if(t)e:for(let{name:n}of t){for(let i=0;i<n.length;i++){let s=n[i];if(/[a-zA-Z]/.test(s)&&!e.some(a=>a.toLowerCase()==s.toLowerCase())){e.push(s);continue e}}e.push("")}return e}function TF(t,e,n){var i;let s=n?NF(e.actions):[];return Tn("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},Tn("span",{class:"cm-diagnosticText"},e.renderMessage?e.renderMessage(t):e.message),(i=e.actions)===null||i===void 0?void 0:i.map((a,o)=>{let r=!1,c=y=>{if(y.preventDefault(),r)return;r=!0;let _=Dd(t.state.field(ta).diagnostics,e);_&&a.apply(t,_.from,_.to)},{name:d}=a,f=s[o]?d.indexOf(s[o]):-1,p=f<0?d:[d.slice(0,f),Tn("u",d.slice(f,f+1)),d.slice(f+1)],g=a.markClass?" "+a.markClass:"";return Tn("button",{type:"button",class:"cm-diagnosticAction"+g,onclick:c,onmousedown:c,"aria-label":` Action: ${d}${f<0?"":` (access key "${s[o]})"`}.`},p)}),e.source&&Tn("div",{class:"cm-diagnosticSource"},e.source))}class Xxe extends Er{constructor(e){super(),this.sev=e}eq(e){return e.sev==this.sev}toDOM(){return Tn("span",{class:"cm-lintPoint cm-lintPoint-"+this.sev})}}class oR{constructor(e,n){this.diagnostic=n,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=TF(e,n,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class Fm{constructor(e){this.view=e,this.items=[];let n=s=>{if(s.keyCode==27)sR(this.view),this.view.focus();else if(s.keyCode==38||s.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(s.keyCode==40||s.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(s.keyCode==36)this.moveSelection(0);else if(s.keyCode==35)this.moveSelection(this.items.length-1);else if(s.keyCode==13)this.view.focus();else if(s.keyCode>=65&&s.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:a}=this.items[this.selectedIndex],o=NF(a.actions);for(let r=0;r<o.length;r++)if(o[r].toUpperCase().charCodeAt(0)==s.keyCode){let c=Dd(this.view.state.field(ta).diagnostics,a);c&&a.actions[r].apply(e,c.from,c.to)}}else return;s.preventDefault()},i=s=>{for(let a=0;a<this.items.length;a++)this.items[a].dom.contains(s.target)&&this.moveSelection(a)};this.list=Tn("ul",{tabIndex:0,role:"listbox","aria-label":this.view.state.phrase("Diagnostics"),onkeydown:n,onclick:i}),this.dom=Tn("div",{class:"cm-panel-lint"},this.list,Tn("button",{type:"button",name:"close","aria-label":this.view.state.phrase("close"),onclick:()=>sR(this.view)},"×")),this.update()}get selectedIndex(){let e=this.view.state.field(ta).selected;if(!e)return-1;for(let n=0;n<this.items.length;n++)if(this.items[n].diagnostic==e.diagnostic)return n;return-1}update(){let{diagnostics:e,selected:n}=this.view.state.field(ta),i=0,s=!1,a=null,o=new Set;for(e.between(0,this.view.state.doc.length,(r,c,{spec:d})=>{for(let f of d.diagnostics){if(o.has(f))continue;o.add(f);let p=-1,g;for(let y=i;y<this.items.length;y++)if(this.items[y].diagnostic==f){p=y;break}p<0?(g=new oR(this.view,f),this.items.splice(i,0,g),s=!0):(g=this.items[p],p>i&&(this.items.splice(i,p-i),s=!0)),n&&g.diagnostic==n.diagnostic?g.dom.hasAttribute("aria-selected")||(g.dom.setAttribute("aria-selected","true"),a=g):g.dom.hasAttribute("aria-selected")&&g.dom.removeAttribute("aria-selected"),i++}});i<this.items.length&&!(this.items.length==1&&this.items[0].diagnostic.from<0);)s=!0,this.items.pop();this.items.length==0&&(this.items.push(new oR(this.view,{from:-1,to:-1,severity:"info",message:this.view.state.phrase("No diagnostics")})),s=!0),a?(this.list.setAttribute("aria-activedescendant",a.id),this.view.requestMeasure({key:this,read:()=>({sel:a.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:r,panel:c})=>{let d=c.height/this.list.offsetHeight;r.top<c.top?this.list.scrollTop-=(c.top-r.top)/d:r.bottom>c.bottom&&(this.list.scrollTop+=(r.bottom-c.bottom)/d)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),s&&this.sync()}sync(){let e=this.list.firstChild;function n(){let i=e;e=i.nextSibling,i.remove()}for(let i of this.items)if(i.dom.parentNode==this.list){for(;e!=i.dom;)n();e=i.dom.nextSibling}else this.list.insertBefore(i.dom,e);for(;e;)n()}moveSelection(e){if(this.selectedIndex<0)return;let n=this.view.state.field(ta),i=Dd(n.diagnostics,this.items[e].diagnostic);i&&this.view.dispatch({selection:{anchor:i.from,head:i.to},scrollIntoView:!0,effects:AF.of(i)})}static open(e){return new Fm(e)}}function Qxe(t,e='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" ${e}>${encodeURIComponent(t)}</svg>')`}function U_(t){return Qxe(`<path d="m0 2.5 l2 -1.5 l1 0 l2 1.5 l1 0" stroke="${t}" fill="none" stroke-width=".7"/>`,'width="6" height="3"')}const Yxe=Xe.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnostic-hint":{borderLeft:"5px solid #66d"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px",cursor:"pointer"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:U_("#d11")},".cm-lintRange-warning":{backgroundImage:U_("orange")},".cm-lintRange-info":{backgroundImage:U_("#999")},".cm-lintRange-hint":{backgroundImage:U_("#66d")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-lintPoint-hint":{"&:after":{borderBottomColor:"#66d"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}}});function Jxe(t){return t=="error"?4:t=="warning"?3:t=="info"?2:1}function Zxe(t){let e="hint",n=1;for(let i of t){let s=Jxe(i.severity);s>n&&(n=s,e=i.severity)}return e}const e1e=[ta,Xe.decorations.compute([ta],t=>{let{selected:e,panel:n}=t.field(ta);return!e||!n||e.from==e.to?xt.none:xt.set([Kxe.range(e.from,e.to)])}),X0e(Vxe,{hideOn:qxe}),Yxe];var rR=function(e){e===void 0&&(e={});var{crosshairCursor:n=!1}=e,i=[];e.closeBracketsKeymap!==!1&&(i=i.concat(Pxe)),e.defaultKeymap!==!1&&(i=i.concat(Nve)),e.searchKeymap!==!1&&(i=i.concat(mF)),e.historyKeymap!==!1&&(i=i.concat(jbe)),e.foldKeymap!==!1&&(i=i.concat($ye)),e.completionKeymap!==!1&&(i=i.concat(kF)),e.lintKeymap!==!1&&(i=i.concat($xe));var s=[];return e.lineNumbers!==!1&&s.push(oye()),e.highlightActiveLineGutter!==!1&&s.push(cye()),e.highlightSpecialChars!==!1&&s.push(k0e()),e.history!==!1&&s.push(Cbe()),e.foldGutter!==!1&&s.push(Jye()),e.drawSelection!==!1&&s.push(f0e()),e.dropCursor!==!1&&s.push(y0e()),e.allowMultipleSelections!==!1&&s.push(nn.allowMultipleSelections.of(!0)),e.indentOnInput!==!1&&s.push(Iye()),e.syntaxHighlighting!==!1&&s.push(x8(nbe,{fallback:!0})),e.bracketMatching!==!1&&s.push(cbe()),e.closeBrackets!==!1&&s.push(Txe()),e.autocompletion!==!1&&s.push(Bxe()),e.rectangularSelection!==!1&&s.push(I0e()),n!==!1&&s.push(q0e()),e.highlightActiveLine!==!1&&s.push(L0e()),e.highlightSelectionMatches!==!1&&s.push(rF()),e.tabSize&&typeof e.tabSize=="number"&&s.push(ib.of(" ".repeat(e.tabSize))),s.concat([bp.of(i.flat())]).filter(Boolean)};const t1e="#e5c07b",lR="#e06c75",n1e="#56b6c2",i1e="#ffffff",b0="#abb2bf",lw="#7d8799",s1e="#61afef",a1e="#98c379",cR="#d19a66",o1e="#c678dd",r1e="#21252b",uR="#2c313a",dR="#282c34",n2="#353a42",l1e="#3E4451",hR="#528bff",c1e=Xe.theme({"&":{color:b0,backgroundColor:dR},".cm-content":{caretColor:hR},".cm-cursor, .cm-dropCursor":{borderLeftColor:hR},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:l1e},".cm-panels":{backgroundColor:r1e,color:b0},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:dR,color:lw,border:"none"},".cm-activeLineGutter":{backgroundColor:uR},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:n2},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:n2,borderBottomColor:n2},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:uR,color:b0}}},{dark:!0}),u1e=Sp.define([{tag:ke.keyword,color:o1e},{tag:[ke.name,ke.deleted,ke.character,ke.propertyName,ke.macroName],color:lR},{tag:[ke.function(ke.variableName),ke.labelName],color:s1e},{tag:[ke.color,ke.constant(ke.name),ke.standard(ke.name)],color:cR},{tag:[ke.definition(ke.name),ke.separator],color:b0},{tag:[ke.typeName,ke.className,ke.number,ke.changed,ke.annotation,ke.modifier,ke.self,ke.namespace],color:t1e},{tag:[ke.operator,ke.operatorKeyword,ke.url,ke.escape,ke.regexp,ke.link,ke.special(ke.string)],color:n1e},{tag:[ke.meta,ke.comment],color:lw},{tag:ke.strong,fontWeight:"bold"},{tag:ke.emphasis,fontStyle:"italic"},{tag:ke.strikethrough,textDecoration:"line-through"},{tag:ke.link,color:lw,textDecoration:"underline"},{tag:ke.heading,fontWeight:"bold",color:lR},{tag:[ke.atom,ke.bool,ke.special(ke.variableName)],color:cR},{tag:[ke.processingInstruction,ke.string,ke.inserted],color:a1e},{tag:ke.invalid,color:i1e}]),d1e=[c1e,x8(u1e)];var h1e=Xe.theme({"&":{backgroundColor:"#fff"}},{dark:!1}),f1e=function(e){e===void 0&&(e={});var{indentWithTab:n=!0,editable:i=!0,readOnly:s=!1,theme:a="light",placeholder:o="",basicSetup:r=!0}=e,c=[];switch(n&&c.unshift(bp.of([Tve])),r&&(typeof r=="boolean"?c.unshift(rR()):c.unshift(rR(r))),o&&c.unshift(j0e(o)),a){case"light":c.push(h1e);break;case"dark":c.push(d1e);break;case"none":break;default:c.push(a);break}return i===!1&&c.push(Xe.editable.of(!1)),s&&c.push(nn.readOnly.of(!0)),[...c]},m1e=t=>({line:t.state.doc.lineAt(t.state.selection.main.from),lineCount:t.state.doc.lines,lineBreak:t.state.lineBreak,length:t.state.doc.length,readOnly:t.state.readOnly,tabSize:t.state.tabSize,selection:t.state.selection,selectionAsSingle:t.state.selection.asSingle().main,ranges:t.state.selection.ranges,selectionCode:t.state.sliceDoc(t.state.selection.main.from,t.state.selection.main.to),selections:t.state.selection.ranges.map(e=>t.state.sliceDoc(e.from,e.to)),selectedText:t.state.selection.ranges.some(e=>!e.empty)});class p1e{constructor(e,n){this.timeLeftMS=void 0,this.timeoutMS=void 0,this.isCancelled=!1,this.isTimeExhausted=!1,this.callbacks=[],this.timeLeftMS=n,this.timeoutMS=n,this.callbacks.push(e)}tick(){if(!this.isCancelled&&!this.isTimeExhausted&&(this.timeLeftMS--,this.timeLeftMS<=0)){this.isTimeExhausted=!0;var e=this.callbacks.slice();this.callbacks.length=0,e.forEach(n=>{try{n()}catch(i){console.error("TimeoutLatch callback error:",i)}})}}cancel(){this.isCancelled=!0,this.callbacks.length=0}reset(){this.timeLeftMS=this.timeoutMS,this.isCancelled=!1,this.isTimeExhausted=!1}get isDone(){return this.isCancelled||this.isTimeExhausted}}class fR{constructor(){this.interval=null,this.latches=new Set}add(e){this.latches.add(e),this.start()}remove(e){this.latches.delete(e),this.latches.size===0&&this.stop()}start(){this.interval===null&&(this.interval=setInterval(()=>{this.latches.forEach(e=>{e.tick(),e.isDone&&this.remove(e)})},1))}stop(){this.interval!==null&&(clearInterval(this.interval),this.interval=null)}}var i2=null,g1e=()=>typeof window>"u"?new fR:(i2||(i2=new fR),i2),mR=Do.define(),_1e=200,y1e=[];function b1e(t){var{value:e,selection:n,onChange:i,onStatistics:s,onCreateEditor:a,onUpdate:o,extensions:r=y1e,autoFocus:c,theme:d="light",height:f=null,minHeight:p=null,maxHeight:g=null,width:y=null,minWidth:_=null,maxWidth:v=null,placeholder:x="",editable:k=!0,readOnly:C=!1,indentWithTab:N=!0,basicSetup:L=!0,root:M,initialState:O}=t,[T,P]=S.useState(),[E,R]=S.useState(),[q,I]=S.useState(),Y=S.useState(()=>({current:null}))[0],X=S.useState(()=>({current:null}))[0],K=Xe.theme({"&":{height:f,minHeight:p,maxHeight:g,width:y,minWidth:_,maxWidth:v},"& .cm-scroller":{height:"100% !important"}}),B=Xe.updateListener.of(Q=>{if(Q.docChanged&&typeof i=="function"&&!Q.transactions.some(U=>U.annotation(mR))){Y.current?Y.current.reset():(Y.current=new p1e(()=>{if(X.current){var U=X.current;X.current=null,U()}Y.current=null},_1e),g1e().add(Y.current));var W=Q.state.doc,D=W.toString();i(D,Q)}s&&s(m1e(Q))}),H=f1e({theme:d,editable:k,readOnly:C,placeholder:x,indentWithTab:N,basicSetup:L}),z=[B,K,...H];return o&&typeof o=="function"&&z.push(Xe.updateListener.of(o)),z=z.concat(r),S.useLayoutEffect(()=>{if(T&&!q){var Q={doc:e,selection:n,extensions:z},W=O?nn.fromJSON(O.json,Q,O.fields):nn.create(Q);if(I(W),!E){var D=new Xe({state:W,parent:T,root:M});R(D),a&&a(D,W)}}return()=>{E&&(I(void 0),R(void 0))}},[T,q]),S.useEffect(()=>{t.container&&P(t.container)},[t.container]),S.useEffect(()=>()=>{E&&(E.destroy(),R(void 0)),Y.current&&(Y.current.cancel(),Y.current=null)},[E]),S.useEffect(()=>{c&&E&&E.focus()},[c,E]),S.useEffect(()=>{E&&E.dispatch({effects:Rt.reconfigure.of(z)})},[d,r,f,p,g,y,_,v,x,k,C,N,L,i,o]),S.useEffect(()=>{if(e!==void 0){var Q=E?E.state.doc.toString():"";if(E&&e!==Q){var W=Y.current&&!Y.current.isDone,D=()=>{E&&e!==E.state.doc.toString()&&E.dispatch({changes:{from:0,to:E.state.doc.toString().length,insert:e||""},annotations:[mR.of(!0)]})};W?X.current=D:D()}}},[e,E]),{state:q,setState:I,view:E,setView:R,container:T,setContainer:P}}var v1e=["className","value","selection","extensions","onChange","onStatistics","onCreateEditor","onUpdate","autoFocus","theme","height","minHeight","maxHeight","width","minWidth","maxWidth","basicSetup","placeholder","indentWithTab","editable","readOnly","root","initialState"],MF=S.forwardRef((t,e)=>{var{className:n,value:i="",selection:s,extensions:a=[],onChange:o,onStatistics:r,onCreateEditor:c,onUpdate:d,autoFocus:f,theme:p="light",height:g,minHeight:y,maxHeight:_,width:v,minWidth:x,maxWidth:k,basicSetup:C,placeholder:N,indentWithTab:L,editable:M,readOnly:O,root:T,initialState:P}=t,E=rge(t,v1e),R=S.useRef(null),{state:q,view:I,container:Y,setContainer:X}=b1e({root:T,value:i,autoFocus:f,theme:p,height:g,minHeight:y,maxHeight:_,width:v,minWidth:x,maxWidth:k,basicSetup:C,placeholder:N,indentWithTab:L,editable:M,readOnly:O,selection:s,onChange:o,onStatistics:r,onCreateEditor:c,onUpdate:d,extensions:a,initialState:P});S.useImperativeHandle(e,()=>({editor:R.current,state:q,view:I}),[R,Y,q,I]);var K=S.useCallback(H=>{R.current=H,X(H)},[X]);if(typeof i!="string")throw new Error("value must be typeof string but got "+typeof i);var B=typeof p=="string"?"cm-theme-"+p:"cm-theme";return h.jsx("div",uS({ref:K,className:""+B+(n?" "+n:"")},E))});MF.displayName="CodeMirror";var pR={};class _y{constructor(e,n,i,s,a,o,r,c,d,f=0,p){this.p=e,this.stack=n,this.state=i,this.reducePos=s,this.pos=a,this.score=o,this.buffer=r,this.bufferBase=c,this.curContext=d,this.lookAhead=f,this.parent=p}toString(){return`[${this.stack.filter((e,n)=>n%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,n,i=0){let s=e.parser.context;return new _y(e,[],n,i,i,0,[],0,s?new gR(s,s.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,n){this.stack.push(this.state,n,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var n;let i=e>>19,s=e&65535,{parser:a}=this.p,o=this.reducePos<this.pos-25&&this.setLookAhead(this.pos),r=a.dynamicPrecedence(s);if(r&&(this.score+=r),i==0){this.pushState(a.getGoto(this.state,s,!0),this.reducePos),s<a.minRepeatTerm&&this.storeNode(s,this.reducePos,this.reducePos,o?8:4,!0),this.reduceContext(s,this.reducePos);return}let c=this.stack.length-(i-1)*3-(e&262144?6:0),d=c?this.stack[c-2]:this.p.ranges[0].from,f=this.reducePos-d;f>=2e3&&!(!((n=this.p.parser.nodeSet.types[s])===null||n===void 0)&&n.isAnonymous)&&(d==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=f):this.p.lastBigReductionSize<f&&(this.p.bigReductionCount=1,this.p.lastBigReductionStart=d,this.p.lastBigReductionSize=f));let p=c?this.stack[c-1]:0,g=this.bufferBase+this.buffer.length-p;if(s<a.minRepeatTerm||e&131072){let y=a.stateFlag(this.state,1)?this.pos:this.reducePos;this.storeNode(s,d,y,g+4,!0)}if(e&262144)this.state=this.stack[c];else{let y=this.stack[c-3];this.state=a.getGoto(y,s,!0)}for(;this.stack.length>c;)this.stack.pop();this.reduceContext(s,d)}storeNode(e,n,i,s=4,a=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]<this.buffer.length+this.bufferBase)){let o=this,r=this.buffer.length;if(r==0&&o.parent&&(r=o.bufferBase-o.parent.bufferBase,o=o.parent),r>0&&o.buffer[r-4]==0&&o.buffer[r-1]>-1){if(n==i)return;if(o.buffer[r-2]>=n){o.buffer[r-2]=i;return}}}if(!a||this.pos==i)this.buffer.push(e,n,i,s);else{let o=this.buffer.length;if(o>0&&(this.buffer[o-4]!=0||this.buffer[o-1]<0)){let r=!1;for(let c=o;c>0&&this.buffer[c-2]>i;c-=4)if(this.buffer[c-1]>=0){r=!0;break}if(r)for(;o>0&&this.buffer[o-2]>i;)this.buffer[o]=this.buffer[o-4],this.buffer[o+1]=this.buffer[o-3],this.buffer[o+2]=this.buffer[o-2],this.buffer[o+3]=this.buffer[o-1],o-=4,s>4&&(s-=4)}this.buffer[o]=e,this.buffer[o+1]=n,this.buffer[o+2]=i,this.buffer[o+3]=s}}shift(e,n,i,s){if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let a=e,{parser:o}=this.p;(s>this.pos||n<=o.maxNode)&&(this.pos=s,o.stateFlag(a,1)||(this.reducePos=s)),this.pushState(a,i),this.shiftContext(n,i),n<=o.maxNode&&this.buffer.push(n,i,s,4)}else this.pos=s,this.shiftContext(n,i),n<=this.p.parser.maxNode&&this.buffer.push(n,i,s,4)}apply(e,n,i,s){e&65536?this.reduce(e):this.shift(e,n,i,s)}useNode(e,n){let i=this.p.reused.length-1;(i<0||this.p.reused[i]!=e)&&(this.p.reused.push(e),i++);let s=this.pos;this.reducePos=this.pos=s+e.length,this.pushState(n,s),this.buffer.push(i,s,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,n=e.buffer.length;for(;n>0&&e.buffer[n-2]>e.reducePos;)n-=4;let i=e.buffer.slice(n),s=e.bufferBase+n;for(;e&&s==e.bufferBase;)e=e.parent;return new _y(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,i,s,this.curContext,this.lookAhead,e)}recoverByDelete(e,n){let i=e<=this.p.parser.maxNode;i&&this.storeNode(e,this.pos,n,4),this.storeNode(0,this.pos,n,i?8:4),this.pos=this.reducePos=n,this.score-=190}canShift(e){for(let n=new x1e(this);;){let i=this.p.parser.stateSlot(n.state,4)||this.p.parser.hasAction(n.state,e);if(i==0)return!1;if((i&65536)==0)return!0;n.reduce(i)}}recoverByInsert(e){if(this.stack.length>=300)return[];let n=this.p.parser.nextStates(this.state);if(n.length>8||this.stack.length>=120){let s=[];for(let a=0,o;a<n.length;a+=2)(o=n[a+1])!=this.state&&this.p.parser.hasAction(o,e)&&s.push(n[a],o);if(this.stack.length<120)for(let a=0;s.length<8&&a<n.length;a+=2){let o=n[a+1];s.some((r,c)=>c&1&&r==o)||s.push(n[a],o)}n=s}let i=[];for(let s=0;s<n.length&&i.length<4;s+=2){let a=n[s+1];if(a==this.state)continue;let o=this.split();o.pushState(a,this.pos),o.storeNode(0,o.pos,o.pos,4,!0),o.shiftContext(n[s],this.pos),o.reducePos=this.pos,o.score-=200,i.push(o)}return i}forceReduce(){let{parser:e}=this.p,n=e.stateSlot(this.state,5);if((n&65536)==0)return!1;if(!e.validAction(this.state,n)){let i=n>>19,s=n&65535,a=this.stack.length-i*3;if(a<0||e.getGoto(this.stack[a],s,!1)<0){let o=this.findForcedReduction();if(o==null)return!1;n=o}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(n),!0}findForcedReduction(){let{parser:e}=this.p,n=[],i=(s,a)=>{if(!n.includes(s))return n.push(s),e.allActions(s,o=>{if(!(o&393216))if(o&65536){let r=(o>>19)-a;if(r>1){let c=o&65535,d=this.stack.length-r*3;if(d>=0&&e.getGoto(this.stack[d],c,!1)>=0)return r<<19|65536|c}}else{let r=i(o,a+1);if(r!=null)return r}})};return i(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let n=0;n<this.stack.length;n+=3)if(this.stack[n]!=e.stack[n])return!1;return!0}get parser(){return this.p.parser}dialectEnabled(e){return this.p.parser.dialect.flags[e]}shiftContext(e,n){this.curContext&&this.updateContext(this.curContext.tracker.shift(this.curContext.context,e,this,this.p.stream.reset(n)))}reduceContext(e,n){this.curContext&&this.updateContext(this.curContext.tracker.reduce(this.curContext.context,e,this,this.p.stream.reset(n)))}emitContext(){let e=this.buffer.length-1;(e<0||this.buffer[e]!=-3)&&this.buffer.push(this.curContext.hash,this.pos,this.pos,-3)}emitLookAhead(){let e=this.buffer.length-1;(e<0||this.buffer[e]!=-4)&&this.buffer.push(this.lookAhead,this.pos,this.pos,-4)}updateContext(e){if(e!=this.curContext.context){let n=new gR(this.curContext.tracker,e);n.hash!=this.curContext.hash&&this.emitContext(),this.curContext=n}}setLookAhead(e){return e<=this.lookAhead?!1:(this.emitLookAhead(),this.lookAhead=e,!0)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}}class gR{constructor(e,n){this.tracker=e,this.context=n,this.hash=e.strict?e.hash(n):0}}class x1e{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let n=e&65535,i=e>>19;i==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(i-1)*3;let s=this.start.p.parser.getGoto(this.stack[this.base-3],n,!0);this.state=s}}class yy{constructor(e,n,i){this.stack=e,this.pos=n,this.index=i,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,n=e.bufferBase+e.buffer.length){return new yy(e,n,n-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new yy(this.stack,this.pos,this.index)}}function q_(t,e=Uint16Array){if(typeof t!="string")return t;let n=null;for(let i=0,s=0;i<t.length;){let a=0;for(;;){let o=t.charCodeAt(i++),r=!1;if(o==126){a=65535;break}o>=92&&o--,o>=34&&o--;let c=o-32;if(c>=46&&(c-=46,r=!0),a+=c,r)break;a*=46}n?n[s++]=a:n=new e(a)}return n}class v0{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const _R=new v0;class S1e{constructor(e,n){this.input=e,this.ranges=n,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=_R,this.rangeIndex=0,this.pos=this.chunkPos=n[0].from,this.range=n[0],this.end=n[n.length-1].to,this.readNext()}resolveOffset(e,n){let i=this.range,s=this.rangeIndex,a=this.pos+e;for(;a<i.from;){if(!s)return null;let o=this.ranges[--s];a-=i.from-o.to,i=o}for(;n<0?a>i.to:a>=i.to;){if(s==this.ranges.length-1)return null;let o=this.ranges[++s];a+=o.from-i.to,i=o}return a}clipPos(e){if(e>=this.range.from&&e<this.range.to)return e;for(let n of this.ranges)if(n.to>e)return Math.max(e,n.from);return this.end}peek(e){let n=this.chunkOff+e,i,s;if(n>=0&&n<this.chunk.length)i=this.pos+e,s=this.chunk.charCodeAt(n);else{let a=this.resolveOffset(e,1);if(a==null)return-1;if(i=a,i>=this.chunk2Pos&&i<this.chunk2Pos+this.chunk2.length)s=this.chunk2.charCodeAt(i-this.chunk2Pos);else{let o=this.rangeIndex,r=this.range;for(;r.to<=i;)r=this.ranges[++o];this.chunk2=this.input.chunk(this.chunk2Pos=i),i+this.chunk2.length>r.to&&(this.chunk2=this.chunk2.slice(0,r.to-i)),s=this.chunk2.charCodeAt(0)}}return i>=this.token.lookAhead&&(this.token.lookAhead=i+1),s}acceptToken(e,n=0){let i=n?this.resolveOffset(n,-1):this.pos;if(i==null||i<this.token.start)throw new RangeError("Token end out of bounds");this.token.value=e,this.token.end=i}acceptTokenTo(e,n){this.token.value=e,this.token.end=n}getChunk(){if(this.pos>=this.chunk2Pos&&this.pos<this.chunk2Pos+this.chunk2.length){let{chunk:e,chunkPos:n}=this;this.chunk=this.chunk2,this.chunkPos=this.chunk2Pos,this.chunk2=e,this.chunk2Pos=n,this.chunkOff=this.pos-this.chunkPos}else{this.chunk2=this.chunk,this.chunk2Pos=this.chunkPos;let e=this.input.chunk(this.pos),n=this.pos+e.length;this.chunk=n>this.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,n){if(n?(this.token=n,n.start=e,n.lookAhead=e+1,n.value=n.extended=-1):this.token=_R,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e<this.range.from;)this.range=this.ranges[--this.rangeIndex];for(;e>=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e<this.chunkPos+this.chunk.length?this.chunkOff=e-this.chunkPos:(this.chunk="",this.chunkOff=0),this.readNext()}return this}read(e,n){if(e>=this.chunkPos&&n<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,n-this.chunkPos);if(e>=this.chunk2Pos&&n<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,n-this.chunk2Pos);if(e>=this.range.from&&n<=this.range.to)return this.input.read(e,n);let i="";for(let s of this.ranges){if(s.from>=n)break;s.to>e&&(i+=this.input.read(Math.max(s.from,e),Math.min(s.to,n)))}return i}}class yd{constructor(e,n){this.data=e,this.id=n}token(e,n){let{parser:i}=n.p;w1e(this.data,e,n,this.id,i.data,i.tokenPrecTable)}}yd.prototype.contextual=yd.prototype.fallback=yd.prototype.extend=!1;yd.prototype.fallback=yd.prototype.extend=!1;class db{constructor(e,n={}){this.token=e,this.contextual=!!n.contextual,this.fallback=!!n.fallback,this.extend=!!n.extend}}function w1e(t,e,n,i,s,a){let o=0,r=1<<i,{dialect:c}=n.p.parser;e:for(;(r&t[o])!=0;){let d=t[o+1];for(let y=o+3;y<d;y+=2)if((t[y+1]&r)>0){let _=t[y];if(c.allows(_)&&(e.token.value==-1||e.token.value==_||k1e(_,e.token.value,s,a))){e.acceptToken(_);break}}let f=e.next,p=0,g=t[o+2];if(e.next<0&&g>p&&t[d+g*3-3]==65535){o=t[d+g*3-1];continue e}for(;p<g;){let y=p+g>>1,_=d+y+(y<<1),v=t[_],x=t[_+1]||65536;if(f<v)g=y;else if(f>=x)p=y+1;else{o=t[_+2],e.advance();continue e}}break}}function yR(t,e,n){for(let i=e,s;(s=t[i])!=65535;i++)if(s==n)return i-e;return-1}function k1e(t,e,n,i){let s=yR(n,i,e);return s<0||yR(n,i,t)<s}const Qs=typeof process<"u"&&pR&&/\bparse\b/.test(pR.LOG);let s2=null;function bR(t,e,n){let i=t.cursor(Pi.IncludeAnonymous);for(i.moveTo(e);;)if(!(n<0?i.childBefore(e):i.childAfter(e)))for(;;){if((n<0?i.to<e:i.from>e)&&!i.type.isError)return n<0?Math.max(0,Math.min(i.to-1,e-25)):Math.min(t.length,Math.max(i.from+1,e+25));if(n<0?i.prevSibling():i.nextSibling())break;if(!i.parent())return n<0?0:t.length}}class C1e{constructor(e,n){this.fragments=e,this.nodeSet=n,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?bR(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?bR(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(e<this.nextStart)return null;for(;this.fragment&&this.safeTo<=e;)this.nextFragment();if(!this.fragment)return null;for(;;){let n=this.trees.length-1;if(n<0)return this.nextFragment(),null;let i=this.trees[n],s=this.index[n];if(s==i.children.length){this.trees.pop(),this.start.pop(),this.index.pop();continue}let a=i.children[s],o=this.start[n]+i.positions[s];if(o>e)return this.nextStart=o,null;if(a instanceof vi){if(o==e){if(o<this.safeFrom)return null;let r=o+a.length;if(r<=this.safeTo){let c=a.prop(Wt.lookAhead);if(!c||r+c<this.fragment.to)return a}}this.index[n]++,o+a.length>=Math.max(this.safeFrom,e)&&(this.trees.push(a),this.start.push(o),this.index.push(0))}else this.index[n]++,this.nextStart=o+a.length}}}class A1e{constructor(e,n){this.stream=n,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(i=>new v0)}getActions(e){let n=0,i=null,{parser:s}=e.p,{tokenizers:a}=s,o=s.stateSlot(e.state,3),r=e.curContext?e.curContext.hash:0,c=0;for(let d=0;d<a.length;d++){if((1<<d&o)==0)continue;let f=a[d],p=this.tokens[d];if(!(i&&!f.fallback)&&((f.contextual||p.start!=e.pos||p.mask!=o||p.context!=r)&&(this.updateCachedToken(p,f,e),p.mask=o,p.context=r),p.lookAhead>p.end+25&&(c=Math.max(p.lookAhead,c)),p.value!=0)){let g=n;if(p.extended>-1&&(n=this.addActions(e,p.extended,p.end,n)),n=this.addActions(e,p.value,p.end,n),!f.extend&&(i=p,n>g))break}}for(;this.actions.length>n;)this.actions.pop();return c&&e.setLookAhead(c),!i&&e.pos==this.stream.end&&(i=new v0,i.value=e.p.parser.eofTerm,i.start=i.end=e.pos,n=this.addActions(e,i.value,i.end,n)),this.mainToken=i,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let n=new v0,{pos:i,p:s}=e;return n.start=i,n.end=Math.min(i+1,s.stream.end),n.value=i==s.stream.end?s.parser.eofTerm:0,n}updateCachedToken(e,n,i){let s=this.stream.clipPos(i.pos);if(n.token(this.stream.reset(s,e),i),e.value>-1){let{parser:a}=i.p;for(let o=0;o<a.specialized.length;o++)if(a.specialized[o]==e.value){let r=a.specializers[o](this.stream.read(e.start,e.end),i);if(r>=0&&i.p.parser.dialect.allows(r>>1)){(r&1)==0?e.value=r>>1:e.extended=r>>1;break}}}else e.value=0,e.end=this.stream.clipPos(s+1)}putAction(e,n,i,s){for(let a=0;a<s;a+=3)if(this.actions[a]==e)return s;return this.actions[s++]=e,this.actions[s++]=n,this.actions[s++]=i,s}addActions(e,n,i,s){let{state:a}=e,{parser:o}=e.p,{data:r}=o;for(let c=0;c<2;c++)for(let d=o.stateSlot(a,c?2:1);;d+=3){if(r[d]==65535)if(r[d+1]==1)d=pr(r,d+2);else{s==0&&r[d+1]==2&&(s=this.putAction(pr(r,d+2),n,i,s));break}r[d]==n&&(s=this.putAction(pr(r,d+1),n,i,s))}return s}}class N1e{constructor(e,n,i,s){this.parser=e,this.input=n,this.ranges=s,this.recovering=0,this.nextStackID=9812,this.minStackPos=0,this.reused=[],this.stoppedAt=null,this.lastBigReductionStart=-1,this.lastBigReductionSize=0,this.bigReductionCount=0,this.stream=new S1e(n,s),this.tokens=new A1e(e,this.stream),this.topTerm=e.top[1];let{from:a}=s[0];this.stacks=[_y.start(this,e.top[0],a)],this.fragments=i.length&&this.stream.end-a>e.bufferLength*4?new C1e(i,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,n=this.minStackPos,i=this.stacks=[],s,a;if(this.bigReductionCount>300&&e.length==1){let[o]=e;for(;o.forceReduce()&&o.stack.length&&o.stack[o.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let o=0;o<e.length;o++){let r=e[o];for(;;){if(this.tokens.mainToken=null,r.pos>n)i.push(r);else{if(this.advanceStack(r,i,e))continue;{s||(s=[],a=[]),s.push(r);let c=this.tokens.getMainToken(r);a.push(c.value,c.end)}}break}}if(!i.length){let o=s&&L1e(s);if(o)return Qs&&console.log("Finish with "+this.stackID(o)),this.stackToTree(o);if(this.parser.strict)throw Qs&&s&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+n);this.recovering||(this.recovering=5)}if(this.recovering&&s){let o=this.stoppedAt!=null&&s[0].pos>this.stoppedAt?s[0]:this.runRecovery(s,a,i);if(o)return Qs&&console.log("Force-finish "+this.stackID(o)),this.stackToTree(o.forceAll())}if(this.recovering){let o=this.recovering==1?1:this.recovering*3;if(i.length>o)for(i.sort((r,c)=>c.score-r.score);i.length>o;)i.pop();i.some(r=>r.reducePos>n)&&this.recovering--}else if(i.length>1){e:for(let o=0;o<i.length-1;o++){let r=i[o];for(let c=o+1;c<i.length;c++){let d=i[c];if(r.sameState(d)||r.buffer.length>500&&d.buffer.length>500)if((r.score-d.score||r.buffer.length-d.buffer.length)>0)i.splice(c--,1);else{i.splice(o--,1);continue e}}}i.length>12&&i.splice(12,i.length-12)}this.minStackPos=i[0].pos;for(let o=1;o<i.length;o++)i[o].pos<this.minStackPos&&(this.minStackPos=i[o].pos);return null}stopAt(e){if(this.stoppedAt!=null&&this.stoppedAt<e)throw new RangeError("Can't move stoppedAt forward");this.stoppedAt=e}advanceStack(e,n,i){let s=e.pos,{parser:a}=this,o=Qs?this.stackID(e)+" -> ":"";if(this.stoppedAt!=null&&s>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let d=e.curContext&&e.curContext.tracker.strict,f=d?e.curContext.hash:0;for(let p=this.fragments.nodeAt(s);p;){let g=this.parser.nodeSet.types[p.type.id]==p.type?a.getGoto(e.state,p.type.id):-1;if(g>-1&&p.length&&(!d||(p.prop(Wt.contextHash)||0)==f))return e.useNode(p,g),Qs&&console.log(o+this.stackID(e)+` (via reuse of ${a.getName(p.type.id)})`),!0;if(!(p instanceof vi)||p.children.length==0||p.positions[0]>0)break;let y=p.children[0];if(y instanceof vi&&p.positions[0]==0)p=y;else break}}let r=a.stateSlot(e.state,4);if(r>0)return e.reduce(r),Qs&&console.log(o+this.stackID(e)+` (via always-reduce ${a.getName(r&65535)})`),!0;if(e.stack.length>=8400)for(;e.stack.length>6e3&&e.forceReduce(););let c=this.tokens.getActions(e);for(let d=0;d<c.length;){let f=c[d++],p=c[d++],g=c[d++],y=d==c.length||!i,_=y?e:e.split(),v=this.tokens.mainToken;if(_.apply(f,p,v?v.start:_.pos,g),Qs&&console.log(o+this.stackID(_)+` (via ${(f&65536)==0?"shift":`reduce of ${a.getName(f&65535)}`} for ${a.getName(p)} @ ${s}${_==e?"":", split"})`),y)return!0;_.pos>s?n.push(_):i.push(_)}return!1}advanceFully(e,n){let i=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>i)return vR(e,n),!0}}runRecovery(e,n,i){let s=null,a=!1;for(let o=0;o<e.length;o++){let r=e[o],c=n[o<<1],d=n[(o<<1)+1],f=Qs?this.stackID(r)+" -> ":"";if(r.deadEnd&&(a||(a=!0,r.restart(),Qs&&console.log(f+this.stackID(r)+" (restarted)"),this.advanceFully(r,i))))continue;let p=r.split(),g=f;for(let y=0;y<10&&p.forceReduce()&&(Qs&&console.log(g+this.stackID(p)+" (via force-reduce)"),!this.advanceFully(p,i));y++)Qs&&(g=this.stackID(p)+" -> ");for(let y of r.recoverByInsert(c))Qs&&console.log(f+this.stackID(y)+" (via recover-insert)"),this.advanceFully(y,i);this.stream.end>r.pos?(d==r.pos&&(d++,c=0),r.recoverByDelete(c,d),Qs&&console.log(f+this.stackID(r)+` (via recover-delete ${this.parser.getName(c)})`),vR(r,i)):(!s||s.score<r.score)&&(s=r)}return s}stackToTree(e){return e.close(),vi.build({buffer:yy.create(e),nodeSet:this.parser.nodeSet,topID:this.topTerm,maxBufferLength:this.parser.bufferLength,reused:this.reused,start:this.ranges[0].from,length:e.pos-this.ranges[0].from,minRepeatType:this.parser.minRepeatTerm})}stackID(e){let n=(s2||(s2=new WeakMap)).get(e);return n||s2.set(e,n=String.fromCodePoint(this.nextStackID++)),n+e}}function vR(t,e){for(let n=0;n<e.length;n++){let i=e[n];if(i.pos==t.pos&&i.sameState(t)){e[n].score<t.score&&(e[n]=t);return}}e.push(t)}class T1e{constructor(e,n,i){this.source=e,this.flags=n,this.disabled=i}allows(e){return!this.disabled||this.disabled[e]==0}}const a2=t=>t;class M1e{constructor(e){this.start=e.start,this.shift=e.shift||a2,this.reduce=e.reduce||a2,this.reuse=e.reuse||a2,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}}class by extends s8{constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (14)`);let n=e.nodeNames.split(" ");this.minRepeatTerm=n.length;for(let r=0;r<e.repeatNodeCount;r++)n.push("");let i=Object.keys(e.topRules).map(r=>e.topRules[r][1]),s=[];for(let r=0;r<n.length;r++)s.push([]);function a(r,c,d){s[r].push([c,c.deserialize(String(d))])}if(e.nodeProps)for(let r of e.nodeProps){let c=r[0];typeof c=="string"&&(c=Wt[c]);for(let d=1;d<r.length;){let f=r[d++];if(f>=0)a(f,c,r[d++]);else{let p=r[d+-f];for(let g=-f;g>0;g--)a(r[d++],c,p);d++}}}this.nodeSet=new Ek(n.map((r,c)=>qs.define({name:c>=this.minRepeatTerm?void 0:r,id:c,props:s[c],top:i.indexOf(c)>-1,error:c==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(c)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=e8;let o=q_(e.tokenData);this.context=e.context,this.specializerSpecs=e.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let r=0;r<this.specializerSpecs.length;r++)this.specialized[r]=this.specializerSpecs[r].term;this.specializers=this.specializerSpecs.map(xR),this.states=q_(e.states,Uint32Array),this.data=q_(e.stateData),this.goto=q_(e.goto),this.maxTerm=e.maxTerm,this.tokenizers=e.tokenizers.map(r=>typeof r=="number"?new yd(o,r):r),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,n,i){let s=new N1e(this,e,n,i);for(let a of this.wrappers)s=a(s,e,n,i);return s}getGoto(e,n,i=!1){let s=this.goto;if(n>=s[0])return-1;for(let a=s[n+1];;){let o=s[a++],r=o&1,c=s[a++];if(r&&i)return c;for(let d=a+(o>>1);a<d;a++)if(s[a]==e)return c;if(r)return-1}}hasAction(e,n){let i=this.data;for(let s=0;s<2;s++)for(let a=this.stateSlot(e,s?2:1),o;;a+=3){if((o=i[a])==65535)if(i[a+1]==1)o=i[a=pr(i,a+2)];else{if(i[a+1]==2)return pr(i,a+2);break}if(o==n||o==0)return pr(i,a+1)}return 0}stateSlot(e,n){return this.states[e*6+n]}stateFlag(e,n){return(this.stateSlot(e,0)&n)>0}validAction(e,n){return!!this.allActions(e,i=>i==n?!0:null)}allActions(e,n){let i=this.stateSlot(e,4),s=i?n(i):void 0;for(let a=this.stateSlot(e,1);s==null;a+=3){if(this.data[a]==65535)if(this.data[a+1]==1)a=pr(this.data,a+2);else break;s=n(pr(this.data,a+1))}return s}nextStates(e){let n=[];for(let i=this.stateSlot(e,1);;i+=3){if(this.data[i]==65535)if(this.data[i+1]==1)i=pr(this.data,i+2);else break;if((this.data[i+2]&1)==0){let s=this.data[i+1];n.some((a,o)=>o&1&&a==s)||n.push(this.data[i],s)}}return n}configure(e){let n=Object.assign(Object.create(by.prototype),this);if(e.props&&(n.nodeSet=this.nodeSet.extend(...e.props)),e.top){let i=this.topRules[e.top];if(!i)throw new RangeError(`Invalid top rule name ${e.top}`);n.top=i}return e.tokenizers&&(n.tokenizers=this.tokenizers.map(i=>{let s=e.tokenizers.find(a=>a.from==i);return s?s.to:i})),e.specializers&&(n.specializers=this.specializers.slice(),n.specializerSpecs=this.specializerSpecs.map((i,s)=>{let a=e.specializers.find(r=>r.from==i.external);if(!a)return i;let o=Object.assign(Object.assign({},i),{external:a.to});return n.specializers[s]=xR(o),o})),e.contextTracker&&(n.context=e.contextTracker),e.dialect&&(n.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(n.strict=e.strict),e.wrap&&(n.wrappers=n.wrappers.concat(e.wrap)),e.bufferLength!=null&&(n.bufferLength=e.bufferLength),n}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let n=this.dynamicPrecedences;return n==null?0:n[e]||0}parseDialect(e){let n=Object.keys(this.dialects),i=n.map(()=>!1);if(e)for(let a of e.split(" ")){let o=n.indexOf(a);o>=0&&(i[o]=!0)}let s=null;for(let a=0;a<n.length;a++)if(!i[a])for(let o=this.dialects[n[a]],r;(r=this.data[o++])!=65535;)(s||(s=new Uint8Array(this.maxTerm+1)))[r]=1;return new T1e(e,i,s)}static deserialize(e){return new by(e)}}function pr(t,e){return t[e]|t[e+1]<<16}function L1e(t){let e=null;for(let n of t){let i=n.p.stoppedAt;(n.pos==n.p.stream.end||i!=null&&n.pos>i)&&n.p.parser.stateFlag(n.state,2)&&(!e||e.score<n.score)&&(e=n)}return e}function xR(t){if(t.external){let e=t.extend?1:0;return(n,i)=>t.external(n,i)<<1|e}return t.get}const $u=63,SR=64,O1e=1,P1e=2,LF=3,E1e=4,OF=5,j1e=6,R1e=7,PF=65,D1e=66,F1e=8,I1e=9,B1e=10,U1e=11,q1e=12,EF=13,z1e=19,K1e=20,V1e=29,H1e=33,W1e=34,G1e=47,$1e=0,Qk=1,cw=2,Im=3,uw=4;class yc{constructor(e,n,i){this.parent=e,this.depth=n,this.type=i,this.hash=(e?e.hash+e.hash<<8:0)+n+(n<<4)+i}}yc.top=new yc(null,-1,$1e);function rm(t,e){for(let n=0,i=e-t.pos-1;;i--,n++){let s=t.peek(i);if(Or(s)||s==-1)return n}}function dw(t){return t==32||t==9}function Or(t){return t==10||t==13}function jF(t){return dw(t)||Or(t)}function Ac(t){return t<0||jF(t)}const X1e=new M1e({start:yc.top,reduce(t,e){return t.type==Im&&(e==K1e||e==W1e)?t.parent:t},shift(t,e,n,i){if(e==LF)return new yc(t,rm(i,i.pos),Qk);if(e==PF||e==OF)return new yc(t,rm(i,i.pos),cw);if(e==$u)return t.parent;if(e==z1e||e==H1e)return new yc(t,0,Im);if(e==EF&&t.type==uw)return t.parent;if(e==G1e){let s=/[1-9]/.exec(i.read(i.pos,n.pos));if(s)return new yc(t,t.depth+ +s[0],uw)}return t},hash(t){return t.hash}});function Fd(t,e,n=0){return t.peek(n)==e&&t.peek(n+1)==e&&t.peek(n+2)==e&&Ac(t.peek(n+3))}const Q1e=new db((t,e)=>{if(t.next==-1&&e.canShift(SR))return t.acceptToken(SR);let n=t.peek(-1);if((Or(n)||n<0)&&e.context.type!=Im){if(Fd(t,45))if(e.canShift($u))t.acceptToken($u);else return t.acceptToken(O1e,3);if(Fd(t,46))if(e.canShift($u))t.acceptToken($u);else return t.acceptToken(P1e,3);let i=0;for(;t.next==32;)i++,t.advance();(i<e.context.depth||i==e.context.depth&&e.context.type==Qk&&(t.next!=45||!Ac(t.peek(1))))&&t.next!=-1&&!Or(t.next)&&t.next!=35&&t.acceptToken($u,-i)}},{contextual:!0}),Y1e=new db((t,e)=>{if(e.context.type==Im){t.next==63&&(t.advance(),Ac(t.next)&&t.acceptToken(R1e));return}if(t.next==45)t.advance(),Ac(t.next)&&t.acceptToken(e.context.type==Qk&&e.context.depth==rm(t,t.pos-1)?E1e:LF);else if(t.next==63)t.advance(),Ac(t.next)&&t.acceptToken(e.context.type==cw&&e.context.depth==rm(t,t.pos-1)?j1e:OF);else{let n=t.pos;for(;;)if(dw(t.next)){if(t.pos==n)return;t.advance()}else if(t.next==33)RF(t);else if(t.next==38)hw(t);else if(t.next==42){hw(t);break}else if(t.next==39||t.next==34){if(Yk(t,!0))break;return}else if(t.next==91||t.next==123){if(!Z1e(t))return;break}else{DF(t,!0,!1,0);break}for(;dw(t.next);)t.advance();if(t.next==58){if(t.pos==n&&e.canShift(V1e))return;let i=t.peek(1);Ac(i)&&t.acceptTokenTo(e.context.type==cw&&e.context.depth==rm(t,n)?D1e:PF,n)}}},{contextual:!0});function J1e(t){return t>32&&t<127&&t!=34&&t!=37&&t!=44&&t!=60&&t!=62&&t!=92&&t!=94&&t!=96&&t!=123&&t!=124&&t!=125}function wR(t){return t>=48&&t<=57||t>=97&&t<=102||t>=65&&t<=70}function kR(t,e){return t.next==37?(t.advance(),wR(t.next)&&t.advance(),wR(t.next)&&t.advance(),!0):J1e(t.next)||e&&t.next==44?(t.advance(),!0):!1}function RF(t){if(t.advance(),t.next==60){for(t.advance();;)if(!kR(t,!0)){t.next==62&&t.advance();break}}else for(;kR(t,!1););}function hw(t){for(t.advance();!Ac(t.next)&&vy(t.tag)!="f";)t.advance()}function Yk(t,e){let n=t.next,i=!1,s=t.pos;for(t.advance();;){let a=t.next;if(a<0)break;if(t.advance(),a==n)if(a==39)if(t.next==39)t.advance();else break;else break;else if(a==92&&n==34)t.next>=0&&t.advance();else if(Or(a)){if(e)return!1;i=!0}else if(e&&t.pos>=s+1024)return!1}return!i}function Z1e(t){for(let e=[],n=t.pos+1024;;)if(t.next==91||t.next==123)e.push(t.next),t.advance();else if(t.next==39||t.next==34){if(!Yk(t,!0))return!1}else if(t.next==93||t.next==125){if(e[e.length-1]!=t.next-2)return!1;if(e.pop(),t.advance(),!e.length)return!0}else{if(t.next<0||t.pos>n||Or(t.next))return!1;t.advance()}}const e2e="iiisiiissisfissssssssssssisssiiissssssssssssssssssssssssssfsfssissssssssssssssssssssssssssfif";function vy(t){return t<33?"u":t>125?"s":e2e[t-33]}function o2(t,e){let n=vy(t);return n!="u"&&!(e&&n=="f")}function DF(t,e,n,i){if(vy(t.next)=="s"||(t.next==63||t.next==58||t.next==45)&&o2(t.peek(1),n))t.advance();else return!1;let s=t.pos;for(;;){let a=t.next,o=0,r=i+1;for(;jF(a);){if(Or(a)){if(e)return!1;r=0}else r++;a=t.peek(++o)}if(!(a>=0&&(a==58?o2(t.peek(o+1),n):a==35?t.peek(o-1)!=32:o2(a,n)))||!n&&r<=i||r==0&&!n&&(Fd(t,45,o)||Fd(t,46,o)))break;if(e&&vy(a)=="f")return!1;for(let d=o;d>=0;d--)t.advance();if(e&&t.pos>s+1024)return!1}return!0}const t2e=new db((t,e)=>{if(t.next==33)RF(t),t.acceptToken(q1e);else if(t.next==38||t.next==42){let n=t.next==38?B1e:U1e;hw(t),t.acceptToken(n)}else t.next==39||t.next==34?(Yk(t,!1),t.acceptToken(I1e)):DF(t,!1,e.context.type==Im,e.context.depth)&&t.acceptToken(F1e)}),n2e=new db((t,e)=>{let n=e.context.type==uw?e.context.depth:-1,i=t.pos;e:for(;;){let s=0,a=t.next;for(;a==32;)a=t.peek(++s);if(!s&&(Fd(t,45,s)||Fd(t,46,s))||!Or(a)&&(n<0&&(n=Math.max(e.context.depth+1,s)),s<n))break;for(;;){if(t.next<0)break e;let o=Or(t.next);if(t.advance(),o)continue e;i=t.pos}}t.acceptTokenTo(EF,i)}),i2e=a8({DirectiveName:ke.keyword,DirectiveContent:ke.attributeValue,"DirectiveEnd DocEnd":ke.meta,QuotedLiteral:ke.string,BlockLiteralHeader:ke.special(ke.string),BlockLiteralContent:ke.content,Literal:ke.content,"Key/Literal Key/QuotedLiteral":ke.definition(ke.propertyName),"Anchor Alias":ke.labelName,Tag:ke.typeName,Comment:ke.lineComment,": , -":ke.separator,"?":ke.punctuation,"[ ]":ke.squareBracket,"{ }":ke.brace}),s2e=by.deserialize({version:14,states:"5lQ!ZQgOOO#PQfO'#CpO#uQfO'#DOOOQR'#Dv'#DvO$qQgO'#DRO%gQdO'#DUO%nQgO'#DUO&ROaO'#D[OOQR'#Du'#DuO&{QgO'#D^O'rQgO'#D`OOQR'#Dt'#DtO(iOqO'#DbOOQP'#Dj'#DjO(zQaO'#CmO)YQgO'#CmOOQP'#Cm'#CmQ)jQaOOQ)uQgOOQ]QgOOO*PQdO'#CrO*nQdO'#CtOOQO'#Dw'#DwO+]Q`O'#CxO+hQdO'#CwO+rQ`O'#CwOOQO'#Cv'#CvO+wQdO'#CvOOQO'#Cq'#CqO,UQ`O,59[O,^QfO,59[OOQR,59[,59[OOQO'#Cx'#CxO,eQ`O'#DPO,pQdO'#DPOOQO'#Dx'#DxO,zQdO'#DxO-XQ`O,59jO-aQfO,59jOOQR,59j,59jOOQR'#DS'#DSO-hQcO,59mO-sQgO'#DVO.TQ`O'#DVO.YQcO,59pOOQR'#DX'#DXO#|QfO'#DWO.hQcO'#DWOOQR,59v,59vO.yOWO,59vO/OOaO,59vO/WOaO,59vO/cQgO'#D_OOQR,59x,59xO0VQgO'#DaOOQR,59z,59zOOQP,59|,59|O0yOaO,59|O1ROaO,59|O1aOqO,59|OOQP-E7h-E7hO1oQgO,59XOOQP,59X,59XO2PQaO'#DeO2_QgO'#DeO2oQgO'#DkOOQP'#Dk'#DkQ)jQaOOO3PQdO'#CsOOQO,59^,59^O3kQdO'#CuOOQO,59`,59`OOQO,59c,59cO4VQdO,59cO4aQdO'#CzO4kQ`O'#CzOOQO,59b,59bOOQU,5:Q,5:QOOQR1G.v1G.vO4pQ`O1G.vOOQU-E7d-E7dO4xQdO,59kOOQO,59k,59kO5SQdO'#DQO5^Q`O'#DQOOQO,5:d,5:dOOQU,5:R,5:ROOQR1G/U1G/UO5cQ`O1G/UOOQU-E7e-E7eO5kQgO'#DhO5xQcO1G/XOOQR1G/X1G/XOOQR,59q,59qO6TQgO,59qO6eQdO'#DiO6lQgO'#DiO7PQcO1G/[OOQR1G/[1G/[OOQR,59r,59rO#|QfO,59rOOQR1G/b1G/bO7_OWO1G/bO7dOaO1G/bOOQR,59y,59yOOQR,59{,59{OOQP1G/h1G/hO7lOaO1G/hO7tOaO1G/hO8POaO1G/hOOQP1G.s1G.sO8_QgO,5:POOQP,5:P,5:POOQP,5:V,5:VOOQP-E7i-E7iOOQO,59_,59_OOQO,59a,59aOOQO1G.}1G.}OOQO,59f,59fO8oQdO,59fOOQR7+$b7+$bP,XQ`O'#DfOOQO1G/V1G/VOOQO,59l,59lO8yQdO,59lOOQR7+$p7+$pP9TQ`O'#DgOOQR'#DT'#DTOOQR,5:S,5:SOOQR-E7f-E7fOOQR7+$s7+$sOOQR1G/]1G/]O9YQgO'#DYO9jQ`O'#DYOOQR,5:T,5:TO#|QfO'#DZO9oQcO'#DZOOQR-E7g-E7gOOQR7+$v7+$vOOQR1G/^1G/^OOQR7+$|7+$|O:QOWO7+$|OOQP7+%S7+%SO:VOaO7+%SO:_OaO7+%SOOQP1G/k1G/kOOQO1G/Q1G/QOOQO1G/W1G/WOOQR,59t,59tO:jQgO,59tOOQR,59u,59uO#|QfO,59uOOQR<<Hh<<HhOOQP<<Hn<<HnO:zOaO<<HnOOQR1G/`1G/`OOQR1G/a1G/aOOQPAN>YAN>Y",stateData:";S~O!fOS!gOS^OS~OP_OQbORSOTUOWROXROYYOZZO[XOcPOqQO!PVO!V[O!cTO~O`cO~P]OVkOWROXROYeOZfO[dOcPOmhOqQO~OboO~P!bOVtOWROXROYeOZfO[dOcPOmrOqQO~OpwO~P#WORSOTUOWROXROYYOZZO[XOcPOqQO!PVO!cTO~OSvP!avP!bvP~P#|OWROXROYeOZfO[dOcPOqQO~OmzO~P%OOm!OOUzP!azP!bzP!dzP~P#|O^!SO!b!QO!f!TO!g!RO~ORSOTUOWROXROcPOqQO!PVO!cTO~OY!UOP!QXQ!QX!V!QX!`!QXS!QX!a!QX!b!QXU!QXm!QX!d!QX~P&aO[!WOP!SXQ!SX!V!SX!`!SXS!SX!a!SX!b!SXU!SXm!SX!d!SX~P&aO^!ZO!W![O!b!YO!f!]O!g!YO~OP!_O!V[OQaX!`aX~OPaXQaX!VaX!`aX~P#|OP!bOQ!cO!V[O~OP_O!V[O~P#|OWROXROY!fOcPOqQObfXmfXofXpfX~OWROXRO[!hOcPOqQObhXmhXohXphX~ObeXmlXoeX~ObkXokX~P%OOm!kO~Om!lObnPonP~P%OOb!pOo!oO~Ob!pO~P!bOm!sOosXpsX~OosXpsX~P%OOm!uOotPptP~P%OOo!xOp!yO~Op!yO~P#WOS!|O!a#OO!b#OO~OUyX!ayX!byX!dyX~P#|Om#QO~OU#SO!a#UO!b#UO!d#RO~Om#WOUzX!azX!bzX!dzX~O]#XO~O!b#XO!g#YO~O^#ZO!b#XO!g#YO~OP!RXQ!RX!V!RX!`!RXS!RX!a!RX!b!RXU!RXm!RX!d!RX~P&aOP!TXQ!TX!V!TX!`!TXS!TX!a!TX!b!TXU!TXm!TX!d!TX~P&aO!b#^O!g#^O~O^#_O!b#^O!f#`O!g#^O~O^#_O!W#aO!b#^O!g#^O~OPaaQaa!Vaa!`aa~P#|OP#cO!V[OQ!XX!`!XX~OP!XXQ!XX!V!XX!`!XX~P#|OP_O!V[OQ!_X!`!_X~P#|OWROXROcPOqQObgXmgXogXpgX~OWROXROcPOqQObiXmiXoiXpiX~Obkaoka~P%OObnXonX~P%OOm#kO~Ob#lOo!oO~Oosapsa~P%OOotXptX~P%OOm#pO~Oo!xOp#qO~OSwP!awP!bwP~P#|OS!|O!a#vO!b#vO~OUya!aya!bya!dya~P#|Om#xO~P%OOm#{OU}P!a}P!b}P!d}P~P#|OU#SO!a$OO!b$OO!d#RO~O]$QO~O!b$QO!g$RO~O!b$SO!g$SO~O^$TO!b$SO!g$SO~O^$TO!b$SO!f$UO!g$SO~OP!XaQ!Xa!V!Xa!`!Xa~P#|Obnaona~P%OOotapta~P%OOo!xO~OU|X!a|X!b|X!d|X~P#|Om$ZO~Om$]OU}X!a}X!b}X!d}X~O]$^O~O!b$_O!g$_O~O^$`O!b$_O!g$_O~OU|a!a|a!b|a!d|a~P#|O!b$cO!g$cO~O",goto:",]!mPPPPPPPPPPPPPPPPP!nPP!v#v#|$`#|$c$f$j$nP%VPPP!v%Y%^%a%{&O%a&R&U&X&_&b%aP&e&{&e'O'RPP']'a'g'm's'y(XPPPPPPPP(_)e*X+c,VUaObcR#e!c!{ROPQSTUXY_bcdehknrtvz!O!U!W!_!b!c!f!h!k!l!s!u!|#Q#R#S#W#c#k#p#x#{$Z$]QmPR!qnqfPQThknrtv!k!l!s!u#R#k#pR!gdR!ieTlPnTjPnSiPnSqQvQ{TQ!mkQ!trQ!vtR#y#RR!nkTsQvR!wt!RWOSUXY_bcz!O!U!W!_!b!c!|#Q#S#W#c#x#{$Z$]RySR#t!|R|TR|UQ!PUR#|#SR#z#RR#z#SyZOSU_bcz!O!_!b!c!|#Q#S#W#c#x#{$Z$]R!VXR!XYa]O^abc!a!c!eT!da!eQnPR!rnQvQR!{vQ!}yR#u!}Q#T|R#}#TW^Obc!cS!^^!aT!aa!eQ!eaR#f!eW`Obc!cQxSS}U#SQ!`_Q#PzQ#V!OQ#b!_Q#d!bQ#s!|Q#w#QQ$P#WQ$V#cQ$Y#xQ$[#{Q$a$ZR$b$]xZOSU_bcz!O!_!b!c!|#Q#S#W#c#x#{$Z$]Q!VXQ!XYQ#[!UR#]!W!QWOSUXY_bcz!O!U!W!_!b!c!|#Q#S#W#c#x#{$Z$]pfPQThknrtv!k!l!s!u#R#k#pQ!gdQ!ieQ#g!fR#h!hSgPn^pQTkrtv#RQ!jhQ#i!kQ#j!lQ#n!sQ#o!uQ$W#kR$X#pQuQR!zv",nodeNames:"⚠ DirectiveEnd DocEnd - - ? ? ? Literal QuotedLiteral Anchor Alias Tag BlockLiteralContent Comment Stream BOM Document ] [ FlowSequence Item Tagged Anchored Anchored Tagged FlowMapping Pair Key : Pair , } { FlowMapping Pair Pair BlockSequence Item Item BlockMapping Pair Pair Key Pair Pair BlockLiteral BlockLiteralHeader Tagged Anchored Anchored Tagged Directive DirectiveName DirectiveContent Document",maxTerm:74,context:X1e,nodeProps:[["isolate",-3,8,9,14,""],["openedBy",18,"[",32,"{"],["closedBy",19,"]",33,"}"]],propSources:[i2e],skippedNodes:[0],repeatNodeCount:6,tokenData:"-Y~RnOX#PXY$QYZ$]Z]#P]^$]^p#Ppq$Qqs#Pst$btu#Puv$yv|#P|}&e}![#P![!]'O!]!`#P!`!a'i!a!}#P!}#O*g#O#P#P#P#Q+Q#Q#o#P#o#p+k#p#q'i#q#r,U#r;'S#P;'S;=`#z<%l?HT#P?HT?HU,o?HUO#PQ#UU!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PQ#kTOY#PZs#Pt;'S#P;'S;=`#z<%lO#PQ#}P;=`<%l#P~$VQ!f~XY$Qpq$Q~$bO!g~~$gS^~OY$bZ;'S$b;'S;=`$s<%lO$b~$vP;=`<%l$bR%OX!WQOX%kXY#PZ]%k]^#P^p%kpq#hq;'S%k;'S;=`&_<%lO%kR%rX!WQ!VPOX%kXY#PZ]%k]^#P^p%kpq#hq;'S%k;'S;=`&_<%lO%kR&bP;=`<%l%kR&lUoP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR'VUmP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR'p[!PP!WQOY#PZp#Ppq#hq{#P{|(f|}#P}!O(f!O!R#P!R![)p![;'S#P;'S;=`#z<%lO#PR(mW!PP!WQOY#PZp#Ppq#hq!R#P!R![)V![;'S#P;'S;=`#z<%lO#PR)^U!PP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR)wY!PP!WQOY#PZp#Ppq#hq{#P{|)V|}#P}!O)V!O;'S#P;'S;=`#z<%lO#PR*nUcP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR+XUbP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR+rUqP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR,]UpP!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#PR,vU`P!WQOY#PZp#Ppq#hq;'S#P;'S;=`#z<%lO#P",tokenizers:[Q1e,Y1e,t2e,n2e,0,1],topRules:{Stream:[0,15]},tokenPrec:0}),a2e=sy.define({name:"yaml",parser:s2e.configure({props:[c8.add({Stream:t=>{for(let e=t.node.resolve(t.pos,-1);e&&e.to>=t.pos;e=e.parent){if(e.name=="BlockLiteralContent"&&e.from<e.to)return t.baseIndentFor(e);if(e.name=="BlockLiteral")return t.baseIndentFor(e)+t.unit;if(e.name=="BlockSequence"||e.name=="BlockMapping")return t.column(e.from,1);if(e.name=="QuotedLiteral")return null;if(e.name=="Literal"){let n=t.column(e.from,1);if(n==t.lineIndent(e.from,1))return n;if(e.to>t.pos)return null}}return null},FlowMapping:Oj({closing:"}"}),FlowSequence:Oj({closing:"]"})}),h8.add({"FlowMapping FlowSequence":Uye,"Item Pair BlockLiteral":(t,e)=>({from:e.doc.lineAt(t.from).to,to:t.to})})]}),languageData:{commentTokens:{line:"#"},indentOnInput:/^\s*[\]\}]$/}});function o2e(){return new Mye(a2e)}const Jk=Symbol.for("yaml.alias"),fw=Symbol.for("yaml.document"),Al=Symbol.for("yaml.map"),FF=Symbol.for("yaml.pair"),Lo=Symbol.for("yaml.scalar"),Yd=Symbol.for("yaml.seq"),La=Symbol.for("yaml.node.type"),Jc=t=>!!t&&typeof t=="object"&&t[La]===Jk,hb=t=>!!t&&typeof t=="object"&&t[La]===fw,Fl=t=>!!t&&typeof t=="object"&&t[La]===Al,ci=t=>!!t&&typeof t=="object"&&t[La]===FF,jn=t=>!!t&&typeof t=="object"&&t[La]===Lo,Cp=t=>!!t&&typeof t=="object"&&t[La]===Yd;function ai(t){if(t&&typeof t=="object")switch(t[La]){case Al:case Yd:return!0}return!1}function ri(t){if(t&&typeof t=="object")switch(t[La]){case Jk:case Al:case Lo:case Yd:return!0}return!1}const IF=t=>(jn(t)||ai(t))&&!!t.anchor,pc=Symbol("break visit"),r2e=Symbol("skip children"),lm=Symbol("remove node");function Jd(t,e){const n=l2e(e);hb(t)?sd(null,t.contents,n,Object.freeze([t]))===lm&&(t.contents=null):sd(null,t,n,Object.freeze([]))}Jd.BREAK=pc;Jd.SKIP=r2e;Jd.REMOVE=lm;function sd(t,e,n,i){const s=c2e(t,e,n,i);if(ri(s)||ci(s))return u2e(t,i,s),sd(t,s,n,i);if(typeof s!="symbol"){if(ai(e)){i=Object.freeze(i.concat(e));for(let a=0;a<e.items.length;++a){const o=sd(a,e.items[a],n,i);if(typeof o=="number")a=o-1;else{if(o===pc)return pc;o===lm&&(e.items.splice(a,1),a-=1)}}}else if(ci(e)){i=Object.freeze(i.concat(e));const a=sd("key",e.key,n,i);if(a===pc)return pc;a===lm&&(e.key=null);const o=sd("value",e.value,n,i);if(o===pc)return pc;o===lm&&(e.value=null)}}return s}function l2e(t){return typeof t=="object"&&(t.Collection||t.Node||t.Value)?Object.assign({Alias:t.Node,Map:t.Node,Scalar:t.Node,Seq:t.Node},t.Value&&{Map:t.Value,Scalar:t.Value,Seq:t.Value},t.Collection&&{Map:t.Collection,Seq:t.Collection},t):t}function c2e(t,e,n,i){if(typeof n=="function")return n(t,e,i);if(Fl(e))return n.Map?.(t,e,i);if(Cp(e))return n.Seq?.(t,e,i);if(ci(e))return n.Pair?.(t,e,i);if(jn(e))return n.Scalar?.(t,e,i);if(Jc(e))return n.Alias?.(t,e,i)}function u2e(t,e,n){const i=e[e.length-1];if(ai(i))i.items[t]=n;else if(ci(i))t==="key"?i.key=n:i.value=n;else if(hb(i))i.contents=n;else{const s=Jc(i)?"alias":"scalar";throw new Error(`Cannot replace node with ${s} parent`)}}const d2e={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},h2e=t=>t.replace(/[!,[\]{}]/g,e=>d2e[e]);class fs{constructor(e,n){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},fs.defaultYaml,e),this.tags=Object.assign({},fs.defaultTags,n)}clone(){const e=new fs(this.yaml,this.tags);return e.docStart=this.docStart,e}atDocument(){const e=new fs(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:fs.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},fs.defaultTags);break}return e}add(e,n){this.atNextDocument&&(this.yaml={explicit:fs.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},fs.defaultTags),this.atNextDocument=!1);const i=e.trim().split(/[ \t]+/),s=i.shift();switch(s){case"%TAG":{if(i.length!==2&&(n(0,"%TAG directive should contain exactly two parts"),i.length<2))return!1;const[a,o]=i;return this.tags[a]=o,!0}case"%YAML":{if(this.yaml.explicit=!0,i.length!==1)return n(0,"%YAML directive should contain exactly one part"),!1;const[a]=i;if(a==="1.1"||a==="1.2")return this.yaml.version=a,!0;{const o=/^\d+\.\d+$/.test(a);return n(6,`Unsupported YAML version ${a}`,o),!1}}default:return n(0,`Unknown directive ${s}`,!0),!1}}tagName(e,n){if(e==="!")return"!";if(e[0]!=="!")return n(`Not a valid tag: ${e}`),null;if(e[1]==="<"){const o=e.slice(2,-1);return o==="!"||o==="!!"?(n(`Verbatim tags aren't resolved, so ${e} is invalid.`),null):(e[e.length-1]!==">"&&n("Verbatim tags must end with a >"),o)}const[,i,s]=e.match(/^(.*!)([^!]*)$/s);s||n(`The ${e} tag has no suffix`);const a=this.tags[i];if(a)try{return a+decodeURIComponent(s)}catch(o){return n(String(o)),null}return i==="!"?e:(n(`Could not resolve tag: ${e}`),null)}tagString(e){for(const[n,i]of Object.entries(this.tags))if(e.startsWith(i))return n+h2e(e.substring(i.length));return e[0]==="!"?e:`!<${e}>`}toString(e){const n=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],i=Object.entries(this.tags);let s;if(e&&i.length>0&&ri(e.contents)){const a={};Jd(e.contents,(o,r)=>{ri(r)&&r.tag&&(a[r.tag]=!0)}),s=Object.keys(a)}else s=[];for(const[a,o]of i)a==="!!"&&o==="tag:yaml.org,2002:"||(!e||s.some(r=>r.startsWith(o)))&&n.push(`%TAG ${a} ${o}`);return n.join(`
`)}}fs.defaultYaml={explicit:!1,version:"1.2"};fs.defaultTags={"!!":"tag:yaml.org,2002:"};function BF(t){if(/[\x00-\x19\s,[\]{}]/.test(t)){const n=`Anchor must not contain whitespace or control characters: ${JSON.stringify(t)}`;throw new Error(n)}return!0}function UF(t){const e=new Set;return Jd(t,{Value(n,i){i.anchor&&e.add(i.anchor)}}),e}function qF(t,e){for(let n=1;;++n){const i=`${t}${n}`;if(!e.has(i))return i}}function f2e(t,e){const n=[],i=new Map;let s=null;return{onAnchor:a=>{n.push(a),s??(s=UF(t));const o=qF(e,s);return s.add(o),o},setAnchors:()=>{for(const a of n){const o=i.get(a);if(typeof o=="object"&&o.anchor&&(jn(o.node)||ai(o.node)))o.node.anchor=o.anchor;else{const r=new Error("Failed to resolve repeated object (this should not happen)");throw r.source=a,r}}},sourceObjects:i}}function ad(t,e,n,i){if(i&&typeof i=="object")if(Array.isArray(i))for(let s=0,a=i.length;s<a;++s){const o=i[s],r=ad(t,i,String(s),o);r===void 0?delete i[s]:r!==o&&(i[s]=r)}else if(i instanceof Map)for(const s of Array.from(i.keys())){const a=i.get(s),o=ad(t,i,s,a);o===void 0?i.delete(s):o!==a&&i.set(s,o)}else if(i instanceof Set)for(const s of Array.from(i)){const a=ad(t,i,s,s);a===void 0?i.delete(s):a!==s&&(i.delete(s),i.add(a))}else for(const[s,a]of Object.entries(i)){const o=ad(t,i,s,a);o===void 0?delete i[s]:o!==a&&(i[s]=o)}return t.call(e,n,i)}function Ca(t,e,n){if(Array.isArray(t))return t.map((i,s)=>Ca(i,String(s),n));if(t&&typeof t.toJSON=="function"){if(!n||!IF(t))return t.toJSON(e,n);const i={aliasCount:0,count:1,res:void 0};n.anchors.set(t,i),n.onCreate=a=>{i.res=a,delete n.onCreate};const s=t.toJSON(e,n);return n.onCreate&&n.onCreate(s),s}return typeof t=="bigint"&&!n?.keep?Number(t):t}class Zk{constructor(e){Object.defineProperty(this,La,{value:e})}clone(){const e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}toJS(e,{mapAsMap:n,maxAliasCount:i,onAnchor:s,reviver:a}={}){if(!hb(e))throw new TypeError("A document argument is required");const o={anchors:new Map,doc:e,keep:!0,mapAsMap:n===!0,mapKeyWarned:!1,maxAliasCount:typeof i=="number"?i:100},r=Ca(this,"",o);if(typeof s=="function")for(const{count:c,res:d}of o.anchors.values())s(d,c);return typeof a=="function"?ad(a,{"":r},"",r):r}}class eC extends Zk{constructor(e){super(Jk),this.source=e,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(e,n){let i;n?.aliasResolveCache?i=n.aliasResolveCache:(i=[],Jd(e,{Node:(a,o)=>{(Jc(o)||IF(o))&&i.push(o)}}),n&&(n.aliasResolveCache=i));let s;for(const a of i){if(a===this)break;a.anchor===this.source&&(s=a)}return s}toJSON(e,n){if(!n)return{source:this.source};const{anchors:i,doc:s,maxAliasCount:a}=n,o=this.resolve(s,n);if(!o){const c=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(c)}let r=i.get(o);if(r||(Ca(o,null,n),r=i.get(o)),r?.res===void 0){const c="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(c)}if(a>=0&&(r.count+=1,r.aliasCount===0&&(r.aliasCount=x0(s,o,i)),r.count*r.aliasCount>a)){const c="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(c)}return r.res}toString(e,n,i){const s=`*${this.source}`;if(e){if(BF(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){const a=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(a)}if(e.implicitKey)return`${s} `}return s}}function x0(t,e,n){if(Jc(e)){const i=e.resolve(t),s=n&&i&&n.get(i);return s?s.count*s.aliasCount:0}else if(ai(e)){let i=0;for(const s of e.items){const a=x0(t,s,n);a>i&&(i=a)}return i}else if(ci(e)){const i=x0(t,e.key,n),s=x0(t,e.value,n);return Math.max(i,s)}return 1}const zF=t=>!t||typeof t!="function"&&typeof t!="object";class Ot extends Zk{constructor(e){super(Lo),this.value=e}toJSON(e,n){return n?.keep?this.value:Ca(this.value,e,n)}toString(){return String(this.value)}}Ot.BLOCK_FOLDED="BLOCK_FOLDED";Ot.BLOCK_LITERAL="BLOCK_LITERAL";Ot.PLAIN="PLAIN";Ot.QUOTE_DOUBLE="QUOTE_DOUBLE";Ot.QUOTE_SINGLE="QUOTE_SINGLE";const m2e="tag:yaml.org,2002:";function p2e(t,e,n){if(e){const i=n.filter(a=>a.tag===e),s=i.find(a=>!a.format)??i[0];if(!s)throw new Error(`Tag ${e} not found`);return s}return n.find(i=>i.identify?.(t)&&!i.format)}function Bm(t,e,n){if(hb(t)&&(t=t.contents),ri(t))return t;if(ci(t)){const p=n.schema[Al].createNode?.(n.schema,null,n);return p.items.push(t),p}(t instanceof String||t instanceof Number||t instanceof Boolean||typeof BigInt<"u"&&t instanceof BigInt)&&(t=t.valueOf());const{aliasDuplicateObjects:i,onAnchor:s,onTagObj:a,schema:o,sourceObjects:r}=n;let c;if(i&&t&&typeof t=="object"){if(c=r.get(t),c)return c.anchor??(c.anchor=s(t)),new eC(c.anchor);c={anchor:null,node:null},r.set(t,c)}e?.startsWith("!!")&&(e=m2e+e.slice(2));let d=p2e(t,e,o.tags);if(!d){if(t&&typeof t.toJSON=="function"&&(t=t.toJSON()),!t||typeof t!="object"){const p=new Ot(t);return c&&(c.node=p),p}d=t instanceof Map?o[Al]:Symbol.iterator in Object(t)?o[Yd]:o[Al]}a&&(a(d),delete n.onTagObj);const f=d?.createNode?d.createNode(n.schema,t,n):typeof d?.nodeClass?.from=="function"?d.nodeClass.from(n.schema,t,n):new Ot(t);return e?f.tag=e:d.default||(f.tag=d.tag),c&&(c.node=f),f}function xy(t,e,n){let i=n;for(let s=e.length-1;s>=0;--s){const a=e[s];if(typeof a=="number"&&Number.isInteger(a)&&a>=0){const o=[];o[a]=i,i=o}else i=new Map([[a,i]])}return Bm(i,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema:t,sourceObjects:new Map})}const Df=t=>t==null||typeof t=="object"&&!!t[Symbol.iterator]().next().done;class KF extends Zk{constructor(e,n){super(e),Object.defineProperty(this,"schema",{value:n,configurable:!0,enumerable:!1,writable:!0})}clone(e){const n=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(n.schema=e),n.items=n.items.map(i=>ri(i)||ci(i)?i.clone(e):i),this.range&&(n.range=this.range.slice()),n}addIn(e,n){if(Df(e))this.add(n);else{const[i,...s]=e,a=this.get(i,!0);if(ai(a))a.addIn(s,n);else if(a===void 0&&this.schema)this.set(i,xy(this.schema,s,n));else throw new Error(`Expected YAML collection at ${i}. Remaining path: ${s}`)}}deleteIn(e){const[n,...i]=e;if(i.length===0)return this.delete(n);const s=this.get(n,!0);if(ai(s))return s.deleteIn(i);throw new Error(`Expected YAML collection at ${n}. Remaining path: ${i}`)}getIn(e,n){const[i,...s]=e,a=this.get(i,!0);return s.length===0?!n&&jn(a)?a.value:a:ai(a)?a.getIn(s,n):void 0}hasAllNullValues(e){return this.items.every(n=>{if(!ci(n))return!1;const i=n.value;return i==null||e&&jn(i)&&i.value==null&&!i.commentBefore&&!i.comment&&!i.tag})}hasIn(e){const[n,...i]=e;if(i.length===0)return this.has(n);const s=this.get(n,!0);return ai(s)?s.hasIn(i):!1}setIn(e,n){const[i,...s]=e;if(s.length===0)this.set(i,n);else{const a=this.get(i,!0);if(ai(a))a.setIn(s,n);else if(a===void 0&&this.schema)this.set(i,xy(this.schema,s,n));else throw new Error(`Expected YAML collection at ${i}. Remaining path: ${s}`)}}}const g2e=t=>t.replace(/^(?!$)(?: $)?/gm,"#");function Sr(t,e){return/^\n+$/.test(t)?t.substring(1):e?t.replace(/^(?! *$)/gm,e):t}const Nc=(t,e,n)=>t.endsWith(`
`)?Sr(n,e):n.includes(`
`)?`
`+Sr(n,e):(t.endsWith(" ")?"":" ")+n,VF="flow",mw="block",S0="quoted";function fb(t,e,n="flow",{indentAtStart:i,lineWidth:s=80,minContentWidth:a=20,onFold:o,onOverflow:r}={}){if(!s||s<0)return t;s<a&&(a=0);const c=Math.max(1+a,1+s-e.length);if(t.length<=c)return t;const d=[],f={};let p=s-e.length;typeof i=="number"&&(i>s-Math.max(2,a)?d.push(0):p=s-i);let g,y,_=!1,v=-1,x=-1,k=-1;n===mw&&(v=CR(t,v,e.length),v!==-1&&(p=v+c));for(let N;N=t[v+=1];){if(n===S0&&N==="\\"){switch(x=v,t[v+1]){case"x":v+=3;break;case"u":v+=5;break;case"U":v+=9;break;default:v+=1}k=v}if(N===`
`)n===mw&&(v=CR(t,v,e.length)),p=v+e.length+c,g=void 0;else{if(N===" "&&y&&y!==" "&&y!==`
`&&y!==" "){const L=t[v+1];L&&L!==" "&&L!==`
`&&L!==" "&&(g=v)}if(v>=p)if(g)d.push(g),p=g+c,g=void 0;else if(n===S0){for(;y===" "||y===" ";)y=N,N=t[v+=1],_=!0;const L=v>k+1?v-2:x-1;if(f[L])return t;d.push(L),f[L]=!0,p=L+c,g=void 0}else _=!0}y=N}if(_&&r&&r(),d.length===0)return t;o&&o();let C=t.slice(0,d[0]);for(let N=0;N<d.length;++N){const L=d[N],M=d[N+1]||t.length;L===0?C=`
${e}${t.slice(0,M)}`:(n===S0&&f[L]&&(C+=`${t[L]}\\`),C+=`
${e}${t.slice(L+1,M)}`)}return C}function CR(t,e,n){let i=e,s=e+1,a=t[s];for(;a===" "||a===" ";)if(e<s+n)a=t[++e];else{do a=t[++e];while(a&&a!==`
`);i=e,s=e+1,a=t[s]}return i}const mb=(t,e)=>({indentAtStart:e?t.indent.length:t.indentAtStart,lineWidth:t.options.lineWidth,minContentWidth:t.options.minContentWidth}),pb=t=>/^(%|---|\.\.\.)/m.test(t);function _2e(t,e,n){if(!e||e<0)return!1;const i=e-n,s=t.length;if(s<=i)return!1;for(let a=0,o=0;a<s;++a)if(t[a]===`
`){if(a-o>i)return!0;if(o=a+1,s-o<=i)return!1}return!0}function cm(t,e){const n=JSON.stringify(t);if(e.options.doubleQuotedAsJSON)return n;const{implicitKey:i}=e,s=e.options.doubleQuotedMinMultiLineLength,a=e.indent||(pb(t)?" ":"");let o="",r=0;for(let c=0,d=n[c];d;d=n[++c])if(d===" "&&n[c+1]==="\\"&&n[c+2]==="n"&&(o+=n.slice(r,c)+"\\ ",c+=1,r=c,d="\\"),d==="\\")switch(n[c+1]){case"u":{o+=n.slice(r,c);const f=n.substr(c+2,4);switch(f){case"0000":o+="\\0";break;case"0007":o+="\\a";break;case"000b":o+="\\v";break;case"001b":o+="\\e";break;case"0085":o+="\\N";break;case"00a0":o+="\\_";break;case"2028":o+="\\L";break;case"2029":o+="\\P";break;default:f.substr(0,2)==="00"?o+="\\x"+f.substr(2):o+=n.substr(c,6)}c+=5,r=c+1}break;case"n":if(i||n[c+2]==='"'||n.length<s)c+=1;else{for(o+=n.slice(r,c)+`
`;n[c+2]==="\\"&&n[c+3]==="n"&&n[c+4]!=='"';)o+=`
`,c+=2;o+=a,n[c+2]===" "&&(o+="\\"),c+=1,r=c+1}break;default:c+=1}return o=r?o+n.slice(r):n,i?o:fb(o,a,S0,mb(e,!1))}function pw(t,e){if(e.options.singleQuote===!1||e.implicitKey&&t.includes(`
`)||/[ \t]\n|\n[ \t]/.test(t))return cm(t,e);const n=e.indent||(pb(t)?" ":""),i="'"+t.replace(/'/g,"''").replace(/\n+/g,`$&
${n}`)+"'";return e.implicitKey?i:fb(i,n,VF,mb(e,!1))}function od(t,e){const{singleQuote:n}=e.options;let i;if(n===!1)i=cm;else{const s=t.includes('"'),a=t.includes("'");s&&!a?i=pw:a&&!s?i=cm:i=n?pw:cm}return i(t,e)}let gw;try{gw=new RegExp(`(^|(?<!
))
+(?!
|$)`,"g")}catch{gw=/\n+(?!\n|$)/g}function w0({comment:t,type:e,value:n},i,s,a){const{blockQuote:o,commentString:r,lineWidth:c}=i.options;if(!o||/\n[\t ]+$/.test(n))return od(n,i);const d=i.indent||(i.forceBlockIndent||pb(n)?" ":""),f=o==="literal"?!0:o==="folded"||e===Ot.BLOCK_FOLDED?!1:e===Ot.BLOCK_LITERAL?!0:!_2e(n,c,d.length);if(!n)return f?`|
`:`>
`;let p,g;for(g=n.length;g>0;--g){const M=n[g-1];if(M!==`
`&&M!==" "&&M!==" ")break}let y=n.substring(g);const _=y.indexOf(`
`);_===-1?p="-":n===y||_!==y.length-1?(p="+",a&&a()):p="",y&&(n=n.slice(0,-y.length),y[y.length-1]===`
`&&(y=y.slice(0,-1)),y=y.replace(gw,`$&${d}`));let v=!1,x,k=-1;for(x=0;x<n.length;++x){const M=n[x];if(M===" ")v=!0;else if(M===`
`)k=x;else break}let C=n.substring(0,k<x?k+1:x);C&&(n=n.substring(C.length),C=C.replace(/\n+/g,`$&${d}`));let L=(v?d?"2":"1":"")+p;if(t&&(L+=" "+r(t.replace(/ ?[\r\n]+/g," ")),s&&s()),!f){const M=n.replace(/\n+/g,`
$&`).replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,`$&${d}`);let O=!1;const T=mb(i,!0);o!=="folded"&&e!==Ot.BLOCK_FOLDED&&(T.onOverflow=()=>{O=!0});const P=fb(`${C}${M}${y}`,d,mw,T);if(!O)return`>${L}
${d}${P}`}return n=n.replace(/\n+/g,`$&${d}`),`|${L}
${d}${C}${n}${y}`}function y2e(t,e,n,i){const{type:s,value:a}=t,{actualString:o,implicitKey:r,indent:c,indentStep:d,inFlow:f}=e;if(r&&a.includes(`
`)||f&&/[[\]{},]/.test(a))return od(a,e);if(/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(a))return r||f||!a.includes(`
`)?od(a,e):w0(t,e,n,i);if(!r&&!f&&s!==Ot.PLAIN&&a.includes(`
`))return w0(t,e,n,i);if(pb(a)){if(c==="")return e.forceBlockIndent=!0,w0(t,e,n,i);if(r&&c===d)return od(a,e)}const p=a.replace(/\n+/g,`$&
${c}`);if(o){const g=v=>v.default&&v.tag!=="tag:yaml.org,2002:str"&&v.test?.test(p),{compat:y,tags:_}=e.doc.schema;if(_.some(g)||y?.some(g))return od(a,e)}return r?p:fb(p,c,VF,mb(e,!1))}function tC(t,e,n,i){const{implicitKey:s,inFlow:a}=e,o=typeof t.value=="string"?t:Object.assign({},t,{value:String(t.value)});let{type:r}=t;r!==Ot.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(o.value)&&(r=Ot.QUOTE_DOUBLE);const c=f=>{switch(f){case Ot.BLOCK_FOLDED:case Ot.BLOCK_LITERAL:return s||a?od(o.value,e):w0(o,e,n,i);case Ot.QUOTE_DOUBLE:return cm(o.value,e);case Ot.QUOTE_SINGLE:return pw(o.value,e);case Ot.PLAIN:return y2e(o,e,n,i);default:return null}};let d=c(r);if(d===null){const{defaultKeyType:f,defaultStringType:p}=e.options,g=s&&f||p;if(d=c(g),d===null)throw new Error(`Unsupported default string type ${g}`)}return d}function HF(t,e){const n=Object.assign({blockQuote:!0,commentString:g2e,defaultKeyType:null,defaultStringType:"PLAIN",directives:null,doubleQuotedAsJSON:!1,doubleQuotedMinMultiLineLength:40,falseStr:"false",flowCollectionPadding:!0,indentSeq:!0,lineWidth:80,minContentWidth:20,nullStr:"null",simpleKeys:!1,singleQuote:null,trueStr:"true",verifyAliasOrder:!0},t.schema.toStringOptions,e);let i;switch(n.collectionStyle){case"block":i=!1;break;case"flow":i=!0;break;default:i=null}return{anchors:new Set,doc:t,flowCollectionPadding:n.flowCollectionPadding?" ":"",indent:"",indentStep:typeof n.indent=="number"?" ".repeat(n.indent):" ",inFlow:i,options:n}}function b2e(t,e){if(e.tag){const s=t.filter(a=>a.tag===e.tag);if(s.length>0)return s.find(a=>a.format===e.format)??s[0]}let n,i;if(jn(e)){i=e.value;let s=t.filter(a=>a.identify?.(i));if(s.length>1){const a=s.filter(o=>o.test);a.length>0&&(s=a)}n=s.find(a=>a.format===e.format)??s.find(a=>!a.format)}else i=e,n=t.find(s=>s.nodeClass&&i instanceof s.nodeClass);if(!n){const s=i?.constructor?.name??(i===null?"null":typeof i);throw new Error(`Tag not resolved for ${s} value`)}return n}function v2e(t,e,{anchors:n,doc:i}){if(!i.directives)return"";const s=[],a=(jn(t)||ai(t))&&t.anchor;a&&BF(a)&&(n.add(a),s.push(`&${a}`));const o=t.tag??(e.default?null:e.tag);return o&&s.push(i.directives.tagString(o)),s.join(" ")}function Id(t,e,n,i){if(ci(t))return t.toString(e,n,i);if(Jc(t)){if(e.doc.directives)return t.toString(e);if(e.resolvedAliases?.has(t))throw new TypeError("Cannot stringify circular structure without alias nodes");e.resolvedAliases?e.resolvedAliases.add(t):e.resolvedAliases=new Set([t]),t=t.resolve(e.doc)}let s;const a=ri(t)?t:e.doc.createNode(t,{onTagObj:c=>s=c});s??(s=b2e(e.doc.schema.tags,a));const o=v2e(a,s,e);o.length>0&&(e.indentAtStart=(e.indentAtStart??0)+o.length+1);const r=typeof s.stringify=="function"?s.stringify(a,e,n,i):jn(a)?tC(a,e,n,i):a.toString(e,n,i);return o?jn(a)||r[0]==="{"||r[0]==="["?`${o} ${r}`:`${o}
${e.indent}${r}`:r}function x2e({key:t,value:e},n,i,s){const{allNullValues:a,doc:o,indent:r,indentStep:c,options:{commentString:d,indentSeq:f,simpleKeys:p}}=n;let g=ri(t)&&t.comment||null;if(p){if(g)throw new Error("With simple keys, key nodes cannot have comments");if(ai(t)||!ri(t)&&typeof t=="object"){const T="With simple keys, collection cannot be used as a key value";throw new Error(T)}}let y=!p&&(!t||g&&e==null&&!n.inFlow||ai(t)||(jn(t)?t.type===Ot.BLOCK_FOLDED||t.type===Ot.BLOCK_LITERAL:typeof t=="object"));n=Object.assign({},n,{allNullValues:!1,implicitKey:!y&&(p||!a),indent:r+c});let _=!1,v=!1,x=Id(t,n,()=>_=!0,()=>v=!0);if(!y&&!n.inFlow&&x.length>1024){if(p)throw new Error("With simple keys, single line scalar must not span more than 1024 characters");y=!0}if(n.inFlow){if(a||e==null)return _&&i&&i(),x===""?"?":y?`? ${x}`:x}else if(a&&!p||e==null&&y)return x=`? ${x}`,g&&!_?x+=Nc(x,n.indent,d(g)):v&&s&&s(),x;_&&(g=null),y?(g&&(x+=Nc(x,n.indent,d(g))),x=`? ${x}
${r}:`):(x=`${x}:`,g&&(x+=Nc(x,n.indent,d(g))));let k,C,N;ri(e)?(k=!!e.spaceBefore,C=e.commentBefore,N=e.comment):(k=!1,C=null,N=null,e&&typeof e=="object"&&(e=o.createNode(e))),n.implicitKey=!1,!y&&!g&&jn(e)&&(n.indentAtStart=x.length+1),v=!1,!f&&c.length>=2&&!n.inFlow&&!y&&Cp(e)&&!e.flow&&!e.tag&&!e.anchor&&(n.indent=n.indent.substring(2));let L=!1;const M=Id(e,n,()=>L=!0,()=>v=!0);let O=" ";if(g||k||C){if(O=k?`
`:"",C){const T=d(C);O+=`
${Sr(T,n.indent)}`}M===""&&!n.inFlow?O===`
`&&N&&(O=`
`):O+=`
${n.indent}`}else if(!y&&ai(e)){const T=M[0],P=M.indexOf(`
`),E=P!==-1,R=n.inFlow??e.flow??e.items.length===0;if(E||!R){let q=!1;if(E&&(T==="&"||T==="!")){let I=M.indexOf(" ");T==="&"&&I!==-1&&I<P&&M[I+1]==="!"&&(I=M.indexOf(" ",I+1)),(I===-1||P<I)&&(q=!0)}q||(O=`
${n.indent}`)}}else(M===""||M[0]===`
`)&&(O="");return x+=O+M,n.inFlow?L&&i&&i():N&&!L?x+=Nc(x,n.indent,d(N)):v&&s&&s(),x}function WF(t,e){(t==="debug"||t==="warn")&&console.warn(e)}const z_="<<",Cr={identify:t=>t===z_||typeof t=="symbol"&&t.description===z_,default:"key",tag:"tag:yaml.org,2002:merge",test:/^<<$/,resolve:()=>Object.assign(new Ot(Symbol(z_)),{addToJSMap:GF}),stringify:()=>z_},S2e=(t,e)=>(Cr.identify(e)||jn(e)&&(!e.type||e.type===Ot.PLAIN)&&Cr.identify(e.value))&&t?.doc.schema.tags.some(n=>n.tag===Cr.tag&&n.default);function GF(t,e,n){if(n=t&&Jc(n)?n.resolve(t.doc):n,Cp(n))for(const i of n.items)r2(t,e,i);else if(Array.isArray(n))for(const i of n)r2(t,e,i);else r2(t,e,n)}function r2(t,e,n){const i=t&&Jc(n)?n.resolve(t.doc):n;if(!Fl(i))throw new Error("Merge sources must be maps or map aliases");const s=i.toJSON(null,t,Map);for(const[a,o]of s)e instanceof Map?e.has(a)||e.set(a,o):e instanceof Set?e.add(a):Object.prototype.hasOwnProperty.call(e,a)||Object.defineProperty(e,a,{value:o,writable:!0,enumerable:!0,configurable:!0});return e}function $F(t,e,{key:n,value:i}){if(ri(n)&&n.addToJSMap)n.addToJSMap(t,e,i);else if(S2e(t,n))GF(t,e,i);else{const s=Ca(n,"",t);if(e instanceof Map)e.set(s,Ca(i,s,t));else if(e instanceof Set)e.add(s);else{const a=w2e(n,s,t),o=Ca(i,a,t);a in e?Object.defineProperty(e,a,{value:o,writable:!0,enumerable:!0,configurable:!0}):e[a]=o}}return e}function w2e(t,e,n){if(e===null)return"";if(typeof e!="object")return String(e);if(ri(t)&&n?.doc){const i=HF(n.doc,{});i.anchors=new Set;for(const a of n.anchors.keys())i.anchors.add(a.anchor);i.inFlow=!0,i.inStringifyKey=!0;const s=t.toString(i);if(!n.mapKeyWarned){let a=JSON.stringify(s);a.length>40&&(a=a.substring(0,36)+'..."'),WF(n.doc.options.logLevel,`Keys with collection values will be stringified due to JS Object restrictions: ${a}. Set mapAsMap: true to use object keys.`),n.mapKeyWarned=!0}return s}return JSON.stringify(e)}function nC(t,e,n){const i=Bm(t,void 0,n),s=Bm(e,void 0,n);return new xs(i,s)}class xs{constructor(e,n=null){Object.defineProperty(this,La,{value:FF}),this.key=e,this.value=n}clone(e){let{key:n,value:i}=this;return ri(n)&&(n=n.clone(e)),ri(i)&&(i=i.clone(e)),new xs(n,i)}toJSON(e,n){const i=n?.mapAsMap?new Map:{};return $F(n,i,this)}toString(e,n,i){return e?.doc?x2e(this,e,n,i):JSON.stringify(this)}}function XF(t,e,n){return(e.inFlow??t.flow?C2e:k2e)(t,e,n)}function k2e({comment:t,items:e},n,{blockItemPrefix:i,flowChars:s,itemIndent:a,onChompKeep:o,onComment:r}){const{indent:c,options:{commentString:d}}=n,f=Object.assign({},n,{indent:a,type:null});let p=!1;const g=[];for(let _=0;_<e.length;++_){const v=e[_];let x=null;if(ri(v))!p&&v.spaceBefore&&g.push(""),Sy(n,g,v.commentBefore,p),v.comment&&(x=v.comment);else if(ci(v)){const C=ri(v.key)?v.key:null;C&&(!p&&C.spaceBefore&&g.push(""),Sy(n,g,C.commentBefore,p))}p=!1;let k=Id(v,f,()=>x=null,()=>p=!0);x&&(k+=Nc(k,a,d(x))),p&&x&&(p=!1),g.push(i+k)}let y;if(g.length===0)y=s.start+s.end;else{y=g[0];for(let _=1;_<g.length;++_){const v=g[_];y+=v?`
${c}${v}`:`
`}}return t?(y+=`
`+Sr(d(t),c),r&&r()):p&&o&&o(),y}function C2e({items:t},e,{flowChars:n,itemIndent:i}){const{indent:s,indentStep:a,flowCollectionPadding:o,options:{commentString:r}}=e;i+=a;const c=Object.assign({},e,{indent:i,inFlow:!0,type:null});let d=!1,f=0;const p=[];for(let _=0;_<t.length;++_){const v=t[_];let x=null;if(ri(v))v.spaceBefore&&p.push(""),Sy(e,p,v.commentBefore,!1),v.comment&&(x=v.comment);else if(ci(v)){const C=ri(v.key)?v.key:null;C&&(C.spaceBefore&&p.push(""),Sy(e,p,C.commentBefore,!1),C.comment&&(d=!0));const N=ri(v.value)?v.value:null;N?(N.comment&&(x=N.comment),N.commentBefore&&(d=!0)):v.value==null&&C?.comment&&(x=C.comment)}x&&(d=!0);let k=Id(v,c,()=>x=null);_<t.length-1&&(k+=","),x&&(k+=Nc(k,i,r(x))),!d&&(p.length>f||k.includes(`
`))&&(d=!0),p.push(k),f=p.length}const{start:g,end:y}=n;if(p.length===0)return g+y;if(!d){const _=p.reduce((v,x)=>v+x.length+2,2);d=e.options.lineWidth>0&&_>e.options.lineWidth}if(d){let _=g;for(const v of p)_+=v?`
${a}${s}${v}`:`
`;return`${_}
${s}${y}`}else return`${g}${o}${p.join(" ")}${o}${y}`}function Sy({indent:t,options:{commentString:e}},n,i,s){if(i&&s&&(i=i.replace(/^\n+/,"")),i){const a=Sr(e(i),t);n.push(a.trimStart())}}function Tc(t,e){const n=jn(e)?e.value:e;for(const i of t)if(ci(i)&&(i.key===e||i.key===n||jn(i.key)&&i.key.value===n))return i}class _a extends KF{static get tagName(){return"tag:yaml.org,2002:map"}constructor(e){super(Al,e),this.items=[]}static from(e,n,i){const{keepUndefined:s,replacer:a}=i,o=new this(e),r=(c,d)=>{if(typeof a=="function")d=a.call(n,c,d);else if(Array.isArray(a)&&!a.includes(c))return;(d!==void 0||s)&&o.items.push(nC(c,d,i))};if(n instanceof Map)for(const[c,d]of n)r(c,d);else if(n&&typeof n=="object")for(const c of Object.keys(n))r(c,n[c]);return typeof e.sortMapEntries=="function"&&o.items.sort(e.sortMapEntries),o}add(e,n){let i;ci(e)?i=e:!e||typeof e!="object"||!("key"in e)?i=new xs(e,e?.value):i=new xs(e.key,e.value);const s=Tc(this.items,i.key),a=this.schema?.sortMapEntries;if(s){if(!n)throw new Error(`Key ${i.key} already set`);jn(s.value)&&zF(i.value)?s.value.value=i.value:s.value=i.value}else if(a){const o=this.items.findIndex(r=>a(i,r)<0);o===-1?this.items.push(i):this.items.splice(o,0,i)}else this.items.push(i)}delete(e){const n=Tc(this.items,e);return n?this.items.splice(this.items.indexOf(n),1).length>0:!1}get(e,n){const s=Tc(this.items,e)?.value;return(!n&&jn(s)?s.value:s)??void 0}has(e){return!!Tc(this.items,e)}set(e,n){this.add(new xs(e,n),!0)}toJSON(e,n,i){const s=i?new i:n?.mapAsMap?new Map:{};n?.onCreate&&n.onCreate(s);for(const a of this.items)$F(n,s,a);return s}toString(e,n,i){if(!e)return JSON.stringify(this);for(const s of this.items)if(!ci(s))throw new Error(`Map items must all be pairs; found ${JSON.stringify(s)} instead`);return!e.allNullValues&&this.hasAllNullValues(!1)&&(e=Object.assign({},e,{allNullValues:!0})),XF(this,e,{blockItemPrefix:"",flowChars:{start:"{",end:"}"},itemIndent:e.indent||"",onChompKeep:i,onComment:n})}}const Zd={collection:"map",default:!0,nodeClass:_a,tag:"tag:yaml.org,2002:map",resolve(t,e){return Fl(t)||e("Expected a mapping for this tag"),t},createNode:(t,e,n)=>_a.from(t,e,n)};class Vc extends KF{static get tagName(){return"tag:yaml.org,2002:seq"}constructor(e){super(Yd,e),this.items=[]}add(e){this.items.push(e)}delete(e){const n=K_(e);return typeof n!="number"?!1:this.items.splice(n,1).length>0}get(e,n){const i=K_(e);if(typeof i!="number")return;const s=this.items[i];return!n&&jn(s)?s.value:s}has(e){const n=K_(e);return typeof n=="number"&&n<this.items.length}set(e,n){const i=K_(e);if(typeof i!="number")throw new Error(`Expected a valid index, not ${e}.`);const s=this.items[i];jn(s)&&zF(n)?s.value=n:this.items[i]=n}toJSON(e,n){const i=[];n?.onCreate&&n.onCreate(i);let s=0;for(const a of this.items)i.push(Ca(a,String(s++),n));return i}toString(e,n,i){return e?XF(this,e,{blockItemPrefix:"- ",flowChars:{start:"[",end:"]"},itemIndent:(e.indent||"")+" ",onChompKeep:i,onComment:n}):JSON.stringify(this)}static from(e,n,i){const{replacer:s}=i,a=new this(e);if(n&&Symbol.iterator in Object(n)){let o=0;for(let r of n){if(typeof s=="function"){const c=n instanceof Set?r:String(o++);r=s.call(n,c,r)}a.items.push(Bm(r,void 0,i))}}return a}}function K_(t){let e=jn(t)?t.value:t;return e&&typeof e=="string"&&(e=Number(e)),typeof e=="number"&&Number.isInteger(e)&&e>=0?e:null}const eh={collection:"seq",default:!0,nodeClass:Vc,tag:"tag:yaml.org,2002:seq",resolve(t,e){return Cp(t)||e("Expected a sequence for this tag"),t},createNode:(t,e,n)=>Vc.from(t,e,n)},gb={identify:t=>typeof t=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:t=>t,stringify(t,e,n,i){return e=Object.assign({actualString:!0},e),tC(t,e,n,i)}},_b={identify:t=>t==null,createNode:()=>new Ot(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:()=>new Ot(null),stringify:({source:t},e)=>typeof t=="string"&&_b.test.test(t)?t:e.options.nullStr},iC={identify:t=>typeof t=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:t=>new Ot(t[0]==="t"||t[0]==="T"),stringify({source:t,value:e},n){if(t&&iC.test.test(t)){const i=t[0]==="t"||t[0]==="T";if(e===i)return t}return e?n.options.trueStr:n.options.falseStr}};function Za({format:t,minFractionDigits:e,tag:n,value:i}){if(typeof i=="bigint")return String(i);const s=typeof i=="number"?i:Number(i);if(!isFinite(s))return isNaN(s)?".nan":s<0?"-.inf":".inf";let a=Object.is(i,-0)?"-0":JSON.stringify(i);if(!t&&e&&(!n||n==="tag:yaml.org,2002:float")&&/^\d/.test(a)){let o=a.indexOf(".");o<0&&(o=a.length,a+=".");let r=e-(a.length-o-1);for(;r-- >0;)a+="0"}return a}const QF={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:t=>t.slice(-3).toLowerCase()==="nan"?NaN:t[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:Za},YF={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/,resolve:t=>parseFloat(t),stringify(t){const e=Number(t.value);return isFinite(e)?e.toExponential():Za(t)}},JF={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/,resolve(t){const e=new Ot(parseFloat(t)),n=t.indexOf(".");return n!==-1&&t[t.length-1]==="0"&&(e.minFractionDigits=t.length-n-1),e},stringify:Za},yb=t=>typeof t=="bigint"||Number.isInteger(t),sC=(t,e,n,{intAsBigInt:i})=>i?BigInt(t):parseInt(t.substring(e),n);function ZF(t,e,n){const{value:i}=t;return yb(i)&&i>=0?n+i.toString(e):Za(t)}const eI={identify:t=>yb(t)&&t>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o[0-7]+$/,resolve:(t,e,n)=>sC(t,2,8,n),stringify:t=>ZF(t,8,"0o")},tI={identify:yb,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:(t,e,n)=>sC(t,0,10,n),stringify:Za},nI={identify:t=>yb(t)&&t>=0,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x[0-9a-fA-F]+$/,resolve:(t,e,n)=>sC(t,2,16,n),stringify:t=>ZF(t,16,"0x")},A2e=[Zd,eh,gb,_b,iC,eI,tI,nI,QF,YF,JF];function AR(t){return typeof t=="bigint"||Number.isInteger(t)}const V_=({value:t})=>JSON.stringify(t),N2e=[{identify:t=>typeof t=="string",default:!0,tag:"tag:yaml.org,2002:str",resolve:t=>t,stringify:V_},{identify:t=>t==null,createNode:()=>new Ot(null),default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:()=>null,stringify:V_},{identify:t=>typeof t=="boolean",default:!0,tag:"tag:yaml.org,2002:bool",test:/^true$|^false$/,resolve:t=>t==="true",stringify:V_},{identify:AR,default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:(t,e,{intAsBigInt:n})=>n?BigInt(t):parseInt(t,10),stringify:({value:t})=>AR(t)?t.toString():JSON.stringify(t)},{identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:t=>parseFloat(t),stringify:V_}],T2e={default:!0,tag:"",test:/^/,resolve(t,e){return e(`Unresolved plain scalar ${JSON.stringify(t)}`),t}},M2e=[Zd,eh].concat(N2e,T2e),aC={identify:t=>t instanceof Uint8Array,default:!1,tag:"tag:yaml.org,2002:binary",resolve(t,e){if(typeof atob=="function"){const n=atob(t.replace(/[\n\r]/g,"")),i=new Uint8Array(n.length);for(let s=0;s<n.length;++s)i[s]=n.charCodeAt(s);return i}else return e("This environment does not support reading binary tags; either Buffer or atob is required"),t},stringify({comment:t,type:e,value:n},i,s,a){if(!n)return"";const o=n;let r;if(typeof btoa=="function"){let c="";for(let d=0;d<o.length;++d)c+=String.fromCharCode(o[d]);r=btoa(c)}else throw new Error("This environment does not support writing binary tags; either Buffer or btoa is required");if(e??(e=Ot.BLOCK_LITERAL),e!==Ot.QUOTE_DOUBLE){const c=Math.max(i.options.lineWidth-i.indent.length,i.options.minContentWidth),d=Math.ceil(r.length/c),f=new Array(d);for(let p=0,g=0;p<d;++p,g+=c)f[p]=r.substr(g,c);r=f.join(e===Ot.BLOCK_LITERAL?`
`:" ")}return tC({comment:t,type:e,value:r},i,s,a)}};function iI(t,e){if(Cp(t))for(let n=0;n<t.items.length;++n){let i=t.items[n];if(!ci(i)){if(Fl(i)){i.items.length>1&&e("Each pair must have its own sequence indicator");const s=i.items[0]||new xs(new Ot(null));if(i.commentBefore&&(s.key.commentBefore=s.key.commentBefore?`${i.commentBefore}
${s.key.commentBefore}`:i.commentBefore),i.comment){const a=s.value??s.key;a.comment=a.comment?`${i.comment}
${a.comment}`:i.comment}i=s}t.items[n]=ci(i)?i:new xs(i)}}else e("Expected a sequence for this tag");return t}function sI(t,e,n){const{replacer:i}=n,s=new Vc(t);s.tag="tag:yaml.org,2002:pairs";let a=0;if(e&&Symbol.iterator in Object(e))for(let o of e){typeof i=="function"&&(o=i.call(e,String(a++),o));let r,c;if(Array.isArray(o))if(o.length===2)r=o[0],c=o[1];else throw new TypeError(`Expected [key, value] tuple: ${o}`);else if(o&&o instanceof Object){const d=Object.keys(o);if(d.length===1)r=d[0],c=o[r];else throw new TypeError(`Expected tuple with one key, not ${d.length} keys`)}else r=o;s.items.push(nC(r,c,n))}return s}const oC={collection:"seq",default:!1,tag:"tag:yaml.org,2002:pairs",resolve:iI,createNode:sI};class bd extends Vc{constructor(){super(),this.add=_a.prototype.add.bind(this),this.delete=_a.prototype.delete.bind(this),this.get=_a.prototype.get.bind(this),this.has=_a.prototype.has.bind(this),this.set=_a.prototype.set.bind(this),this.tag=bd.tag}toJSON(e,n){if(!n)return super.toJSON(e);const i=new Map;n?.onCreate&&n.onCreate(i);for(const s of this.items){let a,o;if(ci(s)?(a=Ca(s.key,"",n),o=Ca(s.value,a,n)):a=Ca(s,"",n),i.has(a))throw new Error("Ordered maps must not include duplicate keys");i.set(a,o)}return i}static from(e,n,i){const s=sI(e,n,i),a=new this;return a.items=s.items,a}}bd.tag="tag:yaml.org,2002:omap";const rC={collection:"seq",identify:t=>t instanceof Map,nodeClass:bd,default:!1,tag:"tag:yaml.org,2002:omap",resolve(t,e){const n=iI(t,e),i=[];for(const{key:s}of n.items)jn(s)&&(i.includes(s.value)?e(`Ordered maps must not include duplicate keys: ${s.value}`):i.push(s.value));return Object.assign(new bd,n)},createNode:(t,e,n)=>bd.from(t,e,n)};function aI({value:t,source:e},n){return e&&(t?oI:rI).test.test(e)?e:t?n.options.trueStr:n.options.falseStr}const oI={identify:t=>t===!0,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:()=>new Ot(!0),stringify:aI},rI={identify:t=>t===!1,default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,resolve:()=>new Ot(!1),stringify:aI},L2e={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/,resolve:t=>t.slice(-3).toLowerCase()==="nan"?NaN:t[0]==="-"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,stringify:Za},O2e={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:t=>parseFloat(t.replace(/_/g,"")),stringify(t){const e=Number(t.value);return isFinite(e)?e.toExponential():Za(t)}},P2e={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/,resolve(t){const e=new Ot(parseFloat(t.replace(/_/g,""))),n=t.indexOf(".");if(n!==-1){const i=t.substring(n+1).replace(/_/g,"");i[i.length-1]==="0"&&(e.minFractionDigits=i.length)}return e},stringify:Za},Ap=t=>typeof t=="bigint"||Number.isInteger(t);function bb(t,e,n,{intAsBigInt:i}){const s=t[0];if((s==="-"||s==="+")&&(e+=1),t=t.substring(e).replace(/_/g,""),i){switch(n){case 2:t=`0b${t}`;break;case 8:t=`0o${t}`;break;case 16:t=`0x${t}`;break}const o=BigInt(t);return s==="-"?BigInt(-1)*o:o}const a=parseInt(t,n);return s==="-"?-1*a:a}function lC(t,e,n){const{value:i}=t;if(Ap(i)){const s=i.toString(e);return i<0?"-"+n+s.substr(1):n+s}return Za(t)}const E2e={identify:Ap,default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^[-+]?0b[0-1_]+$/,resolve:(t,e,n)=>bb(t,2,2,n),stringify:t=>lC(t,2,"0b")},j2e={identify:Ap,default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0[0-7_]+$/,resolve:(t,e,n)=>bb(t,1,8,n),stringify:t=>lC(t,8,"0")},R2e={identify:Ap,default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:(t,e,n)=>bb(t,0,10,n),stringify:Za},D2e={identify:Ap,default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^[-+]?0x[0-9a-fA-F_]+$/,resolve:(t,e,n)=>bb(t,2,16,n),stringify:t=>lC(t,16,"0x")};class vd extends _a{constructor(e){super(e),this.tag=vd.tag}add(e){let n;ci(e)?n=e:e&&typeof e=="object"&&"key"in e&&"value"in e&&e.value===null?n=new xs(e.key,null):n=new xs(e,null),Tc(this.items,n.key)||this.items.push(n)}get(e,n){const i=Tc(this.items,e);return!n&&ci(i)?jn(i.key)?i.key.value:i.key:i}set(e,n){if(typeof n!="boolean")throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof n}`);const i=Tc(this.items,e);i&&!n?this.items.splice(this.items.indexOf(i),1):!i&&n&&this.items.push(new xs(e))}toJSON(e,n){return super.toJSON(e,n,Set)}toString(e,n,i){if(!e)return JSON.stringify(this);if(this.hasAllNullValues(!0))return super.toString(Object.assign({},e,{allNullValues:!0}),n,i);throw new Error("Set items must all have null values")}static from(e,n,i){const{replacer:s}=i,a=new this(e);if(n&&Symbol.iterator in Object(n))for(let o of n)typeof s=="function"&&(o=s.call(n,o,o)),a.items.push(nC(o,null,i));return a}}vd.tag="tag:yaml.org,2002:set";const cC={collection:"map",identify:t=>t instanceof Set,nodeClass:vd,default:!1,tag:"tag:yaml.org,2002:set",createNode:(t,e,n)=>vd.from(t,e,n),resolve(t,e){if(Fl(t)){if(t.hasAllNullValues(!0))return Object.assign(new vd,t);e("Set items must all have null values")}else e("Expected a mapping for this tag");return t}};function uC(t,e){const n=t[0],i=n==="-"||n==="+"?t.substring(1):t,s=o=>e?BigInt(o):Number(o),a=i.replace(/_/g,"").split(":").reduce((o,r)=>o*s(60)+s(r),s(0));return n==="-"?s(-1)*a:a}function lI(t){let{value:e}=t,n=o=>o;if(typeof e=="bigint")n=o=>BigInt(o);else if(isNaN(e)||!isFinite(e))return Za(t);let i="";e<0&&(i="-",e*=n(-1));const s=n(60),a=[e%s];return e<60?a.unshift(0):(e=(e-a[0])/s,a.unshift(e%s),e>=60&&(e=(e-a[0])/s,a.unshift(e))),i+a.map(o=>String(o).padStart(2,"0")).join(":").replace(/000000\d*$/,"")}const cI={identify:t=>typeof t=="bigint"||Number.isInteger(t),default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,resolve:(t,e,{intAsBigInt:n})=>uC(t,n),stringify:lI},uI={identify:t=>typeof t=="number",default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/,resolve:t=>uC(t,!1),stringify:lI},vb={identify:t=>t instanceof Date,default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"),resolve(t){const e=t.match(vb.test);if(!e)throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd");const[,n,i,s,a,o,r]=e.map(Number),c=e[7]?Number((e[7]+"00").substr(1,3)):0;let d=Date.UTC(n,i-1,s,a||0,o||0,r||0,c);const f=e[8];if(f&&f!=="Z"){let p=uC(f,!1);Math.abs(p)<30&&(p*=60),d-=6e4*p}return new Date(d)},stringify:({value:t})=>t?.toISOString().replace(/(T00:00:00)?\.000Z$/,"")??""},NR=[Zd,eh,gb,_b,oI,rI,E2e,j2e,R2e,D2e,L2e,O2e,P2e,aC,Cr,rC,oC,cC,cI,uI,vb],TR=new Map([["core",A2e],["failsafe",[Zd,eh,gb]],["json",M2e],["yaml11",NR],["yaml-1.1",NR]]),MR={binary:aC,bool:iC,float:JF,floatExp:YF,floatNaN:QF,floatTime:uI,int:tI,intHex:nI,intOct:eI,intTime:cI,map:Zd,merge:Cr,null:_b,omap:rC,pairs:oC,seq:eh,set:cC,timestamp:vb},F2e={"tag:yaml.org,2002:binary":aC,"tag:yaml.org,2002:merge":Cr,"tag:yaml.org,2002:omap":rC,"tag:yaml.org,2002:pairs":oC,"tag:yaml.org,2002:set":cC,"tag:yaml.org,2002:timestamp":vb};function l2(t,e,n){const i=TR.get(e);if(i&&!t)return n&&!i.includes(Cr)?i.concat(Cr):i.slice();let s=i;if(!s)if(Array.isArray(t))s=[];else{const a=Array.from(TR.keys()).filter(o=>o!=="yaml11").map(o=>JSON.stringify(o)).join(", ");throw new Error(`Unknown schema "${e}"; use one of ${a} or define customTags array`)}if(Array.isArray(t))for(const a of t)s=s.concat(a);else typeof t=="function"&&(s=t(s.slice()));return n&&(s=s.concat(Cr)),s.reduce((a,o)=>{const r=typeof o=="string"?MR[o]:o;if(!r){const c=JSON.stringify(o),d=Object.keys(MR).map(f=>JSON.stringify(f)).join(", ");throw new Error(`Unknown custom tag ${c}; use one of ${d}`)}return a.includes(r)||a.push(r),a},[])}const I2e=(t,e)=>t.key<e.key?-1:t.key>e.key?1:0;class dC{constructor({compat:e,customTags:n,merge:i,resolveKnownTags:s,schema:a,sortMapEntries:o,toStringDefaults:r}){this.compat=Array.isArray(e)?l2(e,"compat"):e?l2(null,e):null,this.name=typeof a=="string"&&a||"core",this.knownTags=s?F2e:{},this.tags=l2(n,this.name,i),this.toStringOptions=r??null,Object.defineProperty(this,Al,{value:Zd}),Object.defineProperty(this,Lo,{value:gb}),Object.defineProperty(this,Yd,{value:eh}),this.sortMapEntries=typeof o=="function"?o:o===!0?I2e:null}clone(){const e=Object.create(dC.prototype,Object.getOwnPropertyDescriptors(this));return e.tags=this.tags.slice(),e}}function B2e(t,e){const n=[];let i=e.directives===!0;if(e.directives!==!1&&t.directives){const c=t.directives.toString(t);c?(n.push(c),i=!0):t.directives.docStart&&(i=!0)}i&&n.push("---");const s=HF(t,e),{commentString:a}=s.options;if(t.commentBefore){n.length!==1&&n.unshift("");const c=a(t.commentBefore);n.unshift(Sr(c,""))}let o=!1,r=null;if(t.contents){if(ri(t.contents)){if(t.contents.spaceBefore&&i&&n.push(""),t.contents.commentBefore){const f=a(t.contents.commentBefore);n.push(Sr(f,""))}s.forceBlockIndent=!!t.comment,r=t.contents.comment}const c=r?void 0:()=>o=!0;let d=Id(t.contents,s,()=>r=null,c);r&&(d+=Nc(d,"",a(r))),(d[0]==="|"||d[0]===">")&&n[n.length-1]==="---"?n[n.length-1]=`--- ${d}`:n.push(d)}else n.push(Id(t.contents,s));if(t.directives?.docEnd)if(t.comment){const c=a(t.comment);c.includes(`
`)?(n.push("..."),n.push(Sr(c,""))):n.push(`... ${c}`)}else n.push("...");else{let c=t.comment;c&&o&&(c=c.replace(/^\n+/,"")),c&&((!o||r)&&n[n.length-1]!==""&&n.push(""),n.push(Sr(a(c),"")))}return n.join(`
`)+`
`}class xb{constructor(e,n,i){this.commentBefore=null,this.comment=null,this.errors=[],this.warnings=[],Object.defineProperty(this,La,{value:fw});let s=null;typeof n=="function"||Array.isArray(n)?s=n:i===void 0&&n&&(i=n,n=void 0);const a=Object.assign({intAsBigInt:!1,keepSourceTokens:!1,logLevel:"warn",prettyErrors:!0,strict:!0,stringKeys:!1,uniqueKeys:!0,version:"1.2"},i);this.options=a;let{version:o}=a;i?._directives?(this.directives=i._directives.atDocument(),this.directives.yaml.explicit&&(o=this.directives.yaml.version)):this.directives=new fs({version:o}),this.setSchema(o,i),this.contents=e===void 0?null:this.createNode(e,s,i)}clone(){const e=Object.create(xb.prototype,{[La]:{value:fw}});return e.commentBefore=this.commentBefore,e.comment=this.comment,e.errors=this.errors.slice(),e.warnings=this.warnings.slice(),e.options=Object.assign({},this.options),this.directives&&(e.directives=this.directives.clone()),e.schema=this.schema.clone(),e.contents=ri(this.contents)?this.contents.clone(e.schema):this.contents,this.range&&(e.range=this.range.slice()),e}add(e){qu(this.contents)&&this.contents.add(e)}addIn(e,n){qu(this.contents)&&this.contents.addIn(e,n)}createAlias(e,n){if(!e.anchor){const i=UF(this);e.anchor=!n||i.has(n)?qF(n||"a",i):n}return new eC(e.anchor)}createNode(e,n,i){let s;if(typeof n=="function")e=n.call({"":e},"",e),s=n;else if(Array.isArray(n)){const x=C=>typeof C=="number"||C instanceof String||C instanceof Number,k=n.filter(x).map(String);k.length>0&&(n=n.concat(k)),s=n}else i===void 0&&n&&(i=n,n=void 0);const{aliasDuplicateObjects:a,anchorPrefix:o,flow:r,keepUndefined:c,onTagObj:d,tag:f}=i??{},{onAnchor:p,setAnchors:g,sourceObjects:y}=f2e(this,o||"a"),_={aliasDuplicateObjects:a??!0,keepUndefined:c??!1,onAnchor:p,onTagObj:d,replacer:s,schema:this.schema,sourceObjects:y},v=Bm(e,f,_);return r&&ai(v)&&(v.flow=!0),g(),v}createPair(e,n,i={}){const s=this.createNode(e,null,i),a=this.createNode(n,null,i);return new xs(s,a)}delete(e){return qu(this.contents)?this.contents.delete(e):!1}deleteIn(e){return Df(e)?this.contents==null?!1:(this.contents=null,!0):qu(this.contents)?this.contents.deleteIn(e):!1}get(e,n){return ai(this.contents)?this.contents.get(e,n):void 0}getIn(e,n){return Df(e)?!n&&jn(this.contents)?this.contents.value:this.contents:ai(this.contents)?this.contents.getIn(e,n):void 0}has(e){return ai(this.contents)?this.contents.has(e):!1}hasIn(e){return Df(e)?this.contents!==void 0:ai(this.contents)?this.contents.hasIn(e):!1}set(e,n){this.contents==null?this.contents=xy(this.schema,[e],n):qu(this.contents)&&this.contents.set(e,n)}setIn(e,n){Df(e)?this.contents=n:this.contents==null?this.contents=xy(this.schema,Array.from(e),n):qu(this.contents)&&this.contents.setIn(e,n)}setSchema(e,n={}){typeof e=="number"&&(e=String(e));let i;switch(e){case"1.1":this.directives?this.directives.yaml.version="1.1":this.directives=new fs({version:"1.1"}),i={resolveKnownTags:!1,schema:"yaml-1.1"};break;case"1.2":case"next":this.directives?this.directives.yaml.version=e:this.directives=new fs({version:e}),i={resolveKnownTags:!0,schema:"core"};break;case null:this.directives&&delete this.directives,i=null;break;default:{const s=JSON.stringify(e);throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${s}`)}}if(n.schema instanceof Object)this.schema=n.schema;else if(i)this.schema=new dC(Object.assign(i,n));else throw new Error("With a null YAML version, the { schema: Schema } option is required")}toJS({json:e,jsonArg:n,mapAsMap:i,maxAliasCount:s,onAnchor:a,reviver:o}={}){const r={anchors:new Map,doc:this,keep:!e,mapAsMap:i===!0,mapKeyWarned:!1,maxAliasCount:typeof s=="number"?s:100},c=Ca(this.contents,n??"",r);if(typeof a=="function")for(const{count:d,res:f}of r.anchors.values())a(f,d);return typeof o=="function"?ad(o,{"":c},"",c):c}toJSON(e,n){return this.toJS({json:!0,jsonArg:e,mapAsMap:!1,onAnchor:n})}toString(e={}){if(this.errors.length>0)throw new Error("Document with errors cannot be stringified");if("indent"in e&&(!Number.isInteger(e.indent)||Number(e.indent)<=0)){const n=JSON.stringify(e.indent);throw new Error(`"indent" option must be a positive integer, not ${n}`)}return B2e(this,e)}}function qu(t){if(ai(t))return!0;throw new Error("Expected a YAML collection as document contents")}class dI extends Error{constructor(e,n,i,s){super(),this.name=e,this.code=i,this.message=s,this.pos=n}}class Ff extends dI{constructor(e,n,i){super("YAMLParseError",e,n,i)}}class U2e extends dI{constructor(e,n,i){super("YAMLWarning",e,n,i)}}const LR=(t,e)=>n=>{if(n.pos[0]===-1)return;n.linePos=n.pos.map(r=>e.linePos(r));const{line:i,col:s}=n.linePos[0];n.message+=` at line ${i}, column ${s}`;let a=s-1,o=t.substring(e.lineStarts[i-1],e.lineStarts[i]).replace(/[\n\r]+$/,"");if(a>=60&&o.length>80){const r=Math.min(a-39,o.length-79);o="…"+o.substring(r),a-=r-1}if(o.length>80&&(o=o.substring(0,79)+"…"),i>1&&/^ *$/.test(o.substring(0,a))){let r=t.substring(e.lineStarts[i-2],e.lineStarts[i-1]);r.length>80&&(r=r.substring(0,79)+`…
`),o=r+o}if(/[^ ]/.test(o)){let r=1;const c=n.linePos[1];c?.line===i&&c.col>s&&(r=Math.max(1,Math.min(c.col-s,80-a)));const d=" ".repeat(a)+"^".repeat(r);n.message+=`:
${o}
${d}
`}};function Bd(t,{flow:e,indicator:n,next:i,offset:s,onError:a,parentIndent:o,startOnNewline:r}){let c=!1,d=r,f=r,p="",g="",y=!1,_=!1,v=null,x=null,k=null,C=null,N=null,L=null,M=null;for(const P of t)switch(_&&(P.type!=="space"&&P.type!=="newline"&&P.type!=="comma"&&a(P.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),_=!1),v&&(d&&P.type!=="comment"&&P.type!=="newline"&&a(v,"TAB_AS_INDENT","Tabs are not allowed as indentation"),v=null),P.type){case"space":!e&&(n!=="doc-start"||i?.type!=="flow-collection")&&P.source.includes(" ")&&(v=P),f=!0;break;case"comment":{f||a(P,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");const E=P.source.substring(1)||" ";p?p+=g+E:p=E,g="",d=!1;break}case"newline":d?p?p+=P.source:(!L||n!=="seq-item-ind")&&(c=!0):g+=P.source,d=!0,y=!0,(x||k)&&(C=P),f=!0;break;case"anchor":x&&a(P,"MULTIPLE_ANCHORS","A node can have at most one anchor"),P.source.endsWith(":")&&a(P.offset+P.source.length-1,"BAD_ALIAS","Anchor ending in : is ambiguous",!0),x=P,M??(M=P.offset),d=!1,f=!1,_=!0;break;case"tag":{k&&a(P,"MULTIPLE_TAGS","A node can have at most one tag"),k=P,M??(M=P.offset),d=!1,f=!1,_=!0;break}case n:(x||k)&&a(P,"BAD_PROP_ORDER",`Anchors and tags must be after the ${P.source} indicator`),L&&a(P,"UNEXPECTED_TOKEN",`Unexpected ${P.source} in ${e??"collection"}`),L=P,d=n==="seq-item-ind"||n==="explicit-key-ind",f=!1;break;case"comma":if(e){N&&a(P,"UNEXPECTED_TOKEN",`Unexpected , in ${e}`),N=P,d=!1,f=!1;break}default:a(P,"UNEXPECTED_TOKEN",`Unexpected ${P.type} token`),d=!1,f=!1}const O=t[t.length-1],T=O?O.offset+O.source.length:s;return _&&i&&i.type!=="space"&&i.type!=="newline"&&i.type!=="comma"&&(i.type!=="scalar"||i.source!=="")&&a(i.offset,"MISSING_CHAR","Tags and anchors must be separated from the next token by white space"),v&&(d&&v.indent<=o||i?.type==="block-map"||i?.type==="block-seq")&&a(v,"TAB_AS_INDENT","Tabs are not allowed as indentation"),{comma:N,found:L,spaceBefore:c,comment:p,hasNewline:y,anchor:x,tag:k,newlineAfterProp:C,end:T,start:M??T}}function Um(t){if(!t)return null;switch(t.type){case"alias":case"scalar":case"double-quoted-scalar":case"single-quoted-scalar":if(t.source.includes(`
`))return!0;if(t.end){for(const e of t.end)if(e.type==="newline")return!0}return!1;case"flow-collection":for(const e of t.items){for(const n of e.start)if(n.type==="newline")return!0;if(e.sep){for(const n of e.sep)if(n.type==="newline")return!0}if(Um(e.key)||Um(e.value))return!0}return!1;default:return!0}}function _w(t,e,n){if(e?.type==="flow-collection"){const i=e.end[0];i.indent===t&&(i.source==="]"||i.source==="}")&&Um(e)&&n(i,"BAD_INDENT","Flow end indicator should be more indented than parent",!0)}}function hI(t,e,n){const{uniqueKeys:i}=t.options;if(i===!1)return!1;const s=typeof i=="function"?i:(a,o)=>a===o||jn(a)&&jn(o)&&a.value===o.value;return e.some(a=>s(a.key,n))}const OR="All mapping items must start at the same column";function q2e({composeNode:t,composeEmptyNode:e},n,i,s,a){const o=a?.nodeClass??_a,r=new o(n.schema);n.atRoot&&(n.atRoot=!1);let c=i.offset,d=null;for(const f of i.items){const{start:p,key:g,sep:y,value:_}=f,v=Bd(p,{indicator:"explicit-key-ind",next:g??y?.[0],offset:c,onError:s,parentIndent:i.indent,startOnNewline:!0}),x=!v.found;if(x){if(g&&(g.type==="block-seq"?s(c,"BLOCK_AS_IMPLICIT_KEY","A block sequence may not be used as an implicit map key"):"indent"in g&&g.indent!==i.indent&&s(c,"BAD_INDENT",OR)),!v.anchor&&!v.tag&&!y){d=v.end,v.comment&&(r.comment?r.comment+=`
`+v.comment:r.comment=v.comment);continue}(v.newlineAfterProp||Um(g))&&s(g??p[p.length-1],"MULTILINE_IMPLICIT_KEY","Implicit keys need to be on a single line")}else v.found?.indent!==i.indent&&s(c,"BAD_INDENT",OR);n.atKey=!0;const k=v.end,C=g?t(n,g,v,s):e(n,k,p,null,v,s);n.schema.compat&&_w(i.indent,g,s),n.atKey=!1,hI(n,r.items,C)&&s(k,"DUPLICATE_KEY","Map keys must be unique");const N=Bd(y??[],{indicator:"map-value-ind",next:_,offset:C.range[2],onError:s,parentIndent:i.indent,startOnNewline:!g||g.type==="block-scalar"});if(c=N.end,N.found){x&&(_?.type==="block-map"&&!N.hasNewline&&s(c,"BLOCK_AS_IMPLICIT_KEY","Nested mappings are not allowed in compact mappings"),n.options.strict&&v.start<N.found.offset-1024&&s(C.range,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit block mapping key"));const L=_?t(n,_,N,s):e(n,c,y,null,N,s);n.schema.compat&&_w(i.indent,_,s),c=L.range[2];const M=new xs(C,L);n.options.keepSourceTokens&&(M.srcToken=f),r.items.push(M)}else{x&&s(C.range,"MISSING_CHAR","Implicit map keys need to be followed by map values"),N.comment&&(C.comment?C.comment+=`
`+N.comment:C.comment=N.comment);const L=new xs(C);n.options.keepSourceTokens&&(L.srcToken=f),r.items.push(L)}}return d&&d<c&&s(d,"IMPOSSIBLE","Map comment with trailing content"),r.range=[i.offset,c,d??c],r}function z2e({composeNode:t,composeEmptyNode:e},n,i,s,a){const o=a?.nodeClass??Vc,r=new o(n.schema);n.atRoot&&(n.atRoot=!1),n.atKey&&(n.atKey=!1);let c=i.offset,d=null;for(const{start:f,value:p}of i.items){const g=Bd(f,{indicator:"seq-item-ind",next:p,offset:c,onError:s,parentIndent:i.indent,startOnNewline:!0});if(!g.found)if(g.anchor||g.tag||p)p?.type==="block-seq"?s(g.end,"BAD_INDENT","All sequence items must start at the same column"):s(c,"MISSING_CHAR","Sequence item without - indicator");else{d=g.end,g.comment&&(r.comment=g.comment);continue}const y=p?t(n,p,g,s):e(n,g.end,f,null,g,s);n.schema.compat&&_w(i.indent,p,s),c=y.range[2],r.items.push(y)}return r.range=[i.offset,c,d??c],r}function Np(t,e,n,i){let s="";if(t){let a=!1,o="";for(const r of t){const{source:c,type:d}=r;switch(d){case"space":a=!0;break;case"comment":{n&&!a&&i(r,"MISSING_CHAR","Comments must be separated from other tokens by white space characters");const f=c.substring(1)||" ";s?s+=o+f:s=f,o="";break}case"newline":s&&(o+=c),a=!0;break;default:i(r,"UNEXPECTED_TOKEN",`Unexpected ${d} at node end`)}e+=c.length}}return{comment:s,offset:e}}const c2="Block collections are not allowed within flow collections",u2=t=>t&&(t.type==="block-map"||t.type==="block-seq");function K2e({composeNode:t,composeEmptyNode:e},n,i,s,a){const o=i.start.source==="{",r=o?"flow map":"flow sequence",c=a?.nodeClass??(o?_a:Vc),d=new c(n.schema);d.flow=!0;const f=n.atRoot;f&&(n.atRoot=!1),n.atKey&&(n.atKey=!1);let p=i.offset+i.start.source.length;for(let x=0;x<i.items.length;++x){const k=i.items[x],{start:C,key:N,sep:L,value:M}=k,O=Bd(C,{flow:r,indicator:"explicit-key-ind",next:N??L?.[0],offset:p,onError:s,parentIndent:i.indent,startOnNewline:!1});if(!O.found){if(!O.anchor&&!O.tag&&!L&&!M){x===0&&O.comma?s(O.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${r}`):x<i.items.length-1&&s(O.start,"UNEXPECTED_TOKEN",`Unexpected empty item in ${r}`),O.comment&&(d.comment?d.comment+=`
`+O.comment:d.comment=O.comment),p=O.end;continue}!o&&n.options.strict&&Um(N)&&s(N,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line")}if(x===0)O.comma&&s(O.comma,"UNEXPECTED_TOKEN",`Unexpected , in ${r}`);else if(O.comma||s(O.start,"MISSING_CHAR",`Missing , between ${r} items`),O.comment){let T="";e:for(const P of C)switch(P.type){case"comma":case"space":break;case"comment":T=P.source.substring(1);break e;default:break e}if(T){let P=d.items[d.items.length-1];ci(P)&&(P=P.value??P.key),P.comment?P.comment+=`
`+T:P.comment=T,O.comment=O.comment.substring(T.length+1)}}if(!o&&!L&&!O.found){const T=M?t(n,M,O,s):e(n,O.end,L,null,O,s);d.items.push(T),p=T.range[2],u2(M)&&s(T.range,"BLOCK_IN_FLOW",c2)}else{n.atKey=!0;const T=O.end,P=N?t(n,N,O,s):e(n,T,C,null,O,s);u2(N)&&s(P.range,"BLOCK_IN_FLOW",c2),n.atKey=!1;const E=Bd(L??[],{flow:r,indicator:"map-value-ind",next:M,offset:P.range[2],onError:s,parentIndent:i.indent,startOnNewline:!1});if(E.found){if(!o&&!O.found&&n.options.strict){if(L)for(const I of L){if(I===E.found)break;if(I.type==="newline"){s(I,"MULTILINE_IMPLICIT_KEY","Implicit keys of flow sequence pairs need to be on a single line");break}}O.start<E.found.offset-1024&&s(E.found,"KEY_OVER_1024_CHARS","The : indicator must be at most 1024 chars after the start of an implicit flow sequence key")}}else M&&("source"in M&&M.source?.[0]===":"?s(M,"MISSING_CHAR",`Missing space after : in ${r}`):s(E.start,"MISSING_CHAR",`Missing , or : between ${r} items`));const R=M?t(n,M,E,s):E.found?e(n,E.end,L,null,E,s):null;R?u2(M)&&s(R.range,"BLOCK_IN_FLOW",c2):E.comment&&(P.comment?P.comment+=`
`+E.comment:P.comment=E.comment);const q=new xs(P,R);if(n.options.keepSourceTokens&&(q.srcToken=k),o){const I=d;hI(n,I.items,P)&&s(T,"DUPLICATE_KEY","Map keys must be unique"),I.items.push(q)}else{const I=new _a(n.schema);I.flow=!0,I.items.push(q);const Y=(R??P).range;I.range=[P.range[0],Y[1],Y[2]],d.items.push(I)}p=R?R.range[2]:E.end}}const g=o?"}":"]",[y,..._]=i.end;let v=p;if(y?.source===g)v=y.offset+y.source.length;else{const x=r[0].toUpperCase()+r.substring(1),k=f?`${x} must end with a ${g}`:`${x} in block collection must be sufficiently indented and end with a ${g}`;s(p,f?"MISSING_CHAR":"BAD_INDENT",k),y&&y.source.length!==1&&_.unshift(y)}if(_.length>0){const x=Np(_,v,n.options.strict,s);x.comment&&(d.comment?d.comment+=`
`+x.comment:d.comment=x.comment),d.range=[i.offset,v,x.offset]}else d.range=[i.offset,v,v];return d}function d2(t,e,n,i,s,a){const o=n.type==="block-map"?q2e(t,e,n,i,a):n.type==="block-seq"?z2e(t,e,n,i,a):K2e(t,e,n,i,a),r=o.constructor;return s==="!"||s===r.tagName?(o.tag=r.tagName,o):(s&&(o.tag=s),o)}function V2e(t,e,n,i,s){const a=i.tag,o=a?e.directives.tagName(a.source,g=>s(a,"TAG_RESOLVE_FAILED",g)):null;if(n.type==="block-seq"){const{anchor:g,newlineAfterProp:y}=i,_=g&&a?g.offset>a.offset?g:a:g??a;_&&(!y||y.offset<_.offset)&&s(_,"MISSING_CHAR","Missing newline after block sequence props")}const r=n.type==="block-map"?"map":n.type==="block-seq"?"seq":n.start.source==="{"?"map":"seq";if(!a||!o||o==="!"||o===_a.tagName&&r==="map"||o===Vc.tagName&&r==="seq")return d2(t,e,n,s,o);let c=e.schema.tags.find(g=>g.tag===o&&g.collection===r);if(!c){const g=e.schema.knownTags[o];if(g?.collection===r)e.schema.tags.push(Object.assign({},g,{default:!1})),c=g;else return g?s(a,"BAD_COLLECTION_TYPE",`${g.tag} used for ${r} collection, but expects ${g.collection??"scalar"}`,!0):s(a,"TAG_RESOLVE_FAILED",`Unresolved tag: ${o}`,!0),d2(t,e,n,s,o)}const d=d2(t,e,n,s,o,c),f=c.resolve?.(d,g=>s(a,"TAG_RESOLVE_FAILED",g),e.options)??d,p=ri(f)?f:new Ot(f);return p.range=d.range,p.tag=o,c?.format&&(p.format=c.format),p}function H2e(t,e,n){const i=e.offset,s=W2e(e,t.options.strict,n);if(!s)return{value:"",type:null,comment:"",range:[i,i,i]};const a=s.mode===">"?Ot.BLOCK_FOLDED:Ot.BLOCK_LITERAL,o=e.source?G2e(e.source):[];let r=o.length;for(let v=o.length-1;v>=0;--v){const x=o[v][1];if(x===""||x==="\r")r=v;else break}if(r===0){const v=s.chomp==="+"&&o.length>0?`
`.repeat(Math.max(1,o.length-1)):"";let x=i+s.length;return e.source&&(x+=e.source.length),{value:v,type:a,comment:s.comment,range:[i,x,x]}}let c=e.indent+s.indent,d=e.offset+s.length,f=0;for(let v=0;v<r;++v){const[x,k]=o[v];if(k===""||k==="\r")s.indent===0&&x.length>c&&(c=x.length);else{x.length<c&&n(d+x.length,"MISSING_CHAR","Block scalars with more-indented leading empty lines must use an explicit indentation indicator"),s.indent===0&&(c=x.length),f=v,c===0&&!t.atRoot&&n(d,"BAD_INDENT","Block scalar values in collections must be indented");break}d+=x.length+k.length+1}for(let v=o.length-1;v>=r;--v)o[v][0].length>c&&(r=v+1);let p="",g="",y=!1;for(let v=0;v<f;++v)p+=o[v][0].slice(c)+`
`;for(let v=f;v<r;++v){let[x,k]=o[v];d+=x.length+k.length+1;const C=k[k.length-1]==="\r";if(C&&(k=k.slice(0,-1)),k&&x.length<c){const L=`Block scalar lines must not be less indented than their ${s.indent?"explicit indentation indicator":"first line"}`;n(d-k.length-(C?2:1),"BAD_INDENT",L),x=""}a===Ot.BLOCK_LITERAL?(p+=g+x.slice(c)+k,g=`
`):x.length>c||k[0]===" "?(g===" "?g=`
`:!y&&g===`
`&&(g=`
`),p+=g+x.slice(c)+k,g=`
`,y=!0):k===""?g===`
`?p+=`
`:g=`
`:(p+=g+k,g=" ",y=!1)}switch(s.chomp){case"-":break;case"+":for(let v=r;v<o.length;++v)p+=`
`+o[v][0].slice(c);p[p.length-1]!==`
`&&(p+=`
`);break;default:p+=`
`}const _=i+s.length+e.source.length;return{value:p,type:a,comment:s.comment,range:[i,_,_]}}function W2e({offset:t,props:e},n,i){if(e[0].type!=="block-scalar-header")return i(e[0],"IMPOSSIBLE","Block scalar header not found"),null;const{source:s}=e[0],a=s[0];let o=0,r="",c=-1;for(let g=1;g<s.length;++g){const y=s[g];if(!r&&(y==="-"||y==="+"))r=y;else{const _=Number(y);!o&&_?o=_:c===-1&&(c=t+g)}}c!==-1&&i(c,"UNEXPECTED_TOKEN",`Block scalar header includes extra characters: ${s}`);let d=!1,f="",p=s.length;for(let g=1;g<e.length;++g){const y=e[g];switch(y.type){case"space":d=!0;case"newline":p+=y.source.length;break;case"comment":n&&!d&&i(y,"MISSING_CHAR","Comments must be separated from other tokens by white space characters"),p+=y.source.length,f=y.source.substring(1);break;case"error":i(y,"UNEXPECTED_TOKEN",y.message),p+=y.source.length;break;default:{const _=`Unexpected token in block scalar header: ${y.type}`;i(y,"UNEXPECTED_TOKEN",_);const v=y.source;v&&typeof v=="string"&&(p+=v.length)}}}return{mode:a,indent:o,chomp:r,comment:f,length:p}}function G2e(t){const e=t.split(/\n( *)/),n=e[0],i=n.match(/^( *)/),a=[i?.[1]?[i[1],n.slice(i[1].length)]:["",n]];for(let o=1;o<e.length;o+=2)a.push([e[o],e[o+1]]);return a}function $2e(t,e,n){const{offset:i,type:s,source:a,end:o}=t;let r,c;const d=(g,y,_)=>n(i+g,y,_);switch(s){case"scalar":r=Ot.PLAIN,c=X2e(a,d);break;case"single-quoted-scalar":r=Ot.QUOTE_SINGLE,c=Q2e(a,d);break;case"double-quoted-scalar":r=Ot.QUOTE_DOUBLE,c=Y2e(a,d);break;default:return n(t,"UNEXPECTED_TOKEN",`Expected a flow scalar value, but found: ${s}`),{value:"",type:null,comment:"",range:[i,i+a.length,i+a.length]}}const f=i+a.length,p=Np(o,f,e,n);return{value:c,type:r,comment:p.comment,range:[i,f,p.offset]}}function X2e(t,e){let n="";switch(t[0]){case" ":n="a tab character";break;case",":n="flow indicator character ,";break;case"%":n="directive indicator character %";break;case"|":case">":{n=`block scalar indicator ${t[0]}`;break}case"@":case"`":{n=`reserved character ${t[0]}`;break}}return n&&e(0,"BAD_SCALAR_START",`Plain value cannot start with ${n}`),fI(t)}function Q2e(t,e){return(t[t.length-1]!=="'"||t.length===1)&&e(t.length,"MISSING_CHAR","Missing closing 'quote"),fI(t.slice(1,-1)).replace(/''/g,"'")}function fI(t){let e,n;try{e=new RegExp(`(.*?)(?<![ ])[ ]*\r?
`,"sy"),n=new RegExp(`[ ]*(.*?)(?:(?<![ ])[ ]*)?\r?
`,"sy")}catch{e=/(.*?)[ \t]*\r?\n/sy,n=/[ \t]*(.*?)[ \t]*\r?\n/sy}let i=e.exec(t);if(!i)return t;let s=i[1],a=" ",o=e.lastIndex;for(n.lastIndex=o;i=n.exec(t);)i[1]===""?a===`
`?s+=a:a=`
`:(s+=a+i[1],a=" "),o=n.lastIndex;const r=/[ \t]*(.*)/sy;return r.lastIndex=o,i=r.exec(t),s+a+(i?.[1]??"")}function Y2e(t,e){let n="";for(let i=1;i<t.length-1;++i){const s=t[i];if(!(s==="\r"&&t[i+1]===`
`))if(s===`
`){const{fold:a,offset:o}=J2e(t,i);n+=a,i=o}else if(s==="\\"){let a=t[++i];const o=Z2e[a];if(o)n+=o;else if(a===`
`)for(a=t[i+1];a===" "||a===" ";)a=t[++i+1];else if(a==="\r"&&t[i+1]===`
`)for(a=t[++i+1];a===" "||a===" ";)a=t[++i+1];else if(a==="x"||a==="u"||a==="U"){const r={x:2,u:4,U:8}[a];n+=eSe(t,i+1,r,e),i+=r}else{const r=t.substr(i-1,2);e(i-1,"BAD_DQ_ESCAPE",`Invalid escape sequence ${r}`),n+=r}}else if(s===" "||s===" "){const a=i;let o=t[i+1];for(;o===" "||o===" ";)o=t[++i+1];o!==`
`&&!(o==="\r"&&t[i+2]===`
`)&&(n+=i>a?t.slice(a,i+1):s)}else n+=s}return(t[t.length-1]!=='"'||t.length===1)&&e(t.length,"MISSING_CHAR",'Missing closing "quote'),n}function J2e(t,e){let n="",i=t[e+1];for(;(i===" "||i===" "||i===`
`||i==="\r")&&!(i==="\r"&&t[e+2]!==`
`);)i===`
`&&(n+=`
`),e+=1,i=t[e+1];return n||(n=" "),{fold:n,offset:e}}const Z2e={0:"\0",a:"\x07",b:"\b",e:"\x1B",f:"\f",n:`
`,r:"\r",t:" ",v:"\v",N:"…",_:" ",L:"\u2028",P:"\u2029"," ":" ",'"':'"',"/":"/","\\":"\\"," ":" "};function eSe(t,e,n,i){const s=t.substr(e,n),o=s.length===n&&/^[0-9a-fA-F]+$/.test(s)?parseInt(s,16):NaN;if(isNaN(o)){const r=t.substr(e-2,n+2);return i(e-2,"BAD_DQ_ESCAPE",`Invalid escape sequence ${r}`),r}return String.fromCodePoint(o)}function mI(t,e,n,i){const{value:s,type:a,comment:o,range:r}=e.type==="block-scalar"?H2e(t,e,i):$2e(e,t.options.strict,i),c=n?t.directives.tagName(n.source,p=>i(n,"TAG_RESOLVE_FAILED",p)):null;let d;t.options.stringKeys&&t.atKey?d=t.schema[Lo]:c?d=tSe(t.schema,s,c,n,i):e.type==="scalar"?d=nSe(t,s,e,i):d=t.schema[Lo];let f;try{const p=d.resolve(s,g=>i(n??e,"TAG_RESOLVE_FAILED",g),t.options);f=jn(p)?p:new Ot(p)}catch(p){const g=p instanceof Error?p.message:String(p);i(n??e,"TAG_RESOLVE_FAILED",g),f=new Ot(s)}return f.range=r,f.source=s,a&&(f.type=a),c&&(f.tag=c),d.format&&(f.format=d.format),o&&(f.comment=o),f}function tSe(t,e,n,i,s){if(n==="!")return t[Lo];const a=[];for(const r of t.tags)if(!r.collection&&r.tag===n)if(r.default&&r.test)a.push(r);else return r;for(const r of a)if(r.test?.test(e))return r;const o=t.knownTags[n];return o&&!o.collection?(t.tags.push(Object.assign({},o,{default:!1,test:void 0})),o):(s(i,"TAG_RESOLVE_FAILED",`Unresolved tag: ${n}`,n!=="tag:yaml.org,2002:str"),t[Lo])}function nSe({atKey:t,directives:e,schema:n},i,s,a){const o=n.tags.find(r=>(r.default===!0||t&&r.default==="key")&&r.test?.test(i))||n[Lo];if(n.compat){const r=n.compat.find(c=>c.default&&c.test?.test(i))??n[Lo];if(o.tag!==r.tag){const c=e.tagString(o.tag),d=e.tagString(r.tag),f=`Value may be parsed as either ${c} or ${d}`;a(s,"TAG_RESOLVE_FAILED",f,!0)}}return o}function iSe(t,e,n){if(e){n??(n=e.length);for(let i=n-1;i>=0;--i){let s=e[i];switch(s.type){case"space":case"comment":case"newline":t-=s.source.length;continue}for(s=e[++i];s?.type==="space";)t+=s.source.length,s=e[++i];break}}return t}const sSe={composeNode:pI,composeEmptyNode:hC};function pI(t,e,n,i){const s=t.atKey,{spaceBefore:a,comment:o,anchor:r,tag:c}=n;let d,f=!0;switch(e.type){case"alias":d=aSe(t,e,i),(r||c)&&i(e,"ALIAS_PROPS","An alias node must not specify any properties");break;case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"block-scalar":d=mI(t,e,c,i),r&&(d.anchor=r.source.substring(1));break;case"block-map":case"block-seq":case"flow-collection":d=V2e(sSe,t,e,n,i),r&&(d.anchor=r.source.substring(1));break;default:{const p=e.type==="error"?e.message:`Unsupported token (type: ${e.type})`;i(e,"UNEXPECTED_TOKEN",p),d=hC(t,e.offset,void 0,null,n,i),f=!1}}return r&&d.anchor===""&&i(r,"BAD_ALIAS","Anchor cannot be an empty string"),s&&t.options.stringKeys&&(!jn(d)||typeof d.value!="string"||d.tag&&d.tag!=="tag:yaml.org,2002:str")&&i(c??e,"NON_STRING_KEY","With stringKeys, all keys must be strings"),a&&(d.spaceBefore=!0),o&&(e.type==="scalar"&&e.source===""?d.comment=o:d.commentBefore=o),t.options.keepSourceTokens&&f&&(d.srcToken=e),d}function hC(t,e,n,i,{spaceBefore:s,comment:a,anchor:o,tag:r,end:c},d){const f={type:"scalar",offset:iSe(e,n,i),indent:-1,source:""},p=mI(t,f,r,d);return o&&(p.anchor=o.source.substring(1),p.anchor===""&&d(o,"BAD_ALIAS","Anchor cannot be an empty string")),s&&(p.spaceBefore=!0),a&&(p.comment=a,p.range[2]=c),p}function aSe({options:t},{offset:e,source:n,end:i},s){const a=new eC(n.substring(1));a.source===""&&s(e,"BAD_ALIAS","Alias cannot be an empty string"),a.source.endsWith(":")&&s(e+n.length-1,"BAD_ALIAS","Alias ending in : is ambiguous",!0);const o=e+n.length,r=Np(i,o,t.strict,s);return a.range=[e,o,r.offset],r.comment&&(a.comment=r.comment),a}function oSe(t,e,{offset:n,start:i,value:s,end:a},o){const r=Object.assign({_directives:e},t),c=new xb(void 0,r),d={atKey:!1,atRoot:!0,directives:c.directives,options:c.options,schema:c.schema},f=Bd(i,{indicator:"doc-start",next:s??a?.[0],offset:n,onError:o,parentIndent:0,startOnNewline:!0});f.found&&(c.directives.docStart=!0,s&&(s.type==="block-map"||s.type==="block-seq")&&!f.hasNewline&&o(f.end,"MISSING_CHAR","Block collection cannot start on same line with directives-end marker")),c.contents=s?pI(d,s,f,o):hC(d,f.end,i,null,f,o);const p=c.contents.range[2],g=Np(a,p,!1,o);return g.comment&&(c.comment=g.comment),c.range=[n,p,g.offset],c}function vf(t){if(typeof t=="number")return[t,t+1];if(Array.isArray(t))return t.length===2?t:[t[0],t[1]];const{offset:e,source:n}=t;return[e,e+(typeof n=="string"?n.length:1)]}function PR(t){let e="",n=!1,i=!1;for(let s=0;s<t.length;++s){const a=t[s];switch(a[0]){case"#":e+=(e===""?"":i?`
`:`
`)+(a.substring(1)||" "),n=!0,i=!1;break;case"%":t[s+1]?.[0]!=="#"&&(s+=1),n=!1;break;default:n||(i=!0),n=!1}}return{comment:e,afterEmptyLine:i}}class rSe{constructor(e={}){this.doc=null,this.atDirectives=!1,this.prelude=[],this.errors=[],this.warnings=[],this.onError=(n,i,s,a)=>{const o=vf(n);a?this.warnings.push(new U2e(o,i,s)):this.errors.push(new Ff(o,i,s))},this.directives=new fs({version:e.version||"1.2"}),this.options=e}decorate(e,n){const{comment:i,afterEmptyLine:s}=PR(this.prelude);if(i){const a=e.contents;if(n)e.comment=e.comment?`${e.comment}
${i}`:i;else if(s||e.directives.docStart||!a)e.commentBefore=i;else if(ai(a)&&!a.flow&&a.items.length>0){let o=a.items[0];ci(o)&&(o=o.key);const r=o.commentBefore;o.commentBefore=r?`${i}
${r}`:i}else{const o=a.commentBefore;a.commentBefore=o?`${i}
${o}`:i}}n?(Array.prototype.push.apply(e.errors,this.errors),Array.prototype.push.apply(e.warnings,this.warnings)):(e.errors=this.errors,e.warnings=this.warnings),this.prelude=[],this.errors=[],this.warnings=[]}streamInfo(){return{comment:PR(this.prelude).comment,directives:this.directives,errors:this.errors,warnings:this.warnings}}*compose(e,n=!1,i=-1){for(const s of e)yield*this.next(s);yield*this.end(n,i)}*next(e){switch(e.type){case"directive":this.directives.add(e.source,(n,i,s)=>{const a=vf(e);a[0]+=n,this.onError(a,"BAD_DIRECTIVE",i,s)}),this.prelude.push(e.source),this.atDirectives=!0;break;case"document":{const n=oSe(this.options,this.directives,e,this.onError);this.atDirectives&&!n.directives.docStart&&this.onError(e,"MISSING_CHAR","Missing directives-end/doc-start indicator line"),this.decorate(n,!1),this.doc&&(yield this.doc),this.doc=n,this.atDirectives=!1;break}case"byte-order-mark":case"space":break;case"comment":case"newline":this.prelude.push(e.source);break;case"error":{const n=e.source?`${e.message}: ${JSON.stringify(e.source)}`:e.message,i=new Ff(vf(e),"UNEXPECTED_TOKEN",n);this.atDirectives||!this.doc?this.errors.push(i):this.doc.errors.push(i);break}case"doc-end":{if(!this.doc){const i="Unexpected doc-end without preceding document";this.errors.push(new Ff(vf(e),"UNEXPECTED_TOKEN",i));break}this.doc.directives.docEnd=!0;const n=Np(e.end,e.offset+e.source.length,this.doc.options.strict,this.onError);if(this.decorate(this.doc,!0),n.comment){const i=this.doc.comment;this.doc.comment=i?`${i}
${n.comment}`:n.comment}this.doc.range[2]=n.offset;break}default:this.errors.push(new Ff(vf(e),"UNEXPECTED_TOKEN",`Unsupported token ${e.type}`))}}*end(e=!1,n=-1){if(this.doc)this.decorate(this.doc,!0),yield this.doc,this.doc=null;else if(e){const i=Object.assign({_directives:this.directives},this.options),s=new xb(void 0,i);this.atDirectives&&this.onError(n,"MISSING_CHAR","Missing directives-end indicator line"),s.range=[0,n,n],this.decorate(s,!1),yield s}}}const gI="\uFEFF",_I="",yI="",yw="";function lSe(t){switch(t){case gI:return"byte-order-mark";case _I:return"doc-mode";case yI:return"flow-error-end";case yw:return"scalar";case"---":return"doc-start";case"...":return"doc-end";case"":case`
`:case`\r
`:return"newline";case"-":return"seq-item-ind";case"?":return"explicit-key-ind";case":":return"map-value-ind";case"{":return"flow-map-start";case"}":return"flow-map-end";case"[":return"flow-seq-start";case"]":return"flow-seq-end";case",":return"comma"}switch(t[0]){case" ":case" ":return"space";case"#":return"comment";case"%":return"directive-line";case"*":return"alias";case"&":return"anchor";case"!":return"tag";case"'":return"single-quoted-scalar";case'"':return"double-quoted-scalar";case"|":case">":return"block-scalar-header"}return null}function Ba(t){switch(t){case void 0:case" ":case`
`:case"\r":case" ":return!0;default:return!1}}const ER=new Set("0123456789ABCDEFabcdef"),cSe=new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"),H_=new Set(",[]{}"),uSe=new Set(` ,[]{}
\r `),h2=t=>!t||uSe.has(t);class dSe{constructor(){this.atEnd=!1,this.blockScalarIndent=-1,this.blockScalarKeep=!1,this.buffer="",this.flowKey=!1,this.flowLevel=0,this.indentNext=0,this.indentValue=0,this.lineEndPos=null,this.next=null,this.pos=0}*lex(e,n=!1){if(e){if(typeof e!="string")throw TypeError("source is not a string");this.buffer=this.buffer?this.buffer+e:e,this.lineEndPos=null}this.atEnd=!n;let i=this.next??"stream";for(;i&&(n||this.hasChars(1));)i=yield*this.parseNext(i)}atLineEnd(){let e=this.pos,n=this.buffer[e];for(;n===" "||n===" ";)n=this.buffer[++e];return!n||n==="#"||n===`
`?!0:n==="\r"?this.buffer[e+1]===`
`:!1}charAt(e){return this.buffer[this.pos+e]}continueScalar(e){let n=this.buffer[e];if(this.indentNext>0){let i=0;for(;n===" ";)n=this.buffer[++i+e];if(n==="\r"){const s=this.buffer[i+e+1];if(s===`
`||!s&&!this.atEnd)return e+i+1}return n===`
`||i>=this.indentNext||!n&&!this.atEnd?e+i:-1}if(n==="-"||n==="."){const i=this.buffer.substr(e,3);if((i==="---"||i==="...")&&Ba(this.buffer[e+3]))return-1}return e}getLine(){let e=this.lineEndPos;return(typeof e!="number"||e!==-1&&e<this.pos)&&(e=this.buffer.indexOf(`
`,this.pos),this.lineEndPos=e),e===-1?this.atEnd?this.buffer.substring(this.pos):null:(this.buffer[e-1]==="\r"&&(e-=1),this.buffer.substring(this.pos,e))}hasChars(e){return this.pos+e<=this.buffer.length}setNext(e){return this.buffer=this.buffer.substring(this.pos),this.pos=0,this.lineEndPos=null,this.next=e,null}peek(e){return this.buffer.substr(this.pos,e)}*parseNext(e){switch(e){case"stream":return yield*this.parseStream();case"line-start":return yield*this.parseLineStart();case"block-start":return yield*this.parseBlockStart();case"doc":return yield*this.parseDocument();case"flow":return yield*this.parseFlowCollection();case"quoted-scalar":return yield*this.parseQuotedScalar();case"block-scalar":return yield*this.parseBlockScalar();case"plain-scalar":return yield*this.parsePlainScalar()}}*parseStream(){let e=this.getLine();if(e===null)return this.setNext("stream");if(e[0]===gI&&(yield*this.pushCount(1),e=e.substring(1)),e[0]==="%"){let n=e.length,i=e.indexOf("#");for(;i!==-1;){const a=e[i-1];if(a===" "||a===" "){n=i-1;break}else i=e.indexOf("#",i+1)}for(;;){const a=e[n-1];if(a===" "||a===" ")n-=1;else break}const s=(yield*this.pushCount(n))+(yield*this.pushSpaces(!0));return yield*this.pushCount(e.length-s),this.pushNewline(),"stream"}if(this.atLineEnd()){const n=yield*this.pushSpaces(!0);return yield*this.pushCount(e.length-n),yield*this.pushNewline(),"stream"}return yield _I,yield*this.parseLineStart()}*parseLineStart(){const e=this.charAt(0);if(!e&&!this.atEnd)return this.setNext("line-start");if(e==="-"||e==="."){if(!this.atEnd&&!this.hasChars(4))return this.setNext("line-start");const n=this.peek(3);if((n==="---"||n==="...")&&Ba(this.charAt(3)))return yield*this.pushCount(3),this.indentValue=0,this.indentNext=0,n==="---"?"doc":"stream"}return this.indentValue=yield*this.pushSpaces(!1),this.indentNext>this.indentValue&&!Ba(this.charAt(1))&&(this.indentNext=this.indentValue),yield*this.parseBlockStart()}*parseBlockStart(){const[e,n]=this.peek(2);if(!n&&!this.atEnd)return this.setNext("block-start");if((e==="-"||e==="?"||e===":")&&Ba(n)){const i=(yield*this.pushCount(1))+(yield*this.pushSpaces(!0));return this.indentNext=this.indentValue+1,this.indentValue+=i,yield*this.parseBlockStart()}return"doc"}*parseDocument(){yield*this.pushSpaces(!0);const e=this.getLine();if(e===null)return this.setNext("doc");let n=yield*this.pushIndicators();switch(e[n]){case"#":yield*this.pushCount(e.length-n);case void 0:return yield*this.pushNewline(),yield*this.parseLineStart();case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel=1,"flow";case"}":case"]":return yield*this.pushCount(1),"doc";case"*":return yield*this.pushUntil(h2),"doc";case'"':case"'":return yield*this.parseQuotedScalar();case"|":case">":return n+=yield*this.parseBlockScalarHeader(),n+=yield*this.pushSpaces(!0),yield*this.pushCount(e.length-n),yield*this.pushNewline(),yield*this.parseBlockScalar();default:return yield*this.parsePlainScalar()}}*parseFlowCollection(){let e,n,i=-1;do e=yield*this.pushNewline(),e>0?(n=yield*this.pushSpaces(!1),this.indentValue=i=n):n=0,n+=yield*this.pushSpaces(!0);while(e+n>0);const s=this.getLine();if(s===null)return this.setNext("flow");if((i!==-1&&i<this.indentNext&&s[0]!=="#"||i===0&&(s.startsWith("---")||s.startsWith("..."))&&Ba(s[3]))&&!(i===this.indentNext-1&&this.flowLevel===1&&(s[0]==="]"||s[0]==="}")))return this.flowLevel=0,yield yI,yield*this.parseLineStart();let a=0;for(;s[a]===",";)a+=yield*this.pushCount(1),a+=yield*this.pushSpaces(!0),this.flowKey=!1;switch(a+=yield*this.pushIndicators(),s[a]){case void 0:return"flow";case"#":return yield*this.pushCount(s.length-a),"flow";case"{":case"[":return yield*this.pushCount(1),this.flowKey=!1,this.flowLevel+=1,"flow";case"}":case"]":return yield*this.pushCount(1),this.flowKey=!0,this.flowLevel-=1,this.flowLevel?"flow":"doc";case"*":return yield*this.pushUntil(h2),"flow";case'"':case"'":return this.flowKey=!0,yield*this.parseQuotedScalar();case":":{const o=this.charAt(1);if(this.flowKey||Ba(o)||o===",")return this.flowKey=!1,yield*this.pushCount(1),yield*this.pushSpaces(!0),"flow"}default:return this.flowKey=!1,yield*this.parsePlainScalar()}}*parseQuotedScalar(){const e=this.charAt(0);let n=this.buffer.indexOf(e,this.pos+1);if(e==="'")for(;n!==-1&&this.buffer[n+1]==="'";)n=this.buffer.indexOf("'",n+2);else for(;n!==-1;){let a=0;for(;this.buffer[n-1-a]==="\\";)a+=1;if(a%2===0)break;n=this.buffer.indexOf('"',n+1)}const i=this.buffer.substring(0,n);let s=i.indexOf(`
`,this.pos);if(s!==-1){for(;s!==-1;){const a=this.continueScalar(s+1);if(a===-1)break;s=i.indexOf(`
`,a)}s!==-1&&(n=s-(i[s-1]==="\r"?2:1))}if(n===-1){if(!this.atEnd)return this.setNext("quoted-scalar");n=this.buffer.length}return yield*this.pushToIndex(n+1,!1),this.flowLevel?"flow":"doc"}*parseBlockScalarHeader(){this.blockScalarIndent=-1,this.blockScalarKeep=!1;let e=this.pos;for(;;){const n=this.buffer[++e];if(n==="+")this.blockScalarKeep=!0;else if(n>"0"&&n<="9")this.blockScalarIndent=Number(n)-1;else if(n!=="-")break}return yield*this.pushUntil(n=>Ba(n)||n==="#")}*parseBlockScalar(){let e=this.pos-1,n=0,i;e:for(let a=this.pos;i=this.buffer[a];++a)switch(i){case" ":n+=1;break;case`
`:e=a,n=0;break;case"\r":{const o=this.buffer[a+1];if(!o&&!this.atEnd)return this.setNext("block-scalar");if(o===`
`)break}default:break e}if(!i&&!this.atEnd)return this.setNext("block-scalar");if(n>=this.indentNext){this.blockScalarIndent===-1?this.indentNext=n:this.indentNext=this.blockScalarIndent+(this.indentNext===0?1:this.indentNext);do{const a=this.continueScalar(e+1);if(a===-1)break;e=this.buffer.indexOf(`
`,a)}while(e!==-1);if(e===-1){if(!this.atEnd)return this.setNext("block-scalar");e=this.buffer.length}}let s=e+1;for(i=this.buffer[s];i===" ";)i=this.buffer[++s];if(i===" "){for(;i===" "||i===" "||i==="\r"||i===`
`;)i=this.buffer[++s];e=s-1}else if(!this.blockScalarKeep)do{let a=e-1,o=this.buffer[a];o==="\r"&&(o=this.buffer[--a]);const r=a;for(;o===" ";)o=this.buffer[--a];if(o===`
`&&a>=this.pos&&a+1+n>r)e=a;else break}while(!0);return yield yw,yield*this.pushToIndex(e+1,!0),yield*this.parseLineStart()}*parsePlainScalar(){const e=this.flowLevel>0;let n=this.pos-1,i=this.pos-1,s;for(;s=this.buffer[++i];)if(s===":"){const a=this.buffer[i+1];if(Ba(a)||e&&H_.has(a))break;n=i}else if(Ba(s)){let a=this.buffer[i+1];if(s==="\r"&&(a===`
`?(i+=1,s=`
`,a=this.buffer[i+1]):n=i),a==="#"||e&&H_.has(a))break;if(s===`
`){const o=this.continueScalar(i+1);if(o===-1)break;i=Math.max(i,o-2)}}else{if(e&&H_.has(s))break;n=i}return!s&&!this.atEnd?this.setNext("plain-scalar"):(yield yw,yield*this.pushToIndex(n+1,!0),e?"flow":"doc")}*pushCount(e){return e>0?(yield this.buffer.substr(this.pos,e),this.pos+=e,e):0}*pushToIndex(e,n){const i=this.buffer.slice(this.pos,e);return i?(yield i,this.pos+=i.length,i.length):(n&&(yield""),0)}*pushIndicators(){switch(this.charAt(0)){case"!":return(yield*this.pushTag())+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"&":return(yield*this.pushUntil(h2))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators());case"-":case"?":case":":{const e=this.flowLevel>0,n=this.charAt(1);if(Ba(n)||e&&H_.has(n))return e?this.flowKey&&(this.flowKey=!1):this.indentNext=this.indentValue+1,(yield*this.pushCount(1))+(yield*this.pushSpaces(!0))+(yield*this.pushIndicators())}}return 0}*pushTag(){if(this.charAt(1)==="<"){let e=this.pos+2,n=this.buffer[e];for(;!Ba(n)&&n!==">";)n=this.buffer[++e];return yield*this.pushToIndex(n===">"?e+1:e,!1)}else{let e=this.pos+1,n=this.buffer[e];for(;n;)if(cSe.has(n))n=this.buffer[++e];else if(n==="%"&&ER.has(this.buffer[e+1])&&ER.has(this.buffer[e+2]))n=this.buffer[e+=3];else break;return yield*this.pushToIndex(e,!1)}}*pushNewline(){const e=this.buffer[this.pos];return e===`
`?yield*this.pushCount(1):e==="\r"&&this.charAt(1)===`
`?yield*this.pushCount(2):0}*pushSpaces(e){let n=this.pos-1,i;do i=this.buffer[++n];while(i===" "||e&&i===" ");const s=n-this.pos;return s>0&&(yield this.buffer.substr(this.pos,s),this.pos=n),s}*pushUntil(e){let n=this.pos,i=this.buffer[n];for(;!e(i);)i=this.buffer[++n];return yield*this.pushToIndex(n,!1)}}class hSe{constructor(){this.lineStarts=[],this.addNewLine=e=>this.lineStarts.push(e),this.linePos=e=>{let n=0,i=this.lineStarts.length;for(;n<i;){const a=n+i>>1;this.lineStarts[a]<e?n=a+1:i=a}if(this.lineStarts[n]===e)return{line:n+1,col:1};if(n===0)return{line:0,col:e};const s=this.lineStarts[n-1];return{line:n,col:e-s+1}}}}function dl(t,e){for(let n=0;n<t.length;++n)if(t[n].type===e)return!0;return!1}function jR(t){for(let e=0;e<t.length;++e)switch(t[e].type){case"space":case"comment":case"newline":break;default:return e}return-1}function bI(t){switch(t?.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":case"flow-collection":return!0;default:return!1}}function W_(t){switch(t.type){case"document":return t.start;case"block-map":{const e=t.items[t.items.length-1];return e.sep??e.start}case"block-seq":return t.items[t.items.length-1].start;default:return[]}}function zu(t){if(t.length===0)return[];let e=t.length;e:for(;--e>=0;)switch(t[e].type){case"doc-start":case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":case"newline":break e}for(;t[++e]?.type==="space";);return t.splice(e,t.length)}function RR(t){if(t.start.type==="flow-seq-start")for(const e of t.items)e.sep&&!e.value&&!dl(e.start,"explicit-key-ind")&&!dl(e.sep,"map-value-ind")&&(e.key&&(e.value=e.key),delete e.key,bI(e.value)?e.value.end?Array.prototype.push.apply(e.value.end,e.sep):e.value.end=e.sep:Array.prototype.push.apply(e.start,e.sep),delete e.sep)}class fSe{constructor(e){this.atNewLine=!0,this.atScalar=!1,this.indent=0,this.offset=0,this.onKeyLine=!1,this.stack=[],this.source="",this.type="",this.lexer=new dSe,this.onNewLine=e}*parse(e,n=!1){this.onNewLine&&this.offset===0&&this.onNewLine(0);for(const i of this.lexer.lex(e,n))yield*this.next(i);n||(yield*this.end())}*next(e){if(this.source=e,this.atScalar){this.atScalar=!1,yield*this.step(),this.offset+=e.length;return}const n=lSe(e);if(n)if(n==="scalar")this.atNewLine=!1,this.atScalar=!0,this.type="scalar";else{switch(this.type=n,yield*this.step(),n){case"newline":this.atNewLine=!0,this.indent=0,this.onNewLine&&this.onNewLine(this.offset+e.length);break;case"space":this.atNewLine&&e[0]===" "&&(this.indent+=e.length);break;case"explicit-key-ind":case"map-value-ind":case"seq-item-ind":this.atNewLine&&(this.indent+=e.length);break;case"doc-mode":case"flow-error-end":return;default:this.atNewLine=!1}this.offset+=e.length}else{const i=`Not a YAML token: ${e}`;yield*this.pop({type:"error",offset:this.offset,message:i,source:e}),this.offset+=e.length}}*end(){for(;this.stack.length>0;)yield*this.pop()}get sourceToken(){return{type:this.type,offset:this.offset,indent:this.indent,source:this.source}}*step(){const e=this.peek(1);if(this.type==="doc-end"&&e?.type!=="doc-end"){for(;this.stack.length>0;)yield*this.pop();this.stack.push({type:"doc-end",offset:this.offset,source:this.source});return}if(!e)return yield*this.stream();switch(e.type){case"document":return yield*this.document(e);case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return yield*this.scalar(e);case"block-scalar":return yield*this.blockScalar(e);case"block-map":return yield*this.blockMap(e);case"block-seq":return yield*this.blockSequence(e);case"flow-collection":return yield*this.flowCollection(e);case"doc-end":return yield*this.documentEnd(e)}yield*this.pop()}peek(e){return this.stack[this.stack.length-e]}*pop(e){const n=e??this.stack.pop();if(!n)yield{type:"error",offset:this.offset,source:"",message:"Tried to pop an empty stack"};else if(this.stack.length===0)yield n;else{const i=this.peek(1);switch(n.type==="block-scalar"?n.indent="indent"in i?i.indent:0:n.type==="flow-collection"&&i.type==="document"&&(n.indent=0),n.type==="flow-collection"&&RR(n),i.type){case"document":i.value=n;break;case"block-scalar":i.props.push(n);break;case"block-map":{const s=i.items[i.items.length-1];if(s.value){i.items.push({start:[],key:n,sep:[]}),this.onKeyLine=!0;return}else if(s.sep)s.value=n;else{Object.assign(s,{key:n,sep:[]}),this.onKeyLine=!s.explicitKey;return}break}case"block-seq":{const s=i.items[i.items.length-1];s.value?i.items.push({start:[],value:n}):s.value=n;break}case"flow-collection":{const s=i.items[i.items.length-1];!s||s.value?i.items.push({start:[],key:n,sep:[]}):s.sep?s.value=n:Object.assign(s,{key:n,sep:[]});return}default:yield*this.pop(),yield*this.pop(n)}if((i.type==="document"||i.type==="block-map"||i.type==="block-seq")&&(n.type==="block-map"||n.type==="block-seq")){const s=n.items[n.items.length-1];s&&!s.sep&&!s.value&&s.start.length>0&&jR(s.start)===-1&&(n.indent===0||s.start.every(a=>a.type!=="comment"||a.indent<n.indent))&&(i.type==="document"?i.end=s.start:i.items.push({start:s.start}),n.items.splice(-1,1))}}}*stream(){switch(this.type){case"directive-line":yield{type:"directive",offset:this.offset,source:this.source};return;case"byte-order-mark":case"space":case"comment":case"newline":yield this.sourceToken;return;case"doc-mode":case"doc-start":{const e={type:"document",offset:this.offset,start:[]};this.type==="doc-start"&&e.start.push(this.sourceToken),this.stack.push(e);return}}yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML stream`,source:this.source}}*document(e){if(e.value)return yield*this.lineEnd(e);switch(this.type){case"doc-start":{jR(e.start)!==-1?(yield*this.pop(),yield*this.step()):e.start.push(this.sourceToken);return}case"anchor":case"tag":case"space":case"comment":case"newline":e.start.push(this.sourceToken);return}const n=this.startBlockValue(e);n?this.stack.push(n):yield{type:"error",offset:this.offset,message:`Unexpected ${this.type} token in YAML document`,source:this.source}}*scalar(e){if(this.type==="map-value-ind"){const n=W_(this.peek(2)),i=zu(n);let s;e.end?(s=e.end,s.push(this.sourceToken),delete e.end):s=[this.sourceToken];const a={type:"block-map",offset:e.offset,indent:e.indent,items:[{start:i,key:e,sep:s}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=a}else yield*this.lineEnd(e)}*blockScalar(e){switch(this.type){case"space":case"comment":case"newline":e.props.push(this.sourceToken);return;case"scalar":if(e.source=this.source,this.atNewLine=!0,this.indent=0,this.onNewLine){let n=this.source.indexOf(`
`)+1;for(;n!==0;)this.onNewLine(this.offset+n),n=this.source.indexOf(`
`,n)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap(e){const n=e.items[e.items.length-1];switch(this.type){case"newline":if(this.onKeyLine=!1,n.value){const i="end"in n.value?n.value.end:void 0;(Array.isArray(i)?i[i.length-1]:void 0)?.type==="comment"?i?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else n.sep?n.sep.push(this.sourceToken):n.start.push(this.sourceToken);return;case"space":case"comment":if(n.value)e.items.push({start:[this.sourceToken]});else if(n.sep)n.sep.push(this.sourceToken);else{if(this.atIndentedComment(n.start,e.indent)){const s=e.items[e.items.length-2]?.value?.end;if(Array.isArray(s)){Array.prototype.push.apply(s,n.start),s.push(this.sourceToken),e.items.pop();return}}n.start.push(this.sourceToken)}return}if(this.indent>=e.indent){const i=!this.onKeyLine&&this.indent===e.indent,s=i&&(n.sep||n.explicitKey)&&this.type!=="seq-item-ind";let a=[];if(s&&n.sep&&!n.value){const o=[];for(let r=0;r<n.sep.length;++r){const c=n.sep[r];switch(c.type){case"newline":o.push(r);break;case"space":break;case"comment":c.indent>e.indent&&(o.length=0);break;default:o.length=0}}o.length>=2&&(a=n.sep.splice(o[1]))}switch(this.type){case"anchor":case"tag":s||n.value?(a.push(this.sourceToken),e.items.push({start:a}),this.onKeyLine=!0):n.sep?n.sep.push(this.sourceToken):n.start.push(this.sourceToken);return;case"explicit-key-ind":!n.sep&&!n.explicitKey?(n.start.push(this.sourceToken),n.explicitKey=!0):s||n.value?(a.push(this.sourceToken),e.items.push({start:a,explicitKey:!0})):this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]}),this.onKeyLine=!0;return;case"map-value-ind":if(n.explicitKey)if(n.sep)if(n.value)e.items.push({start:[],key:null,sep:[this.sourceToken]});else if(dl(n.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:a,key:null,sep:[this.sourceToken]}]});else if(bI(n.key)&&!dl(n.sep,"newline")){const o=zu(n.start),r=n.key,c=n.sep;c.push(this.sourceToken),delete n.key,delete n.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:o,key:r,sep:c}]})}else a.length>0?n.sep=n.sep.concat(a,this.sourceToken):n.sep.push(this.sourceToken);else if(dl(n.start,"newline"))Object.assign(n,{key:null,sep:[this.sourceToken]});else{const o=zu(n.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:o,key:null,sep:[this.sourceToken]}]})}else n.sep?n.value||s?e.items.push({start:a,key:null,sep:[this.sourceToken]}):dl(n.sep,"map-value-ind")?this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]}):n.sep.push(this.sourceToken):Object.assign(n,{key:null,sep:[this.sourceToken]});this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{const o=this.flowScalar(this.type);s||n.value?(e.items.push({start:a,key:o,sep:[]}),this.onKeyLine=!0):n.sep?this.stack.push(o):(Object.assign(n,{key:o,sep:[]}),this.onKeyLine=!0);return}default:{const o=this.startBlockValue(e);if(o){if(o.type==="block-seq"){if(!n.explicitKey&&n.sep&&!dl(n.sep,"newline")){yield*this.pop({type:"error",offset:this.offset,message:"Unexpected block-seq-ind on same line with key",source:this.source});return}}else i&&e.items.push({start:a});this.stack.push(o);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(e){const n=e.items[e.items.length-1];switch(this.type){case"newline":if(n.value){const i="end"in n.value?n.value.end:void 0;(Array.isArray(i)?i[i.length-1]:void 0)?.type==="comment"?i?.push(this.sourceToken):e.items.push({start:[this.sourceToken]})}else n.start.push(this.sourceToken);return;case"space":case"comment":if(n.value)e.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(n.start,e.indent)){const s=e.items[e.items.length-2]?.value?.end;if(Array.isArray(s)){Array.prototype.push.apply(s,n.start),s.push(this.sourceToken),e.items.pop();return}}n.start.push(this.sourceToken)}return;case"anchor":case"tag":if(n.value||this.indent<=e.indent)break;n.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==e.indent)break;n.value||dl(n.start,"seq-item-ind")?e.items.push({start:[this.sourceToken]}):n.start.push(this.sourceToken);return}if(this.indent>e.indent){const i=this.startBlockValue(e);if(i){this.stack.push(i);return}}yield*this.pop(),yield*this.step()}*flowCollection(e){const n=e.items[e.items.length-1];if(this.type==="flow-error-end"){let i;do yield*this.pop(),i=this.peek(1);while(i?.type==="flow-collection")}else if(e.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":!n||n.sep?e.items.push({start:[this.sourceToken]}):n.start.push(this.sourceToken);return;case"map-value-ind":!n||n.value?e.items.push({start:[],key:null,sep:[this.sourceToken]}):n.sep?n.sep.push(this.sourceToken):Object.assign(n,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":!n||n.value?e.items.push({start:[this.sourceToken]}):n.sep?n.sep.push(this.sourceToken):n.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{const s=this.flowScalar(this.type);!n||n.value?e.items.push({start:[],key:s,sep:[]}):n.sep?this.stack.push(s):Object.assign(n,{key:s,sep:[]});return}case"flow-map-end":case"flow-seq-end":e.end.push(this.sourceToken);return}const i=this.startBlockValue(e);i?this.stack.push(i):(yield*this.pop(),yield*this.step())}else{const i=this.peek(2);if(i.type==="block-map"&&(this.type==="map-value-ind"&&i.indent===e.indent||this.type==="newline"&&!i.items[i.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&i.type!=="flow-collection"){const s=W_(i),a=zu(s);RR(e);const o=e.end.splice(1,e.end.length);o.push(this.sourceToken);const r={type:"block-map",offset:e.offset,indent:e.indent,items:[{start:a,key:e,sep:o}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=r}else yield*this.lineEnd(e)}}flowScalar(e){if(this.onNewLine){let n=this.source.indexOf(`
`)+1;for(;n!==0;)this.onNewLine(this.offset+n),n=this.source.indexOf(`
`,n)+1}return{type:e,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(e){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;const n=W_(e),i=zu(n);return i.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:i,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;const n=W_(e),i=zu(n);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start:i,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(e,n){return this.type!=="comment"||this.indent<=n?!1:e.every(i=>i.type==="newline"||i.type==="space")}*documentEnd(e){this.type!=="doc-mode"&&(e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop()))}*lineEnd(e){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;case"space":case"comment":default:e.end?e.end.push(this.sourceToken):e.end=[this.sourceToken],this.type==="newline"&&(yield*this.pop())}}}function mSe(t){const e=t.prettyErrors!==!1;return{lineCounter:t.lineCounter||e&&new hSe||null,prettyErrors:e}}function qm(t,e={}){const{lineCounter:n,prettyErrors:i}=mSe(e),s=new fSe(n?.addNewLine),a=new rSe(e);let o=null;for(const r of a.compose(s.parse(t),!0,t.length))if(!o)o=r;else if(o.options.logLevel!=="silent"){o.errors.push(new Ff(r.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}return i&&n&&(o.errors.forEach(LR(t,n)),o.warnings.forEach(LR(t,n))),o}function vI(t,e,n){let i;const s=qm(t,n);if(!s)return null;if(s.warnings.forEach(a=>WF(s.options.logLevel,a)),s.errors.length>0){if(s.options.logLevel!=="silent")throw s.errors[0];s.errors=[]}return s.toJS(Object.assign({reviver:i},n))}const pSe="ConfigSection-module__section___36A5y",gSe="ConfigSection-module__header___9y9kI",_Se="ConfigSection-module__titleRow___MDqPS",ySe="ConfigSection-module__indexBadge___BNk-6",bSe="ConfigSection-module__iconBadge___608--",vSe="ConfigSection-module__headingGroup___iqK3P",xSe="ConfigSection-module__title___fNwM-",SSe="ConfigSection-module__description___uM2Zw",wSe="ConfigSection-module__content___RBAGw",or={section:pSe,header:gSe,titleRow:_Se,indexBadge:ySe,iconBadge:bSe,headingGroup:vSe,title:xSe,description:SSe,content:wSe},rr=S.forwardRef(function({title:e,description:n,indexLabel:i,icon:s,className:a,children:o,...r},c){const d=[or.section,a].filter(Boolean).join(" ");return h.jsxs("section",{ref:c,className:d,...r,children:[h.jsxs("header",{className:or.header,children:[h.jsxs("div",{className:or.titleRow,children:[i?h.jsx("span",{className:or.indexBadge,children:i}):null,s?h.jsx("span",{className:or.iconBadge,children:s}):null]}),h.jsxs("div",{className:or.headingGroup,children:[h.jsx("h2",{className:or.title,children:e}),n?h.jsx("p",{className:or.description,children:n}):null]})]}),h.jsx("div",{className:or.content,children:o})]})}),kSe="VisualConfigEditor-module__visualEditor___qt8bb",CSe="VisualConfigEditor-module__expandableInputWrapper___k5rpc",ASe="VisualConfigEditor-module__expandableTextarea___OVvmN",NSe="VisualConfigEditor-module__expandableToggle___M5mBU",TSe="VisualConfigEditor-module__expandableInputExpanded___9zfyv",MSe="VisualConfigEditor-module__overview___OzHQc",LSe="VisualConfigEditor-module__overviewHeader___A8kWa",OSe="VisualConfigEditor-module__overviewMeta___SM8ZF",PSe="VisualConfigEditor-module__overviewPill___eXq54",ESe="VisualConfigEditor-module__overviewPillWarning___ruscj",jSe="VisualConfigEditor-module__overviewFocusList___UfkDy",RSe="VisualConfigEditor-module__overviewFocusLink___CSqNR",DSe="VisualConfigEditor-module__overviewFocusLinkActive___LCEnC",FSe="VisualConfigEditor-module__focusIcon___9SvWW",ISe="VisualConfigEditor-module__focusCopy___FTgbh",BSe="VisualConfigEditor-module__focusTitle___mIxOM",USe="VisualConfigEditor-module__focusDescription___NUwa3",qSe="VisualConfigEditor-module__workspace___gqLDP",zSe="VisualConfigEditor-module__mobileSectionNav___d-TWK",KSe="VisualConfigEditor-module__mobileSectionNavScroller___VGXz-",VSe="VisualConfigEditor-module__mobileSectionNavButton___mR9BT",HSe="VisualConfigEditor-module__mobileSectionNavButtonActive___ug6e6",WSe="VisualConfigEditor-module__mobileSectionNavIndex___eVeF8",GSe="VisualConfigEditor-module__mobileSectionNavLabel___oOjqs",$Se="VisualConfigEditor-module__mobileSectionNavBadge___Gp-uW",XSe="VisualConfigEditor-module__sidebar___SiTqL",QSe="VisualConfigEditor-module__sidebarPlaceholder___LpX2Y",YSe="VisualConfigEditor-module__sidebarRail___aktyQ",JSe="VisualConfigEditor-module__floatingSidebarContainer___FWwFS",ZSe="VisualConfigEditor-module__floatingSidebarRail___ym20u",ewe="VisualConfigEditor-module__navList___Z7CyL",twe="VisualConfigEditor-module__navButton___EtGL7",nwe="VisualConfigEditor-module__navButtonActive___oMl0Y",iwe="VisualConfigEditor-module__navIndex___NEFe2",swe="VisualConfigEditor-module__navMain___JoJFq",awe="VisualConfigEditor-module__navHeadingRow___ulXXL",owe="VisualConfigEditor-module__navLabelWrap___3-6B4",rwe="VisualConfigEditor-module__navIcon___ZGr7m",lwe="VisualConfigEditor-module__navLabel___-reRP",cwe="VisualConfigEditor-module__navDescription___PvAH-",uwe="VisualConfigEditor-module__navBadge___UKNbs",dwe="VisualConfigEditor-module__sections___UAac4",hwe="VisualConfigEditor-module__sectionGrid___KHy6p",fwe="VisualConfigEditor-module__sectionStack___nY-l7",mwe="VisualConfigEditor-module__divider___RHNc6",pwe="VisualConfigEditor-module__toggleRow___Lb65M",gwe="VisualConfigEditor-module__toggleCopy___IC6RU",_we="VisualConfigEditor-module__toggleTitle___ep81q",ywe="VisualConfigEditor-module__toggleDescription___DrJw5",bwe="VisualConfigEditor-module__fieldShell___Q-UC-",vwe="VisualConfigEditor-module__fieldLabel___B0C9J",xwe="VisualConfigEditor-module__fieldControl___bzi3y",Swe="VisualConfigEditor-module__fieldHint___lA9jH",wwe="VisualConfigEditor-module__inlinePill___qI2DE",kwe="VisualConfigEditor-module__subsection___wLWRY",Cwe="VisualConfigEditor-module__subsectionHeader___OAu1N",Awe="VisualConfigEditor-module__subsectionTitle___9spj4",Nwe="VisualConfigEditor-module__subsectionDescription___Cy1zr",Twe="VisualConfigEditor-module__blockHeaderRow___bw0Ek",Mwe="VisualConfigEditor-module__blockStack___skL7x",Lwe="VisualConfigEditor-module__ruleCard___PtDhf",Owe="VisualConfigEditor-module__ruleCardHeader___MYRwJ",Pwe="VisualConfigEditor-module__ruleCardTitle___tshgp",Ewe="VisualConfigEditor-module__blockLabel___NjEEm",jwe="VisualConfigEditor-module__actionRow___XLzbJ",Rwe="VisualConfigEditor-module__emptyState___A7-n3",Dwe="VisualConfigEditor-module__stringList___lQQGc",Fwe="VisualConfigEditor-module__stringListRow___4k2cz",Iwe="VisualConfigEditor-module__payloadRuleModelRow___VKBv1",Bwe="VisualConfigEditor-module__payloadRuleModelRowProtocolFirst___OaJ2F",Uwe="VisualConfigEditor-module__payloadRuleParamRow___KZJW-",qwe="VisualConfigEditor-module__payloadRuleParamGroup___1QLNQ",zwe="VisualConfigEditor-module__payloadJsonInput___ewOqz",Kwe="VisualConfigEditor-module__payloadParamError___wGWdg",Vwe="VisualConfigEditor-module__payloadFilterModelRow___MeP9-",Hwe="VisualConfigEditor-module__apiKeyModalInputRow___08QmU",Wwe="VisualConfigEditor-module__payloadRowActionButton___8Fdka",Re={visualEditor:kSe,expandableInputWrapper:CSe,expandableTextarea:ASe,expandableToggle:NSe,expandableInputExpanded:TSe,overview:MSe,overviewHeader:LSe,overviewMeta:OSe,overviewPill:PSe,overviewPillWarning:ESe,overviewFocusList:jSe,overviewFocusLink:RSe,overviewFocusLinkActive:DSe,focusIcon:FSe,focusCopy:ISe,focusTitle:BSe,focusDescription:USe,workspace:qSe,mobileSectionNav:zSe,mobileSectionNavScroller:KSe,mobileSectionNavButton:VSe,mobileSectionNavButtonActive:HSe,mobileSectionNavIndex:WSe,mobileSectionNavLabel:GSe,mobileSectionNavBadge:$Se,sidebar:XSe,sidebarPlaceholder:QSe,sidebarRail:YSe,floatingSidebarContainer:JSe,floatingSidebarRail:ZSe,navList:ewe,navButton:twe,navButtonActive:nwe,navIndex:iwe,navMain:swe,navHeadingRow:awe,navLabelWrap:owe,navIcon:rwe,navLabel:lwe,navDescription:cwe,navBadge:uwe,sections:dwe,sectionGrid:hwe,sectionStack:fwe,divider:mwe,toggleRow:pwe,toggleCopy:gwe,toggleTitle:_we,toggleDescription:ywe,fieldShell:bwe,fieldLabel:vwe,fieldControl:xwe,fieldHint:Swe,inlinePill:wwe,subsection:kwe,subsectionHeader:Cwe,subsectionTitle:Awe,subsectionDescription:Nwe,blockHeaderRow:Twe,blockStack:Mwe,ruleCard:Lwe,ruleCardHeader:Owe,ruleCardTitle:Pwe,blockLabel:Ewe,actionRow:jwe,emptyState:Rwe,stringList:Dwe,stringListRow:Fwe,payloadRuleModelRow:Iwe,payloadRuleModelRowProtocolFirst:Bwe,payloadRuleParamRow:Uwe,payloadRuleParamGroup:qwe,payloadJsonInput:zwe,payloadParamError:Kwe,payloadFilterModelRow:Vwe,apiKeyModalInputRow:Hwe,payloadRowActionButton:Wwe},Ga=()=>typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID():`${Date.now().toString(36)}_${Math.random().toString(36).slice(2,10)}`,DR={host:"",port:"",tlsEnable:!1,tlsCert:"",tlsKey:"",rmAllowRemote:!1,rmSecretKey:"",rmDisableControlPanel:!1,rmPanelRepo:"",authDir:"",apiKeysText:"",debug:!1,commercialMode:!1,loggingToFile:!1,logsMaxTotalSizeMb:"",usageStatisticsEnabled:!1,proxyUrl:"",forceModelPrefix:!1,requestRetry:"",maxRetryCredentials:"",maxRetryInterval:"",quotaSwitchProject:!0,quotaSwitchPreviewModel:!0,routingStrategy:"round-robin",wsAuth:!1,payloadDefaultRules:[],payloadDefaultRawRules:[],payloadOverrideRules:[],payloadOverrideRawRules:[],payloadFilterRules:[],streaming:{keepaliveSeconds:"",bootstrapRetries:"",nonstreamKeepaliveInterval:""}};function Ci(t){return t===null||typeof t!="object"||Array.isArray(t)?null:t}function Gwe(t){if(typeof t=="string"){const i=t.trim();return i||null}const e=Ci(t);if(!e)return null;const n=[e["api-key"],e.apiKey,e.key,e.Key];for(const i of n)if(typeof i=="string"){const s=i.trim();if(s)return s}return null}function f2(t){if(!Array.isArray(t))return"";const e=[];for(const n of t){const i=Gwe(n);i&&e.push(i)}return e.join(`
`)}function $we(t){if(Object.prototype.hasOwnProperty.call(t,"api-keys"))return f2(t["api-keys"]);const e=Ci(t.auth),n=Ci(e?.providers),i=Ci(n?.["config-api-key"]);return i?Object.prototype.hasOwnProperty.call(i,"api-key-entries")?f2(i["api-key-entries"]):f2(i["api-keys"]):""}function Oi(t,e){return t.hasIn(e)}function Ku(t,e){const n=t.getIn(e,!0);Fl(n)||t.setIn(e,t.createNode({}))}function gr(t,e){const n=t.getIn(e,!0);Fl(n)&&n.items.length===0&&t.deleteIn(e)}function lr(t,e,n){if(n){t.setIn(e,!0);return}Oi(t,e)&&t.setIn(e,!1)}function cc(t,e,n){const i=typeof n=="string"?n:"";if(i.trim()!==""){t.setIn(e,i);return}Oi(t,e)&&t.setIn(e,"")}function ol(t,e,n){const s=(typeof n=="string"?n:"").trim();if(s===""){Oi(t,e)&&t.deleteIn(e);return}if(!/^-?\d+$/.test(s))return;const a=Number(s);if(Number.isFinite(a)){t.setIn(e,a);return}}function uc(t){const e=t.trim();if(e)return/^-?\d+$/.test(e)&&Number(e)>=0?void 0:"non_negative_integer"}function Xwe(t){const e=t.trim();if(!e)return;if(!/^\d+$/.test(e))return"port_range";const n=Number(e);return n>=1&&n<=65535?void 0:"port_range"}function Qwe(t){return{port:Xwe(t.port),logsMaxTotalSizeMb:uc(t.logsMaxTotalSizeMb),requestRetry:uc(t.requestRetry),maxRetryCredentials:uc(t.maxRetryCredentials),maxRetryInterval:uc(t.maxRetryInterval),"streaming.keepaliveSeconds":uc(t.streaming.keepaliveSeconds),"streaming.bootstrapRetries":uc(t.streaming.bootstrapRetries),"streaming.nonstreamKeepaliveInterval":uc(t.streaming.nonstreamKeepaliveInterval)}}function xI(t){const e=t.value.trim();switch(t.valueType){case"number":{if(!e)return"payload_invalid_number";const n=Number(e);return Number.isFinite(n)?void 0:"payload_invalid_number"}case"boolean":{const n=e.toLowerCase();return n==="true"||n==="false"?void 0:"payload_invalid_boolean"}case"json":{if(!e)return"payload_invalid_json";try{JSON.parse(t.value);return}catch{return"payload_invalid_json"}}default:return}}function G_(t){return t.some(e=>e.params.some(n=>!!xI(n)))}function Ywe(t){return typeof structuredClone=="function"?structuredClone(t):JSON.parse(JSON.stringify(t))}function Jwe(t){if(typeof t=="number")return{valueType:"number",value:String(t)};if(typeof t=="boolean")return{valueType:"boolean",value:String(t)};if(t===null||typeof t=="object")try{return{valueType:"json",value:JSON.stringify(t,null,2)??"null"}}catch{return{valueType:"json",value:String(t)}}return{valueType:"string",value:String(t??"")}}function Zwe(t){if(typeof t=="string")return t;try{return JSON.stringify(t,null,2)??""}catch{return String(t??"")}}function fC(t){if(typeof t=="string")return t.trim()?t:void 0}function eke(t){Oi(t,["auth","providers","config-api-key","api-key-entries"])&&t.deleteIn(["auth","providers","config-api-key","api-key-entries"]),Oi(t,["auth","providers","config-api-key","api-keys"])&&t.deleteIn(["auth","providers","config-api-key","api-keys"]),gr(t,["auth","providers","config-api-key"]),gr(t,["auth","providers"]),gr(t,["auth"])}function FR(t){return Array.isArray(t)?t.map((e,n)=>{const i=Ci(e)??{},s=i.models,a=Array.isArray(s)?s.map((c,d)=>{const f=Ci(c),p=typeof c=="string"?c:f?.name??f?.id??"",g=typeof p=="string"?p:String(p??"");return{id:`model-${n}-${d}`,name:g,protocol:fC(f?.protocol)}}):[],o=Ci(i.params),r=o?Object.entries(o).map(([c,d],f)=>{const p=Jwe(d);return{id:`param-${n}-${f}`,path:c,valueType:p.valueType,value:p.value}}):[];return{id:`payload-rule-${n}`,models:a,params:r}}):[]}function tke(t){return Array.isArray(t)?t.map((e,n)=>{const i=Ci(e)??{},s=i.models,a=Array.isArray(s)?s.map((c,d)=>{const f=Ci(c),p=typeof c=="string"?c:f?.name??f?.id??"",g=typeof p=="string"?p:String(p??"");return{id:`filter-model-${n}-${d}`,name:g,protocol:fC(f?.protocol)}}):[],o=i.params,r=Array.isArray(o)?o.map(String):[];return{id:`payload-filter-rule-${n}`,models:a,params:r}}):[]}function IR(t){return Array.isArray(t)?t.map((e,n)=>{const i=Ci(e)??{},s=i.models,a=Array.isArray(s)?s.map((c,d)=>{const f=Ci(c),p=typeof c=="string"?c:f?.name??f?.id??"",g=typeof p=="string"?p:String(p??"");return{id:`raw-model-${n}-${d}`,name:g,protocol:fC(f?.protocol)}}):[],o=Ci(i.params),r=o?Object.entries(o).map(([c,d],f)=>({id:`raw-param-${n}-${f}`,path:c,valueType:"json",value:Zwe(d)})):[];return{id:`payload-raw-rule-${n}`,models:a,params:r}}):[]}function BR(t){return t.map(e=>{const n=(e.models||[]).filter(s=>s.name?.trim()).map(s=>{const a={name:s.name.trim()};return s.protocol&&(a.protocol=s.protocol),a}),i={};for(const s of e.params||[]){if(!s.path?.trim())continue;let a=s.value;if(s.valueType==="number"){const o=Number(s.value);a=Number.isFinite(o)?o:s.value}else if(s.valueType==="boolean")a=s.value==="true";else if(s.valueType==="json")try{a=JSON.parse(s.value)}catch{a=s.value}i[s.path.trim()]=a}return{models:n,params:i}}).filter(e=>e.models.length>0)}function nke(t){return t.map(e=>{const n=(e.models||[]).filter(s=>s.name?.trim()).map(s=>{const a={name:s.name.trim()};return s.protocol&&(a.protocol=s.protocol),a}),i=(Array.isArray(e.params)?e.params:[]).map(s=>String(s).trim()).filter(Boolean);return{models:n,params:i}}).filter(e=>e.models.length>0)}function UR(t){return t.map(e=>{const n=(e.models||[]).filter(s=>s.name?.trim()).map(s=>{const a={name:s.name.trim()};return s.protocol&&(a.protocol=s.protocol),a}),i={};for(const s of e.params||[])s.path?.trim()&&(i[s.path.trim()]=s.value);return{models:n,params:i}}).filter(e=>e.models.length>0)}function ike(){const[t,e]=S.useState({...DR}),[n,i]=S.useState({...DR}),[s,a]=S.useState(null),o=S.useMemo(()=>Qwe(t),[t]),r=S.useMemo(()=>G_(t.payloadDefaultRules)||G_(t.payloadDefaultRawRules)||G_(t.payloadOverrideRules)||G_(t.payloadOverrideRawRules),[t.payloadDefaultRules,t.payloadDefaultRawRules,t.payloadOverrideRules,t.payloadOverrideRawRules]),c=S.useMemo(()=>JSON.stringify(t)!==JSON.stringify(n),[n,t]),d=S.useCallback(g=>{try{const y=qm(g);if(y.errors.length>0)throw new Error(y.errors[0]?.message??"Invalid YAML");const _=vI(g)||{},v=Ci(_)??{},x=Ci(v.tls),k=Ci(v["remote-management"]),C=Ci(v["quota-exceeded"]),N=Ci(v.routing),L=Ci(v.payload),M=Ci(v.streaming),O={host:typeof v.host=="string"?v.host:"",port:String(v.port??""),tlsEnable:!!x?.enable,tlsCert:typeof x?.cert=="string"?x.cert:"",tlsKey:typeof x?.key=="string"?x.key:"",rmAllowRemote:!!k?.["allow-remote"],rmSecretKey:typeof k?.["secret-key"]=="string"?k["secret-key"]:"",rmDisableControlPanel:!!k?.["disable-control-panel"],rmPanelRepo:typeof k?.["panel-github-repository"]=="string"?k["panel-github-repository"]:typeof k?.["panel-repo"]=="string"?k["panel-repo"]:"",authDir:typeof v["auth-dir"]=="string"?v["auth-dir"]:"",apiKeysText:$we(v),debug:!!v.debug,commercialMode:!!v["commercial-mode"],loggingToFile:!!v["logging-to-file"],logsMaxTotalSizeMb:String(v["logs-max-total-size-mb"]??""),usageStatisticsEnabled:!!v["usage-statistics-enabled"],proxyUrl:typeof v["proxy-url"]=="string"?v["proxy-url"]:"",forceModelPrefix:!!v["force-model-prefix"],requestRetry:String(v["request-retry"]??""),maxRetryCredentials:String(v["max-retry-credentials"]??""),maxRetryInterval:String(v["max-retry-interval"]??""),wsAuth:!!v["ws-auth"],quotaSwitchProject:!!(C?.["switch-project"]??!0),quotaSwitchPreviewModel:!!(C?.["switch-preview-model"]??!0),routingStrategy:N?.strategy==="fill-first"?"fill-first":"round-robin",payloadDefaultRules:FR(L?.default),payloadDefaultRawRules:IR(L?.["default-raw"]),payloadOverrideRules:FR(L?.override),payloadOverrideRawRules:IR(L?.["override-raw"]),payloadFilterRules:tke(L?.filter),streaming:{keepaliveSeconds:String(M?.["keepalive-seconds"]??""),bootstrapRetries:String(M?.["bootstrap-retries"]??""),nonstreamKeepaliveInterval:String(v["nonstream-keepalive-interval"]??"")}};return e(O),i(Ywe(O)),a(null),{ok:!0}}catch(y){const _=y instanceof Error?y.message:"Invalid YAML";return a(_),{ok:!1,error:_}}},[]),f=S.useCallback(g=>{try{const y=qm(g);if(y.errors.length>0)return g;Fl(y.contents)||(y.contents=y.createNode({}));const _=t;cc(y,["host"],_.host),ol(y,["port"],_.port),(Oi(y,["tls"])||_.tlsEnable||_.tlsCert.trim()||_.tlsKey.trim())&&(Ku(y,["tls"]),lr(y,["tls","enable"],_.tlsEnable),cc(y,["tls","cert"],_.tlsCert),cc(y,["tls","key"],_.tlsKey),gr(y,["tls"])),(Oi(y,["remote-management"])||_.rmAllowRemote||_.rmSecretKey.trim()||_.rmDisableControlPanel||_.rmPanelRepo.trim())&&(Ku(y,["remote-management"]),lr(y,["remote-management","allow-remote"],_.rmAllowRemote),cc(y,["remote-management","secret-key"],_.rmSecretKey),lr(y,["remote-management","disable-control-panel"],_.rmDisableControlPanel),cc(y,["remote-management","panel-github-repository"],_.rmPanelRepo),Oi(y,["remote-management","panel-repo"])&&y.deleteIn(["remote-management","panel-repo"]),gr(y,["remote-management"])),cc(y,["auth-dir"],_.authDir);const v=_.apiKeysText.split(`
`).map(L=>L.trim()).filter(Boolean);v.length>0?y.setIn(["api-keys"],v):Oi(y,["api-keys"])&&y.deleteIn(["api-keys"]),eke(y),lr(y,["debug"],_.debug),lr(y,["commercial-mode"],_.commercialMode),lr(y,["logging-to-file"],_.loggingToFile),ol(y,["logs-max-total-size-mb"],_.logsMaxTotalSizeMb),lr(y,["usage-statistics-enabled"],_.usageStatisticsEnabled),cc(y,["proxy-url"],_.proxyUrl),lr(y,["force-model-prefix"],_.forceModelPrefix),ol(y,["request-retry"],_.requestRetry),ol(y,["max-retry-credentials"],_.maxRetryCredentials),ol(y,["max-retry-interval"],_.maxRetryInterval),lr(y,["ws-auth"],_.wsAuth),(Oi(y,["quota-exceeded"])||!_.quotaSwitchProject||!_.quotaSwitchPreviewModel)&&(Ku(y,["quota-exceeded"]),y.setIn(["quota-exceeded","switch-project"],_.quotaSwitchProject),y.setIn(["quota-exceeded","switch-preview-model"],_.quotaSwitchPreviewModel),gr(y,["quota-exceeded"])),(Oi(y,["routing"])||_.routingStrategy!=="round-robin")&&(Ku(y,["routing"]),y.setIn(["routing","strategy"],_.routingStrategy),gr(y,["routing"]));const x=typeof _.streaming?.keepaliveSeconds=="string"?_.streaming.keepaliveSeconds:"",k=typeof _.streaming?.bootstrapRetries=="string"?_.streaming.bootstrapRetries:"",C=typeof _.streaming?.nonstreamKeepaliveInterval=="string"?_.streaming.nonstreamKeepaliveInterval:"";return(Oi(y,["streaming"])||x.trim()||k.trim())&&(Ku(y,["streaming"]),ol(y,["streaming","keepalive-seconds"],x),ol(y,["streaming","bootstrap-retries"],k),gr(y,["streaming"])),ol(y,["nonstream-keepalive-interval"],C),(Oi(y,["payload"])||_.payloadDefaultRules.length>0||_.payloadDefaultRawRules.length>0||_.payloadOverrideRules.length>0||_.payloadOverrideRawRules.length>0||_.payloadFilterRules.length>0)&&(Ku(y,["payload"]),_.payloadDefaultRules.length>0?y.setIn(["payload","default"],BR(_.payloadDefaultRules)):Oi(y,["payload","default"])&&y.deleteIn(["payload","default"]),_.payloadDefaultRawRules.length>0?y.setIn(["payload","default-raw"],UR(_.payloadDefaultRawRules)):Oi(y,["payload","default-raw"])&&y.deleteIn(["payload","default-raw"]),_.payloadOverrideRules.length>0?y.setIn(["payload","override"],BR(_.payloadOverrideRules)):Oi(y,["payload","override"])&&y.deleteIn(["payload","override"]),_.payloadOverrideRawRules.length>0?y.setIn(["payload","override-raw"],UR(_.payloadOverrideRawRules)):Oi(y,["payload","override-raw"])&&y.deleteIn(["payload","override-raw"]),_.payloadFilterRules.length>0?y.setIn(["payload","filter"],nke(_.payloadFilterRules)):Oi(y,["payload","filter"])&&y.deleteIn(["payload","filter"]),gr(y,["payload"])),y.toString({indent:2,lineWidth:120,minContentWidth:0})}catch{return g}},[t]),p=S.useCallback(g=>{e(y=>{const _={...y,...g};return g.streaming&&(_.streaming={...y.streaming,...g.streaming}),_})},[]);return{visualValues:t,visualDirty:c,visualParseError:s,visualValidationErrors:o,visualHasPayloadValidationErrors:r,loadVisualValuesFromYaml:d,applyVisualChangesToYaml:f,setVisualValues:p}}const ske=[{value:"",labelKey:"config_management.visual.payload_rules.provider_default",defaultLabel:"Default"},{value:"openai",labelKey:"config_management.visual.payload_rules.provider_openai",defaultLabel:"OpenAI"},{value:"openai-response",labelKey:"config_management.visual.payload_rules.provider_openai_response",defaultLabel:"OpenAI Response"},{value:"gemini",labelKey:"config_management.visual.payload_rules.provider_gemini",defaultLabel:"Gemini"},{value:"claude",labelKey:"config_management.visual.payload_rules.provider_claude",defaultLabel:"Claude"},{value:"codex",labelKey:"config_management.visual.payload_rules.provider_codex",defaultLabel:"Codex"},{value:"antigravity",labelKey:"config_management.visual.payload_rules.provider_antigravity",defaultLabel:"Antigravity"}],ake=[{value:"string",labelKey:"config_management.visual.payload_rules.value_type_string",defaultLabel:"String"},{value:"number",labelKey:"config_management.visual.payload_rules.value_type_number",defaultLabel:"Number"},{value:"boolean",labelKey:"config_management.visual.payload_rules.value_type_boolean",defaultLabel:"Boolean"},{value:"json",labelKey:"config_management.visual.payload_rules.value_type_json",defaultLabel:"JSON"}];function oke(t){return t?/^[\x21-\x7E]+$/.test(t):!1}const rke=30;function rd({value:t,placeholder:e,ariaLabel:n,disabled:i,className:s,onChange:a}){const{t:o}=nt(),[r,c]=S.useState(!0),d=S.useRef(null),f=S.useCallback(g=>{g.style.height="auto",g.style.height=`${g.scrollHeight}px`},[]),p=g=>{const y=g.target.value.replace(/[\r\n]/g,"");a(y)};return S.useLayoutEffect(()=>{!r&&d.current&&f(d.current)},[r,t,f]),r?h.jsxs("div",{className:Re.expandableInputWrapper,children:[h.jsx("input",{className:`input ${s??""}`,placeholder:e,"aria-label":n,value:t,onChange:g=>a(g.target.value.replace(/[\r\n]/g,"")),disabled:i}),t.length>rke&&h.jsx("button",{type:"button",className:Re.expandableToggle,disabled:i,onClick:()=>{c(!1),requestAnimationFrame(()=>{d.current?.focus()})},title:o("common.expand"),"aria-label":o("common.expand"),children:"▼"})]}):h.jsxs("div",{className:`${Re.expandableInputWrapper} ${Re.expandableInputExpanded}`,children:[h.jsx("textarea",{ref:d,className:`input ${Re.expandableTextarea} ${s??""}`,placeholder:e,"aria-label":n,value:t,onChange:p,disabled:i,rows:2}),h.jsx("button",{type:"button",className:Re.expandableToggle,disabled:i,onClick:()=>c(!0),title:o("common.collapse"),"aria-label":o("common.collapse"),children:"▲"})]})}function lke(t,e){if(e)return t(`config_management.visual.validation.${e}`)}function SI(t,e){const n=ske.map(s=>({value:s.value,label:t(s.labelKey,{defaultValue:s.defaultLabel})})),i=new Set(n.map(s=>s.value));for(const s of e)for(const a of s.models){const o=a.protocol;!o||!o.trim()||i.has(o)||(i.add(o),n.push({value:o,label:o}))}return n}const cke=S.memo(function({value:e,disabled:n,onChange:i}){const{t:s}=nt(),a=mn(X=>X.showNotification),o=S.useMemo(()=>e.split(`
`).map(X=>X.trim()).filter(Boolean),[e]),[r,c]=S.useState(()=>o.map(()=>Ga())),d=S.useMemo(()=>r.length===o.length?r:r.length>o.length?r.slice(0,o.length):[...r,...Array.from({length:o.length-r.length},()=>Ga())],[r,o.length]),f=S.useId(),p=`${f}-hint`,g=`${f}-error`,[y,_]=S.useState(!1),[v,x]=S.useState(null),[k,C]=S.useState(""),[N,L]=S.useState("");function M(){const X="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",K=new Uint8Array(17);return crypto.getRandomValues(K),"sk-"+Array.from(K,B=>X[B%X.length]).join("")}const O=()=>{x(null),C(""),L(""),_(!0)},T=X=>{const K=d.findIndex(B=>B===X);x(X),C(o[K]??""),L(""),_(!0)},P=()=>{_(!1),C(""),x(null),L("")},E=X=>{i(X.join(`
`))},R=X=>{const K=d.findIndex(B=>B===X);K<0||(c(d.filter(B=>B!==X)),E(o.filter((B,H)=>H!==K)))},q=()=>{const X=k.trim();if(!X){L(s("config_management.visual.api_keys.error_empty"));return}if(!oke(X)){L(s("config_management.visual.api_keys.error_invalid"));return}const K=v?d.findIndex(H=>H===v):-1,B=v===null?[...o,X]:o.map((H,z)=>z===K?X:H);v===null&&c([...d,Ga()]),E(B),P()},I=async X=>{const K=await Ky(X);a(s(K?"notification.link_copied":"notification.copy_failed"),K?"success":"error")},Y=()=>{C(M()),L("")};return h.jsxs("div",{className:"form-group",style:{marginBottom:0},children:[h.jsxs("div",{className:Re.blockHeaderRow,children:[h.jsx("label",{style:{margin:0},children:s("config_management.visual.api_keys.label")}),h.jsx(he,{size:"sm",onClick:O,disabled:n,children:s("config_management.visual.api_keys.add")})]}),o.length===0?h.jsx("div",{className:Re.emptyState,children:s("config_management.visual.api_keys.empty")}):h.jsx("div",{className:"item-list",style:{marginTop:4},children:o.map((X,K)=>h.jsxs("div",{className:"item-row",children:[h.jsxs("div",{className:"item-meta",children:[h.jsxs("div",{className:"pill",children:["#",K+1]}),h.jsx("div",{className:"item-title",children:s("config_management.visual.api_keys.input_label")}),h.jsx("div",{className:"item-subtitle",children:Pa(String(X||""))})]}),h.jsxs("div",{className:"item-actions",children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>I(X),disabled:n,children:s("common.copy")}),h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>T(d[K]??""),disabled:n,children:s("config_management.visual.common.edit")}),h.jsx(he,{variant:"danger",size:"sm",onClick:()=>R(d[K]??""),disabled:n,children:s("config_management.visual.common.delete")})]})]},d[K]??`${X}-${K}`))}),h.jsx("div",{className:"hint",children:s("config_management.visual.api_keys.hint")}),h.jsx(Ss,{open:y,onClose:P,title:s(v!==null?"config_management.visual.api_keys.edit_title":"config_management.visual.api_keys.add_title"),footer:h.jsxs(h.Fragment,{children:[h.jsx(he,{variant:"secondary",onClick:P,disabled:n,children:s("config_management.visual.common.cancel")}),h.jsx(he,{onClick:q,disabled:n,children:s(v!==null?"config_management.visual.common.update":"config_management.visual.common.add")})]}),children:h.jsxs("div",{className:"form-group",children:[h.jsx("label",{htmlFor:f,children:s("config_management.visual.api_keys.input_label")}),h.jsxs("div",{className:Re.apiKeyModalInputRow,children:[h.jsx("input",{id:f,className:"input",placeholder:s("config_management.visual.api_keys.input_placeholder"),value:k,onChange:X=>C(X.target.value),disabled:n,"aria-describedby":N?`${g} ${p}`:p,"aria-invalid":!!N}),h.jsx(he,{type:"button",variant:"secondary",size:"sm",onClick:Y,disabled:n,children:s("config_management.visual.api_keys.generate")})]}),h.jsx("div",{id:p,className:"hint",children:s("config_management.visual.api_keys.input_hint")}),N&&h.jsx("div",{id:g,className:"error-box",children:N})]})})]})}),uke=S.memo(function({value:e,disabled:n,placeholder:i,inputAriaLabel:s,onChange:a}){const{t:o}=nt(),r=e.length?e:[],[c,d]=S.useState(()=>r.map(()=>Ga())),f=S.useMemo(()=>c.length===r.length?c:c.length>r.length?c.slice(0,r.length):[...c,...Array.from({length:r.length-c.length},()=>Ga())],[c,r.length]),p=(_,v)=>a(r.map((x,k)=>k===_?v:x)),g=()=>{d([...f,Ga()]),a([...r,""])},y=_=>{d(f.filter((v,x)=>x!==_)),a(r.filter((v,x)=>x!==_))};return h.jsxs("div",{className:Re.stringList,children:[r.map((_,v)=>h.jsxs("div",{className:Re.stringListRow,children:[h.jsx(rd,{placeholder:i,ariaLabel:s??i,value:_,onChange:x=>p(v,x),disabled:n}),h.jsx(he,{variant:"ghost",size:"sm",onClick:()=>y(v),disabled:n,children:o("config_management.visual.common.delete")})]},f[v]??`item-${v}`)),h.jsx("div",{className:Re.actionRow,children:h.jsx(he,{variant:"secondary",size:"sm",onClick:g,disabled:n,children:o("config_management.visual.common.add")})})]})}),$_=S.memo(function({value:e,disabled:n,protocolFirst:i=!1,rawJsonValues:s=!1,onChange:a}){const{t:o}=nt(),r=e,c=S.useMemo(()=>SI(o,r),[r,o]),d=S.useMemo(()=>ake.map(T=>({value:T.value,label:o(T.labelKey,{defaultValue:T.defaultLabel})})),[o]),f=S.useMemo(()=>[{value:"true",label:o("config_management.visual.payload_rules.boolean_true")},{value:"false",label:o("config_management.visual.payload_rules.boolean_false")}],[o]),p=()=>a([...r,{id:Ga(),models:[],params:[]}]),g=T=>a(r.filter((P,E)=>E!==T)),y=(T,P)=>a(r.map((E,R)=>R===T?{...E,...P}:E)),_=T=>{const P=r[T],E={id:Ga(),name:"",protocol:void 0};y(T,{models:[...P.models,E]})},v=(T,P)=>{const E=r[T];y(T,{models:E.models.filter((R,q)=>q!==P)})},x=(T,P,E)=>{const R=r[T];y(T,{models:R.models.map((q,I)=>I===P?{...q,...E}:q)})},k=T=>{const P=r[T],E={id:Ga(),path:"",valueType:s?"json":"string",value:""};y(T,{params:[...P.params,E]})},C=(T,P)=>{const E=r[T];y(T,{params:E.params.filter((R,q)=>q!==P)})},N=(T,P,E)=>{const R=r[T];y(T,{params:R.params.map((q,I)=>I===P?{...q,...E}:q)})},L=T=>{switch(T){case"string":return o("config_management.visual.payload_rules.value_string");case"number":return o("config_management.visual.payload_rules.value_number");case"boolean":return o("config_management.visual.payload_rules.value_boolean");case"json":return o("config_management.visual.payload_rules.value_json");default:return o("config_management.visual.payload_rules.value_default")}},M=T=>{const P=xI(s?{...T,valueType:"json"}:T);return lke(o,P)},O=(T,P,E)=>s?h.jsx("textarea",{className:`input ${Re.payloadJsonInput}`,placeholder:o("config_management.visual.payload_rules.value_raw_json"),"aria-label":o("config_management.visual.payload_rules.param_value"),value:E.value,onChange:R=>N(T,P,{value:R.target.value,valueType:"json"}),disabled:n}):E.valueType==="boolean"?h.jsx(Hi,{value:E.value.toLowerCase()==="true"||E.value.toLowerCase()==="false"?E.value.toLowerCase():"",options:f,placeholder:o("config_management.visual.payload_rules.value_boolean"),disabled:n,ariaLabel:o("config_management.visual.payload_rules.param_value"),onChange:R=>N(T,P,{value:R})}):E.valueType==="json"?h.jsx("textarea",{className:`input ${Re.payloadJsonInput}`,placeholder:L(E.valueType),"aria-label":o("config_management.visual.payload_rules.param_value"),value:E.value,onChange:R=>N(T,P,{value:R.target.value}),disabled:n}):h.jsx(rd,{placeholder:L(E.valueType),ariaLabel:o("config_management.visual.payload_rules.param_value"),value:E.value,onChange:R=>N(T,P,{value:R}),disabled:n});return h.jsxs("div",{className:Re.blockStack,children:[r.map((T,P)=>h.jsxs("div",{className:Re.ruleCard,children:[h.jsxs("div",{className:Re.ruleCardHeader,children:[h.jsxs("div",{className:Re.ruleCardTitle,children:[o("config_management.visual.payload_rules.rule")," ",P+1]}),h.jsx(he,{variant:"ghost",size:"sm",onClick:()=>g(P),disabled:n,children:o("config_management.visual.common.delete")})]}),h.jsxs("div",{className:Re.blockStack,children:[h.jsx("div",{className:Re.blockLabel,children:o("config_management.visual.payload_rules.models")}),(T.models.length?T.models:[]).map((E,R)=>h.jsxs("div",{className:[Re.payloadRuleModelRow,i?Re.payloadRuleModelRowProtocolFirst:""].filter(Boolean).join(" "),children:[i?h.jsxs(h.Fragment,{children:[h.jsx(Hi,{value:E.protocol??"",options:c,disabled:n,ariaLabel:o("config_management.visual.payload_rules.provider_type"),onChange:q=>x(P,R,{protocol:q||void 0})}),h.jsx(rd,{placeholder:o("config_management.visual.payload_rules.model_name"),ariaLabel:o("config_management.visual.payload_rules.model_name"),value:E.name,onChange:q=>x(P,R,{name:q}),disabled:n})]}):h.jsxs(h.Fragment,{children:[h.jsx(rd,{placeholder:o("config_management.visual.payload_rules.model_name"),ariaLabel:o("config_management.visual.payload_rules.model_name"),value:E.name,onChange:q=>x(P,R,{name:q}),disabled:n}),h.jsx(Hi,{value:E.protocol??"",options:c,disabled:n,ariaLabel:o("config_management.visual.payload_rules.provider_type"),onChange:q=>x(P,R,{protocol:q||void 0})})]}),h.jsx(he,{variant:"ghost",size:"sm",className:Re.payloadRowActionButton,onClick:()=>v(P,R),disabled:n,children:o("config_management.visual.common.delete")})]},E.id)),h.jsx("div",{className:Re.actionRow,children:h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>_(P),disabled:n,children:o("config_management.visual.payload_rules.add_model")})})]}),h.jsxs("div",{className:Re.blockStack,children:[h.jsx("div",{className:Re.blockLabel,children:o("config_management.visual.payload_rules.params")}),(T.params.length?T.params:[]).map((E,R)=>{const q=M(E);return h.jsxs("div",{className:Re.payloadRuleParamGroup,children:[h.jsxs("div",{className:Re.payloadRuleParamRow,children:[h.jsx(rd,{placeholder:o("config_management.visual.payload_rules.json_path"),ariaLabel:o("config_management.visual.payload_rules.json_path"),value:E.path,onChange:I=>N(P,R,{path:I}),disabled:n}),s?null:h.jsx(Hi,{value:E.valueType,options:d,disabled:n,ariaLabel:o("config_management.visual.payload_rules.param_type"),onChange:I=>N(P,R,{valueType:I,value:I==="boolean"?"true":I==="json"&&E.value.trim()===""?"{}":E.value})}),O(P,R,E),h.jsx(he,{variant:"ghost",size:"sm",className:Re.payloadRowActionButton,onClick:()=>C(P,R),disabled:n,children:o("config_management.visual.common.delete")})]}),q&&h.jsx("div",{className:`error-box ${Re.payloadParamError}`,children:q})]},E.id)}),h.jsx("div",{className:Re.actionRow,children:h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>k(P),disabled:n,children:o("config_management.visual.payload_rules.add_param")})})]})]},T.id)),r.length===0&&h.jsx("div",{className:Re.emptyState,children:o("config_management.visual.payload_rules.no_rules")}),h.jsx("div",{className:Re.actionRow,children:h.jsx(he,{variant:"secondary",size:"sm",onClick:p,disabled:n,children:o("config_management.visual.payload_rules.add_rule")})})]})}),dke=S.memo(function({value:e,disabled:n,onChange:i}){const{t:s}=nt(),a=e,o=S.useMemo(()=>SI(s,a),[a,s]),r=()=>i([...a,{id:Ga(),models:[],params:[]}]),c=y=>i(a.filter((_,v)=>v!==y)),d=(y,_)=>i(a.map((v,x)=>x===y?{...v,..._}:v)),f=y=>{const _=a[y],v={id:Ga(),name:"",protocol:void 0};d(y,{models:[..._.models,v]})},p=(y,_)=>{const v=a[y];d(y,{models:v.models.filter((x,k)=>k!==_)})},g=(y,_,v)=>{const x=a[y];d(y,{models:x.models.map((k,C)=>C===_?{...k,...v}:k)})};return h.jsxs("div",{className:Re.blockStack,children:[a.map((y,_)=>h.jsxs("div",{className:Re.ruleCard,children:[h.jsxs("div",{className:Re.ruleCardHeader,children:[h.jsxs("div",{className:Re.ruleCardTitle,children:[s("config_management.visual.payload_rules.rule")," ",_+1]}),h.jsx(he,{variant:"ghost",size:"sm",onClick:()=>c(_),disabled:n,children:s("config_management.visual.common.delete")})]}),h.jsxs("div",{className:Re.blockStack,children:[h.jsx("div",{className:Re.blockLabel,children:s("config_management.visual.payload_rules.models")}),y.models.map((v,x)=>h.jsxs("div",{className:Re.payloadFilterModelRow,children:[h.jsx(rd,{placeholder:s("config_management.visual.payload_rules.model_name"),ariaLabel:s("config_management.visual.payload_rules.model_name"),value:v.name,onChange:k=>g(_,x,{name:k}),disabled:n}),h.jsx(Hi,{value:v.protocol??"",options:o,disabled:n,ariaLabel:s("config_management.visual.payload_rules.provider_type"),onChange:k=>g(_,x,{protocol:k||void 0})}),h.jsx(he,{variant:"ghost",size:"sm",className:Re.payloadRowActionButton,onClick:()=>p(_,x),disabled:n,children:s("config_management.visual.common.delete")})]},v.id)),h.jsx("div",{className:Re.actionRow,children:h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>f(_),disabled:n,children:s("config_management.visual.payload_rules.add_model")})})]}),h.jsxs("div",{className:Re.blockStack,children:[h.jsx("div",{className:Re.blockLabel,children:s("config_management.visual.payload_rules.remove_params")}),h.jsx(uke,{value:y.params,disabled:n,placeholder:s("config_management.visual.payload_rules.json_path_filter"),inputAriaLabel:s("config_management.visual.payload_rules.json_path_filter"),onChange:v=>d(_,{params:v})})]})]},y.id)),a.length===0&&h.jsx("div",{className:Re.emptyState,children:s("config_management.visual.payload_rules.no_rules")}),h.jsx("div",{className:Re.actionRow,children:h.jsx(he,{variant:"secondary",size:"sm",onClick:r,disabled:n,children:s("config_management.visual.payload_rules.add_rule")})})]})});function rl(t,e){if(e)return t(`config_management.visual.validation.${e}`)}function Ua({title:t,description:e,checked:n,disabled:i,onChange:s}){return h.jsxs("div",{className:Re.toggleRow,children:[h.jsxs("div",{className:Re.toggleCopy,children:[h.jsx("div",{className:Re.toggleTitle,children:t}),e?h.jsx("div",{className:Re.toggleDescription,children:e}):null]}),h.jsx(xi,{checked:n,onChange:s,disabled:i,ariaLabel:t})]})}function uo({children:t}){return h.jsx("div",{className:Re.sectionGrid,children:t})}function dc({children:t}){return h.jsx("div",{className:Re.sectionStack,children:t})}function hke(){return h.jsx("div",{className:Re.divider})}function xf({title:t,description:e,children:n}){return h.jsxs("div",{className:Re.subsection,children:[h.jsxs("div",{className:Re.subsectionHeader,children:[h.jsx("h3",{className:Re.subsectionTitle,children:t}),e?h.jsx("p",{className:Re.subsectionDescription,children:e}):null]}),n]})}function m2({label:t,labelId:e,htmlFor:n,hint:i,hintId:s,error:a,errorId:o,children:r}){return h.jsxs("div",{className:Re.fieldShell,children:[h.jsx("label",{id:e,htmlFor:n,className:Re.fieldLabel,children:t}),r,a?h.jsx("div",{id:o,className:"error-box",children:a}):null,i?h.jsx("div",{id:s,className:Re.fieldHint,children:i}):null]})}function fke({values:t,validationErrors:e,hasPayloadValidationErrors:n=!1,disabled:i=!1,onChange:s}){const{t:a}=nt(),o=sp(),r=o?o.status==="current":!0,c=W0("(max-width: 768px)"),d=W0("(min-width: 1025px)"),f=!c&&d&&r,p=S.useId(),g=`${p}-hint`,y=S.useId(),_=`${y}-hint`,v=`${y}-error`,x=S.useId(),k=`${x}-hint`,C=`${x}-error`,[N,L]=S.useState("server"),M=S.useRef(null),O=S.useRef(null),T=S.useRef(null),P=S.useRef({}),E=S.useRef(null),R=S.useRef({}),q=t.streaming.keepaliveSeconds===""||t.streaming.keepaliveSeconds==="0",I=t.streaming.nonstreamKeepaliveInterval===""||t.streaming.nonstreamKeepaliveInterval==="0",Y=rl(a,e?.port),X=rl(a,e?.logsMaxTotalSizeMb),K=rl(a,e?.requestRetry),B=rl(a,e?.maxRetryCredentials),H=rl(a,e?.maxRetryInterval),z=rl(a,e?.["streaming.keepaliveSeconds"]),Q=rl(a,e?.["streaming.bootstrapRetries"]),W=rl(a,e?.["streaming.nonstreamKeepaliveInterval"]),D=S.useCallback(ne=>s({apiKeysText:ne}),[s]),U=S.useCallback(ne=>s({payloadDefaultRules:ne}),[s]),$=S.useCallback(ne=>s({payloadDefaultRawRules:ne}),[s]),te=S.useCallback(ne=>s({payloadOverrideRules:ne}),[s]),ie=S.useCallback(ne=>s({payloadOverrideRawRules:ne}),[s]),F=S.useCallback(ne=>s({payloadFilterRules:ne}),[s]),ee=S.useCallback(ne=>ne.reduce((Be,Ke)=>Be+(e?.[Ke]?1:0),0),[e]),J=S.useMemo(()=>[{id:"server",title:a("config_management.visual.sections.server.title"),description:a("config_management.visual.sections.server.description"),icon:P2,errorCount:ee(["port"])},{id:"tls",title:a("config_management.visual.sections.tls.title"),description:a("config_management.visual.sections.tls.description"),icon:aL,errorCount:0},{id:"remote",title:a("config_management.visual.sections.remote.title"),description:a("config_management.visual.sections.remote.description"),icon:Qu,errorCount:0},{id:"auth",title:a("config_management.visual.sections.auth.title"),description:a("config_management.visual.sections.auth.description"),icon:O2,errorCount:0},{id:"system",title:a("config_management.visual.sections.system.title"),description:a("config_management.visual.sections.system.description"),icon:E2,errorCount:ee(["logsMaxTotalSizeMb"])},{id:"network",title:a("config_management.visual.sections.network.title"),description:a("config_management.visual.sections.network.description"),icon:j2,errorCount:ee(["requestRetry","maxRetryCredentials","maxRetryInterval"])},{id:"quota",title:a("config_management.visual.sections.quota.title"),description:a("config_management.visual.sections.quota.description"),icon:L0,errorCount:0},{id:"streaming",title:a("config_management.visual.sections.streaming.title"),description:a("config_management.visual.sections.streaming.description"),icon:Qu,errorCount:ee(["streaming.keepaliveSeconds","streaming.bootstrapRetries","streaming.nonstreamKeepaliveInterval"])},{id:"payload",title:a("config_management.visual.sections.payload.title"),description:a("config_management.visual.sections.payload.description"),icon:O0,errorCount:n?1:0}],[ee,n,a]),re=J.some(ne=>ne.errorCount>0)||n,fe=S.useMemo(()=>J.filter(ne=>["server","network","payload"].includes(ne.id)),[J]);S.useEffect(()=>{if(typeof IntersectionObserver>"u")return;const ne=new IntersectionObserver(Be=>{const Ke=Be.filter(Te=>Te.isIntersecting).sort((Te,Qe)=>Qe.intersectionRatio-Te.intersectionRatio);Ke.length!==0&&L(Ke[0].target.id)},{rootMargin:"-18% 0px -58% 0px",threshold:[.12,.3,.55]});for(const Be of J){const Ke=P.current[Be.id];Ke&&ne.observe(Ke)}return()=>ne.disconnect()},[J]),S.useEffect(()=>{if(!c)return;const ne=E.current,Be=R.current[N];if(!ne||!Be)return;const Ke=ne.getBoundingClientRect(),Te=Be.getBoundingClientRect(),Qe=ne.scrollLeft+(Te.left-Ke.left)-(ne.clientWidth-Te.width)/2,at=Math.max(ne.scrollWidth-ne.clientWidth,0),Ce=Math.min(Math.max(Qe,0),at);ne.scrollTo({left:Ce,behavior:"smooth"})},[N,c]);const me=S.useCallback(ne=>{L(ne),P.current[ne]?.scrollIntoView({behavior:"smooth",block:"start"})},[]);S.useLayoutEffect(()=>{const ne=T.current,Be=O.current,Ke=M.current;if(!ne)return;const Te=()=>{ne.style.removeProperty("transform"),ne.style.removeProperty("width"),ne.style.removeProperty("max-height"),ne.style.removeProperty("opacity"),ne.style.removeProperty("pointer-events")};if(!f||!Be||!Ke){Te();return}const Qe=()=>{const on=document.querySelector(".main-header");if(on)return on.getBoundingClientRect().height;const ce=getComputedStyle(document.documentElement).getPropertyValue("--header-height"),ye=Number.parseFloat(ce);return Number.isFinite(ye)?ye:64};let at=Qe();const Ce=document.querySelector(".content");let ft=ne.getBoundingClientRect().height||200,mt=0;const kt=()=>{mt=0;const on=Be.getBoundingClientRect(),ce=Ke.getBoundingClientRect(),ye=at+20,Ue=16,Me=ce.bottom-ft,Ye=Math.min(Math.max(on.top,ye),Me),_t=Math.max(Ye,Ue),pt=Math.max(on.left,Ue),ot=Math.max(Math.min(on.width,window.innerWidth-pt-Ue),220),ue=Math.max(window.innerHeight-_t-Ue,160),qe=ce.bottom>ye+24&&on.top<window.innerHeight;ne.style.transform=`translate3d(${pt}px, ${_t}px, 0)`,ne.style.width=`${ot}px`,ne.style.maxHeight=`${ue}px`,ne.style.opacity=qe?"1":"0",ne.style.pointerEvents=qe?"auto":"none"},Pt=()=>{mt&&cancelAnimationFrame(mt),mt=requestAnimationFrame(kt)},wt=()=>{at=Qe(),ft=ne.getBoundingClientRect().height||ft,Pt()};Pt(),window.addEventListener("resize",wt),window.addEventListener("scroll",Pt,{passive:!0}),Ce?.addEventListener("scroll",Pt,{passive:!0});const Tt=typeof ResizeObserver>"u"?null:new ResizeObserver(Pt);return Tt?.observe(Be),Tt?.observe(Ke),()=>{mt&&cancelAnimationFrame(mt),Tt?.disconnect(),window.removeEventListener("resize",wt),window.removeEventListener("scroll",Pt),Ce?.removeEventListener("scroll",Pt),Te()}},[f]);const de=h.jsx("div",{className:Re.navList,children:J.map((ne,Be)=>{const Ke=ne.icon;return h.jsxs("button",{type:"button",className:`${Re.navButton} ${N===ne.id?Re.navButtonActive:""}`,onClick:()=>me(ne.id),children:[h.jsx("span",{className:Re.navIndex,children:String(Be+1).padStart(2,"0")}),h.jsxs("span",{className:Re.navMain,children:[h.jsxs("span",{className:Re.navHeadingRow,children:[h.jsxs("span",{className:Re.navLabelWrap,children:[h.jsx("span",{className:Re.navIcon,children:h.jsx(Ke,{size:14})}),h.jsx("span",{className:Re.navLabel,children:ne.title})]}),ne.errorCount>0?h.jsx("span",{className:Re.navBadge,"aria-hidden":"true",children:ne.errorCount}):null]}),h.jsx("span",{className:Re.navDescription,children:ne.description})]})]},ne.id)})});return h.jsxs("div",{className:Re.visualEditor,children:[h.jsxs("div",{className:Re.overview,children:[h.jsx("div",{className:Re.overviewHeader,children:h.jsxs("div",{className:Re.overviewMeta,children:[h.jsx("span",{className:Re.overviewPill,children:a("config_management.visual.quick_jump",{defaultValue:"快速跳转"})}),re?h.jsx("span",{className:`${Re.overviewPill} ${Re.overviewPillWarning}`,children:a("config_management.visual.validation.validation_blocked")}):null]})}),h.jsx("div",{className:Re.overviewFocusList,children:fe.map(ne=>{const Be=ne.icon;return h.jsxs("button",{type:"button",className:`${Re.overviewFocusLink} ${N===ne.id?Re.overviewFocusLinkActive:""}`,onClick:()=>me(ne.id),children:[h.jsx("span",{className:Re.focusIcon,children:h.jsx(Be,{size:16})}),h.jsxs("span",{className:Re.focusCopy,children:[h.jsx("span",{className:Re.focusTitle,children:ne.title}),h.jsx("span",{className:Re.focusDescription,children:ne.description})]}),ne.errorCount>0?h.jsx("span",{className:Re.navBadge,"aria-hidden":"true",children:ne.errorCount}):null]},ne.id)})})]}),h.jsxs("div",{ref:M,className:Re.workspace,children:[c?h.jsx("div",{className:Re.mobileSectionNav,children:h.jsx("div",{ref:E,className:Re.mobileSectionNavScroller,"aria-label":a("config_management.visual.quick_jump",{defaultValue:"快速跳转"}),children:J.map((ne,Be)=>h.jsxs("button",{ref:Ke=>{R.current[ne.id]=Ke},type:"button",className:`${Re.mobileSectionNavButton} ${N===ne.id?Re.mobileSectionNavButtonActive:""}`,onClick:()=>me(ne.id),children:[h.jsx("span",{className:Re.mobileSectionNavIndex,children:String(Be+1).padStart(2,"0")}),h.jsx("span",{className:Re.mobileSectionNavLabel,children:ne.title}),ne.errorCount>0?h.jsx("span",{className:Re.mobileSectionNavBadge,"aria-hidden":"true",children:ne.errorCount}):null]},ne.id))})}):null,h.jsx("aside",{ref:O,className:Re.sidebar,children:d?h.jsx("div",{className:Re.sidebarPlaceholder,"aria-hidden":"true"}):h.jsx("div",{className:Re.sidebarRail,children:de})}),h.jsxs("div",{className:Re.sections,children:[h.jsx(rr,{id:"server",ref:ne=>{P.current.server=ne},indexLabel:"01",icon:h.jsx(P2,{size:16}),title:a("config_management.visual.sections.server.title"),description:a("config_management.visual.sections.server.description"),children:h.jsxs(uo,{children:[h.jsx(lt,{label:a("config_management.visual.sections.server.host"),placeholder:"0.0.0.0",value:t.host,onChange:ne=>s({host:ne.target.value}),disabled:i}),h.jsx(lt,{label:a("config_management.visual.sections.server.port"),type:"number",placeholder:"8317",value:t.port,onChange:ne=>s({port:ne.target.value}),disabled:i,error:Y})]})}),h.jsx(rr,{id:"tls",ref:ne=>{P.current.tls=ne},indexLabel:"02",icon:h.jsx(aL,{size:16}),title:a("config_management.visual.sections.tls.title"),description:a("config_management.visual.sections.tls.description"),children:h.jsxs(dc,{children:[h.jsx(Ua,{title:a("config_management.visual.sections.tls.enable"),description:a("config_management.visual.sections.tls.enable_desc"),checked:t.tlsEnable,disabled:i,onChange:ne=>s({tlsEnable:ne})}),t.tlsEnable?h.jsxs(h.Fragment,{children:[h.jsx(hke,{}),h.jsxs(uo,{children:[h.jsx(lt,{label:a("config_management.visual.sections.tls.cert"),placeholder:"/path/to/cert.pem",value:t.tlsCert,onChange:ne=>s({tlsCert:ne.target.value}),disabled:i}),h.jsx(lt,{label:a("config_management.visual.sections.tls.key"),placeholder:"/path/to/key.pem",value:t.tlsKey,onChange:ne=>s({tlsKey:ne.target.value}),disabled:i})]})]}):null]})}),h.jsx(rr,{id:"remote",ref:ne=>{P.current.remote=ne},indexLabel:"03",icon:h.jsx(Qu,{size:16}),title:a("config_management.visual.sections.remote.title"),description:a("config_management.visual.sections.remote.description"),children:h.jsxs(dc,{children:[h.jsx(Ua,{title:a("config_management.visual.sections.remote.allow_remote"),description:a("config_management.visual.sections.remote.allow_remote_desc"),checked:t.rmAllowRemote,disabled:i,onChange:ne=>s({rmAllowRemote:ne})}),h.jsx(Ua,{title:a("config_management.visual.sections.remote.disable_panel"),description:a("config_management.visual.sections.remote.disable_panel_desc"),checked:t.rmDisableControlPanel,disabled:i,onChange:ne=>s({rmDisableControlPanel:ne})}),h.jsxs(uo,{children:[h.jsx(lt,{label:a("config_management.visual.sections.remote.secret_key"),type:"password",placeholder:a("config_management.visual.sections.remote.secret_key_placeholder"),value:t.rmSecretKey,onChange:ne=>s({rmSecretKey:ne.target.value}),disabled:i}),h.jsx(lt,{label:a("config_management.visual.sections.remote.panel_repo"),placeholder:"https://github.com/router-for-me/Cli-Proxy-API-Management-Center",value:t.rmPanelRepo,onChange:ne=>s({rmPanelRepo:ne.target.value}),disabled:i})]})]})}),h.jsx(rr,{id:"auth",ref:ne=>{P.current.auth=ne},indexLabel:"04",icon:h.jsx(O2,{size:16}),title:a("config_management.visual.sections.auth.title"),description:a("config_management.visual.sections.auth.description"),children:h.jsxs(dc,{children:[h.jsx(lt,{label:a("config_management.visual.sections.auth.auth_dir"),placeholder:"~/.cli-proxy-api",value:t.authDir,onChange:ne=>s({authDir:ne.target.value}),disabled:i,hint:a("config_management.visual.sections.auth.auth_dir_hint")}),h.jsx("div",{className:Re.subsection,children:h.jsx(cke,{value:t.apiKeysText,disabled:i,onChange:D})})]})}),h.jsx(rr,{id:"system",ref:ne=>{P.current.system=ne},indexLabel:"05",icon:h.jsx(E2,{size:16}),title:a("config_management.visual.sections.system.title"),description:a("config_management.visual.sections.system.description"),children:h.jsxs(dc,{children:[h.jsxs(uo,{children:[h.jsx(Ua,{title:a("config_management.visual.sections.system.debug"),description:a("config_management.visual.sections.system.debug_desc"),checked:t.debug,disabled:i,onChange:ne=>s({debug:ne})}),h.jsx(Ua,{title:a("config_management.visual.sections.system.commercial_mode"),description:a("config_management.visual.sections.system.commercial_mode_desc"),checked:t.commercialMode,disabled:i,onChange:ne=>s({commercialMode:ne})}),h.jsx(Ua,{title:a("config_management.visual.sections.system.logging_to_file"),description:a("config_management.visual.sections.system.logging_to_file_desc"),checked:t.loggingToFile,disabled:i,onChange:ne=>s({loggingToFile:ne})}),h.jsx(Ua,{title:a("config_management.visual.sections.system.usage_statistics"),description:a("config_management.visual.sections.system.usage_statistics_desc"),checked:t.usageStatisticsEnabled,disabled:i,onChange:ne=>s({usageStatisticsEnabled:ne})})]}),h.jsx(uo,{children:h.jsx(lt,{label:a("config_management.visual.sections.system.logs_max_size"),type:"number",placeholder:"0",value:t.logsMaxTotalSizeMb,onChange:ne=>s({logsMaxTotalSizeMb:ne.target.value}),disabled:i,error:X})})]})}),h.jsx(rr,{id:"network",ref:ne=>{P.current.network=ne},indexLabel:"06",icon:h.jsx(j2,{size:16}),title:a("config_management.visual.sections.network.title"),description:a("config_management.visual.sections.network.description"),children:h.jsxs(dc,{children:[h.jsxs(uo,{children:[h.jsx(lt,{label:a("config_management.visual.sections.network.proxy_url"),placeholder:"socks5://user:pass@127.0.0.1:1080/",value:t.proxyUrl,onChange:ne=>s({proxyUrl:ne.target.value}),disabled:i}),h.jsx(lt,{label:a("config_management.visual.sections.network.request_retry"),type:"number",placeholder:"3",value:t.requestRetry,onChange:ne=>s({requestRetry:ne.target.value}),disabled:i,error:K}),h.jsx(lt,{label:a("config_management.visual.sections.network.max_retry_credentials"),type:"number",placeholder:"0",value:t.maxRetryCredentials,onChange:ne=>s({maxRetryCredentials:ne.target.value}),disabled:i,hint:a("config_management.visual.sections.network.max_retry_credentials_hint"),error:B}),h.jsx(lt,{label:a("config_management.visual.sections.network.max_retry_interval"),type:"number",placeholder:"30",value:t.maxRetryInterval,onChange:ne=>s({maxRetryInterval:ne.target.value}),disabled:i,error:H}),h.jsx(m2,{label:a("config_management.visual.sections.network.routing_strategy"),labelId:p,hint:a("config_management.visual.sections.network.routing_strategy_hint"),hintId:g,children:h.jsx(Hi,{value:t.routingStrategy,options:[{value:"round-robin",label:a("config_management.visual.sections.network.strategy_round_robin")},{value:"fill-first",label:a("config_management.visual.sections.network.strategy_fill_first")}],id:`${p}-select`,disabled:i,ariaLabelledBy:p,ariaDescribedBy:g,onChange:ne=>s({routingStrategy:ne})})})]}),h.jsxs(uo,{children:[h.jsx(Ua,{title:a("config_management.visual.sections.network.force_model_prefix"),description:a("config_management.visual.sections.network.force_model_prefix_desc"),checked:t.forceModelPrefix,disabled:i,onChange:ne=>s({forceModelPrefix:ne})}),h.jsx(Ua,{title:a("config_management.visual.sections.network.ws_auth"),description:a("config_management.visual.sections.network.ws_auth_desc"),checked:t.wsAuth,disabled:i,onChange:ne=>s({wsAuth:ne})})]})]})}),h.jsx(rr,{id:"quota",ref:ne=>{P.current.quota=ne},indexLabel:"07",icon:h.jsx(L0,{size:16}),title:a("config_management.visual.sections.quota.title"),description:a("config_management.visual.sections.quota.description"),children:h.jsxs(uo,{children:[h.jsx(Ua,{title:a("config_management.visual.sections.quota.switch_project"),description:a("config_management.visual.sections.quota.switch_project_desc"),checked:t.quotaSwitchProject,disabled:i,onChange:ne=>s({quotaSwitchProject:ne})}),h.jsx(Ua,{title:a("config_management.visual.sections.quota.switch_preview_model"),description:a("config_management.visual.sections.quota.switch_preview_model_desc"),checked:t.quotaSwitchPreviewModel,disabled:i,onChange:ne=>s({quotaSwitchPreviewModel:ne})})]})}),h.jsx(rr,{id:"streaming",ref:ne=>{P.current.streaming=ne},indexLabel:"08",icon:h.jsx(Qu,{size:16}),title:a("config_management.visual.sections.streaming.title"),description:a("config_management.visual.sections.streaming.description"),children:h.jsxs(dc,{children:[h.jsxs(uo,{children:[h.jsx(m2,{label:a("config_management.visual.sections.streaming.keepalive_seconds"),htmlFor:y,hint:a("config_management.visual.sections.streaming.keepalive_hint"),hintId:_,error:z,errorId:v,children:h.jsxs("div",{className:Re.fieldControl,children:[h.jsx("input",{id:y,className:"input",type:"number",placeholder:"0",value:t.streaming.keepaliveSeconds,onChange:ne=>s({streaming:{...t.streaming,keepaliveSeconds:ne.target.value}}),disabled:i}),q?h.jsx("span",{className:Re.inlinePill,children:a("config_management.visual.sections.streaming.disabled")}):null]})}),h.jsx(lt,{label:a("config_management.visual.sections.streaming.bootstrap_retries"),type:"number",placeholder:"1",value:t.streaming.bootstrapRetries,onChange:ne=>s({streaming:{...t.streaming,bootstrapRetries:ne.target.value}}),disabled:i,hint:a("config_management.visual.sections.streaming.bootstrap_hint"),error:Q})]}),h.jsx(uo,{children:h.jsx(m2,{label:a("config_management.visual.sections.streaming.nonstream_keepalive"),htmlFor:x,hint:a("config_management.visual.sections.streaming.nonstream_keepalive_hint"),hintId:k,error:W,errorId:C,children:h.jsxs("div",{className:Re.fieldControl,children:[h.jsx("input",{id:x,className:"input",type:"number",placeholder:"0",value:t.streaming.nonstreamKeepaliveInterval,onChange:ne=>s({streaming:{...t.streaming,nonstreamKeepaliveInterval:ne.target.value}}),disabled:i}),I?h.jsx("span",{className:Re.inlinePill,children:a("config_management.visual.sections.streaming.disabled")}):null]})})})]})}),h.jsx(rr,{id:"payload",ref:ne=>{P.current.payload=ne},indexLabel:"09",icon:h.jsx(O0,{size:16}),title:a("config_management.visual.sections.payload.title"),description:a("config_management.visual.sections.payload.description"),children:h.jsxs(dc,{children:[h.jsx(xf,{title:a("config_management.visual.sections.payload.default_rules"),description:a("config_management.visual.sections.payload.default_rules_desc"),children:h.jsx($_,{value:t.payloadDefaultRules,disabled:i,onChange:U})}),h.jsx(xf,{title:a("config_management.visual.sections.payload.default_raw_rules"),description:a("config_management.visual.sections.payload.default_raw_rules_desc"),children:h.jsx($_,{value:t.payloadDefaultRawRules,disabled:i,rawJsonValues:!0,onChange:$})}),h.jsx(xf,{title:a("config_management.visual.sections.payload.override_rules"),description:a("config_management.visual.sections.payload.override_rules_desc"),children:h.jsx($_,{value:t.payloadOverrideRules,disabled:i,protocolFirst:!0,onChange:te})}),h.jsx(xf,{title:a("config_management.visual.sections.payload.override_raw_rules"),description:a("config_management.visual.sections.payload.override_raw_rules_desc"),children:h.jsx($_,{value:t.payloadOverrideRawRules,disabled:i,protocolFirst:!0,rawJsonValues:!0,onChange:ie})}),h.jsx(xf,{title:a("config_management.visual.sections.payload.filter_rules"),description:a("config_management.visual.sections.payload.filter_rules_desc"),children:h.jsx(dke,{value:t.payloadFilterRules,disabled:i,onChange:F})})]})})]})]}),f&&typeof document<"u"?Po.createPortal(h.jsx("div",{ref:T,className:Re.floatingSidebarContainer,children:h.jsx("div",{className:Re.floatingSidebarRail,children:de})}),document.body):null]})}class bi{constructor(e,n,i,s){this.fromA=e,this.toA=n,this.fromB=i,this.toB=s}offset(e,n=e){return new bi(this.fromA+e,this.toA+e,this.fromB+n,this.toB+n)}}function Hc(t,e,n,i,s,a){if(t==i)return[];let o=pC(t,e,n,i,s,a),r=gC(t,e+o,n,i,s+o,a);e+=o,n-=r,s+=o,a-=r;let c=n-e,d=a-s;if(!c||!d)return[new bi(e,n,s,a)];if(c>d){let p=t.slice(e,n).indexOf(i.slice(s,a));if(p>-1)return[new bi(e,e+p,s,s),new bi(e+p+d,n,a,a)]}else if(d>c){let p=i.slice(s,a).indexOf(t.slice(e,n));if(p>-1)return[new bi(e,e,s,s+p),new bi(n,n,s+p+c,a)]}if(c==1||d==1)return[new bi(e,n,s,a)];let f=CI(t,e,n,i,s,a);if(f){let[p,g,y]=f;return Hc(t,e,p,i,s,g).concat(Hc(t,p+y,n,i,g+y,a))}return mke(t,e,n,i,s,a)}let If=1e9,Bf=0,mC=!1;function mke(t,e,n,i,s,a){let o=n-e,r=a-s;if(If<1e9&&Math.min(o,r)>If*16||Bf>0&&Date.now()>Bf)return Math.min(o,r)>If*64?[new bi(e,n,s,a)]:qR(t,e,n,i,s,a);let c=Math.ceil((o+r)/2);p2.reset(c),g2.reset(c);let d=(y,_)=>t.charCodeAt(e+y)==i.charCodeAt(s+_),f=(y,_)=>t.charCodeAt(n-y-1)==i.charCodeAt(a-_-1),p=(o-r)%2!=0?g2:null,g=p?null:p2;for(let y=0;y<c;y++){if(y>If||Bf>0&&!(y&63)&&Date.now()>Bf)return qR(t,e,n,i,s,a);let _=p2.advance(y,o,r,c,p,!1,d)||g2.advance(y,o,r,c,g,!0,f);if(_)return pke(t,e,n,e+_[0],i,s,a,s+_[1])}return[new bi(e,n,s,a)]}class wI{constructor(){this.vec=[]}reset(e){this.len=e<<1;for(let n=0;n<this.len;n++)this.vec[n]=-1;this.vec[e+1]=0,this.start=this.end=0}advance(e,n,i,s,a,o,r){for(let c=-e+this.start;c<=e-this.end;c+=2){let d=s+c,f=c==-e||c!=e&&this.vec[d-1]<this.vec[d+1]?this.vec[d+1]:this.vec[d-1]+1,p=f-c;for(;f<n&&p<i&&r(f,p);)f++,p++;if(this.vec[d]=f,f>n)this.end+=2;else if(p>i)this.start+=2;else if(a){let g=s+(n-i)-c;if(g>=0&&g<this.len&&a.vec[g]!=-1)if(o){let y=a.vec[g];if(y>=n-f)return[y,s+y-g]}else{let y=n-a.vec[g];if(f>=y)return[f,p]}}}return null}}const p2=new wI,g2=new wI;function pke(t,e,n,i,s,a,o,r){let c=!1;return!Ud(t,i)&&++i==n&&(c=!0),!Ud(s,r)&&++r==o&&(c=!0),c?[new bi(e,n,a,o)]:Hc(t,e,i,s,a,r).concat(Hc(t,i,n,s,r,o))}function kI(t,e){let n=1,i=Math.min(t,e);for(;n<i;)n=n<<1;return n}function pC(t,e,n,i,s,a){if(e==n||e==a||t.charCodeAt(e)!=i.charCodeAt(s))return 0;let o=kI(n-e,a-s);for(let r=e,c=s;;){let d=r+o,f=c+o;if(d>n||f>a||t.slice(r,d)!=i.slice(c,f)){if(o==1)return r-e-(Ud(t,r)?0:1);o=o>>1}else{if(d==n||f==a)return d-e;r=d,c=f}}}function gC(t,e,n,i,s,a){if(e==n||s==a||t.charCodeAt(n-1)!=i.charCodeAt(a-1))return 0;let o=kI(n-e,a-s);for(let r=n,c=a;;){let d=r-o,f=c-o;if(d<e||f<s||t.slice(d,r)!=i.slice(f,c)){if(o==1)return n-r-(Ud(t,r)?0:1);o=o>>1}else{if(d==e||f==s)return n-d;r=d,c=f}}}function bw(t,e,n,i,s,a,o,r){let c=i.slice(s,a),d=null;for(;;){if(d||o<r)return d;for(let f=e+o;;){Ud(t,f)||f++;let p=f+o;if(Ud(t,p)||(p+=p==f+1?1:-1),p>=n)break;let g=t.slice(f,p),y=-1;for(;(y=c.indexOf(g,y+1))!=-1;){let _=pC(t,p,n,i,s+y+g.length,a),v=gC(t,e,f,i,s,s+y),x=g.length+_+v;(!d||d[2]<x)&&(d=[f-v,s+y-v,x])}f=p}if(r<0)return d;o=o>>1}}function CI(t,e,n,i,s,a){let o=n-e,r=a-s;if(o<r){let c=CI(i,s,a,t,e,n);return c&&[c[1],c[0],c[2]]}return o<4||r*2<o?null:bw(t,e,n,i,s,a,Math.floor(o/4),-1)}function qR(t,e,n,i,s,a){mC=!0;let o=n-e,r=a-s,c;if(o<r){let g=bw(i,s,a,t,e,n,Math.floor(o/6),50);c=g&&[g[1],g[0],g[2]]}else c=bw(t,e,n,i,s,a,Math.floor(r/6),50);if(!c)return[new bi(e,n,s,a)];let[d,f,p]=c;return Hc(t,e,d,i,s,f).concat(Hc(t,d+p,n,i,f+p,a))}function AI(t,e){for(let n=1;n<t.length;n++){let i=t[n-1],s=t[n];i.toA>s.fromA-e&&i.toB>s.fromB-e&&(t[n-1]=new bi(i.fromA,s.toA,i.fromB,s.toB),t.splice(n--,1))}}function gke(t,e,n){for(;;){AI(n,1);let i=!1;for(let s=0;s<n.length;s++){let a=n[s],o,r;(o=pC(t,a.fromA,a.toA,e,a.fromB,a.toB))&&(a=n[s]=new bi(a.fromA+o,a.toA,a.fromB+o,a.toB)),(r=gC(t,a.fromA,a.toA,e,a.fromB,a.toB))&&(a=n[s]=new bi(a.fromA,a.toA-r,a.fromB,a.toB-r));let c=a.toA-a.fromA,d=a.toB-a.fromB;if(c&&d)continue;let f=a.fromA-(s?n[s-1].toA:0),p=(s<n.length-1?n[s+1].fromA:t.length)-a.toA;if(!f||!p)continue;let g=c?t.slice(a.fromA,a.toA):e.slice(a.fromB,a.toB);f<=g.length&&t.slice(a.fromA-f,a.fromA)==g.slice(g.length-f)?(n[s]=new bi(a.fromA-f,a.toA-f,a.fromB-f,a.toB-f),i=!0):p<=g.length&&t.slice(a.toA,a.toA+p)==g.slice(0,p)&&(n[s]=new bi(a.fromA+p,a.toA+p,a.fromB+p,a.toB+p),i=!0)}if(!i)break}return n}function _ke(t,e,n){for(let i=0,s=0;s<t.length;s++){let a=t[s],o=a.toA-a.fromA,r=a.toB-a.fromB;if(o&&r||o>3||r>3){let c=s==t.length-1?e.length:t[s+1].fromA,d=a.fromA-i,f=c-a.toA,p=KR(e,a.fromA,d),g=zR(e,a.toA,f),y=a.fromA-p,_=g-a.toA;if((!o||!r)&&y&&_){let v=Math.max(o,r),[x,k,C]=o?[e,a.fromA,a.toA]:[n,a.fromB,a.toB];v>y&&e.slice(p,a.fromA)==x.slice(C-y,C)?(a=t[s]=new bi(p,p+o,a.fromB-y,a.toB-y),p=a.fromA,g=zR(e,a.toA,c-a.toA)):v>_&&e.slice(a.toA,g)==x.slice(k,k+_)&&(a=t[s]=new bi(g-o,g,a.fromB+_,a.toB+_),g=a.toA,p=KR(e,a.fromA,a.fromA-i)),y=a.fromA-p,_=g-a.toA}if(y||_)a=t[s]=new bi(a.fromA-y,a.toA+_,a.fromB-y,a.toB+_);else if(o){if(!r){let v=HR(e,a.fromA,a.toA),x,k=v<0?-1:VR(e,a.toA,a.fromA);v>-1&&(x=v-a.fromA)<=f&&e.slice(a.fromA,v)==e.slice(a.toA,a.toA+x)?a=t[s]=a.offset(x):k>-1&&(x=a.toA-k)<=d&&e.slice(a.fromA-x,a.fromA)==e.slice(k,a.toA)&&(a=t[s]=a.offset(-x))}}else{let v=HR(n,a.fromB,a.toB),x,k=v<0?-1:VR(n,a.toB,a.fromB);v>-1&&(x=v-a.fromB)<=f&&n.slice(a.fromB,v)==n.slice(a.toB,a.toB+x)?a=t[s]=a.offset(x):k>-1&&(x=a.toB-k)<=d&&n.slice(a.fromB-x,a.fromB)==n.slice(k,a.toB)&&(a=t[s]=a.offset(-x))}}i=a.toA}return AI(t,3),t}let Rc;try{Rc=new RegExp("[\\p{Alphabetic}\\p{Number}]","u")}catch{}function NI(t){return t>48&&t<58||t>64&&t<91||t>96&&t<123}function TI(t,e){if(e==t.length)return 0;let n=t.charCodeAt(e);return n<192?NI(n)?1:0:Rc?!OI(n)||e==t.length-1?Rc.test(String.fromCharCode(n))?1:0:Rc.test(t.slice(e,e+2))?2:0:0}function MI(t,e){if(!e)return 0;let n=t.charCodeAt(e-1);return n<192?NI(n)?1:0:Rc?!PI(n)||e==1?Rc.test(String.fromCharCode(n))?1:0:Rc.test(t.slice(e-2,e))?2:0:0}const LI=8;function zR(t,e,n){if(e==t.length||!MI(t,e))return e;for(let i=e,s=e+n,a=0;a<LI;a++){let o=TI(t,i);if(!o||i+o>s)return i;i+=o}return e}function KR(t,e,n){if(!e||!TI(t,e))return e;for(let i=e,s=e-n,a=0;a<LI;a++){let o=MI(t,i);if(!o||i-o<s)return i;i-=o}return e}function VR(t,e,n){for(;e!=n;e--)if(t.charCodeAt(e-1)==10)return e;return-1}function HR(t,e,n){for(;e!=n;e++)if(t.charCodeAt(e)==10)return e;return-1}const OI=t=>t>=55296&&t<=56319,PI=t=>t>=56320&&t<=57343;function Ud(t,e){return!e||e==t.length||!OI(t.charCodeAt(e-1))||!PI(t.charCodeAt(e))}function yke(t,e,n){var i;let s=n?.override;return s?s(t,e):(If=((i=n?.scanLimit)!==null&&i!==void 0?i:1e9)>>1,Bf=n?.timeout?Date.now()+n.timeout:0,mC=!1,gke(t,e,Hc(t,0,t.length,e,0,e.length)))}function EI(){return!mC}function jI(t,e,n){return _ke(yke(t,e,n),t,e)}class Sb{constructor(e,n,i,s,a,o=!0){this.changes=e,this.fromA=n,this.toA=i,this.fromB=s,this.toB=a,this.precise=o}offset(e,n){return e||n?new Sb(this.changes,this.fromA+e,this.toA+e,this.fromB+n,this.toB+n,this.precise):this}get endA(){return Math.max(this.fromA,this.toA-1)}get endB(){return Math.max(this.fromB,this.toB-1)}static build(e,n,i){let s=jI(e.toString(),n.toString(),i);return RI(s,e,n,0,0,EI())}static updateA(e,n,i,s,a){return QR(XR(e,s,!0,i.length),e,n,i,a)}static updateB(e,n,i,s,a){return QR(XR(e,s,!1,n.length),e,n,i,a)}}function WR(t,e,n,i){let s=n.lineAt(t),a=i.lineAt(e);return s.to==t&&a.to==e&&t<n.length&&e<i.length?[t+1,e+1]:[s.from,a.from]}function GR(t,e,n,i){let s=n.lineAt(t),a=i.lineAt(e);return s.from==t&&a.from==e?[t,e]:[s.to+1,a.to+1]}function RI(t,e,n,i,s,a){let o=[];for(let r=0;r<t.length;r++){let c=t[r],[d,f]=WR(c.fromA+i,c.fromB+s,e,n),[p,g]=GR(c.toA+i,c.toB+s,e,n),y=[c.offset(-d+i,-f+s)];for(;r<t.length-1;){let _=t[r+1],[v,x]=WR(_.fromA+i,_.fromB+s,e,n);if(v>p+1&&x>g+1)break;y.push(_.offset(-d+i,-f+s)),[p,g]=GR(_.toA+i,_.toB+s,e,n),r++}o.push(new Sb(y,d,Math.max(d,p),f,Math.max(f,g),a))}return o}const X_=1e3;function $R(t,e,n,i){let s=0,a=t.length;for(;;){if(s==a){let f=0,p=0;s&&({toA:f,toB:p}=t[s-1]);let g=e-(n?f:p);return[f+g,p+g]}let o=s+a>>1,r=t[o],[c,d]=n?[r.fromA,r.toA]:[r.fromB,r.toB];if(c>e)a=o;else if(d<=e)s=o+1;else return i?[r.fromA,r.fromB]:[r.toA,r.toB]}}function XR(t,e,n,i){let s=[];return e.iterChangedRanges((a,o,r,c)=>{let d=0,f=n?e.length:i,p=0,g=n?i:e.length;a>X_&&([d,p]=$R(t,a-X_,n,!0)),o<e.length-X_&&([f,g]=$R(t,o+X_,n,!1));let y=c-r-(o-a),_,[v,x]=n?[y,0]:[0,y];s.length&&(_=s[s.length-1]).toA>=d?s[s.length-1]={fromA:_.fromA,fromB:_.fromB,toA:f,toB:g,diffA:_.diffA+v,diffB:_.diffB+x}:s.push({fromA:d,toA:f,fromB:p,toB:g,diffA:v,diffB:x})}),s}function QR(t,e,n,i,s){if(!t.length)return e;let a=[];for(let o=0,r=0,c=0,d=0;;o++){let f=o==t.length?null:t[o],p=f?f.fromA+r:n.length,g=f?f.fromB+c:i.length;for(;d<e.length;){let x=e[d];if(x.endA+r>p||x.endB+c>g)break;a.push(x.offset(r,c)),d++}if(!f)break;let y=f.toA+r+f.diffA,_=f.toB+c+f.diffB,v=jI(n.sliceString(p,y),i.sliceString(g,_),s);for(let x of RI(v,n,i,p,g,EI()))a.push(x);for(r+=f.diffA,c+=f.diffB;d<e.length;){let x=e[d];if(x.fromA+r>y&&x.fromB+c>_)break;d++}}return a}const bke="DiffModal-module__diffModal___v1LSh",vke="DiffModal-module__content___CqXvC",xke="DiffModal-module__emptyState___gS4Kg",Ske="DiffModal-module__diffContainer___AoJKb",wke="DiffModal-module__fileHeader___7jkN4",kke="DiffModal-module__fileIcon___OxYTx",Cke="DiffModal-module__fileName___2ylCY",Ake="DiffModal-module__fileStats___bN8WB",Nke="DiffModal-module__statAdditions___EKdp8",Tke="DiffModal-module__statDeletions___Py0Xg",Mke="DiffModal-module__statBar___tR7TQ",Lke="DiffModal-module__statBlock___4qKhG",Oke="DiffModal-module__statBlockAdd___VI4yX",Pke="DiffModal-module__statBlockDel___39sMa",Eke="DiffModal-module__diffBody___9dIqe",jke="DiffModal-module__hunk___AcNIC",Rke="DiffModal-module__hunkHeader___xUVgg",Dke="DiffModal-module__hunkGutter___QVKqi",Fke="DiffModal-module__hunkExpandIcon___zbAx-",Ike="DiffModal-module__hunkText___iPVut",Bke="DiffModal-module__diffLine___9KzZK",Uke="DiffModal-module__lineNum___VXwKE",qke="DiffModal-module__lineNumEmpty___I-5AK",zke="DiffModal-module__linePrefix___ofp2Q",Kke="DiffModal-module__lineText___Zdyo3",Vke="DiffModal-module__context___RnJqZ",Hke="DiffModal-module__deletion___rms8N",Wke="DiffModal-module__addition___a6g2h",xn={diffModal:bke,content:vke,emptyState:xke,diffContainer:Ske,fileHeader:wke,fileIcon:kke,fileName:Cke,fileStats:Ake,statAdditions:Nke,statDeletions:Tke,statBar:Mke,statBlock:Lke,statBlockAdd:Oke,statBlockDel:Pke,diffBody:Eke,hunk:jke,hunkHeader:Rke,hunkGutter:Dke,hunkExpandIcon:Fke,hunkText:Ike,diffLine:Bke,lineNum:Uke,lineNumEmpty:qke,linePrefix:zke,lineText:Kke,context:Vke,deletion:Hke,addition:Wke},_2=3,YR=(t,e)=>Math.max(0,Math.min(e,t.length));function Gke(t,e){const n=an.of(t.split(`
`)),i=an.of(e.split(`
`)),s=Sb.build(n,i);let a=0,o=0;return{hunks:s.map(c=>{const d=[],f=c.fromA<c.toA,p=c.fromB<c.toB,g=[];if(f){const R=n.lineAt(c.fromA).number,q=n.lineAt(c.toA-1).number;for(let I=R;I<=q;I++)g.push({num:I,text:n.line(I).text})}const y=[];if(p){const R=i.lineAt(c.fromB).number,q=i.lineAt(c.toB-1).number;for(let I=R;I<=q;I++)y.push({num:I,text:i.line(I).text})}o+=g.length,a+=y.length;let _,v,x,k;if(f)_=g[0].num-1,v=g[g.length-1].num+1;else{const R=YR(n,c.fromA),q=n.lineAt(R);c.fromA===q.from?(_=q.number-1,v=q.number):(_=q.number,v=q.number+1)}if(p)x=y[0].num-1,k=y[y.length-1].num+1;else{const R=YR(i,c.fromB),q=i.lineAt(R);c.fromB===q.from?(x=q.number-1,k=q.number):(x=q.number,k=q.number+1)}const C=Math.min(_2,Math.max(0,_),Math.max(0,x));for(let R=C;R>0;R--){const q=_-R+1,I=x-R+1;q>=1&&I>=1&&q<=n.lines&&d.push({type:"context",oldNum:q,newNum:I,text:n.line(q).text})}for(const R of g)d.push({type:"deletion",oldNum:R.num,newNum:null,text:R.text});for(const R of y)d.push({type:"addition",oldNum:null,newNum:R.num,text:R.text});const N=Math.max(0,Math.min(_2,n.lines-v+1)),L=Math.max(0,Math.min(_2,i.lines-k+1)),M=Math.min(N,L);for(let R=0;R<M;R++){const q=v+R,I=k+R;q>=1&&q<=n.lines&&I>=1&&I<=i.lines&&d.push({type:"context",oldNum:q,newNum:I,text:n.line(q).text})}const O=d.find(R=>R.oldNum!==null)?.oldNum??1,T=d.find(R=>R.newNum!==null)?.newNum??1,P=d.filter(R=>R.type!=="addition").length,E=d.filter(R=>R.type!=="deletion").length;return{oldStart:O,oldCount:P,newStart:T,newCount:E,lines:d}}),additions:a,deletions:o}}const JR=5;function $ke({additions:t,deletions:e}){const n=t+e;if(n===0)return null;const i=Math.round(t/n*JR);return h.jsx("span",{className:xn.statBar,children:Array.from({length:JR},(s,a)=>h.jsx("span",{className:`${xn.statBlock} ${a<i?xn.statBlockAdd:xn.statBlockDel}`},a))})}function Xke({open:t,original:e,modified:n,onConfirm:i,onCancel:s,loading:a=!1}){const{t:o}=nt(),r=S.useMemo(()=>Gke(e,n),[e,n]);return h.jsx(Ss,{open:t,title:o("config_management.diff.title"),onClose:s,width:"min(1200px, 90vw)",className:xn.diffModal,closeDisabled:a,footer:h.jsxs(h.Fragment,{children:[h.jsx(he,{variant:"secondary",onClick:s,disabled:a,children:o("common.cancel")}),h.jsx(he,{onClick:i,loading:a,disabled:a,children:o("config_management.diff.confirm")})]}),children:h.jsx("div",{className:xn.content,children:r.hunks.length===0?h.jsx("div",{className:xn.emptyState,children:o("config_management.diff.no_changes")}):h.jsxs("div",{className:xn.diffContainer,children:[h.jsxs("div",{className:xn.fileHeader,children:[h.jsx("svg",{className:xn.fileIcon,viewBox:"0 0 16 16",width:"16",height:"16",children:h.jsx("path",{fillRule:"evenodd",d:"M3.75 1.5a.25.25 0 00-.25.25v11.5c0 .138.112.25.25.25h8.5a.25.25 0 00.25-.25V6H9.75A1.75 1.75 0 018 4.25V1.5H3.75zm5.75.56v2.19c0 .138.112.25.25.25h2.19L9.5 2.06zM2 1.75C2 .784 2.784 0 3.75 0h5.086c.464 0 .909.184 1.237.513l3.414 3.414c.329.328.513.773.513 1.237v8.086A1.75 1.75 0 0112.25 15h-8.5A1.75 1.75 0 012 13.25V1.75z",fill:"currentColor"})}),h.jsx("span",{className:xn.fileName,children:"config.yaml"}),h.jsxs("span",{className:xn.fileStats,children:[h.jsxs("span",{className:xn.statAdditions,children:["+",r.additions]}),h.jsxs("span",{className:xn.statDeletions,children:["-",r.deletions]}),h.jsx($ke,{additions:r.additions,deletions:r.deletions})]})]}),h.jsx("div",{className:xn.diffBody,children:r.hunks.map((c,d)=>h.jsxs("div",{className:xn.hunk,children:[h.jsxs("div",{className:xn.hunkHeader,children:[h.jsx("span",{className:xn.hunkGutter,children:h.jsx("svg",{className:xn.hunkExpandIcon,viewBox:"0 0 16 16",width:"12",height:"12",children:h.jsx("path",{d:"M8.177 1.677l2.896 2.896a.25.25 0 01-.177.427H8.75v1.25a.75.75 0 01-1.5 0V5H5.104a.25.25 0 01-.177-.427l2.896-2.896a.25.25 0 01.354 0zM7.25 11.75a.75.75 0 011.5 0V13h2.146a.25.25 0 01.177.427l-2.896 2.896a.25.25 0 01-.354 0l-2.896-2.896A.25.25 0 015.104 13H7.25v-1.25z",fill:"currentColor"})})}),h.jsx("span",{className:xn.hunkGutter}),h.jsxs("span",{className:xn.hunkText,children:["@@ -",c.oldStart,",",c.oldCount," +",c.newStart,",",c.newCount," @@"]})]}),c.lines.map((f,p)=>h.jsxs("div",{className:`${xn.diffLine} ${xn[f.type]}`,children:[h.jsx("span",{className:`${xn.lineNum} ${f.oldNum===null?xn.lineNumEmpty:""}`,children:f.oldNum??""}),h.jsx("span",{className:`${xn.lineNum} ${f.newNum===null?xn.lineNumEmpty:""}`,children:f.newNum??""}),h.jsx("span",{className:xn.linePrefix,children:f.type==="deletion"?"-":f.type==="addition"?"+":" "}),h.jsx("code",{className:xn.lineText,children:f.text||" "})]},`${d}-${p}`))]},d))})]})})})}const Qke="ConfigPage-module__container___5kN-Y",Yke="ConfigPage-module__pageHeader___Zulyi",Jke="ConfigPage-module__pageHeaderCopy___fiTfJ",Zke="ConfigPage-module__pageEyebrow___Oib1p",eCe="ConfigPage-module__pageTitle___BoVLE",tCe="ConfigPage-module__description___qruwQ",nCe="ConfigPage-module__pageMeta___NX40i",iCe="ConfigPage-module__statusBadge___dQAmD",sCe="ConfigPage-module__tabBar___PelpE",aCe="ConfigPage-module__tabItem___Uj1rU",oCe="ConfigPage-module__tabActive___sZLh-",rCe="ConfigPage-module__workspaceShell___Ztz3J",lCe="ConfigPage-module__content___PgFbt",cCe="ConfigPage-module__sourceWorkspace___bUuLs",uCe="ConfigPage-module__sourceToolbar___fhCdI",dCe="ConfigPage-module__searchInputWrapper___-GeEQ",hCe="ConfigPage-module__searchInput___ock8o",fCe="ConfigPage-module__searchRight___pwWBV",mCe="ConfigPage-module__searchCount___AIry7",pCe="ConfigPage-module__searchButton___GRbfi",gCe="ConfigPage-module__searchActions___ZGITa",_Ce="ConfigPage-module__editorWrapper___yBudn",yCe="ConfigPage-module__modified___4mzgT",bCe="ConfigPage-module__saved___zmZx2",vCe="ConfigPage-module__error___qlpX1",xCe="ConfigPage-module__floatingActionContainer___3ZQ-z",SCe="ConfigPage-module__floatingActionList___ky8bV",wCe="ConfigPage-module__floatingStatus___u8zOi",kCe="ConfigPage-module__floatingStatusCompact___STwcZ",CCe="ConfigPage-module__floatingActionButton___Htxmz",ACe="ConfigPage-module__dirtyDot___zXEnD",rn={container:Qke,pageHeader:Yke,pageHeaderCopy:Jke,pageEyebrow:Zke,pageTitle:eCe,description:tCe,pageMeta:nCe,statusBadge:iCe,tabBar:sCe,tabItem:aCe,tabActive:oCe,workspaceShell:rCe,content:lCe,sourceWorkspace:cCe,sourceToolbar:uCe,searchInputWrapper:dCe,searchInput:hCe,searchRight:fCe,searchCount:mCe,searchButton:pCe,searchActions:gCe,editorWrapper:_Ce,modified:yCe,saved:bCe,error:vCe,floatingActionContainer:xCe,floatingActionList:SCe,floatingStatus:wCe,floatingStatusCompact:kCe,floatingActionButton:CCe,dirtyDot:ACe};function ZR(t){try{const e=vI(t);return!e||typeof e!="object"||Array.isArray(e)?!1:!!e["commercial-mode"]}catch{return!1}}function NCe(){const{t}=nt(),e=sp(),n=e?e.status==="current":!0,i=mn(Me=>Me.showNotification),s=mn(Me=>Me.showConfirmation),a=en(Me=>Me.connectionStatus),o=Aa(Me=>Me.resolvedTheme),r=W0("(max-width: 768px)"),{visualValues:c,visualDirty:d,visualParseError:f,visualValidationErrors:p,visualHasPayloadValidationErrors:g,loadVisualValuesFromYaml:y,applyVisualChangesToYaml:_,setVisualValues:v}=ike(),[x,k]=S.useState(()=>{const Me=localStorage.getItem("config-management:tab");return Me==="visual"||Me==="source"?Me:"visual"}),[C,N]=S.useState(""),[L,M]=S.useState(!0),[O,T]=S.useState(!1),[P,E]=S.useState(""),[R,q]=S.useState(!1),[I,Y]=S.useState(!1),[X,K]=S.useState(""),[B,H]=S.useState(""),[z,Q]=S.useState(""),[W,D]=S.useState({current:0,total:0}),[U,$]=S.useState(""),te=S.useRef(null),ie=S.useRef(null),F=a!=="connected",ee=R||d,J=n,re=!!f,fe=x==="visual"&&(Object.values(p).some(Boolean)||g),me=S.useCallback(async()=>{M(!0),E("");try{const Me=await Cf.fetchConfigYaml();N(Me),q(!1),Y(!1),K(Me),H(Me),y(Me)}catch(Me){const Ye=Me instanceof Error?Me.message:t("notification.refresh_failed");E(Ye)}finally{M(!1)}},[y,t]);S.useEffect(()=>{me()},[me]),S.useEffect(()=>{x!=="visual"||!f||(k("source"),localStorage.setItem("config-management:tab","source"),i(t("config_management.visual_mode_unavailable_detail",{message:f}),"error"))},[x,i,t,f]);const de=async()=>{T(!0);try{const Me=ZR(X),Ye=ZR(B),_t=Me!==Ye;await Cf.saveConfigYaml(B);const pt=await Cf.fetchConfigYaml();q(!1),Y(!1),N(pt),K(pt),H(pt),y(pt);try{It.getState().clearCache(),await It.getState().fetchConfig(void 0,!0)}catch(ot){const ue=ot instanceof Error?ot.message:typeof ot=="string"?ot:"";i(`${t("notification.refresh_failed")}${ue?`: ${ue}`:""}`,"error")}i(t("config_management.save_success"),"success"),_t&&i(t("notification.commercial_mode_restart_required"),"warning")}catch(Me){const Ye=Me instanceof Error?Me.message:"";i(`${t("notification.save_failed")}: ${Ye}`,"error")}finally{T(!1)}},ne=async()=>{if(x==="visual"&&f){i(t("config_management.visual_mode_save_blocked"),"error");return}T(!0);try{const Me=await Cf.fetchConfigYaml();if(x!=="source"){const pt=qm(Me);if(pt.errors.length>0){i(t("config_management.visual_mode_latest_yaml_invalid",{message:pt.errors[0]?.message??t("config_management.visual_mode_save_blocked")}),"error");return}}const Ye=x==="source"?C:_(Me);let _t=Me;if(x!=="source")try{_t=qm(Me).toString({indent:2,lineWidth:120,minContentWidth:0})}catch{}if(_t===Ye){q(!1),N(Me),K(Me),H(Ye),y(Me),i(t("config_management.diff.no_changes"),"info");return}K(_t),H(Ye),Y(!0)}catch(Me){const Ye=Me instanceof Error?Me.message:"";i(`${t("notification.save_failed")}: ${Ye}`,"error")}finally{T(!1)}},Be=S.useCallback(Me=>{N(Me),q(!0)},[]),Ke=S.useCallback(Me=>{if(Me!==x){if(Me==="source"){if(d){const Ye=_(C);Ye!==C&&(N(Ye),q(!0))}}else{const Ye=y(C);if(!Ye.ok){i(t("config_management.visual_mode_unavailable_detail",{message:Ye.error}),"error");return}}k(Me),localStorage.setItem("config-management:tab",Me)}},[x,_,C,y,i,t,d]),Te=S.useCallback((Me,Ye="next")=>{if(!Me||!te.current?.view)return;const _t=te.current.view,pt=_t.state.doc.toString(),ot=[],ue=Me.toLowerCase(),qe=pt.toLowerCase();let Ut=0;for(;Ut<qe.length;){const un=qe.indexOf(ue,Ut);if(un===-1)break;ot.push(un),Ut=un+1}if(ot.length===0){D({current:0,total:0});return}const Ti=_t.state.selection.main,ei=Ye==="prev"?Ti.from:Ti.to;let Rn=0;if(Ye==="next")for(let un=0;un<ot.length;un++){if(ot[un]>ei){Rn=un;break}un===ot.length-1&&(Rn=0)}else for(let un=ot.length-1;un>=0;un--){if(ot[un]<ei){Rn=un;break}un===0&&(Rn=ot.length-1)}const Xn=ot[Rn];D({current:Rn+1,total:ot.length}),_t.dispatch({selection:{anchor:Xn,head:Xn+Me.length},scrollIntoView:!0}),_t.focus()},[]),Qe=S.useCallback(Me=>{Q(Me),Me?D({current:0,total:0}):(D({current:0,total:0}),$(""))},[]),at=S.useCallback((Me="next")=>{z&&($(z),Te(z,Me))},[z,Te]),Ce=S.useCallback(Me=>{Me.key==="Enter"&&(Me.preventDefault(),at(Me.shiftKey?"prev":"next"))},[at]),ft=S.useCallback(()=>{U&&Te(U,"prev")},[U,Te]),mt=S.useCallback(()=>{U&&Te(U,"next")},[U,Te]);S.useLayoutEffect(()=>{if(typeof window>"u"||!J)return;const Me=ie.current;if(!Me)return;const Ye=()=>{const pt=Me.getBoundingClientRect().height;document.documentElement.style.setProperty("--config-action-bar-height",`${pt}px`)};Ye(),window.addEventListener("resize",Ye);const _t=typeof ResizeObserver>"u"?null:new ResizeObserver(Ye);return _t?.observe(Me),()=>{_t?.disconnect(),window.removeEventListener("resize",Ye),document.documentElement.style.removeProperty("--config-action-bar-height")}},[J]);const kt=S.useMemo(()=>[o2e(),zve(),rF(),bp.of(mF)],[]),Pt=()=>t(F?"config_management.status_disconnected":L?"config_management.status_loading":P?"config_management.status_load_failed":re?"config_management.visual_mode_unavailable":fe?"config_management.visual.validation.validation_blocked":O?"config_management.status_saving":ee?"config_management.status_dirty":"config_management.status_loaded"),wt=()=>P||re||fe?rn.error:ee?rn.modified:!L&&!O?rn.saved:"",Tt=()=>r?F?t("config_management.status_disconnected_short",{defaultValue:"Disconnected"}):L?t("config_management.status_loading_short",{defaultValue:"Loading"}):P?t("config_management.status_load_failed_short",{defaultValue:"Failed"}):re?t("config_management.visual_mode_unavailable_short",{defaultValue:"YAML issue"}):fe?t("config_management.visual.validation_blocked_short",{defaultValue:"Fix errors"}):O?t("config_management.status_saving_short",{defaultValue:"Saving"}):ee?t("config_management.status_dirty_short",{defaultValue:"Unsaved"}):t("config_management.status_loaded_short",{defaultValue:"Loaded"}):Pt(),on=S.useCallback(()=>{if(!ee){me();return}s({title:t("common.unsaved_changes_title"),message:t("config_management.reload_confirm_message"),confirmText:t("config_management.reload"),cancelText:t("common.cancel"),variant:"danger",onConfirm:async()=>{await me()}})},[ee,me,s,t]),ce=h.jsx("div",{className:rn.floatingActionContainer,ref:ie,children:h.jsxs("div",{className:rn.floatingActionList,children:[h.jsx("div",{className:`${rn.floatingStatus} ${r?rn.floatingStatusCompact:""} ${wt()}`,children:Tt()}),h.jsx("button",{type:"button",className:rn.floatingActionButton,onClick:on,disabled:L||O,title:t("config_management.reload"),"aria-label":t("config_management.reload"),children:h.jsx(Ew,{size:16})}),h.jsxs("button",{type:"button",className:rn.floatingActionButton,onClick:ne,disabled:F||L||O||!ee||I||re||fe,title:t("config_management.save"),"aria-label":t("config_management.save"),children:[h.jsx(Rw,{size:16}),ee&&h.jsx("span",{className:rn.dirtyDot,"aria-hidden":"true"})]})]})}),ye=x==="visual"?t("config_management.tabs.visual",{defaultValue:"可视化编辑"}):t("config_management.tabs.source",{defaultValue:"源文件编辑"}),Ue=t(x==="visual"?"config_management.visual.notice":"config_management.description");return h.jsxs("div",{className:rn.container,children:[h.jsxs("div",{className:rn.pageHeader,children:[h.jsxs("div",{className:rn.pageHeaderCopy,children:[h.jsx("span",{className:rn.pageEyebrow,children:ye}),h.jsx("h1",{className:rn.pageTitle,children:t("config_management.title")}),h.jsx("p",{className:rn.description,children:Ue})]}),h.jsxs("div",{className:rn.pageMeta,children:[h.jsx("div",{className:`${rn.statusBadge} ${wt()}`,children:Pt()}),h.jsxs("div",{className:rn.tabBar,children:[h.jsx("button",{type:"button",className:`${rn.tabItem} ${x==="visual"?rn.tabActive:""}`,onClick:()=>Ke("visual"),disabled:O||L,children:t("config_management.tabs.visual",{defaultValue:"可视化编辑"})}),h.jsx("button",{type:"button",className:`${rn.tabItem} ${x==="source"?rn.tabActive:""}`,onClick:()=>Ke("source"),disabled:O||L,children:t("config_management.tabs.source",{defaultValue:"源代码编辑"})})]})]})]}),h.jsx("div",{className:rn.workspaceShell,children:h.jsxs("div",{className:rn.content,children:[P&&h.jsx("div",{className:"error-box",children:P}),!P&&f&&h.jsx("div",{className:"error-box",children:t("config_management.visual_mode_unavailable_detail",{message:f})}),x==="visual"?h.jsx(fke,{values:c,validationErrors:p,hasPayloadValidationErrors:g,disabled:F||L,onChange:v}):h.jsxs("div",{className:rn.sourceWorkspace,children:[h.jsxs("div",{className:rn.sourceToolbar,children:[h.jsx("div",{className:rn.searchInputWrapper,children:h.jsx(lt,{value:z,onChange:Me=>Qe(Me.target.value),onKeyDown:Ce,placeholder:t("config_management.search_placeholder",{defaultValue:"搜索配置内容..."}),disabled:F||L,className:rn.searchInput,rightElement:h.jsxs("div",{className:rn.searchRight,children:[z&&U===z&&h.jsx("span",{className:rn.searchCount,children:W.total>0?`${W.current} / ${W.total}`:t("config_management.search_no_results",{defaultValue:"无结果"})}),h.jsx("button",{type:"button",className:rn.searchButton,onClick:()=>at("next"),disabled:!z||F||L,title:t("config_management.search_button",{defaultValue:"搜索"}),children:h.jsx(e4,{size:16})})]})})}),h.jsxs("div",{className:rn.searchActions,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:ft,disabled:!z||U!==z||W.total===0,title:t("config_management.search_prev",{defaultValue:"上一个"}),children:h.jsx(jw,{size:16})}),h.jsx(he,{variant:"secondary",size:"sm",onClick:mt,disabled:!z||U!==z||W.total===0,title:t("config_management.search_next",{defaultValue:"下一个"}),children:h.jsx(Py,{size:16})})]})]}),h.jsx("div",{className:rn.editorWrapper,children:h.jsx(MF,{ref:te,value:C,onChange:Be,extensions:kt,theme:o,editable:!F&&!L,placeholder:t("config_management.editor_placeholder"),height:"100%",style:{height:"100%"},basicSetup:{lineNumbers:!0,highlightActiveLineGutter:!0,highlightActiveLine:!0,foldGutter:!0,dropCursor:!0,allowMultipleSelections:!0,indentOnInput:!0,bracketMatching:!0,closeBrackets:!0,autocompletion:!1,rectangularSelection:!0,crosshairCursor:!1,highlightSelectionMatches:!0,closeBracketsKeymap:!0,searchKeymap:!0,foldKeymap:!0,completionKeymap:!1,lintKeymap:!0}})})]})]})}),J&&typeof document<"u"?Po.createPortal(ce,document.body):null,h.jsx(Xke,{open:I,original:X,modified:B,onConfirm:de,onCancel:()=>Y(!1),loading:O})]})}function TCe(t,e){const[n,i]=S.useState(()=>{try{const a=window.localStorage.getItem(t);return a?JSON.parse(a):e}catch(a){return console.error(`Error reading localStorage key "${t}":`,a),e}});return[n,a=>{try{const o=a instanceof Function?a(n):a;i(o),window.localStorage.setItem(t,JSON.stringify(o))}catch(o){console.error(`Error setting localStorage key "${t}":`,o)}}]}const _C=["GET","POST","PUT","PATCH","DELETE","OPTIONS","HEAD"],MCe=["2xx","3xx","4xx","5xx"],DI=t=>{if(typeof t=="number"){if(t>=200&&t<300)return"2xx";if(t>=300&&t<400)return"3xx";if(t>=400&&t<500)return"4xx";if(t>=500&&t<600)return"5xx"}},LCe=new RegExp(`\\b(${_C.join("|")})\\b`),OCe=/^\[?(\d{4}-\d{2}-\d{2}[ T]\d{2}:\d{2}:\d{2}(?:\.\d{1,3})?)\]?/,PCe=/^\[?(trace|debug|info|warn|warning|error|fatal)\s*\]?(?=\s|\[|$)\s*/i,y2=/^\[([^\]]+)\]/,FI=/\b(?:\d+(?:\.\d+)?\s*(?:µs|us|ms|s|m))(?:\s*\d+(?:\.\d+)?\s*(?:µs|us|ms|s|m))*\b/i,ECe=/\b(?:\d{1,3}\.){3}\d{1,3}\b/,jCe=/\b(?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}\b/i,e3=/^([a-f0-9]{8}|--------)$/i,RCe=/^\d{1,2}:\d{2}:\d{2}(?:\.\d{1,3})?$/,b2=/^\[GIN\]\s+(\d{4})\/(\d{2})\/(\d{2})\s*-\s*(\d{2}:\d{2}:\d{2}(?:\.\d{1,3})?)\s*$/,DCe=[/\|\s*([1-5]\d{2})\s*\|/,/\b([1-5]\d{2})\s*-/,new RegExp(`\\b(?:${_C.join("|")})\\s+\\S+\\s+([1-5]\\d{2})\\b`),/\b(?:status|code|http)[:\s]+([1-5]\d{2})\b/i,/\b([1-5]\d{2})\s+(?:OK|Created|Accepted|No Content|Moved|Found|Bad Request|Unauthorized|Forbidden|Not Found|Method Not Allowed|Internal Server Error|Bad Gateway|Service Unavailable|Gateway Timeout)\b/i],FCe=t=>{for(const e of DCe){const n=t.match(e);if(!n)continue;const i=Number.parseInt(n[1],10);if(Number.isFinite(i)&&i>=100&&i<=599)return i}},v2=t=>{const e=t.match(ECe);if(e)return e[0];const n=t.match(jCe);if(!n)return;const i=n[0];if(!RCe.test(i)&&!(!i.includes("::")&&i.split(":").length!==8))return i},Q_=t=>{const e=t.trim(),n=e.match(/^(\d{4}-\d{2}-\d{2})[ T](\d{2}:\d{2}:\d{2})/);return n?`${n[1]} ${n[2]}`:e},t3=t=>{const e=t.match(FI);if(e)return e[0].replace(/\s+/g,"")},ICe=t=>{const e=t.trim().toLowerCase();if(e==="warning"||e==="warn")return"warn";if(e==="info")return"info";if(e==="error")return"error";if(e==="fatal")return"fatal";if(e==="debug")return"debug";if(e==="trace")return"trace"},BCe=t=>{const e=t.toLowerCase();if(/\bfatal\b/.test(e))return"fatal";if(/\berror\b/.test(e))return"error";if(/\bwarn(?:ing)?\b/.test(e)||t.includes("警告"))return"warn";if(/\binfo\b/.test(e))return"info";if(/\bdebug\b/.test(e))return"debug";if(/\btrace\b/.test(e))return"trace"},x2=t=>{const e=t.match(LCe);if(!e)return{};const n=e[1],i=e.index??0,s=t.slice(i+e[0].length).trim(),a=s?s.split(/\s+/)[0]:void 0;return{method:n,path:a}},UCe=t=>{let e=t.trim(),n;const i=e.match(OCe);i&&(n=i[1],e=e.slice(i[0].length).trim());let s;const a=e.match(/^\[([a-f0-9]{8}|--------)\]\s*/i);if(a){const x=a[1];/^-+$/.test(x)||(s=x),e=e.slice(a[0].length).trim()}let o;const r=e.match(PCe);r&&(o=ICe(r[1]),e=e.slice(r[0].length).trim());let c;const d=e.match(y2);d&&(c=d[1],e=e.slice(d[0].length).trim());let f,p,g,y,_,v=e;if(e.includes("|")){const x=e.split("|").map(E=>E.trim()).filter(Boolean),k=new Set,C=x.findIndex(E=>b2.test(E));if(C>=0){const E=x[C].match(b2);if(E){const R=`${E[1]}-${E[2]}-${E[3]} ${E[4]}`,q=Q_(R),I=n?Q_(n):void 0;n?I===q&&k.add(C):(n=R,k.add(C))}}const N=x.findIndex(E=>e3.test(E));if(N>=0){const E=x[N].match(e3);if(E){const R=E[1];/^-+$/.test(R)||(s=R),k.add(N)}}const L=x.findIndex(E=>/^\d{3}$/.test(E));if(L>=0){const E=x[L].match(/^(\d{3})$/);if(E){const R=Number.parseInt(E[1],10);R>=100&&R<=599&&(f=R,k.add(L))}}const M=x.findIndex(E=>FI.test(E));if(M>=0){const E=t3(x[M]);E&&(p=E,k.add(M))}const O=x.findIndex(E=>!!v2(E));if(O>=0){const E=v2(x[O]);E&&(g=E,k.add(O))}const T=x.findIndex(E=>{const{method:R}=x2(E);return!!R});if(T>=0){const E=x2(x[T]);y=E.method,_=E.path,k.add(T)}const P=x.findIndex(E=>y2.test(E));if(P>=0){const E=x[P].match(y2);E&&(c=E[1],k.add(P))}v=x.filter((E,R)=>!k.has(R)).join(" | ")}else{f=FCe(e);const x=t3(e);x&&(p=x),g=v2(e);const k=x2(e);y=k.method,_=k.path}if(o||(o=BCe(t)),v){const x=v.match(b2);if(x){const k=`${x[1]}-${x[2]}-${x[3]} ${x[4]}`;n||(n=k),Q_(n)===Q_(k)&&(v="")}}return{raw:t,timestamp:n,level:o,source:c,requestId:s,statusCode:f,latency:p,ip:g,method:y,path:_,message:v}},qCe=12;function zCe(t){const{parsedLines:e}=t,[n,i]=S.useState([]),[s,a]=S.useState([]),[o,r]=S.useState([]),c=S.useMemo(()=>new Set(n),[n]),d=S.useMemo(()=>new Set(s),[s]),f=S.useMemo(()=>new Set(o),[o]),p=n.length>0||s.length>0||o.length>0,g=S.useMemo(()=>{const N={};return e.forEach(L=>{L.method&&(N[L.method]=(N[L.method]??0)+1)}),N},[e]),y=S.useMemo(()=>{const N={};return e.forEach(L=>{const M=DI(L.statusCode);M&&(N[M]=(N[M]??0)+1)}),N},[e]),_=S.useMemo(()=>{const N=new Map;return e.forEach(L=>{L.path&&N.set(L.path,(N.get(L.path)??0)+1)}),Array.from(N.entries()).sort((L,M)=>M[1]-L[1]||L[0].localeCompare(M[0])).slice(0,qCe).map(([L,M])=>({path:L,count:M}))},[e]);return S.useEffect(()=>{const N=new Set(_.map(L=>L.path));r(L=>{if(L.length===0)return L;const M=L.filter(O=>N.has(O));return M.length===L.length?L:M})},[_]),{methodFilters:n,statusFilters:s,pathFilters:o,methodFilterSet:c,statusFilterSet:d,pathFilterSet:f,hasStructuredFilters:p,methodCounts:g,statusCounts:y,pathOptions:_,toggleMethodFilter:N=>{i(L=>L.includes(N)?L.filter(M=>M!==N):[...L,N])},toggleStatusFilter:N=>{a(L=>L.includes(N)?L.filter(M=>M!==N):[...L,N])},togglePathFilter:N=>{r(L=>L.includes(N)?L.filter(M=>M!==N):[...L,N])},clearStructuredFilters:()=>{i([]),a([]),r([])}}}const KCe=200,VCe=72,HCe=t=>t?t.scrollHeight-t.scrollTop-t.clientHeight<=24:!0;function WCe(t){const{logState:e,setLogState:n,loading:i,isSearching:s,filteredLineCount:a,hasStructuredFilters:o,showRawLogs:r}=t,c=S.useRef(null),d=S.useRef(!1),f=S.useRef(null),p=!s&&e.visibleFrom>0,g=S.useCallback(()=>{const k=c.current;k&&(k.scrollTop=k.scrollHeight)},[]),y=S.useCallback(()=>{d.current=!0},[]),_=S.useCallback(()=>{const k=c.current;k&&(f.current||s||n(C=>C.visibleFrom<=0?C:(f.current={scrollHeight:k.scrollHeight,scrollTop:k.scrollTop},{...C,visibleFrom:Math.max(C.visibleFrom-KCe,0)})))},[s,n]),v=S.useCallback(k=>{const C=c.current;C&&(s||p&&(f.current||C.scrollTop>VCe||_()))},[p,s,_]);S.useLayoutEffect(()=>{const k=c.current,C=f.current;if(!k||!C)return;const N=k.scrollHeight-C.scrollHeight;k.scrollTop=C.scrollTop+N,f.current=null},[e.visibleFrom]);const x=S.useCallback(()=>{const k=c.current;!k||!p||s||f.current||k.scrollHeight>k.clientHeight+1||_()},[p,s,_]);return S.useEffect(()=>{if(i||!c.current)return;const C=window.requestAnimationFrame(()=>{x()});return()=>{window.cancelAnimationFrame(C)}},[a,o,i,e.visibleFrom,r,x]),S.useEffect(()=>{const k=()=>{window.requestAnimationFrame(()=>{x()})};return window.addEventListener("resize",k),()=>{window.removeEventListener("resize",k)}},[x]),S.useEffect(()=>{d.current&&(i||c.current&&(g(),d.current=!1))},[i,e.buffer,e.visibleFrom,g]),{logViewerRef:c,canLoadMore:p,handleLogScroll:v,scrollToBottom:g,requestScrollToBottom:y}}const GCe=60*1e3,$Ce=5,XCe=new Set(["/v1/chat/completions","/v1/messages","/v1/responses"]),QCe=["/v1beta/models"],vw=t=>String(t??"").replace(/^"+|"+$/g,"").split("?")[0].trim(),YCe=t=>{const e=vw(t);return!e||e==="/"?e:e.replace(/\/+$/,"")},II=t=>{const e=YCe(t);return e?XCe.has(e)?!0:QCe.some(n=>e.startsWith(n)):!1},JCe=/\bmodel[=:]\s*"?([a-zA-Z0-9._\-/]+)"?/i,ZCe=t=>t&&t.match(JCe)?.[1]||void 0,eAe=(t,e)=>!t||!e?!1:t===e||t.startsWith(e)||e.startsWith(t),tAe=t=>{if(t instanceof Error)return t.message;if(typeof t=="string")return t;if(typeof t!="object"||t===null||!("message"in t))return"";const e=t.message;return typeof e=="string"?e:""};function nAe(t){const{traceScopeKey:e,connectionStatus:n,config:i,requestLogDownloading:s}=t,{t:a}=nt(),o=ns(Y=>Y.usage),r=ns(Y=>Y.scopeKey),c=ns(Y=>Y.loadUsageStats),[d,f]=S.useState(null),[p,g]=S.useState(new Map),[y,_]=S.useState(!1),[v,x]=S.useState(""),k=S.useRef(0),C=S.useRef(""),N=r===e?o:null,L=S.useMemo(()=>PG(N),[N]),M=S.useMemo(()=>bD(i??{}),[i]),O=S.useCallback(async Y=>{if(C.current!==e&&(C.current=e,k.current=0,g(new Map),x("")),y)return;const X=Date.now(),K=k.current>0&&X-k.current<GCe;_(!0),x("");try{const[,B]=await Promise.all([c({force:Y,staleTimeMs:wr}),K?Promise.resolve(null):At.list().catch(()=>null)]);if(B!==null){const H=Array.isArray(B)?B:B?.files;if(Array.isArray(H)){const z=new Map;H.forEach(Q=>{const W=rs(Q.auth_index??Q.authIndex);W&&z.set(W,{name:Q.name||W,type:(Q.type||Q.provider||"").toString()})}),g(z),k.current=Date.now()}}}catch(B){x(tAe(B)||a("logs.trace_usage_load_error"))}finally{_(!1)}},[c,a,y,e]),T=S.useCallback(async()=>{await O(!1)},[O]),P=S.useCallback(async()=>{await O(!0)},[O]);S.useEffect(()=>{n==="connected"&&(C.current=e,k.current=0,g(new Map),_(!1),x(""))},[n,e]);const E=S.useMemo(()=>{if(!d)return[];const Y=vw(d.path);if(!Y)return[];const X=d.timestamp?Date.parse(d.timestamp):Number.NaN,K=L.filter(W=>eAe(Y,vw(W.__endpointPath)));if(K.length===0)return[];const B=ZCe(d.message),H=B?K.filter(W=>W.__modelName?.toLowerCase()===B.toLowerCase()):[],z=H.length>0;return(z?H:K).map(W=>{const D=!Number.isNaN(X)&&W.__timestampMs>0?Math.abs(X-W.__timestampMs):null;return{detail:W,modelMatched:z,timeDeltaMs:D}}).sort((W,D)=>(D.detail.__timestampMs||0)-(W.detail.__timestampMs||0)).slice(0,$Ce)},[d,L]),R=S.useCallback((Y,X)=>vD(Y,X,M,p),[p,M]),q=S.useCallback(Y=>{II(Y.path)&&(x(""),f(Y),T())},[T]),I=S.useCallback(()=>{s||f(null)},[s]);return{traceLogLine:d,traceLoading:y,traceError:v,traceCandidates:E,resolveTraceSourceInfo:R,loadTraceUsageDetails:T,refreshTraceUsageDetails:P,openTraceModal:q,closeTraceModal:I}}const iAe="LogsPage-module__container___aQ0JL",sAe="LogsPage-module__pageTitle___vZY55",aAe="LogsPage-module__tabBar___bI3hW",oAe="LogsPage-module__tabItem___5tb4J",rAe="LogsPage-module__tabActive___JjbWX",lAe="LogsPage-module__content___hGaGn",cAe="LogsPage-module__logCard___KG4Jd",uAe="LogsPage-module__toolbar___9dY5F",dAe="LogsPage-module__filters___nUahU",hAe="LogsPage-module__searchWrapper___mrEmr",fAe="LogsPage-module__filterPanelHeader___Oi5tO",mAe="LogsPage-module__filterPanelToggle___ADZED",pAe="LogsPage-module__filterPanelButtonContent___sgOCp",gAe="LogsPage-module__filterPanelCount___kAJ5-",_Ae="LogsPage-module__structuredFilters___fW4v7",yAe="LogsPage-module__filterChipGroup___bbPoy",bAe="LogsPage-module__filterChipLabel___jy0D3",vAe="LogsPage-module__filterChipList___hHeOY",xAe="LogsPage-module__filterChip___Efqh7",SAe="LogsPage-module__filterChipActive___8S8ki",wAe="LogsPage-module__filterChipHint___shcVo",kAe="LogsPage-module__searchInput___eoPij",CAe="LogsPage-module__searchIcon___73cvF",AAe="LogsPage-module__searchClear___yTM1y",NAe="LogsPage-module__actionButton___aYJPR",TAe="LogsPage-module__buttonContent___qjHrB",MAe="LogsPage-module__switchLabel___EfB3d",LAe="LogsPage-module__logPanel___2wjiP",OAe="LogsPage-module__errorPanel___0w-se",PAe="LogsPage-module__loadMoreBanner___BUD0t",EAe="LogsPage-module__loadMoreCount___UsdBd",jAe="LogsPage-module__loadMoreStats___e9bVk",RAe="LogsPage-module__logList___lFt6f",DAe="LogsPage-module__rawLog___F5YBd",FAe="LogsPage-module__logRow___rxZS5",IAe="LogsPage-module__rowWarn___Lhg4M",BAe="LogsPage-module__rowError___XQ3Qi",UAe="LogsPage-module__timestamp___TZvLq",qAe="LogsPage-module__rowMain___f--We",zAe="LogsPage-module__badge___tR566",KAe="LogsPage-module__pill___vGA2z",VAe="LogsPage-module__source___nv7Zu",HAe="LogsPage-module__requestIdBadge___yPO1b",WAe="LogsPage-module__statusBadge___hj08j",GAe="LogsPage-module__statusSuccess___3llcn",$Ae="LogsPage-module__statusInfo___B6DaE",XAe="LogsPage-module__statusWarn___1Dwki",QAe="LogsPage-module__statusError___xxTDc",YAe="LogsPage-module__levelInfo___oZMOp",JAe="LogsPage-module__levelWarn___DsCD0",ZAe="LogsPage-module__levelError___8VjWc",eNe="LogsPage-module__levelDebug___l-5yk",tNe="LogsPage-module__levelTrace___XvRLF",nNe="LogsPage-module__methodBadge___Cf9jC",iNe="LogsPage-module__path___frHAs",sNe="LogsPage-module__message___bNHRw",aNe="LogsPage-module__traceButton___TpMAt",oNe="LogsPage-module__tracePanel___qLlvU",rNe="LogsPage-module__traceNotice___brNFz",lNe="LogsPage-module__traceSectionTitle___oZ-a0",cNe="LogsPage-module__traceCandidatesHeader___b8sav",uNe="LogsPage-module__traceInfoGrid___7bY40",dNe="LogsPage-module__traceInfoItem___ydd7g",hNe="LogsPage-module__traceInfoItemWide___pmNic",fNe="LogsPage-module__traceInfoLabel___zidDI",mNe="LogsPage-module__traceInfoValue___3AiSj",pNe="LogsPage-module__traceSourceType___4TLzV",gNe="LogsPage-module__traceCandidates___TbNAE",_Ne="LogsPage-module__traceCandidate___jBw7W",yNe="LogsPage-module__traceCandidateHeader___daeEH",bNe="LogsPage-module__traceModelBadge___iJzwF",vNe="LogsPage-module__traceDelta___gfgPb",xNe="LogsPage-module__traceCandidateGrid___qPwow",Ae={container:iAe,pageTitle:sAe,tabBar:aAe,tabItem:oAe,tabActive:rAe,content:lAe,logCard:cAe,toolbar:uAe,filters:dAe,searchWrapper:hAe,filterPanelHeader:fAe,filterPanelToggle:mAe,filterPanelButtonContent:pAe,filterPanelCount:gAe,structuredFilters:_Ae,filterChipGroup:yAe,filterChipLabel:bAe,filterChipList:vAe,filterChip:xAe,filterChipActive:SAe,filterChipHint:wAe,searchInput:kAe,searchIcon:CAe,searchClear:AAe,actionButton:NAe,buttonContent:TAe,switchLabel:MAe,logPanel:LAe,errorPanel:OAe,loadMoreBanner:PAe,loadMoreCount:EAe,loadMoreStats:jAe,logList:RAe,rawLog:DAe,logRow:FAe,rowWarn:IAe,rowError:BAe,timestamp:UAe,rowMain:qAe,badge:zAe,pill:KAe,source:VAe,requestIdBadge:HAe,statusBadge:WAe,statusSuccess:GAe,statusInfo:$Ae,statusWarn:XAe,statusError:QAe,levelInfo:YAe,levelWarn:JAe,levelError:ZAe,levelDebug:eNe,levelTrace:tNe,methodBadge:nNe,path:iNe,message:sNe,traceButton:aNe,tracePanel:oNe,traceNotice:rNe,traceSectionTitle:lNe,traceCandidatesHeader:cNe,traceInfoGrid:uNe,traceInfoItem:dNe,traceInfoItemWide:hNe,traceInfoLabel:fNe,traceInfoValue:mNe,traceSourceType:pNe,traceCandidates:gNe,traceCandidate:_Ne,traceCandidateHeader:yNe,traceModelBadge:bNe,traceDelta:vNe,traceCandidateGrid:xNe},SNe=100,n3=1e4,wNe=650,i3=10,Sf=t=>{if(t instanceof Error)return t.message;if(typeof t=="string")return t;if(typeof t!="object"||t===null||!("message"in t))return"";const e=t.message;return typeof e=="string"?e:""};function kNe(){const{t}=nt(),{showNotification:e,showConfirmation:n}=mn(),i=en(ue=>ue.connectionStatus),s=en(ue=>ue.apiBase),a=en(ue=>ue.managementKey),o=`${s}::${a}`,r=It(ue=>ue.config),c=r?.requestLog??!1,[d,f]=S.useState("logs"),[p,g]=S.useState({buffer:[],visibleFrom:0}),[y,_]=S.useState(!0),[v,x]=S.useState(""),[k,C]=S.useState(!1),[N,L]=S.useState(""),M=S.useDeferredValue(N),[O,T]=S.useState(!0),[P,E]=S.useState(!1),[R,q]=TCe("logsPage.structuredFiltersExpanded",!0),[I,Y]=S.useState([]),[X,K]=S.useState(!1),[B,H]=S.useState(""),[z,Q]=S.useState(null),[W,D]=S.useState(!1),U=nAe({traceScopeKey:o,connectionStatus:i,config:r,requestLogDownloading:W}),$=S.useRef(null),te=S.useRef(null),ie=S.useRef(!1),F=S.useRef(!1),ee=S.useRef(0),J=i!=="connected",re=async(ue=!1)=>{if(i!=="connected"){_(!1);return}if(ie.current){ue||(F.current=!0);return}ie.current=!0,ue||_(!0),x("");try{const qe=$.current,Ut=!ue||HCe(qe?.logViewerRef.current??null);Ut&&qe?.requestScrollToBottom();const Ti=ue&&ee.current>0?{after:ee.current}:{},ei=await Jh.fetchLogs(Ti);ei["latest-timestamp"]&&(ee.current=ei["latest-timestamp"]);const Rn=Array.isArray(ei.lines)?ei.lines:[];if(ue&&Rn.length>0)g(Xn=>{const un=Xn.buffer.length-Xn.visibleFrom,Di=[...Xn.buffer,...Rn],ds=Math.max(Di.length-n3,0),ws=ds>0?Di.slice(ds):Di;let Le=Math.max(Xn.visibleFrom-ds,0);return Ut&&(Le=Math.max(ws.length-un,0)),{buffer:ws,visibleFrom:Le}});else if(!ue){const Xn=Rn.slice(-n3),un=Math.max(Xn.length-SNe,0);g({buffer:Xn,visibleFrom:un})}}catch(qe){console.error("Failed to load logs:",qe),ue||x(Sf(qe)||t("logs.load_error"))}finally{ue||_(!1),ie.current=!1,F.current&&(F.current=!1,re(!1))}};rp(()=>re(!1));const fe=async()=>{n({title:t("logs.clear_confirm_title",{defaultValue:"Clear Logs"}),message:t("logs.clear_confirm"),variant:"danger",confirmText:t("common.confirm"),onConfirm:async()=>{try{await Jh.clearLogs(),g({buffer:[],visibleFrom:0}),ee.current=0,e(t("logs.clear_success"),"success")}catch(ue){const qe=Sf(ue);e(`${t("notification.delete_failed")}${qe?`: ${qe}`:""}`,"error")}}})},me=()=>{const ue=p.buffer.join(`
`);wl({filename:"logs.txt",blob:new Blob([ue],{type:"text/plain"})}),e(t("logs.download_success"),"success")},de=async()=>{if(i!=="connected"){K(!1);return}K(!0),H("");try{const ue=await Jh.fetchErrorLogs();Y(Array.isArray(ue.files)?ue.files:[])}catch(ue){console.error("Failed to load error logs:",ue),Y([]);const qe=Sf(ue);H(qe?`${t("logs.error_logs_load_error")}: ${qe}`:t("logs.error_logs_load_error"))}finally{K(!1)}},ne=async ue=>{try{const qe=await Jh.downloadErrorLog(ue);wl({filename:ue,blob:new Blob([qe.data],{type:"text/plain"})}),e(t("logs.error_log_download_success"),"success")}catch(qe){const Ut=Sf(qe);e(`${t("notification.download_failed")}${Ut?`: ${Ut}`:""}`,"error")}};S.useEffect(()=>{i==="connected"&&(ee.current=0,re(!1))},[i]),S.useEffect(()=>{d==="errors"&&i==="connected"&&de()},[d,i,c]),S.useEffect(()=>{if(!k||i!=="connected")return;const ue=window.setInterval(()=>{re(!0)},8e3);return()=>window.clearInterval(ue)},[k,i]);const Be=S.useMemo(()=>p.buffer.slice(p.visibleFrom),[p.buffer,p.visibleFrom]),Ke=M.trim(),Te=Ke.length>0,Qe=Te?p.buffer:Be,at=S.useMemo(()=>{let ue=Qe;if(O&&(ue=ue.filter(qe=>!qe.includes(R2))),Ke){const qe=Ke.toLowerCase();ue=ue.filter(Ut=>Ut.toLowerCase().includes(qe))}return ue.map(qe=>UCe(qe))},[Qe,O,Ke]),Ce=zCe({parsedLines:at}),ft="logs-structured-filters",mt=Ce.methodFilters.length+Ce.statusFilters.length+Ce.pathFilters.length,{filteredParsedLines:kt,filteredLines:Pt,removedCount:wt}=S.useMemo(()=>{const ue=at.filter(qe=>{if(Ce.methodFilterSet.size>0&&(!qe.method||!Ce.methodFilterSet.has(qe.method)))return!1;const Ut=DI(qe.statusCode);return!(Ce.statusFilterSet.size>0&&(!Ut||!Ce.statusFilterSet.has(Ut))||Ce.pathFilterSet.size>0&&(!qe.path||!Ce.pathFilterSet.has(qe.path)))});return{filteredParsedLines:ue,filteredLines:ue.map(qe=>qe.raw),removedCount:Math.max(Qe.length-ue.length,0)}},[Qe,Ce.methodFilterSet,Ce.pathFilterSet,Ce.statusFilterSet,at]),Tt=S.useMemo(()=>P?[]:kt,[kt,P]),on=S.useMemo(()=>Pt.join(`
`),[Pt]),ce=WCe({logState:p,setLogState:g,loading:y,isSearching:Te,filteredLineCount:Pt.length,hasStructuredFilters:Ce.hasStructuredFilters,showRawLogs:P});$.current=ce;const ye=async ue=>{await Ky(ue)?e(t("logs.copy_success",{defaultValue:"Copied to clipboard"}),"success"):e(t("logs.copy_failed",{defaultValue:"Copy failed"}),"error")},Ue=()=>{te.current?.timer&&(window.clearTimeout(te.current.timer),te.current.timer=null)},Me=(ue,qe)=>{c&&qe&&(z||(Ue(),te.current={timer:window.setTimeout(()=>{Q(qe),te.current&&(te.current.fired=!0,te.current.timer=null)},wNe),startX:ue.clientX,startY:ue.clientY,fired:!1}))},Ye=()=>{Ue(),te.current=null},_t=ue=>{const qe=te.current;if(!qe||qe.timer===null||qe.fired)return;const Ut=Math.abs(ue.clientX-qe.startX),Ti=Math.abs(ue.clientY-qe.startY);(Ut>i3||Ti>i3)&&Ye()},pt=()=>{W||Q(null)},ot=async ue=>{D(!0);try{const qe=await Jh.downloadRequestLogById(ue);wl({filename:`request-${ue}.log`,blob:new Blob([qe.data],{type:"text/plain"})}),e(t("logs.request_log_download_success"),"success"),Q(null)}catch(qe){const Ut=Sf(qe);e(`${t("notification.download_failed")}${Ut?`: ${Ut}`:""}`,"error")}finally{D(!1)}};return S.useEffect(()=>()=>{te.current?.timer&&(window.clearTimeout(te.current.timer),te.current.timer=null)},[]),h.jsxs("div",{className:Ae.container,children:[h.jsx("h1",{className:Ae.pageTitle,children:t("logs.title")}),h.jsxs("div",{className:Ae.tabBar,children:[h.jsx("button",{type:"button",className:`${Ae.tabItem} ${d==="logs"?Ae.tabActive:""}`,onClick:()=>f("logs"),children:t("logs.log_content")}),h.jsx("button",{type:"button",className:`${Ae.tabItem} ${d==="errors"?Ae.tabActive:""}`,onClick:()=>f("errors"),children:t("logs.error_logs_modal_title")})]}),h.jsxs("div",{className:Ae.content,children:[d==="logs"&&h.jsxs(jt,{className:Ae.logCard,children:[v&&h.jsx("div",{className:"error-box",children:v}),h.jsxs("div",{className:Ae.filters,children:[h.jsx("div",{className:Ae.searchWrapper,children:h.jsx(lt,{value:N,onChange:ue=>L(ue.target.value),placeholder:t("logs.search_placeholder"),className:Ae.searchInput,rightElement:N?h.jsx("button",{type:"button",className:Ae.searchClear,onClick:()=>L(""),title:"Clear","aria-label":"Clear",children:h.jsx(Gc,{size:16})}):h.jsx(e4,{size:16,className:Ae.searchIcon})})}),h.jsx("div",{className:Ae.filterPanelHeader,children:h.jsx(he,{type:"button",variant:"secondary",size:"sm",className:Ae.filterPanelToggle,onClick:()=>q(ue=>!ue),"aria-expanded":R,"aria-controls":ft,title:t(R?"logs.filter_panel_collapse":"logs.filter_panel_expand"),children:h.jsxs("span",{className:Ae.filterPanelButtonContent,children:[h.jsx(Cz,{size:16}),h.jsx("span",{children:t("logs.filter_panel_title")}),mt>0&&h.jsx("span",{className:Ae.filterPanelCount,children:t("logs.filter_panel_active_count",{count:mt})}),R?h.jsx(jw,{size:16}):h.jsx(Py,{size:16})]})})}),R&&h.jsxs("div",{id:ft,className:Ae.structuredFilters,children:[h.jsxs("div",{className:Ae.filterChipGroup,children:[h.jsx("span",{className:Ae.filterChipLabel,children:t("logs.filter_method")}),h.jsx("div",{className:Ae.filterChipList,children:_C.map(ue=>{const qe=Ce.methodFilters.includes(ue),Ut=Ce.methodCounts[ue]??0;return h.jsxs("button",{type:"button",className:`${Ae.filterChip} ${qe?Ae.filterChipActive:""}`,onClick:()=>Ce.toggleMethodFilter(ue),disabled:Ut===0&&!qe,"aria-pressed":qe,children:[ue," (",Ut,")"]},ue)})})]}),h.jsxs("div",{className:Ae.filterChipGroup,children:[h.jsx("span",{className:Ae.filterChipLabel,children:t("logs.filter_status")}),h.jsx("div",{className:Ae.filterChipList,children:MCe.map(ue=>{const qe=Ce.statusFilters.includes(ue),Ut=Ce.statusCounts[ue]??0;return h.jsxs("button",{type:"button",className:`${Ae.filterChip} ${qe?Ae.filterChipActive:""}`,onClick:()=>Ce.toggleStatusFilter(ue),disabled:Ut===0&&!qe,"aria-pressed":qe,children:[t(`logs.filter_status_${ue}`)," (",Ut,")"]},ue)})})]}),h.jsxs("div",{className:Ae.filterChipGroup,children:[h.jsx("span",{className:Ae.filterChipLabel,children:t("logs.filter_path")}),h.jsx("div",{className:Ae.filterChipList,children:Ce.pathOptions.length===0?h.jsx("span",{className:Ae.filterChipHint,children:t("logs.filter_path_empty")}):Ce.pathOptions.map(({path:ue,count:qe})=>{const Ut=Ce.pathFilters.includes(ue);return h.jsxs("button",{type:"button",className:`${Ae.filterChip} ${Ut?Ae.filterChipActive:""}`,onClick:()=>Ce.togglePathFilter(ue),"aria-pressed":Ut,title:ue,children:[ue," (",qe,")"]},ue)})})]}),h.jsx(he,{variant:"ghost",size:"sm",onClick:Ce.clearStructuredFilters,disabled:!Ce.hasStructuredFilters,children:t("logs.clear_filters")})]}),h.jsx(xi,{checked:O,onChange:T,label:h.jsxs("span",{className:Ae.switchLabel,children:[h.jsx(t4,{size:16}),t("logs.hide_management_logs",{prefix:R2})]})}),h.jsx(xi,{checked:P,onChange:E,label:h.jsxs("span",{className:Ae.switchLabel,title:t("logs.show_raw_logs_hint",{defaultValue:"Show original log text for easier multi-line copy"}),children:[h.jsx(O0,{size:16}),t("logs.show_raw_logs",{defaultValue:"Show raw logs"})]})}),h.jsxs("div",{className:Ae.toolbar,children:[h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>re(!1),disabled:J||y,className:Ae.actionButton,children:h.jsxs("span",{className:Ae.buttonContent,children:[h.jsx(Ew,{size:16}),t("logs.refresh_button")]})}),h.jsx(xi,{checked:k,onChange:ue=>C(ue),disabled:J,label:h.jsxs("span",{className:Ae.switchLabel,children:[h.jsx(L0,{size:16}),t("logs.auto_refresh")]})}),h.jsx(he,{variant:"secondary",size:"sm",onClick:me,disabled:p.buffer.length===0,className:Ae.actionButton,children:h.jsxs("span",{className:Ae.buttonContent,children:[h.jsx(Z3,{size:16}),t("logs.download_button")]})}),h.jsx(he,{variant:"danger",size:"sm",onClick:fe,disabled:J,className:Ae.actionButton,children:h.jsxs("span",{className:Ae.buttonContent,children:[h.jsx(Oy,{size:16}),t("logs.clear_button")]})})]})]}),y?h.jsx("div",{className:"hint",children:t("logs.loading")}):p.buffer.length>0&&Pt.length>0?h.jsxs("div",{ref:ce.logViewerRef,className:Ae.logPanel,onScroll:ce.handleLogScroll,children:[ce.canLoadMore&&h.jsxs("div",{className:Ae.loadMoreBanner,children:[h.jsx("span",{children:t("logs.load_more_hint")}),h.jsxs("div",{className:Ae.loadMoreStats,children:[h.jsx("span",{children:t("logs.loaded_lines",{count:Pt.length})}),wt>0&&h.jsx("span",{className:Ae.loadMoreCount,children:t("logs.filtered_lines",{count:wt})}),h.jsx("span",{className:Ae.loadMoreCount,children:t("logs.hidden_lines",{count:p.visibleFrom})})]})]}),P?h.jsx("pre",{className:Ae.rawLog,spellCheck:!1,children:on}):h.jsx("div",{className:Ae.logList,children:Tt.map((ue,qe)=>{const Ut=II(ue.path),Ti=[Ae.logRow];return ue.level==="warn"&&Ti.push(Ae.rowWarn),(ue.level==="error"||ue.level==="fatal")&&Ti.push(Ae.rowError),h.jsxs("div",{className:Ti.join(" "),onDoubleClick:()=>{ye(ue.raw)},onPointerDown:ei=>Me(ei,ue.requestId),onPointerUp:Ye,onPointerLeave:Ye,onPointerCancel:Ye,onPointerMove:_t,title:t("logs.double_click_copy_hint",{defaultValue:"Double-click to copy"}),children:[h.jsx("div",{className:Ae.timestamp,children:ue.timestamp||""}),h.jsxs("div",{className:Ae.rowMain,children:[ue.level&&h.jsx("span",{className:[Ae.badge,ue.level==="info"?Ae.levelInfo:"",ue.level==="warn"?Ae.levelWarn:"",ue.level==="error"||ue.level==="fatal"?Ae.levelError:"",ue.level==="debug"?Ae.levelDebug:"",ue.level==="trace"?Ae.levelTrace:""].filter(Boolean).join(" "),children:ue.level.toUpperCase()}),ue.source&&h.jsx("span",{className:Ae.source,title:ue.source,children:ue.source}),ue.requestId&&h.jsx("span",{className:[Ae.badge,Ae.requestIdBadge].join(" "),title:ue.requestId,children:ue.requestId}),typeof ue.statusCode=="number"&&h.jsx("span",{className:[Ae.badge,Ae.statusBadge,ue.statusCode>=200&&ue.statusCode<300?Ae.statusSuccess:ue.statusCode>=300&&ue.statusCode<400?Ae.statusInfo:ue.statusCode>=400&&ue.statusCode<500?Ae.statusWarn:Ae.statusError].join(" "),children:ue.statusCode}),ue.latency&&h.jsx("span",{className:Ae.pill,children:ue.latency}),ue.ip&&h.jsx("span",{className:Ae.pill,children:ue.ip}),ue.method&&h.jsx("span",{className:[Ae.badge,Ae.methodBadge].join(" "),children:ue.method}),ue.path&&h.jsx("span",{className:Ae.path,title:ue.path,children:ue.path}),ue.message&&h.jsx("span",{className:Ae.message,children:ue.message}),Ut&&h.jsx("button",{type:"button",className:Ae.traceButton,onClick:ei=>{ei.stopPropagation(),Ye(),U.openTraceModal(ue)},title:t("logs.trace_button"),children:t("logs.trace_button")})]})]},`${p.visibleFrom+qe}-${ue.raw}`)})})]}):p.buffer.length>0?h.jsx(os,{title:t("logs.search_empty_title"),description:t("logs.search_empty_desc")}):h.jsx(os,{title:t("logs.empty_title"),description:t("logs.empty_desc")})]}),d==="errors"&&h.jsx(jt,{extra:h.jsx(he,{variant:"secondary",size:"sm",onClick:de,loading:X,disabled:J,children:t("common.refresh")}),children:h.jsxs("div",{className:"stack",children:[h.jsx("div",{className:"hint",children:t("logs.error_logs_description")}),c&&h.jsx("div",{children:h.jsx("div",{className:"status-badge warning",children:t("logs.error_logs_request_log_enabled")})}),B&&h.jsx("div",{className:"error-box",children:B}),h.jsx("div",{className:Ae.errorPanel,children:X?h.jsx("div",{className:"hint",children:t("common.loading")}):I.length===0?h.jsx("div",{className:"hint",children:t("logs.error_logs_empty")}):h.jsx("div",{className:"item-list",children:I.map(ue=>h.jsxs("div",{className:"item-row",children:[h.jsxs("div",{className:"item-meta",children:[h.jsx("div",{className:"item-title",children:ue.name}),h.jsxs("div",{className:"item-subtitle",children:[ue.size?`${(ue.size/1024).toFixed(1)} KB`:""," ",ue.modified?CG(ue.modified):""]})]}),h.jsx("div",{className:"item-actions",children:h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>ne(ue.name),disabled:J,children:t("logs.error_logs_download")})})]},ue.name))})})]})})]}),h.jsx(Ss,{open:!!U.traceLogLine,onClose:U.closeTraceModal,title:t("logs.trace_title"),footer:h.jsxs(h.Fragment,{children:[U.traceLogLine?.requestId&&h.jsx(he,{variant:"secondary",onClick:()=>{U.traceLogLine?.requestId&&ot(U.traceLogLine.requestId)},loading:W,children:t("logs.trace_download_request_log")}),h.jsx(he,{variant:"secondary",onClick:U.closeTraceModal,disabled:W,children:t("common.close")})]}),children:U.traceLogLine&&h.jsxs("div",{className:Ae.tracePanel,children:[h.jsx("div",{className:Ae.traceNotice,children:t("logs.trace_notice")}),h.jsx("h3",{className:Ae.traceSectionTitle,children:t("logs.trace_log_info")}),h.jsxs("div",{className:Ae.traceInfoGrid,children:[h.jsxs("div",{className:Ae.traceInfoItem,children:[h.jsx("span",{className:Ae.traceInfoLabel,children:t("logs.trace_request_id")}),h.jsx("span",{className:Ae.traceInfoValue,children:U.traceLogLine.requestId||"-"})]}),h.jsxs("div",{className:Ae.traceInfoItem,children:[h.jsx("span",{className:Ae.traceInfoLabel,children:t("logs.trace_method")}),h.jsx("span",{className:Ae.traceInfoValue,children:U.traceLogLine.method||"-"})]}),h.jsxs("div",{className:Ae.traceInfoItem,children:[h.jsx("span",{className:Ae.traceInfoLabel,children:t("logs.trace_path")}),h.jsx("span",{className:Ae.traceInfoValue,children:U.traceLogLine.path||"-"})]}),h.jsxs("div",{className:Ae.traceInfoItem,children:[h.jsx("span",{className:Ae.traceInfoLabel,children:t("logs.trace_status_code")}),h.jsx("span",{className:Ae.traceInfoValue,children:typeof U.traceLogLine.statusCode=="number"?U.traceLogLine.statusCode:"-"})]}),h.jsxs("div",{className:Ae.traceInfoItem,children:[h.jsx("span",{className:Ae.traceInfoLabel,children:t("logs.trace_latency")}),h.jsx("span",{className:Ae.traceInfoValue,children:U.traceLogLine.latency||"-"})]}),h.jsxs("div",{className:Ae.traceInfoItem,children:[h.jsx("span",{className:Ae.traceInfoLabel,children:t("logs.trace_ip")}),h.jsx("span",{className:Ae.traceInfoValue,children:U.traceLogLine.ip||"-"})]}),h.jsxs("div",{className:Ae.traceInfoItem,children:[h.jsx("span",{className:Ae.traceInfoLabel,children:t("logs.trace_timestamp")}),h.jsx("span",{className:Ae.traceInfoValue,children:U.traceLogLine.timestamp||"-"})]}),h.jsxs("div",{className:`${Ae.traceInfoItem} ${Ae.traceInfoItemWide}`,children:[h.jsx("span",{className:Ae.traceInfoLabel,children:t("logs.trace_message")}),h.jsx("span",{className:Ae.traceInfoValue,children:U.traceLogLine.message||"-"})]})]}),h.jsxs("div",{className:Ae.traceCandidatesHeader,children:[h.jsx("h3",{className:Ae.traceSectionTitle,children:t("logs.trace_candidates_title")}),h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>{U.refreshTraceUsageDetails().catch(()=>{})},loading:U.traceLoading,disabled:W,children:t("common.refresh")})]}),U.traceLoading?h.jsx("div",{className:"hint",children:t("logs.trace_loading")}):U.traceError?h.jsx("div",{className:"error-box",children:U.traceError}):U.traceCandidates.length===0?h.jsx("div",{className:"hint",children:t("logs.trace_no_match")}):h.jsx("div",{className:Ae.traceCandidates,children:U.traceCandidates.map(ue=>{const qe=U.resolveTraceSourceInfo(String(ue.detail.source??""),ue.detail.auth_index);return h.jsxs("div",{className:Ae.traceCandidate,children:[h.jsxs("div",{className:Ae.traceCandidateHeader,children:[ue.modelMatched&&h.jsx("span",{className:Ae.traceModelBadge,children:t("logs.trace_model_matched")}),ue.timeDeltaMs!==null&&h.jsx("span",{className:Ae.traceDelta,children:t("logs.trace_delta_seconds",{seconds:(ue.timeDeltaMs/1e3).toFixed(2)})})]}),h.jsxs("div",{className:Ae.traceCandidateGrid,children:[h.jsxs("div",{className:Ae.traceInfoItem,children:[h.jsx("span",{className:Ae.traceInfoLabel,children:t("logs.trace_endpoint")}),h.jsx("span",{className:Ae.traceInfoValue,children:ue.detail.__endpoint})]}),h.jsxs("div",{className:Ae.traceInfoItem,children:[h.jsx("span",{className:Ae.traceInfoLabel,children:t("logs.trace_model")}),h.jsx("span",{className:Ae.traceInfoValue,children:ue.detail.__modelName||"-"})]}),h.jsxs("div",{className:Ae.traceInfoItem,children:[h.jsx("span",{className:Ae.traceInfoLabel,children:t("logs.trace_source")}),h.jsxs("span",{className:Ae.traceInfoValue,title:String(ue.detail.source||"-"),children:[h.jsx("span",{children:qe.displayName}),qe.type&&h.jsx("span",{className:Ae.traceSourceType,children:qe.type})]})]}),h.jsxs("div",{className:Ae.traceInfoItem,children:[h.jsx("span",{className:Ae.traceInfoLabel,children:t("logs.trace_auth_index")}),h.jsx("span",{className:Ae.traceInfoValue,children:ue.detail.auth_index??"-"})]}),h.jsxs("div",{className:Ae.traceInfoItem,children:[h.jsx("span",{className:Ae.traceInfoLabel,children:t("logs.trace_timestamp")}),h.jsx("span",{className:Ae.traceInfoValue,children:ue.detail.timestamp||"-"})]}),h.jsxs("div",{className:Ae.traceInfoItem,children:[h.jsx("span",{className:Ae.traceInfoLabel,children:t("logs.trace_result")}),h.jsx("span",{className:Ae.traceInfoValue,children:ue.detail.failed?t("stats.failure"):t("stats.success")})]})]})]},`${ue.detail.__endpoint}-${ue.detail.__modelName}-${ue.detail.timestamp}-${ue.detail.source}`)})})]})}),h.jsx(Ss,{open:!!z,onClose:pt,title:t("logs.request_log_download_title"),footer:h.jsxs(h.Fragment,{children:[h.jsx(he,{variant:"secondary",onClick:pt,disabled:W,children:t("common.cancel")}),h.jsx(he,{onClick:()=>{z&&ot(z)},loading:W,disabled:!z,children:t("common.confirm")})]}),children:z?t("logs.request_log_download_confirm",{id:z}):null})]})}const CNe="data:image/svg+xml,%3csvg%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eZhipu%3c/title%3e%3cpath%20d='M11.991%2023.503a.24.24%200%2000-.244.248.24.24%200%2000.244.249.24.24%200%2000.245-.249.24.24%200%2000-.22-.247l-.025-.001zM9.671%205.365a1.697%201.697%200%20011.099%202.132l-.071.172-.016.04-.018.054c-.07.16-.104.32-.104.498-.035.71.47%201.279%201.186%201.314h.366c1.309.053%202.338%201.173%202.286%202.523-.052%201.332-1.152%202.38-2.478%202.327h-.174c-.715.018-1.274.64-1.239%201.368%200%20.124.018.23.053.337.209.373.54.658.96.8.75.23%201.517-.125%201.9-.782l.018-.035c.402-.64%201.17-.96%201.92-.711.854.284%201.378%201.226%201.099%202.167a1.661%201.661%200%2001-2.077%201.102%201.711%201.711%200%2001-.907-.711l-.017-.035c-.2-.323-.463-.58-.851-.711l-.056-.018a1.646%201.646%200%2000-1.954.746%201.66%201.66%200%2001-1.065.764%201.677%201.677%200%2001-1.989-1.279c-.209-.906.332-1.83%201.257-2.043a1.51%201.51%200%2001.296-.035h.018c.68-.071%201.151-.622%201.116-1.333a1.307%201.307%200%2000-.227-.693%202.515%202.515%200%2001-.366-1.403%202.39%202.39%200%2001.366-1.208c.14-.195.21-.444.227-.693.018-.71-.506-1.261-1.186-1.332l-.07-.018a1.43%201.43%200%2001-.299-.07l-.05-.019a1.7%201.7%200%2001-1.047-2.114%201.68%201.68%200%20012.094-1.101zm-5.575%2010.11c.26-.264.639-.367.994-.27.355.096.633.379.728.74.095.362-.007.748-.267%201.013-.402.41-1.053.41-1.455%200a1.062%201.062%200%20010-1.482zm14.845-.294c.359-.09.738.024.992.297.254.274.344.665.237%201.025-.107.36-.396.634-.756.718-.551.128-1.1-.22-1.23-.781a1.05%201.05%200%2001.757-1.26zm-.064-4.39c.314.32.49.753.49%201.206%200%20.452-.176.886-.49%201.206-.315.32-.74.5-1.185.5-.444%200-.87-.18-1.184-.5a1.727%201.727%200%20010-2.412%201.654%201.654%200%20012.369%200zm-11.243.163c.364.484.447%201.128.218%201.691a1.665%201.665%200%2001-2.188.923c-.855-.36-1.26-1.358-.907-2.228a1.68%201.68%200%20011.33-1.038c.593-.08%201.183.169%201.547.652zm11.545-4.221c.368%200%20.708.2.892.524.184.324.184.724%200%201.048a1.026%201.026%200%2001-.892.524c-.568%200-1.03-.47-1.03-1.048%200-.579.462-1.048%201.03-1.048zm-14.358%200c.368%200%20.707.2.891.524.184.324.184.724%200%201.048a1.026%201.026%200%2001-.891.524c-.569%200-1.03-.47-1.03-1.048%200-.579.461-1.048%201.03-1.048zm10.031-1.475c.925%200%201.675.764%201.675%201.706s-.75%201.705-1.675%201.705-1.674-.763-1.674-1.705c0-.942.75-1.706%201.674-1.706zm-2.626-.684c.362-.082.653-.356.761-.718a1.062%201.062%200%2000-.238-1.028%201.017%201.017%200%2000-.996-.294c-.547.14-.881.7-.752%201.257.13.558.675.907%201.225.783zm0%2016.876c.359-.087.644-.36.75-.72a1.062%201.062%200%2000-.237-1.019%201.018%201.018%200%2000-.985-.301%201.037%201.037%200%2000-.762.717c-.108.361-.017.754.239%201.028.245.263.606.377.953.305l.043-.01zM17.19%203.5a.631.631%200%2000.628-.64c0-.355-.279-.64-.628-.64a.631.631%200%2000-.628.64c0%20.355.28.64.628.64zm-10.38%200a.631.631%200%2000.628-.64c0-.355-.28-.64-.628-.64a.631.631%200%2000-.628.64c0%20.355.279.64.628.64zm-5.182%207.852a.631.631%200%2000-.628.64c0%20.354.28.639.628.639a.63.63%200%2000.627-.606l.001-.034a.62.62%200%2000-.628-.64zm5.182%209.13a.631.631%200%2000-.628.64c0%20.355.279.64.628.64a.631.631%200%2000.628-.64c0-.355-.28-.64-.628-.64zm10.38.018a.631.631%200%2000-.628.64c0%20.355.28.64.628.64a.631.631%200%2000.628-.64c0-.355-.279-.64-.628-.64zm5.182-9.148a.631.631%200%2000-.628.64c0%20.354.279.639.628.639a.631.631%200%2000.628-.64c0-.355-.28-.64-.628-.64zm-.384-4.992a.24.24%200%2000.244-.249.24.24%200%2000-.244-.249.24.24%200%2000-.244.249c0%20.142.122.249.244.249zM11.991.497a.24.24%200%2000.245-.248A.24.24%200%200011.99%200a.24.24%200%2000-.244.249c0%20.133.108.236.223.247l.021.001zM2.011%206.36a.24.24%200%2000.245-.249.24.24%200%2000-.244-.249.24.24%200%2000-.244.249.24.24%200%2000.244.249zm0%2011.263a.24.24%200%2000-.243.248.24.24%200%2000.244.249.24.24%200%2000.244-.249.252.252%200%2000-.244-.248zm19.995-.018a.24.24%200%2000-.245.248.24.24%200%2000.245.25.24.24%200%2000.244-.25.252.252%200%2000-.244-.248z'%20fill='%233859FF'%20fill-rule='nonzero'%3e%3c/path%3e%3c/svg%3e",ANe="data:image/svg+xml,%3csvg%20fill='currentColor'%20fill-rule='evenodd'%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eGrok%3c/title%3e%3cpath%20d='M9.27%2015.29l7.978-5.897c.391-.29.95-.177%201.137.272.98%202.369.542%205.215-1.41%207.169-1.951%201.954-4.667%202.382-7.149%201.406l-2.711%201.257c3.889%202.661%208.611%202.003%2011.562-.953%202.341-2.344%203.066-5.539%202.388-8.42l.006.007c-.983-4.232.242-5.924%202.75-9.383.06-.082.12-.164.179-.248l-3.301%203.305v-.01L9.267%2015.292M7.623%2016.723c-2.792-2.67-2.31-6.801.071-9.184%201.761-1.763%204.647-2.483%207.166-1.425l2.705-1.25a7.808%207.808%200%2000-1.829-1A8.975%208.975%200%20005.984%205.83c-2.533%202.536-3.33%206.436-1.962%209.764%201.022%202.487-.653%204.246-2.34%206.022-.599.63-1.199%201.259-1.682%201.925l7.62-6.815'%3e%3c/path%3e%3c/svg%3e",NNe="data:image/svg+xml,%3csvg%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eDeepSeek%3c/title%3e%3cpath%20d='M23.748%204.482c-.254-.124-.364.113-.512.234-.051.039-.094.09-.137.136-.372.397-.806.657-1.373.626-.829-.046-1.537.214-2.163.848-.133-.782-.575-1.248-1.247-1.548-.352-.156-.708-.311-.955-.65-.172-.241-.219-.51-.305-.774-.055-.16-.11-.323-.293-.35-.2-.031-.278.136-.356.276-.313.572-.434%201.202-.422%201.84.027%201.436.633%202.58%201.838%203.393.137.093.172.187.129.323-.082.28-.18.552-.266.833-.055.179-.137.217-.329.14a5.526%205.526%200%2001-1.736-1.18c-.857-.828-1.631-1.742-2.597-2.458a11.365%2011.365%200%2000-.689-.471c-.985-.957.13-1.743.388-1.836.27-.098.093-.432-.779-.428-.872.004-1.67.295-2.687.684a3.055%203.055%200%2001-.465.137%209.597%209.597%200%2000-2.883-.102c-1.885.21-3.39%201.102-4.497%202.623C.082%208.606-.231%2010.684.152%2012.85c.403%202.284%201.569%204.175%203.36%205.653%201.858%201.533%203.997%202.284%206.438%202.14%201.482-.085%203.133-.284%204.994-1.86.47.234.962.327%201.78.397.63.059%201.236-.03%201.705-.128.735-.156.684-.837.419-.961-2.155-1.004-1.682-.595-2.113-.926%201.096-1.296%202.746-2.642%203.392-7.003.05-.347.007-.565%200-.845-.004-.17.035-.237.23-.256a4.173%204.173%200%20001.545-.475c1.396-.763%201.96-2.015%202.093-3.517.02-.23-.004-.467-.247-.588zM11.581%2018c-2.089-1.642-3.102-2.183-3.52-2.16-.392.024-.321.471-.235.763.09.288.207.486.371.739.114.167.192.416-.113.603-.673.416-1.842-.14-1.897-.167-1.361-.802-2.5-1.86-3.301-3.307-.774-1.393-1.224-2.887-1.298-4.482-.02-.386.093-.522.477-.592a4.696%204.696%200%20011.529-.039c2.132.312%203.946%201.265%205.468%202.774.868.86%201.525%201.887%202.202%202.891.72%201.066%201.494%202.082%202.48%202.914.348.292.625.514.891.677-.802.09-2.14.11-3.054-.614zm1-6.44a.306.306%200%2001.415-.287.302.302%200%2001.2.288.306.306%200%2001-.31.307.303.303%200%2001-.304-.308zm3.11%201.596c-.2.081-.399.151-.59.16a1.245%201.245%200%2001-.798-.254c-.274-.23-.47-.358-.552-.758a1.73%201.73%200%2001.016-.588c.07-.327-.008-.537-.239-.727-.187-.156-.426-.199-.688-.199a.559.559%200%2001-.254-.078c-.11-.054-.2-.19-.114-.358.028-.054.16-.186.192-.21.356-.202.767-.136%201.146.016.352.144.618.408%201.001.782.391.451.462.576.685.914.176.265.336.537.445.848.067.195-.019.354-.25.452z'%20fill='%234D6BFE'%3e%3c/path%3e%3c/svg%3e",TNe="data:image/svg+xml,%3csvg%20height='1em'%20style='flex:none;line-height:1'%20viewBox='0%200%2024%2024'%20width='1em'%20xmlns='http://www.w3.org/2000/svg'%3e%3ctitle%3eMinimax%3c/title%3e%3cdefs%3e%3clinearGradient%20id='lobe-icons-minimax-fill'%20x1='0%25'%20x2='100.182%25'%20y1='50.057%25'%20y2='50.057%25'%3e%3cstop%20offset='0%25'%20stop-color='%23E2167E'%3e%3c/stop%3e%3cstop%20offset='100%25'%20stop-color='%23FE603C'%3e%3c/stop%3e%3c/linearGradient%3e%3c/defs%3e%3cpath%20d='M16.278%202c1.156%200%202.093.927%202.093%202.07v12.501a.74.74%200%2000.744.709.74.74%200%2000.743-.709V9.099a2.06%202.06%200%20012.071-2.049A2.06%202.06%200%200124%209.1v6.561a.649.649%200%2001-.652.645.649.649%200%2001-.653-.645V9.1a.762.762%200%2000-.766-.758.762.762%200%2000-.766.758v7.472a2.037%202.037%200%2001-2.048%202.026%202.037%202.037%200%2001-2.048-2.026v-12.5a.785.785%200%2000-.788-.753.785.785%200%2000-.789.752l-.001%2015.904A2.037%202.037%200%200113.441%2022a2.037%202.037%200%2001-2.048-2.026V18.04c0-.356.292-.645.652-.645.36%200%20.652.289.652.645v1.934c0%20.263.142.506.372.638.23.131.514.131.744%200a.734.734%200%2000.372-.638V4.07c0-1.143.937-2.07%202.093-2.07zm-5.674%200c1.156%200%202.093.927%202.093%202.07v11.523a.648.648%200%2001-.652.645.648.648%200%2001-.652-.645V4.07a.785.785%200%2000-.789-.78.785.785%200%2000-.789.78v14.013a2.06%202.06%200%2001-2.07%202.048%202.06%202.06%200%2001-2.071-2.048V9.1a.762.762%200%2000-.766-.758.762.762%200%2000-.766.758v3.8a2.06%202.06%200%2001-2.071%202.049A2.06%202.06%200%20010%2012.9v-1.378c0-.357.292-.646.652-.646.36%200%20.653.29.653.646V12.9c0%20.418.343.757.766.757s.766-.339.766-.757V9.099a2.06%202.06%200%20012.07-2.048%202.06%202.06%200%20012.071%202.048v8.984c0%20.419.343.758.767.758.423%200%20.766-.339.766-.758V4.07c0-1.143.937-2.07%202.093-2.07z'%20fill='url(%23lobe-icons-minimax-fill)'%20fill-rule='nonzero'%3e%3c/path%3e%3c/svg%3e",MNe="SystemPage-module__container___KAydo",LNe="SystemPage-module__pageTitle___DiF5E",ONe="SystemPage-module__content___SauLn",PNe="SystemPage-module__aboutCard___v2-ui",ENe="SystemPage-module__aboutHeader___hT4-J",jNe="SystemPage-module__aboutLogo___KXoLr",RNe="SystemPage-module__aboutTitle___BTLGy",DNe="SystemPage-module__aboutInfoGrid___b7AR0",FNe="SystemPage-module__infoTile___6AuIY",INe="SystemPage-module__tapTile___-9SaX",BNe="SystemPage-module__tileLabel___eMn4v",UNe="SystemPage-module__tileHeader___w4Ej0",qNe="SystemPage-module__tileAction___WKXuS",zNe="SystemPage-module__tileValue___Up02X",KNe="SystemPage-module__tileSub___ysVDj",VNe="SystemPage-module__sectionDescription___nI7Jo",HNe="SystemPage-module__clearLoginActions___4ek-m",WNe="SystemPage-module__modelTags___M0sci",GNe="SystemPage-module__groupTitle___bTqIN",$Ne="SystemPage-module__groupIcon___-XXrb",XNe="SystemPage-module__modelTag___5Ar53",QNe="SystemPage-module__modelName___LKdAK",YNe="SystemPage-module__modelAlias___zioM-",JNe="SystemPage-module__quickLinks___QTmT3",ZNe="SystemPage-module__linkCard___iSrVF",eTe="SystemPage-module__linkIcon___gNqz2",tTe="SystemPage-module__github___V8I3m",nTe="SystemPage-module__docs___cA-rG",iTe="SystemPage-module__linkContent___Rfh7h",sTe="SystemPage-module__linkTitle___Zpr4Q",aTe="SystemPage-module__linkDesc___KKavC",vt={container:MNe,pageTitle:LNe,content:ONe,aboutCard:PNe,aboutHeader:ENe,aboutLogo:jNe,aboutTitle:RNe,aboutInfoGrid:DNe,infoTile:FNe,tapTile:INe,tileLabel:BNe,tileHeader:UNe,tileAction:qNe,tileValue:zNe,tileSub:KNe,sectionDescription:VNe,clearLoginActions:HNe,modelTags:WNe,groupTitle:GNe,groupIcon:$Ne,modelTag:XNe,modelName:QNe,modelAlias:YNe,quickLinks:JNe,linkCard:ZNe,linkIcon:eTe,github:tTe,docs:nTe,linkContent:iTe,linkTitle:sTe,linkDesc:aTe},oTe={gpt:{light:Yw,dark:Jw},claude:ap,gemini:Lc,qwen:nk,kimi:{light:tk,dark:ek},glm:CNe,grok:ANe,deepseek:NNe,minimax:TNe},s3=t=>{if(!t)return null;const e=t.trim().replace(/^v/i,"");if(!e)return null;const n=e.split(/[^0-9]+/).filter(Boolean).map(i=>Number.parseInt(i,10)).filter(Number.isFinite);return n.length?n:null},rTe=(t,e)=>{const n=s3(t),i=s3(e);if(!n||!i)return null;const s=Math.max(n.length,i.length);for(let a=0;a<s;a++){const o=n[a]||0,r=i[a]||0;if(o>r)return 1;if(o<r)return-1}return 0};function lTe(){const{t,i18n:e}=nt(),{showNotification:n,showConfirmation:i}=mn(),s=Aa(me=>me.resolvedTheme),a=en(),o=It(me=>me.config),r=It(me=>me.fetchConfig),c=It(me=>me.clearCache),d=It(me=>me.updateConfigValue),f=vr(me=>me.models),p=vr(me=>me.loading),g=vr(me=>me.error),y=vr(me=>me.fetchModels),[_,v]=S.useState(),[x,k]=S.useState(!1),[C,N]=S.useState(!1),[L,M]=S.useState(!1),[O,T]=S.useState(!1),[P,E]=S.useState(!1),R=S.useRef([]),q=S.useRef(0),I=S.useRef(null),Y=S.useMemo(()=>e.language?.toLowerCase().startsWith("zh")?"其他":"Other",[e.language]),X=S.useMemo(()=>JG(f,{otherLabel:Y}),[f,Y]),K=o?.requestLog??!1,B=C!==K,H=a.connectionStatus==="connected"&&!!o,z="v1.7.28",Q=a.serverVersion||t("system_info.version_unknown"),W=a.serverBuildDate?new Date(a.serverBuildDate).toLocaleString(e.language):t("system_info.version_unknown"),D=me=>{const de=oTe[me];return de?typeof de=="string"?de:s==="dark"?de.dark:de.light:null},U=me=>{if(!Array.isArray(me))return[];const de=new Set,ne=[];return me.forEach(Be=>{const Ke=Be!==null&&typeof Be=="object"&&!Array.isArray(Be)?Be:null,Te=typeof Be=="string"?Be:Ke?Ke["api-key"]??Ke.apiKey??Ke.key??Ke.Key:"",Qe=String(Te??"").trim();!Qe||de.has(Qe)||(de.add(Qe),ne.push(Qe))}),ne},$=S.useCallback(async()=>{if(R.current.length)return R.current;const me=U(o?.apiKeys);if(me.length)return R.current=me,me;try{const de=await z2.list(),ne=U(de);return ne.length&&(R.current=ne),ne}catch(de){return console.warn("Auto loading API keys for models failed:",de),[]}},[o?.apiKeys]),te=async({forceRefresh:me=!1}={})=>{if(a.connectionStatus!=="connected"){v({type:"warning",message:t("notification.connection_required")});return}if(!a.apiBase){n(t("notification.connection_required"),"warning");return}me&&(R.current=[]),v({type:"muted",message:t("system_info.models_loading")});try{const ne=(await $())[0],Be=await y(a.apiBase,ne,me),Ke=Be.length>0;v({type:Ke?"success":"warning",message:Ke?t("system_info.models_count",{count:Be.length}):t("system_info.models_empty")})}catch(de){const ne=de instanceof Error?de.message:typeof de=="string"?de:"",Be=ne?`: ${ne}`:"",Ke=`${t("system_info.models_error")}${Be}`;v({type:"error",message:Ke})}},ie=()=>{i({title:t("system_info.clear_login_title",{defaultValue:"Clear Login Storage"}),message:t("system_info.clear_login_confirm"),variant:"danger",confirmText:t("common.confirm"),onConfirm:()=>{if(a.logout(),typeof localStorage>"u")return;[i4,"isLoggedIn","apiBase","apiUrl","managementKey"].forEach(de=>localStorage.removeItem(de)),n(t("notification.login_storage_cleared"),"success")}})},F=S.useCallback(()=>{M(!1),N(K),k(!0)},[K]),ee=S.useCallback(()=>{if(q.current+=1,I.current&&clearTimeout(I.current),q.current>=7){q.current=0,I.current=null,F();return}I.current=setTimeout(()=>{q.current=0,I.current=null},1500)},[F]),J=S.useCallback(()=>{k(!1),M(!1)},[]),re=async()=>{if(!H)return;if(!B){k(!1);return}const me=K;T(!0),d("request-log",C);try{await U4.updateRequestLog(C),c("request-log"),n(t("notification.request_log_updated"),"success"),k(!1)}catch(de){const ne=de instanceof Error?de.message:typeof de=="string"?de:"";d("request-log",me),n(`${t("notification.update_failed")}${ne?`: ${ne}`:""}`,"error")}finally{T(!1)}},fe=S.useCallback(async()=>{E(!0);try{const me=await QG.checkLatest(),de=me?.["latest-version"]??me?.latest_version??me?.latest??"",ne=typeof de=="string"?de:String(de??""),Be=rTe(ne,a.serverVersion);if(!ne){n(t("system_info.version_check_error"),"error");return}if(Be===null){n(t("system_info.version_current_missing"),"warning");return}Be>0?n(t("system_info.version_update_available",{version:ne}),"warning"):n(t("system_info.version_is_latest"),"success")}catch(me){const de=me instanceof Error?me.message:typeof me=="string"?me:"",ne=de?`: ${de}`:"";n(`${t("system_info.version_check_error")}${ne}`,"error")}finally{E(!1)}},[a.serverVersion,n,t]);return S.useEffect(()=>{r().catch(()=>{})},[r]),S.useEffect(()=>{x&&!L&&N(K)},[x,L,K]),S.useEffect(()=>()=>{I.current&&clearTimeout(I.current)},[]),S.useEffect(()=>{te()},[a.connectionStatus,a.apiBase]),h.jsxs("div",{className:vt.container,children:[h.jsx("h1",{className:vt.pageTitle,children:t("system_info.title")}),h.jsxs("div",{className:vt.content,children:[h.jsxs(jt,{className:vt.aboutCard,children:[h.jsxs("div",{className:vt.aboutHeader,children:[h.jsx("img",{src:xd,alt:"CPAMC",className:vt.aboutLogo}),h.jsx("div",{className:vt.aboutTitle,children:t("system_info.about_title")})]}),h.jsxs("div",{className:vt.aboutInfoGrid,children:[h.jsxs("button",{type:"button",className:`${vt.infoTile} ${vt.tapTile}`,onClick:ee,children:[h.jsx("div",{className:vt.tileHeader,children:h.jsx("div",{className:vt.tileLabel,children:t("footer.version")})}),h.jsx("div",{className:vt.tileValue,children:z})]}),h.jsxs("div",{className:vt.infoTile,children:[h.jsxs("div",{className:vt.tileHeader,children:[h.jsx("div",{className:vt.tileLabel,children:t("footer.api_version")}),h.jsx(he,{type:"button",variant:"ghost",size:"sm",className:vt.tileAction,onClick:()=>void fe(),loading:P,title:t("system_info.version_check_button"),"aria-label":t("system_info.version_check_button"),children:t("system_info.version_check_button")})]}),h.jsx("div",{className:vt.tileValue,children:Q})]}),h.jsxs("div",{className:vt.infoTile,children:[h.jsx("div",{className:vt.tileLabel,children:t("footer.build_date")}),h.jsx("div",{className:vt.tileValue,children:W})]}),h.jsxs("div",{className:vt.infoTile,children:[h.jsx("div",{className:vt.tileLabel,children:t("connection.status")}),h.jsx("div",{className:vt.tileValue,children:t(`common.${a.connectionStatus}_status`)}),h.jsx("div",{className:vt.tileSub,children:a.apiBase||"-"})]})]})]}),h.jsxs(jt,{title:t("system_info.quick_links_title"),children:[h.jsx("p",{className:vt.sectionDescription,children:t("system_info.quick_links_desc")}),h.jsxs("div",{className:vt.quickLinks,children:[h.jsxs("a",{href:"https://github.com/router-for-me/CLIProxyAPI",target:"_blank",rel:"noopener noreferrer",className:vt.linkCard,children:[h.jsx("div",{className:`${vt.linkIcon} ${vt.github}`,children:h.jsx(jz,{size:22})}),h.jsxs("div",{className:vt.linkContent,children:[h.jsxs("div",{className:vt.linkTitle,children:[t("system_info.link_main_repo"),h.jsx(Hx,{size:14})]}),h.jsx("div",{className:vt.linkDesc,children:t("system_info.link_main_repo_desc")})]})]}),h.jsxs("a",{href:"https://github.com/router-for-me/Cli-Proxy-API-Management-Center",target:"_blank",rel:"noopener noreferrer",className:vt.linkCard,children:[h.jsx("div",{className:`${vt.linkIcon} ${vt.github}`,children:h.jsx(O0,{size:22})}),h.jsxs("div",{className:vt.linkContent,children:[h.jsxs("div",{className:vt.linkTitle,children:[t("system_info.link_webui_repo"),h.jsx(Hx,{size:14})]}),h.jsx("div",{className:vt.linkDesc,children:t("system_info.link_webui_repo_desc")})]})]}),h.jsxs("a",{href:"https://help.router-for.me/",target:"_blank",rel:"noopener noreferrer",className:vt.linkCard,children:[h.jsx("div",{className:`${vt.linkIcon} ${vt.docs}`,children:h.jsx(Rz,{size:22})}),h.jsxs("div",{className:vt.linkContent,children:[h.jsxs("div",{className:vt.linkTitle,children:[t("system_info.link_docs"),h.jsx(Hx,{size:14})]}),h.jsx("div",{className:vt.linkDesc,children:t("system_info.link_docs_desc")})]})]})]})]}),h.jsxs(jt,{title:t("system_info.models_title"),extra:h.jsx(he,{variant:"secondary",size:"sm",onClick:()=>te({forceRefresh:!0}),loading:p,children:t("common.refresh")}),children:[h.jsx("p",{className:vt.sectionDescription,children:t("system_info.models_desc")}),_&&h.jsx("div",{className:`status-badge ${_.type}`,children:_.message}),g&&h.jsx("div",{className:"error-box",children:g}),p?h.jsx("div",{className:"hint",children:t("common.loading")}):f.length===0?h.jsx("div",{className:"hint",children:t("system_info.models_empty")}):h.jsx("div",{className:"item-list",children:X.map(me=>{const de=D(me.id);return h.jsxs("div",{className:"item-row",children:[h.jsxs("div",{className:"item-meta",children:[h.jsxs("div",{className:vt.groupTitle,children:[de&&h.jsx("img",{src:de,alt:"",className:vt.groupIcon}),h.jsx("span",{className:"item-title",children:me.label})]}),h.jsx("div",{className:"item-subtitle",children:t("system_info.models_count",{count:me.items.length})})]}),h.jsx("div",{className:vt.modelTags,children:me.items.map(ne=>h.jsxs("span",{className:vt.modelTag,title:ne.description||"",children:[h.jsx("span",{className:vt.modelName,children:ne.name}),ne.alias&&h.jsx("span",{className:vt.modelAlias,children:ne.alias})]},`${ne.name}-${ne.alias??"default"}`))})]},me.id)})})]}),h.jsxs(jt,{title:t("system_info.clear_login_title"),children:[h.jsx("p",{className:vt.sectionDescription,children:t("system_info.clear_login_desc")}),h.jsx("div",{className:vt.clearLoginActions,children:h.jsx(he,{variant:"danger",onClick:ie,children:t("system_info.clear_login_button")})})]})]}),h.jsx(Ss,{open:x,onClose:J,title:t("basic_settings.request_log_title"),footer:h.jsxs(h.Fragment,{children:[h.jsx(he,{variant:"secondary",onClick:J,disabled:O,children:t("common.cancel")}),h.jsx(he,{onClick:re,loading:O,disabled:!H||!B,children:t("common.save")})]}),children:h.jsxs("div",{className:"request-log-modal",children:[h.jsx("div",{className:"status-badge warning",children:t("basic_settings.request_log_warning")}),h.jsx(xi,{label:t("basic_settings.request_log_enable"),labelPosition:"left",checked:C,disabled:!H||O,onChange:me=>{N(me),M(!0)}})]})})]})}const cTe=[{path:"/",element:h.jsx(dO,{})},{path:"/dashboard",element:h.jsx(dO,{})},{path:"/settings",element:h.jsx(qf,{to:"/config",replace:!0})},{path:"/api-keys",element:h.jsx(qf,{to:"/config",replace:!0})},{path:"/ai-providers/gemini/new",element:h.jsx(CO,{})},{path:"/ai-providers/gemini/:index",element:h.jsx(CO,{})},{path:"/ai-providers/codex/new",element:h.jsx(kO,{})},{path:"/ai-providers/codex/:index",element:h.jsx(kO,{})},{path:"/ai-providers/claude/new",element:h.jsx(yO,{}),children:[{index:!0,element:h.jsx(SO,{})},{path:"models",element:h.jsx(wO,{})}]},{path:"/ai-providers/claude/:index",element:h.jsx(yO,{}),children:[{index:!0,element:h.jsx(SO,{})},{path:"models",element:h.jsx(wO,{})}]},{path:"/ai-providers/vertex/new",element:h.jsx(PO,{})},{path:"/ai-providers/vertex/:index",element:h.jsx(PO,{})},{path:"/ai-providers/openai/new",element:h.jsx(TO,{}),children:[{index:!0,element:h.jsx(LO,{})},{path:"models",element:h.jsx(OO,{})}]},{path:"/ai-providers/openai/:index",element:h.jsx(TO,{}),children:[{index:!0,element:h.jsx(LO,{})},{path:"models",element:h.jsx(OO,{})}]},{path:"/ai-providers/ampcode",element:h.jsx(mZ,{})},{path:"/ai-providers",element:h.jsx(mO,{})},{path:"/ai-providers/*",element:h.jsx(mO,{})},{path:"/auth-files",element:h.jsx(Sre,{})},{path:"/auth-files/oauth-excluded",element:h.jsx(Wre,{})},{path:"/auth-files/oauth-model-alias",element:h.jsx(gle,{})},{path:"/oauth",element:h.jsx(Gle,{})},{path:"/quota",element:h.jsx($le,{})},{path:"/usage",element:h.jsx(oge,{})},{path:"/config",element:h.jsx(NCe,{})},{path:"/logs",element:h.jsx(kNe,{})},{path:"/system",element:h.jsx(lTe,{})},{path:"*",element:h.jsx(qf,{to:"/",replace:!0})}];function uTe({location:t}){return w9(cTe,t)}const cr={dashboard:h.jsx(Dz,{size:18}),aiProviders:h.jsx(Iz,{size:18}),authFiles:h.jsx(Bz,{size:18}),oauth:h.jsx(Uz,{size:18}),quota:h.jsx(qz,{size:18}),usage:h.jsx(zz,{size:18}),config:h.jsx(Fz,{size:18}),logs:h.jsx(Kz,{size:18}),system:h.jsx(Vz,{size:18})},ho={width:16,height:16,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",focusable:"false"},fo={refresh:h.jsxs("svg",{...ho,children:[h.jsx("path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"}),h.jsx("path",{d:"M21 3v5h-5"})]}),menu:h.jsxs("svg",{...ho,children:[h.jsx("path",{d:"M4 7h16"}),h.jsx("path",{d:"M4 12h16"}),h.jsx("path",{d:"M4 17h16"})]}),chevronLeft:h.jsx("svg",{...ho,children:h.jsx("path",{d:"m14 18-6-6 6-6"})}),chevronRight:h.jsx("svg",{...ho,children:h.jsx("path",{d:"m10 6 6 6-6 6"})}),language:h.jsxs("svg",{...ho,children:[h.jsx("circle",{cx:"12",cy:"12",r:"10"}),h.jsx("path",{d:"M2 12h20"}),h.jsx("path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"})]}),sun:h.jsxs("svg",{...ho,children:[h.jsx("circle",{cx:"12",cy:"12",r:"4"}),h.jsx("path",{d:"M12 2v2"}),h.jsx("path",{d:"M12 20v2"}),h.jsx("path",{d:"m4.93 4.93 1.41 1.41"}),h.jsx("path",{d:"m17.66 17.66 1.41 1.41"}),h.jsx("path",{d:"M2 12h2"}),h.jsx("path",{d:"M20 12h2"}),h.jsx("path",{d:"m6.34 17.66-1.41 1.41"}),h.jsx("path",{d:"m19.07 4.93-1.41 1.41"})]}),moon:h.jsx("svg",{...ho,children:h.jsx("path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9z"})}),whiteTheme:h.jsxs("svg",{...ho,children:[h.jsx("circle",{cx:"12",cy:"12",r:"7"}),h.jsx("circle",{cx:"12",cy:"12",r:"3",fill:"currentColor",stroke:"none"})]}),autoTheme:h.jsxs("svg",{...ho,children:[h.jsx("defs",{children:h.jsx("clipPath",{id:"mainLayoutAutoThemeSunLeftHalf",children:h.jsx("rect",{x:"0",y:"0",width:"12",height:"24"})})}),h.jsx("circle",{cx:"12",cy:"12",r:"4"}),h.jsx("circle",{cx:"12",cy:"12",r:"4",clipPath:"url(#mainLayoutAutoThemeSunLeftHalf)",fill:"currentColor"}),h.jsx("path",{d:"M12 2v2"}),h.jsx("path",{d:"M12 20v2"}),h.jsx("path",{d:"M4.93 4.93l1.41 1.41"}),h.jsx("path",{d:"M17.66 17.66l1.41 1.41"}),h.jsx("path",{d:"M2 12h2"}),h.jsx("path",{d:"M20 12h2"}),h.jsx("path",{d:"M6.34 17.66l-1.41 1.41"}),h.jsx("path",{d:"M19.07 4.93l-1.41 1.41"})]}),logout:h.jsxs("svg",{...ho,children:[h.jsx("path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"}),h.jsx("path",{d:"m16 17 5-5-5-5"}),h.jsx("path",{d:"M21 12H9"})]})},dTe=[{key:"auto",labelKey:"theme.auto",colors:{bg:"linear-gradient(135deg, #ffffff 0 50%, #111111 50% 100%)",card:"linear-gradient(135deg, #ffffff 0 50%, #1a1a1a 50% 100%)",border:"#bdbdbd",text:"#2d2a26",textMuted:"linear-gradient(135deg, #c9c9c9 0 50%, #5a5a5a 50% 100%)"}},{key:"white",labelKey:"theme.white",colors:{bg:"#ffffff",card:"#ffffff",border:"#e5e5e5",text:"#2d2a26",textMuted:"#a29c95"}},{key:"light",labelKey:"theme.light",colors:{bg:"#faf9f5",card:"#f0eee8",border:"#e3e1db",text:"#2d2a26",textMuted:"#a29c95"}},{key:"dark",labelKey:"theme.dark",colors:{bg:"#151412",card:"#1d1b18",border:"#3a3530",text:"#f6f4f1",textMuted:"#9c958d"}}];function hTe(){const{t}=nt(),{showNotification:e}=mn(),n=$n(),i=en(F=>F.apiBase),s=en(F=>F.connectionStatus),a=en(F=>F.logout),o=It(F=>F.config),r=It(F=>F.fetchConfig),c=It(F=>F.clearCache),d=Aa(F=>F.theme),f=Aa(F=>F.setTheme),p=wd(F=>F.language),g=wd(F=>F.setLanguage),[y,_]=S.useState(!1),[v,x]=S.useState(!1),[k,C]=S.useState(!1),[N,L]=S.useState(!1),[M,O]=S.useState(!0),T=S.useRef(null),P=S.useRef(null),E=S.useRef(null),R=S.useRef(null),q=S.useRef(null),I="CLI Proxy API Management Center",Y=t("title.abbr"),X=n.pathname.startsWith("/logs");S.useLayoutEffect(()=>{const F=()=>{const J=q.current?.offsetHeight;J&&document.documentElement.style.setProperty("--header-height",`${J}px`)};F();const ee=typeof ResizeObserver<"u"&&q.current?new ResizeObserver(F):null;return ee&&q.current&&ee.observe(q.current),window.addEventListener("resize",F),()=>{ee&&ee.disconnect(),window.removeEventListener("resize",F)}},[]),S.useLayoutEffect(()=>{const F=()=>{const J=T.current;if(!J)return;const re=J.getBoundingClientRect(),fe=re.left+re.width/2;document.documentElement.style.setProperty("--content-center-x",`${fe}px`)};F();const ee=typeof ResizeObserver<"u"&&T.current?new ResizeObserver(F):null;return ee&&T.current&&ee.observe(T.current),window.addEventListener("resize",F),()=>{ee&&ee.disconnect(),window.removeEventListener("resize",F),document.documentElement.style.removeProperty("--content-center-x")}},[]),S.useEffect(()=>(R.current=setTimeout(()=>{O(!1)},5e3),()=>{R.current&&clearTimeout(R.current)}),[]),S.useEffect(()=>{if(!k)return;const F=J=>{P.current?.contains(J.target)||C(!1)},ee=J=>{J.key==="Escape"&&C(!1)};return document.addEventListener("mousedown",F),document.addEventListener("keydown",ee),()=>{document.removeEventListener("mousedown",F),document.removeEventListener("keydown",ee)}},[k]),S.useEffect(()=>{if(!N)return;const F=J=>{E.current?.contains(J.target)||L(!1)},ee=J=>{J.key==="Escape"&&L(!1)};return document.addEventListener("mousedown",F),document.addEventListener("keydown",ee),()=>{document.removeEventListener("mousedown",F),document.removeEventListener("keydown",ee)}},[N]);const K=S.useCallback(()=>{M||(O(!0),R.current&&clearTimeout(R.current),R.current=setTimeout(()=>{O(!1)},5e3))},[M]),B=S.useCallback(()=>{C(F=>!F),L(!1)},[]),H=S.useCallback(()=>{L(F=>!F),C(!1)},[]),z=S.useCallback(F=>{f(F),L(!1)},[f]),Q=S.useCallback(F=>{Sd(F)&&(g(F),C(!1))},[g]);S.useEffect(()=>{r().catch(()=>{})},[r]);const W=s==="connected"?"success":s==="connecting"?"warning":s==="error"?"error":"muted",D=[{path:"/",label:t("nav.dashboard"),icon:cr.dashboard},{path:"/config",label:t("nav.config_management"),icon:cr.config},{path:"/ai-providers",label:t("nav.ai_providers"),icon:cr.aiProviders},{path:"/auth-files",label:t("nav.auth_files"),icon:cr.authFiles},{path:"/oauth",label:t("nav.oauth",{defaultValue:"OAuth"}),icon:cr.oauth},{path:"/quota",label:t("nav.quota_management"),icon:cr.quota},{path:"/usage",label:t("nav.usage_stats"),icon:cr.usage},...o?.loggingToFile?[{path:"/logs",label:t("nav.logs"),icon:cr.logs}]:[],{path:"/system",label:t("nav.system_info"),icon:cr.system}],U=D.map(F=>F.path),$=F=>{const ee=F.length>1&&F.endsWith("/")?F.slice(0,-1):F,J=ee==="/dashboard"?"/":ee,re=U.indexOf("/ai-providers");if(re!==-1){if(J==="/ai-providers")return re;if(J.startsWith("/ai-providers/"))return J.startsWith("/ai-providers/gemini")?re+.1:J.startsWith("/ai-providers/codex")?re+.2:J.startsWith("/ai-providers/claude")?re+.3:J.startsWith("/ai-providers/vertex")?re+.4:J.startsWith("/ai-providers/ampcode")?re+.5:J.startsWith("/ai-providers/openai")?re+.6:re+.05}const fe=U.indexOf("/auth-files");if(fe!==-1){if(J==="/auth-files")return fe;if(J.startsWith("/auth-files/"))return J.startsWith("/auth-files/oauth-excluded")?fe+.1:J.startsWith("/auth-files/oauth-model-alias")?fe+.2:fe+.05}const me=U.indexOf(J);if(me!==-1)return me;const de=U.findIndex(ne=>ne!=="/"&&J.startsWith(`${ne}/`));return de===-1?null:de},te=S.useCallback((F,ee)=>{const J=ne=>{const Be=ne.length>1&&ne.endsWith("/")?ne.slice(0,-1):ne;return Be==="/dashboard"?"/":Be},re=J(F),fe=J(ee),me=ne=>ne==="/auth-files"||ne.startsWith("/auth-files/"),de=ne=>ne==="/ai-providers"||ne.startsWith("/ai-providers/");return me(re)&&me(fe)||de(re)&&de(fe)?"ios":"vertical"},[]),ie=async()=>{c();const ee=(await Promise.allSettled([r(void 0,!0),l5()])).find(J=>J.status==="rejected");if(ee&&ee.status==="rejected"){const J=ee.reason,re=typeof J=="string"?J:J instanceof Error?J.message:"";e(`${t("notification.refresh_failed")}${re?`: ${re}`:""}`,"error");return}e(t("notification.data_refreshed"),"success")};return h.jsxs("div",{className:"app-shell",children:[h.jsxs("header",{className:"main-header",ref:q,children:[h.jsxs("div",{className:"left",children:[h.jsx("button",{className:"sidebar-toggle-header",onClick:()=>x(F=>!F),title:v?t("sidebar.expand",{defaultValue:"展开"}):t("sidebar.collapse",{defaultValue:"收起"}),children:v?fo.chevronRight:fo.chevronLeft}),h.jsx("img",{src:xd,alt:"CPAMC logo",className:"brand-logo"}),h.jsxs("div",{className:`brand-header ${M?"expanded":"collapsed"}`,onClick:K,title:M?void 0:I,children:[h.jsx("span",{className:"brand-full",children:I}),h.jsx("span",{className:"brand-abbr",children:Y})]})]}),h.jsxs("div",{className:"right",children:[h.jsxs("div",{className:"connection",children:[h.jsx("span",{className:`status-badge ${W}`,children:t(s==="connected"?"common.connected_status":s==="connecting"?"common.connecting_status":"common.disconnected_status")}),h.jsx("span",{className:"base",children:i||"-"})]}),h.jsxs("div",{className:"header-actions",children:[h.jsx(he,{className:"mobile-menu-btn",variant:"ghost",size:"sm",onClick:()=>_(F=>!F),children:fo.menu}),h.jsx(he,{variant:"ghost",size:"sm",onClick:ie,title:t("header.refresh_all"),children:fo.refresh}),h.jsxs("div",{className:`language-menu ${k?"open":""}`,ref:P,children:[h.jsx(he,{variant:"ghost",size:"sm",onClick:B,title:t("language.switch"),"aria-label":t("language.switch"),"aria-haspopup":"menu","aria-expanded":k,children:fo.language}),k&&h.jsx("div",{className:"notification entering language-menu-popover",role:"menu","aria-label":t("language.switch"),children:cd.map(F=>h.jsxs("button",{type:"button",className:`language-menu-option ${p===F?"active":""}`,onClick:()=>Q(F),role:"menuitemradio","aria-checked":p===F,children:[h.jsx("span",{children:t(a4[F])}),p===F?h.jsx("span",{className:"language-menu-check",children:"✓"}):null]},F))})]}),h.jsxs("div",{className:`theme-menu ${N?"open":""}`,ref:E,children:[h.jsx(he,{variant:"ghost",size:"sm",onClick:H,title:t("theme.switch"),"aria-label":t("theme.switch"),"aria-haspopup":"menu","aria-expanded":N,children:d==="auto"?fo.autoTheme:d==="dark"?fo.moon:d==="white"?fo.whiteTheme:fo.sun}),N&&h.jsx("div",{className:"notification entering theme-menu-popover",role:"menu","aria-label":t("theme.switch"),children:dTe.map(F=>h.jsxs("button",{type:"button",className:`theme-card ${d===F.key?"active":""}`,onClick:()=>z(F.key),role:"menuitemradio","aria-checked":d===F.key,children:[h.jsxs("div",{className:"theme-card-preview",style:{background:F.colors.bg,border:`1px solid ${F.colors.border}`},children:[h.jsx("div",{className:"theme-card-header",style:{background:F.colors.card,borderBottom:`1px solid ${F.colors.border}`}}),h.jsxs("div",{className:"theme-card-body",children:[h.jsx("div",{className:"theme-card-sidebar",style:{background:F.colors.card,borderRight:`1px solid ${F.colors.border}`}}),h.jsxs("div",{className:"theme-card-content",style:{background:F.colors.bg},children:[h.jsx("div",{className:"theme-card-line",style:{background:F.colors.textMuted}}),h.jsx("div",{className:"theme-card-line short",style:{background:F.colors.textMuted}})]})]})]}),h.jsx("span",{className:"theme-card-label",children:t(F.labelKey)})]},F.key))})]}),h.jsx(he,{variant:"ghost",size:"sm",onClick:a,title:t("header.logout"),children:fo.logout})]})]})]}),h.jsxs("div",{className:"main-body",children:[h.jsx("button",{type:"button",className:`sidebar-backdrop ${y?"visible":""}`,onClick:()=>_(!1),"aria-label":t("common.close"),"aria-hidden":!y,tabIndex:y?0:-1}),h.jsx("aside",{className:`sidebar ${y?"open":""} ${v?"collapsed":""}`,children:h.jsx("div",{className:"nav-section",children:D.map(F=>h.jsxs(U3,{to:F.path,className:({isActive:ee})=>`nav-item ${ee?"active":""}`,onClick:()=>_(!1),title:v?F.label:void 0,children:[h.jsx("span",{className:"nav-icon",children:F.icon}),!v&&h.jsx("span",{className:"nav-label",children:F.label})]},F.path))})}),h.jsx("div",{className:`content${X?" content-logs":""}`,ref:T,children:h.jsx("main",{className:`main-content${X?" main-content-logs":""}`,children:h.jsx(OX,{render:F=>h.jsx(uTe,{location:F}),getRouteOrder:$,getTransitionVariant:te,scrollContainerRef:T})})})]})]})}function fTe({children:t}){const e=$n(),n=en(c=>c.isAuthenticated),i=en(c=>c.managementKey),s=en(c=>c.apiBase),a=en(c=>c.checkAuth),[o,r]=S.useState(!1);return S.useEffect(()=>{(async()=>{if(!n&&i&&s){r(!0);try{await a()}finally{r(!1)}}})()},[s,n,i,a]),o?h.jsx("div",{className:"main-content",children:h.jsx(Fc,{})}):n?t:h.jsx(qf,{to:"/login",replace:!0,state:{from:e}})}function mTe(){return h.jsxs(h.Fragment,{children:[h.jsx(H$,{}),h.jsx(Y$,{}),h.jsx(Tw,{})]})}const pTe=pq([{element:h.jsx(mTe,{}),children:[{path:"/login",element:h.jsx(V$,{})},{path:"/*",element:h.jsx(fTe,{children:h.jsx(hTe,{})})}]}]);function gTe(){const t=Aa(i=>i.initializeTheme),e=wd(i=>i.language),n=wd(i=>i.setLanguage);return S.useEffect(()=>t(),[t]),S.useEffect(()=>{n(e)},[]),S.useEffect(()=>{document.documentElement.lang=e},[e]),h.jsx(Aq,{router:pTe})}document.title="CLI Proxy API Management Center";document.documentElement.setAttribute("translate","no");document.documentElement.classList.add("notranslate");const S2=document.querySelector('link[rel="icon"]');if(S2)S2.href=xd,S2.type="image/jpeg";else{const t=document.createElement("link");t.rel="icon",t.type="image/jpeg",t.href=xd,document.head.appendChild(t)}n7.createRoot(document.getElementById("root")).render(h.jsx(S.StrictMode,{children:h.jsx(gTe,{})}));</script>
<style rel="stylesheet" crossorigin>*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;width:100%}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5}#root{height:100%;width:100%}button,input,textarea,select{font:inherit}a{color:inherit;text-decoration:none}ul,ol{list-style:none}:root{--bg-secondary: #faf9f5;--bg-primary: #f0eee8;--bg-tertiary: #e9e6df;--bg-hover: var(--bg-tertiary);--bg-quinary: #f6f4ee;--bg-error-light: rgba(198, 87, 70, .1);--floating-surface: #fffdf9;--floating-border: #d8d3ca;--floating-shadow: 0 12px 26px rgba(0, 0, 0, .14);--text-primary: #2d2a26;--text-secondary: #6d6760;--text-tertiary: #a29c95;--text-quaternary: #c0bab3;--text-muted: var(--text-tertiary);--border-color: #e3e1db;--border-secondary: var(--border-color);--border-primary: #d5d2cb;--border-hover: #cecac4;--primary-color: #8b8680;--primary-hover: #7f7a74;--primary-active: #726d67;--primary-contrast: #ffffff;--success-color: #10b981;--quota-medium-color: #e0aa14;--warning-color: #c65746;--error-color: #c65746;--danger-color: var(--error-color);--info-color: var(--primary-color);--warning-bg: rgba(198, 87, 70, .12);--warning-border: rgba(198, 87, 70, .35);--warning-text: var(--warning-color);--success-badge-bg: #d1fae5;--success-badge-text: #065f46;--success-badge-border: #6ee7b7;--failure-badge-bg: rgba(198, 87, 70, .14);--failure-badge-text: #8a3a30;--failure-badge-border: rgba(198, 87, 70, .35);--count-badge-bg: rgba(139, 134, 128, .18);--count-badge-text: var(--primary-active);--shadow: 0 1px 2px 0 rgb(0 0 0 / .08);--shadow-lg: 0 10px 18px -3px rgb(0 0 0 / .1);--radius-md: 8px;--accent-tertiary: var(--bg-tertiary)}[data-theme=white]{--bg-secondary: #ffffff;--bg-primary: #ffffff;--bg-tertiary: #f6f6f6;--bg-hover: var(--bg-tertiary);--bg-quinary: #ffffff;--bg-error-light: rgba(198, 87, 70, .08);--floating-surface: #ffffff;--floating-border: #d9d9d9;--floating-shadow: 0 12px 26px rgba(0, 0, 0, .12);--text-primary: #2d2a26;--text-secondary: #6d6760;--text-tertiary: #a29c95;--text-quaternary: #c0bab3;--text-muted: var(--text-tertiary);--border-color: #e5e5e5;--border-secondary: var(--border-color);--border-primary: #d9d9d9;--border-hover: #cccccc;--primary-color: #8b8680;--primary-hover: #7f7a74;--primary-active: #726d67;--primary-contrast: #ffffff;--success-color: #10b981;--quota-medium-color: #e0aa14;--warning-color: #c65746;--error-color: #c65746;--danger-color: var(--error-color);--info-color: var(--primary-color);--warning-bg: rgba(198, 87, 70, .12);--warning-border: rgba(198, 87, 70, .35);--warning-text: var(--warning-color);--success-badge-bg: #d1fae5;--success-badge-text: #065f46;--success-badge-border: #6ee7b7;--failure-badge-bg: rgba(198, 87, 70, .14);--failure-badge-text: #8a3a30;--failure-badge-border: rgba(198, 87, 70, .35);--count-badge-bg: rgba(139, 134, 128, .18);--count-badge-text: var(--primary-active);--shadow: 0 1px 2px 0 rgb(0 0 0 / .08);--shadow-lg: 0 10px 18px -3px rgb(0 0 0 / .1);--radius-md: 8px;--accent-tertiary: var(--bg-tertiary)}[data-theme=dark]{--bg-secondary: #151412;--bg-primary: #1d1b18;--bg-tertiary: #262320;--bg-hover: #2e2a26;--bg-quinary: #191714;--bg-error-light: rgba(198, 87, 70, .18);--floating-surface: #2a2723;--floating-border: #4a443d;--floating-shadow: 0 14px 30px rgba(0, 0, 0, .4);--text-primary: #f6f4f1;--text-secondary: #c9c3bb;--text-tertiary: #9c958d;--text-quaternary: #6f6962;--text-muted: var(--text-tertiary);--border-color: #3a3530;--border-secondary: var(--border-color);--border-primary: #4a453f;--border-hover: #5a544d;--primary-color: #8b8680;--primary-hover: #9a948e;--primary-active: #a6a099;--primary-contrast: #ffffff;--success-color: #10b981;--quota-medium-color: #ffd862;--warning-color: #c65746;--error-color: #c65746;--danger-color: var(--error-color);--info-color: var(--primary-color);--warning-bg: rgba(198, 87, 70, .22);--warning-border: rgba(198, 87, 70, .45);--warning-text: #f1b0a6;--success-badge-bg: rgba(6, 78, 59, .3);--success-badge-text: #6ee7b7;--success-badge-border: #059669;--failure-badge-bg: rgba(198, 87, 70, .24);--failure-badge-text: #f1b0a6;--failure-badge-border: rgba(198, 87, 70, .5);--count-badge-bg: rgba(139, 134, 128, .28);--count-badge-text: var(--primary-active);--shadow: 0 1px 3px 0 rgb(0 0 0 / .3);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .3);--radius-md: 8px;--accent-tertiary: var(--bg-tertiary)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:8px;padding:10px 14px;font-weight:600;cursor:pointer;transition:all .15s ease;background-color:var(--bg-secondary);color:var(--text-primary)}.btn.btn-primary{background-color:var(--primary-color);color:var(--primary-contrast, #fff);border-color:var(--primary-color)}.btn.btn-primary:hover{background-color:var(--primary-hover);border-color:var(--primary-hover)}.btn.btn-secondary{background-color:var(--bg-tertiary);border-color:var(--border-color);color:var(--text-primary)}.btn.btn-secondary:hover{background-color:var(--bg-hover, var(--bg-tertiary));border-color:var(--border-hover)}.btn.btn-ghost{background:transparent;border-color:transparent;color:var(--text-secondary)}.btn.btn-ghost:hover{color:var(--text-primary);background:var(--bg-tertiary)}.btn.btn-danger{background-color:#c65746;border-color:#c65746;color:#fff}.btn.btn-danger:hover{background-color:#b94a39}.btn.btn-full{width:100%}.btn.btn-sm{padding:8px 10px;font-size:14px}.btn:disabled{opacity:.6;cursor:not-allowed}:global([data-theme=dark]) .btn{color:#fff}:global([data-theme=dark]) .btn.btn-secondary,:global([data-theme=dark]) .btn.btn-ghost{color:#fff}.input,textarea{width:100%;border:1px solid var(--border-color);border-radius:8px;padding:10px 12px;background-color:var(--bg-secondary);color:var(--text-primary);transition:border-color .15s ease,box-shadow .15s ease}.input:focus,textarea:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #8b86802e}.form-group{display:flex;flex-direction:column;gap:4px;margin-bottom:16px}.form-group label{font-weight:600;color:var(--text-primary)}.form-group .hint{color:var(--text-secondary);font-size:13px}.card{background-color:var(--bg-primary);border:1px solid var(--border-color);border-radius:12px;box-shadow:var(--shadow);padding:24px}.card-header{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:16px}.card-header>*{min-width:0}.card-header .title{flex:1 1 auto;min-width:0;font-size:18px;font-weight:700;color:var(--text-primary)}.status-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:9999px;font-size:13px;border:1px solid var(--border-color);margin-bottom:16px}.status-badge+*{display:block}.status-badge.success{color:#10b981;border-color:#10b98159;background:#10b98114}.status-badge.warning,.status-badge.error{color:#c65746;border-color:#c6574659;background:#c6574614}.status-badge.muted{color:var(--text-secondary)}.notification-container{position:fixed;top:24px;right:24px;display:flex;flex-direction:column;gap:8px;z-index:3000;max-width:360px}@keyframes notification-enter{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes notification-exit{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}.notification{padding:16px;border-radius:8px;box-shadow:var(--shadow);border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-primary);display:flex;justify-content:space-between;align-items:center;gap:8px}.notification.entering{animation:notification-enter .3s ease-out forwards}.notification.exiting{animation:notification-exit .3s ease-in forwards}.notification.success{border-color:#10b98166}.notification.warning,.notification.error{border-color:#c6574666}.notification .message{flex:1;font-weight:500}.notification .close-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;background:transparent;border:none;color:var(--text-secondary);border-radius:8px;cursor:pointer;transition:color .15s ease,background-color .15s ease}.notification .close-btn svg{display:block}.notification .close-btn:hover{color:var(--text-primary);background:var(--bg-secondary)}.switch{position:relative;display:inline-flex;align-items:center;gap:8px;cursor:pointer}.switch input{width:0;height:0;opacity:0;position:absolute}.switch .track{width:44px;height:24px;background:var(--border-color);border-radius:9999px;position:relative;transition:background .15s ease}.switch .thumb{position:absolute;top:3px;left:3px;width:18px;height:18px;background:#fff;border-radius:9999px;box-shadow:0 1px 2px #0000000d;transition:transform .15s ease}.switch input:checked+.track{background:var(--primary-color)}.switch input:checked+.track .thumb{transform:translate(20px)}.switch .label{color:var(--text-primary);font-weight:600}.switch-label-left .label{order:-1}.pill{padding:4px 10px;border-radius:9999px;background:var(--bg-secondary);color:var(--text-secondary);border:1px solid var(--border-color);font-size:12px}.loading-spinner{border:3px solid rgba(255,255,255,.2);border-top-color:#fff;border-radius:50%;width:16px;height:16px;animation:spin .8s linear infinite}@supports (color: color-mix(in srgb,currentColor 22%,transparent)){.loading-spinner{border-color:color-mix(in srgb,currentColor 22%,transparent);border-top-color:currentColor}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.modal-overlay{position:fixed;inset:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:2000;padding:24px}.modal-overlay.modal-overlay-entering{animation:modal-overlay-fade-in .25s ease-out forwards}.modal-overlay.modal-overlay-closing{animation:modal-overlay-fade-out .35s ease-in forwards}@keyframes modal-overlay-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-overlay-fade-out{0%{opacity:1}to{opacity:0}}.modal{background:var(--bg-primary);border-radius:12px;border:1px solid var(--border-color);box-shadow:0 10px 15px -3px #0000001a;max-width:100%;max-height:90vh;overflow:hidden;display:flex;flex-direction:column;position:relative;transform-origin:calc(100% - 28px) 28px}.modal.modal-entering{animation:modal-scale-in .3s cubic-bezier(.34,1.56,.64,1) forwards}.modal.modal-closing{animation:modal-collapse-to-close .35s cubic-bezier(.4,0,.2,1) forwards}@keyframes modal-scale-in{0%{opacity:0;transform:scale(.85) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes modal-collapse-to-close{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0)}}.modal-close-floating{position:absolute;top:12px;right:12px;width:32px;height:32px;padding:0;background:var(--bg-secondary);border:1px solid var(--border-color);color:var(--text-secondary);cursor:pointer;border-radius:9999px;display:inline-flex;align-items:center;justify-content:center;transition:color .15s ease,background-color .15s ease,transform .15s ease;z-index:10}.modal-close-floating svg{display:block}.modal-close-floating:hover{color:var(--text-primary);background:var(--bg-tertiary);transform:scale(1.1)}.modal-close-floating:active{transform:scale(.95)}.modal-close-floating:disabled{cursor:not-allowed;opacity:.6;transform:none}.modal-close-floating:disabled:hover{color:var(--text-secondary);background:var(--bg-secondary);transform:none}.modal-header{display:flex;align-items:center;padding:16px 24px;border-bottom:1px solid var(--border-color)}.modal-header .modal-title{font-weight:700;font-size:18px;color:var(--text-primary)}.modal-body{padding:24px;overflow:auto;max-height:65vh}.modal-footer{padding:16px 24px;border-top:1px solid var(--border-color);display:flex;justify-content:flex-end;gap:8px;background:var(--bg-primary)}@media(max-width:768px){.modal-overlay{padding:16px}.modal{max-height:calc(100vh - 32px);border-radius:8px}@supports (height: 100dvh){.modal{max-height:calc(100dvh - 32px)}}.modal-header{padding:16px 52px 16px 16px}.modal-body{padding:16px;max-height:min(60vh,100vh - 180px)}@supports (height: 100dvh){.modal-body{max-height:min(60dvh,100dvh - 180px)}}.modal-footer{padding:16px;flex-direction:column-reverse;align-items:stretch}.modal-footer .btn{width:100%}}.request-log-modal{display:flex;flex-direction:column;align-items:flex-start;gap:16px}.request-log-modal .status-badge{margin-bottom:0}.empty-state{border:1px dashed var(--border-color);border-radius:12px;padding:24px;background:var(--bg-secondary);display:flex;justify-content:space-between;gap:16px;align-items:center}.empty-state .empty-content{display:flex;align-items:center;gap:16px}.empty-state .empty-icon{width:42px;height:42px;border-radius:9999px;border:2px solid var(--border-color);display:grid;place-items:center;color:var(--text-secondary)}.empty-state .empty-icon svg{display:block}.empty-state .empty-title{font-weight:700;color:var(--text-primary)}.empty-state .empty-desc{color:var(--text-secondary);margin-top:4px}.header-input-list{display:flex;flex-direction:column;gap:8px}.header-input-list .header-input-row{display:grid;grid-template-columns:1fr auto 1fr auto;align-items:center;gap:8px}.header-input-list .header-separator{color:var(--text-secondary);text-align:center}.header-input-list .align-start{width:fit-content}.item-list{display:flex;flex-direction:column;gap:8px}.item-row{border:1px solid var(--border-color);border-radius:8px;padding:16px;background:var(--bg-primary);display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.item-row .item-meta{display:flex;flex-direction:column;gap:6px}.item-row .item-title{font-weight:700;color:var(--text-primary)}.item-row .item-subtitle{color:var(--text-secondary);font-family:ui-monospace,SFMono-Regular,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;word-break:break-all}.item-row .item-actions{display:flex;gap:8px}.error-box{background:#c657461a;border:1px solid rgba(198,87,70,.4);border-radius:8px;padding:8px 16px;color:#c65746}.stack{display:flex;flex-direction:column;gap:24px}.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-bottom:16px}.filters .filter-item{display:flex;flex-direction:column;gap:4px}.table{display:flex;flex-direction:column;border:1px solid var(--border-color);border-radius:8px;overflow:hidden}.table .table-header,.table .table-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;padding:8px 16px;align-items:center}.table .table-header{background:var(--bg-secondary);font-weight:700;color:var(--text-primary)}.table .table-row{border-top:1px solid var(--border-color)}.table .cell{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.pagination{display:flex;align-items:center;gap:8px;margin-top:16px}.stat-card{border:1px solid var(--border-color);border-radius:8px;padding:16px;background:var(--bg-primary);display:flex;flex-direction:column;gap:4px}.stat-card .stat-label{color:var(--text-secondary);font-size:14px}.stat-card .stat-value{font-weight:800;color:var(--text-primary);font-size:18px}.log-viewer{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;padding:16px;max-height:520px;overflow:auto;white-space:pre-wrap;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;color:var(--text-primary)}.log-viewer-lines .log-line{display:block;padding:1px 0}.log-viewer-lines .log-line-warning{color:var(--warning-text, #92400e);background:var(--warning-bg, rgba(251, 191, 36, .18));border-radius:4px;padding:2px 6px}.hint{color:var(--text-secondary)}:root{--header-height: 64px}.app-shell{display:flex;flex-direction:column;min-height:100vh;height:100vh;overflow:hidden;background:var(--bg-secondary);color:var(--text-primary)}@media(max-width:768px){.app-shell{height:auto;min-height:100vh;overflow:visible;overflow-y:auto}}.main-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 24px;background:var(--bg-primary);border-bottom:1px solid var(--border-color);position:sticky;top:0;z-index:10;width:100%}@media(max-width:768px){.main-header{position:fixed;left:0;right:0;padding:8px 16px;gap:8px}}.main-header .left{display:flex;align-items:center;gap:8px;min-width:0;flex:0 1 auto}.main-header .left .brand-logo{height:32px;width:32px;object-fit:contain;flex-shrink:0;border-radius:4px}.main-header .right{display:flex;align-items:center;gap:16px;min-width:0;flex:1 1 auto;justify-content:flex-end}@media(max-width:768px){.main-header .right{flex:0 1 auto;gap:8px}}.main-header .sidebar-toggle-header{padding:0;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;color:var(--text-secondary);cursor:pointer;font-size:16px;font-weight:700;transition:background .15s ease,color .15s ease;display:flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;line-height:1}.main-header .sidebar-toggle-header:hover{background:var(--bg-tertiary, var(--border-color));color:var(--text-primary)}@media(max-width:768px){.main-header .sidebar-toggle-header{display:none}}.main-header .brand-header{display:flex;align-items:center;gap:4px;font-weight:800;font-size:18px;color:var(--text-primary);margin-right:16px;cursor:pointer;overflow:hidden;white-space:nowrap;flex-shrink:0}.main-header .brand-header .brand-full{display:inline-block;max-width:320px;opacity:1;transform:translate(0);transition:max-width .4s ease,opacity .4s ease,transform .4s ease}.main-header .brand-header .brand-abbr{display:inline-block;transform:translate(12px);opacity:0;pointer-events:none;transition:opacity .4s ease,transform .4s ease}.main-header .brand-header.collapsed .brand-full{max-width:0;opacity:0;transform:translate(-12px)}.main-header .brand-header.collapsed .brand-abbr{transform:translate(0);opacity:1;pointer-events:auto}.main-header .brand-header:hover{color:var(--primary-color)}@media(max-width:768px){.main-header .brand-header{cursor:default;flex-shrink:1;min-width:0;margin-right:0}.main-header .brand-header .brand-full,.main-header .brand-header .brand-abbr{transition:none}.main-header .brand-header .brand-full{display:none}.main-header .brand-header .brand-abbr{transform:translate(0);opacity:1;pointer-events:auto}.main-header .brand-header:hover{color:var(--text-primary)}}.main-header .mobile-menu-btn{display:none;flex-shrink:0}@media(max-width:768px){.main-header .mobile-menu-btn{display:inline-flex}}.main-header .header-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.main-header .header-actions .language-menu{position:relative;display:inline-flex;align-items:center}.main-header .header-actions .language-menu .language-menu-popover{position:absolute;top:calc(100% + 8px);right:0;z-index:1000;min-width:164px;padding:4px;display:flex;flex-direction:column;gap:2px}.main-header .header-actions .language-menu .language-menu-option{width:100%;border:none;border-radius:4px;background:transparent;color:var(--text-primary);cursor:pointer;padding:8px 10px;font-size:14px;font-weight:500;display:flex;align-items:center;justify-content:space-between;transition:background-color .15s ease,color .15s ease}.main-header .header-actions .language-menu .language-menu-option:hover{background:var(--bg-secondary)}.main-header .header-actions .language-menu .language-menu-option:focus-visible{outline:none;background:var(--bg-secondary);box-shadow:0 0 0 2px #8b868038}.main-header .header-actions .language-menu .language-menu-option.active{color:var(--primary-color);font-weight:600}.main-header .header-actions .language-menu .language-menu-check{font-size:13px;line-height:1}@media(max-width:768px){.main-header .header-actions .language-menu .language-menu-popover{right:auto;left:0}}.main-header .header-actions .theme-menu{position:relative;display:inline-flex;align-items:center}.main-header .header-actions .theme-menu .theme-menu-popover{position:absolute;top:calc(100% + 8px);right:0;z-index:1000;padding:8px 8px 4px;display:flex;gap:4px;width:max-content;max-width:calc(100vw - 16px)}.main-header .header-actions .theme-menu .theme-card{border:2px solid transparent;border-radius:8px;background:transparent;cursor:pointer;padding:6px 6px 4px;display:flex;flex-direction:column;align-items:center;gap:4px;transition:border-color .15s ease,background-color .15s ease}.main-header .header-actions .theme-menu .theme-card:hover{background:var(--bg-secondary)}.main-header .header-actions .theme-menu .theme-card:focus-visible{outline:none;box-shadow:0 0 0 2px #8b868038}.main-header .header-actions .theme-menu .theme-card.active{border-color:var(--primary-color)}.main-header .header-actions .theme-menu .theme-card-preview{width:72px;height:52px;border-radius:4px;overflow:hidden;display:flex;flex-direction:column}.main-header .header-actions .theme-menu .theme-card-header{height:10px;flex-shrink:0}.main-header .header-actions .theme-menu .theme-card-body{flex:1;display:flex;min-height:0}.main-header .header-actions .theme-menu .theme-card-sidebar{width:16px;flex-shrink:0}.main-header .header-actions .theme-menu .theme-card-content{flex:1;padding:5px 8px;display:flex;flex-direction:column;gap:4px;justify-content:center}.main-header .header-actions .theme-menu .theme-card-line{height:3px;border-radius:1px}.main-header .header-actions .theme-menu .theme-card-line.short{width:60%}.main-header .header-actions .theme-menu .theme-card-label{font-size:11px;color:var(--text-primary);font-weight:500;white-space:nowrap}@media(max-width:768px){.main-header .header-actions .theme-menu .theme-menu-popover{right:0;left:auto;transform:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));justify-content:stretch;width:min(188px,100vw - 16px)}.main-header .header-actions .theme-menu .theme-card{width:100%;min-width:0}.main-header .header-actions .theme-menu .theme-card-label{white-space:normal;text-align:center;line-height:1.2}}.main-header .header-actions svg{display:block}@media(max-width:768px){.main-header .header-actions{gap:2px}}.main-header .connection{display:flex;align-items:center;gap:8px;color:var(--text-secondary);min-width:0;flex-shrink:1;overflow:hidden}.main-header .connection .status-badge{flex-shrink:0;white-space:nowrap;margin-bottom:0}.main-header .connection .base{font-weight:600;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:80px}@media(max-width:768px){.main-header .connection{display:none}}.main-body{display:flex;flex:1;min-height:0;height:calc(100vh - var(--header-height));overflow:hidden;position:relative}@supports (height: 100dvh){.main-body{height:calc(100dvh - var(--header-height))}}@media(max-width:768px){.main-body{height:auto;min-height:calc(100vh - var(--header-height));overflow:visible;padding-top:var(--header-height)}@supports (min-height: 100dvh){.main-body{min-height:calc(100dvh - var(--header-height))}}}.sidebar-backdrop{display:none;border:0;padding:0;margin:0;background:#0f172a2e;opacity:0;pointer-events:none;transition:opacity .15s ease}@media(max-width:768px){.sidebar-backdrop{display:block;position:fixed;inset:var(--header-height) 0 0;z-index:999}.sidebar-backdrop.visible{opacity:1;pointer-events:auto}}.sidebar{width:240px;background:var(--bg-primary);border-right:1px solid var(--border-color);padding:16px;display:flex;flex-direction:column;gap:24px;transition:width .3s ease,transform .3s ease;overflow-y:auto;flex-shrink:0;height:100%}.sidebar.collapsed{width:60px;padding:16px 8px}.sidebar.collapsed .nav-item{justify-content:center;padding:10px}.sidebar .nav-section{display:flex;flex-direction:column;gap:8px;flex:1}.sidebar .nav-item{padding:10px 12px;border-radius:8px;border:1px solid transparent;color:var(--text-primary);font-weight:600;display:flex;align-items:center;gap:8px;cursor:pointer;transition:background .15s ease,color .15s ease}.sidebar .nav-item .nav-icon{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;opacity:.96;border-radius:7px;background:linear-gradient(180deg,#ffffff2e,#fff0) var(--bg-secondary);box-shadow:inset 0 0 0 1px var(--border-primary);transition:background .15s ease,box-shadow .15s ease,color .15s ease}.sidebar .nav-item .nav-icon svg{width:18px;height:18px;display:block}.sidebar .nav-item .nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar .nav-item:hover{background:var(--bg-secondary)}.sidebar .nav-item:hover .nav-icon{background:linear-gradient(180deg,#ffffff3d,#fff0) var(--bg-primary);box-shadow:inset 0 0 0 1px var(--border-hover)}.sidebar .nav-item.active{background:#8b868024;color:var(--primary-color);border:1px solid rgba(139,134,128,.35)}.sidebar .nav-item.active .nav-icon{background:linear-gradient(180deg,#ffffff38,#fff0) #8b86801a;box-shadow:inset 0 0 0 1px #8b868042}@media(max-width:768px){.sidebar{position:fixed;z-index:1000;left:0;top:var(--header-height);bottom:0;transform:translate(-100%);box-shadow:0 10px 15px -3px #0000001a}.sidebar.open{transform:translate(0)}}.content{flex:1;display:flex;flex-direction:column;min-width:0;overflow-y:auto;scrollbar-gutter:stable;height:100%}.content.content-logs{overflow:hidden}@media(max-width:768px){.content.content-logs{overflow:visible;overflow-y:auto;height:auto}}.main-content{flex:1 0 auto;padding:24px;display:flex;flex-direction:column;gap:24px;overflow-x:hidden}.main-content.main-content-logs{flex:1 1 auto;min-height:0;overflow:hidden}@media(max-width:768px){.main-content.main-content-logs{flex:0 0 auto;min-height:auto;overflow:visible}}@media(max-width:768px){.main-content{padding:16px}}.grid{display:grid;gap:24px}@media(min-width:1024px){.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}body{background-color:var(--bg-secondary);color:var(--text-primary);transition:background-color .3s ease,color .3s ease}html.modal-open,body.modal-open,body.modal-open .content{overflow:hidden}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:9999px}::-webkit-scrollbar-thumb:hover{background:var(--border-hover)}.container{width:100%;max-width:1280px;margin:0 auto;padding:0 16px}.flex-center{display:flex;align-items:center;justify-content:center}.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fade-enter{opacity:0}.fade-enter-active{opacity:1;transition:opacity .3s ease}.fade-exit{opacity:1}.fade-exit-active{opacity:0;transition:opacity .3s ease}.Select-module__wrap___8GKsa{position:relative;display:inline-flex;align-items:center}.Select-module__wrapFullWidth___uQ1gt{width:100%}.Select-module__trigger___nKY0l{display:inline-flex;align-items:center;justify-content:space-between;gap:8px;width:100%;height:40px;padding:0 12px;border:1px solid var(--border-color);border-radius:8px;background-color:var(--bg-primary);box-shadow:var(--shadow);color:var(--text-primary);font-size:13px;font-weight:500;cursor:pointer;appearance:none;text-align:left;box-sizing:border-box}.Select-module__trigger___nKY0l:hover{border-color:var(--border-hover)}.Select-module__trigger___nKY0l:focus{outline:none;box-shadow:var(--shadow),0 0 0 3px #8b86802e}.Select-module__trigger___nKY0l[aria-expanded=true]{border-color:var(--primary-color);box-shadow:var(--shadow),0 0 0 3px #8b86802e}.Select-module__triggerText___zQEIp{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Select-module__placeholder___N04iW{color:var(--text-tertiary)}.Select-module__triggerIcon___ipYKn{display:inline-flex;color:var(--text-secondary);flex-shrink:0;transition:transform .2s ease}[aria-expanded=true]>.Select-module__triggerIcon___ipYKn{transform:rotate(180deg)}.Select-module__dropdown___6YdcD{position:fixed;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:12px;padding:6px;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;gap:4px;max-height:240px;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.Select-module__option___EKsSG{padding:8px 12px;border-radius:8px;border:1px solid transparent;background:transparent;color:var(--text-primary);cursor:pointer;text-align:left;font-size:13px;font-weight:500;transition:background-color .15s ease,border-color .15s ease;flex-shrink:0}.Select-module__option___EKsSG:hover{background:var(--bg-secondary)}.Select-module__optionActive___y280o{border-color:#8b868080;background:#8b86801a;font-weight:600}.Select-module__optionHighlighted___CPa3K{background:var(--bg-secondary)}.SelectionCheckbox-module__root___LiMQt{position:relative;display:inline-flex;align-items:center;gap:8px;cursor:pointer;user-select:none}.SelectionCheckbox-module__disabled___-T-uP{cursor:not-allowed;opacity:.6}.SelectionCheckbox-module__input___b-Hpm{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.SelectionCheckbox-module__box___FRD4m{width:22px;height:22px;flex-shrink:0;border-radius:7px;border:1px solid var(--border-color);background:color-mix(in srgb,var(--bg-secondary) 92%,transparent);color:var(--primary-contrast, #fff);display:inline-flex;align-items:center;justify-content:center;transition:border-color .15s ease,background-color .15s ease,box-shadow .15s ease,transform .15s ease}.SelectionCheckbox-module__root___LiMQt:hover .SelectionCheckbox-module__box___FRD4m{border-color:var(--primary-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 16%,transparent)}.SelectionCheckbox-module__root___LiMQt:active .SelectionCheckbox-module__box___FRD4m{transform:scale(.95)}.SelectionCheckbox-module__disabled___-T-uP:hover .SelectionCheckbox-module__box___FRD4m{border-color:var(--border-color);box-shadow:none}.SelectionCheckbox-module__disabled___-T-uP:active .SelectionCheckbox-module__box___FRD4m{transform:none}.SelectionCheckbox-module__input___b-Hpm:focus-visible+.SelectionCheckbox-module__box___FRD4m{border-color:var(--primary-color);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary-color) 16%,transparent),0 0 0 1px color-mix(in srgb,var(--primary-color) 50%,transparent)}.SelectionCheckbox-module__boxChecked___4lydu{border-color:var(--primary-color);background:var(--primary-color)}.SelectionCheckbox-module__boxChecked___4lydu svg{display:block;stroke-width:2.4}.SelectionCheckbox-module__label___twhQj{color:var(--text-primary);font-size:14px;font-weight:500}.LoginPage-module__container___bHtIX{min-height:100vh;display:flex;background:var(--bg-secondary)}.LoginPage-module__brandPanel___kKUR5{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;background:#000;padding:48px;position:relative;overflow:hidden}@media(max-width:768px){.LoginPage-module__brandPanel___kKUR5{display:none}}.LoginPage-module__brandContent___ZEhbk{position:relative;z-index:1;display:flex;flex-direction:column;align-items:flex-end;width:100%;padding:0;gap:0}@keyframes LoginPage-module__brandFadeIn___tpmGl{0%{opacity:0;transform:translateY(-10px)}to{opacity:var(--target-opacity, .9);transform:translateY(0)}}.LoginPage-module__brandWord___3DkwD{font-size:14vw;font-weight:900;color:#ffffffe6;letter-spacing:-.02em;line-height:.85;text-transform:uppercase;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;text-align:right;padding-right:0;opacity:0;animation:LoginPage-module__brandFadeIn___tpmGl .8s ease-out forwards}.LoginPage-module__brandWord___3DkwD:nth-child(1){--target-opacity: .95;animation-delay:.1s}.LoginPage-module__brandWord___3DkwD:nth-child(2){--target-opacity: .7;animation-delay:.35s}.LoginPage-module__brandWord___3DkwD:nth-child(3){--target-opacity: .45;animation-delay:.6s}.LoginPage-module__formPanel___Nrtrt{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:48px;background:var(--bg-secondary);position:relative}@media(max-width:768px){.LoginPage-module__formPanel___Nrtrt{padding:24px;min-height:100vh}}.LoginPage-module__formContent___H8fD-{width:100%;max-width:420px;display:flex;flex-direction:column;align-items:center;gap:32px}.LoginPage-module__logo___ASmao{width:80px;height:80px;border-radius:12px;object-fit:cover;box-shadow:var(--shadow-lg);border:3px solid var(--border-color)}.LoginPage-module__loginCard___OgP-R{width:100%;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:12px;box-shadow:var(--shadow-lg);padding:32px;display:flex;flex-direction:column;gap:24px}@media(max-width:768px){.LoginPage-module__loginCard___OgP-R{padding:24px;box-shadow:none;border:none;background:transparent}}.LoginPage-module__loginHeader___3kAvs{display:flex;flex-direction:column;gap:8px;text-align:center}.LoginPage-module__titleRow___9h914{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}.LoginPage-module__title___I-LuY{font-size:22px;font-weight:800;color:var(--text-primary)}.LoginPage-module__subtitle___Q41SH{color:var(--text-secondary);font-size:14px}.LoginPage-module__languageSelect___KUNwV{min-width:108px;flex:0 0 auto}.LoginPage-module__connectionBox___B5--X{background:var(--bg-secondary);border:1px dashed var(--border-color);border-radius:8px;padding:16px;display:flex;flex-direction:column;gap:4px}.LoginPage-module__connectionBox___B5--X .LoginPage-module__label___2fkY-{color:var(--text-secondary);font-size:14px}.LoginPage-module__connectionBox___B5--X .LoginPage-module__value___JFrYC{font-weight:700;color:var(--text-primary);word-break:break-all}.LoginPage-module__connectionBox___B5--X .LoginPage-module__hint___bcz4d{color:var(--text-secondary);font-size:12px}.LoginPage-module__toggleAdvanced___4aKnv{display:flex;justify-content:flex-start;width:100%}.LoginPage-module__toggleLabel___C3t9M{color:var(--text-secondary);font-size:14px;font-weight:500}.LoginPage-module__errorBox___wX1tT{background:#c657461a;border:1px solid rgba(198,87,70,.4);border-radius:8px;padding:8px 16px;color:#c65746;font-size:14px}@keyframes LoginPage-module__splashEnter___K-Jk9{0%{opacity:0;transform:scale(.9) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes LoginPage-module__splashLogoPulse___DIteW{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes LoginPage-module__splashLoading___jAaFC{0%{transform:scaleX(0);transform-origin:left}50%{transform:scaleX(1);transform-origin:left}50.01%{transform-origin:right}to{transform:scaleX(0);transform-origin:right}}.LoginPage-module__splashContent___Cc3DZ{display:flex;flex-direction:column;align-items:center;gap:16px;animation:LoginPage-module__splashEnter___K-Jk9 .6s ease-out}.LoginPage-module__splashLogo___yzbbw{height:80px;width:auto;border-radius:12px;box-shadow:0 10px 15px -3px #0000001a;animation:LoginPage-module__splashLogoPulse___DIteW 1.5s ease-in-out infinite}.LoginPage-module__splashTitle___G-HEP{font-size:28px;font-weight:800;color:var(--text-primary);margin:0;letter-spacing:-.5px}.LoginPage-module__splashSubtitle___BYSQi{font-size:16px;font-weight:500;color:var(--text-secondary);margin:-8px 0 0}.LoginPage-module__splashLoader___SdvUl{width:120px;height:3px;background:var(--border-color);border-radius:9999px;overflow:hidden;margin-top:16px}.LoginPage-module__splashLoaderBar___lyVXw{width:100%;height:100%;background:var(--primary-color);border-radius:9999px;animation:LoginPage-module__splashLoading___jAaFC 1.2s ease-in-out infinite}.page-transition{position:relative;flex:1 1 auto;display:flex;flex-direction:column;min-height:0;overflow:hidden}.page-transition__layer{display:flex;flex-direction:column;gap:24px;min-height:0;flex:1;background:var(--bg-secondary);backface-visibility:hidden;transform:translateZ(0)}.page-transition__layer--exit{position:absolute;inset:0;overflow:hidden;pointer-events:none;will-change:transform,opacity}.page-transition__layer--stacked{display:none}.page-transition__layer--stacked.page-transition__layer--stacked-keep{display:flex;position:absolute;inset:0;overflow:hidden;pointer-events:none;opacity:0;will-change:transform,opacity}.page-transition--animating .page-transition__layer{will-change:transform,opacity}.page-transition--animating .page-transition__layer:not(.page-transition__layer--exit):not(.page-transition__layer--stacked){position:relative}.DashboardPage-module__dashboard___c-JEy{display:flex;flex-direction:column;gap:32px;max-width:1000px;margin:0 auto;position:relative}.DashboardPage-module__backgroundOrbs___ZlInx{position:absolute;inset:0;pointer-events:none;z-index:0;overflow:hidden}.DashboardPage-module__orb1___msZV4{position:absolute;width:420px;height:420px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--primary-color) 8%,transparent),transparent 70%);top:-140px;right:-80px;animation:DashboardPage-module__orbFloat___zdYrn 22s ease-in-out infinite alternate}.DashboardPage-module__orb2___rkxwt{position:absolute;width:320px;height:320px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--success-color) 6%,transparent),transparent 70%);bottom:18%;left:-100px;animation:DashboardPage-module__orbFloat___zdYrn 28s ease-in-out infinite alternate-reverse}@keyframes DashboardPage-module__orbFloat___zdYrn{0%{transform:translate(0) scale(1)}to{transform:translate(30px,-20px) scale(1.1)}}.DashboardPage-module__hero___4gtI-{position:relative;z-index:1;display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:48px 32px;border-radius:12px;background:linear-gradient(135deg,color-mix(in srgb,var(--bg-primary) 92%,transparent),color-mix(in srgb,var(--bg-secondary) 80%,transparent));border:1px solid color-mix(in srgb,var(--border-color) 60%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);overflow:hidden;animation:DashboardPage-module__heroEnter___LNodk .6s ease-out both}@media(max-width:768px){.DashboardPage-module__hero___4gtI-{flex-direction:column;align-items:flex-start;padding:32px 24px}}.DashboardPage-module__heroWatermark___eoPCs{position:absolute;top:50%;left:32px;transform:translateY(-50%);font-size:clamp(64px,12vw,120px);font-weight:900;line-height:1;letter-spacing:-.04em;text-transform:uppercase;color:var(--text-primary);opacity:.04;white-space:nowrap;pointer-events:none;user-select:none;animation:DashboardPage-module__watermarkEnter___4r-VK .8s ease-out .1s both}@media(max-width:768px){.DashboardPage-module__heroWatermark___eoPCs{font-size:clamp(48px,14vw,80px);left:24px}}@keyframes DashboardPage-module__watermarkEnter___4r-VK{0%{opacity:0;transform:translateY(-50%) translate(-20px)}to{opacity:.04;transform:translateY(-50%) translate(0)}}.DashboardPage-module__heroContent___rRgSn{position:relative;z-index:1;display:flex;flex-direction:column;gap:4px}.DashboardPage-module__heroGreeting___LkC-3{font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--primary-color);animation:DashboardPage-module__fadeSlideUp___svgeE .5s ease-out .1s both}.DashboardPage-module__heroTitle___583C6{margin:0;font-size:clamp(32px,5vw,48px);font-weight:800;line-height:1.1;letter-spacing:-.03em;color:var(--text-primary);animation:DashboardPage-module__fadeSlideUp___svgeE .5s ease-out .2s both}.DashboardPage-module__heroCaring___4RIkE{margin:4px 0 0;font-size:15px;color:var(--text-secondary);line-height:1.5;animation:DashboardPage-module__fadeSlideUp___svgeE .5s ease-out .3s both}.DashboardPage-module__heroMeta___-2WgN{position:relative;z-index:1;display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex-shrink:0;animation:DashboardPage-module__fadeSlideUp___svgeE .5s ease-out .35s both}@media(max-width:768px){.DashboardPage-module__heroMeta___-2WgN{align-items:flex-start;flex-direction:row;flex-wrap:wrap;gap:8px}}.DashboardPage-module__dateTimeBlock___nv-GA{display:flex;flex-direction:column;align-items:flex-end;gap:2px}@media(max-width:768px){.DashboardPage-module__dateTimeBlock___nv-GA{align-items:flex-start}}.DashboardPage-module__time___r-JWY{font-size:22px;font-weight:700;color:var(--text-primary);font-variant-numeric:tabular-nums;line-height:1.2}.DashboardPage-module__date___fd2-M{font-size:12px;color:var(--text-secondary)}.DashboardPage-module__connectionPill___Jf-zm{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:9999px;background:color-mix(in srgb,var(--bg-secondary) 82%,transparent);border:1px solid color-mix(in srgb,var(--border-color) 60%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);font-size:12px}.DashboardPage-module__statusDot___4w7W-{width:8px;height:8px;border-radius:50%;background:#9ca3af;flex-shrink:0}.DashboardPage-module__statusDot___4w7W-.DashboardPage-module__connected___CeELY{background:#10b981;box-shadow:0 0 6px #10b98180}.DashboardPage-module__statusDot___4w7W-.DashboardPage-module__connecting___j03PZ{background:#c65746;animation:DashboardPage-module__pulse___GLJju 1s ease-in-out infinite}.DashboardPage-module__statusDot___4w7W-.DashboardPage-module__disconnected___3l11q{background:#c65746}.DashboardPage-module__pillText___HO7gg{font-weight:600;color:var(--text-primary)}.DashboardPage-module__buildDate___zr4hY{font-size:11px;color:var(--text-tertiary);text-align:right}@media(max-width:768px){.DashboardPage-module__buildDate___zr4hY{text-align:left}}.DashboardPage-module__statsSection___E5LH9{position:relative;z-index:1}.DashboardPage-module__sectionHeading___j2-4e{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);margin:0 0 16px}.DashboardPage-module__bentoGrid___L3GMN{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:auto auto;gap:16px}@media(max-width:900px){.DashboardPage-module__bentoGrid___L3GMN{grid-template-columns:repeat(2,1fr)}}@media(max-width:500px){.DashboardPage-module__bentoGrid___L3GMN{grid-template-columns:1fr}}.DashboardPage-module__bentoCard___fZ0NR{display:flex;flex-direction:column;gap:16px;padding:24px;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:12px;text-decoration:none;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease;animation:DashboardPage-module__cardEnter___TzYj- .4s ease-out both}.DashboardPage-module__bentoCard___fZ0NR:hover{border-color:var(--primary-color);box-shadow:0 8px 24px #00000014;transform:translateY(-3px)}.DashboardPage-module__bentoLarge___OI8ha{grid-row:1/3;justify-content:center;background:linear-gradient(160deg,color-mix(in srgb,var(--primary-color) 6%,var(--bg-primary)),var(--bg-primary))}.DashboardPage-module__bentoLarge___OI8ha .DashboardPage-module__bentoValue___4z4aG{font-size:44px}.DashboardPage-module__bentoLarge___OI8ha .DashboardPage-module__bentoIcon___yMz7f{width:56px;height:56px}@media(max-width:900px){.DashboardPage-module__bentoLarge___OI8ha{grid-row:auto}.DashboardPage-module__bentoLarge___OI8ha .DashboardPage-module__bentoValue___4z4aG{font-size:32px}.DashboardPage-module__bentoLarge___OI8ha .DashboardPage-module__bentoIcon___yMz7f{width:44px;height:44px}}.DashboardPage-module__bentoIcon___yMz7f{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:8px;background:color-mix(in srgb,var(--primary-color) 10%,var(--bg-secondary));color:var(--primary-color);transition:background .15s ease}.DashboardPage-module__bentoCard___fZ0NR:hover .DashboardPage-module__bentoIcon___yMz7f{background:color-mix(in srgb,var(--primary-color) 16%,var(--bg-secondary))}.DashboardPage-module__bentoContent___7qrNg{display:flex;flex-direction:column;gap:2px}.DashboardPage-module__bentoValue___4z4aG{font-size:28px;font-weight:800;color:var(--text-primary);font-variant-numeric:tabular-nums;line-height:1.2}.DashboardPage-module__bentoLabel___s0-b2{font-size:13px;color:var(--text-secondary)}.DashboardPage-module__bentoSublabel___LRcJB{font-size:11px;color:var(--text-secondary);opacity:.7;margin-top:2px}.DashboardPage-module__configSection___G0W4F{position:relative;z-index:1;display:flex;flex-direction:column;gap:16px;animation:DashboardPage-module__cardEnter___TzYj- .4s ease-out .5s both}.DashboardPage-module__configPillGrid___Ie76m{display:flex;flex-wrap:wrap;gap:8px}.DashboardPage-module__configPill___C2Adr{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:9999px;font-size:13px;transition:border-color .15s ease}.DashboardPage-module__configPill___C2Adr:hover{border-color:var(--border-hover)}.DashboardPage-module__configPillWide___2Bkpx{flex-basis:100%;border-radius:8px}.DashboardPage-module__configPillLabel___eK-LR{color:var(--text-secondary);white-space:nowrap}.DashboardPage-module__configPillValue___k6VI3{font-weight:600;color:var(--text-primary)}.DashboardPage-module__configPillValue___k6VI3.DashboardPage-module__on___kqLdD{color:#10b981}.DashboardPage-module__configPillValue___k6VI3.DashboardPage-module__off___gkz6F{color:var(--text-secondary)}.DashboardPage-module__configPillMono___pEsgq{font-size:12px;font-family:Courier New,Courier,monospace;color:var(--text-secondary);word-break:break-all}.DashboardPage-module__configBadge___TrJTP{display:inline-flex;align-items:center;justify-content:center;padding:2px 8px;border-radius:9999px;border:1px solid var(--border-color);font-size:11px;font-weight:600;line-height:1.2;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.DashboardPage-module__configBadgeRoundRobin___wgPLB{color:var(--primary-color);border-color:#8b86803d;background:#8b86801f}.DashboardPage-module__configBadgeFillFirst___N5vai{color:#10b981;border-color:#10b9814d;background:#10b9811f}.DashboardPage-module__configBadgeUnknown___Jo3zP{color:var(--text-secondary);background:var(--bg-primary)}.DashboardPage-module__viewMoreLink___wKvoJ{display:inline-flex;align-items:center;font-size:13px;color:var(--primary-color);text-decoration:none;margin-top:4px;transition:color .15s ease}.DashboardPage-module__viewMoreLink___wKvoJ:hover{text-decoration:underline;color:var(--primary-hover)}@keyframes DashboardPage-module__heroEnter___LNodk{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes DashboardPage-module__fadeSlideUp___svgeE{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes DashboardPage-module__cardEnter___TzYj-{0%{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes DashboardPage-module__pulse___GLJju{0%,to{opacity:1}50%{opacity:.5}}.AiProvidersPage-module__container___y-jfS{width:100%}.AiProvidersPage-module__cardTitle___vO4i3{display:flex;align-items:center;gap:8px}.AiProvidersPage-module__cardTitleIcon___-rTw0{width:24px;height:24px}.AiProvidersPage-module__pageTitle___DoSv8{font-size:28px;font-weight:700;color:var(--text-primary);margin:0 0 32px}.AiProvidersPage-module__content___E2Czu{display:flex;flex-direction:column;gap:32px;padding-bottom:calc(var(--provider-nav-height, 60px) + 12px + env(safe-area-inset-bottom) + 16px)}.AiProvidersPage-module__section___IvT9j{display:flex;flex-direction:column;gap:16px}.AiProvidersPage-module__sectionHeader___DP-H3{display:flex;justify-content:space-between;align-items:center;gap:16px}.AiProvidersPage-module__sectionHeader___DP-H3 h3{margin:0;font-size:20px;font-weight:600;color:var(--text-primary)}.AiProvidersPage-module__providerList___mKQc1{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(350px,1fr))}@media(max-width:768px){.AiProvidersPage-module__providerList___mKQc1{grid-template-columns:1fr}}.AiProvidersPage-module__cardStats___rELY1{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;padding-top:4px}.AiProvidersPage-module__statPill___d812A{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;font-size:13px;font-weight:600;line-height:1.1;border:1px solid transparent;background-color:var(--bg-tertiary);color:var(--text-primary);white-space:nowrap}.AiProvidersPage-module__statSuccess___5dRtj{background-color:var(--success-badge-bg, #d1fae5);color:var(--success-badge-text, #065f46);border-color:var(--success-badge-border, #6ee7b7)}.AiProvidersPage-module__statFailure___krDjY{background-color:var(--failure-badge-bg);color:var(--failure-badge-text);border-color:var(--failure-badge-border)}.AiProvidersPage-module__fieldRow___XK6hX{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin-bottom:4px;font-size:13px;line-height:1.4}.AiProvidersPage-module__fieldLabel___cLX9f{color:var(--text-tertiary);font-weight:500;white-space:nowrap;flex-shrink:0}.AiProvidersPage-module__fieldValue___VdFCH{color:var(--text-primary);font-weight:600;word-break:break-all;font-family:Monaco,Menlo,Consolas,Ubuntu Mono,monospace}.AiProvidersPage-module__headerBadgeList___kwkIM{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.AiProvidersPage-module__headerBadge___eN0Fd{display:inline-flex;align-items:center;gap:4px;background:var(--accent-tertiary, #f3f4f6);border:1px solid var(--border-primary);border-radius:12px;padding:4px 10px;font-size:12px;color:var(--text-secondary)}.AiProvidersPage-module__headerBadge___eN0Fd strong{font-weight:600;color:var(--text-primary)}.AiProvidersPage-module__modelTagList___shUnj{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;align-items:center}.AiProvidersPage-module__modelCountLabel___uV8s-{display:inline-flex;align-items:center;font-size:13px;font-weight:500;line-height:1.4;color:var(--text-tertiary);white-space:nowrap;flex-shrink:0}.AiProvidersPage-module__modelTag___k-VuJ{display:inline-flex;align-items:center;gap:4px;background:var(--bg-quinary, #f8f9fa);color:var(--text-secondary);border:1px solid var(--border-secondary);border-radius:14px;padding:4px 10px;font-size:12px;transition:all .15s ease}.AiProvidersPage-module__modelTag___k-VuJ:hover{background:var(--bg-tertiary);border-color:var(--primary-color)}.AiProvidersPage-module__modelName___-6r4h{font-weight:600;color:var(--text-primary)}.AiProvidersPage-module__modelAlias___ljQjM{color:var(--text-tertiary);font-style:italic}.AiProvidersPage-module__modelAlias___ljQjM:before{content:"→ "}.AiProvidersPage-module__excludedModelTag___emTfi{background:var(--warning-bg, #fef3c7);border-color:var(--warning-border, #fbbf24);color:var(--warning-text, #92400e)}.AiProvidersPage-module__excludedModelTag___emTfi .AiProvidersPage-module__modelName___-6r4h{color:var(--warning-text, #92400e)}.AiProvidersPage-module__excludedModelsSection___XFykq{margin-top:8px}.AiProvidersPage-module__excludedModelsLabel___Drdds{font-size:12px;font-weight:500;color:var(--warning-text, #92400e);margin-bottom:4px}.AiProvidersPage-module__apiKeyEntriesSection___60ydj{margin-top:10px}.AiProvidersPage-module__apiKeyEntriesLabel___c5W8h{font-size:12px;font-weight:600;color:var(--text-secondary);margin-bottom:6px}.AiProvidersPage-module__apiKeyEntryList___-xrgk{display:flex;flex-direction:column;gap:6px}.AiProvidersPage-module__apiKeyEntryCard___Y5gRi{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 12px;background:var(--bg-secondary, #f9fafb);border:1px solid var(--border-secondary);border-radius:8px;font-size:12px}.AiProvidersPage-module__apiKeyEntryIndex___h8oWW{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:var(--primary-color);color:#fff;font-size:11px;font-weight:600;flex-shrink:0}.AiProvidersPage-module__apiKeyEntryKey___JgU0c{font-family:Monaco,Menlo,Consolas,Ubuntu Mono,monospace;font-weight:600;color:var(--text-primary);word-break:break-all}.AiProvidersPage-module__apiKeyEntryProxy___gy9Vu{color:var(--text-tertiary);font-size:11px}.AiProvidersPage-module__apiKeyEntryProxy___gy9Vu:before{content:"| Proxy: ";color:var(--text-quaternary)}.AiProvidersPage-module__apiKeyEntryStats___Whq5E{display:flex;gap:6px;margin-left:auto}.AiProvidersPage-module__apiKeyEntryStat___rwvkB{display:inline-flex;align-items:center;gap:3px;padding:2px 6px;border-radius:10px;font-size:10px;font-weight:600}.AiProvidersPage-module__apiKeyEntryStat___rwvkB svg{display:block}.AiProvidersPage-module__apiKeyEntryStatSuccess___GXIwG{background:var(--success-badge-bg, #d1fae5);color:var(--success-badge-text, #065f46)}.AiProvidersPage-module__apiKeyEntryStatFailure___XV9wg{background:var(--failure-badge-bg);color:var(--failure-badge-text)}.AiProvidersPage-module__modelDiscoveryList___HKeOb{display:flex;flex-direction:column;gap:6px;max-height:360px;overflow-y:auto;margin-top:0;padding-right:4px}.AiProvidersPage-module__modelDiscoveryRow___3J8pc{display:inline-flex;align-items:flex-start;gap:8px;width:100%;padding:8px 10px;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-primary);cursor:pointer;transition:background .15s ease,border-color .15s ease}.AiProvidersPage-module__modelDiscoveryRow___3J8pc input[type=checkbox]{margin-top:2px;cursor:pointer}.AiProvidersPage-module__modelDiscoveryRow___3J8pc:hover{border-color:var(--primary-color);background:var(--bg-secondary)}.AiProvidersPage-module__modelDiscoverySelectionLabel___GsF2O{flex:1;min-width:0}.AiProvidersPage-module__modelDiscoveryRowSelected___VLfIp{border-color:var(--primary-color);background:var(--bg-tertiary)}.AiProvidersPage-module__modelDiscoveryMeta___7D6Y5{display:flex;flex-direction:column;gap:2px}.AiProvidersPage-module__modelDiscoveryName___yf70V{font-weight:600;color:var(--text-primary)}.AiProvidersPage-module__modelDiscoveryAlias___N2nU7{margin-left:6px;color:var(--text-tertiary);font-style:italic}.AiProvidersPage-module__modelDiscoveryDesc___nsrtd{font-size:12px;color:var(--text-secondary);line-height:1.4}.AiProvidersPage-module__modelDiscoveryToolbar___FOjvS{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.AiProvidersPage-module__modelDiscoveryToolbarActions___a8qmb{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.AiProvidersPage-module__modelDiscoverySelectionSummary___7PhM7{font-size:12px;color:var(--text-tertiary);line-height:1.4}.AiProvidersPage-module__openaiTestButtonSuccess___ZiymQ{background-color:var(--success-badge-bg, #d1fae5);border-color:var(--success-badge-border, #6ee7b7);color:var(--success-badge-text, #065f46)}.AiProvidersPage-module__openaiTestButtonSuccess___ZiymQ:hover{background-color:var(--success-badge-bg, #d1fae5);border-color:var(--success-badge-border, #6ee7b7)}.AiProvidersPage-module__statusBar___gAS9s{display:flex;align-items:center;gap:8px;margin-top:8px;padding:8px 0;max-width:280px}.AiProvidersPage-module__statusBlocks___RESqk{display:flex;gap:2px;flex:1;min-width:180px;position:relative}.AiProvidersPage-module__statusBlockWrapper___crE7L{flex:1;min-width:6px;position:relative;cursor:pointer;-webkit-tap-highlight-color:transparent}.AiProvidersPage-module__statusBlock___nUV1s{width:100%;height:8px;border-radius:2px;transition:transform .15s ease,opacity .15s ease}.AiProvidersPage-module__statusBlockWrapper___crE7L:hover .AiProvidersPage-module__statusBlock___nUV1s,.AiProvidersPage-module__statusBlockWrapper___crE7L.AiProvidersPage-module__statusBlockActive___MgbMs .AiProvidersPage-module__statusBlock___nUV1s{transform:scaleY(1.8);opacity:.9}.AiProvidersPage-module__statusBlockIdle___WEMXo{background-color:var(--border-secondary, #e5e7eb)}.AiProvidersPage-module__statusTooltip___leV9X{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);background:var(--bg-primary, #fff);border:1px solid var(--border-secondary, #e5e7eb);border-radius:6px;padding:6px 10px;font-size:11px;line-height:1.5;white-space:nowrap;box-shadow:0 4px 12px #0000001f;z-index:1000;pointer-events:none;color:var(--text-primary)}.AiProvidersPage-module__statusTooltip___leV9X:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:var(--bg-primary, #fff)}.AiProvidersPage-module__statusTooltip___leV9X:before{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:var(--border-secondary, #e5e7eb)}.AiProvidersPage-module__statusTooltipLeft___avU77{left:0;transform:translate(0)}.AiProvidersPage-module__statusTooltipLeft___avU77:after,.AiProvidersPage-module__statusTooltipLeft___avU77:before{left:8px;transform:none}.AiProvidersPage-module__statusTooltipRight___k2gcI{left:auto;right:0;transform:translate(0)}.AiProvidersPage-module__statusTooltipRight___k2gcI:after,.AiProvidersPage-module__statusTooltipRight___k2gcI:before{left:auto;right:8px;transform:none}.AiProvidersPage-module__tooltipTime___SU0zH{color:var(--text-secondary);display:block;margin-bottom:2px}.AiProvidersPage-module__tooltipStats___c6Xho{display:flex;align-items:center;gap:8px}.AiProvidersPage-module__tooltipSuccess___Nl3Pt{color:var(--success-color, #22c55e)}.AiProvidersPage-module__tooltipFailure___1XMCP{color:var(--danger-color, #ef4444)}.AiProvidersPage-module__tooltipRate___YDCOe{color:var(--text-secondary);margin-left:2px}.AiProvidersPage-module__statusRate___mqcEs{display:flex;align-items:center;gap:4px;font-size:12px;font-weight:600;white-space:nowrap;padding:4px 8px;border-radius:6px;background:var(--bg-tertiary)}.AiProvidersPage-module__statusRateHigh___GpDhl{color:var(--success-badge-text, #065f46);background:var(--success-badge-bg, #d1fae5)}.AiProvidersPage-module__statusRateMedium___hdtEj{color:var(--warning-text, #92400e);background:var(--warning-bg, #fef3c7)}.AiProvidersPage-module__statusRateLow___mNI2c{color:var(--failure-badge-text);background:var(--failure-badge-bg)}@media(max-width:768px){.AiProvidersPage-module__statusTooltip___leV9X{font-size:12px;padding:8px 12px}.AiProvidersPage-module__statusBlocks___RESqk{min-width:140px}}.AiProvidersPage-module__openaiEditForm___axTov{display:flex;flex-direction:column;gap:16px}.AiProvidersPage-module__openaiEditForm___axTov .form-group,.AiProvidersPage-module__openaiEditForm___axTov .AiProvidersPage-module__modelConfigSection___0v-e8{margin-bottom:0}.AiProvidersPage-module__openaiEditForm___axTov .status-badge{margin-bottom:0;align-self:flex-start}.AiProvidersPage-module__sectionHint___-aBFT{margin:0;font-size:13px;line-height:1.5;color:var(--text-secondary)}.AiProvidersPage-module__openaiModelsContent___yEApy{display:flex;flex-direction:column;gap:16px}.AiProvidersPage-module__openaiModelsContent___yEApy .form-group{margin-bottom:0}.AiProvidersPage-module__openaiModelsEndpointSection___FvBIQ{display:flex;flex-direction:column;gap:4px}.AiProvidersPage-module__openaiModelsEndpointLabel___-rOEU{display:block;margin:0;font-weight:600;color:var(--text-primary)}.AiProvidersPage-module__openaiModelsEndpointControls___pLkMs{display:flex;align-items:center;gap:8px}@media(max-width:768px){.AiProvidersPage-module__openaiModelsEndpointControls___pLkMs{flex-direction:column;align-items:stretch}}.AiProvidersPage-module__openaiModelsEndpointInput___4xH3Y{flex:1;min-width:0}.AiProvidersPage-module__modelConfigSection___0v-e8{margin-bottom:16px;display:flex;flex-direction:column;gap:8px}.AiProvidersPage-module__modelConfigHeader___bXtq4{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}@media(max-width:768px){.AiProvidersPage-module__modelConfigHeader___bXtq4{align-items:flex-start}}.AiProvidersPage-module__modelConfigTitle___ppVRn{margin:0;font-weight:600;color:var(--text-primary);line-height:1.5}.AiProvidersPage-module__modelConfigToolbar___nrb6R{display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:flex-end}@media(max-width:768px){.AiProvidersPage-module__modelConfigToolbar___nrb6R{width:100%;justify-content:flex-start}}.AiProvidersPage-module__modelConfigToolbar___nrb6R .btn{white-space:nowrap}.AiProvidersPage-module__modelInputList___AbYq6{gap:4px}.AiProvidersPage-module__modelInputRow___j-ubV{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto;gap:8px;align-items:center}@media(max-width:768px){.AiProvidersPage-module__modelInputRow___j-ubV{grid-template-columns:minmax(0,1fr) auto;row-gap:4px}.AiProvidersPage-module__modelInputRow___j-ubV>:nth-child(2){display:none}.AiProvidersPage-module__modelInputRow___j-ubV>:nth-child(3){grid-column:1/3}.AiProvidersPage-module__modelInputRow___j-ubV>:nth-child(4){grid-column:2/3;grid-row:1/2}}.AiProvidersPage-module__modelInputField___QdqkU{min-width:0}.AiProvidersPage-module__modelRowRemoveButton___lEFpT{justify-self:center}.AiProvidersPage-module__modelTestPanel___SyW9P{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-top:0;padding:8px 16px;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-secondary)}@media(max-width:768px){.AiProvidersPage-module__modelTestPanel___SyW9P{flex-direction:column;align-items:stretch}}.AiProvidersPage-module__modelTestMeta___XMH-g{display:flex;flex-direction:column;gap:6px;min-width:0}.AiProvidersPage-module__modelTestLabel___HqcWx{font-size:13px;font-weight:600;color:var(--text-secondary);line-height:1.5}.AiProvidersPage-module__modelTestHint___kUgyp{font-size:12px;color:var(--text-tertiary);line-height:1.5}.AiProvidersPage-module__modelTestControls___yPmI0{display:flex;align-items:center;justify-content:flex-end;gap:4px;flex:1;min-width:0}@media(max-width:768px){.AiProvidersPage-module__modelTestControls___yPmI0{justify-content:flex-start}}.AiProvidersPage-module__keyEntriesSection___XD0xH{margin-bottom:0;display:flex;flex-direction:column;gap:8px}.AiProvidersPage-module__keyEntriesHeader___yZxok{display:flex;flex-direction:column;gap:6px;margin-bottom:0}.AiProvidersPage-module__keyEntriesTitle___MEybu{display:block;margin:0;font-weight:600;color:var(--text-primary);line-height:1.5}.AiProvidersPage-module__keyEntriesHint___gn0EN{font-size:13px;line-height:1.5;color:var(--text-secondary)}.AiProvidersPage-module__keyEntriesList___Gtpin{display:flex;flex-direction:column;gap:8px}.AiProvidersPage-module__keyEntriesToolbar___eSzyC{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.AiProvidersPage-module__keyEntriesCount___e6jgL{font-size:13px;font-weight:600;color:var(--text-secondary)}.AiProvidersPage-module__keyTableShell___0nNxe{overflow-x:auto;border-radius:8px}.AiProvidersPage-module__keyTableHeader___ZbWah{display:grid;grid-template-columns:46px 56px minmax(220px,1.4fr) minmax(200px,1.1fr) 180px;gap:8px;min-width:760px;padding:10px 16px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-bottom:none;border-radius:8px 8px 0 0;font-size:12px;font-weight:600;color:var(--text-secondary);text-transform:none;align-items:center;text-align:center}.AiProvidersPage-module__keyTableRow___0MOQW{display:grid;grid-template-columns:46px 56px minmax(220px,1.4fr) minmax(200px,1.1fr) 180px;gap:8px;min-width:760px;padding:10px 16px;background:var(--bg-secondary);border:1px solid var(--border-color);border-top:none;align-items:center}.AiProvidersPage-module__keyTableRow___0MOQW:last-child{border-radius:0 0 8px 8px}.AiProvidersPage-module__keyTableRow___0MOQW:hover{background:var(--bg-tertiary)}.AiProvidersPage-module__keyTableColIndex___U12X-{display:flex;align-items:center;justify-content:center;font-weight:600;color:var(--text-tertiary)}.AiProvidersPage-module__keyTableColStatus___Dzw88{display:flex;align-items:center;justify-content:center}.AiProvidersPage-module__keyTableColStatus___Dzw88 svg{display:block}.AiProvidersPage-module__keyTableColKey___V9Md3,.AiProvidersPage-module__keyTableColProxy___9hcue{min-width:0;display:flex;align-items:center;justify-content:center}.AiProvidersPage-module__keyTableColAction___oZsbE{display:flex;align-items:center;justify-content:center;gap:4px;flex-shrink:0;white-space:nowrap}.AiProvidersPage-module__keyTableInput___bo5JN{width:100%;padding:8px 10px;font-size:14px;min-height:38px;text-align:center}.AiProvidersPage-module__addKeyButton___xuMah{align-self:auto;margin-top:0}.AiProvidersPage-module__openaiTestSelect___7-Upw{flex:1 1 260px;min-width:180px;max-width:380px}@media(max-width:768px){.AiProvidersPage-module__openaiTestSelect___7-Upw{min-width:0;max-width:none}}.AiProvidersPage-module__modelTestAllButton___SRL9M{white-space:nowrap;flex-shrink:0}.AiProvidersPage-module__statusIconWrapper___yoMZR{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;color:var(--text-secondary);flex-shrink:0}.AiProvidersPage-module__statusIconSpin___DC8Ww{animation:AiProvidersPage-module__spin___D9eR3 1s linear infinite}@keyframes AiProvidersPage-module__spin___D9eR3{0%{transform:rotate(0)}to{transform:rotate(360deg)}}[data-theme=dark] .AiProvidersPage-module__headerBadge___eN0Fd{background:#8b868024;border-color:#8b868059;color:var(--text-secondary)}[data-theme=dark] .AiProvidersPage-module__headerBadge___eN0Fd strong{color:var(--text-secondary)}[data-theme=dark] .AiProvidersPage-module__modelTag___k-VuJ{background:#8b86801a;border-color:var(--border-secondary)}[data-theme=dark] .AiProvidersPage-module__excludedModelTag___emTfi{background:#c6574638;border-color:#c657468c;color:var(--warning-color)}[data-theme=dark] .AiProvidersPage-module__excludedModelTag___emTfi .AiProvidersPage-module__modelName___-6r4h,[data-theme=dark] .AiProvidersPage-module__excludedModelsLabel___Drdds{color:var(--warning-color)}[data-theme=dark] .AiProvidersPage-module__apiKeyEntryCard___Y5gRi{background:var(--bg-tertiary);border-color:var(--border-primary)}[data-theme=dark] .AiProvidersPage-module__apiKeyEntryIndex___h8oWW{background:var(--primary-color)}[data-theme=dark] .AiProvidersPage-module__statusBlockIdle___WEMXo{background-color:var(--border-primary, #374151)}[data-theme=dark] .AiProvidersPage-module__statusTooltip___leV9X{background:var(--bg-secondary, #1f2937);border-color:var(--border-primary, #374151);box-shadow:0 4px 12px #0006}[data-theme=dark] .AiProvidersPage-module__statusTooltip___leV9X:after{border-top-color:var(--bg-secondary, #1f2937)}[data-theme=dark] .AiProvidersPage-module__statusTooltip___leV9X:before{border-top-color:var(--border-primary, #374151)}[data-theme=dark] .AiProvidersPage-module__statusRateHigh___GpDhl{background:#22c55e33;color:#86efac}[data-theme=dark] .AiProvidersPage-module__statusRateMedium___hdtEj{background:#fbbf2433;color:#fde68a}[data-theme=dark] .AiProvidersPage-module__statusRateLow___mNI2c{background:#c657463d;color:#f1b0a6}.ToggleSwitch-module__root___IUqKD{position:relative;display:inline-flex;align-items:center;gap:8px;cursor:pointer}.ToggleSwitch-module__labelLeft___Pc6fJ .ToggleSwitch-module__label___4iQkR{order:-1}.ToggleSwitch-module__disabled___GNGHj{cursor:not-allowed}.ToggleSwitch-module__root___IUqKD input{width:0;height:0;opacity:0;position:absolute}.ToggleSwitch-module__track___zFtXx{width:44px;height:24px;background:var(--border-color);border-radius:9999px;position:relative;transition:background .15s ease}.ToggleSwitch-module__thumb___gQ45C{position:absolute;top:3px;left:3px;width:18px;height:18px;background:#fff;border-radius:9999px;box-shadow:0 1px 2px #0000000d;transition:transform .15s ease}.ToggleSwitch-module__root___IUqKD input:checked+.ToggleSwitch-module__track___zFtXx{background:var(--primary-color)}.ToggleSwitch-module__root___IUqKD input:checked+.ToggleSwitch-module__track___zFtXx .ToggleSwitch-module__thumb___gQ45C{transform:translate(20px)}.ToggleSwitch-module__label___4iQkR{color:var(--text-primary);font-weight:600}.ProviderNav-module__navContainer___Ym-Eg{position:fixed;left:var(--content-center-x, 50%);bottom:calc(12px + env(safe-area-inset-bottom));transform:translate(-50%);z-index:50;pointer-events:auto;width:fit-content;max-width:calc(100vw - 24px)}.ProviderNav-module__navList___7nsum{position:relative;display:inline-flex;flex-direction:row;gap:6px;padding:10px 12px;background:color-mix(in srgb,var(--bg-primary) 82%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid color-mix(in srgb,var(--border-color) 60%,transparent);border-radius:999px;box-shadow:0 4px 24px #00000014;overflow-x:auto;scrollbar-width:none;max-width:inherit}.ProviderNav-module__navList___7nsum::-webkit-scrollbar{display:none}.ProviderNav-module__indicator___Ta8ib{position:absolute;top:0;left:0;pointer-events:none;opacity:0;border-radius:999px;background:#8b868029;box-shadow:inset 0 0 0 2px var(--primary-color);transition:transform .22s cubic-bezier(.22,1,.36,1),width .22s cubic-bezier(.22,1,.36,1),height .22s cubic-bezier(.22,1,.36,1),opacity .12s ease;will-change:transform,width,height}.ProviderNav-module__indicatorVisible___U7LEL{opacity:1}.ProviderNav-module__indicatorNoTransition___dtZdn{transition:none}.ProviderNav-module__navItem___LRkPI{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:none;background:transparent;border-radius:999px;cursor:pointer;transition:background-color .2s ease,transform .15s ease;flex:0 0 auto}.ProviderNav-module__navItem___LRkPI:hover{background:color-mix(in srgb,var(--text-primary) 10%,transparent);transform:scale(1.08)}.ProviderNav-module__navItem___LRkPI:active{transform:scale(.95)}.ProviderNav-module__navItem___LRkPI.ProviderNav-module__active___Jo0X6:hover{background:transparent;transform:none}.ProviderNav-module__icon___X-NJQ{width:24px;height:24px;object-fit:contain}.ProviderNav-module__active___Jo0X6{background:transparent;box-shadow:none}[data-theme=dark] .ProviderNav-module__navList___7nsum{background:color-mix(in srgb,var(--bg-primary) 82%,transparent);border-color:color-mix(in srgb,var(--border-color) 55%,transparent);box-shadow:0 4px 24px #0006}[data-theme=dark] .ProviderNav-module__indicator___Ta8ib{background:#8b868047}@media(max-width:1200px){.ProviderNav-module__navContainer___Ym-Eg{max-width:calc(100vw - 16px)}.ProviderNav-module__navList___7nsum{gap:6px;padding:8px 10px}.ProviderNav-module__navItem___LRkPI{width:36px;height:36px}.ProviderNav-module__icon___X-NJQ{width:22px;height:22px}}@media(prefers-reduced-motion:reduce){.ProviderNav-module__indicator___Ta8ib{transition:none}.ProviderNav-module__navItem___LRkPI{transition:background-color .2s ease}}.SecondaryScreenShell-module__container___9DAwq{display:flex;flex-direction:column;gap:24px;min-height:0}.SecondaryScreenShell-module__topBar___vHzq4{position:sticky;top:0;z-index:5;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;padding:8px 16px;background:var(--bg-secondary);border-bottom:1px solid var(--border-color);min-height:44px}.SecondaryScreenShell-module__topBarTitle___Q8LCy{min-width:0;text-align:center;font-size:16px;font-weight:650;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;justify-self:center}.SecondaryScreenShell-module__backButton___d6Zgy{padding-left:6px;padding-right:10px;justify-self:start;gap:0}.SecondaryScreenShell-module__backButton___d6Zgy>span:last-child{display:inline-flex;align-items:center;gap:6px}.SecondaryScreenShell-module__backIcon___R8Iyn{display:inline-flex;align-items:center;justify-content:center}.SecondaryScreenShell-module__backIcon___R8Iyn svg{display:block}.SecondaryScreenShell-module__backText___CODk7{font-weight:600;line-height:18px}.SecondaryScreenShell-module__rightSlot___ZvWJR{justify-self:end;display:flex;justify-content:flex-end}.SecondaryScreenShell-module__loadingState___4Jbsa{display:flex;align-items:center;justify-content:center;gap:8px;padding:48px 0;color:var(--text-secondary)}.SecondaryScreenShell-module__content___nVk3R{display:flex;flex-direction:column;gap:24px}.SecondaryScreenShell-module__contentWithFloatingAction___4gXgb{padding-bottom:calc(var(--secondary-shell-floating-action-height, 56px) + 12px + env(safe-area-inset-bottom))}.SecondaryScreenShell-module__floatingActionContainer___sSKk-{position:fixed;left:var(--content-center-x, 50%);bottom:calc(12px + env(safe-area-inset-bottom));transform:translate(-50%);z-index:50;pointer-events:none;width:fit-content;max-width:calc(100vw - 24px)}.SecondaryScreenShell-module__floatingActionSurface___Wfab-{pointer-events:auto;display:inline-flex;align-items:center;gap:8px;padding:10px 12px;border-radius:999px;background:color-mix(in srgb,var(--bg-primary) 82%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid color-mix(in srgb,var(--border-color) 60%,transparent);box-shadow:0 4px 24px #00000014}[data-theme=dark] .SecondaryScreenShell-module__floatingActionSurface___Wfab-{background:color-mix(in srgb,var(--bg-primary) 82%,transparent);border-color:color-mix(in srgb,var(--border-color) 55%,transparent);box-shadow:0 4px 24px #0006}@media(max-width:1200px){.SecondaryScreenShell-module__floatingActionContainer___sSKk-{max-width:calc(100vw - 16px)}.SecondaryScreenShell-module__floatingActionSurface___Wfab-{padding:8px 10px}}.AiProvidersEditLayout-module__content___v2E8m{width:100%;max-width:960px;margin:0 auto}.AiProvidersEditLayout-module__floatingActions___PxOCK{display:inline-flex;align-items:center;gap:8px}.AiProvidersEditLayout-module__floatingBackButton___8aBq-{min-width:82px}.AiProvidersEditLayout-module__floatingSaveButton___mkAOu{min-width:88px}.AiProvidersEditLayout-module__upstreamApiKeyRow___z09Am{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:16px}.AiProvidersEditLayout-module__upstreamApiKeyHint___xz0n6{margin:0;color:var(--text-secondary);font-size:13px}.AiProvidersEditLayout-module__ampcodeUpstreamMappingsHeader___QmHOa{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.AiProvidersEditLayout-module__ampcodeUpstreamMappingsHeader___QmHOa label{margin:0}.AiProvidersEditLayout-module__ampcodeUpstreamMappingsList___L5-l5{display:flex;flex-direction:column;gap:12px}.AiProvidersEditLayout-module__ampcodeUpstreamMappingCard___bQzJ0{border:1px solid var(--border-color);border-radius:12px;background:var(--bg-secondary);padding:12px;display:flex;flex-direction:column;gap:8px}.AiProvidersEditLayout-module__ampcodeUpstreamMappingCardTop___V69Ba{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.AiProvidersEditLayout-module__ampcodeUpstreamMappingTitle___ofJgZ{font-size:12px;font-weight:600;color:var(--text-secondary)}.QuotaPage-module__container___CkTNE{display:flex;flex-direction:column;gap:24px}.QuotaPage-module__pageHeader___7RVAE{display:flex;flex-direction:column;gap:8px}.QuotaPage-module__pageTitle___c6BF7{font-size:28px;font-weight:700;color:var(--text-primary);margin:0}.QuotaPage-module__description___qDPuI{font-size:14px;color:var(--text-secondary);margin:0}.QuotaPage-module__headerActions___Jfu3A{display:flex;gap:8px;flex-wrap:wrap;align-items:center;justify-content:flex-end;min-width:0}.QuotaPage-module__headerActions___Jfu3A .btn.btn-sm{line-height:16px;min-width:0}.QuotaPage-module__headerActions___Jfu3A svg{display:block}@media(max-width:768px){.QuotaPage-module__headerActions___Jfu3A{width:100%;justify-content:stretch}}.QuotaPage-module__titleWrapper___lHVCF{display:flex;align-items:center;gap:8px;line-height:24px}.QuotaPage-module__countBadge___tuPLs{display:inline-flex;align-items:center;justify-content:center;height:24px;min-width:24px;padding:0 8px;border-radius:999px;font-size:13px;font-weight:600;color:var(--count-badge-text);background-color:var(--count-badge-bg);box-sizing:border-box}.QuotaPage-module__errorBox___Ub2Qs{padding:16px;background-color:#c657461a;border:1px solid var(--danger-color);border-radius:8px;color:var(--danger-color);font-size:14px}.QuotaPage-module__pageSizeSelect___1AaaU{padding:8px 12px;border:1px solid var(--border-color);border-radius:8px;background-color:var(--bg-primary);color:var(--text-primary);font-size:14px;cursor:text;height:38px;box-sizing:border-box}.QuotaPage-module__pageSizeSelect___1AaaU:focus{outline:none;border-color:var(--primary-color)}.QuotaPage-module__statsInfo___coFxw{padding:8px 12px;background-color:var(--bg-secondary);border-radius:8px;font-size:13px;color:var(--text-secondary);white-space:nowrap;height:38px;box-sizing:border-box;display:flex;align-items:center}.QuotaPage-module__antigravityGrid___d29-f,.QuotaPage-module__claudeGrid___g3N0r,.QuotaPage-module__codexGrid___gQjcK,.QuotaPage-module__geminiCliGrid___R6KEW,.QuotaPage-module__kimiGrid___-9u7J{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(380px,1fr))}@media(max-width:768px){.QuotaPage-module__antigravityGrid___d29-f,.QuotaPage-module__claudeGrid___g3N0r,.QuotaPage-module__codexGrid___gQjcK,.QuotaPage-module__geminiCliGrid___R6KEW,.QuotaPage-module__kimiGrid___-9u7J{grid-template-columns:1fr}}.QuotaPage-module__antigravityControls___jdhuf,.QuotaPage-module__claudeControls___CJ9XX,.QuotaPage-module__codexControls___ZabMA,.QuotaPage-module__geminiCliControls___aWZsx,.QuotaPage-module__kimiControls___3WNBe{display:flex;gap:16px;flex-wrap:wrap;align-items:flex-end;margin-bottom:16px}.QuotaPage-module__antigravityControl___Z2Ti6,.QuotaPage-module__claudeControl___4J9Tz,.QuotaPage-module__codexControl___P4r4g,.QuotaPage-module__geminiCliControl___SIXi-,.QuotaPage-module__kimiControl___5rxbt{display:flex;flex-direction:column;gap:4px}.QuotaPage-module__antigravityControl___Z2Ti6 label,.QuotaPage-module__claudeControl___4J9Tz label,.QuotaPage-module__codexControl___P4r4g label,.QuotaPage-module__geminiCliControl___SIXi- label,.QuotaPage-module__kimiControl___5rxbt label{font-size:12px;color:var(--text-secondary);font-weight:500;white-space:nowrap}.QuotaPage-module__viewModeToggle___BHo1O{display:inline-flex;gap:4px;align-items:center;padding:3px;border-radius:999px;background:color-mix(in srgb,var(--bg-secondary) 92%,transparent);border:1px solid color-mix(in srgb,var(--border-color) 88%,transparent);box-shadow:inset 0 1px #ffffff29}@media(max-width:768px){.QuotaPage-module__viewModeToggle___BHo1O{flex:1 1 auto;width:100%}}.QuotaPage-module__viewModeButton___jjKnb.btn.btn-sm{padding:8px 14px;border-radius:999px;border-color:transparent;background:transparent;color:var(--text-secondary);box-shadow:none}.QuotaPage-module__viewModeButton___jjKnb.btn.btn-sm:hover:not(:disabled){border-color:transparent;background:color-mix(in srgb,var(--bg-hover) 72%,transparent);color:var(--text-primary)}.QuotaPage-module__viewModeButton___jjKnb.btn.btn-sm>span{white-space:nowrap}@media(max-width:768px){.QuotaPage-module__viewModeButton___jjKnb.btn.btn-sm{flex:1 1 0}}.QuotaPage-module__viewModeButtonActive___LGwRk.btn.btn-sm{background:var(--primary-color);border-color:var(--primary-color);color:var(--primary-contrast, #fff);box-shadow:0 8px 18px -14px #00000073}.QuotaPage-module__viewModeButtonActive___LGwRk.btn.btn-sm:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover);color:var(--primary-contrast, #fff)}.QuotaPage-module__refreshAllButton___c9-I-.btn.btn-sm{padding-inline:14px;border-radius:999px;background:color-mix(in srgb,var(--primary-color) 12%,var(--bg-secondary));border-color:color-mix(in srgb,var(--primary-color) 22%,var(--border-color));color:var(--text-primary)}.QuotaPage-module__refreshAllButton___c9-I-.btn.btn-sm>span{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}.QuotaPage-module__refreshAllButton___c9-I-.btn.btn-sm:hover:not(:disabled){background:color-mix(in srgb,var(--primary-color) 16%,var(--bg-secondary));border-color:color-mix(in srgb,var(--primary-color) 34%,var(--border-color))}@media(max-width:768px){.QuotaPage-module__refreshAllButton___c9-I-.btn.btn-sm{width:100%;justify-content:center}}[data-theme=dark] .QuotaPage-module__viewModeToggle___BHo1O{box-shadow:inset 0 1px #ffffff0a}[data-theme=dark] .QuotaPage-module__refreshAllButton___c9-I-.btn.btn-sm{background:color-mix(in srgb,var(--primary-color) 18%,var(--bg-secondary));border-color:color-mix(in srgb,var(--primary-color) 32%,var(--border-color))}@media(max-width:768px){.QuotaPage-module__headerActions___Jfu3A{gap:4px}}.QuotaPage-module__claudeCard___z9zBZ{background-image:linear-gradient(180deg,#fbece42e,#fbece400)}.QuotaPage-module__antigravityCard___0jKaG{background-image:linear-gradient(180deg,#e0f7fa1f,#e0f7fa00)}.QuotaPage-module__codexCard___2xhZX{background-image:linear-gradient(180deg,#eae7ff2e,#eae7ff00)}.QuotaPage-module__geminiCliCard___i8Qjn{background-image:linear-gradient(180deg,#e0e8ff33,#e0e8ff00)}.QuotaPage-module__kimiCard___WWvTD{background-image:linear-gradient(180deg,#dce8ff33,#dce8ff00)}.QuotaPage-module__quotaSection___Yb6bk{display:flex;flex-direction:column;gap:8px;padding-top:8px;margin-top:4px;border-top:1px dashed var(--border-color)}.QuotaPage-module__quotaRow___uNjD0{display:flex;flex-direction:column;gap:4px}.QuotaPage-module__quotaRowHeader___jr9zd{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}@media(max-width:768px){.QuotaPage-module__quotaRowHeader___jr9zd{flex-direction:column;align-items:flex-start}}.QuotaPage-module__quotaModel___-3mcR{font-size:13px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}@media(max-width:768px){.QuotaPage-module__quotaModel___-3mcR{white-space:normal}}.QuotaPage-module__quotaBar___ATY20{height:8px;background-color:var(--bg-tertiary);border-radius:999px;overflow:hidden}.QuotaPage-module__quotaBarFill___arMGf{height:100%;background-color:var(--success-color, #22c55e);transition:width .2s ease}.QuotaPage-module__quotaBarFillHigh___yfdzz{background-color:var(--success-color, #22c55e)}.QuotaPage-module__quotaBarFillMedium___PbU2j{background-color:var(--quota-medium-color, #e0aa14)}.QuotaPage-module__quotaBarFillLow___1dvgT{background-color:var(--danger-color)}.QuotaPage-module__quotaMeta___2Gr-S{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-secondary);white-space:nowrap}@media(max-width:768px){.QuotaPage-module__quotaMeta___2Gr-S{justify-content:flex-start}}.QuotaPage-module__quotaPercent___dwFKN{font-weight:600;color:var(--text-primary)}.QuotaPage-module__quotaReset___AQC0c{color:var(--text-tertiary)}.QuotaPage-module__quotaAmount___liJkK{color:var(--text-secondary)}.QuotaPage-module__quotaMessage___tXEKQ{font-size:12px;color:var(--text-tertiary);text-align:center;padding:8px 0}.QuotaPage-module__quotaMessageAction___lCJz4{width:100%;border:none;background:none;cursor:pointer;text-decoration:underline}.QuotaPage-module__quotaMessageAction___lCJz4:hover:not(:disabled){color:var(--text-primary)}.QuotaPage-module__quotaMessageAction___lCJz4:disabled{cursor:not-allowed;opacity:.6;text-decoration:none}.QuotaPage-module__quotaError___rIKP-{font-size:12px;color:var(--danger-color);background-color:#c6574614;border:1px solid var(--danger-color);border-radius:4px;padding:4px 8px}.QuotaPage-module__quotaWarning___phfIc{font-size:12px;color:var(--warning-text);background-color:var(--warning-bg);border:1px solid var(--warning-border);border-radius:4px;padding:4px 8px}.QuotaPage-module__codexPlan___cNsir{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary)}.QuotaPage-module__codexPlanLabel___NR4tn{color:var(--text-tertiary)}.QuotaPage-module__codexPlanValue___TZDzO{font-weight:600;color:var(--text-primary);text-transform:capitalize}.QuotaPage-module__premiumPlanValue___7ouKX{position:relative;display:inline-flex;align-items:center;font-weight:700;font-size:12px;padding:2px 8px;border-radius:999px;overflow:visible;isolation:isolate;background:radial-gradient(circle at 18% 24%,#fffffff5,#ffffffb8 18%,#fff0 42%),linear-gradient(135deg,#fff9e3,#ffe07f 52%,#e0aa14);border:1px solid rgba(217,165,22,.72);box-shadow:0 1px 3px #855c0029,0 0 0 1px #ffffff38 inset,0 0 16px #ffd66247;color:#6b4b00;text-shadow:0 1px 0 rgba(255,255,255,.55);text-transform:capitalize}.QuotaPage-module__premiumPlanValue___7ouKX:before{content:"";position:absolute;inset:-6px -9px;border-radius:inherit;background:radial-gradient(circle at 18% 22%,#ffffffe6,#ffed9e94 32%,#ffd75b00 72%);filter:blur(9px);opacity:.75;pointer-events:none;z-index:-1}@media(dynamic-range:high){.QuotaPage-module__premiumPlanValue___7ouKX{background:radial-gradient(circle at 18% 24%,color(display-p3 1 .99 .94),color(display-p3 1 .97 .82 / .82) 18%,color(display-p3 1 .95 .7 / 0) 42%),linear-gradient(135deg,color(display-p3 1 .98 .88),color(display-p3 .99 .86 .34),color(display-p3 .92 .68 .05));border-color:color(display-p3 .9 .73 .12 / .85);box-shadow:0 1px 4px color(display-p3 .45 .28 0 / .22),0 0 0 1px color(display-p3 1 .98 .86 / .3) inset,0 0 18px color(display-p3 1 .89 .2 / .36);color:color(display-p3 .43 .3 0)}}@supports (color: color(rec2100-linear 1 1 1)){@media(dynamic-range:high){.QuotaPage-module__premiumPlanValue___7ouKX{dynamic-range-limit:no-limit;box-shadow:0 1px 4px color(display-p3 .45 .28 0 / .22),0 0 0 1px color(display-p3 1 .98 .86 / .3) inset,0 0 14px color(display-p3 1 .89 .2 / .36),0 0 30px color(rec2100-linear 3.6 2.9 .7 / .48)}.QuotaPage-module__premiumPlanValue___7ouKX:before{background:radial-gradient(circle at 18% 22%,color(rec2100-linear 6.5 6.2 5.4 / .92),color(rec2100-linear 2.4 2 .6 / .62) 34%,color(rec2100-linear 1 .85 .12 / 0) 76%);opacity:.92}}}[data-theme=dark] .QuotaPage-module__premiumPlanValue___7ouKX{background:radial-gradient(circle at 18% 24%,#ffe58a52,#ffd6622e 18%,#ffd66200 44%),linear-gradient(135deg,#4f3d0b,#6e5510 48%,#8f6d10);border-color:#e2b432b3;box-shadow:0 1px 6px #00000047,0 0 0 1px #ffdc7829 inset,0 0 18px #ffc42c38;color:#fff0a8;text-shadow:0 0 10px rgba(255,212,79,.22)}[data-theme=dark] .QuotaPage-module__premiumPlanValue___7ouKX:before{background:radial-gradient(circle at 18% 24%,#ffe58a6b,#ffc54247 34%,#fb00 74%);opacity:.8}@media(dynamic-range:high){[data-theme=dark] .QuotaPage-module__premiumPlanValue___7ouKX{background:radial-gradient(circle at 18% 24%,color(display-p3 1 .89 .38 / .38),color(display-p3 1 .82 .2 / .2) 18%,color(display-p3 1 .82 .2 / 0) 44%),linear-gradient(135deg,color(display-p3 .33 .25 .04),color(display-p3 .48 .36 .08),color(display-p3 .62 .46 .09));border-color:color(display-p3 .78 .6 .16 / .78);box-shadow:0 1px 8px #00000052,0 0 0 1px color(display-p3 .95 .8 .24 / .18) inset,0 0 20px color(display-p3 1 .76 .1 / .28);color:color(display-p3 1 .93 .58)}}@supports (color: color(rec2100-linear 1 1 1)){@media(dynamic-range:high){[data-theme=dark] .QuotaPage-module__premiumPlanValue___7ouKX{dynamic-range-limit:no-limit;box-shadow:0 1px 8px #00000052,0 0 0 1px color(display-p3 .95 .8 .24 / .18) inset,0 0 16px color(display-p3 1 .76 .1 / .28),0 0 28px color(rec2100-linear 4.8 3.5 .45 / .4)}[data-theme=dark] .QuotaPage-module__premiumPlanValue___7ouKX:before{background:radial-gradient(circle at 18% 24%,color(rec2100-linear 5.6 4.1 .75 / .64),color(rec2100-linear 2.2 1.5 .2 / .34) 34%,color(rec2100-linear 1.2 .9 .06 / 0) 74%);opacity:.95}}}.QuotaPage-module__fileCard___7ZTk-{background-color:var(--bg-primary);border:1px solid var(--border-color);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:8px;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}.QuotaPage-module__fileCard___7ZTk-:hover{transform:translateY(-2px);box-shadow:0 4px 6px -1px #0000001a;border-color:#2563eb33}.QuotaPage-module__cardHeader___vBGld{display:flex;align-items:center;gap:8px;min-height:28px}.QuotaPage-module__typeBadge___ubtCA{padding:4px 10px;border-radius:12px;font-size:12px;font-weight:600;white-space:nowrap;flex-shrink:0}.QuotaPage-module__fileName___ATlvN{font-size:14px;font-weight:600;color:var(--text-primary);word-break:break-all;line-height:1.4}.QuotaPage-module__pagination___W2eGv{display:flex;justify-content:center;align-items:center;gap:16px;margin-top:24px;padding-top:16px;border-top:1px solid var(--border-color)}.QuotaPage-module__pageInfo___yNU7E{font-size:13px;color:var(--text-secondary);padding:4px 16px;background-color:var(--bg-secondary);border-radius:8px}.QuotaPage-module__warningOverlay___lVjB7{position:fixed;inset:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.QuotaPage-module__warningModal___2pPNd{background-color:var(--bg-primary);border-radius:12px;padding:24px;max-width:400px;text-align:center;box-shadow:0 10px 15px -3px #0000001a}.QuotaPage-module__warningModal___2pPNd p{margin:0 0 16px;color:var(--text-primary);font-size:14px;line-height:1.6}.AuthFilesPage-module__container___u1c4k{display:flex;flex-direction:column;gap:24px;padding-bottom:calc(var(--auth-files-action-bar-height, 0px) + 16px + env(safe-area-inset-bottom))}.AuthFilesPage-module__pageHeader___DVV58{display:flex;flex-direction:column;gap:8px}.AuthFilesPage-module__pageTitle___1TOZn{font-size:28px;font-weight:700;color:var(--text-primary);margin:0}.AuthFilesPage-module__description___N3RjR{font-size:14px;color:var(--text-secondary);margin:0}.AuthFilesPage-module__headerActions___j0ROO{display:flex;gap:8px;flex-wrap:wrap;align-items:center;min-width:0;max-width:100%}.AuthFilesPage-module__headerActions___j0ROO .btn{min-width:0}@media(max-width:768px){.AuthFilesPage-module__headerActions___j0ROO{width:100%}}.AuthFilesPage-module__titleWrapper___PLYyj{display:flex;align-items:center;gap:8px;line-height:24px}.AuthFilesPage-module__countBadge___DQWug{display:inline-flex;align-items:center;justify-content:center;height:24px;min-width:24px;padding:0 8px;border-radius:999px;font-size:13px;font-weight:600;color:var(--count-badge-text);background-color:var(--count-badge-bg);box-sizing:border-box}.AuthFilesPage-module__errorBox___A9vF2{padding:16px;background-color:#c657461a;border:1px solid var(--danger-color);border-radius:8px;color:var(--danger-color);font-size:14px;margin-bottom:16px}.AuthFilesPage-module__filterSection___qQ3Zo{display:flex;flex-direction:column;gap:16px;margin-bottom:24px}.AuthFilesPage-module__filterRail___YRraq{display:flex;flex-direction:column;gap:10px;padding:12px 14px;border-radius:10px;border:1px solid color-mix(in srgb,var(--border-color) 60%,transparent);background:color-mix(in srgb,var(--bg-secondary) 60%,transparent)}@media(max-width:768px){.AuthFilesPage-module__filterRail___YRraq{padding:10px}}.AuthFilesPage-module__filterAllIconWrap___jMF1r{position:relative;border-color:color-mix(in srgb,var(--primary-color) 20%,var(--border-color));background:linear-gradient(145deg,color-mix(in srgb,var(--bg-secondary) 94%,var(--primary-color) 8%),color-mix(in srgb,var(--bg-primary) 92%,var(--primary-color) 5%));box-shadow:0 10px 22px -18px color-mix(in srgb,var(--primary-color) 50%,transparent)}.AuthFilesPage-module__filterAllIcon___mqchB{position:relative;z-index:1;display:block;color:color-mix(in srgb,var(--primary-color) 70%,var(--text-primary))}.AuthFilesPage-module__filterContent___xfK-G{display:flex;flex-direction:column;gap:16px;min-width:0}.AuthFilesPage-module__filterTags___A24A3{display:flex;flex-direction:row;flex-wrap:wrap;gap:8px}.AuthFilesPage-module__filterTag___-YnCU{display:inline-flex;align-items:center;gap:8px;padding:7px 12px 7px 8px;border-radius:10px;font-size:13px;font-weight:600;line-height:1.2;border:1px solid color-mix(in srgb,var(--border-color) 60%,transparent);background:color-mix(in srgb,var(--bg-secondary) 70%,transparent);color:var(--text-secondary);cursor:pointer;white-space:nowrap;transition:border-color .15s ease,background-color .15s ease,color .15s ease}.AuthFilesPage-module__filterTag___-YnCU:hover{border-color:color-mix(in srgb,var(--filter-color) 40%,var(--border-color));background:color-mix(in srgb,var(--bg-secondary) 90%,transparent);color:var(--text-primary)}.AuthFilesPage-module__filterTagActive___Rnbcs{border-color:color-mix(in srgb,var(--filter-color) 50%,var(--border-color));background:color-mix(in srgb,var(--filter-surface) 22%,var(--bg-secondary));color:var(--text-primary)}.AuthFilesPage-module__filterTagActive___Rnbcs .AuthFilesPage-module__filterTagIconWrap___pN6-v{border-color:color-mix(in srgb,var(--filter-color) 40%,transparent)}.AuthFilesPage-module__filterTagLabel___pP8yh{display:inline-flex;align-items:center;gap:10px;min-width:0}.AuthFilesPage-module__filterTagIconWrap___pN6-v{width:24px;height:24px;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;border:1px solid color-mix(in srgb,var(--border-color) 50%,transparent);background:color-mix(in srgb,var(--bg-tertiary) 60%,transparent)}.AuthFilesPage-module__filterTagIcon___j068V{width:16px;height:16px;flex:0 0 auto;object-fit:contain}.AuthFilesPage-module__filterTagIconFallback___4ALgn{color:var(--filter-color);font-size:14px;font-weight:700;line-height:1}.AuthFilesPage-module__filterTagText___b9X07{min-width:0;color:inherit;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.AuthFilesPage-module__filterTagCount___RxSVk{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:6px;background:color-mix(in srgb,var(--filter-color) 12%,transparent);color:var(--text-tertiary);font-size:11px;font-weight:700;font-variant-numeric:tabular-nums;flex:0 0 auto;line-height:1;text-align:center}.AuthFilesPage-module__filterTagActive___Rnbcs .AuthFilesPage-module__filterTagCount___RxSVk{background:color-mix(in srgb,var(--filter-color) 22%,transparent);color:var(--filter-color)}.AuthFilesPage-module__filterControlsPanel___V-IZn{padding:14px;border-radius:10px;border:1px solid color-mix(in srgb,var(--border-color) 60%,transparent);background:color-mix(in srgb,var(--bg-secondary) 50%,transparent)}.AuthFilesPage-module__filterControls___PfZDU{display:grid;grid-template-columns:minmax(240px,1.4fr) repeat(2,minmax(120px,.72fr)) minmax(220px,auto);gap:16px;align-items:flex-end}.AuthFilesPage-module__filterControls___PfZDU .form-group{margin:0}.AuthFilesPage-module__filterControls___PfZDU .input{height:40px;box-sizing:border-box}@media(min-width:769px)and (max-width:1024px){.AuthFilesPage-module__filterControls___PfZDU{grid-template-columns:minmax(220px,1fr) repeat(2,minmax(140px,.8fr))}}@media(max-width:768px){.AuthFilesPage-module__filterControls___PfZDU{grid-template-columns:1fr}}.AuthFilesPage-module__filterItem___Kko4o{display:flex;flex-direction:column;gap:6px;min-width:0}.AuthFilesPage-module__filterItem___Kko4o label{font-size:11px;color:var(--text-tertiary);font-weight:700;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}.AuthFilesPage-module__filterToggleItem___m2sGr{min-width:0}@media(min-width:769px)and (max-width:1024px){.AuthFilesPage-module__filterToggleItem___m2sGr{grid-column:1/-1}}.AuthFilesPage-module__filterToggleGroup___TdMH-{display:grid;grid-template-columns:1fr;gap:8px;min-height:40px}.AuthFilesPage-module__filterToggleCard___N4oxi{display:flex;align-items:center;min-height:40px;padding:0 2px;border-radius:8px;border:1px solid color-mix(in srgb,var(--border-color) 60%,transparent);background:color-mix(in srgb,var(--bg-secondary) 50%,transparent)}.AuthFilesPage-module__filterToggle___mi9Sd{display:flex;align-items:center;min-height:40px;padding-inline:2px}.AuthFilesPage-module__filterToggleLabel___5rAlu{display:inline-flex;align-items:center;color:var(--text-primary);font-size:13px;font-weight:600;white-space:nowrap}.AuthFilesPage-module__pageSizeSelect___yEBvp{width:100%;padding:8px 12px;border:1px solid color-mix(in srgb,var(--border-color) 70%,transparent);border-radius:8px;background-color:var(--bg-secondary);color:var(--text-primary);font-size:14px;cursor:text;height:40px;box-sizing:border-box}.AuthFilesPage-module__pageSizeSelect___yEBvp:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 2px color-mix(in srgb,var(--primary-color) 12%,transparent)}.AuthFilesPage-module__fileGrid___ajvi5{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr))}.AuthFilesPage-module__fileGridQuotaManaged___kOhRx{grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr))}.AuthFilesPage-module__fileGridCompact___meaAl{grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr))}.AuthFilesPage-module__antigravityGrid___N7Got{display:grid;gap:16px;grid-template-columns:repeat(3,minmax(0,1fr))}@media(min-width:769px)and (max-width:1024px){.AuthFilesPage-module__antigravityGrid___N7Got{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:768px){.AuthFilesPage-module__antigravityGrid___N7Got{grid-template-columns:1fr}}.AuthFilesPage-module__codexGrid___vLB3H{display:grid;gap:16px;grid-template-columns:repeat(3,minmax(0,1fr))}@media(min-width:769px)and (max-width:1024px){.AuthFilesPage-module__codexGrid___vLB3H{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:768px){.AuthFilesPage-module__codexGrid___vLB3H{grid-template-columns:1fr}}.AuthFilesPage-module__geminiCliGrid___5IwI3{display:grid;gap:16px;grid-template-columns:repeat(3,minmax(0,1fr))}@media(min-width:769px)and (max-width:1024px){.AuthFilesPage-module__geminiCliGrid___5IwI3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:768px){.AuthFilesPage-module__geminiCliGrid___5IwI3{grid-template-columns:1fr}}.AuthFilesPage-module__antigravityControls___gn3rt{display:flex;gap:16px;flex-wrap:wrap;align-items:flex-end;margin-bottom:16px}.AuthFilesPage-module__antigravityControl___rQ8wo{display:flex;flex-direction:column;gap:4px}.AuthFilesPage-module__antigravityControl___rQ8wo label{font-size:12px;color:var(--text-secondary);font-weight:500;white-space:nowrap}.AuthFilesPage-module__codexControls___Clxl6{display:flex;gap:16px;flex-wrap:wrap;align-items:flex-end;margin-bottom:16px}.AuthFilesPage-module__codexControl___E7Mtk{display:flex;flex-direction:column;gap:4px}.AuthFilesPage-module__codexControl___E7Mtk label{font-size:12px;color:var(--text-secondary);font-weight:500;white-space:nowrap}.AuthFilesPage-module__geminiCliControls___Y3V2-{display:flex;gap:16px;flex-wrap:wrap;align-items:flex-end;margin-bottom:16px}.AuthFilesPage-module__geminiCliControl___ZOIpb{display:flex;flex-direction:column;gap:4px}.AuthFilesPage-module__geminiCliControl___ZOIpb label{font-size:12px;color:var(--text-secondary);font-weight:500;white-space:nowrap}.AuthFilesPage-module__antigravityCard___rt36l{background-image:linear-gradient(180deg,rgba(224,247,250,.06),transparent)}.AuthFilesPage-module__claudeCard___L-dIs{background-image:linear-gradient(180deg,rgba(251,236,228,.08),transparent)}.AuthFilesPage-module__codexCard___FiEQ6{background-image:linear-gradient(180deg,rgba(234,231,255,.08),transparent)}.AuthFilesPage-module__geminiCliCard___4PuI5{background-image:linear-gradient(180deg,rgba(224,232,255,.08),transparent)}.AuthFilesPage-module__kimiCard___zWq5C{background-image:linear-gradient(180deg,rgba(220,232,255,.08),transparent)}.AuthFilesPage-module__quotaSection___hXy5f{display:flex;flex-direction:column;gap:8px;padding-top:8px;margin-top:2px;border-top:1px dashed color-mix(in srgb,var(--border-color) 82%,transparent)}.AuthFilesPage-module__quotaRow___P2dUi{display:flex;flex-direction:column;gap:4px}.AuthFilesPage-module__quotaRowHeader___IKu7H{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}@media(max-width:768px){.AuthFilesPage-module__quotaRowHeader___IKu7H{flex-direction:column;align-items:flex-start}}.AuthFilesPage-module__quotaModel___huwv6{font-size:13px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}@media(max-width:768px){.AuthFilesPage-module__quotaModel___huwv6{white-space:normal}}.AuthFilesPage-module__quotaBar___ex7am{height:8px;background-color:var(--bg-tertiary);border-radius:999px;overflow:hidden}.AuthFilesPage-module__quotaBarFill___KqH7M{height:100%;background-color:var(--success-color, #22c55e);transition:width .2s ease}.AuthFilesPage-module__quotaBarFillHigh___F8WGP{background-color:var(--success-color, #22c55e)}.AuthFilesPage-module__quotaBarFillMedium___ae0Pi{background-color:var(--quota-medium-color, #e0aa14)}.AuthFilesPage-module__quotaBarFillLow___dX4lb{background-color:var(--danger-color)}.AuthFilesPage-module__quotaMeta___HcbUH{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-secondary);white-space:nowrap}@media(max-width:768px){.AuthFilesPage-module__quotaMeta___HcbUH{justify-content:flex-start}}.AuthFilesPage-module__quotaPercent___6J9UR{font-weight:600;color:var(--text-primary)}.AuthFilesPage-module__quotaReset___bmEse{color:var(--text-tertiary)}.AuthFilesPage-module__quotaAmount___k3Wx6{color:var(--text-secondary)}.AuthFilesPage-module__quotaMessage___1w3oM{font-size:12px;color:var(--text-tertiary);text-align:center;padding:8px 0}.AuthFilesPage-module__quotaMessageAction___9r9cq{width:100%;border:none;background:none;cursor:pointer;text-decoration:underline}.AuthFilesPage-module__quotaMessageAction___9r9cq:hover:not(:disabled){color:var(--text-primary)}.AuthFilesPage-module__quotaMessageAction___9r9cq:disabled{cursor:not-allowed;opacity:.6;text-decoration:none}.AuthFilesPage-module__quotaError___dEV4B{font-size:12px;color:var(--danger-color);background-color:#c6574614;border:1px solid var(--danger-color);border-radius:4px;padding:4px 8px}.AuthFilesPage-module__quotaWarning___G1Tvc{font-size:12px;color:var(--warning-text);background-color:var(--warning-bg);border:1px solid var(--warning-border);border-radius:4px;padding:4px 8px}.AuthFilesPage-module__codexPlan___4IbAU{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary)}.AuthFilesPage-module__codexPlanLabel___RZN4K{color:var(--text-tertiary)}.AuthFilesPage-module__codexPlanValue___Z0Kgr{font-weight:600;color:var(--text-primary);text-transform:capitalize}.AuthFilesPage-module__premiumPlanValue___9WyhU{display:inline-flex;align-items:center;font-weight:700;font-size:12px;padding:2px 8px;border-radius:6px;background:#d9a51626;border:1px solid rgba(217,165,22,.3);color:#e0aa14;text-transform:capitalize}[data-theme=dark] .AuthFilesPage-module__premiumPlanValue___9WyhU{background:#e2b4321f;border-color:#e2b43247;color:#ffd862}.AuthFilesPage-module__fileCard___j9Jtq{position:relative;overflow:hidden;background-color:color-mix(in srgb,var(--bg-primary) 85%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid color-mix(in srgb,var(--border-color) 70%,transparent);border-radius:12px;padding:16px;display:flex;flex-direction:column;min-height:100%;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}.AuthFilesPage-module__fileCard___j9Jtq:hover{transform:translateY(-1px);box-shadow:0 8px 24px -12px #00000026;border-color:color-mix(in srgb,var(--primary-color) 28%,var(--border-color))}.AuthFilesPage-module__fileCardSelected___9i7m1{border-color:color-mix(in srgb,var(--primary-color) 60%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--primary-color) 30%,transparent)}.AuthFilesPage-module__fileCardSelected___9i7m1:hover{border-color:color-mix(in srgb,var(--primary-color) 60%,transparent)}.AuthFilesPage-module__fileCardDisabled___hbSbQ{opacity:.72}.AuthFilesPage-module__fileCardDisabled___hbSbQ:hover{transform:none;box-shadow:none;border-color:var(--border-color)}.AuthFilesPage-module__fileCardCompact___u9yZu{padding:12px;border-radius:10px}.AuthFilesPage-module__fileCardCompact___u9yZu .AuthFilesPage-module__fileCardMain___6JwC7,.AuthFilesPage-module__fileCardCompact___u9yZu .AuthFilesPage-module__cardHeader___uJMtL{gap:8px}.AuthFilesPage-module__fileCardCompact___u9yZu .AuthFilesPage-module__cardSelection___wOE11{margin-top:6px}.AuthFilesPage-module__fileCardCompact___u9yZu .AuthFilesPage-module__providerAvatar___4xnYu{width:34px;height:34px;border-radius:8px}.AuthFilesPage-module__fileCardCompact___u9yZu .AuthFilesPage-module__providerAvatarImage___QL5oK{width:16px;height:16px}.AuthFilesPage-module__fileCardCompact___u9yZu .AuthFilesPage-module__providerAvatarFallback___H9Mgn{font-size:14px}.AuthFilesPage-module__fileCardCompact___u9yZu .AuthFilesPage-module__cardHeaderContent___rh9WP{gap:3px}.AuthFilesPage-module__fileCardCompact___u9yZu .AuthFilesPage-module__cardBadgeRow___SeOzZ{gap:4px}.AuthFilesPage-module__fileCardCompact___u9yZu .AuthFilesPage-module__typeBadge___Dtm6A,.AuthFilesPage-module__fileCardCompact___u9yZu .AuthFilesPage-module__stateBadge___Cq7id{padding:3px 7px;font-size:10px}.AuthFilesPage-module__fileCardCompact___u9yZu .AuthFilesPage-module__fileName___DZ39s{font-size:13px;line-height:1.3;-webkit-line-clamp:1}.AuthFilesPage-module__fileCardCompact___u9yZu .AuthFilesPage-module__healthStatusMessage___KKfW-{padding:6px 8px;border-radius:8px;font-size:11px}.AuthFilesPage-module__fileCardCompact___u9yZu .AuthFilesPage-module__quotaSection___hXy5f{display:none}.AuthFilesPage-module__fileCardCompact___u9yZu .AuthFilesPage-module__cardActions___mJgkW{gap:6px;padding-top:6px}.AuthFilesPage-module__fileCardCompact___u9yZu .AuthFilesPage-module__cardActionsMain___9Lsw7{gap:4px}.AuthFilesPage-module__fileCardCompact___u9yZu .AuthFilesPage-module__primaryActionButton___ex-Us.btn.btn-sm{flex:0 1 auto;min-width:0;padding-inline:8px}.AuthFilesPage-module__fileCardCompact___u9yZu .AuthFilesPage-module__cardUtilityActions___LX5uj{gap:2px;padding:2px;border-radius:6px}.AuthFilesPage-module__fileCardCompact___u9yZu .AuthFilesPage-module__iconButton___XT5TY.btn.btn-sm{width:28px;height:28px;min-width:28px;border-radius:6px}.AuthFilesPage-module__fileCardCompact___u9yZu .AuthFilesPage-module__statusToggle___H8bxD{gap:6px}.AuthFilesPage-module__fileCardCompact___u9yZu .AuthFilesPage-module__statusToggleLabel___Wdwo7{font-size:10px}.AuthFilesPage-module__fileCardLayout___HRpBj{display:flex;align-items:stretch;gap:16px;min-height:100%}.AuthFilesPage-module__fileCardMain___6JwC7{display:flex;flex-direction:column;gap:10px;flex:1;min-width:0}.AuthFilesPage-module__cardHeader___uJMtL{display:flex;align-items:flex-start;gap:10px}.AuthFilesPage-module__cardSelection___wOE11{flex-shrink:0;margin-top:8px}.AuthFilesPage-module__providerAvatar___4xnYu{width:40px;height:40px;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;border:1px solid color-mix(in srgb,var(--border-color) 60%,transparent)}.AuthFilesPage-module__providerAvatarImage___QL5oK{width:22px;height:22px;object-fit:contain}.AuthFilesPage-module__providerAvatarFallback___H9Mgn{font-size:18px;font-weight:700;line-height:1}.AuthFilesPage-module__cardHeaderContent___rh9WP{display:flex;flex-direction:column;gap:6px;flex:1;min-width:0}.AuthFilesPage-module__cardBadgeRow___SeOzZ{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.AuthFilesPage-module__typeBadge___Dtm6A{display:inline-flex;align-items:center;padding:3px 8px;border-radius:6px;font-size:11px;font-weight:600;line-height:1;border:1px solid transparent;white-space:nowrap;flex-shrink:0}.AuthFilesPage-module__stateBadge___Cq7id{display:inline-flex;align-items:center;padding:3px 8px;border-radius:6px;font-size:10px;font-weight:700;line-height:1;white-space:nowrap;letter-spacing:.02em}.AuthFilesPage-module__stateBadgeActive___Fo6ts{color:var(--success-badge-text, #065f46);background:var(--success-badge-bg, #d1fae5);border:1px solid var(--success-badge-border, #6ee7b7)}.AuthFilesPage-module__stateBadgeWarning___vMjci{color:var(--warning-text);background:var(--warning-bg);border:1px solid var(--warning-border)}.AuthFilesPage-module__stateBadgeDisabled___uB-Ra{color:var(--text-secondary);background:color-mix(in srgb,var(--bg-tertiary) 86%,transparent);border:1px solid var(--border-color)}.AuthFilesPage-module__stateBadgeVirtual___Ig7fr{color:var(--text-secondary);background:color-mix(in srgb,var(--bg-tertiary) 82%,transparent);border:1px dashed color-mix(in srgb,var(--border-primary) 90%,transparent)}.AuthFilesPage-module__fileName___DZ39s{font-size:14px;font-weight:800;color:var(--text-primary);word-break:break-all;line-height:1.4;display:-webkit-box;overflow:hidden;-webkit-line-clamp:2;-webkit-box-orient:vertical;letter-spacing:-.01em}.AuthFilesPage-module__cardMeta___H6kAQ{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;padding:0 2px}.AuthFilesPage-module__cardMetaCompact___h-CkT{gap:3px 12px}.AuthFilesPage-module__cardMetaCompact___h-CkT .AuthFilesPage-module__metaLabel___4mGPs{font-size:10px}.AuthFilesPage-module__cardMetaCompact___h-CkT .AuthFilesPage-module__metaValue___VKbWa{font-size:11px}.AuthFilesPage-module__metaItem___f62C0{display:inline-flex;align-items:baseline;gap:5px;min-width:0;padding:0;border:none;background:none}.AuthFilesPage-module__metaLabel___4mGPs{font-size:11px;font-weight:500;color:var(--text-tertiary);line-height:1.2;white-space:nowrap}.AuthFilesPage-module__metaLabel___4mGPs:after{content:":"}.AuthFilesPage-module__metaValue___VKbWa{min-width:0;font-size:12px;font-weight:600;color:var(--text-secondary);line-height:1.4;word-break:break-word}.AuthFilesPage-module__priorityBadge___vHY0g{min-width:0}.AuthFilesPage-module__priorityValue___cH2dN{font-variant-numeric:tabular-nums}.AuthFilesPage-module__noteText___xsgqc{font-size:12px;color:var(--text-secondary);line-height:1.5;display:flex;gap:6px;align-items:flex-start;min-width:0}.AuthFilesPage-module__noteLabel___DrD8k{flex:0 0 auto;color:var(--text-tertiary);font-weight:600}.AuthFilesPage-module__noteValue___-wZpH{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-width:0;word-break:break-word}.AuthFilesPage-module__sortSelect___4fEjm{width:100%;min-width:0}.AuthFilesPage-module__healthStatusMessage___KKfW-{display:flex;align-items:flex-start;gap:6px;font-size:11px;color:var(--warning-text);background-color:color-mix(in srgb,var(--warning-bg) 60%,transparent);border:1px solid color-mix(in srgb,var(--warning-border) 60%,transparent);border-radius:8px;padding:8px 10px;word-break:break-word}.AuthFilesPage-module__messageIcon___X3Cwx{flex-shrink:0;margin-top:1px}.AuthFilesPage-module__cardInsights___ci5AY{display:flex;flex-direction:column;gap:8px;padding:0 2px}.AuthFilesPage-module__cardInsightsCompact___y0Q4G{gap:6px}.AuthFilesPage-module__cardStats___JQ4ig{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.AuthFilesPage-module__cardStatsCompact___gRvUT{gap:6px}.AuthFilesPage-module__cardStatsCompact___gRvUT .AuthFilesPage-module__statPill___wFsBu{padding:3px 8px}.AuthFilesPage-module__cardStatsCompact___gRvUT .AuthFilesPage-module__statLabel___x0iKO{font-size:10px}.AuthFilesPage-module__cardStatsCompact___gRvUT .AuthFilesPage-module__statValue___0Cyg5{font-size:12px}.AuthFilesPage-module__statPill___wFsBu{display:inline-flex;align-items:baseline;gap:5px;min-width:0;padding:4px 10px;border-radius:999px;border:none}.AuthFilesPage-module__statLabel___x0iKO{font-size:11px;font-weight:600;line-height:1}.AuthFilesPage-module__statValue___0Cyg5{font-size:13px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums}.AuthFilesPage-module__statSuccess___mh8iR{background:color-mix(in srgb,var(--success-badge-bg, #d1fae5) 50%,transparent);color:var(--success-badge-text, #065f46)}.AuthFilesPage-module__statFailure___ivDGu{background:color-mix(in srgb,var(--failure-badge-bg) 50%,transparent);color:var(--failure-badge-text)}.AuthFilesPage-module__statusPanel___jxcFi{display:flex;flex-direction:column;gap:4px}.AuthFilesPage-module__statusPanelCompact___qla9F{gap:3px}.AuthFilesPage-module__statusPanelCompact___qla9F .AuthFilesPage-module__statusPanelLabel___D3k8N{display:none}.AuthFilesPage-module__statusPanelCompact___qla9F .AuthFilesPage-module__statusBar___n-3Gp{flex-wrap:wrap;gap:8px;row-gap:6px}.AuthFilesPage-module__statusPanelCompact___qla9F .AuthFilesPage-module__statusBlocks___DpQaY{gap:2px}.AuthFilesPage-module__statusPanelCompact___qla9F .AuthFilesPage-module__statusBlockWrapper___XCgvC{min-width:5px}.AuthFilesPage-module__statusPanelCompact___qla9F .AuthFilesPage-module__statusRate___LZm5e{margin-left:auto;padding:5px 7px;font-size:11px}.AuthFilesPage-module__statusPanelLabel___D3k8N{display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:500;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.03em}.AuthFilesPage-module__statusBar___n-3Gp{display:flex;align-items:center;gap:10px;width:100%;min-width:0;padding:0;max-width:none}@media(max-width:768px){.AuthFilesPage-module__statusBar___n-3Gp{flex-direction:column;align-items:stretch}}.AuthFilesPage-module__statusBlocks___DpQaY{display:flex;gap:3px;flex:1;min-width:0;position:relative}.AuthFilesPage-module__statusBlockWrapper___XCgvC{flex:1;min-width:5px;position:relative;cursor:pointer;-webkit-tap-highlight-color:transparent}.AuthFilesPage-module__statusBlock___RPMAs{width:100%;height:6px;border-radius:999px;transition:transform .15s ease,opacity .15s ease}.AuthFilesPage-module__statusBlockWrapper___XCgvC:hover .AuthFilesPage-module__statusBlock___RPMAs,.AuthFilesPage-module__statusBlockWrapper___XCgvC.AuthFilesPage-module__statusBlockActive___pjNyd .AuthFilesPage-module__statusBlock___RPMAs{transform:scaleY(1.6);opacity:.9}.AuthFilesPage-module__statusBlockIdle___6Uc0C{background-color:var(--border-secondary, #e5e7eb)}.AuthFilesPage-module__statusTooltip___skNaB{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);background:var(--bg-quinary, var(--bg-primary, #fff));border:1px solid var(--border-secondary, #e5e7eb);border-radius:10px;padding:8px 10px;font-size:11px;line-height:1.5;white-space:nowrap;box-shadow:0 8px 24px #00000024;z-index:1000;pointer-events:none;color:var(--text-primary)}.AuthFilesPage-module__statusTooltip___skNaB:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:var(--bg-quinary, var(--bg-primary, #fff))}.AuthFilesPage-module__statusTooltip___skNaB:before{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:var(--border-secondary, #e5e7eb)}.AuthFilesPage-module__statusTooltipLeft___ZK0OM{left:0;transform:translate(0)}.AuthFilesPage-module__statusTooltipLeft___ZK0OM:after,.AuthFilesPage-module__statusTooltipLeft___ZK0OM:before{left:8px;transform:none}.AuthFilesPage-module__statusTooltipRight___MrcVP{left:auto;right:0;transform:translate(0)}.AuthFilesPage-module__statusTooltipRight___MrcVP:after,.AuthFilesPage-module__statusTooltipRight___MrcVP:before{left:auto;right:8px;transform:none}.AuthFilesPage-module__tooltipTime___6rx7A{color:var(--text-secondary);display:block;margin-bottom:2px}.AuthFilesPage-module__tooltipStats___rDF8h{display:flex;align-items:center;gap:8px}.AuthFilesPage-module__tooltipSuccess___DygUj{color:var(--success-color, #22c55e)}.AuthFilesPage-module__tooltipFailure___Som0h{color:var(--danger-color, #ef4444)}.AuthFilesPage-module__tooltipRate___gbhZZ{color:var(--text-secondary);margin-left:2px}.AuthFilesPage-module__statusRate___LZm5e{display:flex;align-items:center;gap:4px;font-size:12px;font-weight:700;white-space:nowrap;padding:6px 10px;border-radius:999px;background:var(--bg-tertiary);flex-shrink:0}.AuthFilesPage-module__statusRateHigh___seYyb{color:var(--success-badge-text, #065f46);background:var(--success-badge-bg, #d1fae5)}.AuthFilesPage-module__statusRateMedium___aNblo{color:var(--warning-text, #92400e);background:var(--warning-bg, #fef3c7)}.AuthFilesPage-module__statusRateLow___BxxBi{color:var(--failure-badge-text);background:var(--failure-badge-bg)}@media(max-width:768px){.AuthFilesPage-module__statusTooltip___skNaB{font-size:12px;padding:8px 12px}.AuthFilesPage-module__statusBlocks___DpQaY{min-width:0}}.AuthFilesPage-module__prefixProxyEditor___QyoN1{display:flex;flex-direction:column;gap:16px;max-height:60vh;overflow:auto}.AuthFilesPage-module__prefixProxyLoading___pipJw{display:flex;align-items:center;justify-content:center;gap:8px;font-size:12px;color:var(--text-secondary);padding:8px 0}.AuthFilesPage-module__prefixProxyError___HNtOZ{padding:8px 16px;border-radius:8px;border:1px solid var(--danger-color);background-color:#c657461a;color:var(--danger-color);font-size:12px}.AuthFilesPage-module__prefixProxyJsonWrapper___j237Y{display:flex;flex-direction:column;gap:6px}.AuthFilesPage-module__prefixProxyLabel___IJHtd{font-size:12px;color:var(--text-secondary);font-weight:600}.AuthFilesPage-module__prefixProxyTextarea___wcym6{width:100%;padding:8px 16px;border:1px solid var(--border-color);border-radius:8px;background-color:var(--bg-secondary);color:var(--text-primary);font-size:12px;font-family:monospace;resize:vertical;min-height:120px;box-sizing:border-box}.AuthFilesPage-module__prefixProxyTextarea___wcym6:focus{outline:none;border-color:var(--primary-color)}.AuthFilesPage-module__prefixProxyFields___da72p{display:grid;grid-template-columns:1fr;gap:8px}.AuthFilesPage-module__prefixProxyFields___da72p .form-group{margin:0}.AuthFilesPage-module__cardActions___mJgkW{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto;padding-top:8px;border-top:1px solid color-mix(in srgb,var(--border-color) 50%,transparent)}.AuthFilesPage-module__cardActionsMain___9Lsw7{display:flex;align-items:center;gap:6px;min-width:0;flex:1}.AuthFilesPage-module__primaryActionButton___ex-Us.btn.btn-sm{min-width:0;padding-inline:10px}.AuthFilesPage-module__modelsActionButton___-ihP6.btn.btn-sm{background:color-mix(in srgb,var(--primary-color) 10%,var(--bg-secondary));border-color:color-mix(in srgb,var(--primary-color) 20%,var(--border-color))}.AuthFilesPage-module__modelsActionButton___-ihP6.btn.btn-sm:hover{border-color:color-mix(in srgb,var(--primary-color) 35%,var(--border-color));background:color-mix(in srgb,var(--primary-color) 14%,var(--bg-secondary))}.AuthFilesPage-module__modelsActionButton___-ihP6.btn.btn-sm>span{display:inline-flex;align-items:center;gap:8px;min-width:0}.AuthFilesPage-module__modelsActionIconWrap___KD-87{width:22px;height:22px;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;background:color-mix(in srgb,var(--primary-color) 16%,transparent)}.AuthFilesPage-module__actionButtonLabel___B0RSa{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.AuthFilesPage-module__cardUtilityActions___LX5uj{display:flex;align-items:center;gap:3px;padding:2px;border-radius:8px;background:color-mix(in srgb,var(--bg-tertiary) 50%,transparent)}.AuthFilesPage-module__statusToggle___H8bxD{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;margin-left:auto}.AuthFilesPage-module__statusToggleLabel___Wdwo7{font-size:11px;font-weight:500;color:var(--text-tertiary)}.AuthFilesPage-module__iconButton___XT5TY.btn.btn-sm{width:32px;height:32px;min-width:32px;padding:0;box-sizing:border-box;border-radius:8px;gap:0}.AuthFilesPage-module__actionIcon___F2TRI{display:block}@media(max-width:768px){.AuthFilesPage-module__cardActions___mJgkW{flex-wrap:wrap}.AuthFilesPage-module__cardActionsMain___9Lsw7{flex-wrap:wrap;width:100%}.AuthFilesPage-module__primaryActionButton___ex-Us.btn.btn-sm{flex:1 1 auto;min-width:0}.AuthFilesPage-module__statusToggle___H8bxD{width:100%;justify-content:space-between}}.AuthFilesPage-module__pagination___Hwpg2{display:flex;justify-content:center;align-items:center;gap:16px;flex-wrap:wrap;margin-top:24px;padding-top:16px;border-top:1px solid var(--border-color)}.AuthFilesPage-module__batchActionContainer___qPwxN{position:fixed;left:var(--content-center-x, 50%);bottom:calc(16px + env(safe-area-inset-bottom));transform:translate(-50%);z-index:50;width:min(960px,100vw - 24px);max-width:calc(100vw - 24px);box-sizing:border-box;will-change:transform,opacity}.AuthFilesPage-module__batchActionBar___YEJju{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;border-radius:12px;border:1px solid color-mix(in srgb,var(--border-color) 70%,transparent);background:color-mix(in srgb,var(--bg-primary) 84%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:var(--shadow-lg)}.AuthFilesPage-module__batchActionLeft___g851y,.AuthFilesPage-module__batchActionRight___NDPeh{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.AuthFilesPage-module__batchActionRight___NDPeh{justify-content:flex-end}.AuthFilesPage-module__batchSelectionText___rSTLk{font-size:13px;font-weight:600;color:var(--text-primary);margin-right:2px}@media(max-width:768px){.AuthFilesPage-module__batchActionContainer___qPwxN{width:calc(100vw - 16px);max-width:calc(100vw - 16px);bottom:calc(12px + env(safe-area-inset-bottom))}.AuthFilesPage-module__batchActionBar___YEJju{flex-direction:column;align-items:stretch}.AuthFilesPage-module__batchActionLeft___g851y,.AuthFilesPage-module__batchActionRight___NDPeh{justify-content:center}}.AuthFilesPage-module__pageInfo___Fkfbg{font-size:13px;color:var(--text-secondary);padding:4px 16px;background-color:var(--bg-secondary);border-radius:8px}.AuthFilesPage-module__excludedList___9OGiS{display:flex;flex-direction:column;gap:8px}.AuthFilesPage-module__excludedItem___J3Xxa{display:flex;justify-content:space-between;align-items:center;padding:16px;background-color:var(--bg-secondary);border-radius:8px;border:1px solid var(--border-color);gap:16px}@media(max-width:768px){.AuthFilesPage-module__excludedItem___J3Xxa{flex-direction:column;align-items:flex-start}}.AuthFilesPage-module__excludedInfo___0hKQa{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.AuthFilesPage-module__excludedProvider___6pkYz{font-weight:600;color:var(--text-primary);font-size:14px}.AuthFilesPage-module__excludedModels___QdpJB{font-size:12px;color:var(--text-secondary)}.AuthFilesPage-module__excludedActions___jP49M{display:flex;gap:4px;flex-shrink:0}.AuthFilesPage-module__providerField___end0y{display:flex;flex-direction:column;gap:4px}.AuthFilesPage-module__providerField___end0y .form-group{margin-bottom:0}.AuthFilesPage-module__providerTagList___dCCYW{display:flex;flex-wrap:wrap;gap:4px}.AuthFilesPage-module__providerTag___RADdc{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:9999px;border:1px solid var(--border-color);background-color:var(--bg-secondary);color:var(--text-secondary);font-size:12px;cursor:pointer;transition:all .15s ease}.AuthFilesPage-module__providerTag___RADdc:hover{border-color:var(--primary-color);color:var(--text-primary);background-color:var(--bg-hover)}.AuthFilesPage-module__providerTag___RADdc:disabled{opacity:.6;cursor:not-allowed}.AuthFilesPage-module__providerTagActive___j4vQJ,.AuthFilesPage-module__providerTagActive___j4vQJ:hover{background-color:var(--primary-color);border-color:var(--primary-color);color:#fff}.AuthFilesPage-module__aliasChartSection___uS-yX{margin-bottom:24px;padding-bottom:24px;border-bottom:1px solid var(--border-color)}.AuthFilesPage-module__aliasChartHeader___ABhkk{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.AuthFilesPage-module__aliasChartTitle___OSz75{margin:0;font-size:14px;font-weight:600;color:var(--text-secondary)}.AuthFilesPage-module__aliasChart___XbONn{width:100%;min-height:120px}.AuthFilesPage-module__cardExtraButtons___P-fL4{display:flex;gap:8px;align-items:center;flex-wrap:wrap;min-width:0;max-width:100%}.AuthFilesPage-module__viewModeSwitch___CxLpP{display:inline-flex;align-items:center;gap:4px;flex-wrap:wrap;min-width:0;max-width:100%;padding:2px;border-radius:8px;background:var(--bg-secondary);border:1px solid var(--border-color)}.AuthFilesPage-module__viewModeSwitch___CxLpP .btn.btn-sm{min-width:0}@media(max-width:768px){.AuthFilesPage-module__cardExtraButtons___P-fL4{width:100%}.AuthFilesPage-module__viewModeSwitch___CxLpP{width:100%;justify-content:stretch}.AuthFilesPage-module__viewModeSwitch___CxLpP .btn.btn-sm{flex:1 1 0}}.AuthFilesPage-module__mappingRow___b1MBs{display:grid;grid-template-columns:1fr auto 1fr auto auto;align-items:center;gap:8px}@media(max-width:768px){.AuthFilesPage-module__mappingRow___b1MBs{grid-template-columns:1fr}}.AuthFilesPage-module__mappingSeparator___Wx18F{color:var(--text-secondary);text-align:center}@media(max-width:768px){.AuthFilesPage-module__mappingSeparator___Wx18F{display:none}}.AuthFilesPage-module__mappingFork___nRhwu{display:flex;align-items:center}.AuthFilesPage-module__detailContent___K3wet{max-height:400px;overflow:auto}.AuthFilesPage-module__jsonContent___5lYBo{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;padding:16px;font-family:monospace;font-size:12px;white-space:pre-wrap;word-break:break-all;color:var(--text-primary);margin:0}.AuthFilesPage-module__formGroup___1YGlp{display:flex;flex-direction:column;gap:4px;margin-top:16px}.AuthFilesPage-module__formGroup___1YGlp label{font-size:14px;font-weight:500;color:var(--text-primary)}.AuthFilesPage-module__textarea___IAg4a{width:100%;padding:8px 16px;border:1px solid var(--border-color);border-radius:8px;background-color:var(--bg-primary);color:var(--text-primary);font-size:14px;font-family:monospace;resize:vertical}.AuthFilesPage-module__textarea___IAg4a:focus{outline:none;border-color:var(--primary-color)}.AuthFilesPage-module__textarea___IAg4a::placeholder{color:var(--text-tertiary)}.AuthFilesPage-module__hint___YExGS{font-size:12px;color:var(--text-tertiary);font-style:italic;text-align:center;padding:24px}.AuthFilesPage-module__modelsList___KKhRE{display:flex;flex-direction:column;gap:8px}.AuthFilesPage-module__modelItem___VMfPD{display:flex;align-items:center;gap:8px;padding:8px 16px;background-color:var(--bg-secondary);border-radius:8px;border:1px solid var(--border-color);flex-wrap:wrap;cursor:pointer;transition:all .15s ease}.AuthFilesPage-module__modelItem___VMfPD:hover{background-color:var(--bg-hover);border-color:var(--primary-color)}.AuthFilesPage-module__modelItem___VMfPD:active{transform:scale(.98)}.AuthFilesPage-module__modelId___4wMUh{font-family:Consolas,Monaco,Courier New,monospace;font-size:13px;font-weight:600;color:var(--text-primary);word-break:break-all}.AuthFilesPage-module__modelDisplayName___znKrk{font-size:12px;color:var(--text-secondary);flex-shrink:0}.AuthFilesPage-module__modelType___B0C7D{font-size:11px;color:var(--text-tertiary);background-color:var(--bg-tertiary);padding:2px 8px;border-radius:10px;flex-shrink:0;margin-left:auto}.AuthFilesPage-module__modelItemExcluded___I5sBn{opacity:.6;background-color:var(--bg-tertiary);border-style:dashed}.AuthFilesPage-module__modelItemExcluded___I5sBn .AuthFilesPage-module__modelId___4wMUh{text-decoration:line-through;color:var(--text-tertiary)}.AuthFilesPage-module__modelItemExcluded___I5sBn:hover{border-color:var(--danger-color)}.AuthFilesPage-module__modelExcludedBadge___FyRdH{font-size:10px;color:var(--danger-color);background-color:#c657461a;padding:2px 6px;border-radius:8px;border:1px solid var(--danger-color);flex-shrink:0}.AuthFilesPage-module__excludedCheckList___8T3-H{display:flex;flex-direction:column;gap:4px;max-height:280px;overflow-y:auto;border:1px solid var(--border-color);border-radius:8px;padding:8px;background-color:var(--bg-secondary)}.AuthFilesPage-module__excludedCheckItem___2z42k{display:flex;align-items:center;gap:8px;padding:4px 8px;border-radius:4px;cursor:pointer;transition:background-color .15s ease}.AuthFilesPage-module__excludedCheckItem___2z42k:hover{background-color:var(--bg-hover)}.AuthFilesPage-module__excludedCheckItem___2z42k input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--primary-color)}.AuthFilesPage-module__excludedCheckLabel___tg4BJ{display:flex;align-items:center;gap:8px;font-size:13px;font-family:Consolas,Monaco,Courier New,monospace;color:var(--text-primary);word-break:break-all}.AuthFilesPage-module__excludedCheckDisplayName___Cno8d{font-size:12px;color:var(--text-tertiary);font-family:inherit}.ModelMappingDiagram-module__scrollContainer___CVtMl{width:100%;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}.ModelMappingDiagram-module__tapHint___WVg9j{position:sticky;left:0;z-index:3;font-size:12px;color:var(--text-secondary);padding:0 4px;margin-bottom:8px}.ModelMappingDiagram-module__container___5GMeJ{display:inline-flex;position:relative;min-width:100%;min-height:300px;justify-content:space-between;padding:20px 0;user-select:none}@media(max-width:768px){.ModelMappingDiagram-module__container___5GMeJ{min-width:max(100%,960px);padding:12px 0}}.ModelMappingDiagram-module__connections___-pgzq{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:1;overflow:visible}.ModelMappingDiagram-module__connections___-pgzq path{fill:none;stroke-width:2}.ModelMappingDiagram-module__column___Guf-v{display:flex;flex-direction:column;gap:12px;z-index:2;flex:0 0 auto}.ModelMappingDiagram-module__column___Guf-v.ModelMappingDiagram-module__providers___n0NN6{align-items:flex-end;min-width:140px}.ModelMappingDiagram-module__column___Guf-v.ModelMappingDiagram-module__sources___N646E,.ModelMappingDiagram-module__column___Guf-v.ModelMappingDiagram-module__aliases___zg5ma{align-items:flex-start;min-width:200px}.ModelMappingDiagram-module__columnHeader___QAC6y{font-size:13px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;margin-bottom:8px;padding:0 4px}.ModelMappingDiagram-module__item___KBTKp{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:8px;padding:10px 14px;font-size:13px;color:var(--text-primary);display:flex;align-items:center;justify-content:space-between;width:100%;max-width:280px;position:relative;transition:all .2s ease;box-shadow:0 1px 2px #0000000d}.ModelMappingDiagram-module__item___KBTKp:hover{border-color:var(--primary-color);transform:translateY(-1px);box-shadow:0 4px 6px #0000000d;z-index:10}.ModelMappingDiagram-module__item___KBTKp.ModelMappingDiagram-module__dropTarget___dAYPB{background-color:var(--bg-secondary);border-color:var(--primary-color);border-width:2px}.ModelMappingDiagram-module__item___KBTKp.ModelMappingDiagram-module__selected___r3Gyz{border-color:var(--primary-color);background-color:var(--bg-secondary);box-shadow:0 0 0 2px #8b86802e}.ModelMappingDiagram-module__providerItem___4PZQM{border-left:3px solid transparent;padding-left:8px;display:flex;align-items:center;gap:8px}.ModelMappingDiagram-module__providerItem___4PZQM .ModelMappingDiagram-module__providerLabel___E2vNu{font-weight:600;font-size:13px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ModelMappingDiagram-module__providerItem___4PZQM .ModelMappingDiagram-module__collapseBtn___RXanB{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border:none;background:var(--bg-secondary);border-radius:4px;cursor:pointer;color:var(--text-secondary);transition:background-color .15s,color .15s}.ModelMappingDiagram-module__providerItem___4PZQM .ModelMappingDiagram-module__collapseBtn___RXanB:hover{background:var(--border-color);color:var(--text-primary)}.ModelMappingDiagram-module__providerItem___4PZQM .ModelMappingDiagram-module__chevronDown___AP7zK,.ModelMappingDiagram-module__providerItem___4PZQM .ModelMappingDiagram-module__chevronRight___bbMVy{display:inline-block;width:0;height:0;border-style:solid}.ModelMappingDiagram-module__providerItem___4PZQM .ModelMappingDiagram-module__chevronDown___AP7zK{border-width:5px 4px 0 4px;border-color:currentColor transparent transparent transparent}.ModelMappingDiagram-module__providerItem___4PZQM .ModelMappingDiagram-module__chevronRight___bbMVy{border-width:4px 0 4px 5px;border-color:transparent transparent transparent currentColor}.ModelMappingDiagram-module__providerGroup___5JNQu{display:flex;align-items:center;justify-content:flex-end;width:100%}.ModelMappingDiagram-module__sourceItem___TjDG6,.ModelMappingDiagram-module__aliasItem___h6w7D{cursor:grab}.ModelMappingDiagram-module__sourceItem___TjDG6:active,.ModelMappingDiagram-module__aliasItem___h6w7D:active{cursor:grabbing}.ModelMappingDiagram-module__sourceItem___TjDG6.ModelMappingDiagram-module__dragging___lhx9y,.ModelMappingDiagram-module__aliasItem___h6w7D.ModelMappingDiagram-module__dragging___lhx9y{opacity:.5;border-style:dashed}.ModelMappingDiagram-module__dot___AOWIN{width:6px;height:6px;border-radius:50%;position:absolute;top:50%;margin-top:-3px;flex-shrink:0}.ModelMappingDiagram-module__dot___AOWIN.ModelMappingDiagram-module__dotLeft___BKXAm{left:-3px;background:var(--text-tertiary)}.ModelMappingDiagram-module__sourceItem___TjDG6 .ModelMappingDiagram-module__dot___AOWIN{right:-3px}.ModelMappingDiagram-module__providerBadge___cRzux{font-size:11px;padding:2px 6px;border-radius:4px;background:var(--bg-secondary);color:var(--text-secondary);margin-right:8px;font-weight:500}.ModelMappingDiagram-module__itemName___MjfSv{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ModelMappingDiagram-module__itemCount___B-gtl{font-size:11px;color:var(--text-tertiary);margin-left:8px;background:var(--bg-secondary);padding:1px 6px;border-radius:10px}.ModelMappingDiagram-module__contextMenu___VHX-s{position:fixed;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:6px;box-shadow:0 4px 12px #00000026;z-index:9999;min-width:120px;overflow:hidden;padding:4px 0}.ModelMappingDiagram-module__contextMenu___VHX-s .ModelMappingDiagram-module__menuItem___e-LvI{padding:8px 12px;font-size:13px;color:var(--text-primary);cursor:pointer;transition:background-color .1s;display:flex;align-items:center;gap:8px}.ModelMappingDiagram-module__contextMenu___VHX-s .ModelMappingDiagram-module__menuItem___e-LvI:hover{background-color:var(--bg-secondary)}.ModelMappingDiagram-module__contextMenu___VHX-s .ModelMappingDiagram-module__menuItem___e-LvI.ModelMappingDiagram-module__danger___klXxM{color:var(--error-color)}.ModelMappingDiagram-module__contextMenu___VHX-s .ModelMappingDiagram-module__menuItem___e-LvI.ModelMappingDiagram-module__danger___klXxM:hover{background-color:var(--bg-error-light)}.ModelMappingDiagram-module__contextMenu___VHX-s .ModelMappingDiagram-module__menuDivider___XtoCo{height:1px;margin:4px 0;background:var(--border-color);padding:0;cursor:default;pointer-events:none}.ModelMappingDiagram-module__settingsEmpty___N0gFF{color:var(--text-tertiary);font-size:13px;text-align:center;padding:24px 0}.ModelMappingDiagram-module__settingsList___ovuWo{display:flex;flex-direction:column;gap:8px}.ModelMappingDiagram-module__settingsRow___wH-TW{display:grid;grid-template-columns:minmax(200px,1fr) auto;gap:16px;align-items:center;padding:8px 16px;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-secondary)}@media(max-width:768px){.ModelMappingDiagram-module__settingsRow___wH-TW{grid-template-columns:1fr;align-items:flex-start}}.ModelMappingDiagram-module__settingsNames___QDn9j{display:flex;align-items:center;gap:4px;font-size:13px;color:var(--text-primary);min-width:0}.ModelMappingDiagram-module__settingsSource___Hz9zo,.ModelMappingDiagram-module__settingsAlias___Ov9zt{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}.ModelMappingDiagram-module__settingsArrow___SKvFd{color:var(--text-tertiary)}.ModelMappingDiagram-module__settingsActions___PYXMU{display:flex;align-items:center;gap:8px}.ModelMappingDiagram-module__settingsLabel___R--i-{font-size:12px;color:var(--text-secondary)}.ModelMappingDiagram-module__settingsDelete___PDG7z{border:0;background:transparent;color:var(--error-color);padding:6px;border-radius:6px;cursor:pointer}.ModelMappingDiagram-module__settingsDelete___PDG7z:hover{background:var(--bg-error-light)}.AuthFilesOAuthExcludedEditPage-module__pageContent___42nA2{width:100%;max-width:1000px;margin:0 auto;padding:0 24px 48px}@media(max-width:768px){.AuthFilesOAuthExcludedEditPage-module__pageContent___42nA2{padding-left:16px;padding-right:16px}}.AuthFilesOAuthExcludedEditPage-module__settingsCard___EE-1z{padding:0;overflow:visible}.AuthFilesOAuthExcludedEditPage-module__settingsHeader___Jm0RO{display:flex;flex-direction:column;gap:4px;padding:16px 24px;border-bottom:1px solid var(--border-color)}@media(max-width:768px){.AuthFilesOAuthExcludedEditPage-module__settingsHeader___Jm0RO{padding-left:16px;padding-right:16px}}.AuthFilesOAuthExcludedEditPage-module__settingsHeaderTitle___nOj9w{display:inline-flex;align-items:center;gap:4px;font-weight:700;color:var(--text-primary)}.AuthFilesOAuthExcludedEditPage-module__settingsHeaderHint___EzQSN{font-size:13px;color:var(--text-secondary)}.AuthFilesOAuthExcludedEditPage-module__settingsSection___ozndx{display:flex;flex-direction:column;gap:8px;padding:16px 24px 24px}@media(max-width:768px){.AuthFilesOAuthExcludedEditPage-module__settingsSection___ozndx{padding-left:16px;padding-right:16px}}.AuthFilesOAuthExcludedEditPage-module__settingsRow___z6QPQ{display:flex;align-items:flex-start;justify-content:space-between;gap:24px}@media(max-width:768px){.AuthFilesOAuthExcludedEditPage-module__settingsRow___z6QPQ{flex-direction:column;align-items:stretch;gap:8px}}.AuthFilesOAuthExcludedEditPage-module__settingsInfo___lRYwp{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.AuthFilesOAuthExcludedEditPage-module__settingsLabel___KbPgc{font-size:14px;font-weight:600;color:var(--text-primary)}.AuthFilesOAuthExcludedEditPage-module__settingsDesc___6LSPN{font-size:13px;color:var(--text-secondary)}.AuthFilesOAuthExcludedEditPage-module__settingsControl___luVcd{flex:0 0 auto;width:min(360px,45%);min-width:220px}@media(max-width:768px){.AuthFilesOAuthExcludedEditPage-module__settingsControl___luVcd{width:100%;min-width:0}}.AuthFilesOAuthExcludedEditPage-module__tagList___Is0Fd{display:flex;flex-wrap:wrap;gap:4px}.AuthFilesOAuthExcludedEditPage-module__tag___fyrKv{display:inline-flex;align-items:center;padding:4px 10px;border-radius:9999px;border:1px solid var(--border-color);background-color:var(--bg-secondary);color:var(--text-secondary);font-size:12px;cursor:pointer;transition:all .15s ease}.AuthFilesOAuthExcludedEditPage-module__tag___fyrKv:hover{border-color:var(--primary-color);color:var(--text-primary);background-color:var(--bg-tertiary)}.AuthFilesOAuthExcludedEditPage-module__tag___fyrKv:disabled{opacity:.6;cursor:not-allowed}.AuthFilesOAuthExcludedEditPage-module__tagActive___EkiBG,.AuthFilesOAuthExcludedEditPage-module__tagActive___EkiBG:hover{background-color:var(--primary-color);border-color:var(--primary-color);color:#fff}.AuthFilesOAuthExcludedEditPage-module__modelsHint___Rm6l4{display:flex;align-items:center;gap:4px;font-size:13px;color:var(--text-secondary)}.AuthFilesOAuthExcludedEditPage-module__loadingModels___-9Wy6{display:flex;align-items:center;justify-content:center;gap:8px;padding:32px 0;color:var(--text-secondary)}.AuthFilesOAuthExcludedEditPage-module__modelList___6ebAr{max-height:520px;overflow:auto;padding:8px 24px 24px}@media(max-width:768px){.AuthFilesOAuthExcludedEditPage-module__modelList___6ebAr{padding-left:16px;padding-right:16px}}.AuthFilesOAuthExcludedEditPage-module__modelItem___v0y1o{width:100%;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--border-color);border-radius:4px;transition:background-color .15s ease}.AuthFilesOAuthExcludedEditPage-module__modelItem___v0y1o:last-child{border-bottom:none}.AuthFilesOAuthExcludedEditPage-module__modelItem___v0y1o:hover{background-color:var(--bg-hover)}.AuthFilesOAuthExcludedEditPage-module__modelText___50mQC{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.AuthFilesOAuthExcludedEditPage-module__modelId___Z2Ylu{font-size:13px;font-weight:600;color:var(--text-primary);word-break:break-all}.AuthFilesOAuthExcludedEditPage-module__modelDisplayName___ATlA5{font-size:12px;color:var(--text-secondary);word-break:break-all}.AuthFilesOAuthExcludedEditPage-module__emptyModels___kAuwa{padding:32px 24px;color:var(--text-secondary);font-size:13px;text-align:center}@media(max-width:768px){.AuthFilesOAuthExcludedEditPage-module__emptyModels___kAuwa{padding-left:16px;padding-right:16px}}.AuthFilesOAuthModelAliasEditPage-module__pageContent___mxGSP{width:100%;max-width:1000px;margin:0 auto;padding:0 24px 48px}@media(max-width:768px){.AuthFilesOAuthModelAliasEditPage-module__pageContent___mxGSP{padding-left:16px;padding-right:16px}}.AuthFilesOAuthModelAliasEditPage-module__settingsCard___4uMxA{padding:0;overflow:visible}.AuthFilesOAuthModelAliasEditPage-module__settingsHeader___h4vIs{display:flex;flex-direction:column;gap:4px;padding:16px 24px;border-bottom:1px solid var(--border-color)}@media(max-width:768px){.AuthFilesOAuthModelAliasEditPage-module__settingsHeader___h4vIs{padding-left:16px;padding-right:16px}}.AuthFilesOAuthModelAliasEditPage-module__settingsHeaderTitle___GExPS{display:inline-flex;align-items:center;gap:4px;font-weight:700;color:var(--text-primary)}.AuthFilesOAuthModelAliasEditPage-module__settingsHeaderHint___C94bR{font-size:13px;color:var(--text-secondary)}.AuthFilesOAuthModelAliasEditPage-module__settingsSection___JQr18{display:flex;flex-direction:column;gap:8px;padding:16px 24px 24px}@media(max-width:768px){.AuthFilesOAuthModelAliasEditPage-module__settingsSection___JQr18{padding-left:16px;padding-right:16px}}.AuthFilesOAuthModelAliasEditPage-module__settingsRow___qzQdL{display:flex;align-items:flex-start;justify-content:space-between;gap:24px}@media(max-width:768px){.AuthFilesOAuthModelAliasEditPage-module__settingsRow___qzQdL{flex-direction:column;align-items:stretch;gap:8px}}.AuthFilesOAuthModelAliasEditPage-module__settingsInfo___Jt7Ub{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.AuthFilesOAuthModelAliasEditPage-module__settingsLabel___v6dmL{font-size:14px;font-weight:600;color:var(--text-primary)}.AuthFilesOAuthModelAliasEditPage-module__settingsDesc___TgK3P{font-size:13px;color:var(--text-secondary)}.AuthFilesOAuthModelAliasEditPage-module__settingsControl___nSl-3{flex:0 0 auto;width:min(360px,45%);min-width:220px}@media(max-width:768px){.AuthFilesOAuthModelAliasEditPage-module__settingsControl___nSl-3{width:100%;min-width:0}}.AuthFilesOAuthModelAliasEditPage-module__tagList___OxNTF{display:flex;flex-wrap:wrap;gap:4px}.AuthFilesOAuthModelAliasEditPage-module__tag___sULm6{display:inline-flex;align-items:center;padding:4px 10px;border-radius:9999px;border:1px solid var(--border-color);background-color:var(--bg-secondary);color:var(--text-secondary);font-size:12px;cursor:pointer;transition:all .15s ease}.AuthFilesOAuthModelAliasEditPage-module__tag___sULm6:hover{border-color:var(--primary-color);color:var(--text-primary);background-color:var(--bg-tertiary)}.AuthFilesOAuthModelAliasEditPage-module__tag___sULm6:disabled{opacity:.6;cursor:not-allowed}.AuthFilesOAuthModelAliasEditPage-module__tagActive___CcyFC,.AuthFilesOAuthModelAliasEditPage-module__tagActive___CcyFC:hover{background-color:var(--primary-color);border-color:var(--primary-color);color:#fff}.AuthFilesOAuthModelAliasEditPage-module__mappingsHeader___wddAp{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 24px;border-bottom:1px solid var(--border-color)}@media(max-width:768px){.AuthFilesOAuthModelAliasEditPage-module__mappingsHeader___wddAp{padding-left:16px;padding-right:16px}}.AuthFilesOAuthModelAliasEditPage-module__mappingsTitle___QywAa{font-weight:700;color:var(--text-primary)}.AuthFilesOAuthModelAliasEditPage-module__modelsHint___nQAc7{display:flex;align-items:center;gap:4px;padding:8px 24px;font-size:13px;color:var(--text-secondary);border-bottom:1px solid var(--border-color)}@media(max-width:768px){.AuthFilesOAuthModelAliasEditPage-module__modelsHint___nQAc7{padding-left:16px;padding-right:16px}}.AuthFilesOAuthModelAliasEditPage-module__mappingsBody___jOz-S{padding:8px 24px 24px}@media(max-width:768px){.AuthFilesOAuthModelAliasEditPage-module__mappingsBody___jOz-S{padding-left:16px;padding-right:16px}}.AuthFilesOAuthModelAliasEditPage-module__mappingRow___NTr41{display:grid;grid-template-columns:1fr auto 1fr auto auto;align-items:center;gap:8px;padding:10px 0;border-bottom:1px solid var(--border-color)}.AuthFilesOAuthModelAliasEditPage-module__mappingRow___NTr41:last-child{border-bottom:none}@media(max-width:768px){.AuthFilesOAuthModelAliasEditPage-module__mappingRow___NTr41{grid-template-columns:1fr;gap:8px}}.AuthFilesOAuthModelAliasEditPage-module__mappingSeparator___dN9rZ{color:var(--text-secondary);text-align:center}@media(max-width:768px){.AuthFilesOAuthModelAliasEditPage-module__mappingSeparator___dN9rZ{display:none}}.AuthFilesOAuthModelAliasEditPage-module__mappingAliasInput___iG0V3{width:100%}.AuthFilesOAuthModelAliasEditPage-module__mappingFork___4pAg3{display:flex;align-items:center}@media(max-width:768px){.AuthFilesOAuthModelAliasEditPage-module__mappingFork___4pAg3{justify-content:flex-start}}.OAuthPage-module__container___LCCdH{width:100%}.OAuthPage-module__cardTitle___yFaP0{display:flex;align-items:center;gap:8px}.OAuthPage-module__cardTitleIcon___eAnql{width:24px;height:24px}.OAuthPage-module__pageTitle___BQQ2z{font-size:28px;font-weight:700;color:var(--text-primary);margin:0 0 32px}.OAuthPage-module__content___Phg9V{display:flex;flex-direction:column;gap:32px}.OAuthPage-module__cardContent___1sXLA{display:flex;flex-direction:column;gap:16px}.OAuthPage-module__cardContent___1sXLA .form-group{margin-bottom:0}.OAuthPage-module__cardContent___1sXLA .status-badge{margin-bottom:0;align-self:flex-start}.OAuthPage-module__cardHint___ttOpd{margin:0;font-size:13px;line-height:1.6;color:var(--text-secondary)}.OAuthPage-module__cardHintSecondary___tWM17{margin:0;font-size:12px;line-height:1.5;color:var(--text-tertiary)}.OAuthPage-module__oauthSection___1olLq{display:flex;flex-direction:column;gap:24px}.OAuthPage-module__oauthGrid___wjAyh{display:grid;gap:24px;grid-template-columns:repeat(auto-fit,minmax(400px,1fr))}@media(max-width:768px){.OAuthPage-module__oauthGrid___wjAyh{grid-template-columns:1fr}}.OAuthPage-module__oauthCard___CYTnC{display:flex;flex-direction:column;gap:16px}.OAuthPage-module__oauthStatus___h7bbL{padding:16px;border-radius:8px;font-size:14px}.OAuthPage-module__oauthStatus___h7bbL.OAuthPage-module__success___UHta0{background-color:#22c55e1a;color:#16a34a}.OAuthPage-module__oauthStatus___h7bbL.OAuthPage-module__error___057CD{background-color:#c657461f;color:#c65746}.OAuthPage-module__oauthStatus___h7bbL.OAuthPage-module__waiting___CbNSk{background-color:#8b86801f;color:var(--primary-color)}.OAuthPage-module__callbackSection___8kA31{margin-top:0;display:flex;flex-direction:column;gap:8px}.OAuthPage-module__callbackActions___wtkMI{display:flex;gap:16px}.OAuthPage-module__authUrlBox___Iu1d4{background:var(--bg-secondary);border:1px dashed var(--border-color);border-radius:8px;padding:16px;display:flex;flex-direction:column;gap:4px}.OAuthPage-module__authUrlLabel___mYFJB{color:var(--text-secondary);font-size:14px}.OAuthPage-module__authUrlValue___axvUJ{font-weight:700;color:var(--text-primary);word-break:break-all;overflow-wrap:anywhere;line-height:1.5;max-width:100%}.OAuthPage-module__authUrlActions___venPj{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px}.OAuthPage-module__geminiProjectField___g456A .form-group{margin-top:0;margin-bottom:0;gap:8px}.OAuthPage-module__geminiProjectField___g456A .input:disabled{background-color:var(--bg-tertiary);border-color:var(--border-color);color:var(--text-tertiary);cursor:not-allowed}.OAuthPage-module__formItem___Bgt9S{display:flex;flex-direction:column;gap:4px}.OAuthPage-module__formItemLabel___QZFrG{margin:0;font-weight:600;color:var(--text-primary)}.OAuthPage-module__filePicker___NmFjy{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.OAuthPage-module__fileName___9ZbQI{flex:1;min-width:220px;padding:10px 12px;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-primary);color:var(--text-primary);font-size:14px}.OAuthPage-module__fileNamePlaceholder___WHjj4{color:var(--text-secondary)}.OAuthPage-module__connectionBox___Gwo4r{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;padding:16px;display:flex;flex-direction:column;gap:8px}.OAuthPage-module__connectionLabel___cJMrf{margin:0;font-size:14px;font-weight:600;color:var(--text-primary)}.OAuthPage-module__keyValueList___lEOY0{display:flex;flex-direction:column;gap:6px}.OAuthPage-module__keyValueItem___XOwWB{display:grid;grid-template-columns:140px 1fr;gap:10px;align-items:start}@media(max-width:768px){.OAuthPage-module__keyValueItem___XOwWB{grid-template-columns:1fr;gap:2px}}.OAuthPage-module__keyValueKey___WF-VN{color:var(--text-secondary);font-size:13px}.OAuthPage-module__keyValueValue___m2I-C{color:var(--text-primary);word-break:break-all;overflow-wrap:anywhere}.UsagePage-module__container___nCAFc{width:100%;min-height:100%;display:flex;flex-direction:column;gap:20px;position:relative}.UsagePage-module__header___HxnC8{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px}.UsagePage-module__headerActions___3cXLO{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.UsagePage-module__lastRefreshed___cqlrd{font-size:11px;color:var(--text-tertiary);white-space:nowrap}.UsagePage-module__timeRangeGroup___hI2kH{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}.UsagePage-module__timeRangeLabel___2VsOz{font-size:12px;color:var(--text-secondary);font-weight:600}.UsagePage-module__timeRangeSelectControl___6vBeH{min-width:164px}.UsagePage-module__pageTitle___70rs5{font-size:28px;font-weight:700;color:var(--text-primary);margin:0}.UsagePage-module__errorBox___gB8Rj{padding:10px;background-color:#c657461a;border:1px solid var(--error-color);border-radius:4px;color:var(--error-color);font-size:12px}.UsagePage-module__hint___pUQ06{color:var(--text-secondary);font-size:12px;text-align:center;padding:16px}.UsagePage-module__loadingOverlay___BuX9V{position:absolute;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--bg-secondary) 78%,transparent);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.UsagePage-module__loadingOverlayContent___3vf0S{display:inline-flex;align-items:center;gap:10px;padding:12px 16px;border-radius:12px;border:1px solid var(--border-color);background:var(--bg-primary);box-shadow:var(--shadow-lg)}.UsagePage-module__loadingOverlaySpinner___MvMZD{border-color:#8b868040;border-top-color:var(--primary-color);box-shadow:0 0 10px #8b868040}.UsagePage-module__loadingOverlayText___64YIy{font-size:13px;font-weight:600;color:var(--text-secondary)}.UsagePage-module__statsGrid___Q0sW-{display:grid;gap:14px;grid-template-columns:repeat(12,minmax(0,1fr))}@media(max-width:768px){.UsagePage-module__statsGrid___Q0sW-{grid-template-columns:1fr}}.UsagePage-module__statCard___iCndn{--accent: var(--primary-color);--accent-soft: rgba($primary-color, .18);--accent-border: rgba($primary-color, .35);grid-column:span 4;position:relative;padding:18px;background:radial-gradient(120% 140% at 12% 0%,var(--accent-soft) 0%,rgba(0,0,0,0) 62%),linear-gradient(180deg,#ffffff0f,#fff0),var(--bg-primary);border-radius:12px;border:1px solid var(--border-color);display:flex;flex-direction:column;gap:10px;min-height:176px;box-shadow:var(--shadow-lg);transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease;overflow:hidden}.UsagePage-module__statCard___iCndn:before{content:"";position:absolute;top:0;left:0;height:3px;width:100%;background:linear-gradient(90deg,var(--accent),rgba(0,0,0,0));opacity:.95}.UsagePage-module__statCard___iCndn:hover{transform:translateY(-2px);border-color:var(--accent-border);box-shadow:0 16px 40px #00000038}@media(min-width:769px)and (max-width:1024px){.UsagePage-module__statCard___iCndn{grid-column:span 6}}@media(max-width:768px){.UsagePage-module__statCard___iCndn{grid-column:auto;min-height:168px}}.UsagePage-module__statCard___iCndn:nth-child(-n+2){grid-column:span 6}.UsagePage-module__statCard___iCndn:nth-child(-n+2) .UsagePage-module__statValue___duHNu{font-size:32px}@media(max-width:768px){.UsagePage-module__statCard___iCndn:nth-child(-n+2){grid-column:auto}.UsagePage-module__statCard___iCndn:nth-child(-n+2) .UsagePage-module__statValue___duHNu{font-size:28px}}.UsagePage-module__statCardHeader___IbBKW{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.UsagePage-module__statLabelGroup___SMxKl{display:flex;flex-direction:column;gap:1px}.UsagePage-module__statIconBadge___bPCTx{width:34px;height:34px;border-radius:8px;display:grid;place-items:center;color:#fff;font-size:13px;background:var(--accent);border:1px solid rgba(255,255,255,.08);box-shadow:0 10px 22px #00000040;flex-shrink:0}.UsagePage-module__statIconBadge___bPCTx svg{display:block}.UsagePage-module__statHeader___ieXhA{display:flex;align-items:center;gap:8px}.UsagePage-module__statIcon___hRQIn{font-size:18px}.UsagePage-module__statLabel___V2mir{font-size:12px;color:var(--text-tertiary);font-weight:700;letter-spacing:.02em}.UsagePage-module__statValue___duHNu{font-size:28px;font-weight:800;color:var(--text-primary);line-height:1.2;font-variant-numeric:tabular-nums}.UsagePage-module__statValueRow___rjMSd{display:flex;gap:24px}.UsagePage-module__statValueSmall___QsRKt{display:flex;flex-direction:column;gap:2px}.UsagePage-module__statValueLabel___78BAI{font-size:12px;color:var(--text-secondary)}.UsagePage-module__statValueNum___ve85a{font-size:20px;font-weight:700;color:var(--text-primary)}.UsagePage-module__statMeta___X-Pkf{display:flex;flex-direction:column;gap:4px;font-size:12px}.UsagePage-module__statSuccess___AmaqC{color:var(--success-color)}.UsagePage-module__statFailure___jWtUQ{color:var(--danger-color)}.UsagePage-module__statNeutral___IhwNw{color:var(--text-secondary)}.UsagePage-module__statMetaRow___VB7gR{display:flex;flex-wrap:wrap;gap:8px 10px;font-size:12px;color:var(--text-secondary)}.UsagePage-module__statMetaItem___YIXw2{display:inline-flex;align-items:center;gap:4px}.UsagePage-module__statMetaDot___daNGF{width:7px;height:7px;border-radius:50%;background-color:var(--text-secondary)}.UsagePage-module__statSubtle___yXU7t{color:var(--text-tertiary)}.UsagePage-module__statTrend___ra06-{margin-top:auto;background:var(--bg-tertiary);border-radius:8px;padding:8px;height:58px;border:1px solid var(--border-color)}.UsagePage-module__statTrendPlaceholder___oRADx{width:100%;height:100%;background:var(--bg-secondary);border-radius:8px}.UsagePage-module__sparkline___1tqGF{width:100%;height:100%!important}.UsagePage-module__statHint___HpsGj{color:var(--text-tertiary);font-style:italic}.UsagePage-module__apiSortBar___MpyiE{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.UsagePage-module__apiSortBtn___AkzG0{padding:4px 10px;border-radius:9999px;border:1px solid var(--border-color);background:var(--bg-secondary);color:var(--text-secondary);font-size:11px;font-weight:500;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease}.UsagePage-module__apiSortBtn___AkzG0:hover{background:var(--bg-tertiary);color:var(--text-primary)}.UsagePage-module__apiSortBtn___AkzG0:focus-visible{outline:2px solid var(--primary-color);outline-offset:1px}.UsagePage-module__apiSortBtnActive___-PugQ{border-color:#8b868080;background:#8b86801a;color:var(--text-primary);font-weight:600}.UsagePage-module__apiList___2kChf{display:flex;flex-direction:column;gap:6px}.UsagePage-module__apiItem___cyn0u{background-color:var(--bg-secondary);border-radius:4px;border:1px solid var(--border-color);overflow:hidden}.UsagePage-module__apiHeader___tT8FK{width:100%;display:flex;justify-content:space-between;align-items:center;padding:10px;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer;transition:background-color .15s ease}.UsagePage-module__apiHeader___tT8FK:hover{background-color:var(--bg-tertiary)}.UsagePage-module__apiHeader___tT8FK:focus-visible{outline:2px solid var(--primary-color);outline-offset:-2px}.UsagePage-module__apiInfo___OFEK-{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.UsagePage-module__apiEndpoint___J38DV{font-weight:600;color:var(--text-primary);font-size:13px;word-break:break-all}.UsagePage-module__apiStats___blw7G{display:flex;flex-wrap:wrap;gap:3px}.UsagePage-module__apiBadge___OAqI7{font-size:11px;color:var(--text-secondary);background-color:var(--bg-primary);border:1px solid var(--border-color);padding:2px 8px;border-radius:9999px}.UsagePage-module__expandIcon___5FU6h{color:var(--text-secondary);font-size:12px;margin-left:6px}.UsagePage-module__apiModels___eZNUp{padding:10px;display:flex;flex-direction:column;gap:3px;border-top:1px solid var(--border-color);margin-top:0}.UsagePage-module__modelRow___ZKhXO{display:grid;grid-template-columns:1fr auto auto;gap:10px;padding:8px 10px;background-color:var(--bg-primary);border:1px solid var(--border-color);border-radius:8px;font-size:12px}@media(max-width:768px){.UsagePage-module__modelRow___ZKhXO{grid-template-columns:1fr;gap:3px}}.UsagePage-module__modelName___mlOFW{color:var(--text-primary);font-weight:500;word-break:break-all}.UsagePage-module__modelStat___9behg{color:var(--text-secondary);text-align:right}@media(max-width:768px){.UsagePage-module__modelStat___9behg{text-align:left}}.UsagePage-module__detailsFixedCard___5TOHu{display:flex;flex-direction:column;height:520px;overflow:hidden}@media(max-width:768px){.UsagePage-module__detailsFixedCard___5TOHu{height:420px}}.UsagePage-module__detailsScroll___FxWDO{flex:1 1 auto;min-height:0;overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.UsagePage-module__tableWrapper___Sax8l{overflow-x:auto}.UsagePage-module__table___-sWaI{width:100%;border-collapse:collapse;font-size:12px}.UsagePage-module__table___-sWaI th,.UsagePage-module__table___-sWaI td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--border-color)}.UsagePage-module__table___-sWaI th{font-weight:600;color:var(--text-tertiary);background-color:var(--bg-secondary);white-space:nowrap}.UsagePage-module__table___-sWaI th.UsagePage-module__sortableHeader___khBCr{user-select:none;transition:color .15s ease}.UsagePage-module__table___-sWaI th.UsagePage-module__sortableHeader___khBCr:hover,.UsagePage-module__table___-sWaI td{color:var(--text-primary)}.UsagePage-module__table___-sWaI tbody tr:hover{background-color:var(--bg-tertiary)}.UsagePage-module__sortHeaderButton___T3KIB{display:inline-flex;align-items:center;width:100%;border:0;padding:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.UsagePage-module__sortHeaderButton___T3KIB:focus-visible{outline:2px solid var(--primary-color);outline-offset:2px;border-radius:4px}.UsagePage-module__modelCell___0d7fk{font-weight:500;max-width:240px;word-break:break-all}.UsagePage-module__credentialType___FoGup{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:9999px;font-size:10px;font-weight:600;color:var(--text-secondary);background:var(--bg-tertiary);border:1px solid var(--border-color);vertical-align:middle}.UsagePage-module__requestCountCell___17o3C{display:inline-flex;align-items:baseline;gap:6px;font-variant-numeric:tabular-nums}.UsagePage-module__requestBreakdown___VDvhm{color:var(--text-secondary);white-space:nowrap}.UsagePage-module__pricingSection___jk8kk{display:flex;flex-direction:column;gap:16px}.UsagePage-module__priceForm___OJwRe{padding:10px;background-color:var(--bg-secondary);border-radius:4px;border:1px solid var(--border-color)}.UsagePage-module__formRow___sHXY2{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}@media(max-width:768px){.UsagePage-module__formRow___sHXY2{flex-direction:column;align-items:stretch}}.UsagePage-module__formField___Vf4b-{display:flex;flex-direction:column;gap:3px;flex:1;min-width:120px}.UsagePage-module__formField___Vf4b- label{font-size:10px;color:var(--text-secondary);font-weight:500}.UsagePage-module__formField___Vf4b- .form-group{margin:0}.UsagePage-module__formField___Vf4b- .form-group>label{display:none}.UsagePage-module__formField___Vf4b- .input{height:40px;box-sizing:border-box}.UsagePage-module__pricesList___ys67C{display:flex;flex-direction:column;gap:10px}.UsagePage-module__pricesTitle___CJRmb{font-size:12px;font-weight:600;color:var(--text-primary);margin:0}.UsagePage-module__pricesGrid___rCyGv{display:flex;flex-direction:column;gap:6px}.UsagePage-module__priceItem___I0JbD{display:flex;justify-content:space-between;align-items:center;padding:10px;background-color:var(--bg-secondary);border-radius:4px;border:1px solid var(--border-color);gap:10px}@media(max-width:768px){.UsagePage-module__priceItem___I0JbD{flex-direction:column;align-items:flex-start}}.UsagePage-module__priceInfo___TteL5{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.UsagePage-module__priceModel___GvFG8{font-weight:600;color:var(--text-primary);font-size:11px;word-break:break-all}.UsagePage-module__priceMeta___V2rEi{display:flex;gap:10px;font-size:10px;color:var(--text-secondary)}@media(max-width:768px){.UsagePage-module__priceMeta___V2rEi{flex-direction:column;gap:3px}}.UsagePage-module__priceActions___2BFSQ{display:flex;gap:3px;flex-shrink:0}.UsagePage-module__editModalBody___z4n58{display:flex;flex-direction:column;gap:12px}.UsagePage-module__chartSection___Jugrm{display:flex;flex-direction:column;gap:10px}.UsagePage-module__chartControls___Be-or{display:flex;justify-content:space-between;align-items:center;gap:10px}@media(max-width:768px){.UsagePage-module__chartControls___Be-or{flex-direction:column;align-items:stretch}}.UsagePage-module__chartWrapper___lAIqa{padding:14px;background-color:var(--bg-secondary);border-radius:12px;border:1px solid var(--border-color);display:flex;flex-direction:column;gap:12px}.UsagePage-module__chartLegend___OA6vI{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;min-width:0}@media(max-width:768px){.UsagePage-module__chartLegend___OA6vI{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;padding-bottom:4px}}.UsagePage-module__legendItem___g2pb0{display:inline-flex;align-items:center;gap:6px;min-width:0;max-width:240px;padding:4px 10px;border-radius:9999px;border:1px solid var(--border-color);background:var(--bg-primary);font-size:12px;color:var(--text-secondary)}@media(max-width:768px){.UsagePage-module__legendItem___g2pb0{max-width:180px}}.UsagePage-module__legendDot___Ehp8J{width:10px;height:10px;border-radius:999px;flex-shrink:0}.UsagePage-module__legendLabel___pjtGV{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.UsagePage-module__chartArea___ZykTT{height:280px}@media(max-width:768px){.UsagePage-module__chartArea___ZykTT{height:320px}}.UsagePage-module__chartScroller___AtIi0{width:100%;height:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.UsagePage-module__chartScroller___AtIi0 canvas{touch-action:pan-x pan-y!important}.UsagePage-module__chartCanvas___NYz9z{position:relative;height:100%;width:100%}.UsagePage-module__periodButtons___MD8jm{display:flex;gap:6px}.UsagePage-module__chartsGrid___k56wO{display:grid;gap:20px;grid-template-columns:minmax(0,1fr)}.UsagePage-module__chartsGrid___k56wO>*{min-width:0}@media(min-width:1025px){.UsagePage-module__chartsGrid___k56wO{grid-template-columns:repeat(2,minmax(0,1fr))}}.UsagePage-module__detailsGrid___zSOOI{display:grid;gap:20px;grid-template-columns:minmax(0,1fr)}.UsagePage-module__detailsGrid___zSOOI>*{min-width:0}@media(min-width:1025px){.UsagePage-module__detailsGrid___zSOOI{grid-template-columns:repeat(2,minmax(0,1fr))}}.UsagePage-module__requestEventsActions___cJzSl{display:inline-flex;align-items:center;gap:4px;flex-wrap:wrap}.UsagePage-module__requestEventsToolbar___xx5kv{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end;margin-bottom:8px}.UsagePage-module__requestEventsFilterItem___5vPqu{display:flex;flex-direction:column;gap:4px;min-width:180px}.UsagePage-module__requestEventsFilterLabel___UeBCu{font-size:12px;color:var(--text-secondary);font-weight:600}.UsagePage-module__requestEventsSelect___GDYz1{min-width:180px}.UsagePage-module__requestEventsMeta___jhpNH{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px;font-size:12px;color:var(--text-secondary);flex-wrap:wrap}.UsagePage-module__requestEventsLimitHint___vP-TA{color:var(--text-tertiary)}.UsagePage-module__requestEventsTableWrapper___QQY-f{overflow:auto;max-height:460px;border:1px solid var(--border-color);border-radius:8px}.UsagePage-module__requestEventsTimestamp___I6vM1{white-space:nowrap;min-width:160px}.UsagePage-module__requestEventsSourceCell___y8Who,.UsagePage-module__requestEventsAuthIndex___DAZfi{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:11px;max-width:180px;word-break:break-all}.UsagePage-module__requestEventsResultSuccess___Ovwcs{color:var(--success-badge-text, #065f46);background:var(--success-badge-bg, #d1fae5);border:1px solid var(--success-badge-border, #6ee7b7)}.UsagePage-module__requestEventsResultFailed___sUYiy{color:var(--failure-badge-text);background:var(--failure-badge-bg);border:1px solid var(--failure-badge-border)}.UsagePage-module__requestEventsResultSuccess___Ovwcs,.UsagePage-module__requestEventsResultFailed___sUYiy{display:inline-flex;align-items:center;padding:2px 8px;border-radius:9999px;font-size:11px;font-weight:600;white-space:nowrap}.UsagePage-module__chartLineHeader___xPk4F{display:inline-flex;align-items:center;gap:10px}.UsagePage-module__chartLineList___Le-PV{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}@media(max-width:768px){.UsagePage-module__chartLineList___Le-PV{grid-template-columns:1fr}}.UsagePage-module__chartLineItem___p7NYT{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:12px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px}@media(max-width:768px){.UsagePage-module__chartLineItem___p7NYT{grid-template-columns:1fr;align-items:stretch;gap:8px}}.UsagePage-module__chartLineLabel___jA5Ww{font-size:12px;color:var(--text-secondary);font-weight:600;min-width:64px}.UsagePage-module__chartLineCount___yVkE2{font-size:12px;color:var(--text-secondary);font-weight:500}.UsagePage-module__chartLineHint___v7FGv{font-size:12px;color:var(--text-tertiary);margin:10px 0 0}.UsagePage-module__healthCard___FpTJ7{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:12px;padding:18px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--shadow-lg)}.UsagePage-module__healthHeader___uxdUE{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.UsagePage-module__healthTitle___G-5Ux{font-size:18px;font-weight:700;color:var(--text-primary);margin:0}.UsagePage-module__healthMeta___DeEqL{display:flex;align-items:center;gap:10px}.UsagePage-module__healthWindow___T1kJo{font-size:11px;color:var(--text-tertiary)}.UsagePage-module__healthRate___EKiz8{display:flex;align-items:center;font-size:12px;font-weight:600;white-space:nowrap;padding:4px 8px;border-radius:6px;background:var(--bg-tertiary)}.UsagePage-module__healthRateHigh___iGuwG{color:var(--success-badge-text, #065f46);background:var(--success-badge-bg, #d1fae5)}.UsagePage-module__healthRateMedium___E67ug{color:var(--warning-text, #92400e);background:var(--warning-bg, #fef3c7)}.UsagePage-module__healthRateLow___RqYIj{color:var(--failure-badge-text);background:var(--failure-badge-bg)}.UsagePage-module__healthGridScroller___g50pg{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.UsagePage-module__healthGrid___QWLzl{display:grid;gap:3px;grid-auto-flow:column;grid-template-rows:repeat(7,10px);width:fit-content;margin:0 auto}.UsagePage-module__healthBlockWrapper___1Q1f5{position:relative;cursor:pointer;-webkit-tap-highlight-color:transparent;width:10px;height:10px}.UsagePage-module__healthBlock___7ZNns{width:100%;height:100%;border-radius:2px;transition:transform .15s ease,opacity .15s ease}.UsagePage-module__healthBlockWrapper___1Q1f5:hover .UsagePage-module__healthBlock___7ZNns,.UsagePage-module__healthBlockWrapper___1Q1f5.UsagePage-module__healthBlockActive___vtccW .UsagePage-module__healthBlock___7ZNns{transform:scaleY(1.6);opacity:.85}.UsagePage-module__healthBlockIdle___qnkeV{background-color:var(--border-secondary, #e5e7eb)}.UsagePage-module__healthTooltip___Ah2TY{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);background-color:var(--floating-surface, #ffffff);background-image:none;border:1px solid var(--floating-border, #e5e7eb);border-radius:6px;padding:6px 10px;font-size:11px;line-height:1.5;white-space:nowrap;box-shadow:var(--floating-shadow, 0 10px 24px rgba(0, 0, 0, .16));z-index:1000;pointer-events:none;color:var(--text-primary);opacity:1;background-clip:padding-box}.UsagePage-module__healthTooltip___Ah2TY:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:var(--floating-surface, #ffffff)}.UsagePage-module__healthTooltip___Ah2TY:before{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:var(--floating-border, #e5e7eb)}.UsagePage-module__healthTooltipBelow___IwlME{bottom:auto;top:calc(100% + 8px)}.UsagePage-module__healthTooltipBelow___IwlME:after{top:auto;bottom:100%;border-top-color:transparent;border-bottom-color:var(--floating-surface, #ffffff)}.UsagePage-module__healthTooltipBelow___IwlME:before{top:auto;bottom:100%;border-top-color:transparent;border-bottom-color:var(--floating-border, #e5e7eb)}.UsagePage-module__healthTooltipLeft___bxqyd{left:0;transform:translate(0)}.UsagePage-module__healthTooltipLeft___bxqyd:after,.UsagePage-module__healthTooltipLeft___bxqyd:before{left:8px;transform:none}.UsagePage-module__healthTooltipRight___snBMi{left:auto;right:0;transform:translate(0)}.UsagePage-module__healthTooltipRight___snBMi:after,.UsagePage-module__healthTooltipRight___snBMi:before{left:auto;right:8px;transform:none}.UsagePage-module__healthTooltipTime___aOKYR{color:var(--text-secondary);display:block;margin-bottom:2px}.UsagePage-module__healthTooltipStats___EqRXO{display:flex;align-items:center;gap:8px}.UsagePage-module__healthTooltipSuccess___Qc947{color:var(--success-color, #22c55e)}.UsagePage-module__healthTooltipFailure___4fKGK{color:var(--danger-color, #ef4444)}.UsagePage-module__healthTooltipRate___rg7Rm{color:var(--text-secondary);margin-left:2px}.UsagePage-module__healthLegend___lLmsq{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}.UsagePage-module__healthLegendLabel___muJul{font-size:10px;color:var(--text-tertiary)}.UsagePage-module__healthLegendColors___HbDI-{display:flex;gap:3px}.UsagePage-module__healthLegendBlock___r3rdr{width:10px;height:10px;border-radius:2px}@media(max-width:768px){.UsagePage-module__healthCard___FpTJ7{padding:14px;gap:10px}.UsagePage-module__healthGrid___QWLzl{grid-template-rows:repeat(7,6px);gap:2px;margin:0}.UsagePage-module__healthBlockWrapper___1Q1f5{width:6px;height:6px}.UsagePage-module__healthTooltip___Ah2TY{font-size:10px;padding:4px 8px}.UsagePage-module__healthLegendBlock___r3rdr{width:8px;height:8px}}.ConfigSection-module__section___36A5y{display:grid;grid-template-columns:minmax(0,220px) minmax(0,1fr);gap:24px;padding:26px 0;border-top:1px solid color-mix(in srgb,var(--border-color) 76%,transparent);scroll-margin-top:112px}.ConfigSection-module__section___36A5y:first-child{border-top:none;padding-top:0}@media(max-width:768px){.ConfigSection-module__section___36A5y{grid-template-columns:minmax(0,1fr);gap:18px;padding:22px 0;scroll-margin-top:88px}}.ConfigSection-module__header___9y9kI{position:sticky;top:104px;align-self:start;display:flex;flex-direction:column;gap:14px}@media(max-width:768px){.ConfigSection-module__header___9y9kI{position:static}}.ConfigSection-module__titleRow___MDqPS{display:flex;align-items:center;gap:12px;min-width:0}.ConfigSection-module__indexBadge___BNk-6{display:inline-flex;align-items:center;justify-content:center;min-width:42px;height:42px;padding:0 12px;border-radius:14px;background:linear-gradient(180deg,color-mix(in srgb,var(--bg-primary) 92%,transparent),transparent),color-mix(in srgb,var(--primary-color) 11%,var(--bg-secondary));border:1px solid color-mix(in srgb,var(--primary-color) 18%,var(--border-color));color:var(--primary-hover);font-size:12px;font-weight:700;letter-spacing:.08em}.ConfigSection-module__iconBadge___608--{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:14px;background:color-mix(in srgb,var(--bg-secondary) 88%,transparent);border:1px solid color-mix(in srgb,var(--border-color) 80%,transparent);color:var(--text-secondary);flex:0 0 auto}.ConfigSection-module__headingGroup___iqK3P{display:flex;flex-direction:column;gap:6px;min-width:0}.ConfigSection-module__title___fNwM-{margin:0;font-size:clamp(20px,2vw,25px);line-height:1.08;font-weight:700;color:var(--text-primary)}.ConfigSection-module__description___uM2Zw{margin:0;max-width:34ch;color:var(--text-secondary);font-size:14px;line-height:1.7}@media(max-width:768px){.ConfigSection-module__description___uM2Zw{max-width:none}}.ConfigSection-module__content___RBAGw{display:flex;flex-direction:column;gap:16px;min-width:0}.VisualConfigEditor-module__visualEditor___qt8bb{display:flex;flex-direction:column;gap:32px}.VisualConfigEditor-module__visualEditor___qt8bb .form-group{gap:8px;margin-bottom:0}.VisualConfigEditor-module__visualEditor___qt8bb .form-group>label{color:var(--text-secondary);font-size:12px;font-weight:700;letter-spacing:.04em}.VisualConfigEditor-module__visualEditor___qt8bb .input{min-height:48px;border-radius:16px;background:color-mix(in srgb,var(--bg-primary) 92%,transparent);border-color:color-mix(in srgb,var(--border-color) 84%,transparent);box-shadow:inset 0 1px #ffffff14}.VisualConfigEditor-module__visualEditor___qt8bb .input:focus{background:var(--bg-primary);border-color:var(--primary-color)}.VisualConfigEditor-module__visualEditor___qt8bb textarea.input{min-height:120px}.VisualConfigEditor-module__visualEditor___qt8bb .hint{color:var(--text-secondary);font-size:12px;line-height:1.6}.VisualConfigEditor-module__visualEditor___qt8bb .error-box{border-radius:14px}.VisualConfigEditor-module__visualEditor___qt8bb .item-list{gap:12px;margin-top:10px}.VisualConfigEditor-module__visualEditor___qt8bb .item-row{border-radius:18px;padding:14px 16px;background:color-mix(in srgb,var(--bg-primary) 78%,transparent);border-color:color-mix(in srgb,var(--border-color) 86%,transparent)}.VisualConfigEditor-module__visualEditor___qt8bb .item-row .item-meta{gap:4px}.VisualConfigEditor-module__visualEditor___qt8bb .item-row .item-actions{flex-wrap:wrap}.VisualConfigEditor-module__visualEditor___qt8bb .pill{background:color-mix(in srgb,var(--bg-secondary) 84%,transparent);border:1px solid color-mix(in srgb,var(--border-color) 84%,transparent);color:var(--text-secondary)}.VisualConfigEditor-module__expandableInputWrapper___k5rpc{position:relative;display:flex;align-items:flex-start;min-width:0;flex:1}.VisualConfigEditor-module__expandableInputWrapper___k5rpc>.VisualConfigEditor-module__expandableTextarea___OVvmN,.VisualConfigEditor-module__expandableInputWrapper___k5rpc>.input{flex:1;min-width:0;padding-right:28px}.VisualConfigEditor-module__expandableTextarea___OVvmN{resize:none;min-height:60px;overflow:hidden;line-height:1.5;padding-right:32px}.VisualConfigEditor-module__expandableToggle___M5mBU{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;font-size:10px;line-height:1;padding:2px;color:var(--text-secondary, #999);opacity:.5;transition:opacity .15s;z-index:1}.VisualConfigEditor-module__expandableToggle___M5mBU:hover{opacity:1}.VisualConfigEditor-module__expandableToggle___M5mBU:disabled{cursor:default;opacity:.35}.VisualConfigEditor-module__expandableInputExpanded___9zfyv .VisualConfigEditor-module__expandableToggle___M5mBU{top:8px;transform:none;right:14px}.VisualConfigEditor-module__overview___OzHQc{position:relative;overflow:hidden;display:flex;flex-direction:column;gap:18px;border-radius:30px;border:1px solid color-mix(in srgb,var(--border-color) 78%,transparent);background:radial-gradient(circle at top right,color-mix(in srgb,var(--primary-color) 12%,transparent),transparent 36%),linear-gradient(135deg,color-mix(in srgb,var(--bg-primary) 94%,transparent),color-mix(in srgb,var(--bg-secondary) 96%,transparent));padding:clamp(22px,3vw,30px)}.VisualConfigEditor-module__overview___OzHQc:before{content:"";position:absolute;inset:0 auto auto 0;width:min(220px,44vw);height:min(220px,44vw);background:radial-gradient(circle,color-mix(in srgb,var(--primary-color) 16%,transparent),transparent 72%);opacity:.6;pointer-events:none}.VisualConfigEditor-module__overviewHeader___A8kWa{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0}.VisualConfigEditor-module__overviewMeta___SM8ZF{display:flex;flex-wrap:wrap;gap:10px}.VisualConfigEditor-module__overviewPill___eXq54{display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:0 14px;border-radius:999px;border:1px solid color-mix(in srgb,var(--border-color) 84%,transparent);background:color-mix(in srgb,var(--bg-primary) 82%,transparent);color:var(--text-secondary);font-size:12px;font-weight:700;letter-spacing:.04em}.VisualConfigEditor-module__overviewPillWarning___ruscj{color:var(--warning-text);border-color:var(--warning-border);background:var(--warning-bg)}.VisualConfigEditor-module__overviewFocusList___UfkDy{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}@media(max-width:1200px){.VisualConfigEditor-module__overviewFocusList___UfkDy{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:768px){.VisualConfigEditor-module__overviewFocusList___UfkDy{grid-template-columns:minmax(0,1fr)}}.VisualConfigEditor-module__overviewFocusLink___CSqNR{border:none;background:none;padding:0;margin:0;cursor:pointer;font:inherit;color:inherit;outline:none}.VisualConfigEditor-module__overviewFocusLink___CSqNR:focus{outline:2px solid #8b8680;outline-offset:2px}.VisualConfigEditor-module__overviewFocusLink___CSqNR{display:flex;align-items:flex-start;gap:14px;width:100%;padding:14px 16px;border-radius:20px;border:1px solid color-mix(in srgb,var(--border-color) 70%,transparent);background:color-mix(in srgb,var(--bg-primary) 74%,transparent);text-align:left;transition:transform .18s ease,border-color .18s ease,background-color .18s ease}.VisualConfigEditor-module__overviewFocusLink___CSqNR:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--primary-color) 26%,var(--border-color));background:color-mix(in srgb,var(--bg-primary) 92%,transparent)}.VisualConfigEditor-module__overviewFocusLinkActive___LCEnC{border-color:color-mix(in srgb,var(--primary-color) 28%,var(--border-color));background:color-mix(in srgb,var(--bg-primary) 92%,transparent)}.VisualConfigEditor-module__focusIcon___9SvWW{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:14px;background:color-mix(in srgb,var(--primary-color) 10%,var(--bg-secondary));color:var(--primary-hover);flex:0 0 auto}.VisualConfigEditor-module__focusCopy___FTgbh{display:flex;flex-direction:column;gap:4px;min-width:0}.VisualConfigEditor-module__focusTitle___mIxOM{color:var(--text-primary);font-size:15px;font-weight:700;line-height:1.2}.VisualConfigEditor-module__focusDescription___NUwa3{color:var(--text-secondary);font-size:13px;line-height:1.55}.VisualConfigEditor-module__workspace___gqLDP{display:grid;grid-template-columns:minmax(0,280px) minmax(0,1fr);gap:24px;align-items:start}@media(max-width:1024px){.VisualConfigEditor-module__workspace___gqLDP{grid-template-columns:minmax(0,1fr)}}@media(max-width:768px){.VisualConfigEditor-module__workspace___gqLDP{gap:16px}}.VisualConfigEditor-module__mobileSectionNav___d-TWK{display:none}@media(max-width:768px){.VisualConfigEditor-module__mobileSectionNav___d-TWK{position:sticky;top:calc(var(--header-height, 64px) + 12px);z-index:4;display:block;margin-bottom:4px}}.VisualConfigEditor-module__mobileSectionNavScroller___VGXz-{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 10px;scrollbar-width:none}.VisualConfigEditor-module__mobileSectionNavScroller___VGXz-::-webkit-scrollbar{display:none}.VisualConfigEditor-module__mobileSectionNavButton___mR9BT{border:none;background:none;padding:0;margin:0;cursor:pointer;font:inherit;color:inherit;outline:none}.VisualConfigEditor-module__mobileSectionNavButton___mR9BT:focus{outline:2px solid #8b8680;outline-offset:2px}.VisualConfigEditor-module__mobileSectionNavButton___mR9BT{display:inline-flex;align-items:center;gap:8px;min-width:max-content;flex:0 0 auto;padding:10px 14px;border-radius:999px;border:1px solid color-mix(in srgb,var(--border-color) 84%,transparent);background:color-mix(in srgb,var(--bg-primary) 88%,transparent);box-shadow:0 18px 36px -30px #00000047;white-space:nowrap}.VisualConfigEditor-module__mobileSectionNavButtonActive___ug6e6{border-color:color-mix(in srgb,var(--primary-color) 24%,var(--border-color));background:color-mix(in srgb,var(--bg-primary) 96%,transparent)}.VisualConfigEditor-module__mobileSectionNavIndex___eVeF8{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0 8px;border-radius:999px;background:color-mix(in srgb,var(--bg-secondary) 88%,transparent);color:var(--text-secondary);font-size:11px;font-weight:700;letter-spacing:.08em}.VisualConfigEditor-module__mobileSectionNavLabel___oOjqs{color:var(--text-primary);font-size:13px;font-weight:700}.VisualConfigEditor-module__mobileSectionNavBadge___Gp-uW{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:var(--warning-bg);border:1px solid var(--warning-border);color:var(--warning-text);font-size:11px;font-weight:700}.VisualConfigEditor-module__sidebar___SiTqL{position:relative;align-self:start}@media(max-width:1024px){.VisualConfigEditor-module__sidebar___SiTqL{position:static}}@media(max-width:768px){.VisualConfigEditor-module__sidebar___SiTqL{display:none}}.VisualConfigEditor-module__sidebarPlaceholder___LpX2Y{min-height:1px}.VisualConfigEditor-module__sidebarRail___aktyQ{max-height:calc(100vh - var(--header-height, 64px) - 36px);overflow-y:auto;overflow-x:hidden;padding:12px;border-radius:26px;border:1px solid color-mix(in srgb,var(--border-color) 84%,transparent);background:color-mix(in srgb,var(--bg-primary) 76%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 24px 56px -34px #0000006b;-ms-overflow-style:none;scrollbar-width:none}.VisualConfigEditor-module__sidebarRail___aktyQ::-webkit-scrollbar{display:none}.VisualConfigEditor-module__floatingSidebarContainer___FWwFS{position:fixed;left:0;top:0;will-change:transform,width,max-height;z-index:45;opacity:0;pointer-events:none;transition:opacity .18s ease}@media(max-width:1024px){.VisualConfigEditor-module__floatingSidebarContainer___FWwFS{display:none}}.VisualConfigEditor-module__floatingSidebarRail___ym20u{max-height:inherit;overflow-y:auto;overflow-x:hidden;padding:12px;border-radius:26px;border:1px solid color-mix(in srgb,var(--border-color) 84%,transparent);background:color-mix(in srgb,var(--bg-primary) 96%,transparent);box-shadow:0 24px 56px -34px #0000006b;-ms-overflow-style:none;scrollbar-width:none}.VisualConfigEditor-module__floatingSidebarRail___ym20u::-webkit-scrollbar{display:none}.VisualConfigEditor-module__navList___Z7CyL{display:flex;flex-direction:column;gap:8px}@media(max-width:1024px){.VisualConfigEditor-module__navList___Z7CyL{flex-direction:row;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}.VisualConfigEditor-module__navList___Z7CyL::-webkit-scrollbar{display:none}}.VisualConfigEditor-module__navButton___EtGL7{border:none;background:none;padding:0;margin:0;cursor:pointer;font:inherit;color:inherit;outline:none}.VisualConfigEditor-module__navButton___EtGL7:focus{outline:2px solid #8b8680;outline-offset:2px}.VisualConfigEditor-module__navButton___EtGL7{display:flex;align-items:flex-start;gap:14px;width:100%;padding:14px;border-radius:20px;border:1px solid transparent;background:transparent;color:inherit;text-align:left;transition:transform .18s ease,background-color .18s ease,border-color .18s ease}.VisualConfigEditor-module__navButton___EtGL7:hover{transform:translate(2px);background:color-mix(in srgb,var(--bg-secondary) 86%,transparent);border-color:color-mix(in srgb,var(--border-color) 88%,transparent)}@media(max-width:1024px){.VisualConfigEditor-module__navButton___EtGL7{min-width:232px;flex:0 0 auto}.VisualConfigEditor-module__navButton___EtGL7:hover{transform:translateY(-1px)}}.VisualConfigEditor-module__navButtonActive___oMl0Y{background:color-mix(in srgb,var(--bg-primary) 92%,transparent);border-color:color-mix(in srgb,var(--primary-color) 24%,var(--border-color));box-shadow:0 18px 36px -30px #00000052}.VisualConfigEditor-module__navIndex___NEFe2{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:34px;border-radius:12px;background:color-mix(in srgb,var(--bg-secondary) 88%,transparent);border:1px solid color-mix(in srgb,var(--border-color) 84%,transparent);color:var(--text-secondary);font-size:11px;font-weight:700;letter-spacing:.08em;flex:0 0 auto}.VisualConfigEditor-module__navMain___JoJFq{display:flex;flex-direction:column;gap:6px;min-width:0;flex:1}.VisualConfigEditor-module__navHeadingRow___ulXXL{display:flex;align-items:center;gap:10px;min-width:0}.VisualConfigEditor-module__navLabelWrap___3-6B4{display:inline-flex;align-items:center;gap:8px;min-width:0}.VisualConfigEditor-module__navIcon___ZGr7m{display:inline-flex;align-items:center;justify-content:center;color:var(--primary-hover);flex:0 0 auto}.VisualConfigEditor-module__navLabel___-reRP{color:var(--text-primary);font-size:15px;font-weight:700;line-height:1.2}.VisualConfigEditor-module__navDescription___PvAH-{color:var(--text-secondary);font-size:12px;line-height:1.55}.VisualConfigEditor-module__navBadge___UKNbs{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0 10px;border-radius:999px;background:var(--warning-bg);border:1px solid var(--warning-border);color:var(--warning-text);font-size:12px;font-weight:700;flex:0 0 auto}.VisualConfigEditor-module__sections___UAac4{display:flex;flex-direction:column;min-width:0;padding:clamp(20px,3vw,30px);border-radius:32px;border:1px solid color-mix(in srgb,var(--border-color) 84%,transparent);background:color-mix(in srgb,var(--bg-primary) 76%,transparent)}.VisualConfigEditor-module__sectionGrid___KHy6p{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}@media(max-width:768px){.VisualConfigEditor-module__sectionGrid___KHy6p{grid-template-columns:minmax(0,1fr)}}.VisualConfigEditor-module__sectionStack___nY-l7{display:flex;flex-direction:column;gap:16px}.VisualConfigEditor-module__divider___RHNc6{height:1px;background:color-mix(in srgb,var(--border-color) 84%,transparent)}.VisualConfigEditor-module__toggleRow___Lb65M{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:center;padding:16px 18px;border-radius:18px;border:1px solid color-mix(in srgb,var(--border-color) 82%,transparent);background:color-mix(in srgb,var(--bg-primary) 84%,transparent)}@media(max-width:768px){.VisualConfigEditor-module__toggleRow___Lb65M{grid-template-columns:minmax(0,1fr)}}.VisualConfigEditor-module__toggleCopy___IC6RU{display:flex;flex-direction:column;gap:6px;min-width:0}.VisualConfigEditor-module__toggleTitle___ep81q{color:var(--text-primary);font-size:15px;font-weight:700;line-height:1.2}.VisualConfigEditor-module__toggleDescription___DrJw5{color:var(--text-secondary);font-size:13px;line-height:1.6}.VisualConfigEditor-module__fieldShell___Q-UC-{display:flex;flex-direction:column;gap:8px;min-width:0}.VisualConfigEditor-module__fieldLabel___B0C9J{color:var(--text-secondary);font-size:12px;font-weight:700;letter-spacing:.04em}.VisualConfigEditor-module__fieldControl___bzi3y{position:relative}.VisualConfigEditor-module__fieldHint___lA9jH{color:var(--text-secondary);font-size:12px;line-height:1.6}.VisualConfigEditor-module__inlinePill___qI2DE{position:absolute;right:10px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;min-height:26px;padding:0 10px;border-radius:999px;border:1px solid color-mix(in srgb,var(--border-color) 82%,transparent);background:color-mix(in srgb,var(--bg-primary) 92%,transparent);color:var(--text-secondary);font-size:11px;font-weight:700;letter-spacing:.04em}.VisualConfigEditor-module__subsection___wLWRY{display:flex;flex-direction:column;gap:14px;padding:18px 20px;border-radius:24px;border:1px solid color-mix(in srgb,var(--border-color) 82%,transparent);background:color-mix(in srgb,var(--bg-primary) 84%,transparent)}.VisualConfigEditor-module__subsectionHeader___OAu1N{display:flex;flex-direction:column;gap:6px}.VisualConfigEditor-module__subsectionTitle___9spj4{margin:0;color:var(--text-primary);font-size:16px;font-weight:700;line-height:1.25}.VisualConfigEditor-module__subsectionDescription___Cy1zr{margin:0;color:var(--text-secondary);font-size:13px;line-height:1.65}.VisualConfigEditor-module__sectionIssueBadge___RBReQ{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0 10px;border-radius:999px;background:var(--warning-bg);border:1px solid var(--warning-border);color:var(--warning-text);font-size:12px;font-weight:700}.VisualConfigEditor-module__blockHeaderRow___bw0Ek{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.VisualConfigEditor-module__blockStack___skL7x{display:flex;flex-direction:column;gap:12px}.VisualConfigEditor-module__ruleCard___PtDhf{display:flex;flex-direction:column;gap:12px;padding:14px;border-radius:20px;border:1px solid color-mix(in srgb,var(--border-color) 84%,transparent);background:color-mix(in srgb,var(--bg-primary) 88%,transparent)}.VisualConfigEditor-module__ruleCardHeader___MYRwJ{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.VisualConfigEditor-module__ruleCardTitle___tshgp{color:var(--text-primary);font-size:15px;font-weight:700;line-height:1.2}.VisualConfigEditor-module__blockLabel___NjEEm{color:var(--text-secondary);font-size:12px;font-weight:700;line-height:1.4;letter-spacing:.04em}.VisualConfigEditor-module__actionRow___XLzbJ{display:flex;justify-content:flex-end}.VisualConfigEditor-module__emptyState___A7-n3{border:1px dashed color-mix(in srgb,var(--border-color) 84%,transparent);border-radius:18px;padding:18px 16px;color:var(--text-secondary);text-align:center;background:color-mix(in srgb,var(--bg-secondary) 88%,transparent)}.VisualConfigEditor-module__stringList___lQQGc{display:flex;flex-direction:column;gap:8px}.VisualConfigEditor-module__stringListRow___4k2cz{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.VisualConfigEditor-module__payloadRuleModelRow___VKBv1{display:grid;grid-template-columns:1fr 160px auto;gap:8px;align-items:center}.VisualConfigEditor-module__payloadRuleModelRowProtocolFirst___OaJ2F{grid-template-columns:160px 1fr auto}.VisualConfigEditor-module__payloadRuleParamRow___KZJW-{display:grid;grid-template-columns:1fr 140px 1fr auto;gap:8px;align-items:center}.VisualConfigEditor-module__payloadRuleParamGroup___1QLNQ{display:flex;flex-direction:column;gap:6px}.VisualConfigEditor-module__payloadJsonInput___ewOqz{min-height:120px;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.VisualConfigEditor-module__payloadParamError___wGWdg{margin:0}.VisualConfigEditor-module__payloadFilterModelRow___MeP9-{display:grid;grid-template-columns:1fr 160px auto;gap:8px;align-items:center}.VisualConfigEditor-module__apiKeyModalInputRow___08QmU{display:flex;gap:8px;align-items:center}.VisualConfigEditor-module__apiKeyModalInputRow___08QmU .input{flex:1}@media(max-width:900px){.VisualConfigEditor-module__payloadRuleModelRow___VKBv1,.VisualConfigEditor-module__payloadRuleModelRowProtocolFirst___OaJ2F,.VisualConfigEditor-module__payloadRuleParamRow___KZJW-,.VisualConfigEditor-module__payloadFilterModelRow___MeP9-{grid-template-columns:minmax(0,1fr)}.VisualConfigEditor-module__apiKeyModalInputRow___08QmU{flex-direction:column;align-items:stretch}.VisualConfigEditor-module__payloadRowActionButton___8Fdka{width:100%}}@media(max-width:768px){.VisualConfigEditor-module__overview___OzHQc{gap:14px;padding:18px;border-radius:24px}.VisualConfigEditor-module__overviewFocusLink___CSqNR{padding:12px 14px}.VisualConfigEditor-module__sections___UAac4{border-radius:26px;padding:16px}.VisualConfigEditor-module__subsection___wLWRY{padding:16px;border-radius:20px}.VisualConfigEditor-module__toggleRow___Lb65M{padding:14px 16px}.VisualConfigEditor-module__blockHeaderRow___bw0Ek,.VisualConfigEditor-module__ruleCardHeader___MYRwJ{align-items:stretch}.VisualConfigEditor-module__blockHeaderRow___bw0Ek .btn,.VisualConfigEditor-module__ruleCardHeader___MYRwJ .btn,.VisualConfigEditor-module__actionRow___XLzbJ .btn,.VisualConfigEditor-module__stringListRow___4k2cz .btn{width:100%;justify-content:center}.VisualConfigEditor-module__actionRow___XLzbJ{justify-content:stretch}.VisualConfigEditor-module__stringListRow___4k2cz{align-items:stretch}}@media(max-width:380px){.VisualConfigEditor-module__overview___OzHQc,.VisualConfigEditor-module__sections___UAac4,.VisualConfigEditor-module__subsection___wLWRY,.VisualConfigEditor-module__ruleCard___PtDhf,.VisualConfigEditor-module__toggleRow___Lb65M{padding:14px}}.DiffModal-module__diffModal___v1LSh .modal-body{padding:0;max-height:none;overflow:hidden}.DiffModal-module__content___CqXvC{display:flex;flex-direction:column;height:70vh;min-height:420px}.DiffModal-module__emptyState___gS4Kg{flex:1;border:1px dashed var(--border-color);border-radius:8px;background:var(--bg-secondary);color:var(--text-secondary);font-size:14px;display:grid;place-items:center;margin:16px}.DiffModal-module__diffContainer___AoJKb{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.DiffModal-module__fileHeader___7jkN4{display:flex;align-items:center;gap:8px;padding:10px 16px;background:var(--bg-secondary);border-bottom:1px solid var(--border-color);flex-shrink:0}.DiffModal-module__fileIcon___OxYTx{flex-shrink:0;color:var(--text-tertiary)}.DiffModal-module__fileName___2ylCY{font-size:13px;font-weight:600;font-family:Consolas,Monaco,Menlo,SF Mono,monospace;color:var(--text-primary)}.DiffModal-module__fileStats___bN8WB{margin-left:auto;display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;font-family:Consolas,Monaco,Menlo,SF Mono,monospace}.DiffModal-module__statAdditions___EKdp8{color:#3fb950}.DiffModal-module__statDeletions___Py0Xg{color:#f85149}.DiffModal-module__statBar___tR7TQ{display:inline-flex;gap:2px;margin-left:2px}.DiffModal-module__statBlock___4qKhG{width:8px;height:8px;border-radius:2px}.DiffModal-module__statBlockAdd___VI4yX{background:#3fb950}.DiffModal-module__statBlockDel___39sMa{background:#f85149}.DiffModal-module__diffBody___9dIqe{flex:1;min-height:0;overflow:auto;font-family:Consolas,Monaco,Menlo,SF Mono,monospace;font-size:12px;line-height:20px}.DiffModal-module__hunk___AcNIC+.DiffModal-module__hunk___AcNIC{border-top:1px solid var(--border-color)}.DiffModal-module__hunkHeader___xUVgg{display:flex;align-items:center;background:color-mix(in srgb,#388bfd 8%,var(--bg-primary));border-bottom:1px solid color-mix(in srgb,#388bfd 12%,var(--border-color));color:color-mix(in srgb,#388bfd 75%,var(--text-secondary));min-height:20px}.DiffModal-module__hunkGutter___QVKqi{width:50px;flex-shrink:0;display:flex;align-items:center;justify-content:center;align-self:stretch;border-right:1px solid color-mix(in srgb,#388bfd 12%,var(--border-color))}.DiffModal-module__hunkExpandIcon___zbAx-{color:color-mix(in srgb,#388bfd 70%,var(--text-tertiary));opacity:.7}.DiffModal-module__hunkText___iPVut{padding:4px 8px 4px 28px;font-size:12px;white-space:nowrap}.DiffModal-module__diffLine___9KzZK{display:flex;min-height:20px}.DiffModal-module__lineNum___VXwKE{width:50px;flex-shrink:0;padding:0 8px;text-align:right;color:var(--text-tertiary);user-select:none;font-variant-numeric:tabular-nums;border-right:1px solid color-mix(in srgb,var(--border-color) 60%,transparent);box-sizing:border-box}.DiffModal-module__lineNumEmpty___I-5AK{color:transparent}.DiffModal-module__linePrefix___ofp2Q{width:20px;flex-shrink:0;text-align:center;user-select:none;font-weight:700}.DiffModal-module__lineText___Zdyo3{flex:1;min-width:0;padding-right:12px;white-space:pre-wrap;word-break:break-word}.DiffModal-module__context___RnJqZ{background:var(--bg-primary)}.DiffModal-module__context___RnJqZ .DiffModal-module__linePrefix___ofp2Q{color:var(--text-tertiary)}.DiffModal-module__context___RnJqZ .DiffModal-module__lineText___Zdyo3{color:var(--text-primary)}.DiffModal-module__deletion___rms8N{background:color-mix(in srgb,#f85149 8%,var(--bg-primary))}.DiffModal-module__deletion___rms8N .DiffModal-module__lineNum___VXwKE{background:color-mix(in srgb,#f85149 12%,var(--bg-primary));border-right-color:color-mix(in srgb,#f85149 18%,var(--border-color));color:color-mix(in srgb,#f85149 60%,var(--text-tertiary))}.DiffModal-module__deletion___rms8N .DiffModal-module__linePrefix___ofp2Q{color:#f85149}.DiffModal-module__deletion___rms8N .DiffModal-module__lineText___Zdyo3{color:var(--text-primary)}.DiffModal-module__addition___a6g2h{background:color-mix(in srgb,#3fb950 8%,var(--bg-primary))}.DiffModal-module__addition___a6g2h .DiffModal-module__lineNum___VXwKE{background:color-mix(in srgb,#3fb950 12%,var(--bg-primary));border-right-color:color-mix(in srgb,#3fb950 18%,var(--border-color));color:color-mix(in srgb,#3fb950 60%,var(--text-tertiary))}.DiffModal-module__addition___a6g2h .DiffModal-module__linePrefix___ofp2Q{color:#3fb950}.DiffModal-module__addition___a6g2h .DiffModal-module__lineText___Zdyo3{color:var(--text-primary)}@media(max-width:768px){.DiffModal-module__content___CqXvC{height:65vh;min-height:360px}.DiffModal-module__lineNum___VXwKE{width:36px;padding:0 4px;font-size:10px}.DiffModal-module__linePrefix___ofp2Q{width:16px;font-size:11px}.DiffModal-module__hunkGutter___QVKqi{width:36px}.DiffModal-module__hunkText___iPVut{padding-left:20px}.DiffModal-module__diffBody___9dIqe{font-size:11px;line-height:18px}.DiffModal-module__fileName___2ylCY{font-size:12px}.DiffModal-module__fileStats___bN8WB{font-size:11px}}.ConfigPage-module__container___5kN-Y{width:100%;min-height:100%;display:flex;flex-direction:column;gap:24px;overflow-y:auto;padding-bottom:calc(var(--config-action-bar-height, 0px) + 16px + env(safe-area-inset-bottom) + 16px)}.ConfigPage-module__pageHeader___Zulyi{position:relative;overflow:hidden;display:grid;grid-template-columns:minmax(0,1.2fr) auto;gap:24px;align-items:end;padding:clamp(22px,3vw,30px);border-radius:30px;border:1px solid color-mix(in srgb,var(--border-color) 82%,transparent);background:radial-gradient(circle at top right,color-mix(in srgb,var(--primary-color) 14%,transparent),transparent 34%),linear-gradient(135deg,color-mix(in srgb,var(--bg-primary) 94%,transparent),color-mix(in srgb,var(--bg-secondary) 96%,transparent))}.ConfigPage-module__pageHeader___Zulyi:before{content:"";position:absolute;inset:0 auto auto 0;width:min(260px,48vw);height:min(260px,48vw);background:radial-gradient(circle,color-mix(in srgb,var(--primary-color) 12%,transparent),transparent 70%);pointer-events:none;opacity:.7}@media(max-width:768px){.ConfigPage-module__pageHeader___Zulyi{grid-template-columns:minmax(0,1fr);align-items:stretch;gap:16px}}.ConfigPage-module__pageHeaderCopy___fiTfJ{position:relative;display:flex;flex-direction:column;gap:12px;min-width:0}.ConfigPage-module__pageEyebrow___Oib1p{color:var(--text-secondary);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.ConfigPage-module__pageTitle___BoVLE{margin:0;color:var(--text-primary);font-size:clamp(32px,4vw,52px);line-height:.95;letter-spacing:-.04em}.ConfigPage-module__description___qruwQ{margin:0;max-width:46rem;color:var(--text-secondary);font-size:15px;line-height:1.7}.ConfigPage-module__pageMeta___NX40i{position:relative;display:flex;flex-direction:column;align-items:flex-end;gap:12px;min-width:0}@media(max-width:768px){.ConfigPage-module__pageMeta___NX40i{align-items:stretch}}.ConfigPage-module__statusBadge___dQAmD{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:0 14px;border-radius:999px;border:1px solid color-mix(in srgb,var(--border-color) 82%,transparent);background:color-mix(in srgb,var(--bg-primary) 86%,transparent);color:var(--text-primary);font-size:13px;font-weight:700;text-align:center}@media(max-width:768px){.ConfigPage-module__statusBadge___dQAmD{width:100%}}.ConfigPage-module__tabBar___PelpE{display:flex;align-items:center;gap:4px;padding:4px;border-radius:999px;background:color-mix(in srgb,var(--bg-primary) 82%,transparent);border:1px solid color-mix(in srgb,var(--border-color) 82%,transparent);width:fit-content;max-width:100%;overflow-x:auto;scrollbar-width:none}.ConfigPage-module__tabBar___PelpE::-webkit-scrollbar{display:none}@media(max-width:768px){.ConfigPage-module__tabBar___PelpE{width:100%}}.ConfigPage-module__tabItem___Uj1rU{border:none;background:none;padding:0;margin:0;cursor:pointer;font:inherit;color:inherit;outline:none}.ConfigPage-module__tabItem___Uj1rU:focus{outline:2px solid #8b8680;outline-offset:2px}.ConfigPage-module__tabItem___Uj1rU{padding:10px 16px;border-radius:999px;border:1px solid transparent;color:var(--text-secondary);font-size:14px;font-weight:700;white-space:nowrap;transition:color .15s ease,background-color .15s ease,border-color .15s ease,transform .15s ease}.ConfigPage-module__tabItem___Uj1rU:hover:not(:disabled){color:var(--text-primary);background:color-mix(in srgb,var(--bg-secondary) 92%,transparent);border-color:color-mix(in srgb,var(--border-color) 88%,transparent)}.ConfigPage-module__tabItem___Uj1rU:disabled{opacity:.6;cursor:not-allowed;transform:none}@media(max-width:768px){.ConfigPage-module__tabItem___Uj1rU{flex:1;text-align:center}}.ConfigPage-module__tabActive___sZLh-{color:var(--text-primary);background:var(--bg-primary);border-color:color-mix(in srgb,var(--primary-color) 24%,var(--border-color));box-shadow:0 16px 32px -28px #0000004d}.ConfigPage-module__workspaceShell___Ztz3J{display:flex;flex-direction:column;gap:24px;padding:clamp(18px,3vw,28px);border-radius:32px;border:1px solid color-mix(in srgb,var(--border-color) 82%,transparent);background:color-mix(in srgb,var(--bg-primary) 74%,transparent);box-shadow:var(--shadow)}@media(max-width:768px){.ConfigPage-module__workspaceShell___Ztz3J{padding:16px;border-radius:28px}}.ConfigPage-module__content___PgFbt{display:flex;flex-direction:column;gap:24px;min-height:0}.ConfigPage-module__sourceWorkspace___bUuLs{display:flex;flex-direction:column;gap:16px;min-height:0}.ConfigPage-module__sourceToolbar___fhCdI{display:flex;align-items:center;gap:8px;padding-bottom:16px;border-bottom:1px solid color-mix(in srgb,var(--border-color) 80%,transparent)}@media(max-width:768px){.ConfigPage-module__sourceToolbar___fhCdI{flex-direction:column;align-items:stretch}}.ConfigPage-module__searchInputWrapper___-GeEQ{flex:1;min-width:0;position:relative;display:flex;align-items:center}.ConfigPage-module__searchInputWrapper___-GeEQ .form-group{margin-bottom:0;width:100%}.ConfigPage-module__searchInput___ock8o{flex:1;border-radius:16px!important;padding-right:132px!important}.ConfigPage-module__searchRight___pwWBV{display:inline-flex;align-items:center;gap:8px}.ConfigPage-module__searchCount___AIry7{display:inline-flex;align-items:center;min-height:28px;padding:0 10px;border-radius:999px;background:color-mix(in srgb,var(--bg-primary) 88%,transparent);border:1px solid color-mix(in srgb,var(--border-color) 84%,transparent);color:var(--text-secondary);font-size:12px;font-weight:700;pointer-events:none;white-space:nowrap}.ConfigPage-module__searchButton___GRbfi{border:none;background:none;padding:0;margin:0;cursor:pointer;font:inherit;color:inherit;outline:none}.ConfigPage-module__searchButton___GRbfi:focus{outline:2px solid #8b8680;outline-offset:2px}.ConfigPage-module__searchButton___GRbfi{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:999px;background:var(--primary-color);border:1px solid var(--primary-color);color:#fff;transition:background-color .15s ease,border-color .15s ease,opacity .15s ease}.ConfigPage-module__searchButton___GRbfi:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.ConfigPage-module__searchButton___GRbfi:disabled{opacity:.5;cursor:not-allowed}.ConfigPage-module__searchActions___ZGITa{display:flex;gap:6px;flex-shrink:0}.ConfigPage-module__searchActions___ZGITa button{min-width:36px;width:36px;height:36px;padding:0!important;border-radius:999px}@media(max-width:768px){.ConfigPage-module__searchActions___ZGITa{justify-content:stretch}.ConfigPage-module__searchActions___ZGITa button{flex:1;width:auto}}.ConfigPage-module__editorWrapper___yBudn{width:100%;flex:0 0 auto;height:clamp(420px,64vh,980px);border:1px solid color-mix(in srgb,var(--border-color) 84%,transparent);border-radius:28px;overflow:hidden;background:color-mix(in srgb,var(--bg-primary) 90%,transparent)}@supports (height: 100dvh){.ConfigPage-module__editorWrapper___yBudn{height:clamp(420px,64dvh,980px)}}.ConfigPage-module__editorWrapper___yBudn .cm-editor{height:100%;font-size:14px;font-family:Consolas,Monaco,Menlo,monospace;background:transparent}.ConfigPage-module__editorWrapper___yBudn .cm-scroller{overflow:auto;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;overscroll-behavior:contain}.ConfigPage-module__editorWrapper___yBudn .cm-gutters{border-right:1px solid color-mix(in srgb,var(--border-color) 84%,transparent);background:color-mix(in srgb,var(--bg-secondary) 88%,transparent)}.ConfigPage-module__editorWrapper___yBudn .cm-lineNumbers .cm-gutterElement{padding:0 8px 0 12px;min-width:40px;color:var(--text-muted)}.ConfigPage-module__editorWrapper___yBudn .cm-activeLine,.ConfigPage-module__editorWrapper___yBudn .cm-activeLineGutter{background:var(--bg-hover)}.ConfigPage-module__editorWrapper___yBudn .cm-selectionMatch{background:#ffc1074d}.ConfigPage-module__editorWrapper___yBudn .cm-searchMatch{background:#ffc10766;outline:1px solid rgba(255,193,7,.6)}.ConfigPage-module__editorWrapper___yBudn .cm-searchMatch-selected{background:#ff980080}[data-theme=dark] .ConfigPage-module__editorWrapper___yBudn .cm-gutters{background:var(--bg-tertiary)}[data-theme=dark] .ConfigPage-module__editorWrapper___yBudn .cm-selectionMatch{background:#ffc10733}.ConfigPage-module__modified___4mzgT{color:var(--warning-text);background:var(--warning-bg);border-color:var(--warning-border)}.ConfigPage-module__saved___zmZx2{color:var(--success-color);background:color-mix(in srgb,var(--success-color) 12%,var(--bg-primary));border-color:color-mix(in srgb,var(--success-color) 28%,var(--border-color))}.ConfigPage-module__error___qlpX1{color:var(--warning-text);background:var(--warning-bg);border-color:var(--warning-border)}.ConfigPage-module__floatingActionContainer___3ZQ-z{position:fixed;left:var(--content-center-x, 50%);bottom:calc(16px + env(safe-area-inset-bottom));transform:translate(-50%);z-index:50;pointer-events:auto;width:fit-content;max-width:calc(100vw - 24px)}.ConfigPage-module__floatingActionList___ky8bV{display:inline-flex;align-items:center;gap:8px;padding:8px 10px;background:color-mix(in srgb,var(--bg-primary) 82%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid color-mix(in srgb,var(--border-color) 60%,transparent);border-radius:999px;box-shadow:var(--shadow-lg);max-width:inherit;overflow-x:auto;scrollbar-width:none}.ConfigPage-module__floatingActionList___ky8bV::-webkit-scrollbar{display:none}.ConfigPage-module__floatingStatus___u8zOi{display:inline-flex;align-items:center;min-width:0;min-height:28px;padding:0 10px;border-radius:999px;border:1px solid transparent;background:color-mix(in srgb,var(--text-primary) 6%,transparent);color:var(--text-primary);font-size:11px;font-weight:700;text-align:center;max-width:min(280px,46vw);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ConfigPage-module__floatingStatusCompact___STwcZ{max-width:112px;padding:0 8px;font-size:10px}.ConfigPage-module__floatingActionButton___Htxmz{border:none;background:none;padding:0;margin:0;cursor:pointer;font:inherit;color:inherit;outline:none}.ConfigPage-module__floatingActionButton___Htxmz:focus{outline:2px solid #8b8680;outline-offset:2px}.ConfigPage-module__floatingActionButton___Htxmz{position:relative;display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:999px;cursor:pointer;color:var(--text-primary);transition:background-color .2s ease,transform .15s ease}.ConfigPage-module__floatingActionButton___Htxmz:hover:not(:disabled){background:color-mix(in srgb,var(--text-primary) 10%,transparent);transform:scale(1.08)}.ConfigPage-module__floatingActionButton___Htxmz:active:not(:disabled){transform:scale(.95)}.ConfigPage-module__floatingActionButton___Htxmz:disabled{opacity:.5;cursor:not-allowed;transform:none}.ConfigPage-module__dirtyDot___zXEnD{position:absolute;top:8px;right:8px;width:7px;height:7px;border-radius:999px;background:var(--warning-color);box-shadow:0 0 0 2px #c6574640}@media(max-width:1200px){.ConfigPage-module__floatingActionContainer___3ZQ-z{bottom:calc(12px + env(safe-area-inset-bottom));max-width:calc(100vw - 16px)}.ConfigPage-module__floatingActionList___ky8bV{gap:6px;padding:8px 10px}.ConfigPage-module__floatingStatus___u8zOi{max-width:min(180px,40vw);font-size:10px;padding:0 8px}.ConfigPage-module__floatingActionButton___Htxmz{width:38px;height:38px;flex:0 0 auto}}@media(max-width:480px){.ConfigPage-module__floatingStatus___u8zOi{max-width:min(132px,38vw)}}@media(max-width:380px){.ConfigPage-module__pageHeader___Zulyi,.ConfigPage-module__workspaceShell___Ztz3J{padding:14px}}.LogsPage-module__container___aQ0JL{width:100%;flex:1;display:flex;flex-direction:column;min-height:0}@media(max-width:768px){.LogsPage-module__container___aQ0JL{min-height:auto;overflow:visible}}.LogsPage-module__pageTitle___vZY55{font-size:28px;font-weight:700;color:var(--text-primary);margin:0 0 24px}.LogsPage-module__tabBar___bI3hW{display:flex;gap:4px;margin-bottom:24px;border-bottom:1px solid var(--border-color)}.LogsPage-module__tabItem___5tb4J{border:none;background:none;padding:0;margin:0;cursor:pointer;font:inherit;color:inherit;outline:none}.LogsPage-module__tabItem___5tb4J:focus{outline:2px solid #8b8680;outline-offset:2px}.LogsPage-module__tabItem___5tb4J{padding:12px 20px;font-size:14px;font-weight:500;color:var(--text-secondary);background:transparent;border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer;transition:color .15s ease,border-color .15s ease}.LogsPage-module__tabItem___5tb4J:hover{color:var(--text-primary)}.LogsPage-module__tabItem___5tb4J:focus,.LogsPage-module__tabItem___5tb4J:focus-visible{outline:none;box-shadow:none}.LogsPage-module__tabActive___JjbWX{color:var(--primary-color);border-bottom-color:var(--primary-color)}.LogsPage-module__content___hGaGn{display:flex;flex-direction:column;gap:24px;flex:1;min-height:0}@media(max-width:768px){.LogsPage-module__content___hGaGn{gap:16px;min-height:auto}}.LogsPage-module__logCard___KG4Jd{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}@media(max-width:768px){.LogsPage-module__logCard___KG4Jd{flex:0 0 auto;min-height:auto;overflow:visible}}.LogsPage-module__toolbar___9dY5F{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-left:auto}@media(max-width:768px){.LogsPage-module__toolbar___9dY5F{align-items:flex-start;margin-left:0;width:100%}}.LogsPage-module__filters___nUahU{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:16px}.LogsPage-module__filters___nUahU .form-group{margin:0}@media(max-width:768px){.LogsPage-module__filters___nUahU{gap:8px;margin-bottom:8px}}.LogsPage-module__searchWrapper___mrEmr{flex:1;min-width:220px;max-width:420px}.LogsPage-module__filterPanelHeader___Oi5tO{display:flex;align-items:center;flex:1 1 100%}.LogsPage-module__filterPanelToggle___ADZED{white-space:nowrap}.LogsPage-module__filterPanelButtonContent___sgOCp{display:inline-flex;align-items:center;gap:6px}.LogsPage-module__filterPanelCount___kAJ5-{display:inline-flex;align-items:center;padding:2px 8px;border-radius:9999px;background:#8b86801f;color:var(--primary-color);font-size:12px;line-height:1.2}.LogsPage-module__structuredFilters___fW4v7{display:flex;flex-direction:column;gap:8px;flex:1 1 100%;padding:8px 10px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px}.LogsPage-module__filterChipGroup___bbPoy{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap}.LogsPage-module__filterChipLabel___jy0D3{font-size:12px;color:var(--text-secondary);font-weight:700;line-height:28px;min-width:68px}.LogsPage-module__filterChipList___hHeOY{display:flex;align-items:center;gap:6px;flex-wrap:wrap;flex:1}.LogsPage-module__filterChip___Efqh7{border:none;background:none;padding:0;margin:0;cursor:pointer;font:inherit;color:inherit;outline:none}.LogsPage-module__filterChip___Efqh7:focus{outline:2px solid #8b8680;outline-offset:2px}.LogsPage-module__filterChip___Efqh7{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:9999px;border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-secondary);font-size:12px;line-height:1.3;cursor:pointer;max-width:280px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:border-color .15s ease,color .15s ease,background-color .15s ease}.LogsPage-module__filterChip___Efqh7:hover:not(:disabled){color:var(--text-primary);border-color:var(--primary-color)}.LogsPage-module__filterChip___Efqh7:disabled{opacity:.55;cursor:not-allowed}.LogsPage-module__filterChipActive___8S8ki{color:var(--primary-color);border-color:#8b868073;background:#8b868024}.LogsPage-module__filterChipHint___shcVo{font-size:12px;color:var(--text-tertiary)}@media(max-width:768px){.LogsPage-module__filterPanelHeader___Oi5tO,.LogsPage-module__filterPanelToggle___ADZED{width:100%}.LogsPage-module__filterPanelButtonContent___sgOCp{width:100%;justify-content:space-between;flex-wrap:wrap}.LogsPage-module__filterChipGroup___bbPoy{flex-direction:column;gap:6px}.LogsPage-module__filterChipLabel___jy0D3{min-width:0;line-height:1.2}}.LogsPage-module__searchInput___eoPij{padding-right:44px!important}.LogsPage-module__searchIcon___73cvF{color:var(--text-tertiary);pointer-events:none}.LogsPage-module__searchClear___yTM1y{border:none;background:none;padding:0;margin:0;cursor:pointer;font:inherit;color:inherit;outline:none}.LogsPage-module__searchClear___yTM1y:focus{outline:2px solid #8b8680;outline-offset:2px}.LogsPage-module__searchClear___yTM1y{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:9999px;color:var(--text-secondary)}.LogsPage-module__searchClear___yTM1y:hover{background:var(--bg-secondary)}.LogsPage-module__filterStats___IaTXF{margin-left:auto;display:inline-flex;align-items:center;gap:10px;font-size:12px;color:var(--text-secondary);white-space:nowrap}.LogsPage-module__removedCount___bNgxC{color:var(--text-tertiary)}.LogsPage-module__actionButton___aYJPR{white-space:nowrap}.LogsPage-module__buttonContent___qjHrB{display:inline-flex;align-items:center;gap:6px}.LogsPage-module__buttonContent___qjHrB svg{flex:0 0 auto}.LogsPage-module__switchLabel___EfB3d{display:inline-flex;align-items:center;gap:6px}.LogsPage-module__switchLabel___EfB3d svg{flex:0 0 auto}.LogsPage-module__logPanel___2wjiP{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;flex:1 1 auto;min-height:280px;max-height:calc(100vh - 320px);overflow:auto;position:relative;-webkit-overflow-scrolling:touch;touch-action:pan-y;overscroll-behavior:contain}@media(min-width:769px)and (max-width:1024px){.LogsPage-module__logPanel___2wjiP{min-height:240px;max-height:calc(100vh - 300px)}}@media(max-width:768px){.LogsPage-module__logPanel___2wjiP{min-height:360px;max-height:480px;flex:0 0 auto;overflow:auto}}.LogsPage-module__errorPanel___0w-se{height:480px;overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.LogsPage-module__loadMoreBanner___BUD0t{position:sticky;top:0;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;border-bottom:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-secondary);font-size:12px}@media(max-width:768px){.LogsPage-module__loadMoreBanner___BUD0t{flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:4px}.LogsPage-module__loadMoreBanner___BUD0t>span{width:100%}}.LogsPage-module__loadMoreCount___UsdBd{color:var(--text-tertiary);white-space:nowrap}.LogsPage-module__loadMoreStats___e9bVk{display:flex;align-items:center;gap:16px}@media(max-width:768px){.LogsPage-module__loadMoreStats___e9bVk{width:100%;flex-wrap:wrap;gap:8px}.LogsPage-module__loadMoreStats___e9bVk>span{white-space:nowrap}}.LogsPage-module__logList___lFt6f{display:flex;flex-direction:column}.LogsPage-module__rawLog___F5YBd{margin:0;padding:10px 12px;cursor:text;user-select:text;white-space:pre;color:var(--text-primary);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:12.5px;line-height:1.45}@media(min-width:769px)and (max-width:1024px){.LogsPage-module__rawLog___F5YBd{padding:8px 10px;font-size:12px}}@media(max-width:768px){.LogsPage-module__rawLog___F5YBd{padding:8px 10px;font-size:11.5px}}.LogsPage-module__logRow___rxZS5{display:grid;grid-template-columns:170px 1fr;gap:16px;padding:10px 12px;border-bottom:1px solid var(--border-color);border-left:3px solid transparent;cursor:copy;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:12.5px;line-height:1.45;color:var(--text-primary)}.LogsPage-module__logRow___rxZS5:hover{background:#8b86800f}@media(min-width:769px)and (max-width:1024px){.LogsPage-module__logRow___rxZS5{grid-template-columns:140px 1fr;gap:8px;padding:8px 10px;font-size:12px}}@media(max-width:768px){.LogsPage-module__logRow___rxZS5{grid-template-columns:1fr;gap:4px;padding:8px 10px;font-size:11.5px}}.LogsPage-module__rowWarn___Lhg4M{border-left-color:var(--warning-color)}.LogsPage-module__rowError___XQ3Qi{border-left-color:var(--error-color)}.LogsPage-module__timestamp___TZvLq{color:var(--text-tertiary);white-space:nowrap;padding-top:2px}@media(max-width:768px){.LogsPage-module__timestamp___TZvLq{white-space:normal}}.LogsPage-module__rowMain___f--We{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;min-width:0}.LogsPage-module__badge___tR566{display:inline-flex;align-items:center;padding:2px 8px;border-radius:9999px;font-size:12px;font-weight:800;border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-secondary);white-space:nowrap}.LogsPage-module__pill___vGA2z{display:inline-flex;align-items:center;padding:2px 8px;border-radius:9999px;font-size:12px;font-weight:600;border:1px solid var(--border-color);background:var(--bg-primary);color:var(--text-secondary);white-space:nowrap}.LogsPage-module__source___nv7Zu{color:var(--text-secondary);max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:768px){.LogsPage-module__source___nv7Zu{max-width:100%}}.LogsPage-module__requestIdBadge___yPO1b{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:11px;color:#0891b2;background:#0891b21a;border-color:#0891b240}.LogsPage-module__statusBadge___hj08j{font-variant-numeric:tabular-nums}.LogsPage-module__statusSuccess___3llcn{color:var(--success-badge-text);background:var(--success-badge-bg);border-color:var(--success-badge-border)}.LogsPage-module__statusInfo___B6DaE{color:var(--info-color);background:#8b86801f;border-color:#8b868040}.LogsPage-module__statusWarn___1Dwki{color:var(--warning-text);background:var(--warning-bg);border-color:var(--warning-border)}.LogsPage-module__statusError___xxTDc{color:var(--failure-badge-text);background:var(--failure-badge-bg);border-color:var(--failure-badge-border)}.LogsPage-module__levelInfo___oZMOp{color:var(--info-color);background:#8b86801f;border-color:#8b868040}.LogsPage-module__levelWarn___DsCD0{color:var(--warning-text);background:var(--warning-bg);border-color:var(--warning-border)}.LogsPage-module__levelError___8VjWc{color:var(--error-color);background:#c657461f;border-color:#c6574640}.LogsPage-module__levelDebug___l-5yk,.LogsPage-module__levelTrace___XvRLF{color:var(--text-secondary);background:#6b72801f;border-color:#6b728040}.LogsPage-module__methodBadge___Cf9jC{color:var(--text-primary);background:#8b868014;border-color:#8b868038}.LogsPage-module__path___frHAs{color:var(--text-primary);font-weight:700;max-width:520px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:768px){.LogsPage-module__path___frHAs{max-width:100%;flex-basis:100%}}.LogsPage-module__message___bNHRw{color:var(--text-secondary);word-break:break-word}@media(max-width:768px){.LogsPage-module__message___bNHRw{flex-basis:100%}}.LogsPage-module__traceButton___TpMAt{border:none;background:none;padding:0;margin:0;cursor:pointer;font:inherit;color:inherit;outline:none}.LogsPage-module__traceButton___TpMAt:focus{outline:2px solid #8b8680;outline-offset:2px}.LogsPage-module__traceButton___TpMAt{display:inline-flex;align-items:center;padding:2px 8px;border-radius:9999px;border:1px solid rgba(139,134,128,.3);background:#8b86801a;color:var(--primary-color);font-size:11px;font-weight:600;line-height:1.2;cursor:pointer;transition:background-color .15s ease,border-color .15s ease}.LogsPage-module__traceButton___TpMAt:hover{background:#8b868029;border-color:#8b868073}.LogsPage-module__tracePanel___qLlvU{display:flex;flex-direction:column;gap:8px}.LogsPage-module__traceNotice___brNFz{padding:8px 10px;border-radius:8px;border:1px solid var(--warning-border);background:var(--warning-bg);color:var(--warning-text);font-size:12px}.LogsPage-module__traceSectionTitle___oZ-a0{margin:4px 0 0;font-size:13px;font-weight:700;color:var(--text-primary)}.LogsPage-module__traceCandidatesHeader___b8sav{display:flex;align-items:center;justify-content:space-between;gap:10px}.LogsPage-module__traceInfoGrid___7bY40{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}@media(max-width:768px){.LogsPage-module__traceInfoGrid___7bY40{grid-template-columns:1fr}}.LogsPage-module__traceInfoItem___ydd7g{display:flex;flex-direction:column;gap:4px;min-width:0;padding:8px 10px;border:1px solid var(--border-color);border-radius:8px;background:var(--bg-secondary)}.LogsPage-module__traceInfoItemWide___pmNic{grid-column:1/-1}.LogsPage-module__traceInfoLabel___zidDI{font-size:11px;color:var(--text-secondary);font-weight:700}.LogsPage-module__traceInfoValue___3AiSj{font-size:12px;color:var(--text-primary);word-break:break-word}.LogsPage-module__traceSourceType___4TLzV{display:inline-flex;align-items:center;margin-left:6px;padding:0 6px;border-radius:9999px;border:1px solid var(--border-color);font-size:11px;color:var(--text-secondary);background:var(--bg-primary)}.LogsPage-module__traceCandidates___TbNAE{display:flex;flex-direction:column;gap:10px;max-height:320px;overflow:auto}.LogsPage-module__traceCandidate___jBw7W{border:1px solid var(--border-color);border-radius:8px;padding:10px;background:var(--bg-secondary);display:flex;flex-direction:column;gap:8px}.LogsPage-module__traceCandidateHeader___daeEH{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.LogsPage-module__traceModelBadge___iJzwF{display:inline-flex;align-items:center;padding:2px 8px;border-radius:9999px;border:1px solid var(--success-badge-border, #6ee7b7);font-size:11px;font-weight:700;color:var(--success-badge-text, #065f46);background:var(--success-badge-bg, #d1fae5)}.LogsPage-module__traceDelta___gfgPb{font-size:11px;color:var(--text-secondary)}.LogsPage-module__traceCandidateGrid___qPwow{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}@media(max-width:768px){.LogsPage-module__traceCandidateGrid___qPwow{grid-template-columns:1fr}}@media(max-height:820px){.LogsPage-module__pageTitle___vZY55{font-size:24px;margin-bottom:16px}.LogsPage-module__tabBar___bI3hW{margin-bottom:16px}.LogsPage-module__tabItem___5tb4J{padding:10px 16px}.LogsPage-module__content___hGaGn{gap:16px}.LogsPage-module__logCard___KG4Jd{padding:16px}.LogsPage-module__logPanel___2wjiP{min-height:200px;max-height:calc(100vh - 280px)}.LogsPage-module__logRow___rxZS5{padding:8px 10px;font-size:12px}.LogsPage-module__errorPanel___0w-se{height:360px}}@media(max-height:600px){.LogsPage-module__pageTitle___vZY55{font-size:20px;margin-bottom:8px}.LogsPage-module__tabBar___bI3hW{margin-bottom:8px}.LogsPage-module__tabItem___5tb4J{padding:8px 12px;font-size:13px}.LogsPage-module__content___hGaGn{gap:8px}.LogsPage-module__filters___nUahU{margin-bottom:8px;gap:8px}.LogsPage-module__logCard___KG4Jd{padding:8px}.LogsPage-module__logPanel___2wjiP{min-height:160px;max-height:calc(100vh - 220px)}.LogsPage-module__logRow___rxZS5{padding:6px 8px;font-size:11px;grid-template-columns:130px 1fr;gap:4px}.LogsPage-module__loadMoreBanner___BUD0t{padding:6px 10px}.LogsPage-module__errorPanel___0w-se{height:280px}}.SystemPage-module__container___KAydo{width:100%}.SystemPage-module__pageTitle___DiF5E{font-size:28px;font-weight:700;color:var(--text-primary);margin:0 0 32px}.SystemPage-module__content___SauLn{display:flex;flex-direction:column;gap:32px}.SystemPage-module__aboutCard___v2-ui{overflow:hidden}.SystemPage-module__aboutHeader___hT4-J{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;gap:16px;padding:24px 0 32px}.SystemPage-module__aboutLogo___KXoLr{width:108px;height:108px;border-radius:26px;object-fit:cover;box-shadow:0 12px 32px #00000029}.SystemPage-module__aboutTitle___BTLGy{width:min(100%,920px);font-size:clamp(28px,4.2vw,44px);font-weight:800;line-height:1.12;color:var(--text-primary);letter-spacing:-.02em;text-align:center;text-wrap:balance;white-space:normal;overflow-wrap:anywhere}.SystemPage-module__aboutInfoGrid___b7AR0{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}@media(max-width:900px){.SystemPage-module__aboutInfoGrid___b7AR0{grid-template-columns:1fr}}.SystemPage-module__infoTile___6AuIY{display:flex;flex-direction:column;gap:6px;min-height:120px;padding:16px 24px;border-radius:12px;border:1px solid var(--border-color);background:color-mix(in srgb,var(--bg-secondary) 82%,transparent);text-align:left}.SystemPage-module__tapTile___-9SaX{border:1px solid var(--border-color);background:color-mix(in srgb,var(--bg-secondary) 82%,transparent);color:inherit;padding:16px 24px;cursor:pointer;transition:transform .18s ease,border-color .2s ease,box-shadow .2s ease}.SystemPage-module__tapTile___-9SaX:hover{transform:translateY(-1px);border-color:var(--primary-color);box-shadow:0 8px 18px #8b86802e}.SystemPage-module__tapTile___-9SaX:active{transform:translateY(0)}.SystemPage-module__tileLabel___eMn4v{font-size:13px;font-weight:600;color:var(--text-secondary)}.SystemPage-module__tileHeader___w4Ej0{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;min-height:40px}.SystemPage-module__tileAction___WKXuS{flex-shrink:0;white-space:nowrap;margin:-4px -8px 0 0}.SystemPage-module__tileValue___Up02X{font-size:22px;font-weight:700;color:var(--text-primary);line-height:1.25;word-break:break-word}.SystemPage-module__tileSub___ysVDj{font-size:12px;color:var(--text-tertiary);line-height:1.4}.SystemPage-module__section___Q6rCw{display:flex;flex-direction:column;gap:16px}.SystemPage-module__sectionTitle___GOXpQ{font-size:20px;font-weight:600;color:var(--text-primary);margin:0 0 16px}.SystemPage-module__sectionDescription___nI7Jo{font-size:14px;color:var(--text-secondary);margin:0 0 16px}.SystemPage-module__clearLoginActions___4ek-m{display:flex;justify-content:flex-end;align-items:center}.SystemPage-module__infoGrid___NNFgo{display:grid;gap:8px}.SystemPage-module__infoGrid___NNFgo .SystemPage-module__infoRow___E8Q0J{display:flex;justify-content:space-between;padding:8px 16px;background-color:var(--bg-secondary);border-radius:8px}.SystemPage-module__infoGrid___NNFgo .SystemPage-module__infoRow___E8Q0J .SystemPage-module__label___Xw4tZ{font-weight:500;color:var(--text-secondary)}.SystemPage-module__infoGrid___NNFgo .SystemPage-module__infoRow___E8Q0J .SystemPage-module__value___pii6g{color:var(--text-primary);font-family:Consolas,Monaco,Courier New,monospace}.SystemPage-module__modelsList___id54Q{display:flex;flex-direction:column;gap:8px;max-height:400px;overflow-y:auto}.SystemPage-module__modelItem___ZTm4G{padding:8px 16px;background-color:var(--bg-secondary);border-radius:8px;font-family:Consolas,Monaco,Courier New,monospace;font-size:13px}.SystemPage-module__modelItem___ZTm4G:hover{background-color:var(--bg-hover)}.SystemPage-module__modelTags___M0sci{display:flex;flex-wrap:wrap;flex:0 0 100%;gap:8px}.SystemPage-module__groupTitle___bTqIN{display:flex;align-items:center;gap:8px}.SystemPage-module__groupIcon___-XXrb{width:18px;height:18px;flex-shrink:0}.SystemPage-module__modelTag___5Ar53{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:9999px;border:1px solid var(--border-color);background-color:var(--bg-secondary);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.SystemPage-module__modelName___LKdAK{color:var(--text-primary);font-weight:600}.SystemPage-module__modelAlias___zioM-{color:var(--text-secondary);font-size:12px}.SystemPage-module__versionCheck___V09h4{display:flex;flex-direction:column;gap:16px}.SystemPage-module__versionInfo___cmujE{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.SystemPage-module__versionInfo___cmujE .SystemPage-module__versionItem___NmHd7{padding:16px;background-color:var(--bg-secondary);border-radius:8px}.SystemPage-module__versionInfo___cmujE .SystemPage-module__versionItem___NmHd7 .SystemPage-module__label___Xw4tZ{font-size:12px;color:var(--text-secondary);margin-bottom:4px}.SystemPage-module__versionInfo___cmujE .SystemPage-module__versionItem___NmHd7 .SystemPage-module__version___XoIFT{font-size:16px;font-weight:600;color:var(--text-primary);font-family:Consolas,Monaco,Courier New,monospace}.SystemPage-module__quickLinks___QTmT3{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}.SystemPage-module__linkCard___iSrVF{display:flex;align-items:center;gap:16px;padding:16px 24px;background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:12px;text-decoration:none;color:inherit;transition:all .2s ease}.SystemPage-module__linkCard___iSrVF:hover{background-color:var(--bg-hover);border-color:var(--primary-color);transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.SystemPage-module__linkCard___iSrVF:active{transform:translateY(0)}.SystemPage-module__linkIcon___gNqz2{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:8px;background-color:var(--primary-color);color:#fff;flex-shrink:0}.SystemPage-module__linkIcon___gNqz2.SystemPage-module__github___V8I3m{background-color:#24292f}.SystemPage-module__linkIcon___gNqz2.SystemPage-module__docs___cA-rG{background-color:#10b981}.SystemPage-module__linkContent___Rfh7h{flex:1;min-width:0}.SystemPage-module__linkTitle___Zpr4Q{display:flex;align-items:center;gap:4px;font-size:15px;font-weight:600;color:var(--text-primary);margin-bottom:2px}.SystemPage-module__linkTitle___Zpr4Q svg{opacity:.5;flex-shrink:0}.SystemPage-module__linkDesc___KKavC{font-size:13px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(max-width:768px){.SystemPage-module__aboutLogo___KXoLr{width:92px;height:92px;border-radius:22px}.SystemPage-module__aboutTitle___BTLGy{width:min(100%,24ch);font-size:clamp(22px,6.6vw,34px);font-weight:700;line-height:1.18;letter-spacing:-.012em}}@media(max-width:520px){.SystemPage-module__aboutTitle___BTLGy{width:min(100%,19ch);font-size:clamp(20px,7.2vw,28px);font-weight:600;line-height:1.22;letter-spacing:-.006em}}</style>
</head>
<body>
<div id="root"></div>
</body>
</html>