@forsion/extend 0.9.4 → 0.9.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/README.md +2 -0
- package/SIGNATURE +9 -7
- package/dist/main.js +56 -40
- package/manifest.json +1 -1
- package/package.json +3 -1
- package/tangu-plugins/store-update/dist/index.mjs +2 -0
- package/tangu-plugins/store-update/tangu-plugin.json +8 -0
package/dist/main.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
"use strict";var __fxExtend=(()=>{var
|
|
2
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ap(e,t){return np(e)||op(e,t)||ip(e,t)||rp()}function ip(e,t){if(e){if(typeof e=="string")return ss(e,t);var n={}.toString.call(e).slice(8,-1);return n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set"?Array.from(e):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ss(e,t):void 0}}function gr(e){var t,n;function r(i,s){try{var l=e[i](s),c=l.value,d=c instanceof tp;Promise.resolve(d?c.v:c).then(function(g){if(d){var p=i==="return"&&c.k?i:"next";if(!c.k||g.done)return r(p,g);g=e[p](g).value}a(!!l.done,g)},function(g){r("throw",g)})}catch(g){a(2,g)}}function a(i,s){i===2?t.reject(s):t.resolve({value:s,done:i}),(t=t.next)?r(t.key,t.arg):n=null}this._invoke=function(i,s){return new Promise(function(l,c){var d={key:i,arg:s,resolve:l,reject:c,next:null};n?n=n.next=d:(t=n=d,r(i,s))})},typeof e.return!="function"&&(this.return=void 0)}gr.prototype[typeof Symbol=="function"&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},gr.prototype.next=function(e){return this._invoke("next",e)},gr.prototype.throw=function(e){return this._invoke("throw",e)},gr.prototype.return=function(e){return this._invoke("return",e)};var ws=Object.entries,ls=Object.setPrototypeOf,sp=Object.isFrozen,lp=Object.getPrototypeOf,cp=Object.getOwnPropertyDescriptor,Ze=Object.freeze,ot=Object.seal,go=Object.create,zs=typeof Reflect<"u"&&Reflect,ma=zs.apply,ga=zs.construct;Ze||(Ze=function(t){return t});ot||(ot=function(t){return t});ma||(ma=function(t,n){for(var r=arguments.length,a=new Array(r>2?r-2:0),i=2;i<r;i++)a[i-2]=arguments[i];return t.apply(n,a)});ga||(ga=function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a<n;a++)r[a-1]=arguments[a];return new t(...r)});var Wn=Je(Array.prototype.forEach);Array.prototype.indexOf;var dp=Je(Array.prototype.lastIndexOf),cs=Je(Array.prototype.pop),Do=Je(Array.prototype.push);Array.prototype.slice;var up=Je(Array.prototype.splice),ho=Array.isArray,Bo=Je(String.prototype.toLowerCase),la=Je(String.prototype.toString),ds=Je(String.prototype.match),No=Je(String.prototype.replace),us=Je(String.prototype.indexOf),pp=Je(String.prototype.trim),fp=Je(Number.prototype.toString),mp=Je(Boolean.prototype.toString),ps=typeof BigInt>"u"?null:Je(BigInt.prototype.toString),fs=typeof Symbol>"u"?null:Je(Symbol.prototype.toString),zt=Je(Object.prototype.hasOwnProperty),Oo=Je(Object.prototype.toString),ct=Je(RegExp.prototype.test),In=gp(TypeError);function Je(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a<n;a++)r[a-1]=arguments[a];return ma(e,t,r)}}function gp(e){return function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return ga(e,n)}}function Se(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Bo;if(ls&&ls(e,null),!ho(t))return e;let r=t.length;for(;r--;){let a=t[r];if(typeof a=="string"){let i=n(a);i!==a&&(sp(t)||(t[r]=i),a=i)}e[a]=!0}return e}function hp(e){for(let t=0;t<e.length;t++)zt(e,t)||(e[t]=null);return e}function Dt(e){let t=go(null);for(let r of ws(e)){var n=ap(r,2);let a=n[0],i=n[1];zt(e,a)&&(ho(i)?t[a]=hp(i):i&&typeof i=="object"&&i.constructor===Object?t[a]=Dt(i):t[a]=i)}return t}function bp(e){switch(typeof e){case"string":return e;case"number":return fp(e);case"boolean":return mp(e);case"bigint":return ps?ps(e):"0";case"symbol":return fs?fs(e):"Symbol()";case"undefined":return Oo(e);case"function":case"object":{if(e===null)return Oo(e);let t=e,n=jt(t,"toString");if(typeof n=="function"){let r=n(t);return typeof r=="string"?r:Oo(r)}return Oo(e)}default:return Oo(e)}}function jt(e,t){for(;e!==null;){let r=cp(e,t);if(r){if(r.get)return Je(r.get);if(typeof r.value=="function")return Je(r.value)}e=lp(e)}function n(){return null}return n}function vp(e){try{return ct(e,""),!0}catch{return!1}}var ms=Ze(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),ca=Ze(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),da=Ze(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),yp=Ze(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),ua=Ze(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),xp=Ze(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),gs=Ze(["#text"]),hs=Ze(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","command","commandfor","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),pa=Ze(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dominant-baseline","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","pointer-events","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-orientation","text-rendering","textlength","type","u1","u2","unicode","values","vector-effect","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),bs=Ze(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),hr=Ze(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),kp=ot(/{{[\w\W]*|^[\w\W]*}}/g),wp=ot(/<%[\w\W]*|^[\w\W]*%>/g),zp=ot(/\${[\w\W]*/g),Sp=ot(/^data-[\-\w.\u00B7-\uFFFF]+$/),_p=ot(/^aria-[\-\w]+$/),vs=ot(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Cp=ot(/^(?:\w+script|data):/i),Tp=ot(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Ap=ot(/^html$/i),Ep=ot(/^[a-z][.\w]*(-[.\w]+)+$/i),ys=ot(/<[/\w!]/g),xs=ot(/<[/\w]/g),Pp=ot(/<\/no(script|embed|frames)/i),Mp=ot(/\/>/i),Lt={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},Ss=["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"],Ip=Ze(Se({},Ss)),Rp=(function(){let e={};return Wn(Ss,t=>{e[t]=ot(new RegExp("</"+t+"(?=[\\t\\n\\f\\r />])","i"))}),Ze(e)})(),Lp=function(){return typeof window>"u"?null:window},Dp=function(t,n){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let r=null,a="data-tt-policy-suffix";n&&n.hasAttribute(a)&&(r=n.getAttribute(a));let i="dompurify"+(r?"#"+r:"");try{return t.createPolicy(i,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+i+" could not be created."),null}},ks=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},Rn=function(t,n,r,a){return zt(t,n)&&ho(t[n])?Se(a.base?Dt(a.base):{},t[n],a.transform):r},fa=function(t,n,r){let a=zt(t,n)?t[n]:void 0;return a&&typeof a=="object"?Dt(a):r()};function _s(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Lp(),t=F=>_s(F);if(t.version="3.4.16",t.removed=[],!e||!e.document||e.document.nodeType!==Lt.document||!e.Element)return t.isSupported=!1,t;let n=e.document,r=n,a=r.currentScript;e.DocumentFragment;let i=e.HTMLTemplateElement,s=e.Node,l=e.Element,c=e.NodeFilter;e.NamedNodeMap===void 0&&(e.NamedNodeMap||e.MozNamedAttrMap),e.HTMLFormElement;let d=e.DOMParser,g=e.trustedTypes,p=l.prototype,u=jt(p,"cloneNode"),m=jt(p,"remove"),f=jt(p,"removeAttributeNode"),v=jt(p,"nextSibling"),x=jt(p,"childNodes"),w=jt(p,"parentNode"),z=jt(p,"shadowRoot"),k=jt(p,"attributes"),M=s&&s.prototype?jt(s.prototype,"nodeType"):null,L=s&&s.prototype?jt(s.prototype,"nodeName"):null,H=s&&s.prototype?jt(s.prototype,"ownerDocument"):null,V=function(h){return M?M(h):h.nodeType},Q=function(h){return L?L(h):h.nodeName};if(typeof i=="function"){let F=n.createElement("template");F.content&&F.content.ownerDocument&&(n=F.content.ownerDocument)}let ee,S="",E,O=!1,I=0,te=function(){if(I>0)throw In('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.')},b=function(h){te(),I++;try{return ee.createHTML(h)}finally{I--}},T=function(h){te(),I++;try{return ee.createScriptURL(h)}finally{I--}},R=function(){return O||(E=Dp(g,a),O=!0),E},X=n,K=X.implementation,J=X.createNodeIterator,me=X.createDocumentFragment,Le=X.getElementsByTagName,Ve=r.importNode,he=ks();t.isSupported=typeof ws=="function"&&typeof w=="function"&&K&&K.createHTMLDocument!==void 0;let Te=kp,pt=wp,Ct=zp,Tt=Sp,nn=_p,bt=Cp,st=Tp,At=Ep,vt=vs,ve=null,yt=Se({},[...ms,...ca,...da,...ua,...gs]),Ae=null,Un=Se({},[...hs,...pa,...bs,...hr]),lt=Object.seal(go(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Xe=null,xt=null,ft=Object.seal(go(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Et=!0,Ht=!0,tt=!1,Tn=!0,Ke=!1,kt=!0,D=!1,re=!1,ke=null,Ye=null,at=!1,je=!1,Pt=!1,on=!1,An=!0,En=!1,un="user-content-",Fe=!0,wt=!1,mt={},Mt=null,Po=Se({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","selectedcontent","style","svg","template","thead","title","video","xmp"]),pn=null,nt=Se({},["audio","video","img","source","image","track"]),Mo=null,Io=Se({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),qt="http://www.w3.org/1998/Math/MathML",Hn="http://www.w3.org/2000/svg",It="http://www.w3.org/1999/xhtml",fn=It,qn=!1,Ro=null,oa=Se({},[qt,Hn,It],la),sr=Ze(["mi","mo","mn","ms","mtext"]),y=Se({},sr),C=Ze(["annotation-xml"]),P=Se({},C),j=Se({},["title","style","font","a","script"]),$=null,ie=["application/xhtml+xml","text/html"],ze="text/html",Z=null,ye=null,lr=n.createElement("form"),Vn=function(h){return h instanceof RegExp||h instanceof Function},uo=function(){let h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(ye&&ye===h)return;(!h||typeof h!="object")&&(h={}),h=Dt(h),$=ie.indexOf(h.PARSER_MEDIA_TYPE)===-1?ze:h.PARSER_MEDIA_TYPE,Z=$==="application/xhtml+xml"?la:Bo,ve=Rn(h,"ALLOWED_TAGS",yt,{transform:Z}),Ae=Rn(h,"ALLOWED_ATTR",Un,{transform:Z}),Ro=Rn(h,"ALLOWED_NAMESPACES",oa,{transform:la}),Mo=Rn(h,"ADD_URI_SAFE_ATTR",Io,{transform:Z,base:Io}),pn=Rn(h,"ADD_DATA_URI_TAGS",nt,{transform:Z,base:nt}),Mt=Rn(h,"FORBID_CONTENTS",Po,{transform:Z}),Xe=Rn(h,"FORBID_TAGS",Dt({}),{transform:Z}),xt=Rn(h,"FORBID_ATTR",Dt({}),{transform:Z}),mt=zt(h,"USE_PROFILES")?h.USE_PROFILES&&typeof h.USE_PROFILES=="object"?Dt(h.USE_PROFILES):h.USE_PROFILES:!1,Et=h.ALLOW_ARIA_ATTR!==!1,Ht=h.ALLOW_DATA_ATTR!==!1,tt=h.ALLOW_UNKNOWN_PROTOCOLS||!1,Tn=h.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Ke=h.SAFE_FOR_TEMPLATES||!1,kt=h.SAFE_FOR_XML!==!1,D=h.WHOLE_DOCUMENT||!1,je=h.RETURN_DOM||!1,Pt=h.RETURN_DOM_FRAGMENT||!1,on=h.RETURN_TRUSTED_TYPE||!1,at=h.FORCE_BODY||!1,An=h.SANITIZE_DOM!==!1,En=h.SANITIZE_NAMED_PROPS||!1,Fe=h.KEEP_CONTENT!==!1,wt=h.IN_PLACE||!1,vt=vp(h.ALLOWED_URI_REGEXP)?h.ALLOWED_URI_REGEXP:vs,fn=typeof h.NAMESPACE=="string"?h.NAMESPACE:It,y=fa(h,"MATHML_TEXT_INTEGRATION_POINTS",()=>Se({},sr)),P=fa(h,"HTML_INTEGRATION_POINTS",()=>Se({},C));let _=fa(h,"CUSTOM_ELEMENT_HANDLING",()=>go(null));if(lt=go(null),zt(_,"tagNameCheck")&&Vn(_.tagNameCheck)&&(lt.tagNameCheck=_.tagNameCheck),zt(_,"attributeNameCheck")&&Vn(_.attributeNameCheck)&&(lt.attributeNameCheck=_.attributeNameCheck),zt(_,"allowCustomizedBuiltInElements")&&typeof _.allowCustomizedBuiltInElements=="boolean"&&(lt.allowCustomizedBuiltInElements=_.allowCustomizedBuiltInElements),ot(lt),Ke&&(Ht=!1),Pt&&(je=!0),mt&&(ve=Se({},gs),Ae=go(null),mt.html===!0&&(Se(ve,ms),Se(Ae,hs)),mt.svg===!0&&(Se(ve,ca),Se(Ae,pa),Se(Ae,hr)),mt.svgFilters===!0&&(Se(ve,da),Se(Ae,pa),Se(Ae,hr)),mt.mathMl===!0&&(Se(ve,ua),Se(Ae,bs),Se(Ae,hr))),ft.tagCheck=null,ft.attributeCheck=null,zt(h,"ADD_TAGS")&&(typeof h.ADD_TAGS=="function"?ft.tagCheck=h.ADD_TAGS:ho(h.ADD_TAGS)&&(ve===yt&&(ve=Dt(ve)),Se(ve,h.ADD_TAGS,Z))),zt(h,"ADD_ATTR")&&(typeof h.ADD_ATTR=="function"?ft.attributeCheck=h.ADD_ATTR:ho(h.ADD_ATTR)&&(Ae===Un&&(Ae=Dt(Ae)),Se(Ae,h.ADD_ATTR,Z))),zt(h,"ADD_FORBID_CONTENTS")&&ho(h.ADD_FORBID_CONTENTS)&&(Mt===Po&&(Mt=Dt(Mt)),Se(Mt,h.ADD_FORBID_CONTENTS,Z)),Fe&&(ve["#text"]=!0),D&&Se(ve,["html","head","body"]),ve.table&&(Se(ve,["tbody"]),delete Xe.tbody),h.TRUSTED_TYPES_POLICY){if(typeof h.TRUSTED_TYPES_POLICY.createHTML!="function")throw In('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof h.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw In('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');let B=ee;ee=h.TRUSTED_TYPES_POLICY;try{S=b("")}catch(U){throw ee=B,U}}else h.TRUSTED_TYPES_POLICY===null?(ee=void 0,S=""):(ee===void 0&&(ee=R()),ee&&typeof S=="string"&&(S=b("")));Ze&&Ze(h),ye=h},Pn=Se({},[...ca,...da,...yp]),Ji=Se({},[...ua,...xp]),Bu=function(h,_,B){return _.namespaceURI===It?h==="svg":_.namespaceURI===qt?h==="svg"&&(B==="annotation-xml"||y[B]):!!Pn[h]},Fu=function(h,_,B){return _.namespaceURI===It?h==="math":_.namespaceURI===Hn?h==="math"&&P[B]:!!Ji[h]},$u=function(h,_,B){return _.namespaceURI===Hn&&!P[B]||_.namespaceURI===qt&&!y[B]?!1:!Ji[h]&&(j[h]||!Pn[h])},Uu=function(h){let _=w(h);(!_||!_.tagName)&&(_={namespaceURI:fn,tagName:"template"});let B=Bo(h.tagName),U=Bo(_.tagName);return Ro[h.namespaceURI]?h.namespaceURI===Hn?Bu(B,_,U):h.namespaceURI===qt?Fu(B,_,U):h.namespaceURI===It?$u(B,_,U):!!($==="application/xhtml+xml"&&Ro[h.namespaceURI]):!1},Mn=function(h){Do(t.removed,{element:h});try{w(h).removeChild(h)}catch{if(m(h),!w(h))throw In("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},Yi=function(h,_,B){try{f(h,_)}catch{try{h.removeAttribute(B)}catch{}}},cr=function(h){dr(h);let _=x(h);if(_){let U=[];Wn(_,le=>{Do(U,le)}),Wn(U,le=>{try{m(le)}catch{}})}let B=k(h);if(B)for(let U=B.length-1;U>=0;--U){let le=B[U],be=le&&le.name;typeof be=="string"&&Yi(h,le,be)}},jn=function(h,_,B){if(!B)try{B=_.getAttributeNode(h)}catch{B=null}Do(t.removed,{attribute:B||null,from:_});try{B?f(_,B):_.removeAttribute(h)}catch{try{_.removeAttribute(h)}catch{}}if(h==="is")if(je||Pt)try{Mn(_)}catch{}else try{_.setAttribute(h,"")}catch{}},Hu=function(h){let _=k(h);if(_)for(let B=_.length-1;B>=0;--B){let U=_[B],le=U&&U.name;typeof le!="string"||Ae[Z(le)]||Yi(h,U,le)}},dr=function(h){let _=[h];for(;_.length>0;){let B=_.pop();V(B)===Lt.element&&Hu(B);let U=x(B);if(U)for(let le=U.length-1;le>=0;--le)_.push(U[le])}},Zi=function(h,_){return kt?h==="patchsrc"?!0:h==="for"&&_!=="label"&&_!=="output":!1},qu=function(h){if(!kt)return;let _=[h];for(;_.length>0;){let B=_.pop(),U=V(B);if(U===Lt.processingInstruction||U===Lt.comment&&ct(xs,B.data)){try{m(B)}catch{}continue}if(U===Lt.element){let be=B,we=Z(Q(B));try{be.hasAttribute&&be.hasAttribute("patchsrc")&&be.removeAttribute("patchsrc"),be.hasAttribute&&be.hasAttribute("for")&&Zi("for",we)&&be.removeAttribute("for")}catch{}}let le=x(B);if(le)for(let be=le.length-1;be>=0;--be)_.push(le[be])}},Qi=function(h){let _=null,B=null;if(at)h="<remove></remove>"+h;else{let be=ds(h,/^[\r\n\t ]+/);B=be&&be[0]}$==="application/xhtml+xml"&&fn===It&&(h='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+h+"</body></html>");let U=ee?b(h):h;if(fn===It)try{_=new d().parseFromString(U,$)}catch{}if(!_||!_.documentElement){_=K.createDocument(fn,"template",null);try{_.documentElement.innerHTML=qn?S:U}catch{}}let le=_.body||_.documentElement;return h&&B&&le.insertBefore(n.createTextNode(B),le.childNodes[0]||null),fn===It?Le.call(_,D?"html":"body")[0]:D?_.documentElement:le},es=function(h){let _=H?H(h):h.ownerDocument;return J.call(_||h,h,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},ur=function(h){return h=No(h,Te," "),h=No(h,pt," "),h=No(h,Ct," "),h},ra=function(h){var _;h.normalize();let B=H?H(h):h.ownerDocument,U=J.call(B||h,h,c.SHOW_TEXT|c.SHOW_COMMENT|c.SHOW_CDATA_SECTION|c.SHOW_PROCESSING_INSTRUCTION,null),le=U.nextNode();for(;le;)le.data=ur(le.data),le=U.nextNode();let be=(_=h.querySelectorAll)===null||_===void 0?void 0:_.call(h,"template");be&&Wn(be,we=>{po(we.content)&&ra(we.content)})},pr=function(h){let _=L?L(h):null;return typeof _!="string"||Z(_)!=="form"?!1:typeof h.nodeName!="string"||typeof h.textContent!="string"||typeof h.removeChild!="function"||h.attributes!==k(h)||typeof h.removeAttribute!="function"||typeof h.removeAttributeNode!="function"||typeof h.getAttributeNode!="function"||typeof h.setAttribute!="function"||typeof h.namespaceURI!="string"||typeof h.insertBefore!="function"||typeof h.hasChildNodes!="function"||h.nodeType!==M(h)||h.childNodes!==x(h)},po=function(h){if(!M||typeof h!="object"||h===null)return!1;try{return M(h)===Lt.documentFragment}catch{return!1}},Lo=function(h){if(!M||typeof h!="object"||h===null)return!1;try{return typeof M(h)=="number"}catch{return!1}};function rn(F,h,_){F.length!==0&&Wn(F,B=>{B.call(t,h,_,ye)})}let Vu=function(h,_){return!!(kt&&h.hasChildNodes()&&!Lo(h.firstElementChild)&&ct(ys,h.textContent)&&ct(ys,h.innerHTML)||kt&&h.namespaceURI===It&&Ip[_]&&(Lo(h.firstElementChild)||typeof h.textContent=="string"&&ct(Rp[_],h.textContent))||h.nodeType===Lt.processingInstruction||kt&&h.nodeType===Lt.comment&&ct(xs,h.data))},fr=function(h,_){if(h instanceof RegExp)return ct(h,_);if(h instanceof Function){for(var B=arguments.length,U=new Array(B>2?B-2:0),le=2;le<B;le++)U[le-2]=arguments[le];return!!h(_,...U)}return!1},ju=function(h,_,B){if(!Xe[_]&&rs(_)&&fr(lt.tagNameCheck,_))return!1;if(Fe&&!Mt[_]){let U=w(h),le=x(h);if(le&&U){let be=le.length;for(let we=be-1;we>=0;--we){let Ue=h===B?u(le[we],!0):le[we];U.insertBefore(Ue,v(h))}}}return Mn(h),!0},ts=function(h,_,B,U){return h.length===0?_:_===B||_===U?Dt(_):_},fo=function(h,_){return h===_||w(h)!==null?!1:(wt&&dr(h),!0)},ns=function(h,_){if(rn(he.beforeSanitizeElements,h,null),fo(h,_))return!0;if(pr(h))return Mn(h),!0;let B=Z(Q(h));if(ve=ts(he.uponSanitizeElement,ve,yt,ke),rn(he.uponSanitizeElement,h,{tagName:B,allowedTags:ve}),fo(h,_))return!0;if(Vu(h,B))return Mn(h),!0;if(Xe[B]||!(ft.tagCheck instanceof Function&&ft.tagCheck(B))&&!ve[B]){let U=ju(h,B,_);return U===!1&&(rn(he.afterSanitizeElements,h,null),fo(h,_))?!0:U}if(V(h)===Lt.element&&!Uu(h)||(B==="noscript"||B==="noembed"||B==="noframes")&&ct(Pp,h.innerHTML))return Mn(h),!0;if(Ke&&h.nodeType===Lt.text){let U=ur(h.textContent);h.textContent!==U&&(Do(t.removed,{element:h.cloneNode()}),h.textContent=U)}return rn(he.afterSanitizeElements,h,null),fo(h,_)},os=function(h,_,B){if(xt[_]||Zi(_,h)||An&&(_==="id"||_==="name")&&(B in n||B in lr))return!1;let U=Ae[_]||ft.attributeCheck instanceof Function&&ft.attributeCheck(_,h);return Ht&&ct(Tt,_)||Et&&ct(nn,_)?!0:U?Mo[_]||ct(vt,No(B,st,""))||(_==="src"||_==="xlink:href"||_==="href")&&h!=="script"&&us(B,"data:")===0&&pn[h]||tt&&!ct(bt,No(B,st,""))?!0:!B:rs(h)&&fr(lt.tagNameCheck,h)&&fr(lt.attributeNameCheck,_,h)||_==="is"&<.allowCustomizedBuiltInElements&&fr(lt.tagNameCheck,B)},Wu=Se({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),rs=function(h){return!Wu[Bo(h)]&&ct(At,h)},Gu=function(h,_,B,U){if(ee&&typeof g=="object"&&typeof g.getAttributeType=="function"&&!B)switch(g.getAttributeType(h,_)){case"TrustedHTML":return b(U);case"TrustedScriptURL":return T(U)}return U},Xu=function(h,_,B,U){try{return B?h.setAttributeNS(B,_,U):h.setAttribute(_,U),pr(h)?(Mn(h),!1):!0}catch{return jn(_,h),!1}},as=function(h,_){if(rn(he.beforeSanitizeAttributes,h,null),fo(h,_))return;let B=h.attributes;if(!B||pr(h))return;Ae=ts(he.uponSanitizeAttribute,Ae,Un,Ye);let U={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Ae,forceKeepAttr:void 0},le=B.length,be=Z(h.nodeName);for(;le--;){let we=B[le],Ue=we.name,Vt=we.namespaceURI,Rt=we.value,mo=Z(Ue),ia=Rt,gt=Ue==="value"?ia:pp(ia),is=!1;if(U.attrName=mo,U.attrValue=gt,U.keepAttr=!0,U.forceKeepAttr=void 0,rn(he.uponSanitizeAttribute,h,U),gt=U.attrValue,En&&(mo==="id"||mo==="name")&&us(gt,un)!==0&&(jn(Ue,h,we),gt=un+gt,is=!0),kt&&ct(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,gt)){jn(Ue,h,we);continue}if(mo==="attributename"&&ds(gt,"href")){jn(Ue,h,we);continue}if(!U.forceKeepAttr){if(!U.keepAttr){jn(Ue,h,we);continue}if(!Tn&&ct(Mp,gt)){jn(Ue,h,we);continue}if(Ke&&(gt=ur(gt)),!os(be,mo,gt)){jn(Ue,h,we);continue}gt=Gu(be,mo,Vt,gt),gt!==ia&&Xu(h,Ue,Vt,gt)&&is&&cs(t.removed)}}rn(he.afterSanitizeAttributes,h,null),fo(h,_)},mr=function(h){let _=null,B=es(h);for(rn(he.beforeSanitizeShadowDOM,h,null);_=B.nextNode();)if(rn(he.uponSanitizeShadowNode,_,null),ns(_,h),as(_,h),po(_.content)&&mr(_.content),V(_)===Lt.element){let U=z(_);po(U)&&(aa(U),mr(U))}rn(he.afterSanitizeShadowDOM,h,null)},aa=function(h){let _=[{node:h,shadow:null}];for(;_.length>0;){let B=_.pop();if(B.shadow){mr(B.shadow);continue}let U=B.node,le=V(U)===Lt.element,be=x(U);if(be)for(let we=be.length-1;we>=0;--we)_.push({node:be[we],shadow:null});if(le){let we=L?L(U):null;if(typeof we=="string"&&Z(we)==="template"){let Ue=U.content;po(Ue)&&_.push({node:Ue,shadow:null})}}if(le){let we=z(U);po(we)&&_.push({node:null,shadow:we},{node:we,shadow:null})}}};return t.sanitize=function(F){let h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},_=null,B=null,U=null,le=null;if(qn=!F,qn&&(F="<!-->"),typeof F!="string"&&!Lo(F)&&(F=bp(F),typeof F!="string"))throw In("dirty is not a string, aborting");if(!t.isSupported)return F;re?(ve=ke,Ae=Ye):uo(h),(he.uponSanitizeElement.length>0||he.uponSanitizeAttribute.length>0)&&(ve=Dt(ve)),he.uponSanitizeAttribute.length>0&&(Ae=Dt(Ae)),t.removed=[];let be=wt&&typeof F!="string"&&Lo(F);if(be){qu(F);let Vt=Q(F);if(typeof Vt=="string"){let Rt=Z(Vt);if(!ve[Rt]||Xe[Rt])throw cr(F),In("root node is forbidden and cannot be sanitized in-place")}if(pr(F))throw cr(F),In("root node is clobbered and cannot be sanitized in-place");try{aa(F)}catch(Rt){throw cr(F),Rt}}else if(Lo(F))_=Qi("<!---->"),B=_.ownerDocument.importNode(F,!0),B.nodeType===Lt.element&&B.nodeName==="BODY"||B.nodeName==="HTML"?_=B:_.appendChild(B),aa(_);else{if(!je&&!Ke&&!D&&F.indexOf("<")===-1)return ee&&on?b(F):F;if(_=Qi(F),!_)return je?null:on?S:""}_&&at&&Mn(_.firstChild);let we=be?F:_;try{let Vt=es(we);for(;U=Vt.nextNode();)ns(U,we),as(U,we),po(U.content)&&mr(U.content)}catch(Vt){throw be&&(cr(F),Wn(t.removed,Rt=>{Rt.element&&dr(Rt.element)})),Vt}if(be){let Vt=!1;if(Wn(t.removed,Rt=>{Rt.element&&(Rt.element===F&&(Vt=!0),dr(Rt.element))}),Vt)throw In("a node selected for removal could not be safely returned; refusing to sanitize in place");return Ke&&ra(F),F}if(je){if(Ke&&ra(_),Pt)for(le=me.call(_.ownerDocument);_.firstChild;)le.appendChild(_.firstChild);else le=_;return(Ae.shadowroot||Ae.shadowrootmode)&&(le=Ve.call(r,le,!0)),le}let Ue=D?_.outerHTML:_.innerHTML;return D&&ve["!doctype"]&&_.ownerDocument&&_.ownerDocument.doctype&&_.ownerDocument.doctype.name&&ct(Ap,_.ownerDocument.doctype.name)&&(Ue="<!DOCTYPE "+_.ownerDocument.doctype.name+`>
|
|
3
|
-
`+Ue),
|
|
4
|
-
]`).replace("lheading",
|
|
5
|
-
`),n=t.length-1;for(;n>=0&&
|
|
6
|
-
`)}function
|
|
1
|
+
"use strict";var __fxExtend=(()=>{var ca=Object.defineProperty;var ap=Object.getOwnPropertyDescriptor;var ip=Object.getOwnPropertyNames;var sp=Object.prototype.hasOwnProperty;var lp=(e,t)=>{for(var n in t)ca(e,n,{get:t[n],enumerable:!0})},cp=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of ip(t))!sp.call(e,a)&&a!==n&&ca(e,a,{get:()=>t[a],enumerable:!(r=ap(t,a))||r.enumerable});return e};var dp=e=>cp(ca({},"__esModule",{value:!0}),e);var Eb={};lp(Eb,{dispose:()=>Gu});function up(e,t){this.v=e,this.k=t}function ps(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function pp(e){if(Array.isArray(e))return e}function fp(e,t){var n=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(n!=null){var r,a,i,s,l=[],c=!0,d=!1;try{if(i=(n=n.call(e)).next,t===0){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(g){d=!0,a=g}finally{try{if(!c&&n.return!=null&&(s=n.return(),Object(s)!==s))return}finally{if(d)throw a}}return l}}function mp(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
|
2
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function gp(e,t){return pp(e)||fp(e,t)||hp(e,t)||mp()}function hp(e,t){if(e){if(typeof e=="string")return ps(e,t);var n={}.toString.call(e).slice(8,-1);return n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set"?Array.from(e):n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ps(e,t):void 0}}function vr(e){var t,n;function r(i,s){try{var l=e[i](s),c=l.value,d=c instanceof up;Promise.resolve(d?c.v:c).then(function(g){if(d){var u=i==="return"&&c.k?i:"next";if(!c.k||g.done)return r(u,g);g=e[u](g).value}a(!!l.done,g)},function(g){r("throw",g)})}catch(g){a(2,g)}}function a(i,s){i===2?t.reject(s):t.resolve({value:s,done:i}),(t=t.next)?r(t.key,t.arg):n=null}this._invoke=function(i,s){return new Promise(function(l,c){var d={key:i,arg:s,resolve:l,reject:c,next:null};n?n=n.next=d:(t=n=d,r(i,s))})},typeof e.return!="function"&&(this.return=void 0)}vr.prototype[typeof Symbol=="function"&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},vr.prototype.next=function(e){return this._invoke("next",e)},vr.prototype.throw=function(e){return this._invoke("throw",e)},vr.prototype.return=function(e){return this._invoke("return",e)};var Ts=Object.entries,fs=Object.setPrototypeOf,bp=Object.isFrozen,vp=Object.getPrototypeOf,yp=Object.getOwnPropertyDescriptor,et=Object.freeze,rt=Object.seal,bo=Object.create,As=typeof Reflect<"u"&&Reflect,ha=As.apply,ba=As.construct;et||(et=function(t){return t});rt||(rt=function(t){return t});ha||(ha=function(t,n){for(var r=arguments.length,a=new Array(r>2?r-2:0),i=2;i<r;i++)a[i-2]=arguments[i];return t.apply(n,a)});ba||(ba=function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a<n;a++)r[a-1]=arguments[a];return new t(...r)});var Gn=Ye(Array.prototype.forEach);Array.prototype.indexOf;var xp=Ye(Array.prototype.lastIndexOf),ms=Ye(Array.prototype.pop),Bo=Ye(Array.prototype.push);Array.prototype.slice;var kp=Ye(Array.prototype.splice),vo=Array.isArray,Uo=Ye(String.prototype.toLowerCase),da=Ye(String.prototype.toString),gs=Ye(String.prototype.match),Fo=Ye(String.prototype.replace),hs=Ye(String.prototype.indexOf),wp=Ye(String.prototype.trim),zp=Ye(Number.prototype.toString),Sp=Ye(Boolean.prototype.toString),bs=typeof BigInt>"u"?null:Ye(BigInt.prototype.toString),vs=typeof Symbol>"u"?null:Ye(Symbol.prototype.toString),zt=Ye(Object.prototype.hasOwnProperty),$o=Ye(Object.prototype.toString),dt=Ye(RegExp.prototype.test),In=_p(TypeError);function Ye(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a<n;a++)r[a-1]=arguments[a];return ha(e,t,r)}}function _p(e){return function(){for(var t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return ba(e,n)}}function _e(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Uo;if(fs&&fs(e,null),!vo(t))return e;let r=t.length;for(;r--;){let a=t[r];if(typeof a=="string"){let i=n(a);i!==a&&(bp(t)||(t[r]=i),a=i)}e[a]=!0}return e}function Cp(e){for(let t=0;t<e.length;t++)zt(e,t)||(e[t]=null);return e}function Dt(e){let t=bo(null);for(let r of Ts(e)){var n=gp(r,2);let a=n[0],i=n[1];zt(e,a)&&(vo(i)?t[a]=Cp(i):i&&typeof i=="object"&&i.constructor===Object?t[a]=Dt(i):t[a]=i)}return t}function Tp(e){switch(typeof e){case"string":return e;case"number":return zp(e);case"boolean":return Sp(e);case"bigint":return bs?bs(e):"0";case"symbol":return vs?vs(e):"Symbol()";case"undefined":return $o(e);case"function":case"object":{if(e===null)return $o(e);let t=e,n=jt(t,"toString");if(typeof n=="function"){let r=n(t);return typeof r=="string"?r:$o(r)}return $o(e)}default:return $o(e)}}function jt(e,t){for(;e!==null;){let r=yp(e,t);if(r){if(r.get)return Ye(r.get);if(typeof r.value=="function")return Ye(r.value)}e=vp(e)}function n(){return null}return n}function Ap(e){try{return dt(e,""),!0}catch{return!1}}var ys=et(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),ua=et(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),pa=et(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),Ep=et(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),fa=et(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),Pp=et(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),xs=et(["#text"]),ks=et(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","command","commandfor","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),ma=et(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dominant-baseline","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","pointer-events","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-orientation","text-rendering","textlength","type","u1","u2","unicode","values","vector-effect","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),ws=et(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),yr=et(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Mp=rt(/{{[\w\W]*|^[\w\W]*}}/g),Ip=rt(/<%[\w\W]*|^[\w\W]*%>/g),Rp=rt(/\${[\w\W]*/g),Lp=rt(/^data-[\-\w.\u00B7-\uFFFF]+$/),Dp=rt(/^aria-[\-\w]+$/),zs=rt(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Np=rt(/^(?:\w+script|data):/i),Op=rt(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Bp=rt(/^html$/i),Fp=rt(/^[a-z][.\w]*(-[.\w]+)+$/i),Ss=rt(/<[/\w!]/g),_s=rt(/<[/\w]/g),$p=rt(/<\/no(script|embed|frames)/i),Up=rt(/\/>/i),Lt={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},Es=["style","script","xmp","iframe","noembed","noframes","plaintext","noscript"],Hp=et(_e({},Es)),qp=(function(){let e={};return Gn(Es,t=>{e[t]=rt(new RegExp("</"+t+"(?=[\\t\\n\\f\\r />])","i"))}),et(e)})(),Vp=function(){return typeof window>"u"?null:window},jp=function(t,n){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let r=null,a="data-tt-policy-suffix";n&&n.hasAttribute(a)&&(r=n.getAttribute(a));let i="dompurify"+(r?"#"+r:"");try{return t.createPolicy(i,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+i+" could not be created."),null}},Cs=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},Rn=function(t,n,r,a){return zt(t,n)&&vo(t[n])?_e(a.base?Dt(a.base):{},t[n],a.transform):r},ga=function(t,n,r){let a=zt(t,n)?t[n]:void 0;return a&&typeof a=="object"?Dt(a):r()};function Ps(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Vp(),t=F=>Ps(F);if(t.version="3.4.16",t.removed=[],!e||!e.document||e.document.nodeType!==Lt.document||!e.Element)return t.isSupported=!1,t;let n=e.document,r=n,a=r.currentScript;e.DocumentFragment;let i=e.HTMLTemplateElement,s=e.Node,l=e.Element,c=e.NodeFilter;e.NamedNodeMap===void 0&&(e.NamedNodeMap||e.MozNamedAttrMap),e.HTMLFormElement;let d=e.DOMParser,g=e.trustedTypes,u=l.prototype,p=jt(u,"cloneNode"),m=jt(u,"remove"),f=jt(u,"removeAttributeNode"),v=jt(u,"nextSibling"),w=jt(u,"childNodes"),k=jt(u,"parentNode"),z=jt(u,"shadowRoot"),x=jt(u,"attributes"),M=s&&s.prototype?jt(s.prototype,"nodeType"):null,L=s&&s.prototype?jt(s.prototype,"nodeName"):null,H=s&&s.prototype?jt(s.prototype,"ownerDocument"):null,V=function(h){return M?M(h):h.nodeType},ee=function(h){return L?L(h):h.nodeName};if(typeof i=="function"){let F=n.createElement("template");F.content&&F.content.ownerDocument&&(n=F.content.ownerDocument)}let te,S="",E,O=!1,I=0,ne=function(){if(I>0)throw In('A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.')},b=function(h){ne(),I++;try{return te.createHTML(h)}finally{I--}},T=function(h){ne(),I++;try{return te.createScriptURL(h)}finally{I--}},R=function(){return O||(E=jp(g,a),O=!0),E},K=n,X=K.implementation,Y=K.createNodeIterator,me=K.createDocumentFragment,Le=K.getElementsByTagName,je=r.importNode,he=Cs();t.isSupported=typeof Ts=="function"&&typeof k=="function"&&X&&X.createHTMLDocument!==void 0;let Te=Mp,ft=Ip,Ct=Rp,Tt=Lp,on=Dp,bt=Np,lt=Op,At=Fp,vt=zs,ve=null,yt=_e({},[...ys,...ua,...pa,...fa,...xs]),Ae=null,Hn=_e({},[...ks,...ma,...ws,...yr]),ct=Object.seal(bo(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Xe=null,xt=null,mt=Object.seal(bo(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Et=!0,Ht=!0,nt=!1,Tn=!0,Je=!1,kt=!0,D=!1,re=!1,we=null,Qe=null,it=!1,We=!1,Pt=!1,rn=!1,An=!0,En=!1,un="user-content-",Fe=!0,wt=!1,gt={},Mt=null,Ro=_e({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","selectedcontent","style","svg","template","thead","title","video","xmp"]),pn=null,ot=_e({},["audio","video","img","source","image","track"]),Lo=null,Do=_e({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),qt="http://www.w3.org/1998/Math/MathML",qn="http://www.w3.org/2000/svg",It="http://www.w3.org/1999/xhtml",fn=It,Vn=!1,No=null,aa=_e({},[qt,qn,It],da),dr=et(["mi","mo","mn","ms","mtext"]),y=_e({},dr),C=et(["annotation-xml"]),P=_e({},C),j=_e({},["title","style","font","a","script"]),$=null,ie=["application/xhtml+xml","text/html"],Se="text/html",Z=null,ye=null,ur=n.createElement("form"),jn=function(h){return h instanceof RegExp||h instanceof Function},fo=function(){let h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(ye&&ye===h)return;(!h||typeof h!="object")&&(h={}),h=Dt(h),$=ie.indexOf(h.PARSER_MEDIA_TYPE)===-1?Se:h.PARSER_MEDIA_TYPE,Z=$==="application/xhtml+xml"?da:Uo,ve=Rn(h,"ALLOWED_TAGS",yt,{transform:Z}),Ae=Rn(h,"ALLOWED_ATTR",Hn,{transform:Z}),No=Rn(h,"ALLOWED_NAMESPACES",aa,{transform:da}),Lo=Rn(h,"ADD_URI_SAFE_ATTR",Do,{transform:Z,base:Do}),pn=Rn(h,"ADD_DATA_URI_TAGS",ot,{transform:Z,base:ot}),Mt=Rn(h,"FORBID_CONTENTS",Ro,{transform:Z}),Xe=Rn(h,"FORBID_TAGS",Dt({}),{transform:Z}),xt=Rn(h,"FORBID_ATTR",Dt({}),{transform:Z}),gt=zt(h,"USE_PROFILES")?h.USE_PROFILES&&typeof h.USE_PROFILES=="object"?Dt(h.USE_PROFILES):h.USE_PROFILES:!1,Et=h.ALLOW_ARIA_ATTR!==!1,Ht=h.ALLOW_DATA_ATTR!==!1,nt=h.ALLOW_UNKNOWN_PROTOCOLS||!1,Tn=h.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Je=h.SAFE_FOR_TEMPLATES||!1,kt=h.SAFE_FOR_XML!==!1,D=h.WHOLE_DOCUMENT||!1,We=h.RETURN_DOM||!1,Pt=h.RETURN_DOM_FRAGMENT||!1,rn=h.RETURN_TRUSTED_TYPE||!1,it=h.FORCE_BODY||!1,An=h.SANITIZE_DOM!==!1,En=h.SANITIZE_NAMED_PROPS||!1,Fe=h.KEEP_CONTENT!==!1,wt=h.IN_PLACE||!1,vt=Ap(h.ALLOWED_URI_REGEXP)?h.ALLOWED_URI_REGEXP:zs,fn=typeof h.NAMESPACE=="string"?h.NAMESPACE:It,y=ga(h,"MATHML_TEXT_INTEGRATION_POINTS",()=>_e({},dr)),P=ga(h,"HTML_INTEGRATION_POINTS",()=>_e({},C));let _=ga(h,"CUSTOM_ELEMENT_HANDLING",()=>bo(null));if(ct=bo(null),zt(_,"tagNameCheck")&&jn(_.tagNameCheck)&&(ct.tagNameCheck=_.tagNameCheck),zt(_,"attributeNameCheck")&&jn(_.attributeNameCheck)&&(ct.attributeNameCheck=_.attributeNameCheck),zt(_,"allowCustomizedBuiltInElements")&&typeof _.allowCustomizedBuiltInElements=="boolean"&&(ct.allowCustomizedBuiltInElements=_.allowCustomizedBuiltInElements),rt(ct),Je&&(Ht=!1),Pt&&(We=!0),gt&&(ve=_e({},xs),Ae=bo(null),gt.html===!0&&(_e(ve,ys),_e(Ae,ks)),gt.svg===!0&&(_e(ve,ua),_e(Ae,ma),_e(Ae,yr)),gt.svgFilters===!0&&(_e(ve,pa),_e(Ae,ma),_e(Ae,yr)),gt.mathMl===!0&&(_e(ve,fa),_e(Ae,ws),_e(Ae,yr))),mt.tagCheck=null,mt.attributeCheck=null,zt(h,"ADD_TAGS")&&(typeof h.ADD_TAGS=="function"?mt.tagCheck=h.ADD_TAGS:vo(h.ADD_TAGS)&&(ve===yt&&(ve=Dt(ve)),_e(ve,h.ADD_TAGS,Z))),zt(h,"ADD_ATTR")&&(typeof h.ADD_ATTR=="function"?mt.attributeCheck=h.ADD_ATTR:vo(h.ADD_ATTR)&&(Ae===Hn&&(Ae=Dt(Ae)),_e(Ae,h.ADD_ATTR,Z))),zt(h,"ADD_FORBID_CONTENTS")&&vo(h.ADD_FORBID_CONTENTS)&&(Mt===Ro&&(Mt=Dt(Mt)),_e(Mt,h.ADD_FORBID_CONTENTS,Z)),Fe&&(ve["#text"]=!0),D&&_e(ve,["html","head","body"]),ve.table&&(_e(ve,["tbody"]),delete Xe.tbody),h.TRUSTED_TYPES_POLICY){if(typeof h.TRUSTED_TYPES_POLICY.createHTML!="function")throw In('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof h.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw In('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');let B=te;te=h.TRUSTED_TYPES_POLICY;try{S=b("")}catch(U){throw te=B,U}}else h.TRUSTED_TYPES_POLICY===null?(te=void 0,S=""):(te===void 0&&(te=R()),te&&typeof S=="string"&&(S=b("")));et&&et(h),ye=h},Pn=_e({},[...ua,...pa,...Ep]),ts=_e({},[...fa,...Pp]),Ku=function(h,_,B){return _.namespaceURI===It?h==="svg":_.namespaceURI===qt?h==="svg"&&(B==="annotation-xml"||y[B]):!!Pn[h]},Xu=function(h,_,B){return _.namespaceURI===It?h==="math":_.namespaceURI===qn?h==="math"&&P[B]:!!ts[h]},Ju=function(h,_,B){return _.namespaceURI===qn&&!P[B]||_.namespaceURI===qt&&!y[B]?!1:!ts[h]&&(j[h]||!Pn[h])},Yu=function(h){let _=k(h);(!_||!_.tagName)&&(_={namespaceURI:fn,tagName:"template"});let B=Uo(h.tagName),U=Uo(_.tagName);return No[h.namespaceURI]?h.namespaceURI===qn?Ku(B,_,U):h.namespaceURI===qt?Xu(B,_,U):h.namespaceURI===It?Ju(B,_,U):!!($==="application/xhtml+xml"&&No[h.namespaceURI]):!1},Mn=function(h){Bo(t.removed,{element:h});try{k(h).removeChild(h)}catch{if(m(h),!k(h))throw In("a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place")}},ns=function(h,_,B){try{f(h,_)}catch{try{h.removeAttribute(B)}catch{}}},pr=function(h){fr(h);let _=w(h);if(_){let U=[];Gn(_,le=>{Bo(U,le)}),Gn(U,le=>{try{m(le)}catch{}})}let B=x(h);if(B)for(let U=B.length-1;U>=0;--U){let le=B[U],be=le&&le.name;typeof be=="string"&&ns(h,le,be)}},Wn=function(h,_,B){if(!B)try{B=_.getAttributeNode(h)}catch{B=null}Bo(t.removed,{attribute:B||null,from:_});try{B?f(_,B):_.removeAttribute(h)}catch{try{_.removeAttribute(h)}catch{}}if(h==="is")if(We||Pt)try{Mn(_)}catch{}else try{_.setAttribute(h,"")}catch{}},Zu=function(h){let _=x(h);if(_)for(let B=_.length-1;B>=0;--B){let U=_[B],le=U&&U.name;typeof le!="string"||Ae[Z(le)]||ns(h,U,le)}},fr=function(h){let _=[h];for(;_.length>0;){let B=_.pop();V(B)===Lt.element&&Zu(B);let U=w(B);if(U)for(let le=U.length-1;le>=0;--le)_.push(U[le])}},os=function(h,_){return kt?h==="patchsrc"?!0:h==="for"&&_!=="label"&&_!=="output":!1},Qu=function(h){if(!kt)return;let _=[h];for(;_.length>0;){let B=_.pop(),U=V(B);if(U===Lt.processingInstruction||U===Lt.comment&&dt(_s,B.data)){try{m(B)}catch{}continue}if(U===Lt.element){let be=B,ze=Z(ee(B));try{be.hasAttribute&&be.hasAttribute("patchsrc")&&be.removeAttribute("patchsrc"),be.hasAttribute&&be.hasAttribute("for")&&os("for",ze)&&be.removeAttribute("for")}catch{}}let le=w(B);if(le)for(let be=le.length-1;be>=0;--be)_.push(le[be])}},rs=function(h){let _=null,B=null;if(it)h="<remove></remove>"+h;else{let be=gs(h,/^[\r\n\t ]+/);B=be&&be[0]}$==="application/xhtml+xml"&&fn===It&&(h='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+h+"</body></html>");let U=te?b(h):h;if(fn===It)try{_=new d().parseFromString(U,$)}catch{}if(!_||!_.documentElement){_=X.createDocument(fn,"template",null);try{_.documentElement.innerHTML=Vn?S:U}catch{}}let le=_.body||_.documentElement;return h&&B&&le.insertBefore(n.createTextNode(B),le.childNodes[0]||null),fn===It?Le.call(_,D?"html":"body")[0]:D?_.documentElement:le},as=function(h){let _=H?H(h):h.ownerDocument;return Y.call(_||h,h,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},mr=function(h){return h=Fo(h,Te," "),h=Fo(h,ft," "),h=Fo(h,Ct," "),h},ia=function(h){var _;h.normalize();let B=H?H(h):h.ownerDocument,U=Y.call(B||h,h,c.SHOW_TEXT|c.SHOW_COMMENT|c.SHOW_CDATA_SECTION|c.SHOW_PROCESSING_INSTRUCTION,null),le=U.nextNode();for(;le;)le.data=mr(le.data),le=U.nextNode();let be=(_=h.querySelectorAll)===null||_===void 0?void 0:_.call(h,"template");be&&Gn(be,ze=>{mo(ze.content)&&ia(ze.content)})},gr=function(h){let _=L?L(h):null;return typeof _!="string"||Z(_)!=="form"?!1:typeof h.nodeName!="string"||typeof h.textContent!="string"||typeof h.removeChild!="function"||h.attributes!==x(h)||typeof h.removeAttribute!="function"||typeof h.removeAttributeNode!="function"||typeof h.getAttributeNode!="function"||typeof h.setAttribute!="function"||typeof h.namespaceURI!="string"||typeof h.insertBefore!="function"||typeof h.hasChildNodes!="function"||h.nodeType!==M(h)||h.childNodes!==w(h)},mo=function(h){if(!M||typeof h!="object"||h===null)return!1;try{return M(h)===Lt.documentFragment}catch{return!1}},Oo=function(h){if(!M||typeof h!="object"||h===null)return!1;try{return typeof M(h)=="number"}catch{return!1}};function an(F,h,_){F.length!==0&&Gn(F,B=>{B.call(t,h,_,ye)})}let ep=function(h,_){return!!(kt&&h.hasChildNodes()&&!Oo(h.firstElementChild)&&dt(Ss,h.textContent)&&dt(Ss,h.innerHTML)||kt&&h.namespaceURI===It&&Hp[_]&&(Oo(h.firstElementChild)||typeof h.textContent=="string"&&dt(qp[_],h.textContent))||h.nodeType===Lt.processingInstruction||kt&&h.nodeType===Lt.comment&&dt(_s,h.data))},hr=function(h,_){if(h instanceof RegExp)return dt(h,_);if(h instanceof Function){for(var B=arguments.length,U=new Array(B>2?B-2:0),le=2;le<B;le++)U[le-2]=arguments[le];return!!h(_,...U)}return!1},tp=function(h,_,B){if(!Xe[_]&&cs(_)&&hr(ct.tagNameCheck,_))return!1;if(Fe&&!Mt[_]){let U=k(h),le=w(h);if(le&&U){let be=le.length;for(let ze=be-1;ze>=0;--ze){let Ue=h===B?p(le[ze],!0):le[ze];U.insertBefore(Ue,v(h))}}}return Mn(h),!0},is=function(h,_,B,U){return h.length===0?_:_===B||_===U?Dt(_):_},go=function(h,_){return h===_||k(h)!==null?!1:(wt&&fr(h),!0)},ss=function(h,_){if(an(he.beforeSanitizeElements,h,null),go(h,_))return!0;if(gr(h))return Mn(h),!0;let B=Z(ee(h));if(ve=is(he.uponSanitizeElement,ve,yt,we),an(he.uponSanitizeElement,h,{tagName:B,allowedTags:ve}),go(h,_))return!0;if(ep(h,B))return Mn(h),!0;if(Xe[B]||!(mt.tagCheck instanceof Function&&mt.tagCheck(B))&&!ve[B]){let U=tp(h,B,_);return U===!1&&(an(he.afterSanitizeElements,h,null),go(h,_))?!0:U}if(V(h)===Lt.element&&!Yu(h)||(B==="noscript"||B==="noembed"||B==="noframes")&&dt($p,h.innerHTML))return Mn(h),!0;if(Je&&h.nodeType===Lt.text){let U=mr(h.textContent);h.textContent!==U&&(Bo(t.removed,{element:h.cloneNode()}),h.textContent=U)}return an(he.afterSanitizeElements,h,null),go(h,_)},ls=function(h,_,B){if(xt[_]||os(_,h)||An&&(_==="id"||_==="name")&&(B in n||B in ur))return!1;let U=Ae[_]||mt.attributeCheck instanceof Function&&mt.attributeCheck(_,h);return Ht&&dt(Tt,_)||Et&&dt(on,_)?!0:U?Lo[_]||dt(vt,Fo(B,lt,""))||(_==="src"||_==="xlink:href"||_==="href")&&h!=="script"&&hs(B,"data:")===0&&pn[h]||nt&&!dt(bt,Fo(B,lt,""))?!0:!B:cs(h)&&hr(ct.tagNameCheck,h)&&hr(ct.attributeNameCheck,_,h)||_==="is"&&ct.allowCustomizedBuiltInElements&&hr(ct.tagNameCheck,B)},np=_e({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),cs=function(h){return!np[Uo(h)]&&dt(At,h)},op=function(h,_,B,U){if(te&&typeof g=="object"&&typeof g.getAttributeType=="function"&&!B)switch(g.getAttributeType(h,_)){case"TrustedHTML":return b(U);case"TrustedScriptURL":return T(U)}return U},rp=function(h,_,B,U){try{return B?h.setAttributeNS(B,_,U):h.setAttribute(_,U),gr(h)?(Mn(h),!1):!0}catch{return Wn(_,h),!1}},ds=function(h,_){if(an(he.beforeSanitizeAttributes,h,null),go(h,_))return;let B=h.attributes;if(!B||gr(h))return;Ae=is(he.uponSanitizeAttribute,Ae,Hn,Qe);let U={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Ae,forceKeepAttr:void 0},le=B.length,be=Z(h.nodeName);for(;le--;){let ze=B[le],Ue=ze.name,Vt=ze.namespaceURI,Rt=ze.value,ho=Z(Ue),la=Rt,ht=Ue==="value"?la:wp(la),us=!1;if(U.attrName=ho,U.attrValue=ht,U.keepAttr=!0,U.forceKeepAttr=void 0,an(he.uponSanitizeAttribute,h,U),ht=U.attrValue,En&&(ho==="id"||ho==="name")&&hs(ht,un)!==0&&(Wn(Ue,h,ze),ht=un+ht,us=!0),kt&&dt(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,ht)){Wn(Ue,h,ze);continue}if(ho==="attributename"&&gs(ht,"href")){Wn(Ue,h,ze);continue}if(!U.forceKeepAttr){if(!U.keepAttr){Wn(Ue,h,ze);continue}if(!Tn&&dt(Up,ht)){Wn(Ue,h,ze);continue}if(Je&&(ht=mr(ht)),!ls(be,ho,ht)){Wn(Ue,h,ze);continue}ht=op(be,ho,Vt,ht),ht!==la&&rp(h,Ue,Vt,ht)&&us&&ms(t.removed)}}an(he.afterSanitizeAttributes,h,null),go(h,_)},br=function(h){let _=null,B=as(h);for(an(he.beforeSanitizeShadowDOM,h,null);_=B.nextNode();)if(an(he.uponSanitizeShadowNode,_,null),ss(_,h),ds(_,h),mo(_.content)&&br(_.content),V(_)===Lt.element){let U=z(_);mo(U)&&(sa(U),br(U))}an(he.afterSanitizeShadowDOM,h,null)},sa=function(h){let _=[{node:h,shadow:null}];for(;_.length>0;){let B=_.pop();if(B.shadow){br(B.shadow);continue}let U=B.node,le=V(U)===Lt.element,be=w(U);if(be)for(let ze=be.length-1;ze>=0;--ze)_.push({node:be[ze],shadow:null});if(le){let ze=L?L(U):null;if(typeof ze=="string"&&Z(ze)==="template"){let Ue=U.content;mo(Ue)&&_.push({node:Ue,shadow:null})}}if(le){let ze=z(U);mo(ze)&&_.push({node:null,shadow:ze},{node:ze,shadow:null})}}};return t.sanitize=function(F){let h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},_=null,B=null,U=null,le=null;if(Vn=!F,Vn&&(F="<!-->"),typeof F!="string"&&!Oo(F)&&(F=Tp(F),typeof F!="string"))throw In("dirty is not a string, aborting");if(!t.isSupported)return F;re?(ve=we,Ae=Qe):fo(h),(he.uponSanitizeElement.length>0||he.uponSanitizeAttribute.length>0)&&(ve=Dt(ve)),he.uponSanitizeAttribute.length>0&&(Ae=Dt(Ae)),t.removed=[];let be=wt&&typeof F!="string"&&Oo(F);if(be){Qu(F);let Vt=ee(F);if(typeof Vt=="string"){let Rt=Z(Vt);if(!ve[Rt]||Xe[Rt])throw pr(F),In("root node is forbidden and cannot be sanitized in-place")}if(gr(F))throw pr(F),In("root node is clobbered and cannot be sanitized in-place");try{sa(F)}catch(Rt){throw pr(F),Rt}}else if(Oo(F))_=rs("<!---->"),B=_.ownerDocument.importNode(F,!0),B.nodeType===Lt.element&&B.nodeName==="BODY"||B.nodeName==="HTML"?_=B:_.appendChild(B),sa(_);else{if(!We&&!Je&&!D&&F.indexOf("<")===-1)return te&&rn?b(F):F;if(_=rs(F),!_)return We?null:rn?S:""}_&&it&&Mn(_.firstChild);let ze=be?F:_;try{let Vt=as(ze);for(;U=Vt.nextNode();)ss(U,ze),ds(U,ze),mo(U.content)&&br(U.content)}catch(Vt){throw be&&(pr(F),Gn(t.removed,Rt=>{Rt.element&&fr(Rt.element)})),Vt}if(be){let Vt=!1;if(Gn(t.removed,Rt=>{Rt.element&&(Rt.element===F&&(Vt=!0),fr(Rt.element))}),Vt)throw In("a node selected for removal could not be safely returned; refusing to sanitize in place");return Je&&ia(F),F}if(We){if(Je&&ia(_),Pt)for(le=me.call(_.ownerDocument);_.firstChild;)le.appendChild(_.firstChild);else le=_;return(Ae.shadowroot||Ae.shadowrootmode)&&(le=je.call(r,le,!0)),le}let Ue=D?_.outerHTML:_.innerHTML;return D&&ve["!doctype"]&&_.ownerDocument&&_.ownerDocument.doctype&&_.ownerDocument.doctype.name&&dt(Bp,_.ownerDocument.doctype.name)&&(Ue="<!DOCTYPE "+_.ownerDocument.doctype.name+`>
|
|
3
|
+
`+Ue),Je&&(Ue=mr(Ue)),te&&rn?b(Ue):Ue},t.setConfig=function(){let F=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};fo(F),re=!0,we=ve,Qe=Ae},t.clearConfig=function(){ye=null,re=!1,we=null,Qe=null,te=E,S=""},t.isValidAttribute=function(F,h,_){ye||fo({});let B=Z(F),U=Z(h);return ls(B,U,_)},t.addHook=function(F,h){typeof h=="function"&&zt(he,F)&&Bo(he[F],h)},t.removeHook=function(F,h){if(zt(he,F)){if(h!==void 0){let _=xp(he[F],h);return _===-1?void 0:kp(he[F],_,1)[0]}return ms(he[F])}},t.removeHooks=function(F){zt(he,F)&&(he[F]=[])},t.removeAllHooks=function(){he=Cs()},t}var va=Ps();function wa(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var Jn=wa();function Us(e){Jn=e}var Kn={exec:()=>null};function yo(e){let t=[];return n=>{let r=Math.max(0,Math.min(3,n-1)),a=t[r];return a||(a=e(r),t[r]=a),a}}function ge(e,t=""){let n=typeof e=="string"?e:e.source,r={replace:(a,i)=>{let s=typeof i=="string"?i:i.source;return s=s.replace(st.caret,"$1"),n=n.replace(a,s),r},getRegex:()=>new RegExp(n,t)};return r}var Wp=((e="")=>{try{return!!new RegExp("(?<=1)(?<!1)"+e)}catch{return!1}})(),st={codeRemoveIndent:/^(?: {0,3}\t| {1,4})/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,endingSpaceTabChar:/[ \t]$/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,leadingSpaceTab:/^[ \t]+/,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,numericCharacterReference:/&#(?:(\d{1,7})|[Xx]([A-Fa-f0-9]{1,6}));/g,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>new RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:yo(e=>new RegExp(`^ {0,${e}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`)),hrRegex:yo(e=>new RegExp(`^ {0,${e}}((?:-[ ]*){3,}|(?:_[ ]*){3,}|(?:\\*[ ]*){3,})(?:\\n+|$)`)),fencesBeginRegex:yo(e=>new RegExp(`^ {0,${e}}(?:\`\`\`|~~~)`)),headingBeginRegex:yo(e=>new RegExp(`^ {0,${e}}#`)),htmlBeginRegex:yo(e=>new RegExp(`^ {0,${e}}(?:</?(?:${jo})(?: +|$|/?>)|<(?:script|pre|style|textarea|!--))`,"i")),blockquoteBeginRegex:yo(e=>new RegExp(`^ {0,${e}}>`))},Gp=/^(?:[ \t]*(?:\n|$))+/,Kp=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Xp=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,Vo=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,Jp=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,za=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,Hs=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |fences|blockquote|heading|hr|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,qs=ge(Hs).replace(/bull/g,za).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),Yp=ge(Hs).replace(/bull/g,za).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}(?:\s|$)/).replace(/hr/g,/ {0,3}(?:(?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Sa=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table|[ \t]+\n)[^\n]+)*)/,Zp=/^[^\n]+/,_a=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Qp=ge(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",_a).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),ef=ge(/^(bull)([ \t][^\n]*?)?(?:\n|$)/).replace(/bull/g,za).getRegex(),jo="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Ca=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,tf=ge("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n*|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>[^\\n]*\\n*|$)|<![A-Z][\\s\\S]*?(?:>[^\\n]*\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>[^\\n]*\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][a-z0-9-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][a-z0-9-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",Ca).replace("tag",jo).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Vs=e=>ge(Sa).replace("hr",Vo).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list",e).replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",jo).getRegex(),nf=Vs(/ {0,3}(?:[*+-]|1[.)])[ \t]+[^ \t\n]/),of=Vs(/ {0,3}(?:[*+-]|\d{1,9}[.)])(?:[ \t]|\n|$)/),rf=ge(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",of).getRegex(),Ta={blockquote:rf,code:Kp,def:Qp,fences:Xp,heading:Jp,hr:Vo,html:tf,lheading:qs,list:ef,newline:Gp,paragraph:nf,table:Kn,text:Zp},Ms=ge("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Vo).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",jo).getRegex(),af={...Ta,lheading:Yp,table:Ms,paragraph:ge(Sa).replace("hr",Vo).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",Ms).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*(?:\\n|$))|~~~)[^\\n]*(?:\\n|$)").replace("list"," {0,3}(?:[*+-]|1[.)])[ \\t]+[^ \\t\\n]").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",jo).getRegex()},sf={...Ta,html:ge(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Ca).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Kn,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:ge(Sa).replace("hr",Vo).replace("heading",` *#{1,6} *[^
|
|
4
|
+
]`).replace("lheading",qs).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},lf=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,cf=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,js=/^( {2,}|\\)\n(?!\s*$)[ \t]*/,df=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,mn=/[\p{P}\p{S}]/u,xo=/[\s\p{P}\p{S}]/u,Wo=/[^\s\p{P}\p{S}]/u,uf=ge(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,xo).getRegex(),pf=/[\p{Pi}\p{Ps}"']/u,Ws=/(?!~)[\p{P}\p{S}]/u,ff=/(?!~)[\s\p{P}\p{S}]/u,mf=/(?:[^\s\p{P}\p{S}]|~)/u,gf=ge(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",Wp?"(?<!`)()":"(^^|[^`])").replace("code",/(?<b>`+)[^`]+\k<b>(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),Gs=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,hf=ge(Gs,"u").replace(/punct/g,mn).getRegex(),bf=ge(Gs,"u").replace(/punct/g,Ws).getRegex(),vf=/^(?:\*+(?:((?!\*)(?!openQuote)punct)|([^\s*]))?)|^_+(?:((?!_)(?!openQuote)punct)|([^\s_]))?/,yf=ge(vf,"u").replace(/openQuote/g,pf).replace(/punct/g,mn).getRegex(),Ks="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",xf=ge(Ks,"gu").replace(/notPunctSpace/g,Wo).replace(/punctSpace/g,xo).replace(/punct/g,mn).getRegex(),kf=ge(Ks,"gu").replace(/notPunctSpace/g,mf).replace(/punctSpace/g,ff).replace(/punct/g,Ws).getRegex(),wf="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)[\\s](\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|(?:(?!\\*)punct|notPunctSpace)(\\*+)(?!\\*)(?=notPunctSpace)",zf=ge(wf,"gu").replace(/notPunctSpace/g,Wo).replace(/punctSpace/g,xo).replace(/punct/g,mn).getRegex(),Sf=ge("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,Wo).replace(/punctSpace/g,xo).replace(/punct/g,mn).getRegex(),_f="^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)[\\s](_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)|(?:(?!_)punct|notPunctSpace)(_+)(?!_)(?=notPunctSpace)",Cf=ge(_f,"gu").replace(/notPunctSpace/g,Wo).replace(/punctSpace/g,xo).replace(/punct/g,mn).getRegex(),Tf=ge(/^~~?(?:((?!~)punct)|[^\s~])/,"u").replace(/punct/g,mn).getRegex(),Af="^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)",Ef=ge(Af,"gu").replace(/notPunctSpace/g,Wo).replace(/punctSpace/g,xo).replace(/punct/g,mn).getRegex(),Pf=ge(/\\(punct)/,"gu").replace(/punct/g,mn).getRegex(),Mf=ge(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),If=ge(Ca).replace("(?:-->|$)","-->").getRegex(),Rf=ge("^comment|^</[a-zA-Z][a-zA-Z0-9-]*\\s*>|^<[a-zA-Z][a-zA-Z0-9-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>").replace("comment",If).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),Xs=/\[(?:\\[\s\S]|[^\[\]\\])*\]/,kr=ge(/(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/).replace("brackets",Xs).getRegex(),Lf=ge(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace("label",kr).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]+|(?=\))/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),Df=ge(/^!?\[(label)\]\[(ref)\]/).replace("label",kr).replace("ref",_a).getRegex(),Nf=ge(/^!?\[(ref)\](?:\[\])?/).replace("ref",_a).getRegex(),Is=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\]){1,999}/,Of=ge(/(?:[^\[\]\\`]*(?:\[(?:brackets|\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\]))){0,999}?[^\[\]\\`]*?/).replace("brackets",Xs).getRegex(),Bf=ge("reflink|nolink(?!\\()","g").replace("reflink",ge(/^!?\[(label)\]\[(ref)\]/).replace("label",Of).replace("ref",Is).getRegex()).replace("nolink",ge(/^!?\[(ref)\](?:\[\])?/).replace("ref",Is).getRegex()).getRegex(),Rs=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,Ff=/[A-Za-z0-9._+-]+@[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/,$f=ge(/(?:mailto:email|xmpp:email(?:\/[A-Za-z0-9@.]+)?)/).replace(/email/g,Ff).getRegex(),Aa={_backpedal:Kn,anyPunctuation:Pf,autolink:Mf,blockSkip:gf,br:js,code:cf,del:Kn,delLDelim:Kn,delRDelim:Kn,emStrongLDelim:hf,emStrongRDelimAst:xf,emStrongRDelimUnd:Sf,escape:lf,link:Lf,nolink:Nf,punctuation:uf,reflink:Df,reflinkSearch:Bf,tag:Rf,text:df,url:Kn},Uf={...Aa,emStrongLDelim:yf,emStrongRDelimAst:zf,emStrongRDelimUnd:Cf,link:ge(/^!?\[(label)\]\((.*?)\)/).replace("label",kr).getRegex(),reflink:ge(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",kr).getRegex()},ya={...Aa,emStrongRDelimAst:kf,emStrongLDelim:bf,delLDelim:Tf,delRDelim:Ef,url:ge(/^emailProtocol|^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("emailProtocol",$f).replace("protocol",Rs).replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![\w-])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:ge(/^(?:[^a-zA-Z0-9](?=emailProtocol)|(`+|~+|[^`~])(?:(?=[`~])|(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9](?=emailProtocol)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))))/).replace("protocol",Rs).replace(/emailProtocol/g,/(?:mailto|xmpp):/).getRegex()},Hf={...ya,br:ge(js).replace("{2,}","*").getRegex(),text:ge(ya.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()},xr={normal:Ta,gfm:af,pedantic:sf},Ho={normal:Aa,gfm:ya,breaks:Hf,pedantic:Uf},qf={"&":"&","<":"<",">":">",'"':""","'":"'"},Ls=e=>qf[e];function Nt(e,t){if(t){if(st.escapeTest.test(e))return e.replace(st.escapeReplace,Ls)}else if(st.escapeTestNoEncode.test(e))return e.replace(st.escapeReplaceNoEncode,Ls);return e}function Vf(e){return e.replace(st.numericCharacterReference,(t,n,r)=>{let a=n===void 0?Number.parseInt(r,16):Number.parseInt(n,10);return a===0||a>1114111||a>=55296&&a<=57343?"\uFFFD":String.fromCodePoint(a)})}function Ds(e){try{e=encodeURI(e).replace(st.percentDecode,"%")}catch{return null}return e}function Ns(e,t){let n=e.replace(st.findPipe,(i,s,l)=>{let c=!1,d=s;for(;--d>=0&&l[d]==="\\";)c=!c;return c?"|":" |"}),r=n.split(st.splitPipe),a=0;if(r[0].trim()||r.shift(),r.length>0&&!r.at(-1)?.trim()&&r.pop(),t)if(r.length>t)r.splice(t);else for(;r.length<t;)r.push("");for(;a<r.length;a++)r[a]=r[a].trim().replace(st.slashPipe,"|");return r}function Ln(e,t,n){let r=e.length;if(r===0)return"";let a=0;for(;a<r;){let i=e.charAt(r-a-1);if(i===t&&!n)a++;else if(i!==t&&n)a++;else break}return e.slice(0,r-a)}function Os(e){let t=e.split(`
|
|
5
|
+
`),n=t.length-1;for(;n>=0&&st.blankLine.test(t[n]);)n--;return t.length-n<=2?e:t.slice(0,n+1).join(`
|
|
6
|
+
`)}function wr(e){return e.trim().toLowerCase().toUpperCase().toLowerCase()}function jf(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let r=0;r<e.length;r++)if(e[r]==="\\")r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&(n--,n<0))return r;return n>0?-2:-1}function Bs(e,t=0){let n=t,r="";for(let a of e)if(a===" "){let i=4-n%4;r+=" ".repeat(i),n+=i}else r+=a,n++;return r}function Fs(e,t,n,r,a){let i=t.href,s=t.title||null,l=e[1].replace(a.other.outputLinkReplace,"$1"),c=e[0].charAt(0)==="!";r.state.inLink=!0;let d=r.state.linkEmitted,g=r.state.inRawBlock;r.state.linkEmitted=!1;let u=r.inlineTokens(l),p=r.state.linkEmitted;if(r.state.linkEmitted=d,r.state.inLink=!1,!c){if(p){r.state.inRawBlock=g;return}r.state.linkEmitted=!0}return{type:c?"image":"link",raw:n,href:i,title:s,text:l,tokens:u}}function Wf(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(r===null)return t;let a=r[1];return t.split(`
|
|
7
7
|
`).map(i=>{let s=i.match(n.other.beginningSpace);if(s===null)return i;let[l]=s;return i.slice(Math.min(l.length,a.length))}).join(`
|
|
8
|
-
`)}function
|
|
8
|
+
`)}function $s(e,t,n,r){if(!t.includes("<"))return!1;for(let a=0;a<t.length;a++){if(t[a]==="\\"){a++;continue}if(t[a]==="`"){let l=r.inline.code.exec(t.slice(a));if(l){a+=l[0].length-1;continue}}if(t[a]!=="<")continue;let i=e.slice(n+a),s=r.inline.tag.exec(i)||r.inline.autolink.exec(i);if(s){if(s[0].length>t.length-a)return!0;a+=s[0].length-1}}return!1}var zr=class{options;rules;lexer;constructor(e){this.options=e||Jn}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=this.options.pedantic?t[0]:Os(t[0]),r=n.replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:n,codeBlockStyle:"indented",text:r}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],r=Wf(n,t[3]||"",this.rules);return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:r}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let r=Ln(n,"#");(this.options.pedantic||!r||this.rules.other.endingSpaceTabChar.test(r))&&(n=r.trim())}return{type:"heading",raw:Ln(t[0],`
|
|
9
9
|
`),depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:Ln(t[0],`
|
|
10
10
|
`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=Ln(t[0],`
|
|
11
11
|
`).split(`
|
|
@@ -13,28 +13,28 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
13
13
|
`),g=d.replace(this.rules.other.blockquoteSetextReplace,`
|
|
14
14
|
$1`).replace(this.rules.other.blockquoteSetextReplace2,"");r=r?`${r}
|
|
15
15
|
${d}`:d,a=a?`${a}
|
|
16
|
-
${g}`:g;let
|
|
16
|
+
${g}`:g;let u=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(g,i,!0),this.lexer.state.top=u,n.length===0)break;let p=i.at(-1);if(p?.type==="code")break;if(p?.type==="blockquote"){let m=p,f=n.join(`
|
|
17
17
|
`),v=m.raw+`
|
|
18
|
-
`+f.replace(this.rules.other.blockquoteSetextReplace2,""),
|
|
19
|
-
`).length:0,
|
|
20
|
-
${
|
|
21
|
-
`)}`),a=a.substring(0,a.length-m.text.length)+
|
|
18
|
+
`+f.replace(this.rules.other.blockquoteSetextReplace2,""),w=this.blockquote(v);i[i.length-1]=w;let k=v.substring(w.raw.length).replace(/^\n/,""),z=k?k.split(`
|
|
19
|
+
`).length:0,x=z?n.slice(0,-z):n;x.length>0&&(r=`${r}
|
|
20
|
+
${x.join(`
|
|
21
|
+
`)}`),a=a.substring(0,a.length-m.text.length)+w.text;break}else if(p?.type==="list"){let m=p,f=m.raw+`
|
|
22
22
|
`+n.join(`
|
|
23
|
-
`),v=this.list(f);i[i.length-1]=v,r=r.substring(0,r.length-
|
|
24
|
-
`);continue}}return{type:"blockquote",raw:r,tokens:i,text:a}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,a={type:"list",raw:"",ordered:r,start:r?+n.slice(0,-1):"",loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:"[*+-]");let i=this.rules.other.listItemRegex(n),s=!1;for(;e;){let c=!1,d="",g="";if(!(t=i.exec(e))||this.rules.block.hr.test(e))break;d=t[0],e=e.substring(d.length);let
|
|
25
|
-
`,1)[0],
|
|
26
|
-
`,1)[0],v=!m.trim(),
|
|
27
|
-
`,e=e.substring(f.length+1),c=!0),!c){let
|
|
28
|
-
`,1)[0],
|
|
29
|
-
`+
|
|
23
|
+
`),v=this.list(f);i[i.length-1]=v,r=r.substring(0,r.length-p.raw.length)+v.raw,a=a.substring(0,a.length-m.raw.length)+v.raw,n=f.substring(i.at(-1).raw.length).split(`
|
|
24
|
+
`);continue}}return{type:"blockquote",raw:r,tokens:i,text:a}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,a={type:"list",raw:"",ordered:r,start:r?+n.slice(0,-1):"",loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:"[*+-]");let i=this.rules.other.listItemRegex(n),s=!1;for(;e;){let c=!1,d="",g="";if(!(t=i.exec(e))||this.rules.block.hr.test(e))break;d=t[0],e=e.substring(d.length);let u=t[2].split(`
|
|
25
|
+
`,1)[0],p=t[1].length,m=this.options.pedantic?Bs(u,p):u.replace(this.rules.other.leadingSpaceTab,k=>Bs(k,p)),f=e.split(`
|
|
26
|
+
`,1)[0],v=!m.trim(),w=0;if(this.options.pedantic?(w=2,g=m.trimStart()):v?w=p+1:(w=m.search(this.rules.other.nonSpaceChar),w=w>4?1:w,g=m.slice(w),w+=p),v&&this.rules.other.blankLine.test(f)&&(d+=f+`
|
|
27
|
+
`,e=e.substring(f.length+1),c=!0),!c){let k=this.rules.other.nextBulletRegex(w),z=this.rules.other.hrRegex(w),x=this.rules.other.fencesBeginRegex(w),M=this.rules.other.headingBeginRegex(w),L=this.rules.other.htmlBeginRegex(w),H=this.rules.other.blockquoteBeginRegex(w);for(;e;){let V=e.split(`
|
|
28
|
+
`,1)[0],ee;if(f=V,this.options.pedantic?(f=f.replace(this.rules.other.listReplaceNesting," "),ee=f):ee=f.replace(this.rules.other.leadingSpaceTab,te=>te.replace(this.rules.other.tabCharGlobal," ")),x.test(f)||M.test(f)||L.test(f)||H.test(f)||k.test(f)||z.test(f))break;if(ee.search(this.rules.other.nonSpaceChar)>=w||!f.trim())g+=`
|
|
29
|
+
`+ee.slice(w);else{if(v||m.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||x.test(m)||M.test(m)||z.test(m))break;g+=`
|
|
30
30
|
`+f}v=!f.trim(),d+=V+`
|
|
31
|
-
`,e=e.substring(V.length+1),m=
|
|
32
|
-
`),href:r,title:a}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=
|
|
31
|
+
`,e=e.substring(V.length+1),m=ee.slice(w)}}a.loose||(s?a.loose=!0:this.rules.other.doubleBlankLine.test(d)&&(s=!0)),a.items.push({type:"list_item",raw:d,task:!!this.options.gfm&&this.rules.other.listIsTask.test(g),loose:!1,text:g,tokens:[]}),a.raw+=d}let l=a.items.at(-1);if(l)l.raw=l.raw.trimEnd(),l.text=l.text.trimEnd();else return;a.raw=a.raw.trimEnd();for(let c of a.items)if(this.lexer.state.top=!1,c.tokens=this.lexer.blockTokens(c.text,[]),!a.loose){let d=c.tokens.filter(u=>u.type==="space"),g=d.length>0&&d.some(u=>this.rules.other.anyLine.test(u.raw));a.loose=g}for(let c of a.items){let d=c.tokens[0];if(c.task&&(d?.type==="text"||d?.type==="paragraph")){c.text=c.text.replace(this.rules.other.listReplaceTask,""),d.raw=d.raw.replace(this.rules.other.listReplaceTask,""),d.text=d.text.replace(this.rules.other.listReplaceTask,"");for(let u=this.lexer.inlineQueue.length-1;u>=0;u--)if(this.rules.other.listIsTask.test(this.lexer.inlineQueue[u].src)){this.lexer.inlineQueue[u].src=this.lexer.inlineQueue[u].src.replace(this.rules.other.listReplaceTask,"");break}let g=this.rules.other.listTaskCheckbox.exec(c.raw);if(g){let u={type:"checkbox",raw:g[0]+" ",checked:g[0]!=="[ ]"};c.checked=u.checked,a.loose?c.tokens[0]&&["paragraph","text"].includes(c.tokens[0].type)&&"tokens"in c.tokens[0]&&c.tokens[0].tokens?(c.tokens[0].raw=u.raw+c.tokens[0].raw,c.tokens[0].text=u.raw+c.tokens[0].text,c.tokens[0].tokens.unshift(u)):c.tokens.unshift({type:"paragraph",raw:u.raw,text:u.raw,tokens:[u]}):c.tokens.unshift(u)}}else c.task&&(c.task=!1)}if(a.loose)for(let c of a.items){c.loose=!0;for(let d of c.tokens)d.type==="text"&&(d.type="paragraph")}return a}}html(e){let t=this.rules.block.html.exec(e);if(t){let n=Os(t[0]);return{type:"html",block:!0,raw:n,pre:t[1]==="pre"||t[1]==="script"||t[1]==="style",text:n}}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=wr(t[1]).replace(this.rules.other.multipleSpaceGlobal," "),r=t[2]?t[2].replace(this.rules.other.hrefBrackets,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",a=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):t[3];return{type:"def",tag:n,raw:Ln(t[0],`
|
|
32
|
+
`),href:r,title:a}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=Ns(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,"").split("|"),a=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,"").split(`
|
|
33
33
|
`):[],i={type:"table",raw:Ln(t[0],`
|
|
34
|
-
`),header:[],align:[],rows:[]};if(n.length===r.length){for(let s of r)this.rules.other.tableAlignRight.test(s)?i.align.push("right"):this.rules.other.tableAlignCenter.test(s)?i.align.push("center"):this.rules.other.tableAlignLeft.test(s)?i.align.push("left"):i.align.push(null);for(let s=0;s<n.length;s++)i.header.push({text:n[s],tokens:this.lexer.inline(n[s]),header:!0,align:i.align[s]});for(let s of a)i.rows.push(
|
|
34
|
+
`),header:[],align:[],rows:[]};if(n.length===r.length){for(let s of r)this.rules.other.tableAlignRight.test(s)?i.align.push("right"):this.rules.other.tableAlignCenter.test(s)?i.align.push("center"):this.rules.other.tableAlignLeft.test(s)?i.align.push("left"):i.align.push(null);for(let s=0;s<n.length;s++)i.header.push({text:n[s],tokens:this.lexer.inline(n[s]),header:!0,align:i.align[s]});for(let s of a)i.rows.push(Ns(s,i.header.length).map((l,c)=>({text:l,tokens:this.lexer.inline(l),header:!1,align:i.align[c]})));return i}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t){let n=t[1].trim();return{type:"heading",raw:Ln(t[0],`
|
|
35
35
|
`),depth:t[2].charAt(0)==="="?1:2,text:n,tokens:this.lexer.inline(n)}}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`
|
|
36
|
-
`?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[0].charAt(0)==="!"?2:1;if(!this.options.pedantic
|
|
37
|
-
`),this.blockTokens(t,this.tokens);for(let n=0;n<this.inlineQueue.length;n++){let r=this.inlineQueue[n];this.inlineTokens(r.src,r.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(t,n=[],r=!1){this.tokenizer.lexer=this,this.options.pedantic&&(t=t.replace(
|
|
36
|
+
`?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&$s(e,t[1],n,this.rules))return;let r=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(r)){if(!this.rules.other.endAngleBracket.test(r))return;let s=Ln(r.slice(0,-1),"\\");if((r.length-s.length)%2===0)return}else{let s=jf(t[2],"()");if(s===-2)return;if(s>-1){let l=(t[0].indexOf("!")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,l).trim(),t[3]=""}}let a=t[2],i="";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(a);s&&(a=s[1],i=s[3])}else i=t[3]?t[3].slice(1,-1):"";return a=a.trim(),this.rules.other.startAngleBracket.test(a)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(r)?a=a.slice(1):a=a.slice(1,-1)),Fs(t,{href:a&&a.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let r=n[0].charAt(0)==="!"?2:1;if(!this.options.pedantic&&$s(e,n[1],r,this.rules))return;let a=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," "),i=t[wr(a)];if(!i){let s=n[0].charAt(0);return{type:"text",raw:s,text:s}}return Fs(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let r=this.rules.inline.emStrongLDelim.exec(e);if(!(!r||!r[1]&&!r[2]&&!r[3]&&!r[4]||r[4]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(r[1]||r[3])||!n||this.rules.inline.punctuation.exec(n))){let a=[...r[0]].length-1,i,s,l=a,c=0,d=r[0][0],g=n===d,u=d==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(u.lastIndex=0,t=t.slice(-1*e.length+a);(r=u.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i)continue;if(s=[...i].length,r[3]||r[4]){l+=s;continue}else if(r[5]||r[6]){if(a%3&&!((a+s)%3)){c+=s;continue}if(g)break}if(l-=s,l>0)continue;s=Math.min(s,s+l+c);let p=[...r[0]][0].length,m=e.slice(0,a+r.index+p+s);if(Math.min(a,s)%2){let v=m.slice(1,-1);return{type:"em",raw:m,text:v,tokens:this.lexer.inlineTokens(v)}}let f=m.slice(2,-2);return{type:"strong",raw:m,text:f,tokens:this.lexer.inlineTokens(f)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal," "),r=this.rules.other.nonSpaceChar.test(n),a=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return r&&a&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e,t,n=""){let r=this.rules.inline.delLDelim.exec(e);if(r&&(!r[1]||!n||this.rules.inline.punctuation.exec(n))){let a=[...r[0]].length-1,i,s,l=a,c=this.rules.inline.delRDelim;for(c.lastIndex=0,t=t.slice(-1*e.length+a);(r=c.exec(t))!==null;){if(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!i||(s=[...i].length,s!==a))continue;if(r[3]||r[4]){l+=s;continue}if(l-=s,l>0)continue;s=Math.min(s,s+l);let d=[...r[0]][0].length,g=e.slice(0,a+r.index+d+s),u=g.slice(a,-a);return{type:"del",raw:g,text:u,tokens:this.lexer.inlineTokens(u)}}}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,r;return t[2]==="@"?(n=t[1],r="mailto:"+n):(n=t[1],r=n),{type:"link",raw:t[0],text:n,href:r,autolink:!0,tokens:[{type:"text",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,r;if(t[2]==="@")n=t[0],r="mailto:"+n;else{let a;do a=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??"";while(a!==t[0]);n=t[0],t[1]==="www."?r="http://"+t[0]:r=t[0]}return{type:"link",raw:t[0],text:n,href:r,autolink:!0,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:n?t[0]:Vf(t[0]),escaped:n}}}},Xt=class xa{tokens;options;state;inlineQueue;tokenizer;constructor(t){this.tokens=[],this.tokens.links=Object.create(null),this.options=t||Jn,this.options.tokenizer=this.options.tokenizer||new zr,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,linkEmitted:!1,top:!0};let n={other:st,block:xr.normal,inline:Ho.normal};this.options.pedantic?(n.block=xr.pedantic,n.inline=Ho.pedantic):this.options.gfm&&(n.block=xr.gfm,this.options.breaks?n.inline=Ho.breaks:n.inline=Ho.gfm),this.tokenizer.rules=n}static get rules(){return{block:xr,inline:Ho}}static lex(t,n){return new xa(n).lex(t)}static lexInline(t,n){return new xa(n).inlineTokens(t)}lex(t){t=t.replace(st.carriageReturn,`
|
|
37
|
+
`),this.blockTokens(t,this.tokens);for(let n=0;n<this.inlineQueue.length;n++){let r=this.inlineQueue[n];this.inlineTokens(r.src,r.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(t,n=[],r=!1){this.tokenizer.lexer=this,this.options.pedantic&&(t=t.replace(st.tabCharGlobal," ").replace(st.spaceLine,""));let a=1/0;for(;t;){if(t.length<a)a=t.length;else{this.infiniteLoopError(t.charCodeAt(0));break}let i;if(this.options.extensions?.block?.some(l=>(i=l.call({lexer:this},t,n))?(t=t.substring(i.raw.length),n.push(i),!0):!1))continue;if(i=this.tokenizer.space(t)){t=t.substring(i.raw.length);let l=n.at(-1);i.raw.length===1&&l!==void 0?l.raw+=`
|
|
38
38
|
`:n.push(i);continue}if(i=this.tokenizer.code(t)){t=t.substring(i.raw.length);let l=n.at(-1);l?.type==="paragraph"||l?.type==="text"?(l.raw+=(l.raw.endsWith(`
|
|
39
39
|
`)?"":`
|
|
40
40
|
`)+i.raw,l.text+=`
|
|
@@ -47,7 +47,7 @@ ${k.join(`
|
|
|
47
47
|
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):n.push(i),r=s.length!==t.length,t=t.substring(i.raw.length);continue}if(i=this.tokenizer.text(t)){t=t.substring(i.raw.length);let l=n.at(-1);l?.type==="text"?(l.raw+=(l.raw.endsWith(`
|
|
48
48
|
`)?"":`
|
|
49
49
|
`)+i.raw,l.text+=`
|
|
50
|
-
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):n.push(i);continue}if(t){this.infiniteLoopError(t.charCodeAt(0));break}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}linkInText(t){if(!t.includes("["))return!1;let n=this.tokenizer.rules.inline.link;for(let r of t.matchAll(this.tokenizer.rules.inline.blockSkip))if(n.test(r[0])&&t.charAt(r.index-1)!=="!")return!0;for(let r of t.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let a=r[0],i=a.lastIndexOf("[");if(!(a.charAt(0)==="!"||!Object.hasOwn(this.tokens.links,
|
|
50
|
+
`+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=l.text):n.push(i);continue}if(t){this.infiniteLoopError(t.charCodeAt(0));break}}return this.state.top=!0,n}inline(t,n=[]){return this.inlineQueue.push({src:t,tokens:n}),n}linkInText(t){if(!t.includes("["))return!1;let n=this.tokenizer.rules.inline.link;for(let r of t.matchAll(this.tokenizer.rules.inline.blockSkip))if(n.test(r[0])&&t.charAt(r.index-1)!=="!")return!0;for(let r of t.matchAll(this.tokenizer.rules.inline.reflinkSearch)){let a=r[0],i=a.lastIndexOf("[");if(!(a.charAt(0)==="!"||!Object.hasOwn(this.tokens.links,wr(a.slice(i+1,-1))))&&!(i>1&&this.linkInText(a.slice(1,i-1))))return!0}return!1}inlineTokens(t,n=[]){this.tokenizer.lexer=this;let r=t;if(this.tokens.links&&t.includes("[")){let l=this.tokenizer.rules.inline.reflinkSearch,c=d=>{let g=d.lastIndexOf("[");if(!Object.hasOwn(this.tokens.links,wr(d.slice(g+1,-1))))return d;if(g>1&&d.charAt(0)!=="!"){let u=d.slice(1,g-1);if(this.linkInText(u))return"["+u.replace(l,c)+"]["+"a".repeat(d.length-g-2)+"]"}return"["+"a".repeat(d.length-2)+"]"};r=r.replace(l,c)}r=r.replace(this.tokenizer.rules.inline.anyPunctuation,l=>"+".repeat(l.length)),r=r.replace(this.tokenizer.rules.inline.blockSkip,(l,c,d)=>{let g=d?d.length:0;return l.slice(0,g)+"["+"a".repeat(l.length-g-2)+"]"}),r=this.options.hooks?.emStrongMask?.call({lexer:this},r)??r;let a=!1,i="",s=1/0;for(;t;){if(t.length<s)s=t.length;else{this.infiniteLoopError(t.charCodeAt(0));break}a||(i=""),a=!1;let l;if(this.options.extensions?.inline?.some(d=>(l=d.call({lexer:this},t,n))?(t=t.substring(l.raw.length),n.push(l),!0):!1))continue;if(l=this.tokenizer.escape(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.tag(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.link(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(l.raw.length);let d=n.at(-1);l.type==="text"&&d?.type==="text"?(d.raw+=l.raw,d.text+=l.text):n.push(l);continue}if(l=this.tokenizer.emStrong(t,r,i)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.codespan(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.br(t)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.del(t,r,i)){t=t.substring(l.raw.length),n.push(l);continue}if(l=this.tokenizer.autolink(t)){t=t.substring(l.raw.length),n.push(l);continue}if(!this.state.inLink&&(l=this.tokenizer.url(t))){t=t.substring(l.raw.length),n.push(l);continue}let c=t;if(this.options.extensions?.startInline){let d=1/0,g=t.slice(1),u;this.options.extensions.startInline.forEach(p=>{u=p.call({lexer:this},g),typeof u=="number"&&u>=0&&(d=Math.min(d,u))}),d<1/0&&d>=0&&(c=t.substring(0,d+1))}if(l=this.tokenizer.inlineText(c)){t=t.substring(l.raw.length),l.raw.slice(-1)!=="_"&&(i=l.raw.slice(-1)),a=!0;let d=n.at(-1);d?.type==="text"?(d.raw+=l.raw,d.text+=l.text):n.push(l);continue}if(t){this.infiniteLoopError(t.charCodeAt(0));break}}return n}infiniteLoopError(t){let n="Infinite loop on byte: "+t;if(this.options.silent)console.error(n);else throw new Error(n)}},Sr=class{options;parser;constructor(e){this.options=e||Jn}space(e){return""}code({text:e,lang:t,escaped:n}){let r=(t||"").match(st.notSpaceStart)?.[0],a=e?e.replace(st.endingNewline,"")+`
|
|
51
51
|
`:"";return r?'<pre><code class="language-'+Nt(r)+'">'+(n?a:Nt(a,!0))+`</code></pre>
|
|
52
52
|
`:"<pre><code>"+(n?a:Nt(a,!0))+`</code></pre>
|
|
53
53
|
`}blockquote({tokens:e}){return`<blockquote>
|
|
@@ -65,8 +65,8 @@ ${this.parser.parse(e)}</blockquote>
|
|
|
65
65
|
`}tablerow({text:e}){return`<tr>
|
|
66
66
|
${e}</tr>
|
|
67
67
|
`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
|
|
68
|
-
`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${Nt(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,text:n,tokens:r,autolink:a}){let i=a?Nt(n,!0):this.parser.parseInline(r),s=
|
|
69
|
-
Please report this to https://github.com/markedjs/marked.`,e){let r="<p>An error occurred:</p><pre>"+Nt(n.message+"",!0)+"</pre>";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}},Xn=new Aa;function Ee(e,t){return Xn.parse(e,t)}Ee.options=Ee.setOptions=function(e){return Xn.setOptions(e),Ee.defaults=Xn.defaults,Ns(Ee.defaults),Ee};Ee.getDefaults=xa;Ee.defaults=Kn;function Of(...e){return Xn.use(...e),Ee.defaults=Xn.defaults,Ns(Ee.defaults),Ee}Ee.use=Of;Ee.walkTokens=function(e,t){return Xn.walkTokens(e,t)};Ee.parseInline=Xn.parseInline;Ee.Parser=Kt;Ee.parser=Kt.parse;Ee.Renderer=kr;Ee.TextRenderer=Ta;Ee.Lexer=Xt;Ee.lexer=Xt.lex;Ee.Tokenizer=xr;Ee.Hooks=$o;Ee.parse=Ee;var pb=Ee.options,fb=Ee.setOptions,mb=Ee.walkTokens,gb=Ee.parseInline;var hb=Kt.parse,bb=Xt.lex;var Ar,fe,Xs,Bf,Dn,js,Ks,Js,Ea,zr,Vo,Ys,Ra,Pa,Ma,Zs,_r={},Cr=[],Ff=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,jo=Array.isArray;function gn(e,t){for(var n in t)e[n]=t[n];return e}function La(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function Yn(e,t,n){var r,a,i,s={};for(i in t)i=="key"?r=t[i]:i=="ref"?a=t[i]:s[i]=t[i];if(arguments.length>2&&(s.children=arguments.length>3?Ar.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(i in e.defaultProps)s[i]===void 0&&(s[i]=e.defaultProps[i]);return Sr(e,s,r,a,null)}function Sr(e,t,n,r,a){var i={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:a??++Xs,__i:-1,__u:0};return a==null&&fe.vnode!=null&&fe.vnode(i),i}function N(e){return e.children}function Jt(e,t){this.props=e,this.context=t}function Jn(e,t){if(t==null)return e.__?Jn(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type=="function"?Jn(e):null}function $f(e){if(e.__P&&e.__d){var t=e.__v,n=t.__e,r=[],a=[],i=gn({},t);i.__v=t.__v+1,fe.vnode&&fe.vnode(i),Da(e.__P,i,t,e.__n,e.__P.namespaceURI,32&t.__u?[n]:null,r,n??Jn(t),!!(32&t.__u),a),i.__v=t.__v,i.__.__k[i.__i]=i,ol(r,i,a),t.__e=t.__=null,i.__e!=n&&Qs(i)}}function Qs(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&&t.__e!=null)return e.__e=e.__c.base=t.__e}),Qs(e)}function Ia(e){(!e.__d&&(e.__d=!0)&&Dn.push(e)&&!Tr.__r++||js!=fe.debounceRendering)&&((js=fe.debounceRendering)||Ks)(Tr)}function Tr(){try{for(var e,t=1;Dn.length;)Dn.length>t&&Dn.sort(Js),e=Dn.shift(),t=Dn.length,$f(e)}finally{Dn.length=Tr.__r=0}}function el(e,t,n,r,a,i,s,l,c,d,g){var p,u,m,f,v,x,w=r&&r.__k||Cr,z=t.length;for(c=Uf(n,t,w,c,z),p=0;p<z;p++)(m=n.__k[p])!=null&&(u=m.__i!=-1&&w[m.__i]||_r,m.__i=p,x=Da(e,m,u,a,i,s,l,c,d,g),f=m.__e,m.ref&&u.ref!=m.ref&&(u.ref&&Na(u.ref,null,m),g.push(m.ref,m.__c||f,m)),v==null&&f!=null&&(v=f),4&m.__u?(c=tl(m,c,e),u.__e&&(u.__e=null)):typeof m.type=="function"&&x!==void 0?c=x:f&&(c=f.nextSibling),m.__u&=-7);return n.__e=v,c}function Uf(e,t,n,r,a){var i,s,l,c,d,g=n.length,p=g,u=0;for(e.__k=new Array(a),i=0;i<a;i++)(s=t[i])!=null&&typeof s!="boolean"&&typeof s!="function"?(typeof s=="string"||typeof s=="number"||typeof s=="bigint"||s.constructor==String?s=e.__k[i]=Sr(null,s,null,null,null):jo(s)?s=e.__k[i]=Sr(N,{children:s},null,null,null):s.constructor===void 0&&s.__b>0?s=e.__k[i]=Sr(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):e.__k[i]=s,c=i+u,s.__=e,s.__b=e.__b+1,l=null,(d=s.__i=Hf(s,n,c,p))!=-1&&(p--,(l=n[d])&&(l.__u|=2)),l==null||l.__v==null?(d==-1&&(a>g?u--:a<g&&u++),typeof s.type!="function"&&(s.__u|=4)):d!=c&&(d==c-1?u--:d==c+1?u++:(d>c?u--:u++,s.__u|=4))):e.__k[i]=null;if(p)for(i=0;i<g;i++)(l=n[i])!=null&&(2&l.__u)==0&&(l.__e==r&&(r=Jn(l)),al(l,l));return r}function tl(e,t,n){var r,a;if(typeof e.type=="function"){for(r=e.__k,a=0;r&&a<r.length;a++)r[a]&&(r[a].__=e,t=tl(r[a],t,n));return t}e.__e!=t&&(t&&e.type&&!t.parentNode&&(t=Jn(e)),t=n.insertBefore(e.__e,t||null));do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function Wo(e,t){return t=t||[],e==null||typeof e=="boolean"||(jo(e)?e.some(function(n){Wo(n,t)}):t.push(e)),t}function Hf(e,t,n,r){var a,i,s,l=e.key,c=e.type,d=t[n],g=d!=null&&(2&d.__u)==0;if(d===null&&l==null||g&&l==d.key&&c==d.type)return n;if(r>(g?1:0)){for(a=n-1,i=n+1;a>=0||i<t.length;)if((d=t[s=a>=0?a--:i++])!=null&&(2&d.__u)==0&&l==d.key&&c==d.type)return s}return-1}function Ws(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||Ff.test(t)?n:n+"px"}function wr(e,t,n,r,a){var i,s;e:if(t=="style")if(typeof n=="string")e.style.cssText=n;else{if(typeof r=="string"&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||Ws(e.style,t,"");if(n)for(t in n)r&&n[t]==r[t]||Ws(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")i=t!=(t=t.replace(Ys,"$1")),s=t.toLowerCase(),t=s in e||t=="onFocusOut"||t=="onFocusIn"?s.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+i]=n,n?r?n[Vo]=r[Vo]:(n[Vo]=Ra,e.addEventListener(t,i?Ma:Pa,i)):e.removeEventListener(t,i?Ma:Pa,i);else{if(a=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&n==1?"":n))}}function Gs(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t[zr]==null)t[zr]=Ra++;else if(t[zr]<n[Vo])return;return n(fe.event?fe.event(t):t)}}}function Da(e,t,n,r,a,i,s,l,c,d){var g,p,u,m,f,v,x,w,z,k,M,L,H,V,Q,ee,S=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(c=!!(32&n.__u),i=[l=t.__e=n.__e]),(g=fe.__b)&&g(t);e:if(typeof S=="function"){p=s.length;try{if(z=t.props,k=S.prototype&&S.prototype.render,M=(g=S.contextType)&&r[g.__c],L=g?M?M.props.value:g.__:r,n.__c?w=(u=t.__c=n.__c).__=u.__E:(k?t.__c=u=new S(z,L):(t.__c=u=new Jt(z,L),u.constructor=S,u.render=Vf),M&&M.sub(u),u.state||(u.state={}),u.__n=r,m=u.__d=!0,u.__h=[],u._sb=[]),k&&u.__s==null&&(u.__s=u.state),k&&S.getDerivedStateFromProps!=null&&(u.__s==u.state&&(u.__s=gn({},u.__s)),gn(u.__s,S.getDerivedStateFromProps(z,u.__s))),f=u.props,v=u.state,u.__v=t,m)k&&S.getDerivedStateFromProps==null&&u.componentWillMount!=null&&u.componentWillMount(),k&&u.componentDidMount!=null&&u.__h.push(u.componentDidMount);else{if(k&&S.getDerivedStateFromProps==null&&z!==f&&u.componentWillReceiveProps!=null&&u.componentWillReceiveProps(z,L),t.__v==n.__v||!u.__e&&u.shouldComponentUpdate!=null&&u.shouldComponentUpdate(z,u.__s,L)===!1){t.__v!=n.__v&&(u.props=z,u.state=u.__s,u.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(E){E&&(E.__=t)}),Cr.push.apply(u.__h,u._sb),u._sb=[],u.__h.length&&s.push(u),l=Jn(n);break e}u.componentWillUpdate!=null&&u.componentWillUpdate(z,u.__s,L),k&&u.componentDidUpdate!=null&&u.__h.push(function(){u.componentDidUpdate(f,v,x)})}if(u.context=L,u.props=z,u.__P=e,u.__e=!1,H=fe.__r,V=0,k)u.state=u.__s,u.__d=!1,H&&H(t),g=u.render(u.props,u.state,u.context),Cr.push.apply(u.__h,u._sb),u._sb=[];else do u.__d=!1,H&&H(t),g=u.render(u.props,u.state,u.context),u.state=u.__s;while(u.__d&&++V<25);u.state=u.__s,u.getChildContext!=null&&(r=gn(gn({},r),u.getChildContext())),k&&!m&&u.getSnapshotBeforeUpdate!=null&&(x=u.getSnapshotBeforeUpdate(f,v)),Q=g!=null&&g.type===N&&g.key==null?rl(g.props.children):g,l=el(e,jo(Q)?Q:[Q],t,n,r,a,i,s,l,c,d),u.base=t.__e,t.__u&=-161,u.__h.length&&s.push(u),w&&(u.__E=u.__=null)}catch(E){if(s.length=p,t.__v=null,c||i!=null){if(E.then){for(t.__u|=c?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;i!=null&&(i[i.indexOf(l)]=null),t.__e=l}else if(i!=null)for(ee=i.length;ee--;)La(i[ee])}else t.__e=n.__e;t.__k==null&&(t.__k=n.__k||[]),E.then||nl(t),fe.__e(E,t,n)}}else i==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):l=t.__e=qf(n.__e,t,n,r,a,i,s,c,d);return(g=fe.diffed)&&g(t),128&t.__u?void 0:l}function nl(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(nl))}function ol(e,t,n){for(var r=0;r<n.length;r++)Na(n[r],n[++r],n[++r]);fe.__c&&fe.__c(t,e),e.some(function(a){try{e=a.__h,a.__h=[],e.some(function(i){i.call(a)})}catch(i){fe.__e(i,a.__v)}})}function rl(e){return typeof e!="object"||e==null||e.__b>0?e:jo(e)?e.map(rl):e.constructor!==void 0?null:gn({},e)}function qf(e,t,n,r,a,i,s,l,c){var d,g,p,u,m,f,v,x=n.props||_r,w=t.props,z=t.type;if(z=="svg"?a="http://www.w3.org/2000/svg":z=="math"?a="http://www.w3.org/1998/Math/MathML":a||(a="http://www.w3.org/1999/xhtml"),i!=null){for(d=0;d<i.length;d++)if((m=i[d])&&"setAttribute"in m==!!z&&(z?m.localName==z:m.nodeType==3)){e=m,i[d]=null;break}}if(e==null){if(z==null)return document.createTextNode(w);e=document.createElementNS(a,z,w.is&&w),l&&(fe.__m&&fe.__m(t,i),l=!1),i=null}if(z==null)x===w||l&&e.data==w||(e.data=w);else{if(i=z=="textarea"&&w.defaultValue!=null?null:i&&Ar.call(e.childNodes),!l&&i!=null)for(x={},d=0;d<e.attributes.length;d++)x[(m=e.attributes[d]).name]=m.value;for(d in x)m=x[d],d=="dangerouslySetInnerHTML"?p=m:d=="children"||d in w||d=="value"&&"defaultValue"in w||d=="checked"&&"defaultChecked"in w||wr(e,d,null,m,a);for(d in w)m=w[d],d=="children"?u=m:d=="dangerouslySetInnerHTML"?g=m:d=="value"?f=m:d=="checked"?v=m:l&&typeof m!="function"||x[d]===m||wr(e,d,m,x[d],a);if(g)l||p&&(g.__html==p.__html||g.__html==e.innerHTML)||(e.innerHTML=g.__html),t.__k=[];else if(p&&(e.innerHTML=""),el(t.type=="template"?e.content:e,jo(u)?u:[u],t,n,r,z=="foreignObject"?"http://www.w3.org/1999/xhtml":a,i,s,i?i[0]:n.__k&&Jn(n,0),l,c),i!=null)for(d=i.length;d--;)La(i[d]);l&&z!="textarea"||(d="value",z=="progress"&&f==null?e.removeAttribute("value"):f!=null&&(f!==e[d]||z=="progress"&&!f||z=="option"&&f!=x[d])&&wr(e,d,f,x[d],a),d="checked",v!=null&&v!=e[d]&&wr(e,d,v,x[d],a))}return e}function Na(e,t,n){try{if(typeof e=="function"){var r=typeof e.__u=="function";r&&e.__u(),r&&t==null||(e.__u=e(t))}else e.current=t}catch(a){fe.__e(a,n)}}function al(e,t,n){var r,a;if(fe.unmount&&fe.unmount(e),(r=e.ref)&&(r.current&&r.current!=e.__e||Na(r,null,t)),(r=e.__c)!=null){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(i){fe.__e(i,t)}r.base=r.__P=r.__n=null}if(r=e.__k)for(a=0;a<r.length;a++)r[a]&&al(r[a],t,n||typeof e.type!="function");n||La(e.__e),e.__c=e.__=e.__e=void 0}function Vf(e,t,n){return this.constructor(e,n)}function Qe(e,t,n){var r,a,i,s;t==document&&(t=document.documentElement),fe.__&&fe.__(e,t),a=(r=typeof n=="function")?null:n&&n.__k||t.__k,i=[],s=[],Da(t,e=(!r&&n||t).__k=Yn(N,null,[e]),a||_r,_r,t.namespaceURI,!r&&n?[n]:a?null:t.firstChild?Ar.call(t.childNodes):null,i,!r&&n?n:a?a.__e:t.firstChild,r,s),ol(i,e,s),e.props.children=null}function Er(e){function t(n){var r,a;return this.getChildContext||(r=new Set,(a={})[t.__c]=this,this.getChildContext=function(){return a},this.componentWillUnmount=function(){r=null},this.shouldComponentUpdate=function(i){this.props.value!=i.value&&r.forEach(function(s){s.__e=!0,Ia(s)})},this.sub=function(i){r.add(i);var s=i.componentWillUnmount;i.componentWillUnmount=function(){r&&r.delete(i),s&&s.call(i)}}),n.children}return t.__c="__cC"+Zs++,t.__=e,t.Provider=t.__l=(t.Consumer=function(n,r){return n.children(r)}).contextType=t,t}Ar=Cr.slice,fe={__e:function(e,t,n,r){for(var a,i,s;t=t.__;)if((a=t.__c)&&!a.__)try{if((i=a.constructor)&&i.getDerivedStateFromError!=null&&(a.setState(i.getDerivedStateFromError(e)),s=a.__d),a.componentDidCatch!=null&&(a.componentDidCatch(e,r||{}),s=a.__d),s)return a.__E=a}catch(l){e=l}throw e}},Xs=0,Bf=function(e){return e!=null&&e.constructor===void 0},Jt.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=gn({},this.state),typeof e=="function"&&(e=e(gn({},n),this.props)),e&&gn(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),Ia(this))},Jt.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Ia(this))},Jt.prototype.render=N,Dn=[],Ks=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Js=function(e,t){return e.__v.__b-t.__v.__b},Tr.__r=0,Ea=Math.random().toString(8),zr="__d"+Ea,Vo="__a"+Ea,Ys=/(PointerCapture)$|Capture$/i,Ra=0,Pa=Gs(!1),Ma=Gs(!0),Zs=0;var Nn,Ne,Oa,il,Go=0,ml=[],We=fe,sl=We.__b,ll=We.__r,cl=We.diffed,dl=We.__c,ul=We.unmount,pl=We.__;function yo(e,t){We.__h&&We.__h(Ne,e,Go||t),Go=0;var n=Ne.__H||(Ne.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function A(e){return Go=1,gl(hl,e)}function gl(e,t,n){var r=yo(Nn++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):hl(void 0,t),function(l){var c=r.__N?r.__N[0]:r.__[0],d=r.t(c,l);c!==d&&(r.__N=[d,r.__[1]],r.__c.setState({}))}],r.__c=Ne,!Ne.__f)){var a=function(l,c,d){if(!r.__c.__H)return!0;var g=!1,p=r.__c.props!==l;if(r.__c.__H.__.some(function(m){if(m.__N){g=!0;var f=m.__[0];m.__=m.__N,m.__N=void 0,f!==m.__[0]&&(p=!0)}}),i){var u=i.call(this,l,c,d);return g?u||p:u}return!g||p};Ne.__f=!0;var i=Ne.shouldComponentUpdate,s=Ne.componentWillUpdate;Ne.componentWillUpdate=function(l,c,d){if(this.__e){var g=i;i=void 0,a(l,c,d),i=g}s&&s.call(this,l,c,d)},Ne.shouldComponentUpdate=a}return r.__N||r.__}function oe(e,t){var n=yo(Nn++,3);!We.__s&&$a(n.__H,t)&&(n.__=e,n.u=t,Ne.__H.__h.push(n))}function Xo(e,t){var n=yo(Nn++,4);!We.__s&&$a(n.__H,t)&&(n.__=e,n.u=t,Ne.__h.push(n))}function ce(e){return Go=5,Ot(function(){return{current:e}},[])}function Ot(e,t){var n=yo(Nn++,7);return $a(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function hn(e,t){return Go=8,Ot(function(){return e},t)}function Fa(e){var t=Ne.context[e.__c],n=yo(Nn++,9);return n.c=e,t?(n.__==null&&(n.__=!0,t.sub(Ne)),t.props.value):e.__}function Zn(){var e=yo(Nn++,11);if(!e.__){for(var t=Ne.__v;t!==null&&!t.__m&&t.__!==null;)t=t.__;var n=t.__m||(t.__m=[0,0]);e.__="P"+n[0]+"-"+n[1]++}return e.__}function jf(){for(var e;e=ml.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(Pr),t.__h.some(Ba),t.__h=[]}catch(n){t.__h=[],We.__e(n,e.__v)}}}We.__b=function(e){Ne=null,sl&&sl(e)},We.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),pl&&pl(e,t)},We.__r=function(e){ll&&ll(e),Nn=0;var t=(Ne=e.__c).__H;t&&(Oa===Ne?(t.__h=[],Ne.__h=[],t.__.some(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.some(Pr),t.__h.some(Ba),t.__h=[],Nn=0)),Oa=Ne},We.diffed=function(e){cl&&cl(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(ml.push(t)!==1&&il===We.requestAnimationFrame||((il=We.requestAnimationFrame)||Wf)(jf)),t.__H.__.some(function(n){n.u&&(n.__H=n.u,n.u=void 0)})),Oa=Ne=null},We.__c=function(e,t){t.some(function(n){try{n.__h.some(Pr),n.__h=n.__h.filter(function(r){return!r.__||Ba(r)})}catch(r){t.some(function(a){a.__h&&(a.__h=[])}),t=[],We.__e(r,n.__v)}}),dl&&dl(e,t)},We.unmount=function(e){ul&&ul(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.some(function(r){try{Pr(r)}catch(a){t=a}}),n.__H=void 0,t&&We.__e(t,n.__v))};var fl=typeof requestAnimationFrame=="function";function Wf(e){var t,n=function(){clearTimeout(r),fl&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);fl&&(t=requestAnimationFrame(n))}function Pr(e){var t=Ne,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),Ne=t}function Ba(e){var t=Ne;e.__c=e.__(),Ne=t}function $a(e,t){return!e||e.length!==t.length||t.some(function(n,r){return n!==e[r]})}function hl(e,t){return typeof t=="function"?t(e):t}var Ua=null;function bl(e){Ua=e}function bn(e){return Ua&&e&&typeof window<"u"&&e===window.tangu?{...e,...Ua}:e}var vn=e=>!!(e?.unitPage&&e.unitPublicEntry||e?.mobile&&e.extendMobile),Qn=e=>!!e&&(!e.unitPage||!!e.unitPublicEntry),se=()=>bn(typeof window<"u"?window.tangu:void 0)||{};function Mr(e){let t=typeof e?.status=="number"?e.status:0;if(t>=200&&t<300)return{ok:!0,status:t,data:e?.json??null};let n=e?.json&&typeof e.json=="object"?e.json:null,r=typeof n?.error=="string"?n.error:typeof n?.code=="string"?n.code:null,a=typeof n?.detail=="string"?n.detail:typeof n?.message=="string"?n.message:null;return{ok:!1,status:t,code:r,detail:a,transport:typeof e?.error=="string"?e.error:null}}var Ha=e=>({ok:!1,status:0,code:null,detail:null,transport:e});async function ne(e,t={}){let n=se().cloudFetch;if(!n)return Ha("no_bridge");try{return Mr(await n({path:e,...t}))}catch(r){return Ha(String(r?.message||r))}}async function Ir(e,t){if(!e)return t();try{return Mr(await e())}catch(n){return Ha(String(n?.message||n))}}var eo=e=>e.status===401&&(e.transport==="not_signed_in"||e.code===null&&e.detail===null&&e.transport===null);function Yt(e){return String(e?.message??e??"").replace(/^Error invoking remote method '[^']*':\s*/,"").replace(/^(?:[A-Za-z]*Error):\s*/,"").trim()}async function On(e,t,n){let r=se().cloudInvoke;if(!r)return!1;let a=e==="membership"&&t?n?[e,t,n]:[e,t]:[e];try{return!!(await r("auth:openPayCenter",...a))?.ok}catch{return!1}}async function to(e){let t=se().openAccountCenter;if(!t)return!1;try{return!!(await t(e)).ok}catch{return!1}}var Gf=0;function o(e,t,n,r,a,i){t||(t={});var s,l,c=t;if("ref"in c)for(l in c={},t)l=="ref"?s=t[l]:c[l]=t[l];var d={type:e,props:c,key:n,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--Gf,__i:-1,__u:0,__source:a,__self:i};if(typeof e=="function"&&(s=e.defaultProps))for(l in s)c[l]===void 0&&(c[l]=s[l]);return fe.vnode&&fe.vnode(d),d}var Xf={user:"M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z M4 20c.8-3.5 4-5.5 8-5.5s7.2 2 8 5.5",backpack:"M9 5V3h6v2 M6 8a6 6 0 0 1 12 0v12H6V8Z M9 13h6v5H9z M3 11h3v7H3z M18 11h3v7h-3 M10 8h4",gauge:"M4 16a8 8 0 1 1 16 0 M12 16l4-5 M12 16h.01",shield:"M12 3l7 3v5c0 4.5-3 8.2-7 10-4-1.8-7-5.5-7-10V6l7-3Z",chart:"M4 20V10 M10 20V4 M16 20v-7 M21 20H3",message:"M5 4h14a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-7l-5 4v-4H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1Z",card:"M4 6h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1Z M3 10h18 M7 15h4",coins:"M9 11a5 5 0 1 0 0-10 5 5 0 0 0 0 10Z M15.5 9.2A5 5 0 1 1 9.8 16",clock:"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z M12 7v5l3 2",gift:"M4 11h16v9H4z M3 7h18v4H3z M12 7v13 M12 7c-1.5-3-5-3-5-1s3 1 5 1c2 0 5 1 5-1s-3.5-2-5 1",key:"M8 15a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z M11 11h10 M17 11v3 M20 11v2",laptop:"M5 5h14v10H5z M3 19h18",alert:"M12 4l9 16H3l9-16Z M12 10v4 M12 17h.01",external:"M14 4h6v6 M20 4l-9 9 M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5",copy:"M9 9h11v11H9z M5 15H4V4h11v1",check:"M5 12.5l4.5 4.5L19 7.5",chevron:"M9 6l6 6-6 6",back:"M15 6l-6 6 6 6",pencil:"M4 20h4L19 9l-4-4L4 16v4Z M13.5 6.5l4 4",plus:"M12 5v14 M5 12h14",refresh:"M20 11a8 8 0 0 0-14.3-4.9L4 8 M4 4v4h4 M4 13a8 8 0 0 0 14.3 4.9L20 16 M20 20v-4h-4",phone:"M8 3h8a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Z M11 18h2",mail:"M4 6h16v12H4z M4 7l8 6 8-6",image:"M4 5h16v14H4z M4 16l5-5 4 4 3-3 4 4 M15.5 9.5h.01",x:"M6 6l12 12 M18 6L6 18",logout:"M15 4h4v16h-4 M10 8l-4 4 4 4 M6 12h10",globe:"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z M3 12h18 M12 3c2.5 2.6 3.8 5.6 3.8 9s-1.3 6.4-3.8 9c-2.5-2.6-3.8-5.6-3.8-9S9.5 5.6 12 3Z",lock:"M6 11h12v9H6z M8.5 11V8a3.5 3.5 0 0 1 7 0v3",palette:"M12 3a9 9 0 0 0 0 18c1.2 0 2-.8 2-1.9 0-.5-.2-.9-.5-1.3-.3-.4-.5-.8-.5-1.3 0-1 .8-1.8 1.8-1.8H17a4 4 0 0 0 4-4c0-4.3-4-7.7-9-7.7Z M7.5 12.5h.01 M9 8.5h.01 M14 7.5h.01",calendar:"M5 5h14v15H5z M5 10h14 M9 3v4 M15 3v4",link:"M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7l-1 1 M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1-1",flame:"M12 21a6 6 0 0 0 6-6c0-2.5-1.4-4.4-3-6-.3 1.5-1 2.5-2 3 .3-3-1-6-3.5-8 .2 3-1 4.8-2.2 6.3C6.4 11.5 6 13.2 6 15a6 6 0 0 0 6 6Z",trophy:"M8 4h8v6a4 4 0 0 1-8 0V4Z M8 6H5v1a3 3 0 0 0 3 3 M16 6h3v1a3 3 0 0 1-3 3 M12 14v4 M8.5 20h7",sprout:"M12 20v-8 M12 12c0-3-2-5-6-5 0 3.5 2 5 6 5Z M12 14c0-3 2-5 6-5 0 3.5-2 5-6 5Z",eye:"M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12Z M12 14.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z",download:"M12 4v11 M7.5 11l4.5 4.5 4.5-4.5 M5 20h14",upload:"M12 16V5 M7.5 9.5 12 5l4.5 4.5 M5 20h14",up:"M12 19V5 M6 11l6-6 6 6",down:"M12 5v14 M6 13l6 6 6-6",sparkles:"M12 4l1.8 4.7 4.7 1.8-4.7 1.8L12 17l-1.8-4.7-4.7-1.8 4.7-1.8L12 4Z M18.5 15.5v4 M16.5 17.5h4",bot:"M6 9h12v10H6z M12 9V5 M12 4.5h.01 M9.5 13.5h.01 M14.5 13.5h.01 M3.5 13v3 M20.5 13v3",box:"M12 3l8 4.5v9L12 21l-8-4.5v-9L12 3Z M4 7.5l8 4.5 8-4.5 M12 12v9",grid:"M4 4h7v7H4z M13 4h7v7h-7z M4 13h7v7H4z M13 13h7v7h-7z",note:"M6 3h9l4 4v14H6z M15 3v4h4 M9 12h6 M9 16h4"};function Y({name:e,size:t=14,class:n}){return o("svg",{class:n,width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",focusable:"false",children:o("path",{d:Xf[e]})})}function xo({size:e=12}){return o("svg",{class:"spin",width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","aria-hidden":"true",focusable:"false",children:o("path",{d:"M21 12a9 9 0 1 1-6.2-8.56"})})}var Kf={"penzor.rules.default":"\u4E91\u7AEF\u9ED8\u8BA4","penzor.rules.off":"\u4E0D\u540C\u6B65","penzor.rules.device":"\u8BBE\u5907","penzor.rules.run":"\u7ACB\u5373\u540C\u6B65","penzor.rules.twoWay":"\u53CC\u5411","penzor.rules.defaultForWeb":"\u9ED8\u8BA4\u76EE\u5F55\u4F9B\u7F51\u9875\u7AEF\u4F7F\u7528","penzor.rules.tab.rules":"\u540C\u6B65\u89C4\u5219","penzor.rules.tab.active":"\u6B63\u5728\u4F20\u8F93","penzor.rules.tab.history":"\u5386\u53F2\u8BB0\u5F55","penzor.rules.enable":"\u5F00\u542F\u5185\u5BB9\u540C\u6B65","penzor.rules.add":"\u6DFB\u52A0\u89C4\u5219","penzor.rules.source":"\u672C\u673A\u6765\u6E90","penzor.rules.destination":"\u4E91\u7AEF\u76EE\u6807","penzor.rules.direction":"\u65B9\u5411","penzor.rules.remove":"\u5220\u9664\u89C4\u5219","penzor.rules.inherit":"\u7A7A\u8DEF\u5F84\u4EE3\u8868\u6574\u4E2A Forsion\u3002\u5B50\u9879\u7EE7\u627F\u4E0A\u7EA7\u89C4\u5219\uFF0C\u6700\u5177\u4F53\u7684\u8DEF\u5F84\u4F18\u5148\uFF1B\u6CA1\u6709\u5339\u914D\u89C4\u5219\u7684\u5185\u5BB9\u4E0D\u540C\u6B65\u3002","penzor.rules.namespace":"\u9ED8\u8BA4\uFF1A\u4E91\u7AEF /Forsion/\uFF1B\u8BBE\u5907\u76EE\u5F55\uFF1A\u4E91\u7AEF /Forsion-\u8BBE\u5907ID/\u3002","penzor.rules.human":"human \u72EC\u7ACB\u9009\u62E9\u8303\u56F4\uFF1B\u9ED8\u8BA4\u65E5\u5386\u4F7F\u7528 human/CALENDAR.db\u3002\u6539\u5230\u8BBE\u5907\u76EE\u5F55\u540E\uFF0C\u7F51\u9875\u9ED8\u8BA4\u65E5\u5386\u4E0D\u8DDF\u968F\u5207\u6362\u3002","penzor.rules.preview":"\u9884\u89C8\u53D8\u66F4","penzor.rules.previewTitle":"\u786E\u8BA4\u672C\u6B21\u540C\u6B65\u8303\u56F4","penzor.rules.previewCounts":"\u4E0A\u4F20 {up} \u9879\uFF0C\u4E0B\u8F7D {down} \u9879\uFF0C{conflicts} \u9879\u5DF2\u6709\u4E0D\u540C\u5185\u5BB9\u9700\u5408\u5E76\u6216\u4FDD\u7559\u7248\u672C\u3002","penzor.rules.retain":"\u65E7\u76EE\u6807\u4E2D\u7684\u5185\u5BB9\u4FDD\u7559\u3002\u5173\u95ED\u540C\u6B65\u4E0D\u4F1A\u5220\u9664\u672C\u673A\u6216\u4E91\u7AEF\u6587\u4EF6\uFF1B\u6E90\u6587\u4EF6\u53D8\u5316\u540E\u9700\u91CD\u65B0\u9884\u89C8\u3002","penzor.rules.back":"\u8FD4\u56DE\u4FEE\u6539","penzor.rules.apply":"\u786E\u8BA4\u5E76\u5F00\u59CB","penzor.rules.pause":"\u6682\u505C","penzor.rules.resume":"\u7EE7\u7EED","penzor.rules.noActive":"\u5F53\u524D\u6CA1\u6709\u6587\u4EF6\u6B63\u5728\u4F20\u8F93\u3002","penzor.rules.manual":"\u624B\u52A8\u4E0A\u4F20\u4E0E\u4E0B\u8F7D","penzor.rules.historyNote":"\u4FDD\u7559\u6700\u8FD1 200 \u9879\u3002\u51B2\u7A81\u65F6\u4FDD\u7559\u4E24\u4E2A\u7248\u672C\uFF0C\u5176\u4F59\u5185\u5BB9\u7EE7\u7EED\u540C\u6B65\u3002","penzor.rules.retry":"\u91CD\u8BD5\u5931\u8D25\u9879","penzor.rules.noHistory":"\u8FD8\u6CA1\u6709\u540C\u6B65\u8BB0\u5F55\u3002","penzor.rules.details":"\u67E5\u770B\u4F20\u8F93","penzor.rules.plugins":"\u63D2\u4EF6\u6570\u636E\u4ECD\u7531\u5404\u63D2\u4EF6\u7684\u6570\u636E\u540C\u6B65\u7BA1\u7406\u3002","penzor.rules.turnOff":"\u5173\u95ED\u63D2\u4EF6\u6570\u636E\u540C\u6B65","penzor.rules.turnOn":"\u5F00\u542F\u63D2\u4EF6\u6570\u636E\u540C\u6B65","penzor.rules.phase.idle":"\u7B49\u5F85\u4E0B\u6B21\u540C\u6B65","penzor.rules.phase.scanning":"\u6B63\u5728\u6838\u5BF9\u6587\u4EF6","penzor.rules.phase.syncing":"\u6B63\u5728\u540C\u6B65","penzor.rules.phase.paused":"\u5DF2\u6682\u505C","penzor.rules.state.queued":"\u7B49\u5F85\u4E2D","penzor.rules.state.active":"\u4F20\u8F93\u4E2D","penzor.rules.state.done":"\u5DF2\u5B8C\u6210","penzor.rules.state.failed":"\u5931\u8D25","penzor.rules.state.paused":"\u5DF2\u6682\u505C","penzor.rules.state.conflict":"\u5DF2\u4FDD\u7559\u51B2\u7A81\u7248\u672C","penzor.tree.synced":"\u540C\u6B65\u7684\u5185\u5BB9","penzor.tree.thisBackup":"\u8FD9\u53F0\u7535\u8111 \xB7 \u53EA\u5907\u4EFD","penzor.tree.byApp":"\u6309\u5E94\u7528\u770B","penzor.tree.legacy":"\u65E7\u7248\u667A\u5E93\u540C\u6B65","penzor.quota.sourceLimit":"\u8FD9\u4E00\u7C7B\u8FD8\u6709\u5355\u72EC\u4E0A\u9650 {max}\uFF0C\u5DF2\u7528 {used}","penzor.ov.mine":"\u4F60\u653E\u7684","penzor.ov.synced":"\u540C\u6B65\u4E0A\u6765\u7684","penzor.ov.stale":"\u4E0D\u518D\u66F4\u65B0","penzor.ov.uploads":"\u4F60\u81EA\u5DF1\u4E0A\u4F20\u548C\u6574\u7406\u7684\u6587\u4EF6\uFF0C\u53EF\u4EE5\u968F\u4FBF\u6539","penzor.ov.all":"\u7B14\u8BB0\u3001Agents\u3001\u6211\u7684\u8D44\u6599\u3001\u63D2\u4EF6","penzor.ov.allLast":"\u7B14\u8BB0\u3001Agents\u3001\u6211\u7684\u8D44\u6599\u3001\u63D2\u4EF6 \xB7 \u4E0A\u6B21\u540C\u6B65 {time}","penzor.ov.self":"\u53EA\u6709\u8FD9\u53F0\u7535\u8111\u7528\u7684\u90A3\u4EFD","penzor.ov.device":"\u53EA\u5728\u8FD9\u53F0\u7535\u8111\u548C\u5B83\u4E4B\u95F4\u5171\u7528","penzor.ov.agents":"Agent \u7684\u8BBE\u7F6E\u3001\u8BB0\u5FC6\u548C\u65E5\u5FD7","penzor.ov.profile":"\u4F60\u7684\u8D44\u6599\u548C\u9ED8\u8BA4\u65E5\u5386","penzor.ov.sync":"\u7535\u8111\u540C\u6B65\u4E0A\u6765\u7684\u667A\u5E93","penzor.ov.legacy":"\u8FD9\u53F0\u7535\u8111\u5F00\u4E86\u65B0\u540C\u6B65\u540E\u4E0D\u518D\u5199\u5165\uFF0C\u7559\u7740\u4E0D\u5220","penzor.ov.ama":"\u7F51\u9875\u7248\u7684\u7B14\u8BB0\uFF0C\u548C\u540C\u6B65\u4E0A\u6765\u7684\u7B14\u8BB0","penzor.ov.apps":"\u5404\u5E94\u7528\u5B58\u7684\u6587\u4EF6\uFF0C\u53EF\u4EE5\u5220\u3001\u6539\u540D","penzor.ov.plugins":"\u63D2\u4EF6\u81EA\u5DF1\u5B58\u7684\u8BBE\u7F6E\uFF0C\u8FD9\u91CC\u53EA\u663E\u793A\u5360\u7528","penzor.ov.exports":"\u5BFC\u51FA\u7684\u6587\u4EF6\uFF0C\u53EF\u4EE5\u4E0B\u8F7D\u3001\u5220\u9664","penzor.ov.segNotes":"\u7B14\u8BB0","penzor.ov.segSync":"\u8BBE\u5907\u540C\u6B65","penzor.ov.segOther":"\u5176\u4ED6","penzor.content.badge":"\u65B0\u540C\u6B65\u7EF4\u62A4","penzor.content.badgeLast":"\u65B0\u540C\u6B65\u7EF4\u62A4 \xB7 \u4E0A\u6B21\u540C\u6B65 {time}","penzor.content.noteAll":"\u8FD9\u662F\u4E91\u7AEF\u7684\u90A3\u4E00\u4EFD\uFF0C\u4F60\u767B\u5F55\u7684\u6BCF\u53F0\u8BBE\u5907\u548C\u7F51\u9875\u7248\u770B\u5230\u7684\u90FD\u662F\u5B83\u3002\u8981\u6539\u6587\u4EF6\uFF0C\u5728\u7535\u8111\u4E0A\u7684\u7B14\u8BB0\u3001Agents \u91CC\u6539\uFF0C\u6539\u5B8C\u4F1A\u81EA\u52A8\u540C\u6B65\u4E0A\u6765\uFF1B\u8FD9\u91CC\u53EF\u4EE5\u4E0B\u8F7D\u3002","penzor.content.noteSelf":"\u53EA\u6709\u8FD9\u53F0\u7535\u8111\u7528\u7684\u90A3\u4E00\u4EFD\uFF0C\u522B\u7684\u8BBE\u5907\u770B\u4E0D\u5230\u3002\u8981\u6539\u6587\u4EF6\u5728\u8FD9\u53F0\u7535\u8111\u4E0A\u6539\uFF1B\u8FD9\u91CC\u53EF\u4EE5\u4E0B\u8F7D\u3002","penzor.content.noteDevice":"\u53EA\u5728\u8FD9\u53F0\u7535\u8111\u548C {name} \u4E4B\u95F4\u5171\u7528\u3002\u8981\u6539\u6587\u4EF6\u5728\u7535\u8111\u4E0A\u6539\uFF1B\u8FD9\u91CC\u53EF\u4EE5\u4E0B\u8F7D\u3002","penzor.legacy.title":"\u8FD9\u53F0\u7535\u8111\u5F00\u4E86\u65B0\u540C\u6B65\u540E\uFF0C\u5C31\u4E0D\u518D\u5F80\u8FD9\u4E2A\u5E93\u5199\u4E86","penzor.legacy.body":"\u8FD9\u53F0\u7535\u8111\u7684\u7B14\u8BB0\u73B0\u5728\u5728\u300C\u6240\u6709\u8BBE\u5907\u5171\u7528 \u203A \u7B14\u8BB0\u300D\u91CC\u3002\u8FD8\u6CA1\u5347\u7EA7\u7684\u65E7\u7248\u684C\u9762\u53EF\u80FD\u4ECD\u4F1A\u5199\u5230\u8FD9\u91CC\uFF0C\u6240\u4EE5\u8FD9\u4EFD\u7559\u7740\u3001\u4E0D\u5220\u3002","penzor.legacy.go":"\u53BB\u770B\u65B0\u7684\u90A3\u4EFD","penzor.drive.total":"\u6574\u4E2A\u84EC\u6D32\u4E91\u5DF2\u7528 {used} / {max}","penzor.drive.seeAll":"\u67E5\u770B","penzor.cs.statusOff":"\u672A\u5F00","penzor.cs.statusPaused":"\u5DF2\u6682\u505C","penzor.cs.statusRun":"\u540C\u6B65\u4E2D {pct}%","penzor.cs.statusScan":"\u6B63\u5728\u6838\u5BF9\u6587\u4EF6","penzor.cs.statusWarn":"{n} \u9879\u8981\u5904\u7406","penzor.cs.statusOk":"\u5DF2\u540C\u6B65","penzor.cs.statusOkAgo":"\u5DF2\u540C\u6B65 \xB7 {time}","penzor.cs.thisComputer":"\u8FD9\u53F0\u7535\u8111\uFF1A{name}","penzor.cs.thisComputerLabel":"\u8FD9\u53F0\u7535\u8111\uFF1A","penzor.cs.rename":"\u6539\u8FD9\u53F0\u7535\u8111\u7684\u540D\u5B57","penzor.cs.renameHint":"\u6539\u4E86\u4EE5\u540E\uFF0C\u522B\u7684\u8BBE\u5907\u4E0A\u4E5F\u663E\u793A\u8FD9\u4E2A\u540D\u5B57 \xB7 \u56DE\u8F66\u4FDD\u5B58","penzor.cs.othersN":"\u53E6\u5916 {n} \u53F0\uFF1A{names}","penzor.cs.noOthers":"\u8FD8\u6CA1\u6709\u522B\u7684\u8BBE\u5907\u767B\u5F55\u8FD9\u4E2A\u8D26\u53F7","penzor.cs.log":"\u6700\u8FD1\u8BB0\u5F55","penzor.cs.more":"\u66F4\u591A","penzor.cs.advanced":"\u9AD8\u7EA7\uFF1A\u6309\u89C4\u5219\u7F16\u8F91","penzor.cs.backSimple":"\u8FD4\u56DE\u540C\u6B65","penzor.cs.firstTitle":"\u628A\u8FD9\u53F0\u7535\u8111\u540C\u6B65\u5230\u84EC\u6D32\u4E91","penzor.cs.firstBody":"\u4E0B\u9762\u662F\u5EFA\u8BAE\u7684\u8303\u56F4\uFF0C\u53EF\u4EE5\u5148\u6539\u3002\u70B9\u300C\u5F00\u59CB\u540C\u6B65\u300D\u4E4B\u524D\u4E0D\u4F1A\u4F20\u4EFB\u4F55\u4E1C\u897F\uFF1B\u4E91\u7AEF\u5DF2\u6709\u7684\u4E0D\u4F1A\u88AB\u8986\u76D6\u6216\u5220\u9664\u3002","penzor.cs.note":"\u60F3\u8BA9\u67D0\u4E2A\u7B14\u8BB0\u6587\u4EF6\u5939\u6216 Agent \u5355\u72EC\u5904\u7406\uFF0C\u70B9\u5B83\u4E0B\u9762\u90A3\u884C\u5C0F\u5B57\u5C31\u80FD\u6539\u3002\u5173\u6389\u5F00\u5173\u53EA\u662F\u4E0D\u518D\u540C\u6B65\uFF0C\u4E0D\u5220\u9664\u4EFB\u4F55\u6587\u4EF6\u3002","penzor.cs.barFirst":"\u6253\u5F00\u540C\u6B65\u4F1A\u4E0A\u4F20 {up} \u4E2A\u6587\u4EF6\u3001\u4E0B\u8F7D {down} \u4E2A","penzor.cs.barChanged":"\u6539\u4E86 {n} \u5904","penzor.cs.barOne":"\u6539\u4E86 1 \u5904\uFF1A\u300C{name}\u300D\u6539\u6210{scope}","penzor.cs.offName":"\u4E0D\u540C\u6B65","penzor.cs.barCounts":"\u4F1A\u4E0A\u4F20 {up} \u4E2A\u6587\u4EF6\u3001\u4E0B\u8F7D {down} \u4E2A \xB7 \u4E0D\u5220\u9664\u4EFB\u4F55\u6587\u4EF6","penzor.cs.barSize":"\u5171 {size}","penzor.cs.noDelete":"\u4E0D\u4F1A\u5220\u9664\u4EFB\u4F55\u6587\u4EF6","penzor.cs.barConflicts":"{n} \u4E2A\u4E24\u8FB9\u90FD\u6539\u8FC7\uFF0C\u4F1A\u5404\u7559\u4E00\u4EFD","penzor.cs.barCounting":"\u6B63\u5728\u7B97\u8981\u4F20\u591A\u5C11\u2026","penzor.cs.barRecount":"\u6587\u4EF6\u521A\u6709\u53D8\u5316\uFF0C\u5DF2\u7ECF\u91CD\u65B0\u7B97\u8FC7\uFF0C\u8BF7\u518D\u786E\u8BA4\u4E00\u6B21","penzor.cs.later":"\u5148\u4E0D\u5F00","penzor.cs.start":"\u5F00\u59CB\u540C\u6B65","penzor.cs.undo":"\u64A4\u9500","penzor.cs.confirm":"\u786E\u8BA4","penzor.cs.up":"\u6B63\u5728\u4E0A\u4F20\u300C{name}\u300D","penzor.cs.down":"\u6B63\u5728\u4E0B\u8F7D\u300C{name}\u300D","penzor.cs.waiting":"\u8FD8\u6709 {n} \u4E2A\u6587\u4EF6\u7B49\u7740\u4F20","penzor.cs.failedN":"{n} \u4E2A\u6587\u4EF6\u6CA1\u4F20\u6210\u529F","penzor.cs.retry":"\u91CD\u8BD5","penzor.cs.seeLog":"\u770B\u8BB0\u5F55","penzor.cs.logEmpty":"\u8FD8\u6CA1\u6709\u540C\u6B65\u8BB0\u5F55\u3002","penzor.cs.logNote":"\u4FDD\u7559\u6700\u8FD1 200 \u9879\u3002\u4E24\u8FB9\u90FD\u6539\u8FC7\u65F6\u4F1A\u5404\u7559\u4E00\u4EFD\u3002","penzor.cat.notes":"\u7B14\u8BB0","penzor.cat.notesDesc":"Amadeus \u91CC\u7684\u667A\u5E93","penzor.cat.agents":"Agents \u4E0E\u8BB0\u5FC6","penzor.cat.agentsDesc":"\u6BCF\u4E2A Agent \u7684\u8BBE\u7F6E\u3001\u8BB0\u5FC6\u548C\u65E5\u5FD7","penzor.cat.profile":"\u6211\u7684\u8D44\u6599","penzor.cat.profileDesc":"\u4F60\u7684\u8D44\u6599\u548C\u9ED8\u8BA4\u65E5\u5386","penzor.cat.profileOn":"\u542B\u9ED8\u8BA4\u65E5\u5386","penzor.cat.plugins":"\u63D2\u4EF6","penzor.cat.pluginsDesc":"\u63D2\u4EF6\u7684\u6587\u4EF6\u5939\u548C\u8BBE\u7F6E","penzor.cat.others":"\u5176\u4ED6\u6587\u4EF6","penzor.cat.othersDesc":"\u5DE5\u4F5C\u6587\u4EF6\u5939\u91CC\u4E0D\u5C5E\u4E8E\u4E0A\u9762\u51E0\u7C7B\u7684\u6587\u4EF6","penzor.cat.files":"{n} \u4E2A\u6587\u4EF6 \xB7 {size}","penzor.cat.agentsN":"{n} \u4E2A Agent","penzor.cat.agentsSome":"{n} \u4E2A Agent \xB7 {m} \u4E2A\u4E0A\u4E91","penzor.cat.pluginsN":"{n} \u4E2A\u63D2\u4EF6","penzor.cat.custom":"\u53E6\u6709 {n} \u6761\u81EA\u5B9A\u4E49\u89C4\u5219","penzor.cat.notSynced":"\u4E0D\u540C\u6B65 \xB7 \u53EA\u7559\u5728\u8FD9\u53F0\u7535\u8111","penzor.scope.all":"\u6240\u6709\u8BBE\u5907\u5171\u7528","penzor.scope.allDesc":"\u6BCF\u53F0\u767B\u5F55\u7684\u8BBE\u5907\u548C\u7F51\u9875\u7248\u90FD\u662F\u540C\u4E00\u4EFD","penzor.scope.self":"\u53EA\u5907\u4EFD\u8FD9\u53F0\u7535\u8111","penzor.scope.selfDesc":"\u4E91\u7AEF\u5355\u72EC\u5B58\u4E00\u4EFD\uFF0C\u522B\u7684\u8BBE\u5907\u770B\u4E0D\u5230","penzor.scope.with":"\u53EA\u548C {name} \u5171\u7528","penzor.scope.menuTitle":"\u300C{name}\u300D\u548C\u8C01\u5171\u7528","penzor.scope.menuFoot":"\u4E0D\u60F3\u4E0A\u4E91\u5C31\u5173\u6389\u53F3\u8FB9\u7684\u5F00\u5173","penzor.scope.calendarNote":"\u7F51\u9875\u7248\u7684\u9ED8\u8BA4\u65E5\u5386\u4E0D\u4F1A\u8DDF\u7740\u53D8","penzor.unified.stale":"\u5237\u65B0\u5931\u8D25\uFF0C\u4EE5\u4E0B\u4FDD\u7559\u4E0A\u6B21\u7EDF\u8BA1\uFF1B\u5F53\u524D\u7528\u91CF\u672A\u77E5\uFF0C\u8BF7\u91CD\u8BD5\u3002","penzor.unified.uploadTo":"\u4E0A\u4F20\u5230\u300C\u6211\u7684\u6587\u4EF6\u300D","penzor.unified.apps":"\u666E\u901A\u6587\u4EF6\u53EF\u7BA1\u7406 \xB7 \u6765\u6E90\u9650\u5236\u4F18\u5148","penzor.trash.ama":"Amadeus \xB7 \u5F85\u6E05\u7406\u5FEB\u7167","penzor.trash.amaNote":"\u88AB\u5220\u7684\u5F53\u524D\u6587\u4EF6\u4ECD\u8BA1\u5165\u989D\u5EA6\uFF0C\u5386\u53F2\u7248\u672C\u4E0D\u91CD\u590D\u8BA1\u5165\u300230 \u5929\u540E\u7B49\u5F85\u7CFB\u7EDF\u6E05\u7406\uFF1B\u6B64\u5904\u53EA\u8BFB\uFF0C\u4E0D\u53D7\u300C\u6E05\u7A7A\u56DE\u6536\u7AD9\u300D\u5F71\u54CD\u3002","penzor.trash.expires":"\u53EF\u6E05\u7406\u65E5\u671F","penzor.source.openAgents":"\u5728 Agents \u4E2D\u6253\u5F00","penzor.source.openCalendar":"\u6253\u5F00\u65E5\u5386","penzor.source.entryUnavailable":"\u6B64\u5BBF\u4E3B\u6682\u672A\u63D0\u4F9B\u8BE5\u5165\u53E3","penzor.uploads":"\u6211\u7684\u6587\u4EF6","penzor.source.agents":"Agents","penzor.source.profile":"\u6211\u7684\u8D44\u6599","penzor.source.plugins":"\u63D2\u4EF6\u6570\u636E","penzor.source.readonly":"\u540C\u6B65\u6765\u6E90\u4E3A\u53EA\u8BFB\uFF0C\u8BF7\u5728\u539F\u4F4D\u7F6E\u7F16\u8F91\u6216\u5220\u9664\uFF1B\u6B64\u5904\u53EF\u4E0B\u8F7D\u5DF2\u540C\u6B65\u7684\u6587\u4EF6\u3002","penzor.source.appNote":"\u5E94\u7528\u6587\u4EF6\u7531\u539F\u5E94\u7528\u7BA1\u7406\uFF0C\u8BF7\u5728\u5E94\u7528\u4E2D\u7F16\u8F91\u6216\u5220\u9664\u3002","penzor.source.pluginNote":"\u4EC5\u5C55\u793A\u63D2\u4EF6\u540D\u79F0\u548C\u5360\u7528\uFF1B\u6570\u636E\u53EF\u80FD\u542B\u914D\u7F6E\u6216\u51ED\u636E\uFF0C\u4E0D\u76F4\u63A5\u9884\u89C8\u6216\u4E0B\u8F7D\u3002","penzor.unified.unavailable":"\u7EDF\u8BA1\u4E0D\u53EF\u7528","penzor.unified.incomplete":"\u7EDF\u4E00\u7528\u91CF\u5C1A\u672A\u7EDF\u8BA1\u5B8C\u6574\uFF0C\u4E0D\u80FD\u636E\u6B64\u5224\u65AD\u662F\u5426\u8D85\u989D\u3002\u8BF7\u5237\u65B0\u91CD\u8BD5\u3002","penzor.unified.enforced":"\u7EDF\u4E00\u989D\u5EA6\u5DF2\u542F\u7528\uFF1A\u8D85\u989D\u65F6\u6682\u505C\u65B0\u589E\u5185\u5BB9\u548C\u53D8\u5927\u7684\u6587\u4EF6\uFF1B\u4E0B\u8F7D\u3001\u5220\u9664\u53CA\u4E0D\u589E\u5927\u7684\u8986\u76D6\u4ECD\u53EF\u7528\u3002","penzor.unified.grace":"\u901A\u77E5\u5BBD\u9650\u671F\u81F3 {date}\uFF0C\u76EE\u524D\u4E0D\u65B0\u589E\u7EDF\u4E00\u989D\u5EA6\u62E6\u622A\u3002","penzor.unified.rolloutPolicy":"\u5BB9\u91CF\u653F\u7B56\u901A\u77E5\uFF1A\u6700\u65E9\u5728\u786E\u8BA4\u901A\u77E5 30 \u5929\u540E\uFF0C\u7EDF\u4E00\u989D\u5EA6\u624D\u53EF\u80FD\u9650\u5236\u589E\u957F\u5199\u5165\uFF1B\u5E94\u7528\u6587\u4EF6\u5386\u53F2\u5C06\u4EC5\u4FDD\u7559\u6700\u8FD1 30 \u5929\u5185\u6700\u591A 50 \u4EFD\u3002\u5386\u53F2\u4E0D\u8BA1\u5957\u9910\uFF0C\u6E05\u7406\u524D\u4ECD\u53EF\u4E0B\u8F7D\u5907\u4EFD\uFF0C\u5F53\u524D\u6587\u4EF6\u4E0D\u53D7\u5386\u53F2\u6E05\u7406\u5F71\u54CD\u3002","penzor.unified.ack":"\u5DF2\u9605\u8BFB\u5BB9\u91CF\u4E0E\u5386\u53F2\u4FDD\u7559\u901A\u77E5","penzor.unified.notice":"\u73B0\u5728\u53EA\u662F\u63D0\u9192\uFF0C\u8D85\u4E86\u4E5F\u4E0D\u4F1A\u505C\u6389\u540C\u6B65\u6216\u4E0A\u4F20","penzor.unified.over":"\u5DF2\u8D85\u8FC7\u7EDF\u4E00\u989D\u5EA6\u3002\u76EE\u524D\u53EA\u63D0\u9192\uFF0C\u4E0D\u65B0\u589E\u540C\u6B65\u6216\u4E0A\u4F20\u62E6\u622A\uFF1B\u53EF\u6E05\u7406\u6587\u4EF6\u6216\u5347\u7EA7\u5957\u9910\u3002","penzor.unified.warn":"\u7EDF\u4E00\u7A7A\u95F4\u5373\u5C06\u7528\u6EE1\u3002\u76EE\u524D\u53EA\u63D0\u9192\uFF0C\u4E0D\u65B0\u589E\u540C\u6B65\u6216\u4E0A\u4F20\u62E6\u622A\u3002","penzor.unified.accounting":"\u542B\u56DE\u6536\u7AD9 {trash}\uFF0C\u5386\u53F2\u7248\u672C\u4E0D\u7B97","penzor.unified.writable":"\u53EF\u4E0A\u4F20\u3001\u65B0\u5EFA\u3001\u91CD\u547D\u540D\u548C\u5220\u9664","penzor.unified.readonly":"\u53EA\u8BFB \xB7 \u7531\u6765\u6E90\u7BA1\u7406","penzor.unified.export":"\u53EF\u4E0B\u8F7D\u3001\u91CD\u547D\u540D\u548C\u6C38\u4E45\u5220\u9664","penzor.unified.counted":"\u8BA1\u5165\u7EDF\u4E00\u7528\u91CF \xB7 \u63D0\u9192\u9636\u6BB5","penzor.unified.policy":"\u771F\u8981\u9650\u5236\u4E4B\u524D\uFF0C\u81F3\u5C11\u63D0\u524D 30 \u5929\u544A\u8BC9\u4F60\u3002","penzor.unified.legacySync":"\u539F\u8BBE\u5907\u540C\u6B65\u9650\u5236\uFF1A{used} / {max}","penzor.unified.legacyApps":"\u539F\u5E94\u7528\u6587\u4EF6\u9650\u5236\uFF1A{used} / {max}","sub.identity":"\u63D2\u4EF6 ID","sub.identityHint":"\u63D0\u4EA4\u540E\u81EA\u52A8\u5206\u914D\u552F\u4E00 ID\u3002\u540D\u79F0\u53EF\u4EE5\u91CD\u590D\uFF0C\u66F4\u65B0\u6CBF\u7528\u540C\u4E00\u4E2A ID\u3002","sub.description":"\u8BE6\u7EC6\u63CF\u8FF0","sub.tags":"\u6807\u7B7E","sub.tagsHint":"\u4EE5\u9017\u53F7\u5206\u9694\uFF0C\u6700\u591A 8 \u4E2A","sub.minAppVersion":"\u6700\u4F4E Forsion \u7248\u672C","sub.maxAppVersion":"\u6700\u9AD8\u7248\u672C\uFF08\u4E0D\u542B\uFF09","sub.optional":"\u9009\u586B","sub.platforms":"\u652F\u6301\u7684\u7AEF","sub.requirementsHint":"\u652F\u6301 desktop\u3001macos\u3001windows\u3001linux\u3001android\u3001ios\u3001web\u3002\u7559\u7A7A\u8868\u793A\u672A\u58F0\u660E\u3002ZIP \u6E05\u5355\u4E2D\u7684\u8981\u6C42\u4F1A\u81EA\u52A8\u8BFB\u53D6\uFF0C\u624B\u586B\u503C\u987B\u4E0E\u6E05\u5355\u4E00\u81F4\u3002","sub.err.market_requirements_invalid":"\u7248\u672C\u8981\u6C42\u6216\u5E73\u53F0\u65E0\u6548\u3002","sub.err.market_requirements_mismatch":"\u624B\u586B\u7248\u672C\u8981\u6C42\u4E0E ZIP \u6E05\u5355\u4E0D\u4E00\u81F4\u3002","sub.mine":"\u6211\u7684\u6295\u7A3F","page.submission":"\u63D2\u4EF6\u6295\u7A3F","page.webPages":"\u6211\u7684\u7F51\u9875","web.title":"\u6211\u7684\u7F51\u9875","web.desc":"\u7528 Tangu \u6216 Coding Space \u53D1\u5E03\u7684\u7F51\u9875\u90FD\u5728\u8FD9\u91CC\u3002\u62FF\u5230\u94FE\u63A5\u7684\u4EBA\u90FD\u80FD\u6253\u5F00\uFF1B\u9875\u9762\u5728\u6C99\u7BB1\u91CC\u8FD0\u884C\uFF0C\u62FF\u4E0D\u5230\u8BBF\u5BA2\u7684 Forsion \u767B\u5F55\u6001\u3002","web.refresh":"\u5237\u65B0","web.used":"\u5DF2\u53D1\u5E03 {used} / {limit} \u4E2A","web.full":"\u540D\u989D\u5DF2\u6EE1\uFF0C\u4E0B\u7EBF\u4E00\u4E2A\u6216\u5347\u7EA7\u4F1A\u5458\u540E\u624D\u80FD\u53D1\u65B0\u7684","web.empty":"\u8FD8\u6CA1\u6709\u53D1\u5E03\u8FC7\u7F51\u9875","web.emptyHint":"\u5728\u5BF9\u8BDD\u91CC\u8BA9 Tangu \u628A\u7F51\u9875\u53D1\u5E03\u51FA\u53BB\uFF0C\u6BD4\u5982\u300C\u628A\u8FD9\u4E2A\u9875\u9762\u53D1\u5E03\u6210\u7F51\u9875\u300D\uFF1BCoding Space \u91CC\u7684\u9879\u76EE\u4E5F\u53EF\u4EE5\u70B9\u300C\u53D1\u5E03\u300D\u3002","web.updated":"\u66F4\u65B0\u4E8E {date}","web.disabled":"\u5DF2\u505C\u7528","web.disabledHint":"\u8FD9\u4E2A\u7F51\u9875\u88AB\u7BA1\u7406\u5458\u505C\u7528\u4E86\uFF0C\u94FE\u63A5\u6253\u4E0D\u5F00\uFF0C\u4E5F\u4E0D\u80FD\u66F4\u65B0\u3002","web.copy":"\u590D\u5236\u94FE\u63A5","web.unpublish":"\u4E0B\u7EBF","web.unpublishConfirm":"\u786E\u8BA4\u4E0B\u7EBF","web.listingPending":"\u4E0A\u67B6\u5BA1\u6838\u4E2D","web.listingApproved":"\u5DF2\u4E0A\u67B6","web.listingRejected":"\u4E0A\u67B6\u88AB\u9A73\u56DE","web.listingNote":"\u9A73\u56DE\u539F\u56E0\uFF1A{note}","web.listingApply":"\u7533\u8BF7\u4E0A\u67B6","web.listingReapply":"\u91CD\u65B0\u7533\u8BF7","web.listingWithdraw":"\u64A4\u56DE\u7533\u8BF7","web.listingDelist":"\u4E0B\u67B6","web.listingDelistConfirm":"\u786E\u8BA4\u4E0B\u67B6","web.listingSummary":"\u5546\u5E97\u7B80\u4ECB","web.listingSummaryPh":"\u4E00\u53E5\u8BDD\u4ECB\u7ECD\u8FD9\u4E2A\u7F51\u9875","web.listingHint":"\u5BA1\u6838\u901A\u8FC7\u540E\u5728\u5546\u5E97\u300C\u7F51\u7AD9\u5E94\u7528\u300D\u91CC\u516C\u5F00\u5C55\u793A\uFF0C300 \u5B57\u4EE5\u5185\u3002","web.listingSubmit":"\u63D0\u4EA4\u7533\u8BF7","sub.desc":"\u7BA1\u7406\u4F60\u6295\u7A3F\u7684\u5185\u5BB9\u3001\u5BA1\u6838\u7ED3\u679C\u548C\u7248\u672C\u66F4\u65B0\u3002","sub.new":"\u65B0\u6295\u7A3F","sub.refresh":"\u5237\u65B0","sub.empty":"\u8FD8\u6CA1\u6709\u6295\u7A3F","sub.emptyHint":"\u628A\u4F60\u7684\u63D2\u4EF6\u3001\u6280\u80FD\u3001Agent \u6216 Space \u5206\u4EAB\u5230\u5E94\u7528\u5E02\u573A\u3002","sub.name":"\u540D\u79F0","sub.summary":"\u7B80\u4ECB","sub.type":"\u5185\u5BB9\u7C7B\u578B","sub.source":"\u53D1\u5E03\u6E20\u9053","sub.type.skill":"\u6280\u80FD","sub.type.agent":"Agent","sub.type.plugin":"\u63D2\u4EF6","sub.type.space":"Space","sub.type.theme":"\u4E3B\u9898","sub.type.amadeus_plugin":"Amadeus \u63D2\u4EF6","sub.pending":"\u5F85\u5BA1\u6838","sub.approved":"\u5DF2\u4E0A\u67B6","sub.rejected":"\u5DF2\u9A73\u56DE","sub.pendingVersion":"v{version} \u66F4\u65B0\u5F85\u5BA1\u6838","sub.rejectedVersion":"v{version} \u66F4\u65B0\u5DF2\u9A73\u56DE","sub.submit":"\u63D0\u4EA4\u5BA1\u6838","sub.submitted":"\u6295\u7A3F\u5DF2\u63D0\u4EA4\uFF0C\u5BA1\u6838\u7ED3\u679C\u4F1A\u663E\u793A\u5728\u8FD9\u91CC\u548C\u4F60\u7684\u6536\u4EF6\u7BB1\u91CC\u3002","sub.updated":"\u65B0\u7248\u672C\u5DF2\u63D0\u4EA4\u5BA1\u6838\u3002\u5BA1\u6838\u901A\u8FC7\u524D\u5546\u5E97\u7167\u65E7\u63D0\u4F9B\u5DF2\u4E0A\u67B6\u7684\u7248\u672C\uFF0C\u7ED3\u679C\u4F1A\u53D1\u5230\u4F60\u7684\u6536\u4EF6\u7BB1\u3002","sub.repo":"GitHub \u516C\u5F00\u4ED3\u5E93","sub.npm":"npm \u516C\u5F00\u5305","sub.repoHint":"\u4ECE\u4ED3\u5E93\u8BFB\u53D6 README \u548C Release\uFF1B\u4ED3\u5E93\u4F5C\u8005\u663E\u793A\u4E3A\u53D1\u5E03\u4EBA\u3002","sub.npmHint":"\u4ECE npm \u8BFB\u53D6\u5305\u4FE1\u606F\uFF1B\u5BF9\u5E94\u516C\u5F00\u4ED3\u5E93\u7684\u4F5C\u8005\u663E\u793A\u4E3A\u53D1\u5E03\u4EBA\u3002","sub.reviewHint":"\u65B0\u7248\u672C\u9700\u91CD\u65B0\u5BA1\u6838\uFF0C\u5BA1\u6838\u901A\u8FC7\u540E\u624D\u5411\u7528\u6237\u63D0\u4F9B\u3002\u4F60\u7684 Forsion \u8D26\u53F7\u7528\u4E8E\u7BA1\u7406\u6295\u7A3F\u3002","sub.zipHint":"\u6700\u5927 50 MB\uFF0C\u5305\u5185\u5305\u542B\u5BF9\u5E94\u7684 manifest \u4E0E\u5165\u53E3\u6587\u4EF6\u3002","sub.filter":"\u6309\u72B6\u6001\u7B5B\u9009","sub.all":"\u5168\u90E8","sub.noResults":"\u6CA1\u6709\u7B26\u5408\u6761\u4EF6\u7684\u6295\u7A3F","sub.downloads":"{n} \u6B21\u4E0B\u8F7D","sub.errName":"\u8BF7\u586B\u5199\u540D\u79F0\u3002","sub.errSource":"\u8BF7\u586B\u5199\u516C\u5F00\u4ED3\u5E93\u5730\u5740\u6216 npm \u5305\u540D\u3002","sub.errZip":"\u8BF7\u9009\u62E9 ZIP \u5305\u3002","sub.errLarge":"ZIP \u5305\u4E0D\u80FD\u8D85\u8FC7 50 MB\u3002","sub.err.market_npm_invalid":"npm \u5305\u4E0D\u5B58\u5728\u6216\u4E0D\u7B26\u5408\u63D2\u4EF6\u53D1\u5E03\u89C4\u8303\u3002","sub.err.market_npm_source":"\u8BF7\u901A\u8FC7 npm \u53D1\u5E03\u5E76\u91CD\u65B0\u5BA1\u6838\u65B0\u7248\u3002","sub.err.market_github_source":"\u8BF7\u5728 GitHub \u53D1\u5E03 Release \u5E76\u91CD\u65B0\u5BA1\u6838\u65B0\u7248\u3002","sub.err.market_not_found":"\u6295\u7A3F\u4E0D\u5B58\u5728\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u8BD5\u3002","sub.err.market_zip_required":"\u8BF7\u9009\u62E9 ZIP \u5305\u3002","sub.err.market_zip_invalid":"ZIP \u5305\u7ED3\u6784\u4E0D\u7B26\u5408\u53D1\u5E03\u89C4\u8303\u3002","sub.err.market_zip_too_large":"ZIP \u5305\u4E0D\u80FD\u8D85\u8FC7 50 MB\u3002","sub.err.market_version_required":"\u5305\u91CC\u6CA1\u5199\u7248\u672C\u53F7\u3002\u5728 manifest \u91CC\u5199\u4E0A\u7248\u672C\u53F7\uFF08\u6280\u80FD\u5199\u5728 SKILL.md \u7684 version \u6216 metadata.version\uFF09\u518D\u6253\u5305\u3002","sub.err.market_version_invalid":"\u8BF7\u8F93\u5165\u6709\u6548\u7684\u7248\u672C\u53F7\u3002","sub.err.market_version_mismatch":"\u7248\u672C\u53F7\u4E0E\u5305\u5185 manifest \u4E0D\u4E00\u81F4\u3002","sub.err.market_version_not_newer":"\u65B0\u7248\u987B\u9AD8\u4E8E\u5F53\u524D\u5DF2\u4E0A\u67B6\u7248\u672C\u3002","sub.err.market_icon_invalid":"\u56FE\u6807\u5E94\u4E3A 64\u2013512 px \u7684\u6B63\u65B9\u5F62 PNG\u3002","sub.err.market_duplicate":"\u8BE5\u5185\u5BB9\u5DF2\u6709\u6295\u7A3F\uFF0C\u8BF7\u7BA1\u7406\u73B0\u6709\u6295\u7A3F\u3002","sub.err.market_update_pending":"\u5DF2\u6709\u65B0\u7248\u7B49\u5F85\u5BA1\u6838\uFF0C\u8BF7\u5148\u7B49\u5F85\u5BA1\u6838\u7ED3\u679C\u3002","sub.err.market_stale":"\u6295\u7A3F\u5DF2\u53D1\u751F\u53D8\u5316\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u8BD5\u3002","sub.notNewer":"\u5305\u91CC\u7684\u7248\u672C\u662F v{version}\uFF0C\u8981\u9AD8\u4E8E\u5546\u5E97\u5F53\u524D\u7684 v{current}\u3002","sub.reqNone":"\u6CA1\u6709\u58F0\u660E\u7248\u672C\u8981\u6C42\u548C\u5E73\u53F0","sub.dropTitle":"\u628A ZIP \u62D6\u5230\u8FD9\u91CC\uFF0C\u6216\u70B9\u8FD9\u91CC\u9009\u62E9","sub.dropHint":"\u6700\u5927 50 MB\u3002\u9009\u597D\u540E\u5148\u68C0\u67E5\uFF0C\u4E0D\u4F1A\u76F4\u63A5\u63D0\u4EA4\u3002","sub.dropReplace":"{size} \xB7 \u62D6\u5165\u6216\u70B9\u8FD9\u91CC\u6362\u4E00\u4E2A","sub.checkType":"\u7C7B\u578B","sub.checkVersion":"\u7248\u672C","sub.checkIcon":"\u56FE\u6807","sub.checkReadme":"\u8BF4\u660E\u6587\u6863","sub.checkReq":"\u8981\u6C42","sub.checkWarn":"\u6CE8\u610F","sub.iconYes":"\u5305\u91CC\u6709 icon.png","sub.iconNo":"\u5305\u91CC\u6CA1\u6709 icon.png\uFF0C\u5361\u7247\u663E\u793A\u7C7B\u578B\u56FE\u6807","sub.readmeYes":"\u53D6\u5305\u91CC\u7684 README.md","sub.readmeKeep":"\u5305\u91CC\u6CA1\u6709 README.md\uFF0C\u6CBF\u7528\u73B0\u5728\u7684\u8BF4\u660E","sub.readmeNo":"\u5305\u91CC\u6CA1\u6709 README.md","sub.warn.no_manifest":"\u5305\u91CC\u6CA1\u627E\u5230\u6E05\u5355\u6587\u4EF6\uFF08manifest\uFF09","sub.warn.type_mismatch":"\u5305\u91CC\u7684\u7C7B\u578B\u548C\u8FD9\u6761\u6295\u7A3F\u7684\u7C7B\u578B\u4E0D\u4E00\u81F4","sub.warn.tag_version_mismatch":"Release \u6807\u7B7E\u548C\u5305\u91CC\u7684\u7248\u672C\u53F7\u4E0D\u4E00\u81F4","sub.warn.id_slug_mismatch":"\u5305\u91CC\u7684 id \u548C\u5DF2\u5B89\u88C5\u7684\u76EE\u5F55\u540D\u4E0D\u4E00\u81F4\uFF0C\u7528\u6237\u66F4\u65B0\u540E\u4F1A\u591A\u51FA\u4E00\u4EFD","sub.warn.engine_slug_mismatch":"\u5F15\u64CE\u63D2\u4EF6\u7684\u76EE\u5F55\u540D\u548C\u5B83\u7684 id \u4E0D\u4E00\u81F4","sub.warn.no_entry":"Amadeus \u63D2\u4EF6\u7F3A\u5C11\u5165\u53E3 main.js","sub.warn.has_node_modules":"\u5305\u91CC\u5E26\u4E86 node_modules\uFF0C\u4F53\u79EF\u5927\uFF0C\u901A\u5E38\u4E5F\u7528\u4E0D\u4E0A","sub.zipListedNote":"\u5BA1\u6838\u901A\u8FC7\u524D\uFF0C\u5546\u5E97\u7EE7\u7EED\u63D0\u4F9B\u5DF2\u4E0A\u67B6\u7684\u7248\u672C\u3002\u5BA1\u6838\u7ED3\u679C\u4F1A\u53D1\u5230\u4F60\u7684\u6536\u4EF6\u7BB1\u3002","sub.zipUnlistedNote":"\u63D0\u4EA4\u540E\u66FF\u6362\u73B0\u5728\u8FD9\u4EFD\u5305\uFF0C\u91CD\u65B0\u8FDB\u5165\u5BA1\u6838\u3002","sub.submitVersion":"\u63D0\u4EA4 v{version} \u5BA1\u6838","sub.checkNew":"\u68C0\u67E5\u65B0\u7248\u672C","sub.checkAgain":"\u518D\u68C0\u67E5\u4E00\u6B21","sub.upToDate":"\u4E0A\u6E38\u6700\u65B0\u662F v{version}\uFF0C\u5546\u5E97\u5DF2\u662F v{current}\uFF0C\u6CA1\u6709\u65B0\u7248\u672C\u3002\u53D1\u5E03\u65B0\u7248\u672C\u540E\u518D\u6765\u68C0\u67E5\u3002","sub.upstreamLatest":"\u4E0A\u6E38\u6700\u65B0\uFF1Av{version}","sub.releaseTag":"Release {tag}","sub.storeHas":"\u5546\u5E97\u5F53\u524D v{version}","sub.githubNote":"\u901A\u8FC7\u540E\u5546\u5E97\u9501\u5B9A\u5230 v{version}\u3002\u4EE5\u540E\u5728 GitHub \u53D1\u4E86\u65B0 Release\uFF0C\u56DE\u5230\u8FD9\u91CC\u518D\u68C0\u67E5\u4E00\u6B21\u3002","sub.npmNote":"\u901A\u8FC7\u540E\u5546\u5E97\u9501\u5B9A\u5230 v{version}\u3002\u4EE5\u540E\u5728 npm \u53D1\u4E86\u65B0\u7248\u672C\uFF0C\u56DE\u5230\u8FD9\u91CC\u518D\u68C0\u67E5\u4E00\u6B21\u3002","sub.secVersion":"\u7248\u672C","sub.secInfo":"\u5546\u5E97\u4FE1\u606F","sub.secHistory":"\u8BB0\u5F55","sub.edit":"\u7F16\u8F91","sub.unset":"\u672A\u586B\u5199","sub.infoNote":"\u4E0D\u7528\u4F20\u5305\u3001\u4E0D\u7528\u5347\u7248\u672C\u3002\u5DF2\u4E0A\u67B6\u7684\u4FEE\u6539\u540C\u6837\u8981\u8FC7\u5BA1\u6838\uFF0C\u5BA1\u6838\u524D\u5546\u5E97\u7167\u65E7\u663E\u793A\u539F\u6765\u7684\u4FE1\u606F\u3002","sub.submitInfo":"\u63D0\u4EA4\u4FEE\u6539","sub.back":"\u8FD4\u56DE\u5217\u8868","sub.pendingInfo":"\u5546\u5E97\u4FE1\u606F\u4FEE\u6539\u5F85\u5BA1\u6838","sub.rejectedInfo":"\u5546\u5E97\u4FE1\u606F\u4FEE\u6539\u5DF2\u9A73\u56DE","sub.pendingHint":"\u5BA1\u6838\u901A\u8FC7\u524D\u5546\u5E97\u7167\u65E7\uFF0C\u5BA1\u6838\u7ED3\u679C\u4F1A\u53D1\u5230\u4F60\u7684\u6536\u4EF6\u7BB1\u3002","sub.inReview":"\u6B63\u5728\u7B49\u5F85\u9996\u6B21\u5BA1\u6838\uFF0C\u5BA1\u6838\u7ED3\u679C\u4F1A\u53D1\u5230\u4F60\u7684\u6536\u4EF6\u7BB1\u3002","sub.histApproved":"v{version} \u5BA1\u6838\u901A\u8FC7","sub.histSubmitted":"\u6295\u7A3F","sub.resubmitted":"\u5DF2\u91CD\u65B0\u63D0\u4EA4\u5BA1\u6838\uFF0C\u7ED3\u679C\u4F1A\u53D1\u5230\u4F60\u7684\u6536\u4EF6\u7BB1\u3002","sub.infoSubmitted":"\u4FEE\u6539\u5DF2\u63D0\u4EA4\u5BA1\u6838\uFF0C\u5BA1\u6838\u524D\u5546\u5E97\u7167\u65E7\u663E\u793A\u539F\u6765\u7684\u4FE1\u606F\u3002","sub.err.market_no_release":"\u8FD9\u4E2A\u4ED3\u5E93\u8FD8\u6CA1\u6709 GitHub Release\u3002\u5546\u5E97\u8981\u9501\u5B9A\u4E00\u4E2A\u7248\u672C\uFF0C\u5148\u5728 GitHub \u53D1\u4E00\u4E2A Release\uFF0C\u518D\u56DE\u6765\u68C0\u67E5\u3002","sub.err.market_no_changes":"\u6CA1\u6709\u6539\u52A8\u3002","sub.err.market_dryrun_unsupported":"GitHub \u548C npm \u6295\u7A3F\u6CA1\u6CD5\u63D0\u524D\u68C0\u67E5\uFF0C\u76F4\u63A5\u63D0\u4EA4\u5BA1\u6838\u5373\u53EF\u3002","page.account":"\u8D26\u53F7","page.membershipUsage":"\u4F1A\u5458\u4E0E\u7528\u91CF","page.membershipQuota":"\u4F1A\u5458\u4E0E\u989D\u5EA6","page.pointsInvite":"\u79EF\u5206\u4E0E\u9080\u8BF7","page.helpDiagnostics":"\u5E2E\u52A9\u4E0E\u8BCA\u65AD","account.details.title":"\u767B\u5F55\u4E0E\u8D44\u6599","account.details.desc":"\u5934\u50CF\u3001\u6635\u79F0\u4E0E\u7B80\u4ECB\u5728\u300C\u4E2A\u4EBA\u4E3B\u9875\u300D\u4E2D\u7F16\u8F91\u3002","account.details.username":"\u7528\u6237\u540D","diag.unavailable":"\u5F53\u524D\u5BBF\u4E3B\u4E0D\u652F\u6301\u8BCA\u65AD\u6570\u636E\uFF0C\u8BF7\u66F4\u65B0 Forsion \u540E\u91CD\u8BD5\u3002","page.profile":"\u4E2A\u4EBA\u4E3B\u9875","page.quota":"\u989D\u5EA6\u4E0E\u79EF\u5206","page.backpack":"\u80CC\u5305","page.security":"\u5B89\u5168","page.usage":"\u7528\u91CF\u8BB0\u5F55","page.feedback":"\u53CD\u9988","store.group":"\u4F1A\u5458\u4E0E\u79EF\u5206","store.membership":"\u4F1A\u5458","store.membership.desc":"\u5347\u7EA7\u6863\u4F4D\uFF0C\u83B7\u5F97\u66F4\u591A\u6BCF\u65E5\u4E0E\u6BCF\u5468\u989D\u5EA6","store.points":"\u79EF\u5206","store.points.desc":"\u5145\u503C\u79EF\u5206\uFF0C\u7528\u6765\u5151\u6362\u7269\u54C1","store.items":"\u7269\u54C1","store.items.desc":"\u7528\u79EF\u5206\u5151\u6362\u7684\u7269\u54C1\uFF0C\u5151\u6362\u540E\u8FDB\u80CC\u5305","store.status":"\u6863\u4F4D\u4E0E\u79EF\u5206","store.tier":"\u5F53\u524D\u6863\u4F4D","store.balance":"\u79EF\u5206\u4F59\u989D","store.choosePlan":"\u9009\u62E9\u6863\u4F4D","store.payHint":"\u4ED8\u6B3E\u5728\u6D4F\u89C8\u5668\u7684\u652F\u4ED8\u9875\u5B8C\u6210\uFF0C\u56DE\u5230\u5E94\u7528\u540E\u81EA\u52A8\u5237\u65B0","store.payOff":"\u6682\u65F6\u4E0D\u80FD\u8D2D\u4E70","store.period":"\u4ED8\u8D39\u5468\u671F","store.period.monthly":"\u6708\u4ED8","store.period.quarterly":"\u5B63\u4ED8","store.period.yearly":"\u5E74\u4ED8","store.per.monthly":"/ \u6708","store.per.quarterly":"/ \u5B63","store.per.yearly":"/ \u5E74","store.currentTier":"\u5F53\u524D\u6863\u4F4D","store.pay":"\u53BB\u652F\u4ED8","store.payPrice":"{price} \u53BB\u652F\u4ED8","store.noPlans":"\u6682\u65F6\u6CA1\u6709\u53EF\u9009\u7684\u6863\u4F4D","store.packs":"\u79EF\u5206\u5305","store.packsHint":"\u4ED8\u6B3E\u5728\u6D4F\u89C8\u5668\u7684\u652F\u4ED8\u9875\u5B8C\u6210\uFF0C\u4ED8\u6B3E\u540E\u79EF\u5206\u5373\u65F6\u5230\u8D26","store.noPacks":"\u6682\u65F6\u6CA1\u6709\u79EF\u5206\u5305","store.kind.pack":"\u79EF\u5206\u5305","store.kind.card":"\u9053\u5177","store.kind.code":"\u5151\u6362\u7801","store.kind.item":"\u7269\u54C1","store.nPoints":"{n} \u79EF\u5206","store.instant":"\u4ED8\u6B3E\u540E\u5373\u65F6\u5230\u8D26","store.redeemTitle":"\u79EF\u5206\u5151\u6362","store.redeemHint":"\u7528\u79EF\u5206\u5151\u6362\u5728\u5E94\u7528\u5185\u76F4\u63A5\u5B8C\u6210\uFF0C\u5151\u6362\u540E\u7269\u54C1\u8FDB\u80CC\u5305","store.redeem":"{n} \u79EF\u5206\u5151\u6362","store.redeemConfirm":"\u786E\u8BA4\u82B1 {n} \u79EF\u5206","store.redeemed":"\u5DF2\u5151\u6362\uFF0C\u7269\u54C1\u5728\u80CC\u5305\u91CC","store.uncertain":"\u6CA1\u6536\u5230\u7ED3\u679C\u3002\u5148\u5230\u80CC\u5305\u770B\u4E00\u4E0B\u6709\u6CA1\u6709\u5230\u8D26\uFF0C\u518D\u51B3\u5B9A\u8981\u4E0D\u8981\u91CD\u8BD5\u3002","store.soldOut":"\u5DF2\u552E\u7F44","store.left":"\u4F59 {n}","store.toBackpack":"\u5151\u6362\u540E\u8FDB\u80CC\u5305","store.limitReached":"\u5DF2\u8FBE\u8D2D\u4E70\u4E0A\u9650","store.unavailable":"\u8FD9\u4EF6\u7269\u54C1\u6682\u65F6\u4E0D\u80FD\u5151\u6362","store.noItems":"\u6682\u65F6\u6CA1\u6709\u53EF\u5151\u6362\u7684\u7269\u54C1","store.itemsOff":"\u7269\u54C1\u5151\u6362\u6682\u672A\u5F00\u653E","store.openBackpack":"\u6253\u5F00\u80CC\u5305","backpack.desc":"\u5728\u8FD9\u91CC\u67E5\u770B\u4F60\u83B7\u5F97\u7684\u7269\u54C1\uFF0C\u70B9\u51FB\u683C\u5B50\u67E5\u770B\u8BE6\u60C5\u3002","backpack.refresh":"\u5237\u65B0","backpack.total":"\u5171 {n} \u4EF6\u7269\u54C1","backpack.grid":"\u80CC\u5305\u7269\u54C1","backpack.slot":"{name}\uFF0C\u6570\u91CF {n}","backpack.item":"\u7269\u54C1","backpack.empty":"\u80CC\u5305\u8FD8\u662F\u7A7A\u7684","backpack.emptyHint":"\u5151\u6362\u6216\u83B7\u8D60\u7684\u7269\u54C1\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002","backpack.select":"\u70B9\u51FB\u7269\u54C1\u67E5\u770B\u8BE6\u60C5","backpack.details":"\u7269\u54C1\u8BE6\u60C5","backpack.quantity":"\u6301\u6709\u6570\u91CF","backpack.acquired":"\u83B7\u5F97\u65F6\u95F4","backpack.source":"\u83B7\u5F97\u65B9\u5F0F","backpack.source.points":"\u79EF\u5206\u5151\u6362","backpack.source.admin":"\u8D60\u9001","backpack.source.reward":"\u5956\u52B1","backpack.source.other":"\u4E91\u7AEF\u53D1\u653E","backpack.consumable":"\u6D88\u8017\u54C1","backpack.voucher":"\u5361\u5238","backpack.getCards":"\u5151\u6362\u91CD\u7F6E\u5361","backpack.manageCards":"\u4F7F\u7528\u6216\u5151\u6362","backpack.reveal":"\u67E5\u770B\u5361\u5BC6","backpack.copyKey":"\u590D\u5236\u5361\u5BC6","backpack.noKey":"\u8FD9\u4EF6\u7269\u54C1\u6CA1\u6709\u5361\u5BC6\u3002","backpack.use":"\u4F7F\u7528","backpack.confirmUse":"\u786E\u8BA4\u4F7F\u7528","backpack.consumeConfirm":"\u4F7F\u7528\u540E\u6D88\u8017 1 \u4EF6\u7269\u54C1\u3002","backpack.collectible":"\u7EAA\u5FF5\u54C1","backpack.effect.points":"+{n} \u79EF\u5206","backpack.effect.cards":"+{n} \u5F20\u91CD\u7F6E\u5361","backpack.effect.quota":"\u91CD\u7F6E\u4ECA\u65E5\u4E0E\u672C\u5468\u989D\u5EA6","backpack.rarity.common":"\u666E\u901A","backpack.rarity.rare":"\u7A00\u6709","backpack.rarity.epic":"\u53F2\u8BD7","backpack.rarity.legendary":"\u4F20\u8BF4","backpack.unavailable":"\u8FD9\u4EF6\u7269\u54C1\u5DF2\u4E0D\u53EF\u7528\uFF0C\u8BF7\u5237\u65B0\u80CC\u5305\u3002","backpack.notUsable":"\u8FD9\u4EF6\u7269\u54C1\u4E0D\u80FD\u4F7F\u7528\u3002","backpack.quotaUnavailable":"\u8BF7\u5148\u4F7F\u7528\u4E91\u7AEF AI \u521D\u59CB\u5316\u989D\u5EA6\uFF0C\u518D\u4F7F\u7528\u8FD9\u4EF6\u7269\u54C1\u3002","common.cancel":"\u53D6\u6D88","common.copied":"\u5DF2\u590D\u5236","common.copyFailed":"\u590D\u5236\u5931\u8D25","common.done":"\u5B8C\u6210","common.loadFailed":"\u6CA1\u80FD\u52A0\u8F7D","common.loadMore":"\u52A0\u8F7D\u66F4\u591A","common.loading":"\u52A0\u8F7D\u4E2D\u2026","common.openInBrowser":"\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00","common.retry":"\u91CD\u8BD5","common.save":"\u4FDD\u5B58","common.thisWeek":"\u672C\u5468","common.today":"\u4ECA\u65E5","common.unlimited":"\u4E0D\u9650","ann.eyebrow":"FORSION \xB7 \u516C\u544A","ann.close":"\u5173\u95ED","ann.ok":"\u77E5\u9053\u4E86","signin.button":"\u767B\u5F55 Forsion","signin.desc":"\u767B\u5F55 Forsion \u8D26\u53F7\u540E\uFF0C\u53EF\u4EE5\u5728\u8FD9\u91CC\u7BA1\u7406\u8D26\u53F7\u3001\u989D\u5EA6\u3001\u5B89\u5168\u3001\u6295\u7A3F\u4E0E\u53CD\u9988\u3002","signin.pending":"\u7B49\u5F85\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u767B\u5F55\u2026","signin.deviceHint":"\u6D4F\u89C8\u5668\u4F1A\u81EA\u52A8\u6253\u5F00\u767B\u5F55\u9875\uFF1B\u6CA1\u6709\u6253\u5F00\u7684\u8BDD\uFF0C\u7528\u624B\u673A\u626B\u7801\u6216\u6253\u5F00\u4E0B\u9762\u7684\u94FE\u63A5\uFF0C\u5E76\u6838\u5BF9\u9A8C\u8BC1\u7801\u3002","signin.code":"\u9A8C\u8BC1\u7801","signin.openLink":"\u6253\u5F00\u767B\u5F55\u9875","signin.copyLink":"\u590D\u5236\u94FE\u63A5","signin.qrLabel":"\u767B\u5F55\u4E8C\u7EF4\u7801","account.profile.title":"\u4E2A\u4EBA\u8D44\u6599","account.profile.desc":"\u5934\u50CF\u3001\u6635\u79F0\uFF0C\u4EE5\u53CA\u7ED1\u5B9A\u7684\u624B\u673A\u548C\u90AE\u7BB1","account.avatar.change":"\u66F4\u6362\u5934\u50CF","account.avatar.saved":"\u5934\u50CF\u5DF2\u66F4\u65B0","account.nickname.edit":"\u4FEE\u6539\u6635\u79F0","account.nickname.label":"\u6635\u79F0","account.nickname.saved":"\u6635\u79F0\u5DF2\u66F4\u65B0","account.role.admin":"\u7BA1\u7406\u5458","account.username":"\u7528\u6237\u540D {name}","account.contact.phone":"\u624B\u673A","account.contact.email":"\u90AE\u7BB1","account.contact.unbound":"\u672A\u7ED1\u5B9A","account.contact.manage":"\u53BB\u5B89\u5168\u9875\u7BA1\u7406","account.web.open":"\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00\u4E2A\u4EBA\u4E2D\u5FC3","account.web.desc":"\u4E91\u7A7A\u95F4\u3001AI \u5927\u8111\u4E0E\u4E3B\u9898\u5728\u7F51\u9875\u4E2A\u4EBA\u4E2D\u5FC3\u7BA1\u7406\u3002","member.title":"\u4F1A\u5458","member.desc":"\u5F53\u524D\u6863\u4F4D\u3001\u65B9\u6848\u4E0E\u5230\u671F\u65E5","member.upgrade":"\u5347\u7EA7\u4F1A\u5458","member.renew":"\u7EED\u8D39","member.freeName":"\u514D\u8D39\u7248","member.freeHint":"\u5347\u7EA7\u4F1A\u5458\u53EF\u4EE5\u83B7\u5F97\u66F4\u591A AI \u989D\u5EA6","member.expires":"{date} \u5230\u671F","member.noExpiry":"\u957F\u671F\u6709\u6548","member.loadFailed":"\u4F1A\u5458\u4FE1\u606F\u6682\u65F6\u62FF\u4E0D\u5230\u3002","session.title":"\u767B\u5F55","session.desc":"\u7BA1\u7406\u8FD9\u53F0\u8BBE\u5907\u4E0A\u7684\u767B\u5F55\u72B6\u6001","local.title":"\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u8D26\u53F7","local.desc":"\u5728\u767B\u5F55\u8FC7\u7684\u8D26\u53F7\u4E4B\u95F4\u5207\u6362","local.current":"\u5F53\u524D","local.switch":"\u5207\u6362","local.add":"\u767B\u5F55\u5176\u4ED6\u8D26\u53F7","local.signOut":"\u9000\u51FA\u767B\u5F55","local.empty":"\u8FD8\u6CA1\u6709\u4FDD\u5B58\u7684\u8D26\u53F7","local.loadFailed":"\u8D26\u53F7\u5217\u8868\u6682\u65F6\u8BFB\u4E0D\u5230","diag.title":"\u8BCA\u65AD\u6570\u636E","diag.desc":"\u5E2E\u52A9\u6211\u4EEC\u6392\u67E5\u95EE\u9898\u3001\u6539\u8FDB Forsion\u3002\u9ED8\u8BA4\u5173\u95ED\u3002","diag.enable":"\u4E0A\u4F20\u8BCA\u65AD\u6570\u636E","diag.enableDesc":"\u6253\u5F00\u540E\uFF0C\u8FD9\u53F0\u7535\u8111\u4F1A\u5B9A\u671F\u4E0A\u4F20\u4E00\u4EFD Forsion \u4FE1\u606F\u5FEB\u7167\u5230\u4F60\u7684 Forsion \u8D26\u53F7\uFF0CForsion \u56E2\u961F\u53EF\u4EE5\u67E5\u770B\u3002\u591A\u4E45\u4E0A\u4F20\u4E00\u6B21\u7531 Forsion \u56E2\u961F\u8BBE\u5B9A\uFF0C\u9ED8\u8BA4\u6BCF\u5929\u4E00\u6B21\u3002\u968F\u65F6\u53EF\u4EE5\u5173\u95ED\u3002","diag.collected":"\u4F1A\u4E0A\u4F20","diag.item.app":"\u5E94\u7528\u4E0E\u7CFB\u7EDF\u7684\u7248\u672C\uFF0C\u8FD9\u53F0\u7535\u8111\u7684\u540D\u5B57\u3001\u5185\u5B58\u4E0E\u78C1\u76D8\u4F59\u91CF","diag.item.settings":"\u6A21\u578B\u4E0E\u8BED\u97F3\u7684\u9009\u62E9\uFF0C\u540E\u53F0 Agent \u4E0E\u63D2\u4EF6\u8BBE\u7F6E\u91CC\u7684\u5F00\u5173\u548C\u6570\u503C\uFF0CMCP \u670D\u52A1\u4E0E\u6D88\u606F\u901A\u9053\u7684\u540D\u5B57\u548C\u5F00\u5173","diag.item.agents":"Agent \u4E0E\u56E2\u961F\u7684\u914D\u7F6E\uFF08\u540D\u5B57\u3001\u6A21\u578B\u8FD9\u7C7B\u9009\u9879\uFF1B\u63CF\u8FF0\u4E0E\u63D0\u793A\u8BCD\u53EA\u8BB0\u957F\u5EA6\uFF0C\u6B63\u6587\u5F52\u4E0B\u9762\u300C\u4EBA\u8BBE\u3001\u8BB0\u5FC6\u4E0E\u8FDB\u5316\u8BB0\u5F55\u300D\u90A3\u4E2A\u5F00\u5173\uFF09","diag.item.plugins":"\u5DF2\u5B89\u88C5\u7684\u63D2\u4EF6\u3001\u6280\u80FD\u3001\u4E3B\u9898\u548C Space \u7684\u540D\u5B57\u4E0E\u7248\u672C","diag.item.runs":"\u6700\u8FD1 7 \u5929\u7684\u8FD0\u884C\u8BB0\u5F55\uFF1A\u6BCF\u6B21\u8FD0\u884C\u7684\u72B6\u6001\u548C\u62A5\u9519\u539F\u56E0\uFF0C\u6A21\u578B\u8C03\u7528\u4E0E\u5DE5\u5177\u7684\u7528\u91CF\u3001\u8017\u65F6\uFF08\u4E0D\u5E26\u5BF9\u8BDD\u5185\u5BB9\u548C\u5DE5\u5177\u8BFB\u5199\u7684\u5185\u5BB9\uFF09\uFF0C\u4EE5\u53CA\u5F15\u64CE\u6700\u8FD1\u7684\u8FD0\u884C\u65E5\u5FD7","diag.notCollected":"\u4E0D\u4F1A\u4E0A\u4F20\uFF1A\u4FDD\u5B58\u5728\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u767B\u5F55\u51ED\u636E\u4E0E API \u5BC6\u94A5\u3001\u7B14\u8BB0\u6587\u4EF6\u3001Agent \u7684\u8D44\u6599\u5E93\u3001\u63D2\u4EF6\u6570\u636E\u3002","diag.sessions":"\u5305\u542B\u4F1A\u8BDD\u5185\u5BB9","diag.sessionsDesc":"\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u5BF9\u8BDD\uFF1A\u4F60\u548C Agent \u7684\u6D88\u606F\u6587\u5B57\u3001Agent \u7684\u601D\u8003\u8FC7\u7A0B\u548C\u7528\u5230\u7684\u5DE5\u5177\u540D\uFF0C\u5305\u62EC\u56E2\u961F\u6210\u5458\u3001\u8BA8\u8BBA\u3001\u59D4\u6D3E\u5728\u540E\u53F0\u505A\u7684\u90A3\u90E8\u5206\u3002\u6BCF\u6B21\u53EA\u4E0A\u4F20\u8FD8\u6CA1\u4E0A\u4F20\u8FC7\u7684\u90E8\u5206\uFF0C\u6700\u591A\u5F80\u524D 7 \u5929\u3002\u5DE5\u5177\u8BFB\u5199\u7684\u5185\u5BB9\u548C\u9644\u4EF6\u672C\u8EAB\u4E0D\u5E26\uFF1B\u6D88\u606F\u91CC\u51FA\u73B0\u7684\u6587\u4EF6\u540D\u3001Agent \u5728\u56DE\u590D\u91CC\u590D\u8FF0\u7684\u7B14\u8BB0\u6216\u6587\u4EF6\u5185\u5BB9\u4F1A\u5728\u5176\u4E2D\u3002\u5E38\u89C1\u683C\u5F0F\u7684\u5BC6\u94A5\u4F1A\u906E\u6389\uFF0C\u5176\u4F59\u539F\u6837\u4E0A\u4F20\u3002\u4E0D\u60F3\u63D0\u4F9B\u53EF\u4EE5\u5148\u5173\u6389\u518D\u6253\u5F00\u4E0A\u4F20\u3002","diag.memory":"\u5305\u542B Agent \u7684\u4EBA\u8BBE\u3001\u8BB0\u5FC6\u4E0E\u8FDB\u5316\u8BB0\u5F55","diag.memoryDesc":"\u6BCF\u4E2A Agent \u7684\u4EBA\u8BBE\uFF08\u5305\u62EC\u914D\u7F6E\u91CC\u7684\u63CF\u8FF0\u548C\u5F00\u53D1\u8005\u6307\u4EE4\uFF09\uFF0C\u548C\u5B83\u81EA\u5DF1\u6512\u4E0B\u6765\u7684\u5185\u5BB9\uFF1A\u8BB0\u5FC6\u548C\u8FD8\u6CA1\u6574\u7406\u7684\u8BB0\u5FC6\u5019\u9009\u3001\u8FDB\u5316\u8BB0\u5F55\u3001\u5199\u7ED9\u4F60\u7684\u534F\u4F5C\u8BF4\u660E\u3001\u6700\u8FD1 7 \u5929\u7684\u65E5\u5FD7\u548C\u8BB0\u5FC6\u6574\u7406\u8BB0\u5F55\uFF0C\u4EE5\u53CA\u9879\u76EE\u8BB0\u5FC6\uFF1B\u8FD8\u6709\u56E2\u961F\u7684\u8BBE\u5B9A\u548C\u4F60\u7684\u7528\u6237\u753B\u50CF\u3002\u8FD9\u4E9B\u662F\u4F60\u7ED9 Agent \u548C\u56E2\u961F\u5199\u7684\u8BBE\u5B9A\uFF0C\u548C Agent \u4ECE\u5BF9\u8BDD\u91CC\u8BB0\u4E0B\u7684\u5173\u4E8E\u4F60\u548C\u4F60\u7684\u5DE5\u4F5C\u7684\u4E8B\u5B9E\uFF0C\u6BCF\u6B21\u4E0A\u4F20\u5B83\u4EEC\u5F53\u524D\u7684\u5185\u5BB9\uFF08\u5F88\u957F\u7684\u4F1A\u622A\u65AD\uFF09\u3002\u5E38\u89C1\u683C\u5F0F\u7684\u5BC6\u94A5\u4F1A\u906E\u6389\uFF0C\u5176\u4F59\u539F\u6837\u4E0A\u4F20\u3002\u4E0D\u60F3\u63D0\u4F9B\u53EF\u4EE5\u5148\u5173\u6389\u518D\u6253\u5F00\u4E0A\u4F20\u3002","diag.activity":"\u5305\u542B\u6D3B\u52A8\u65E5\u5FD7","diag.activityDesc":"\u6D3B\u52A8\u8BB0\u5F55\u91CC\u6709\u5BF9\u8BDD\u5F00\u5934\u7684\u51E0\u5341\u4E2A\u5B57\u548C\u7B14\u8BB0\u6587\u4EF6\u540D\u3002\u6BCF\u6B21\u53EA\u4E0A\u4F20\u8FD8\u6CA1\u4E0A\u4F20\u8FC7\u7684\u90E8\u5206\uFF0C\u6700\u591A\u5F80\u524D 7 \u5929\u3002\u4E0D\u60F3\u63D0\u4F9B\u53EF\u4EE5\u5148\u5173\u6389\u518D\u6253\u5F00\u4E0A\u4F20\u3002","diag.last":"\u4E0A\u6B21\u4E0A\u4F20\uFF1A{time}","diag.noUpload":"\u8FD8\u6CA1\u6709\u4E0A\u4F20\u8FC7","diag.freq.hour":"\u6BCF\u5C0F\u65F6\u4E00\u6B21","diag.freq.hours":"\u6BCF {n} \u5C0F\u65F6\u4E00\u6B21","diag.freq.day":"\u6BCF\u5929\u4E00\u6B21","diag.freq.days":"\u6BCF {n} \u5929\u4E00\u6B21","diag.freq.manual":"Forsion \u56E2\u961F\u9700\u8981\u65F6\u624D\u91C7\u96C6","diag.retention":"\u4E91\u7AEF\u4FDD\u7559\u8FD9\u53F0\u7535\u8111\u6700\u8FD1 {n} \u5929\u7684\u5FEB\u7167\u3002\u5173\u95ED\u540E\u4E0D\u518D\u4E0A\u4F20\uFF1B\u5DF2\u4E0A\u4F20\u7684\u5FEB\u7167\u4ECD\u7559\u5728\u4E91\u7AEF\uFF0C\u9700\u8981\u5220\u9664\u53EF\u4EE5\u5728\u300C\u53CD\u9988\u300D\u91CC\u544A\u8BC9\u6211\u4EEC\u3002","diag.uploadNow":"\u7ACB\u5373\u4E0A\u4F20","diag.uploaded":"\u5DF2\u4E0A\u4F20","diag.failed":"\u4E0A\u4F20\u5931\u8D25\uFF1A{reason}","quota.ai.title":"AI \u989D\u5EA6","quota.ai.desc":"\u4ECA\u65E5\u548C\u672C\u5468\u5404\u8FD8\u5269\u591A\u5C11\uFF1B\u7528\u5B8C\u540E\u53EF\u4EE5\u7528\u989D\u5EA6\u91CD\u7F6E\u5361\u6062\u590D","quota.resetDaily":"\u6BCF\u5929 0:00 \u91CD\u7F6E\uFF08\u5317\u4EAC\u65F6\u95F4\uFF09","quota.resetWeekly":"{date} 0:00 \u91CD\u7F6E\uFF08\u5317\u4EAC\u65F6\u95F4\uFF09","card.title":"\u989D\u5EA6\u91CD\u7F6E\u5361","card.desc":"\u628A\u4ECA\u65E5\u548C\u672C\u5468\u7684 AI \u989D\u5EA6\u6062\u590D\u5230 100%","card.owned":"\u6301\u6709 {n} \u5F20","card.use":"\u4F7F\u7528\u4E00\u5F20","card.useConfirm":"\u786E\u8BA4\u4F7F\u7528","card.used":"\u5DF2\u4F7F\u7528 1 \u5F20\u989D\u5EA6\u91CD\u7F6E\u5361","card.left":"\u8FD8\u5269 {n} \u5F20","card.noneHint":"\u6CA1\u6709\u989D\u5EA6\u91CD\u7F6E\u5361\u4E86\uFF0C\u53EF\u4EE5\u7528\u79EF\u5206\u5151\u6362\u3002","card.exchange":"\u7528\u79EF\u5206\u5151\u6362","card.price":"\u6BCF\u5F20 {price} \u79EF\u5206\uFF0C\u4E00\u6B21 1\u201350 \u5F20","card.count":"\u5151\u6362\u5F20\u6570","card.cost":"\u82B1\u8D39 {cost} \u79EF\u5206","card.countHint":"\u586B 1\u201350","card.exchangeButton":"\u5151\u6362","card.exchangeConfirm":"\u786E\u8BA4\u82B1\u8D39 {cost} \u79EF\u5206","card.exchanged":"\u5DF2\u5151\u6362 {n} \u5F20\u989D\u5EA6\u91CD\u7F6E\u5361","points.title":"\u79EF\u5206","points.desc":"\u79EF\u5206\u53EF\u4EE5\u5151\u6362\u989D\u5EA6\u91CD\u7F6E\u5361","points.balance":"\u4F59\u989D","points.balanceFailed":"\u4F59\u989D\u6682\u65F6\u62FF\u4E0D\u5230","points.recharge":"\u5145\u503C\u79EF\u5206","bg.title":"\u540E\u53F0\u989D\u5EA6","bg.desc":"Muse \u4E0E\u81EA\u52A8\u5316\u4F7F\u7528\uFF0C\u548C AI \u989D\u5EA6\u5206\u5F00\u8BA1\u7B97","bg.autoMain":"\u7528\u5B8C\u540E\u6539\u7528 AI \u989D\u5EA6\u7EE7\u7EED","bg.autoMainDesc":"\u5173\u7740\u65F6\uFF0C\u540E\u53F0\u989D\u5EA6\u7528\u5B8C\u540E Muse \u4E0E\u81EA\u52A8\u5316\u4F1A\u6682\u505C","bg.convert":"\u4ECE AI \u989D\u5EA6\u8F6C\u5165","bg.convertDesc":"\u6309 AI \u989D\u5EA6\u4E0A\u9650\u7684\u6BD4\u4F8B\u8F6C\u5165\uFF0C\u672C\u5468\u671F\u5185\u6709\u6548","bg.convertConfirm":"\u786E\u8BA4\u8F6C\u5165 {pct}%","bg.converted":"\u5DF2\u4ECE AI \u989D\u5EA6\u8F6C\u5165 {pct}%","invite.title":"\u9080\u8BF7\u4E0E\u5151\u6362","invite.desc":"\u9080\u8BF7\u597D\u53CB\u6CE8\u518C\uFF0C\u6216\u5151\u6362\u4F60\u6536\u5230\u7684\u7801","invite.myCode":"\u6211\u7684\u9080\u8BF7\u7801","invite.count":"\u5DF2\u9080\u8BF7 {n} \u4EBA","invite.copyCode":"\u590D\u5236\u9080\u8BF7\u7801","invite.copyLink":"\u590D\u5236\u9080\u8BF7\u94FE\u63A5","invite.loadFailed":"\u9080\u8BF7\u7801\u6682\u65F6\u62FF\u4E0D\u5230","invite.claim":"\u586B\u5199\u9080\u8BF7\u7801","invite.claimDesc":"\u6CE8\u518C\u540E 7 \u5929\u5185\uFF0C\u53EF\u4EE5\u8865\u586B\u597D\u53CB\u7684\u9080\u8BF7\u7801","invite.claimPlaceholder":"\u597D\u53CB\u7684\u9080\u8BF7\u7801","invite.claimSubmit":"\u63D0\u4EA4","invite.claimed":"\u9080\u8BF7\u7801\u5DF2\u751F\u6548","redeem.title":"\u5151\u6362\u7801","redeem.desc":"\u5151\u6362\u79EF\u5206\u3001\u4F1A\u5458\u6216\u5176\u4ED6\u5956\u52B1","redeem.placeholder":"\u8F93\u5165\u5151\u6362\u7801","redeem.submit":"\u5151\u6362","redeem.success":"\u5151\u6362\u6210\u529F","redeem.successWith":"\u5151\u6362\u6210\u529F\uFF1A{what}","redeem.gotPoints":"{n} \u79EF\u5206","redeem.gotMembership":"\u4F1A\u5458","sec.methods.title":"\u767B\u5F55\u65B9\u5F0F","sec.methods.desc":"\u624B\u673A\u548C\u90AE\u7BB1\u53EF\u4EE5\u7528\u6765\u767B\u5F55\u3001\u627E\u56DE\u5BC6\u7801","sec.bind":"\u7ED1\u5B9A","sec.change":"\u66F4\u6362","sec.phone":"\u624B\u673A\u53F7","sec.email":"\u90AE\u7BB1\u5730\u5740","sec.newPhone":"\u65B0\u624B\u673A\u53F7","sec.newEmail":"\u65B0\u90AE\u7BB1\u5730\u5740","sec.phonePlaceholder":"\u4E2D\u56FD\u5927\u9646\u53F7\u7801\u76F4\u63A5\u586B\uFF0C\u5176\u4ED6\u5730\u533A\u5E26 +\u533A\u53F7","sec.emailPlaceholder":"name@example.com","sec.code":"\u9A8C\u8BC1\u7801","sec.codePlaceholder":"\u8F93\u5165\u9A8C\u8BC1\u7801","sec.sendCode":"\u53D1\u9001\u9A8C\u8BC1\u7801","sec.resendIn":"{s} \u79D2\u540E\u91CD\u53D1","sec.codeSent":"\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001","sec.bindSubmit":"\u786E\u8BA4\u7ED1\u5B9A","sec.phoneBound":"\u624B\u673A\u5DF2\u7ED1\u5B9A","sec.emailBound":"\u90AE\u7BB1\u5DF2\u7ED1\u5B9A","sec.devices.title":"\u767B\u5F55\u8BBE\u5907","sec.devices.desc":"\u62C5\u5FC3\u8D26\u53F7\u88AB\u522B\u4EBA\u7528\u4E86\uFF0C\u53EF\u4EE5\u8BA9\u6240\u6709\u8BBE\u5907\u91CD\u65B0\u767B\u5F55","sec.logoutAll":"\u9000\u51FA\u6240\u6709\u8BBE\u5907","sec.logoutAllDesc":"\u5305\u62EC\u8FD9\u53F0\u8BBE\u5907\uFF0C\u6240\u6709\u8BBE\u5907\u90FD\u8981\u91CD\u65B0\u767B\u5F55","sec.logoutAllConfirm":"\u786E\u8BA4\u9000\u51FA\u6240\u6709\u8BBE\u5907","sec.logoutAllDone":"\u5DF2\u9000\u51FA\u6240\u6709\u8BBE\u5907","pw.title":"\u5BC6\u7801","pw.desc":"{min}\u2013{max} \u4F4D\uFF0C\u542B\u5C0F\u5199\u5B57\u6BCD\u3001\u5927\u5199\u5B57\u6BCD\u548C\u7279\u6B8A\u5B57\u7B26\uFF0C\u4E0D\u80FD\u6709\u7A7A\u683C","pw.change":"\u4FEE\u6539\u5BC6\u7801","pw.modeLabel":"\u4FEE\u6539\u65B9\u5F0F","pw.mode.current":"\u7528\u5F53\u524D\u5BC6\u7801","pw.mode.code":"\u7528\u9A8C\u8BC1\u7801","pw.current":"\u5F53\u524D\u5BC6\u7801","pw.currentRequired":"\u8BF7\u8F93\u5165\u5F53\u524D\u5BC6\u7801","pw.new":"\u65B0\u5BC6\u7801","pw.confirm":"\u518D\u8F93\u4E00\u6B21\u65B0\u5BC6\u7801","pw.mismatch":"\u4E24\u6B21\u8F93\u5165\u7684\u65B0\u5BC6\u7801\u4E0D\u4E00\u81F4","pw.submit":"\u4FEE\u6539\u5BC6\u7801","pw.submitReset":"\u8BBE\u7F6E\u65B0\u5BC6\u7801","pw.changed":"\u5BC6\u7801\u5DF2\u66F4\u65B0","pw.noPasswordYet":"\u8FD9\u4E2A\u8D26\u53F7\u8FD8\u6CA1\u6709\u8BBE\u7F6E\u5BC6\u7801\uFF0C\u8BF7\u6539\u7528\u9A8C\u8BC1\u7801\u8BBE\u7F6E\u3002","pw.codeNeedsContact":"\u7ED1\u5B9A\u624B\u673A\u6216\u90AE\u7BB1\u540E\uFF0C\u624D\u80FD\u7528\u9A8C\u8BC1\u7801\u8BBE\u7F6E\u5BC6\u7801\u3002","pw.via":"\u9A8C\u8BC1\u7801\u53D1\u5230","pw.codeTo":"\u9A8C\u8BC1\u7801\u4F1A\u53D1\u5230 {target}","pw.rulesLabel":"\u5BC6\u7801\u89C4\u5219","pw.req.length":"{min}\u2013{max} \u4F4D","pw.req.lower":"\u542B\u5C0F\u5199\u5B57\u6BCD","pw.req.upper":"\u542B\u5927\u5199\u5B57\u6BCD","pw.req.special":"\u542B\u7279\u6B8A\u5B57\u7B26","pw.req.space":"\u4E0D\u542B\u7A7A\u683C","pw.rule.format":"\u5BC6\u7801\u683C\u5F0F\u4E0D\u6B63\u786E","pw.rule.min":"\u5BC6\u7801\u81F3\u5C11 8 \u4F4D","pw.rule.max":"\u5BC6\u7801\u4E0D\u80FD\u8D85\u8FC7 64 \u4F4D","pw.rule.space":"\u5BC6\u7801\u4E0D\u80FD\u5305\u542B\u7A7A\u683C","pw.rule.lower":"\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5C0F\u5199\u5B57\u6BCD","pw.rule.upper":"\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5927\u5199\u5B57\u6BCD","pw.rule.special":"\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u7279\u6B8A\u5B57\u7B26","del.title":"\u6CE8\u9500\u8D26\u53F7","del.desc":"\u6C38\u4E45\u5220\u9664\u8D26\u53F7\u548C\u5168\u90E8\u6570\u636E\uFF0C\u65E0\u6CD5\u6062\u590D","del.start":"\u6CE8\u9500\u8D26\u53F7","del.warn":"\u6CE8\u9500\u540E\uFF0C\u8D26\u53F7\u3001\u79EF\u5206\u3001\u4F1A\u5458\u3001\u4E91\u7A7A\u95F4\u548C\u5168\u90E8\u6570\u636E\u90FD\u4F1A\u88AB\u5220\u9664\uFF0C\u65E0\u6CD5\u627E\u56DE\u3002","del.methodLabel":"\u9A8C\u8BC1\u65B9\u5F0F","del.byCode":"\u9A8C\u8BC1\u7801","del.byPassword":"\u5BC6\u7801","del.codeLabel":"\u53D1\u5230 {target} \u7684\u9A8C\u8BC1\u7801","del.passwordLabel":"\u8D26\u53F7\u5BC6\u7801","del.submit":"\u6CE8\u9500\u8D26\u53F7","del.confirm":"\u786E\u8BA4\u6C38\u4E45\u6CE8\u9500","del.done":"\u8D26\u53F7\u5DF2\u6CE8\u9500","usage.overview.title":"\u7528\u91CF\u6982\u89C8","usage.overview.desc":"\u6240\u9009\u65F6\u95F4\u6BB5\u5185\u7684\u8BF7\u6C42\u4E0E AI \u989D\u5EA6\u6D88\u8017","usage.range":"\u65F6\u95F4\u8303\u56F4","usage.days":"{n} \u5929","usage.requests":"\u8BF7\u6C42\u6B21\u6570","usage.successRate":"\u6210\u529F\u7387","usage.consumption":"AI \u989D\u5EA6\u6D88\u8017","usage.ofToday":"\u5360\u4ECA\u65E5\u989D\u5EA6\u4E0A\u9650","usage.unlimitedNote":"\u4F60\u7684 AI \u989D\u5EA6\u4E0D\u9650\uFF0C\u6D88\u8017\u65E0\u6CD5\u6298\u7B97\u6210\u767E\u5206\u6BD4\u3002","usage.noLimitNote":"\u4ECA\u65E5\u989D\u5EA6\u4E0A\u9650\u4E3A 0 \u6216\u6682\u65F6\u62FF\u4E0D\u5230\uFF0C\u6D88\u8017\u65E0\u6CD5\u6298\u7B97\u6210\u767E\u5206\u6BD4\u3002","usage.byModel.title":"\u6309\u6A21\u578B","usage.byModel.desc":"\u5404\u6A21\u578B\u7684\u8BF7\u6C42\u6570\u4E0E\u989D\u5EA6\u6D88\u8017","usage.byApp.title":"\u6309\u5E94\u7528","usage.byApp.desc":"\u5404\u5E94\u7528\u7684\u8BF7\u6C42\u6570\u4E0E\u989D\u5EA6\u6D88\u8017","usage.col.model":"\u6A21\u578B","usage.col.app":"\u5E94\u7528","usage.col.requests":"\u8BF7\u6C42","usage.col.consumption":"\u989D\u5EA6\u6D88\u8017","usage.empty":"\u8FD9\u6BB5\u65F6\u95F4\u6CA1\u6709\u7528\u91CF","usage.appUnknown":"\u5176\u4ED6","usage.recent.title":"\u6700\u8FD1\u6D88\u8017","usage.recent.desc":"\u6BCF\u6B21\u8C03\u7528\u5360\u4ECA\u65E5\u989D\u5EA6\u4E0A\u9650\u7684\u6BD4\u4F8B","usage.recentEmpty":"\u8FD8\u6CA1\u6709\u6D88\u8017\u8BB0\u5F55","usage.failed":"\u5931\u8D25","usage.shown":"\u5DF2\u663E\u793A {shown} / {total} \u6761","fb.list.title":"\u6211\u7684\u53CD\u9988","fb.list.desc":"\u63D0\u4EA4\u8FC7\u7684\u95EE\u9898\u548C\u5EFA\u8BAE\uFF0C\u56DE\u590D\u4F1A\u663E\u793A\u5728\u8FD9\u91CC","fb.new":"\u65B0\u5EFA\u53CD\u9988","fb.empty":"\u8FD8\u6CA1\u6709\u53CD\u9988","fb.untitled":"\u672A\u547D\u540D\u53CD\u9988","fb.unread":"\u6709\u65B0\u56DE\u590D","fb.shown":"\u5DF2\u663E\u793A {n} \u6761","fb.submitted":"\u5DF2\u63D0\u4EA4\uFF0C\u6211\u4EEC\u4F1A\u5C3D\u5FEB\u56DE\u590D","fb.descLabel":"\u63CF\u8FF0\u95EE\u9898\u6216\u5EFA\u8BAE","fb.descPlaceholder":"\u53D1\u751F\u4E86\u4EC0\u4E48\uFF0C\u4F60\u671F\u671B\u600E\u6837\u2026\u2026","fb.imagesHint":"\u6700\u591A\u9644 {n} \u5F20\u622A\u56FE\uFF08\u6BCF\u5F20\u4E0D\u8D85\u8FC7 5MB\uFF09\uFF0C\u53EF\u4EE5\u7C98\u8D34\u6216\u62D6\u8FDB\u6765\u3002","fb.addImages":"\u6DFB\u52A0\u622A\u56FE","fb.removeImage":"\u79FB\u9664\u8FD9\u5F20\u56FE","fb.submit":"\u63D0\u4EA4","fb.back":"\u8FD4\u56DE\u5217\u8868","fb.you":"\u4F60","fb.support":"Forsion \u56E2\u961F","fb.attachment":"\u9644\u4EF6","fb.imagePreview":"\u67E5\u770B\u5927\u56FE","fb.closedNote":"\u8FD9\u4E2A\u5DE5\u5355\u5DF2\u5173\u95ED\uFF0C\u4E0D\u80FD\u518D\u56DE\u590D\u3002\u6709\u65B0\u95EE\u9898\u8BF7\u65B0\u5EFA\u53CD\u9988\u3002","fb.replyPlaceholder":"\u56DE\u590D\u2026","fb.replySend":"\u53D1\u9001\u56DE\u590D","fb.replySent":"\u56DE\u590D\u5DF2\u53D1\u9001","fb.status.open":"\u5F85\u5904\u7406","fb.status.in_progress":"\u5904\u7406\u4E2D","fb.status.resolved":"\u5DF2\u89E3\u51B3","fb.status.closed":"\u5DF2\u5173\u95ED","err.accountGone":"\u8FD9\u4E2A\u8D26\u53F7\u5DF2\u9000\u51FA\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55","err.adminCannotDelete":"\u7BA1\u7406\u5458\u8D26\u53F7\u4E0D\u80FD\u81EA\u52A9\u6CE8\u9500","err.avatarInvalid":"\u8FD9\u5F20\u56FE\u7247\u8BFB\u4E0D\u51FA\u6765\uFF0C\u6362\u4E00\u5F20\u8BD5\u8BD5","err.avatarTooLarge":"\u56FE\u7247\u592A\u5927\u4E86\uFF0C\u6362\u4E00\u5F20\u5C0F\u4E00\u70B9\u7684","err.backgroundUnavailable":"\u540E\u53F0\u989D\u5EA6\u6682\u65F6\u4E0D\u53EF\u7528","err.captcha":"\u9700\u8981\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u4EBA\u673A\u9A8C\u8BC1","err.codeCooldown":"\u53D1\u9001\u592A\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.codeInvalid":"\u9A8C\u8BC1\u7801\u4E0D\u5BF9\u6216\u5DF2\u8FC7\u671F","err.codeRequired":"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801","err.codeSendFailed":"\u9A8C\u8BC1\u7801\u6CA1\u53D1\u51FA\u53BB\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.currentPasswordWrong":"\u5F53\u524D\u5BC6\u7801\u4E0D\u5BF9","err.deleteTargetInvalid":"\u9A8C\u8BC1\u7801\u53EA\u80FD\u53D1\u5230\u8D26\u53F7\u7ED1\u5B9A\u7684\u624B\u673A\u6216\u90AE\u7BB1","err.deleteVerifyFailed":"\u9A8C\u8BC1\u6CA1\u901A\u8FC7\uFF0C\u8D26\u53F7\u6CA1\u6709\u6CE8\u9500","err.emailInUse":"\u8FD9\u4E2A\u90AE\u7BB1\u5DF2\u88AB\u5176\u4ED6\u8D26\u53F7\u4F7F\u7528","err.emailInvalid":"\u90AE\u7BB1\u683C\u5F0F\u4E0D\u5BF9","err.featureDisabled":"\u8FD9\u9879\u529F\u80FD\u6682\u65F6\u5173\u95ED\u4E86","err.feedbackEmpty":"\u8BF7\u5199\u4E00\u4E0B\u95EE\u9898\u6216\u5EFA\u8BAE","err.feedbackTooLong":"\u63CF\u8FF0\u592A\u957F\u4E86\uFF08\u6700\u591A 10000 \u5B57\uFF09","err.generic":"\u64CD\u4F5C\u6CA1\u6709\u6210\u529F\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.imageRead":"\u56FE\u7247\u8BFB\u4E0D\u51FA\u6765","err.imageTooLarge":"\u6BCF\u5F20\u56FE\u7247\u4E0D\u80FD\u8D85\u8FC7 5MB","err.imageType":"\u53EA\u80FD\u6DFB\u52A0\u56FE\u7247","err.insufficientMainQuota":"AI \u989D\u5EA6\u5DF2\u7528\u5B8C\uFF0C\u6CA1\u6709\u53EF\u8F6C\u5165\u7684\u989D\u5EA6","err.insufficientPoints":"\u79EF\u5206\u4E0D\u591F","err.priceChanged":"\u91CD\u7F6E\u5361\u5355\u4EF7\u521A\u521A\u8C03\u6574\u8FC7\uFF0C\u8BF7\u770B\u4E00\u4E0B\u65B0\u4EF7\u683C\uFF0C\u518D\u786E\u8BA4\u5151\u6362\u3002","err.invalidCount":"\u5F20\u6570\u8981\u5728 1\u201350 \u4E4B\u95F4","err.invalidInviteCode":"\u9080\u8BF7\u7801\u65E0\u6548\u6216\u5DF2\u5931\u6548","err.inviteAlreadyUsed":"\u4F60\u5DF2\u7ECF\u7528\u8FC7\u9080\u8BF7\u7801\u4E86","err.inviteEmpty":"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801","err.inviteOwnCode":"\u4E0D\u80FD\u586B\u81EA\u5DF1\u7684\u9080\u8BF7\u7801","err.inviteWindowExpired":"\u5DF2\u8D85\u8FC7\u6CE8\u518C\u540E 7 \u5929\u7684\u8865\u586B\u671F","err.loginCodeExpired":"\u767B\u5F55\u7801\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55","err.loginInProgress":"\u6B63\u5728\u767B\u5F55\u4E2D","err.loginTimeout":"\u767B\u5F55\u8D85\u65F6\uFF0C\u8BF7\u91CD\u8BD5","err.loginUnsupported":"\u8FD9\u4E2A\u4E91\u7AEF\u4E0D\u652F\u6301\u684C\u9762\u7AEF\u767B\u5F55","err.network":"\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u540E\u91CD\u8BD5","err.noCloudUrl":"\u8BF7\u5148\u5728\u300C\u8FDE\u63A5\u300D\u91CC\u586B\u5199\u4E91\u7AEF\u5730\u5740","err.noResetCard":"\u6CA1\u6709\u53EF\u7528\u7684\u989D\u5EA6\u91CD\u7F6E\u5361","err.openFailed":"\u6CA1\u80FD\u6253\u5F00\u6D4F\u89C8\u5668","err.passwordRequired":"\u8BF7\u586B\u5199\u5F53\u524D\u5BC6\u7801\u548C\u65B0\u5BC6\u7801","err.phoneInUse":"\u8FD9\u4E2A\u624B\u673A\u53F7\u5DF2\u88AB\u5176\u4ED6\u8D26\u53F7\u4F7F\u7528","err.phoneInvalid":"\u624B\u673A\u53F7\u683C\u5F0F\u4E0D\u5BF9\uFF08\u5176\u4ED6\u5730\u533A\u8BF7\u5E26 +\u533A\u53F7\uFF09","err.redeemEmpty":"\u8BF7\u8F93\u5165\u5151\u6362\u7801","err.redeemExpired":"\u5151\u6362\u7801\u5DF2\u8FC7\u671F","err.redeemInactive":"\u5151\u6362\u7801\u5DF2\u505C\u7528","err.redeemNotFound":"\u5151\u6362\u7801\u4E0D\u5B58\u5728","err.redeemUsedUp":"\u5151\u6362\u7801\u5DF2\u88AB\u7528\u5B8C","err.redeemUserLimit":"\u4F60\u5DF2\u7ECF\u5151\u6362\u8FC7\u8FD9\u4E2A\u7801\u4E86","err.replyEmpty":"\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9","err.replyTooLong":"\u56DE\u590D\u592A\u957F\u4E86\uFF08\u6700\u591A 10000 \u5B57\uFF09","err.server":"\u670D\u52A1\u5668\u51FA\u9519\u4E86\uFF08{status}\uFF09\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.session":"\u767B\u5F55\u72B6\u6001\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55","err.signedOut":"\u8BF7\u5148\u767B\u5F55 Forsion","err.targetInvalid":"\u624B\u673A\u53F7\u6216\u90AE\u7BB1\u683C\u5F0F\u4E0D\u5BF9","err.ticketNotFound":"\u8FD9\u6761\u53CD\u9988\u4E0D\u5B58\u5728\u6216\u5DF2\u5220\u9664","err.webPageGone":"\u8FD9\u4E2A\u7F51\u9875\u4E0D\u5B58\u5728\u6216\u5DF2\u4E0B\u7EBF","err.listingGone":"\u8FD9\u4E2A\u7F51\u9875\u6CA1\u6709\u4E0A\u67B6\u7533\u8BF7","err.listingSummary":"\u8BF7\u586B\u5199\u5546\u5E97\u7B80\u4ECB\uFF08300 \u5B57\u4EE5\u5185\uFF09","err.tooFrequent":"\u64CD\u4F5C\u592A\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.tooManyImages":"\u6700\u591A\u6DFB\u52A0 5 \u5F20\u56FE\u7247","err.unavailable":"\u8FD9\u4E2A\u7248\u672C\u8FD8\u4E0D\u652F\u6301\u8FD9\u4E2A\u64CD\u4F5C\uFF0C\u8BF7\u66F4\u65B0 Forsion","profile.unsupported":"\u8FD9\u4E2A\u670D\u52A1\u7AEF\u8FD8\u6CA1\u6709\u4E2A\u4EBA\u4E3B\u9875\u529F\u80FD","profile.state.private":"\u4EC5\u81EA\u5DF1\u53EF\u89C1","profile.state.public":"\u5DF2\u516C\u5F00","profile.state.privateDesc":"\u516C\u5F00\u540E\uFF0C\u4EFB\u4F55\u4EBA\u6253\u5F00\u5730\u5740\u90FD\u80FD\u770B\u5230\u4F60\u7684\u4E3B\u9875\uFF0C\u4E0D\u9700\u8981\u767B\u5F55","profile.state.publicDesc":"\u4EFB\u4F55\u4EBA\u6253\u5F00\u516C\u5F00\u5730\u5740\u90FD\u80FD\u770B\u5230\uFF0C\u4E0D\u9700\u8981\u767B\u5F55","profile.decorate":"\u88C5\u9970","profile.publish":"\u516C\u5F00\u4E3B\u9875","profile.makePrivate":"\u8BBE\u4E3A\u79C1\u6709","profile.address":"\u516C\u5F00\u5730\u5740","profile.copyLink":"\u590D\u5236\u94FE\u63A5","profile.openPublic":"\u67E5\u770B\u516C\u5F00\u9875","profile.nowPublic":"\u4E3B\u9875\u5DF2\u516C\u5F00","profile.nowPrivate":"\u4E3B\u9875\u5DF2\u8BBE\u4E3A\u79C1\u6709\uFF0C\u516C\u5F00\u5730\u5740\u4E0D\u518D\u80FD\u6253\u5F00","profile.bio":"\u7B80\u4ECB","profile.bioPlaceholder":"\u5199\u4E00\u53E5\u7B80\u4ECB","profile.linkAdd":"\u6DFB\u52A0\u94FE\u63A5","profile.linkRemove":"\u79FB\u9664\u94FE\u63A5","profile.linkInvalid":"\u94FE\u63A5\u8981\u4EE5 http:// \u6216 https:// \u5F00\u5934\uFF0C\u6216\u76F4\u63A5\u5199\u57DF\u540D","profile.joined":"{date}\u52A0\u5165","profile.stat.tokens":"\u7D2F\u8BA1 Token","profile.stat.activeDays":"\u6D3B\u8DC3\u5929\u6570","profile.stat.longest":"\u6700\u957F\u8FDE\u7EED","profile.stat.current":"\u5F53\u524D\u8FDE\u7EED","profile.stat.installs":"\u4F5C\u54C1\u88AB\u5B89\u88C5","profile.unit.days":"\u5929","profile.works":"\u7CBE\u9009\u4F5C\u54C1","profile.worksPick":"\u9009\u62E9","profile.worksEmpty":"\u8FD8\u6CA1\u6709\u4E0A\u67B6\u7684\u4F5C\u54C1\u3002\u4E0A\u67B6\u5230\u5546\u5E97\u6216\u53D1\u5E03\u6210\u7F51\u9875\u5E94\u7528\u540E\uFF0C\u53EF\u4EE5\u653E\u5230\u8FD9\u91CC\u3002","profile.worksNone":"\u8FD8\u6CA1\u6709\u53EF\u4EE5\u653E\u4E0A\u4E3B\u9875\u7684\u4F5C\u54C1\u3002\u4F5C\u54C1\u4E0A\u67B6\u5230\u5546\u5E97\u3001\u6216\u53D1\u5E03\u6210\u7F51\u9875\u5E94\u7528\u540E\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002","profile.worksPicked":"\u5DF2\u9009 {n} / {max} \u4EF6","profile.worksAuto":"\u4E0D\u9009\u7684\u8BDD\uFF0C\u6309\u5B89\u88C5\u91CF\u81EA\u52A8\u53D6\u524D\u51E0\u4EF6","profile.goSubmit":"\u53BB\u6295\u7A3F","profile.workInstalls":"{n} \u6B21\u5B89\u88C5","profile.workVisits":"{n} \u6B21\u8BBF\u95EE","profile.work.skill":"\u6280\u80FD","profile.work.agent":"Agent","profile.work.plugin":"\u63D2\u4EF6","profile.work.space":"Space","profile.work.theme":"\u4E3B\u9898","profile.work.note":"\u7B14\u8BB0\u63D2\u4EF6","profile.work.webapp":"\u7F51\u9875\u5E94\u7528","profile.activity":"\u6D3B\u52A8","profile.activityDays":"\u8FC7\u53BB\u4E00\u5E74\u6709 {n} \u5929\u5728\u7528","profile.less":"\u5C11","profile.more":"\u591A","profile.badges":"\u5FBD\u7AE0","profile.badgesEmpty":"\u8FD8\u6CA1\u6709\u5FBD\u7AE0\u3002\u8FDE\u7EED\u4F7F\u7528\u3001\u4E0A\u67B6\u4F5C\u54C1\u3001\u9080\u8BF7\u670B\u53CB\u90FD\u4F1A\u70B9\u4EAE\u3002","profile.badge.early":"\u65E9\u671F\u7528\u6237","profile.badge.streak":"\u8FDE\u7EED 30 \u5929","profile.badge.author":"\u4F5C\u8005","profile.badge.inviter":"\u9080\u8BF7\u8FBE\u4EBA","profile.badge.event":"\u6D3B\u52A8\u7EAA\u5FF5","profile.badgeSub.early":"{value} \u5E74\u52A0\u5165","profile.badgeSub.streak":"\u6700\u957F\u8FDE\u7EED {value} \u5929","profile.badgeSub.author":"\u4E0A\u67B6\u4E86 {value} \u4EF6\u4F5C\u54C1","profile.badgeSub.inviter":"\u9080\u8BF7\u4E86 {value} \u4F4D\u670B\u53CB","profile.badgeSub.event":"\u53C2\u52A0\u8FC7 Forsion \u7684\u6D3B\u52A8{value}","profile.insights":"\u6D1E\u5BDF","profile.insightsEmpty":"\u7528\u5F97\u8FD8\u4E0D\u591F\u591A\uFF0C\u8FC7\u51E0\u5929\u518D\u6765\u770B\u3002","profile.insightModel":"\u6700\u5E38\u7528\u6A21\u578B","profile.insightHours":"\u6700\u6D3B\u8DC3\u65F6\u6BB5","profile.deco.skin":"\u516C\u5F00\u9875\u7684\u914D\u8272","profile.deco.mode":"\u516C\u5F00\u9875\u7684\u660E\u6697","profile.deco.publicHint":"\u8FD9\u4E24\u9879\u53EA\u7BA1\u8BBF\u5BA2\u5728\u516C\u5F00\u9875\u4E0A\u770B\u5230\u7684\u3002\u5728\u8FD9\u91CC\uFF0C\u4E3B\u9875\u8DDF Forsion \u5F53\u524D\u7684\u4E3B\u9898\u8D70\u3002","profile.deco.cover":"\u5C01\u9762","profile.deco.frame":"\u5934\u50CF\u6846","profile.deco.modules":"\u6A21\u5757","profile.skin.cream":"\u7ECF\u5178","profile.skin.coral":"\u73CA\u745A","profile.skin.teal":"\u67D4\u9752","profile.skin.lavender":"\u85B0\u8863\u8349","profile.mode.auto":"\u8DDF\u968F\u8BBF\u5BA2","profile.mode.light":"\u6D45\u8272","profile.mode.dark":"\u6DF1\u8272","profile.cover.none":"\u65E0","profile.cover.mist":"\u6668\u96FE","profile.cover.contour":"\u7B49\u9AD8\u7EBF","profile.cover.dots":"\u7F51\u70B9","profile.frame.none":"\u65E0","profile.frame.ring":"\u7EC6\u73AF","profile.frame.pro":"\u4F1A\u5458\u73AF","profile.frameProHint":"\u4F1A\u5458\u73AF\u662F\u4ED8\u8D39\u4F1A\u5458\u4E13\u5C5E\u3002","profile.col.show":"\u663E\u793A","profile.col.public":"\u516C\u5F00","profile.moveUp":"\u4E0A\u79FB","profile.moveDown":"\u4E0B\u79FB","profile.modulesHint":"\u300C\u663E\u793A\u300D\u51B3\u5B9A\u4E3B\u9875\u4E0A\u6709\u6CA1\u6709\u8FD9\u4E00\u5757\uFF1B\u300C\u516C\u5F00\u300D\u51B3\u5B9A\u8BBF\u5BA2\u80FD\u4E0D\u80FD\u770B\u5230\uFF0C\u4E3B\u9875\u516C\u5F00\u540E\u624D\u8D77\u4F5C\u7528\u3002","profile.mod.stats":"\u6570\u636E","profile.mod.works":"\u7CBE\u9009\u4F5C\u54C1","profile.mod.activity":"\u6D3B\u52A8","profile.mod.badges":"\u5FBD\u7AE0","profile.mod.insights":"\u6D1E\u5BDF","profile.modDesc.stats":"\u7D2F\u8BA1 Token\u3001\u6D3B\u8DC3\u5929\u6570\u3001\u8FDE\u7EED\u5929\u6570\u3001\u4F5C\u54C1\u5B89\u88C5\u91CF","profile.modDesc.works":"\u4F60\u4E0A\u67B6\u7684\u4F5C\u54C1\uFF0C\u6700\u591A 6 \u4EF6","profile.modDesc.activity":"\u8FC7\u53BB\u4E00\u5E74\u6BCF\u5929\u7528\u6CA1\u7528\u3001\u7528\u5F97\u591A\u4E0D\u591A\uFF08\u53EA\u6709\u6DF1\u6D45\uFF0C\u6CA1\u6709\u5177\u4F53\u6570\u5B57\uFF09","profile.modDesc.badges":"\u52A0\u5165\u5E74\u4EFD\u3001\u8FDE\u7EED\u5929\u6570\u3001\u4E0A\u67B6\u3001\u9080\u8BF7\u3001\u6D3B\u52A8","profile.modDesc.insights":"\u6700\u5E38\u7528\u7684\u6A21\u578B\u3001\u6700\u6D3B\u8DC3\u7684\u65F6\u6BB5","profile.publishDesc":"\u516C\u5F00\u540E\uFF0C\u4EFB\u4F55\u4EBA\u6253\u5F00\u8FD9\u4E2A\u5730\u5740\u90FD\u80FD\u770B\u5230\u4F60\u7684\u4E3B\u9875\uFF0C\u4E0D\u9700\u8981\u767B\u5F55\u3002\u4E0B\u9762\u6BCF\u4E00\u5757\u53EF\u4EE5\u5355\u72EC\u51B3\u5B9A\u7ED9\u4E0D\u7ED9\u8BBF\u5BA2\u770B\u3002","profile.publishNever":"\u5934\u50CF\u3001\u6635\u79F0\u3001\u7528\u6237\u540D\u3001\u7B80\u4ECB\u548C\u94FE\u63A5\u4F1A\u4E00\u8D77\u516C\u5F00\u3002\u90AE\u7BB1\u3001\u624B\u673A\u53F7\u3001\u4F1A\u5458\u5230\u671F\u65E5\u3001\u79EF\u5206\u548C\u989D\u5EA6\u4E0D\u4F1A\u51FA\u73B0\u5728\u4E3B\u9875\u4E0A\u3002","profile.publishConfirm":"\u516C\u5F00","profile.blocked.machineUsername":"\u4F60\u73B0\u5728\u7684\u7528\u6237\u540D\u662F\u7CFB\u7EDF\u751F\u6210\u7684\uFF0C\u91CC\u9762\u5E26\u7740\u624B\u673A\u53F7\u6216\u90AE\u7BB1\u7684\u4E00\u90E8\u5206\uFF0C\u516C\u5F00\u4F1A\u628A\u5B83\u9732\u51FA\u53BB\u3002\u5148\u5230\u7F51\u9875\u4E2A\u4EBA\u4E2D\u5FC3\u7684\u300C\u8D26\u53F7\u300D\u9875\u6539\u4E00\u4E2A\u7528\u6237\u540D\uFF08\u6BCF\u4E2A\u8D26\u53F7\u53EF\u4EE5\u6539\u4E00\u6B21\uFF09\uFF0C\u518D\u56DE\u6765\u516C\u5F00\u3002","profile.blocked.publishBlocked":"\u8FD9\u4E2A\u4E3B\u9875\u5DF2\u88AB\u7BA1\u7406\u5458\u505C\u6B62\u516C\u5F00\u3002\u6709\u7591\u95EE\u8BF7\u901A\u8FC7\u300C\u53CD\u9988\u300D\u8054\u7CFB\u6211\u4EEC\u3002","profile.goRename":"\u53BB\u6539\u7528\u6237\u540D","profile.invalid":"\u8FD9\u9879\u5185\u5BB9\u6CA1\u80FD\u4FDD\u5B58\uFF0C\u8BF7\u68C0\u67E5\u540E\u518D\u8BD5","guide.title":"\u4F7F\u7528\u6307\u5357","guide.readOnly":"\u53EA\u8BFB","guide.more":"\u66F4\u591A","guide.unlockAll":"\u5168\u90E8\u89E3\u9501","guide.relock":"\u6539\u56DE\u6309\u7B49\u7EA7\u89E3\u9501","guide.reminders":"\u4F7F\u7528\u6307\u5357\u63D0\u9192","guide.spotlight":"\u73B0\u573A\u6307\u5F15","guide.spotStep":"\u7B2C {n} \u6B65\uFF0C\u5171 {total} \u6B65","guide.figure":"\u793A\u610F\u56FE","guide.openAchievements":"\u6253\u5F00\u6210\u5C31","guide.tasks":"\u672C\u7AE0\u4EFB\u52A1","guide.go":"\u5E26\u6211\u53BB","guide.desktopOnly":"\u5728\u7535\u8111\u4E0A\u505A","guide.taskDone":"\u5DF2\u5B8C\u6210","guide.askTangu":"\u95EE Tangu","guide.progress":"\u8FDB\u5EA6","guide.justUnlocked":"\u521A\u89E3\u9501","guide.lockedHint":"\u672A\u89E3\u9501","guide.whatsNew":"\u65B0\u7248\u672C \xB7 {version}","guide.level.lv1":"Lv.1 \u521D\u6765\u4E4D\u5230","guide.level.lv2":"Lv.2 \u719F\u95E8\u719F\u8DEF","guide.level.lv3":"Lv.3 \u5F97\u5FC3\u5E94\u624B","guide.level.lv4":"Lv.4 \u878D\u4F1A\u8D2F\u901A","guide.locked.title":"\u8FD9\u4E00\u7AE0\u8FD8\u6CA1\u89E3\u9501","guide.locked.body":"\u505A\u5B8C\u300C{level}\u300D\u7684\u4EFB\u52A1\u5C31\u80FD\u8BFB\u5168\u6587\u3002","guide.locked.left":"\u8FD8\u5DEE\u8FD9\u51E0\u9879\uFF1A","guide.locked.hint":"\u7528\u8FC7\u4E00\u9635\u4E86\uFF1F\u53F3\u4E0A\u89D2\u300C\xB7\xB7\xB7\u300D\u91CC\u53EF\u4EE5\u5168\u90E8\u89E3\u9501\u3002","guide.levelProgress":"\u672C\u7EA7\u8FDB\u5EA6 {done}/{total}","guide.next":"\u4E0B\u4E00\u7EA7","guide.allDone":"\u5168\u90E8\u5B8C\u6210","guide.allDoneBody":"\u6307\u5357\u91CC\u7684\u4EFB\u52A1\u90FD\u505A\u5B8C\u4E86\uFF0C\u968F\u65F6\u56DE\u6765\u7FFB\u770B\u3002","guide.review":"\u56DE\u770B","guide.ask.hint":"\u5BF9\u300C{chapter}\u300D\u6709\u7591\u95EE\uFF1F\u95EE Tangu \u4F1A\u5F00\u4E00\u4E2A\u5E26\u4E0A\u672C\u7AE0\u5185\u5BB9\u7684\u65B0\u5BF9\u8BDD\u3002","guide.ask.placeholder":"\u60F3\u95EE\u4EC0\u4E48\uFF1F","guide.ask.send":"\u5F00\u59CB\u5BF9\u8BDD","guide.ask.prompt":"\u6211\u6B63\u5728\u8BFB Forsion \u4F7F\u7528\u6307\u5357\u91CC\u300C{chapter}\u300D\u8FD9\u4E00\u7AE0\uFF0C\u5185\u5BB9\u9644\u5728\u4E0B\u9762\u3002{question}","guide.ask.unavailable":"\u8FD9\u91CC\u5F00\u4E0D\u4E86\u5BF9\u8BDD","guide.ask.chatTitle":"\u4F7F\u7528\u6307\u5357\u95EE\u7B54","guide.companion.back":"\u56DE\u5230\u6307\u5357","guide.companion.close":"\u6536\u8D77","guide.toast.taskDone":"\u5B8C\u6210\uFF1A{task}","guide.letter.levelTitle":"{level} \u5DF2\u89E3\u9501\uFF1A\u63A5\u4E0B\u6765\u8BD5\u8BD5\u8FD9\u51E0\u4EF6\u4E8B","guide.letter.levelBody":"\u4E0A\u4E00\u7EA7\u7684\u4EFB\u52A1\u90FD\u505A\u5B8C\u4E86\uFF0C\u4E0B\u9762\u8FD9\u51E0\u7AE0\u73B0\u5728\u53EF\u4EE5\u8BFB\u4E86\u3002\u6BCF\u9879\u4EFB\u52A1\u90FD\u80FD\u300C\u5E26\u6211\u53BB\u300D\u3002","guide.letter.versionTitle":"{version} \u6709 {n} \u4EF6\u65B0\u4E1C\u897F\u53EF\u4EE5\u4F53\u9A8C","guide.letter.versionBody":"\u8FD9\u4E2A\u7248\u672C\u65B0\u52A0\u7684\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4E0A\u624B\uFF1A","guide.letter.open":"\u6253\u5F00\u6307\u5357","guide.status.done":"\u5DF2\u5B8C\u6210","guide.cmd.open":"\u6253\u5F00\u4F7F\u7528\u6307\u5357","penzor.title":"\u84EC\u6D32\u4E91","penzor.overview":"\u6982\u89C8","penzor.places":"\u4F4D\u7F6E","penzor.details":"\u8BE6\u60C5","penzor.ledger.sync":"\u667A\u5E93\u540C\u6B65","penzor.ledger.ama":"Amadeus Cloud","penzor.ledger.apps":"\u5E94\u7528\u6587\u4EF6","penzor.ledger.exports":"\u5BFC\u51FA","penzor.trash":"\u56DE\u6536\u7AD9","penzor.items":"{n} \u9879","penzor.total.sub":"\u5B58\u5728 Forsion \u4E91\u7AEF \xB7 {time}\u66F4\u65B0","penzor.justNow":"\u521A\u521A","penzor.ofMax":"/ {max}","penzor.card.syncSub":"{n} \u4E2A\u5E93 \xB7 \u4E0A\u6B21\u5199\u5165 {time}","penzor.card.syncSubNone":"{n} \u4E2A\u5E93","penzor.card.syncFoot":"\u5355\u4E2A\u6587\u4EF6\u8D85\u8FC7 {size} \u4E0D\u4E0A\u4F20","penzor.card.syncWarn":"\u5FEB\u6EE1\u4E86\uFF1A\u6EE1 {max} \u540E\u65B0\u6587\u4EF6\u4E0D\u518D\u4E0A\u4F20\uFF0C\u5DF2\u5728\u4E91\u7AEF\u7684\u7167\u5E38\u540C\u6B65","penzor.card.amaSmall":"\u4E0D\u7B97\u5728\u989D\u5EA6\u91CC","penzor.card.amaSub":"{n} \u4E2A\u4E91\u7AEF\u667A\u5E93","penzor.card.amaFoot":"\u7B14\u8BB0\u548C\u9644\u4EF6\u5728 Amadeus \u7684 Cloud \u4FA7","penzor.card.appsFoot":"\u56DE\u6536\u7AD9 {n} \u9879 \xB7 {size}","penzor.card.appsWarn":"\u5FEB\u6EE1\u4E86\uFF1A\u6EE1 {max} \u540E\u5E94\u7528\u4E0D\u80FD\u518D\u5B58\u65B0\u6587\u4EF6\uFF1B\u56DE\u6536\u7AD9\u91CC\u7684\u4E5F\u7B97\uFF0C\u6E05\u7A7A\u80FD\u817E\u51FA\u7A7A\u95F4","penzor.card.expSmall":"{n} \u4E2A\u6587\u4EF6","penzor.card.expSub":"\u6700\u8FD1\uFF1A{name} \xB7 {time}","penzor.card.expFoot":"\u5404\u5E94\u7528\u5BFC\u51FA\u7684\u6587\u4EF6","penzor.card.none":"\u8FD8\u6CA1\u6709\u4E1C\u897F","penzor.largest":"\u5360\u7528\u6700\u591A","penzor.col.name":"\u540D\u79F0","penzor.col.size":"\u5927\u5C0F","penzor.col.mtime":"\u4FEE\u6539\u65F6\u95F4","penzor.col.device":"\u5199\u5165\u8BBE\u5907","penzor.col.deleted":"\u5220\u9664\u4E8E","penzor.col.origin":"\u539F\u4F4D\u7F6E","penzor.col.app":"\u6765\u6E90","penzor.sort.mtime":"\u6309\u4FEE\u6539\u65F6\u95F4","penzor.sort.size":"\u6309\u5927\u5C0F","penzor.sort.name":"\u6309\u540D\u79F0","penzor.search":"\u641C\u7D22\u8FD9\u91CC\u7684\u6587\u4EF6\u540D","penzor.sync.thisDevice":"\u672C\u673A\u5728\u540C\u6B65","penzor.meta.files":"{size} \xB7 {n} \u4E2A\u6587\u4EF6","penzor.sync.last":"\u4E0A\u6B21\u5199\u5165 {time} \xB7 {device}","penzor.sync.lastNoDevice":"\u4E0A\u6B21\u5199\u5165 {time}","penzor.sync.devices":"{n} \u53F0\u8BBE\u5907\u540C\u6B65\u8FD9\u4E2A\u5E93","penzor.sync.meter":"\u667A\u5E93\u540C\u6B65\u5171\u7528 {max}\uFF0C\u5DF2\u7528 {used}","penzor.apps.meter":"\u5E94\u7528\u6587\u4EF6\u5171\u7528 {max}\uFF0C\u5DF2\u7528 {used}\uFF08\u56DE\u6536\u7AD9\u91CC\u7684\u4E5F\u7B97\uFF09","penzor.apps.by":"\u7531 {app} \u5199\u5165","penzor.ama.notCounted":"\u4E0D\u7B97\u5728\u989D\u5EA6\u91CC","penzor.ama.open":"\u5728 Amadeus \u4E2D\u6253\u5F00","penzor.trash.meta":"{n} \u9879 \xB7 {size}","penzor.trash.note":"\u6C38\u4E45\u5220\u9664\u540E\u624D\u817E\u51FA\u7A7A\u95F4","penzor.trash.emptyBtn":"\u6E05\u7A7A\u56DE\u6536\u7AD9","penzor.act.download":"\u4E0B\u8F7D","penzor.act.rename":"\u91CD\u547D\u540D","penzor.act.move":"\u79FB\u52A8\u5230\u2026","penzor.act.trash":"\u79FB\u5230\u56DE\u6536\u7AD9","penzor.act.delete":"\u5220\u9664","penzor.act.restore":"\u6062\u590D","penzor.act.purge":"\u6C38\u4E45\u5220\u9664","penzor.act.copyName":"\u590D\u5236\u5E93\u540D","penzor.act.openSync":"\u5728\u8BBE\u7F6E\u4E2D\u6253\u5F00\u540C\u6B65","penzor.act.refresh":"\u5237\u65B0","penzor.act.up":"\u4E0A\u4E00\u7EA7","penzor.toast.trashed":"\u5DF2\u628A\u300C{name}\u300D\u79FB\u5230\u56DE\u6536\u7AD9","penzor.toast.restored":"\u5DF2\u6062\u590D\u300C{name}\u300D","penzor.toast.purged":"\u5DF2\u6C38\u4E45\u5220\u9664\u300C{name}\u300D","penzor.toast.emptied":"\u5DF2\u6E05\u7A7A\u56DE\u6536\u7AD9","penzor.toast.downloaded":"\u5DF2\u5B58\u5230\u300C\u4E0B\u8F7D\u300D\uFF1A{name}","penzor.toast.renamed":"\u5DF2\u6539\u540D\u4E3A\u300C{name}\u300D","penzor.toast.moved":"\u5DF2\u79FB\u5230\u300C{name}\u300D","penzor.toast.versionRestored":"\u5DF2\u6062\u590D\u5230\u7B2C {n} \u7248","penzor.toast.copied":"\u5DF2\u590D\u5236\u5E93\u540D","penzor.toast.failed":"\u6CA1\u6210\u529F\uFF1A{reason}","penzor.confirm.purge":"\u6C38\u4E45\u5220\u9664\u300C{name}\u300D\uFF1F\u5220\u4E86\u5C31\u627E\u4E0D\u56DE\u6765\u4E86\u3002","penzor.confirm.empty":"\u6E05\u7A7A\u56DE\u6536\u7AD9\uFF1F{n} \u9879\u4F1A\u88AB\u6C38\u4E45\u5220\u9664\uFF0C\u627E\u4E0D\u56DE\u6765\u3002","penzor.confirm.deleteExport":"\u5220\u9664\u300C{name}\u300D\uFF1F\u5BFC\u51FA\u7684\u6587\u4EF6\u6CA1\u6709\u56DE\u6536\u7AD9\uFF0C\u5220\u4E86\u5C31\u627E\u4E0D\u56DE\u6765\u4E86\u3002","penzor.cancel":"\u53D6\u6D88","penzor.side.where":"\u4F4D\u7F6E","penzor.side.mtime":"\u4FEE\u6539","penzor.side.device":"\u5199\u5165\u8BBE\u5907","penzor.side.thisDevice":"{name}\uFF08\u672C\u673A\uFF09","penzor.side.from":"\u6765\u6E90","penzor.side.versions":"\u5386\u53F2\u7248\u672C","penzor.side.versionsNone":"\u6CA1\u6709","penzor.side.versionRow":"\u7B2C {n} \u7248 \xB7 {time} \xB7 {size}","penzor.side.restoreVersion":"\u6062\u590D\u8FD9\u4E00\u7248","penzor.side.deletedAt":"\u5220\u9664\u4E8E","penzor.side.origin":"\u539F\u4F4D\u7F6E","penzor.side.inner":"\u91CC\u9762\u8FD8\u6709 {n} \u9879\uFF0C\u6062\u590D\u65F6\u4E00\u8D77\u56DE\u6765","penzor.side.inTrash":"\u5728\u56DE\u6536\u7AD9 \xB7 {size}","penzor.side.readonlySync":"\u540C\u6B65\u5E93\u91CC\u7684\u6587\u4EF6\u53EA\u5728\u8BBE\u5907\u4E0A\u5220\u6539\u3002\u5728\u8FD9\u91CC\u5220\u6389\u4E00\u4E2A\u6587\u4EF6\uFF0C\u6BCF\u53F0\u540C\u6B65 {vault} \u7684\u8BBE\u5907\u4E0B\u6B21\u540C\u6B65\u65F6\u90FD\u4F1A\u8DDF\u7740\u5220\u6389\uFF0C\u6240\u4EE5\u8FD9\u91CC\u53EA\u80FD\u770B\u548C\u4E0B\u8F7D\u3002","penzor.side.readonlyAma":"\u7B14\u8BB0\u548C\u9644\u4EF6\u5728 Amadeus \u91CC\u6539\u3002\u5728\u8FD9\u91CC\u5220\u6389\u4E00\u4E2A\u9644\u4EF6\uFF0C\u5F15\u7528\u5B83\u7684\u7B14\u8BB0\u4F1A\u7F3A\u56FE\uFF0C\u6240\u4EE5\u8FD9\u91CC\u53EA\u80FD\u770B\u548C\u4E0B\u8F7D\u3002","penzor.side.exportNote":"\u5BFC\u51FA\u7684\u6587\u4EF6\u6CA1\u6709\u56DE\u6536\u7AD9\uFF1A\u5220\u9664\u5C31\u662F\u6C38\u4E45\u5220\u9664\u3002","penzor.side.none":"\u9009\u4E00\u4E2A\u6587\u4EF6\u770B\u8BE6\u60C5","penzor.side.folder":"\u6587\u4EF6\u5939 \xB7 {n} \u9879","penzor.side.folderPlain":"\u6587\u4EF6\u5939","penzor.move.title":"\u79FB\u5230\u54EA\u91CC","penzor.move.root":"{app} \u6700\u4E0A\u5C42","penzor.move.here":"\u79FB\u5230\u8FD9\u91CC","penzor.move.noFolders":"\u8FD9\u4E00\u5C42\u6CA1\u6709\u6587\u4EF6\u5939","penzor.rename.save":"\u4FDD\u5B58","penzor.empty.title":"\u84EC\u6D32\u4E91\u91CC\u8FD8\u6CA1\u6709\u4E1C\u897F","penzor.empty.lead":"\u8FD9\u4E9B\u4E1C\u897F\u5B58\u8FDB\u4E91\u7AEF\u540E\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\uFF1A","penzor.empty.sync":"\u5728\u300C\u8BBE\u7F6E \u203A \u540C\u6B65\u300D\u91CC\u628A\u8FDC\u7A0B\u670D\u52A1\u9009\u6210\u300C\u84EC\u6D32\u4E91\u300D\uFF0C\u672C\u5730\u667A\u5E93\u5C31\u540C\u6B65\u5230\u8FD9\u91CC","penzor.empty.ama":"Amadeus \u5207\u5230 Cloud \u4FA7\u5199\u7684\u7B14\u8BB0","penzor.empty.apps":"\u5404\u5E94\u7528\u5B58\u5230\u4E91\u7AEF\u6216\u5BFC\u51FA\u7684\u6587\u4EF6","penzor.empty.openSync":"\u6253\u5F00\u540C\u6B65\u8BBE\u7F6E","penzor.out.title":"\u767B\u5F55\u540E\u67E5\u770B\u4F60\u7684\u84EC\u6D32\u4E91","penzor.out.lead":"\u84EC\u6D32\u4E91\u653E\u7740\u4F60\u540C\u6B65\u5230 Forsion \u4E91\u7AEF\u7684\u5E93\u3001Amadeus Cloud \u7684\u7B14\u8BB0\uFF0C\u548C\u5404\u5E94\u7528\u5B58\u5728\u4E91\u7AEF\u7684\u6587\u4EF6\u3002","penzor.out.signIn":"\u767B\u5F55 Forsion \u8D26\u53F7","penzor.loading":"\u6B63\u5728\u8BFB\u53D6\u2026","penzor.err":"\u6CA1\u8BFB\u5230\uFF1A{reason}","penzor.folderEmpty":"\u8FD9\u91CC\u6CA1\u6709\u6587\u4EF6","penzor.noMatch":"\u6CA1\u6709\u540D\u5B57\u91CC\u5E26\u300C{q}\u300D\u7684\u6587\u4EF6","penzor.cmd.open":"\u6253\u5F00\u84EC\u6D32\u4E91","penzor.unreachable":"\u8FDE\u4E0D\u4E0A Forsion \u4E91\u7AEF\uFF0C\u7A0D\u540E\u518D\u8BD5","penzor.toast.emptyPartial":"\u56DE\u6536\u7AD9\u91CC\u8FD8\u6709 {n} \u9879\u6CA1\u5220\u6389","penzor.sort.deleted":"\u6309\u5220\u9664\u65F6\u95F4","penzor.side.versionsN":"{n} \u4E2A","penzor.drive":"\u6211\u7684\u4E91\u76D8","penzor.drive.meta":"\u7B97\u5728\u5E94\u7528\u6587\u4EF6\u7684 {max} \u91CC","penzor.drive.empty":"\u8FD9\u91CC\u8FD8\u7A7A\u7740\u3002\u628A\u6587\u4EF6\u62D6\u8FDB\u6765\uFF0C\u6216\u8005\u70B9\u300C\u4E0A\u4F20\u300D\u3002","penzor.act.upload":"\u4E0A\u4F20","penzor.act.uploadMore":"\u66F4\u591A\u4E0A\u4F20\u65B9\u5F0F","penzor.act.uploadFiles":"\u4E0A\u4F20\u6587\u4EF6\u2026","penzor.act.uploadFolder":"\u4E0A\u4F20\u6587\u4EF6\u5939\u2026","penzor.act.uploadHere":"\u4E0A\u4F20\u5230\u8FD9\u91CC\u2026","penzor.act.newFolder":"\u65B0\u5EFA\u6587\u4EF6\u5939","penzor.act.clearSel":"\u53D6\u6D88\u9009\u62E9","penzor.newFolder.default":"\u65B0\u5EFA\u6587\u4EF6\u5939","penzor.sel.bar":"\u5DF2\u9009 {n} \u9879 \xB7 {size}","penzor.sel.title":"\u5DF2\u9009 {n} \u9879","penzor.sel.sub":"{size} \xB7 {files} \u4E2A\u6587\u4EF6","penzor.sel.subDirs":"{size} \xB7 {files} \u4E2A\u6587\u4EF6\u3001{dirs} \u4E2A\u6587\u4EF6\u5939","penzor.sel.download":"\u4E0B\u8F7D {n} \u9879","penzor.sel.saveTo":"\u4E0B\u8F7D\u5230","penzor.sel.saveToValue":"\u4E0B\u8F7D / {folder}","penzor.sel.noDirs":"\u6587\u4EF6\u5939\u8FD9\u4E00\u7248\u8FD8\u4E0D\u80FD\u4E0B\u8F7D\uFF0C\u53EA\u4E0B\u8F7D\u9009\u4E2D\u7684\u6587\u4EF6\u3002","penzor.download.folder":"\u84EC\u6D32\u4E91 {date}","penzor.drop.to":"\u677E\u624B\u4E0A\u4F20\u5230\u300C{place}\u300D","penzor.tx.busy":"\u6B63\u5728\u4F20\u8F93 {n} \u9879","penzor.tx.allDone":"\u5168\u90E8\u4F20\u5B8C","penzor.tx.failedN":"{n} \u9879\u6CA1\u4F20\u5B8C","penzor.tx.counts":"\u4E0A\u4F20 {up} \xB7 \u4E0B\u8F7D {down}","penzor.tx.eta":"\u5269\u7EA6 {eta}","penzor.tx.doneN":"{n} \u9879\u5DF2\u4F20\u5B8C","penzor.tx.restDone":"\u5176\u4F59 {n} \u9879\u5DF2\u4F20\u5B8C","penzor.tx.pill":"{counts} \xB7 {pct}%","penzor.tx.queued":"\u6392\u961F\u4E2D","penzor.tx.paused":"\u5DF2\u6682\u505C \xB7 \u7EE7\u7EED\u4F1A\u4ECE\u5934\u4F20","penzor.tx.uploaded":"\u5DF2\u4E0A\u4F20 \xB7 {time}","penzor.tx.downloaded":"\u5DF2\u4E0B\u8F7D \xB7 {time}","penzor.tx.canceled":"\u5DF2\u53D6\u6D88","penzor.tx.left":"\u5269 {eta}","penzor.tx.sec":"{n} \u79D2","penzor.tx.min":"{n} \u5206\u949F","penzor.tx.pause":"\u6682\u505C","penzor.tx.resume":"\u7EE7\u7EED","penzor.tx.cancel":"\u53D6\u6D88","penzor.tx.retry":"\u91CD\u8BD5","penzor.tx.remove":"\u79FB\u9664","penzor.tx.locate":"\u5B9A\u4F4D","penzor.tx.reveal":"\u5728\u6587\u4EF6\u5939\u4E2D\u663E\u793A","penzor.tx.pauseAll":"\u5168\u90E8\u6682\u505C","penzor.tx.resumeAll":"\u5168\u90E8\u7EE7\u7EED","penzor.tx.retryAll":"\u5168\u90E8\u91CD\u8BD5","penzor.tx.clearDone":"\u6E05\u9664\u5DF2\u5B8C\u6210","penzor.tx.clear":"\u6E05\u9664","penzor.tx.collapse":"\u6536\u8D77","penzor.tx.expand":"\u5C55\u5F00\u4F20\u8F93\u5217\u8868","penzor.tx.quota":"\u7A7A\u95F4\u4E0D\u591F\uFF0C\u8FD8\u5DEE {size}","penzor.tx.quotaSub":"\u8FD9\u4E00\u6279\u4E00\u4E2A\u90FD\u6CA1\u5F00\u59CB\u4F20","penzor.tx.freeSpace":"\u53BB\u56DE\u6536\u7AD9\u817E\u5730\u65B9","penzor.err.too_large":"\u5355\u4E2A\u6587\u4EF6\u8D85\u8FC7 50 MB\uFF08\u8FD9\u4E2A {size}\uFF09\uFF0C\u8FD9\u4E00\u7248\u4F20\u4E0D\u4E86","penzor.err.quota":"\u4E91\u7AEF\u7A7A\u95F4\u4E0D\u591F","penzor.err.network":"\u7F51\u7EDC\u65AD\u4E86\uFF0C\u4F20\u5230 {pct}% \u505C\u4E0B","penzor.err.account_changed":"\u6362\u4E86\u8D26\u53F7\uFF0C\u8FD9\u4E00\u9879\u6CA1\u6709\u63A5\u7740\u4F20","penzor.err.download_unavailable":"\u6B64\u5BBF\u4E3B\u6682\u4E0D\u652F\u6301\u4FDD\u5B58\u4E0B\u8F7D\uFF0C\u8BF7\u66F4\u65B0 Forsion","penzor.err.download_failed":"\u6587\u4EF6\u672A\u4FDD\u5B58\uFF0C\u8BF7\u91CD\u8BD5\u4E0B\u8F7D","penzor.err.not_signed_in":"\u6CA1\u767B\u5F55","penzor.err.gone":"\u672C\u673A\u4E0A\u627E\u4E0D\u5230\u8FD9\u4E2A\u6587\u4EF6\u4E86","penzor.err.popup_blocked":"\u6D4F\u89C8\u5668\u62E6\u4E0B\u4E86\u65B0\u6807\u7B7E\u9875\uFF0C\u5141\u8BB8\u672C\u7AD9\u5F39\u51FA\u7A97\u53E3\u540E\u518D\u8BD5\u4E00\u6B21","penzor.err.changed":"\u4F20\u7684\u65F6\u5019\u6587\u4EF6\u6539\u52A8\u4E86\uFF0C\u91CD\u8BD5\u4E00\u6B21","penzor.err.storage_unavailable":"\u4E91\u7AEF\u5B58\u50A8\u6682\u65F6\u4E0D\u53EF\u7528","penzor.err.other":"\u6CA1\u4F20\u5B8C\uFF08{code}\uFF09","penzor.err.too_many":"\u4E00\u6B21\u6700\u591A {n} \u4E2A\u6587\u4EF6\uFF0C\u5206\u51E0\u6B21\u62D6\u8FDB\u6765","penzor.toast.upDoneOne":"\u5DF2\u4E0A\u4F20\u300C{name}\u300D","penzor.toast.upDoneMany":"\u5DF2\u4E0A\u4F20 {n} \u4E2A\u6587\u4EF6","penzor.toast.downDoneMany":"\u5DF2\u4E0B\u8F7D {n} \u4E2A\u6587\u4EF6\u5230\u300C\u4E0B\u8F7D\u300D","penzor.toast.txFailed":"{n} \u9879\u6CA1\u4F20\u5B8C\uFF0C\u56DE\u84EC\u6D32\u4E91\u770B\u770B","penzor.toast.folderExists":"\u5DF2\u7ECF\u6709\u53EB\u300C{name}\u300D\u7684\u6587\u4EF6\u5939\u4E86","penzor.toast.trashedN":"\u5DF2\u628A {n} \u9879\u79FB\u5230\u56DE\u6536\u7AD9","penzor.toast.movedN":"\u5DF2\u628A {n} \u9879\u79FB\u5230\u300C{name}\u300D","penzor.toast.batchPartial":"\u6709 {n} \u9879\u6CA1\u6210\u529F","penzor.sync.title":"\u540C\u6B65","penzor.sync.onN":"{n} \u9879\u5DF2\u5F00","penzor.sync.allOff":"\u90FD\u6CA1\u5F00","penzor.sync.waiting":"\u7B49\u4F60\u51B3\u5B9A","penzor.sync.badgeWaiting":"{n} \u9879\u5DF2\u5F00 \xB7 1 \u9879\u7B49\u4F60\u51B3\u5B9A","penzor.sync.running":"\u540C\u6B65\u4E2D {pct}%","penzor.sync.runningPlain":"\u540C\u6B65\u4E2D","penzor.sync.metaDevice":"\u8FD9\u53F0 {name}","penzor.sync.metaLast":"\u4E0A\u6B21\u540C\u6B65 {time}","penzor.sync.metaNever":"\u8FD8\u6CA1\u540C\u6B65\u8FC7","penzor.sync.every":"\u6BCF {n} \u5206\u949F","penzor.sync.everyHours":"\u6BCF {n} \u5C0F\u65F6","penzor.sync.manual":"\u624B\u52A8","penzor.sync.onStart":"\u5F00\u673A\u65F6\u4E00\u6B21","penzor.sync.minAgo":"{n} \u5206\u949F\u524D","penzor.sync.hoursAgo":"{n} \u5C0F\u65F6\u524D","penzor.sync.notesNamed":"\u667A\u5E93\u300C{name}\u300D","penzor.sync.notesPlain":"\u8FD9\u53F0\u7535\u8111\u7684\u667A\u5E93","penzor.sync.notesDesc":"\u6574\u4E2A\u672C\u673A\u667A\u5E93\uFF0C\u548C\u4F60\u7684\u5176\u4ED6\u7535\u8111\u4FDD\u6301\u4E00\u81F4","penzor.sync.agents":"Agents \u4E0E\u8BB0\u5FC6","penzor.sync.agentsDesc":"Agents \u7684\u8BB0\u5FC6\u3001\u65E5\u5FD7\u3001\u6280\u80FD\u548C\u534F\u4F5C\u8BF4\u660E\uFF0C\u8FD8\u6709\u4F60\u7684\u8D44\u6599\u548C\u9ED8\u8BA4\u65E5\u5386","penzor.sync.conflictsN":"{n} \u4E2A\u51B2\u7A81\u526F\u672C","penzor.sync.conflictsHint":"\u4E24\u8FB9\u90FD\u6539\u8FC7\u7684\u6587\u4EF6\u4E24\u4EFD\u90FD\u7559\u7740\uFF1A\u53E6\u4E00\u4EFD\u5B58\u6210\u6587\u4EF6\u540D\u5E26\u300Cconflict\u300D\u7684\u526F\u672C\uFF0C\u5728\u5BF9\u5E94 Agent \u7684\u6587\u4EF6\u5939\uFF08\u6216\u4F60\u7684\u8D44\u6599\u6587\u4EF6\u5939\uFF09\u91CC","penzor.sync.pluginsPending":"{n} \u4E2A\u63D2\u4EF6\u7684\u6539\u52A8\u8FD8\u6CA1\u4F20\u4E0A\u53BB","penzor.sync.agentsN":"{n} \u4E2A Agent","penzor.sync.plugins":"\u63D2\u4EF6\u6570\u636E","penzor.sync.pluginsDesc":"\u63D2\u4EF6\u81EA\u5DF1\u5B58\u7684\u8BBE\u7F6E\u548C\u6570\u636E","penzor.sync.pluginsN":"{n} \u4E2A\u63D2\u4EF6","penzor.sync.off":"\u6CA1\u5F00","penzor.sync.done":"\u5DF2\u540C\u6B65","penzor.sync.doneSize":"\u5DF2\u540C\u6B65 \xB7 {size}","penzor.sync.firstPending":"\u7B49\u7B2C\u4E00\u6B21\u540C\u6B65","penzor.sync.failed":"\u4E0A\u6B21\u6CA1\u540C\u6B65\u6210\u529F","penzor.sync.overQuota":"\u8D85\u51FA\u989D\u5EA6\uFF0C\u6709\u7684\u6CA1\u4F20","penzor.sync.to":"\u540C\u6B65\u5230 {name}","penzor.sync.toFolder":"\u540C\u6B65\u5230\u672C\u673A\u6587\u4EF6\u5939","penzor.sync.decideAbove":"\u5728\u4E0A\u9762\u90A3\u5F20\u5361\u91CC\u9009","penzor.sync.kvSchedule":"\u540C\u6B65\u8BA1\u5212","penzor.sync.kvDirection":"\u65B9\u5411","penzor.sync.kvSkipped":"\u6CA1\u4F20\u7684","penzor.sync.kvWhere":"\u4E91\u7AEF\u4F4D\u7F6E","penzor.sync.change":"\u6539","penzor.sync.open":"\u6253\u5F00","penzor.sync.dir.both":"\u53CC\u5411","penzor.sync.dir.push":"\u4EC5\u4E0A\u4F20","penzor.sync.dir.pull":"\u4EC5\u4E0B\u8F7D","penzor.sync.skippedN":"{n} \u4E2A\u8D85\u8FC7 {size} \u7684\u6587\u4EF6","penzor.sync.where":"{ledger} \u203A {vault}","penzor.sync.whereUsed":"{ledger} \u203A {vault} \xB7 {used} / {max}","penzor.sync.devicesTitle":"\u5728\u540C\u6B65\u7684\u8BBE\u5907","penzor.sync.thisOne":"\u8FD9\u53F0","penzor.sync.lastWrite":"\u4E0A\u6B21\u5199\u5165 {time}","penzor.sync.noDevices":"\u8FD8\u6CA1\u6709\u8BBE\u5907\u5728\u540C\u6B65","penzor.sync.phoneTitle":"\u624B\u673A\u548C\u7F51\u9875\u770B\u5230\u7684\u90A3\u4E00\u4EFD","penzor.sync.phoneTip":"\u624B\u673A\u548C\u7F51\u9875\u76F4\u63A5\u8BFB\u300C\u4E91\u7AEF\u667A\u5E93\u300D\uFF08Amadeus \u7684\u4E91\u7AEF\u4FA7\uFF0C{size}\uFF09\uFF0C\u5B83\u4E00\u76F4\u5728\u540C\u6B65\uFF0C\u548C\u4E0A\u9762\u8FD9\u53F0\u7535\u8111\u7684\u667A\u5E93\u662F\u4E24\u4EFD\u3002\u60F3\u5728\u624B\u673A\u4E0A\u770B\u8FD9\u53F0\u7684\u67D0\u4E2A\u6587\u4EF6\u5939\uFF1A\u5728\u7B14\u8BB0\u91CC\u53F3\u952E\u90A3\u4E2A\u6587\u4EF6\u5939\uFF0C\u628A\u5B83\u540C\u6B65\u5230\u4E91\u7AEF\u667A\u5E93\u3002","penzor.sync.phoneTipPlain":"\u624B\u673A\u548C\u7F51\u9875\u76F4\u63A5\u8BFB\u300C\u4E91\u7AEF\u667A\u5E93\u300D\uFF08Amadeus \u7684\u4E91\u7AEF\u4FA7\uFF09\uFF0C\u5B83\u4E00\u76F4\u5728\u540C\u6B65\uFF0C\u548C\u4E0A\u9762\u8FD9\u53F0\u7535\u8111\u7684\u667A\u5E93\u662F\u4E24\u4EFD\u3002\u60F3\u5728\u624B\u673A\u4E0A\u770B\u8FD9\u53F0\u7684\u67D0\u4E2A\u6587\u4EF6\u5939\uFF1A\u5728\u7B14\u8BB0\u91CC\u53F3\u952E\u90A3\u4E2A\u6587\u4EF6\u5939\uFF0C\u628A\u5B83\u540C\u6B65\u5230\u4E91\u7AEF\u667A\u5E93\u3002","penzor.sync.foot":"\u540C\u6B65\u8BA1\u5212\u3001\u65B9\u5411\u548C\u5176\u4ED6\u5B58\u50A8\uFF08Dropbox / S3 / WebDAV\uFF09\u5728","penzor.sync.footLink":"\u8BBE\u7F6E \u203A \u540C\u6B65","penzor.sync.askTitle":"\u4E91\u7AEF\u5DF2\u7ECF\u6709\u4E00\u4EFD\u667A\u5E93","penzor.sync.askCloud":"\u4E91\u7AEF\u90A3\u4EFD\u6765\u81EA {device}\uFF1A{files} \u4E2A\u6587\u4EF6 \xB7 {size}\u3002","penzor.sync.askCloudNoDevice":"\u4E91\u7AEF\u90A3\u4EFD\uFF1A{files} \u4E2A\u6587\u4EF6 \xB7 {size}\u3002","penzor.sync.askLocal":"\u8FD9\u53F0\u6709 {local} \u4E2A\u6587\u4EF6\u4E91\u7AEF\u6CA1\u6709\uFF0C{conflicts} \u4E2A\u4E24\u8FB9\u5185\u5BB9\u4E0D\u540C\u3002","penzor.sync.askMerge":"\u5408\u5E76\u4E24\u8FB9","penzor.sync.askCloudBtn":"\u7528\u4E91\u7AEF\u90A3\u4EFD","penzor.sync.askSkip":"\u8FD9\u53F0\u5148\u4E0D\u540C\u6B65\u667A\u5E93","penzor.sync.askExplain":"\u5408\u5E76\uFF1A\u4E24\u8FB9\u90FD\u7559\u7740\uFF0C\u5185\u5BB9\u4E0D\u540C\u7684\u53E6\u5B58\u4E00\u4EFD\u300C\uFF08\u51B2\u7A81\uFF09\u300D\u3002\u7528\u4E91\u7AEF\u90A3\u4EFD\uFF1A\u8FD9\u53F0\u548C\u4E91\u7AEF\u4E0D\u4E00\u6837\u7684\u6587\u4EF6\u5148\u632A\u8FDB\u65C1\u8FB9\u7684\u300C{backup}\u300D\u6587\u4EF6\u5939\uFF0C\u518D\u4E0B\u8F7D\u4E91\u7AEF\u90A3\u4EFD\u3002","penzor.sync.askConfirm":"\u8FD9\u53F0\u548C\u4E91\u7AEF\u4E0D\u4E00\u6837\u7684\u6587\u4EF6\u4F1A\u5148\u632A\u8FDB\u300C{backup}\u300D\uFF0C\u518D\u6362\u6210\u4E91\u7AEF\u90A3\u4EFD\u3002","penzor.sync.askConfirmGo":"\u632A\u8D70\u5E76\u7528\u4E91\u7AEF\u90A3\u4EFD","penzor.sync.backupName":"{name} \u540C\u6B65\u524D\u5907\u4EFD {date}","penzor.sync.quotaTitle":"\u667A\u5E93 {size}\uFF0C\u8D85\u8FC7\u4E86\u300C{ledger}\u300D\u7684 {max} \u4E0A\u9650","penzor.sync.quotaTitlePlain":"\u667A\u5E93\u8D85\u8FC7\u4E86\u300C{ledger}\u300D\u7684\u4E0A\u9650","penzor.sync.quotaBody":"\u653E\u4E0D\u4E0B\u7684\u6587\u4EF6\u7559\u5728\u8FD9\u53F0\u7535\u8111\u4E0A\uFF0C\u6CA1\u6709\u5220\uFF0C\u4E5F\u6CA1\u6709\u4F20\uFF1B\u5176\u4F59\u51E0\u9879\u7167\u5E38\u540C\u6B65\u3002","penzor.sync.quotaLarge":"\u8D85\u8FC7 {size} \u7684\u5355\u4E2A\u6587\u4EF6\u4E00\u76F4\u4E0D\u4F20\uFF08{n} \u4E2A\uFF09\u3002","penzor.sync.quotaSee":"\u770B\u770B\u6CA1\u4F20\u7684\u6587\u4EF6"},Jf={"penzor.rules.default":"Cloud default","penzor.rules.off":"Do not sync","penzor.rules.device":"Device","penzor.rules.run":"Sync now","penzor.rules.twoWay":"Two-way","penzor.rules.defaultForWeb":"The web uses the default folder","penzor.rules.tab.rules":"Sync rules","penzor.rules.tab.active":"Transfers","penzor.rules.tab.history":"History","penzor.rules.enable":"Enable content sync","penzor.rules.add":"Add rule","penzor.rules.source":"Local source","penzor.rules.destination":"Cloud destination","penzor.rules.direction":"Direction","penzor.rules.remove":"Remove rule","penzor.rules.inherit":"An empty path covers all of Forsion. Children inherit; the most specific path wins. Unmatched content stays on this device.","penzor.rules.namespace":"Default: Cloud /Forsion/. Device folders: Cloud /Forsion-deviceID/.","penzor.rules.human":"Choose human independently. The default calendar uses human/CALENDAR.db. A device destination does not replace the web default.","penzor.rules.preview":"Preview changes","penzor.rules.previewTitle":"Review sync scope","penzor.rules.previewCounts":"Upload {up}, download {down}; {conflicts} existing items need merging or preserved versions.","penzor.rules.retain":"Previous destinations are retained. Turning sync off deletes no files. If sources change, preview again.","penzor.rules.back":"Back","penzor.rules.apply":"Confirm and start","penzor.rules.pause":"Pause","penzor.rules.resume":"Continue","penzor.rules.noActive":"No files are transferring.","penzor.rules.manual":"Manual uploads and downloads","penzor.rules.historyNote":"The latest 200 items. Conflicts preserve both versions; other content continues syncing.","penzor.rules.retry":"Retry failed items","penzor.rules.noHistory":"No sync history yet.","penzor.rules.details":"View transfers","penzor.rules.plugins":"Plugin data keeps its own sync management.","penzor.rules.turnOff":"Turn off plugin data sync","penzor.rules.turnOn":"Turn on plugin data sync","penzor.rules.phase.idle":"Waiting for the next sync","penzor.rules.phase.scanning":"Checking files","penzor.rules.phase.syncing":"Syncing","penzor.rules.phase.paused":"Paused","penzor.rules.state.queued":"Queued","penzor.rules.state.active":"Transferring","penzor.rules.state.done":"Done","penzor.rules.state.failed":"Failed","penzor.rules.state.paused":"Paused","penzor.rules.state.conflict":"Conflict versions preserved","penzor.tree.synced":"Synced","penzor.tree.thisBackup":"This computer \xB7 backup only","penzor.tree.byApp":"By app","penzor.tree.legacy":"Legacy vault sync","penzor.quota.sourceLimit":"This kind also has its own limit of {max}; {used} used","penzor.ov.mine":"Yours","penzor.ov.synced":"Synced from your devices","penzor.ov.stale":"No longer updated","penzor.ov.uploads":"Files you upload and organize; change them freely","penzor.ov.all":"Notes, agents, about me and plugins","penzor.ov.allLast":"Notes, agents, about me and plugins \xB7 last synced {time}","penzor.ov.self":"The copy only this computer uses","penzor.ov.device":"Shared only between this computer and that one","penzor.ov.agents":"Agent settings, memory and logs","penzor.ov.profile":"Your profile and default calendar","penzor.ov.sync":"Vaults your computers sync up","penzor.ov.legacy":"No longer written once this computer uses the new sync; kept, not deleted","penzor.ov.ama":"Notes from the web and synced notes","penzor.ov.apps":"Files your apps store; delete or rename them","penzor.ov.plugins":"Settings plugins store; usage only","penzor.ov.exports":"Exported files; download or delete them","penzor.ov.segNotes":"Notes","penzor.ov.segSync":"Device sync","penzor.ov.segOther":"Other","penzor.content.badge":"Kept by the new sync","penzor.content.badgeLast":"Kept by the new sync \xB7 last synced {time}","penzor.content.noteAll":"This is the cloud copy every signed-in device and the web see. To change files, edit them in Notes or Agents on a computer and they sync up; you can download them here.","penzor.content.noteSelf":"The copy only this computer uses; other devices don\u2019t see it. Change files on this computer; you can download them here.","penzor.content.noteDevice":"Shared only between this computer and {name}. Change files on a computer; you can download them here.","penzor.legacy.title":"This computer stopped writing to this vault when it switched to the new sync","penzor.legacy.body":"This computer\u2019s notes now live in Shared with all devices \u203A Notes. Older desktop versions may still write here, so this copy is kept, not deleted.","penzor.legacy.go":"See the new copy","penzor.drive.total":"All of Penzor Cloud: {used} / {max} used","penzor.drive.seeAll":"View","penzor.cs.statusOff":"Off","penzor.cs.statusPaused":"Paused","penzor.cs.statusRun":"Syncing {pct}%","penzor.cs.statusScan":"Checking files","penzor.cs.statusWarn":"{n} to review","penzor.cs.statusOk":"Up to date","penzor.cs.statusOkAgo":"Up to date \xB7 {time}","penzor.cs.thisComputer":"This computer: {name}","penzor.cs.thisComputerLabel":"This computer:","penzor.cs.rename":"Rename this computer","penzor.cs.renameHint":"Other devices will show this name \xB7 Enter to save","penzor.cs.othersN":"{n} others: {names}","penzor.cs.noOthers":"No other devices on this account yet","penzor.cs.log":"Recent activity","penzor.cs.more":"More","penzor.cs.advanced":"Advanced: edit rules","penzor.cs.backSimple":"Back to sync","penzor.cs.firstTitle":"Sync this computer to Penzor Cloud","penzor.cs.firstBody":"Here is a suggested setup; change anything first. Nothing moves until you press Start syncing, and nothing already in the cloud is overwritten or deleted.","penzor.cs.note":"To treat one notes folder or agent differently, click the small line under it. Turning a switch off just stops syncing; nothing is deleted.","penzor.cs.barFirst":"Turning sync on uploads {up} files and downloads {down}","penzor.cs.barChanged":"{n} changes","penzor.cs.barOne":"1 change: \u201C{name}\u201D \u2192 {scope}","penzor.cs.offName":"not synced","penzor.cs.barCounts":"Uploads {up} files and downloads {down} \xB7 nothing is deleted","penzor.cs.barSize":"{size} in total","penzor.cs.noDelete":"nothing will be deleted","penzor.cs.barConflicts":"{n} changed on both sides; both copies are kept","penzor.cs.barCounting":"Working out what will move\u2026","penzor.cs.barRecount":"Files just changed, so this was recalculated. Please confirm again.","penzor.cs.later":"Not now","penzor.cs.start":"Start syncing","penzor.cs.undo":"Undo","penzor.cs.confirm":"Confirm","penzor.cs.up":"Uploading \u201C{name}\u201D","penzor.cs.down":"Downloading \u201C{name}\u201D","penzor.cs.waiting":"{n} more files waiting","penzor.cs.failedN":"{n} files didn\u2019t sync","penzor.cs.retry":"Retry","penzor.cs.seeLog":"See activity","penzor.cs.logEmpty":"No sync activity yet.","penzor.cs.logNote":"Keeps the latest 200 items. When both sides changed, both copies are kept.","penzor.cat.notes":"Notes","penzor.cat.notesDesc":"Your Amadeus vault","penzor.cat.agents":"Agents & memory","penzor.cat.agentsDesc":"Each agent\u2019s settings, memory and logs","penzor.cat.profile":"About me","penzor.cat.profileDesc":"Your profile and default calendar","penzor.cat.profileOn":"Includes your default calendar","penzor.cat.plugins":"Plugins","penzor.cat.pluginsDesc":"Plugin folders and settings","penzor.cat.others":"Other files","penzor.cat.othersDesc":"Files in your workspace outside the groups above","penzor.cat.files":"{n} files \xB7 {size}","penzor.cat.agentsN":"{n} agents","penzor.cat.agentsSome":"{n} agents \xB7 {m} synced","penzor.cat.pluginsN":"{n} plugins","penzor.cat.custom":"{n} custom rules","penzor.cat.notSynced":"Not synced \xB7 stays on this computer","penzor.scope.all":"Shared with all devices","penzor.scope.allDesc":"Every signed-in device and the web see one copy","penzor.scope.self":"Back up this computer only","penzor.scope.selfDesc":"Kept in its own cloud copy other devices don\u2019t see","penzor.scope.with":"Only with {name}","penzor.scope.menuTitle":"Who shares \u201C{name}\u201D","penzor.scope.menuFoot":"To stop syncing it, turn off the switch","penzor.scope.calendarNote":"The web\u2019s default calendar doesn\u2019t follow this","penzor.unified.stale":"Refresh failed. Showing the last sample; current usage is unknown. Please retry.","penzor.unified.uploadTo":"Upload to My files","penzor.unified.apps":"Manage ordinary files \xB7 source restrictions apply","penzor.trash.ama":"Amadeus \xB7 pending cleanup","penzor.trash.amaNote":"Deleted current files still count; history is not counted again. Eligible for system cleanup after 30 days. Read-only here; Empty trash does not affect these snapshots.","penzor.trash.expires":"Cleanup eligible from","penzor.source.openAgents":"Open Agents","penzor.source.openCalendar":"Open calendar","penzor.source.entryUnavailable":"This host does not provide that destination","penzor.uploads":"My files","penzor.source.agents":"Agents","penzor.source.profile":"My profile","penzor.source.plugins":"Plugin data","penzor.source.readonly":"Synced sources are read-only. Edit or delete in the source; download synced files here.","penzor.source.appNote":"App files are managed by their app. Edit or delete them there.","penzor.source.pluginNote":"Names and usage only. Data may contain settings or credentials, so preview and download are unavailable.","penzor.unified.unavailable":"Usage unavailable","penzor.unified.incomplete":"Unified usage is incomplete, so quota status is unknown. Refresh to retry.","penzor.unified.enforced":"Unified quota is active. Over quota, new content and larger replacements are paused; downloads, deletions and non-growing replacements remain available.","penzor.unified.grace":"Notice grace period ends {date}. Unified quota does not add restrictions yet.","penzor.unified.rolloutPolicy":"Storage policy notice: growth limits may start no earlier than 30 days after acknowledgement. App file history will retain at most 50 versions from the last 30 days. History is excluded from your plan; download backups before cleanup. Current files are not removed by history cleanup.","penzor.unified.ack":"I have read the storage and history notice","penzor.unified.notice":"This is only a notice. Going over won\u2019t stop sync or uploads","penzor.unified.over":"Unified quota exceeded. This is a notice only; no new sync or upload restrictions apply. Clear files or upgrade your plan.","penzor.unified.warn":"Unified storage is nearly full. This is a notice only; no new sync or upload restrictions apply.","penzor.unified.accounting":"includes {trash} in trash; history doesn\u2019t count","penzor.unified.writable":"Upload, create, rename and delete","penzor.unified.readonly":"Read-only \xB7 managed at source","penzor.unified.export":"Download, rename and permanently delete","penzor.unified.counted":"Included in unified usage \xB7 notice phase","penzor.unified.policy":"If limits are ever enforced, you\u2019ll hear at least 30 days ahead.","penzor.unified.legacySync":"Existing device sync limit: {used} / {max}","penzor.unified.legacyApps":"Existing app file limit: {used} / {max}","sub.identity":"Plugin ID","sub.identityHint":"A unique ID is assigned after submission. Names may repeat; updates keep the same ID.","sub.description":"Detailed description","sub.tags":"Tags","sub.tagsHint":"Comma separated, up to 8","sub.minAppVersion":"Minimum Forsion version","sub.maxAppVersion":"Maximum version (exclusive)","sub.optional":"Optional","sub.platforms":"Supported platforms","sub.requirementsHint":"Supported: desktop, macos, windows, linux, android, ios, web. Leave blank if unspecified. ZIP requirements are read from the manifest; supplied values must match it.","sub.err.market_requirements_invalid":"Invalid version requirements or platforms.","sub.err.market_requirements_mismatch":"Supplied requirements differ from the ZIP manifest.","sub.mine":"My submissions","page.submission":"Submissions","page.webPages":"My web pages","web.title":"My web pages","web.desc":"Pages you published with Tangu or Coding Space. Anyone with the link can open them; they run sandboxed and can't read visitors' Forsion sign-in.","web.refresh":"Refresh","web.used":"{used} of {limit} published","web.full":"All slots are used. Take one down or upgrade to publish another","web.empty":"No published pages yet","web.emptyHint":'Ask Tangu in a chat to publish a page, for example "publish this page", or choose Publish on a Coding Space project.',"web.updated":"Updated {date}","web.disabled":"Disabled","web.disabledHint":"An administrator disabled this page. Its link doesn't open and it can't be updated.","web.copy":"Copy link","web.unpublish":"Take down","web.unpublishConfirm":"Confirm take down","web.listingPending":"Store listing in review","web.listingApproved":"Listed in store","web.listingRejected":"Store listing rejected","web.listingNote":"Reason: {note}","web.listingApply":"Apply for store listing","web.listingReapply":"Apply again","web.listingWithdraw":"Withdraw application","web.listingDelist":"Remove from store","web.listingDelistConfirm":"Confirm removal","web.listingSummary":"Store summary","web.listingSummaryPh":"One sentence about this page","web.listingHint":"Shown in the store under Web apps after review. Up to 300 characters.","web.listingSubmit":"Submit application","sub.desc":"Manage your submissions, review results and version updates.","sub.new":"New submission","sub.refresh":"Refresh","sub.empty":"No submissions yet","sub.emptyHint":"Share your plugins, skills, Agents or Spaces in the marketplace.","sub.name":"Name","sub.summary":"Summary","sub.type":"Content type","sub.source":"Source","sub.type.skill":"Skill","sub.type.agent":"Agent","sub.type.plugin":"Plugin","sub.type.space":"Space","sub.type.theme":"Theme","sub.type.amadeus_plugin":"Amadeus plugin","sub.pending":"Pending review","sub.approved":"Published","sub.rejected":"Rejected","sub.pendingVersion":"v{version} update pending review","sub.rejectedVersion":"v{version} update rejected","sub.submit":"Submit for review","sub.submitted":"Submitted. The review result appears here and in your inbox.","sub.updated":"Update submitted for review. The published version stays available until then; the result goes to your inbox.","sub.repo":"Public GitHub repository","sub.npm":"Public npm package","sub.repoHint":"README and Releases come from the repository; its owner is shown as the publisher.","sub.npmHint":"Package metadata comes from npm; the public repository owner is shown as the publisher.","sub.reviewHint":"New versions require review before distribution. Your Forsion account manages the submission.","sub.zipHint":"Up to 50 MB. Include the required manifest and entry files.","sub.filter":"Filter by status","sub.all":"All","sub.noResults":"No matching submissions","sub.downloads":"{n} downloads","sub.errName":"Enter a name.","sub.errSource":"Enter a public repository URL or npm package name.","sub.errZip":"Choose a ZIP archive.","sub.errLarge":"ZIP archives must not exceed 50 MB.","sub.err.market_npm_invalid":"The npm package is unavailable or does not meet the plugin requirements.","sub.err.market_npm_source":"Publish the new version on npm for review.","sub.err.market_github_source":"Publish a GitHub Release for review.","sub.err.market_not_found":"Submission unavailable. Refresh and retry.","sub.err.market_zip_required":"Choose a ZIP archive.","sub.err.market_zip_invalid":"The ZIP structure does not meet the publishing requirements.","sub.err.market_zip_too_large":"ZIP archives must not exceed 50 MB.","sub.err.market_version_required":"The package has no version. Add one to the manifest (for skills, version or metadata.version in SKILL.md) and repackage.","sub.err.market_version_invalid":"Enter a valid version.","sub.err.market_version_mismatch":"The version does not match the manifest.","sub.err.market_version_not_newer":"The new version must be newer than the published version.","sub.err.market_icon_invalid":"Use a square PNG icon between 64 and 512 px.","sub.err.market_duplicate":"This content has already been submitted. Manage the existing submission.","sub.err.market_update_pending":"An update is already awaiting review.","sub.err.market_stale":"The submission has changed. Refresh and retry.","sub.notNewer":"The package says v{version}; it must be newer than the Store\u2019s v{current}.","sub.reqNone":"No version range or platforms declared","sub.dropTitle":"Drop a ZIP here, or click to choose one","sub.dropHint":"Up to 50 MB. It is checked first, not submitted yet.","sub.dropReplace":"{size} \xB7 Drop or click to replace","sub.checkType":"Type","sub.checkVersion":"Version","sub.checkIcon":"Icon","sub.checkReadme":"README","sub.checkReq":"Requirements","sub.checkWarn":"Note","sub.iconYes":"icon.png found in the package","sub.iconNo":"No icon.png; the card shows the type icon","sub.readmeYes":"Uses README.md from the package","sub.readmeKeep":"No README.md in the package; the current one stays","sub.readmeNo":"No README.md in the package","sub.warn.no_manifest":"No manifest found in the package","sub.warn.type_mismatch":"The package type differs from this submission\u2019s type","sub.warn.tag_version_mismatch":"The release tag differs from the package version","sub.warn.id_slug_mismatch":"The package id differs from the installed folder name; users would end up with a second copy","sub.warn.engine_slug_mismatch":"The engine plugin folder name differs from its id","sub.warn.no_entry":"The Amadeus plugin has no main.js entry","sub.warn.has_node_modules":"The package includes node_modules, which is large and usually unneeded","sub.zipListedNote":"Until it\u2019s approved, the Store keeps serving the published version. The review result goes to your inbox.","sub.zipUnlistedNote":"Submitting replaces the current package and sends it back for review.","sub.submitVersion":"Submit v{version} for review","sub.checkNew":"Check for a new version","sub.checkAgain":"Check again","sub.upToDate":"The latest upstream version is v{version} and the Store has v{current}. Publish a new version, then check again.","sub.upstreamLatest":"Latest upstream: v{version}","sub.releaseTag":"Release {tag}","sub.storeHas":"Store has v{version}","sub.githubNote":"Once approved, the Store pins v{version}. After your next GitHub release, come back and check again.","sub.npmNote":"Once approved, the Store pins v{version}. After your next npm release, come back and check again.","sub.secVersion":"Version","sub.secInfo":"Store details","sub.secHistory":"History","sub.edit":"Edit","sub.unset":"Not set","sub.infoNote":"No package or new version needed. Changes to a published item are reviewed too; until then the Store shows the current details.","sub.submitInfo":"Submit changes","sub.back":"Back to list","sub.pendingInfo":"Details change pending review","sub.rejectedInfo":"Details change rejected","sub.pendingHint":"The Store stays unchanged until approval. The review result goes to your inbox.","sub.inReview":"Waiting for its first review. The result goes to your inbox.","sub.histApproved":"v{version} approved","sub.histSubmitted":"Submitted","sub.resubmitted":"Resubmitted for review. The result goes to your inbox.","sub.infoSubmitted":"Changes submitted for review. The Store shows the current details until then.","sub.err.market_no_release":"This repository has no GitHub release yet. The Store pins a version, so publish a release on GitHub, then check again.","sub.err.market_no_changes":"Nothing changed.","sub.err.market_dryrun_unsupported":"GitHub and npm submissions can\u2019t be checked in advance. Submit them for review.","page.account":"Account","page.membershipUsage":"Membership & usage","page.membershipQuota":"Membership & quota","page.pointsInvite":"Points & invites","page.helpDiagnostics":"Help & diagnostics","account.details.title":"Sign-in & details","account.details.desc":"Edit your photo, nickname and bio under Profile.","account.details.username":"Username","diag.unavailable":"This host does not support diagnostic data. Update Forsion and try again.","page.profile":"Profile","page.quota":"Quota & points","page.backpack":"Backpack","page.security":"Security","page.usage":"Usage","page.feedback":"Feedback","store.group":"Membership & points","store.membership":"Membership","store.membership.desc":"Upgrade your plan for more daily and weekly quota","store.points":"Points","store.points.desc":"Buy points and use them to redeem items","store.items":"Items","store.items.desc":"Items you can redeem with points. Redeemed items go to your backpack","store.status":"Plan and points","store.tier":"Current plan","store.balance":"Points balance","store.choosePlan":"Choose a plan","store.payHint":"You pay on the payment page in your browser. This page refreshes when you come back","store.payOff":"Purchases are unavailable right now","store.period":"Billing period","store.period.monthly":"Monthly","store.period.quarterly":"Quarterly","store.period.yearly":"Yearly","store.per.monthly":"/ month","store.per.quarterly":"/ quarter","store.per.yearly":"/ year","store.currentTier":"Current plan","store.pay":"Pay","store.payPrice":"Pay {price}","store.noPlans":"No plans are available right now","store.packs":"Point packs","store.packsHint":"You pay on the payment page in your browser. Points arrive right after payment","store.noPacks":"No point packs are available right now","store.kind.pack":"Point pack","store.kind.card":"Consumable","store.kind.code":"Redeem code","store.kind.item":"Item","store.nPoints":"{n} points","store.instant":"Arrives right after payment","store.redeemTitle":"Redeem with points","store.redeemHint":"Redeeming with points completes right here. Items go to your backpack","store.redeem":"Redeem for {n} points","store.redeemConfirm":"Confirm: spend {n} points","store.redeemed":"Redeemed. The item is in your backpack","store.uncertain":"No response came back. Check your backpack before you try again","store.soldOut":"Sold out","store.left":"{n} left","store.toBackpack":"Goes to your backpack","store.limitReached":"You've reached the purchase limit","store.unavailable":"This item can't be redeemed right now","store.noItems":"Nothing to redeem right now","store.itemsOff":"Item redemption isn't available yet","store.openBackpack":"Open backpack","backpack.desc":"View the items you have collected. Select a slot for details.","backpack.refresh":"Refresh","backpack.total":"{n} items","backpack.grid":"Backpack items","backpack.slot":"{name}, quantity {n}","backpack.item":"Item","backpack.empty":"Your backpack is empty","backpack.emptyHint":"Items you redeem or receive will appear here.","backpack.select":"Select an item to view details","backpack.details":"Item details","backpack.quantity":"Quantity","backpack.acquired":"Acquired","backpack.source":"Received through","backpack.source.points":"Points exchange","backpack.source.admin":"Gift","backpack.source.reward":"Reward","backpack.source.other":"Cloud account","backpack.consumable":"Consumable","backpack.voucher":"Voucher","backpack.getCards":"Redeem reset cards","backpack.manageCards":"Use or redeem","backpack.reveal":"Reveal key","backpack.copyKey":"Copy key","backpack.noKey":"This item has no key.","backpack.use":"Use","backpack.confirmUse":"Confirm use","backpack.consumeConfirm":"Using this item consumes one copy.","backpack.collectible":"Collectible","backpack.effect.points":"+{n} points","backpack.effect.cards":"+{n} reset cards","backpack.effect.quota":"Reset daily and weekly quota","backpack.rarity.common":"Common","backpack.rarity.rare":"Rare","backpack.rarity.epic":"Epic","backpack.rarity.legendary":"Legendary","backpack.unavailable":"This item is no longer available. Refresh your backpack.","backpack.notUsable":"This item cannot be used.","backpack.quotaUnavailable":"Use cloud AI to initialize your quota before using this item.","common.cancel":"Cancel","common.copied":"Copied","common.copyFailed":"Couldn't copy","common.done":"Done","common.loadFailed":"Couldn't load","common.loadMore":"Load more","common.loading":"Loading\u2026","common.openInBrowser":"Open in browser","common.retry":"Retry","common.save":"Save","common.thisWeek":"This week","common.today":"Today","common.unlimited":"Unlimited","ann.eyebrow":"FORSION \xB7 Announcement","ann.close":"Close","ann.ok":"Got it","signin.button":"Sign in to Forsion","signin.desc":"Sign in to your Forsion account to manage your account, quota, security, submissions and feedback here.","signin.pending":"Waiting for you to finish in your browser\u2026","signin.deviceHint":"Your browser opens the sign-in page on its own. If it doesn't, scan the code with your phone or open the link below, and check that the code matches.","signin.code":"Code","signin.openLink":"Open sign-in page","signin.copyLink":"Copy link","signin.qrLabel":"Sign-in QR code","account.profile.title":"Profile","account.profile.desc":"Your photo and nickname, plus the phone and email linked to your account","account.avatar.change":"Change photo","account.avatar.saved":"Photo updated","account.nickname.edit":"Edit nickname","account.nickname.label":"Nickname","account.nickname.saved":"Nickname updated","account.role.admin":"Admin","account.username":"Username {name}","account.contact.phone":"Phone","account.contact.email":"Email","account.contact.unbound":"Not linked","account.contact.manage":"Manage in Security","account.web.open":"Open the account center in your browser","account.web.desc":"Cloud storage, AI Brain and themes are managed in the web account center.","member.title":"Membership","member.desc":"Your tier, plan and expiry date","member.upgrade":"Upgrade membership","member.renew":"Renew","member.freeName":"Free plan","member.freeHint":"Upgrade to get more AI quota","member.expires":"Expires {date}","member.noExpiry":"No expiry","member.loadFailed":"Couldn't load your membership.","session.title":"Sign-in","session.desc":"Manage your sign-in on this device","local.title":"Accounts on this computer","local.desc":"Switch between accounts you've signed in with","local.current":"Current","local.switch":"Switch","local.add":"Sign in to another account","local.signOut":"Sign out","local.empty":"No saved accounts yet","local.loadFailed":"Couldn't read the account list","diag.title":"Diagnostic data","diag.desc":"Helps us troubleshoot problems and improve Forsion. Off by default.","diag.enable":"Upload diagnostic data","diag.enableDesc":"When this is on, this computer periodically uploads a snapshot of its Forsion setup to your Forsion account, where the Forsion team can view it. The Forsion team sets how often, once a day by default. You can turn it off at any time.","diag.collected":"What's uploaded","diag.item.app":"App and system versions, this computer's name, and its free memory and disk space","diag.item.settings":"Your model and voice choices, the switches and numeric values in background agent and plugin settings, and the names and on/off state of MCP servers and message channels","diag.item.agents":"Agent and team configuration (options such as name and model; descriptions and prompts are recorded by length only, and their text falls under the personas, memory and evolution switch below)","diag.item.plugins":"Names and versions of installed plugins, skills, themes and Spaces","diag.item.runs":"Run records from the last 7 days: each run's status and error reason, usage and timing of model calls and tools (no conversation text, and nothing those tools read or wrote), and the engine's recent log output","diag.notCollected":"Never uploaded: the sign-in credentials and API keys saved on this computer, your note files, agent libraries, or plugin data.","diag.sessions":"Include conversations","diag.sessionsDesc":"Conversations on this computer: the text of your messages and the agent's replies, the agent's reasoning and the names of the tools it used, including the background work of team members, discussions and delegated tasks. Each upload only includes what hasn't been uploaded yet, going back at most 7 days. What those tools read or wrote and the attachments themselves are left out; file names that appear in messages, and anything the agent repeated from your notes or files in its replies, are included. Keys in common formats are masked; everything else is uploaded as is. If you'd rather not share them, turn this off before you turn uploads on.","diag.memory":"Include agent personas, memory and evolution records","diag.memoryDesc":"Each agent's persona (including the description and developer instructions in its configuration), and what the agent has built up on its own: its memory and the memory candidates it hasn't consolidated yet, its evolution record, its collaboration notes for you, the last 7 days of its logs and memory-consolidation activity, and project memory; plus your teams' charters and your user profile. These are the instructions you wrote for your agents and teams, and the facts they noted about you and your work from conversations. Each upload carries their current content (very long ones are cut short). Keys in common formats are masked; everything else is uploaded as is. If you'd rather not share them, turn this off before you turn uploads on.","diag.activity":"Include activity log","diag.activityDesc":"Your activity records, which include the first few dozen characters of conversations and the names of note files. Each upload only includes what hasn't been uploaded yet, going back at most 7 days. If you'd rather not share them, turn this off before you turn uploads on.","diag.last":"Last upload: {time}","diag.noUpload":"Nothing uploaded yet","diag.freq.hour":"every hour","diag.freq.hours":"every {n} hours","diag.freq.day":"once a day","diag.freq.days":"every {n} days","diag.freq.manual":"only when the Forsion team requests it","diag.retention":"The cloud keeps this computer's snapshots from the last {n} days. Turning this off stops uploads; snapshots already uploaded stay in the cloud. To have them deleted, let us know under Feedback.","diag.uploadNow":"Upload now","diag.uploaded":"Uploaded","diag.failed":"Upload failed: {reason}","quota.ai.title":"AI quota","quota.ai.desc":"What's left today and this week; a quota reset card restores it","quota.resetDaily":"Resets daily at 0:00 (Beijing time)","quota.resetWeekly":"Resets {date} at 0:00 (Beijing time)","card.title":"Quota reset card","card.desc":"Restores today's and this week's AI quota to 100%","card.owned":"You have {n}","card.use":"Use one","card.useConfirm":"Confirm","card.used":"Used 1 quota reset card","card.left":"{n} left","card.noneHint":"You have no quota reset cards left. You can exchange points for more.","card.exchange":"Exchange points","card.price":"{price} points each, 1\u201350 at a time","card.count":"Number of cards","card.cost":"Costs {cost} points","card.countHint":"Enter 1\u201350","card.exchangeButton":"Exchange","card.exchangeConfirm":"Spend {cost} points","card.exchanged":"Quota reset cards added: {n}","points.title":"Points","points.desc":"Use points to get quota reset cards","points.balance":"Balance","points.balanceFailed":"Couldn't load your balance","points.recharge":"Buy points","bg.title":"Background quota","bg.desc":"Used by Muse and automations, counted separately from your AI quota","bg.autoMain":"Continue with AI quota when used up","bg.autoMainDesc":"When off, Muse and automations pause once the background quota runs out","bg.convert":"Move from AI quota","bg.convertDesc":"Moves a share of your AI quota limit, valid for the current period","bg.convertConfirm":"Move {pct}%","bg.converted":"Moved {pct}% from your AI quota","invite.title":"Invites & codes","invite.desc":"Invite friends to join, or redeem a code you received","invite.myCode":"My invite code","invite.count":"{n} invited","invite.copyCode":"Copy code","invite.copyLink":"Copy invite link","invite.loadFailed":"Couldn't load your invite code","invite.claim":"Enter an invite code","invite.claimDesc":"Within 7 days of signing up, you can enter a friend's invite code","invite.claimPlaceholder":"Friend's invite code","invite.claimSubmit":"Submit","invite.claimed":"Invite code applied","redeem.title":"Redemption code","redeem.desc":"Redeem points, membership or other rewards","redeem.placeholder":"Enter a code","redeem.submit":"Redeem","redeem.success":"Redeemed","redeem.successWith":"Redeemed: {what}","redeem.gotPoints":"{n} points","redeem.gotMembership":"membership","sec.methods.title":"Sign-in methods","sec.methods.desc":"Your phone and email can be used to sign in and reset your password","sec.bind":"Link","sec.change":"Change","sec.phone":"Phone number","sec.email":"Email address","sec.newPhone":"New phone number","sec.newEmail":"New email address","sec.phonePlaceholder":"Mainland China numbers as is; others with +country code","sec.emailPlaceholder":"name@example.com","sec.code":"Verification code","sec.codePlaceholder":"Enter the code","sec.sendCode":"Send code","sec.resendIn":"Resend in {s}s","sec.codeSent":"Code sent","sec.bindSubmit":"Link","sec.phoneBound":"Phone linked","sec.emailBound":"Email linked","sec.devices.title":"Signed-in devices","sec.devices.desc":"If you think someone else is using your account, sign out on every device","sec.logoutAll":"Sign out everywhere","sec.logoutAllDesc":"Including this device: every device has to sign in again","sec.logoutAllConfirm":"Confirm sign out everywhere","sec.logoutAllDone":"Signed out everywhere","pw.title":"Password","pw.desc":"{min}\u2013{max} characters, with a lowercase letter, an uppercase letter and a special character, and no spaces","pw.change":"Change password","pw.modeLabel":"How to change it","pw.mode.current":"With current password","pw.mode.code":"With a verification code","pw.current":"Current password","pw.currentRequired":"Enter your current password","pw.new":"New password","pw.confirm":"Confirm new password","pw.mismatch":"The new passwords don't match","pw.submit":"Change password","pw.submitReset":"Set new password","pw.changed":"Password updated","pw.noPasswordYet":"This account doesn't have a password yet. Set one with a verification code instead.","pw.codeNeedsContact":"Link a phone or email first to set a password with a verification code.","pw.via":"Send the code to","pw.codeTo":"The code goes to {target}","pw.rulesLabel":"Password rules","pw.req.length":"{min}\u2013{max} characters","pw.req.lower":"A lowercase letter","pw.req.upper":"An uppercase letter","pw.req.special":"A special character","pw.req.space":"No spaces","pw.rule.format":"Invalid password","pw.rule.min":"Password must be at least 8 characters","pw.rule.max":"Password can't be longer than 64 characters","pw.rule.space":"Password can't contain spaces","pw.rule.lower":"Password needs a lowercase letter","pw.rule.upper":"Password needs an uppercase letter","pw.rule.special":"Password needs a special character","del.title":"Delete account","del.desc":"Permanently delete your account and all its data. This can't be undone","del.start":"Delete account","del.warn":"Deleting your account removes your account, points, membership, cloud storage and all other data for good.","del.methodLabel":"Verify with","del.byCode":"Verification code","del.byPassword":"Password","del.codeLabel":"Code sent to {target}","del.passwordLabel":"Account password","del.submit":"Delete account","del.confirm":"Delete permanently","del.done":"Account deleted","usage.overview.title":"Overview","usage.overview.desc":"Requests and AI quota used in the selected period","usage.range":"Time range","usage.days":"{n} days","usage.requests":"Requests","usage.successRate":"Success rate","usage.consumption":"AI quota used","usage.ofToday":"Of your daily limit","usage.unlimitedNote":"Your AI quota is unlimited, so usage isn't shown as a percentage.","usage.noLimitNote":"Your daily limit is 0 or unavailable right now, so usage isn't shown as a percentage.","usage.byModel.title":"By model","usage.byModel.desc":"Requests and quota used per model","usage.byApp.title":"By app","usage.byApp.desc":"Requests and quota used per app","usage.col.model":"Model","usage.col.app":"App","usage.col.requests":"Requests","usage.col.consumption":"Quota used","usage.empty":"No usage in this period","usage.appUnknown":"Other","usage.recent.title":"Recent usage","usage.recent.desc":"Each call as a share of your daily limit","usage.recentEmpty":"No usage yet","usage.failed":"Failed","usage.shown":"Showing {shown} of {total}","fb.list.title":"My feedback","fb.list.desc":"Issues and suggestions you've sent; replies show up here","fb.new":"New feedback","fb.empty":"No feedback yet","fb.untitled":"Untitled feedback","fb.unread":"New reply","fb.shown":"Showing {n}","fb.submitted":"Sent. We'll reply as soon as we can","fb.descLabel":"Describe the issue or suggestion","fb.descPlaceholder":"What happened, and what did you expect?","fb.imagesHint":"Attach up to {n} screenshots (5 MB each). You can paste or drop them here.","fb.addImages":"Add screenshots","fb.removeImage":"Remove this image","fb.submit":"Send","fb.back":"Back to list","fb.you":"You","fb.support":"Forsion team","fb.attachment":"Attachment","fb.imagePreview":"View image","fb.closedNote":"This ticket is closed and can't take replies. Send new feedback for a new issue.","fb.replyPlaceholder":"Reply\u2026","fb.replySend":"Send reply","fb.replySent":"Reply sent","fb.status.open":"Open","fb.status.in_progress":"In progress","fb.status.resolved":"Resolved","fb.status.closed":"Closed","err.accountGone":"This account is signed out. Sign in again","err.adminCannotDelete":"Admin accounts can't be deleted here","err.avatarInvalid":"Couldn't read this image. Try another one","err.avatarTooLarge":"This image is too large. Try a smaller one","err.backgroundUnavailable":"Background quota is unavailable right now","err.captcha":"You need to finish a verification check in your browser","err.codeCooldown":"Too many codes requested. Try again shortly","err.codeInvalid":"The code is wrong or has expired","err.codeRequired":"Enter the verification code","err.codeSendFailed":"Couldn't send the code. Try again later","err.currentPasswordWrong":"Your current password is incorrect","err.deleteTargetInvalid":"Codes can only go to the phone or email linked to your account","err.deleteVerifyFailed":"Verification failed, so your account wasn't deleted","err.emailInUse":"This email is already used by another account","err.emailInvalid":"Enter a valid email address","err.featureDisabled":"This feature is turned off for now","err.feedbackEmpty":"Describe the issue or suggestion first","err.feedbackTooLong":"The description is too long (10,000 characters max)","err.generic":"That didn't work. Try again later","err.imageRead":"Couldn't read the image","err.imageTooLarge":"Each image must be 5 MB or less","err.imageType":"Only images can be added","err.insufficientMainQuota":"Your AI quota is used up, so there's nothing to move","err.insufficientPoints":"Not enough points","err.priceChanged":"The reset card price just changed. Check the new price, then confirm the exchange again.","err.invalidCount":"Choose between 1 and 50 cards","err.invalidInviteCode":"This invite code is invalid or has expired","err.inviteAlreadyUsed":"You've already used an invite code","err.inviteEmpty":"Enter an invite code","err.inviteOwnCode":"You can't use your own invite code","err.inviteWindowExpired":"The 7-day window after sign-up has passed","err.loginCodeExpired":"The sign-in code expired. Sign in again","err.loginInProgress":"A sign-in is already in progress","err.loginTimeout":"Sign-in timed out. Try again","err.loginUnsupported":"This cloud doesn't support desktop sign-in","err.network":"Network error. Check your connection and try again","err.noCloudUrl":"Set the cloud address under Connection first","err.noResetCard":"You have no quota reset cards","err.openFailed":"Couldn't open the browser","err.passwordRequired":"Enter your current and new password","err.phoneInUse":"This phone number is already used by another account","err.phoneInvalid":"Enter a valid phone number (with +country code outside mainland China)","err.redeemEmpty":"Enter a code","err.redeemExpired":"This code has expired","err.redeemInactive":"This code is no longer active","err.redeemNotFound":"This code doesn't exist","err.redeemUsedUp":"This code has been used up","err.redeemUserLimit":"You've already redeemed this code","err.replyEmpty":"Write a reply first","err.replyTooLong":"The reply is too long (10,000 characters max)","err.server":"Server error ({status}). Try again later","err.session":"You've been signed out. Sign in again","err.signedOut":"Sign in to Forsion first","err.targetInvalid":"Enter a valid phone number or email","err.ticketNotFound":"This feedback doesn't exist or was deleted","err.webPageGone":"This page doesn't exist or was taken down","err.listingGone":"This page has no store listing","err.listingSummary":"Add a store summary (up to 300 characters)","err.tooFrequent":"Too many attempts. Try again shortly","err.tooManyImages":"You can add up to 5 images","err.unavailable":"This version of Forsion can't do that yet. Update Forsion","profile.unsupported":"This server doesn't have profiles yet","profile.state.private":"Only you can see this","profile.state.public":"Public","profile.state.privateDesc":"Once public, anyone with the address can see your profile without signing in","profile.state.publicDesc":"Anyone with the public address can see it without signing in","profile.decorate":"Decorate","profile.publish":"Make public","profile.makePrivate":"Make private","profile.address":"Public address","profile.copyLink":"Copy link","profile.openPublic":"View public page","profile.nowPublic":"Your profile is now public","profile.nowPrivate":"Your profile is private. The public address no longer opens","profile.bio":"Bio","profile.bioPlaceholder":"Add a short bio","profile.linkAdd":"Add a link","profile.linkRemove":"Remove link","profile.linkInvalid":"Links must start with http:// or https://, or be a plain domain","profile.joined":"Joined {date}","profile.stat.tokens":"Total tokens","profile.stat.activeDays":"Active days","profile.stat.longest":"Longest streak","profile.stat.current":"Current streak","profile.stat.installs":"Work installs","profile.unit.days":"d","profile.works":"Featured works","profile.worksPick":"Choose","profile.worksEmpty":"No published works yet. Publish to the store or as a web app, and they can go here.","profile.worksNone":"Nothing to feature yet. Works appear here once they are in the store or published as a web app.","profile.worksPicked":"{n} of {max} selected","profile.worksAuto":"With none selected, the most installed ones are shown","profile.goSubmit":"Submit a work","profile.workInstalls":"{n} installs","profile.workVisits":"{n} visits","profile.work.skill":"Skill","profile.work.agent":"Agent","profile.work.plugin":"Plugin","profile.work.space":"Space","profile.work.theme":"Theme","profile.work.note":"Notes plugin","profile.work.webapp":"Web app","profile.activity":"Activity","profile.activityDays":"Active on {n} days in the past year","profile.less":"Less","profile.more":"More","profile.badges":"Badges","profile.badgesEmpty":"No badges yet. Streaks, published works and invites all earn one.","profile.badge.early":"Early user","profile.badge.streak":"30-day streak","profile.badge.author":"Author","profile.badge.inviter":"Top inviter","profile.badge.event":"Event keepsake","profile.badgeSub.early":"Joined in {value}","profile.badgeSub.streak":"Longest streak: {value} days","profile.badgeSub.author":"{value} published works","profile.badgeSub.inviter":"Invited {value} friends","profile.badgeSub.event":"Took part in a Forsion event{value}","profile.insights":"Insights","profile.insightsEmpty":"Not enough usage yet. Check back in a few days.","profile.insightModel":"Most used model","profile.insightHours":"Most active hours","profile.deco.skin":"Public page color scheme","profile.deco.mode":"Public page appearance","profile.deco.publicHint":"These two only set what visitors see on the public page. Here the profile follows Forsion's current theme.","profile.deco.cover":"Cover","profile.deco.frame":"Avatar frame","profile.deco.modules":"Sections","profile.skin.cream":"Classic","profile.skin.coral":"Coral","profile.skin.teal":"Teal","profile.skin.lavender":"Lavender","profile.mode.auto":"Auto","profile.mode.light":"Light","profile.mode.dark":"Dark","profile.cover.none":"None","profile.cover.mist":"Mist","profile.cover.contour":"Contour","profile.cover.dots":"Dots","profile.frame.none":"None","profile.frame.ring":"Ring","profile.frame.pro":"Member ring","profile.frameProHint":"The member ring is for paid members.","profile.col.show":"Show","profile.col.public":"Public","profile.moveUp":"Move up","profile.moveDown":"Move down","profile.modulesHint":'"Show" decides whether a section is on your profile. "Public" decides whether visitors see it, once your profile is public.',"profile.mod.stats":"Stats","profile.mod.works":"Works","profile.mod.activity":"Activity","profile.mod.badges":"Badges","profile.mod.insights":"Insights","profile.modDesc.stats":"Total tokens, active days, streaks and installs of your works","profile.modDesc.works":"Works you have published, up to 6","profile.modDesc.activity":"Which days you were active in the past year (shades only, no numbers)","profile.modDesc.badges":"Join year, streaks, publishing, invites and events","profile.modDesc.insights":"Your most used model and most active hours","profile.publishDesc":"Once public, anyone with this address can see your profile without signing in. You decide section by section what visitors see.","profile.publishNever":"Your avatar, nickname, username, bio and links become public too. Your email, phone number, membership expiry, points and quota never appear on your profile.","profile.publishConfirm":"Make public","profile.blocked.machineUsername":"Your current username was generated by the system and contains part of your phone number or email, so making it public would expose that. Change your username on the Account page of the web account center first (each account can do this once), then come back.","profile.blocked.publishBlocked":"An administrator has stopped this profile from being public. Contact us through Feedback if you have questions.","profile.goRename":"Change username","profile.invalid":"This couldn't be saved. Check it and try again","guide.title":"Guide","guide.readOnly":"Read-only","guide.more":"More","guide.unlockAll":"Unlock all","guide.relock":"Unlock level by level","guide.reminders":"Guide reminders","guide.spotlight":"On-screen hints","guide.spotStep":"Step {n} of {total}","guide.figure":"Diagram","guide.openAchievements":"Open achievements","guide.tasks":"Tasks in this chapter","guide.go":"Take me there","guide.desktopOnly":"Do it on your computer","guide.taskDone":"Done","guide.askTangu":"Ask Tangu","guide.progress":"Progress","guide.justUnlocked":"Just unlocked","guide.lockedHint":"Locked","guide.whatsNew":"What's new in {version}","guide.level.lv1":"Lv.1 Getting started","guide.level.lv2":"Lv.2 Finding your way","guide.level.lv3":"Lv.3 Making it yours","guide.level.lv4":"Lv.4 Going further","guide.locked.title":"This chapter is still locked","guide.locked.body":"Finish the tasks in {level} to read the rest.","guide.locked.left":"Still to do:","guide.locked.hint":"Been around a while? Unlock everything from the \xB7\xB7\xB7 menu.","guide.levelProgress":"This level: {done}/{total}","guide.next":"Next level","guide.allDone":"All done","guide.allDoneBody":"You've done every task in the guide. Come back any time.","guide.review":"Look back","guide.ask.hint":'Questions about "{chapter}"? Ask Tangu opens a new chat with this chapter attached.',"guide.ask.placeholder":"What would you like to know?","guide.ask.send":"Start a chat","guide.ask.prompt":`I'm reading the "{chapter}" chapter of the Forsion guide; it's attached below. {question}`,"guide.ask.unavailable":"Chat isn't available here","guide.ask.chatTitle":"Guide Q&A","guide.companion.back":"Back to the guide","guide.companion.close":"Close","guide.toast.taskDone":"Done: {task}","guide.letter.levelTitle":"{level} unlocked: try these next","guide.letter.levelBody":'You finished the previous level, so these chapters are open now. Every task has a "Take me there" button.',"guide.letter.versionTitle":"{n} new things to try in {version}","guide.letter.versionBody":"New in this version, ready to try:","guide.letter.open":"Open the guide","guide.status.done":"Done","guide.cmd.open":"Open the guide","penzor.title":"Penzor Cloud","penzor.overview":"Overview","penzor.places":"Places","penzor.details":"Details","penzor.ledger.sync":"Vault sync","penzor.ledger.ama":"Amadeus Cloud","penzor.ledger.apps":"App files","penzor.ledger.exports":"Exports","penzor.trash":"Trash","penzor.items":"{n} items","penzor.total.sub":"Stored in Forsion Cloud \xB7 updated {time}","penzor.justNow":"just now","penzor.ofMax":"/ {max}","penzor.card.syncSub":"{n} vaults \xB7 last write {time}","penzor.card.syncSubNone":"{n} vaults","penzor.card.syncFoot":"Files over {size} are not uploaded","penzor.card.syncWarn":"Almost full: after {max}, new files stop uploading; files already in the cloud keep syncing","penzor.card.amaSmall":"Not counted in your quota","penzor.card.amaSub":"{n} cloud vaults","penzor.card.amaFoot":"Notes and attachments on the Cloud side of Amadeus","penzor.card.appsFoot":"Trash: {n} items \xB7 {size}","penzor.card.appsWarn":"Almost full: after {max}, apps can't save new files. Trash counts too, so emptying it frees space","penzor.card.expSmall":"{n} files","penzor.card.expSub":"Latest: {name} \xB7 {time}","penzor.card.expFoot":"Files exported from apps","penzor.card.none":"Nothing yet","penzor.largest":"Largest files","penzor.col.name":"Name","penzor.col.size":"Size","penzor.col.mtime":"Modified","penzor.col.device":"Written by","penzor.col.deleted":"Deleted","penzor.col.origin":"Original location","penzor.col.app":"From","penzor.sort.mtime":"By modified","penzor.sort.size":"By size","penzor.sort.name":"By name","penzor.search":"Search file names here","penzor.sync.thisDevice":"Syncing on this device","penzor.meta.files":"{size} \xB7 {n} files","penzor.sync.last":"Last write {time} \xB7 {device}","penzor.sync.lastNoDevice":"Last write {time}","penzor.sync.devices":"{n} devices sync this vault","penzor.sync.meter":"Vault sync shares {max}; {used} used","penzor.apps.meter":"App files share {max}; {used} used (trash included)","penzor.apps.by":"Written by {app}","penzor.ama.notCounted":"Not counted in your quota","penzor.ama.open":"Open in Amadeus","penzor.trash.meta":"{n} items \xB7 {size}","penzor.trash.note":"Space frees up once items are deleted permanently","penzor.trash.emptyBtn":"Empty trash","penzor.act.download":"Download","penzor.act.rename":"Rename","penzor.act.move":"Move to\u2026","penzor.act.trash":"Move to trash","penzor.act.delete":"Delete","penzor.act.restore":"Restore","penzor.act.purge":"Delete permanently","penzor.act.copyName":"Copy vault name","penzor.act.openSync":"Open sync settings","penzor.act.refresh":"Refresh","penzor.act.up":"Up one level","penzor.toast.trashed":"Moved \u201C{name}\u201D to trash","penzor.toast.restored":"Restored \u201C{name}\u201D","penzor.toast.purged":"Deleted \u201C{name}\u201D permanently","penzor.toast.emptied":"Trash emptied","penzor.toast.downloaded":"Saved to Downloads: {name}","penzor.toast.renamed":"Renamed to \u201C{name}\u201D","penzor.toast.moved":"Moved to \u201C{name}\u201D","penzor.toast.versionRestored":"Restored version {n}","penzor.toast.copied":"Vault name copied","penzor.toast.failed":"That didn't work: {reason}","penzor.confirm.purge":"Delete \u201C{name}\u201D permanently? This can't be undone.","penzor.confirm.empty":"Empty the trash? {n} items will be deleted permanently.","penzor.confirm.deleteExport":"Delete \u201C{name}\u201D? Exports have no trash, so this can't be undone.","penzor.cancel":"Cancel","penzor.side.where":"Location","penzor.side.mtime":"Modified","penzor.side.device":"Written by","penzor.side.thisDevice":"{name} (this device)","penzor.side.from":"From","penzor.side.versions":"Versions","penzor.side.versionsNone":"None","penzor.side.versionRow":"Version {n} \xB7 {time} \xB7 {size}","penzor.side.restoreVersion":"Restore this version","penzor.side.deletedAt":"Deleted","penzor.side.origin":"Original location","penzor.side.inner":"{n} more items inside come back with it","penzor.side.inTrash":"In trash \xB7 {size}","penzor.side.readonlySync":"Files in a synced vault are changed on your devices. Deleting one here would delete it on every device that syncs {vault}, so here you can only view and download.","penzor.side.readonlyAma":"Notes and attachments are changed in Amadeus. Deleting an attachment here would leave the notes that use it with missing images, so here you can only view and download.","penzor.side.exportNote":"Exports have no trash: deleting is permanent.","penzor.side.none":"Select a file to see its details","penzor.side.folder":"Folder \xB7 {n} items","penzor.side.folderPlain":"Folder","penzor.move.title":"Move to","penzor.move.root":"Top of {app}","penzor.move.here":"Move here","penzor.move.noFolders":"No folders at this level","penzor.rename.save":"Save","penzor.empty.title":"Nothing in Penzor Cloud yet","penzor.empty.lead":"These show up here once they're in the cloud:","penzor.empty.sync":"Pick Penzor Cloud as the remote service in Settings \u203A Sync, and your local vault syncs here","penzor.empty.ama":"Notes you write on the Cloud side of Amadeus","penzor.empty.apps":"Files apps save to the cloud or export","penzor.empty.openSync":"Open sync settings","penzor.out.title":"Sign in to see your Penzor Cloud","penzor.out.lead":"Penzor Cloud holds the vaults you sync to Forsion Cloud, your Amadeus Cloud notes and the files apps keep in the cloud.","penzor.out.signIn":"Sign in to Forsion","penzor.loading":"Loading\u2026","penzor.err":"Couldn't load: {reason}","penzor.folderEmpty":"No files here","penzor.noMatch":"No file names contain \u201C{q}\u201D","penzor.cmd.open":"Open Penzor Cloud","penzor.unreachable":"Can\u2019t reach Forsion Cloud. Try again later","penzor.toast.emptyPartial":"{n} items in the trash couldn\u2019t be deleted","penzor.sort.deleted":"By deleted","penzor.side.versionsN":"{n}","penzor.drive":"My drive","penzor.drive.meta":"Counts toward the {max} for app files","penzor.drive.empty":"Nothing here yet. Drag files in, or click Upload.","penzor.act.upload":"Upload","penzor.act.uploadMore":"More upload options","penzor.act.uploadFiles":"Upload files\u2026","penzor.act.uploadFolder":"Upload folder\u2026","penzor.act.uploadHere":"Upload here\u2026","penzor.act.newFolder":"New folder","penzor.act.clearSel":"Clear selection","penzor.newFolder.default":"New folder","penzor.sel.bar":"{n} selected \xB7 {size}","penzor.sel.title":"{n} selected","penzor.sel.sub":"{size} \xB7 {files} files","penzor.sel.subDirs":"{size} \xB7 {files} files, {dirs} folders","penzor.sel.download":"Download {n}","penzor.sel.saveTo":"Saves to","penzor.sel.saveToValue":"Downloads / {folder}","penzor.sel.noDirs":"Folders can\u2019t be downloaded yet; only the selected files will be.","penzor.download.folder":"Penzor Cloud {date}","penzor.drop.to":"Drop to upload to \u201C{place}\u201D","penzor.tx.busy":"Transferring {n}","penzor.tx.allDone":"All done","penzor.tx.failedN":"{n} didn\u2019t finish","penzor.tx.counts":"{up} up \xB7 {down} down","penzor.tx.eta":"about {eta} left","penzor.tx.doneN":"{n} finished","penzor.tx.restDone":"The other {n} finished","penzor.tx.pill":"{counts} \xB7 {pct}%","penzor.tx.queued":"Queued","penzor.tx.paused":"Paused \xB7 resumes from the start","penzor.tx.uploaded":"Uploaded \xB7 {time}","penzor.tx.downloaded":"Downloaded \xB7 {time}","penzor.tx.canceled":"Canceled","penzor.tx.left":"{eta} left","penzor.tx.sec":"{n}s","penzor.tx.min":"{n} min","penzor.tx.pause":"Pause","penzor.tx.resume":"Resume","penzor.tx.cancel":"Cancel","penzor.tx.retry":"Retry","penzor.tx.remove":"Remove","penzor.tx.locate":"Show","penzor.tx.reveal":"Show in folder","penzor.tx.pauseAll":"Pause all","penzor.tx.resumeAll":"Resume all","penzor.tx.retryAll":"Retry all","penzor.tx.clearDone":"Clear finished","penzor.tx.clear":"Clear","penzor.tx.collapse":"Collapse","penzor.tx.expand":"Show transfers","penzor.tx.quota":"Not enough space: {size} short","penzor.tx.quotaSub":"Nothing in this batch was started","penzor.tx.freeSpace":"Free up space in Trash","penzor.err.too_large":"Over the 50 MB per-file limit ({size}); can\u2019t upload it yet","penzor.err.quota":"Not enough cloud space","penzor.err.network":"Connection lost at {pct}%","penzor.err.account_changed":"You switched accounts, so this one stopped","penzor.err.download_unavailable":"This host cannot save downloads yet. Update Forsion","penzor.err.download_failed":"The file was not saved. Try downloading it again","penzor.err.not_signed_in":"Not signed in","penzor.err.gone":"The file is no longer on this device","penzor.err.popup_blocked":"Your browser blocked the new tab. Allow pop-ups for this site and try again","penzor.err.changed":"The file changed while uploading. Try again","penzor.err.storage_unavailable":"Cloud storage is unavailable right now","penzor.err.other":"Didn\u2019t finish ({code})","penzor.err.too_many":"Up to {n} files at a time. Add them in smaller batches","penzor.toast.upDoneOne":"Uploaded \u201C{name}\u201D","penzor.toast.upDoneMany":"Uploaded {n} files","penzor.toast.downDoneMany":"Downloaded {n} files to Downloads","penzor.toast.txFailed":"{n} transfers didn\u2019t finish. Open Penzor Cloud to check","penzor.toast.folderExists":"There\u2019s already a folder called \u201C{name}\u201D","penzor.toast.trashedN":"Moved {n} items to the trash","penzor.toast.movedN":"Moved {n} items to \u201C{name}\u201D","penzor.toast.batchPartial":"{n} items didn\u2019t go through","penzor.sync.title":"Sync","penzor.sync.onN":"{n} on","penzor.sync.allOff":"All off","penzor.sync.waiting":"Waiting for you","penzor.sync.badgeWaiting":"{n} on \xB7 1 waiting for you","penzor.sync.running":"Syncing {pct}%","penzor.sync.runningPlain":"Syncing","penzor.sync.metaDevice":"This computer: {name}","penzor.sync.metaLast":"Last synced {time}","penzor.sync.metaNever":"Not synced yet","penzor.sync.every":"Every {n} min","penzor.sync.everyHours":"Every {n} h","penzor.sync.manual":"Manual","penzor.sync.onStart":"once at startup","penzor.sync.minAgo":"{n} min ago","penzor.sync.hoursAgo":"{n} h ago","penzor.sync.notesNamed":"Notes vault \u201C{name}\u201D","penzor.sync.notesPlain":"This computer\u2019s notes vault","penzor.sync.notesDesc":"The whole local vault, kept the same on your other computers","penzor.sync.agents":"Agents & memory","penzor.sync.agentsDesc":"Your agents\u2019 memory, logs, skills and working notes, plus your profile and default calendar","penzor.sync.conflictsN":"Conflict copies: {n}","penzor.sync.conflictsHint":"Files changed on both sides are kept twice: the other version is saved as a copy with \u201Cconflict\u201D in its name, in that agent\u2019s folder (or your profile folder)","penzor.sync.pluginsPending":"Changes not uploaded yet: {n} plugins","penzor.sync.agentsN":"Agents: {n}","penzor.sync.plugins":"Plugin data","penzor.sync.pluginsDesc":"Settings and data your plugins keep","penzor.sync.pluginsN":"Plugins: {n}","penzor.sync.off":"Off","penzor.sync.done":"Synced","penzor.sync.doneSize":"Synced \xB7 {size}","penzor.sync.firstPending":"Waiting for the first sync","penzor.sync.failed":"Last sync failed","penzor.sync.overQuota":"Over the limit, some files not uploaded","penzor.sync.to":"Syncing to {name}","penzor.sync.toFolder":"Syncing to a local folder","penzor.sync.decideAbove":"Choose in the card above","penzor.sync.kvSchedule":"Schedule","penzor.sync.kvDirection":"Direction","penzor.sync.kvSkipped":"Not uploaded","penzor.sync.kvWhere":"In the cloud","penzor.sync.change":"Change","penzor.sync.open":"Open","penzor.sync.dir.both":"Both ways","penzor.sync.dir.push":"Upload only","penzor.sync.dir.pull":"Download only","penzor.sync.skippedN":"{n} files over {size}","penzor.sync.where":"{ledger} \u203A {vault}","penzor.sync.whereUsed":"{ledger} \u203A {vault} \xB7 {used} / {max}","penzor.sync.devicesTitle":"Devices syncing","penzor.sync.thisOne":"This computer","penzor.sync.lastWrite":"Last write {time}","penzor.sync.noDevices":"No devices are syncing yet","penzor.sync.phoneTitle":"What your phone and the web see","penzor.sync.phoneTip":"Your phone and the web read the cloud vault (the cloud side of Amadeus, {size}) directly. It always syncs, and it\u2019s a separate copy from this computer\u2019s notes vault above. To see a folder from this computer on your phone, right-click it in your notes and sync it to the cloud vault.","penzor.sync.phoneTipPlain":"Your phone and the web read the cloud vault (the cloud side of Amadeus) directly. It always syncs, and it\u2019s a separate copy from this computer\u2019s notes vault above. To see a folder from this computer on your phone, right-click it in your notes and sync it to the cloud vault.","penzor.sync.foot":"Schedule, direction and other storage (Dropbox / S3 / WebDAV) are in","penzor.sync.footLink":"Settings \u203A Sync","penzor.sync.askTitle":"There\u2019s already a notes vault in the cloud","penzor.sync.askCloud":"The cloud copy is from {device}: {files} files \xB7 {size}.","penzor.sync.askCloudNoDevice":"The cloud copy: {files} files \xB7 {size}.","penzor.sync.askLocal":"This computer has {local} files the cloud copy doesn\u2019t, and {conflicts} that differ.","penzor.sync.askMerge":"Merge both","penzor.sync.askCloudBtn":"Use the cloud copy","penzor.sync.askSkip":"Don\u2019t sync notes on this computer yet","penzor.sync.askExplain":"Merge keeps both sides; files that differ are saved again as a \u201C(conflict)\u201D copy. Use the cloud copy first moves this computer\u2019s differing files into a \u201C{backup}\u201D folder next to the vault, then downloads the cloud copy.","penzor.sync.askConfirm":"This computer\u2019s differing files move to \u201C{backup}\u201D first, then the cloud copy replaces them.","penzor.sync.askConfirmGo":"Move them and use the cloud copy","penzor.sync.backupName":"{name} backup before sync {date}","penzor.sync.quotaTitle":"Your notes vault is {size}, over the {max} limit of {ledger}","penzor.sync.quotaTitlePlain":"Your notes vault is over the {ledger} limit","penzor.sync.quotaBody":"Files that don\u2019t fit stay on this computer. Nothing is deleted, they just aren\u2019t uploaded, and everything else keeps syncing.","penzor.sync.quotaLarge":"Single files over {size} are never uploaded ({n}).","penzor.sync.quotaSee":"See what\u2019s not uploaded"},vl={zh:Kf,en:Jf},ht=e=>e==="en"?"en":"zh";function _e(e,t,n){let r=vl[e][t]??vl.zh[t]??t;return n?r.replace(/\{(\w+)\}/g,(a,i)=>i in n?String(n[i]):a):r}var Rr=e=>(t,n)=>_e(e,t,n),Wt=(e,t)=>"raw"in e?e.raw:t(e.key,e.vars);var yl=`
|
|
68
|
+
`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${Nt(e,!0)}</code>`}br(e){return"<br>"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,text:n,tokens:r,autolink:a}){let i=a?Nt(n,!0):this.parser.parseInline(r),s=Ds(e);if(s===null)return i;e=Nt(s,a);let l='<a href="'+e+'"';return t&&(l+=' title="'+Nt(t)+'"'),l+=">"+i+"</a>",l}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let a=Ds(e);if(a===null)return Nt(n);e=a;let i=`<img src="${Nt(e)}" alt="${Nt(n)}"`;return t&&(i+=` title="${Nt(t)}"`),i+=">",i}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:Nt(e.text)}},Ea=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}checkbox({raw:e}){return e}},Jt=class ka{options;renderer;textRenderer;constructor(t){this.options=t||Jn,this.options.renderer=this.options.renderer||new Sr,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new Ea}static parse(t,n){return new ka(n).parse(t)}static parseInline(t,n){return new ka(n).parseInline(t)}parse(t){this.renderer.parser=this;let n="";for(let r=0;r<t.length;r++){let a=t[r];if(this.options.extensions?.renderers?.[a.type]){let s=a,l=this.options.extensions.renderers[s.type].call({parser:this},s);if(l!==!1||!["space","hr","heading","code","table","blockquote","list","checkbox","html","def","paragraph","text"].includes(s.type)){n+=l||"";continue}}let i=a;switch(i.type){case"space":{n+=this.renderer.space(i);break}case"hr":{n+=this.renderer.hr(i);break}case"heading":{n+=this.renderer.heading(i);break}case"code":{n+=this.renderer.code(i);break}case"table":{n+=this.renderer.table(i);break}case"blockquote":{n+=this.renderer.blockquote(i);break}case"list":{n+=this.renderer.list(i);break}case"checkbox":{n+=this.renderer.checkbox(i);break}case"html":{n+=this.renderer.html(i);break}case"def":{n+=this.renderer.def(i);break}case"paragraph":{n+=this.renderer.paragraph(i);break}case"text":{n+=this.renderer.text(i);break}default:{let s='Token with "'+i.type+'" type was not found.';if(this.options.silent)return console.error(s),"";throw new Error(s)}}}return n}parseInline(t,n=this.renderer){this.renderer.parser=this;let r="";for(let a=0;a<t.length;a++){let i=t[a];if(this.options.extensions?.renderers?.[i.type]){let l=this.options.extensions.renderers[i.type].call({parser:this},i);if(l!==!1||!["escape","html","link","image","checkbox","strong","em","codespan","br","del","text"].includes(i.type)){r+=l||"";continue}}let s=i;switch(s.type){case"escape":{r+=n.text(s);break}case"html":{r+=n.html(s);break}case"link":{r+=n.link(s);break}case"image":{r+=n.image(s);break}case"checkbox":{r+=n.checkbox(s);break}case"strong":{r+=n.strong(s);break}case"em":{r+=n.em(s);break}case"codespan":{r+=n.codespan(s);break}case"br":{r+=n.br(s);break}case"del":{r+=n.del(s);break}case"text":{r+=n.text(s);break}default:{let l='Token with "'+s.type+'" type was not found.';if(this.options.silent)return console.error(l),"";throw new Error(l)}}}return r}},qo=class{options;block;constructor(e){this.options=e||Jn}static passThroughHooks=new Set(["preprocess","postprocess","processAllTokens","emStrongMask"]);static passThroughHooksRespectAsync=new Set(["preprocess","postprocess","processAllTokens"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?Xt.lex:Xt.lexInline}provideParser(e=this.block){return e?Jt.parse:Jt.parseInline}},Pa=class{defaults=wa();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=Jt;Renderer=Sr;TextRenderer=Ea;Lexer=Xt;Tokenizer=zr;Hooks=qo;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case"table":{let a=r;for(let i of a.header)n=n.concat(this.walkTokens(i.tokens,t));for(let i of a.rows)for(let s of i)n=n.concat(this.walkTokens(s.tokens,t));break}case"list":{let a=r;n=n.concat(this.walkTokens(a.items,t));break}default:{let a=r;this.defaults.extensions?.childTokens?.[a.type]?this.defaults.extensions.childTokens[a.type].forEach(i=>{let s=a[i].flat(1/0);n=n.concat(this.walkTokens(s,t))}):a.tokens&&(n=n.concat(this.walkTokens(a.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let r={...n};if(r.async=this.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(a=>{if(!a.name)throw new Error("extension name required");if("renderer"in a){let i=t.renderers[a.name];i?t.renderers[a.name]=function(...s){let l=a.renderer.apply(this,s);return l===!1&&(l=i.apply(this,s)),l}:t.renderers[a.name]=a.renderer}if("tokenizer"in a){if(!a.level||a.level!=="block"&&a.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let i=t[a.level];i?i.unshift(a.tokenizer):t[a.level]=[a.tokenizer],a.start&&(a.level==="block"?t.startBlock?t.startBlock.push(a.start):t.startBlock=[a.start]:a.level==="inline"&&(t.startInline?t.startInline.push(a.start):t.startInline=[a.start]))}"childTokens"in a&&a.childTokens&&(t.childTokens[a.name]=a.childTokens)}),r.extensions=t),n.renderer){let a=this.defaults.renderer||new Sr(this.defaults);for(let i in n.renderer){if(!(i in a))throw new Error(`renderer '${i}' does not exist`);if(["options","parser"].includes(i))continue;let s=i,l=n.renderer[s],c=a[s];a[s]=(...d)=>{let g=l.apply(a,d);return g===!1&&(g=c.apply(a,d)),g||""}}r.renderer=a}if(n.tokenizer){let a=this.defaults.tokenizer||new zr(this.defaults);for(let i in n.tokenizer){if(!(i in a))throw new Error(`tokenizer '${i}' does not exist`);if(["options","rules","lexer"].includes(i))continue;let s=i,l=n.tokenizer[s],c=a[s];a[s]=(...d)=>{let g=l.apply(a,d);return g===!1&&(g=c.apply(a,d)),g}}r.tokenizer=a}if(n.hooks){let a=this.defaults.hooks||new qo;for(let i in n.hooks){if(!(i in a))throw new Error(`hook '${i}' does not exist`);if(["options","block"].includes(i))continue;let s=i,l=n.hooks[s],c=a[s];qo.passThroughHooks.has(i)?a[s]=d=>{if(this.defaults.async&&qo.passThroughHooksRespectAsync.has(i))return(async()=>{let u=await l.call(a,d);return c.call(a,u)})();let g=l.call(a,d);return c.call(a,g)}:a[s]=(...d)=>{if(this.defaults.async)return(async()=>{let u=await l.apply(a,d);return u===!1&&(u=await c.apply(a,d)),u})();let g=l.apply(a,d);return g===!1&&(g=c.apply(a,d)),g}}r.hooks=a}if(n.walkTokens){let a=this.defaults.walkTokens,i=n.walkTokens;r.walkTokens=function(s){let l=[];return l.push(i.call(this,s)),a&&(l=l.concat(a.call(this,s))),l}}this.defaults={...this.defaults,...r}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return Xt.lex(e,t??this.defaults)}parser(e,t){return Jt.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},a={...this.defaults,...r},i=this.onError(!!a.silent,!!a.async);if(this.defaults.async===!0&&r.async===!1)return i(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||t===null)return i(new Error("marked(): input parameter is undefined or null"));if(typeof t!="string")return i(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(a.hooks&&(a.hooks.options=a,a.hooks.block=e),a.async)return(async()=>{let s=a.hooks?await a.hooks.preprocess(t):t,l=await(a.hooks?await a.hooks.provideLexer(e):e?Xt.lex:Xt.lexInline)(s,a),c=a.hooks?await a.hooks.processAllTokens(l):l;a.walkTokens&&await Promise.all(this.walkTokens(c,a.walkTokens));let d=await(a.hooks?await a.hooks.provideParser(e):e?Jt.parse:Jt.parseInline)(c,a);return a.hooks?await a.hooks.postprocess(d):d})().catch(i);try{a.hooks&&(t=a.hooks.preprocess(t));let s=(a.hooks?a.hooks.provideLexer(e):e?Xt.lex:Xt.lexInline)(t,a);a.hooks&&(s=a.hooks.processAllTokens(s)),a.walkTokens&&this.walkTokens(s,a.walkTokens);let l=(a.hooks?a.hooks.provideParser(e):e?Jt.parse:Jt.parseInline)(s,a);return a.hooks&&(l=a.hooks.postprocess(l)),l}catch(s){return i(s)}}}onError(e,t){return n=>{if(n.message+=`
|
|
69
|
+
Please report this to https://github.com/markedjs/marked.`,e){let r="<p>An error occurred:</p><pre>"+Nt(n.message+"",!0)+"</pre>";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}},Xn=new Pa;function Ee(e,t){return Xn.parse(e,t)}Ee.options=Ee.setOptions=function(e){return Xn.setOptions(e),Ee.defaults=Xn.defaults,Us(Ee.defaults),Ee};Ee.getDefaults=wa;Ee.defaults=Jn;function Gf(...e){return Xn.use(...e),Ee.defaults=Xn.defaults,Us(Ee.defaults),Ee}Ee.use=Gf;Ee.walkTokens=function(e,t){return Xn.walkTokens(e,t)};Ee.parseInline=Xn.parseInline;Ee.Parser=Jt;Ee.parser=Jt.parse;Ee.Renderer=Sr;Ee.TextRenderer=Ea;Ee.Lexer=Xt;Ee.lexer=Xt.lex;Ee.Tokenizer=zr;Ee.Hooks=qo;Ee.parse=Ee;var Ib=Ee.options,Rb=Ee.setOptions,Lb=Ee.walkTokens,Db=Ee.parseInline;var Nb=Jt.parse,Ob=Xt.lex;var Mr,fe,Qs,Kf,Dn,Js,el,tl,Ma,Cr,Go,nl,Da,Ia,Ra,ol,Ar={},Er=[],Xf=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,Ko=Array.isArray;function gn(e,t){for(var n in t)e[n]=t[n];return e}function Na(e){e&&e.parentNode&&e.parentNode.removeChild(e)}function Zn(e,t,n){var r,a,i,s={};for(i in t)i=="key"?r=t[i]:i=="ref"?a=t[i]:s[i]=t[i];if(arguments.length>2&&(s.children=arguments.length>3?Mr.call(arguments,2):n),typeof e=="function"&&e.defaultProps!=null)for(i in e.defaultProps)s[i]===void 0&&(s[i]=e.defaultProps[i]);return Tr(e,s,r,a,null)}function Tr(e,t,n,r,a){var i={type:e,props:t,key:n,ref:r,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:a??++Qs,__i:-1,__u:0};return a==null&&fe.vnode!=null&&fe.vnode(i),i}function N(e){return e.children}function Yt(e,t){this.props=e,this.context=t}function Yn(e,t){if(t==null)return e.__?Yn(e.__,e.__i+1):null;for(var n;t<e.__k.length;t++)if((n=e.__k[t])!=null&&n.__e!=null)return n.__e;return typeof e.type=="function"?Yn(e):null}function Jf(e){if(e.__P&&e.__d){var t=e.__v,n=t.__e,r=[],a=[],i=gn({},t);i.__v=t.__v+1,fe.vnode&&fe.vnode(i),Oa(e.__P,i,t,e.__n,e.__P.namespaceURI,32&t.__u?[n]:null,r,n??Yn(t),!!(32&t.__u),a),i.__v=t.__v,i.__.__k[i.__i]=i,ll(r,i,a),t.__e=t.__=null,i.__e!=n&&rl(i)}}function rl(e){if((e=e.__)!=null&&e.__c!=null)return e.__e=e.__c.base=null,e.__k.some(function(t){if(t!=null&&t.__e!=null)return e.__e=e.__c.base=t.__e}),rl(e)}function La(e){(!e.__d&&(e.__d=!0)&&Dn.push(e)&&!Pr.__r++||Js!=fe.debounceRendering)&&((Js=fe.debounceRendering)||el)(Pr)}function Pr(){try{for(var e,t=1;Dn.length;)Dn.length>t&&Dn.sort(tl),e=Dn.shift(),t=Dn.length,Jf(e)}finally{Dn.length=Pr.__r=0}}function al(e,t,n,r,a,i,s,l,c,d,g){var u,p,m,f,v,w,k=r&&r.__k||Er,z=t.length;for(c=Yf(n,t,k,c,z),u=0;u<z;u++)(m=n.__k[u])!=null&&(p=m.__i!=-1&&k[m.__i]||Ar,m.__i=u,w=Oa(e,m,p,a,i,s,l,c,d,g),f=m.__e,m.ref&&p.ref!=m.ref&&(p.ref&&Ba(p.ref,null,m),g.push(m.ref,m.__c||f,m)),v==null&&f!=null&&(v=f),4&m.__u?(c=il(m,c,e),p.__e&&(p.__e=null)):typeof m.type=="function"&&w!==void 0?c=w:f&&(c=f.nextSibling),m.__u&=-7);return n.__e=v,c}function Yf(e,t,n,r,a){var i,s,l,c,d,g=n.length,u=g,p=0;for(e.__k=new Array(a),i=0;i<a;i++)(s=t[i])!=null&&typeof s!="boolean"&&typeof s!="function"?(typeof s=="string"||typeof s=="number"||typeof s=="bigint"||s.constructor==String?s=e.__k[i]=Tr(null,s,null,null,null):Ko(s)?s=e.__k[i]=Tr(N,{children:s},null,null,null):s.constructor===void 0&&s.__b>0?s=e.__k[i]=Tr(s.type,s.props,s.key,s.ref?s.ref:null,s.__v):e.__k[i]=s,c=i+p,s.__=e,s.__b=e.__b+1,l=null,(d=s.__i=Zf(s,n,c,u))!=-1&&(u--,(l=n[d])&&(l.__u|=2)),l==null||l.__v==null?(d==-1&&(a>g?p--:a<g&&p++),typeof s.type!="function"&&(s.__u|=4)):d!=c&&(d==c-1?p--:d==c+1?p++:(d>c?p--:p++,s.__u|=4))):e.__k[i]=null;if(u)for(i=0;i<g;i++)(l=n[i])!=null&&(2&l.__u)==0&&(l.__e==r&&(r=Yn(l)),dl(l,l));return r}function il(e,t,n){var r,a;if(typeof e.type=="function"){for(r=e.__k,a=0;r&&a<r.length;a++)r[a]&&(r[a].__=e,t=il(r[a],t,n));return t}e.__e!=t&&(t&&e.type&&!t.parentNode&&(t=Yn(e)),t=n.insertBefore(e.__e,t||null));do t=t&&t.nextSibling;while(t!=null&&t.nodeType==8);return t}function Xo(e,t){return t=t||[],e==null||typeof e=="boolean"||(Ko(e)?e.some(function(n){Xo(n,t)}):t.push(e)),t}function Zf(e,t,n,r){var a,i,s,l=e.key,c=e.type,d=t[n],g=d!=null&&(2&d.__u)==0;if(d===null&&l==null||g&&l==d.key&&c==d.type)return n;if(r>(g?1:0)){for(a=n-1,i=n+1;a>=0||i<t.length;)if((d=t[s=a>=0?a--:i++])!=null&&(2&d.__u)==0&&l==d.key&&c==d.type)return s}return-1}function Ys(e,t,n){t[0]=="-"?e.setProperty(t,n??""):e[t]=n==null?"":typeof n!="number"||Xf.test(t)?n:n+"px"}function _r(e,t,n,r,a){var i,s;e:if(t=="style")if(typeof n=="string")e.style.cssText=n;else{if(typeof r=="string"&&(e.style.cssText=r=""),r)for(t in r)n&&t in n||Ys(e.style,t,"");if(n)for(t in n)r&&n[t]==r[t]||Ys(e.style,t,n[t])}else if(t[0]=="o"&&t[1]=="n")i=t!=(t=t.replace(nl,"$1")),s=t.toLowerCase(),t=s in e||t=="onFocusOut"||t=="onFocusIn"?s.slice(2):t.slice(2),e.l||(e.l={}),e.l[t+i]=n,n?r?n[Go]=r[Go]:(n[Go]=Da,e.addEventListener(t,i?Ra:Ia,i)):e.removeEventListener(t,i?Ra:Ia,i);else{if(a=="http://www.w3.org/2000/svg")t=t.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(t!="width"&&t!="height"&&t!="href"&&t!="list"&&t!="form"&&t!="tabIndex"&&t!="download"&&t!="rowSpan"&&t!="colSpan"&&t!="role"&&t!="popover"&&t in e)try{e[t]=n??"";break e}catch{}typeof n=="function"||(n==null||n===!1&&t[4]!="-"?e.removeAttribute(t):e.setAttribute(t,t=="popover"&&n==1?"":n))}}function Zs(e){return function(t){if(this.l){var n=this.l[t.type+e];if(t[Cr]==null)t[Cr]=Da++;else if(t[Cr]<n[Go])return;return n(fe.event?fe.event(t):t)}}}function Oa(e,t,n,r,a,i,s,l,c,d){var g,u,p,m,f,v,w,k,z,x,M,L,H,V,ee,te,S=t.type;if(t.constructor!==void 0)return null;128&n.__u&&(c=!!(32&n.__u),i=[l=t.__e=n.__e]),(g=fe.__b)&&g(t);e:if(typeof S=="function"){u=s.length;try{if(z=t.props,x=S.prototype&&S.prototype.render,M=(g=S.contextType)&&r[g.__c],L=g?M?M.props.value:g.__:r,n.__c?k=(p=t.__c=n.__c).__=p.__E:(x?t.__c=p=new S(z,L):(t.__c=p=new Yt(z,L),p.constructor=S,p.render=em),M&&M.sub(p),p.state||(p.state={}),p.__n=r,m=p.__d=!0,p.__h=[],p._sb=[]),x&&p.__s==null&&(p.__s=p.state),x&&S.getDerivedStateFromProps!=null&&(p.__s==p.state&&(p.__s=gn({},p.__s)),gn(p.__s,S.getDerivedStateFromProps(z,p.__s))),f=p.props,v=p.state,p.__v=t,m)x&&S.getDerivedStateFromProps==null&&p.componentWillMount!=null&&p.componentWillMount(),x&&p.componentDidMount!=null&&p.__h.push(p.componentDidMount);else{if(x&&S.getDerivedStateFromProps==null&&z!==f&&p.componentWillReceiveProps!=null&&p.componentWillReceiveProps(z,L),t.__v==n.__v||!p.__e&&p.shouldComponentUpdate!=null&&p.shouldComponentUpdate(z,p.__s,L)===!1){t.__v!=n.__v&&(p.props=z,p.state=p.__s,p.__d=!1),t.__e=n.__e,t.__k=n.__k,t.__k.some(function(E){E&&(E.__=t)}),Er.push.apply(p.__h,p._sb),p._sb=[],p.__h.length&&s.push(p),l=Yn(n);break e}p.componentWillUpdate!=null&&p.componentWillUpdate(z,p.__s,L),x&&p.componentDidUpdate!=null&&p.__h.push(function(){p.componentDidUpdate(f,v,w)})}if(p.context=L,p.props=z,p.__P=e,p.__e=!1,H=fe.__r,V=0,x)p.state=p.__s,p.__d=!1,H&&H(t),g=p.render(p.props,p.state,p.context),Er.push.apply(p.__h,p._sb),p._sb=[];else do p.__d=!1,H&&H(t),g=p.render(p.props,p.state,p.context),p.state=p.__s;while(p.__d&&++V<25);p.state=p.__s,p.getChildContext!=null&&(r=gn(gn({},r),p.getChildContext())),x&&!m&&p.getSnapshotBeforeUpdate!=null&&(w=p.getSnapshotBeforeUpdate(f,v)),ee=g!=null&&g.type===N&&g.key==null?cl(g.props.children):g,l=al(e,Ko(ee)?ee:[ee],t,n,r,a,i,s,l,c,d),p.base=t.__e,t.__u&=-161,p.__h.length&&s.push(p),k&&(p.__E=p.__=null)}catch(E){if(s.length=u,t.__v=null,c||i!=null){if(E.then){for(t.__u|=c?160:128;l&&l.nodeType==8&&l.nextSibling;)l=l.nextSibling;i!=null&&(i[i.indexOf(l)]=null),t.__e=l}else if(i!=null)for(te=i.length;te--;)Na(i[te])}else t.__e=n.__e;t.__k==null&&(t.__k=n.__k||[]),E.then||sl(t),fe.__e(E,t,n)}}else i==null&&t.__v==n.__v?(t.__k=n.__k,t.__e=n.__e):l=t.__e=Qf(n.__e,t,n,r,a,i,s,c,d);return(g=fe.diffed)&&g(t),128&t.__u?void 0:l}function sl(e){e&&(e.__c&&(e.__c.__e=!0),e.__k&&e.__k.some(sl))}function ll(e,t,n){for(var r=0;r<n.length;r++)Ba(n[r],n[++r],n[++r]);fe.__c&&fe.__c(t,e),e.some(function(a){try{e=a.__h,a.__h=[],e.some(function(i){i.call(a)})}catch(i){fe.__e(i,a.__v)}})}function cl(e){return typeof e!="object"||e==null||e.__b>0?e:Ko(e)?e.map(cl):e.constructor!==void 0?null:gn({},e)}function Qf(e,t,n,r,a,i,s,l,c){var d,g,u,p,m,f,v,w=n.props||Ar,k=t.props,z=t.type;if(z=="svg"?a="http://www.w3.org/2000/svg":z=="math"?a="http://www.w3.org/1998/Math/MathML":a||(a="http://www.w3.org/1999/xhtml"),i!=null){for(d=0;d<i.length;d++)if((m=i[d])&&"setAttribute"in m==!!z&&(z?m.localName==z:m.nodeType==3)){e=m,i[d]=null;break}}if(e==null){if(z==null)return document.createTextNode(k);e=document.createElementNS(a,z,k.is&&k),l&&(fe.__m&&fe.__m(t,i),l=!1),i=null}if(z==null)w===k||l&&e.data==k||(e.data=k);else{if(i=z=="textarea"&&k.defaultValue!=null?null:i&&Mr.call(e.childNodes),!l&&i!=null)for(w={},d=0;d<e.attributes.length;d++)w[(m=e.attributes[d]).name]=m.value;for(d in w)m=w[d],d=="dangerouslySetInnerHTML"?u=m:d=="children"||d in k||d=="value"&&"defaultValue"in k||d=="checked"&&"defaultChecked"in k||_r(e,d,null,m,a);for(d in k)m=k[d],d=="children"?p=m:d=="dangerouslySetInnerHTML"?g=m:d=="value"?f=m:d=="checked"?v=m:l&&typeof m!="function"||w[d]===m||_r(e,d,m,w[d],a);if(g)l||u&&(g.__html==u.__html||g.__html==e.innerHTML)||(e.innerHTML=g.__html),t.__k=[];else if(u&&(e.innerHTML=""),al(t.type=="template"?e.content:e,Ko(p)?p:[p],t,n,r,z=="foreignObject"?"http://www.w3.org/1999/xhtml":a,i,s,i?i[0]:n.__k&&Yn(n,0),l,c),i!=null)for(d=i.length;d--;)Na(i[d]);l&&z!="textarea"||(d="value",z=="progress"&&f==null?e.removeAttribute("value"):f!=null&&(f!==e[d]||z=="progress"&&!f||z=="option"&&f!=w[d])&&_r(e,d,f,w[d],a),d="checked",v!=null&&v!=e[d]&&_r(e,d,v,w[d],a))}return e}function Ba(e,t,n){try{if(typeof e=="function"){var r=typeof e.__u=="function";r&&e.__u(),r&&t==null||(e.__u=e(t))}else e.current=t}catch(a){fe.__e(a,n)}}function dl(e,t,n){var r,a;if(fe.unmount&&fe.unmount(e),(r=e.ref)&&(r.current&&r.current!=e.__e||Ba(r,null,t)),(r=e.__c)!=null){if(r.componentWillUnmount)try{r.componentWillUnmount()}catch(i){fe.__e(i,t)}r.base=r.__P=r.__n=null}if(r=e.__k)for(a=0;a<r.length;a++)r[a]&&dl(r[a],t,n||typeof e.type!="function");n||Na(e.__e),e.__c=e.__=e.__e=void 0}function em(e,t,n){return this.constructor(e,n)}function He(e,t,n){var r,a,i,s;t==document&&(t=document.documentElement),fe.__&&fe.__(e,t),a=(r=typeof n=="function")?null:n&&n.__k||t.__k,i=[],s=[],Oa(t,e=(!r&&n||t).__k=Zn(N,null,[e]),a||Ar,Ar,t.namespaceURI,!r&&n?[n]:a?null:t.firstChild?Mr.call(t.childNodes):null,i,!r&&n?n:a?a.__e:t.firstChild,r,s),ll(i,e,s),e.props.children=null}function Ir(e){function t(n){var r,a;return this.getChildContext||(r=new Set,(a={})[t.__c]=this,this.getChildContext=function(){return a},this.componentWillUnmount=function(){r=null},this.shouldComponentUpdate=function(i){this.props.value!=i.value&&r.forEach(function(s){s.__e=!0,La(s)})},this.sub=function(i){r.add(i);var s=i.componentWillUnmount;i.componentWillUnmount=function(){r&&r.delete(i),s&&s.call(i)}}),n.children}return t.__c="__cC"+ol++,t.__=e,t.Provider=t.__l=(t.Consumer=function(n,r){return n.children(r)}).contextType=t,t}Mr=Er.slice,fe={__e:function(e,t,n,r){for(var a,i,s;t=t.__;)if((a=t.__c)&&!a.__)try{if((i=a.constructor)&&i.getDerivedStateFromError!=null&&(a.setState(i.getDerivedStateFromError(e)),s=a.__d),a.componentDidCatch!=null&&(a.componentDidCatch(e,r||{}),s=a.__d),s)return a.__E=a}catch(l){e=l}throw e}},Qs=0,Kf=function(e){return e!=null&&e.constructor===void 0},Yt.prototype.setState=function(e,t){var n;n=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=gn({},this.state),typeof e=="function"&&(e=e(gn({},n),this.props)),e&&gn(n,e),e!=null&&this.__v&&(t&&this._sb.push(t),La(this))},Yt.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),La(this))},Yt.prototype.render=N,Dn=[],el=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,tl=function(e,t){return e.__v.__b-t.__v.__b},Pr.__r=0,Ma=Math.random().toString(8),Cr="__d"+Ma,Go="__a"+Ma,nl=/(PointerCapture)$|Capture$/i,Da=0,Ia=Zs(!1),Ra=Zs(!0),ol=0;var Nn,Ne,Fa,ul,Jo=0,yl=[],Ge=fe,pl=Ge.__b,fl=Ge.__r,ml=Ge.diffed,gl=Ge.__c,hl=Ge.unmount,bl=Ge.__;function ko(e,t){Ge.__h&&Ge.__h(Ne,e,Jo||t),Jo=0;var n=Ne.__H||(Ne.__H={__:[],__h:[]});return e>=n.__.length&&n.__.push({}),n.__[e]}function A(e){return Jo=1,xl(kl,e)}function xl(e,t,n){var r=ko(Nn++,2);if(r.t=e,!r.__c&&(r.__=[n?n(t):kl(void 0,t),function(l){var c=r.__N?r.__N[0]:r.__[0],d=r.t(c,l);c!==d&&(r.__N=[d,r.__[1]],r.__c.setState({}))}],r.__c=Ne,!Ne.__f)){var a=function(l,c,d){if(!r.__c.__H)return!0;var g=!1,u=r.__c.props!==l;if(r.__c.__H.__.some(function(m){if(m.__N){g=!0;var f=m.__[0];m.__=m.__N,m.__N=void 0,f!==m.__[0]&&(u=!0)}}),i){var p=i.call(this,l,c,d);return g?p||u:p}return!g||u};Ne.__f=!0;var i=Ne.shouldComponentUpdate,s=Ne.componentWillUpdate;Ne.componentWillUpdate=function(l,c,d){if(this.__e){var g=i;i=void 0,a(l,c,d),i=g}s&&s.call(this,l,c,d)},Ne.shouldComponentUpdate=a}return r.__N||r.__}function oe(e,t){var n=ko(Nn++,3);!Ge.__s&&Ha(n.__H,t)&&(n.__=e,n.u=t,Ne.__H.__h.push(n))}function Yo(e,t){var n=ko(Nn++,4);!Ge.__s&&Ha(n.__H,t)&&(n.__=e,n.u=t,Ne.__h.push(n))}function ce(e){return Jo=5,Ot(function(){return{current:e}},[])}function Ot(e,t){var n=ko(Nn++,7);return Ha(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function hn(e,t){return Jo=8,Ot(function(){return e},t)}function Ua(e){var t=Ne.context[e.__c],n=ko(Nn++,9);return n.c=e,t?(n.__==null&&(n.__=!0,t.sub(Ne)),t.props.value):e.__}function Qn(){var e=ko(Nn++,11);if(!e.__){for(var t=Ne.__v;t!==null&&!t.__m&&t.__!==null;)t=t.__;var n=t.__m||(t.__m=[0,0]);e.__="P"+n[0]+"-"+n[1]++}return e.__}function tm(){for(var e;e=yl.shift();){var t=e.__H;if(e.__P&&t)try{t.__h.some(Rr),t.__h.some($a),t.__h=[]}catch(n){t.__h=[],Ge.__e(n,e.__v)}}}Ge.__b=function(e){Ne=null,pl&&pl(e)},Ge.__=function(e,t){e&&t.__k&&t.__k.__m&&(e.__m=t.__k.__m),bl&&bl(e,t)},Ge.__r=function(e){fl&&fl(e),Nn=0;var t=(Ne=e.__c).__H;t&&(Fa===Ne?(t.__h=[],Ne.__h=[],t.__.some(function(n){n.__N&&(n.__=n.__N),n.u=n.__N=void 0})):(t.__h.some(Rr),t.__h.some($a),t.__h=[],Nn=0)),Fa=Ne},Ge.diffed=function(e){ml&&ml(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(yl.push(t)!==1&&ul===Ge.requestAnimationFrame||((ul=Ge.requestAnimationFrame)||nm)(tm)),t.__H.__.some(function(n){n.u&&(n.__H=n.u,n.u=void 0)})),Fa=Ne=null},Ge.__c=function(e,t){t.some(function(n){try{n.__h.some(Rr),n.__h=n.__h.filter(function(r){return!r.__||$a(r)})}catch(r){t.some(function(a){a.__h&&(a.__h=[])}),t=[],Ge.__e(r,n.__v)}}),gl&&gl(e,t)},Ge.unmount=function(e){hl&&hl(e);var t,n=e.__c;n&&n.__H&&(n.__H.__.some(function(r){try{Rr(r)}catch(a){t=a}}),n.__H=void 0,t&&Ge.__e(t,n.__v))};var vl=typeof requestAnimationFrame=="function";function nm(e){var t,n=function(){clearTimeout(r),vl&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,35);vl&&(t=requestAnimationFrame(n))}function Rr(e){var t=Ne,n=e.__c;typeof n=="function"&&(e.__c=void 0,n()),Ne=t}function $a(e){var t=Ne;e.__c=e.__(),Ne=t}function Ha(e,t){return!e||e.length!==t.length||t.some(function(n,r){return n!==e[r]})}function kl(e,t){return typeof t=="function"?t(e):t}var qa=null;function wl(e){qa=e}function bn(e){return qa&&e&&typeof window<"u"&&e===window.tangu?{...e,...qa}:e}var vn=e=>!!(e?.unitPage&&e.unitPublicEntry||e?.mobile&&e.extendMobile),eo=e=>!!e&&(!e.unitPage||!!e.unitPublicEntry),se=()=>bn(typeof window<"u"?window.tangu:void 0)||{};function Lr(e){let t=typeof e?.status=="number"?e.status:0;if(t>=200&&t<300)return{ok:!0,status:t,data:e?.json??null};let n=e?.json&&typeof e.json=="object"?e.json:null,r=typeof n?.error=="string"?n.error:typeof n?.code=="string"?n.code:null,a=typeof n?.detail=="string"?n.detail:typeof n?.message=="string"?n.message:null;return{ok:!1,status:t,code:r,detail:a,transport:typeof e?.error=="string"?e.error:null}}var Va=e=>({ok:!1,status:0,code:null,detail:null,transport:e});async function Q(e,t={}){let n=se().cloudFetch;if(!n)return Va("no_bridge");try{return Lr(await n({path:e,...t}))}catch(r){return Va(String(r?.message||r))}}async function Dr(e,t){if(!e)return t();try{return Lr(await e())}catch(n){return Va(String(n?.message||n))}}var to=e=>e.status===401&&(e.transport==="not_signed_in"||e.code===null&&e.detail===null&&e.transport===null);function Zt(e){return String(e?.message??e??"").replace(/^Error invoking remote method '[^']*':\s*/,"").replace(/^(?:[A-Za-z]*Error):\s*/,"").trim()}async function On(e,t,n){let r=se().cloudInvoke;if(!r)return!1;let a=e==="membership"&&t?n?[e,t,n]:[e,t]:[e];try{return!!(await r("auth:openPayCenter",...a))?.ok}catch{return!1}}async function no(e){let t=se().openAccountCenter;if(!t)return!1;try{return!!(await t(e)).ok}catch{return!1}}var om=0;function o(e,t,n,r,a,i){t||(t={});var s,l,c=t;if("ref"in c)for(l in c={},t)l=="ref"?s=t[l]:c[l]=t[l];var d={type:e,props:c,key:n,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--om,__i:-1,__u:0,__source:a,__self:i};if(typeof e=="function"&&(s=e.defaultProps))for(l in s)c[l]===void 0&&(c[l]=s[l]);return fe.vnode&&fe.vnode(d),d}var rm={user:"M12 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z M4 20c.8-3.5 4-5.5 8-5.5s7.2 2 8 5.5",backpack:"M9 5V3h6v2 M6 8a6 6 0 0 1 12 0v12H6V8Z M9 13h6v5H9z M3 11h3v7H3z M18 11h3v7h-3 M10 8h4",gauge:"M4 16a8 8 0 1 1 16 0 M12 16l4-5 M12 16h.01",shield:"M12 3l7 3v5c0 4.5-3 8.2-7 10-4-1.8-7-5.5-7-10V6l7-3Z",chart:"M4 20V10 M10 20V4 M16 20v-7 M21 20H3",message:"M5 4h14a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1h-7l-5 4v-4H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1Z",card:"M4 6h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1Z M3 10h18 M7 15h4",coins:"M9 11a5 5 0 1 0 0-10 5 5 0 0 0 0 10Z M15.5 9.2A5 5 0 1 1 9.8 16",clock:"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z M12 7v5l3 2",gift:"M4 11h16v9H4z M3 7h18v4H3z M12 7v13 M12 7c-1.5-3-5-3-5-1s3 1 5 1c2 0 5 1 5-1s-3.5-2-5 1",key:"M8 15a4 4 0 1 0 0-8 4 4 0 0 0 0 8Z M11 11h10 M17 11v3 M20 11v2",laptop:"M5 5h14v10H5z M3 19h18",alert:"M12 4l9 16H3l9-16Z M12 10v4 M12 17h.01",external:"M14 4h6v6 M20 4l-9 9 M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5",copy:"M9 9h11v11H9z M5 15H4V4h11v1",check:"M5 12.5l4.5 4.5L19 7.5",chevron:"M9 6l6 6-6 6",back:"M15 6l-6 6 6 6",pencil:"M4 20h4L19 9l-4-4L4 16v4Z M13.5 6.5l4 4",plus:"M12 5v14 M5 12h14",refresh:"M20 11a8 8 0 0 0-14.3-4.9L4 8 M4 4v4h4 M4 13a8 8 0 0 0 14.3 4.9L20 16 M20 20v-4h-4",phone:"M8 3h8a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1Z M11 18h2",mail:"M4 6h16v12H4z M4 7l8 6 8-6",image:"M4 5h16v14H4z M4 16l5-5 4 4 3-3 4 4 M15.5 9.5h.01",x:"M6 6l12 12 M18 6L6 18",logout:"M15 4h4v16h-4 M10 8l-4 4 4 4 M6 12h10",globe:"M12 21a9 9 0 1 0 0-18 9 9 0 0 0 0 18Z M3 12h18 M12 3c2.5 2.6 3.8 5.6 3.8 9s-1.3 6.4-3.8 9c-2.5-2.6-3.8-5.6-3.8-9S9.5 5.6 12 3Z",lock:"M6 11h12v9H6z M8.5 11V8a3.5 3.5 0 0 1 7 0v3",palette:"M12 3a9 9 0 0 0 0 18c1.2 0 2-.8 2-1.9 0-.5-.2-.9-.5-1.3-.3-.4-.5-.8-.5-1.3 0-1 .8-1.8 1.8-1.8H17a4 4 0 0 0 4-4c0-4.3-4-7.7-9-7.7Z M7.5 12.5h.01 M9 8.5h.01 M14 7.5h.01",calendar:"M5 5h14v15H5z M5 10h14 M9 3v4 M15 3v4",link:"M10 14a4 4 0 0 0 5.7 0l3-3a4 4 0 0 0-5.7-5.7l-1 1 M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1-1",flame:"M12 21a6 6 0 0 0 6-6c0-2.5-1.4-4.4-3-6-.3 1.5-1 2.5-2 3 .3-3-1-6-3.5-8 .2 3-1 4.8-2.2 6.3C6.4 11.5 6 13.2 6 15a6 6 0 0 0 6 6Z",trophy:"M8 4h8v6a4 4 0 0 1-8 0V4Z M8 6H5v1a3 3 0 0 0 3 3 M16 6h3v1a3 3 0 0 1-3 3 M12 14v4 M8.5 20h7",sprout:"M12 20v-8 M12 12c0-3-2-5-6-5 0 3.5 2 5 6 5Z M12 14c0-3 2-5 6-5 0 3.5-2 5-6 5Z",eye:"M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12Z M12 14.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z",download:"M12 4v11 M7.5 11l4.5 4.5 4.5-4.5 M5 20h14",upload:"M12 16V5 M7.5 9.5 12 5l4.5 4.5 M5 20h14",up:"M12 19V5 M6 11l6-6 6 6",down:"M12 5v14 M6 13l6 6 6-6",sparkles:"M12 4l1.8 4.7 4.7 1.8-4.7 1.8L12 17l-1.8-4.7-4.7-1.8 4.7-1.8L12 4Z M18.5 15.5v4 M16.5 17.5h4",bot:"M6 9h12v10H6z M12 9V5 M12 4.5h.01 M9.5 13.5h.01 M14.5 13.5h.01 M3.5 13v3 M20.5 13v3",box:"M12 3l8 4.5v9L12 21l-8-4.5v-9L12 3Z M4 7.5l8 4.5 8-4.5 M12 12v9",grid:"M4 4h7v7H4z M13 4h7v7h-7z M4 13h7v7H4z M13 13h7v7h-7z",note:"M6 3h9l4 4v14H6z M15 3v4h4 M9 12h6 M9 16h4",puzzle:"M9 3H4v6a3 3 0 1 0 0 6v5h6a3 3 0 1 1 6 0h4v-6a3 3 0 1 0 0-6V3h-5a3 3 0 1 1-6 0Z"};function J({name:e,size:t=14,class:n}){return o("svg",{class:n,width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",focusable:"false",children:o("path",{d:rm[e]})})}function wo({size:e=12}){return o("svg",{class:"spin",width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","aria-hidden":"true",focusable:"false",children:o("path",{d:"M21 12a9 9 0 1 1-6.2-8.56"})})}var am={"penzor.rules.default":"\u4E91\u7AEF\u9ED8\u8BA4","penzor.rules.off":"\u4E0D\u540C\u6B65","penzor.rules.device":"\u8BBE\u5907","penzor.rules.run":"\u7ACB\u5373\u540C\u6B65","penzor.rules.twoWay":"\u53CC\u5411","penzor.rules.defaultForWeb":"\u9ED8\u8BA4\u76EE\u5F55\u4F9B\u7F51\u9875\u7AEF\u4F7F\u7528","penzor.rules.tab.rules":"\u540C\u6B65\u89C4\u5219","penzor.rules.tab.active":"\u6B63\u5728\u4F20\u8F93","penzor.rules.tab.history":"\u5386\u53F2\u8BB0\u5F55","penzor.rules.enable":"\u5F00\u542F\u5185\u5BB9\u540C\u6B65","penzor.rules.add":"\u6DFB\u52A0\u89C4\u5219","penzor.rules.source":"\u672C\u673A\u6765\u6E90","penzor.rules.destination":"\u4E91\u7AEF\u76EE\u6807","penzor.rules.direction":"\u65B9\u5411","penzor.rules.remove":"\u5220\u9664\u89C4\u5219","penzor.rules.inherit":"\u7A7A\u8DEF\u5F84\u4EE3\u8868\u6574\u4E2A Forsion\u3002\u5B50\u9879\u7EE7\u627F\u4E0A\u7EA7\u89C4\u5219\uFF0C\u6700\u5177\u4F53\u7684\u8DEF\u5F84\u4F18\u5148\uFF1B\u6CA1\u6709\u5339\u914D\u89C4\u5219\u7684\u5185\u5BB9\u4E0D\u540C\u6B65\u3002","penzor.rules.namespace":"\u9ED8\u8BA4\uFF1A\u4E91\u7AEF /Forsion/\uFF1B\u8BBE\u5907\u76EE\u5F55\uFF1A\u4E91\u7AEF /Forsion-\u8BBE\u5907ID/\u3002","penzor.rules.human":"human \u72EC\u7ACB\u9009\u62E9\u8303\u56F4\uFF1B\u9ED8\u8BA4\u65E5\u5386\u4F7F\u7528 human/CALENDAR.db\u3002\u6539\u5230\u8BBE\u5907\u76EE\u5F55\u540E\uFF0C\u7F51\u9875\u9ED8\u8BA4\u65E5\u5386\u4E0D\u8DDF\u968F\u5207\u6362\u3002","penzor.rules.preview":"\u9884\u89C8\u53D8\u66F4","penzor.rules.previewTitle":"\u786E\u8BA4\u672C\u6B21\u540C\u6B65\u8303\u56F4","penzor.rules.previewCounts":"\u4E0A\u4F20 {up} \u9879\uFF0C\u4E0B\u8F7D {down} \u9879\uFF0C{conflicts} \u9879\u5DF2\u6709\u4E0D\u540C\u5185\u5BB9\u9700\u5408\u5E76\u6216\u4FDD\u7559\u7248\u672C\u3002","penzor.rules.retain":"\u65E7\u76EE\u6807\u4E2D\u7684\u5185\u5BB9\u4FDD\u7559\u3002\u5173\u95ED\u540C\u6B65\u4E0D\u4F1A\u5220\u9664\u672C\u673A\u6216\u4E91\u7AEF\u6587\u4EF6\uFF1B\u6E90\u6587\u4EF6\u53D8\u5316\u540E\u9700\u91CD\u65B0\u9884\u89C8\u3002","penzor.rules.back":"\u8FD4\u56DE\u4FEE\u6539","penzor.rules.apply":"\u786E\u8BA4\u5E76\u5F00\u59CB","penzor.rules.pause":"\u6682\u505C","penzor.rules.resume":"\u7EE7\u7EED","penzor.rules.noActive":"\u5F53\u524D\u6CA1\u6709\u6587\u4EF6\u6B63\u5728\u4F20\u8F93\u3002","penzor.rules.manual":"\u624B\u52A8\u4E0A\u4F20\u4E0E\u4E0B\u8F7D","penzor.rules.historyNote":"\u4FDD\u7559\u6700\u8FD1 200 \u9879\u3002\u51B2\u7A81\u65F6\u4FDD\u7559\u4E24\u4E2A\u7248\u672C\uFF0C\u5176\u4F59\u5185\u5BB9\u7EE7\u7EED\u540C\u6B65\u3002","penzor.rules.retry":"\u91CD\u8BD5\u5931\u8D25\u9879","penzor.rules.noHistory":"\u8FD8\u6CA1\u6709\u540C\u6B65\u8BB0\u5F55\u3002","penzor.rules.details":"\u67E5\u770B\u4F20\u8F93","penzor.rules.plugins":"\u63D2\u4EF6\u6570\u636E\u4ECD\u7531\u5404\u63D2\u4EF6\u7684\u6570\u636E\u540C\u6B65\u7BA1\u7406\u3002","penzor.rules.turnOff":"\u5173\u95ED\u63D2\u4EF6\u6570\u636E\u540C\u6B65","penzor.rules.turnOn":"\u5F00\u542F\u63D2\u4EF6\u6570\u636E\u540C\u6B65","penzor.rules.phase.idle":"\u7B49\u5F85\u4E0B\u6B21\u540C\u6B65","penzor.rules.phase.scanning":"\u6B63\u5728\u6838\u5BF9\u6587\u4EF6","penzor.rules.phase.syncing":"\u6B63\u5728\u540C\u6B65","penzor.rules.phase.paused":"\u5DF2\u6682\u505C","penzor.rules.state.queued":"\u7B49\u5F85\u4E2D","penzor.rules.state.active":"\u4F20\u8F93\u4E2D","penzor.rules.state.done":"\u5DF2\u5B8C\u6210","penzor.rules.state.failed":"\u5931\u8D25","penzor.rules.state.paused":"\u5DF2\u6682\u505C","penzor.rules.state.conflict":"\u5DF2\u4FDD\u7559\u51B2\u7A81\u7248\u672C","penzor.tree.synced":"\u540C\u6B65\u7684\u5185\u5BB9","penzor.tree.thisBackup":"\u8FD9\u53F0\u7535\u8111 \xB7 \u53EA\u5907\u4EFD","penzor.tree.byApp":"\u6309\u5E94\u7528\u770B","penzor.tree.legacy":"\u65E7\u7248\u667A\u5E93\u540C\u6B65","penzor.quota.sourceLimit":"\u8FD9\u4E00\u7C7B\u8FD8\u6709\u5355\u72EC\u4E0A\u9650 {max}\uFF0C\u5DF2\u7528 {used}","penzor.ov.mine":"\u4F60\u653E\u7684","penzor.ov.synced":"\u540C\u6B65\u4E0A\u6765\u7684","penzor.ov.stale":"\u4E0D\u518D\u66F4\u65B0","penzor.ov.uploads":"\u4F60\u81EA\u5DF1\u4E0A\u4F20\u548C\u6574\u7406\u7684\u6587\u4EF6\uFF0C\u53EF\u4EE5\u968F\u4FBF\u6539","penzor.ov.all":"\u7B14\u8BB0\u3001Agents\u3001\u6211\u7684\u8D44\u6599\u3001\u63D2\u4EF6","penzor.ov.allLast":"\u7B14\u8BB0\u3001Agents\u3001\u6211\u7684\u8D44\u6599\u3001\u63D2\u4EF6 \xB7 \u4E0A\u6B21\u540C\u6B65 {time}","penzor.ov.self":"\u53EA\u6709\u8FD9\u53F0\u7535\u8111\u7528\u7684\u90A3\u4EFD","penzor.ov.device":"\u53EA\u5728\u8FD9\u53F0\u7535\u8111\u548C\u5B83\u4E4B\u95F4\u5171\u7528","penzor.ov.agents":"Agent \u7684\u8BBE\u7F6E\u3001\u8BB0\u5FC6\u548C\u65E5\u5FD7","penzor.ov.profile":"\u4F60\u7684\u8D44\u6599\u548C\u9ED8\u8BA4\u65E5\u5386","penzor.ov.sync":"\u7535\u8111\u540C\u6B65\u4E0A\u6765\u7684\u667A\u5E93","penzor.ov.legacy":"\u8FD9\u53F0\u7535\u8111\u5F00\u4E86\u65B0\u540C\u6B65\u540E\u4E0D\u518D\u5199\u5165\uFF0C\u7559\u7740\u4E0D\u5220","penzor.ov.ama":"\u7F51\u9875\u7248\u7684\u7B14\u8BB0\uFF0C\u548C\u540C\u6B65\u4E0A\u6765\u7684\u7B14\u8BB0","penzor.ov.apps":"\u5404\u5E94\u7528\u5B58\u7684\u6587\u4EF6\uFF0C\u53EF\u4EE5\u5220\u3001\u6539\u540D","penzor.ov.plugins":"\u63D2\u4EF6\u81EA\u5DF1\u5B58\u7684\u8BBE\u7F6E\uFF0C\u8FD9\u91CC\u53EA\u663E\u793A\u5360\u7528","penzor.ov.exports":"\u5BFC\u51FA\u7684\u6587\u4EF6\uFF0C\u53EF\u4EE5\u4E0B\u8F7D\u3001\u5220\u9664","penzor.ov.segNotes":"\u7B14\u8BB0","penzor.ov.segSync":"\u8BBE\u5907\u540C\u6B65","penzor.ov.segOther":"\u5176\u4ED6","penzor.content.badge":"\u65B0\u540C\u6B65\u7EF4\u62A4","penzor.content.badgeLast":"\u65B0\u540C\u6B65\u7EF4\u62A4 \xB7 \u4E0A\u6B21\u540C\u6B65 {time}","penzor.content.noteAll":"\u8FD9\u662F\u4E91\u7AEF\u7684\u90A3\u4E00\u4EFD\uFF0C\u4F60\u767B\u5F55\u7684\u6BCF\u53F0\u8BBE\u5907\u548C\u7F51\u9875\u7248\u770B\u5230\u7684\u90FD\u662F\u5B83\u3002\u8981\u6539\u6587\u4EF6\uFF0C\u5728\u7535\u8111\u4E0A\u7684\u7B14\u8BB0\u3001Agents \u91CC\u6539\uFF0C\u6539\u5B8C\u4F1A\u81EA\u52A8\u540C\u6B65\u4E0A\u6765\uFF1B\u8FD9\u91CC\u53EF\u4EE5\u4E0B\u8F7D\u3002","penzor.content.noteSelf":"\u53EA\u6709\u8FD9\u53F0\u7535\u8111\u7528\u7684\u90A3\u4E00\u4EFD\uFF0C\u522B\u7684\u8BBE\u5907\u770B\u4E0D\u5230\u3002\u8981\u6539\u6587\u4EF6\u5728\u8FD9\u53F0\u7535\u8111\u4E0A\u6539\uFF1B\u8FD9\u91CC\u53EF\u4EE5\u4E0B\u8F7D\u3002","penzor.content.noteDevice":"\u53EA\u5728\u8FD9\u53F0\u7535\u8111\u548C {name} \u4E4B\u95F4\u5171\u7528\u3002\u8981\u6539\u6587\u4EF6\u5728\u7535\u8111\u4E0A\u6539\uFF1B\u8FD9\u91CC\u53EF\u4EE5\u4E0B\u8F7D\u3002","penzor.legacy.title":"\u8FD9\u53F0\u7535\u8111\u5F00\u4E86\u65B0\u540C\u6B65\u540E\uFF0C\u5C31\u4E0D\u518D\u5F80\u8FD9\u4E2A\u5E93\u5199\u4E86","penzor.legacy.body":"\u8FD9\u53F0\u7535\u8111\u7684\u7B14\u8BB0\u73B0\u5728\u5728\u300C\u6240\u6709\u8BBE\u5907\u5171\u7528 \u203A \u7B14\u8BB0\u300D\u91CC\u3002\u8FD8\u6CA1\u5347\u7EA7\u7684\u65E7\u7248\u684C\u9762\u53EF\u80FD\u4ECD\u4F1A\u5199\u5230\u8FD9\u91CC\uFF0C\u6240\u4EE5\u8FD9\u4EFD\u7559\u7740\u3001\u4E0D\u5220\u3002","penzor.legacy.go":"\u53BB\u770B\u65B0\u7684\u90A3\u4EFD","penzor.drive.total":"\u6574\u4E2A\u84EC\u6D32\u4E91\u5DF2\u7528 {used} / {max}","penzor.drive.seeAll":"\u67E5\u770B","penzor.cs.statusOff":"\u672A\u5F00","penzor.cs.statusPaused":"\u5DF2\u6682\u505C","penzor.cs.statusRun":"\u540C\u6B65\u4E2D {pct}%","penzor.cs.statusScan":"\u6B63\u5728\u6838\u5BF9\u6587\u4EF6","penzor.cs.statusWarn":"{n} \u9879\u8981\u5904\u7406","penzor.cs.statusOk":"\u5DF2\u540C\u6B65","penzor.cs.statusOkAgo":"\u5DF2\u540C\u6B65 \xB7 {time}","penzor.cs.thisComputer":"\u8FD9\u53F0\u7535\u8111\uFF1A{name}","penzor.cs.thisComputerLabel":"\u8FD9\u53F0\u7535\u8111\uFF1A","penzor.cs.rename":"\u6539\u8FD9\u53F0\u7535\u8111\u7684\u540D\u5B57","penzor.cs.renameHint":"\u6539\u4E86\u4EE5\u540E\uFF0C\u522B\u7684\u8BBE\u5907\u4E0A\u4E5F\u663E\u793A\u8FD9\u4E2A\u540D\u5B57 \xB7 \u56DE\u8F66\u4FDD\u5B58","penzor.cs.othersN":"\u53E6\u5916 {n} \u53F0\uFF1A{names}","penzor.cs.noOthers":"\u8FD8\u6CA1\u6709\u522B\u7684\u8BBE\u5907\u767B\u5F55\u8FD9\u4E2A\u8D26\u53F7","penzor.cs.log":"\u6700\u8FD1\u8BB0\u5F55","penzor.cs.more":"\u66F4\u591A","penzor.cs.advanced":"\u9AD8\u7EA7\uFF1A\u6309\u89C4\u5219\u7F16\u8F91","penzor.cs.backSimple":"\u8FD4\u56DE\u540C\u6B65","penzor.cs.firstTitle":"\u628A\u8FD9\u53F0\u7535\u8111\u540C\u6B65\u5230\u84EC\u6D32\u4E91","penzor.cs.firstBody":"\u4E0B\u9762\u662F\u5EFA\u8BAE\u7684\u8303\u56F4\uFF0C\u53EF\u4EE5\u5148\u6539\u3002\u70B9\u300C\u5F00\u59CB\u540C\u6B65\u300D\u4E4B\u524D\u4E0D\u4F1A\u4F20\u4EFB\u4F55\u4E1C\u897F\uFF1B\u4E91\u7AEF\u5DF2\u6709\u7684\u4E0D\u4F1A\u88AB\u8986\u76D6\u6216\u5220\u9664\u3002","penzor.cs.note":"\u60F3\u8BA9\u67D0\u4E2A\u7B14\u8BB0\u6587\u4EF6\u5939\u6216 Agent \u5355\u72EC\u5904\u7406\uFF0C\u70B9\u5B83\u4E0B\u9762\u90A3\u884C\u5C0F\u5B57\u5C31\u80FD\u6539\u3002\u5173\u6389\u5F00\u5173\u53EA\u662F\u4E0D\u518D\u540C\u6B65\uFF0C\u4E0D\u5220\u9664\u4EFB\u4F55\u6587\u4EF6\u3002","penzor.cs.barFirst":"\u6253\u5F00\u540C\u6B65\u4F1A\u4E0A\u4F20 {up} \u4E2A\u6587\u4EF6\u3001\u4E0B\u8F7D {down} \u4E2A","penzor.cs.barChanged":"\u6539\u4E86 {n} \u5904","penzor.cs.barOne":"\u6539\u4E86 1 \u5904\uFF1A\u300C{name}\u300D\u6539\u6210{scope}","penzor.cs.offName":"\u4E0D\u540C\u6B65","penzor.cs.barCounts":"\u4F1A\u4E0A\u4F20 {up} \u4E2A\u6587\u4EF6\u3001\u4E0B\u8F7D {down} \u4E2A \xB7 \u4E0D\u5220\u9664\u4EFB\u4F55\u6587\u4EF6","penzor.cs.barSize":"\u5171 {size}","penzor.cs.noDelete":"\u4E0D\u4F1A\u5220\u9664\u4EFB\u4F55\u6587\u4EF6","penzor.cs.barConflicts":"{n} \u4E2A\u4E24\u8FB9\u90FD\u6539\u8FC7\uFF0C\u4F1A\u5404\u7559\u4E00\u4EFD","penzor.cs.barCounting":"\u6B63\u5728\u7B97\u8981\u4F20\u591A\u5C11\u2026","penzor.cs.barRecount":"\u6587\u4EF6\u521A\u6709\u53D8\u5316\uFF0C\u5DF2\u7ECF\u91CD\u65B0\u7B97\u8FC7\uFF0C\u8BF7\u518D\u786E\u8BA4\u4E00\u6B21","penzor.cs.later":"\u5148\u4E0D\u5F00","penzor.cs.start":"\u5F00\u59CB\u540C\u6B65","penzor.cs.undo":"\u64A4\u9500","penzor.cs.confirm":"\u786E\u8BA4","penzor.cs.up":"\u6B63\u5728\u4E0A\u4F20\u300C{name}\u300D","penzor.cs.down":"\u6B63\u5728\u4E0B\u8F7D\u300C{name}\u300D","penzor.cs.waiting":"\u8FD8\u6709 {n} \u4E2A\u6587\u4EF6\u7B49\u7740\u4F20","penzor.cs.failedN":"{n} \u4E2A\u6587\u4EF6\u6CA1\u4F20\u6210\u529F","penzor.cs.retry":"\u91CD\u8BD5","penzor.cs.seeLog":"\u770B\u8BB0\u5F55","penzor.cs.logEmpty":"\u8FD8\u6CA1\u6709\u540C\u6B65\u8BB0\u5F55\u3002","penzor.cs.logNote":"\u4FDD\u7559\u6700\u8FD1 200 \u9879\u3002\u4E24\u8FB9\u90FD\u6539\u8FC7\u65F6\u4F1A\u5404\u7559\u4E00\u4EFD\u3002","penzor.cat.notes":"\u7B14\u8BB0","penzor.cat.notesDesc":"Amadeus \u91CC\u7684\u667A\u5E93","penzor.cat.agents":"Agents \u4E0E\u8BB0\u5FC6","penzor.cat.agentsDesc":"\u6BCF\u4E2A Agent \u7684\u8BBE\u7F6E\u3001\u8BB0\u5FC6\u548C\u65E5\u5FD7","penzor.cat.profile":"\u6211\u7684\u8D44\u6599","penzor.cat.profileDesc":"\u4F60\u7684\u8D44\u6599\u548C\u9ED8\u8BA4\u65E5\u5386","penzor.cat.profileOn":"\u542B\u9ED8\u8BA4\u65E5\u5386","penzor.cat.plugins":"\u63D2\u4EF6","penzor.cat.pluginsDesc":"\u63D2\u4EF6\u7684\u6587\u4EF6\u5939\u548C\u8BBE\u7F6E","penzor.cat.others":"\u5176\u4ED6\u6587\u4EF6","penzor.cat.othersDesc":"\u5DE5\u4F5C\u6587\u4EF6\u5939\u91CC\u4E0D\u5C5E\u4E8E\u4E0A\u9762\u51E0\u7C7B\u7684\u6587\u4EF6","penzor.cat.files":"{n} \u4E2A\u6587\u4EF6 \xB7 {size}","penzor.cat.agentsN":"{n} \u4E2A Agent","penzor.cat.agentsSome":"{n} \u4E2A Agent \xB7 {m} \u4E2A\u4E0A\u4E91","penzor.cat.pluginsN":"{n} \u4E2A\u63D2\u4EF6","penzor.cat.custom":"\u53E6\u6709 {n} \u6761\u81EA\u5B9A\u4E49\u89C4\u5219","penzor.cat.notSynced":"\u4E0D\u540C\u6B65 \xB7 \u53EA\u7559\u5728\u8FD9\u53F0\u7535\u8111","penzor.scope.all":"\u6240\u6709\u8BBE\u5907\u5171\u7528","penzor.scope.allDesc":"\u6BCF\u53F0\u767B\u5F55\u7684\u8BBE\u5907\u548C\u7F51\u9875\u7248\u90FD\u662F\u540C\u4E00\u4EFD","penzor.scope.self":"\u53EA\u5907\u4EFD\u8FD9\u53F0\u7535\u8111","penzor.scope.selfDesc":"\u4E91\u7AEF\u5355\u72EC\u5B58\u4E00\u4EFD\uFF0C\u522B\u7684\u8BBE\u5907\u770B\u4E0D\u5230","penzor.scope.with":"\u53EA\u548C {name} \u5171\u7528","penzor.scope.menuTitle":"\u300C{name}\u300D\u548C\u8C01\u5171\u7528","penzor.scope.menuFoot":"\u4E0D\u60F3\u4E0A\u4E91\u5C31\u5173\u6389\u53F3\u8FB9\u7684\u5F00\u5173","penzor.scope.calendarNote":"\u7F51\u9875\u7248\u7684\u9ED8\u8BA4\u65E5\u5386\u4E0D\u4F1A\u8DDF\u7740\u53D8","penzor.unified.stale":"\u5237\u65B0\u5931\u8D25\uFF0C\u4EE5\u4E0B\u4FDD\u7559\u4E0A\u6B21\u7EDF\u8BA1\uFF1B\u5F53\u524D\u7528\u91CF\u672A\u77E5\uFF0C\u8BF7\u91CD\u8BD5\u3002","penzor.unified.uploadTo":"\u4E0A\u4F20\u5230\u300C\u6211\u7684\u6587\u4EF6\u300D","penzor.unified.apps":"\u666E\u901A\u6587\u4EF6\u53EF\u7BA1\u7406 \xB7 \u6765\u6E90\u9650\u5236\u4F18\u5148","penzor.trash.ama":"Amadeus \xB7 \u5F85\u6E05\u7406\u5FEB\u7167","penzor.trash.amaNote":"\u88AB\u5220\u7684\u5F53\u524D\u6587\u4EF6\u4ECD\u8BA1\u5165\u989D\u5EA6\uFF0C\u5386\u53F2\u7248\u672C\u4E0D\u91CD\u590D\u8BA1\u5165\u300230 \u5929\u540E\u7B49\u5F85\u7CFB\u7EDF\u6E05\u7406\uFF1B\u6B64\u5904\u53EA\u8BFB\uFF0C\u4E0D\u53D7\u300C\u6E05\u7A7A\u56DE\u6536\u7AD9\u300D\u5F71\u54CD\u3002","penzor.trash.expires":"\u53EF\u6E05\u7406\u65E5\u671F","penzor.source.openAgents":"\u5728 Agents \u4E2D\u6253\u5F00","penzor.source.openCalendar":"\u6253\u5F00\u65E5\u5386","penzor.source.entryUnavailable":"\u6B64\u5BBF\u4E3B\u6682\u672A\u63D0\u4F9B\u8BE5\u5165\u53E3","penzor.uploads":"\u6211\u7684\u6587\u4EF6","penzor.source.agents":"Agents","penzor.source.profile":"\u6211\u7684\u8D44\u6599","penzor.source.plugins":"\u63D2\u4EF6\u6570\u636E","penzor.source.readonly":"\u540C\u6B65\u6765\u6E90\u4E3A\u53EA\u8BFB\uFF0C\u8BF7\u5728\u539F\u4F4D\u7F6E\u7F16\u8F91\u6216\u5220\u9664\uFF1B\u6B64\u5904\u53EF\u4E0B\u8F7D\u5DF2\u540C\u6B65\u7684\u6587\u4EF6\u3002","penzor.source.appNote":"\u5E94\u7528\u6587\u4EF6\u7531\u539F\u5E94\u7528\u7BA1\u7406\uFF0C\u8BF7\u5728\u5E94\u7528\u4E2D\u7F16\u8F91\u6216\u5220\u9664\u3002","penzor.source.pluginNote":"\u4EC5\u5C55\u793A\u63D2\u4EF6\u540D\u79F0\u548C\u5360\u7528\uFF1B\u6570\u636E\u53EF\u80FD\u542B\u914D\u7F6E\u6216\u51ED\u636E\uFF0C\u4E0D\u76F4\u63A5\u9884\u89C8\u6216\u4E0B\u8F7D\u3002","penzor.unified.unavailable":"\u7EDF\u8BA1\u4E0D\u53EF\u7528","penzor.unified.incomplete":"\u7EDF\u4E00\u7528\u91CF\u5C1A\u672A\u7EDF\u8BA1\u5B8C\u6574\uFF0C\u4E0D\u80FD\u636E\u6B64\u5224\u65AD\u662F\u5426\u8D85\u989D\u3002\u8BF7\u5237\u65B0\u91CD\u8BD5\u3002","penzor.unified.enforced":"\u7EDF\u4E00\u989D\u5EA6\u5DF2\u542F\u7528\uFF1A\u8D85\u989D\u65F6\u6682\u505C\u65B0\u589E\u5185\u5BB9\u548C\u53D8\u5927\u7684\u6587\u4EF6\uFF1B\u4E0B\u8F7D\u3001\u5220\u9664\u53CA\u4E0D\u589E\u5927\u7684\u8986\u76D6\u4ECD\u53EF\u7528\u3002","penzor.unified.grace":"\u901A\u77E5\u5BBD\u9650\u671F\u81F3 {date}\uFF0C\u76EE\u524D\u4E0D\u65B0\u589E\u7EDF\u4E00\u989D\u5EA6\u62E6\u622A\u3002","penzor.unified.rolloutPolicy":"\u5BB9\u91CF\u653F\u7B56\u901A\u77E5\uFF1A\u6700\u65E9\u5728\u786E\u8BA4\u901A\u77E5 30 \u5929\u540E\uFF0C\u7EDF\u4E00\u989D\u5EA6\u624D\u53EF\u80FD\u9650\u5236\u589E\u957F\u5199\u5165\uFF1B\u5E94\u7528\u6587\u4EF6\u5386\u53F2\u5C06\u4EC5\u4FDD\u7559\u6700\u8FD1 30 \u5929\u5185\u6700\u591A 50 \u4EFD\u3002\u5386\u53F2\u4E0D\u8BA1\u5957\u9910\uFF0C\u6E05\u7406\u524D\u4ECD\u53EF\u4E0B\u8F7D\u5907\u4EFD\uFF0C\u5F53\u524D\u6587\u4EF6\u4E0D\u53D7\u5386\u53F2\u6E05\u7406\u5F71\u54CD\u3002","penzor.unified.ack":"\u5DF2\u9605\u8BFB\u5BB9\u91CF\u4E0E\u5386\u53F2\u4FDD\u7559\u901A\u77E5","penzor.unified.notice":"\u73B0\u5728\u53EA\u662F\u63D0\u9192\uFF0C\u8D85\u4E86\u4E5F\u4E0D\u4F1A\u505C\u6389\u540C\u6B65\u6216\u4E0A\u4F20","penzor.unified.over":"\u5DF2\u8D85\u8FC7\u7EDF\u4E00\u989D\u5EA6\u3002\u76EE\u524D\u53EA\u63D0\u9192\uFF0C\u4E0D\u65B0\u589E\u540C\u6B65\u6216\u4E0A\u4F20\u62E6\u622A\uFF1B\u53EF\u6E05\u7406\u6587\u4EF6\u6216\u5347\u7EA7\u5957\u9910\u3002","penzor.unified.warn":"\u7EDF\u4E00\u7A7A\u95F4\u5373\u5C06\u7528\u6EE1\u3002\u76EE\u524D\u53EA\u63D0\u9192\uFF0C\u4E0D\u65B0\u589E\u540C\u6B65\u6216\u4E0A\u4F20\u62E6\u622A\u3002","penzor.unified.accounting":"\u542B\u56DE\u6536\u7AD9 {trash}\uFF0C\u5386\u53F2\u7248\u672C\u4E0D\u7B97","penzor.unified.writable":"\u53EF\u4E0A\u4F20\u3001\u65B0\u5EFA\u3001\u91CD\u547D\u540D\u548C\u5220\u9664","penzor.unified.readonly":"\u53EA\u8BFB \xB7 \u7531\u6765\u6E90\u7BA1\u7406","penzor.unified.export":"\u53EF\u4E0B\u8F7D\u3001\u91CD\u547D\u540D\u548C\u6C38\u4E45\u5220\u9664","penzor.unified.counted":"\u8BA1\u5165\u7EDF\u4E00\u7528\u91CF \xB7 \u63D0\u9192\u9636\u6BB5","penzor.unified.policy":"\u771F\u8981\u9650\u5236\u4E4B\u524D\uFF0C\u81F3\u5C11\u63D0\u524D 30 \u5929\u544A\u8BC9\u4F60\u3002","penzor.unified.legacySync":"\u539F\u8BBE\u5907\u540C\u6B65\u9650\u5236\uFF1A{used} / {max}","penzor.unified.legacyApps":"\u539F\u5E94\u7528\u6587\u4EF6\u9650\u5236\uFF1A{used} / {max}","sub.identity":"\u63D2\u4EF6 ID","sub.identityHint":"\u63D0\u4EA4\u540E\u81EA\u52A8\u5206\u914D\u552F\u4E00 ID\u3002\u540D\u79F0\u53EF\u4EE5\u91CD\u590D\uFF0C\u66F4\u65B0\u6CBF\u7528\u540C\u4E00\u4E2A ID\u3002","sub.description":"\u8BE6\u7EC6\u63CF\u8FF0","sub.tags":"\u6807\u7B7E","sub.tagsHint":"\u4EE5\u9017\u53F7\u5206\u9694\uFF0C\u6700\u591A 8 \u4E2A","sub.minAppVersion":"\u6700\u4F4E Forsion \u7248\u672C","sub.maxAppVersion":"\u6700\u9AD8\u7248\u672C\uFF08\u4E0D\u542B\uFF09","sub.optional":"\u9009\u586B","sub.platforms":"\u652F\u6301\u7684\u7AEF","sub.requirementsHint":"\u652F\u6301 desktop\u3001macos\u3001windows\u3001linux\u3001android\u3001ios\u3001web\u3002\u7559\u7A7A\u8868\u793A\u672A\u58F0\u660E\u3002ZIP \u6E05\u5355\u4E2D\u7684\u8981\u6C42\u4F1A\u81EA\u52A8\u8BFB\u53D6\uFF0C\u624B\u586B\u503C\u987B\u4E0E\u6E05\u5355\u4E00\u81F4\u3002","sub.err.market_requirements_invalid":"\u7248\u672C\u8981\u6C42\u6216\u5E73\u53F0\u65E0\u6548\u3002","sub.err.market_requirements_mismatch":"\u624B\u586B\u7248\u672C\u8981\u6C42\u4E0E ZIP \u6E05\u5355\u4E0D\u4E00\u81F4\u3002","sub.mine":"\u6211\u7684\u6295\u7A3F","page.submission":"\u63D2\u4EF6\u6295\u7A3F","page.webPages":"\u6211\u7684\u7F51\u9875","web.title":"\u6211\u7684\u7F51\u9875","web.desc":"\u7528 Tangu \u6216 Coding Space \u53D1\u5E03\u7684\u7F51\u9875\u90FD\u5728\u8FD9\u91CC\u3002\u62FF\u5230\u94FE\u63A5\u7684\u4EBA\u90FD\u80FD\u6253\u5F00\uFF1B\u9875\u9762\u5728\u6C99\u7BB1\u91CC\u8FD0\u884C\uFF0C\u62FF\u4E0D\u5230\u8BBF\u5BA2\u7684 Forsion \u767B\u5F55\u6001\u3002","web.refresh":"\u5237\u65B0","web.used":"\u5DF2\u53D1\u5E03 {used} / {limit} \u4E2A","web.full":"\u540D\u989D\u5DF2\u6EE1\uFF0C\u4E0B\u7EBF\u4E00\u4E2A\u6216\u5347\u7EA7\u4F1A\u5458\u540E\u624D\u80FD\u53D1\u65B0\u7684","web.empty":"\u8FD8\u6CA1\u6709\u53D1\u5E03\u8FC7\u7F51\u9875","web.emptyHint":"\u5728\u5BF9\u8BDD\u91CC\u8BA9 Tangu \u628A\u7F51\u9875\u53D1\u5E03\u51FA\u53BB\uFF0C\u6BD4\u5982\u300C\u628A\u8FD9\u4E2A\u9875\u9762\u53D1\u5E03\u6210\u7F51\u9875\u300D\uFF1BCoding Space \u91CC\u7684\u9879\u76EE\u4E5F\u53EF\u4EE5\u70B9\u300C\u53D1\u5E03\u300D\u3002","web.updated":"\u66F4\u65B0\u4E8E {date}","web.disabled":"\u5DF2\u505C\u7528","web.disabledHint":"\u8FD9\u4E2A\u7F51\u9875\u88AB\u7BA1\u7406\u5458\u505C\u7528\u4E86\uFF0C\u94FE\u63A5\u6253\u4E0D\u5F00\uFF0C\u4E5F\u4E0D\u80FD\u66F4\u65B0\u3002","web.copy":"\u590D\u5236\u94FE\u63A5","web.unpublish":"\u4E0B\u7EBF","web.unpublishConfirm":"\u786E\u8BA4\u4E0B\u7EBF","web.listingPending":"\u4E0A\u67B6\u5BA1\u6838\u4E2D","web.listingApproved":"\u5DF2\u4E0A\u67B6","web.listingRejected":"\u4E0A\u67B6\u88AB\u9A73\u56DE","web.listingNote":"\u9A73\u56DE\u539F\u56E0\uFF1A{note}","web.listingApply":"\u7533\u8BF7\u4E0A\u67B6","web.listingReapply":"\u91CD\u65B0\u7533\u8BF7","web.listingWithdraw":"\u64A4\u56DE\u7533\u8BF7","web.listingDelist":"\u4E0B\u67B6","web.listingDelistConfirm":"\u786E\u8BA4\u4E0B\u67B6","web.listingSummary":"\u5546\u5E97\u7B80\u4ECB","web.listingSummaryPh":"\u4E00\u53E5\u8BDD\u4ECB\u7ECD\u8FD9\u4E2A\u7F51\u9875","web.listingHint":"\u5BA1\u6838\u901A\u8FC7\u540E\u5728\u5546\u5E97\u300C\u7F51\u7AD9\u5E94\u7528\u300D\u91CC\u516C\u5F00\u5C55\u793A\uFF0C300 \u5B57\u4EE5\u5185\u3002","web.listingSubmit":"\u63D0\u4EA4\u7533\u8BF7","sub.desc":"\u7BA1\u7406\u4F60\u6295\u7A3F\u7684\u5185\u5BB9\u3001\u5BA1\u6838\u7ED3\u679C\u548C\u7248\u672C\u66F4\u65B0\u3002","sub.new":"\u65B0\u6295\u7A3F","sub.refresh":"\u5237\u65B0","sub.empty":"\u8FD8\u6CA1\u6709\u6295\u7A3F","sub.emptyHint":"\u628A\u4F60\u7684\u63D2\u4EF6\u3001\u6280\u80FD\u3001Agent \u6216 Space \u5206\u4EAB\u5230\u5E94\u7528\u5E02\u573A\u3002","sub.name":"\u540D\u79F0","sub.summary":"\u7B80\u4ECB","sub.type":"\u5185\u5BB9\u7C7B\u578B","sub.source":"\u53D1\u5E03\u6E20\u9053","sub.type.skill":"\u6280\u80FD","sub.type.agent":"Agent","sub.type.plugin":"\u63D2\u4EF6","sub.type.space":"Space","sub.type.theme":"\u4E3B\u9898","sub.type.amadeus_plugin":"Amadeus \u63D2\u4EF6","sub.pending":"\u5F85\u5BA1\u6838","sub.approved":"\u5DF2\u4E0A\u67B6","sub.rejected":"\u5DF2\u9A73\u56DE","sub.pendingVersion":"v{version} \u66F4\u65B0\u5F85\u5BA1\u6838","sub.rejectedVersion":"v{version} \u66F4\u65B0\u5DF2\u9A73\u56DE","sub.submit":"\u63D0\u4EA4\u5BA1\u6838","sub.submitted":"\u6295\u7A3F\u5DF2\u63D0\u4EA4\uFF0C\u5BA1\u6838\u7ED3\u679C\u4F1A\u663E\u793A\u5728\u8FD9\u91CC\u548C\u4F60\u7684\u6536\u4EF6\u7BB1\u91CC\u3002","sub.updated":"\u65B0\u7248\u672C\u5DF2\u63D0\u4EA4\u5BA1\u6838\u3002\u5BA1\u6838\u901A\u8FC7\u524D\u5546\u5E97\u7167\u65E7\u63D0\u4F9B\u5DF2\u4E0A\u67B6\u7684\u7248\u672C\uFF0C\u7ED3\u679C\u4F1A\u53D1\u5230\u4F60\u7684\u6536\u4EF6\u7BB1\u3002","sub.repo":"GitHub \u516C\u5F00\u4ED3\u5E93","sub.npm":"npm \u516C\u5F00\u5305","sub.repoHint":"\u4ECE\u4ED3\u5E93\u8BFB\u53D6 README \u548C Release\uFF1B\u4ED3\u5E93\u4F5C\u8005\u663E\u793A\u4E3A\u53D1\u5E03\u4EBA\u3002","sub.npmHint":"\u4ECE npm \u8BFB\u53D6\u5305\u4FE1\u606F\uFF1B\u5BF9\u5E94\u516C\u5F00\u4ED3\u5E93\u7684\u4F5C\u8005\u663E\u793A\u4E3A\u53D1\u5E03\u4EBA\u3002","sub.reviewHint":"\u65B0\u7248\u672C\u9700\u91CD\u65B0\u5BA1\u6838\uFF0C\u5BA1\u6838\u901A\u8FC7\u540E\u624D\u5411\u7528\u6237\u63D0\u4F9B\u3002\u4F60\u7684 Forsion \u8D26\u53F7\u7528\u4E8E\u7BA1\u7406\u6295\u7A3F\u3002","sub.zipHint":"\u6700\u5927 50 MB\uFF0C\u5305\u5185\u5305\u542B\u5BF9\u5E94\u7684 manifest \u4E0E\u5165\u53E3\u6587\u4EF6\u3002","sub.filter":"\u6309\u72B6\u6001\u7B5B\u9009","sub.all":"\u5168\u90E8","sub.noResults":"\u6CA1\u6709\u7B26\u5408\u6761\u4EF6\u7684\u6295\u7A3F","sub.downloads":"{n} \u6B21\u4E0B\u8F7D","sub.errName":"\u8BF7\u586B\u5199\u540D\u79F0\u3002","sub.errSource":"\u8BF7\u586B\u5199\u516C\u5F00\u4ED3\u5E93\u5730\u5740\u6216 npm \u5305\u540D\u3002","sub.errZip":"\u8BF7\u9009\u62E9 ZIP \u5305\u3002","sub.errLarge":"ZIP \u5305\u4E0D\u80FD\u8D85\u8FC7 50 MB\u3002","sub.err.market_npm_invalid":"npm \u5305\u4E0D\u5B58\u5728\u6216\u4E0D\u7B26\u5408\u63D2\u4EF6\u53D1\u5E03\u89C4\u8303\u3002","sub.err.market_npm_source":"\u8BF7\u901A\u8FC7 npm \u53D1\u5E03\u5E76\u91CD\u65B0\u5BA1\u6838\u65B0\u7248\u3002","sub.err.market_github_source":"\u8BF7\u5728 GitHub \u53D1\u5E03 Release \u5E76\u91CD\u65B0\u5BA1\u6838\u65B0\u7248\u3002","sub.err.market_not_found":"\u6295\u7A3F\u4E0D\u5B58\u5728\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u8BD5\u3002","sub.err.market_zip_required":"\u8BF7\u9009\u62E9 ZIP \u5305\u3002","sub.err.market_zip_invalid":"ZIP \u5305\u7ED3\u6784\u4E0D\u7B26\u5408\u53D1\u5E03\u89C4\u8303\u3002","sub.err.market_zip_too_large":"ZIP \u5305\u4E0D\u80FD\u8D85\u8FC7 50 MB\u3002","sub.err.market_version_required":"\u5305\u91CC\u6CA1\u5199\u7248\u672C\u53F7\u3002\u5728 manifest \u91CC\u5199\u4E0A\u7248\u672C\u53F7\uFF08\u6280\u80FD\u5199\u5728 SKILL.md \u7684 version \u6216 metadata.version\uFF09\u518D\u6253\u5305\u3002","sub.err.market_version_invalid":"\u8BF7\u8F93\u5165\u6709\u6548\u7684\u7248\u672C\u53F7\u3002","sub.err.market_version_mismatch":"\u7248\u672C\u53F7\u4E0E\u5305\u5185 manifest \u4E0D\u4E00\u81F4\u3002","sub.err.market_version_not_newer":"\u65B0\u7248\u987B\u9AD8\u4E8E\u5F53\u524D\u5DF2\u4E0A\u67B6\u7248\u672C\u3002","sub.err.market_icon_invalid":"\u56FE\u6807\u5E94\u4E3A 64\u2013512 px \u7684\u6B63\u65B9\u5F62 PNG\u3002","sub.err.market_duplicate":"\u8BE5\u5185\u5BB9\u5DF2\u6709\u6295\u7A3F\uFF0C\u8BF7\u7BA1\u7406\u73B0\u6709\u6295\u7A3F\u3002","sub.err.market_update_pending":"\u5DF2\u6709\u65B0\u7248\u7B49\u5F85\u5BA1\u6838\uFF0C\u8BF7\u5148\u7B49\u5F85\u5BA1\u6838\u7ED3\u679C\u3002","sub.err.market_stale":"\u6295\u7A3F\u5DF2\u53D1\u751F\u53D8\u5316\uFF0C\u8BF7\u5237\u65B0\u540E\u91CD\u8BD5\u3002","sub.notNewer":"\u5305\u91CC\u7684\u7248\u672C\u662F v{version}\uFF0C\u8981\u9AD8\u4E8E\u5546\u5E97\u5F53\u524D\u7684 v{current}\u3002","sub.reqNone":"\u6CA1\u6709\u58F0\u660E\u7248\u672C\u8981\u6C42\u548C\u5E73\u53F0","sub.dropTitle":"\u628A ZIP \u62D6\u5230\u8FD9\u91CC\uFF0C\u6216\u70B9\u8FD9\u91CC\u9009\u62E9","sub.dropHint":"\u6700\u5927 50 MB\u3002\u9009\u597D\u540E\u5148\u68C0\u67E5\uFF0C\u4E0D\u4F1A\u76F4\u63A5\u63D0\u4EA4\u3002","sub.dropReplace":"{size} \xB7 \u62D6\u5165\u6216\u70B9\u8FD9\u91CC\u6362\u4E00\u4E2A","sub.checkType":"\u7C7B\u578B","sub.checkVersion":"\u7248\u672C","sub.checkIcon":"\u56FE\u6807","sub.checkReadme":"\u8BF4\u660E\u6587\u6863","sub.checkReq":"\u8981\u6C42","sub.checkWarn":"\u6CE8\u610F","sub.iconYes":"\u5305\u91CC\u6709 icon.png","sub.iconNo":"\u5305\u91CC\u6CA1\u6709 icon.png\uFF0C\u5361\u7247\u663E\u793A\u7C7B\u578B\u56FE\u6807","sub.readmeYes":"\u53D6\u5305\u91CC\u7684 README.md","sub.readmeKeep":"\u5305\u91CC\u6CA1\u6709 README.md\uFF0C\u6CBF\u7528\u73B0\u5728\u7684\u8BF4\u660E","sub.readmeNo":"\u5305\u91CC\u6CA1\u6709 README.md","sub.warn.no_manifest":"\u5305\u91CC\u6CA1\u627E\u5230\u6E05\u5355\u6587\u4EF6\uFF08manifest\uFF09","sub.warn.type_mismatch":"\u5305\u91CC\u7684\u7C7B\u578B\u548C\u8FD9\u6761\u6295\u7A3F\u7684\u7C7B\u578B\u4E0D\u4E00\u81F4","sub.warn.tag_version_mismatch":"Release \u6807\u7B7E\u548C\u5305\u91CC\u7684\u7248\u672C\u53F7\u4E0D\u4E00\u81F4","sub.warn.id_slug_mismatch":"\u5305\u91CC\u7684 id \u548C\u5DF2\u5B89\u88C5\u7684\u76EE\u5F55\u540D\u4E0D\u4E00\u81F4\uFF0C\u7528\u6237\u66F4\u65B0\u540E\u4F1A\u591A\u51FA\u4E00\u4EFD","sub.warn.engine_slug_mismatch":"\u5F15\u64CE\u63D2\u4EF6\u7684\u76EE\u5F55\u540D\u548C\u5B83\u7684 id \u4E0D\u4E00\u81F4","sub.warn.no_entry":"Amadeus \u63D2\u4EF6\u7F3A\u5C11\u5165\u53E3 main.js","sub.warn.has_node_modules":"\u5305\u91CC\u5E26\u4E86 node_modules\uFF0C\u4F53\u79EF\u5927\uFF0C\u901A\u5E38\u4E5F\u7528\u4E0D\u4E0A","sub.zipListedNote":"\u5BA1\u6838\u901A\u8FC7\u524D\uFF0C\u5546\u5E97\u7EE7\u7EED\u63D0\u4F9B\u5DF2\u4E0A\u67B6\u7684\u7248\u672C\u3002\u5BA1\u6838\u7ED3\u679C\u4F1A\u53D1\u5230\u4F60\u7684\u6536\u4EF6\u7BB1\u3002","sub.zipUnlistedNote":"\u63D0\u4EA4\u540E\u66FF\u6362\u73B0\u5728\u8FD9\u4EFD\u5305\uFF0C\u91CD\u65B0\u8FDB\u5165\u5BA1\u6838\u3002","sub.submitVersion":"\u63D0\u4EA4 v{version} \u5BA1\u6838","sub.checkNew":"\u68C0\u67E5\u65B0\u7248\u672C","sub.checkAgain":"\u518D\u68C0\u67E5\u4E00\u6B21","sub.upToDate":"\u4E0A\u6E38\u6700\u65B0\u662F v{version}\uFF0C\u5546\u5E97\u5DF2\u662F v{current}\uFF0C\u6CA1\u6709\u65B0\u7248\u672C\u3002\u53D1\u5E03\u65B0\u7248\u672C\u540E\u518D\u6765\u68C0\u67E5\u3002","sub.upstreamLatest":"\u4E0A\u6E38\u6700\u65B0\uFF1Av{version}","sub.releaseTag":"Release {tag}","sub.storeHas":"\u5546\u5E97\u5F53\u524D v{version}","sub.githubNote":"\u901A\u8FC7\u540E\u5546\u5E97\u9501\u5B9A\u5230 v{version}\u3002\u4EE5\u540E\u5728 GitHub \u53D1\u4E86\u65B0 Release\uFF0C\u56DE\u5230\u8FD9\u91CC\u518D\u68C0\u67E5\u4E00\u6B21\u3002","sub.npmNote":"\u901A\u8FC7\u540E\u5546\u5E97\u9501\u5B9A\u5230 v{version}\u3002\u4EE5\u540E\u5728 npm \u53D1\u4E86\u65B0\u7248\u672C\uFF0C\u56DE\u5230\u8FD9\u91CC\u518D\u68C0\u67E5\u4E00\u6B21\u3002","sub.secVersion":"\u7248\u672C","sub.secInfo":"\u5546\u5E97\u4FE1\u606F","sub.secHistory":"\u8BB0\u5F55","sub.edit":"\u7F16\u8F91","sub.unset":"\u672A\u586B\u5199","sub.infoNote":"\u4E0D\u7528\u4F20\u5305\u3001\u4E0D\u7528\u5347\u7248\u672C\u3002\u5DF2\u4E0A\u67B6\u7684\u4FEE\u6539\u540C\u6837\u8981\u8FC7\u5BA1\u6838\uFF0C\u5BA1\u6838\u524D\u5546\u5E97\u7167\u65E7\u663E\u793A\u539F\u6765\u7684\u4FE1\u606F\u3002","sub.submitInfo":"\u63D0\u4EA4\u4FEE\u6539","sub.back":"\u8FD4\u56DE\u5217\u8868","sub.pendingInfo":"\u5546\u5E97\u4FE1\u606F\u4FEE\u6539\u5F85\u5BA1\u6838","sub.rejectedInfo":"\u5546\u5E97\u4FE1\u606F\u4FEE\u6539\u5DF2\u9A73\u56DE","sub.pendingHint":"\u5BA1\u6838\u901A\u8FC7\u524D\u5546\u5E97\u7167\u65E7\uFF0C\u5BA1\u6838\u7ED3\u679C\u4F1A\u53D1\u5230\u4F60\u7684\u6536\u4EF6\u7BB1\u3002","sub.inReview":"\u6B63\u5728\u7B49\u5F85\u9996\u6B21\u5BA1\u6838\uFF0C\u5BA1\u6838\u7ED3\u679C\u4F1A\u53D1\u5230\u4F60\u7684\u6536\u4EF6\u7BB1\u3002","sub.histApproved":"v{version} \u5BA1\u6838\u901A\u8FC7","sub.histSubmitted":"\u6295\u7A3F","sub.resubmitted":"\u5DF2\u91CD\u65B0\u63D0\u4EA4\u5BA1\u6838\uFF0C\u7ED3\u679C\u4F1A\u53D1\u5230\u4F60\u7684\u6536\u4EF6\u7BB1\u3002","sub.infoSubmitted":"\u4FEE\u6539\u5DF2\u63D0\u4EA4\u5BA1\u6838\uFF0C\u5BA1\u6838\u524D\u5546\u5E97\u7167\u65E7\u663E\u793A\u539F\u6765\u7684\u4FE1\u606F\u3002","sub.err.market_no_release":"\u8FD9\u4E2A\u4ED3\u5E93\u8FD8\u6CA1\u6709 GitHub Release\u3002\u5546\u5E97\u8981\u9501\u5B9A\u4E00\u4E2A\u7248\u672C\uFF0C\u5148\u5728 GitHub \u53D1\u4E00\u4E2A Release\uFF0C\u518D\u56DE\u6765\u68C0\u67E5\u3002","sub.err.market_no_changes":"\u6CA1\u6709\u6539\u52A8\u3002","sub.err.market_dryrun_unsupported":"GitHub \u548C npm \u6295\u7A3F\u6CA1\u6CD5\u63D0\u524D\u68C0\u67E5\uFF0C\u76F4\u63A5\u63D0\u4EA4\u5BA1\u6838\u5373\u53EF\u3002","page.account":"\u8D26\u53F7","page.membershipUsage":"\u4F1A\u5458\u4E0E\u7528\u91CF","page.membershipQuota":"\u4F1A\u5458\u4E0E\u989D\u5EA6","page.pointsInvite":"\u79EF\u5206\u4E0E\u9080\u8BF7","page.helpDiagnostics":"\u5E2E\u52A9\u4E0E\u8BCA\u65AD","account.details.title":"\u767B\u5F55\u4E0E\u8D44\u6599","account.details.desc":"\u5934\u50CF\u3001\u6635\u79F0\u4E0E\u7B80\u4ECB\u5728\u300C\u4E2A\u4EBA\u4E3B\u9875\u300D\u4E2D\u7F16\u8F91\u3002","account.details.username":"\u7528\u6237\u540D","diag.unavailable":"\u5F53\u524D\u5BBF\u4E3B\u4E0D\u652F\u6301\u8BCA\u65AD\u6570\u636E\uFF0C\u8BF7\u66F4\u65B0 Forsion \u540E\u91CD\u8BD5\u3002","page.profile":"\u4E2A\u4EBA\u4E3B\u9875","page.quota":"\u989D\u5EA6\u4E0E\u79EF\u5206","page.backpack":"\u80CC\u5305","page.security":"\u5B89\u5168","page.usage":"\u7528\u91CF\u8BB0\u5F55","page.feedback":"\u53CD\u9988","store.group":"\u4F1A\u5458\u4E0E\u79EF\u5206","store.membership":"\u4F1A\u5458","store.membership.desc":"\u5347\u7EA7\u6863\u4F4D\uFF0C\u83B7\u5F97\u66F4\u591A\u6BCF\u65E5\u4E0E\u6BCF\u5468\u989D\u5EA6","store.points":"\u79EF\u5206","store.points.desc":"\u5145\u503C\u79EF\u5206\uFF0C\u7528\u6765\u5151\u6362\u7269\u54C1","store.items":"\u7269\u54C1","store.items.desc":"\u7528\u79EF\u5206\u5151\u6362\u7684\u7269\u54C1\uFF0C\u5151\u6362\u540E\u8FDB\u80CC\u5305","store.status":"\u6863\u4F4D\u4E0E\u79EF\u5206","store.tier":"\u5F53\u524D\u6863\u4F4D","store.balance":"\u79EF\u5206\u4F59\u989D","store.choosePlan":"\u9009\u62E9\u6863\u4F4D","store.payHint":"\u4ED8\u6B3E\u5728\u6D4F\u89C8\u5668\u7684\u652F\u4ED8\u9875\u5B8C\u6210\uFF0C\u56DE\u5230\u5E94\u7528\u540E\u81EA\u52A8\u5237\u65B0","store.payOff":"\u6682\u65F6\u4E0D\u80FD\u8D2D\u4E70","store.period":"\u4ED8\u8D39\u5468\u671F","store.period.monthly":"\u6708\u4ED8","store.period.quarterly":"\u5B63\u4ED8","store.period.yearly":"\u5E74\u4ED8","store.per.monthly":"/ \u6708","store.per.quarterly":"/ \u5B63","store.per.yearly":"/ \u5E74","store.currentTier":"\u5F53\u524D\u6863\u4F4D","store.pay":"\u53BB\u652F\u4ED8","store.payPrice":"{price} \u53BB\u652F\u4ED8","store.noPlans":"\u6682\u65F6\u6CA1\u6709\u53EF\u9009\u7684\u6863\u4F4D","store.packs":"\u79EF\u5206\u5305","store.packsHint":"\u4ED8\u6B3E\u5728\u6D4F\u89C8\u5668\u7684\u652F\u4ED8\u9875\u5B8C\u6210\uFF0C\u4ED8\u6B3E\u540E\u79EF\u5206\u5373\u65F6\u5230\u8D26","store.noPacks":"\u6682\u65F6\u6CA1\u6709\u79EF\u5206\u5305","store.kind.pack":"\u79EF\u5206\u5305","store.kind.card":"\u9053\u5177","store.kind.code":"\u5151\u6362\u7801","store.kind.item":"\u7269\u54C1","store.nPoints":"{n} \u79EF\u5206","store.instant":"\u4ED8\u6B3E\u540E\u5373\u65F6\u5230\u8D26","store.redeemTitle":"\u79EF\u5206\u5151\u6362","store.redeemHint":"\u7528\u79EF\u5206\u5151\u6362\u5728\u5E94\u7528\u5185\u76F4\u63A5\u5B8C\u6210\uFF0C\u5151\u6362\u540E\u7269\u54C1\u8FDB\u80CC\u5305","store.redeem":"{n} \u79EF\u5206\u5151\u6362","store.redeemConfirm":"\u786E\u8BA4\u82B1 {n} \u79EF\u5206","store.redeemed":"\u5DF2\u5151\u6362\uFF0C\u7269\u54C1\u5728\u80CC\u5305\u91CC","store.uncertain":"\u6CA1\u6536\u5230\u7ED3\u679C\u3002\u5148\u5230\u80CC\u5305\u770B\u4E00\u4E0B\u6709\u6CA1\u6709\u5230\u8D26\uFF0C\u518D\u51B3\u5B9A\u8981\u4E0D\u8981\u91CD\u8BD5\u3002","store.soldOut":"\u5DF2\u552E\u7F44","store.left":"\u4F59 {n}","store.toBackpack":"\u5151\u6362\u540E\u8FDB\u80CC\u5305","store.limitReached":"\u5DF2\u8FBE\u8D2D\u4E70\u4E0A\u9650","store.unavailable":"\u8FD9\u4EF6\u7269\u54C1\u6682\u65F6\u4E0D\u80FD\u5151\u6362","store.noItems":"\u6682\u65F6\u6CA1\u6709\u53EF\u5151\u6362\u7684\u7269\u54C1","store.itemsOff":"\u7269\u54C1\u5151\u6362\u6682\u672A\u5F00\u653E","store.openBackpack":"\u6253\u5F00\u80CC\u5305","backpack.desc":"\u5728\u8FD9\u91CC\u67E5\u770B\u4F60\u83B7\u5F97\u7684\u7269\u54C1\uFF0C\u70B9\u51FB\u683C\u5B50\u67E5\u770B\u8BE6\u60C5\u3002","backpack.refresh":"\u5237\u65B0","backpack.total":"\u5171 {n} \u4EF6\u7269\u54C1","backpack.grid":"\u80CC\u5305\u7269\u54C1","backpack.slot":"{name}\uFF0C\u6570\u91CF {n}","backpack.item":"\u7269\u54C1","backpack.empty":"\u80CC\u5305\u8FD8\u662F\u7A7A\u7684","backpack.emptyHint":"\u5151\u6362\u6216\u83B7\u8D60\u7684\u7269\u54C1\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002","backpack.select":"\u70B9\u51FB\u7269\u54C1\u67E5\u770B\u8BE6\u60C5","backpack.details":"\u7269\u54C1\u8BE6\u60C5","backpack.quantity":"\u6301\u6709\u6570\u91CF","backpack.acquired":"\u83B7\u5F97\u65F6\u95F4","backpack.source":"\u83B7\u5F97\u65B9\u5F0F","backpack.source.points":"\u79EF\u5206\u5151\u6362","backpack.source.admin":"\u8D60\u9001","backpack.source.reward":"\u5956\u52B1","backpack.source.other":"\u4E91\u7AEF\u53D1\u653E","backpack.consumable":"\u6D88\u8017\u54C1","backpack.voucher":"\u5361\u5238","backpack.getCards":"\u5151\u6362\u91CD\u7F6E\u5361","backpack.manageCards":"\u4F7F\u7528\u6216\u5151\u6362","backpack.reveal":"\u67E5\u770B\u5361\u5BC6","backpack.copyKey":"\u590D\u5236\u5361\u5BC6","backpack.noKey":"\u8FD9\u4EF6\u7269\u54C1\u6CA1\u6709\u5361\u5BC6\u3002","backpack.use":"\u4F7F\u7528","backpack.confirmUse":"\u786E\u8BA4\u4F7F\u7528","backpack.consumeConfirm":"\u4F7F\u7528\u540E\u6D88\u8017 1 \u4EF6\u7269\u54C1\u3002","backpack.collectible":"\u7EAA\u5FF5\u54C1","backpack.effect.points":"+{n} \u79EF\u5206","backpack.effect.cards":"+{n} \u5F20\u91CD\u7F6E\u5361","backpack.effect.quota":"\u91CD\u7F6E\u4ECA\u65E5\u4E0E\u672C\u5468\u989D\u5EA6","backpack.rarity.common":"\u666E\u901A","backpack.rarity.rare":"\u7A00\u6709","backpack.rarity.epic":"\u53F2\u8BD7","backpack.rarity.legendary":"\u4F20\u8BF4","backpack.unavailable":"\u8FD9\u4EF6\u7269\u54C1\u5DF2\u4E0D\u53EF\u7528\uFF0C\u8BF7\u5237\u65B0\u80CC\u5305\u3002","backpack.notUsable":"\u8FD9\u4EF6\u7269\u54C1\u4E0D\u80FD\u4F7F\u7528\u3002","backpack.quotaUnavailable":"\u8BF7\u5148\u4F7F\u7528\u4E91\u7AEF AI \u521D\u59CB\u5316\u989D\u5EA6\uFF0C\u518D\u4F7F\u7528\u8FD9\u4EF6\u7269\u54C1\u3002","common.cancel":"\u53D6\u6D88","common.copied":"\u5DF2\u590D\u5236","common.copyFailed":"\u590D\u5236\u5931\u8D25","common.done":"\u5B8C\u6210","common.loadFailed":"\u6CA1\u80FD\u52A0\u8F7D","common.loadMore":"\u52A0\u8F7D\u66F4\u591A","common.loading":"\u52A0\u8F7D\u4E2D\u2026","common.openInBrowser":"\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00","common.retry":"\u91CD\u8BD5","common.save":"\u4FDD\u5B58","common.thisWeek":"\u672C\u5468","common.today":"\u4ECA\u65E5","common.unlimited":"\u4E0D\u9650","ann.eyebrow":"FORSION \xB7 \u516C\u544A","ann.close":"\u5173\u95ED","ann.ok":"\u77E5\u9053\u4E86","signin.button":"\u767B\u5F55 Forsion","signin.desc":"\u767B\u5F55 Forsion \u8D26\u53F7\u540E\uFF0C\u53EF\u4EE5\u5728\u8FD9\u91CC\u7BA1\u7406\u8D26\u53F7\u3001\u989D\u5EA6\u3001\u5B89\u5168\u3001\u6295\u7A3F\u4E0E\u53CD\u9988\u3002","signin.pending":"\u7B49\u5F85\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u767B\u5F55\u2026","signin.deviceHint":"\u6D4F\u89C8\u5668\u4F1A\u81EA\u52A8\u6253\u5F00\u767B\u5F55\u9875\uFF1B\u6CA1\u6709\u6253\u5F00\u7684\u8BDD\uFF0C\u7528\u624B\u673A\u626B\u7801\u6216\u6253\u5F00\u4E0B\u9762\u7684\u94FE\u63A5\uFF0C\u5E76\u6838\u5BF9\u9A8C\u8BC1\u7801\u3002","signin.code":"\u9A8C\u8BC1\u7801","signin.openLink":"\u6253\u5F00\u767B\u5F55\u9875","signin.copyLink":"\u590D\u5236\u94FE\u63A5","signin.qrLabel":"\u767B\u5F55\u4E8C\u7EF4\u7801","account.profile.title":"\u4E2A\u4EBA\u8D44\u6599","account.profile.desc":"\u5934\u50CF\u3001\u6635\u79F0\uFF0C\u4EE5\u53CA\u7ED1\u5B9A\u7684\u624B\u673A\u548C\u90AE\u7BB1","account.avatar.change":"\u66F4\u6362\u5934\u50CF","account.avatar.saved":"\u5934\u50CF\u5DF2\u66F4\u65B0","account.nickname.edit":"\u4FEE\u6539\u6635\u79F0","account.nickname.label":"\u6635\u79F0","account.nickname.saved":"\u6635\u79F0\u5DF2\u66F4\u65B0","account.role.admin":"\u7BA1\u7406\u5458","account.username":"\u7528\u6237\u540D {name}","account.contact.phone":"\u624B\u673A","account.contact.email":"\u90AE\u7BB1","account.contact.unbound":"\u672A\u7ED1\u5B9A","account.contact.manage":"\u53BB\u5B89\u5168\u9875\u7BA1\u7406","account.web.open":"\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00\u4E2A\u4EBA\u4E2D\u5FC3","account.web.desc":"\u4E91\u7A7A\u95F4\u3001AI \u5927\u8111\u4E0E\u4E3B\u9898\u5728\u7F51\u9875\u4E2A\u4EBA\u4E2D\u5FC3\u7BA1\u7406\u3002","member.title":"\u4F1A\u5458","member.desc":"\u5F53\u524D\u6863\u4F4D\u3001\u65B9\u6848\u4E0E\u5230\u671F\u65E5","member.upgrade":"\u5347\u7EA7\u4F1A\u5458","member.renew":"\u7EED\u8D39","member.freeName":"\u514D\u8D39\u7248","member.freeHint":"\u5347\u7EA7\u4F1A\u5458\u53EF\u4EE5\u83B7\u5F97\u66F4\u591A AI \u989D\u5EA6","member.expires":"{date} \u5230\u671F","member.noExpiry":"\u957F\u671F\u6709\u6548","member.loadFailed":"\u4F1A\u5458\u4FE1\u606F\u6682\u65F6\u62FF\u4E0D\u5230\u3002","session.title":"\u767B\u5F55","session.desc":"\u7BA1\u7406\u8FD9\u53F0\u8BBE\u5907\u4E0A\u7684\u767B\u5F55\u72B6\u6001","local.title":"\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u8D26\u53F7","local.desc":"\u5728\u767B\u5F55\u8FC7\u7684\u8D26\u53F7\u4E4B\u95F4\u5207\u6362","local.current":"\u5F53\u524D","local.switch":"\u5207\u6362","local.add":"\u767B\u5F55\u5176\u4ED6\u8D26\u53F7","local.signOut":"\u9000\u51FA\u767B\u5F55","local.empty":"\u8FD8\u6CA1\u6709\u4FDD\u5B58\u7684\u8D26\u53F7","local.loadFailed":"\u8D26\u53F7\u5217\u8868\u6682\u65F6\u8BFB\u4E0D\u5230","diag.title":"\u8BCA\u65AD\u6570\u636E","diag.desc":"\u5E2E\u52A9\u6211\u4EEC\u6392\u67E5\u95EE\u9898\u3001\u6539\u8FDB Forsion\u3002\u9ED8\u8BA4\u5173\u95ED\u3002","diag.enable":"\u4E0A\u4F20\u8BCA\u65AD\u6570\u636E","diag.enableDesc":"\u6253\u5F00\u540E\uFF0C\u8FD9\u53F0\u7535\u8111\u4F1A\u5B9A\u671F\u4E0A\u4F20\u4E00\u4EFD Forsion \u4FE1\u606F\u5FEB\u7167\u5230\u4F60\u7684 Forsion \u8D26\u53F7\uFF0CForsion \u56E2\u961F\u53EF\u4EE5\u67E5\u770B\u3002\u591A\u4E45\u4E0A\u4F20\u4E00\u6B21\u7531 Forsion \u56E2\u961F\u8BBE\u5B9A\uFF0C\u9ED8\u8BA4\u6BCF\u5929\u4E00\u6B21\u3002\u968F\u65F6\u53EF\u4EE5\u5173\u95ED\u3002","diag.collected":"\u4F1A\u4E0A\u4F20","diag.item.app":"\u5E94\u7528\u4E0E\u7CFB\u7EDF\u7684\u7248\u672C\uFF0C\u8FD9\u53F0\u7535\u8111\u7684\u540D\u5B57\u3001\u5185\u5B58\u4E0E\u78C1\u76D8\u4F59\u91CF","diag.item.settings":"\u6A21\u578B\u4E0E\u8BED\u97F3\u7684\u9009\u62E9\uFF0C\u540E\u53F0 Agent \u4E0E\u63D2\u4EF6\u8BBE\u7F6E\u91CC\u7684\u5F00\u5173\u548C\u6570\u503C\uFF0CMCP \u670D\u52A1\u4E0E\u6D88\u606F\u901A\u9053\u7684\u540D\u5B57\u548C\u5F00\u5173","diag.item.agents":"Agent \u4E0E\u56E2\u961F\u7684\u914D\u7F6E\uFF08\u540D\u5B57\u3001\u6A21\u578B\u8FD9\u7C7B\u9009\u9879\uFF1B\u63CF\u8FF0\u4E0E\u63D0\u793A\u8BCD\u53EA\u8BB0\u957F\u5EA6\uFF0C\u6B63\u6587\u5F52\u4E0B\u9762\u300C\u4EBA\u8BBE\u3001\u8BB0\u5FC6\u4E0E\u8FDB\u5316\u8BB0\u5F55\u300D\u90A3\u4E2A\u5F00\u5173\uFF09","diag.item.plugins":"\u5DF2\u5B89\u88C5\u7684\u63D2\u4EF6\u3001\u6280\u80FD\u3001\u4E3B\u9898\u548C Space \u7684\u540D\u5B57\u4E0E\u7248\u672C","diag.item.runs":"\u6700\u8FD1 7 \u5929\u7684\u8FD0\u884C\u8BB0\u5F55\uFF1A\u6BCF\u6B21\u8FD0\u884C\u7684\u72B6\u6001\u548C\u62A5\u9519\u539F\u56E0\uFF0C\u6A21\u578B\u8C03\u7528\u4E0E\u5DE5\u5177\u7684\u7528\u91CF\u3001\u8017\u65F6\uFF08\u4E0D\u5E26\u5BF9\u8BDD\u5185\u5BB9\u548C\u5DE5\u5177\u8BFB\u5199\u7684\u5185\u5BB9\uFF09\uFF0C\u4EE5\u53CA\u5F15\u64CE\u6700\u8FD1\u7684\u8FD0\u884C\u65E5\u5FD7","diag.notCollected":"\u4E0D\u4F1A\u4E0A\u4F20\uFF1A\u4FDD\u5B58\u5728\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u767B\u5F55\u51ED\u636E\u4E0E API \u5BC6\u94A5\u3001\u7B14\u8BB0\u6587\u4EF6\u3001Agent \u7684\u8D44\u6599\u5E93\u3001\u63D2\u4EF6\u6570\u636E\u3002","diag.sessions":"\u5305\u542B\u4F1A\u8BDD\u5185\u5BB9","diag.sessionsDesc":"\u8FD9\u53F0\u7535\u8111\u4E0A\u7684\u5BF9\u8BDD\uFF1A\u4F60\u548C Agent \u7684\u6D88\u606F\u6587\u5B57\u3001Agent \u7684\u601D\u8003\u8FC7\u7A0B\u548C\u7528\u5230\u7684\u5DE5\u5177\u540D\uFF0C\u5305\u62EC\u56E2\u961F\u6210\u5458\u3001\u8BA8\u8BBA\u3001\u59D4\u6D3E\u5728\u540E\u53F0\u505A\u7684\u90A3\u90E8\u5206\u3002\u6BCF\u6B21\u53EA\u4E0A\u4F20\u8FD8\u6CA1\u4E0A\u4F20\u8FC7\u7684\u90E8\u5206\uFF0C\u6700\u591A\u5F80\u524D 7 \u5929\u3002\u5DE5\u5177\u8BFB\u5199\u7684\u5185\u5BB9\u548C\u9644\u4EF6\u672C\u8EAB\u4E0D\u5E26\uFF1B\u6D88\u606F\u91CC\u51FA\u73B0\u7684\u6587\u4EF6\u540D\u3001Agent \u5728\u56DE\u590D\u91CC\u590D\u8FF0\u7684\u7B14\u8BB0\u6216\u6587\u4EF6\u5185\u5BB9\u4F1A\u5728\u5176\u4E2D\u3002\u5E38\u89C1\u683C\u5F0F\u7684\u5BC6\u94A5\u4F1A\u906E\u6389\uFF0C\u5176\u4F59\u539F\u6837\u4E0A\u4F20\u3002\u4E0D\u60F3\u63D0\u4F9B\u53EF\u4EE5\u5148\u5173\u6389\u518D\u6253\u5F00\u4E0A\u4F20\u3002","diag.memory":"\u5305\u542B Agent \u7684\u4EBA\u8BBE\u3001\u8BB0\u5FC6\u4E0E\u8FDB\u5316\u8BB0\u5F55","diag.memoryDesc":"\u6BCF\u4E2A Agent \u7684\u4EBA\u8BBE\uFF08\u5305\u62EC\u914D\u7F6E\u91CC\u7684\u63CF\u8FF0\u548C\u5F00\u53D1\u8005\u6307\u4EE4\uFF09\uFF0C\u548C\u5B83\u81EA\u5DF1\u6512\u4E0B\u6765\u7684\u5185\u5BB9\uFF1A\u8BB0\u5FC6\u548C\u8FD8\u6CA1\u6574\u7406\u7684\u8BB0\u5FC6\u5019\u9009\u3001\u8FDB\u5316\u8BB0\u5F55\u3001\u5199\u7ED9\u4F60\u7684\u534F\u4F5C\u8BF4\u660E\u3001\u6700\u8FD1 7 \u5929\u7684\u65E5\u5FD7\u548C\u8BB0\u5FC6\u6574\u7406\u8BB0\u5F55\uFF0C\u4EE5\u53CA\u9879\u76EE\u8BB0\u5FC6\uFF1B\u8FD8\u6709\u56E2\u961F\u7684\u8BBE\u5B9A\u548C\u4F60\u7684\u7528\u6237\u753B\u50CF\u3002\u8FD9\u4E9B\u662F\u4F60\u7ED9 Agent \u548C\u56E2\u961F\u5199\u7684\u8BBE\u5B9A\uFF0C\u548C Agent \u4ECE\u5BF9\u8BDD\u91CC\u8BB0\u4E0B\u7684\u5173\u4E8E\u4F60\u548C\u4F60\u7684\u5DE5\u4F5C\u7684\u4E8B\u5B9E\uFF0C\u6BCF\u6B21\u4E0A\u4F20\u5B83\u4EEC\u5F53\u524D\u7684\u5185\u5BB9\uFF08\u5F88\u957F\u7684\u4F1A\u622A\u65AD\uFF09\u3002\u5E38\u89C1\u683C\u5F0F\u7684\u5BC6\u94A5\u4F1A\u906E\u6389\uFF0C\u5176\u4F59\u539F\u6837\u4E0A\u4F20\u3002\u4E0D\u60F3\u63D0\u4F9B\u53EF\u4EE5\u5148\u5173\u6389\u518D\u6253\u5F00\u4E0A\u4F20\u3002","diag.activity":"\u5305\u542B\u6D3B\u52A8\u65E5\u5FD7","diag.activityDesc":"\u6D3B\u52A8\u8BB0\u5F55\u91CC\u6709\u5BF9\u8BDD\u5F00\u5934\u7684\u51E0\u5341\u4E2A\u5B57\u548C\u7B14\u8BB0\u6587\u4EF6\u540D\u3002\u6BCF\u6B21\u53EA\u4E0A\u4F20\u8FD8\u6CA1\u4E0A\u4F20\u8FC7\u7684\u90E8\u5206\uFF0C\u6700\u591A\u5F80\u524D 7 \u5929\u3002\u4E0D\u60F3\u63D0\u4F9B\u53EF\u4EE5\u5148\u5173\u6389\u518D\u6253\u5F00\u4E0A\u4F20\u3002","diag.last":"\u4E0A\u6B21\u4E0A\u4F20\uFF1A{time}","diag.noUpload":"\u8FD8\u6CA1\u6709\u4E0A\u4F20\u8FC7","diag.freq.hour":"\u6BCF\u5C0F\u65F6\u4E00\u6B21","diag.freq.hours":"\u6BCF {n} \u5C0F\u65F6\u4E00\u6B21","diag.freq.day":"\u6BCF\u5929\u4E00\u6B21","diag.freq.days":"\u6BCF {n} \u5929\u4E00\u6B21","diag.freq.manual":"Forsion \u56E2\u961F\u9700\u8981\u65F6\u624D\u91C7\u96C6","diag.retention":"\u4E91\u7AEF\u4FDD\u7559\u8FD9\u53F0\u7535\u8111\u6700\u8FD1 {n} \u5929\u7684\u5FEB\u7167\u3002\u5173\u95ED\u540E\u4E0D\u518D\u4E0A\u4F20\uFF1B\u5DF2\u4E0A\u4F20\u7684\u5FEB\u7167\u4ECD\u7559\u5728\u4E91\u7AEF\uFF0C\u9700\u8981\u5220\u9664\u53EF\u4EE5\u5728\u300C\u53CD\u9988\u300D\u91CC\u544A\u8BC9\u6211\u4EEC\u3002","diag.uploadNow":"\u7ACB\u5373\u4E0A\u4F20","diag.uploaded":"\u5DF2\u4E0A\u4F20","diag.failed":"\u4E0A\u4F20\u5931\u8D25\uFF1A{reason}","quota.ai.title":"AI \u989D\u5EA6","quota.ai.desc":"\u4ECA\u65E5\u548C\u672C\u5468\u5404\u8FD8\u5269\u591A\u5C11\uFF1B\u7528\u5B8C\u540E\u53EF\u4EE5\u7528\u989D\u5EA6\u91CD\u7F6E\u5361\u6062\u590D","quota.resetDaily":"\u6BCF\u5929 0:00 \u91CD\u7F6E\uFF08\u5317\u4EAC\u65F6\u95F4\uFF09","quota.resetWeekly":"{date} 0:00 \u91CD\u7F6E\uFF08\u5317\u4EAC\u65F6\u95F4\uFF09","card.title":"\u989D\u5EA6\u91CD\u7F6E\u5361","card.desc":"\u628A\u4ECA\u65E5\u548C\u672C\u5468\u7684 AI \u989D\u5EA6\u6062\u590D\u5230 100%","card.owned":"\u6301\u6709 {n} \u5F20","card.use":"\u4F7F\u7528\u4E00\u5F20","card.useConfirm":"\u786E\u8BA4\u4F7F\u7528","card.used":"\u5DF2\u4F7F\u7528 1 \u5F20\u989D\u5EA6\u91CD\u7F6E\u5361","card.left":"\u8FD8\u5269 {n} \u5F20","card.noneHint":"\u6CA1\u6709\u989D\u5EA6\u91CD\u7F6E\u5361\u4E86\uFF0C\u53EF\u4EE5\u7528\u79EF\u5206\u5151\u6362\u3002","card.exchange":"\u7528\u79EF\u5206\u5151\u6362","card.price":"\u6BCF\u5F20 {price} \u79EF\u5206\uFF0C\u4E00\u6B21 1\u201350 \u5F20","card.count":"\u5151\u6362\u5F20\u6570","card.cost":"\u82B1\u8D39 {cost} \u79EF\u5206","card.countHint":"\u586B 1\u201350","card.exchangeButton":"\u5151\u6362","card.exchangeConfirm":"\u786E\u8BA4\u82B1\u8D39 {cost} \u79EF\u5206","card.exchanged":"\u5DF2\u5151\u6362 {n} \u5F20\u989D\u5EA6\u91CD\u7F6E\u5361","points.title":"\u79EF\u5206","points.desc":"\u79EF\u5206\u53EF\u4EE5\u5151\u6362\u989D\u5EA6\u91CD\u7F6E\u5361","points.balance":"\u4F59\u989D","points.balanceFailed":"\u4F59\u989D\u6682\u65F6\u62FF\u4E0D\u5230","points.recharge":"\u5145\u503C\u79EF\u5206","bg.title":"\u540E\u53F0\u989D\u5EA6","bg.desc":"Muse \u4E0E\u81EA\u52A8\u5316\u4F7F\u7528\uFF0C\u548C AI \u989D\u5EA6\u5206\u5F00\u8BA1\u7B97","bg.autoMain":"\u7528\u5B8C\u540E\u6539\u7528 AI \u989D\u5EA6\u7EE7\u7EED","bg.autoMainDesc":"\u5173\u7740\u65F6\uFF0C\u540E\u53F0\u989D\u5EA6\u7528\u5B8C\u540E Muse \u4E0E\u81EA\u52A8\u5316\u4F1A\u6682\u505C","bg.convert":"\u4ECE AI \u989D\u5EA6\u8F6C\u5165","bg.convertDesc":"\u6309 AI \u989D\u5EA6\u4E0A\u9650\u7684\u6BD4\u4F8B\u8F6C\u5165\uFF0C\u672C\u5468\u671F\u5185\u6709\u6548","bg.convertConfirm":"\u786E\u8BA4\u8F6C\u5165 {pct}%","bg.converted":"\u5DF2\u4ECE AI \u989D\u5EA6\u8F6C\u5165 {pct}%","invite.title":"\u9080\u8BF7\u4E0E\u5151\u6362","invite.desc":"\u9080\u8BF7\u597D\u53CB\u6CE8\u518C\uFF0C\u6216\u5151\u6362\u4F60\u6536\u5230\u7684\u7801","invite.myCode":"\u6211\u7684\u9080\u8BF7\u7801","invite.count":"\u5DF2\u9080\u8BF7 {n} \u4EBA","invite.copyCode":"\u590D\u5236\u9080\u8BF7\u7801","invite.copyLink":"\u590D\u5236\u9080\u8BF7\u94FE\u63A5","invite.loadFailed":"\u9080\u8BF7\u7801\u6682\u65F6\u62FF\u4E0D\u5230","invite.claim":"\u586B\u5199\u9080\u8BF7\u7801","invite.claimDesc":"\u6CE8\u518C\u540E 7 \u5929\u5185\uFF0C\u53EF\u4EE5\u8865\u586B\u597D\u53CB\u7684\u9080\u8BF7\u7801","invite.claimPlaceholder":"\u597D\u53CB\u7684\u9080\u8BF7\u7801","invite.claimSubmit":"\u63D0\u4EA4","invite.claimed":"\u9080\u8BF7\u7801\u5DF2\u751F\u6548","redeem.title":"\u5151\u6362\u7801","redeem.desc":"\u5151\u6362\u79EF\u5206\u3001\u4F1A\u5458\u6216\u5176\u4ED6\u5956\u52B1","redeem.placeholder":"\u8F93\u5165\u5151\u6362\u7801","redeem.submit":"\u5151\u6362","redeem.success":"\u5151\u6362\u6210\u529F","redeem.successWith":"\u5151\u6362\u6210\u529F\uFF1A{what}","redeem.gotPoints":"{n} \u79EF\u5206","redeem.gotMembership":"\u4F1A\u5458","sec.methods.title":"\u767B\u5F55\u65B9\u5F0F","sec.methods.desc":"\u624B\u673A\u548C\u90AE\u7BB1\u53EF\u4EE5\u7528\u6765\u767B\u5F55\u3001\u627E\u56DE\u5BC6\u7801","sec.bind":"\u7ED1\u5B9A","sec.change":"\u66F4\u6362","sec.phone":"\u624B\u673A\u53F7","sec.email":"\u90AE\u7BB1\u5730\u5740","sec.newPhone":"\u65B0\u624B\u673A\u53F7","sec.newEmail":"\u65B0\u90AE\u7BB1\u5730\u5740","sec.phonePlaceholder":"\u4E2D\u56FD\u5927\u9646\u53F7\u7801\u76F4\u63A5\u586B\uFF0C\u5176\u4ED6\u5730\u533A\u5E26 +\u533A\u53F7","sec.emailPlaceholder":"name@example.com","sec.code":"\u9A8C\u8BC1\u7801","sec.codePlaceholder":"\u8F93\u5165\u9A8C\u8BC1\u7801","sec.sendCode":"\u53D1\u9001\u9A8C\u8BC1\u7801","sec.resendIn":"{s} \u79D2\u540E\u91CD\u53D1","sec.codeSent":"\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001","sec.bindSubmit":"\u786E\u8BA4\u7ED1\u5B9A","sec.phoneBound":"\u624B\u673A\u5DF2\u7ED1\u5B9A","sec.emailBound":"\u90AE\u7BB1\u5DF2\u7ED1\u5B9A","sec.devices.title":"\u767B\u5F55\u8BBE\u5907","sec.devices.desc":"\u62C5\u5FC3\u8D26\u53F7\u88AB\u522B\u4EBA\u7528\u4E86\uFF0C\u53EF\u4EE5\u8BA9\u6240\u6709\u8BBE\u5907\u91CD\u65B0\u767B\u5F55","sec.logoutAll":"\u9000\u51FA\u6240\u6709\u8BBE\u5907","sec.logoutAllDesc":"\u5305\u62EC\u8FD9\u53F0\u8BBE\u5907\uFF0C\u6240\u6709\u8BBE\u5907\u90FD\u8981\u91CD\u65B0\u767B\u5F55","sec.logoutAllConfirm":"\u786E\u8BA4\u9000\u51FA\u6240\u6709\u8BBE\u5907","sec.logoutAllDone":"\u5DF2\u9000\u51FA\u6240\u6709\u8BBE\u5907","pw.title":"\u5BC6\u7801","pw.desc":"{min}\u2013{max} \u4F4D\uFF0C\u542B\u5C0F\u5199\u5B57\u6BCD\u3001\u5927\u5199\u5B57\u6BCD\u548C\u7279\u6B8A\u5B57\u7B26\uFF0C\u4E0D\u80FD\u6709\u7A7A\u683C","pw.change":"\u4FEE\u6539\u5BC6\u7801","pw.modeLabel":"\u4FEE\u6539\u65B9\u5F0F","pw.mode.current":"\u7528\u5F53\u524D\u5BC6\u7801","pw.mode.code":"\u7528\u9A8C\u8BC1\u7801","pw.current":"\u5F53\u524D\u5BC6\u7801","pw.currentRequired":"\u8BF7\u8F93\u5165\u5F53\u524D\u5BC6\u7801","pw.new":"\u65B0\u5BC6\u7801","pw.confirm":"\u518D\u8F93\u4E00\u6B21\u65B0\u5BC6\u7801","pw.mismatch":"\u4E24\u6B21\u8F93\u5165\u7684\u65B0\u5BC6\u7801\u4E0D\u4E00\u81F4","pw.submit":"\u4FEE\u6539\u5BC6\u7801","pw.submitReset":"\u8BBE\u7F6E\u65B0\u5BC6\u7801","pw.changed":"\u5BC6\u7801\u5DF2\u66F4\u65B0","pw.noPasswordYet":"\u8FD9\u4E2A\u8D26\u53F7\u8FD8\u6CA1\u6709\u8BBE\u7F6E\u5BC6\u7801\uFF0C\u8BF7\u6539\u7528\u9A8C\u8BC1\u7801\u8BBE\u7F6E\u3002","pw.codeNeedsContact":"\u7ED1\u5B9A\u624B\u673A\u6216\u90AE\u7BB1\u540E\uFF0C\u624D\u80FD\u7528\u9A8C\u8BC1\u7801\u8BBE\u7F6E\u5BC6\u7801\u3002","pw.via":"\u9A8C\u8BC1\u7801\u53D1\u5230","pw.codeTo":"\u9A8C\u8BC1\u7801\u4F1A\u53D1\u5230 {target}","pw.rulesLabel":"\u5BC6\u7801\u89C4\u5219","pw.req.length":"{min}\u2013{max} \u4F4D","pw.req.lower":"\u542B\u5C0F\u5199\u5B57\u6BCD","pw.req.upper":"\u542B\u5927\u5199\u5B57\u6BCD","pw.req.special":"\u542B\u7279\u6B8A\u5B57\u7B26","pw.req.space":"\u4E0D\u542B\u7A7A\u683C","pw.rule.format":"\u5BC6\u7801\u683C\u5F0F\u4E0D\u6B63\u786E","pw.rule.min":"\u5BC6\u7801\u81F3\u5C11 8 \u4F4D","pw.rule.max":"\u5BC6\u7801\u4E0D\u80FD\u8D85\u8FC7 64 \u4F4D","pw.rule.space":"\u5BC6\u7801\u4E0D\u80FD\u5305\u542B\u7A7A\u683C","pw.rule.lower":"\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5C0F\u5199\u5B57\u6BCD","pw.rule.upper":"\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5927\u5199\u5B57\u6BCD","pw.rule.special":"\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u7279\u6B8A\u5B57\u7B26","del.title":"\u6CE8\u9500\u8D26\u53F7","del.desc":"\u6C38\u4E45\u5220\u9664\u8D26\u53F7\u548C\u5168\u90E8\u6570\u636E\uFF0C\u65E0\u6CD5\u6062\u590D","del.start":"\u6CE8\u9500\u8D26\u53F7","del.warn":"\u6CE8\u9500\u540E\uFF0C\u8D26\u53F7\u3001\u79EF\u5206\u3001\u4F1A\u5458\u3001\u4E91\u7A7A\u95F4\u548C\u5168\u90E8\u6570\u636E\u90FD\u4F1A\u88AB\u5220\u9664\uFF0C\u65E0\u6CD5\u627E\u56DE\u3002","del.methodLabel":"\u9A8C\u8BC1\u65B9\u5F0F","del.byCode":"\u9A8C\u8BC1\u7801","del.byPassword":"\u5BC6\u7801","del.codeLabel":"\u53D1\u5230 {target} \u7684\u9A8C\u8BC1\u7801","del.passwordLabel":"\u8D26\u53F7\u5BC6\u7801","del.submit":"\u6CE8\u9500\u8D26\u53F7","del.confirm":"\u786E\u8BA4\u6C38\u4E45\u6CE8\u9500","del.done":"\u8D26\u53F7\u5DF2\u6CE8\u9500","usage.overview.title":"\u7528\u91CF\u6982\u89C8","usage.overview.desc":"\u6240\u9009\u65F6\u95F4\u6BB5\u5185\u7684\u8BF7\u6C42\u4E0E AI \u989D\u5EA6\u6D88\u8017","usage.range":"\u65F6\u95F4\u8303\u56F4","usage.days":"{n} \u5929","usage.requests":"\u8BF7\u6C42\u6B21\u6570","usage.successRate":"\u6210\u529F\u7387","usage.consumption":"AI \u989D\u5EA6\u6D88\u8017","usage.ofToday":"\u5360\u4ECA\u65E5\u989D\u5EA6\u4E0A\u9650","usage.unlimitedNote":"\u4F60\u7684 AI \u989D\u5EA6\u4E0D\u9650\uFF0C\u6D88\u8017\u65E0\u6CD5\u6298\u7B97\u6210\u767E\u5206\u6BD4\u3002","usage.noLimitNote":"\u4ECA\u65E5\u989D\u5EA6\u4E0A\u9650\u4E3A 0 \u6216\u6682\u65F6\u62FF\u4E0D\u5230\uFF0C\u6D88\u8017\u65E0\u6CD5\u6298\u7B97\u6210\u767E\u5206\u6BD4\u3002","usage.byModel.title":"\u6309\u6A21\u578B","usage.byModel.desc":"\u5404\u6A21\u578B\u7684\u8BF7\u6C42\u6570\u4E0E\u989D\u5EA6\u6D88\u8017","usage.byApp.title":"\u6309\u5E94\u7528","usage.byApp.desc":"\u5404\u5E94\u7528\u7684\u8BF7\u6C42\u6570\u4E0E\u989D\u5EA6\u6D88\u8017","usage.col.model":"\u6A21\u578B","usage.col.app":"\u5E94\u7528","usage.col.requests":"\u8BF7\u6C42","usage.col.consumption":"\u989D\u5EA6\u6D88\u8017","usage.empty":"\u8FD9\u6BB5\u65F6\u95F4\u6CA1\u6709\u7528\u91CF","usage.appUnknown":"\u5176\u4ED6","usage.recent.title":"\u6700\u8FD1\u6D88\u8017","usage.recent.desc":"\u6BCF\u6B21\u8C03\u7528\u5360\u4ECA\u65E5\u989D\u5EA6\u4E0A\u9650\u7684\u6BD4\u4F8B","usage.recentEmpty":"\u8FD8\u6CA1\u6709\u6D88\u8017\u8BB0\u5F55","usage.failed":"\u5931\u8D25","usage.shown":"\u5DF2\u663E\u793A {shown} / {total} \u6761","fb.list.title":"\u6211\u7684\u53CD\u9988","fb.list.desc":"\u63D0\u4EA4\u8FC7\u7684\u95EE\u9898\u548C\u5EFA\u8BAE\uFF0C\u56DE\u590D\u4F1A\u663E\u793A\u5728\u8FD9\u91CC","fb.new":"\u65B0\u5EFA\u53CD\u9988","fb.empty":"\u8FD8\u6CA1\u6709\u53CD\u9988","fb.untitled":"\u672A\u547D\u540D\u53CD\u9988","fb.unread":"\u6709\u65B0\u56DE\u590D","fb.shown":"\u5DF2\u663E\u793A {n} \u6761","fb.submitted":"\u5DF2\u63D0\u4EA4\uFF0C\u6211\u4EEC\u4F1A\u5C3D\u5FEB\u56DE\u590D","fb.descLabel":"\u63CF\u8FF0\u95EE\u9898\u6216\u5EFA\u8BAE","fb.descPlaceholder":"\u53D1\u751F\u4E86\u4EC0\u4E48\uFF0C\u4F60\u671F\u671B\u600E\u6837\u2026\u2026","fb.imagesHint":"\u6700\u591A\u9644 {n} \u5F20\u622A\u56FE\uFF08\u6BCF\u5F20\u4E0D\u8D85\u8FC7 5MB\uFF09\uFF0C\u53EF\u4EE5\u7C98\u8D34\u6216\u62D6\u8FDB\u6765\u3002","fb.addImages":"\u6DFB\u52A0\u622A\u56FE","fb.removeImage":"\u79FB\u9664\u8FD9\u5F20\u56FE","fb.submit":"\u63D0\u4EA4","fb.back":"\u8FD4\u56DE\u5217\u8868","fb.you":"\u4F60","fb.support":"Forsion \u56E2\u961F","fb.attachment":"\u9644\u4EF6","fb.imagePreview":"\u67E5\u770B\u5927\u56FE","fb.closedNote":"\u8FD9\u4E2A\u5DE5\u5355\u5DF2\u5173\u95ED\uFF0C\u4E0D\u80FD\u518D\u56DE\u590D\u3002\u6709\u65B0\u95EE\u9898\u8BF7\u65B0\u5EFA\u53CD\u9988\u3002","fb.replyPlaceholder":"\u56DE\u590D\u2026","fb.replySend":"\u53D1\u9001\u56DE\u590D","fb.replySent":"\u56DE\u590D\u5DF2\u53D1\u9001","fb.status.open":"\u5F85\u5904\u7406","fb.status.in_progress":"\u5904\u7406\u4E2D","fb.status.resolved":"\u5DF2\u89E3\u51B3","fb.status.closed":"\u5DF2\u5173\u95ED","err.accountGone":"\u8FD9\u4E2A\u8D26\u53F7\u5DF2\u9000\u51FA\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55","err.adminCannotDelete":"\u7BA1\u7406\u5458\u8D26\u53F7\u4E0D\u80FD\u81EA\u52A9\u6CE8\u9500","err.avatarInvalid":"\u8FD9\u5F20\u56FE\u7247\u8BFB\u4E0D\u51FA\u6765\uFF0C\u6362\u4E00\u5F20\u8BD5\u8BD5","err.avatarTooLarge":"\u56FE\u7247\u592A\u5927\u4E86\uFF0C\u6362\u4E00\u5F20\u5C0F\u4E00\u70B9\u7684","err.backgroundUnavailable":"\u540E\u53F0\u989D\u5EA6\u6682\u65F6\u4E0D\u53EF\u7528","err.captcha":"\u9700\u8981\u5728\u6D4F\u89C8\u5668\u4E2D\u5B8C\u6210\u4EBA\u673A\u9A8C\u8BC1","err.codeCooldown":"\u53D1\u9001\u592A\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.codeInvalid":"\u9A8C\u8BC1\u7801\u4E0D\u5BF9\u6216\u5DF2\u8FC7\u671F","err.codeRequired":"\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801","err.codeSendFailed":"\u9A8C\u8BC1\u7801\u6CA1\u53D1\u51FA\u53BB\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.currentPasswordWrong":"\u5F53\u524D\u5BC6\u7801\u4E0D\u5BF9","err.deleteTargetInvalid":"\u9A8C\u8BC1\u7801\u53EA\u80FD\u53D1\u5230\u8D26\u53F7\u7ED1\u5B9A\u7684\u624B\u673A\u6216\u90AE\u7BB1","err.deleteVerifyFailed":"\u9A8C\u8BC1\u6CA1\u901A\u8FC7\uFF0C\u8D26\u53F7\u6CA1\u6709\u6CE8\u9500","err.emailInUse":"\u8FD9\u4E2A\u90AE\u7BB1\u5DF2\u88AB\u5176\u4ED6\u8D26\u53F7\u4F7F\u7528","err.emailInvalid":"\u90AE\u7BB1\u683C\u5F0F\u4E0D\u5BF9","err.featureDisabled":"\u8FD9\u9879\u529F\u80FD\u6682\u65F6\u5173\u95ED\u4E86","err.feedbackEmpty":"\u8BF7\u5199\u4E00\u4E0B\u95EE\u9898\u6216\u5EFA\u8BAE","err.feedbackTooLong":"\u63CF\u8FF0\u592A\u957F\u4E86\uFF08\u6700\u591A 10000 \u5B57\uFF09","err.generic":"\u64CD\u4F5C\u6CA1\u6709\u6210\u529F\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.imageRead":"\u56FE\u7247\u8BFB\u4E0D\u51FA\u6765","err.imageTooLarge":"\u6BCF\u5F20\u56FE\u7247\u4E0D\u80FD\u8D85\u8FC7 5MB","err.imageType":"\u53EA\u80FD\u6DFB\u52A0\u56FE\u7247","err.insufficientMainQuota":"AI \u989D\u5EA6\u5DF2\u7528\u5B8C\uFF0C\u6CA1\u6709\u53EF\u8F6C\u5165\u7684\u989D\u5EA6","err.insufficientPoints":"\u79EF\u5206\u4E0D\u591F","err.priceChanged":"\u91CD\u7F6E\u5361\u5355\u4EF7\u521A\u521A\u8C03\u6574\u8FC7\uFF0C\u8BF7\u770B\u4E00\u4E0B\u65B0\u4EF7\u683C\uFF0C\u518D\u786E\u8BA4\u5151\u6362\u3002","err.invalidCount":"\u5F20\u6570\u8981\u5728 1\u201350 \u4E4B\u95F4","err.invalidInviteCode":"\u9080\u8BF7\u7801\u65E0\u6548\u6216\u5DF2\u5931\u6548","err.inviteAlreadyUsed":"\u4F60\u5DF2\u7ECF\u7528\u8FC7\u9080\u8BF7\u7801\u4E86","err.inviteEmpty":"\u8BF7\u8F93\u5165\u9080\u8BF7\u7801","err.inviteOwnCode":"\u4E0D\u80FD\u586B\u81EA\u5DF1\u7684\u9080\u8BF7\u7801","err.inviteWindowExpired":"\u5DF2\u8D85\u8FC7\u6CE8\u518C\u540E 7 \u5929\u7684\u8865\u586B\u671F","err.loginCodeExpired":"\u767B\u5F55\u7801\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55","err.loginInProgress":"\u6B63\u5728\u767B\u5F55\u4E2D","err.loginTimeout":"\u767B\u5F55\u8D85\u65F6\uFF0C\u8BF7\u91CD\u8BD5","err.loginUnsupported":"\u8FD9\u4E2A\u4E91\u7AEF\u4E0D\u652F\u6301\u684C\u9762\u7AEF\u767B\u5F55","err.network":"\u7F51\u7EDC\u8FDE\u63A5\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u540E\u91CD\u8BD5","err.noCloudUrl":"\u8BF7\u5148\u5728\u300C\u8FDE\u63A5\u300D\u91CC\u586B\u5199\u4E91\u7AEF\u5730\u5740","err.noResetCard":"\u6CA1\u6709\u53EF\u7528\u7684\u989D\u5EA6\u91CD\u7F6E\u5361","err.openFailed":"\u6CA1\u80FD\u6253\u5F00\u6D4F\u89C8\u5668","err.passwordRequired":"\u8BF7\u586B\u5199\u5F53\u524D\u5BC6\u7801\u548C\u65B0\u5BC6\u7801","err.phoneInUse":"\u8FD9\u4E2A\u624B\u673A\u53F7\u5DF2\u88AB\u5176\u4ED6\u8D26\u53F7\u4F7F\u7528","err.phoneInvalid":"\u624B\u673A\u53F7\u683C\u5F0F\u4E0D\u5BF9\uFF08\u5176\u4ED6\u5730\u533A\u8BF7\u5E26 +\u533A\u53F7\uFF09","err.redeemEmpty":"\u8BF7\u8F93\u5165\u5151\u6362\u7801","err.redeemExpired":"\u5151\u6362\u7801\u5DF2\u8FC7\u671F","err.redeemInactive":"\u5151\u6362\u7801\u5DF2\u505C\u7528","err.redeemNotFound":"\u5151\u6362\u7801\u4E0D\u5B58\u5728","err.redeemUsedUp":"\u5151\u6362\u7801\u5DF2\u88AB\u7528\u5B8C","err.redeemUserLimit":"\u4F60\u5DF2\u7ECF\u5151\u6362\u8FC7\u8FD9\u4E2A\u7801\u4E86","err.replyEmpty":"\u8BF7\u8F93\u5165\u56DE\u590D\u5185\u5BB9","err.replyTooLong":"\u56DE\u590D\u592A\u957F\u4E86\uFF08\u6700\u591A 10000 \u5B57\uFF09","err.server":"\u670D\u52A1\u5668\u51FA\u9519\u4E86\uFF08{status}\uFF09\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.session":"\u767B\u5F55\u72B6\u6001\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55","err.signedOut":"\u8BF7\u5148\u767B\u5F55 Forsion","err.targetInvalid":"\u624B\u673A\u53F7\u6216\u90AE\u7BB1\u683C\u5F0F\u4E0D\u5BF9","err.ticketNotFound":"\u8FD9\u6761\u53CD\u9988\u4E0D\u5B58\u5728\u6216\u5DF2\u5220\u9664","err.webPageGone":"\u8FD9\u4E2A\u7F51\u9875\u4E0D\u5B58\u5728\u6216\u5DF2\u4E0B\u7EBF","err.listingGone":"\u8FD9\u4E2A\u7F51\u9875\u6CA1\u6709\u4E0A\u67B6\u7533\u8BF7","err.listingSummary":"\u8BF7\u586B\u5199\u5546\u5E97\u7B80\u4ECB\uFF08300 \u5B57\u4EE5\u5185\uFF09","err.tooFrequent":"\u64CD\u4F5C\u592A\u9891\u7E41\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5","err.tooManyImages":"\u6700\u591A\u6DFB\u52A0 5 \u5F20\u56FE\u7247","err.unavailable":"\u8FD9\u4E2A\u7248\u672C\u8FD8\u4E0D\u652F\u6301\u8FD9\u4E2A\u64CD\u4F5C\uFF0C\u8BF7\u66F4\u65B0 Forsion","profile.unsupported":"\u8FD9\u4E2A\u670D\u52A1\u7AEF\u8FD8\u6CA1\u6709\u4E2A\u4EBA\u4E3B\u9875\u529F\u80FD","profile.state.private":"\u4EC5\u81EA\u5DF1\u53EF\u89C1","profile.state.public":"\u5DF2\u516C\u5F00","profile.state.privateDesc":"\u516C\u5F00\u540E\uFF0C\u4EFB\u4F55\u4EBA\u6253\u5F00\u5730\u5740\u90FD\u80FD\u770B\u5230\u4F60\u7684\u4E3B\u9875\uFF0C\u4E0D\u9700\u8981\u767B\u5F55","profile.state.publicDesc":"\u4EFB\u4F55\u4EBA\u6253\u5F00\u516C\u5F00\u5730\u5740\u90FD\u80FD\u770B\u5230\uFF0C\u4E0D\u9700\u8981\u767B\u5F55","profile.decorate":"\u88C5\u9970","profile.publish":"\u516C\u5F00\u4E3B\u9875","profile.makePrivate":"\u8BBE\u4E3A\u79C1\u6709","profile.address":"\u516C\u5F00\u5730\u5740","profile.copyLink":"\u590D\u5236\u94FE\u63A5","profile.openPublic":"\u67E5\u770B\u516C\u5F00\u9875","profile.nowPublic":"\u4E3B\u9875\u5DF2\u516C\u5F00","profile.nowPrivate":"\u4E3B\u9875\u5DF2\u8BBE\u4E3A\u79C1\u6709\uFF0C\u516C\u5F00\u5730\u5740\u4E0D\u518D\u80FD\u6253\u5F00","profile.bio":"\u7B80\u4ECB","profile.bioPlaceholder":"\u5199\u4E00\u53E5\u7B80\u4ECB","profile.linkAdd":"\u6DFB\u52A0\u94FE\u63A5","profile.linkRemove":"\u79FB\u9664\u94FE\u63A5","profile.linkInvalid":"\u94FE\u63A5\u8981\u4EE5 http:// \u6216 https:// \u5F00\u5934\uFF0C\u6216\u76F4\u63A5\u5199\u57DF\u540D","profile.joined":"{date}\u52A0\u5165","profile.stat.tokens":"\u7D2F\u8BA1 Token","profile.stat.activeDays":"\u6D3B\u8DC3\u5929\u6570","profile.stat.longest":"\u6700\u957F\u8FDE\u7EED","profile.stat.current":"\u5F53\u524D\u8FDE\u7EED","profile.stat.installs":"\u4F5C\u54C1\u88AB\u5B89\u88C5","profile.unit.days":"\u5929","profile.works":"\u7CBE\u9009\u4F5C\u54C1","profile.worksPick":"\u9009\u62E9","profile.worksEmpty":"\u8FD8\u6CA1\u6709\u4E0A\u67B6\u7684\u4F5C\u54C1\u3002\u4E0A\u67B6\u5230\u5546\u5E97\u6216\u53D1\u5E03\u6210\u7F51\u9875\u5E94\u7528\u540E\uFF0C\u53EF\u4EE5\u653E\u5230\u8FD9\u91CC\u3002","profile.worksNone":"\u8FD8\u6CA1\u6709\u53EF\u4EE5\u653E\u4E0A\u4E3B\u9875\u7684\u4F5C\u54C1\u3002\u4F5C\u54C1\u4E0A\u67B6\u5230\u5546\u5E97\u3001\u6216\u53D1\u5E03\u6210\u7F51\u9875\u5E94\u7528\u540E\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\u3002","profile.worksPicked":"\u5DF2\u9009 {n} / {max} \u4EF6","profile.worksAuto":"\u4E0D\u9009\u7684\u8BDD\uFF0C\u6309\u5B89\u88C5\u91CF\u81EA\u52A8\u53D6\u524D\u51E0\u4EF6","profile.goSubmit":"\u53BB\u6295\u7A3F","profile.workInstalls":"{n} \u6B21\u5B89\u88C5","profile.workVisits":"{n} \u6B21\u8BBF\u95EE","profile.work.skill":"\u6280\u80FD","profile.work.agent":"Agent","profile.work.plugin":"\u63D2\u4EF6","profile.work.space":"Space","profile.work.theme":"\u4E3B\u9898","profile.work.note":"\u7B14\u8BB0\u63D2\u4EF6","profile.work.webapp":"\u7F51\u9875\u5E94\u7528","profile.activity":"\u6D3B\u52A8","profile.activityDays":"\u8FC7\u53BB\u4E00\u5E74\u6709 {n} \u5929\u5728\u7528","profile.less":"\u5C11","profile.more":"\u591A","profile.badges":"\u5FBD\u7AE0","profile.badgesEmpty":"\u8FD8\u6CA1\u6709\u5FBD\u7AE0\u3002\u8FDE\u7EED\u4F7F\u7528\u3001\u4E0A\u67B6\u4F5C\u54C1\u3001\u9080\u8BF7\u670B\u53CB\u90FD\u4F1A\u70B9\u4EAE\u3002","profile.badge.early":"\u65E9\u671F\u7528\u6237","profile.badge.streak":"\u8FDE\u7EED 30 \u5929","profile.badge.author":"\u4F5C\u8005","profile.badge.inviter":"\u9080\u8BF7\u8FBE\u4EBA","profile.badge.event":"\u6D3B\u52A8\u7EAA\u5FF5","profile.badgeSub.early":"{value} \u5E74\u52A0\u5165","profile.badgeSub.streak":"\u6700\u957F\u8FDE\u7EED {value} \u5929","profile.badgeSub.author":"\u4E0A\u67B6\u4E86 {value} \u4EF6\u4F5C\u54C1","profile.badgeSub.inviter":"\u9080\u8BF7\u4E86 {value} \u4F4D\u670B\u53CB","profile.badgeSub.event":"\u53C2\u52A0\u8FC7 Forsion \u7684\u6D3B\u52A8{value}","profile.insights":"\u6D1E\u5BDF","profile.insightsEmpty":"\u7528\u5F97\u8FD8\u4E0D\u591F\u591A\uFF0C\u8FC7\u51E0\u5929\u518D\u6765\u770B\u3002","profile.insightModel":"\u6700\u5E38\u7528\u6A21\u578B","profile.insightHours":"\u6700\u6D3B\u8DC3\u65F6\u6BB5","profile.deco.skin":"\u516C\u5F00\u9875\u7684\u914D\u8272","profile.deco.mode":"\u516C\u5F00\u9875\u7684\u660E\u6697","profile.deco.publicHint":"\u8FD9\u4E24\u9879\u53EA\u7BA1\u8BBF\u5BA2\u5728\u516C\u5F00\u9875\u4E0A\u770B\u5230\u7684\u3002\u5728\u8FD9\u91CC\uFF0C\u4E3B\u9875\u8DDF Forsion \u5F53\u524D\u7684\u4E3B\u9898\u8D70\u3002","profile.deco.cover":"\u5C01\u9762","profile.deco.frame":"\u5934\u50CF\u6846","profile.deco.modules":"\u6A21\u5757","profile.skin.cream":"\u7ECF\u5178","profile.skin.coral":"\u73CA\u745A","profile.skin.teal":"\u67D4\u9752","profile.skin.lavender":"\u85B0\u8863\u8349","profile.mode.auto":"\u8DDF\u968F\u8BBF\u5BA2","profile.mode.light":"\u6D45\u8272","profile.mode.dark":"\u6DF1\u8272","profile.cover.none":"\u65E0","profile.cover.mist":"\u6668\u96FE","profile.cover.contour":"\u7B49\u9AD8\u7EBF","profile.cover.dots":"\u7F51\u70B9","profile.frame.none":"\u65E0","profile.frame.ring":"\u7EC6\u73AF","profile.frame.pro":"\u4F1A\u5458\u73AF","profile.frameProHint":"\u4F1A\u5458\u73AF\u662F\u4ED8\u8D39\u4F1A\u5458\u4E13\u5C5E\u3002","profile.col.show":"\u663E\u793A","profile.col.public":"\u516C\u5F00","profile.moveUp":"\u4E0A\u79FB","profile.moveDown":"\u4E0B\u79FB","profile.modulesHint":"\u300C\u663E\u793A\u300D\u51B3\u5B9A\u4E3B\u9875\u4E0A\u6709\u6CA1\u6709\u8FD9\u4E00\u5757\uFF1B\u300C\u516C\u5F00\u300D\u51B3\u5B9A\u8BBF\u5BA2\u80FD\u4E0D\u80FD\u770B\u5230\uFF0C\u4E3B\u9875\u516C\u5F00\u540E\u624D\u8D77\u4F5C\u7528\u3002","profile.mod.stats":"\u6570\u636E","profile.mod.works":"\u7CBE\u9009\u4F5C\u54C1","profile.mod.activity":"\u6D3B\u52A8","profile.mod.badges":"\u5FBD\u7AE0","profile.mod.insights":"\u6D1E\u5BDF","profile.modDesc.stats":"\u7D2F\u8BA1 Token\u3001\u6D3B\u8DC3\u5929\u6570\u3001\u8FDE\u7EED\u5929\u6570\u3001\u4F5C\u54C1\u5B89\u88C5\u91CF","profile.modDesc.works":"\u4F60\u4E0A\u67B6\u7684\u4F5C\u54C1\uFF0C\u6700\u591A 6 \u4EF6","profile.modDesc.activity":"\u8FC7\u53BB\u4E00\u5E74\u6BCF\u5929\u7528\u6CA1\u7528\u3001\u7528\u5F97\u591A\u4E0D\u591A\uFF08\u53EA\u6709\u6DF1\u6D45\uFF0C\u6CA1\u6709\u5177\u4F53\u6570\u5B57\uFF09","profile.modDesc.badges":"\u52A0\u5165\u5E74\u4EFD\u3001\u8FDE\u7EED\u5929\u6570\u3001\u4E0A\u67B6\u3001\u9080\u8BF7\u3001\u6D3B\u52A8","profile.modDesc.insights":"\u6700\u5E38\u7528\u7684\u6A21\u578B\u3001\u6700\u6D3B\u8DC3\u7684\u65F6\u6BB5","profile.publishDesc":"\u516C\u5F00\u540E\uFF0C\u4EFB\u4F55\u4EBA\u6253\u5F00\u8FD9\u4E2A\u5730\u5740\u90FD\u80FD\u770B\u5230\u4F60\u7684\u4E3B\u9875\uFF0C\u4E0D\u9700\u8981\u767B\u5F55\u3002\u4E0B\u9762\u6BCF\u4E00\u5757\u53EF\u4EE5\u5355\u72EC\u51B3\u5B9A\u7ED9\u4E0D\u7ED9\u8BBF\u5BA2\u770B\u3002","profile.publishNever":"\u5934\u50CF\u3001\u6635\u79F0\u3001\u7528\u6237\u540D\u3001\u7B80\u4ECB\u548C\u94FE\u63A5\u4F1A\u4E00\u8D77\u516C\u5F00\u3002\u90AE\u7BB1\u3001\u624B\u673A\u53F7\u3001\u4F1A\u5458\u5230\u671F\u65E5\u3001\u79EF\u5206\u548C\u989D\u5EA6\u4E0D\u4F1A\u51FA\u73B0\u5728\u4E3B\u9875\u4E0A\u3002","profile.publishConfirm":"\u516C\u5F00","profile.blocked.machineUsername":"\u4F60\u73B0\u5728\u7684\u7528\u6237\u540D\u662F\u7CFB\u7EDF\u751F\u6210\u7684\uFF0C\u91CC\u9762\u5E26\u7740\u624B\u673A\u53F7\u6216\u90AE\u7BB1\u7684\u4E00\u90E8\u5206\uFF0C\u516C\u5F00\u4F1A\u628A\u5B83\u9732\u51FA\u53BB\u3002\u5148\u5230\u7F51\u9875\u4E2A\u4EBA\u4E2D\u5FC3\u7684\u300C\u8D26\u53F7\u300D\u9875\u6539\u4E00\u4E2A\u7528\u6237\u540D\uFF08\u6BCF\u4E2A\u8D26\u53F7\u53EF\u4EE5\u6539\u4E00\u6B21\uFF09\uFF0C\u518D\u56DE\u6765\u516C\u5F00\u3002","profile.blocked.publishBlocked":"\u8FD9\u4E2A\u4E3B\u9875\u5DF2\u88AB\u7BA1\u7406\u5458\u505C\u6B62\u516C\u5F00\u3002\u6709\u7591\u95EE\u8BF7\u901A\u8FC7\u300C\u53CD\u9988\u300D\u8054\u7CFB\u6211\u4EEC\u3002","profile.goRename":"\u53BB\u6539\u7528\u6237\u540D","profile.invalid":"\u8FD9\u9879\u5185\u5BB9\u6CA1\u80FD\u4FDD\u5B58\uFF0C\u8BF7\u68C0\u67E5\u540E\u518D\u8BD5","guide.title":"\u4F7F\u7528\u6307\u5357","guide.readOnly":"\u53EA\u8BFB","guide.more":"\u66F4\u591A","guide.unlockAll":"\u5168\u90E8\u89E3\u9501","guide.relock":"\u6539\u56DE\u6309\u7B49\u7EA7\u89E3\u9501","guide.reminders":"\u4F7F\u7528\u6307\u5357\u63D0\u9192","guide.spotlight":"\u73B0\u573A\u6307\u5F15","guide.spotStep":"\u7B2C {n} \u6B65\uFF0C\u5171 {total} \u6B65","guide.figure":"\u793A\u610F\u56FE","guide.openAchievements":"\u6253\u5F00\u6210\u5C31","guide.tasks":"\u672C\u7AE0\u4EFB\u52A1","guide.go":"\u5E26\u6211\u53BB","guide.desktopOnly":"\u5728\u7535\u8111\u4E0A\u505A","guide.taskDone":"\u5DF2\u5B8C\u6210","guide.askTangu":"\u95EE Tangu","guide.progress":"\u8FDB\u5EA6","guide.justUnlocked":"\u521A\u89E3\u9501","guide.lockedHint":"\u672A\u89E3\u9501","guide.whatsNew":"\u65B0\u7248\u672C \xB7 {version}","guide.level.lv1":"Lv.1 \u521D\u6765\u4E4D\u5230","guide.level.lv2":"Lv.2 \u719F\u95E8\u719F\u8DEF","guide.level.lv3":"Lv.3 \u5F97\u5FC3\u5E94\u624B","guide.level.lv4":"Lv.4 \u878D\u4F1A\u8D2F\u901A","guide.locked.title":"\u8FD9\u4E00\u7AE0\u8FD8\u6CA1\u89E3\u9501","guide.locked.body":"\u505A\u5B8C\u300C{level}\u300D\u7684\u4EFB\u52A1\u5C31\u80FD\u8BFB\u5168\u6587\u3002","guide.locked.left":"\u8FD8\u5DEE\u8FD9\u51E0\u9879\uFF1A","guide.locked.hint":"\u7528\u8FC7\u4E00\u9635\u4E86\uFF1F\u53F3\u4E0A\u89D2\u300C\xB7\xB7\xB7\u300D\u91CC\u53EF\u4EE5\u5168\u90E8\u89E3\u9501\u3002","guide.levelProgress":"\u672C\u7EA7\u8FDB\u5EA6 {done}/{total}","guide.next":"\u4E0B\u4E00\u7EA7","guide.allDone":"\u5168\u90E8\u5B8C\u6210","guide.allDoneBody":"\u6307\u5357\u91CC\u7684\u4EFB\u52A1\u90FD\u505A\u5B8C\u4E86\uFF0C\u968F\u65F6\u56DE\u6765\u7FFB\u770B\u3002","guide.review":"\u56DE\u770B","guide.ask.hint":"\u5BF9\u300C{chapter}\u300D\u6709\u7591\u95EE\uFF1F\u95EE Tangu \u4F1A\u5F00\u4E00\u4E2A\u5E26\u4E0A\u672C\u7AE0\u5185\u5BB9\u7684\u65B0\u5BF9\u8BDD\u3002","guide.ask.placeholder":"\u60F3\u95EE\u4EC0\u4E48\uFF1F","guide.ask.send":"\u5F00\u59CB\u5BF9\u8BDD","guide.ask.prompt":"\u6211\u6B63\u5728\u8BFB Forsion \u4F7F\u7528\u6307\u5357\u91CC\u300C{chapter}\u300D\u8FD9\u4E00\u7AE0\uFF0C\u5185\u5BB9\u9644\u5728\u4E0B\u9762\u3002{question}","guide.ask.unavailable":"\u8FD9\u91CC\u5F00\u4E0D\u4E86\u5BF9\u8BDD","guide.ask.chatTitle":"\u4F7F\u7528\u6307\u5357\u95EE\u7B54","guide.companion.back":"\u56DE\u5230\u6307\u5357","guide.companion.close":"\u6536\u8D77","guide.toast.taskDone":"\u5B8C\u6210\uFF1A{task}","guide.letter.levelTitle":"{level} \u5DF2\u89E3\u9501\uFF1A\u63A5\u4E0B\u6765\u8BD5\u8BD5\u8FD9\u51E0\u4EF6\u4E8B","guide.letter.levelBody":"\u4E0A\u4E00\u7EA7\u7684\u4EFB\u52A1\u90FD\u505A\u5B8C\u4E86\uFF0C\u4E0B\u9762\u8FD9\u51E0\u7AE0\u73B0\u5728\u53EF\u4EE5\u8BFB\u4E86\u3002\u6BCF\u9879\u4EFB\u52A1\u90FD\u80FD\u300C\u5E26\u6211\u53BB\u300D\u3002","guide.letter.versionTitle":"{version} \u6709 {n} \u4EF6\u65B0\u4E1C\u897F\u53EF\u4EE5\u4F53\u9A8C","guide.letter.versionBody":"\u8FD9\u4E2A\u7248\u672C\u65B0\u52A0\u7684\uFF0C\u53EF\u4EE5\u76F4\u63A5\u4E0A\u624B\uFF1A","guide.letter.open":"\u6253\u5F00\u6307\u5357","guide.status.done":"\u5DF2\u5B8C\u6210","guide.cmd.open":"\u6253\u5F00\u4F7F\u7528\u6307\u5357","penzor.title":"\u84EC\u6D32\u4E91","penzor.overview":"\u6982\u89C8","penzor.places":"\u4F4D\u7F6E","penzor.details":"\u8BE6\u60C5","penzor.ledger.sync":"\u667A\u5E93\u540C\u6B65","penzor.ledger.ama":"Amadeus Cloud","penzor.ledger.apps":"\u5E94\u7528\u6587\u4EF6","penzor.ledger.exports":"\u5BFC\u51FA","penzor.trash":"\u56DE\u6536\u7AD9","penzor.items":"{n} \u9879","penzor.total.sub":"\u5B58\u5728 Forsion \u4E91\u7AEF \xB7 {time}\u66F4\u65B0","penzor.justNow":"\u521A\u521A","penzor.ofMax":"/ {max}","penzor.card.syncSub":"{n} \u4E2A\u5E93 \xB7 \u4E0A\u6B21\u5199\u5165 {time}","penzor.card.syncSubNone":"{n} \u4E2A\u5E93","penzor.card.syncFoot":"\u5355\u4E2A\u6587\u4EF6\u8D85\u8FC7 {size} \u4E0D\u4E0A\u4F20","penzor.card.syncWarn":"\u5FEB\u6EE1\u4E86\uFF1A\u6EE1 {max} \u540E\u65B0\u6587\u4EF6\u4E0D\u518D\u4E0A\u4F20\uFF0C\u5DF2\u5728\u4E91\u7AEF\u7684\u7167\u5E38\u540C\u6B65","penzor.card.amaSmall":"\u4E0D\u7B97\u5728\u989D\u5EA6\u91CC","penzor.card.amaSub":"{n} \u4E2A\u4E91\u7AEF\u667A\u5E93","penzor.card.amaFoot":"\u7B14\u8BB0\u548C\u9644\u4EF6\u5728 Amadeus \u7684 Cloud \u4FA7","penzor.card.appsFoot":"\u56DE\u6536\u7AD9 {n} \u9879 \xB7 {size}","penzor.card.appsWarn":"\u5FEB\u6EE1\u4E86\uFF1A\u6EE1 {max} \u540E\u5E94\u7528\u4E0D\u80FD\u518D\u5B58\u65B0\u6587\u4EF6\uFF1B\u56DE\u6536\u7AD9\u91CC\u7684\u4E5F\u7B97\uFF0C\u6E05\u7A7A\u80FD\u817E\u51FA\u7A7A\u95F4","penzor.card.expSmall":"{n} \u4E2A\u6587\u4EF6","penzor.card.expSub":"\u6700\u8FD1\uFF1A{name} \xB7 {time}","penzor.card.expFoot":"\u5404\u5E94\u7528\u5BFC\u51FA\u7684\u6587\u4EF6","penzor.card.none":"\u8FD8\u6CA1\u6709\u4E1C\u897F","penzor.largest":"\u5360\u7528\u6700\u591A","penzor.col.name":"\u540D\u79F0","penzor.col.size":"\u5927\u5C0F","penzor.col.mtime":"\u4FEE\u6539\u65F6\u95F4","penzor.col.device":"\u5199\u5165\u8BBE\u5907","penzor.col.deleted":"\u5220\u9664\u4E8E","penzor.col.origin":"\u539F\u4F4D\u7F6E","penzor.col.app":"\u6765\u6E90","penzor.sort.mtime":"\u6309\u4FEE\u6539\u65F6\u95F4","penzor.sort.size":"\u6309\u5927\u5C0F","penzor.sort.name":"\u6309\u540D\u79F0","penzor.search":"\u641C\u7D22\u8FD9\u91CC\u7684\u6587\u4EF6\u540D","penzor.sync.thisDevice":"\u672C\u673A\u5728\u540C\u6B65","penzor.meta.files":"{size} \xB7 {n} \u4E2A\u6587\u4EF6","penzor.sync.last":"\u4E0A\u6B21\u5199\u5165 {time} \xB7 {device}","penzor.sync.lastNoDevice":"\u4E0A\u6B21\u5199\u5165 {time}","penzor.sync.devices":"{n} \u53F0\u8BBE\u5907\u540C\u6B65\u8FD9\u4E2A\u5E93","penzor.sync.meter":"\u667A\u5E93\u540C\u6B65\u5171\u7528 {max}\uFF0C\u5DF2\u7528 {used}","penzor.apps.meter":"\u5E94\u7528\u6587\u4EF6\u5171\u7528 {max}\uFF0C\u5DF2\u7528 {used}\uFF08\u56DE\u6536\u7AD9\u91CC\u7684\u4E5F\u7B97\uFF09","penzor.apps.by":"\u7531 {app} \u5199\u5165","penzor.ama.notCounted":"\u4E0D\u7B97\u5728\u989D\u5EA6\u91CC","penzor.ama.open":"\u5728 Amadeus \u4E2D\u6253\u5F00","penzor.trash.meta":"{n} \u9879 \xB7 {size}","penzor.trash.note":"\u6C38\u4E45\u5220\u9664\u540E\u624D\u817E\u51FA\u7A7A\u95F4","penzor.trash.emptyBtn":"\u6E05\u7A7A\u56DE\u6536\u7AD9","penzor.act.download":"\u4E0B\u8F7D","penzor.act.rename":"\u91CD\u547D\u540D","penzor.act.move":"\u79FB\u52A8\u5230\u2026","penzor.act.trash":"\u79FB\u5230\u56DE\u6536\u7AD9","penzor.act.delete":"\u5220\u9664","penzor.act.restore":"\u6062\u590D","penzor.act.purge":"\u6C38\u4E45\u5220\u9664","penzor.act.copyName":"\u590D\u5236\u5E93\u540D","penzor.act.openSync":"\u5728\u8BBE\u7F6E\u4E2D\u6253\u5F00\u540C\u6B65","penzor.act.refresh":"\u5237\u65B0","penzor.act.up":"\u4E0A\u4E00\u7EA7","penzor.toast.trashed":"\u5DF2\u628A\u300C{name}\u300D\u79FB\u5230\u56DE\u6536\u7AD9","penzor.toast.restored":"\u5DF2\u6062\u590D\u300C{name}\u300D","penzor.toast.purged":"\u5DF2\u6C38\u4E45\u5220\u9664\u300C{name}\u300D","penzor.toast.emptied":"\u5DF2\u6E05\u7A7A\u56DE\u6536\u7AD9","penzor.toast.downloaded":"\u5DF2\u5B58\u5230\u300C\u4E0B\u8F7D\u300D\uFF1A{name}","penzor.toast.renamed":"\u5DF2\u6539\u540D\u4E3A\u300C{name}\u300D","penzor.toast.moved":"\u5DF2\u79FB\u5230\u300C{name}\u300D","penzor.toast.versionRestored":"\u5DF2\u6062\u590D\u5230\u7B2C {n} \u7248","penzor.toast.copied":"\u5DF2\u590D\u5236\u5E93\u540D","penzor.toast.failed":"\u6CA1\u6210\u529F\uFF1A{reason}","penzor.confirm.purge":"\u6C38\u4E45\u5220\u9664\u300C{name}\u300D\uFF1F\u5220\u4E86\u5C31\u627E\u4E0D\u56DE\u6765\u4E86\u3002","penzor.confirm.empty":"\u6E05\u7A7A\u56DE\u6536\u7AD9\uFF1F{n} \u9879\u4F1A\u88AB\u6C38\u4E45\u5220\u9664\uFF0C\u627E\u4E0D\u56DE\u6765\u3002","penzor.confirm.deleteExport":"\u5220\u9664\u300C{name}\u300D\uFF1F\u5BFC\u51FA\u7684\u6587\u4EF6\u6CA1\u6709\u56DE\u6536\u7AD9\uFF0C\u5220\u4E86\u5C31\u627E\u4E0D\u56DE\u6765\u4E86\u3002","penzor.cancel":"\u53D6\u6D88","penzor.side.where":"\u4F4D\u7F6E","penzor.side.mtime":"\u4FEE\u6539","penzor.side.device":"\u5199\u5165\u8BBE\u5907","penzor.side.thisDevice":"{name}\uFF08\u672C\u673A\uFF09","penzor.side.from":"\u6765\u6E90","penzor.side.versions":"\u5386\u53F2\u7248\u672C","penzor.side.versionsNone":"\u6CA1\u6709","penzor.side.versionRow":"\u7B2C {n} \u7248 \xB7 {time} \xB7 {size}","penzor.side.restoreVersion":"\u6062\u590D\u8FD9\u4E00\u7248","penzor.side.deletedAt":"\u5220\u9664\u4E8E","penzor.side.origin":"\u539F\u4F4D\u7F6E","penzor.side.inner":"\u91CC\u9762\u8FD8\u6709 {n} \u9879\uFF0C\u6062\u590D\u65F6\u4E00\u8D77\u56DE\u6765","penzor.side.inTrash":"\u5728\u56DE\u6536\u7AD9 \xB7 {size}","penzor.side.readonlySync":"\u540C\u6B65\u5E93\u91CC\u7684\u6587\u4EF6\u53EA\u5728\u8BBE\u5907\u4E0A\u5220\u6539\u3002\u5728\u8FD9\u91CC\u5220\u6389\u4E00\u4E2A\u6587\u4EF6\uFF0C\u6BCF\u53F0\u540C\u6B65 {vault} \u7684\u8BBE\u5907\u4E0B\u6B21\u540C\u6B65\u65F6\u90FD\u4F1A\u8DDF\u7740\u5220\u6389\uFF0C\u6240\u4EE5\u8FD9\u91CC\u53EA\u80FD\u770B\u548C\u4E0B\u8F7D\u3002","penzor.side.readonlyAma":"\u7B14\u8BB0\u548C\u9644\u4EF6\u5728 Amadeus \u91CC\u6539\u3002\u5728\u8FD9\u91CC\u5220\u6389\u4E00\u4E2A\u9644\u4EF6\uFF0C\u5F15\u7528\u5B83\u7684\u7B14\u8BB0\u4F1A\u7F3A\u56FE\uFF0C\u6240\u4EE5\u8FD9\u91CC\u53EA\u80FD\u770B\u548C\u4E0B\u8F7D\u3002","penzor.side.exportNote":"\u5BFC\u51FA\u7684\u6587\u4EF6\u6CA1\u6709\u56DE\u6536\u7AD9\uFF1A\u5220\u9664\u5C31\u662F\u6C38\u4E45\u5220\u9664\u3002","penzor.side.none":"\u9009\u4E00\u4E2A\u6587\u4EF6\u770B\u8BE6\u60C5","penzor.side.folder":"\u6587\u4EF6\u5939 \xB7 {n} \u9879","penzor.side.folderPlain":"\u6587\u4EF6\u5939","penzor.move.title":"\u79FB\u5230\u54EA\u91CC","penzor.move.root":"{app} \u6700\u4E0A\u5C42","penzor.move.here":"\u79FB\u5230\u8FD9\u91CC","penzor.move.noFolders":"\u8FD9\u4E00\u5C42\u6CA1\u6709\u6587\u4EF6\u5939","penzor.rename.save":"\u4FDD\u5B58","penzor.empty.title":"\u84EC\u6D32\u4E91\u91CC\u8FD8\u6CA1\u6709\u4E1C\u897F","penzor.empty.lead":"\u8FD9\u4E9B\u4E1C\u897F\u5B58\u8FDB\u4E91\u7AEF\u540E\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\uFF1A","penzor.empty.sync":"\u5728\u300C\u8BBE\u7F6E \u203A \u540C\u6B65\u300D\u91CC\u628A\u8FDC\u7A0B\u670D\u52A1\u9009\u6210\u300C\u84EC\u6D32\u4E91\u300D\uFF0C\u672C\u5730\u667A\u5E93\u5C31\u540C\u6B65\u5230\u8FD9\u91CC","penzor.empty.ama":"Amadeus \u5207\u5230 Cloud \u4FA7\u5199\u7684\u7B14\u8BB0","penzor.empty.apps":"\u5404\u5E94\u7528\u5B58\u5230\u4E91\u7AEF\u6216\u5BFC\u51FA\u7684\u6587\u4EF6","penzor.empty.openSync":"\u6253\u5F00\u540C\u6B65\u8BBE\u7F6E","penzor.out.title":"\u767B\u5F55\u540E\u67E5\u770B\u4F60\u7684\u84EC\u6D32\u4E91","penzor.out.lead":"\u84EC\u6D32\u4E91\u653E\u7740\u4F60\u540C\u6B65\u5230 Forsion \u4E91\u7AEF\u7684\u5E93\u3001Amadeus Cloud \u7684\u7B14\u8BB0\uFF0C\u548C\u5404\u5E94\u7528\u5B58\u5728\u4E91\u7AEF\u7684\u6587\u4EF6\u3002","penzor.out.signIn":"\u767B\u5F55 Forsion \u8D26\u53F7","penzor.loading":"\u6B63\u5728\u8BFB\u53D6\u2026","penzor.err":"\u6CA1\u8BFB\u5230\uFF1A{reason}","penzor.folderEmpty":"\u8FD9\u91CC\u6CA1\u6709\u6587\u4EF6","penzor.noMatch":"\u6CA1\u6709\u540D\u5B57\u91CC\u5E26\u300C{q}\u300D\u7684\u6587\u4EF6","penzor.cmd.open":"\u6253\u5F00\u84EC\u6D32\u4E91","penzor.unreachable":"\u8FDE\u4E0D\u4E0A Forsion \u4E91\u7AEF\uFF0C\u7A0D\u540E\u518D\u8BD5","penzor.toast.emptyPartial":"\u56DE\u6536\u7AD9\u91CC\u8FD8\u6709 {n} \u9879\u6CA1\u5220\u6389","penzor.sort.deleted":"\u6309\u5220\u9664\u65F6\u95F4","penzor.side.versionsN":"{n} \u4E2A","penzor.drive":"\u6211\u7684\u4E91\u76D8","penzor.drive.meta":"\u7B97\u5728\u5E94\u7528\u6587\u4EF6\u7684 {max} \u91CC","penzor.drive.empty":"\u8FD9\u91CC\u8FD8\u7A7A\u7740\u3002\u628A\u6587\u4EF6\u62D6\u8FDB\u6765\uFF0C\u6216\u8005\u70B9\u300C\u4E0A\u4F20\u300D\u3002","penzor.act.upload":"\u4E0A\u4F20","penzor.act.uploadMore":"\u66F4\u591A\u4E0A\u4F20\u65B9\u5F0F","penzor.act.uploadFiles":"\u4E0A\u4F20\u6587\u4EF6\u2026","penzor.act.uploadFolder":"\u4E0A\u4F20\u6587\u4EF6\u5939\u2026","penzor.act.uploadHere":"\u4E0A\u4F20\u5230\u8FD9\u91CC\u2026","penzor.act.newFolder":"\u65B0\u5EFA\u6587\u4EF6\u5939","penzor.act.clearSel":"\u53D6\u6D88\u9009\u62E9","penzor.newFolder.default":"\u65B0\u5EFA\u6587\u4EF6\u5939","penzor.sel.bar":"\u5DF2\u9009 {n} \u9879 \xB7 {size}","penzor.sel.title":"\u5DF2\u9009 {n} \u9879","penzor.sel.sub":"{size} \xB7 {files} \u4E2A\u6587\u4EF6","penzor.sel.subDirs":"{size} \xB7 {files} \u4E2A\u6587\u4EF6\u3001{dirs} \u4E2A\u6587\u4EF6\u5939","penzor.sel.download":"\u4E0B\u8F7D {n} \u9879","penzor.sel.saveTo":"\u4E0B\u8F7D\u5230","penzor.sel.saveToValue":"\u4E0B\u8F7D / {folder}","penzor.sel.noDirs":"\u6587\u4EF6\u5939\u8FD9\u4E00\u7248\u8FD8\u4E0D\u80FD\u4E0B\u8F7D\uFF0C\u53EA\u4E0B\u8F7D\u9009\u4E2D\u7684\u6587\u4EF6\u3002","penzor.download.folder":"\u84EC\u6D32\u4E91 {date}","penzor.drop.to":"\u677E\u624B\u4E0A\u4F20\u5230\u300C{place}\u300D","penzor.tx.busy":"\u6B63\u5728\u4F20\u8F93 {n} \u9879","penzor.tx.allDone":"\u5168\u90E8\u4F20\u5B8C","penzor.tx.failedN":"{n} \u9879\u6CA1\u4F20\u5B8C","penzor.tx.counts":"\u4E0A\u4F20 {up} \xB7 \u4E0B\u8F7D {down}","penzor.tx.eta":"\u5269\u7EA6 {eta}","penzor.tx.doneN":"{n} \u9879\u5DF2\u4F20\u5B8C","penzor.tx.restDone":"\u5176\u4F59 {n} \u9879\u5DF2\u4F20\u5B8C","penzor.tx.pill":"{counts} \xB7 {pct}%","penzor.tx.queued":"\u6392\u961F\u4E2D","penzor.tx.paused":"\u5DF2\u6682\u505C \xB7 \u7EE7\u7EED\u4F1A\u4ECE\u5934\u4F20","penzor.tx.uploaded":"\u5DF2\u4E0A\u4F20 \xB7 {time}","penzor.tx.downloaded":"\u5DF2\u4E0B\u8F7D \xB7 {time}","penzor.tx.canceled":"\u5DF2\u53D6\u6D88","penzor.tx.left":"\u5269 {eta}","penzor.tx.sec":"{n} \u79D2","penzor.tx.min":"{n} \u5206\u949F","penzor.tx.pause":"\u6682\u505C","penzor.tx.resume":"\u7EE7\u7EED","penzor.tx.cancel":"\u53D6\u6D88","penzor.tx.retry":"\u91CD\u8BD5","penzor.tx.remove":"\u79FB\u9664","penzor.tx.locate":"\u5B9A\u4F4D","penzor.tx.reveal":"\u5728\u6587\u4EF6\u5939\u4E2D\u663E\u793A","penzor.tx.pauseAll":"\u5168\u90E8\u6682\u505C","penzor.tx.resumeAll":"\u5168\u90E8\u7EE7\u7EED","penzor.tx.retryAll":"\u5168\u90E8\u91CD\u8BD5","penzor.tx.clearDone":"\u6E05\u9664\u5DF2\u5B8C\u6210","penzor.tx.clear":"\u6E05\u9664","penzor.tx.collapse":"\u6536\u8D77","penzor.tx.expand":"\u5C55\u5F00\u4F20\u8F93\u5217\u8868","penzor.tx.quota":"\u7A7A\u95F4\u4E0D\u591F\uFF0C\u8FD8\u5DEE {size}","penzor.tx.quotaSub":"\u8FD9\u4E00\u6279\u4E00\u4E2A\u90FD\u6CA1\u5F00\u59CB\u4F20","penzor.tx.freeSpace":"\u53BB\u56DE\u6536\u7AD9\u817E\u5730\u65B9","penzor.err.too_large":"\u5355\u4E2A\u6587\u4EF6\u8D85\u8FC7 50 MB\uFF08\u8FD9\u4E2A {size}\uFF09\uFF0C\u8FD9\u4E00\u7248\u4F20\u4E0D\u4E86","penzor.err.quota":"\u4E91\u7AEF\u7A7A\u95F4\u4E0D\u591F","penzor.err.network":"\u7F51\u7EDC\u65AD\u4E86\uFF0C\u4F20\u5230 {pct}% \u505C\u4E0B","penzor.err.account_changed":"\u6362\u4E86\u8D26\u53F7\uFF0C\u8FD9\u4E00\u9879\u6CA1\u6709\u63A5\u7740\u4F20","penzor.err.download_unavailable":"\u6B64\u5BBF\u4E3B\u6682\u4E0D\u652F\u6301\u4FDD\u5B58\u4E0B\u8F7D\uFF0C\u8BF7\u66F4\u65B0 Forsion","penzor.err.download_failed":"\u6587\u4EF6\u672A\u4FDD\u5B58\uFF0C\u8BF7\u91CD\u8BD5\u4E0B\u8F7D","penzor.err.not_signed_in":"\u6CA1\u767B\u5F55","penzor.err.gone":"\u672C\u673A\u4E0A\u627E\u4E0D\u5230\u8FD9\u4E2A\u6587\u4EF6\u4E86","penzor.err.popup_blocked":"\u6D4F\u89C8\u5668\u62E6\u4E0B\u4E86\u65B0\u6807\u7B7E\u9875\uFF0C\u5141\u8BB8\u672C\u7AD9\u5F39\u51FA\u7A97\u53E3\u540E\u518D\u8BD5\u4E00\u6B21","penzor.err.changed":"\u4F20\u7684\u65F6\u5019\u6587\u4EF6\u6539\u52A8\u4E86\uFF0C\u91CD\u8BD5\u4E00\u6B21","penzor.err.storage_unavailable":"\u4E91\u7AEF\u5B58\u50A8\u6682\u65F6\u4E0D\u53EF\u7528","penzor.err.other":"\u6CA1\u4F20\u5B8C\uFF08{code}\uFF09","penzor.err.too_many":"\u4E00\u6B21\u6700\u591A {n} \u4E2A\u6587\u4EF6\uFF0C\u5206\u51E0\u6B21\u62D6\u8FDB\u6765","penzor.toast.upDoneOne":"\u5DF2\u4E0A\u4F20\u300C{name}\u300D","penzor.toast.upDoneMany":"\u5DF2\u4E0A\u4F20 {n} \u4E2A\u6587\u4EF6","penzor.toast.downDoneMany":"\u5DF2\u4E0B\u8F7D {n} \u4E2A\u6587\u4EF6\u5230\u300C\u4E0B\u8F7D\u300D","penzor.toast.txFailed":"{n} \u9879\u6CA1\u4F20\u5B8C\uFF0C\u56DE\u84EC\u6D32\u4E91\u770B\u770B","penzor.toast.folderExists":"\u5DF2\u7ECF\u6709\u53EB\u300C{name}\u300D\u7684\u6587\u4EF6\u5939\u4E86","penzor.toast.trashedN":"\u5DF2\u628A {n} \u9879\u79FB\u5230\u56DE\u6536\u7AD9","penzor.toast.movedN":"\u5DF2\u628A {n} \u9879\u79FB\u5230\u300C{name}\u300D","penzor.toast.batchPartial":"\u6709 {n} \u9879\u6CA1\u6210\u529F","penzor.sync.title":"\u540C\u6B65","penzor.sync.onN":"{n} \u9879\u5DF2\u5F00","penzor.sync.allOff":"\u90FD\u6CA1\u5F00","penzor.sync.waiting":"\u7B49\u4F60\u51B3\u5B9A","penzor.sync.badgeWaiting":"{n} \u9879\u5DF2\u5F00 \xB7 1 \u9879\u7B49\u4F60\u51B3\u5B9A","penzor.sync.running":"\u540C\u6B65\u4E2D {pct}%","penzor.sync.runningPlain":"\u540C\u6B65\u4E2D","penzor.sync.metaDevice":"\u8FD9\u53F0 {name}","penzor.sync.metaLast":"\u4E0A\u6B21\u540C\u6B65 {time}","penzor.sync.metaNever":"\u8FD8\u6CA1\u540C\u6B65\u8FC7","penzor.sync.every":"\u6BCF {n} \u5206\u949F","penzor.sync.everyHours":"\u6BCF {n} \u5C0F\u65F6","penzor.sync.manual":"\u624B\u52A8","penzor.sync.onStart":"\u5F00\u673A\u65F6\u4E00\u6B21","penzor.sync.minAgo":"{n} \u5206\u949F\u524D","penzor.sync.hoursAgo":"{n} \u5C0F\u65F6\u524D","penzor.sync.notesNamed":"\u667A\u5E93\u300C{name}\u300D","penzor.sync.notesPlain":"\u8FD9\u53F0\u7535\u8111\u7684\u667A\u5E93","penzor.sync.notesDesc":"\u6574\u4E2A\u672C\u673A\u667A\u5E93\uFF0C\u548C\u4F60\u7684\u5176\u4ED6\u7535\u8111\u4FDD\u6301\u4E00\u81F4","penzor.sync.agents":"Agents \u4E0E\u8BB0\u5FC6","penzor.sync.agentsDesc":"Agents \u7684\u8BB0\u5FC6\u3001\u65E5\u5FD7\u3001\u6280\u80FD\u548C\u534F\u4F5C\u8BF4\u660E\uFF0C\u8FD8\u6709\u4F60\u7684\u8D44\u6599\u548C\u9ED8\u8BA4\u65E5\u5386","penzor.sync.conflictsN":"{n} \u4E2A\u51B2\u7A81\u526F\u672C","penzor.sync.conflictsHint":"\u4E24\u8FB9\u90FD\u6539\u8FC7\u7684\u6587\u4EF6\u4E24\u4EFD\u90FD\u7559\u7740\uFF1A\u53E6\u4E00\u4EFD\u5B58\u6210\u6587\u4EF6\u540D\u5E26\u300Cconflict\u300D\u7684\u526F\u672C\uFF0C\u5728\u5BF9\u5E94 Agent \u7684\u6587\u4EF6\u5939\uFF08\u6216\u4F60\u7684\u8D44\u6599\u6587\u4EF6\u5939\uFF09\u91CC","penzor.sync.pluginsPending":"{n} \u4E2A\u63D2\u4EF6\u7684\u6539\u52A8\u8FD8\u6CA1\u4F20\u4E0A\u53BB","penzor.sync.agentsN":"{n} \u4E2A Agent","penzor.sync.plugins":"\u63D2\u4EF6\u6570\u636E","penzor.sync.pluginsDesc":"\u63D2\u4EF6\u81EA\u5DF1\u5B58\u7684\u8BBE\u7F6E\u548C\u6570\u636E","penzor.sync.pluginsN":"{n} \u4E2A\u63D2\u4EF6","penzor.sync.off":"\u6CA1\u5F00","penzor.sync.done":"\u5DF2\u540C\u6B65","penzor.sync.doneSize":"\u5DF2\u540C\u6B65 \xB7 {size}","penzor.sync.firstPending":"\u7B49\u7B2C\u4E00\u6B21\u540C\u6B65","penzor.sync.failed":"\u4E0A\u6B21\u6CA1\u540C\u6B65\u6210\u529F","penzor.sync.overQuota":"\u8D85\u51FA\u989D\u5EA6\uFF0C\u6709\u7684\u6CA1\u4F20","penzor.sync.to":"\u540C\u6B65\u5230 {name}","penzor.sync.toFolder":"\u540C\u6B65\u5230\u672C\u673A\u6587\u4EF6\u5939","penzor.sync.decideAbove":"\u5728\u4E0A\u9762\u90A3\u5F20\u5361\u91CC\u9009","penzor.sync.kvSchedule":"\u540C\u6B65\u8BA1\u5212","penzor.sync.kvDirection":"\u65B9\u5411","penzor.sync.kvSkipped":"\u6CA1\u4F20\u7684","penzor.sync.kvWhere":"\u4E91\u7AEF\u4F4D\u7F6E","penzor.sync.change":"\u6539","penzor.sync.open":"\u6253\u5F00","penzor.sync.dir.both":"\u53CC\u5411","penzor.sync.dir.push":"\u4EC5\u4E0A\u4F20","penzor.sync.dir.pull":"\u4EC5\u4E0B\u8F7D","penzor.sync.skippedN":"{n} \u4E2A\u8D85\u8FC7 {size} \u7684\u6587\u4EF6","penzor.sync.where":"{ledger} \u203A {vault}","penzor.sync.whereUsed":"{ledger} \u203A {vault} \xB7 {used} / {max}","penzor.sync.devicesTitle":"\u5728\u540C\u6B65\u7684\u8BBE\u5907","penzor.sync.thisOne":"\u8FD9\u53F0","penzor.sync.lastWrite":"\u4E0A\u6B21\u5199\u5165 {time}","penzor.sync.noDevices":"\u8FD8\u6CA1\u6709\u8BBE\u5907\u5728\u540C\u6B65","penzor.sync.phoneTitle":"\u624B\u673A\u548C\u7F51\u9875\u770B\u5230\u7684\u90A3\u4E00\u4EFD","penzor.sync.phoneTip":"\u624B\u673A\u548C\u7F51\u9875\u76F4\u63A5\u8BFB\u300C\u4E91\u7AEF\u667A\u5E93\u300D\uFF08Amadeus \u7684\u4E91\u7AEF\u4FA7\uFF0C{size}\uFF09\uFF0C\u5B83\u4E00\u76F4\u5728\u540C\u6B65\uFF0C\u548C\u4E0A\u9762\u8FD9\u53F0\u7535\u8111\u7684\u667A\u5E93\u662F\u4E24\u4EFD\u3002\u60F3\u5728\u624B\u673A\u4E0A\u770B\u8FD9\u53F0\u7684\u67D0\u4E2A\u6587\u4EF6\u5939\uFF1A\u5728\u7B14\u8BB0\u91CC\u53F3\u952E\u90A3\u4E2A\u6587\u4EF6\u5939\uFF0C\u628A\u5B83\u540C\u6B65\u5230\u4E91\u7AEF\u667A\u5E93\u3002","penzor.sync.phoneTipPlain":"\u624B\u673A\u548C\u7F51\u9875\u76F4\u63A5\u8BFB\u300C\u4E91\u7AEF\u667A\u5E93\u300D\uFF08Amadeus \u7684\u4E91\u7AEF\u4FA7\uFF09\uFF0C\u5B83\u4E00\u76F4\u5728\u540C\u6B65\uFF0C\u548C\u4E0A\u9762\u8FD9\u53F0\u7535\u8111\u7684\u667A\u5E93\u662F\u4E24\u4EFD\u3002\u60F3\u5728\u624B\u673A\u4E0A\u770B\u8FD9\u53F0\u7684\u67D0\u4E2A\u6587\u4EF6\u5939\uFF1A\u5728\u7B14\u8BB0\u91CC\u53F3\u952E\u90A3\u4E2A\u6587\u4EF6\u5939\uFF0C\u628A\u5B83\u540C\u6B65\u5230\u4E91\u7AEF\u667A\u5E93\u3002","penzor.sync.foot":"\u540C\u6B65\u8BA1\u5212\u3001\u65B9\u5411\u548C\u5176\u4ED6\u5B58\u50A8\uFF08Dropbox / S3 / WebDAV\uFF09\u5728","penzor.sync.footLink":"\u8BBE\u7F6E \u203A \u540C\u6B65","penzor.sync.askTitle":"\u4E91\u7AEF\u5DF2\u7ECF\u6709\u4E00\u4EFD\u667A\u5E93","penzor.sync.askCloud":"\u4E91\u7AEF\u90A3\u4EFD\u6765\u81EA {device}\uFF1A{files} \u4E2A\u6587\u4EF6 \xB7 {size}\u3002","penzor.sync.askCloudNoDevice":"\u4E91\u7AEF\u90A3\u4EFD\uFF1A{files} \u4E2A\u6587\u4EF6 \xB7 {size}\u3002","penzor.sync.askLocal":"\u8FD9\u53F0\u6709 {local} \u4E2A\u6587\u4EF6\u4E91\u7AEF\u6CA1\u6709\uFF0C{conflicts} \u4E2A\u4E24\u8FB9\u5185\u5BB9\u4E0D\u540C\u3002","penzor.sync.askMerge":"\u5408\u5E76\u4E24\u8FB9","penzor.sync.askCloudBtn":"\u7528\u4E91\u7AEF\u90A3\u4EFD","penzor.sync.askSkip":"\u8FD9\u53F0\u5148\u4E0D\u540C\u6B65\u667A\u5E93","penzor.sync.askExplain":"\u5408\u5E76\uFF1A\u4E24\u8FB9\u90FD\u7559\u7740\uFF0C\u5185\u5BB9\u4E0D\u540C\u7684\u53E6\u5B58\u4E00\u4EFD\u300C\uFF08\u51B2\u7A81\uFF09\u300D\u3002\u7528\u4E91\u7AEF\u90A3\u4EFD\uFF1A\u8FD9\u53F0\u548C\u4E91\u7AEF\u4E0D\u4E00\u6837\u7684\u6587\u4EF6\u5148\u632A\u8FDB\u65C1\u8FB9\u7684\u300C{backup}\u300D\u6587\u4EF6\u5939\uFF0C\u518D\u4E0B\u8F7D\u4E91\u7AEF\u90A3\u4EFD\u3002","penzor.sync.askConfirm":"\u8FD9\u53F0\u548C\u4E91\u7AEF\u4E0D\u4E00\u6837\u7684\u6587\u4EF6\u4F1A\u5148\u632A\u8FDB\u300C{backup}\u300D\uFF0C\u518D\u6362\u6210\u4E91\u7AEF\u90A3\u4EFD\u3002","penzor.sync.askConfirmGo":"\u632A\u8D70\u5E76\u7528\u4E91\u7AEF\u90A3\u4EFD","penzor.sync.backupName":"{name} \u540C\u6B65\u524D\u5907\u4EFD {date}","penzor.sync.quotaTitle":"\u667A\u5E93 {size}\uFF0C\u8D85\u8FC7\u4E86\u300C{ledger}\u300D\u7684 {max} \u4E0A\u9650","penzor.sync.quotaTitlePlain":"\u667A\u5E93\u8D85\u8FC7\u4E86\u300C{ledger}\u300D\u7684\u4E0A\u9650","penzor.sync.quotaBody":"\u653E\u4E0D\u4E0B\u7684\u6587\u4EF6\u7559\u5728\u8FD9\u53F0\u7535\u8111\u4E0A\uFF0C\u6CA1\u6709\u5220\uFF0C\u4E5F\u6CA1\u6709\u4F20\uFF1B\u5176\u4F59\u51E0\u9879\u7167\u5E38\u540C\u6B65\u3002","penzor.sync.quotaLarge":"\u8D85\u8FC7 {size} \u7684\u5355\u4E2A\u6587\u4EF6\u4E00\u76F4\u4E0D\u4F20\uFF08{n} \u4E2A\uFF09\u3002","penzor.sync.quotaSee":"\u770B\u770B\u6CA1\u4F20\u7684\u6587\u4EF6","su.title":"\u5546\u5E97\u66F4\u65B0","su.source.github":"GitHub \u6765\u6E90","su.source.npm":"npm \u6765\u6E90","su.source.zip":"ZIP \u4E0A\u4F20","su.review":"\u5F85\u5BA1\u6838","su.approved":"\u5DF2\u901A\u8FC7","su.rejected":"\u6CA1\u901A\u8FC7","su.viaGithub":"GitHub Release {tag}","su.viaNpm":"npm {version}","su.metaReview":"{time} \u63D0\u4EA4 \xB7 \u5BA1\u6838\u7ED3\u679C\u4F1A\u53D1\u5230\u6536\u4EF6\u7BB1","su.metaReviewNoTime":"\u5BA1\u6838\u7ED3\u679C\u4F1A\u53D1\u5230\u6536\u4EF6\u7BB1","su.metaApproved":"\u5546\u5E97\u73B0\u5728\u663E\u793A {version}","su.metaApprovedInfo":"\u5546\u5E97\u4FE1\u606F\u5DF2\u66F4\u65B0","su.metaRejected":"\u5546\u5E97\u7167\u65E7\u663E\u793A {version}","su.metaRejectedUnlisted":"\u8FD8\u6CA1\u6709\u4E0A\u67B6","su.infoOnly":"\u53EA\u6539\u5546\u5E97\u4FE1\u606F","su.listSep":"\u3001","su.openSubmission":"\u5728\u6295\u7A3F\u4E2D\u67E5\u770B"},im={"penzor.rules.default":"Cloud default","penzor.rules.off":"Do not sync","penzor.rules.device":"Device","penzor.rules.run":"Sync now","penzor.rules.twoWay":"Two-way","penzor.rules.defaultForWeb":"The web uses the default folder","penzor.rules.tab.rules":"Sync rules","penzor.rules.tab.active":"Transfers","penzor.rules.tab.history":"History","penzor.rules.enable":"Enable content sync","penzor.rules.add":"Add rule","penzor.rules.source":"Local source","penzor.rules.destination":"Cloud destination","penzor.rules.direction":"Direction","penzor.rules.remove":"Remove rule","penzor.rules.inherit":"An empty path covers all of Forsion. Children inherit; the most specific path wins. Unmatched content stays on this device.","penzor.rules.namespace":"Default: Cloud /Forsion/. Device folders: Cloud /Forsion-deviceID/.","penzor.rules.human":"Choose human independently. The default calendar uses human/CALENDAR.db. A device destination does not replace the web default.","penzor.rules.preview":"Preview changes","penzor.rules.previewTitle":"Review sync scope","penzor.rules.previewCounts":"Upload {up}, download {down}; {conflicts} existing items need merging or preserved versions.","penzor.rules.retain":"Previous destinations are retained. Turning sync off deletes no files. If sources change, preview again.","penzor.rules.back":"Back","penzor.rules.apply":"Confirm and start","penzor.rules.pause":"Pause","penzor.rules.resume":"Continue","penzor.rules.noActive":"No files are transferring.","penzor.rules.manual":"Manual uploads and downloads","penzor.rules.historyNote":"The latest 200 items. Conflicts preserve both versions; other content continues syncing.","penzor.rules.retry":"Retry failed items","penzor.rules.noHistory":"No sync history yet.","penzor.rules.details":"View transfers","penzor.rules.plugins":"Plugin data keeps its own sync management.","penzor.rules.turnOff":"Turn off plugin data sync","penzor.rules.turnOn":"Turn on plugin data sync","penzor.rules.phase.idle":"Waiting for the next sync","penzor.rules.phase.scanning":"Checking files","penzor.rules.phase.syncing":"Syncing","penzor.rules.phase.paused":"Paused","penzor.rules.state.queued":"Queued","penzor.rules.state.active":"Transferring","penzor.rules.state.done":"Done","penzor.rules.state.failed":"Failed","penzor.rules.state.paused":"Paused","penzor.rules.state.conflict":"Conflict versions preserved","penzor.tree.synced":"Synced","penzor.tree.thisBackup":"This computer \xB7 backup only","penzor.tree.byApp":"By app","penzor.tree.legacy":"Legacy vault sync","penzor.quota.sourceLimit":"This kind also has its own limit of {max}; {used} used","penzor.ov.mine":"Yours","penzor.ov.synced":"Synced from your devices","penzor.ov.stale":"No longer updated","penzor.ov.uploads":"Files you upload and organize; change them freely","penzor.ov.all":"Notes, agents, about me and plugins","penzor.ov.allLast":"Notes, agents, about me and plugins \xB7 last synced {time}","penzor.ov.self":"The copy only this computer uses","penzor.ov.device":"Shared only between this computer and that one","penzor.ov.agents":"Agent settings, memory and logs","penzor.ov.profile":"Your profile and default calendar","penzor.ov.sync":"Vaults your computers sync up","penzor.ov.legacy":"No longer written once this computer uses the new sync; kept, not deleted","penzor.ov.ama":"Notes from the web and synced notes","penzor.ov.apps":"Files your apps store; delete or rename them","penzor.ov.plugins":"Settings plugins store; usage only","penzor.ov.exports":"Exported files; download or delete them","penzor.ov.segNotes":"Notes","penzor.ov.segSync":"Device sync","penzor.ov.segOther":"Other","penzor.content.badge":"Kept by the new sync","penzor.content.badgeLast":"Kept by the new sync \xB7 last synced {time}","penzor.content.noteAll":"This is the cloud copy every signed-in device and the web see. To change files, edit them in Notes or Agents on a computer and they sync up; you can download them here.","penzor.content.noteSelf":"The copy only this computer uses; other devices don\u2019t see it. Change files on this computer; you can download them here.","penzor.content.noteDevice":"Shared only between this computer and {name}. Change files on a computer; you can download them here.","penzor.legacy.title":"This computer stopped writing to this vault when it switched to the new sync","penzor.legacy.body":"This computer\u2019s notes now live in Shared with all devices \u203A Notes. Older desktop versions may still write here, so this copy is kept, not deleted.","penzor.legacy.go":"See the new copy","penzor.drive.total":"All of Penzor Cloud: {used} / {max} used","penzor.drive.seeAll":"View","penzor.cs.statusOff":"Off","penzor.cs.statusPaused":"Paused","penzor.cs.statusRun":"Syncing {pct}%","penzor.cs.statusScan":"Checking files","penzor.cs.statusWarn":"{n} to review","penzor.cs.statusOk":"Up to date","penzor.cs.statusOkAgo":"Up to date \xB7 {time}","penzor.cs.thisComputer":"This computer: {name}","penzor.cs.thisComputerLabel":"This computer:","penzor.cs.rename":"Rename this computer","penzor.cs.renameHint":"Other devices will show this name \xB7 Enter to save","penzor.cs.othersN":"{n} others: {names}","penzor.cs.noOthers":"No other devices on this account yet","penzor.cs.log":"Recent activity","penzor.cs.more":"More","penzor.cs.advanced":"Advanced: edit rules","penzor.cs.backSimple":"Back to sync","penzor.cs.firstTitle":"Sync this computer to Penzor Cloud","penzor.cs.firstBody":"Here is a suggested setup; change anything first. Nothing moves until you press Start syncing, and nothing already in the cloud is overwritten or deleted.","penzor.cs.note":"To treat one notes folder or agent differently, click the small line under it. Turning a switch off just stops syncing; nothing is deleted.","penzor.cs.barFirst":"Turning sync on uploads {up} files and downloads {down}","penzor.cs.barChanged":"{n} changes","penzor.cs.barOne":"1 change: \u201C{name}\u201D \u2192 {scope}","penzor.cs.offName":"not synced","penzor.cs.barCounts":"Uploads {up} files and downloads {down} \xB7 nothing is deleted","penzor.cs.barSize":"{size} in total","penzor.cs.noDelete":"nothing will be deleted","penzor.cs.barConflicts":"{n} changed on both sides; both copies are kept","penzor.cs.barCounting":"Working out what will move\u2026","penzor.cs.barRecount":"Files just changed, so this was recalculated. Please confirm again.","penzor.cs.later":"Not now","penzor.cs.start":"Start syncing","penzor.cs.undo":"Undo","penzor.cs.confirm":"Confirm","penzor.cs.up":"Uploading \u201C{name}\u201D","penzor.cs.down":"Downloading \u201C{name}\u201D","penzor.cs.waiting":"{n} more files waiting","penzor.cs.failedN":"{n} files didn\u2019t sync","penzor.cs.retry":"Retry","penzor.cs.seeLog":"See activity","penzor.cs.logEmpty":"No sync activity yet.","penzor.cs.logNote":"Keeps the latest 200 items. When both sides changed, both copies are kept.","penzor.cat.notes":"Notes","penzor.cat.notesDesc":"Your Amadeus vault","penzor.cat.agents":"Agents & memory","penzor.cat.agentsDesc":"Each agent\u2019s settings, memory and logs","penzor.cat.profile":"About me","penzor.cat.profileDesc":"Your profile and default calendar","penzor.cat.profileOn":"Includes your default calendar","penzor.cat.plugins":"Plugins","penzor.cat.pluginsDesc":"Plugin folders and settings","penzor.cat.others":"Other files","penzor.cat.othersDesc":"Files in your workspace outside the groups above","penzor.cat.files":"{n} files \xB7 {size}","penzor.cat.agentsN":"{n} agents","penzor.cat.agentsSome":"{n} agents \xB7 {m} synced","penzor.cat.pluginsN":"{n} plugins","penzor.cat.custom":"{n} custom rules","penzor.cat.notSynced":"Not synced \xB7 stays on this computer","penzor.scope.all":"Shared with all devices","penzor.scope.allDesc":"Every signed-in device and the web see one copy","penzor.scope.self":"Back up this computer only","penzor.scope.selfDesc":"Kept in its own cloud copy other devices don\u2019t see","penzor.scope.with":"Only with {name}","penzor.scope.menuTitle":"Who shares \u201C{name}\u201D","penzor.scope.menuFoot":"To stop syncing it, turn off the switch","penzor.scope.calendarNote":"The web\u2019s default calendar doesn\u2019t follow this","penzor.unified.stale":"Refresh failed. Showing the last sample; current usage is unknown. Please retry.","penzor.unified.uploadTo":"Upload to My files","penzor.unified.apps":"Manage ordinary files \xB7 source restrictions apply","penzor.trash.ama":"Amadeus \xB7 pending cleanup","penzor.trash.amaNote":"Deleted current files still count; history is not counted again. Eligible for system cleanup after 30 days. Read-only here; Empty trash does not affect these snapshots.","penzor.trash.expires":"Cleanup eligible from","penzor.source.openAgents":"Open Agents","penzor.source.openCalendar":"Open calendar","penzor.source.entryUnavailable":"This host does not provide that destination","penzor.uploads":"My files","penzor.source.agents":"Agents","penzor.source.profile":"My profile","penzor.source.plugins":"Plugin data","penzor.source.readonly":"Synced sources are read-only. Edit or delete in the source; download synced files here.","penzor.source.appNote":"App files are managed by their app. Edit or delete them there.","penzor.source.pluginNote":"Names and usage only. Data may contain settings or credentials, so preview and download are unavailable.","penzor.unified.unavailable":"Usage unavailable","penzor.unified.incomplete":"Unified usage is incomplete, so quota status is unknown. Refresh to retry.","penzor.unified.enforced":"Unified quota is active. Over quota, new content and larger replacements are paused; downloads, deletions and non-growing replacements remain available.","penzor.unified.grace":"Notice grace period ends {date}. Unified quota does not add restrictions yet.","penzor.unified.rolloutPolicy":"Storage policy notice: growth limits may start no earlier than 30 days after acknowledgement. App file history will retain at most 50 versions from the last 30 days. History is excluded from your plan; download backups before cleanup. Current files are not removed by history cleanup.","penzor.unified.ack":"I have read the storage and history notice","penzor.unified.notice":"This is only a notice. Going over won\u2019t stop sync or uploads","penzor.unified.over":"Unified quota exceeded. This is a notice only; no new sync or upload restrictions apply. Clear files or upgrade your plan.","penzor.unified.warn":"Unified storage is nearly full. This is a notice only; no new sync or upload restrictions apply.","penzor.unified.accounting":"includes {trash} in trash; history doesn\u2019t count","penzor.unified.writable":"Upload, create, rename and delete","penzor.unified.readonly":"Read-only \xB7 managed at source","penzor.unified.export":"Download, rename and permanently delete","penzor.unified.counted":"Included in unified usage \xB7 notice phase","penzor.unified.policy":"If limits are ever enforced, you\u2019ll hear at least 30 days ahead.","penzor.unified.legacySync":"Existing device sync limit: {used} / {max}","penzor.unified.legacyApps":"Existing app file limit: {used} / {max}","sub.identity":"Plugin ID","sub.identityHint":"A unique ID is assigned after submission. Names may repeat; updates keep the same ID.","sub.description":"Detailed description","sub.tags":"Tags","sub.tagsHint":"Comma separated, up to 8","sub.minAppVersion":"Minimum Forsion version","sub.maxAppVersion":"Maximum version (exclusive)","sub.optional":"Optional","sub.platforms":"Supported platforms","sub.requirementsHint":"Supported: desktop, macos, windows, linux, android, ios, web. Leave blank if unspecified. ZIP requirements are read from the manifest; supplied values must match it.","sub.err.market_requirements_invalid":"Invalid version requirements or platforms.","sub.err.market_requirements_mismatch":"Supplied requirements differ from the ZIP manifest.","sub.mine":"My submissions","page.submission":"Submissions","page.webPages":"My web pages","web.title":"My web pages","web.desc":"Pages you published with Tangu or Coding Space. Anyone with the link can open them; they run sandboxed and can't read visitors' Forsion sign-in.","web.refresh":"Refresh","web.used":"{used} of {limit} published","web.full":"All slots are used. Take one down or upgrade to publish another","web.empty":"No published pages yet","web.emptyHint":'Ask Tangu in a chat to publish a page, for example "publish this page", or choose Publish on a Coding Space project.',"web.updated":"Updated {date}","web.disabled":"Disabled","web.disabledHint":"An administrator disabled this page. Its link doesn't open and it can't be updated.","web.copy":"Copy link","web.unpublish":"Take down","web.unpublishConfirm":"Confirm take down","web.listingPending":"Store listing in review","web.listingApproved":"Listed in store","web.listingRejected":"Store listing rejected","web.listingNote":"Reason: {note}","web.listingApply":"Apply for store listing","web.listingReapply":"Apply again","web.listingWithdraw":"Withdraw application","web.listingDelist":"Remove from store","web.listingDelistConfirm":"Confirm removal","web.listingSummary":"Store summary","web.listingSummaryPh":"One sentence about this page","web.listingHint":"Shown in the store under Web apps after review. Up to 300 characters.","web.listingSubmit":"Submit application","sub.desc":"Manage your submissions, review results and version updates.","sub.new":"New submission","sub.refresh":"Refresh","sub.empty":"No submissions yet","sub.emptyHint":"Share your plugins, skills, Agents or Spaces in the marketplace.","sub.name":"Name","sub.summary":"Summary","sub.type":"Content type","sub.source":"Source","sub.type.skill":"Skill","sub.type.agent":"Agent","sub.type.plugin":"Plugin","sub.type.space":"Space","sub.type.theme":"Theme","sub.type.amadeus_plugin":"Amadeus plugin","sub.pending":"Pending review","sub.approved":"Published","sub.rejected":"Rejected","sub.pendingVersion":"v{version} update pending review","sub.rejectedVersion":"v{version} update rejected","sub.submit":"Submit for review","sub.submitted":"Submitted. The review result appears here and in your inbox.","sub.updated":"Update submitted for review. The published version stays available until then; the result goes to your inbox.","sub.repo":"Public GitHub repository","sub.npm":"Public npm package","sub.repoHint":"README and Releases come from the repository; its owner is shown as the publisher.","sub.npmHint":"Package metadata comes from npm; the public repository owner is shown as the publisher.","sub.reviewHint":"New versions require review before distribution. Your Forsion account manages the submission.","sub.zipHint":"Up to 50 MB. Include the required manifest and entry files.","sub.filter":"Filter by status","sub.all":"All","sub.noResults":"No matching submissions","sub.downloads":"{n} downloads","sub.errName":"Enter a name.","sub.errSource":"Enter a public repository URL or npm package name.","sub.errZip":"Choose a ZIP archive.","sub.errLarge":"ZIP archives must not exceed 50 MB.","sub.err.market_npm_invalid":"The npm package is unavailable or does not meet the plugin requirements.","sub.err.market_npm_source":"Publish the new version on npm for review.","sub.err.market_github_source":"Publish a GitHub Release for review.","sub.err.market_not_found":"Submission unavailable. Refresh and retry.","sub.err.market_zip_required":"Choose a ZIP archive.","sub.err.market_zip_invalid":"The ZIP structure does not meet the publishing requirements.","sub.err.market_zip_too_large":"ZIP archives must not exceed 50 MB.","sub.err.market_version_required":"The package has no version. Add one to the manifest (for skills, version or metadata.version in SKILL.md) and repackage.","sub.err.market_version_invalid":"Enter a valid version.","sub.err.market_version_mismatch":"The version does not match the manifest.","sub.err.market_version_not_newer":"The new version must be newer than the published version.","sub.err.market_icon_invalid":"Use a square PNG icon between 64 and 512 px.","sub.err.market_duplicate":"This content has already been submitted. Manage the existing submission.","sub.err.market_update_pending":"An update is already awaiting review.","sub.err.market_stale":"The submission has changed. Refresh and retry.","sub.notNewer":"The package says v{version}; it must be newer than the Store\u2019s v{current}.","sub.reqNone":"No version range or platforms declared","sub.dropTitle":"Drop a ZIP here, or click to choose one","sub.dropHint":"Up to 50 MB. It is checked first, not submitted yet.","sub.dropReplace":"{size} \xB7 Drop or click to replace","sub.checkType":"Type","sub.checkVersion":"Version","sub.checkIcon":"Icon","sub.checkReadme":"README","sub.checkReq":"Requirements","sub.checkWarn":"Note","sub.iconYes":"icon.png found in the package","sub.iconNo":"No icon.png; the card shows the type icon","sub.readmeYes":"Uses README.md from the package","sub.readmeKeep":"No README.md in the package; the current one stays","sub.readmeNo":"No README.md in the package","sub.warn.no_manifest":"No manifest found in the package","sub.warn.type_mismatch":"The package type differs from this submission\u2019s type","sub.warn.tag_version_mismatch":"The release tag differs from the package version","sub.warn.id_slug_mismatch":"The package id differs from the installed folder name; users would end up with a second copy","sub.warn.engine_slug_mismatch":"The engine plugin folder name differs from its id","sub.warn.no_entry":"The Amadeus plugin has no main.js entry","sub.warn.has_node_modules":"The package includes node_modules, which is large and usually unneeded","sub.zipListedNote":"Until it\u2019s approved, the Store keeps serving the published version. The review result goes to your inbox.","sub.zipUnlistedNote":"Submitting replaces the current package and sends it back for review.","sub.submitVersion":"Submit v{version} for review","sub.checkNew":"Check for a new version","sub.checkAgain":"Check again","sub.upToDate":"The latest upstream version is v{version} and the Store has v{current}. Publish a new version, then check again.","sub.upstreamLatest":"Latest upstream: v{version}","sub.releaseTag":"Release {tag}","sub.storeHas":"Store has v{version}","sub.githubNote":"Once approved, the Store pins v{version}. After your next GitHub release, come back and check again.","sub.npmNote":"Once approved, the Store pins v{version}. After your next npm release, come back and check again.","sub.secVersion":"Version","sub.secInfo":"Store details","sub.secHistory":"History","sub.edit":"Edit","sub.unset":"Not set","sub.infoNote":"No package or new version needed. Changes to a published item are reviewed too; until then the Store shows the current details.","sub.submitInfo":"Submit changes","sub.back":"Back to list","sub.pendingInfo":"Details change pending review","sub.rejectedInfo":"Details change rejected","sub.pendingHint":"The Store stays unchanged until approval. The review result goes to your inbox.","sub.inReview":"Waiting for its first review. The result goes to your inbox.","sub.histApproved":"v{version} approved","sub.histSubmitted":"Submitted","sub.resubmitted":"Resubmitted for review. The result goes to your inbox.","sub.infoSubmitted":"Changes submitted for review. The Store shows the current details until then.","sub.err.market_no_release":"This repository has no GitHub release yet. The Store pins a version, so publish a release on GitHub, then check again.","sub.err.market_no_changes":"Nothing changed.","sub.err.market_dryrun_unsupported":"GitHub and npm submissions can\u2019t be checked in advance. Submit them for review.","page.account":"Account","page.membershipUsage":"Membership & usage","page.membershipQuota":"Membership & quota","page.pointsInvite":"Points & invites","page.helpDiagnostics":"Help & diagnostics","account.details.title":"Sign-in & details","account.details.desc":"Edit your photo, nickname and bio under Profile.","account.details.username":"Username","diag.unavailable":"This host does not support diagnostic data. Update Forsion and try again.","page.profile":"Profile","page.quota":"Quota & points","page.backpack":"Backpack","page.security":"Security","page.usage":"Usage","page.feedback":"Feedback","store.group":"Membership & points","store.membership":"Membership","store.membership.desc":"Upgrade your plan for more daily and weekly quota","store.points":"Points","store.points.desc":"Buy points and use them to redeem items","store.items":"Items","store.items.desc":"Items you can redeem with points. Redeemed items go to your backpack","store.status":"Plan and points","store.tier":"Current plan","store.balance":"Points balance","store.choosePlan":"Choose a plan","store.payHint":"You pay on the payment page in your browser. This page refreshes when you come back","store.payOff":"Purchases are unavailable right now","store.period":"Billing period","store.period.monthly":"Monthly","store.period.quarterly":"Quarterly","store.period.yearly":"Yearly","store.per.monthly":"/ month","store.per.quarterly":"/ quarter","store.per.yearly":"/ year","store.currentTier":"Current plan","store.pay":"Pay","store.payPrice":"Pay {price}","store.noPlans":"No plans are available right now","store.packs":"Point packs","store.packsHint":"You pay on the payment page in your browser. Points arrive right after payment","store.noPacks":"No point packs are available right now","store.kind.pack":"Point pack","store.kind.card":"Consumable","store.kind.code":"Redeem code","store.kind.item":"Item","store.nPoints":"{n} points","store.instant":"Arrives right after payment","store.redeemTitle":"Redeem with points","store.redeemHint":"Redeeming with points completes right here. Items go to your backpack","store.redeem":"Redeem for {n} points","store.redeemConfirm":"Confirm: spend {n} points","store.redeemed":"Redeemed. The item is in your backpack","store.uncertain":"No response came back. Check your backpack before you try again","store.soldOut":"Sold out","store.left":"{n} left","store.toBackpack":"Goes to your backpack","store.limitReached":"You've reached the purchase limit","store.unavailable":"This item can't be redeemed right now","store.noItems":"Nothing to redeem right now","store.itemsOff":"Item redemption isn't available yet","store.openBackpack":"Open backpack","backpack.desc":"View the items you have collected. Select a slot for details.","backpack.refresh":"Refresh","backpack.total":"{n} items","backpack.grid":"Backpack items","backpack.slot":"{name}, quantity {n}","backpack.item":"Item","backpack.empty":"Your backpack is empty","backpack.emptyHint":"Items you redeem or receive will appear here.","backpack.select":"Select an item to view details","backpack.details":"Item details","backpack.quantity":"Quantity","backpack.acquired":"Acquired","backpack.source":"Received through","backpack.source.points":"Points exchange","backpack.source.admin":"Gift","backpack.source.reward":"Reward","backpack.source.other":"Cloud account","backpack.consumable":"Consumable","backpack.voucher":"Voucher","backpack.getCards":"Redeem reset cards","backpack.manageCards":"Use or redeem","backpack.reveal":"Reveal key","backpack.copyKey":"Copy key","backpack.noKey":"This item has no key.","backpack.use":"Use","backpack.confirmUse":"Confirm use","backpack.consumeConfirm":"Using this item consumes one copy.","backpack.collectible":"Collectible","backpack.effect.points":"+{n} points","backpack.effect.cards":"+{n} reset cards","backpack.effect.quota":"Reset daily and weekly quota","backpack.rarity.common":"Common","backpack.rarity.rare":"Rare","backpack.rarity.epic":"Epic","backpack.rarity.legendary":"Legendary","backpack.unavailable":"This item is no longer available. Refresh your backpack.","backpack.notUsable":"This item cannot be used.","backpack.quotaUnavailable":"Use cloud AI to initialize your quota before using this item.","common.cancel":"Cancel","common.copied":"Copied","common.copyFailed":"Couldn't copy","common.done":"Done","common.loadFailed":"Couldn't load","common.loadMore":"Load more","common.loading":"Loading\u2026","common.openInBrowser":"Open in browser","common.retry":"Retry","common.save":"Save","common.thisWeek":"This week","common.today":"Today","common.unlimited":"Unlimited","ann.eyebrow":"FORSION \xB7 Announcement","ann.close":"Close","ann.ok":"Got it","signin.button":"Sign in to Forsion","signin.desc":"Sign in to your Forsion account to manage your account, quota, security, submissions and feedback here.","signin.pending":"Waiting for you to finish in your browser\u2026","signin.deviceHint":"Your browser opens the sign-in page on its own. If it doesn't, scan the code with your phone or open the link below, and check that the code matches.","signin.code":"Code","signin.openLink":"Open sign-in page","signin.copyLink":"Copy link","signin.qrLabel":"Sign-in QR code","account.profile.title":"Profile","account.profile.desc":"Your photo and nickname, plus the phone and email linked to your account","account.avatar.change":"Change photo","account.avatar.saved":"Photo updated","account.nickname.edit":"Edit nickname","account.nickname.label":"Nickname","account.nickname.saved":"Nickname updated","account.role.admin":"Admin","account.username":"Username {name}","account.contact.phone":"Phone","account.contact.email":"Email","account.contact.unbound":"Not linked","account.contact.manage":"Manage in Security","account.web.open":"Open the account center in your browser","account.web.desc":"Cloud storage, AI Brain and themes are managed in the web account center.","member.title":"Membership","member.desc":"Your tier, plan and expiry date","member.upgrade":"Upgrade membership","member.renew":"Renew","member.freeName":"Free plan","member.freeHint":"Upgrade to get more AI quota","member.expires":"Expires {date}","member.noExpiry":"No expiry","member.loadFailed":"Couldn't load your membership.","session.title":"Sign-in","session.desc":"Manage your sign-in on this device","local.title":"Accounts on this computer","local.desc":"Switch between accounts you've signed in with","local.current":"Current","local.switch":"Switch","local.add":"Sign in to another account","local.signOut":"Sign out","local.empty":"No saved accounts yet","local.loadFailed":"Couldn't read the account list","diag.title":"Diagnostic data","diag.desc":"Helps us troubleshoot problems and improve Forsion. Off by default.","diag.enable":"Upload diagnostic data","diag.enableDesc":"When this is on, this computer periodically uploads a snapshot of its Forsion setup to your Forsion account, where the Forsion team can view it. The Forsion team sets how often, once a day by default. You can turn it off at any time.","diag.collected":"What's uploaded","diag.item.app":"App and system versions, this computer's name, and its free memory and disk space","diag.item.settings":"Your model and voice choices, the switches and numeric values in background agent and plugin settings, and the names and on/off state of MCP servers and message channels","diag.item.agents":"Agent and team configuration (options such as name and model; descriptions and prompts are recorded by length only, and their text falls under the personas, memory and evolution switch below)","diag.item.plugins":"Names and versions of installed plugins, skills, themes and Spaces","diag.item.runs":"Run records from the last 7 days: each run's status and error reason, usage and timing of model calls and tools (no conversation text, and nothing those tools read or wrote), and the engine's recent log output","diag.notCollected":"Never uploaded: the sign-in credentials and API keys saved on this computer, your note files, agent libraries, or plugin data.","diag.sessions":"Include conversations","diag.sessionsDesc":"Conversations on this computer: the text of your messages and the agent's replies, the agent's reasoning and the names of the tools it used, including the background work of team members, discussions and delegated tasks. Each upload only includes what hasn't been uploaded yet, going back at most 7 days. What those tools read or wrote and the attachments themselves are left out; file names that appear in messages, and anything the agent repeated from your notes or files in its replies, are included. Keys in common formats are masked; everything else is uploaded as is. If you'd rather not share them, turn this off before you turn uploads on.","diag.memory":"Include agent personas, memory and evolution records","diag.memoryDesc":"Each agent's persona (including the description and developer instructions in its configuration), and what the agent has built up on its own: its memory and the memory candidates it hasn't consolidated yet, its evolution record, its collaboration notes for you, the last 7 days of its logs and memory-consolidation activity, and project memory; plus your teams' charters and your user profile. These are the instructions you wrote for your agents and teams, and the facts they noted about you and your work from conversations. Each upload carries their current content (very long ones are cut short). Keys in common formats are masked; everything else is uploaded as is. If you'd rather not share them, turn this off before you turn uploads on.","diag.activity":"Include activity log","diag.activityDesc":"Your activity records, which include the first few dozen characters of conversations and the names of note files. Each upload only includes what hasn't been uploaded yet, going back at most 7 days. If you'd rather not share them, turn this off before you turn uploads on.","diag.last":"Last upload: {time}","diag.noUpload":"Nothing uploaded yet","diag.freq.hour":"every hour","diag.freq.hours":"every {n} hours","diag.freq.day":"once a day","diag.freq.days":"every {n} days","diag.freq.manual":"only when the Forsion team requests it","diag.retention":"The cloud keeps this computer's snapshots from the last {n} days. Turning this off stops uploads; snapshots already uploaded stay in the cloud. To have them deleted, let us know under Feedback.","diag.uploadNow":"Upload now","diag.uploaded":"Uploaded","diag.failed":"Upload failed: {reason}","quota.ai.title":"AI quota","quota.ai.desc":"What's left today and this week; a quota reset card restores it","quota.resetDaily":"Resets daily at 0:00 (Beijing time)","quota.resetWeekly":"Resets {date} at 0:00 (Beijing time)","card.title":"Quota reset card","card.desc":"Restores today's and this week's AI quota to 100%","card.owned":"You have {n}","card.use":"Use one","card.useConfirm":"Confirm","card.used":"Used 1 quota reset card","card.left":"{n} left","card.noneHint":"You have no quota reset cards left. You can exchange points for more.","card.exchange":"Exchange points","card.price":"{price} points each, 1\u201350 at a time","card.count":"Number of cards","card.cost":"Costs {cost} points","card.countHint":"Enter 1\u201350","card.exchangeButton":"Exchange","card.exchangeConfirm":"Spend {cost} points","card.exchanged":"Quota reset cards added: {n}","points.title":"Points","points.desc":"Use points to get quota reset cards","points.balance":"Balance","points.balanceFailed":"Couldn't load your balance","points.recharge":"Buy points","bg.title":"Background quota","bg.desc":"Used by Muse and automations, counted separately from your AI quota","bg.autoMain":"Continue with AI quota when used up","bg.autoMainDesc":"When off, Muse and automations pause once the background quota runs out","bg.convert":"Move from AI quota","bg.convertDesc":"Moves a share of your AI quota limit, valid for the current period","bg.convertConfirm":"Move {pct}%","bg.converted":"Moved {pct}% from your AI quota","invite.title":"Invites & codes","invite.desc":"Invite friends to join, or redeem a code you received","invite.myCode":"My invite code","invite.count":"{n} invited","invite.copyCode":"Copy code","invite.copyLink":"Copy invite link","invite.loadFailed":"Couldn't load your invite code","invite.claim":"Enter an invite code","invite.claimDesc":"Within 7 days of signing up, you can enter a friend's invite code","invite.claimPlaceholder":"Friend's invite code","invite.claimSubmit":"Submit","invite.claimed":"Invite code applied","redeem.title":"Redemption code","redeem.desc":"Redeem points, membership or other rewards","redeem.placeholder":"Enter a code","redeem.submit":"Redeem","redeem.success":"Redeemed","redeem.successWith":"Redeemed: {what}","redeem.gotPoints":"{n} points","redeem.gotMembership":"membership","sec.methods.title":"Sign-in methods","sec.methods.desc":"Your phone and email can be used to sign in and reset your password","sec.bind":"Link","sec.change":"Change","sec.phone":"Phone number","sec.email":"Email address","sec.newPhone":"New phone number","sec.newEmail":"New email address","sec.phonePlaceholder":"Mainland China numbers as is; others with +country code","sec.emailPlaceholder":"name@example.com","sec.code":"Verification code","sec.codePlaceholder":"Enter the code","sec.sendCode":"Send code","sec.resendIn":"Resend in {s}s","sec.codeSent":"Code sent","sec.bindSubmit":"Link","sec.phoneBound":"Phone linked","sec.emailBound":"Email linked","sec.devices.title":"Signed-in devices","sec.devices.desc":"If you think someone else is using your account, sign out on every device","sec.logoutAll":"Sign out everywhere","sec.logoutAllDesc":"Including this device: every device has to sign in again","sec.logoutAllConfirm":"Confirm sign out everywhere","sec.logoutAllDone":"Signed out everywhere","pw.title":"Password","pw.desc":"{min}\u2013{max} characters, with a lowercase letter, an uppercase letter and a special character, and no spaces","pw.change":"Change password","pw.modeLabel":"How to change it","pw.mode.current":"With current password","pw.mode.code":"With a verification code","pw.current":"Current password","pw.currentRequired":"Enter your current password","pw.new":"New password","pw.confirm":"Confirm new password","pw.mismatch":"The new passwords don't match","pw.submit":"Change password","pw.submitReset":"Set new password","pw.changed":"Password updated","pw.noPasswordYet":"This account doesn't have a password yet. Set one with a verification code instead.","pw.codeNeedsContact":"Link a phone or email first to set a password with a verification code.","pw.via":"Send the code to","pw.codeTo":"The code goes to {target}","pw.rulesLabel":"Password rules","pw.req.length":"{min}\u2013{max} characters","pw.req.lower":"A lowercase letter","pw.req.upper":"An uppercase letter","pw.req.special":"A special character","pw.req.space":"No spaces","pw.rule.format":"Invalid password","pw.rule.min":"Password must be at least 8 characters","pw.rule.max":"Password can't be longer than 64 characters","pw.rule.space":"Password can't contain spaces","pw.rule.lower":"Password needs a lowercase letter","pw.rule.upper":"Password needs an uppercase letter","pw.rule.special":"Password needs a special character","del.title":"Delete account","del.desc":"Permanently delete your account and all its data. This can't be undone","del.start":"Delete account","del.warn":"Deleting your account removes your account, points, membership, cloud storage and all other data for good.","del.methodLabel":"Verify with","del.byCode":"Verification code","del.byPassword":"Password","del.codeLabel":"Code sent to {target}","del.passwordLabel":"Account password","del.submit":"Delete account","del.confirm":"Delete permanently","del.done":"Account deleted","usage.overview.title":"Overview","usage.overview.desc":"Requests and AI quota used in the selected period","usage.range":"Time range","usage.days":"{n} days","usage.requests":"Requests","usage.successRate":"Success rate","usage.consumption":"AI quota used","usage.ofToday":"Of your daily limit","usage.unlimitedNote":"Your AI quota is unlimited, so usage isn't shown as a percentage.","usage.noLimitNote":"Your daily limit is 0 or unavailable right now, so usage isn't shown as a percentage.","usage.byModel.title":"By model","usage.byModel.desc":"Requests and quota used per model","usage.byApp.title":"By app","usage.byApp.desc":"Requests and quota used per app","usage.col.model":"Model","usage.col.app":"App","usage.col.requests":"Requests","usage.col.consumption":"Quota used","usage.empty":"No usage in this period","usage.appUnknown":"Other","usage.recent.title":"Recent usage","usage.recent.desc":"Each call as a share of your daily limit","usage.recentEmpty":"No usage yet","usage.failed":"Failed","usage.shown":"Showing {shown} of {total}","fb.list.title":"My feedback","fb.list.desc":"Issues and suggestions you've sent; replies show up here","fb.new":"New feedback","fb.empty":"No feedback yet","fb.untitled":"Untitled feedback","fb.unread":"New reply","fb.shown":"Showing {n}","fb.submitted":"Sent. We'll reply as soon as we can","fb.descLabel":"Describe the issue or suggestion","fb.descPlaceholder":"What happened, and what did you expect?","fb.imagesHint":"Attach up to {n} screenshots (5 MB each). You can paste or drop them here.","fb.addImages":"Add screenshots","fb.removeImage":"Remove this image","fb.submit":"Send","fb.back":"Back to list","fb.you":"You","fb.support":"Forsion team","fb.attachment":"Attachment","fb.imagePreview":"View image","fb.closedNote":"This ticket is closed and can't take replies. Send new feedback for a new issue.","fb.replyPlaceholder":"Reply\u2026","fb.replySend":"Send reply","fb.replySent":"Reply sent","fb.status.open":"Open","fb.status.in_progress":"In progress","fb.status.resolved":"Resolved","fb.status.closed":"Closed","err.accountGone":"This account is signed out. Sign in again","err.adminCannotDelete":"Admin accounts can't be deleted here","err.avatarInvalid":"Couldn't read this image. Try another one","err.avatarTooLarge":"This image is too large. Try a smaller one","err.backgroundUnavailable":"Background quota is unavailable right now","err.captcha":"You need to finish a verification check in your browser","err.codeCooldown":"Too many codes requested. Try again shortly","err.codeInvalid":"The code is wrong or has expired","err.codeRequired":"Enter the verification code","err.codeSendFailed":"Couldn't send the code. Try again later","err.currentPasswordWrong":"Your current password is incorrect","err.deleteTargetInvalid":"Codes can only go to the phone or email linked to your account","err.deleteVerifyFailed":"Verification failed, so your account wasn't deleted","err.emailInUse":"This email is already used by another account","err.emailInvalid":"Enter a valid email address","err.featureDisabled":"This feature is turned off for now","err.feedbackEmpty":"Describe the issue or suggestion first","err.feedbackTooLong":"The description is too long (10,000 characters max)","err.generic":"That didn't work. Try again later","err.imageRead":"Couldn't read the image","err.imageTooLarge":"Each image must be 5 MB or less","err.imageType":"Only images can be added","err.insufficientMainQuota":"Your AI quota is used up, so there's nothing to move","err.insufficientPoints":"Not enough points","err.priceChanged":"The reset card price just changed. Check the new price, then confirm the exchange again.","err.invalidCount":"Choose between 1 and 50 cards","err.invalidInviteCode":"This invite code is invalid or has expired","err.inviteAlreadyUsed":"You've already used an invite code","err.inviteEmpty":"Enter an invite code","err.inviteOwnCode":"You can't use your own invite code","err.inviteWindowExpired":"The 7-day window after sign-up has passed","err.loginCodeExpired":"The sign-in code expired. Sign in again","err.loginInProgress":"A sign-in is already in progress","err.loginTimeout":"Sign-in timed out. Try again","err.loginUnsupported":"This cloud doesn't support desktop sign-in","err.network":"Network error. Check your connection and try again","err.noCloudUrl":"Set the cloud address under Connection first","err.noResetCard":"You have no quota reset cards","err.openFailed":"Couldn't open the browser","err.passwordRequired":"Enter your current and new password","err.phoneInUse":"This phone number is already used by another account","err.phoneInvalid":"Enter a valid phone number (with +country code outside mainland China)","err.redeemEmpty":"Enter a code","err.redeemExpired":"This code has expired","err.redeemInactive":"This code is no longer active","err.redeemNotFound":"This code doesn't exist","err.redeemUsedUp":"This code has been used up","err.redeemUserLimit":"You've already redeemed this code","err.replyEmpty":"Write a reply first","err.replyTooLong":"The reply is too long (10,000 characters max)","err.server":"Server error ({status}). Try again later","err.session":"You've been signed out. Sign in again","err.signedOut":"Sign in to Forsion first","err.targetInvalid":"Enter a valid phone number or email","err.ticketNotFound":"This feedback doesn't exist or was deleted","err.webPageGone":"This page doesn't exist or was taken down","err.listingGone":"This page has no store listing","err.listingSummary":"Add a store summary (up to 300 characters)","err.tooFrequent":"Too many attempts. Try again shortly","err.tooManyImages":"You can add up to 5 images","err.unavailable":"This version of Forsion can't do that yet. Update Forsion","profile.unsupported":"This server doesn't have profiles yet","profile.state.private":"Only you can see this","profile.state.public":"Public","profile.state.privateDesc":"Once public, anyone with the address can see your profile without signing in","profile.state.publicDesc":"Anyone with the public address can see it without signing in","profile.decorate":"Decorate","profile.publish":"Make public","profile.makePrivate":"Make private","profile.address":"Public address","profile.copyLink":"Copy link","profile.openPublic":"View public page","profile.nowPublic":"Your profile is now public","profile.nowPrivate":"Your profile is private. The public address no longer opens","profile.bio":"Bio","profile.bioPlaceholder":"Add a short bio","profile.linkAdd":"Add a link","profile.linkRemove":"Remove link","profile.linkInvalid":"Links must start with http:// or https://, or be a plain domain","profile.joined":"Joined {date}","profile.stat.tokens":"Total tokens","profile.stat.activeDays":"Active days","profile.stat.longest":"Longest streak","profile.stat.current":"Current streak","profile.stat.installs":"Work installs","profile.unit.days":"d","profile.works":"Featured works","profile.worksPick":"Choose","profile.worksEmpty":"No published works yet. Publish to the store or as a web app, and they can go here.","profile.worksNone":"Nothing to feature yet. Works appear here once they are in the store or published as a web app.","profile.worksPicked":"{n} of {max} selected","profile.worksAuto":"With none selected, the most installed ones are shown","profile.goSubmit":"Submit a work","profile.workInstalls":"{n} installs","profile.workVisits":"{n} visits","profile.work.skill":"Skill","profile.work.agent":"Agent","profile.work.plugin":"Plugin","profile.work.space":"Space","profile.work.theme":"Theme","profile.work.note":"Notes plugin","profile.work.webapp":"Web app","profile.activity":"Activity","profile.activityDays":"Active on {n} days in the past year","profile.less":"Less","profile.more":"More","profile.badges":"Badges","profile.badgesEmpty":"No badges yet. Streaks, published works and invites all earn one.","profile.badge.early":"Early user","profile.badge.streak":"30-day streak","profile.badge.author":"Author","profile.badge.inviter":"Top inviter","profile.badge.event":"Event keepsake","profile.badgeSub.early":"Joined in {value}","profile.badgeSub.streak":"Longest streak: {value} days","profile.badgeSub.author":"{value} published works","profile.badgeSub.inviter":"Invited {value} friends","profile.badgeSub.event":"Took part in a Forsion event{value}","profile.insights":"Insights","profile.insightsEmpty":"Not enough usage yet. Check back in a few days.","profile.insightModel":"Most used model","profile.insightHours":"Most active hours","profile.deco.skin":"Public page color scheme","profile.deco.mode":"Public page appearance","profile.deco.publicHint":"These two only set what visitors see on the public page. Here the profile follows Forsion's current theme.","profile.deco.cover":"Cover","profile.deco.frame":"Avatar frame","profile.deco.modules":"Sections","profile.skin.cream":"Classic","profile.skin.coral":"Coral","profile.skin.teal":"Teal","profile.skin.lavender":"Lavender","profile.mode.auto":"Auto","profile.mode.light":"Light","profile.mode.dark":"Dark","profile.cover.none":"None","profile.cover.mist":"Mist","profile.cover.contour":"Contour","profile.cover.dots":"Dots","profile.frame.none":"None","profile.frame.ring":"Ring","profile.frame.pro":"Member ring","profile.frameProHint":"The member ring is for paid members.","profile.col.show":"Show","profile.col.public":"Public","profile.moveUp":"Move up","profile.moveDown":"Move down","profile.modulesHint":'"Show" decides whether a section is on your profile. "Public" decides whether visitors see it, once your profile is public.',"profile.mod.stats":"Stats","profile.mod.works":"Works","profile.mod.activity":"Activity","profile.mod.badges":"Badges","profile.mod.insights":"Insights","profile.modDesc.stats":"Total tokens, active days, streaks and installs of your works","profile.modDesc.works":"Works you have published, up to 6","profile.modDesc.activity":"Which days you were active in the past year (shades only, no numbers)","profile.modDesc.badges":"Join year, streaks, publishing, invites and events","profile.modDesc.insights":"Your most used model and most active hours","profile.publishDesc":"Once public, anyone with this address can see your profile without signing in. You decide section by section what visitors see.","profile.publishNever":"Your avatar, nickname, username, bio and links become public too. Your email, phone number, membership expiry, points and quota never appear on your profile.","profile.publishConfirm":"Make public","profile.blocked.machineUsername":"Your current username was generated by the system and contains part of your phone number or email, so making it public would expose that. Change your username on the Account page of the web account center first (each account can do this once), then come back.","profile.blocked.publishBlocked":"An administrator has stopped this profile from being public. Contact us through Feedback if you have questions.","profile.goRename":"Change username","profile.invalid":"This couldn't be saved. Check it and try again","guide.title":"Guide","guide.readOnly":"Read-only","guide.more":"More","guide.unlockAll":"Unlock all","guide.relock":"Unlock level by level","guide.reminders":"Guide reminders","guide.spotlight":"On-screen hints","guide.spotStep":"Step {n} of {total}","guide.figure":"Diagram","guide.openAchievements":"Open achievements","guide.tasks":"Tasks in this chapter","guide.go":"Take me there","guide.desktopOnly":"Do it on your computer","guide.taskDone":"Done","guide.askTangu":"Ask Tangu","guide.progress":"Progress","guide.justUnlocked":"Just unlocked","guide.lockedHint":"Locked","guide.whatsNew":"What's new in {version}","guide.level.lv1":"Lv.1 Getting started","guide.level.lv2":"Lv.2 Finding your way","guide.level.lv3":"Lv.3 Making it yours","guide.level.lv4":"Lv.4 Going further","guide.locked.title":"This chapter is still locked","guide.locked.body":"Finish the tasks in {level} to read the rest.","guide.locked.left":"Still to do:","guide.locked.hint":"Been around a while? Unlock everything from the \xB7\xB7\xB7 menu.","guide.levelProgress":"This level: {done}/{total}","guide.next":"Next level","guide.allDone":"All done","guide.allDoneBody":"You've done every task in the guide. Come back any time.","guide.review":"Look back","guide.ask.hint":'Questions about "{chapter}"? Ask Tangu opens a new chat with this chapter attached.',"guide.ask.placeholder":"What would you like to know?","guide.ask.send":"Start a chat","guide.ask.prompt":`I'm reading the "{chapter}" chapter of the Forsion guide; it's attached below. {question}`,"guide.ask.unavailable":"Chat isn't available here","guide.ask.chatTitle":"Guide Q&A","guide.companion.back":"Back to the guide","guide.companion.close":"Close","guide.toast.taskDone":"Done: {task}","guide.letter.levelTitle":"{level} unlocked: try these next","guide.letter.levelBody":'You finished the previous level, so these chapters are open now. Every task has a "Take me there" button.',"guide.letter.versionTitle":"{n} new things to try in {version}","guide.letter.versionBody":"New in this version, ready to try:","guide.letter.open":"Open the guide","guide.status.done":"Done","guide.cmd.open":"Open the guide","penzor.title":"Penzor Cloud","penzor.overview":"Overview","penzor.places":"Places","penzor.details":"Details","penzor.ledger.sync":"Vault sync","penzor.ledger.ama":"Amadeus Cloud","penzor.ledger.apps":"App files","penzor.ledger.exports":"Exports","penzor.trash":"Trash","penzor.items":"{n} items","penzor.total.sub":"Stored in Forsion Cloud \xB7 updated {time}","penzor.justNow":"just now","penzor.ofMax":"/ {max}","penzor.card.syncSub":"{n} vaults \xB7 last write {time}","penzor.card.syncSubNone":"{n} vaults","penzor.card.syncFoot":"Files over {size} are not uploaded","penzor.card.syncWarn":"Almost full: after {max}, new files stop uploading; files already in the cloud keep syncing","penzor.card.amaSmall":"Not counted in your quota","penzor.card.amaSub":"{n} cloud vaults","penzor.card.amaFoot":"Notes and attachments on the Cloud side of Amadeus","penzor.card.appsFoot":"Trash: {n} items \xB7 {size}","penzor.card.appsWarn":"Almost full: after {max}, apps can't save new files. Trash counts too, so emptying it frees space","penzor.card.expSmall":"{n} files","penzor.card.expSub":"Latest: {name} \xB7 {time}","penzor.card.expFoot":"Files exported from apps","penzor.card.none":"Nothing yet","penzor.largest":"Largest files","penzor.col.name":"Name","penzor.col.size":"Size","penzor.col.mtime":"Modified","penzor.col.device":"Written by","penzor.col.deleted":"Deleted","penzor.col.origin":"Original location","penzor.col.app":"From","penzor.sort.mtime":"By modified","penzor.sort.size":"By size","penzor.sort.name":"By name","penzor.search":"Search file names here","penzor.sync.thisDevice":"Syncing on this device","penzor.meta.files":"{size} \xB7 {n} files","penzor.sync.last":"Last write {time} \xB7 {device}","penzor.sync.lastNoDevice":"Last write {time}","penzor.sync.devices":"{n} devices sync this vault","penzor.sync.meter":"Vault sync shares {max}; {used} used","penzor.apps.meter":"App files share {max}; {used} used (trash included)","penzor.apps.by":"Written by {app}","penzor.ama.notCounted":"Not counted in your quota","penzor.ama.open":"Open in Amadeus","penzor.trash.meta":"{n} items \xB7 {size}","penzor.trash.note":"Space frees up once items are deleted permanently","penzor.trash.emptyBtn":"Empty trash","penzor.act.download":"Download","penzor.act.rename":"Rename","penzor.act.move":"Move to\u2026","penzor.act.trash":"Move to trash","penzor.act.delete":"Delete","penzor.act.restore":"Restore","penzor.act.purge":"Delete permanently","penzor.act.copyName":"Copy vault name","penzor.act.openSync":"Open sync settings","penzor.act.refresh":"Refresh","penzor.act.up":"Up one level","penzor.toast.trashed":"Moved \u201C{name}\u201D to trash","penzor.toast.restored":"Restored \u201C{name}\u201D","penzor.toast.purged":"Deleted \u201C{name}\u201D permanently","penzor.toast.emptied":"Trash emptied","penzor.toast.downloaded":"Saved to Downloads: {name}","penzor.toast.renamed":"Renamed to \u201C{name}\u201D","penzor.toast.moved":"Moved to \u201C{name}\u201D","penzor.toast.versionRestored":"Restored version {n}","penzor.toast.copied":"Vault name copied","penzor.toast.failed":"That didn't work: {reason}","penzor.confirm.purge":"Delete \u201C{name}\u201D permanently? This can't be undone.","penzor.confirm.empty":"Empty the trash? {n} items will be deleted permanently.","penzor.confirm.deleteExport":"Delete \u201C{name}\u201D? Exports have no trash, so this can't be undone.","penzor.cancel":"Cancel","penzor.side.where":"Location","penzor.side.mtime":"Modified","penzor.side.device":"Written by","penzor.side.thisDevice":"{name} (this device)","penzor.side.from":"From","penzor.side.versions":"Versions","penzor.side.versionsNone":"None","penzor.side.versionRow":"Version {n} \xB7 {time} \xB7 {size}","penzor.side.restoreVersion":"Restore this version","penzor.side.deletedAt":"Deleted","penzor.side.origin":"Original location","penzor.side.inner":"{n} more items inside come back with it","penzor.side.inTrash":"In trash \xB7 {size}","penzor.side.readonlySync":"Files in a synced vault are changed on your devices. Deleting one here would delete it on every device that syncs {vault}, so here you can only view and download.","penzor.side.readonlyAma":"Notes and attachments are changed in Amadeus. Deleting an attachment here would leave the notes that use it with missing images, so here you can only view and download.","penzor.side.exportNote":"Exports have no trash: deleting is permanent.","penzor.side.none":"Select a file to see its details","penzor.side.folder":"Folder \xB7 {n} items","penzor.side.folderPlain":"Folder","penzor.move.title":"Move to","penzor.move.root":"Top of {app}","penzor.move.here":"Move here","penzor.move.noFolders":"No folders at this level","penzor.rename.save":"Save","penzor.empty.title":"Nothing in Penzor Cloud yet","penzor.empty.lead":"These show up here once they're in the cloud:","penzor.empty.sync":"Pick Penzor Cloud as the remote service in Settings \u203A Sync, and your local vault syncs here","penzor.empty.ama":"Notes you write on the Cloud side of Amadeus","penzor.empty.apps":"Files apps save to the cloud or export","penzor.empty.openSync":"Open sync settings","penzor.out.title":"Sign in to see your Penzor Cloud","penzor.out.lead":"Penzor Cloud holds the vaults you sync to Forsion Cloud, your Amadeus Cloud notes and the files apps keep in the cloud.","penzor.out.signIn":"Sign in to Forsion","penzor.loading":"Loading\u2026","penzor.err":"Couldn't load: {reason}","penzor.folderEmpty":"No files here","penzor.noMatch":"No file names contain \u201C{q}\u201D","penzor.cmd.open":"Open Penzor Cloud","penzor.unreachable":"Can\u2019t reach Forsion Cloud. Try again later","penzor.toast.emptyPartial":"{n} items in the trash couldn\u2019t be deleted","penzor.sort.deleted":"By deleted","penzor.side.versionsN":"{n}","penzor.drive":"My drive","penzor.drive.meta":"Counts toward the {max} for app files","penzor.drive.empty":"Nothing here yet. Drag files in, or click Upload.","penzor.act.upload":"Upload","penzor.act.uploadMore":"More upload options","penzor.act.uploadFiles":"Upload files\u2026","penzor.act.uploadFolder":"Upload folder\u2026","penzor.act.uploadHere":"Upload here\u2026","penzor.act.newFolder":"New folder","penzor.act.clearSel":"Clear selection","penzor.newFolder.default":"New folder","penzor.sel.bar":"{n} selected \xB7 {size}","penzor.sel.title":"{n} selected","penzor.sel.sub":"{size} \xB7 {files} files","penzor.sel.subDirs":"{size} \xB7 {files} files, {dirs} folders","penzor.sel.download":"Download {n}","penzor.sel.saveTo":"Saves to","penzor.sel.saveToValue":"Downloads / {folder}","penzor.sel.noDirs":"Folders can\u2019t be downloaded yet; only the selected files will be.","penzor.download.folder":"Penzor Cloud {date}","penzor.drop.to":"Drop to upload to \u201C{place}\u201D","penzor.tx.busy":"Transferring {n}","penzor.tx.allDone":"All done","penzor.tx.failedN":"{n} didn\u2019t finish","penzor.tx.counts":"{up} up \xB7 {down} down","penzor.tx.eta":"about {eta} left","penzor.tx.doneN":"{n} finished","penzor.tx.restDone":"The other {n} finished","penzor.tx.pill":"{counts} \xB7 {pct}%","penzor.tx.queued":"Queued","penzor.tx.paused":"Paused \xB7 resumes from the start","penzor.tx.uploaded":"Uploaded \xB7 {time}","penzor.tx.downloaded":"Downloaded \xB7 {time}","penzor.tx.canceled":"Canceled","penzor.tx.left":"{eta} left","penzor.tx.sec":"{n}s","penzor.tx.min":"{n} min","penzor.tx.pause":"Pause","penzor.tx.resume":"Resume","penzor.tx.cancel":"Cancel","penzor.tx.retry":"Retry","penzor.tx.remove":"Remove","penzor.tx.locate":"Show","penzor.tx.reveal":"Show in folder","penzor.tx.pauseAll":"Pause all","penzor.tx.resumeAll":"Resume all","penzor.tx.retryAll":"Retry all","penzor.tx.clearDone":"Clear finished","penzor.tx.clear":"Clear","penzor.tx.collapse":"Collapse","penzor.tx.expand":"Show transfers","penzor.tx.quota":"Not enough space: {size} short","penzor.tx.quotaSub":"Nothing in this batch was started","penzor.tx.freeSpace":"Free up space in Trash","penzor.err.too_large":"Over the 50 MB per-file limit ({size}); can\u2019t upload it yet","penzor.err.quota":"Not enough cloud space","penzor.err.network":"Connection lost at {pct}%","penzor.err.account_changed":"You switched accounts, so this one stopped","penzor.err.download_unavailable":"This host cannot save downloads yet. Update Forsion","penzor.err.download_failed":"The file was not saved. Try downloading it again","penzor.err.not_signed_in":"Not signed in","penzor.err.gone":"The file is no longer on this device","penzor.err.popup_blocked":"Your browser blocked the new tab. Allow pop-ups for this site and try again","penzor.err.changed":"The file changed while uploading. Try again","penzor.err.storage_unavailable":"Cloud storage is unavailable right now","penzor.err.other":"Didn\u2019t finish ({code})","penzor.err.too_many":"Up to {n} files at a time. Add them in smaller batches","penzor.toast.upDoneOne":"Uploaded \u201C{name}\u201D","penzor.toast.upDoneMany":"Uploaded {n} files","penzor.toast.downDoneMany":"Downloaded {n} files to Downloads","penzor.toast.txFailed":"{n} transfers didn\u2019t finish. Open Penzor Cloud to check","penzor.toast.folderExists":"There\u2019s already a folder called \u201C{name}\u201D","penzor.toast.trashedN":"Moved {n} items to the trash","penzor.toast.movedN":"Moved {n} items to \u201C{name}\u201D","penzor.toast.batchPartial":"{n} items didn\u2019t go through","penzor.sync.title":"Sync","penzor.sync.onN":"{n} on","penzor.sync.allOff":"All off","penzor.sync.waiting":"Waiting for you","penzor.sync.badgeWaiting":"{n} on \xB7 1 waiting for you","penzor.sync.running":"Syncing {pct}%","penzor.sync.runningPlain":"Syncing","penzor.sync.metaDevice":"This computer: {name}","penzor.sync.metaLast":"Last synced {time}","penzor.sync.metaNever":"Not synced yet","penzor.sync.every":"Every {n} min","penzor.sync.everyHours":"Every {n} h","penzor.sync.manual":"Manual","penzor.sync.onStart":"once at startup","penzor.sync.minAgo":"{n} min ago","penzor.sync.hoursAgo":"{n} h ago","penzor.sync.notesNamed":"Notes vault \u201C{name}\u201D","penzor.sync.notesPlain":"This computer\u2019s notes vault","penzor.sync.notesDesc":"The whole local vault, kept the same on your other computers","penzor.sync.agents":"Agents & memory","penzor.sync.agentsDesc":"Your agents\u2019 memory, logs, skills and working notes, plus your profile and default calendar","penzor.sync.conflictsN":"Conflict copies: {n}","penzor.sync.conflictsHint":"Files changed on both sides are kept twice: the other version is saved as a copy with \u201Cconflict\u201D in its name, in that agent\u2019s folder (or your profile folder)","penzor.sync.pluginsPending":"Changes not uploaded yet: {n} plugins","penzor.sync.agentsN":"Agents: {n}","penzor.sync.plugins":"Plugin data","penzor.sync.pluginsDesc":"Settings and data your plugins keep","penzor.sync.pluginsN":"Plugins: {n}","penzor.sync.off":"Off","penzor.sync.done":"Synced","penzor.sync.doneSize":"Synced \xB7 {size}","penzor.sync.firstPending":"Waiting for the first sync","penzor.sync.failed":"Last sync failed","penzor.sync.overQuota":"Over the limit, some files not uploaded","penzor.sync.to":"Syncing to {name}","penzor.sync.toFolder":"Syncing to a local folder","penzor.sync.decideAbove":"Choose in the card above","penzor.sync.kvSchedule":"Schedule","penzor.sync.kvDirection":"Direction","penzor.sync.kvSkipped":"Not uploaded","penzor.sync.kvWhere":"In the cloud","penzor.sync.change":"Change","penzor.sync.open":"Open","penzor.sync.dir.both":"Both ways","penzor.sync.dir.push":"Upload only","penzor.sync.dir.pull":"Download only","penzor.sync.skippedN":"{n} files over {size}","penzor.sync.where":"{ledger} \u203A {vault}","penzor.sync.whereUsed":"{ledger} \u203A {vault} \xB7 {used} / {max}","penzor.sync.devicesTitle":"Devices syncing","penzor.sync.thisOne":"This computer","penzor.sync.lastWrite":"Last write {time}","penzor.sync.noDevices":"No devices are syncing yet","penzor.sync.phoneTitle":"What your phone and the web see","penzor.sync.phoneTip":"Your phone and the web read the cloud vault (the cloud side of Amadeus, {size}) directly. It always syncs, and it\u2019s a separate copy from this computer\u2019s notes vault above. To see a folder from this computer on your phone, right-click it in your notes and sync it to the cloud vault.","penzor.sync.phoneTipPlain":"Your phone and the web read the cloud vault (the cloud side of Amadeus) directly. It always syncs, and it\u2019s a separate copy from this computer\u2019s notes vault above. To see a folder from this computer on your phone, right-click it in your notes and sync it to the cloud vault.","penzor.sync.foot":"Schedule, direction and other storage (Dropbox / S3 / WebDAV) are in","penzor.sync.footLink":"Settings \u203A Sync","penzor.sync.askTitle":"There\u2019s already a notes vault in the cloud","penzor.sync.askCloud":"The cloud copy is from {device}: {files} files \xB7 {size}.","penzor.sync.askCloudNoDevice":"The cloud copy: {files} files \xB7 {size}.","penzor.sync.askLocal":"This computer has {local} files the cloud copy doesn\u2019t, and {conflicts} that differ.","penzor.sync.askMerge":"Merge both","penzor.sync.askCloudBtn":"Use the cloud copy","penzor.sync.askSkip":"Don\u2019t sync notes on this computer yet","penzor.sync.askExplain":"Merge keeps both sides; files that differ are saved again as a \u201C(conflict)\u201D copy. Use the cloud copy first moves this computer\u2019s differing files into a \u201C{backup}\u201D folder next to the vault, then downloads the cloud copy.","penzor.sync.askConfirm":"This computer\u2019s differing files move to \u201C{backup}\u201D first, then the cloud copy replaces them.","penzor.sync.askConfirmGo":"Move them and use the cloud copy","penzor.sync.backupName":"{name} backup before sync {date}","penzor.sync.quotaTitle":"Your notes vault is {size}, over the {max} limit of {ledger}","penzor.sync.quotaTitlePlain":"Your notes vault is over the {ledger} limit","penzor.sync.quotaBody":"Files that don\u2019t fit stay on this computer. Nothing is deleted, they just aren\u2019t uploaded, and everything else keeps syncing.","penzor.sync.quotaLarge":"Single files over {size} are never uploaded ({n}).","penzor.sync.quotaSee":"See what\u2019s not uploaded","su.title":"Store update","su.source.github":"GitHub source","su.source.npm":"npm source","su.source.zip":"ZIP upload","su.review":"In review","su.approved":"Approved","su.rejected":"Not approved","su.viaGithub":"GitHub release {tag}","su.viaNpm":"npm {version}","su.metaReview":"Submitted {time} \xB7 The result will arrive in your inbox","su.metaReviewNoTime":"The result will arrive in your inbox","su.metaApproved":"The Store now shows {version}","su.metaApprovedInfo":"The Store info is updated","su.metaRejected":"The Store keeps {version}","su.metaRejectedUnlisted":"Not listed yet","su.infoOnly":"Store info only","su.listSep":", ","su.openSubmission":"Open in Submissions"},zl={zh:am,en:im},Ze=e=>e==="en"?"en":"zh";function xe(e,t,n){let r=zl[e][t]??zl.zh[t]??t;return n?r.replace(/\{(\w+)\}/g,(a,i)=>i in n?String(n[i]):a):r}var zo=e=>(t,n)=>xe(e,t,n),Wt=(e,t)=>"raw"in e?e.raw:t(e.key,e.vars);var Sl=`
|
|
70
70
|
.fx-acct { color: var(--text); }
|
|
71
71
|
.fx-acct .fx-panel > .settings-panel-head:last-child { border-bottom-color: transparent; }
|
|
72
72
|
.fx-acct .fx-panel > .fx-block + .fx-block,
|
|
@@ -634,7 +634,7 @@ Please report this to https://github.com/markedjs/marked.`,e){let r="<p>An error
|
|
|
634
634
|
.fx-acct .fx-sub-back { display: inline-flex; align-items: center; }
|
|
635
635
|
.fx-acct .fx-sub-detail { padding: 14px 15px 18px; }
|
|
636
636
|
}
|
|
637
|
-
`,
|
|
637
|
+
`,_l=`
|
|
638
638
|
.fx-ann-backdrop { position: fixed; inset: 0; z-index: 1600; display: grid; place-items: center; padding: 20px; background: color-mix(in srgb, var(--bg) 78%, transparent); backdrop-filter: blur(8px); animation: fx-ann-fade 300ms ease-out both; }
|
|
639
639
|
.fx-ann { position: relative; display: flex; flex-direction: column; width: min(100%, 560px); max-height: calc(100dvh - 40px); overflow: auto; padding: 24px 28px 22px; border: var(--border-width) solid var(--border); border-radius: var(--radius-lg); background: var(--bg-card); box-shadow: var(--card-shadow); color: var(--text); font-family: var(--font-ui); text-align: left; animation: fx-ann-enter 480ms cubic-bezier(.2,.75,.15,1) both; }
|
|
640
640
|
.fx-ann:focus { outline: none; }
|
|
@@ -661,7 +661,7 @@ html[data-glass='off'] .fx-ann-backdrop { backdrop-filter: none; background: var
|
|
|
661
661
|
@media (prefers-reduced-motion: reduce) {
|
|
662
662
|
.fx-ann-backdrop, .fx-ann, .fx-ann-eyebrow, .fx-ann-title, .fx-ann-body, .fx-ann-ok { animation: none; }
|
|
663
663
|
}
|
|
664
|
-
`,
|
|
664
|
+
`,Cl=`
|
|
665
665
|
:host { display: block; color: var(--text); font-family: var(--font-body, var(--font-ui)); font-size: var(--ui-font-body); line-height: 1.65; overflow-wrap: anywhere; }
|
|
666
666
|
.doc > :first-child { margin-top: 0; }
|
|
667
667
|
.doc > :last-child { margin-bottom: 0; }
|
|
@@ -685,7 +685,7 @@ img { border-radius: var(--radius-sm); }
|
|
|
685
685
|
hr { margin: 16px 0; border: 0; border-top: var(--border-width) solid var(--border); }
|
|
686
686
|
a { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; cursor: pointer; }
|
|
687
687
|
strong, b { font-weight: 650; }
|
|
688
|
-
`;var no=e=>typeof e=="string"?e:"";function Yf(e){if(!e||typeof e!="object")return null;let t=e,n=typeof t.id=="string"?t.id.trim():typeof t.id=="number"&&Number.isFinite(t.id)?String(t.id):"",r=no(t.titleZh),a=no(t.bodyZh);return!n||!r.trim()&&!a.trim()?null:{id:n,titleZh:r,titleEn:no(t.titleEn).trim()?no(t.titleEn):null,bodyZh:a,bodyEn:no(t.bodyEn).trim()?no(t.bodyEn):null,format:t.format==="html"?"html":"markdown",publishedAt:no(t.publishedAt)||null}}function Zf(e,t){return t==="en"&&e.bodyEn?{lang:"en",title:e.titleEn??e.titleZh,body:e.bodyEn}:{lang:"zh",title:e.titleZh,body:e.bodyZh}}var Qf=new Aa({gfm:!0,breaks:!0}),em=["script","iframe","frame","frameset","object","embed","applet","portal","form","input","textarea","select","option","button","link","meta","base","noscript"],tm=/^(?:https?:|mailto:|#)/i;function zl(e){return ha.sanitize(e,{FORCE_BODY:!0,RETURN_DOM_FRAGMENT:!0,FORBID_TAGS:em,ALLOWED_URI_REGEXP:tm})}function nm(e,t){let n=t==="markdown"?Qf.parse(e,{async:!1}):e;return zl(n)}var Lr=null;function om(){if(Lr===null)try{let e=zl('<p onclick="1"><a href="javascript:void 0">a</a></p><script>1<\/script><iframe></iframe>');Lr=ha.isSupported&&!e.querySelector("script, iframe, [onclick], a[href]")}catch{Lr=!1}return Lr}function rm(e){try{let t=new URL(String(e??"").trim());return t.protocol==="http:"||t.protocol==="https:"?t.href:null}catch{return null}}var am="http://www.w3.org/1999/xlink";function Dr(e){let t=e.target,n=t&&typeof t.closest=="function"?t.closest("a, area"):null;if(!n||(e.preventDefault(),e.type!=="click"))return;let r=rm(n.getAttribute("href")??n.getAttributeNS(am,"href"));if(r)try{se().openExternal?.(r)?.catch(()=>{})}catch{}}function wl(e){return e.shadowRoot??e.attachShadow({mode:"open"})}function im(e){let{ctx:t,ann:n}=e,[r,a]=A(()=>ht(t.getLocale?.()));oe(()=>{a(ht(t.getLocale?.()));let u=t.subscribeLocale?.(m=>a(ht(m)));return()=>{typeof u=="function"&&u()}},[t]);let i=Ot(()=>Rr(r),[r]),s=Zf(n,r),l=ce(null),c=ce(null),d=ce(null),g=ce(null),p=ce(e.onClose);return p.current=e.onClose,oe(()=>{let u=document.activeElement instanceof HTMLElement?document.activeElement:null;l.current?.focus();let m=v=>{if(v.key==="Escape"){v.preventDefault(),v.stopPropagation(),p.current();return}if(v.key!=="Tab")return;let x=c.current,w=d.current,z=l.current;if(!x||!w||!z)return;let k=document.activeElement;if(!k||!z.contains(k)){v.preventDefault(),(v.shiftKey?w:x).focus();return}v.shiftKey&&(k===x||k===z)?(v.preventDefault(),w.focus()):!v.shiftKey&&k===w&&(v.preventDefault(),x.focus())},f=v=>{let x=l.current;x&&v.target instanceof Node&&!x.contains(v.target)&&x.focus()};return window.addEventListener("keydown",m,!0),document.addEventListener("focusin",f,!0),()=>{window.removeEventListener("keydown",m,!0),document.removeEventListener("focusin",f,!0),u?.isConnected&&u.focus()}},[]),oe(()=>{let u=g.current;if(!u)return;let m=wl(u);return m.addEventListener("click",Dr),m.addEventListener("auxclick",Dr),()=>{m.removeEventListener("click",Dr),m.removeEventListener("auxclick",Dr)}},[]),oe(()=>{let u=g.current;if(!u)return;let m=document.createElement("style");m.textContent=kl;let f=document.createElement("div");f.className="doc",f.appendChild(nm(s.body,n.format)),wl(u).replaceChildren(m,f)},[s.body,n.format]),o("div",{class:"fx-ann-backdrop",children:[o("style",{children:xl}),o("section",{ref:l,class:"fx-ann",role:"dialog","aria-modal":"true","aria-labelledby":"fx-ann-title","aria-describedby":"fx-ann-body",tabIndex:-1,lang:s.lang==="zh"?"zh-CN":"en","data-announcement-id":n.id,children:[o("button",{ref:c,type:"button",class:"fx-ann-close","aria-label":i("ann.close"),onClick:()=>p.current(),children:o(Y,{name:"x",size:16})}),o("div",{class:"fx-ann-eyebrow",children:i("ann.eyebrow")}),o("h2",{id:"fx-ann-title",class:"fx-ann-title",children:s.title}),o("div",{class:"fx-ann-body",children:o("div",{ref:g,id:"fx-ann-body",class:"fx-ann-doc"})}),o("div",{class:"fx-ann-footer",children:o("button",{ref:d,type:"button",class:"fx-ann-ok",onClick:()=>p.current(),children:i("ann.ok")})})]})]})}function sm(e){try{return new URLSearchParams(e||"").has("window")}catch{return!1}}function lm(e=document,t=12e3){let n=e.getElementById("tangu-splash");return n?.parentNode?new Promise(r=>{let a=()=>{i.disconnect(),clearTimeout(s),r()},i=new MutationObserver(()=>{n.isConnected||a()});i.observe(n.parentNode,{childList:!0});let s=setTimeout(a,t)}):Promise.resolve()}function Sl(e,t=window){let n=bn(t?.tangu);if(!e||!n?.cloudFetch||!Qn(n)||sm(t.location?.search))return null;let r=0,a=!1,i=null,s=null,l=()=>{s?.done(),s=null},c=Promise.resolve(),d=(u,m)=>{let f=document.createElement("div");f.className="fx-ann-root",document.body.appendChild(f);let v=!1,x=w=>{v||(v=!0,i?.id===u.id&&(i=null),Qe(null,f),f.remove(),m?.done(),w&&(c=ne(`/announcements/${encodeURIComponent(u.id)}/seen`,{method:"POST"})))};i={id:u.id,finish:x},Qe(o(im,{ctx:e,ann:u,onClose:()=>x(!0)}),f)},g=async()=>{let u=++r;await c;let m=await ne("/announcements/pending");if(a||u!==r||!m.ok)return;let f=Yf(m.data?.announcement);if(!f||i||!om()||(await lm(),a||u!==r||i))return;let v=e.app?.queuePopup?.();if(v&&(l(),s=v,await v.ready,s===v&&(s=null),a||u!==r||i)){v.done();return}d(f,v)},p=n.onAuthChanged?.(u=>{i?.finish(!1),l(),u?.loggedIn?g():r++});return g(),{check:g,dispose(){a=!0,r++,typeof p=="function"&&p(),i?.finish(!1),l()}}}function _l(e){return typeof e!="string"?{ok:!1,rule:"format"}:e.length<8?{ok:!1,rule:"min"}:e.length>64?{ok:!1,rule:"max"}:/\s/.test(e)?{ok:!1,rule:"space"}:/[a-z]/.test(e)?/[A-Z]/.test(e)?/[^A-Za-z0-9]/.test(e)?{ok:!0}:{ok:!1,rule:"special"}:{ok:!1,rule:"upper"}:{ok:!1,rule:"lower"}}function Cl(e){return{length:e.length>=8&&e.length<=64,lower:/[a-z]/.test(e),upper:/[A-Z]/.test(e),special:/[^A-Za-z0-9]/.test(e),space:e.length>0&&!/\s/.test(e)}}var Tl={\u5BC6\u7801\u683C\u5F0F\u4E0D\u6B63\u786E:"format","\u5BC6\u7801\u81F3\u5C11 8 \u4F4D":"min","\u5BC6\u7801\u4E0D\u80FD\u8D85\u8FC7 64 \u4F4D":"max",\u5BC6\u7801\u4E0D\u80FD\u5305\u542B\u7A7A\u683C:"space",\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5C0F\u5199\u5B57\u6BCD:"lower",\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5927\u5199\u5B57\u6BCD:"upper",\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u7279\u6B8A\u5B57\u7B26:"special"};var Al={no_reset_card:"err.noResetCard",invalid_type:"err.generic",invalid_count:"err.invalidCount",insufficient_points:"err.insufficientPoints",price_changed:"err.priceChanged",insufficient_main_quota:"err.insufficientMainQuota",background_unavailable:"err.backgroundUnavailable",invalid_percent:"err.generic",invalid_request:"err.generic",invalid_invite_code:"err.invalidInviteCode",already_used:"err.inviteAlreadyUsed",window_expired:"err.inviteWindowExpired",ITEM_NOT_FOUND:"backpack.unavailable",ITEM_NOT_ACTIVE:"backpack.unavailable",ITEM_NOT_USABLE:"backpack.notUsable",ITEM_EFFECT_UNAVAILABLE:"backpack.quotaUnavailable",FEATURE_DISABLED:"err.featureDisabled",INSUFFICIENT_POINTS:"err.insufficientPoints",OUT_OF_STOCK:"store.soldOut",LIMIT_REACHED:"store.limitReached",NOT_AVAILABLE:"store.unavailable",NOT_POINTS_PURCHASABLE:"store.unavailable",CAPTCHA_FAILED:"err.captcha",machine_username:"profile.blocked.machineUsername",publish_blocked:"profile.blocked.publishBlocked",invalid_settings:"profile.invalid"},El={"Current password is incorrect":"err.currentPasswordWrong","Current and new password are required":"err.passwordRequired",\u9A8C\u8BC1\u7801\u65E0\u6548\u6216\u5DF2\u8FC7\u671F:"err.codeInvalid","Invalid or expired verification code":"err.codeInvalid",\u8D26\u53F7\u6216\u9A8C\u8BC1\u7801\u9519\u8BEF:"err.codeInvalid",\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801:"err.codeRequired","Email already in use":"err.emailInUse","Phone number already in use":"err.phoneInUse","Invalid email format":"err.emailInvalid","Email is required":"err.emailInvalid","Invalid phone number format":"err.phoneInvalid","Phone number is required":"err.phoneInvalid","Invalid phone number or email format":"err.targetInvalid","Please wait before requesting another code":"err.codeCooldown","Failed to send verification code":"err.codeSendFailed","Invalid target for account deletion":"err.deleteTargetInvalid","\u8EAB\u4EFD\u9A8C\u8BC1\u5931\u8D25\uFF0C\u65E0\u6CD5\u6CE8\u9500\u8D26\u6237":"err.deleteVerifyFailed",\u7BA1\u7406\u5458\u8D26\u53F7\u4E0D\u80FD\u81EA\u52A9\u6CE8\u9500:"err.adminCannotDelete",\u79EF\u5206\u4F59\u989D\u4E0D\u8DB3:"err.insufficientPoints","\u5151\u6362\u5F20\u6570\u9700\u4E3A 1-50 \u7684\u6574\u6570":"err.invalidCount",\u6CA1\u6709\u53EF\u7528\u7684\u91CD\u7F6E\u5361:"err.noResetCard","\u4E3B\u989D\u5EA6\u5DF2\u7528\u5B8C,\u6CA1\u6709\u53EF\u8F6C\u5165\u7684\u989D\u5EA6":"err.insufficientMainQuota",\u540E\u53F0\u989D\u5EA6\u6682\u4E0D\u53EF\u7528:"err.backgroundUnavailable",\u9080\u8BF7\u7801\u65E0\u6548\u6216\u5DF2\u5931\u6548:"err.invalidInviteCode","\u5DF2\u8D85\u8FC7\u6CE8\u518C\u540E 7 \u5929\u7684\u8865\u586B\u671F":"err.inviteWindowExpired",\u4F60\u5DF2\u4F7F\u7528\u8FC7\u9080\u8BF7\u7801:"err.inviteAlreadyUsed","You have already used an invite code":"err.inviteAlreadyUsed","Cannot use your own invite code":"err.inviteOwnCode","Invite code is required":"err.inviteEmpty","code is required":"err.redeemEmpty","Redemption code not found":"err.redeemNotFound","Redemption code is not active":"err.redeemInactive","Redemption code has expired":"err.redeemExpired","Redemption code has reached maximum uses":"err.redeemUsedUp","You have already used this code the maximum number of times":"err.redeemUserLimit",avatar_too_large:"err.avatarTooLarge","description is required":"err.feedbackEmpty","description too long (max 10000 chars)":"err.feedbackTooLong","content is required":"err.replyEmpty","content too long (max 10000 chars)":"err.replyTooLong","Ticket not found":"err.ticketNotFound","Too many attachments (max 5)":"err.tooManyImages","Attachment type not allowed (image / json / text only)":"err.imageType","\u4EBA\u673A\u9A8C\u8BC1\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5":"err.captcha",\u5E94\u7528\u4E0D\u5B58\u5728\u6216\u4E0D\u5C5E\u4E8E\u4F60:"err.webPageGone","\u5E94\u7528\u5DF2\u88AB\u505C\u7528\uFF0C\u65E0\u6CD5\u7533\u8BF7\u4E0A\u67B6":"web.disabledHint",\u6CA1\u6709\u5BF9\u5E94\u7684\u4E0A\u67B6\u7533\u8BF7:"err.listingGone","\u8BF7\u586B\u5199\u5E94\u7528\u7B80\u4ECB\uFF08300 \u5B57\u4EE5\u5185\uFF09":"err.listingSummary"},qa={format:"pw.rule.format",min:"pw.rule.min",max:"pw.rule.max",space:"pw.rule.space",lower:"pw.rule.lower",upper:"pw.rule.upper",special:"pw.rule.special"};function cm(e){if(e.code&&Al[e.code])return Al[e.code];if(e.detail){if(El[e.detail])return El[e.detail];let t=Tl[e.detail];if(t)return qa[t];if(e.detail.startsWith("Attachment exceeds 5MB"))return"err.imageTooLarge"}return null}function Bt(e){let t=cm(e);return t?{key:t}:eo(e)?{key:"err.signedOut"}:e.status===0?{key:"err.network"}:e.status===401?{key:"err.session"}:e.status===429?{key:"err.tooFrequent"}:e.detail?{raw:e.detail}:e.status>=500?{key:"err.server",vars:{status:e.status}}:{key:"err.generic"}}function Ko(e){let t=e.trim();return t?/cancelled\.?$/i.test(t)?null:t==="A sign-in is already in progress."?{key:"err.loginInProgress"}:t.startsWith("\u767B\u5F55\u8D85\u65F6")?{key:"err.loginTimeout"}:t.startsWith("\u767B\u5F55\u7801\u5DF2\u8FC7\u671F")?{key:"err.loginCodeExpired"}:t.startsWith("\u65E0\u6CD5\u8FDE\u63A5")?{key:"err.network"}:t.startsWith("\u4E91\u7AEF\u4E0D\u652F\u6301 CLI \u767B\u5F55")?{key:"err.loginUnsupported"}:t.startsWith("\u8BF7\u5148\u586B\u5199 Forsion \u4E91\u7AEF\u5730\u5740")?{key:"err.noCloudUrl"}:t.startsWith("Account is no longer signed in")?{key:"err.accountGone"}:{raw:t}:{key:"err.generic"}}var Va=Er(null);function ae(){let e=Fa(Va);if(!e)throw new Error("forsion-extend: page rendered outside its host root");return e}var Ge=()=>ae().t;function He(){let e=ce(!0);return oe(()=>(e.current=!0,()=>{e.current=!1}),[]),e}var Pl={pending:!1,error:null,success:null,captcha:!1};function ue(){let e=He(),[t,n]=A(Pl),r=ce(!1),a=hn(async s=>{if(r.current)return;r.current=!0,n({pending:!0,error:null,success:null,captcha:!1});let l;try{l=await s()}catch(c){l={error:{raw:String(c?.message||c)}}}r.current=!1,e.current&&n({pending:!1,error:l?.error??null,success:l?.success??null,captcha:!!l?.captcha})},[]),i=hn(()=>{r.current||n(Pl)},[]);return{...t,run:a,clear:i}}var De=e=>({error:Bt(e),captcha:e.status===403&&e.code==="CAPTCHA_FAILED"});function Ml(){let[e,t]=A(0),n=ce(null);oe(()=>()=>{n.current&&clearInterval(n.current)},[]);let r=hn((i=60)=>{n.current&&clearInterval(n.current),t(i),n.current=setInterval(()=>{t(s=>s<=1?(n.current&&clearInterval(n.current),n.current=null,0):s-1)},1e3)},[]),a=hn(()=>{n.current&&clearInterval(n.current),n.current=null,t(0)},[]);return{left:e,start:r,stop:a}}function Oe(e){let[t,n]=A({state:"loading"}),r=ce(0),a=ce(e);a.current=e;let i=hn((c=!1)=>{let d=++r.current;c||n({state:"loading"}),(async()=>{let g;try{g=await a.current()}catch(p){g={ok:!1,status:0,code:null,detail:null,transport:String(p?.message||p)}}d===r.current&&(g.ok?n({state:"ready",data:g.data,gen:d}):eo(g)?n({state:"signedOut"}):(g.status===401&&se().authStatus?.().catch(()=>{}),n({state:"error",fail:g})))})()},[]);oe(()=>{i();let c=se().onAuthChanged?.(()=>i());return()=>{r.current++,c?.()}},[i]);let s=hn(()=>i(),[i]),l=hn(()=>i(!0),[i]);switch(t.state){case"ready":{let c=t.gen,d=g=>n(p=>p.state==="ready"&&p.gen===c?{...p,data:g(p.data)}:p);return{state:"ready",data:t.data,reload:l,update:d}}case"error":return{state:"error",error:Bt(t.fail),retry:s};default:return t}}function Nr(e){let t=String(e||"").trim();if(!t)return"";let n=t.startsWith("+")?4:3;return t.length<=n+4?`${t.slice(0,2)}***`:`${t.slice(0,n)}****${t.slice(-4)}`}function Or(e){let t=String(e||"").trim(),n=t.lastIndexOf("@");if(n<=0)return t?`${t.slice(0,1)}***`:"";let r=t.slice(0,n);return`${r.slice(0,r.length<=2?1:2)}***${t.slice(n)}`}function Jo(e){let t=String(e||"").trim().toLowerCase()||"free";return t.charAt(0).toUpperCase()+t.slice(1)}var dm=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Il(e,t){let n=String(e||"").trim(),r,a,i=/^(\d{4})-(\d{2})-(\d{2})$/.exec(n);if(i)r=Number(i[2]),a=Number(i[3]);else{let s=new Date(n);if(!n||Number.isNaN(s.getTime()))return null;let l=new Intl.DateTimeFormat("en-US",{timeZone:"Asia/Shanghai",month:"numeric",day:"numeric"}).formatToParts(s);r=Number(l.find(c=>c.type==="month")?.value),a=Number(l.find(c=>c.type==="day")?.value)}return!(r>=1&&r<=12)||!(a>=1&&a<=31)?null:t==="zh"?`${r}\u6708${a}\u65E5`:`${dm[r-1]} ${a}`}var ja=e=>e==="zh"?"zh-CN":"en-US";function Rl(e){if(e==null||e==="")return null;let t=new Date(typeof e=="string"&&/^\d+$/.test(e)?Number(e):e);return Number.isNaN(t.getTime())?null:t}function yn(e,t){let n=Rl(e);return n?new Intl.DateTimeFormat(ja(t),{year:"numeric",month:"short",day:"numeric"}).format(n):"\u2014"}function an(e,t){let n=Rl(e);return n?new Intl.DateTimeFormat(ja(t),{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}).format(n):"\u2014"}function Pe(e,t){let n=typeof e=="number"?e:Number(e);return Number.isFinite(n)?new Intl.NumberFormat(ja(t),{maximumFractionDigits:2}).format(n):"\u2014"}var oo=(e=>(e[e.Border=-1]="Border",e[e.Data=0]="Data",e[e.Function=1]="Function",e[e.Position=2]="Position",e[e.Timing=3]="Timing",e[e.Alignment=4]="Alignment",e))(oo||{}),um=[0,1],Dl=[1,0],Nl=[2,3],Ol=[3,2],pm={L:um,M:Dl,Q:Nl,H:Ol},fm=/^\d*$/,mm=/^[A-Z0-9 $%*+./:-]*$/,Wa="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",Ja=1,Ya=40,Ll=3,gm=3,Br=40,hm=10,Bl=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],Fl=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],Ga=class{constructor(t,n,r,a){if(this.version=t,this.ecc=n,t<Ja||t>Ya)throw new RangeError("Version value out of range");if(a<-1||a>7)throw new RangeError("Mask value out of range");this.size=t*4+17;let i=Array.from({length:this.size}).fill(!1);for(let l=0;l<this.size;l++)this.modules.push(i.slice()),this.types.push(i.map(()=>0));this.drawFunctionPatterns();let s=this.addEccAndInterleave(r);if(this.drawCodewords(s),a===-1){let l=1e9;for(let c=0;c<8;c++){this.applyMask(c),this.drawFormatBits(c);let d=this.getPenaltyScore();d<l&&(a=c,l=d),this.applyMask(c)}}this.mask=a,this.applyMask(a),this.drawFormatBits(a)}size;mask;modules=[];types=[];getModule(t,n){return t>=0&&t<this.size&&n>=0&&n<this.size&&this.modules[n][t]}drawFunctionPatterns(){for(let r=0;r<this.size;r++)this.setFunctionModule(6,r,r%2===0,oo.Timing),this.setFunctionModule(r,6,r%2===0,oo.Timing);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let t=this.getAlignmentPatternPositions(),n=t.length;for(let r=0;r<n;r++)for(let a=0;a<n;a++)r===0&&a===0||r===0&&a===n-1||r===n-1&&a===0||this.drawAlignmentPattern(t[r],t[a]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(t){let n=this.ecc[1]<<3|t,r=n;for(let i=0;i<10;i++)r=r<<1^(r>>>9)*1335;let a=(n<<10|r)^21522;for(let i=0;i<=5;i++)this.setFunctionModule(8,i,xn(a,i));this.setFunctionModule(8,7,xn(a,6)),this.setFunctionModule(8,8,xn(a,7)),this.setFunctionModule(7,8,xn(a,8));for(let i=9;i<15;i++)this.setFunctionModule(14-i,8,xn(a,i));for(let i=0;i<8;i++)this.setFunctionModule(this.size-1-i,8,xn(a,i));for(let i=8;i<15;i++)this.setFunctionModule(8,this.size-15+i,xn(a,i));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let t=this.version;for(let r=0;r<12;r++)t=t<<1^(t>>>11)*7973;let n=this.version<<12|t;for(let r=0;r<18;r++){let a=xn(n,r),i=this.size-11+r%3,s=Math.floor(r/3);this.setFunctionModule(i,s,a),this.setFunctionModule(s,i,a)}}drawFinderPattern(t,n){for(let r=-4;r<=4;r++)for(let a=-4;a<=4;a++){let i=Math.max(Math.abs(a),Math.abs(r)),s=t+a,l=n+r;s>=0&&s<this.size&&l>=0&&l<this.size&&this.setFunctionModule(s,l,i!==2&&i!==4,oo.Position)}}drawAlignmentPattern(t,n){for(let r=-2;r<=2;r++)for(let a=-2;a<=2;a++)this.setFunctionModule(t+a,n+r,Math.max(Math.abs(a),Math.abs(r))!==1,oo.Alignment)}setFunctionModule(t,n,r,a=oo.Function){this.modules[n][t]=r,this.types[n][t]=a}addEccAndInterleave(t){let n=this.version,r=this.ecc;if(t.length!==Fr(n,r))throw new RangeError("Invalid argument");let a=Fl[r[0]][n],i=Bl[r[0]][n],s=Math.floor(Xa(n)/8),l=a-s%a,c=Math.floor(s/a),d=[],g=_m(i);for(let u=0,m=0;u<a;u++){let f=t.slice(m,m+c-i+(u<l?0:1));m+=f.length;let v=Cm(f,g);u<l&&f.push(0),d.push(f.concat(v))}let p=[];for(let u=0;u<d[0].length;u++)d.forEach((m,f)=>{(u!==c-i||f>=l)&&p.push(m[u])});return p}drawCodewords(t){if(t.length!==Math.floor(Xa(this.version)/8))throw new RangeError("Invalid argument");let n=0;for(let r=this.size-1;r>=1;r-=2){r===6&&(r=5);for(let a=0;a<this.size;a++)for(let i=0;i<2;i++){let s=r-i,c=(r+1&2)===0?this.size-1-a:a;!this.types[c][s]&&n<t.length*8&&(this.modules[c][s]=xn(t[n>>>3],7-(n&7)),n++)}}}applyMask(t){if(t<0||t>7)throw new RangeError("Mask value out of range");for(let n=0;n<this.size;n++)for(let r=0;r<this.size;r++){let a;switch(t){case 0:a=(r+n)%2===0;break;case 1:a=n%2===0;break;case 2:a=r%3===0;break;case 3:a=(r+n)%3===0;break;case 4:a=(Math.floor(r/3)+Math.floor(n/2))%2===0;break;case 5:a=r*n%2+r*n%3===0;break;case 6:a=(r*n%2+r*n%3)%2===0;break;case 7:a=((r+n)%2+r*n%3)%2===0;break;default:throw new Error("Unreachable")}!this.types[n][r]&&a&&(this.modules[n][r]=!this.modules[n][r])}}getPenaltyScore(){let t=0;for(let i=0;i<this.size;i++){let s=!1,l=0,c=[0,0,0,0,0,0,0];for(let d=0;d<this.size;d++)this.modules[i][d]===s?(l++,l===5?t+=Ll:l>5&&t++):(this.finderPenaltyAddHistory(l,c),s||(t+=this.finderPenaltyCountPatterns(c)*Br),s=this.modules[i][d],l=1);t+=this.finderPenaltyTerminateAndCount(s,l,c)*Br}for(let i=0;i<this.size;i++){let s=!1,l=0,c=[0,0,0,0,0,0,0];for(let d=0;d<this.size;d++)this.modules[d][i]===s?(l++,l===5?t+=Ll:l>5&&t++):(this.finderPenaltyAddHistory(l,c),s||(t+=this.finderPenaltyCountPatterns(c)*Br),s=this.modules[d][i],l=1);t+=this.finderPenaltyTerminateAndCount(s,l,c)*Br}for(let i=0;i<this.size-1;i++)for(let s=0;s<this.size-1;s++){let l=this.modules[i][s];l===this.modules[i][s+1]&&l===this.modules[i+1][s]&&l===this.modules[i+1][s+1]&&(t+=gm)}let n=0;for(let i of this.modules)n=i.reduce((s,l)=>s+(l?1:0),n);let r=this.size*this.size,a=Math.ceil(Math.abs(n*20-r*10)/r)-1;return t+=a*hm,t}getAlignmentPatternPositions(){if(this.version===1)return[];{let t=Math.floor(this.version/7)+2,n=this.version===32?26:Math.ceil((this.version*4+4)/(t*2-2))*2,r=[6];for(let a=this.size-7;r.length<t;a-=n)r.splice(1,0,a);return r}}finderPenaltyCountPatterns(t){let n=t[1],r=n>0&&t[2]===n&&t[3]===n*3&&t[4]===n&&t[5]===n;return(r&&t[0]>=n*4&&t[6]>=n?1:0)+(r&&t[6]>=n*4&&t[0]>=n?1:0)}finderPenaltyTerminateAndCount(t,n,r){return t&&(this.finderPenaltyAddHistory(n,r),n=0),n+=this.size,this.finderPenaltyAddHistory(n,r),this.finderPenaltyCountPatterns(r)}finderPenaltyAddHistory(t,n){n[0]===0&&(t+=this.size),n.pop(),n.unshift(t)}};function kn(e,t,n){if(t<0||t>31||e>>>t)throw new RangeError("Value out of range");for(let r=t-1;r>=0;r--)n.push(e>>>r&1)}function xn(e,t){return(e>>>t&1)!==0}var Yo=class{constructor(t,n,r){if(this.mode=t,this.numChars=n,this.bitData=r,n<0)throw new RangeError("Invalid argument");this.bitData=r.slice()}getData(){return this.bitData.slice()}},bm=[1,10,12,14],vm=[2,9,11,13],ym=[4,8,16,16];function $l(e,t){return e[Math.floor((t+7)/17)+1]}function Ul(e){let t=[];for(let n of e)kn(n,8,t);return new Yo(ym,e.length,t)}function xm(e){if(!Hl(e))throw new RangeError("String contains non-numeric characters");let t=[];for(let n=0;n<e.length;){let r=Math.min(e.length-n,3);kn(Number.parseInt(e.substring(n,n+r),10),r*3+1,t),n+=r}return new Yo(bm,e.length,t)}function km(e){if(!ql(e))throw new RangeError("String contains unencodable characters in alphanumeric mode");let t=[],n;for(n=0;n+2<=e.length;n+=2){let r=Wa.indexOf(e.charAt(n))*45;r+=Wa.indexOf(e.charAt(n+1)),kn(r,11,t)}return n<e.length&&kn(Wa.indexOf(e.charAt(n)),6,t),new Yo(vm,e.length,t)}function wm(e){return e===""?[]:Hl(e)?[xm(e)]:ql(e)?[km(e)]:[Ul(Sm(e))]}function Hl(e){return fm.test(e)}function ql(e){return mm.test(e)}function zm(e,t){let n=0;for(let r of e){let a=$l(r.mode,t);if(r.numChars>=1<<a)return Number.POSITIVE_INFINITY;n+=4+a+r.bitData.length}return n}function Sm(e){e=encodeURI(e);let t=[];for(let n=0;n<e.length;n++)e.charAt(n)!=="%"?t.push(e.charCodeAt(n)):(t.push(Number.parseInt(e.substring(n+1,n+3),16)),n+=2);return t}function Xa(e){if(e<Ja||e>Ya)throw new RangeError("Version number out of range");let t=(16*e+128)*e+64;if(e>=2){let n=Math.floor(e/7)+2;t-=(25*n-10)*n-55,e>=7&&(t-=36)}return t}function Fr(e,t){return Math.floor(Xa(e)/8)-Bl[t[0]][e]*Fl[t[0]][e]}function _m(e){if(e<1||e>255)throw new RangeError("Degree out of range");let t=[];for(let r=0;r<e-1;r++)t.push(0);t.push(1);let n=1;for(let r=0;r<e;r++){for(let a=0;a<t.length;a++)t[a]=Ka(t[a],n),a+1<t.length&&(t[a]^=t[a+1]);n=Ka(n,2)}return t}function Cm(e,t){let n=t.map(r=>0);for(let r of e){let a=r^n.shift();n.push(0),t.forEach((i,s)=>n[s]^=Ka(i,a))}return n}function Ka(e,t){if(e>>>8||t>>>8)throw new RangeError("Byte out of range");let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(t>>>r&1)*e;return n}function Tm(e,t,n=1,r=40,a=-1,i=!0){if(!(Ja<=n&&n<=r&&r<=Ya)||a<-1||a>7)throw new RangeError("Invalid value");let s,l;for(s=n;;s++){let p=Fr(s,t)*8,u=zm(e,s);if(u<=p){l=u;break}if(s>=r)throw new RangeError("Data too long")}for(let p of[Dl,Nl,Ol])i&&l<=Fr(s,p)*8&&(t=p);let c=[];for(let p of e){kn(p.mode[0],4,c),kn(p.numChars,$l(p.mode,s),c);for(let u of p.getData())c.push(u)}let d=Fr(s,t)*8;kn(0,Math.min(4,d-c.length),c),kn(0,(8-c.length%8)%8,c);for(let p=236;c.length<d;p^=253)kn(p,8,c);let g=Array.from({length:Math.ceil(c.length/8)},()=>0);return c.forEach((p,u)=>g[u>>>3]|=p<<7-(u&7)),new Ga(s,t,g,a)}function Vl(e,t){let{ecc:n="L",boostEcc:r=!1,minVersion:a=1,maxVersion:i=40,maskPattern:s=-1,border:l=1}=t||{},c=typeof e=="string"?wm(e):Array.isArray(e)?[Ul(e)]:void 0;if(!c)throw new Error(`uqr only supports encoding string and binary data, but got: ${typeof e}`);let d=Tm(c,pm[n],a,i,s,r),g=Am({version:d.version,maskPattern:d.mask,size:d.size,data:d.modules,types:d.types},l);return t?.invert&&(g.data=g.data.map(p=>p.map(u=>!u))),t?.onEncoded?.(g),g}function Am(e,t=1){if(!t)return e;let{size:n}=e,r=n+t*2;e.size=r,e.data.forEach(i=>{for(let s=0;s<t;s++)i.unshift(!1),i.push(!1)});for(let i=0;i<t;i++)e.data.unshift(Array.from({length:r},s=>!1)),e.data.push(Array.from({length:r},s=>!1));let a=oo.Border;e.types.forEach(i=>{for(let s=0;s<t;s++)i.unshift(a),i.push(a)});for(let i=0;i<t;i++)e.types.unshift(Array.from({length:r},s=>a)),e.types.push(Array.from({length:r},s=>a));return e}function xe(e){return o("section",{class:`settings-panel fx-panel${e.danger?" fx-panel--danger":""}`,"aria-label":e.label,children:[o("div",{class:`settings-panel-head${e.actions?" settings-panel-head--actions":""}`,children:[e.icon&&o("span",{class:"settings-panel-icon",children:o(Y,{name:e.icon,size:16})}),o("div",{children:[o("strong",{children:e.title}),e.desc&&o("p",{children:e.desc})]}),e.actions&&o("div",{class:"settings-panel-actions settings-panel-actions--wide",children:e.actions})]}),e.children]})}function qe(e){return o("div",{class:`settings-control-row settings-setting-row fx-row fx-block${e.class?` ${e.class}`:""}`,children:[o("div",{class:"settings-control-copy",children:o("span",{children:[o("strong",{children:e.label}),e.desc&&o("small",{children:e.desc})]})}),e.children!==void 0&&e.children!==null&&o("div",{class:"settings-row-control fx-row-control",children:e.children})]})}function Me(e){return o("div",{class:`fx-sub${e.class?` ${e.class}`:""}`,children:e.children})}function Zt(e){return o("button",{type:"button",role:"switch","aria-checked":e.checked,"aria-label":e.label,class:`settings-switch${e.checked?" active":""}`,disabled:e.disabled,onClick:()=>e.onChange(!e.checked),children:o("span",{})})}function q(e){let t=e.variant??"ghost",n=t==="danger-solid"?"btn sm danger fx-danger-solid":`btn sm ${t}`;return o("button",{type:e.submit?"submit":"button",class:n,disabled:e.disabled||e.pending,"aria-busy":e.pending||void 0,"aria-label":e.label,title:e.title,"data-armed":e.armed?"true":void 0,onClick:e.onClick,children:[e.pending&&o(xo,{}),e.children]})}var Em=5e3;function Gt(e){let[t,n]=A(!1),r=ce(null),a=()=>{r.current&&clearTimeout(r.current),r.current=null,n(!1)};oe(()=>()=>{r.current&&clearTimeout(r.current)},[]),oe(()=>{(e.pending||e.disabled)&&a()},[e.pending,e.disabled]);let i=()=>{if(!t){n(!0),r.current&&clearTimeout(r.current),r.current=setTimeout(()=>{r.current=null,n(!1)},Em);return}a(),e.onConfirm()},s=e.variant??"ghost";return o(q,{variant:t?s==="danger"||s==="danger-solid"?"danger-solid":"primary":s,armed:t,pending:e.pending,disabled:e.disabled,onClick:i,children:t?e.confirmLabel:e.label})}function pe(e){let t=Ge(),{a:n}=e;return n.error?o("div",{class:"fx-msg is-error",role:"alert",children:[o("span",{children:Wt(n.error,t)}),n.captcha&&o("button",{type:"button",class:"fx-link",onClick:()=>void to(e.captchaSection??"security"),children:[t("common.openInBrowser")," ",o(Y,{name:"external",size:12})]})]}):n.success?o("div",{class:"fx-msg is-ok",role:"status",children:Wt(n.success,t)}):null}function de(e){return o("p",{class:`fx-note${e.tone?` is-${e.tone}`:""}`,children:e.children})}function dt(e){return o("div",{class:"settings-empty-row fx-block",children:e.children})}function Zo(e){let t=Ge(),n=e.display;return o("div",{class:`fx-quota${n.low?" is-low":""}`,children:[o("div",{class:"fx-quota-top",children:[o("span",{class:"fx-quota-label",children:e.label}),o("span",{class:"fx-quota-value",children:n.unlimited?t("common.unlimited"):n.text})]}),o("div",{class:"fx-bar",role:"progressbar","aria-label":e.label,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":n.pct,"aria-valuetext":n.unlimited?t("common.unlimited"):n.text,children:o("span",{style:{width:`${n.pct}%`}})}),e.note&&o("div",{class:"fx-quota-note",children:e.note})]})}function St(e){return o("div",{class:"seg fx-seg",role:"radiogroup","aria-label":e.label,children:e.options.map(t=>o("button",{type:"button",role:"radio","aria-checked":t.value===e.value,class:t.value===e.value?"active":"",onClick:()=>{t.value!==e.value&&e.onChange(t.value)},children:t.label}))})}async function Pm(e){try{return await navigator.clipboard.writeText(e),!0}catch{try{let t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();let n=document.execCommand("copy");return t.remove(),n}catch{return!1}}}function _t(e){let t=Ge(),[n,r]=A("idle"),a=ce(null);oe(()=>()=>{a.current&&clearTimeout(a.current)},[]);let i=async()=>{let s=await Pm(e.text);r(s?"copied":"failed"),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>r("idle"),1800)};return o(q,{disabled:e.disabled||!e.text,onClick:()=>void i(),children:[o(Y,{name:n==="copied"?"check":"copy",size:12}),n==="copied"?t("common.copied"):n==="failed"?t("common.copyFailed"):e.label]})}function Mm(e){let t=Ot(()=>{try{return Vl(e.value,{ecc:"M",border:2})}catch{return null}},[e.value]);if(!t)return null;let n="";t.data.forEach((a,i)=>a.forEach((s,l)=>{s&&(n+=`M${l} ${i}h1v1h-1z`)}));let r=e.size??148;return o("svg",{class:"fx-qr",width:r,height:r,viewBox:`0 0 ${t.size} ${t.size}`,"shape-rendering":"crispEdges",role:"img","aria-label":e.label,children:[o("rect",{width:t.size,height:t.size,fill:"#fff"}),o("path",{d:n,fill:"#000"})]})}function Za(e){let t=Ge(),{device:n}=e;return o("div",{class:"fx-device",children:[o(Mm,{value:n.url,label:t("signin.qrLabel")}),o("div",{class:"fx-device-copy",children:[o("p",{children:t("signin.deviceHint")}),n.userCode&&o("div",{class:"fx-device-code",children:[o("span",{children:t("signin.code")}),o("code",{children:n.userCode})]}),o("div",{class:"fx-inline",children:[o("button",{type:"button",class:"fx-link",onClick:()=>window.open(n.url,"_blank"),children:[t("signin.openLink")," ",o(Y,{name:"external",size:12})]}),o(_t,{text:n.url,label:t("signin.copyLink")})]})]})]})}function Be(){let e=Ge(),t=ue(),[n,r]=A(null);oe(()=>se().onAuthDevice?.(i=>r(i)),[]);let a=()=>void t.run(async()=>{let i=se().forsionLogin;if(!i)return{error:{key:"err.unavailable"}};try{await i()}catch(s){r(null);let l=Ko(Yt(s));return l?{error:l}:void 0}});return o("section",{class:"settings-panel fx-panel fx-signin","aria-label":e("signin.button"),children:o("div",{class:"settings-state fx-signin-body",children:[o("span",{class:"settings-state-icon",children:o(Y,{name:"user",size:18})}),o("p",{class:"fx-signin-lead",children:e("signin.desc")}),o("div",{class:"settings-state-actions",children:o(q,{variant:"primary",pending:t.pending,onClick:a,children:t.pending?e("signin.pending"):e("signin.button")})}),n&&o(Za,{device:n}),o(pe,{a:t})]})})}function Ie(e){let t=Ge(),n=e.panels??2,r=e.rows??2;return o("div",{class:"fx-skeleton","aria-busy":"true","aria-label":t("common.loading"),children:Array.from({length:n},(a,i)=>o("section",{class:"settings-panel fx-panel",children:[o("div",{class:"settings-panel-head",children:[o("span",{class:"fx-skel fx-skel--icon"}),o("div",{children:[o("span",{class:"fx-skel fx-skel--title"}),o("span",{class:"fx-skel fx-skel--line"})]})]}),Array.from({length:r},(s,l)=>o("div",{class:"settings-control-row",children:o("span",{class:"fx-skel fx-skel--row"})},l))]},i))})}function $e(e){let t=Ge();return o("section",{class:"settings-panel fx-panel",children:o("div",{class:"settings-state fx-error-state",role:"alert",children:[o("span",{class:"settings-state-icon",children:o(Y,{name:"alert",size:18})}),o("strong",{children:t("common.loadFailed")}),o("p",{children:Wt(e.error,t)}),o("div",{class:"settings-state-actions",children:o(q,{variant:"primary",onClick:e.onRetry,children:[o(Y,{name:"refresh",size:12})," ",t("common.retry")]})})]})})}function Wl(){let{t:e}=ae(),t=Oe(()=>ne("/auth/me"));if(t.state==="loading")return o(Ie,{panels:2});if(t.state==="signedOut")return o(Be,{});if(t.state==="error")return o($e,{error:t.error,onRetry:t.retry});let n=t.data;return o(N,{children:[o(xe,{icon:"user",title:e("account.details.title"),desc:e("account.details.desc"),children:[o(qe,{label:e("account.details.username"),children:[o("span",{class:"fx-value",children:n.username}),n.role==="ADMIN"&&o("span",{class:"fx-tag",children:e("account.role.admin")})]}),o(jl,{kind:"phone",value:n.phone}),o(jl,{kind:"email",value:n.email})]}),o(Im,{}),o(Lm,{})]})}function jl(e){let{t,goTo:n}=ae(),r=!!e.value,a=r?e.kind==="phone"?Nr(e.value):Or(e.value):t("account.contact.unbound"),i=e.kind==="phone"?t("account.contact.phone"):t("account.contact.email");return o(qe,{label:i,children:n?o("button",{type:"button",class:`fx-link-row${r?"":" is-empty"}`,onClick:()=>n("security"),title:t("account.contact.manage"),children:[o("span",{children:a}),o(Y,{name:"chevron",size:12})]}):o("span",{class:`fx-value${r?"":" is-empty"}`,children:a})})}function Im(){let{t:e}=ae(),t=He(),[n,r]=A(null),[a,i]=A(!1),[s,l]=A(null),[c,d]=A(null),g=ue(),p=ue(),u=ue(),m=!vn(se()),f=m&&!!se().authAccounts;oe(()=>{let k=0,M=()=>{let V=se().authAccounts;if(!f||!V)return;let Q=++k;i(!1),V().then(ee=>{Q===k&&r(Array.isArray(ee)?ee:[])}).catch(()=>{Q===k&&i(!0)})};M();let L=se().onAuthChanged?.(M),H=se().onAuthDevice?.(V=>d(V));return()=>{k++,L?.(),H?.()}},[]);let v=k=>{l(k),g.run(async()=>{let M=se().forsionSwitchAccount;if(!M)return{error:{key:"err.unavailable"}};try{await M(k)}catch(L){let H=Ko(Yt(L));return H?{error:H}:void 0}finally{t.current&&l(null)}})},x=()=>void p.run(async()=>{let k=se().forsionLogin;if(!k)return{error:{key:"err.unavailable"}};d(null);try{await k()}catch(M){t.current&&d(null);let L=Ko(Yt(M));return L?{error:L}:void 0}}),w=()=>void u.run(async()=>{let k=se().forsionLogout;if(!k)return{error:{key:"err.unavailable"}};try{await k()}catch(M){return{error:{raw:Yt(M)||e("err.generic")}}}}),z=g.pending||p.pending||u.pending;return o(xe,{icon:m?"laptop":"user",title:e(m?"local.title":"session.title"),desc:e(m?"local.desc":"session.desc"),children:[f&&n===null&&!a&&o(dt,{children:[o(xo,{})," ",e("common.loading")]}),a&&o("div",{class:"fx-sub",children:o(de,{tone:"warn",children:e("local.loadFailed")})}),n&&n.length===0&&o(dt,{children:e("local.empty")}),n&&n.length>0&&o("div",{class:"fx-list fx-block",role:"list",children:n.map(k=>o("div",{class:"fx-list-row",role:"listitem",children:[o("span",{class:"fx-list-icon",children:o(Y,{name:"user",size:14})}),o("span",{class:"fx-list-main",children:[o("strong",{children:k.nickname||k.username||"Forsion"}),o("small",{children:[k.username&&k.nickname?k.username:null,Rm(k.cloudUrl)].filter(Boolean).join(" \xB7 ")})]}),k.active?o("span",{class:"fx-tag fx-tag--accent",children:[o(Y,{name:"check",size:11})," ",e("local.current")]}):o(q,{pending:s===k.id,disabled:z&&s!==k.id,onClick:()=>v(k.id),children:e("local.switch")})]},k.id))}),p.pending&&c&&o("div",{class:"fx-sub",children:o(Za,{device:c})}),o("div",{class:"settings-panel-footer fx-footer",children:[o(q,{pending:p.pending,disabled:z&&!p.pending,onClick:x,children:[o(Y,{name:"plus",size:12})," ",p.pending?e("signin.pending"):e("local.add")]}),o(q,{pending:u.pending,disabled:z&&!u.pending,onClick:w,children:[o(Y,{name:"logout",size:12})," ",e("local.signOut")]})]}),(g.error||p.error||u.error)&&o("div",{class:"fx-sub fx-sub--tight",children:[o(pe,{a:g}),o(pe,{a:p}),o(pe,{a:u})]})]})}function Rm(e){try{return new URL(e).host}catch{return e}}function Lm(){let{t:e}=ae(),t=ue();return o("div",{class:"fx-page-foot",children:[o("button",{type:"button",class:"fx-link",disabled:t.pending,onClick:()=>void t.run(async()=>await to()?void 0:{error:{key:"err.openFailed"}}),children:[e("account.web.open")," ",o(Y,{name:"external",size:12})]}),o("span",{class:"fx-muted",children:e("account.web.desc")}),o(pe,{a:t})]})}var ro=class extends Error{};async function Gl(e,t=256){if(e.size>20971520)throw new ro;let n=URL.createObjectURL(e);try{let r=new Image;await new Promise((g,p)=>{r.onload=()=>g(),r.onerror=()=>p(new Error("image decode failed")),r.src=n});let a=r.naturalWidth,i=r.naturalHeight;if(!a||!i)throw new Error("empty image");if(a*i>5e7)throw new ro;let s=Math.min(1,t/Math.max(a,i)),l=document.createElement("canvas");l.width=Math.max(1,Math.round(a*s)),l.height=Math.max(1,Math.round(i*s));let c=l.getContext("2d");if(!c)throw new Error("canvas unavailable");c.fillStyle="#fff",c.fillRect(0,0,l.width,l.height),c.drawImage(r,0,0,l.width,l.height);let d=l.toDataURL("image/jpeg",.85);if(d.length>262144)throw new ro;return d}finally{URL.revokeObjectURL(n)}}function Xl(e){let t=String(e||"").trim();if(!t)return"?";let n=Array.from(t)[0];return/[㐀-鿿]/.test(n)?n:Array.from(t).slice(0,2).join("").toUpperCase()}var Kl=["cream","coral","teal","lavender"],Jl=["auto","light","dark"],Yl=["none","mist","contour","dots"],Zl=["none","ring","pro"],Ql=["early","streak","author","inviter","event"];var ec=e=>`/u/${encodeURIComponent(e)}`,Qa=e=>!!e&&e.toLowerCase()!=="free";function ei(e,t){let n={...e.settings,...t};return{...e,settings:n,bio:n.bio,links:n.links,skin:n.skin,mode:n.mode,cover:n.cover,frame:n.frame==="pro"&&!Qa(e.tier)?"none":n.frame,modules:n.modules.filter(r=>r.show).map(r=>({id:r.id}))}}function ti(e,t,n){let r=e.findIndex(s=>s.id===t),a=r+n;if(r<0||a<0||a>=e.length)return e;let i=e.slice();return[i[r],i[a]]=[i[a],i[r]],i}function tc(e){let t=e.trim();if(!t)return null;let n=/^[a-z][a-z0-9+.-]*:/i.test(t)?t:`https://${t}`,r;try{r=new URL(n)}catch{return null}if(r.protocol!=="http:"&&r.protocol!=="https:"||!r.hostname.includes("."))return null;let a=r.toString();return a.length<=200?a:null}function ni(e){return e.replace(/^https?:\/\//i,"").replace(/^www\./i,"").replace(/\/$/,"")}function nc(e,t){let n=t==="zh"?[[1e8,"\u4EBF"],[1e4,"\u4E07"]]:[[1e9,"B"],[1e6,"M"],[1e3,"K"]];for(let[r,a]of n)if(e>=r){let i=e/r;return{value:i>=100?String(Math.round(i)):String(Math.round(i*10)/10),unit:a}}return{value:Math.round(e).toLocaleString("en-US"),unit:""}}var oc=e=>e==="zh"?"zh-CN":"en-US";function rc(e,t){let[n,r]=e.split("-").map(Number);if(!n||!r)return[];let a=new Intl.DateTimeFormat(oc(t),{month:"short",timeZone:"UTC"});return Array.from({length:12},(i,s)=>a.format(new Date(Date.UTC(n,r-12+s,1))))}function ac(e,t){let[n,r]=e.split("-").map(Number);return!n||!r?"":new Intl.DateTimeFormat(oc(t),{year:"numeric",month:"short",timeZone:"UTC"}).format(new Date(Date.UTC(n,r-1,1)))}function ic([e,t]){let n=r=>`${String((r%24+24)%24).padStart(2,"0")}:00`;return`${n(e)} \u2013 ${n(t)}`}function sc(e){let t=0,n=Promise.resolve(),r=()=>{let a=t;return e.read().then(i=>{a===t&&e.apply(i)})};return{read:r,write(a){let i=++t,s=n.then(a).then(l=>{i===t&&e.apply(l)});return n=s.catch(()=>i===t?r().catch(()=>{}):void 0),s}}}var uc={skill:{key:"profile.work.skill",icon:"sparkles"},agent:{key:"profile.work.agent",icon:"bot"},plugin:{key:"profile.work.plugin",icon:"box"},space:{key:"profile.work.space",icon:"grid"},theme:{key:"profile.work.theme",icon:"palette"},"amadeus-plugin":{key:"profile.work.note",icon:"note"},webapp:{key:"profile.work.webapp",icon:"globe"}},cc={early:"sprout",streak:"flame",author:"box",inviter:"gift",event:"trophy"},dc={plus:"Plus",pro:"Pro"},ri=e=>!!e&&/^https?:\/\//i.test(e);function ai(e){if(!ri(e))return;let t=se().openExternal;t?t(e).catch(()=>{}):window.open(e,"_blank","noopener")}async function Om(){let e=se().cloudInvoke;if(!e)return null;try{let t=await e("profile:publicOrigin");return t?.ok&&typeof t.origin=="string"&&/^https?:\/\/[^/]+$/i.test(t.origin)?t.origin:null}catch{return null}}async function Bm(e,t,n){let r=await ne(e,{method:t,body:n});if(!r.ok)throw r;if(!r.data?.profile)throw{ok:!1,status:r.status,code:null,detail:null,transport:"bad_response"};return r.data.profile}var pc=e=>e&&typeof e=="object"&&e.ok===!1?Bt(e):{raw:String(e?.message||e)};function fc(){let{t:e}=ae(),t=Oe(async()=>{let[r,a,i]=await Promise.all([ne("/profile/me"),ne("/auth/me"),Om()]);return a.ok?r.ok?r.data?.profile?{ok:!0,status:r.status,data:{profile:r.data.profile,me:a.data,origin:i}}:{ok:!0,status:404,data:null}:r.status===404?{ok:!0,status:404,data:null}:r:a});if(t.state==="loading")return o(Ie,{panels:2,rows:3});if(t.state==="signedOut")return o(Be,{});if(t.state==="error")return o($e,{error:t.error,onRetry:t.retry});if(!t.data)return o(xe,{icon:"user",title:e("page.profile"),children:o(dt,{children:e("profile.unsupported")})});let{update:n}=t;return o(Fm,{data:t.data,update:r=>n(a=>a&&r(a))})}function Fm(e){let{t}=ae(),n=He(),{profile:r,me:a,origin:i}=e.data,[s,l]=A(null),[c,d]=A(null),[g,p]=A(!1),u=ce(e.update);u.current=e.update;let m=(E,O,I)=>n.current?Bm(E,O,I):Promise.reject(new Error("unmounted")),f=Ot(()=>sc({apply:E=>u.current(O=>({...O,profile:E})),read:()=>m("/profile/me")}),[]),v=a.username||r.username,x={...r,username:v,nickname:a.nickname||null},w=r.settings.isPublic,z=i?`${i}${ec(v)}`:null,k=E=>{n.current&&d({tone:"error",m:pc(E)})},M=E=>{d(null),e.update(O=>({...O,profile:ei(O.profile,E)})),f.write(()=>m("/profile/me","PUT",E)).catch(k)},L=async E=>{e.update(O=>({...O,profile:ei(O.profile,{modules:O.profile.settings.modules.map(I=>({...I,public:E.find(te=>te.id===I.id)?.public??I.public}))})})),await f.write(()=>m("/profile/me/visibility","POST",{public:!0,modules:E})),n.current&&(l(null),d({tone:"ok",m:{key:"profile.nowPublic"}}))},H=async()=>{p(!0),d(null);try{await f.write(()=>m("/profile/me/visibility","POST",{public:!1})),n.current&&d({tone:"ok",m:{key:"profile.nowPrivate"}})}catch(E){k(E)}finally{n.current&&p(!1)}},V=ce(Promise.resolve()),Q=(E,O)=>{let I=V.current.then(async()=>{if(!n.current)return;let te=await ne("/settings",{method:"PUT",body:E});if(n.current){if(!te.ok)return d({tone:"error",m:Bt(te)});u.current(b=>({...b,me:{...b.me,...E}})),d({tone:"ok",m:{key:O}})}});return V.current=I,I},ee=async E=>{d(null);let O;try{O=await Gl(E)}catch(I){return d({tone:"error",m:{key:I instanceof ro?"err.avatarTooLarge":"err.avatarInvalid"}})}await Q({avatar:O},"account.avatar.saved")},S=E=>{d(null),l(O=>O===E?null:E)};return o("div",{class:"fx-pf-page",children:[o(xe,{icon:w?"globe":"lock",title:t(w?"profile.state.public":"profile.state.private"),desc:t(w?"profile.state.publicDesc":"profile.state.privateDesc"),actions:o(N,{children:[o(q,{onClick:()=>S("deco"),children:[o(Y,{name:"palette",size:12})," ",t("profile.decorate")]}),w?o(q,{pending:g,onClick:()=>void H(),children:[o(Y,{name:"lock",size:12})," ",t("profile.makePrivate")]}):o(q,{variant:"primary",onClick:()=>S("publish"),children:[o(Y,{name:"globe",size:12})," ",t("profile.publish")]})]}),children:[w&&z&&o(qe,{label:t("profile.address"),desc:z.replace(/^https?:\/\//i,""),children:[o(_t,{text:z,label:t("profile.copyLink")}),o(q,{onClick:()=>ai(z),children:[o(Y,{name:"external",size:12})," ",t("profile.openPublic")]})]}),s==="publish"&&!w&&o($m,{profile:r,url:z,submit:L,onClose:()=>l(null)}),c&&o(Me,{class:"fx-sub--tight",children:o("div",{class:`fx-msg ${c.tone==="ok"?"is-ok":"is-error"}`,role:c.tone==="ok"?"status":"alert",children:Wt(c.m,t)})})]}),o("div",{class:"fx-pf-home","data-deco":s==="deco"?"":void 0,children:[o("div",{class:"fx-pf-root",children:o(Vm,{view:x,avatar:a.avatar||null,pinned:r.settings.pinned,owner:{onAvatar:E=>void ee(E),onNickname:E=>{d(null),Q({nickname:E},"account.nickname.saved")},onBio:E=>M({bio:E}),onLinks:E=>M({links:E}),onPinned:E=>M({pinned:E}),onInvalidLink:()=>d({tone:"error",m:{key:"profile.linkInvalid"}})}})}),s==="deco"&&o(Um,{profile:r,onChange:M,onClose:()=>l(null)})]})]})}function $m(e){let{t}=ae(),n=He(),{profile:r}=e,[a,i]=A({}),s=r.settings.modules.filter(m=>m.show).map(m=>({...m,public:a[m.id]??m.public})),[l,c]=A(!1),[d,g]=A(null),p=r.canPublish?null:r.publishBlockedReason||"publish_blocked";if(p)return o(Me,{children:[o(de,{children:t(p==="machine_username"?"profile.blocked.machineUsername":"profile.blocked.publishBlocked")}),o("div",{class:"fx-inline fx-pf-foot",children:[p==="machine_username"&&o(q,{variant:"primary",onClick:()=>void to("profile"),children:[t("profile.goRename")," ",o(Y,{name:"external",size:12})]}),o(q,{onClick:e.onClose,children:t("common.cancel")})]})]});let u=async()=>{c(!0),g(null);try{await e.submit(s.map(({id:m,public:f})=>({id:m,public:f})))}catch(m){if(!n.current)return;g(pc(m)),c(!1)}};return o(Me,{children:[e.url&&o("div",{class:"fx-pf-url",children:[o(Y,{name:"globe",size:14}),o("span",{children:e.url.replace(/^https?:\/\//i,"")})]}),o(de,{children:t("profile.publishDesc")}),o("div",{class:"fx-pf-checks",children:s.map(m=>o("div",{class:"fx-pf-check",children:[o("div",{children:[t(`profile.mod.${m.id}`),o("small",{children:t(`profile.modDesc.${m.id}`)})]}),o(Zt,{checked:m.public,disabled:l,label:`${t(`profile.mod.${m.id}`)} \xB7 ${t("profile.col.public")}`,onChange:f=>i(v=>({...v,[m.id]:f}))})]},m.id))}),o(de,{children:t("profile.publishNever")}),d&&o("div",{class:"fx-msg is-error",role:"alert",children:Wt(d,t)}),o("div",{class:"fx-inline fx-pf-foot",children:[o(q,{variant:"primary",pending:l,onClick:()=>void u(),children:t("profile.publishConfirm")}),o(q,{disabled:l,onClick:e.onClose,children:t("common.cancel")})]})]})}function Um(e){let{t}=ae(),n=e.profile.settings,r=Qa(e.profile.tier),a=(s,l)=>e.onChange({modules:n.modules.map(c=>c.id===s?{...c,...l}:c)}),i=s=>o("span",{class:"fx-pf-thumb",children:s});return o("aside",{class:"fx-pf-deco","aria-label":t("profile.decorate"),children:o(xe,{icon:"palette",title:t("profile.decorate"),actions:o(q,{onClick:e.onClose,children:t("common.done")}),children:o("div",{class:"fx-pf-deco-body",children:[o("h4",{children:t("profile.deco.cover")}),o("div",{class:"fx-pf-opts",children:Yl.map(s=>o("button",{type:"button",class:"fx-pf-opt","aria-pressed":n.cover===s,onClick:()=>e.onChange({cover:s}),children:[i(o("span",{class:`fx-pf-cv-thumb fx-pf-cv-${s}`})),t(`profile.cover.${s}`)]},s))}),o("h4",{children:t("profile.deco.frame")}),o("div",{class:"fx-pf-opts",children:Zl.map(s=>o("button",{type:"button",class:"fx-pf-opt","aria-pressed":n.frame===s,disabled:s==="pro"&&!r,title:s==="pro"&&!r?t("profile.frameProHint"):void 0,onClick:()=>e.onChange({frame:s}),children:[i(o("span",{class:`fx-pf-fr-demo fx-pf-fr-${s}`,children:o("span",{class:"fx-pf-av"})})),t(`profile.frame.${s}`)]},s))}),!r&&o(de,{children:t("profile.frameProHint")}),o("h4",{children:t("profile.deco.modules")}),o("div",{class:"fx-pf-mod-head","aria-hidden":"true",children:[o("span",{children:t("profile.col.show")}),o("span",{children:t("profile.col.public")})]}),n.modules.map((s,l)=>o("div",{class:"fx-pf-mod",children:[o("span",{children:t(`profile.mod.${s.id}`)}),o("button",{type:"button",class:"fx-icon-btn",disabled:l===0,title:t("profile.moveUp"),"aria-label":`${t(`profile.mod.${s.id}`)} \xB7 ${t("profile.moveUp")}`,onClick:()=>e.onChange({modules:ti(n.modules,s.id,-1)}),children:o(Y,{name:"up",size:13})}),o("button",{type:"button",class:"fx-icon-btn",disabled:l===n.modules.length-1,title:t("profile.moveDown"),"aria-label":`${t(`profile.mod.${s.id}`)} \xB7 ${t("profile.moveDown")}`,onClick:()=>e.onChange({modules:ti(n.modules,s.id,1)}),children:o(Y,{name:"down",size:13})}),o(Zt,{checked:s.show,label:`${t(`profile.mod.${s.id}`)} \xB7 ${t("profile.col.show")}`,onChange:c=>a(s.id,{show:c})}),o(Zt,{checked:s.show&&s.public,disabled:!s.show,label:`${t(`profile.mod.${s.id}`)} \xB7 ${t("profile.col.public")}`,onChange:c=>a(s.id,{public:c})})]},s.id)),o(de,{children:t("profile.modulesHint")}),o("h4",{children:t("profile.deco.skin")}),o("div",{class:"fx-pf-opts",children:Kl.map(s=>o("button",{type:"button",class:"fx-pf-opt","aria-pressed":n.skin===s,onClick:()=>e.onChange({skin:s}),children:[i(o("span",{class:"fx-pf-swatch","data-skin":s})),t(`profile.skin.${s}`)]},s))}),o("h4",{children:t("profile.deco.mode")}),o(St,{value:n.mode,label:t("profile.deco.mode"),onChange:s=>e.onChange({mode:s}),options:Jl.map(s=>({value:s,label:t(`profile.mode.${s}`)}))}),o(de,{children:t("profile.deco.publicHint")})]})})})}function oi(e){let[t,n]=A(null),r=ce(!1),a=ce(null),i=t!==null;Xo(()=>{i&&a.current?.focus()},[i]);let s=e.class?` ${e.class}`:"";if(t===null)return o("button",{type:"button",class:`fx-pf-ed${s}${e.value?"":" is-empty"}`,title:e.label,"aria-label":e.label,onClick:()=>{r.current=!1,n(e.value)},children:[o("span",{children:e.value||e.placeholder}),o(Y,{name:e.value?"pencil":"plus",size:12})]});let l=()=>{let c=t.trim();n(null),!r.current&&c!==e.value&&e.onSave(c)};return o("span",{class:`fx-pf-ed-on${s}`,children:[o("input",{ref:a,class:"fx-input",type:"text",value:t,maxLength:e.maxLength,placeholder:e.placeholder,"aria-label":e.label,onInput:c=>n(c.currentTarget.value),onBlur:l,onKeyDown:c=>{c.isComposing||(c.key==="Enter"?c.currentTarget.blur():c.key==="Escape"&&(c.preventDefault(),r.current=!0,c.currentTarget.blur()))}}),e.counter&&o("small",{children:[Array.from(t).length,"/",e.maxLength]})]})}function $r(e){return o("section",{class:"fx-pf-sec",style:{order:e.order},children:[o("div",{class:"fx-pf-sec-h",children:[o("h3",{children:e.title}),e.action]}),e.children]})}function Hm(e){let{t}=ae(),{work:n}=e,r=uc[n.type],a=o(N,{children:[o("div",{class:"fx-pf-work-top",children:[o("span",{class:"fx-pf-work-ico",children:o(Y,{name:r?.icon??"box",size:17})}),o("div",{children:[o("div",{class:"fx-pf-work-name",children:n.name}),o("div",{class:"fx-pf-work-type",children:r?t(r.key):n.type})]})]}),o("p",{children:n.summary}),(n.countKind!=="visits"||n.count>0)&&o("div",{class:"fx-pf-work-foot",children:[o(Y,{name:n.countKind==="visits"?"eye":"download",size:12}),t(n.countKind==="visits"?"profile.workVisits":"profile.workInstalls",{n:n.count.toLocaleString("en-US")})]})]}),i=n.url;return ri(i)?o("a",{class:"fx-pf-work",href:i,onClick:s=>{s.preventDefault(),ai(i)},children:a}):o("article",{class:"fx-pf-work",children:a})}function qm(e){let{t}=ae(),n=He(),[r,a]=A(null),[i,s]=A(()=>e.pinned.map(g=>`${g.kind}:${g.id}`));oe(()=>{ne("/profile/me/works").then(g=>{n.current&&a(g.ok?g.data?.works??[]:"failed")})},[]);let l=g=>`${g.kind}:${g.id}`,c=g=>s(p=>p.includes(g)?p.filter(u=>u!==g):[...p,g]);if(r===null)return o("div",{class:"fx-pf-card fx-pf-empty",children:[o(xo,{})," ",t("common.loading")]});if(r==="failed"||r.length===0)return o("div",{class:"fx-pf-card fx-pf-empty",children:[o("p",{children:t(r==="failed"?"common.loadFailed":"profile.worksNone")}),o("div",{class:"fx-inline fx-pf-foot",children:[r!=="failed"&&o(q,{variant:"primary",onClick:()=>void to("submission"),children:[t("profile.goSubmit")," ",o(Y,{name:"external",size:12})]}),o(q,{onClick:e.onClose,children:t("common.cancel")})]})]});let d=()=>{let g=new Map(r.map(p=>[l(p),p]));e.onSave(i.flatMap(p=>{let u=g.get(p);return u?[{kind:u.kind,id:u.id}]:[]})),e.onClose()};return o("div",{class:"fx-pf-card fx-pf-picker",children:[r.map(g=>{let p=l(g),u=i.includes(p),m=uc[g.type];return o("button",{type:"button",class:"fx-pf-pick","aria-pressed":u,disabled:!u&&i.length>=6,onClick:()=>c(p),children:[o("div",{children:[g.name,o("small",{children:[m?t(m.key):g.type," \xB7 ",g.summary]})]}),u&&o(Y,{name:"check",size:15})]},p)}),o("div",{class:"fx-inline fx-pf-foot",children:[o("span",{class:"fx-grow",children:i.length?t("profile.worksPicked",{n:i.length,max:6}):t("profile.worksAuto")}),o(q,{variant:"primary",onClick:d,children:t("common.done")}),o(q,{onClick:e.onClose,children:t("common.cancel")})]})]})}function Vm(e){let{t,locale:n}=ae(),{view:r,owner:a}=e,i=ce(null),[s,l]=A(!1),c=r.nickname||r.username,d=(r.tier||"free").toLowerCase(),g=r.modules.map(b=>b.id),p=b=>g.indexOf(b),u=b=>p(b)>=0,m=r.stats,f=m?nc(m.totalTokens,n):null,v=t("profile.unit.days"),x=m&&f?[[f.value,f.unit,t("profile.stat.tokens")],[String(m.activeDays),v,t("profile.stat.activeDays")],[String(m.longestStreak),v,t("profile.stat.longest")],[String(m.currentStreak),v,t("profile.stat.current")],[m.installs.toLocaleString("en-US"),"",t("profile.stat.installs")]]:[],w=m&&u("stats")&&o("div",{class:"fx-pf-stats",style:{order:p("stats")},children:x.map(([b,T,R])=>o("div",{class:"fx-pf-stat",children:[o("b",{children:[b,T&&o("small",{children:T})]}),o("span",{children:R})]},R))},"stats"),z=g[0]==="stats",k=r.works||[],M=u("works")&&o($r,{order:p("works"),title:t("profile.works"),action:!s&&o("button",{type:"button",class:"fx-link",onClick:()=>l(!0),children:t("profile.worksPick")}),children:s?o(qm,{pinned:e.pinned,onSave:a.onPinned,onClose:()=>l(!1)}):k.length?o("div",{class:"fx-pf-works",children:k.map(b=>o(Hm,{work:b},`${b.kind}:${b.id}`))}):o("div",{class:"fx-pf-card fx-pf-empty",children:t("profile.worksEmpty")})},"works"),L=r.activity,H=u("activity")&&L&&o($r,{order:p("activity"),title:t("profile.activity"),children:o("div",{class:"fx-pf-card",children:[o("div",{class:"fx-pf-hm",role:"img","aria-label":t("profile.activityDays",{n:L.activeDays}),children:L.levels.map((b,T)=>o("i",{class:b?`l${b}`:void 0},T))}),o("div",{class:"fx-pf-hm-months","aria-hidden":"true",children:rc(L.end,n).map((b,T)=>o("span",{children:b},T))}),o("div",{class:"fx-pf-hm-foot",children:[o("span",{children:t("profile.activityDays",{n:L.activeDays})}),o("span",{class:"fx-pf-hm-legend","aria-hidden":"true",children:[t("profile.less"),o("i",{}),o("i",{class:"l1"}),o("i",{class:"l2"}),o("i",{class:"l3"}),o("i",{class:"l4"}),t("profile.more")]})]})]})},"activity"),V=(r.badges||[]).filter(b=>Ql.includes(b.id)),Q=u("badges")&&o($r,{order:p("badges"),title:t("profile.badges"),children:V.length?o("div",{class:"fx-pf-card fx-pf-rows",children:V.map(b=>o("div",{class:"fx-pf-brow",children:[o("span",{class:"fx-pf-badge",children:o(Y,{name:cc[b.id],size:14})}),o("div",{children:[o("b",{children:t(`profile.badge.${b.id}`)}),o("span",{children:t(`profile.badgeSub.${b.id}`,{value:b.value??""})})]})]},b.id))}):o("div",{class:"fx-pf-card fx-pf-empty",children:t("profile.badgesEmpty")})},"badges"),ee=r.insights,S=[];ee?.topModel&&S.push([t("profile.insightModel"),ee.topModel]),ee?.activeHours&&S.push([t("profile.insightHours"),ic(ee.activeHours)]);let E=u("insights")&&o($r,{order:p("insights"),title:t("profile.insights"),children:S.length?o("div",{class:"fx-pf-card fx-pf-rows",children:S.map(([b,T])=>o("div",{class:"fx-pf-row",children:[o("span",{children:b}),o("b",{children:T})]},b))}):o("div",{class:"fx-pf-card fx-pf-empty",children:t("profile.insightsEmpty")})},"insights"),O=[!z&&w,M,H].filter(Boolean),I=[Q,E].filter(Boolean),te=b=>{if(!b)return;let T=tc(b);if(!T)return a.onInvalidLink();r.links.includes(T)||a.onLinks([...r.links,T])};return o("div",{class:"fx-pf","data-cover":r.cover,"data-frame":r.frame,children:[o("div",{class:"fx-pf-cover"}),o("div",{class:"fx-pf-id",children:[o("button",{type:"button",class:"fx-pf-avatar",title:t("account.avatar.change"),"aria-label":t("account.avatar.change"),onClick:()=>i.current?.click(),children:[o("span",{class:"fx-pf-av",children:e.avatar?o("img",{src:e.avatar,alt:""}):o("span",{class:"fx-pf-av-fallback",children:Xl(c)})}),o("span",{class:"fx-pf-av-mask",children:o(Y,{name:"pencil",size:18})})]}),o("input",{ref:i,type:"file",accept:"image/png,image/jpeg,image/webp,image/gif,image/avif",hidden:!0,onChange:b=>{let T=b.currentTarget,R=T.files?.[0];T.value="",R&&a.onAvatar(R)}}),o("div",{class:"fx-pf-id-text",children:[o("div",{class:"fx-pf-name",children:[o(oi,{value:c,placeholder:r.username,maxLength:40,label:t("account.nickname.edit"),onSave:b=>{b&&a.onNickname(b)}}),dc[d]&&o("span",{class:`fx-tag${d==="pro"?" fx-pf-tier-pro":" fx-tag--accent"}`,children:dc[d]})]}),o("div",{class:"fx-pf-handle",children:["@",r.username]})]}),V.length>0&&u("badges")&&o("div",{class:"fx-pf-badges",children:V.map(b=>o("span",{class:"fx-pf-badge",title:t(`profile.badge.${b.id}`),children:o(Y,{name:cc[b.id],size:14})},b.id))})]}),o("div",{class:"fx-pf-sub",children:[o(oi,{class:"fx-pf-bio",value:r.bio,placeholder:t("profile.bioPlaceholder"),maxLength:80,label:t("profile.bio"),counter:!0,onSave:a.onBio}),o("div",{class:"fx-pf-meta",children:[r.joinedMonth&&o("span",{children:[o(Y,{name:"calendar",size:13}),t("profile.joined",{date:ac(r.joinedMonth,n)})]}),r.links.map(b=>o("span",{children:[o(Y,{name:"link",size:13}),ri(b)?o("a",{href:b,onClick:T=>{T.preventDefault(),ai(b)},children:ni(b)}):o("span",{children:ni(b)}),o("button",{type:"button",class:"fx-pf-x",title:t("profile.linkRemove"),"aria-label":t("profile.linkRemove"),onClick:()=>a.onLinks(r.links.filter(T=>T!==b)),children:o(Y,{name:"x",size:11})})]},b)),r.links.length<2&&o(oi,{value:"",placeholder:t("profile.linkAdd"),maxLength:200,label:t("profile.linkAdd"),onSave:te},r.links.length)]})]}),z&&w,o("div",{class:"fx-pf-body","data-cols":O.length&&I.length?2:1,children:[o("div",{class:"fx-pf-main",children:O}),I.length>0&&o("div",{class:"fx-pf-side",children:I})]})]})}function mc(){let e=Oe(async()=>{let[t,n]=await Promise.all([ne("/membership/my"),ne("/features")]);return t.ok?{ok:!0,status:t.status,data:{membership:t.data?.membership??null,payment:!n.ok||n.data?.payment!==!1}}:t});return e.state==="loading"?o(Ie,{panels:1}):e.state==="signedOut"?null:o(jm,{membership:e.state==="ready"?e.data.membership:null,failed:e.state==="error",payment:e.state==="ready"&&e.data.payment,onRetry:e.state==="ready"?e.reload:e.retry})}function jm(e){let{t,locale:n}=ae(),r=ue(),a=e.membership&&(e.membership.status===void 0||e.membership.status==="active")?e.membership:null,i=Jo(a?.tier),s=i==="Free",l=s?"free":i.toLowerCase()==="pro"?"pro":"paid",c=()=>void r.run(async()=>await On("membership")?void 0:{error:{key:"err.openFailed"}});return o(xe,{icon:"card",title:t("member.title"),desc:t("member.desc"),actions:e.payment&&!e.failed?o(q,{variant:"primary",pending:r.pending,onClick:c,children:t(s?"member.upgrade":"member.renew")}):void 0,children:[!e.failed&&o("div",{class:"fx-member fx-block",children:[o("span",{class:`fx-tier fx-tier--${l}`,children:i}),o("div",{class:"fx-member-copy",children:[o("strong",{children:s?t("member.freeName"):a?.plan?.name||i}),o("span",{class:"fx-muted",children:s?t("member.freeHint"):a?.expiresAt?t("member.expires",{date:yn(a.expiresAt,n)}):t("member.noExpiry")})]})]}),e.failed&&o("div",{class:"fx-sub",children:o(de,{tone:"warn",children:[t("member.loadFailed")," ",o("button",{type:"button",class:"fx-link",onClick:e.onRetry,children:t("common.retry")})]})}),r.error&&o("div",{class:"fx-sub fx-sub--tight",children:o(pe,{a:r})})]})}function Ce(e){if(typeof e=="number")return Number.isFinite(e)?e:null;if(typeof e=="string"&&e.trim()!==""){let t=Number(e);return Number.isFinite(t)?t:null}return null}function Wm(e,t){let n=Ce(t);if(n===null||n<0)return null;if(n===0)return 0;let r=Math.max(0,Ce(e)??0);return Math.min(100,Math.max(0,Math.floor(r/n*100)))}var Gm=15;function ao(e,t){let n=Wm(e,t);if(n===null)return{unlimited:!0,pct:100,text:null,low:!1};let r=Math.max(0,Ce(e)??0),a=n===0&&r>0&&(Ce(t)??0)>0?"<1%":`${n}%`;return{unlimited:!1,pct:n,text:a,low:n<=Gm}}function Ur(e,t){let n=Ce(t);if(n===null||n<=0)return null;let r=Ce(e);if(r===null)return null;let a=Math.max(0,r);if(a===0)return"0%";let i=a/n*100;if(i<.1)return"<0.1%";let s=Math.round(i*10)/10;return s<10?`${s}%`:`${Math.round(i).toLocaleString("en-US")}%`}var Xm=e=>e.ok?"ok":e.status===404?"hidden":"failed";function hc(){return o(vc,{section:"points"})}function bc(){return o(N,{children:[o(mc,{}),o(vc,{section:"quota"})]})}function vc({section:e}){let t=Oe(async()=>{let[l,c,d,g]=await Promise.all([ne("/token-quota/my"),ne("/credits/balance"),ne("/features"),ne("/invite/my-code")]);return l.ok?{ok:!0,status:l.status,data:{quota:l.data??{},balance:c.ok?Ce(c.data?.balance):null,balanceFailed:!c.ok,features:d.ok&&d.data&&typeof d.data=="object"?d.data:{},invite:g.ok?g.data:null,inviteState:Xm(g)}}:l});if(t.state==="loading")return o(Ie,{panels:3,rows:2});if(t.state==="signedOut")return o(Be,{});if(t.state==="error")return o($e,{error:t.error,onRetry:t.retry});let{data:n,update:r}=t,a=n.quota.background,i=n.features.redemption_codes!==!1,s=n.features.payment!==!1;return o(N,{children:[e==="quota"&&o(N,{children:[o(Jm,{data:n,update:r,onFailed:t.reload}),a?.modelId?o(eg,{bg:a,update:r}):null]}),e==="points"&&o(Zm,{data:n,payment:s,onRetry:t.reload}),e==="points"&&(n.inviteState!=="hidden"||i)&&o(tg,{data:n,update:r,redeemEnabled:i,onRedeemed:t.reload})]})}var gc=e=>({dailyLimit:e.dailyLimit,dailyRemaining:e.dailyRemaining,weeklyLimit:e.weeklyLimit,weeklyRemaining:e.weeklyRemaining});function Km(e,t){if(typeof e?.showResetCardCeremony!="function")return!1;try{return e.showResetCardCeremony(t),!0}catch{return!1}}function Jm(e){let{t,locale:n,ctx:r}=ae(),a=e.data.quota,i=ao(a.dailyRemaining,a.dailyLimit),s=ao(a.weeklyRemaining,a.weeklyLimit),l=Il(a.weeklyResetAt,n),c=Math.max(0,Ce(a.resetCards)??0),d=Ce(a.resetCardPricePoints)??100,g=ue(),p=ue(),[u,m]=A(null),[f,v]=A("1"),x=/^\d+$/.test(f.trim())?Number(f.trim()):NaN,w=Number.isInteger(x)&&x>=1&&x<=50,z=w?x*d:null,k=e.data.balance,M=z!==null&&k!==null&&k<z,L=()=>void g.run(async()=>{let Q={daily:i,weekly:s},ee=gc(a);m(null);let S=se(),E=await Ir(S.accountUseResetCard?()=>S.accountUseResetCard("both"):null,()=>ne("/token-quota/reset-card/use",{method:"POST",body:{type:"both"}}));if(!E.ok)return e.onFailed(),De(E);let O=E.data?.quota,I=Ce(E.data?.resetCards);return e.update(te=>({...te,quota:{...te.quota,...O??{},resetCards:I??te.quota.resetCards}})),O&&!Km(r.app,{before:ee,after:gc(O),remainingCards:I??void 0})&&m({before:Q,after:{daily:ao(O.dailyRemaining,O.dailyLimit),weekly:ao(O.weeklyRemaining,O.weeklyLimit)},cards:I}),{success:{key:"card.used"}}}),H=()=>void p.run(async()=>{if(!w)return{error:{key:"err.invalidCount"}};let Q=await ne("/points/exchange-reset-cards",{method:"POST",body:{count:x,expectedPricePerCard:d}});return Q.ok?(e.update(ee=>({...ee,quota:{...ee.quota,resetCards:Ce(Q.data?.resetCards)??ee.quota.resetCards},balance:Ce(Q.data?.newPointsBalance)??ee.balance})),v("1"),{success:{key:"card.exchanged",vars:{n:Ce(Q.data?.cardsGranted)??x}}}):(e.onFailed(),De(Q))}),V=Q=>Q.unlimited?t("common.unlimited"):Q.text;return o(xe,{icon:"gauge",title:t("quota.ai.title"),desc:t("quota.ai.desc"),children:[o("div",{class:"fx-quota-list fx-block",children:[o(Zo,{label:t("common.today"),display:i,note:i.unlimited?null:t("quota.resetDaily")}),o(Zo,{label:t("common.thisWeek"),display:s,note:s.unlimited||!l?null:t("quota.resetWeekly",{date:l})})]}),o(qe,{label:t("card.title"),desc:t("card.desc"),children:[o("span",{class:"fx-value","data-testid":"reset-card-count",children:t("card.owned",{n:c})}),o(Gt,{label:t("card.use"),confirmLabel:t("card.useConfirm"),pending:g.pending,disabled:c<=0,onConfirm:L})]}),c<=0&&!g.success&&o(Me,{children:o(de,{children:t("card.noneHint")})}),(g.error||g.success)&&o(Me,{children:[o(pe,{a:g}),g.success&&u&&o("div",{class:"fx-ceremony",role:"status",children:[o("span",{children:[t("common.today")," ",o("b",{children:V(u.before.daily)})," \u2192 ",o("b",{children:V(u.after.daily)})]}),o("span",{children:[t("common.thisWeek")," ",o("b",{children:V(u.before.weekly)})," \u2192 ",o("b",{children:V(u.after.weekly)})]}),u.cards!==null&&o("span",{class:"fx-muted",children:t("card.left",{n:u.cards})})]})]}),o(qe,{label:t("card.exchange"),desc:t("card.price",{price:Pe(d,n)}),class:"fx-row--wide",children:[o("input",{class:"fx-input fx-input--count",type:"number",inputMode:"numeric",min:1,max:50,step:1,value:f,"aria-label":t("card.count"),onInput:Q=>{v(Q.currentTarget.value),p.clear()}}),o("span",{class:"fx-muted fx-cost",children:z!==null?t("card.cost",{cost:Pe(z,n)}):t("card.countHint")}),o(Gt,{label:t("card.exchangeButton"),confirmLabel:t("card.exchangeConfirm",{cost:z!==null?Pe(z,n):"\u2014"}),pending:p.pending,disabled:!w||M,onConfirm:H})]}),(M||p.error||p.success)&&o(Me,{children:[M&&!p.error&&o(de,{tone:"warn",children:t("err.insufficientPoints")}),o(pe,{a:p})]})]})}function Ym(e,t,n){let r=ue(),[a,i]=A(null);return{checked:a??e,toggle:l=>{i(l),r.run(async()=>{let c=await t(l);if(i(null),!c.ok)return De(c);n(l)})},action:r}}function Zm(e){let{t,locale:n}=ae(),r=ue(),a=()=>void r.run(async()=>await On("credits")?void 0:{error:{key:"err.openFailed"}});return o(xe,{icon:"coins",title:t("points.title"),desc:t("points.desc"),actions:e.payment?o(q,{variant:"primary",pending:r.pending,onClick:a,children:t("points.recharge")}):void 0,children:[o(qe,{label:t("points.balance"),children:e.data.balance!==null?o("span",{class:"fx-big","data-testid":"points-balance",children:Pe(e.data.balance,n)}):o("span",{class:"fx-value is-empty",children:[t("points.balanceFailed")," ",o("button",{type:"button",class:"fx-link",onClick:e.onRetry,children:t("common.retry")})]})}),r.error&&o(Me,{children:o(pe,{a:r})})]})}var Qm=[5,10,20];function eg(e){let{t}=ae(),{bg:n}=e,r=ao(n.dailyRemaining,n.dailyLimit),a=ao(n.weeklyRemaining,n.weeklyLimit),i=ue(),[s,l]=A(null),c=Ym(!!n.autoMain,g=>{let p=se();return Ir(p.accountBgAutoMain?()=>p.accountBgAutoMain(g):null,()=>ne("/token-quota/background/auto-main",{method:"POST",body:{enabled:g}}))},g=>e.update(p=>({...p,quota:{...p.quota,background:{...p.quota.background??{},autoMain:g}}}))),d=g=>{l(g),i.run(async()=>{let p=se(),u=await Ir(p.accountBgConvert?()=>p.accountBgConvert(g):null,()=>ne("/token-quota/background/convert",{method:"POST",body:{percent:g}}));if(l(null),!u.ok)return De(u);let m=u.data?.quota;return m&&e.update(v=>({...v,quota:{...v.quota,...m,resetCards:v.quota.resetCards,resetCardPricePoints:v.quota.resetCardPricePoints}})),{success:{key:"bg.converted",vars:{pct:g}}}})};return o(xe,{icon:"clock",title:t("bg.title"),desc:t("bg.desc"),children:[o("div",{class:"fx-quota-list fx-block",children:[o(Zo,{label:t("common.today"),display:r}),o(Zo,{label:t("common.thisWeek"),display:a})]}),o(qe,{label:t("bg.autoMain"),desc:t("bg.autoMainDesc"),children:o(Zt,{checked:c.checked,disabled:c.action.pending,label:t("bg.autoMain"),onChange:c.toggle})}),o(qe,{label:t("bg.convert"),desc:t("bg.convertDesc"),class:"fx-row--wide",children:Qm.map(g=>o(Gt,{label:`${g}%`,confirmLabel:t("bg.convertConfirm",{pct:g}),pending:i.pending&&s===g,disabled:i.pending&&s!==g,onConfirm:()=>d(g)},g))}),(i.error||i.success||c.action.error)&&o(Me,{children:[o(pe,{a:c.action}),o(pe,{a:i})]})]})}function tg(e){let{t,locale:n}=ae(),{invite:r,inviteState:a}=e.data,[i,s]=A(null),[l,c]=A(""),[d,g]=A(""),p=ue(),u=ue(),m=ue();oe(()=>{let z=!0;return se().authStatus?.().then(k=>{z&&s(k?.cloudUrl?k.cloudUrl.replace(/\/+$/,""):null)}).catch(()=>{}),()=>{z=!1}},[]);let f=async()=>{let z=await ne("/invite/my-code");return e.update(k=>({...k,invite:z.ok?z.data:k.invite,inviteState:z.ok?"ok":z.status===404?"hidden":k.inviteState})),z},v=()=>void p.run(async()=>{let z=l.trim();if(!z)return{error:{key:"err.inviteEmpty"}};let k=await ne("/invite/claim",{method:"POST",body:{code:z}});return k.ok?(c(""),f(),{success:{key:"invite.claimed"}}):De(k)}),x=()=>void u.run(async()=>{let z=d.trim();if(!z)return{error:{key:"err.redeemEmpty"}};let k=await ne("/redemption/redeem",{method:"POST",body:{code:z}});if(!k.ok)return De(k);g(""),e.onRedeemed();let M=[],L=Ce(k.data?.creditsAmount);L&&M.push(t("redeem.gotPoints",{n:Pe(L,n)})),k.data?.membershipPlanId&&M.push(t("redeem.gotMembership"));for(let H of Array.isArray(k.data?.items)?k.data.items:[]){let V=(n==="zh"?H?.label?.zh:H?.label?.en)||H?.label?.zh||H?.label?.en||H?.kind;V&&M.push(V)}return{success:M.length?{key:"redeem.successWith",vars:{what:M.join(n==="zh"?"\u3001":", ")}}:{key:"redeem.success"}}}),w=r?.code&&i?`${i}/auth?invite=${encodeURIComponent(r.code)}`:"";return o(xe,{icon:"gift",title:t("invite.title"),desc:t("invite.desc"),children:[a==="ok"&&r?.code&&o(qe,{label:t("invite.myCode"),desc:t("invite.count",{n:Pe(Ce(r.invitedCount)??0,n)}),class:"fx-row--wide",children:[o("code",{class:"fx-code","data-testid":"invite-code",children:r.code}),o(_t,{text:r.code,label:t("invite.copyCode")}),o(_t,{text:w,label:t("invite.copyLink"),disabled:!w})]}),a==="failed"&&o(Me,{children:o(de,{tone:"warn",children:[t("invite.loadFailed")," ",o("button",{type:"button",class:"fx-link",disabled:m.pending,onClick:()=>void m.run(async()=>{await f()}),children:t("common.retry")})]})}),a==="ok"&&r?.claim?.eligible&&o(qe,{label:t("invite.claim"),desc:t("invite.claimDesc"),class:"fx-row--wide",children:o("form",{class:"fx-inline",onSubmit:z=>{z.preventDefault(),v()},children:[o("input",{class:"fx-input",value:l,placeholder:t("invite.claimPlaceholder"),"aria-label":t("invite.claim"),onInput:z=>c(z.currentTarget.value)}),o(q,{submit:!0,pending:p.pending,children:t("invite.claimSubmit")})]})}),(p.error||p.success)&&o(Me,{children:o(pe,{a:p})}),e.redeemEnabled&&o(qe,{label:t("redeem.title"),desc:t("redeem.desc"),class:"fx-row--wide",children:o("form",{class:"fx-inline",onSubmit:z=>{z.preventDefault(),x()},children:[o("input",{class:"fx-input",value:d,placeholder:t("redeem.placeholder"),"aria-label":t("redeem.title"),onInput:z=>g(z.currentTarget.value)}),o(q,{submit:!0,pending:u.pending,children:t("redeem.submit")})]})}),(u.error||u.success)&&o(Me,{children:o(pe,{a:u})})]})}function ng(e){let t=[],n,r=new Map;for(let a of e)if(a.itemType==="reset_card")n||(n={id:"reset_card",items:[],resetCard:!0},t.push(n)),n.items.push(a);else if(a.itemType==="custom_item"&&a.itemDefinition?.stackable){let i=`${a.productId||a.id}:${JSON.stringify(a.itemDefinition)}`,s=r.get(i);s||(s={id:`custom:${i}`,items:[],resetCard:!1},r.set(i,s),t.push(s)),s.items.push(a)}else t.push({id:a.id,items:[a],resetCard:!1});return t}function yc(){let e=Oe(()=>ne("/shop/inventory"));return e.state==="loading"?o(Ie,{panels:1,rows:4}):e.state==="signedOut"?o(Be,{}):e.state==="error"?o($e,{error:e.error,onRetry:e.retry}):o(og,{items:e.data??[],onRefresh:e.reload,onUsed:t=>{e.update(n=>n.filter(r=>r.id!==t.itemId)),e.reload()}})}function og(e){let{t,locale:n,goTo:r}=ae(),[a,i]=A(null),[s,l]=A(null),c=He(),d=ng(e.items),g=d.find(f=>f.id===a),p=Math.max(24,Math.ceil(d.length/6)*6)-d.length,u=f=>f.resetCard?t("card.title"):f.items[0].itemDefinition?.name[n]||f.items[0].displayName||t("backpack.item"),m=f=>{c.current&&(l(f),e.onUsed(f))};return o(xe,{icon:"backpack",title:t("page.backpack"),desc:t("backpack.desc"),actions:o(q,{onClick:e.onRefresh,children:[o(Y,{name:"refresh",size:13}),t("backpack.refresh")]}),children:o("div",{class:"fx-backpack fx-block",children:[o("div",{class:"fx-backpack-summary",children:[o("span",{children:t("backpack.total",{n:Pe(e.items.length,n)})}),r&&o("button",{class:"fx-link",type:"button",onClick:()=>r("quota"),children:t("backpack.getCards")})]}),s&&o("div",{class:`fx-backpack-used fx-backpack-${s.animation}`,role:"status",children:[o(Y,{name:"gift",size:20}),o("div",{children:[o("strong",{children:s.message[n]}),o("div",{children:s.effects.map(f=>xc(f,t,n)).join(" \xB7 ")})]})]},s.itemId),o("div",{class:"fx-backpack-layout",children:[o("div",{children:[o("div",{class:"fx-backpack-grid",role:"group","aria-label":t("backpack.grid"),children:[d.map(f=>{let v=u(f);return o("button",{type:"button",class:`fx-backpack-slot${f.resetCard?" is-card":""}`,"data-rarity":f.items[0].itemDefinition?.rarity,"aria-pressed":g?.id===f.id,"aria-label":t("backpack.slot",{name:v,n:f.items.length}),title:v,onClick:()=>i(f.id),children:[o("span",{class:"fx-backpack-icon",children:f.items[0].itemDefinition?.icon?o("span",{class:"fx-backpack-emoji",children:f.items[0].itemDefinition.icon}):o(Y,{name:f.resetCard?"card":"gift",size:30})}),o("span",{class:"fx-backpack-name",children:v}),(f.resetCard||f.items[0].itemDefinition?.stackable)&&o("span",{class:"fx-backpack-count",children:["\xD7",Pe(f.items.length,n)]})]},f.id)}),Array.from({length:p},(f,v)=>o("div",{class:"fx-backpack-slot is-empty","aria-hidden":"true"},`empty:${v}`))]}),!d.length&&o("p",{class:"fx-backpack-empty",children:t("backpack.empty")})]}),g?o(rg,{slot:g,name:u(g),onUsed:m},`${g.id}:${g.items[0].id}`):o("div",{class:"fx-backpack-detail fx-backpack-prompt",children:[o(Y,{name:"backpack",size:30}),o(de,{children:t(d.length?"backpack.select":"backpack.emptyHint")})]})]})]})})}function xc(e,t,n){return e.type==="points"?t("backpack.effect.points",{n:Pe(e.amount,n)}):e.type==="reset_card"?t("backpack.effect.cards",{n:Pe(e.count,n)}):t("backpack.effect.quota")}function rg(e){let{t,locale:n,goTo:r}=ae(),a=e.slot.items[0],[i,s]=A(null),l=ue(),c=ue(),[d,g]=A(!1),p=a.itemDefinition,u=He(),m=a.source==="points"?t("backpack.source.points"):a.source==="admin"?t("backpack.source.admin"):a.source==="reward"?t("backpack.source.reward"):t("backpack.source.other"),f=()=>void l.run(async()=>{let x=await ne(`/shop/inventory/${encodeURIComponent(a.id)}`);if(u.current){if(!x.ok)return De(x);s(x.data)}}),v=()=>void c.run(async()=>{let x=await ne(`/shop/inventory/${encodeURIComponent(a.id)}/use`,{method:"POST"});if(!x.ok)return De(x);e.onUsed(x.data)});return o("section",{class:"fx-backpack-detail","aria-label":t("backpack.details"),children:[o("span",{class:`fx-backpack-detail-icon${e.slot.resetCard?" is-card":""}`,children:p?.icon?o("span",{class:"fx-backpack-emoji",children:p.icon}):o(Y,{name:e.slot.resetCard?"card":"gift",size:32})}),o("h3",{children:e.name}),o("span",{class:"fx-tag",children:[t(e.slot.resetCard||p?.use?"backpack.consumable":p?"backpack.collectible":"backpack.voucher"),p&&` \xB7 ${t(`backpack.rarity.${p.rarity}`)}`]}),o("dl",{class:"fx-backpack-facts",children:[o("div",{children:[o("dt",{children:t("backpack.quantity")}),o("dd",{children:Pe(e.slot.items.length,n)})]}),o("div",{children:[o("dt",{children:t("backpack.acquired")}),o("dd",{children:an(a.acquiredAt,n)})]}),!e.slot.resetCard&&o("div",{children:[o("dt",{children:t("backpack.source")}),o("dd",{children:m})]})]}),p?o(N,{children:[p.description&&o(de,{children:p.description[n]}),p.use&&o(N,{children:[o("div",{class:"fx-backpack-effects",children:p.use.effects.map((x,w)=>o("div",{children:xc(x,t,n)},w))}),d?o(N,{children:[o(de,{children:t("backpack.consumeConfirm")}),o("div",{class:"fx-backpack-use-actions",children:[o(q,{variant:"primary",pending:c.pending,onClick:v,children:t("backpack.confirmUse")}),o(q,{disabled:c.pending,onClick:()=>g(!1),children:t("common.cancel")})]})]}):o(q,{variant:"primary",onClick:()=>g(!0),children:p.use.label?.[n]||t("backpack.use")}),o(pe,{a:c,captchaSection:"backpack"})]})]}):e.slot.resetCard?o(N,{children:[o(de,{children:t("card.desc")}),r&&o(q,{variant:"primary",onClick:()=>r("quota"),children:t("backpack.manageCards")})]}):i?o("div",{class:"fx-backpack-reveal",children:[i.codeName&&o("div",{class:"fx-muted",children:i.codeName}),i.key?o(N,{children:[o("code",{children:i.key}),o(_t,{text:i.key,label:t("backpack.copyKey")})]}):o(de,{children:t("backpack.noKey")})]}):o(q,{pending:l.pending,onClick:f,children:[o(Y,{name:"key",size:14}),t("backpack.reveal")]}),o(pe,{a:l,captchaSection:"backpack"})]})}var ag=/^1[3-9]\d{9}$|^\+[1-9]\d{6,14}$/,ig=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,kc=(e,t)=>e==="phone"?ag.test(t):ig.test(t),Qo=(e,t)=>e==="phone"?Nr(t):Or(t);function zc(){let e=Oe(()=>ne("/auth/me"));if(e.state==="loading")return o(Ie,{panels:3,rows:2});if(e.state==="signedOut")return o(Be,{});if(e.state==="error")return o($e,{error:e.error,onRetry:e.retry});let t=e.data;return o(N,{children:[o(sg,{me:t,onBound:(n,r)=>e.update(a=>({...a,[n]:r}))}),o(dg,{me:t}),o(fg,{}),o(mg,{me:t})]})}function si(){let e=Ml(),t=ue();return{cd:e,a:t,send:(a,i,s)=>t.run(async()=>{let l=await ne("/auth/send-code",{method:"POST",body:{target:a,type:i,purpose:s}});return l.ok?(e.start(60),{success:{key:"sec.codeSent"}}):De(l)}),reset:()=>{e.stop(),t.clear()}}}function sg(e){let{t}=ae(),[n,r]=A(null),[a,i]=A(null);return o(xe,{icon:"key",title:t("sec.methods.title"),desc:t("sec.methods.desc"),children:["phone","email"].map(s=>{let l=e.me[s];return o(N,{children:[o(qe,{label:t(s==="phone"?"account.contact.phone":"account.contact.email"),desc:l?Qo(s,l):t("account.contact.unbound"),children:o(q,{onClick:()=>{i(null),r(n===s?null:s)},children:t(n===s?"common.cancel":l?"sec.change":"sec.bind")})}),n===s&&o(lg,{kind:s,current:l??null,onDone:c=>{e.onBound(s,c),r(null),i(s)}}),a===s&&n!==s&&o(Me,{children:o("div",{class:"fx-msg is-ok",role:"status",children:t(s==="phone"?"sec.phoneBound":"sec.emailBound")})})]},s)})})}function lg(e){let{t}=ae(),{kind:n}=e,[r,a]=A(""),[i,s]=A(""),l=si(),c=ue(),d=r.trim(),g=n==="phone"?"err.phoneInvalid":"err.emailInvalid",p=()=>{if(!kc(n,d)){l.a.run(async()=>({error:{key:g}}));return}l.send(d,n,"bind")},u=()=>void c.run(async()=>{if(!kc(n,d))return{error:{key:g}};if(!i.trim())return{error:{key:"err.codeRequired"}};let m=n==="phone"?{phone:d,verification_code:i.trim()}:{email:d,verification_code:i.trim()},f=await ne(n==="phone"?"/auth/bind-phone":"/auth/bind-email",{method:"POST",body:m});if(!f.ok)return De(f);e.onDone(d)});return o(Me,{class:"fx-form",children:[o("label",{class:"fx-field",children:[o("span",{children:e.current?t(n==="phone"?"sec.newPhone":"sec.newEmail"):t(n==="phone"?"sec.phone":"sec.email")}),o("input",{class:"fx-input",type:n==="phone"?"tel":"email",value:r,autoComplete:"off",placeholder:t(n==="phone"?"sec.phonePlaceholder":"sec.emailPlaceholder"),onInput:m=>a(m.currentTarget.value)})]}),o(li,{code:i,setCode:s,sender:l,onSend:p}),o("div",{class:"fx-inline",children:o(q,{variant:"primary",pending:c.pending,onClick:u,children:t("sec.bindSubmit")})}),o(pe,{a:c})]})}function li(e){let{t}=ae(),{cd:n,a:r}=e.sender;return o("div",{class:"fx-field",children:[o("span",{children:e.label??t("sec.code")}),o("div",{class:"fx-inline",children:[o("input",{class:"fx-input fx-input--code",inputMode:"numeric",autoComplete:"one-time-code",value:e.code,placeholder:t("sec.codePlaceholder"),"aria-label":e.label??t("sec.code"),onInput:a=>e.setCode(a.currentTarget.value)}),o(q,{pending:r.pending,disabled:n.left>0||e.disabled,onClick:e.onSend,children:n.left>0?t("sec.resendIn",{s:n.left}):t("sec.sendCode")})]}),o(pe,{a:r})]})}function cg(e){let{t}=ae(),n=Cl(e.value),r=e.value.length>0,a=[[n.length,t("pw.req.length",{min:8,max:64})],[n.lower,t("pw.req.lower")],[n.upper,t("pw.req.upper")],[n.special,t("pw.req.special")],[n.space,t("pw.req.space")]];return o("ul",{class:"fx-rules","aria-label":t("pw.rulesLabel"),children:a.map(([i,s])=>o("li",{class:i?"is-ok":r?"is-bad":"",children:[i?o(Y,{name:"check",size:11}):r?o(Y,{name:"x",size:11}):o("span",{class:"fx-rule-dot","aria-hidden":"true"}),o("span",{children:s})]},s))})}function Sc(e,t){let n=_l(e);return n.ok?e!==t?{error:{key:"pw.mismatch"}}:null:{error:{key:qa[n.rule]}}}function dg(e){let{t}=ae(),n=["phone","email"].filter(l=>!!e.me[l]),[r,a]=A("current"),[i,s]=A(!1);return o(xe,{icon:"shield",title:t("pw.title"),desc:t("pw.desc",{min:8,max:64}),actions:o(q,{onClick:()=>s(!i),children:t(i?"common.cancel":"pw.change")}),children:i&&o(Me,{class:"fx-form",children:[o(St,{label:t("pw.modeLabel"),value:r,onChange:a,options:[{value:"current",label:t("pw.mode.current")},{value:"code",label:t("pw.mode.code")}]}),r==="current"?o(ug,{onDone:()=>s(!1)}):n.length?o(pg,{me:e.me,targets:n,onDone:()=>s(!1)}):o(de,{children:t("pw.codeNeedsContact")})]})})}function _c(e){let{t}=ae();return o(N,{children:[o("label",{class:"fx-field",children:[o("span",{children:t("pw.new")}),o("input",{class:"fx-input",type:"password",autoComplete:"new-password",value:e.pw,maxLength:72,onInput:n=>e.setPw(n.currentTarget.value)})]}),o(cg,{value:e.pw}),o("label",{class:"fx-field",children:[o("span",{children:t("pw.confirm")}),o("input",{class:"fx-input",type:"password",autoComplete:"new-password",value:e.confirm,onInput:n=>e.setConfirm(n.currentTarget.value)})]})]})}function ug(e){let{t}=ae(),[n,r]=A(""),[a,i]=A(""),[s,l]=A(""),c=ue(),[d,g]=A(!1),p=()=>void c.run(async()=>{if(!n)return{error:{key:"pw.currentRequired"}};let u=Sc(a,s);if(u)return u;let m=await ne("/auth/password",{method:"PUT",body:{currentPassword:n,newPassword:a}});return m.ok?(r(""),i(""),l(""),g(!0),{success:{key:"pw.changed"}}):m.status===404?{error:{key:"pw.noPasswordYet"}}:De(m)});return o(N,{children:[o("label",{class:"fx-field",children:[o("span",{children:t("pw.current")}),o("input",{class:"fx-input",type:"password",autoComplete:"current-password",value:n,onInput:u=>r(u.currentTarget.value)})]}),o(_c,{pw:a,setPw:i,confirm:s,setConfirm:l}),o("div",{class:"fx-inline",children:[o(q,{variant:"primary",pending:c.pending,onClick:p,children:t("pw.submit")}),d&&o(q,{onClick:e.onDone,children:t("common.done")})]}),o(pe,{a:c})]})}function pg(e){let{t}=ae(),[n,r]=A(e.targets[0]),[a,i]=A(""),[s,l]=A(""),[c,d]=A(""),g=si(),p=ue(),[u,m]=A(!1),f=e.me[n]||"",v=()=>void p.run(async()=>{if(!a.trim())return{error:{key:"err.codeRequired"}};let x=Sc(s,c);if(x)return x;let w=n==="phone"?{phone:f,code:a.trim(),newPassword:s}:{email:f,code:a.trim(),newPassword:s},z=await ne("/auth/reset-password",{method:"POST",body:w});return z.ok?(i(""),l(""),d(""),m(!0),{success:{key:"pw.changed"}}):De(z)});return o(N,{children:[e.targets.length>1?o(St,{label:t("pw.via"),value:n,onChange:x=>{r(x),i(""),g.reset()},options:e.targets.map(x=>({value:x,label:Qo(x,e.me[x])}))}):o(de,{children:t("pw.codeTo",{target:Qo(n,f)})}),o(li,{code:a,setCode:i,sender:g,onSend:()=>void g.send(f,n,"reset_password")}),o(_c,{pw:s,setPw:l,confirm:c,setConfirm:d}),o("div",{class:"fx-inline",children:[o(q,{variant:"primary",pending:p.pending,onClick:v,children:t("pw.submitReset")}),u&&o(q,{onClick:e.onDone,children:t("common.done")})]}),o(pe,{a:p})]})}function fg(){let{t:e}=ae(),t=ue(),n=()=>void t.run(async()=>{let r=await ne("/auth/logout-all",{method:"POST"});if(!r.ok)return De(r);try{await se().forsionLogout?.()}catch(a){return{error:{raw:Yt(a)}}}return{success:{key:"sec.logoutAllDone"}}});return o(xe,{icon:"laptop",title:e("sec.devices.title"),desc:e("sec.devices.desc"),children:[o(qe,{label:e("sec.logoutAll"),desc:e("sec.logoutAllDesc"),children:o(Gt,{label:e("sec.logoutAll"),confirmLabel:e("sec.logoutAllConfirm"),pending:t.pending,onConfirm:n})}),(t.error||t.success)&&o(Me,{children:o(pe,{a:t})})]})}function mg(e){let{t}=ae(),n=["phone","email"].filter(w=>!!e.me[w]),[r,a]=A(!1),[i,s]=A(n.length?"code":"password"),[l,c]=A(n[0]??null),[d,g]=A(""),[p,u]=A(""),m=si(),f=ue(),v=l&&e.me[l]||"",x=()=>void f.run(async()=>{if(i==="code"&&!d.trim())return{error:{key:"err.codeRequired"}};if(i==="password"&&!p)return{error:{key:"pw.currentRequired"}};let w=await ne("/auth/delete-account",{method:"POST",body:i==="code"?{verification_code:d.trim()}:{password:p}});if(!w.ok)return De(w);try{await se().forsionLogout?.()}catch{}return{success:{key:"del.done"}}});return o(xe,{icon:"alert",danger:!0,title:t("del.title"),desc:t("del.desc"),actions:o(q,{variant:"danger",onClick:()=>{a(!r),f.clear()},children:t(r?"common.cancel":"del.start")}),children:r&&o(Me,{class:"fx-form",children:[o(de,{tone:"error",children:t("del.warn")}),n.length>0&&o(St,{label:t("del.methodLabel"),value:i,onChange:s,options:[{value:"code",label:t("del.byCode")},{value:"password",label:t("del.byPassword")}]}),i==="code"&&l?o(N,{children:[n.length>1&&o(St,{label:t("pw.via"),value:l,onChange:w=>{c(w),g(""),m.reset()},options:n.map(w=>({value:w,label:Qo(w,e.me[w])}))}),o(li,{code:d,setCode:g,sender:m,label:t("del.codeLabel",{target:Qo(l,v)}),onSend:()=>void m.send(v,l,"delete_account")})]}):o("label",{class:"fx-field",children:[o("span",{children:t("del.passwordLabel")}),o("input",{class:"fx-input",type:"password",autoComplete:"current-password",value:p,onInput:w=>u(w.currentTarget.value)})]}),o("div",{class:"fx-inline",children:o(Gt,{variant:"danger",label:t("del.submit"),confirmLabel:t("del.confirm"),pending:f.pending,onConfirm:x})}),o(pe,{a:f})]})})}var Tc=20;function Ac(){let e=Oe(async()=>{let[t,n]=await Promise.all([ne("/token-quota/my"),ne(`/token-quota/my/logs?limit=${Tc}&offset=0`)]);if(!t.ok)return t;let r=n.ok&&Array.isArray(n.data?.logs)?n.data.logs:null;return{ok:!0,status:t.status,data:{dailyLimit:Ce(t.data?.dailyLimit),logs:r,total:n.ok?Ce(n.data?.total)??r?.length??0:0,logsFail:n.ok?null:n}}});return e.state==="loading"?o(Ie,{panels:3,rows:2}):e.state==="signedOut"?o(Be,{}):e.state==="error"?o($e,{error:e.error,onRetry:e.retry}):o(N,{children:[o(gg,{dailyLimit:e.data.dailyLimit}),o(bg,{base:e.data,onRetry:e.reload})]})}function gg(e){let{t,locale:n}=ae(),[r,a]=A(30),[i,s]=A({state:"loading"}),[l,c]=A(!1),[d,g]=A(0),p=ce(0);oe(()=>{let k=++p.current;return c(!0),ne(`/usage/stats?days=${r}`).then(M=>{k===p.current&&(c(!1),s(M.ok?{state:"ready",data:M.data??{}}:{state:"error",fail:M}))}),()=>{p.current++}},[r,d]);let u=e.dailyLimit!==null&&e.dailyLimit<0?"usage.unlimitedNote":Ur(1,e.dailyLimit)===null?"usage.noLimitNote":null,m=k=>Ur(k,e.dailyLimit)??"\u2014",f=o(St,{label:t("usage.range"),value:r,onChange:a,options:[{value:7,label:t("usage.days",{n:7})},{value:30,label:t("usage.days",{n:30})},{value:90,label:t("usage.days",{n:90})}]}),v=i.state==="ready"?i.data:null,x=(v?.byModel??[]).filter(Boolean),w=(v?.byProject??[]).filter(Boolean),z=Ce(v?.successRate);return o(N,{children:[o(xe,{icon:"chart",title:t("usage.overview.title"),desc:t("usage.overview.desc"),actions:f,children:[i.state==="error"?o("div",{class:"fx-sub",children:o("div",{class:"fx-msg is-error",role:"alert",children:[o("span",{children:Wt(Bt(i.fail),t)}),o("button",{type:"button",class:"fx-link",onClick:()=>g(k=>k+1),children:t("common.retry")})]})}):o("div",{class:`fx-stats fx-block${l&&v?" is-refreshing":""}`,"aria-busy":l||void 0,children:[o(ci,{label:t("usage.requests"),value:v?Pe(Ce(v.totalRequests)??0,n):null,testId:"usage-requests"}),o(ci,{label:t("usage.successRate"),value:v?z===null?"\u2014":`${z.toFixed(1)}%`:null}),o(ci,{label:t("usage.consumption"),value:v?m(v.totalPointsCost):null,sub:t("usage.ofToday"),testId:"usage-consumption"})]}),u&&o("div",{class:"fx-sub fx-sub--tight",children:o(de,{children:t(u)})})]}),i.state!=="error"&&o(N,{children:[o(xe,{icon:"gauge",title:t("usage.byModel.title"),desc:t("usage.byModel.desc"),children:o(Cc,{loading:!v,empty:t("usage.empty"),head:[t("usage.col.model"),t("usage.col.requests"),t("usage.col.consumption")],rows:x.map(k=>[k.modelName||k.modelId||"\u2014",Pe(Ce(k.count)??0,n),m(k.pointsCost)])})}),o(xe,{icon:"laptop",title:t("usage.byApp.title"),desc:t("usage.byApp.desc"),children:o(Cc,{loading:!v,empty:t("usage.empty"),head:[t("usage.col.app"),t("usage.col.requests"),t("usage.col.consumption")],rows:w.map(k=>[Ec(k.projectSource,t("usage.appUnknown")),Pe(Ce(k.count)??0,n),m(k.pointsCost)])})})]})]})}var hg={tangu:"Tangu","ai-studio":"Forsion AI Studio",desktop:"Forsion Desktop",amadeus:"Amadeus",notebase:"Notebase",calendar:"Forsion Calendar",chat:"Forsion Chat",desk:"Forsion Desk","photo-studio":"Photo Studio",connect:"Forsion Connect"},Ec=(e,t)=>!e||e==="unknown"?t:hg[e]??e;function ci(e){return o("div",{class:"fx-stat",children:[o("span",{class:"fx-stat-label",children:e.label}),e.value===null?o("span",{class:"fx-skel fx-skel--stat"}):o("strong",{class:"fx-stat-value","data-testid":e.testId,children:e.value}),e.sub&&o("span",{class:"fx-stat-sub",children:e.sub})]})}function Cc(e){return e.loading?o("div",{class:"fx-sub",children:[o("span",{class:"fx-skel fx-skel--row"}),o("span",{class:"fx-skel fx-skel--row"})]}):e.rows.length?o("div",{class:"fx-table-wrap fx-block",children:o("table",{class:"fx-table",children:[o("thead",{children:o("tr",{children:e.head.map((t,n)=>o("th",{class:n?"is-num":"",children:t},n))})}),o("tbody",{children:e.rows.map((t,n)=>o("tr",{children:t.map((r,a)=>o("td",{class:a?"is-num":"",children:r},a))},n))})]})}):o(dt,{children:e.empty})}function bg(e){let{t,locale:n}=ae(),r=He(),[a,i]=A(e.base.logs??[]),[s,l]=A(e.base.total),c=ue();oe(()=>{i(e.base.logs??[]),l(e.base.total)},[e.base]);let d=()=>void c.run(async()=>{let p=await ne(`/token-quota/my/logs?limit=${Tc}&offset=${a.length}`);if(!p.ok)return{error:Bt(p)};let u=Array.isArray(p.data?.logs)?p.data.logs:[];r.current&&(i(m=>[...m,...u]),l(m=>u.length?Ce(p.data?.total)??m:a.length))}),g=e.base.dailyLimit;return o(xe,{icon:"clock",title:t("usage.recent.title"),desc:t("usage.recent.desc"),children:[e.base.logsFail?o("div",{class:"fx-sub",children:o("div",{class:"fx-msg is-error",role:"alert",children:[o("span",{children:Wt(Bt(e.base.logsFail),t)}),o("button",{type:"button",class:"fx-link",onClick:e.onRetry,children:t("common.retry")})]})}):a.length===0?o(dt,{children:t("usage.recentEmpty")}):o("div",{class:"fx-list fx-block",role:"list",children:a.map((p,u)=>o("div",{class:"fx-list-row",role:"listitem",children:[o("span",{class:"fx-list-main",children:[o("strong",{children:[p.modelName||p.modelId||"\u2014",p.success===!1&&o("span",{class:"fx-tag fx-tag--danger",children:t("usage.failed")})]}),o("small",{children:[an(p.createdAt,n),Ec(p.projectSource,t("usage.appUnknown"))].join(" \xB7 ")})]}),o("span",{class:"fx-value",children:Ur(p.pointsCost,g)??"\u2014"})]},p.id??u))}),a.length>0&&o("div",{class:"settings-panel-footer fx-footer",children:[o("span",{class:"fx-muted",children:t("usage.shown",{shown:Pe(a.length,n),total:Pe(Math.max(s,a.length),n)})}),a.length<s&&o(q,{pending:c.pending,onClick:d,children:t("common.loadMore")})]}),c.error&&o("div",{class:"fx-sub fx-sub--tight",children:o(pe,{a:c})})]})}var Pc=["plugin","amadeus-plugin","skill","agent","space","theme"],vg=["zip","github","npm"],yg=["description","tags","minAppVersion","maxAppVersion","platforms"],xg=50*1024*1024,kg=new Set(["market_npm_invalid","market_npm_source","market_github_source","market_not_found","market_zip_required","market_zip_invalid","market_zip_too_large","market_version_required","market_version_invalid","market_version_mismatch","market_version_not_newer","market_icon_invalid","market_duplicate","market_update_pending","market_stale","market_requirements_invalid","market_requirements_mismatch","market_no_release","market_no_changes","market_dryrun_unsupported"]),wg=new Set(["no_manifest","type_mismatch","tag_version_mismatch","id_slug_mismatch","engine_slug_mismatch","no_entry","has_node_modules"]),Hr=e=>`sub.type.${e.replace("-","_")}`,Ic=e=>e==="approved"?"sub.approved":e==="rejected"?"sub.rejected":"sub.pending",di=e=>e==="github"?"GitHub":e==="npm"?"npm":"ZIP",zg=e=>e.status==="pending"||!!e.pendingUpdate,Mc=(e,t)=>t==="all"||(t==="pending"?zg(e):e.status===t),Sg=e=>e>=1024*1024?`${(e/1024/1024).toFixed(1)} MB`:`${Math.max(1,Math.round(e/1024))} KB`,Rc=e=>e.status==="approved"?"sub.updated":"sub.resubmitted";async function io(e){let t=se().cloudInvoke;if(!t)return{ok:!1,out:{error:{key:"err.unavailable"}},code:null,values:{}};let n=await t("cloud:marketSubmit",{...e.id?{id:e.id}:{},...e.dryRun?{dryRun:!0}:{},fields:e.fields,...e.zip?{zip:{name:e.zip.name,data:e.zip.data}}:{}}),r=Mr(n);if(r.ok)return{ok:!0,data:r.data};r.status===401&&se().authStatus?.().catch(()=>{});let a=Object.fromEntries(Object.entries(n?.json?.values||{}).filter(([,s])=>typeof s=="string"||typeof s=="number").map(([s,l])=>[s,String(l)]));return{ok:!1,out:r.code==="market_version_not_newer"&&a.version&&a.current?{error:{key:"sub.notNewer",vars:a}}:kg.has(r.code||"")?{error:{key:`sub.err.${r.code}`}}:De(r),code:r.code,values:a}}async function Lc(e){return e.size>xg?{error:{key:"sub.errLarge"}}:{name:e.name,size:e.size,data:new Uint8Array(await e.arrayBuffer())}}function _g(e,t){let n=[e?.minAppVersion&&`\u2265 ${e.minAppVersion}`,e?.maxAppVersion&&`< ${e.maxAppVersion}`].filter(Boolean).join(", "),r=[n&&`Forsion ${n}`,e?.platforms?.length?e.platforms.join(", "):""].filter(Boolean);return r.length?r.join(" \xB7 "):t("sub.reqNone")}function Dc({status:e}){let t=Ge();return o("span",{class:`fx-tag ${e==="approved"?"fx-status--resolved":e==="rejected"?"fx-tag--danger":"fx-tag--accent"}`,children:t(Ic(e))})}function Nc(e){let t=`${e.id}-${e.name}`;return o("label",{class:"fx-sub-field",for:t,children:[o("span",{children:e.label}),e.rows?o("textarea",{id:t,value:e.value,rows:e.rows,maxLength:2e5,onInput:n=>e.onInput(n.currentTarget.value)}):o("input",{id:t,value:e.value,placeholder:e.placeholder,maxLength:e.name==="summary"?2e3:500,onInput:n=>e.onInput(n.currentTarget.value)})]})}function Oc({id:e,file:t,disabled:n,onPick:r}){let a=Ge(),[i,s]=A(!1);oe(()=>{let c=()=>s(!1);return window.addEventListener("dragend",c),window.addEventListener("drop",c,!0),window.addEventListener("blur",c),()=>{window.removeEventListener("dragend",c),window.removeEventListener("drop",c,!0),window.removeEventListener("blur",c)}},[]);let l=c=>{c&&!n&&r(c)};return o("label",{class:`fx-sub-drop${i?" is-over":""}${t?" is-filled":""}`,for:`${e}-zip`,onDragOver:c=>{c.preventDefault(),n||s(!0)},onDragLeave:()=>s(!1),onDrop:c=>{c.preventDefault(),s(!1),l(c.dataTransfer?.files?.[0])},children:[o(Y,{name:t?"box":"upload",size:18}),o("span",{class:"fx-sub-drop-text",children:[o("strong",{children:t?t.name:a("sub.dropTitle")}),o("small",{children:t?a("sub.dropReplace",{size:Sg(t.size)}):a("sub.dropHint")})]}),o("input",{id:`${e}-zip`,class:"fx-sub-file",type:"file",accept:".zip,application/zip",disabled:n,onChange:c=>{l(c.currentTarget.files?.[0]),c.currentTarget.value=""}})]})}function Bc({check:e,update:t}){let n=Ge(),r=e.manifest,a=[r?[!0,"sub.checkType",`${n(Hr(r.type))} \xB7 ${r.file}`]:[!1,"sub.checkType",n("sub.warn.no_manifest")],...e.version?[[!0,"sub.checkVersion",e.current?`v${e.current} \u2192 v${e.version}`:`v${e.version}`]]:[],[!0,"sub.checkIcon",n(e.icon?"sub.iconYes":"sub.iconNo")],[!0,"sub.checkReadme",n(e.readme?"sub.readmeYes":t?"sub.readmeKeep":"sub.readmeNo")],[!0,"sub.checkReq",_g(e.metadata,n)],...(e.warnings||[]).filter(i=>i!=="no_manifest"&&wg.has(i)).map(i=>[!1,"sub.checkWarn",n(`sub.warn.${i}`)])];return o("ul",{class:"fx-sub-checks",children:a.map(([i,s,l])=>o("li",{class:i?"is-ok":"is-warn",children:[o(Y,{name:i?"check":"alert",size:14}),o("span",{class:"fx-sub-k",children:n(s)}),o("span",{children:l})]}))})}function Cg({item:e,checks:t,onDone:n}){let r=Ge(),a=Zn(),i=He(),s=ue(),[l,c]=A(null),[d,g]=A(null),p=m=>void s.run(async()=>{c(null),g(null);let f=await Lc(m);if(!i.current)return;if(!("data"in f))return f;if(c(f),!t)return;let v=await io({id:e.id,dryRun:!0,fields:{},zip:f});if(i.current){if(!v.ok)return v.out;g(v.data)}}),u=()=>void s.run(async()=>{if(!l)return;let m=await io({id:e.id,fields:{},zip:l});if(i.current){if(!m.ok)return m.out;n(Rc(e))}});return o(N,{children:[o(Oc,{id:a,file:l,disabled:s.pending,onPick:p}),d&&o(Bc,{check:d,update:!0}),d&&o(de,{children:r(e.status==="approved"?"sub.zipListedNote":"sub.zipUnlistedNote")}),l&&o("div",{class:"fx-sub-actions",children:[o(q,{variant:"primary",pending:s.pending,disabled:t&&!d,onClick:u,children:d?.version?r("sub.submitVersion",{version:d.version}):r("sub.submit")}),o(q,{disabled:s.pending,onClick:()=>{c(null),g(null),s.clear()},children:r("common.cancel")})]}),o(pe,{a:s,captchaSection:"submission"})]})}function Tg({item:e,onDone:t}){let n=Ge(),r=He(),a=ue(),[i,s]=A(null),[l,c]=A(null),d=()=>void a.run(async()=>{s(null),c(null);let u=await io({id:e.id,dryRun:!0,fields:{}});if(r.current){if(!u.ok){if(u.code==="market_version_not_newer"&&u.values.version){c(u.values);return}return u.out}s(u.data)}}),g=()=>void a.run(async()=>{let u=await io({id:e.id,fields:{}});if(r.current){if(!u.ok)return u.out;t(Rc(e))}}),p=e.source==="github"?e.githubRepoUrl:e.npmPackage;return o(N,{children:[!i&&o(q,{pending:a.pending,onClick:d,children:[o(Y,{name:"refresh",size:13}),n(l?"sub.checkAgain":"sub.checkNew")]}),l&&o(de,{children:n("sub.upToDate",{version:l.version,current:l.current||l.version})}),i&&o(N,{children:[o("div",{class:"fx-sub-upstream",children:[o(Y,{name:e.source==="github"?"link":"box",size:18}),o("span",{children:[o("strong",{children:n("sub.upstreamLatest",{version:i.version||""})}),o("small",{children:[p,i.tag&&n("sub.releaseTag",{tag:i.tag}),i.current&&n("sub.storeHas",{version:i.current})].filter(Boolean).join(" \xB7 ")})]})]}),o(de,{children:n(e.source==="github"?"sub.githubNote":"sub.npmNote",{version:i.version||""})}),o("div",{class:"fx-sub-actions",children:[o(q,{variant:"primary",pending:a.pending,onClick:g,children:n("sub.submitVersion",{version:i.version||""})}),o(q,{disabled:a.pending,onClick:()=>{s(null),a.clear()},children:n("common.cancel")})]})]}),o(pe,{a,captchaSection:"submission"})]})}function Ag({item:e,onDone:t}){let n=Ge(),r=Zn(),a=He(),i=ue(),s=()=>({name:e.name,summary:e.summary||"",description:e.description||"",tags:(e.tags||[]).join(", "),minAppVersion:e.minAppVersion||"",maxAppVersion:e.maxAppVersion||"",platforms:(e.platforms||[]).join(", ")}),[l,c]=A(s),[d,g]=A(new Set),[p,u]=A(!1),m=w=>z=>{c(k=>({...k,[w]:z})),g(k=>new Set([...k,w])),i.clear()},f=()=>void i.run(async()=>{if(!l.name.trim())return{error:{key:"sub.errName"}};if(!d.size)return{error:{key:"sub.err.market_no_changes"}};let w=await io({id:e.id,fields:{mode:"info",...Object.fromEntries([...d].map(z=>[z,l[z].trim()]))}});if(a.current){if(!w.ok)return w.out;u(!1),t(e.status==="approved"?"sub.infoSubmitted":"sub.resubmitted")}}),v=(w,z,k={})=>o(Nc,{id:r,name:w,label:n(z),value:l[w],onInput:m(w),...k}),x=n("sub.unset");return o("section",{class:"fx-sub-sec",children:[o("div",{class:"fx-sub-sec-bar",children:[o("h4",{children:n("sub.secInfo")}),!p&&o(q,{disabled:!!e.pendingUpdate,title:e.pendingUpdate?n("sub.err.market_update_pending"):void 0,onClick:()=>{c(s()),g(new Set),i.clear(),u(!0)},children:[o(Y,{name:"pencil",size:13}),n("sub.edit")]})]}),p?o("form",{class:"fx-sub-form fx-sub-form--inline",onSubmit:w=>{w.preventDefault(),f()},children:[o("fieldset",{disabled:i.pending,children:[o("div",{class:"fx-sub-columns",children:[v("name","sub.name"),v("tags","sub.tags",{placeholder:n("sub.tagsHint")})]}),v("summary","sub.summary"),v("description","sub.description",{rows:3}),o("div",{class:"fx-sub-columns",children:[v("minAppVersion","sub.minAppVersion",{placeholder:"2.13.0"}),v("maxAppVersion","sub.maxAppVersion",{placeholder:n("sub.optional")})]}),v("platforms","sub.platforms",{placeholder:"desktop, android, ios, web"}),o(de,{children:n("sub.requirementsHint")}),o(de,{children:n("sub.infoNote")})]}),o("div",{class:"fx-sub-actions",children:[o(q,{variant:"primary",pending:i.pending,submit:!0,children:n("sub.submitInfo")}),o(q,{disabled:i.pending,onClick:()=>{u(!1),i.clear()},children:n("common.cancel")})]}),o(pe,{a:i,captchaSection:"submission"})]}):o("dl",{class:"fx-sub-kv",children:[o("dt",{children:n("sub.summary")}),o("dd",{children:e.summary||x}),o("dt",{children:n("sub.description")}),o("dd",{class:"fx-sub-clamp",children:e.description||x}),o("dt",{children:n("sub.tags")}),o("dd",{children:e.tags?.length?e.tags.join(", "):x}),o("dt",{children:n("sub.minAppVersion")}),o("dd",{children:e.minAppVersion||x}),o("dt",{children:n("sub.maxAppVersion")}),o("dd",{children:e.maxAppVersion||x}),o("dt",{children:n("sub.platforms")}),o("dd",{children:e.platforms?.length?e.platforms.join(", "):x})]})]})}function Eg({item:e,checks:t,notice:n,onBack:r,onDone:a}){let i=Ge(),{locale:s}=ae(),l=e.pendingUpdate,c=e.rejectedUpdate;return o("div",{class:"fx-sub-detail","data-detail-id":e.id,children:[o("button",{type:"button",class:"btn sm ghost fx-sub-back",onClick:r,children:[o(Y,{name:"back",size:13}),i("sub.back")]}),o("div",{class:"fx-sub-dhead",children:[o("div",{class:"fx-sub-item-head",children:[o("strong",{children:e.name}),o(Dc,{status:e.status})]}),o("div",{class:"fx-sub-meta",children:[o("span",{children:i(Hr(e.type))}),o("span",{children:di(e.source)}),e.version&&o("span",{children:["v",e.version]}),o("span",{children:i("sub.downloads",{n:e.downloads||0})})]}),o("div",{children:o(_t,{text:e.id,label:`${i("sub.identity")} ${e.id.slice(0,8)}`})})]}),n&&o("p",{class:"fx-msg is-ok",role:"status",children:i(n)}),o("section",{class:"fx-sub-sec",children:[o("h4",{children:i("sub.secVersion")}),e.status==="rejected"&&e.reviewNote&&o(de,{tone:"error",children:e.reviewNote}),c&&o(de,{tone:"error",children:[i(c.kind==="info"?"sub.rejectedInfo":"sub.rejectedVersion",{version:c.version}),c.note?`: ${c.note}`:""]}),l?o(N,{children:[o(de,{children:i(l.kind==="info"?"sub.pendingInfo":"sub.pendingVersion",{version:l.version})}),o(de,{children:i("sub.pendingHint")})]}):e.status==="pending"&&e.source!=="zip"?o(de,{children:i("sub.inReview")}):e.source==="zip"?o(Cg,{item:e,checks:t,onDone:a}):o(Tg,{item:e,onDone:a})]}),o(Ag,{item:e,onDone:a}),o("section",{class:"fx-sub-sec",children:[o("h4",{children:i("sub.secHistory")}),o("ul",{class:"fx-sub-time",children:[(e.versions||[]).map(d=>o("li",{children:[o("span",{children:yn(d.createdAt,s)}),o("span",{children:i("sub.histApproved",{version:d.version})})]},`${d.version}-${d.createdAt}`)),e.createdAt&&o("li",{children:[o("span",{children:yn(e.createdAt,s)}),o("span",{children:i("sub.histSubmitted")})]})]})]})]})}function Pg({checks:e,onDone:t,onBack:n}){let r=Ge(),a=Zn(),i=He(),s=ue(),[l,c]=A("zip"),[d,g]=A({type:"plugin",name:"",summary:"",githubRepoUrl:"",npmPackage:"",description:"",tags:"",minAppVersion:"",maxAppVersion:"",platforms:""}),[p,u]=A(new Set),[m,f]=A(null),[v,x]=A(null),w=L=>H=>{g(V=>({...V,[L]:H})),u(V=>new Set([...V,L])),s.clear()},z=L=>void s.run(async()=>{f(null),x(null);let H=await Lc(L);if(!i.current)return;if(!("data"in H))return H;if(f(H),!e)return;let V=await io({dryRun:!0,fields:{source:"zip"},zip:H});if(!i.current)return;if(!V.ok)return V.out;let Q=V.data;x(Q);let ee=Q.manifest;g(S=>({...S,type:!p.has("type")&&ee&&Pc.includes(ee.type)?ee.type:S.type,name:!p.has("name")&&!S.name&&ee?.name?ee.name:S.name}))}),k=()=>void s.run(async()=>{if(!d.name.trim())return{error:{key:"sub.errName"}};if(l!=="zip"&&!(l==="github"?d.githubRepoUrl:d.npmPackage).trim())return{error:{key:"sub.errSource"}};if(l==="zip"&&!m)return{error:{key:"sub.errZip"}};let L=l==="github"?{githubRepoUrl:d.githubRepoUrl.trim()}:l==="npm"?{npmPackage:d.npmPackage.trim()}:{},H=await io({fields:{type:d.type,source:l,name:d.name.trim(),summary:d.summary.trim(),...L,...Object.fromEntries(yg.map(V=>[V,d[V].trim()]))},zip:l==="zip"?m:null});if(i.current){if(!H.ok)return H.out;t(String(H.data?.id||""))}}),M=(L,H,V={})=>o(Nc,{id:a,name:L,label:r(H),value:d[L],onInput:w(L),...V});return o("div",{class:"fx-sub-detail",children:[o("button",{type:"button",class:"btn sm ghost fx-sub-back",onClick:n,children:[o(Y,{name:"back",size:13}),r("sub.back")]}),o("div",{class:"fx-sub-dhead",children:o("div",{class:"fx-sub-item-head",children:o("strong",{children:r("sub.new")})})}),o("form",{class:"fx-sub-form fx-sub-form--inline",onSubmit:L=>{L.preventDefault(),k()},children:[o("fieldset",{disabled:s.pending,children:[o(St,{label:r("sub.source"),value:l,options:vg.map(L=>({value:L,label:di(L)})),onChange:L=>{c(L),s.clear()}}),l==="zip"?o(N,{children:[o(Oc,{id:a,file:m,disabled:s.pending,onPick:z}),v?o(Bc,{check:v,update:!1}):o(de,{children:r("sub.zipHint")})]}):o(N,{children:[l==="github"?M("githubRepoUrl","sub.repo",{placeholder:"https://github.com/owner/repo"}):M("npmPackage","sub.npm",{placeholder:"@scope/plugin-name"}),o(de,{children:r(l==="github"?"sub.repoHint":"sub.npmHint")})]}),o("div",{class:"fx-sub-columns",children:[o("label",{class:"fx-sub-field",for:`${a}-type`,children:[o("span",{children:r("sub.type")}),o("select",{id:`${a}-type`,value:d.type,onChange:L=>w("type")(L.currentTarget.value),children:Pc.map(L=>o("option",{value:L,children:r(Hr(L))},L))})]}),M("name","sub.name")]}),M("summary","sub.summary"),M("description","sub.description",{rows:3}),M("tags","sub.tags",{placeholder:r("sub.tagsHint")}),o("div",{class:"fx-sub-columns",children:[M("minAppVersion","sub.minAppVersion",{placeholder:"2.13.0"}),M("maxAppVersion","sub.maxAppVersion",{placeholder:r("sub.optional")})]}),M("platforms","sub.platforms",{placeholder:"desktop, android, ios, web"}),o(de,{children:r("sub.requirementsHint")}),o(de,{children:r("sub.identityHint")}),o(de,{children:r("sub.reviewHint")})]}),o("div",{class:"fx-sub-actions",children:[o(q,{variant:"primary",pending:s.pending,submit:!0,children:r("sub.submit")}),o(q,{disabled:s.pending,onClick:n,children:r("common.cancel")})]}),o(pe,{a:s,captchaSection:"submission"})]})]})}function Mg({items:e,checks:t,reload:n}){let r=Ge(),[a,i]=A("all"),[s,l]=A(null),[c,d]=A(!1),[g,p]=A(null),u=e.filter(w=>Mc(w,a)),m=s==="new"?null:u.find(w=>w.id===s)||u[0]||null,f=w=>{l(w),d(!0),p(null)},v=(w,z)=>{i("all"),l(w),p({id:w,key:z}),n()},x=w=>e.filter(z=>Mc(z,w)).length;return o(xe,{title:r("sub.mine"),desc:r("sub.desc"),actions:o(N,{children:[o(q,{variant:"primary",disabled:s==="new",onClick:()=>f("new"),children:[o(Y,{name:"plus",size:13}),r("sub.new")]}),o(q,{onClick:n,children:r("sub.refresh")})]}),children:!e.length&&s!=="new"?o(dt,{children:[o("strong",{children:r("sub.empty")}),o("p",{children:r("sub.emptyHint")})]}):o(N,{children:[!!e.length&&o("div",{class:"fx-sub-filter",children:o(St,{label:r("sub.filter"),value:a,onChange:i,options:["all","pending","approved","rejected"].map(w=>({value:w,label:`${r(w==="all"?"sub.all":Ic(w))} ${x(w)}`}))})}),o("div",{class:"fx-sub-cq",children:o("div",{class:`fx-sub-split${c?" is-picked":""}`,children:[o("nav",{class:"fx-sub-list","aria-label":r("sub.mine"),children:u.length?u.map(w=>o("button",{type:"button","data-submission-id":w.id,class:`fx-sub-li${w.id===m?.id?" is-on":""}`,"aria-current":w.id===m?.id||void 0,onClick:()=>f(w.id),children:[o("span",{class:"fx-sub-li-top",children:[o("strong",{children:w.name}),o(Dc,{status:w.status})]}),o("span",{class:"fx-sub-li-meta",children:[r(Hr(w.type)),di(w.source),w.version&&`v${w.version}`].filter(Boolean).join(" \xB7 ")}),w.pendingUpdate&&o("span",{class:"fx-sub-li-meta",children:r(w.pendingUpdate.kind==="info"?"sub.pendingInfo":"sub.pendingVersion",{version:w.pendingUpdate.version})})]},w.id)):o("p",{class:"fx-note",children:r(e.length?"sub.noResults":"sub.empty")})}),s==="new"?o(Pg,{checks:t,onBack:()=>{l(null),d(!1)},onDone:w=>v(w,"sub.submitted")}):m?o(Eg,{item:m,checks:t,notice:g?.id===m.id?g.key:null,onBack:()=>d(!1),onDone:w=>v(m.id,w)},m.id):o("div",{class:"fx-sub-detail",children:o("p",{class:"fx-note",children:r("sub.noResults")})})]})})]})})}function Fc(){let e=Oe(()=>ne("/market/mine"));switch(e.state){case"loading":return o(Ie,{});case"signedOut":return o(Be,{});case"error":return o($e,{error:e.error,onRetry:e.retry});case"ready":return o(Mg,{items:e.data?.items||[],checks:e.data?.dryRun===!0,reload:e.reload})}}var Ig=300,$c=e=>e.replace(/\/+$/,"").replace(/\/api$/,""),Rg=(e=0)=>e<1024*1024?`${Math.max(1,Math.ceil(e/1024))} KB`:`${(e/1024/1024).toFixed(1)} MB`;function Lg(e,t){let n=se().openExternal;n&&(t.preventDefault(),n(e)?.catch(()=>{}))}function Dg({page:e,url:t,reload:n}){let r=Ge(),{locale:a}=ae(),i=Zn(),s=ue(),[l,c]=A(null),d=e.listing_status||null,g=e.status==="disabled",p=(f,v,x,w)=>void s.run(async()=>{let z=await ne(f,{method:v,body:x});if(!z.ok)return De(z);w?.(),n()}),u=`/connect/apps/${encodeURIComponent(e.slug)}`,m=d==="pending"?["web.listingPending","fx-tag--accent"]:d==="approved"?["web.listingApproved","fx-status--resolved"]:d==="rejected"?["web.listingRejected","fx-tag--danger"]:null;return o("article",{class:"fx-sub-item","data-webpage":e.slug,children:[o("div",{class:"fx-sub-item-head",children:[o("strong",{children:e.name||e.slug}),g&&o("span",{class:"fx-tag fx-tag--danger",children:r("web.disabled")}),m&&o("span",{class:`fx-tag ${m[1]}`,children:r(m[0])})]}),t&&o("a",{class:"fx-web-url",href:t,target:"_blank",rel:"noopener noreferrer",onClick:f=>Lg(t,f),children:t}),o("div",{class:"fx-sub-meta",children:[o("span",{children:e.slug}),o("span",{children:Rg(e.total_bytes)}),e.updated_at&&o("span",{children:r("web.updated",{date:yn(e.updated_at,a)})})]}),g&&o(de,{tone:"error",children:r("web.disabledHint")}),d==="rejected"&&e.listing_note&&o(de,{tone:"error",children:r("web.listingNote",{note:e.listing_note})}),l!==null&&o("form",{class:"fx-sub-form",onSubmit:f=>{f.preventDefault(),l.trim()&&p(`${u}/listing`,"PUT",{summary:l.trim()},()=>c(null))},children:[o("label",{class:"fx-sub-field",for:`${i}-summary`,children:[o("span",{children:r("web.listingSummary")}),o("textarea",{id:`${i}-summary`,rows:2,maxLength:Ig,value:l,disabled:s.pending,placeholder:r("web.listingSummaryPh"),onInput:f=>c(f.currentTarget.value)}),o("small",{children:r("web.listingHint")})]}),o("div",{class:"fx-sub-actions",children:[o(q,{variant:"primary",submit:!0,pending:s.pending,disabled:!l.trim(),children:r("web.listingSubmit")}),o(q,{disabled:s.pending,onClick:()=>c(null),children:r("common.cancel")})]})]}),l===null&&o("div",{class:"fx-web-actions",children:[t&&o(_t,{text:t,label:r("web.copy")}),!g&&!d&&o(q,{disabled:s.pending,onClick:()=>c(""),children:r("web.listingApply")}),!g&&d==="rejected"&&o(q,{disabled:s.pending,onClick:()=>c(e.listing_summary||""),children:r("web.listingReapply")}),d==="pending"&&o(q,{pending:s.pending,onClick:()=>p(`${u}/listing`,"DELETE"),children:r("web.listingWithdraw")}),d==="approved"&&o(Gt,{label:r("web.listingDelist"),confirmLabel:r("web.listingDelistConfirm"),pending:s.pending,onConfirm:()=>p(`${u}/listing`,"DELETE")}),o(Gt,{variant:"danger",label:r("web.unpublish"),confirmLabel:r("web.unpublishConfirm"),pending:s.pending,onConfirm:()=>p(u,"DELETE")})]}),o(pe,{a:s})]})}function Ng({data:e,reload:t}){let n=Ge(),[r,a]=A("");oe(()=>{if(e.publicBase)return;let d=!0;return se().authStatus?.().then(g=>{d&&g?.cloudUrl&&a($c(g.cloudUrl))}).catch(()=>{}),()=>{d=!1}},[e.publicBase]);let i=e.apps||[],s=e.publicBase?$c(e.publicBase):r,l=d=>s&&e.handle?`${s}/apps/${e.handle}/${d}/`:"",c=typeof e.limit=="number"&&i.length>=e.limit;return o(xe,{title:n("web.title"),desc:n("web.desc"),actions:o(q,{onClick:t,children:n("web.refresh")}),children:[typeof e.limit=="number"&&o("p",{class:"fx-web-quota",children:[n("web.used",{used:i.length,limit:e.limit}),c?` \xB7 ${n("web.full")}`:""]}),i.length?i.map(d=>o(Dg,{page:d,url:l(d.slug),reload:t},d.slug)):o(dt,{children:[o("strong",{children:n("web.empty")}),o("p",{children:n("web.emptyHint")})]})]})}function Uc(){let e=Oe(()=>ne("/connect/apps"));switch(e.state){case"loading":return o(Ie,{});case"signedOut":return o(Be,{});case"error":return o($e,{error:e.error,onRetry:e.retry});case"ready":return o(Ng,{data:e.data||{},reload:e.reload})}}var Og=e=>!!e&&typeof e=="object"&&typeof e.enabled=="boolean";async function ui(e,t){let n=se().cloudInvoke;if(!n)throw new Error("no_bridge");let r=await n(e,t);if(!Og(r))throw new Error(String(r?.error??"unavailable"));return r}var Bg=["diag.item.app","diag.item.settings","diag.item.agents","diag.item.plugins","diag.item.runs"];function Hc(){let[e,t]=A(0);return oe(()=>se().onAuthChanged?.(()=>t(n=>n+1)),[]),o(Fg,{standalone:!0},e)}function Fg({standalone:e=!1}={}){let{t,locale:n}=ae(),r=He(),[a,i]=A(null),[s,l]=A(!1),c=ue(),d=ue();if(oe(()=>{let v=!1,x=0,w=()=>{let k=++x;ui("diagnostics:get").then(M=>{!v&&k===x&&(i(M),l(!0))},()=>{!v&&k===x&&(i(null),l(!0))})};w();let z=se().onAuthChanged?.(w);return()=>{v=!0,z?.()}},[]),!a?.signedIn)return e?s?a?o(Be,{}):o(dt,{children:t("diag.unavailable")}):o(Ie,{panels:1}):null;let g=()=>void d.run(async()=>{try{let v=await ui("diagnostics:uploadNow");return r.current&&i(v),v.lastError?{error:{key:"diag.failed",vars:{reason:v.lastError}}}:v.enabled&&v.lastUploadAt?{success:{key:"diag.uploaded"}}:void 0}catch(v){return{error:{raw:Yt(v)||t("err.generic")}}}}),p=async v=>{let x=!1;await c.run(async()=>{d.clear();try{let w=await ui("diagnostics:set",v);r.current&&i(w),x=!0}catch(w){return{error:{raw:Yt(w)||t("err.generic")}}}}),x&&v.enabled&&r.current&&g()},u=a.intervalHours??24,m=a.mode==="manual"?t("diag.freq.manual"):u===1?t("diag.freq.hour"):u%24===0?u===24?t("diag.freq.day"):t("diag.freq.days",{n:u/24}):t("diag.freq.hours",{n:u}),f=`${a.lastUploadAt?t("diag.last",{time:an(a.lastUploadAt,n)}):t("diag.noUpload")} \xB7 ${m}`;return o(xe,{icon:"chart",title:t("diag.title"),desc:t("diag.desc"),children:[o(qe,{label:t("diag.enable"),desc:t("diag.enableDesc"),children:o(Zt,{checked:a.enabled,disabled:c.pending,label:t("diag.enable"),onChange:v=>void p({enabled:v})})}),o(Me,{class:"fx-diag",children:[o("strong",{children:t("diag.collected")}),o("ul",{children:Bg.map(v=>o("li",{children:t(v)},v))}),o(de,{children:t("diag.notCollected")})]}),a.sessions!==void 0&&o(qe,{label:t("diag.sessions"),desc:t("diag.sessionsDesc"),children:o(Zt,{checked:a.sessions,disabled:c.pending,label:t("diag.sessions"),onChange:v=>void p({sessions:v})})}),a.memory!==void 0&&o(qe,{label:t("diag.memory"),desc:t("diag.memoryDesc"),children:o(Zt,{checked:a.memory,disabled:c.pending,label:t("diag.memory"),onChange:v=>void p({memory:v})})}),o(qe,{label:t("diag.activity"),desc:t("diag.activityDesc"),children:o(Zt,{checked:a.activity,disabled:c.pending,label:t("diag.activity"),onChange:v=>void p({activity:v})})}),a.enabled&&o("div",{class:"settings-panel-footer fx-footer",children:[o("span",{class:"fx-muted",children:f}),o(q,{pending:d.pending,disabled:c.pending,onClick:g,children:t("diag.uploadNow")})]}),o(Me,{class:"fx-sub--tight",children:[o(de,{children:t("diag.retention",{n:a.retainDays})}),a.enabled&&a.lastError&&!d.error&&!d.success&&o("div",{class:"fx-msg is-error",role:"alert",children:t("diag.failed",{reason:a.lastError})}),o(pe,{a:c}),o(pe,{a:d})]})]})}var er=20,qr=5,$g=5*1024*1024,Vr=1e4,Ug={open:"fb.status.open",in_progress:"fb.status.in_progress",resolved:"fb.status.resolved",closed:"fb.status.closed"};function Vc(e){let{t}=ae(),n=e.status||"open",r=Ug[n];return o("span",{class:`fx-tag fx-status fx-status--${n}`,children:r?t(r):n})}function jc(){let[e,t]=A(null),n=Oe(async()=>{let r=await ne(`/feedback?limit=${er}&offset=0`);return r.ok?{ok:!0,status:r.status,data:Array.isArray(r.data?.tickets)?r.data.tickets:[]}:r});return n.state==="loading"?o(Ie,{panels:1,rows:3}):n.state==="signedOut"?o(Be,{}):n.state==="error"?o($e,{error:n.error,onRetry:n.retry}):e?o(Wg,{id:e,onBack:()=>{t(null),n.reload()}}):o(Hg,{first:n.data,onOpen:t,onChanged:n.reload})}function Hg(e){let{t,locale:n}=ae(),r=He(),[a,i]=A(e.first),[s,l]=A(e.first.length===er),[c,d]=A(!1),[g,p]=A(!1),u=ue();oe(()=>{i(e.first),l(e.first.length===er)},[e.first]);let m=()=>void u.run(async()=>{let f=await ne(`/feedback?limit=${er}&offset=${a.length}`);if(!f.ok)return{error:Bt(f)};let v=Array.isArray(f.data?.tickets)?f.data.tickets:[];r.current&&(i(x=>{let w=new Set(x.map(z=>z.id));return[...x,...v.filter(z=>!w.has(z.id))]}),l(v.length===er))});return o(xe,{icon:"message",title:t("fb.list.title"),desc:t("fb.list.desc"),actions:c?void 0:o(q,{variant:"primary",onClick:()=>{p(!1),d(!0)},children:[o(Y,{name:"plus",size:12})," ",t("fb.new")]}),children:[c&&o(jg,{onCancel:()=>d(!1),onSubmitted:()=>{d(!1),p(!0),e.onChanged()}}),g&&!c&&o(Me,{children:o("div",{class:"fx-msg is-ok",role:"status",children:t("fb.submitted")})}),a.length===0?o(dt,{children:t("fb.empty")}):o("div",{class:"fx-list fx-block",role:"list",children:a.map(f=>o("button",{type:"button",class:"fx-list-row fx-list-row--button",role:"listitem",onClick:()=>e.onOpen(f.id),children:[o("span",{class:`fx-dot${f.user_unread?" is-on":""}`,"aria-label":f.user_unread?t("fb.unread"):void 0}),o("span",{class:"fx-list-main",children:[o("strong",{children:f.title||(f.description||"").slice(0,60)||t("fb.untitled")}),o("small",{children:an(f.updated_at||f.created_at,n)})]}),o(Vc,{status:f.status}),o(Y,{name:"chevron",size:12})]},f.id))}),a.length>0&&(s||u.error)&&o("div",{class:"settings-panel-footer fx-footer",children:[o("span",{class:"fx-muted",children:t("fb.shown",{n:Pe(a.length,n)})}),s&&o(q,{pending:u.pending,onClick:m,children:t("common.loadMore")})]}),u.error&&o(Me,{children:o(pe,{a:u})})]})}function qg(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(String(r.result||"")),r.onerror=()=>n(r.error||new Error("read failed")),r.readAsDataURL(e)})}var Vg=0;function jg(e){let{t}=ae(),n=He(),[r,a]=A(""),[i,s]=A([]),[l,c]=A(null),[d,g]=A(!1),p=ce(null),u=ue(),[m,f]=A(0),v=ce(0);v.current=i.length;let x=async z=>{c(null);for(let k of Array.from(z||[])){if(!k.type||!k.type.startsWith("image/")){c({key:"err.imageType"});continue}if(k.size>$g){c({key:"err.imageTooLarge"});continue}if(v.current>=qr){c({key:"err.tooManyImages"});break}v.current++,f(M=>M+1);try{let M=await qg(k);if(!n.current)return;let L={id:`img-${++Vg}`,filename:k.name||"image",mime_type:k.type,size:k.size,data_base64:M.replace(/^data:[^;]+;base64,/,""),url:M};s(H=>H.length>=qr?H:[...H,L])}catch{v.current--,c({key:"err.imageRead"})}finally{n.current&&f(M=>M-1)}}},w=()=>void u.run(async()=>{let z=r.trim();if(!z)return{error:{key:"err.feedbackEmpty"}};if(z.length>Vr)return{error:{key:"err.feedbackTooLong"}};let k=i.map(({filename:L,mime_type:H,size:V,data_base64:Q})=>({filename:L,mime_type:H,size:V,data_base64:Q})),M=await ne("/feedback",{method:"POST",body:{description:z,attachments:k},timeoutMs:12e4});if(!M.ok)return De(M);e.onSubmitted()});return o("div",{class:`fx-sub fx-form fx-composer${d?" is-drag":""}`,onPaste:z=>{let k=Array.from(z.clipboardData?.items||[]).filter(M=>M.kind==="file").map(M=>M.getAsFile()).filter(Boolean);k.length&&(z.preventDefault(),x(k))},onDragOver:z=>{z.preventDefault(),g(!0)},onDragLeave:()=>g(!1),onDrop:z=>{z.preventDefault(),g(!1),x(z.dataTransfer?.files)},children:[o("label",{class:"fx-field",children:[o("span",{children:t("fb.descLabel")}),o("textarea",{class:"fx-input fx-textarea",rows:5,value:r,maxLength:Vr,autoFocus:!0,placeholder:t("fb.descPlaceholder"),onInput:z=>a(z.currentTarget.value)})]}),o("p",{class:"fx-note",children:t("fb.imagesHint",{n:qr})}),i.length>0&&o("div",{class:"fx-thumbs",children:i.map(z=>o("span",{class:"fx-thumb",children:[o("img",{src:z.url,alt:z.filename}),o("button",{type:"button","aria-label":t("fb.removeImage"),title:t("fb.removeImage"),onClick:()=>{s(k=>k.filter(M=>M.id!==z.id)),c(null)},children:o(Y,{name:"x",size:11})})]},z.id))}),l&&o("div",{class:"fx-msg is-error",role:"alert",children:Wt(l,t)}),o("input",{ref:p,type:"file",accept:"image/*",multiple:!0,hidden:!0,onChange:z=>{let k=z.currentTarget;x(k.files),k.value=""}}),o("div",{class:"fx-inline",children:[o(q,{disabled:i.length>=qr||u.pending,onClick:()=>p.current?.click(),children:[o(Y,{name:"image",size:12})," ",t("fb.addImages")]}),o("span",{class:"fx-grow"}),o(q,{disabled:u.pending,onClick:e.onCancel,children:t("common.cancel")}),o(q,{variant:"primary",pending:u.pending,disabled:m>0,onClick:w,children:t("fb.submit")})]}),o(pe,{a:u})]})}function Wg(e){let{t,locale:n}=ae(),[r,a]=A({state:"loading"}),[i,s]=A(0),[l,c]=A(""),[d,g]=A(null),p=ue(),u=ce(0);oe(()=>{let M=++u.current;return ne(`/feedback/${encodeURIComponent(e.id)}`).then(L=>{if(M===u.current){if(!L.ok){a({state:"error",fail:L});return}a({state:"ready",data:{ticket:L.data.ticket,replies:L.data.replies??[],attachments:L.data.attachments??[]}}),ne(`/feedback/${encodeURIComponent(e.id)}/read`,{method:"POST"})}}),()=>{u.current++}},[e.id,i]),oe(()=>{if(!d)return;let M=L=>{L.key==="Escape"&&g(null)};return window.addEventListener("keydown",M),()=>window.removeEventListener("keydown",M)},[d]);let m=o("div",{class:"fx-back",children:o(q,{onClick:e.onBack,children:[o(Y,{name:"back",size:12})," ",t("fb.back")]})});if(r.state==="loading")return o(N,{children:[m,o(Ie,{panels:1,rows:3})]});if(r.state==="error")return o(N,{children:[m,o($e,{error:Bt(r.fail),onRetry:()=>{a({state:"loading"}),s(M=>M+1)}})]});let{ticket:f,replies:v,attachments:x}=r.data,w=f.status==="closed",z=M=>x.filter(L=>(L.reply_id??null)===M),k=()=>void p.run(async()=>{let M=l.trim();if(!M)return{error:{key:"err.replyEmpty"}};if(M.length>Vr)return{error:{key:"err.replyTooLong"}};let L=await ne(`/feedback/${encodeURIComponent(f.id)}/replies`,{method:"POST",body:{content:M},timeoutMs:6e4});return L.ok?(c(""),s(H=>H+1),{success:{key:"fb.replySent"}}):De(L)});return o(N,{children:[m,o(xe,{icon:"message",title:f.title||t("fb.untitled"),actions:o(Vc,{status:f.status}),desc:`#${String(f.id).slice(0,8)} \xB7 ${an(f.created_at,n)}`,children:[o("div",{class:"fx-thread fx-block",children:[o(qc,{who:"user",when:f.created_at,text:f.description||"",files:z(null),onZoom:g}),v.map((M,L)=>o(qc,{who:M.author_role==="user"?"user":"admin",when:M.created_at,text:M.content||"",files:M.id?z(M.id):[],onZoom:g},M.id??L))]}),w?o(Me,{children:o(de,{children:t("fb.closedNote")})}):o(Me,{class:"fx-form",children:[o("textarea",{class:"fx-input fx-textarea",rows:3,value:l,maxLength:Vr,placeholder:t("fb.replyPlaceholder"),"aria-label":t("fb.replyPlaceholder"),onInput:M=>{c(M.currentTarget.value),p.success&&p.clear()}}),o("div",{class:"fx-inline",children:[o("span",{class:"fx-grow"}),o(q,{variant:"primary",pending:p.pending,onClick:k,children:t("fb.replySend")})]}),o(pe,{a:p})]})]}),d&&o("div",{class:"fx-lightbox",role:"dialog","aria-label":t("fb.imagePreview"),onClick:()=>g(null),children:o("img",{src:d,alt:""})})]})}function qc(e){let{t,locale:n}=ae();return o("div",{class:`fx-bubble fx-bubble--${e.who}`,children:[o("div",{class:"fx-bubble-meta",children:[e.who==="user"?t("fb.you"):t("fb.support")," \xB7 ",an(e.when,n)]}),o("div",{class:"fx-bubble-text",children:e.text}),e.files.length>0&&o("div",{class:"fx-thumbs",children:e.files.map((r,a)=>{let i=r.mime_type||"";if(i.startsWith("image/")&&r.data_base64){let s=`data:${i};base64,${r.data_base64}`;return o("button",{type:"button",class:"fx-thumb",onClick:()=>e.onZoom(s),"aria-label":t("fb.imagePreview"),children:o("img",{src:s,alt:r.filename||""})},r.id??a)}return o("span",{class:"fx-tag",children:[o(Y,{name:"card",size:11})," ",r.filename||t("fb.attachment")]},r.id??a)})})]})}var Gc=[{id:"monthly",field:"priceMonthly",discount:"recurringPriceMonthly"},{id:"quarterly",field:"priceQuarterly",discount:"recurringPriceQuarterly"},{id:"yearly",field:"priceYearly",discount:"recurringPriceYearly"}];function Wc(e,t){let n=Gc.find(s=>s.id===t),r=Ce(e.priceMonthly)??0,a=(Ce(e[n.field])??0)||(t==="quarterly"?Math.round(r*300)/100:0),i=Ce(e[n.discount])??0;return i>0&&i<a?i:a}function pi(e,t,n){let r=Pe(e,n),a=String(t||"CNY").toUpperCase();return a==="CNY"?`\xA5${r}`:a==="USD"?`$${r}`:`${r} ${a}`}async function Gg(){let[e,t,n]=await Promise.all([ne("/membership/my"),ne("/credits/balance"),ne("/features")]);return!e.ok&&eo(e)?e:!t.ok&&eo(t)?t:{ok:!0,status:200,data:{membership:e.ok?e.data?.membership??null:null,membershipFailed:!e.ok,balance:t.ok?Ce(t.data?.balance):null,balanceFailed:!t.ok,features:n.ok&&n.data&&typeof n.data=="object"?n.data:{}}}}async function fi(e,t){let[n,r]=await Promise.all([Gg(),ne(e)]);return n.ok?r.ok?{ok:!0,status:r.status,data:{status:n.data,list:t(r.data)}}:r:n}var mi=e=>(Array.isArray(e)?e:[]).filter(t=>!!t&&typeof t=="object"&&t.isActive!==!1),Xg=15*6e4;function gi(e){let t=ce(0),n=ce(0),r=ce(e);return r.current=e,oe(()=>{let a=()=>{let i=Date.now();i>t.current||document.visibilityState==="hidden"||i-n.current<2e3||(n.current=i,r.current?.())};return window.addEventListener("focus",a),document.addEventListener("visibilitychange",a),()=>{window.removeEventListener("focus",a),document.removeEventListener("visibilitychange",a)}},[]),()=>{t.current=Date.now()+Xg}}function Xc(e){let t=e.membership;return t&&(t.status===void 0||t.status==="active")?t:null}function hi(e){let{t,locale:n}=ae(),r=e.status,a=Xc(r),i=Jo(a?.tier),s=i==="Free";return o("section",{class:"fx-shop-strip","aria-label":t("store.status"),children:[o("div",{class:"fx-shop-stat",children:[o("small",{children:t("store.tier")}),r.membershipFailed?o("b",{class:"is-empty",children:"\u2014"}):o("b",{"data-testid":"shop-tier",children:[s?t("member.freeName"):a?.plan?.name||i,!s&&o("i",{children:a?.expiresAt?t("member.expires",{date:yn(a.expiresAt,n)}):t("member.noExpiry")})]})]}),o("div",{class:"fx-shop-stat",children:[o("small",{children:t("store.balance")}),o("b",{class:r.balance===null?"is-empty":"","data-testid":"shop-balance",children:r.balance===null?"\u2014":Pe(r.balance,n)})]}),(r.membershipFailed||r.balanceFailed)&&o("button",{type:"button",class:"fx-link",onClick:e.onRetry,children:t("common.retry")}),o("span",{class:"fx-grow"}),e.children]})}function bi(e){return o("section",{class:"fx-shop-section",children:[o("div",{class:"fx-shop-head",children:[o("div",{children:[o("h2",{children:e.title}),e.desc&&o("p",{children:e.desc})]}),e.right]}),e.children]})}function vi(e){let t=ue(),[n,r]=A(null),a=(i,s,l,c)=>{r(i),t.run(async()=>{if(!await On(s,l,c))return{error:{key:"err.openFailed"}};e()})};return{a:t,payingId:t.pending?n:null,open:a}}function yi(e){return o(q,{variant:"ghost",pending:e.pending,disabled:e.disabled,onClick:e.onClick,children:[e.label,o(Y,{name:"external",size:12})]})}function xi(e){return o("div",{class:"fx-shop-empty",children:e.children})}function Kc(){let{t:e,locale:t}=ae(),n=Oe(()=>fi("/payment/offerings",m=>mi(m?.membershipPlans))),r=gi(n.state==="ready"?n.reload:null),a=vi(r),[i,s]=A("monthly");if(n.state==="loading")return o(Ie,{panels:2,rows:2});if(n.state==="signedOut")return o(Be,{});if(n.state==="error")return o($e,{error:n.error,onRetry:n.retry});let{status:l,list:c}=n.data,d=l.features.payment!==!1,g=Gc.filter(m=>c.some(f=>Wc(f,m.id)>0)),p=g.some(m=>m.id===i)?i:g[0]?.id??"monthly",u=Xc(l)?.tier?.toLowerCase()??null;return o(N,{children:[o(hi,{status:l,onRetry:n.reload}),o(bi,{title:e("store.choosePlan"),desc:e(d?"store.payHint":"store.payOff"),right:g.length>1?o(St,{value:p,label:e("store.period"),onChange:s,options:g.map(m=>({value:m.id,label:e(`store.period.${m.id}`)}))}):void 0,children:[c.length===0?o(xi,{children:e("store.noPlans")}):o("div",{class:"fx-shop-tiers",children:c.map(m=>{let f=Wc(m,p),v=!!u&&!l.membershipFailed&&m.tier?.toLowerCase()===u;return o("article",{class:"fx-shop-tier","data-tier":m.tier,children:[o("h3",{children:[m.name||Jo(m.tier),v&&o("span",{class:"fx-shop-current",children:[o(Y,{name:"check",size:12}),e("store.currentTier")]})]}),o("div",{class:"fx-shop-price",children:f>0?o(N,{children:[pi(f,m.currency,t),o("small",{children:e(`store.per.${p}`)})]}):"\u2014"}),o("p",{children:m.description}),d&&f>0&&o(yi,{label:e(v?"member.renew":"store.pay"),pending:a.payingId===m.id,disabled:a.a.pending,onClick:()=>a.open(m.id,"membership",m.id,p)})]},m.id)})}),o(pe,{a:a.a})]})]})}function Jc(){let{t:e,locale:t}=ae(),n=Oe(()=>fi("/payment/offerings",c=>mi(c?.packages))),r=gi(n.state==="ready"?n.reload:null),a=vi(r);if(n.state==="loading")return o(Ie,{panels:2,rows:2});if(n.state==="signedOut")return o(Be,{});if(n.state==="error")return o($e,{error:n.error,onRetry:n.retry});let{status:i,list:s}=n.data,l=i.features.payment!==!1;return o(N,{children:[o(hi,{status:i,onRetry:n.reload}),o(bi,{title:e("store.packs"),desc:e(l?"store.packsHint":"store.payOff"),children:[s.length===0?o(xi,{children:e("store.noPacks")}):o("div",{class:"fx-shop-grid",children:s.map(c=>{let d=Ce(c.price)??0;return o(Yc,{icon:"coins",kind:e("store.kind.pack"),name:`${c.name||""} \xB7 ${e("store.nPoints",{n:Pe(c.credits,t)})}`,desc:c.description,meta:e("store.instant"),children:l&&d>0&&o(yi,{label:e("store.payPrice",{price:pi(d,c.currency,t)}),pending:a.payingId===c.id,disabled:a.a.pending,onClick:()=>a.open(c.id,"credits")})},c.id)})}),o(pe,{a:a.a})]})]})}function Yc(e){return o("article",{class:"fx-shop-card",children:[o("div",{class:"fx-shop-visual","aria-hidden":"true",children:e.emoji?o("span",{class:"fx-shop-emoji",children:e.emoji}):o(Y,{name:e.icon,size:18})}),o("div",{class:"fx-shop-body",children:[o("span",{class:"fx-shop-kind",children:e.kind}),o("strong",{children:e.name}),e.desc&&o("p",{children:e.desc}),o("div",{class:"fx-shop-foot",children:[o("span",{class:"fx-shop-meta",children:e.meta}),o("span",{class:"fx-shop-acts",children:e.children})]}),e.below]})]})}var Kg={reset_card:"store.kind.card",api_quota_key:"store.kind.code"};function Jg(e){let{t,locale:n}=ae(),{p:r}=e,a=ue(),[i,s]=A(null),[l,c]=A(!1),d=Ce(r.pricePoints)??0,g=Ce(r.priceRmb)??0,p=typeof r.availableKeys=="number"&&r.availableKeys<=0,u=d>0&&e.balance!==null&&e.balance<d,m=()=>void a.run(async()=>{let v=await ne("/shop/purchase",{method:"POST",body:{productId:r.id,payMethod:"points"},timeoutMs:3e4});return v.ok?(s(typeof v.data?.key=="string"&&v.data.key?v.data.key:null),e.onRedeemed(),{success:{key:"store.redeemed"}}):v.status===0?(c(!0),{error:{key:"store.uncertain"}}):De(v)}),f=p?t("store.soldOut"):u?t("err.insufficientPoints"):typeof r.availableKeys=="number"?t("store.left",{n:r.availableKeys}):t("store.toBackpack");return o(Yc,{icon:r.type==="api_quota_key"?"key":"gift",emoji:r.icon,kind:t(Kg[r.type||""]??"store.kind.item"),name:r.name||"",desc:r.description,meta:f,below:o(N,{children:[o(pe,{a}),i&&o("div",{class:"fx-shop-key",children:[o("code",{children:i}),o(_t,{text:i,label:t("backpack.copyKey")})]})]}),children:[d>0&&o(Gt,{variant:"primary",pending:a.pending,disabled:p||u||l,label:t("store.redeem",{n:Pe(d,n)}),confirmLabel:t("store.redeemConfirm",{n:Pe(d,n)}),onConfirm:m}),e.payment&&g>0&&o(yi,{label:pi(g,r.currency,n),pending:e.paying,disabled:e.payBusy||p,onClick:e.onPay})]})}function Zc(){let{t:e,goTo:t}=ae(),n=Oe(()=>fi("/shop/products",d=>mi(d))),r=gi(n.state==="ready"?n.reload:null),a=vi(r);if(n.state==="loading")return o(Ie,{panels:2,rows:2});if(n.state==="signedOut")return o(Be,{});if(n.state==="error")return o($e,{error:n.error,onRetry:n.retry});let{status:i,list:s}=n.data,l=i.features.payment!==!1,c=i.features.shop!==!1;return o(N,{children:[o(hi,{status:i,onRetry:n.reload,children:t&&o(q,{onClick:()=>t("backpack"),children:e("store.openBackpack")})}),o(bi,{title:e("store.redeemTitle"),desc:e("store.redeemHint"),children:[!c||s.length===0?o(xi,{children:e(c?"store.noItems":"store.itemsOff")}):o("div",{class:"fx-shop-grid",children:s.map(d=>o(Jg,{p:d,balance:i.balance,payment:l,paying:a.payingId===d.id,payBusy:a.a.pending,onPay:()=>a.open(d.id,"storefront"),onRedeemed:n.reload},d.id))}),o(pe,{a:a.a})]})]})}var Yg="forsion-extend",Qc=[{id:"account",titleKey:"page.account",tabTitleKey:"page.profile",aliases:["profile"],keywords:"\u4E2A\u4EBA\u4E3B\u9875 profile avatar nickname \u5934\u50CF \u6635\u79F0",Component:fc},{id:"account-details",parent:"account",titleKey:"account.details.title",keywords:"\u767B\u5F55 \u8D44\u6599 \u624B\u673A \u90AE\u7BB1 \u5207\u6362 \u9000\u51FA login sign-in email phone account switch logout",Component:Wl},{id:"security",parent:"account",titleKey:"page.security",keywords:"\u5B89\u5168 \u5BC6\u7801 \u8BBE\u5907 \u7ED1\u5B9A security password devices",Component:zc},{id:"quota",titleKey:"page.membershipUsage",tabTitleKey:"page.membershipQuota",aliases:["membership"],keywords:"\u4F1A\u5458 \u989D\u5EA6 \u540E\u53F0 quota membership background",Component:bc},{id:"points",parent:"quota",titleKey:"page.pointsInvite",keywords:"\u79EF\u5206 \u9080\u8BF7 \u5151\u6362 \u5145\u503C points invite redeem credits",Component:hc},{id:"usage",parent:"quota",titleKey:"page.usage",keywords:"\u7528\u91CF \u8BB0\u5F55 \u6D88\u8017 usage history tokens",Component:Ac},{id:"backpack",titleKey:"page.backpack",keywords:"\u80CC\u5305 \u5361\u5238 backpack inventory",Component:yc},{id:"submission",titleKey:"page.submission",Component:Fc},{id:"webpages",titleKey:"page.webPages",keywords:"\u7F51\u9875 \u53D1\u5E03 \u94FE\u63A5 \u4E0A\u67B6 \u7F51\u7AD9 web pages publish link site connect",Component:Uc},{id:"feedback",titleKey:"page.helpDiagnostics",tabTitleKey:"page.feedback",webTitleKey:"page.feedback",keywords:"\u5E2E\u52A9 \u53CD\u9988 help feedback",Component:jc},{id:"diagnostics",parent:"feedback",titleKey:"diag.title",keywords:"\u8BCA\u65AD \u4E0A\u4F20 \u65E5\u5FD7 diagnostic upload logs",Component:Hc,desktopOnly:!0}],ed=[{id:"membership",titleKey:"store.membership",descKey:"store.membership.desc",icon:"crown",Component:Kc},{id:"points",titleKey:"store.points",descKey:"store.points.desc",icon:"coins",Component:Jc},{id:"items",titleKey:"store.items",descKey:"store.items.desc",icon:"package",Component:Zc}],Zg=e=>`forsion/fx:${Yg}:${e}`;function td(e){let{ctx:t,page:n}=e,[r,a]=A(()=>ht(t.getLocale?.()));oe(()=>{a(ht(t.getLocale?.()));let l=t.subscribeLocale?.(c=>a(ht(c)));return()=>{typeof l=="function"&&l()}},[t]);let i=Ot(()=>{let l=t.app?.openSettings;return{ctx:t,locale:r,t:Rr(r),goTo:typeof l=="function"?c=>l.call(t.app,Zg(c)):null}},[t,r]),s=n.Component;return o(Va.Provider,{value:i,children:o("div",{class:"fx-acct","data-fx-page":n.id,lang:r==="zh"?"zh-CN":"en",children:[o("style",{children:yl}),o(s,{})]})})}function nd(e,t=window){let n=bn(t?.tangu);if(!e||!n?.cloudFetch||!n.cloudInvoke||!Qn(n)||typeof e.registerStoreView!="function")return 0;let r=a=>()=>_e(ht(e.getLocale?.()),a);for(let a of ed)e.registerStoreView({id:a.id,title:r(a.titleKey),description:r(a.descKey),group:r("store.group"),icon:a.icon,mount(i){return Qe(o(td,{ctx:e,page:a}),i),()=>{Qe(null,i)}}});return ed.length}function od(e,t=window){let n=bn(t?.tangu);if(!e||!n?.cloudFetch||!n.cloudInvoke||!Qn(n)||typeof e.registerSettingsView!="function")return 0;let r=vn(n)?Qc.filter(a=>!a.desktopOnly):Qc;for(let a of r)e.registerSettingsView({id:a.id,category:"forsion",parent:a.parent,tabTitle:a.tabTitleKey?()=>_e(ht(e.getLocale?.()),a.tabTitleKey):void 0,aliases:a.aliases,keywords:a.keywords,title:()=>_e(ht(e.getLocale?.()),vn(n)&&a.webTitleKey||a.titleKey),mount(i){return Qe(o(td,{ctx:e,page:a}),i),()=>{Qe(null,i)}}});return r.length}var ko=[{id:"lv1"},{id:"lv2"},{id:"lv3"},{id:"lv4"},{id:"new",version:"2.14"}],G=(e,t)=>({zh:e,en:t}),Bn=[{id:"welcome",level:"lv1",icon:"compass",title:G("\u8BA4\u8BC6 Forsion","Meet Forsion"),tasks:[{id:"guide-open",event:"own:guide.open",goal:1,title:G("\u6253\u5F00\u4F7F\u7528\u6307\u5357","Open the guide")},{id:"space-switch",event:"space.switch",goal:1,title:G("\u5728 Ribbon \u4E0A\u6362\u4E00\u4E2A Space","Switch to another Space from the ribbon"),go:{space:"amadeus"},spot:{anchor:"ribbon-spaces",here:!0,title:G("\u70B9 Ribbon \u4E0A\u4EFB\u610F\u4E00\u4E2A\u56FE\u6807","Click any icon on the ribbon"),body:G("\u6BCF\u4E2A\u56FE\u6807\u662F\u4E00\u4E2A Space\uFF0C\u70B9\u4E00\u4E0B\u5C31\u5207\u8FC7\u53BB\u3002","Each icon is a Space. One click switches to it.")}}],figure:{layout:"space",main:"doc",marks:[{slot:"ribbon",label:G("Ribbon\uFF1A\u6BCF\u4E2A\u56FE\u6807\u662F\u4E00\u4E2A Space","Ribbon: each icon is a Space")},{slot:"main-tabs",label:G("\u4E3B\u533A\u7684\u6807\u7B7E\u9875","Tabs in the main area"),text:G("\u6807\u7B7E\u9875","Tab")},{slot:["left-list","right"],label:G("\u5DE6\u53F3\u4FA7\u680F","Left and right sidebars")}]}},{id:"chat",level:"lv1",icon:"message-circle",title:G("\u548C Tangu \u8BF4\u7B2C\u4E00\u53E5\u8BDD","Say hello to Tangu"),tasks:[{id:"chat-first",event:"chat.send",goal:1,title:G("\u53D1\u51FA\u7B2C\u4E00\u6761\u6D88\u606F","Send your first message"),go:{space:"tangu",command:"new-chat"},spot:{anchor:"chat-composer",title:G("\u5728\u8FD9\u91CC\u6253\u4E2A\u62DB\u547C","Say hello here"),body:G("\u6253\u5B57\uFF0C\u6309 Enter \u53D1\u9001\uFF1BShift+Enter \u6362\u884C\u3002","Type, then press Enter to send. Shift+Enter starts a new line.")}},{id:"chat-five",event:"chat.send",goal:5,title:G("\u518D\u804A\u51E0\u53E5\uFF08\u7D2F\u8BA1 5 \u6761\uFF09","Keep talking (5 messages in all)"),go:{space:"tangu"},spot:{anchor:"chat-composer",title:G("\u63A5\u7740\u804A\u51E0\u53E5","Keep the conversation going"),body:G("\u7D2F\u8BA1\u53D1\u51FA 5 \u6761\u5C31\u7B97\u5B8C\u6210\u3002","Five messages in all and this one is done.")}}],figure:{layout:"space",main:"chat",marks:[{slot:"left-top",label:G("\u5DE6\u680F\u9876\u90E8\u300C\u65B0\u4F1A\u8BDD\u300D",'"New chat" at the top of the left sidebar'),text:G("\u65B0\u4F1A\u8BDD","New chat")},{slot:"main-bottom",label:G("\u8F93\u5165\u6846","Message box")}]}},{id:"note",level:"lv1",icon:"file-text",title:G("\u5199\u4E0B\u7B2C\u4E00\u7BC7\u7B14\u8BB0","Write your first note"),tasks:[{id:"note-create",event:"note.create",goal:1,title:G("\u65B0\u5EFA\u4E00\u7BC7\u7B14\u8BB0","Create a note"),go:{space:"amadeus",command:"amadeus-new-note"},spot:{anchor:"note-new",title:G("\u70B9\u300C\u65B0\u5EFA\u7B14\u8BB0\u300D",'Click "New note"'),body:G("\u4E5F\u53EF\u4EE5\u6309 \u2318/Ctrl+N\u3002\u6BCF\u7BC7\u7B14\u8BB0\u90FD\u662F\u667A\u5E93\u91CC\u7684\u4E00\u4E2A .md \u6587\u4EF6\u3002","Or press \u2318/Ctrl+N. Every note is a .md file in your vault.")}},{id:"note-link",event:"note.wikilink",goal:1,title:G("\u7528 [[ \u94FE\u63A5\u53E6\u4E00\u7BC7\u7B14\u8BB0","Link another note with [["),go:{space:"amadeus"},spot:{anchor:"note-body",title:G("\u5728\u6B63\u6587\u91CC\u8F93\u5165 [[","Type [[ in the note"),body:G("\u4ECE\u5F39\u51FA\u7684\u5019\u9009\u91CC\u9009\u4E00\u7BC7\u7B14\u8BB0\uFF0C\u6309 Enter\uFF0C\u4E24\u7BC7\u5C31\u8FDE\u4E0A\u4E86\u3002","Pick a note from the suggestions and press Enter to link the two.")}},{id:"note-canvas",event:"note.canvas",goal:1,title:G("\u628A\u7B14\u8BB0\u5207\u5230\u753B\u5E03","Switch a note to the canvas"),go:{space:"amadeus",command:"amadeus-toggle-canvas"},spot:{anchor:"note-canvas",title:G("\u70B9\u300C\u753B\u5E03\u300D",'Click "Canvas"'),body:G("\u540C\u4E00\u7BC7\u7B14\u8BB0\u644A\u6210\u767D\u677F\uFF0C\u968F\u624B\u6446\uFF1B\u70B9\u300C\u6587\u6863\u300D\u5207\u56DE\u6765\uFF0C\u4E00\u4E2A\u5B57\u90FD\u4E0D\u53D8\u3002",'The same note opens as a whiteboard. Click "Document" to switch back; nothing changes.')}}],figure:{layout:"space",main:"doc",marks:[{slot:"left-top",label:G("\u5DE6\u680F\u300C\u65B0\u5EFA\u7B14\u8BB0\u300D",'"New note" in the left sidebar'),text:G("\u65B0\u5EFA\u7B14\u8BB0","New note")},{slot:"main-top",label:G("\u300C\u6587\u6863 / \u753B\u5E03\u300D\u80F6\u56CA","The Document / Canvas switch")},{slot:"right",label:G("\u53F3\u680F\u91CC\u7684\u300C\u53CD\u94FE\u300D","Backlinks in the right sidebar"),text:G("\u53CD\u94FE","Backlinks")}]}},{id:"theme",level:"lv1",icon:"sparkles",title:G("\u6362\u4E00\u8EAB\u4E3B\u9898","Make it look like yours"),tasks:[{id:"theme-change",event:"theme.change",goal:1,title:G("\u6362\u4E00\u4E2A\u4E3B\u9898","Pick another theme"),go:{settings:"theme"}}],figure:{layout:"settings",marks:[{slot:"nav",label:G("\u8BBE\u7F6E\u91CC\u7684\u300C\u5916\u89C2\u300D",'"Appearance" in Settings'),text:G("\u5916\u89C2","Appearance")},{slot:"section-1",label:G("\u8BBE\u8BA1\u8BED\u8A00","Design language"),text:G("\u8BBE\u8BA1\u8BED\u8A00","Design language")},{slot:"section-2",label:G("\u4E3B\u9898\u8272\u548C\u80CC\u666F\u8272","Theme and background colors"),text:G("\u914D\u8272","Colors")}]}},{id:"database",level:"lv2",icon:"database",title:G("\u6570\u636E\u5E93\uFF1A\u628A\u7B14\u8BB0\u53D8\u6210\u8868","Databases: turn notes into a table"),tasks:[{id:"base-create",event:"base.create",goal:1,title:G("\u65B0\u5EFA\u4E00\u4E2A\u6570\u636E\u5E93","Create a database"),go:{space:"amadeus"}}],figure:{layout:"space",main:"doc",marks:[{slot:"left-list",label:G("\u7B14\u8BB0\u6811\uFF1A\u53F3\u952E \u2192\u300C\u65B0\u5EFA Base\u300D",'Note tree: right-click \u2192 "New Base"')},{slot:"main-body",label:G("\u6B63\u6587\u91CC\u8F93\u5165 /\uFF0C\u9009\u300C\u591A\u7EF4\u8868\u300D",'Type / in a note and pick "Database"')}]}},{id:"market",level:"lv2",icon:"store",title:G("\u4ECE\u5546\u5E97\u88C5\u4E00\u4E2A\u63D2\u4EF6","Install a plugin from the store"),tasks:[{id:"market-install",event:"market.install",goal:1,title:G("\u88C5\u4E00\u4E2A\u63D2\u4EF6","Install a plugin"),go:{command:"open-market"}}],figure:{layout:"space",main:"doc",marks:[{slot:"ribbon-bottom",label:G("Ribbon \u5E95\u90E8\u7684\u300C\u5546\u5E97\u300D",'"Store" at the bottom of the ribbon')}]}},{id:"space",level:"lv2",icon:"layout-grid",title:G("\u5B58\u4E0B\u81EA\u5DF1\u7684 Space","Save a Space of your own"),tasks:[{id:"space-save",event:"space.save",goal:1,title:G("\u628A\u5F53\u524D\u5E03\u5C40\u5B58\u6210 Space","Save the current layout as a Space"),go:{command:"save-as-space"}}],figure:{layout:"space",main:"doc",marks:[{slot:"ribbon-plus",label:G("Space \u533A\u7684 \uFF0B","The + under the Spaces")},{slot:"main-top-right",label:G("\u53F3\u4E0A\u89D2\u7684\u6D6E\u52A8\u6309\u94AE","Floating buttons at the top right")}]}},{id:"calendar",level:"lv2",icon:"calendar-days",title:G("\u65E5\u5386\u548C\u5F85\u529E","Calendar and to-dos"),tasks:[{id:"calendar-event",event:"calendar.event",goal:1,title:G("\u5728\u65E5\u5386\u4E0A\u5EFA\u4E00\u4E2A\u65E5\u7A0B","Add an event to the calendar"),go:{space:"calendar"}},{id:"todo-done",event:"todo.done",goal:1,title:G("\u52FE\u6389\u4E00\u6761\u5F85\u529E","Tick off a to-do"),go:{space:"calendar"}}],figure:{layout:"space",main:"grid",marks:[{slot:"left-plus",label:G("\u5DE6\u680F\u300C\u65E5\u5386\u300D\u65C1\u7684 +",'The + next to "Calendars" in the left sidebar')},{slot:"main-body",label:G("\u65F6\u95F4\u683C\uFF1A\u5355\u51FB\u5EFA\u65E5\u7A0B","Time grid: click to add an event")},{slot:"right",label:G("\u53F3\u680F\u7684\u5F85\u529E","To-dos in the right sidebar"),text:G("\u5F85\u529E","To-dos")}]}},{id:"agent",level:"lv3",icon:"bot",title:G("\u521B\u5EFA\u4F60\u7684 Agent","Create your own agent"),tasks:[{id:"agent-create",event:"agent.create",goal:1,title:G("\u65B0\u5EFA\u4E00\u4E2A Agent","Create an agent"),go:{space:"agents"},spot:{anchor:"agent-new",title:G("\u70B9\u300C\u521B\u5EFA Agent\u300D",'Click "Create agent"'),body:G("\u8D77\u4E2A\u540D\u5B57\uFF0C\u5199\u51E0\u53E5\u5B83\u8BE5\u600E\u4E48\u505A\u4E8B\u3002","Give it a name and a few lines on how it should work.")}}]},{id:"muse",level:"lv3",icon:"sparkles",title:G("Muse\uFF1A\u8BA9\u7075\u611F\u81EA\u5DF1\u957F","Muse: ideas that grow on their own"),tasks:[{id:"muse-open",event:"muse.open",goal:1,title:G("\u53BB Muse \u770B\u4E00\u773C","Take a look at Muse"),go:{space:"muse"}}]},{id:"automation",level:"lv3",icon:"zap",title:G("\u81EA\u52A8\u5316\uFF1A\u5230\u70B9\u5C31\u505A","Automations: done on schedule"),tasks:[{id:"automation-create",event:"automation.create",goal:1,title:G("\u5EFA\u4E00\u6761\u81EA\u52A8\u5316","Create an automation"),go:{space:"automation"}}]},{id:"computer",level:"lv4",icon:"terminal",title:G("\u8BA9 Tangu \u64CD\u4F5C\u7535\u8111","Let Tangu use your computer"),tasks:[{id:"cu-use",event:"computer.use",goal:1,title:G("\u8BA9 Tangu \u7528\u4E00\u6B21\u7535\u8111","Have Tangu use your computer once"),go:{settings:"computer-use"},desktopOnly:!0}]},{id:"plugin",level:"lv4",icon:"code",title:G("\u5199\u4E00\u4E2A\u81EA\u5DF1\u7684\u63D2\u4EF6","Write a plugin of your own"),tasks:[{id:"plugin-dev",event:"plugin.local",goal:1,title:G("\u4ECE\u672C\u673A\u6587\u4EF6\u5939\u8F7D\u5165\u4E00\u4E2A\u63D2\u4EF6","Load a plugin from a local folder"),go:{settings:"amadeus-plugins"},desktopOnly:!0}]},{id:"mini-capsules",level:"new",icon:"layout-grid",title:G("Mini \u9876\u680F\u4E24\u9897\u80F6\u56CA","Two capsules on the Mini bar"),tasks:[{id:"mini-open",event:"mini.open",goal:1,title:G("\u6253\u5F00\u4E00\u6B21 Mini \u7A97\u53E3","Open the Mini window"),go:{command:"open-mini"},desktopOnly:!0}]},{id:"todo-standalone",level:"new",icon:"list-tree",title:G("\u5F85\u529E\u89C6\u56FE\u5355\u72EC\u6253\u5F00","Open the to-do view on its own"),tasks:[{id:"todo-open",event:"todo.open",goal:1,title:G("\u5355\u72EC\u6253\u5F00\u4E00\u6B21\u5F85\u529E\u89C6\u56FE","Open the to-do view by itself"),go:{space:"calendar"}}]}],Qt=e=>Bn.filter(t=>t.level===e),Fn=e=>Bn.find(t=>t.id===e);var Ft=ko.filter(e=>!e.version);function sn(e,t){let n=e.event.startsWith("own:");return t.count(n?e.event.slice(4):e.event,n)>=e.goal}var tr=(e,t)=>e.filter(n=>t.desktop||!n.desktopOnly);function rd(e,t){return Qt(e).every(n=>tr(n.tasks,t).every(r=>sn(r,t)))}function jr(e,t){let n=Ft.findIndex(r=>r.id===e);return n<=0||t.unlockAll?!0:Ft.slice(0,n).every(r=>rd(r.id,t))}function wo(e,t){return jr(e.level,t)?tr(e.tasks,t).every(n=>sn(n,t))?"done":"active":"locked"}function ki(e){return Ft.find(t=>!rd(t.id,e))?.id??null}function ad(e){let t={...e,unlockAll:!1},n=Ft[0].id;for(let r of Ft)jr(r.id,t)&&(n=r.id);return n}function Qg(e,t){let n=e.split(/[.+-]/).map(a=>Number.parseInt(a,10)||0),r=t.split(/[.+-]/).map(a=>Number.parseInt(a,10)||0);for(let a=0;a<Math.max(n.length,r.length);a++){let i=(n[a]??0)-(r[a]??0);if(i)return i<0?-1:1}return 0}function wi(e){let t=ko.find(n=>n.version);return t?.version&&e.appVersion&&Qg(e.appVersion,t.version)>=0?t.version:null}var id=e=>Bn.filter(t=>t.level!=="new"||!!wi(e));function sd(e,t){let n=tr(Qt(e).flatMap(r=>r.tasks),t);return{done:n.filter(r=>sn(r,t)).length,total:n.length}}var zi={zh:{agent:`\u9664\u4E86\u9ED8\u8BA4\u7684 Tangu\uFF0C\u4F60\u53EF\u4EE5\u6309\u7528\u9014\u5EFA\u81EA\u5DF1\u7684 Agent\uFF1A\u7ED9\u5B83\u540D\u5B57\u3001\u5DE5\u4F5C\u6307\u4EE4\u548C\u81EA\u5DF1\u7684\u8BB0\u5FC6\uFF0C\u8BA9\u5B83\u4E13\u95E8\u505A\u4E00\u7C7B\u4E8B\u3002
|
|
688
|
+
`;var oo=e=>typeof e=="string"?e:"";function sm(e){if(!e||typeof e!="object")return null;let t=e,n=typeof t.id=="string"?t.id.trim():typeof t.id=="number"&&Number.isFinite(t.id)?String(t.id):"",r=oo(t.titleZh),a=oo(t.bodyZh);return!n||!r.trim()&&!a.trim()?null:{id:n,titleZh:r,titleEn:oo(t.titleEn).trim()?oo(t.titleEn):null,bodyZh:a,bodyEn:oo(t.bodyEn).trim()?oo(t.bodyEn):null,format:t.format==="html"?"html":"markdown",publishedAt:oo(t.publishedAt)||null}}function lm(e,t){return t==="en"&&e.bodyEn?{lang:"en",title:e.titleEn??e.titleZh,body:e.bodyEn}:{lang:"zh",title:e.titleZh,body:e.bodyZh}}var cm=new Pa({gfm:!0,breaks:!0}),dm=["script","iframe","frame","frameset","object","embed","applet","portal","form","input","textarea","select","option","button","link","meta","base","noscript"],um=/^(?:https?:|mailto:|#)/i;function Al(e){return va.sanitize(e,{FORCE_BODY:!0,RETURN_DOM_FRAGMENT:!0,FORBID_TAGS:dm,ALLOWED_URI_REGEXP:um})}function pm(e,t){let n=t==="markdown"?cm.parse(e,{async:!1}):e;return Al(n)}var Nr=null;function fm(){if(Nr===null)try{let e=Al('<p onclick="1"><a href="javascript:void 0">a</a></p><script>1<\/script><iframe></iframe>');Nr=va.isSupported&&!e.querySelector("script, iframe, [onclick], a[href]")}catch{Nr=!1}return Nr}function mm(e){try{let t=new URL(String(e??"").trim());return t.protocol==="http:"||t.protocol==="https:"?t.href:null}catch{return null}}var gm="http://www.w3.org/1999/xlink";function Or(e){let t=e.target,n=t&&typeof t.closest=="function"?t.closest("a, area"):null;if(!n||(e.preventDefault(),e.type!=="click"))return;let r=mm(n.getAttribute("href")??n.getAttributeNS(gm,"href"));if(r)try{se().openExternal?.(r)?.catch(()=>{})}catch{}}function Tl(e){return e.shadowRoot??e.attachShadow({mode:"open"})}function hm(e){let{ctx:t,ann:n}=e,[r,a]=A(()=>Ze(t.getLocale?.()));oe(()=>{a(Ze(t.getLocale?.()));let p=t.subscribeLocale?.(m=>a(Ze(m)));return()=>{typeof p=="function"&&p()}},[t]);let i=Ot(()=>zo(r),[r]),s=lm(n,r),l=ce(null),c=ce(null),d=ce(null),g=ce(null),u=ce(e.onClose);return u.current=e.onClose,oe(()=>{let p=document.activeElement instanceof HTMLElement?document.activeElement:null;l.current?.focus();let m=v=>{if(v.key==="Escape"){v.preventDefault(),v.stopPropagation(),u.current();return}if(v.key!=="Tab")return;let w=c.current,k=d.current,z=l.current;if(!w||!k||!z)return;let x=document.activeElement;if(!x||!z.contains(x)){v.preventDefault(),(v.shiftKey?k:w).focus();return}v.shiftKey&&(x===w||x===z)?(v.preventDefault(),k.focus()):!v.shiftKey&&x===k&&(v.preventDefault(),w.focus())},f=v=>{let w=l.current;w&&v.target instanceof Node&&!w.contains(v.target)&&w.focus()};return window.addEventListener("keydown",m,!0),document.addEventListener("focusin",f,!0),()=>{window.removeEventListener("keydown",m,!0),document.removeEventListener("focusin",f,!0),p?.isConnected&&p.focus()}},[]),oe(()=>{let p=g.current;if(!p)return;let m=Tl(p);return m.addEventListener("click",Or),m.addEventListener("auxclick",Or),()=>{m.removeEventListener("click",Or),m.removeEventListener("auxclick",Or)}},[]),oe(()=>{let p=g.current;if(!p)return;let m=document.createElement("style");m.textContent=Cl;let f=document.createElement("div");f.className="doc",f.appendChild(pm(s.body,n.format)),Tl(p).replaceChildren(m,f)},[s.body,n.format]),o("div",{class:"fx-ann-backdrop",children:[o("style",{children:_l}),o("section",{ref:l,class:"fx-ann",role:"dialog","aria-modal":"true","aria-labelledby":"fx-ann-title","aria-describedby":"fx-ann-body",tabIndex:-1,lang:s.lang==="zh"?"zh-CN":"en","data-announcement-id":n.id,children:[o("button",{ref:c,type:"button",class:"fx-ann-close","aria-label":i("ann.close"),onClick:()=>u.current(),children:o(J,{name:"x",size:16})}),o("div",{class:"fx-ann-eyebrow",children:i("ann.eyebrow")}),o("h2",{id:"fx-ann-title",class:"fx-ann-title",children:s.title}),o("div",{class:"fx-ann-body",children:o("div",{ref:g,id:"fx-ann-body",class:"fx-ann-doc"})}),o("div",{class:"fx-ann-footer",children:o("button",{ref:d,type:"button",class:"fx-ann-ok",onClick:()=>u.current(),children:i("ann.ok")})})]})]})}function bm(e){try{return new URLSearchParams(e||"").has("window")}catch{return!1}}function vm(e=document,t=12e3){let n=e.getElementById("tangu-splash");return n?.parentNode?new Promise(r=>{let a=()=>{i.disconnect(),clearTimeout(s),r()},i=new MutationObserver(()=>{n.isConnected||a()});i.observe(n.parentNode,{childList:!0});let s=setTimeout(a,t)}):Promise.resolve()}function El(e,t=window){let n=bn(t?.tangu);if(!e||!n?.cloudFetch||!eo(n)||bm(t.location?.search))return null;let r=0,a=!1,i=null,s=null,l=()=>{s?.done(),s=null},c=Promise.resolve(),d=(p,m)=>{let f=document.createElement("div");f.className="fx-ann-root",document.body.appendChild(f);let v=!1,w=k=>{v||(v=!0,i?.id===p.id&&(i=null),He(null,f),f.remove(),m?.done(),k&&(c=Q(`/announcements/${encodeURIComponent(p.id)}/seen`,{method:"POST"})))};i={id:p.id,finish:w},He(o(hm,{ctx:e,ann:p,onClose:()=>w(!0)}),f)},g=async()=>{let p=++r;await c;let m=await Q("/announcements/pending");if(a||p!==r||!m.ok)return;let f=sm(m.data?.announcement);if(!f||i||!fm()||(await vm(),a||p!==r||i))return;let v=e.app?.queuePopup?.();if(v&&(l(),s=v,await v.ready,s===v&&(s=null),a||p!==r||i)){v.done();return}d(f,v)},u=n.onAuthChanged?.(p=>{i?.finish(!1),l(),p?.loggedIn?g():r++});return g(),{check:g,dispose(){a=!0,r++,typeof u=="function"&&u(),i?.finish(!1),l()}}}function Pl(e){return typeof e!="string"?{ok:!1,rule:"format"}:e.length<8?{ok:!1,rule:"min"}:e.length>64?{ok:!1,rule:"max"}:/\s/.test(e)?{ok:!1,rule:"space"}:/[a-z]/.test(e)?/[A-Z]/.test(e)?/[^A-Za-z0-9]/.test(e)?{ok:!0}:{ok:!1,rule:"special"}:{ok:!1,rule:"upper"}:{ok:!1,rule:"lower"}}function Ml(e){return{length:e.length>=8&&e.length<=64,lower:/[a-z]/.test(e),upper:/[A-Z]/.test(e),special:/[^A-Za-z0-9]/.test(e),space:e.length>0&&!/\s/.test(e)}}var Il={\u5BC6\u7801\u683C\u5F0F\u4E0D\u6B63\u786E:"format","\u5BC6\u7801\u81F3\u5C11 8 \u4F4D":"min","\u5BC6\u7801\u4E0D\u80FD\u8D85\u8FC7 64 \u4F4D":"max",\u5BC6\u7801\u4E0D\u80FD\u5305\u542B\u7A7A\u683C:"space",\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5C0F\u5199\u5B57\u6BCD:"lower",\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5927\u5199\u5B57\u6BCD:"upper",\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u7279\u6B8A\u5B57\u7B26:"special"};var Rl={no_reset_card:"err.noResetCard",invalid_type:"err.generic",invalid_count:"err.invalidCount",insufficient_points:"err.insufficientPoints",price_changed:"err.priceChanged",insufficient_main_quota:"err.insufficientMainQuota",background_unavailable:"err.backgroundUnavailable",invalid_percent:"err.generic",invalid_request:"err.generic",invalid_invite_code:"err.invalidInviteCode",already_used:"err.inviteAlreadyUsed",window_expired:"err.inviteWindowExpired",ITEM_NOT_FOUND:"backpack.unavailable",ITEM_NOT_ACTIVE:"backpack.unavailable",ITEM_NOT_USABLE:"backpack.notUsable",ITEM_EFFECT_UNAVAILABLE:"backpack.quotaUnavailable",FEATURE_DISABLED:"err.featureDisabled",INSUFFICIENT_POINTS:"err.insufficientPoints",OUT_OF_STOCK:"store.soldOut",LIMIT_REACHED:"store.limitReached",NOT_AVAILABLE:"store.unavailable",NOT_POINTS_PURCHASABLE:"store.unavailable",CAPTCHA_FAILED:"err.captcha",machine_username:"profile.blocked.machineUsername",publish_blocked:"profile.blocked.publishBlocked",invalid_settings:"profile.invalid"},Ll={"Current password is incorrect":"err.currentPasswordWrong","Current and new password are required":"err.passwordRequired",\u9A8C\u8BC1\u7801\u65E0\u6548\u6216\u5DF2\u8FC7\u671F:"err.codeInvalid","Invalid or expired verification code":"err.codeInvalid",\u8D26\u53F7\u6216\u9A8C\u8BC1\u7801\u9519\u8BEF:"err.codeInvalid",\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801:"err.codeRequired","Email already in use":"err.emailInUse","Phone number already in use":"err.phoneInUse","Invalid email format":"err.emailInvalid","Email is required":"err.emailInvalid","Invalid phone number format":"err.phoneInvalid","Phone number is required":"err.phoneInvalid","Invalid phone number or email format":"err.targetInvalid","Please wait before requesting another code":"err.codeCooldown","Failed to send verification code":"err.codeSendFailed","Invalid target for account deletion":"err.deleteTargetInvalid","\u8EAB\u4EFD\u9A8C\u8BC1\u5931\u8D25\uFF0C\u65E0\u6CD5\u6CE8\u9500\u8D26\u6237":"err.deleteVerifyFailed",\u7BA1\u7406\u5458\u8D26\u53F7\u4E0D\u80FD\u81EA\u52A9\u6CE8\u9500:"err.adminCannotDelete",\u79EF\u5206\u4F59\u989D\u4E0D\u8DB3:"err.insufficientPoints","\u5151\u6362\u5F20\u6570\u9700\u4E3A 1-50 \u7684\u6574\u6570":"err.invalidCount",\u6CA1\u6709\u53EF\u7528\u7684\u91CD\u7F6E\u5361:"err.noResetCard","\u4E3B\u989D\u5EA6\u5DF2\u7528\u5B8C,\u6CA1\u6709\u53EF\u8F6C\u5165\u7684\u989D\u5EA6":"err.insufficientMainQuota",\u540E\u53F0\u989D\u5EA6\u6682\u4E0D\u53EF\u7528:"err.backgroundUnavailable",\u9080\u8BF7\u7801\u65E0\u6548\u6216\u5DF2\u5931\u6548:"err.invalidInviteCode","\u5DF2\u8D85\u8FC7\u6CE8\u518C\u540E 7 \u5929\u7684\u8865\u586B\u671F":"err.inviteWindowExpired",\u4F60\u5DF2\u4F7F\u7528\u8FC7\u9080\u8BF7\u7801:"err.inviteAlreadyUsed","You have already used an invite code":"err.inviteAlreadyUsed","Cannot use your own invite code":"err.inviteOwnCode","Invite code is required":"err.inviteEmpty","code is required":"err.redeemEmpty","Redemption code not found":"err.redeemNotFound","Redemption code is not active":"err.redeemInactive","Redemption code has expired":"err.redeemExpired","Redemption code has reached maximum uses":"err.redeemUsedUp","You have already used this code the maximum number of times":"err.redeemUserLimit",avatar_too_large:"err.avatarTooLarge","description is required":"err.feedbackEmpty","description too long (max 10000 chars)":"err.feedbackTooLong","content is required":"err.replyEmpty","content too long (max 10000 chars)":"err.replyTooLong","Ticket not found":"err.ticketNotFound","Too many attachments (max 5)":"err.tooManyImages","Attachment type not allowed (image / json / text only)":"err.imageType","\u4EBA\u673A\u9A8C\u8BC1\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5":"err.captcha",\u5E94\u7528\u4E0D\u5B58\u5728\u6216\u4E0D\u5C5E\u4E8E\u4F60:"err.webPageGone","\u5E94\u7528\u5DF2\u88AB\u505C\u7528\uFF0C\u65E0\u6CD5\u7533\u8BF7\u4E0A\u67B6":"web.disabledHint",\u6CA1\u6709\u5BF9\u5E94\u7684\u4E0A\u67B6\u7533\u8BF7:"err.listingGone","\u8BF7\u586B\u5199\u5E94\u7528\u7B80\u4ECB\uFF08300 \u5B57\u4EE5\u5185\uFF09":"err.listingSummary"},ja={format:"pw.rule.format",min:"pw.rule.min",max:"pw.rule.max",space:"pw.rule.space",lower:"pw.rule.lower",upper:"pw.rule.upper",special:"pw.rule.special"};function ym(e){if(e.code&&Rl[e.code])return Rl[e.code];if(e.detail){if(Ll[e.detail])return Ll[e.detail];let t=Il[e.detail];if(t)return ja[t];if(e.detail.startsWith("Attachment exceeds 5MB"))return"err.imageTooLarge"}return null}function Bt(e){let t=ym(e);return t?{key:t}:to(e)?{key:"err.signedOut"}:e.status===0?{key:"err.network"}:e.status===401?{key:"err.session"}:e.status===429?{key:"err.tooFrequent"}:e.detail?{raw:e.detail}:e.status>=500?{key:"err.server",vars:{status:e.status}}:{key:"err.generic"}}function Zo(e){let t=e.trim();return t?/cancelled\.?$/i.test(t)?null:t==="A sign-in is already in progress."?{key:"err.loginInProgress"}:t.startsWith("\u767B\u5F55\u8D85\u65F6")?{key:"err.loginTimeout"}:t.startsWith("\u767B\u5F55\u7801\u5DF2\u8FC7\u671F")?{key:"err.loginCodeExpired"}:t.startsWith("\u65E0\u6CD5\u8FDE\u63A5")?{key:"err.network"}:t.startsWith("\u4E91\u7AEF\u4E0D\u652F\u6301 CLI \u767B\u5F55")?{key:"err.loginUnsupported"}:t.startsWith("\u8BF7\u5148\u586B\u5199 Forsion \u4E91\u7AEF\u5730\u5740")?{key:"err.noCloudUrl"}:t.startsWith("Account is no longer signed in")?{key:"err.accountGone"}:{raw:t}:{key:"err.generic"}}var Wa=Ir(null);function ae(){let e=Ua(Wa);if(!e)throw new Error("forsion-extend: page rendered outside its host root");return e}var Ke=()=>ae().t;function qe(){let e=ce(!0);return oe(()=>(e.current=!0,()=>{e.current=!1}),[]),e}var Dl={pending:!1,error:null,success:null,captcha:!1};function ue(){let e=qe(),[t,n]=A(Dl),r=ce(!1),a=hn(async s=>{if(r.current)return;r.current=!0,n({pending:!0,error:null,success:null,captcha:!1});let l;try{l=await s()}catch(c){l={error:{raw:String(c?.message||c)}}}r.current=!1,e.current&&n({pending:!1,error:l?.error??null,success:l?.success??null,captcha:!!l?.captcha})},[]),i=hn(()=>{r.current||n(Dl)},[]);return{...t,run:a,clear:i}}var De=e=>({error:Bt(e),captcha:e.status===403&&e.code==="CAPTCHA_FAILED"});function Nl(){let[e,t]=A(0),n=ce(null);oe(()=>()=>{n.current&&clearInterval(n.current)},[]);let r=hn((i=60)=>{n.current&&clearInterval(n.current),t(i),n.current=setInterval(()=>{t(s=>s<=1?(n.current&&clearInterval(n.current),n.current=null,0):s-1)},1e3)},[]),a=hn(()=>{n.current&&clearInterval(n.current),n.current=null,t(0)},[]);return{left:e,start:r,stop:a}}function Oe(e){let[t,n]=A({state:"loading"}),r=ce(0),a=ce(e);a.current=e;let i=hn((c=!1)=>{let d=++r.current;c||n({state:"loading"}),(async()=>{let g;try{g=await a.current()}catch(u){g={ok:!1,status:0,code:null,detail:null,transport:String(u?.message||u)}}d===r.current&&(g.ok?n({state:"ready",data:g.data,gen:d}):to(g)?n({state:"signedOut"}):(g.status===401&&se().authStatus?.().catch(()=>{}),n({state:"error",fail:g})))})()},[]);oe(()=>{i();let c=se().onAuthChanged?.(()=>i());return()=>{r.current++,c?.()}},[i]);let s=hn(()=>i(),[i]),l=hn(()=>i(!0),[i]);switch(t.state){case"ready":{let c=t.gen,d=g=>n(u=>u.state==="ready"&&u.gen===c?{...u,data:g(u.data)}:u);return{state:"ready",data:t.data,reload:l,update:d}}case"error":return{state:"error",error:Bt(t.fail),retry:s};default:return t}}function Br(e){let t=String(e||"").trim();if(!t)return"";let n=t.startsWith("+")?4:3;return t.length<=n+4?`${t.slice(0,2)}***`:`${t.slice(0,n)}****${t.slice(-4)}`}function Fr(e){let t=String(e||"").trim(),n=t.lastIndexOf("@");if(n<=0)return t?`${t.slice(0,1)}***`:"";let r=t.slice(0,n);return`${r.slice(0,r.length<=2?1:2)}***${t.slice(n)}`}function Qo(e){let t=String(e||"").trim().toLowerCase()||"free";return t.charAt(0).toUpperCase()+t.slice(1)}var xm=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Ol(e,t){let n=String(e||"").trim(),r,a,i=/^(\d{4})-(\d{2})-(\d{2})$/.exec(n);if(i)r=Number(i[2]),a=Number(i[3]);else{let s=new Date(n);if(!n||Number.isNaN(s.getTime()))return null;let l=new Intl.DateTimeFormat("en-US",{timeZone:"Asia/Shanghai",month:"numeric",day:"numeric"}).formatToParts(s);r=Number(l.find(c=>c.type==="month")?.value),a=Number(l.find(c=>c.type==="day")?.value)}return!(r>=1&&r<=12)||!(a>=1&&a<=31)?null:t==="zh"?`${r}\u6708${a}\u65E5`:`${xm[r-1]} ${a}`}var Ga=e=>e==="zh"?"zh-CN":"en-US";function Bl(e){if(e==null||e==="")return null;let t=new Date(typeof e=="string"&&/^\d+$/.test(e)?Number(e):e);return Number.isNaN(t.getTime())?null:t}function yn(e,t){let n=Bl(e);return n?new Intl.DateTimeFormat(Ga(t),{year:"numeric",month:"short",day:"numeric"}).format(n):"\u2014"}function Gt(e,t){let n=Bl(e);return n?new Intl.DateTimeFormat(Ga(t),{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1}).format(n):"\u2014"}function Pe(e,t){let n=typeof e=="number"?e:Number(e);return Number.isFinite(n)?new Intl.NumberFormat(Ga(t),{maximumFractionDigits:2}).format(n):"\u2014"}var ro=(e=>(e[e.Border=-1]="Border",e[e.Data=0]="Data",e[e.Function=1]="Function",e[e.Position=2]="Position",e[e.Timing=3]="Timing",e[e.Alignment=4]="Alignment",e))(ro||{}),km=[0,1],$l=[1,0],Ul=[2,3],Hl=[3,2],wm={L:km,M:$l,Q:Ul,H:Hl},zm=/^\d*$/,Sm=/^[A-Z0-9 $%*+./:-]*$/,Ka="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",Za=1,Qa=40,Fl=3,_m=3,$r=40,Cm=10,ql=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],Vl=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],Xa=class{constructor(t,n,r,a){if(this.version=t,this.ecc=n,t<Za||t>Qa)throw new RangeError("Version value out of range");if(a<-1||a>7)throw new RangeError("Mask value out of range");this.size=t*4+17;let i=Array.from({length:this.size}).fill(!1);for(let l=0;l<this.size;l++)this.modules.push(i.slice()),this.types.push(i.map(()=>0));this.drawFunctionPatterns();let s=this.addEccAndInterleave(r);if(this.drawCodewords(s),a===-1){let l=1e9;for(let c=0;c<8;c++){this.applyMask(c),this.drawFormatBits(c);let d=this.getPenaltyScore();d<l&&(a=c,l=d),this.applyMask(c)}}this.mask=a,this.applyMask(a),this.drawFormatBits(a)}size;mask;modules=[];types=[];getModule(t,n){return t>=0&&t<this.size&&n>=0&&n<this.size&&this.modules[n][t]}drawFunctionPatterns(){for(let r=0;r<this.size;r++)this.setFunctionModule(6,r,r%2===0,ro.Timing),this.setFunctionModule(r,6,r%2===0,ro.Timing);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let t=this.getAlignmentPatternPositions(),n=t.length;for(let r=0;r<n;r++)for(let a=0;a<n;a++)r===0&&a===0||r===0&&a===n-1||r===n-1&&a===0||this.drawAlignmentPattern(t[r],t[a]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(t){let n=this.ecc[1]<<3|t,r=n;for(let i=0;i<10;i++)r=r<<1^(r>>>9)*1335;let a=(n<<10|r)^21522;for(let i=0;i<=5;i++)this.setFunctionModule(8,i,xn(a,i));this.setFunctionModule(8,7,xn(a,6)),this.setFunctionModule(8,8,xn(a,7)),this.setFunctionModule(7,8,xn(a,8));for(let i=9;i<15;i++)this.setFunctionModule(14-i,8,xn(a,i));for(let i=0;i<8;i++)this.setFunctionModule(this.size-1-i,8,xn(a,i));for(let i=8;i<15;i++)this.setFunctionModule(8,this.size-15+i,xn(a,i));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let t=this.version;for(let r=0;r<12;r++)t=t<<1^(t>>>11)*7973;let n=this.version<<12|t;for(let r=0;r<18;r++){let a=xn(n,r),i=this.size-11+r%3,s=Math.floor(r/3);this.setFunctionModule(i,s,a),this.setFunctionModule(s,i,a)}}drawFinderPattern(t,n){for(let r=-4;r<=4;r++)for(let a=-4;a<=4;a++){let i=Math.max(Math.abs(a),Math.abs(r)),s=t+a,l=n+r;s>=0&&s<this.size&&l>=0&&l<this.size&&this.setFunctionModule(s,l,i!==2&&i!==4,ro.Position)}}drawAlignmentPattern(t,n){for(let r=-2;r<=2;r++)for(let a=-2;a<=2;a++)this.setFunctionModule(t+a,n+r,Math.max(Math.abs(a),Math.abs(r))!==1,ro.Alignment)}setFunctionModule(t,n,r,a=ro.Function){this.modules[n][t]=r,this.types[n][t]=a}addEccAndInterleave(t){let n=this.version,r=this.ecc;if(t.length!==Ur(n,r))throw new RangeError("Invalid argument");let a=Vl[r[0]][n],i=ql[r[0]][n],s=Math.floor(Ja(n)/8),l=a-s%a,c=Math.floor(s/a),d=[],g=Dm(i);for(let p=0,m=0;p<a;p++){let f=t.slice(m,m+c-i+(p<l?0:1));m+=f.length;let v=Nm(f,g);p<l&&f.push(0),d.push(f.concat(v))}let u=[];for(let p=0;p<d[0].length;p++)d.forEach((m,f)=>{(p!==c-i||f>=l)&&u.push(m[p])});return u}drawCodewords(t){if(t.length!==Math.floor(Ja(this.version)/8))throw new RangeError("Invalid argument");let n=0;for(let r=this.size-1;r>=1;r-=2){r===6&&(r=5);for(let a=0;a<this.size;a++)for(let i=0;i<2;i++){let s=r-i,c=(r+1&2)===0?this.size-1-a:a;!this.types[c][s]&&n<t.length*8&&(this.modules[c][s]=xn(t[n>>>3],7-(n&7)),n++)}}}applyMask(t){if(t<0||t>7)throw new RangeError("Mask value out of range");for(let n=0;n<this.size;n++)for(let r=0;r<this.size;r++){let a;switch(t){case 0:a=(r+n)%2===0;break;case 1:a=n%2===0;break;case 2:a=r%3===0;break;case 3:a=(r+n)%3===0;break;case 4:a=(Math.floor(r/3)+Math.floor(n/2))%2===0;break;case 5:a=r*n%2+r*n%3===0;break;case 6:a=(r*n%2+r*n%3)%2===0;break;case 7:a=((r+n)%2+r*n%3)%2===0;break;default:throw new Error("Unreachable")}!this.types[n][r]&&a&&(this.modules[n][r]=!this.modules[n][r])}}getPenaltyScore(){let t=0;for(let i=0;i<this.size;i++){let s=!1,l=0,c=[0,0,0,0,0,0,0];for(let d=0;d<this.size;d++)this.modules[i][d]===s?(l++,l===5?t+=Fl:l>5&&t++):(this.finderPenaltyAddHistory(l,c),s||(t+=this.finderPenaltyCountPatterns(c)*$r),s=this.modules[i][d],l=1);t+=this.finderPenaltyTerminateAndCount(s,l,c)*$r}for(let i=0;i<this.size;i++){let s=!1,l=0,c=[0,0,0,0,0,0,0];for(let d=0;d<this.size;d++)this.modules[d][i]===s?(l++,l===5?t+=Fl:l>5&&t++):(this.finderPenaltyAddHistory(l,c),s||(t+=this.finderPenaltyCountPatterns(c)*$r),s=this.modules[d][i],l=1);t+=this.finderPenaltyTerminateAndCount(s,l,c)*$r}for(let i=0;i<this.size-1;i++)for(let s=0;s<this.size-1;s++){let l=this.modules[i][s];l===this.modules[i][s+1]&&l===this.modules[i+1][s]&&l===this.modules[i+1][s+1]&&(t+=_m)}let n=0;for(let i of this.modules)n=i.reduce((s,l)=>s+(l?1:0),n);let r=this.size*this.size,a=Math.ceil(Math.abs(n*20-r*10)/r)-1;return t+=a*Cm,t}getAlignmentPatternPositions(){if(this.version===1)return[];{let t=Math.floor(this.version/7)+2,n=this.version===32?26:Math.ceil((this.version*4+4)/(t*2-2))*2,r=[6];for(let a=this.size-7;r.length<t;a-=n)r.splice(1,0,a);return r}}finderPenaltyCountPatterns(t){let n=t[1],r=n>0&&t[2]===n&&t[3]===n*3&&t[4]===n&&t[5]===n;return(r&&t[0]>=n*4&&t[6]>=n?1:0)+(r&&t[6]>=n*4&&t[0]>=n?1:0)}finderPenaltyTerminateAndCount(t,n,r){return t&&(this.finderPenaltyAddHistory(n,r),n=0),n+=this.size,this.finderPenaltyAddHistory(n,r),this.finderPenaltyCountPatterns(r)}finderPenaltyAddHistory(t,n){n[0]===0&&(t+=this.size),n.pop(),n.unshift(t)}};function kn(e,t,n){if(t<0||t>31||e>>>t)throw new RangeError("Value out of range");for(let r=t-1;r>=0;r--)n.push(e>>>r&1)}function xn(e,t){return(e>>>t&1)!==0}var er=class{constructor(t,n,r){if(this.mode=t,this.numChars=n,this.bitData=r,n<0)throw new RangeError("Invalid argument");this.bitData=r.slice()}getData(){return this.bitData.slice()}},Tm=[1,10,12,14],Am=[2,9,11,13],Em=[4,8,16,16];function jl(e,t){return e[Math.floor((t+7)/17)+1]}function Wl(e){let t=[];for(let n of e)kn(n,8,t);return new er(Em,e.length,t)}function Pm(e){if(!Gl(e))throw new RangeError("String contains non-numeric characters");let t=[];for(let n=0;n<e.length;){let r=Math.min(e.length-n,3);kn(Number.parseInt(e.substring(n,n+r),10),r*3+1,t),n+=r}return new er(Tm,e.length,t)}function Mm(e){if(!Kl(e))throw new RangeError("String contains unencodable characters in alphanumeric mode");let t=[],n;for(n=0;n+2<=e.length;n+=2){let r=Ka.indexOf(e.charAt(n))*45;r+=Ka.indexOf(e.charAt(n+1)),kn(r,11,t)}return n<e.length&&kn(Ka.indexOf(e.charAt(n)),6,t),new er(Am,e.length,t)}function Im(e){return e===""?[]:Gl(e)?[Pm(e)]:Kl(e)?[Mm(e)]:[Wl(Lm(e))]}function Gl(e){return zm.test(e)}function Kl(e){return Sm.test(e)}function Rm(e,t){let n=0;for(let r of e){let a=jl(r.mode,t);if(r.numChars>=1<<a)return Number.POSITIVE_INFINITY;n+=4+a+r.bitData.length}return n}function Lm(e){e=encodeURI(e);let t=[];for(let n=0;n<e.length;n++)e.charAt(n)!=="%"?t.push(e.charCodeAt(n)):(t.push(Number.parseInt(e.substring(n+1,n+3),16)),n+=2);return t}function Ja(e){if(e<Za||e>Qa)throw new RangeError("Version number out of range");let t=(16*e+128)*e+64;if(e>=2){let n=Math.floor(e/7)+2;t-=(25*n-10)*n-55,e>=7&&(t-=36)}return t}function Ur(e,t){return Math.floor(Ja(e)/8)-ql[t[0]][e]*Vl[t[0]][e]}function Dm(e){if(e<1||e>255)throw new RangeError("Degree out of range");let t=[];for(let r=0;r<e-1;r++)t.push(0);t.push(1);let n=1;for(let r=0;r<e;r++){for(let a=0;a<t.length;a++)t[a]=Ya(t[a],n),a+1<t.length&&(t[a]^=t[a+1]);n=Ya(n,2)}return t}function Nm(e,t){let n=t.map(r=>0);for(let r of e){let a=r^n.shift();n.push(0),t.forEach((i,s)=>n[s]^=Ya(i,a))}return n}function Ya(e,t){if(e>>>8||t>>>8)throw new RangeError("Byte out of range");let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(t>>>r&1)*e;return n}function Om(e,t,n=1,r=40,a=-1,i=!0){if(!(Za<=n&&n<=r&&r<=Qa)||a<-1||a>7)throw new RangeError("Invalid value");let s,l;for(s=n;;s++){let u=Ur(s,t)*8,p=Rm(e,s);if(p<=u){l=p;break}if(s>=r)throw new RangeError("Data too long")}for(let u of[$l,Ul,Hl])i&&l<=Ur(s,u)*8&&(t=u);let c=[];for(let u of e){kn(u.mode[0],4,c),kn(u.numChars,jl(u.mode,s),c);for(let p of u.getData())c.push(p)}let d=Ur(s,t)*8;kn(0,Math.min(4,d-c.length),c),kn(0,(8-c.length%8)%8,c);for(let u=236;c.length<d;u^=253)kn(u,8,c);let g=Array.from({length:Math.ceil(c.length/8)},()=>0);return c.forEach((u,p)=>g[p>>>3]|=u<<7-(p&7)),new Xa(s,t,g,a)}function Xl(e,t){let{ecc:n="L",boostEcc:r=!1,minVersion:a=1,maxVersion:i=40,maskPattern:s=-1,border:l=1}=t||{},c=typeof e=="string"?Im(e):Array.isArray(e)?[Wl(e)]:void 0;if(!c)throw new Error(`uqr only supports encoding string and binary data, but got: ${typeof e}`);let d=Om(c,wm[n],a,i,s,r),g=Bm({version:d.version,maskPattern:d.mask,size:d.size,data:d.modules,types:d.types},l);return t?.invert&&(g.data=g.data.map(u=>u.map(p=>!p))),t?.onEncoded?.(g),g}function Bm(e,t=1){if(!t)return e;let{size:n}=e,r=n+t*2;e.size=r,e.data.forEach(i=>{for(let s=0;s<t;s++)i.unshift(!1),i.push(!1)});for(let i=0;i<t;i++)e.data.unshift(Array.from({length:r},s=>!1)),e.data.push(Array.from({length:r},s=>!1));let a=ro.Border;e.types.forEach(i=>{for(let s=0;s<t;s++)i.unshift(a),i.push(a)});for(let i=0;i<t;i++)e.types.unshift(Array.from({length:r},s=>a)),e.types.push(Array.from({length:r},s=>a));return e}function ke(e){return o("section",{class:`settings-panel fx-panel${e.danger?" fx-panel--danger":""}`,"aria-label":e.label,children:[o("div",{class:`settings-panel-head${e.actions?" settings-panel-head--actions":""}`,children:[e.icon&&o("span",{class:"settings-panel-icon",children:o(J,{name:e.icon,size:16})}),o("div",{children:[o("strong",{children:e.title}),e.desc&&o("p",{children:e.desc})]}),e.actions&&o("div",{class:"settings-panel-actions settings-panel-actions--wide",children:e.actions})]}),e.children]})}function Ve(e){return o("div",{class:`settings-control-row settings-setting-row fx-row fx-block${e.class?` ${e.class}`:""}`,children:[o("div",{class:"settings-control-copy",children:o("span",{children:[o("strong",{children:e.label}),e.desc&&o("small",{children:e.desc})]})}),e.children!==void 0&&e.children!==null&&o("div",{class:"settings-row-control fx-row-control",children:e.children})]})}function Me(e){return o("div",{class:`fx-sub${e.class?` ${e.class}`:""}`,children:e.children})}function Qt(e){return o("button",{type:"button",role:"switch","aria-checked":e.checked,"aria-label":e.label,class:`settings-switch${e.checked?" active":""}`,disabled:e.disabled,onClick:()=>e.onChange(!e.checked),children:o("span",{})})}function q(e){let t=e.variant??"ghost",n=t==="danger-solid"?"btn sm danger fx-danger-solid":`btn sm ${t}`;return o("button",{type:e.submit?"submit":"button",class:n,disabled:e.disabled||e.pending,"aria-busy":e.pending||void 0,"aria-label":e.label,title:e.title,"data-armed":e.armed?"true":void 0,onClick:e.onClick,children:[e.pending&&o(wo,{}),e.children]})}var Fm=5e3;function Kt(e){let[t,n]=A(!1),r=ce(null),a=()=>{r.current&&clearTimeout(r.current),r.current=null,n(!1)};oe(()=>()=>{r.current&&clearTimeout(r.current)},[]),oe(()=>{(e.pending||e.disabled)&&a()},[e.pending,e.disabled]);let i=()=>{if(!t){n(!0),r.current&&clearTimeout(r.current),r.current=setTimeout(()=>{r.current=null,n(!1)},Fm);return}a(),e.onConfirm()},s=e.variant??"ghost";return o(q,{variant:t?s==="danger"||s==="danger-solid"?"danger-solid":"primary":s,armed:t,pending:e.pending,disabled:e.disabled,onClick:i,children:t?e.confirmLabel:e.label})}function pe(e){let t=Ke(),{a:n}=e;return n.error?o("div",{class:"fx-msg is-error",role:"alert",children:[o("span",{children:Wt(n.error,t)}),n.captcha&&o("button",{type:"button",class:"fx-link",onClick:()=>void no(e.captchaSection??"security"),children:[t("common.openInBrowser")," ",o(J,{name:"external",size:12})]})]}):n.success?o("div",{class:"fx-msg is-ok",role:"status",children:Wt(n.success,t)}):null}function de(e){return o("p",{class:`fx-note${e.tone?` is-${e.tone}`:""}`,children:e.children})}function ut(e){return o("div",{class:"settings-empty-row fx-block",children:e.children})}function tr(e){let t=Ke(),n=e.display;return o("div",{class:`fx-quota${n.low?" is-low":""}`,children:[o("div",{class:"fx-quota-top",children:[o("span",{class:"fx-quota-label",children:e.label}),o("span",{class:"fx-quota-value",children:n.unlimited?t("common.unlimited"):n.text})]}),o("div",{class:"fx-bar",role:"progressbar","aria-label":e.label,"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":n.pct,"aria-valuetext":n.unlimited?t("common.unlimited"):n.text,children:o("span",{style:{width:`${n.pct}%`}})}),e.note&&o("div",{class:"fx-quota-note",children:e.note})]})}function St(e){return o("div",{class:"seg fx-seg",role:"radiogroup","aria-label":e.label,children:e.options.map(t=>o("button",{type:"button",role:"radio","aria-checked":t.value===e.value,class:t.value===e.value?"active":"",onClick:()=>{t.value!==e.value&&e.onChange(t.value)},children:t.label}))})}async function $m(e){try{return await navigator.clipboard.writeText(e),!0}catch{try{let t=document.createElement("textarea");t.value=e,t.setAttribute("readonly",""),t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();let n=document.execCommand("copy");return t.remove(),n}catch{return!1}}}function _t(e){let t=Ke(),[n,r]=A("idle"),a=ce(null);oe(()=>()=>{a.current&&clearTimeout(a.current)},[]);let i=async()=>{let s=await $m(e.text);r(s?"copied":"failed"),a.current&&clearTimeout(a.current),a.current=setTimeout(()=>r("idle"),1800)};return o(q,{disabled:e.disabled||!e.text,onClick:()=>void i(),children:[o(J,{name:n==="copied"?"check":"copy",size:12}),n==="copied"?t("common.copied"):n==="failed"?t("common.copyFailed"):e.label]})}function Um(e){let t=Ot(()=>{try{return Xl(e.value,{ecc:"M",border:2})}catch{return null}},[e.value]);if(!t)return null;let n="";t.data.forEach((a,i)=>a.forEach((s,l)=>{s&&(n+=`M${l} ${i}h1v1h-1z`)}));let r=e.size??148;return o("svg",{class:"fx-qr",width:r,height:r,viewBox:`0 0 ${t.size} ${t.size}`,"shape-rendering":"crispEdges",role:"img","aria-label":e.label,children:[o("rect",{width:t.size,height:t.size,fill:"#fff"}),o("path",{d:n,fill:"#000"})]})}function ei(e){let t=Ke(),{device:n}=e;return o("div",{class:"fx-device",children:[o(Um,{value:n.url,label:t("signin.qrLabel")}),o("div",{class:"fx-device-copy",children:[o("p",{children:t("signin.deviceHint")}),n.userCode&&o("div",{class:"fx-device-code",children:[o("span",{children:t("signin.code")}),o("code",{children:n.userCode})]}),o("div",{class:"fx-inline",children:[o("button",{type:"button",class:"fx-link",onClick:()=>window.open(n.url,"_blank"),children:[t("signin.openLink")," ",o(J,{name:"external",size:12})]}),o(_t,{text:n.url,label:t("signin.copyLink")})]})]})]})}function Be(){let e=Ke(),t=ue(),[n,r]=A(null);oe(()=>se().onAuthDevice?.(i=>r(i)),[]);let a=()=>void t.run(async()=>{let i=se().forsionLogin;if(!i)return{error:{key:"err.unavailable"}};try{await i()}catch(s){r(null);let l=Zo(Zt(s));return l?{error:l}:void 0}});return o("section",{class:"settings-panel fx-panel fx-signin","aria-label":e("signin.button"),children:o("div",{class:"settings-state fx-signin-body",children:[o("span",{class:"settings-state-icon",children:o(J,{name:"user",size:18})}),o("p",{class:"fx-signin-lead",children:e("signin.desc")}),o("div",{class:"settings-state-actions",children:o(q,{variant:"primary",pending:t.pending,onClick:a,children:t.pending?e("signin.pending"):e("signin.button")})}),n&&o(ei,{device:n}),o(pe,{a:t})]})})}function Ie(e){let t=Ke(),n=e.panels??2,r=e.rows??2;return o("div",{class:"fx-skeleton","aria-busy":"true","aria-label":t("common.loading"),children:Array.from({length:n},(a,i)=>o("section",{class:"settings-panel fx-panel",children:[o("div",{class:"settings-panel-head",children:[o("span",{class:"fx-skel fx-skel--icon"}),o("div",{children:[o("span",{class:"fx-skel fx-skel--title"}),o("span",{class:"fx-skel fx-skel--line"})]})]}),Array.from({length:r},(s,l)=>o("div",{class:"settings-control-row",children:o("span",{class:"fx-skel fx-skel--row"})},l))]},i))})}function $e(e){let t=Ke();return o("section",{class:"settings-panel fx-panel",children:o("div",{class:"settings-state fx-error-state",role:"alert",children:[o("span",{class:"settings-state-icon",children:o(J,{name:"alert",size:18})}),o("strong",{children:t("common.loadFailed")}),o("p",{children:Wt(e.error,t)}),o("div",{class:"settings-state-actions",children:o(q,{variant:"primary",onClick:e.onRetry,children:[o(J,{name:"refresh",size:12})," ",t("common.retry")]})})]})})}function Yl(){let{t:e}=ae(),t=Oe(()=>Q("/auth/me"));if(t.state==="loading")return o(Ie,{panels:2});if(t.state==="signedOut")return o(Be,{});if(t.state==="error")return o($e,{error:t.error,onRetry:t.retry});let n=t.data;return o(N,{children:[o(ke,{icon:"user",title:e("account.details.title"),desc:e("account.details.desc"),children:[o(Ve,{label:e("account.details.username"),children:[o("span",{class:"fx-value",children:n.username}),n.role==="ADMIN"&&o("span",{class:"fx-tag",children:e("account.role.admin")})]}),o(Jl,{kind:"phone",value:n.phone}),o(Jl,{kind:"email",value:n.email})]}),o(Hm,{}),o(Vm,{})]})}function Jl(e){let{t,goTo:n}=ae(),r=!!e.value,a=r?e.kind==="phone"?Br(e.value):Fr(e.value):t("account.contact.unbound"),i=e.kind==="phone"?t("account.contact.phone"):t("account.contact.email");return o(Ve,{label:i,children:n?o("button",{type:"button",class:`fx-link-row${r?"":" is-empty"}`,onClick:()=>n("security"),title:t("account.contact.manage"),children:[o("span",{children:a}),o(J,{name:"chevron",size:12})]}):o("span",{class:`fx-value${r?"":" is-empty"}`,children:a})})}function Hm(){let{t:e}=ae(),t=qe(),[n,r]=A(null),[a,i]=A(!1),[s,l]=A(null),[c,d]=A(null),g=ue(),u=ue(),p=ue(),m=!vn(se()),f=m&&!!se().authAccounts;oe(()=>{let x=0,M=()=>{let V=se().authAccounts;if(!f||!V)return;let ee=++x;i(!1),V().then(te=>{ee===x&&r(Array.isArray(te)?te:[])}).catch(()=>{ee===x&&i(!0)})};M();let L=se().onAuthChanged?.(M),H=se().onAuthDevice?.(V=>d(V));return()=>{x++,L?.(),H?.()}},[]);let v=x=>{l(x),g.run(async()=>{let M=se().forsionSwitchAccount;if(!M)return{error:{key:"err.unavailable"}};try{await M(x)}catch(L){let H=Zo(Zt(L));return H?{error:H}:void 0}finally{t.current&&l(null)}})},w=()=>void u.run(async()=>{let x=se().forsionLogin;if(!x)return{error:{key:"err.unavailable"}};d(null);try{await x()}catch(M){t.current&&d(null);let L=Zo(Zt(M));return L?{error:L}:void 0}}),k=()=>void p.run(async()=>{let x=se().forsionLogout;if(!x)return{error:{key:"err.unavailable"}};try{await x()}catch(M){return{error:{raw:Zt(M)||e("err.generic")}}}}),z=g.pending||u.pending||p.pending;return o(ke,{icon:m?"laptop":"user",title:e(m?"local.title":"session.title"),desc:e(m?"local.desc":"session.desc"),children:[f&&n===null&&!a&&o(ut,{children:[o(wo,{})," ",e("common.loading")]}),a&&o("div",{class:"fx-sub",children:o(de,{tone:"warn",children:e("local.loadFailed")})}),n&&n.length===0&&o(ut,{children:e("local.empty")}),n&&n.length>0&&o("div",{class:"fx-list fx-block",role:"list",children:n.map(x=>o("div",{class:"fx-list-row",role:"listitem",children:[o("span",{class:"fx-list-icon",children:o(J,{name:"user",size:14})}),o("span",{class:"fx-list-main",children:[o("strong",{children:x.nickname||x.username||"Forsion"}),o("small",{children:[x.username&&x.nickname?x.username:null,qm(x.cloudUrl)].filter(Boolean).join(" \xB7 ")})]}),x.active?o("span",{class:"fx-tag fx-tag--accent",children:[o(J,{name:"check",size:11})," ",e("local.current")]}):o(q,{pending:s===x.id,disabled:z&&s!==x.id,onClick:()=>v(x.id),children:e("local.switch")})]},x.id))}),u.pending&&c&&o("div",{class:"fx-sub",children:o(ei,{device:c})}),o("div",{class:"settings-panel-footer fx-footer",children:[o(q,{pending:u.pending,disabled:z&&!u.pending,onClick:w,children:[o(J,{name:"plus",size:12})," ",u.pending?e("signin.pending"):e("local.add")]}),o(q,{pending:p.pending,disabled:z&&!p.pending,onClick:k,children:[o(J,{name:"logout",size:12})," ",e("local.signOut")]})]}),(g.error||u.error||p.error)&&o("div",{class:"fx-sub fx-sub--tight",children:[o(pe,{a:g}),o(pe,{a:u}),o(pe,{a:p})]})]})}function qm(e){try{return new URL(e).host}catch{return e}}function Vm(){let{t:e}=ae(),t=ue();return o("div",{class:"fx-page-foot",children:[o("button",{type:"button",class:"fx-link",disabled:t.pending,onClick:()=>void t.run(async()=>await no()?void 0:{error:{key:"err.openFailed"}}),children:[e("account.web.open")," ",o(J,{name:"external",size:12})]}),o("span",{class:"fx-muted",children:e("account.web.desc")}),o(pe,{a:t})]})}var ao=class extends Error{};async function Zl(e,t=256){if(e.size>20971520)throw new ao;let n=URL.createObjectURL(e);try{let r=new Image;await new Promise((g,u)=>{r.onload=()=>g(),r.onerror=()=>u(new Error("image decode failed")),r.src=n});let a=r.naturalWidth,i=r.naturalHeight;if(!a||!i)throw new Error("empty image");if(a*i>5e7)throw new ao;let s=Math.min(1,t/Math.max(a,i)),l=document.createElement("canvas");l.width=Math.max(1,Math.round(a*s)),l.height=Math.max(1,Math.round(i*s));let c=l.getContext("2d");if(!c)throw new Error("canvas unavailable");c.fillStyle="#fff",c.fillRect(0,0,l.width,l.height),c.drawImage(r,0,0,l.width,l.height);let d=l.toDataURL("image/jpeg",.85);if(d.length>262144)throw new ao;return d}finally{URL.revokeObjectURL(n)}}function Ql(e){let t=String(e||"").trim();if(!t)return"?";let n=Array.from(t)[0];return/[㐀-鿿]/.test(n)?n:Array.from(t).slice(0,2).join("").toUpperCase()}var ec=["cream","coral","teal","lavender"],tc=["auto","light","dark"],nc=["none","mist","contour","dots"],oc=["none","ring","pro"],rc=["early","streak","author","inviter","event"];var ac=e=>`/u/${encodeURIComponent(e)}`,ti=e=>!!e&&e.toLowerCase()!=="free";function ni(e,t){let n={...e.settings,...t};return{...e,settings:n,bio:n.bio,links:n.links,skin:n.skin,mode:n.mode,cover:n.cover,frame:n.frame==="pro"&&!ti(e.tier)?"none":n.frame,modules:n.modules.filter(r=>r.show).map(r=>({id:r.id}))}}function oi(e,t,n){let r=e.findIndex(s=>s.id===t),a=r+n;if(r<0||a<0||a>=e.length)return e;let i=e.slice();return[i[r],i[a]]=[i[a],i[r]],i}function ic(e){let t=e.trim();if(!t)return null;let n=/^[a-z][a-z0-9+.-]*:/i.test(t)?t:`https://${t}`,r;try{r=new URL(n)}catch{return null}if(r.protocol!=="http:"&&r.protocol!=="https:"||!r.hostname.includes("."))return null;let a=r.toString();return a.length<=200?a:null}function ri(e){return e.replace(/^https?:\/\//i,"").replace(/^www\./i,"").replace(/\/$/,"")}function sc(e,t){let n=t==="zh"?[[1e8,"\u4EBF"],[1e4,"\u4E07"]]:[[1e9,"B"],[1e6,"M"],[1e3,"K"]];for(let[r,a]of n)if(e>=r){let i=e/r;return{value:i>=100?String(Math.round(i)):String(Math.round(i*10)/10),unit:a}}return{value:Math.round(e).toLocaleString("en-US"),unit:""}}var lc=e=>e==="zh"?"zh-CN":"en-US";function cc(e,t){let[n,r]=e.split("-").map(Number);if(!n||!r)return[];let a=new Intl.DateTimeFormat(lc(t),{month:"short",timeZone:"UTC"});return Array.from({length:12},(i,s)=>a.format(new Date(Date.UTC(n,r-12+s,1))))}function dc(e,t){let[n,r]=e.split("-").map(Number);return!n||!r?"":new Intl.DateTimeFormat(lc(t),{year:"numeric",month:"short",timeZone:"UTC"}).format(new Date(Date.UTC(n,r-1,1)))}function uc([e,t]){let n=r=>`${String((r%24+24)%24).padStart(2,"0")}:00`;return`${n(e)} \u2013 ${n(t)}`}function pc(e){let t=0,n=Promise.resolve(),r=()=>{let a=t;return e.read().then(i=>{a===t&&e.apply(i)})};return{read:r,write(a){let i=++t,s=n.then(a).then(l=>{i===t&&e.apply(l)});return n=s.catch(()=>i===t?r().catch(()=>{}):void 0),s}}}var hc={skill:{key:"profile.work.skill",icon:"sparkles"},agent:{key:"profile.work.agent",icon:"bot"},plugin:{key:"profile.work.plugin",icon:"box"},space:{key:"profile.work.space",icon:"grid"},theme:{key:"profile.work.theme",icon:"palette"},"amadeus-plugin":{key:"profile.work.note",icon:"note"},webapp:{key:"profile.work.webapp",icon:"globe"}},mc={early:"sprout",streak:"flame",author:"box",inviter:"gift",event:"trophy"},gc={plus:"Plus",pro:"Pro"},ii=e=>!!e&&/^https?:\/\//i.test(e);function si(e){if(!ii(e))return;let t=se().openExternal;t?t(e).catch(()=>{}):window.open(e,"_blank","noopener")}async function Gm(){let e=se().cloudInvoke;if(!e)return null;try{let t=await e("profile:publicOrigin");return t?.ok&&typeof t.origin=="string"&&/^https?:\/\/[^/]+$/i.test(t.origin)?t.origin:null}catch{return null}}async function Km(e,t,n){let r=await Q(e,{method:t,body:n});if(!r.ok)throw r;if(!r.data?.profile)throw{ok:!1,status:r.status,code:null,detail:null,transport:"bad_response"};return r.data.profile}var bc=e=>e&&typeof e=="object"&&e.ok===!1?Bt(e):{raw:String(e?.message||e)};function vc(){let{t:e}=ae(),t=Oe(async()=>{let[r,a,i]=await Promise.all([Q("/profile/me"),Q("/auth/me"),Gm()]);return a.ok?r.ok?r.data?.profile?{ok:!0,status:r.status,data:{profile:r.data.profile,me:a.data,origin:i}}:{ok:!0,status:404,data:null}:r.status===404?{ok:!0,status:404,data:null}:r:a});if(t.state==="loading")return o(Ie,{panels:2,rows:3});if(t.state==="signedOut")return o(Be,{});if(t.state==="error")return o($e,{error:t.error,onRetry:t.retry});if(!t.data)return o(ke,{icon:"user",title:e("page.profile"),children:o(ut,{children:e("profile.unsupported")})});let{update:n}=t;return o(Xm,{data:t.data,update:r=>n(a=>a&&r(a))})}function Xm(e){let{t}=ae(),n=qe(),{profile:r,me:a,origin:i}=e.data,[s,l]=A(null),[c,d]=A(null),[g,u]=A(!1),p=ce(e.update);p.current=e.update;let m=(E,O,I)=>n.current?Km(E,O,I):Promise.reject(new Error("unmounted")),f=Ot(()=>pc({apply:E=>p.current(O=>({...O,profile:E})),read:()=>m("/profile/me")}),[]),v=a.username||r.username,w={...r,username:v,nickname:a.nickname||null},k=r.settings.isPublic,z=i?`${i}${ac(v)}`:null,x=E=>{n.current&&d({tone:"error",m:bc(E)})},M=E=>{d(null),e.update(O=>({...O,profile:ni(O.profile,E)})),f.write(()=>m("/profile/me","PUT",E)).catch(x)},L=async E=>{e.update(O=>({...O,profile:ni(O.profile,{modules:O.profile.settings.modules.map(I=>({...I,public:E.find(ne=>ne.id===I.id)?.public??I.public}))})})),await f.write(()=>m("/profile/me/visibility","POST",{public:!0,modules:E})),n.current&&(l(null),d({tone:"ok",m:{key:"profile.nowPublic"}}))},H=async()=>{u(!0),d(null);try{await f.write(()=>m("/profile/me/visibility","POST",{public:!1})),n.current&&d({tone:"ok",m:{key:"profile.nowPrivate"}})}catch(E){x(E)}finally{n.current&&u(!1)}},V=ce(Promise.resolve()),ee=(E,O)=>{let I=V.current.then(async()=>{if(!n.current)return;let ne=await Q("/settings",{method:"PUT",body:E});if(n.current){if(!ne.ok)return d({tone:"error",m:Bt(ne)});p.current(b=>({...b,me:{...b.me,...E}})),d({tone:"ok",m:{key:O}})}});return V.current=I,I},te=async E=>{d(null);let O;try{O=await Zl(E)}catch(I){return d({tone:"error",m:{key:I instanceof ao?"err.avatarTooLarge":"err.avatarInvalid"}})}await ee({avatar:O},"account.avatar.saved")},S=E=>{d(null),l(O=>O===E?null:E)};return o("div",{class:"fx-pf-page",children:[o(ke,{icon:k?"globe":"lock",title:t(k?"profile.state.public":"profile.state.private"),desc:t(k?"profile.state.publicDesc":"profile.state.privateDesc"),actions:o(N,{children:[o(q,{onClick:()=>S("deco"),children:[o(J,{name:"palette",size:12})," ",t("profile.decorate")]}),k?o(q,{pending:g,onClick:()=>void H(),children:[o(J,{name:"lock",size:12})," ",t("profile.makePrivate")]}):o(q,{variant:"primary",onClick:()=>S("publish"),children:[o(J,{name:"globe",size:12})," ",t("profile.publish")]})]}),children:[k&&z&&o(Ve,{label:t("profile.address"),desc:z.replace(/^https?:\/\//i,""),children:[o(_t,{text:z,label:t("profile.copyLink")}),o(q,{onClick:()=>si(z),children:[o(J,{name:"external",size:12})," ",t("profile.openPublic")]})]}),s==="publish"&&!k&&o(Jm,{profile:r,url:z,submit:L,onClose:()=>l(null)}),c&&o(Me,{class:"fx-sub--tight",children:o("div",{class:`fx-msg ${c.tone==="ok"?"is-ok":"is-error"}`,role:c.tone==="ok"?"status":"alert",children:Wt(c.m,t)})})]}),o("div",{class:"fx-pf-home","data-deco":s==="deco"?"":void 0,children:[o("div",{class:"fx-pf-root",children:o(eg,{view:w,avatar:a.avatar||null,pinned:r.settings.pinned,owner:{onAvatar:E=>void te(E),onNickname:E=>{d(null),ee({nickname:E},"account.nickname.saved")},onBio:E=>M({bio:E}),onLinks:E=>M({links:E}),onPinned:E=>M({pinned:E}),onInvalidLink:()=>d({tone:"error",m:{key:"profile.linkInvalid"}})}})}),s==="deco"&&o(Ym,{profile:r,onChange:M,onClose:()=>l(null)})]})]})}function Jm(e){let{t}=ae(),n=qe(),{profile:r}=e,[a,i]=A({}),s=r.settings.modules.filter(m=>m.show).map(m=>({...m,public:a[m.id]??m.public})),[l,c]=A(!1),[d,g]=A(null),u=r.canPublish?null:r.publishBlockedReason||"publish_blocked";if(u)return o(Me,{children:[o(de,{children:t(u==="machine_username"?"profile.blocked.machineUsername":"profile.blocked.publishBlocked")}),o("div",{class:"fx-inline fx-pf-foot",children:[u==="machine_username"&&o(q,{variant:"primary",onClick:()=>void no("profile"),children:[t("profile.goRename")," ",o(J,{name:"external",size:12})]}),o(q,{onClick:e.onClose,children:t("common.cancel")})]})]});let p=async()=>{c(!0),g(null);try{await e.submit(s.map(({id:m,public:f})=>({id:m,public:f})))}catch(m){if(!n.current)return;g(bc(m)),c(!1)}};return o(Me,{children:[e.url&&o("div",{class:"fx-pf-url",children:[o(J,{name:"globe",size:14}),o("span",{children:e.url.replace(/^https?:\/\//i,"")})]}),o(de,{children:t("profile.publishDesc")}),o("div",{class:"fx-pf-checks",children:s.map(m=>o("div",{class:"fx-pf-check",children:[o("div",{children:[t(`profile.mod.${m.id}`),o("small",{children:t(`profile.modDesc.${m.id}`)})]}),o(Qt,{checked:m.public,disabled:l,label:`${t(`profile.mod.${m.id}`)} \xB7 ${t("profile.col.public")}`,onChange:f=>i(v=>({...v,[m.id]:f}))})]},m.id))}),o(de,{children:t("profile.publishNever")}),d&&o("div",{class:"fx-msg is-error",role:"alert",children:Wt(d,t)}),o("div",{class:"fx-inline fx-pf-foot",children:[o(q,{variant:"primary",pending:l,onClick:()=>void p(),children:t("profile.publishConfirm")}),o(q,{disabled:l,onClick:e.onClose,children:t("common.cancel")})]})]})}function Ym(e){let{t}=ae(),n=e.profile.settings,r=ti(e.profile.tier),a=(s,l)=>e.onChange({modules:n.modules.map(c=>c.id===s?{...c,...l}:c)}),i=s=>o("span",{class:"fx-pf-thumb",children:s});return o("aside",{class:"fx-pf-deco","aria-label":t("profile.decorate"),children:o(ke,{icon:"palette",title:t("profile.decorate"),actions:o(q,{onClick:e.onClose,children:t("common.done")}),children:o("div",{class:"fx-pf-deco-body",children:[o("h4",{children:t("profile.deco.cover")}),o("div",{class:"fx-pf-opts",children:nc.map(s=>o("button",{type:"button",class:"fx-pf-opt","aria-pressed":n.cover===s,onClick:()=>e.onChange({cover:s}),children:[i(o("span",{class:`fx-pf-cv-thumb fx-pf-cv-${s}`})),t(`profile.cover.${s}`)]},s))}),o("h4",{children:t("profile.deco.frame")}),o("div",{class:"fx-pf-opts",children:oc.map(s=>o("button",{type:"button",class:"fx-pf-opt","aria-pressed":n.frame===s,disabled:s==="pro"&&!r,title:s==="pro"&&!r?t("profile.frameProHint"):void 0,onClick:()=>e.onChange({frame:s}),children:[i(o("span",{class:`fx-pf-fr-demo fx-pf-fr-${s}`,children:o("span",{class:"fx-pf-av"})})),t(`profile.frame.${s}`)]},s))}),!r&&o(de,{children:t("profile.frameProHint")}),o("h4",{children:t("profile.deco.modules")}),o("div",{class:"fx-pf-mod-head","aria-hidden":"true",children:[o("span",{children:t("profile.col.show")}),o("span",{children:t("profile.col.public")})]}),n.modules.map((s,l)=>o("div",{class:"fx-pf-mod",children:[o("span",{children:t(`profile.mod.${s.id}`)}),o("button",{type:"button",class:"fx-icon-btn",disabled:l===0,title:t("profile.moveUp"),"aria-label":`${t(`profile.mod.${s.id}`)} \xB7 ${t("profile.moveUp")}`,onClick:()=>e.onChange({modules:oi(n.modules,s.id,-1)}),children:o(J,{name:"up",size:13})}),o("button",{type:"button",class:"fx-icon-btn",disabled:l===n.modules.length-1,title:t("profile.moveDown"),"aria-label":`${t(`profile.mod.${s.id}`)} \xB7 ${t("profile.moveDown")}`,onClick:()=>e.onChange({modules:oi(n.modules,s.id,1)}),children:o(J,{name:"down",size:13})}),o(Qt,{checked:s.show,label:`${t(`profile.mod.${s.id}`)} \xB7 ${t("profile.col.show")}`,onChange:c=>a(s.id,{show:c})}),o(Qt,{checked:s.show&&s.public,disabled:!s.show,label:`${t(`profile.mod.${s.id}`)} \xB7 ${t("profile.col.public")}`,onChange:c=>a(s.id,{public:c})})]},s.id)),o(de,{children:t("profile.modulesHint")}),o("h4",{children:t("profile.deco.skin")}),o("div",{class:"fx-pf-opts",children:ec.map(s=>o("button",{type:"button",class:"fx-pf-opt","aria-pressed":n.skin===s,onClick:()=>e.onChange({skin:s}),children:[i(o("span",{class:"fx-pf-swatch","data-skin":s})),t(`profile.skin.${s}`)]},s))}),o("h4",{children:t("profile.deco.mode")}),o(St,{value:n.mode,label:t("profile.deco.mode"),onChange:s=>e.onChange({mode:s}),options:tc.map(s=>({value:s,label:t(`profile.mode.${s}`)}))}),o(de,{children:t("profile.deco.publicHint")})]})})})}function ai(e){let[t,n]=A(null),r=ce(!1),a=ce(null),i=t!==null;Yo(()=>{i&&a.current?.focus()},[i]);let s=e.class?` ${e.class}`:"";if(t===null)return o("button",{type:"button",class:`fx-pf-ed${s}${e.value?"":" is-empty"}`,title:e.label,"aria-label":e.label,onClick:()=>{r.current=!1,n(e.value)},children:[o("span",{children:e.value||e.placeholder}),o(J,{name:e.value?"pencil":"plus",size:12})]});let l=()=>{let c=t.trim();n(null),!r.current&&c!==e.value&&e.onSave(c)};return o("span",{class:`fx-pf-ed-on${s}`,children:[o("input",{ref:a,class:"fx-input",type:"text",value:t,maxLength:e.maxLength,placeholder:e.placeholder,"aria-label":e.label,onInput:c=>n(c.currentTarget.value),onBlur:l,onKeyDown:c=>{c.isComposing||(c.key==="Enter"?c.currentTarget.blur():c.key==="Escape"&&(c.preventDefault(),r.current=!0,c.currentTarget.blur()))}}),e.counter&&o("small",{children:[Array.from(t).length,"/",e.maxLength]})]})}function Hr(e){return o("section",{class:"fx-pf-sec",style:{order:e.order},children:[o("div",{class:"fx-pf-sec-h",children:[o("h3",{children:e.title}),e.action]}),e.children]})}function Zm(e){let{t}=ae(),{work:n}=e,r=hc[n.type],a=o(N,{children:[o("div",{class:"fx-pf-work-top",children:[o("span",{class:"fx-pf-work-ico",children:o(J,{name:r?.icon??"box",size:17})}),o("div",{children:[o("div",{class:"fx-pf-work-name",children:n.name}),o("div",{class:"fx-pf-work-type",children:r?t(r.key):n.type})]})]}),o("p",{children:n.summary}),(n.countKind!=="visits"||n.count>0)&&o("div",{class:"fx-pf-work-foot",children:[o(J,{name:n.countKind==="visits"?"eye":"download",size:12}),t(n.countKind==="visits"?"profile.workVisits":"profile.workInstalls",{n:n.count.toLocaleString("en-US")})]})]}),i=n.url;return ii(i)?o("a",{class:"fx-pf-work",href:i,onClick:s=>{s.preventDefault(),si(i)},children:a}):o("article",{class:"fx-pf-work",children:a})}function Qm(e){let{t}=ae(),n=qe(),[r,a]=A(null),[i,s]=A(()=>e.pinned.map(g=>`${g.kind}:${g.id}`));oe(()=>{Q("/profile/me/works").then(g=>{n.current&&a(g.ok?g.data?.works??[]:"failed")})},[]);let l=g=>`${g.kind}:${g.id}`,c=g=>s(u=>u.includes(g)?u.filter(p=>p!==g):[...u,g]);if(r===null)return o("div",{class:"fx-pf-card fx-pf-empty",children:[o(wo,{})," ",t("common.loading")]});if(r==="failed"||r.length===0)return o("div",{class:"fx-pf-card fx-pf-empty",children:[o("p",{children:t(r==="failed"?"common.loadFailed":"profile.worksNone")}),o("div",{class:"fx-inline fx-pf-foot",children:[r!=="failed"&&o(q,{variant:"primary",onClick:()=>void no("submission"),children:[t("profile.goSubmit")," ",o(J,{name:"external",size:12})]}),o(q,{onClick:e.onClose,children:t("common.cancel")})]})]});let d=()=>{let g=new Map(r.map(u=>[l(u),u]));e.onSave(i.flatMap(u=>{let p=g.get(u);return p?[{kind:p.kind,id:p.id}]:[]})),e.onClose()};return o("div",{class:"fx-pf-card fx-pf-picker",children:[r.map(g=>{let u=l(g),p=i.includes(u),m=hc[g.type];return o("button",{type:"button",class:"fx-pf-pick","aria-pressed":p,disabled:!p&&i.length>=6,onClick:()=>c(u),children:[o("div",{children:[g.name,o("small",{children:[m?t(m.key):g.type," \xB7 ",g.summary]})]}),p&&o(J,{name:"check",size:15})]},u)}),o("div",{class:"fx-inline fx-pf-foot",children:[o("span",{class:"fx-grow",children:i.length?t("profile.worksPicked",{n:i.length,max:6}):t("profile.worksAuto")}),o(q,{variant:"primary",onClick:d,children:t("common.done")}),o(q,{onClick:e.onClose,children:t("common.cancel")})]})]})}function eg(e){let{t,locale:n}=ae(),{view:r,owner:a}=e,i=ce(null),[s,l]=A(!1),c=r.nickname||r.username,d=(r.tier||"free").toLowerCase(),g=r.modules.map(b=>b.id),u=b=>g.indexOf(b),p=b=>u(b)>=0,m=r.stats,f=m?sc(m.totalTokens,n):null,v=t("profile.unit.days"),w=m&&f?[[f.value,f.unit,t("profile.stat.tokens")],[String(m.activeDays),v,t("profile.stat.activeDays")],[String(m.longestStreak),v,t("profile.stat.longest")],[String(m.currentStreak),v,t("profile.stat.current")],[m.installs.toLocaleString("en-US"),"",t("profile.stat.installs")]]:[],k=m&&p("stats")&&o("div",{class:"fx-pf-stats",style:{order:u("stats")},children:w.map(([b,T,R])=>o("div",{class:"fx-pf-stat",children:[o("b",{children:[b,T&&o("small",{children:T})]}),o("span",{children:R})]},R))},"stats"),z=g[0]==="stats",x=r.works||[],M=p("works")&&o(Hr,{order:u("works"),title:t("profile.works"),action:!s&&o("button",{type:"button",class:"fx-link",onClick:()=>l(!0),children:t("profile.worksPick")}),children:s?o(Qm,{pinned:e.pinned,onSave:a.onPinned,onClose:()=>l(!1)}):x.length?o("div",{class:"fx-pf-works",children:x.map(b=>o(Zm,{work:b},`${b.kind}:${b.id}`))}):o("div",{class:"fx-pf-card fx-pf-empty",children:t("profile.worksEmpty")})},"works"),L=r.activity,H=p("activity")&&L&&o(Hr,{order:u("activity"),title:t("profile.activity"),children:o("div",{class:"fx-pf-card",children:[o("div",{class:"fx-pf-hm",role:"img","aria-label":t("profile.activityDays",{n:L.activeDays}),children:L.levels.map((b,T)=>o("i",{class:b?`l${b}`:void 0},T))}),o("div",{class:"fx-pf-hm-months","aria-hidden":"true",children:cc(L.end,n).map((b,T)=>o("span",{children:b},T))}),o("div",{class:"fx-pf-hm-foot",children:[o("span",{children:t("profile.activityDays",{n:L.activeDays})}),o("span",{class:"fx-pf-hm-legend","aria-hidden":"true",children:[t("profile.less"),o("i",{}),o("i",{class:"l1"}),o("i",{class:"l2"}),o("i",{class:"l3"}),o("i",{class:"l4"}),t("profile.more")]})]})]})},"activity"),V=(r.badges||[]).filter(b=>rc.includes(b.id)),ee=p("badges")&&o(Hr,{order:u("badges"),title:t("profile.badges"),children:V.length?o("div",{class:"fx-pf-card fx-pf-rows",children:V.map(b=>o("div",{class:"fx-pf-brow",children:[o("span",{class:"fx-pf-badge",children:o(J,{name:mc[b.id],size:14})}),o("div",{children:[o("b",{children:t(`profile.badge.${b.id}`)}),o("span",{children:t(`profile.badgeSub.${b.id}`,{value:b.value??""})})]})]},b.id))}):o("div",{class:"fx-pf-card fx-pf-empty",children:t("profile.badgesEmpty")})},"badges"),te=r.insights,S=[];te?.topModel&&S.push([t("profile.insightModel"),te.topModel]),te?.activeHours&&S.push([t("profile.insightHours"),uc(te.activeHours)]);let E=p("insights")&&o(Hr,{order:u("insights"),title:t("profile.insights"),children:S.length?o("div",{class:"fx-pf-card fx-pf-rows",children:S.map(([b,T])=>o("div",{class:"fx-pf-row",children:[o("span",{children:b}),o("b",{children:T})]},b))}):o("div",{class:"fx-pf-card fx-pf-empty",children:t("profile.insightsEmpty")})},"insights"),O=[!z&&k,M,H].filter(Boolean),I=[ee,E].filter(Boolean),ne=b=>{if(!b)return;let T=ic(b);if(!T)return a.onInvalidLink();r.links.includes(T)||a.onLinks([...r.links,T])};return o("div",{class:"fx-pf","data-cover":r.cover,"data-frame":r.frame,children:[o("div",{class:"fx-pf-cover"}),o("div",{class:"fx-pf-id",children:[o("button",{type:"button",class:"fx-pf-avatar",title:t("account.avatar.change"),"aria-label":t("account.avatar.change"),onClick:()=>i.current?.click(),children:[o("span",{class:"fx-pf-av",children:e.avatar?o("img",{src:e.avatar,alt:""}):o("span",{class:"fx-pf-av-fallback",children:Ql(c)})}),o("span",{class:"fx-pf-av-mask",children:o(J,{name:"pencil",size:18})})]}),o("input",{ref:i,type:"file",accept:"image/png,image/jpeg,image/webp,image/gif,image/avif",hidden:!0,onChange:b=>{let T=b.currentTarget,R=T.files?.[0];T.value="",R&&a.onAvatar(R)}}),o("div",{class:"fx-pf-id-text",children:[o("div",{class:"fx-pf-name",children:[o(ai,{value:c,placeholder:r.username,maxLength:40,label:t("account.nickname.edit"),onSave:b=>{b&&a.onNickname(b)}}),gc[d]&&o("span",{class:`fx-tag${d==="pro"?" fx-pf-tier-pro":" fx-tag--accent"}`,children:gc[d]})]}),o("div",{class:"fx-pf-handle",children:["@",r.username]})]}),V.length>0&&p("badges")&&o("div",{class:"fx-pf-badges",children:V.map(b=>o("span",{class:"fx-pf-badge",title:t(`profile.badge.${b.id}`),children:o(J,{name:mc[b.id],size:14})},b.id))})]}),o("div",{class:"fx-pf-sub",children:[o(ai,{class:"fx-pf-bio",value:r.bio,placeholder:t("profile.bioPlaceholder"),maxLength:80,label:t("profile.bio"),counter:!0,onSave:a.onBio}),o("div",{class:"fx-pf-meta",children:[r.joinedMonth&&o("span",{children:[o(J,{name:"calendar",size:13}),t("profile.joined",{date:dc(r.joinedMonth,n)})]}),r.links.map(b=>o("span",{children:[o(J,{name:"link",size:13}),ii(b)?o("a",{href:b,onClick:T=>{T.preventDefault(),si(b)},children:ri(b)}):o("span",{children:ri(b)}),o("button",{type:"button",class:"fx-pf-x",title:t("profile.linkRemove"),"aria-label":t("profile.linkRemove"),onClick:()=>a.onLinks(r.links.filter(T=>T!==b)),children:o(J,{name:"x",size:11})})]},b)),r.links.length<2&&o(ai,{value:"",placeholder:t("profile.linkAdd"),maxLength:200,label:t("profile.linkAdd"),onSave:ne},r.links.length)]})]}),z&&k,o("div",{class:"fx-pf-body","data-cols":O.length&&I.length?2:1,children:[o("div",{class:"fx-pf-main",children:O}),I.length>0&&o("div",{class:"fx-pf-side",children:I})]})]})}function yc(){let e=Oe(async()=>{let[t,n]=await Promise.all([Q("/membership/my"),Q("/features")]);return t.ok?{ok:!0,status:t.status,data:{membership:t.data?.membership??null,payment:!n.ok||n.data?.payment!==!1}}:t});return e.state==="loading"?o(Ie,{panels:1}):e.state==="signedOut"?null:o(tg,{membership:e.state==="ready"?e.data.membership:null,failed:e.state==="error",payment:e.state==="ready"&&e.data.payment,onRetry:e.state==="ready"?e.reload:e.retry})}function tg(e){let{t,locale:n}=ae(),r=ue(),a=e.membership&&(e.membership.status===void 0||e.membership.status==="active")?e.membership:null,i=Qo(a?.tier),s=i==="Free",l=s?"free":i.toLowerCase()==="pro"?"pro":"paid",c=()=>void r.run(async()=>await On("membership")?void 0:{error:{key:"err.openFailed"}});return o(ke,{icon:"card",title:t("member.title"),desc:t("member.desc"),actions:e.payment&&!e.failed?o(q,{variant:"primary",pending:r.pending,onClick:c,children:t(s?"member.upgrade":"member.renew")}):void 0,children:[!e.failed&&o("div",{class:"fx-member fx-block",children:[o("span",{class:`fx-tier fx-tier--${l}`,children:i}),o("div",{class:"fx-member-copy",children:[o("strong",{children:s?t("member.freeName"):a?.plan?.name||i}),o("span",{class:"fx-muted",children:s?t("member.freeHint"):a?.expiresAt?t("member.expires",{date:yn(a.expiresAt,n)}):t("member.noExpiry")})]})]}),e.failed&&o("div",{class:"fx-sub",children:o(de,{tone:"warn",children:[t("member.loadFailed")," ",o("button",{type:"button",class:"fx-link",onClick:e.onRetry,children:t("common.retry")})]})}),r.error&&o("div",{class:"fx-sub fx-sub--tight",children:o(pe,{a:r})})]})}function Ce(e){if(typeof e=="number")return Number.isFinite(e)?e:null;if(typeof e=="string"&&e.trim()!==""){let t=Number(e);return Number.isFinite(t)?t:null}return null}function ng(e,t){let n=Ce(t);if(n===null||n<0)return null;if(n===0)return 0;let r=Math.max(0,Ce(e)??0);return Math.min(100,Math.max(0,Math.floor(r/n*100)))}var og=15;function io(e,t){let n=ng(e,t);if(n===null)return{unlimited:!0,pct:100,text:null,low:!1};let r=Math.max(0,Ce(e)??0),a=n===0&&r>0&&(Ce(t)??0)>0?"<1%":`${n}%`;return{unlimited:!1,pct:n,text:a,low:n<=og}}function qr(e,t){let n=Ce(t);if(n===null||n<=0)return null;let r=Ce(e);if(r===null)return null;let a=Math.max(0,r);if(a===0)return"0%";let i=a/n*100;if(i<.1)return"<0.1%";let s=Math.round(i*10)/10;return s<10?`${s}%`:`${Math.round(i).toLocaleString("en-US")}%`}var rg=e=>e.ok?"ok":e.status===404?"hidden":"failed";function kc(){return o(zc,{section:"points"})}function wc(){return o(N,{children:[o(yc,{}),o(zc,{section:"quota"})]})}function zc({section:e}){let t=Oe(async()=>{let[l,c,d,g]=await Promise.all([Q("/token-quota/my"),Q("/credits/balance"),Q("/features"),Q("/invite/my-code")]);return l.ok?{ok:!0,status:l.status,data:{quota:l.data??{},balance:c.ok?Ce(c.data?.balance):null,balanceFailed:!c.ok,features:d.ok&&d.data&&typeof d.data=="object"?d.data:{},invite:g.ok?g.data:null,inviteState:rg(g)}}:l});if(t.state==="loading")return o(Ie,{panels:3,rows:2});if(t.state==="signedOut")return o(Be,{});if(t.state==="error")return o($e,{error:t.error,onRetry:t.retry});let{data:n,update:r}=t,a=n.quota.background,i=n.features.redemption_codes!==!1,s=n.features.payment!==!1;return o(N,{children:[e==="quota"&&o(N,{children:[o(ig,{data:n,update:r,onFailed:t.reload}),a?.modelId?o(dg,{bg:a,update:r}):null]}),e==="points"&&o(lg,{data:n,payment:s,onRetry:t.reload}),e==="points"&&(n.inviteState!=="hidden"||i)&&o(ug,{data:n,update:r,redeemEnabled:i,onRedeemed:t.reload})]})}var xc=e=>({dailyLimit:e.dailyLimit,dailyRemaining:e.dailyRemaining,weeklyLimit:e.weeklyLimit,weeklyRemaining:e.weeklyRemaining});function ag(e,t){if(typeof e?.showResetCardCeremony!="function")return!1;try{return e.showResetCardCeremony(t),!0}catch{return!1}}function ig(e){let{t,locale:n,ctx:r}=ae(),a=e.data.quota,i=io(a.dailyRemaining,a.dailyLimit),s=io(a.weeklyRemaining,a.weeklyLimit),l=Ol(a.weeklyResetAt,n),c=Math.max(0,Ce(a.resetCards)??0),d=Ce(a.resetCardPricePoints)??100,g=ue(),u=ue(),[p,m]=A(null),[f,v]=A("1"),w=/^\d+$/.test(f.trim())?Number(f.trim()):NaN,k=Number.isInteger(w)&&w>=1&&w<=50,z=k?w*d:null,x=e.data.balance,M=z!==null&&x!==null&&x<z,L=()=>void g.run(async()=>{let ee={daily:i,weekly:s},te=xc(a);m(null);let S=se(),E=await Dr(S.accountUseResetCard?()=>S.accountUseResetCard("both"):null,()=>Q("/token-quota/reset-card/use",{method:"POST",body:{type:"both"}}));if(!E.ok)return e.onFailed(),De(E);let O=E.data?.quota,I=Ce(E.data?.resetCards);return e.update(ne=>({...ne,quota:{...ne.quota,...O??{},resetCards:I??ne.quota.resetCards}})),O&&!ag(r.app,{before:te,after:xc(O),remainingCards:I??void 0})&&m({before:ee,after:{daily:io(O.dailyRemaining,O.dailyLimit),weekly:io(O.weeklyRemaining,O.weeklyLimit)},cards:I}),{success:{key:"card.used"}}}),H=()=>void u.run(async()=>{if(!k)return{error:{key:"err.invalidCount"}};let ee=await Q("/points/exchange-reset-cards",{method:"POST",body:{count:w,expectedPricePerCard:d}});return ee.ok?(e.update(te=>({...te,quota:{...te.quota,resetCards:Ce(ee.data?.resetCards)??te.quota.resetCards},balance:Ce(ee.data?.newPointsBalance)??te.balance})),v("1"),{success:{key:"card.exchanged",vars:{n:Ce(ee.data?.cardsGranted)??w}}}):(e.onFailed(),De(ee))}),V=ee=>ee.unlimited?t("common.unlimited"):ee.text;return o(ke,{icon:"gauge",title:t("quota.ai.title"),desc:t("quota.ai.desc"),children:[o("div",{class:"fx-quota-list fx-block",children:[o(tr,{label:t("common.today"),display:i,note:i.unlimited?null:t("quota.resetDaily")}),o(tr,{label:t("common.thisWeek"),display:s,note:s.unlimited||!l?null:t("quota.resetWeekly",{date:l})})]}),o(Ve,{label:t("card.title"),desc:t("card.desc"),children:[o("span",{class:"fx-value","data-testid":"reset-card-count",children:t("card.owned",{n:c})}),o(Kt,{label:t("card.use"),confirmLabel:t("card.useConfirm"),pending:g.pending,disabled:c<=0,onConfirm:L})]}),c<=0&&!g.success&&o(Me,{children:o(de,{children:t("card.noneHint")})}),(g.error||g.success)&&o(Me,{children:[o(pe,{a:g}),g.success&&p&&o("div",{class:"fx-ceremony",role:"status",children:[o("span",{children:[t("common.today")," ",o("b",{children:V(p.before.daily)})," \u2192 ",o("b",{children:V(p.after.daily)})]}),o("span",{children:[t("common.thisWeek")," ",o("b",{children:V(p.before.weekly)})," \u2192 ",o("b",{children:V(p.after.weekly)})]}),p.cards!==null&&o("span",{class:"fx-muted",children:t("card.left",{n:p.cards})})]})]}),o(Ve,{label:t("card.exchange"),desc:t("card.price",{price:Pe(d,n)}),class:"fx-row--wide",children:[o("input",{class:"fx-input fx-input--count",type:"number",inputMode:"numeric",min:1,max:50,step:1,value:f,"aria-label":t("card.count"),onInput:ee=>{v(ee.currentTarget.value),u.clear()}}),o("span",{class:"fx-muted fx-cost",children:z!==null?t("card.cost",{cost:Pe(z,n)}):t("card.countHint")}),o(Kt,{label:t("card.exchangeButton"),confirmLabel:t("card.exchangeConfirm",{cost:z!==null?Pe(z,n):"\u2014"}),pending:u.pending,disabled:!k||M,onConfirm:H})]}),(M||u.error||u.success)&&o(Me,{children:[M&&!u.error&&o(de,{tone:"warn",children:t("err.insufficientPoints")}),o(pe,{a:u})]})]})}function sg(e,t,n){let r=ue(),[a,i]=A(null);return{checked:a??e,toggle:l=>{i(l),r.run(async()=>{let c=await t(l);if(i(null),!c.ok)return De(c);n(l)})},action:r}}function lg(e){let{t,locale:n}=ae(),r=ue(),a=()=>void r.run(async()=>await On("credits")?void 0:{error:{key:"err.openFailed"}});return o(ke,{icon:"coins",title:t("points.title"),desc:t("points.desc"),actions:e.payment?o(q,{variant:"primary",pending:r.pending,onClick:a,children:t("points.recharge")}):void 0,children:[o(Ve,{label:t("points.balance"),children:e.data.balance!==null?o("span",{class:"fx-big","data-testid":"points-balance",children:Pe(e.data.balance,n)}):o("span",{class:"fx-value is-empty",children:[t("points.balanceFailed")," ",o("button",{type:"button",class:"fx-link",onClick:e.onRetry,children:t("common.retry")})]})}),r.error&&o(Me,{children:o(pe,{a:r})})]})}var cg=[5,10,20];function dg(e){let{t}=ae(),{bg:n}=e,r=io(n.dailyRemaining,n.dailyLimit),a=io(n.weeklyRemaining,n.weeklyLimit),i=ue(),[s,l]=A(null),c=sg(!!n.autoMain,g=>{let u=se();return Dr(u.accountBgAutoMain?()=>u.accountBgAutoMain(g):null,()=>Q("/token-quota/background/auto-main",{method:"POST",body:{enabled:g}}))},g=>e.update(u=>({...u,quota:{...u.quota,background:{...u.quota.background??{},autoMain:g}}}))),d=g=>{l(g),i.run(async()=>{let u=se(),p=await Dr(u.accountBgConvert?()=>u.accountBgConvert(g):null,()=>Q("/token-quota/background/convert",{method:"POST",body:{percent:g}}));if(l(null),!p.ok)return De(p);let m=p.data?.quota;return m&&e.update(v=>({...v,quota:{...v.quota,...m,resetCards:v.quota.resetCards,resetCardPricePoints:v.quota.resetCardPricePoints}})),{success:{key:"bg.converted",vars:{pct:g}}}})};return o(ke,{icon:"clock",title:t("bg.title"),desc:t("bg.desc"),children:[o("div",{class:"fx-quota-list fx-block",children:[o(tr,{label:t("common.today"),display:r}),o(tr,{label:t("common.thisWeek"),display:a})]}),o(Ve,{label:t("bg.autoMain"),desc:t("bg.autoMainDesc"),children:o(Qt,{checked:c.checked,disabled:c.action.pending,label:t("bg.autoMain"),onChange:c.toggle})}),o(Ve,{label:t("bg.convert"),desc:t("bg.convertDesc"),class:"fx-row--wide",children:cg.map(g=>o(Kt,{label:`${g}%`,confirmLabel:t("bg.convertConfirm",{pct:g}),pending:i.pending&&s===g,disabled:i.pending&&s!==g,onConfirm:()=>d(g)},g))}),(i.error||i.success||c.action.error)&&o(Me,{children:[o(pe,{a:c.action}),o(pe,{a:i})]})]})}function ug(e){let{t,locale:n}=ae(),{invite:r,inviteState:a}=e.data,[i,s]=A(null),[l,c]=A(""),[d,g]=A(""),u=ue(),p=ue(),m=ue();oe(()=>{let z=!0;return se().authStatus?.().then(x=>{z&&s(x?.cloudUrl?x.cloudUrl.replace(/\/+$/,""):null)}).catch(()=>{}),()=>{z=!1}},[]);let f=async()=>{let z=await Q("/invite/my-code");return e.update(x=>({...x,invite:z.ok?z.data:x.invite,inviteState:z.ok?"ok":z.status===404?"hidden":x.inviteState})),z},v=()=>void u.run(async()=>{let z=l.trim();if(!z)return{error:{key:"err.inviteEmpty"}};let x=await Q("/invite/claim",{method:"POST",body:{code:z}});return x.ok?(c(""),f(),{success:{key:"invite.claimed"}}):De(x)}),w=()=>void p.run(async()=>{let z=d.trim();if(!z)return{error:{key:"err.redeemEmpty"}};let x=await Q("/redemption/redeem",{method:"POST",body:{code:z}});if(!x.ok)return De(x);g(""),e.onRedeemed();let M=[],L=Ce(x.data?.creditsAmount);L&&M.push(t("redeem.gotPoints",{n:Pe(L,n)})),x.data?.membershipPlanId&&M.push(t("redeem.gotMembership"));for(let H of Array.isArray(x.data?.items)?x.data.items:[]){let V=(n==="zh"?H?.label?.zh:H?.label?.en)||H?.label?.zh||H?.label?.en||H?.kind;V&&M.push(V)}return{success:M.length?{key:"redeem.successWith",vars:{what:M.join(n==="zh"?"\u3001":", ")}}:{key:"redeem.success"}}}),k=r?.code&&i?`${i}/auth?invite=${encodeURIComponent(r.code)}`:"";return o(ke,{icon:"gift",title:t("invite.title"),desc:t("invite.desc"),children:[a==="ok"&&r?.code&&o(Ve,{label:t("invite.myCode"),desc:t("invite.count",{n:Pe(Ce(r.invitedCount)??0,n)}),class:"fx-row--wide",children:[o("code",{class:"fx-code","data-testid":"invite-code",children:r.code}),o(_t,{text:r.code,label:t("invite.copyCode")}),o(_t,{text:k,label:t("invite.copyLink"),disabled:!k})]}),a==="failed"&&o(Me,{children:o(de,{tone:"warn",children:[t("invite.loadFailed")," ",o("button",{type:"button",class:"fx-link",disabled:m.pending,onClick:()=>void m.run(async()=>{await f()}),children:t("common.retry")})]})}),a==="ok"&&r?.claim?.eligible&&o(Ve,{label:t("invite.claim"),desc:t("invite.claimDesc"),class:"fx-row--wide",children:o("form",{class:"fx-inline",onSubmit:z=>{z.preventDefault(),v()},children:[o("input",{class:"fx-input",value:l,placeholder:t("invite.claimPlaceholder"),"aria-label":t("invite.claim"),onInput:z=>c(z.currentTarget.value)}),o(q,{submit:!0,pending:u.pending,children:t("invite.claimSubmit")})]})}),(u.error||u.success)&&o(Me,{children:o(pe,{a:u})}),e.redeemEnabled&&o(Ve,{label:t("redeem.title"),desc:t("redeem.desc"),class:"fx-row--wide",children:o("form",{class:"fx-inline",onSubmit:z=>{z.preventDefault(),w()},children:[o("input",{class:"fx-input",value:d,placeholder:t("redeem.placeholder"),"aria-label":t("redeem.title"),onInput:z=>g(z.currentTarget.value)}),o(q,{submit:!0,pending:p.pending,children:t("redeem.submit")})]})}),(p.error||p.success)&&o(Me,{children:o(pe,{a:p})})]})}function pg(e){let t=[],n,r=new Map;for(let a of e)if(a.itemType==="reset_card")n||(n={id:"reset_card",items:[],resetCard:!0},t.push(n)),n.items.push(a);else if(a.itemType==="custom_item"&&a.itemDefinition?.stackable){let i=`${a.productId||a.id}:${JSON.stringify(a.itemDefinition)}`,s=r.get(i);s||(s={id:`custom:${i}`,items:[],resetCard:!1},r.set(i,s),t.push(s)),s.items.push(a)}else t.push({id:a.id,items:[a],resetCard:!1});return t}function Sc(){let e=Oe(()=>Q("/shop/inventory"));return e.state==="loading"?o(Ie,{panels:1,rows:4}):e.state==="signedOut"?o(Be,{}):e.state==="error"?o($e,{error:e.error,onRetry:e.retry}):o(fg,{items:e.data??[],onRefresh:e.reload,onUsed:t=>{e.update(n=>n.filter(r=>r.id!==t.itemId)),e.reload()}})}function fg(e){let{t,locale:n,goTo:r}=ae(),[a,i]=A(null),[s,l]=A(null),c=qe(),d=pg(e.items),g=d.find(f=>f.id===a),u=Math.max(24,Math.ceil(d.length/6)*6)-d.length,p=f=>f.resetCard?t("card.title"):f.items[0].itemDefinition?.name[n]||f.items[0].displayName||t("backpack.item"),m=f=>{c.current&&(l(f),e.onUsed(f))};return o(ke,{icon:"backpack",title:t("page.backpack"),desc:t("backpack.desc"),actions:o(q,{onClick:e.onRefresh,children:[o(J,{name:"refresh",size:13}),t("backpack.refresh")]}),children:o("div",{class:"fx-backpack fx-block",children:[o("div",{class:"fx-backpack-summary",children:[o("span",{children:t("backpack.total",{n:Pe(e.items.length,n)})}),r&&o("button",{class:"fx-link",type:"button",onClick:()=>r("quota"),children:t("backpack.getCards")})]}),s&&o("div",{class:`fx-backpack-used fx-backpack-${s.animation}`,role:"status",children:[o(J,{name:"gift",size:20}),o("div",{children:[o("strong",{children:s.message[n]}),o("div",{children:s.effects.map(f=>_c(f,t,n)).join(" \xB7 ")})]})]},s.itemId),o("div",{class:"fx-backpack-layout",children:[o("div",{children:[o("div",{class:"fx-backpack-grid",role:"group","aria-label":t("backpack.grid"),children:[d.map(f=>{let v=p(f);return o("button",{type:"button",class:`fx-backpack-slot${f.resetCard?" is-card":""}`,"data-rarity":f.items[0].itemDefinition?.rarity,"aria-pressed":g?.id===f.id,"aria-label":t("backpack.slot",{name:v,n:f.items.length}),title:v,onClick:()=>i(f.id),children:[o("span",{class:"fx-backpack-icon",children:f.items[0].itemDefinition?.icon?o("span",{class:"fx-backpack-emoji",children:f.items[0].itemDefinition.icon}):o(J,{name:f.resetCard?"card":"gift",size:30})}),o("span",{class:"fx-backpack-name",children:v}),(f.resetCard||f.items[0].itemDefinition?.stackable)&&o("span",{class:"fx-backpack-count",children:["\xD7",Pe(f.items.length,n)]})]},f.id)}),Array.from({length:u},(f,v)=>o("div",{class:"fx-backpack-slot is-empty","aria-hidden":"true"},`empty:${v}`))]}),!d.length&&o("p",{class:"fx-backpack-empty",children:t("backpack.empty")})]}),g?o(mg,{slot:g,name:p(g),onUsed:m},`${g.id}:${g.items[0].id}`):o("div",{class:"fx-backpack-detail fx-backpack-prompt",children:[o(J,{name:"backpack",size:30}),o(de,{children:t(d.length?"backpack.select":"backpack.emptyHint")})]})]})]})})}function _c(e,t,n){return e.type==="points"?t("backpack.effect.points",{n:Pe(e.amount,n)}):e.type==="reset_card"?t("backpack.effect.cards",{n:Pe(e.count,n)}):t("backpack.effect.quota")}function mg(e){let{t,locale:n,goTo:r}=ae(),a=e.slot.items[0],[i,s]=A(null),l=ue(),c=ue(),[d,g]=A(!1),u=a.itemDefinition,p=qe(),m=a.source==="points"?t("backpack.source.points"):a.source==="admin"?t("backpack.source.admin"):a.source==="reward"?t("backpack.source.reward"):t("backpack.source.other"),f=()=>void l.run(async()=>{let w=await Q(`/shop/inventory/${encodeURIComponent(a.id)}`);if(p.current){if(!w.ok)return De(w);s(w.data)}}),v=()=>void c.run(async()=>{let w=await Q(`/shop/inventory/${encodeURIComponent(a.id)}/use`,{method:"POST"});if(!w.ok)return De(w);e.onUsed(w.data)});return o("section",{class:"fx-backpack-detail","aria-label":t("backpack.details"),children:[o("span",{class:`fx-backpack-detail-icon${e.slot.resetCard?" is-card":""}`,children:u?.icon?o("span",{class:"fx-backpack-emoji",children:u.icon}):o(J,{name:e.slot.resetCard?"card":"gift",size:32})}),o("h3",{children:e.name}),o("span",{class:"fx-tag",children:[t(e.slot.resetCard||u?.use?"backpack.consumable":u?"backpack.collectible":"backpack.voucher"),u&&` \xB7 ${t(`backpack.rarity.${u.rarity}`)}`]}),o("dl",{class:"fx-backpack-facts",children:[o("div",{children:[o("dt",{children:t("backpack.quantity")}),o("dd",{children:Pe(e.slot.items.length,n)})]}),o("div",{children:[o("dt",{children:t("backpack.acquired")}),o("dd",{children:Gt(a.acquiredAt,n)})]}),!e.slot.resetCard&&o("div",{children:[o("dt",{children:t("backpack.source")}),o("dd",{children:m})]})]}),u?o(N,{children:[u.description&&o(de,{children:u.description[n]}),u.use&&o(N,{children:[o("div",{class:"fx-backpack-effects",children:u.use.effects.map((w,k)=>o("div",{children:_c(w,t,n)},k))}),d?o(N,{children:[o(de,{children:t("backpack.consumeConfirm")}),o("div",{class:"fx-backpack-use-actions",children:[o(q,{variant:"primary",pending:c.pending,onClick:v,children:t("backpack.confirmUse")}),o(q,{disabled:c.pending,onClick:()=>g(!1),children:t("common.cancel")})]})]}):o(q,{variant:"primary",onClick:()=>g(!0),children:u.use.label?.[n]||t("backpack.use")}),o(pe,{a:c,captchaSection:"backpack"})]})]}):e.slot.resetCard?o(N,{children:[o(de,{children:t("card.desc")}),r&&o(q,{variant:"primary",onClick:()=>r("quota"),children:t("backpack.manageCards")})]}):i?o("div",{class:"fx-backpack-reveal",children:[i.codeName&&o("div",{class:"fx-muted",children:i.codeName}),i.key?o(N,{children:[o("code",{children:i.key}),o(_t,{text:i.key,label:t("backpack.copyKey")})]}):o(de,{children:t("backpack.noKey")})]}):o(q,{pending:l.pending,onClick:f,children:[o(J,{name:"key",size:14}),t("backpack.reveal")]}),o(pe,{a:l,captchaSection:"backpack"})]})}var gg=/^1[3-9]\d{9}$|^\+[1-9]\d{6,14}$/,hg=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,Cc=(e,t)=>e==="phone"?gg.test(t):hg.test(t),nr=(e,t)=>e==="phone"?Br(t):Fr(t);function Ac(){let e=Oe(()=>Q("/auth/me"));if(e.state==="loading")return o(Ie,{panels:3,rows:2});if(e.state==="signedOut")return o(Be,{});if(e.state==="error")return o($e,{error:e.error,onRetry:e.retry});let t=e.data;return o(N,{children:[o(bg,{me:t,onBound:(n,r)=>e.update(a=>({...a,[n]:r}))}),o(xg,{me:t}),o(zg,{}),o(Sg,{me:t})]})}function ci(){let e=Nl(),t=ue();return{cd:e,a:t,send:(a,i,s)=>t.run(async()=>{let l=await Q("/auth/send-code",{method:"POST",body:{target:a,type:i,purpose:s}});return l.ok?(e.start(60),{success:{key:"sec.codeSent"}}):De(l)}),reset:()=>{e.stop(),t.clear()}}}function bg(e){let{t}=ae(),[n,r]=A(null),[a,i]=A(null);return o(ke,{icon:"key",title:t("sec.methods.title"),desc:t("sec.methods.desc"),children:["phone","email"].map(s=>{let l=e.me[s];return o(N,{children:[o(Ve,{label:t(s==="phone"?"account.contact.phone":"account.contact.email"),desc:l?nr(s,l):t("account.contact.unbound"),children:o(q,{onClick:()=>{i(null),r(n===s?null:s)},children:t(n===s?"common.cancel":l?"sec.change":"sec.bind")})}),n===s&&o(vg,{kind:s,current:l??null,onDone:c=>{e.onBound(s,c),r(null),i(s)}}),a===s&&n!==s&&o(Me,{children:o("div",{class:"fx-msg is-ok",role:"status",children:t(s==="phone"?"sec.phoneBound":"sec.emailBound")})})]},s)})})}function vg(e){let{t}=ae(),{kind:n}=e,[r,a]=A(""),[i,s]=A(""),l=ci(),c=ue(),d=r.trim(),g=n==="phone"?"err.phoneInvalid":"err.emailInvalid",u=()=>{if(!Cc(n,d)){l.a.run(async()=>({error:{key:g}}));return}l.send(d,n,"bind")},p=()=>void c.run(async()=>{if(!Cc(n,d))return{error:{key:g}};if(!i.trim())return{error:{key:"err.codeRequired"}};let m=n==="phone"?{phone:d,verification_code:i.trim()}:{email:d,verification_code:i.trim()},f=await Q(n==="phone"?"/auth/bind-phone":"/auth/bind-email",{method:"POST",body:m});if(!f.ok)return De(f);e.onDone(d)});return o(Me,{class:"fx-form",children:[o("label",{class:"fx-field",children:[o("span",{children:e.current?t(n==="phone"?"sec.newPhone":"sec.newEmail"):t(n==="phone"?"sec.phone":"sec.email")}),o("input",{class:"fx-input",type:n==="phone"?"tel":"email",value:r,autoComplete:"off",placeholder:t(n==="phone"?"sec.phonePlaceholder":"sec.emailPlaceholder"),onInput:m=>a(m.currentTarget.value)})]}),o(di,{code:i,setCode:s,sender:l,onSend:u}),o("div",{class:"fx-inline",children:o(q,{variant:"primary",pending:c.pending,onClick:p,children:t("sec.bindSubmit")})}),o(pe,{a:c})]})}function di(e){let{t}=ae(),{cd:n,a:r}=e.sender;return o("div",{class:"fx-field",children:[o("span",{children:e.label??t("sec.code")}),o("div",{class:"fx-inline",children:[o("input",{class:"fx-input fx-input--code",inputMode:"numeric",autoComplete:"one-time-code",value:e.code,placeholder:t("sec.codePlaceholder"),"aria-label":e.label??t("sec.code"),onInput:a=>e.setCode(a.currentTarget.value)}),o(q,{pending:r.pending,disabled:n.left>0||e.disabled,onClick:e.onSend,children:n.left>0?t("sec.resendIn",{s:n.left}):t("sec.sendCode")})]}),o(pe,{a:r})]})}function yg(e){let{t}=ae(),n=Ml(e.value),r=e.value.length>0,a=[[n.length,t("pw.req.length",{min:8,max:64})],[n.lower,t("pw.req.lower")],[n.upper,t("pw.req.upper")],[n.special,t("pw.req.special")],[n.space,t("pw.req.space")]];return o("ul",{class:"fx-rules","aria-label":t("pw.rulesLabel"),children:a.map(([i,s])=>o("li",{class:i?"is-ok":r?"is-bad":"",children:[i?o(J,{name:"check",size:11}):r?o(J,{name:"x",size:11}):o("span",{class:"fx-rule-dot","aria-hidden":"true"}),o("span",{children:s})]},s))})}function Ec(e,t){let n=Pl(e);return n.ok?e!==t?{error:{key:"pw.mismatch"}}:null:{error:{key:ja[n.rule]}}}function xg(e){let{t}=ae(),n=["phone","email"].filter(l=>!!e.me[l]),[r,a]=A("current"),[i,s]=A(!1);return o(ke,{icon:"shield",title:t("pw.title"),desc:t("pw.desc",{min:8,max:64}),actions:o(q,{onClick:()=>s(!i),children:t(i?"common.cancel":"pw.change")}),children:i&&o(Me,{class:"fx-form",children:[o(St,{label:t("pw.modeLabel"),value:r,onChange:a,options:[{value:"current",label:t("pw.mode.current")},{value:"code",label:t("pw.mode.code")}]}),r==="current"?o(kg,{onDone:()=>s(!1)}):n.length?o(wg,{me:e.me,targets:n,onDone:()=>s(!1)}):o(de,{children:t("pw.codeNeedsContact")})]})})}function Pc(e){let{t}=ae();return o(N,{children:[o("label",{class:"fx-field",children:[o("span",{children:t("pw.new")}),o("input",{class:"fx-input",type:"password",autoComplete:"new-password",value:e.pw,maxLength:72,onInput:n=>e.setPw(n.currentTarget.value)})]}),o(yg,{value:e.pw}),o("label",{class:"fx-field",children:[o("span",{children:t("pw.confirm")}),o("input",{class:"fx-input",type:"password",autoComplete:"new-password",value:e.confirm,onInput:n=>e.setConfirm(n.currentTarget.value)})]})]})}function kg(e){let{t}=ae(),[n,r]=A(""),[a,i]=A(""),[s,l]=A(""),c=ue(),[d,g]=A(!1),u=()=>void c.run(async()=>{if(!n)return{error:{key:"pw.currentRequired"}};let p=Ec(a,s);if(p)return p;let m=await Q("/auth/password",{method:"PUT",body:{currentPassword:n,newPassword:a}});return m.ok?(r(""),i(""),l(""),g(!0),{success:{key:"pw.changed"}}):m.status===404?{error:{key:"pw.noPasswordYet"}}:De(m)});return o(N,{children:[o("label",{class:"fx-field",children:[o("span",{children:t("pw.current")}),o("input",{class:"fx-input",type:"password",autoComplete:"current-password",value:n,onInput:p=>r(p.currentTarget.value)})]}),o(Pc,{pw:a,setPw:i,confirm:s,setConfirm:l}),o("div",{class:"fx-inline",children:[o(q,{variant:"primary",pending:c.pending,onClick:u,children:t("pw.submit")}),d&&o(q,{onClick:e.onDone,children:t("common.done")})]}),o(pe,{a:c})]})}function wg(e){let{t}=ae(),[n,r]=A(e.targets[0]),[a,i]=A(""),[s,l]=A(""),[c,d]=A(""),g=ci(),u=ue(),[p,m]=A(!1),f=e.me[n]||"",v=()=>void u.run(async()=>{if(!a.trim())return{error:{key:"err.codeRequired"}};let w=Ec(s,c);if(w)return w;let k=n==="phone"?{phone:f,code:a.trim(),newPassword:s}:{email:f,code:a.trim(),newPassword:s},z=await Q("/auth/reset-password",{method:"POST",body:k});return z.ok?(i(""),l(""),d(""),m(!0),{success:{key:"pw.changed"}}):De(z)});return o(N,{children:[e.targets.length>1?o(St,{label:t("pw.via"),value:n,onChange:w=>{r(w),i(""),g.reset()},options:e.targets.map(w=>({value:w,label:nr(w,e.me[w])}))}):o(de,{children:t("pw.codeTo",{target:nr(n,f)})}),o(di,{code:a,setCode:i,sender:g,onSend:()=>void g.send(f,n,"reset_password")}),o(Pc,{pw:s,setPw:l,confirm:c,setConfirm:d}),o("div",{class:"fx-inline",children:[o(q,{variant:"primary",pending:u.pending,onClick:v,children:t("pw.submitReset")}),p&&o(q,{onClick:e.onDone,children:t("common.done")})]}),o(pe,{a:u})]})}function zg(){let{t:e}=ae(),t=ue(),n=()=>void t.run(async()=>{let r=await Q("/auth/logout-all",{method:"POST"});if(!r.ok)return De(r);try{await se().forsionLogout?.()}catch(a){return{error:{raw:Zt(a)}}}return{success:{key:"sec.logoutAllDone"}}});return o(ke,{icon:"laptop",title:e("sec.devices.title"),desc:e("sec.devices.desc"),children:[o(Ve,{label:e("sec.logoutAll"),desc:e("sec.logoutAllDesc"),children:o(Kt,{label:e("sec.logoutAll"),confirmLabel:e("sec.logoutAllConfirm"),pending:t.pending,onConfirm:n})}),(t.error||t.success)&&o(Me,{children:o(pe,{a:t})})]})}function Sg(e){let{t}=ae(),n=["phone","email"].filter(k=>!!e.me[k]),[r,a]=A(!1),[i,s]=A(n.length?"code":"password"),[l,c]=A(n[0]??null),[d,g]=A(""),[u,p]=A(""),m=ci(),f=ue(),v=l&&e.me[l]||"",w=()=>void f.run(async()=>{if(i==="code"&&!d.trim())return{error:{key:"err.codeRequired"}};if(i==="password"&&!u)return{error:{key:"pw.currentRequired"}};let k=await Q("/auth/delete-account",{method:"POST",body:i==="code"?{verification_code:d.trim()}:{password:u}});if(!k.ok)return De(k);try{await se().forsionLogout?.()}catch{}return{success:{key:"del.done"}}});return o(ke,{icon:"alert",danger:!0,title:t("del.title"),desc:t("del.desc"),actions:o(q,{variant:"danger",onClick:()=>{a(!r),f.clear()},children:t(r?"common.cancel":"del.start")}),children:r&&o(Me,{class:"fx-form",children:[o(de,{tone:"error",children:t("del.warn")}),n.length>0&&o(St,{label:t("del.methodLabel"),value:i,onChange:s,options:[{value:"code",label:t("del.byCode")},{value:"password",label:t("del.byPassword")}]}),i==="code"&&l?o(N,{children:[n.length>1&&o(St,{label:t("pw.via"),value:l,onChange:k=>{c(k),g(""),m.reset()},options:n.map(k=>({value:k,label:nr(k,e.me[k])}))}),o(di,{code:d,setCode:g,sender:m,label:t("del.codeLabel",{target:nr(l,v)}),onSend:()=>void m.send(v,l,"delete_account")})]}):o("label",{class:"fx-field",children:[o("span",{children:t("del.passwordLabel")}),o("input",{class:"fx-input",type:"password",autoComplete:"current-password",value:u,onInput:k=>p(k.currentTarget.value)})]}),o("div",{class:"fx-inline",children:o(Kt,{variant:"danger",label:t("del.submit"),confirmLabel:t("del.confirm"),pending:f.pending,onConfirm:w})}),o(pe,{a:f})]})})}var Ic=20;function Rc(){let e=Oe(async()=>{let[t,n]=await Promise.all([Q("/token-quota/my"),Q(`/token-quota/my/logs?limit=${Ic}&offset=0`)]);if(!t.ok)return t;let r=n.ok&&Array.isArray(n.data?.logs)?n.data.logs:null;return{ok:!0,status:t.status,data:{dailyLimit:Ce(t.data?.dailyLimit),logs:r,total:n.ok?Ce(n.data?.total)??r?.length??0:0,logsFail:n.ok?null:n}}});return e.state==="loading"?o(Ie,{panels:3,rows:2}):e.state==="signedOut"?o(Be,{}):e.state==="error"?o($e,{error:e.error,onRetry:e.retry}):o(N,{children:[o(_g,{dailyLimit:e.data.dailyLimit}),o(Tg,{base:e.data,onRetry:e.reload})]})}function _g(e){let{t,locale:n}=ae(),[r,a]=A(30),[i,s]=A({state:"loading"}),[l,c]=A(!1),[d,g]=A(0),u=ce(0);oe(()=>{let x=++u.current;return c(!0),Q(`/usage/stats?days=${r}`).then(M=>{x===u.current&&(c(!1),s(M.ok?{state:"ready",data:M.data??{}}:{state:"error",fail:M}))}),()=>{u.current++}},[r,d]);let p=e.dailyLimit!==null&&e.dailyLimit<0?"usage.unlimitedNote":qr(1,e.dailyLimit)===null?"usage.noLimitNote":null,m=x=>qr(x,e.dailyLimit)??"\u2014",f=o(St,{label:t("usage.range"),value:r,onChange:a,options:[{value:7,label:t("usage.days",{n:7})},{value:30,label:t("usage.days",{n:30})},{value:90,label:t("usage.days",{n:90})}]}),v=i.state==="ready"?i.data:null,w=(v?.byModel??[]).filter(Boolean),k=(v?.byProject??[]).filter(Boolean),z=Ce(v?.successRate);return o(N,{children:[o(ke,{icon:"chart",title:t("usage.overview.title"),desc:t("usage.overview.desc"),actions:f,children:[i.state==="error"?o("div",{class:"fx-sub",children:o("div",{class:"fx-msg is-error",role:"alert",children:[o("span",{children:Wt(Bt(i.fail),t)}),o("button",{type:"button",class:"fx-link",onClick:()=>g(x=>x+1),children:t("common.retry")})]})}):o("div",{class:`fx-stats fx-block${l&&v?" is-refreshing":""}`,"aria-busy":l||void 0,children:[o(ui,{label:t("usage.requests"),value:v?Pe(Ce(v.totalRequests)??0,n):null,testId:"usage-requests"}),o(ui,{label:t("usage.successRate"),value:v?z===null?"\u2014":`${z.toFixed(1)}%`:null}),o(ui,{label:t("usage.consumption"),value:v?m(v.totalPointsCost):null,sub:t("usage.ofToday"),testId:"usage-consumption"})]}),p&&o("div",{class:"fx-sub fx-sub--tight",children:o(de,{children:t(p)})})]}),i.state!=="error"&&o(N,{children:[o(ke,{icon:"gauge",title:t("usage.byModel.title"),desc:t("usage.byModel.desc"),children:o(Mc,{loading:!v,empty:t("usage.empty"),head:[t("usage.col.model"),t("usage.col.requests"),t("usage.col.consumption")],rows:w.map(x=>[x.modelName||x.modelId||"\u2014",Pe(Ce(x.count)??0,n),m(x.pointsCost)])})}),o(ke,{icon:"laptop",title:t("usage.byApp.title"),desc:t("usage.byApp.desc"),children:o(Mc,{loading:!v,empty:t("usage.empty"),head:[t("usage.col.app"),t("usage.col.requests"),t("usage.col.consumption")],rows:k.map(x=>[Lc(x.projectSource,t("usage.appUnknown")),Pe(Ce(x.count)??0,n),m(x.pointsCost)])})})]})]})}var Cg={tangu:"Tangu","ai-studio":"Forsion AI Studio",desktop:"Forsion Desktop",amadeus:"Amadeus",notebase:"Notebase",calendar:"Forsion Calendar",chat:"Forsion Chat",desk:"Forsion Desk","photo-studio":"Photo Studio",connect:"Forsion Connect"},Lc=(e,t)=>!e||e==="unknown"?t:Cg[e]??e;function ui(e){return o("div",{class:"fx-stat",children:[o("span",{class:"fx-stat-label",children:e.label}),e.value===null?o("span",{class:"fx-skel fx-skel--stat"}):o("strong",{class:"fx-stat-value","data-testid":e.testId,children:e.value}),e.sub&&o("span",{class:"fx-stat-sub",children:e.sub})]})}function Mc(e){return e.loading?o("div",{class:"fx-sub",children:[o("span",{class:"fx-skel fx-skel--row"}),o("span",{class:"fx-skel fx-skel--row"})]}):e.rows.length?o("div",{class:"fx-table-wrap fx-block",children:o("table",{class:"fx-table",children:[o("thead",{children:o("tr",{children:e.head.map((t,n)=>o("th",{class:n?"is-num":"",children:t},n))})}),o("tbody",{children:e.rows.map((t,n)=>o("tr",{children:t.map((r,a)=>o("td",{class:a?"is-num":"",children:r},a))},n))})]})}):o(ut,{children:e.empty})}function Tg(e){let{t,locale:n}=ae(),r=qe(),[a,i]=A(e.base.logs??[]),[s,l]=A(e.base.total),c=ue();oe(()=>{i(e.base.logs??[]),l(e.base.total)},[e.base]);let d=()=>void c.run(async()=>{let u=await Q(`/token-quota/my/logs?limit=${Ic}&offset=${a.length}`);if(!u.ok)return{error:Bt(u)};let p=Array.isArray(u.data?.logs)?u.data.logs:[];r.current&&(i(m=>[...m,...p]),l(m=>p.length?Ce(u.data?.total)??m:a.length))}),g=e.base.dailyLimit;return o(ke,{icon:"clock",title:t("usage.recent.title"),desc:t("usage.recent.desc"),children:[e.base.logsFail?o("div",{class:"fx-sub",children:o("div",{class:"fx-msg is-error",role:"alert",children:[o("span",{children:Wt(Bt(e.base.logsFail),t)}),o("button",{type:"button",class:"fx-link",onClick:e.onRetry,children:t("common.retry")})]})}):a.length===0?o(ut,{children:t("usage.recentEmpty")}):o("div",{class:"fx-list fx-block",role:"list",children:a.map((u,p)=>o("div",{class:"fx-list-row",role:"listitem",children:[o("span",{class:"fx-list-main",children:[o("strong",{children:[u.modelName||u.modelId||"\u2014",u.success===!1&&o("span",{class:"fx-tag fx-tag--danger",children:t("usage.failed")})]}),o("small",{children:[Gt(u.createdAt,n),Lc(u.projectSource,t("usage.appUnknown"))].join(" \xB7 ")})]}),o("span",{class:"fx-value",children:qr(u.pointsCost,g)??"\u2014"})]},u.id??p))}),a.length>0&&o("div",{class:"settings-panel-footer fx-footer",children:[o("span",{class:"fx-muted",children:t("usage.shown",{shown:Pe(a.length,n),total:Pe(Math.max(s,a.length),n)})}),a.length<s&&o(q,{pending:c.pending,onClick:d,children:t("common.loadMore")})]}),c.error&&o("div",{class:"fx-sub fx-sub--tight",children:o(pe,{a:c})})]})}var Dc=["plugin","amadeus-plugin","skill","agent","space","theme"],Ag=["zip","github","npm"],Eg=["description","tags","minAppVersion","maxAppVersion","platforms"],Pg=50*1024*1024,Mg=new Set(["market_npm_invalid","market_npm_source","market_github_source","market_not_found","market_zip_required","market_zip_invalid","market_zip_too_large","market_version_required","market_version_invalid","market_version_mismatch","market_version_not_newer","market_icon_invalid","market_duplicate","market_update_pending","market_stale","market_requirements_invalid","market_requirements_mismatch","market_no_release","market_no_changes","market_dryrun_unsupported"]),Ig=new Set(["no_manifest","type_mismatch","tag_version_mismatch","id_slug_mismatch","engine_slug_mismatch","no_entry","has_node_modules"]),Vr=e=>`sub.type.${e.replace("-","_")}`,Oc=e=>e==="approved"?"sub.approved":e==="rejected"?"sub.rejected":"sub.pending",mi=e=>e==="github"?"GitHub":e==="npm"?"npm":"ZIP",Rg=e=>e.status==="pending"||!!e.pendingUpdate,Nc=(e,t)=>t==="all"||(t==="pending"?Rg(e):e.status===t),Lg=e=>e>=1024*1024?`${(e/1024/1024).toFixed(1)} MB`:`${Math.max(1,Math.round(e/1024))} KB`,Bc=e=>e.status==="approved"?"sub.updated":"sub.resubmitted";async function so(e){let t=se().cloudInvoke;if(!t)return{ok:!1,out:{error:{key:"err.unavailable"}},code:null,values:{}};let n=await t("cloud:marketSubmit",{...e.id?{id:e.id}:{},...e.dryRun?{dryRun:!0}:{},fields:e.fields,...e.zip?{zip:{name:e.zip.name,data:e.zip.data}}:{}}),r=Lr(n);if(r.ok)return{ok:!0,data:r.data};r.status===401&&se().authStatus?.().catch(()=>{});let a=Object.fromEntries(Object.entries(n?.json?.values||{}).filter(([,s])=>typeof s=="string"||typeof s=="number").map(([s,l])=>[s,String(l)]));return{ok:!1,out:r.code==="market_version_not_newer"&&a.version&&a.current?{error:{key:"sub.notNewer",vars:a}}:Mg.has(r.code||"")?{error:{key:`sub.err.${r.code}`}}:De(r),code:r.code,values:a}}async function Fc(e){return e.size>Pg?{error:{key:"sub.errLarge"}}:{name:e.name,size:e.size,data:new Uint8Array(await e.arrayBuffer())}}function Dg(e,t){let n=[e?.minAppVersion&&`\u2265 ${e.minAppVersion}`,e?.maxAppVersion&&`< ${e.maxAppVersion}`].filter(Boolean).join(", "),r=[n&&`Forsion ${n}`,e?.platforms?.length?e.platforms.join(", "):""].filter(Boolean);return r.length?r.join(" \xB7 "):t("sub.reqNone")}function $c({status:e}){let t=Ke();return o("span",{class:`fx-tag ${e==="approved"?"fx-status--resolved":e==="rejected"?"fx-tag--danger":"fx-tag--accent"}`,children:t(Oc(e))})}function Uc(e){let t=`${e.id}-${e.name}`;return o("label",{class:"fx-sub-field",for:t,children:[o("span",{children:e.label}),e.rows?o("textarea",{id:t,value:e.value,rows:e.rows,maxLength:2e5,onInput:n=>e.onInput(n.currentTarget.value)}):o("input",{id:t,value:e.value,placeholder:e.placeholder,maxLength:e.name==="summary"?2e3:500,onInput:n=>e.onInput(n.currentTarget.value)})]})}function Hc({id:e,file:t,disabled:n,onPick:r}){let a=Ke(),[i,s]=A(!1);oe(()=>{let c=()=>s(!1);return window.addEventListener("dragend",c),window.addEventListener("drop",c,!0),window.addEventListener("blur",c),()=>{window.removeEventListener("dragend",c),window.removeEventListener("drop",c,!0),window.removeEventListener("blur",c)}},[]);let l=c=>{c&&!n&&r(c)};return o("label",{class:`fx-sub-drop${i?" is-over":""}${t?" is-filled":""}`,for:`${e}-zip`,onDragOver:c=>{c.preventDefault(),n||s(!0)},onDragLeave:()=>s(!1),onDrop:c=>{c.preventDefault(),s(!1),l(c.dataTransfer?.files?.[0])},children:[o(J,{name:t?"box":"upload",size:18}),o("span",{class:"fx-sub-drop-text",children:[o("strong",{children:t?t.name:a("sub.dropTitle")}),o("small",{children:t?a("sub.dropReplace",{size:Lg(t.size)}):a("sub.dropHint")})]}),o("input",{id:`${e}-zip`,class:"fx-sub-file",type:"file",accept:".zip,application/zip",disabled:n,onChange:c=>{l(c.currentTarget.files?.[0]),c.currentTarget.value=""}})]})}function qc({check:e,update:t}){let n=Ke(),r=e.manifest,a=[r?[!0,"sub.checkType",`${n(Vr(r.type))} \xB7 ${r.file}`]:[!1,"sub.checkType",n("sub.warn.no_manifest")],...e.version?[[!0,"sub.checkVersion",e.current?`v${e.current} \u2192 v${e.version}`:`v${e.version}`]]:[],[!0,"sub.checkIcon",n(e.icon?"sub.iconYes":"sub.iconNo")],[!0,"sub.checkReadme",n(e.readme?"sub.readmeYes":t?"sub.readmeKeep":"sub.readmeNo")],[!0,"sub.checkReq",Dg(e.metadata,n)],...(e.warnings||[]).filter(i=>i!=="no_manifest"&&Ig.has(i)).map(i=>[!1,"sub.checkWarn",n(`sub.warn.${i}`)])];return o("ul",{class:"fx-sub-checks",children:a.map(([i,s,l])=>o("li",{class:i?"is-ok":"is-warn",children:[o(J,{name:i?"check":"alert",size:14}),o("span",{class:"fx-sub-k",children:n(s)}),o("span",{children:l})]}))})}function Ng({item:e,checks:t,onDone:n}){let r=Ke(),a=Qn(),i=qe(),s=ue(),[l,c]=A(null),[d,g]=A(null),u=m=>void s.run(async()=>{c(null),g(null);let f=await Fc(m);if(!i.current)return;if(!("data"in f))return f;if(c(f),!t)return;let v=await so({id:e.id,dryRun:!0,fields:{},zip:f});if(i.current){if(!v.ok)return v.out;g(v.data)}}),p=()=>void s.run(async()=>{if(!l)return;let m=await so({id:e.id,fields:{},zip:l});if(i.current){if(!m.ok)return m.out;n(Bc(e))}});return o(N,{children:[o(Hc,{id:a,file:l,disabled:s.pending,onPick:u}),d&&o(qc,{check:d,update:!0}),d&&o(de,{children:r(e.status==="approved"?"sub.zipListedNote":"sub.zipUnlistedNote")}),l&&o("div",{class:"fx-sub-actions",children:[o(q,{variant:"primary",pending:s.pending,disabled:t&&!d,onClick:p,children:d?.version?r("sub.submitVersion",{version:d.version}):r("sub.submit")}),o(q,{disabled:s.pending,onClick:()=>{c(null),g(null),s.clear()},children:r("common.cancel")})]}),o(pe,{a:s,captchaSection:"submission"})]})}function Og({item:e,onDone:t}){let n=Ke(),r=qe(),a=ue(),[i,s]=A(null),[l,c]=A(null),d=()=>void a.run(async()=>{s(null),c(null);let p=await so({id:e.id,dryRun:!0,fields:{}});if(r.current){if(!p.ok){if(p.code==="market_version_not_newer"&&p.values.version){c(p.values);return}return p.out}s(p.data)}}),g=()=>void a.run(async()=>{let p=await so({id:e.id,fields:{}});if(r.current){if(!p.ok)return p.out;t(Bc(e))}}),u=e.source==="github"?e.githubRepoUrl:e.npmPackage;return o(N,{children:[!i&&o(q,{pending:a.pending,onClick:d,children:[o(J,{name:"refresh",size:13}),n(l?"sub.checkAgain":"sub.checkNew")]}),l&&o(de,{children:n("sub.upToDate",{version:l.version,current:l.current||l.version})}),i&&o(N,{children:[o("div",{class:"fx-sub-upstream",children:[o(J,{name:e.source==="github"?"link":"box",size:18}),o("span",{children:[o("strong",{children:n("sub.upstreamLatest",{version:i.version||""})}),o("small",{children:[u,i.tag&&n("sub.releaseTag",{tag:i.tag}),i.current&&n("sub.storeHas",{version:i.current})].filter(Boolean).join(" \xB7 ")})]})]}),o(de,{children:n(e.source==="github"?"sub.githubNote":"sub.npmNote",{version:i.version||""})}),o("div",{class:"fx-sub-actions",children:[o(q,{variant:"primary",pending:a.pending,onClick:g,children:n("sub.submitVersion",{version:i.version||""})}),o(q,{disabled:a.pending,onClick:()=>{s(null),a.clear()},children:n("common.cancel")})]})]}),o(pe,{a,captchaSection:"submission"})]})}function Bg({item:e,onDone:t}){let n=Ke(),r=Qn(),a=qe(),i=ue(),s=()=>({name:e.name,summary:e.summary||"",description:e.description||"",tags:(e.tags||[]).join(", "),minAppVersion:e.minAppVersion||"",maxAppVersion:e.maxAppVersion||"",platforms:(e.platforms||[]).join(", ")}),[l,c]=A(s),[d,g]=A(new Set),[u,p]=A(!1),m=k=>z=>{c(x=>({...x,[k]:z})),g(x=>new Set([...x,k])),i.clear()},f=()=>void i.run(async()=>{if(!l.name.trim())return{error:{key:"sub.errName"}};if(!d.size)return{error:{key:"sub.err.market_no_changes"}};let k=await so({id:e.id,fields:{mode:"info",...Object.fromEntries([...d].map(z=>[z,l[z].trim()]))}});if(a.current){if(!k.ok)return k.out;p(!1),t(e.status==="approved"?"sub.infoSubmitted":"sub.resubmitted")}}),v=(k,z,x={})=>o(Uc,{id:r,name:k,label:n(z),value:l[k],onInput:m(k),...x}),w=n("sub.unset");return o("section",{class:"fx-sub-sec",children:[o("div",{class:"fx-sub-sec-bar",children:[o("h4",{children:n("sub.secInfo")}),!u&&o(q,{disabled:!!e.pendingUpdate,title:e.pendingUpdate?n("sub.err.market_update_pending"):void 0,onClick:()=>{c(s()),g(new Set),i.clear(),p(!0)},children:[o(J,{name:"pencil",size:13}),n("sub.edit")]})]}),u?o("form",{class:"fx-sub-form fx-sub-form--inline",onSubmit:k=>{k.preventDefault(),f()},children:[o("fieldset",{disabled:i.pending,children:[o("div",{class:"fx-sub-columns",children:[v("name","sub.name"),v("tags","sub.tags",{placeholder:n("sub.tagsHint")})]}),v("summary","sub.summary"),v("description","sub.description",{rows:3}),o("div",{class:"fx-sub-columns",children:[v("minAppVersion","sub.minAppVersion",{placeholder:"2.13.0"}),v("maxAppVersion","sub.maxAppVersion",{placeholder:n("sub.optional")})]}),v("platforms","sub.platforms",{placeholder:"desktop, android, ios, web"}),o(de,{children:n("sub.requirementsHint")}),o(de,{children:n("sub.infoNote")})]}),o("div",{class:"fx-sub-actions",children:[o(q,{variant:"primary",pending:i.pending,submit:!0,children:n("sub.submitInfo")}),o(q,{disabled:i.pending,onClick:()=>{p(!1),i.clear()},children:n("common.cancel")})]}),o(pe,{a:i,captchaSection:"submission"})]}):o("dl",{class:"fx-sub-kv",children:[o("dt",{children:n("sub.summary")}),o("dd",{children:e.summary||w}),o("dt",{children:n("sub.description")}),o("dd",{class:"fx-sub-clamp",children:e.description||w}),o("dt",{children:n("sub.tags")}),o("dd",{children:e.tags?.length?e.tags.join(", "):w}),o("dt",{children:n("sub.minAppVersion")}),o("dd",{children:e.minAppVersion||w}),o("dt",{children:n("sub.maxAppVersion")}),o("dd",{children:e.maxAppVersion||w}),o("dt",{children:n("sub.platforms")}),o("dd",{children:e.platforms?.length?e.platforms.join(", "):w})]})]})}function Fg({item:e,checks:t,notice:n,onBack:r,onDone:a}){let i=Ke(),{locale:s}=ae(),l=e.pendingUpdate,c=e.rejectedUpdate;return o("div",{class:"fx-sub-detail","data-detail-id":e.id,children:[o("button",{type:"button",class:"btn sm ghost fx-sub-back",onClick:r,children:[o(J,{name:"back",size:13}),i("sub.back")]}),o("div",{class:"fx-sub-dhead",children:[o("div",{class:"fx-sub-item-head",children:[o("strong",{children:e.name}),o($c,{status:e.status})]}),o("div",{class:"fx-sub-meta",children:[o("span",{children:i(Vr(e.type))}),o("span",{children:mi(e.source)}),e.version&&o("span",{children:["v",e.version]}),o("span",{children:i("sub.downloads",{n:e.downloads||0})})]}),o("div",{children:o(_t,{text:e.id,label:`${i("sub.identity")} ${e.id.slice(0,8)}`})})]}),n&&o("p",{class:"fx-msg is-ok",role:"status",children:i(n)}),o("section",{class:"fx-sub-sec",children:[o("h4",{children:i("sub.secVersion")}),e.status==="rejected"&&e.reviewNote&&o(de,{tone:"error",children:e.reviewNote}),c&&o(de,{tone:"error",children:[i(c.kind==="info"?"sub.rejectedInfo":"sub.rejectedVersion",{version:c.version}),c.note?`: ${c.note}`:""]}),l?o(N,{children:[o(de,{children:i(l.kind==="info"?"sub.pendingInfo":"sub.pendingVersion",{version:l.version})}),o(de,{children:i("sub.pendingHint")})]}):e.status==="pending"&&e.source!=="zip"?o(de,{children:i("sub.inReview")}):e.source==="zip"?o(Ng,{item:e,checks:t,onDone:a}):o(Og,{item:e,onDone:a})]}),o(Bg,{item:e,onDone:a}),o("section",{class:"fx-sub-sec",children:[o("h4",{children:i("sub.secHistory")}),o("ul",{class:"fx-sub-time",children:[(e.versions||[]).map(d=>o("li",{children:[o("span",{children:yn(d.createdAt,s)}),o("span",{children:i("sub.histApproved",{version:d.version})})]},`${d.version}-${d.createdAt}`)),e.createdAt&&o("li",{children:[o("span",{children:yn(e.createdAt,s)}),o("span",{children:i("sub.histSubmitted")})]})]})]})]})}function $g({checks:e,onDone:t,onBack:n}){let r=Ke(),a=Qn(),i=qe(),s=ue(),[l,c]=A("zip"),[d,g]=A({type:"plugin",name:"",summary:"",githubRepoUrl:"",npmPackage:"",description:"",tags:"",minAppVersion:"",maxAppVersion:"",platforms:""}),[u,p]=A(new Set),[m,f]=A(null),[v,w]=A(null),k=L=>H=>{g(V=>({...V,[L]:H})),p(V=>new Set([...V,L])),s.clear()},z=L=>void s.run(async()=>{f(null),w(null);let H=await Fc(L);if(!i.current)return;if(!("data"in H))return H;if(f(H),!e)return;let V=await so({dryRun:!0,fields:{source:"zip"},zip:H});if(!i.current)return;if(!V.ok)return V.out;let ee=V.data;w(ee);let te=ee.manifest;g(S=>({...S,type:!u.has("type")&&te&&Dc.includes(te.type)?te.type:S.type,name:!u.has("name")&&!S.name&&te?.name?te.name:S.name}))}),x=()=>void s.run(async()=>{if(!d.name.trim())return{error:{key:"sub.errName"}};if(l!=="zip"&&!(l==="github"?d.githubRepoUrl:d.npmPackage).trim())return{error:{key:"sub.errSource"}};if(l==="zip"&&!m)return{error:{key:"sub.errZip"}};let L=l==="github"?{githubRepoUrl:d.githubRepoUrl.trim()}:l==="npm"?{npmPackage:d.npmPackage.trim()}:{},H=await so({fields:{type:d.type,source:l,name:d.name.trim(),summary:d.summary.trim(),...L,...Object.fromEntries(Eg.map(V=>[V,d[V].trim()]))},zip:l==="zip"?m:null});if(i.current){if(!H.ok)return H.out;t(String(H.data?.id||""))}}),M=(L,H,V={})=>o(Uc,{id:a,name:L,label:r(H),value:d[L],onInput:k(L),...V});return o("div",{class:"fx-sub-detail",children:[o("button",{type:"button",class:"btn sm ghost fx-sub-back",onClick:n,children:[o(J,{name:"back",size:13}),r("sub.back")]}),o("div",{class:"fx-sub-dhead",children:o("div",{class:"fx-sub-item-head",children:o("strong",{children:r("sub.new")})})}),o("form",{class:"fx-sub-form fx-sub-form--inline",onSubmit:L=>{L.preventDefault(),x()},children:[o("fieldset",{disabled:s.pending,children:[o(St,{label:r("sub.source"),value:l,options:Ag.map(L=>({value:L,label:mi(L)})),onChange:L=>{c(L),s.clear()}}),l==="zip"?o(N,{children:[o(Hc,{id:a,file:m,disabled:s.pending,onPick:z}),v?o(qc,{check:v,update:!1}):o(de,{children:r("sub.zipHint")})]}):o(N,{children:[l==="github"?M("githubRepoUrl","sub.repo",{placeholder:"https://github.com/owner/repo"}):M("npmPackage","sub.npm",{placeholder:"@scope/plugin-name"}),o(de,{children:r(l==="github"?"sub.repoHint":"sub.npmHint")})]}),o("div",{class:"fx-sub-columns",children:[o("label",{class:"fx-sub-field",for:`${a}-type`,children:[o("span",{children:r("sub.type")}),o("select",{id:`${a}-type`,value:d.type,onChange:L=>k("type")(L.currentTarget.value),children:Dc.map(L=>o("option",{value:L,children:r(Vr(L))},L))})]}),M("name","sub.name")]}),M("summary","sub.summary"),M("description","sub.description",{rows:3}),M("tags","sub.tags",{placeholder:r("sub.tagsHint")}),o("div",{class:"fx-sub-columns",children:[M("minAppVersion","sub.minAppVersion",{placeholder:"2.13.0"}),M("maxAppVersion","sub.maxAppVersion",{placeholder:r("sub.optional")})]}),M("platforms","sub.platforms",{placeholder:"desktop, android, ios, web"}),o(de,{children:r("sub.requirementsHint")}),o(de,{children:r("sub.identityHint")}),o(de,{children:r("sub.reviewHint")})]}),o("div",{class:"fx-sub-actions",children:[o(q,{variant:"primary",pending:s.pending,submit:!0,children:r("sub.submit")}),o(q,{disabled:s.pending,onClick:n,children:r("common.cancel")})]}),o(pe,{a:s,captchaSection:"submission"})]})]})}var pi=null,fi=new Set;function Vc(e){let t=!1;for(let n of fi)t=n(e)||t;pi=t?null:{id:e,at:Date.now()}}var Ug=()=>{let e=pi;return pi=null,e&&Date.now()-e.at<3e4?e.id:null};function Hg({items:e,checks:t,reload:n}){let r=Ke(),[a,i]=A("all"),[s,l]=A(()=>{let k=Ug();return k&&e.some(z=>z.id===k)?k:null}),[c,d]=A(()=>s!==null),[g,u]=A(null);oe(()=>{let k=z=>e.some(x=>x.id===z)?(i("all"),l(z),d(!0),u(null),!0):!1;return fi.add(k),()=>{fi.delete(k)}},[e]);let p=e.filter(k=>Nc(k,a)),m=s==="new"?null:p.find(k=>k.id===s)||p[0]||null,f=k=>{l(k),d(!0),u(null)},v=(k,z)=>{i("all"),l(k),u({id:k,key:z}),n()},w=k=>e.filter(z=>Nc(z,k)).length;return o(ke,{title:r("sub.mine"),desc:r("sub.desc"),actions:o(N,{children:[o(q,{variant:"primary",disabled:s==="new",onClick:()=>f("new"),children:[o(J,{name:"plus",size:13}),r("sub.new")]}),o(q,{onClick:n,children:r("sub.refresh")})]}),children:!e.length&&s!=="new"?o(ut,{children:[o("strong",{children:r("sub.empty")}),o("p",{children:r("sub.emptyHint")})]}):o(N,{children:[!!e.length&&o("div",{class:"fx-sub-filter",children:o(St,{label:r("sub.filter"),value:a,onChange:i,options:["all","pending","approved","rejected"].map(k=>({value:k,label:`${r(k==="all"?"sub.all":Oc(k))} ${w(k)}`}))})}),o("div",{class:"fx-sub-cq",children:o("div",{class:`fx-sub-split${c?" is-picked":""}`,children:[o("nav",{class:"fx-sub-list","aria-label":r("sub.mine"),children:p.length?p.map(k=>o("button",{type:"button","data-submission-id":k.id,class:`fx-sub-li${k.id===m?.id?" is-on":""}`,"aria-current":k.id===m?.id||void 0,onClick:()=>f(k.id),children:[o("span",{class:"fx-sub-li-top",children:[o("strong",{children:k.name}),o($c,{status:k.status})]}),o("span",{class:"fx-sub-li-meta",children:[r(Vr(k.type)),mi(k.source),k.version&&`v${k.version}`].filter(Boolean).join(" \xB7 ")}),k.pendingUpdate&&o("span",{class:"fx-sub-li-meta",children:r(k.pendingUpdate.kind==="info"?"sub.pendingInfo":"sub.pendingVersion",{version:k.pendingUpdate.version})})]},k.id)):o("p",{class:"fx-note",children:r(e.length?"sub.noResults":"sub.empty")})}),s==="new"?o($g,{checks:t,onBack:()=>{l(null),d(!1)},onDone:k=>v(k,"sub.submitted")}):m?o(Fg,{item:m,checks:t,notice:g?.id===m.id?g.key:null,onBack:()=>d(!1),onDone:k=>v(m.id,k)},m.id):o("div",{class:"fx-sub-detail",children:o("p",{class:"fx-note",children:r("sub.noResults")})})]})})]})})}function jc(){let e=Oe(()=>Q("/market/mine"));switch(e.state){case"loading":return o(Ie,{});case"signedOut":return o(Be,{});case"error":return o($e,{error:e.error,onRetry:e.retry});case"ready":return o(Hg,{items:e.data?.items||[],checks:e.data?.dryRun===!0,reload:e.reload})}}var qg=300,Wc=e=>e.replace(/\/+$/,"").replace(/\/api$/,""),Vg=(e=0)=>e<1024*1024?`${Math.max(1,Math.ceil(e/1024))} KB`:`${(e/1024/1024).toFixed(1)} MB`;function jg(e,t){let n=se().openExternal;n&&(t.preventDefault(),n(e)?.catch(()=>{}))}function Wg({page:e,url:t,reload:n}){let r=Ke(),{locale:a}=ae(),i=Qn(),s=ue(),[l,c]=A(null),d=e.listing_status||null,g=e.status==="disabled",u=(f,v,w,k)=>void s.run(async()=>{let z=await Q(f,{method:v,body:w});if(!z.ok)return De(z);k?.(),n()}),p=`/connect/apps/${encodeURIComponent(e.slug)}`,m=d==="pending"?["web.listingPending","fx-tag--accent"]:d==="approved"?["web.listingApproved","fx-status--resolved"]:d==="rejected"?["web.listingRejected","fx-tag--danger"]:null;return o("article",{class:"fx-sub-item","data-webpage":e.slug,children:[o("div",{class:"fx-sub-item-head",children:[o("strong",{children:e.name||e.slug}),g&&o("span",{class:"fx-tag fx-tag--danger",children:r("web.disabled")}),m&&o("span",{class:`fx-tag ${m[1]}`,children:r(m[0])})]}),t&&o("a",{class:"fx-web-url",href:t,target:"_blank",rel:"noopener noreferrer",onClick:f=>jg(t,f),children:t}),o("div",{class:"fx-sub-meta",children:[o("span",{children:e.slug}),o("span",{children:Vg(e.total_bytes)}),e.updated_at&&o("span",{children:r("web.updated",{date:yn(e.updated_at,a)})})]}),g&&o(de,{tone:"error",children:r("web.disabledHint")}),d==="rejected"&&e.listing_note&&o(de,{tone:"error",children:r("web.listingNote",{note:e.listing_note})}),l!==null&&o("form",{class:"fx-sub-form",onSubmit:f=>{f.preventDefault(),l.trim()&&u(`${p}/listing`,"PUT",{summary:l.trim()},()=>c(null))},children:[o("label",{class:"fx-sub-field",for:`${i}-summary`,children:[o("span",{children:r("web.listingSummary")}),o("textarea",{id:`${i}-summary`,rows:2,maxLength:qg,value:l,disabled:s.pending,placeholder:r("web.listingSummaryPh"),onInput:f=>c(f.currentTarget.value)}),o("small",{children:r("web.listingHint")})]}),o("div",{class:"fx-sub-actions",children:[o(q,{variant:"primary",submit:!0,pending:s.pending,disabled:!l.trim(),children:r("web.listingSubmit")}),o(q,{disabled:s.pending,onClick:()=>c(null),children:r("common.cancel")})]})]}),l===null&&o("div",{class:"fx-web-actions",children:[t&&o(_t,{text:t,label:r("web.copy")}),!g&&!d&&o(q,{disabled:s.pending,onClick:()=>c(""),children:r("web.listingApply")}),!g&&d==="rejected"&&o(q,{disabled:s.pending,onClick:()=>c(e.listing_summary||""),children:r("web.listingReapply")}),d==="pending"&&o(q,{pending:s.pending,onClick:()=>u(`${p}/listing`,"DELETE"),children:r("web.listingWithdraw")}),d==="approved"&&o(Kt,{label:r("web.listingDelist"),confirmLabel:r("web.listingDelistConfirm"),pending:s.pending,onConfirm:()=>u(`${p}/listing`,"DELETE")}),o(Kt,{variant:"danger",label:r("web.unpublish"),confirmLabel:r("web.unpublishConfirm"),pending:s.pending,onConfirm:()=>u(p,"DELETE")})]}),o(pe,{a:s})]})}function Gg({data:e,reload:t}){let n=Ke(),[r,a]=A("");oe(()=>{if(e.publicBase)return;let d=!0;return se().authStatus?.().then(g=>{d&&g?.cloudUrl&&a(Wc(g.cloudUrl))}).catch(()=>{}),()=>{d=!1}},[e.publicBase]);let i=e.apps||[],s=e.publicBase?Wc(e.publicBase):r,l=d=>s&&e.handle?`${s}/apps/${e.handle}/${d}/`:"",c=typeof e.limit=="number"&&i.length>=e.limit;return o(ke,{title:n("web.title"),desc:n("web.desc"),actions:o(q,{onClick:t,children:n("web.refresh")}),children:[typeof e.limit=="number"&&o("p",{class:"fx-web-quota",children:[n("web.used",{used:i.length,limit:e.limit}),c?` \xB7 ${n("web.full")}`:""]}),i.length?i.map(d=>o(Wg,{page:d,url:l(d.slug),reload:t},d.slug)):o(ut,{children:[o("strong",{children:n("web.empty")}),o("p",{children:n("web.emptyHint")})]})]})}function Gc(){let e=Oe(()=>Q("/connect/apps"));switch(e.state){case"loading":return o(Ie,{});case"signedOut":return o(Be,{});case"error":return o($e,{error:e.error,onRetry:e.retry});case"ready":return o(Gg,{data:e.data||{},reload:e.reload})}}var Kg=e=>!!e&&typeof e=="object"&&typeof e.enabled=="boolean";async function gi(e,t){let n=se().cloudInvoke;if(!n)throw new Error("no_bridge");let r=await n(e,t);if(!Kg(r))throw new Error(String(r?.error??"unavailable"));return r}var Xg=["diag.item.app","diag.item.settings","diag.item.agents","diag.item.plugins","diag.item.runs"];function Kc(){let[e,t]=A(0);return oe(()=>se().onAuthChanged?.(()=>t(n=>n+1)),[]),o(Jg,{standalone:!0},e)}function Jg({standalone:e=!1}={}){let{t,locale:n}=ae(),r=qe(),[a,i]=A(null),[s,l]=A(!1),c=ue(),d=ue();if(oe(()=>{let v=!1,w=0,k=()=>{let x=++w;gi("diagnostics:get").then(M=>{!v&&x===w&&(i(M),l(!0))},()=>{!v&&x===w&&(i(null),l(!0))})};k();let z=se().onAuthChanged?.(k);return()=>{v=!0,z?.()}},[]),!a?.signedIn)return e?s?a?o(Be,{}):o(ut,{children:t("diag.unavailable")}):o(Ie,{panels:1}):null;let g=()=>void d.run(async()=>{try{let v=await gi("diagnostics:uploadNow");return r.current&&i(v),v.lastError?{error:{key:"diag.failed",vars:{reason:v.lastError}}}:v.enabled&&v.lastUploadAt?{success:{key:"diag.uploaded"}}:void 0}catch(v){return{error:{raw:Zt(v)||t("err.generic")}}}}),u=async v=>{let w=!1;await c.run(async()=>{d.clear();try{let k=await gi("diagnostics:set",v);r.current&&i(k),w=!0}catch(k){return{error:{raw:Zt(k)||t("err.generic")}}}}),w&&v.enabled&&r.current&&g()},p=a.intervalHours??24,m=a.mode==="manual"?t("diag.freq.manual"):p===1?t("diag.freq.hour"):p%24===0?p===24?t("diag.freq.day"):t("diag.freq.days",{n:p/24}):t("diag.freq.hours",{n:p}),f=`${a.lastUploadAt?t("diag.last",{time:Gt(a.lastUploadAt,n)}):t("diag.noUpload")} \xB7 ${m}`;return o(ke,{icon:"chart",title:t("diag.title"),desc:t("diag.desc"),children:[o(Ve,{label:t("diag.enable"),desc:t("diag.enableDesc"),children:o(Qt,{checked:a.enabled,disabled:c.pending,label:t("diag.enable"),onChange:v=>void u({enabled:v})})}),o(Me,{class:"fx-diag",children:[o("strong",{children:t("diag.collected")}),o("ul",{children:Xg.map(v=>o("li",{children:t(v)},v))}),o(de,{children:t("diag.notCollected")})]}),a.sessions!==void 0&&o(Ve,{label:t("diag.sessions"),desc:t("diag.sessionsDesc"),children:o(Qt,{checked:a.sessions,disabled:c.pending,label:t("diag.sessions"),onChange:v=>void u({sessions:v})})}),a.memory!==void 0&&o(Ve,{label:t("diag.memory"),desc:t("diag.memoryDesc"),children:o(Qt,{checked:a.memory,disabled:c.pending,label:t("diag.memory"),onChange:v=>void u({memory:v})})}),o(Ve,{label:t("diag.activity"),desc:t("diag.activityDesc"),children:o(Qt,{checked:a.activity,disabled:c.pending,label:t("diag.activity"),onChange:v=>void u({activity:v})})}),a.enabled&&o("div",{class:"settings-panel-footer fx-footer",children:[o("span",{class:"fx-muted",children:f}),o(q,{pending:d.pending,disabled:c.pending,onClick:g,children:t("diag.uploadNow")})]}),o(Me,{class:"fx-sub--tight",children:[o(de,{children:t("diag.retention",{n:a.retainDays})}),a.enabled&&a.lastError&&!d.error&&!d.success&&o("div",{class:"fx-msg is-error",role:"alert",children:t("diag.failed",{reason:a.lastError})}),o(pe,{a:c}),o(pe,{a:d})]})]})}var or=20,jr=5,Yg=5*1024*1024,Wr=1e4,Zg={open:"fb.status.open",in_progress:"fb.status.in_progress",resolved:"fb.status.resolved",closed:"fb.status.closed"};function Jc(e){let{t}=ae(),n=e.status||"open",r=Zg[n];return o("span",{class:`fx-tag fx-status fx-status--${n}`,children:r?t(r):n})}function Yc(){let[e,t]=A(null),n=Oe(async()=>{let r=await Q(`/feedback?limit=${or}&offset=0`);return r.ok?{ok:!0,status:r.status,data:Array.isArray(r.data?.tickets)?r.data.tickets:[]}:r});return n.state==="loading"?o(Ie,{panels:1,rows:3}):n.state==="signedOut"?o(Be,{}):n.state==="error"?o($e,{error:n.error,onRetry:n.retry}):e?o(oh,{id:e,onBack:()=>{t(null),n.reload()}}):o(Qg,{first:n.data,onOpen:t,onChanged:n.reload})}function Qg(e){let{t,locale:n}=ae(),r=qe(),[a,i]=A(e.first),[s,l]=A(e.first.length===or),[c,d]=A(!1),[g,u]=A(!1),p=ue();oe(()=>{i(e.first),l(e.first.length===or)},[e.first]);let m=()=>void p.run(async()=>{let f=await Q(`/feedback?limit=${or}&offset=${a.length}`);if(!f.ok)return{error:Bt(f)};let v=Array.isArray(f.data?.tickets)?f.data.tickets:[];r.current&&(i(w=>{let k=new Set(w.map(z=>z.id));return[...w,...v.filter(z=>!k.has(z.id))]}),l(v.length===or))});return o(ke,{icon:"message",title:t("fb.list.title"),desc:t("fb.list.desc"),actions:c?void 0:o(q,{variant:"primary",onClick:()=>{u(!1),d(!0)},children:[o(J,{name:"plus",size:12})," ",t("fb.new")]}),children:[c&&o(nh,{onCancel:()=>d(!1),onSubmitted:()=>{d(!1),u(!0),e.onChanged()}}),g&&!c&&o(Me,{children:o("div",{class:"fx-msg is-ok",role:"status",children:t("fb.submitted")})}),a.length===0?o(ut,{children:t("fb.empty")}):o("div",{class:"fx-list fx-block",role:"list",children:a.map(f=>o("button",{type:"button",class:"fx-list-row fx-list-row--button",role:"listitem",onClick:()=>e.onOpen(f.id),children:[o("span",{class:`fx-dot${f.user_unread?" is-on":""}`,"aria-label":f.user_unread?t("fb.unread"):void 0}),o("span",{class:"fx-list-main",children:[o("strong",{children:f.title||(f.description||"").slice(0,60)||t("fb.untitled")}),o("small",{children:Gt(f.updated_at||f.created_at,n)})]}),o(Jc,{status:f.status}),o(J,{name:"chevron",size:12})]},f.id))}),a.length>0&&(s||p.error)&&o("div",{class:"settings-panel-footer fx-footer",children:[o("span",{class:"fx-muted",children:t("fb.shown",{n:Pe(a.length,n)})}),s&&o(q,{pending:p.pending,onClick:m,children:t("common.loadMore")})]}),p.error&&o(Me,{children:o(pe,{a:p})})]})}function eh(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(String(r.result||"")),r.onerror=()=>n(r.error||new Error("read failed")),r.readAsDataURL(e)})}var th=0;function nh(e){let{t}=ae(),n=qe(),[r,a]=A(""),[i,s]=A([]),[l,c]=A(null),[d,g]=A(!1),u=ce(null),p=ue(),[m,f]=A(0),v=ce(0);v.current=i.length;let w=async z=>{c(null);for(let x of Array.from(z||[])){if(!x.type||!x.type.startsWith("image/")){c({key:"err.imageType"});continue}if(x.size>Yg){c({key:"err.imageTooLarge"});continue}if(v.current>=jr){c({key:"err.tooManyImages"});break}v.current++,f(M=>M+1);try{let M=await eh(x);if(!n.current)return;let L={id:`img-${++th}`,filename:x.name||"image",mime_type:x.type,size:x.size,data_base64:M.replace(/^data:[^;]+;base64,/,""),url:M};s(H=>H.length>=jr?H:[...H,L])}catch{v.current--,c({key:"err.imageRead"})}finally{n.current&&f(M=>M-1)}}},k=()=>void p.run(async()=>{let z=r.trim();if(!z)return{error:{key:"err.feedbackEmpty"}};if(z.length>Wr)return{error:{key:"err.feedbackTooLong"}};let x=i.map(({filename:L,mime_type:H,size:V,data_base64:ee})=>({filename:L,mime_type:H,size:V,data_base64:ee})),M=await Q("/feedback",{method:"POST",body:{description:z,attachments:x},timeoutMs:12e4});if(!M.ok)return De(M);e.onSubmitted()});return o("div",{class:`fx-sub fx-form fx-composer${d?" is-drag":""}`,onPaste:z=>{let x=Array.from(z.clipboardData?.items||[]).filter(M=>M.kind==="file").map(M=>M.getAsFile()).filter(Boolean);x.length&&(z.preventDefault(),w(x))},onDragOver:z=>{z.preventDefault(),g(!0)},onDragLeave:()=>g(!1),onDrop:z=>{z.preventDefault(),g(!1),w(z.dataTransfer?.files)},children:[o("label",{class:"fx-field",children:[o("span",{children:t("fb.descLabel")}),o("textarea",{class:"fx-input fx-textarea",rows:5,value:r,maxLength:Wr,autoFocus:!0,placeholder:t("fb.descPlaceholder"),onInput:z=>a(z.currentTarget.value)})]}),o("p",{class:"fx-note",children:t("fb.imagesHint",{n:jr})}),i.length>0&&o("div",{class:"fx-thumbs",children:i.map(z=>o("span",{class:"fx-thumb",children:[o("img",{src:z.url,alt:z.filename}),o("button",{type:"button","aria-label":t("fb.removeImage"),title:t("fb.removeImage"),onClick:()=>{s(x=>x.filter(M=>M.id!==z.id)),c(null)},children:o(J,{name:"x",size:11})})]},z.id))}),l&&o("div",{class:"fx-msg is-error",role:"alert",children:Wt(l,t)}),o("input",{ref:u,type:"file",accept:"image/*",multiple:!0,hidden:!0,onChange:z=>{let x=z.currentTarget;w(x.files),x.value=""}}),o("div",{class:"fx-inline",children:[o(q,{disabled:i.length>=jr||p.pending,onClick:()=>u.current?.click(),children:[o(J,{name:"image",size:12})," ",t("fb.addImages")]}),o("span",{class:"fx-grow"}),o(q,{disabled:p.pending,onClick:e.onCancel,children:t("common.cancel")}),o(q,{variant:"primary",pending:p.pending,disabled:m>0,onClick:k,children:t("fb.submit")})]}),o(pe,{a:p})]})}function oh(e){let{t,locale:n}=ae(),[r,a]=A({state:"loading"}),[i,s]=A(0),[l,c]=A(""),[d,g]=A(null),u=ue(),p=ce(0);oe(()=>{let M=++p.current;return Q(`/feedback/${encodeURIComponent(e.id)}`).then(L=>{if(M===p.current){if(!L.ok){a({state:"error",fail:L});return}a({state:"ready",data:{ticket:L.data.ticket,replies:L.data.replies??[],attachments:L.data.attachments??[]}}),Q(`/feedback/${encodeURIComponent(e.id)}/read`,{method:"POST"})}}),()=>{p.current++}},[e.id,i]),oe(()=>{if(!d)return;let M=L=>{L.key==="Escape"&&g(null)};return window.addEventListener("keydown",M),()=>window.removeEventListener("keydown",M)},[d]);let m=o("div",{class:"fx-back",children:o(q,{onClick:e.onBack,children:[o(J,{name:"back",size:12})," ",t("fb.back")]})});if(r.state==="loading")return o(N,{children:[m,o(Ie,{panels:1,rows:3})]});if(r.state==="error")return o(N,{children:[m,o($e,{error:Bt(r.fail),onRetry:()=>{a({state:"loading"}),s(M=>M+1)}})]});let{ticket:f,replies:v,attachments:w}=r.data,k=f.status==="closed",z=M=>w.filter(L=>(L.reply_id??null)===M),x=()=>void u.run(async()=>{let M=l.trim();if(!M)return{error:{key:"err.replyEmpty"}};if(M.length>Wr)return{error:{key:"err.replyTooLong"}};let L=await Q(`/feedback/${encodeURIComponent(f.id)}/replies`,{method:"POST",body:{content:M},timeoutMs:6e4});return L.ok?(c(""),s(H=>H+1),{success:{key:"fb.replySent"}}):De(L)});return o(N,{children:[m,o(ke,{icon:"message",title:f.title||t("fb.untitled"),actions:o(Jc,{status:f.status}),desc:`#${String(f.id).slice(0,8)} \xB7 ${Gt(f.created_at,n)}`,children:[o("div",{class:"fx-thread fx-block",children:[o(Xc,{who:"user",when:f.created_at,text:f.description||"",files:z(null),onZoom:g}),v.map((M,L)=>o(Xc,{who:M.author_role==="user"?"user":"admin",when:M.created_at,text:M.content||"",files:M.id?z(M.id):[],onZoom:g},M.id??L))]}),k?o(Me,{children:o(de,{children:t("fb.closedNote")})}):o(Me,{class:"fx-form",children:[o("textarea",{class:"fx-input fx-textarea",rows:3,value:l,maxLength:Wr,placeholder:t("fb.replyPlaceholder"),"aria-label":t("fb.replyPlaceholder"),onInput:M=>{c(M.currentTarget.value),u.success&&u.clear()}}),o("div",{class:"fx-inline",children:[o("span",{class:"fx-grow"}),o(q,{variant:"primary",pending:u.pending,onClick:x,children:t("fb.replySend")})]}),o(pe,{a:u})]})]}),d&&o("div",{class:"fx-lightbox",role:"dialog","aria-label":t("fb.imagePreview"),onClick:()=>g(null),children:o("img",{src:d,alt:""})})]})}function Xc(e){let{t,locale:n}=ae();return o("div",{class:`fx-bubble fx-bubble--${e.who}`,children:[o("div",{class:"fx-bubble-meta",children:[e.who==="user"?t("fb.you"):t("fb.support")," \xB7 ",Gt(e.when,n)]}),o("div",{class:"fx-bubble-text",children:e.text}),e.files.length>0&&o("div",{class:"fx-thumbs",children:e.files.map((r,a)=>{let i=r.mime_type||"";if(i.startsWith("image/")&&r.data_base64){let s=`data:${i};base64,${r.data_base64}`;return o("button",{type:"button",class:"fx-thumb",onClick:()=>e.onZoom(s),"aria-label":t("fb.imagePreview"),children:o("img",{src:s,alt:r.filename||""})},r.id??a)}return o("span",{class:"fx-tag",children:[o(J,{name:"card",size:11})," ",r.filename||t("fb.attachment")]},r.id??a)})})]})}var Qc=[{id:"monthly",field:"priceMonthly",discount:"recurringPriceMonthly"},{id:"quarterly",field:"priceQuarterly",discount:"recurringPriceQuarterly"},{id:"yearly",field:"priceYearly",discount:"recurringPriceYearly"}];function Zc(e,t){let n=Qc.find(s=>s.id===t),r=Ce(e.priceMonthly)??0,a=(Ce(e[n.field])??0)||(t==="quarterly"?Math.round(r*300)/100:0),i=Ce(e[n.discount])??0;return i>0&&i<a?i:a}function hi(e,t,n){let r=Pe(e,n),a=String(t||"CNY").toUpperCase();return a==="CNY"?`\xA5${r}`:a==="USD"?`$${r}`:`${r} ${a}`}async function rh(){let[e,t,n]=await Promise.all([Q("/membership/my"),Q("/credits/balance"),Q("/features")]);return!e.ok&&to(e)?e:!t.ok&&to(t)?t:{ok:!0,status:200,data:{membership:e.ok?e.data?.membership??null:null,membershipFailed:!e.ok,balance:t.ok?Ce(t.data?.balance):null,balanceFailed:!t.ok,features:n.ok&&n.data&&typeof n.data=="object"?n.data:{}}}}async function bi(e,t){let[n,r]=await Promise.all([rh(),Q(e)]);return n.ok?r.ok?{ok:!0,status:r.status,data:{status:n.data,list:t(r.data)}}:r:n}var vi=e=>(Array.isArray(e)?e:[]).filter(t=>!!t&&typeof t=="object"&&t.isActive!==!1),ah=15*6e4;function yi(e){let t=ce(0),n=ce(0),r=ce(e);return r.current=e,oe(()=>{let a=()=>{let i=Date.now();i>t.current||document.visibilityState==="hidden"||i-n.current<2e3||(n.current=i,r.current?.())};return window.addEventListener("focus",a),document.addEventListener("visibilitychange",a),()=>{window.removeEventListener("focus",a),document.removeEventListener("visibilitychange",a)}},[]),()=>{t.current=Date.now()+ah}}function ed(e){let t=e.membership;return t&&(t.status===void 0||t.status==="active")?t:null}function xi(e){let{t,locale:n}=ae(),r=e.status,a=ed(r),i=Qo(a?.tier),s=i==="Free";return o("section",{class:"fx-shop-strip","aria-label":t("store.status"),children:[o("div",{class:"fx-shop-stat",children:[o("small",{children:t("store.tier")}),r.membershipFailed?o("b",{class:"is-empty",children:"\u2014"}):o("b",{"data-testid":"shop-tier",children:[s?t("member.freeName"):a?.plan?.name||i,!s&&o("i",{children:a?.expiresAt?t("member.expires",{date:yn(a.expiresAt,n)}):t("member.noExpiry")})]})]}),o("div",{class:"fx-shop-stat",children:[o("small",{children:t("store.balance")}),o("b",{class:r.balance===null?"is-empty":"","data-testid":"shop-balance",children:r.balance===null?"\u2014":Pe(r.balance,n)})]}),(r.membershipFailed||r.balanceFailed)&&o("button",{type:"button",class:"fx-link",onClick:e.onRetry,children:t("common.retry")}),o("span",{class:"fx-grow"}),e.children]})}function ki(e){return o("section",{class:"fx-shop-section",children:[o("div",{class:"fx-shop-head",children:[o("div",{children:[o("h2",{children:e.title}),e.desc&&o("p",{children:e.desc})]}),e.right]}),e.children]})}function wi(e){let t=ue(),[n,r]=A(null),a=(i,s,l,c)=>{r(i),t.run(async()=>{if(!await On(s,l,c))return{error:{key:"err.openFailed"}};e()})};return{a:t,payingId:t.pending?n:null,open:a}}function zi(e){return o(q,{variant:"ghost",pending:e.pending,disabled:e.disabled,onClick:e.onClick,children:[e.label,o(J,{name:"external",size:12})]})}function Si(e){return o("div",{class:"fx-shop-empty",children:e.children})}function td(){let{t:e,locale:t}=ae(),n=Oe(()=>bi("/payment/offerings",m=>vi(m?.membershipPlans))),r=yi(n.state==="ready"?n.reload:null),a=wi(r),[i,s]=A("monthly");if(n.state==="loading")return o(Ie,{panels:2,rows:2});if(n.state==="signedOut")return o(Be,{});if(n.state==="error")return o($e,{error:n.error,onRetry:n.retry});let{status:l,list:c}=n.data,d=l.features.payment!==!1,g=Qc.filter(m=>c.some(f=>Zc(f,m.id)>0)),u=g.some(m=>m.id===i)?i:g[0]?.id??"monthly",p=ed(l)?.tier?.toLowerCase()??null;return o(N,{children:[o(xi,{status:l,onRetry:n.reload}),o(ki,{title:e("store.choosePlan"),desc:e(d?"store.payHint":"store.payOff"),right:g.length>1?o(St,{value:u,label:e("store.period"),onChange:s,options:g.map(m=>({value:m.id,label:e(`store.period.${m.id}`)}))}):void 0,children:[c.length===0?o(Si,{children:e("store.noPlans")}):o("div",{class:"fx-shop-tiers",children:c.map(m=>{let f=Zc(m,u),v=!!p&&!l.membershipFailed&&m.tier?.toLowerCase()===p;return o("article",{class:"fx-shop-tier","data-tier":m.tier,children:[o("h3",{children:[m.name||Qo(m.tier),v&&o("span",{class:"fx-shop-current",children:[o(J,{name:"check",size:12}),e("store.currentTier")]})]}),o("div",{class:"fx-shop-price",children:f>0?o(N,{children:[hi(f,m.currency,t),o("small",{children:e(`store.per.${u}`)})]}):"\u2014"}),o("p",{children:m.description}),d&&f>0&&o(zi,{label:e(v?"member.renew":"store.pay"),pending:a.payingId===m.id,disabled:a.a.pending,onClick:()=>a.open(m.id,"membership",m.id,u)})]},m.id)})}),o(pe,{a:a.a})]})]})}function nd(){let{t:e,locale:t}=ae(),n=Oe(()=>bi("/payment/offerings",c=>vi(c?.packages))),r=yi(n.state==="ready"?n.reload:null),a=wi(r);if(n.state==="loading")return o(Ie,{panels:2,rows:2});if(n.state==="signedOut")return o(Be,{});if(n.state==="error")return o($e,{error:n.error,onRetry:n.retry});let{status:i,list:s}=n.data,l=i.features.payment!==!1;return o(N,{children:[o(xi,{status:i,onRetry:n.reload}),o(ki,{title:e("store.packs"),desc:e(l?"store.packsHint":"store.payOff"),children:[s.length===0?o(Si,{children:e("store.noPacks")}):o("div",{class:"fx-shop-grid",children:s.map(c=>{let d=Ce(c.price)??0;return o(od,{icon:"coins",kind:e("store.kind.pack"),name:`${c.name||""} \xB7 ${e("store.nPoints",{n:Pe(c.credits,t)})}`,desc:c.description,meta:e("store.instant"),children:l&&d>0&&o(zi,{label:e("store.payPrice",{price:hi(d,c.currency,t)}),pending:a.payingId===c.id,disabled:a.a.pending,onClick:()=>a.open(c.id,"credits")})},c.id)})}),o(pe,{a:a.a})]})]})}function od(e){return o("article",{class:"fx-shop-card",children:[o("div",{class:"fx-shop-visual","aria-hidden":"true",children:e.emoji?o("span",{class:"fx-shop-emoji",children:e.emoji}):o(J,{name:e.icon,size:18})}),o("div",{class:"fx-shop-body",children:[o("span",{class:"fx-shop-kind",children:e.kind}),o("strong",{children:e.name}),e.desc&&o("p",{children:e.desc}),o("div",{class:"fx-shop-foot",children:[o("span",{class:"fx-shop-meta",children:e.meta}),o("span",{class:"fx-shop-acts",children:e.children})]}),e.below]})]})}var ih={reset_card:"store.kind.card",api_quota_key:"store.kind.code"};function sh(e){let{t,locale:n}=ae(),{p:r}=e,a=ue(),[i,s]=A(null),[l,c]=A(!1),d=Ce(r.pricePoints)??0,g=Ce(r.priceRmb)??0,u=typeof r.availableKeys=="number"&&r.availableKeys<=0,p=d>0&&e.balance!==null&&e.balance<d,m=()=>void a.run(async()=>{let v=await Q("/shop/purchase",{method:"POST",body:{productId:r.id,payMethod:"points"},timeoutMs:3e4});return v.ok?(s(typeof v.data?.key=="string"&&v.data.key?v.data.key:null),e.onRedeemed(),{success:{key:"store.redeemed"}}):v.status===0?(c(!0),{error:{key:"store.uncertain"}}):De(v)}),f=u?t("store.soldOut"):p?t("err.insufficientPoints"):typeof r.availableKeys=="number"?t("store.left",{n:r.availableKeys}):t("store.toBackpack");return o(od,{icon:r.type==="api_quota_key"?"key":"gift",emoji:r.icon,kind:t(ih[r.type||""]??"store.kind.item"),name:r.name||"",desc:r.description,meta:f,below:o(N,{children:[o(pe,{a}),i&&o("div",{class:"fx-shop-key",children:[o("code",{children:i}),o(_t,{text:i,label:t("backpack.copyKey")})]})]}),children:[d>0&&o(Kt,{variant:"primary",pending:a.pending,disabled:u||p||l,label:t("store.redeem",{n:Pe(d,n)}),confirmLabel:t("store.redeemConfirm",{n:Pe(d,n)}),onConfirm:m}),e.payment&&g>0&&o(zi,{label:hi(g,r.currency,n),pending:e.paying,disabled:e.payBusy||u,onClick:e.onPay})]})}function rd(){let{t:e,goTo:t}=ae(),n=Oe(()=>bi("/shop/products",d=>vi(d))),r=yi(n.state==="ready"?n.reload:null),a=wi(r);if(n.state==="loading")return o(Ie,{panels:2,rows:2});if(n.state==="signedOut")return o(Be,{});if(n.state==="error")return o($e,{error:n.error,onRetry:n.retry});let{status:i,list:s}=n.data,l=i.features.payment!==!1,c=i.features.shop!==!1;return o(N,{children:[o(xi,{status:i,onRetry:n.reload,children:t&&o(q,{onClick:()=>t("backpack"),children:e("store.openBackpack")})}),o(ki,{title:e("store.redeemTitle"),desc:e("store.redeemHint"),children:[!c||s.length===0?o(Si,{children:e(c?"store.noItems":"store.itemsOff")}):o("div",{class:"fx-shop-grid",children:s.map(d=>o(sh,{p:d,balance:i.balance,payment:l,paying:a.payingId===d.id,payBusy:a.a.pending,onPay:()=>a.open(d.id,"storefront"),onRedeemed:n.reload},d.id))}),o(pe,{a:a.a})]})]})}var lh="forsion-extend",ad=[{id:"account",titleKey:"page.account",tabTitleKey:"page.profile",aliases:["profile"],keywords:"\u4E2A\u4EBA\u4E3B\u9875 profile avatar nickname \u5934\u50CF \u6635\u79F0",Component:vc},{id:"account-details",parent:"account",titleKey:"account.details.title",keywords:"\u767B\u5F55 \u8D44\u6599 \u624B\u673A \u90AE\u7BB1 \u5207\u6362 \u9000\u51FA login sign-in email phone account switch logout",Component:Yl},{id:"security",parent:"account",titleKey:"page.security",keywords:"\u5B89\u5168 \u5BC6\u7801 \u8BBE\u5907 \u7ED1\u5B9A security password devices",Component:Ac},{id:"quota",titleKey:"page.membershipUsage",tabTitleKey:"page.membershipQuota",aliases:["membership"],keywords:"\u4F1A\u5458 \u989D\u5EA6 \u540E\u53F0 quota membership background",Component:wc},{id:"points",parent:"quota",titleKey:"page.pointsInvite",keywords:"\u79EF\u5206 \u9080\u8BF7 \u5151\u6362 \u5145\u503C points invite redeem credits",Component:kc},{id:"usage",parent:"quota",titleKey:"page.usage",keywords:"\u7528\u91CF \u8BB0\u5F55 \u6D88\u8017 usage history tokens",Component:Rc},{id:"backpack",titleKey:"page.backpack",keywords:"\u80CC\u5305 \u5361\u5238 backpack inventory",Component:Sc},{id:"submission",titleKey:"page.submission",Component:jc},{id:"webpages",titleKey:"page.webPages",keywords:"\u7F51\u9875 \u53D1\u5E03 \u94FE\u63A5 \u4E0A\u67B6 \u7F51\u7AD9 web pages publish link site connect",Component:Gc},{id:"feedback",titleKey:"page.helpDiagnostics",tabTitleKey:"page.feedback",webTitleKey:"page.feedback",keywords:"\u5E2E\u52A9 \u53CD\u9988 help feedback",Component:Yc},{id:"diagnostics",parent:"feedback",titleKey:"diag.title",keywords:"\u8BCA\u65AD \u4E0A\u4F20 \u65E5\u5FD7 diagnostic upload logs",Component:Kc,desktopOnly:!0}],id=[{id:"membership",titleKey:"store.membership",descKey:"store.membership.desc",icon:"crown",Component:td},{id:"points",titleKey:"store.points",descKey:"store.points.desc",icon:"coins",Component:nd},{id:"items",titleKey:"store.items",descKey:"store.items.desc",icon:"package",Component:rd}],_i=e=>`forsion/fx:${lh}:${e}`;function sd(e){let{ctx:t,page:n}=e,[r,a]=A(()=>Ze(t.getLocale?.()));oe(()=>{a(Ze(t.getLocale?.()));let l=t.subscribeLocale?.(c=>a(Ze(c)));return()=>{typeof l=="function"&&l()}},[t]);let i=Ot(()=>{let l=t.app?.openSettings;return{ctx:t,locale:r,t:zo(r),goTo:typeof l=="function"?c=>l.call(t.app,_i(c)):null}},[t,r]),s=n.Component;return o(Wa.Provider,{value:i,children:o("div",{class:"fx-acct","data-fx-page":n.id,lang:r==="zh"?"zh-CN":"en",children:[o("style",{children:Sl}),o(s,{})]})})}function ld(e,t=window){let n=bn(t?.tangu);if(!e||!n?.cloudFetch||!n.cloudInvoke||!eo(n)||typeof e.registerStoreView!="function")return 0;let r=a=>()=>xe(Ze(e.getLocale?.()),a);for(let a of id)e.registerStoreView({id:a.id,title:r(a.titleKey),description:r(a.descKey),group:r("store.group"),icon:a.icon,mount(i){return He(o(sd,{ctx:e,page:a}),i),()=>{He(null,i)}}});return id.length}function cd(e,t=window){let n=bn(t?.tangu);if(!e||!n?.cloudFetch||!n.cloudInvoke||!eo(n)||typeof e.registerSettingsView!="function")return 0;let r=vn(n)?ad.filter(a=>!a.desktopOnly):ad;for(let a of r)e.registerSettingsView({id:a.id,category:"forsion",parent:a.parent,tabTitle:a.tabTitleKey?()=>xe(Ze(e.getLocale?.()),a.tabTitleKey):void 0,aliases:a.aliases,keywords:a.keywords,title:()=>xe(Ze(e.getLocale?.()),vn(n)&&a.webTitleKey||a.titleKey),mount(i){return He(o(sd,{ctx:e,page:a}),i),()=>{He(null,i)}}});return r.length}var So=[{id:"lv1"},{id:"lv2"},{id:"lv3"},{id:"lv4"},{id:"new",version:"2.14"}],G=(e,t)=>({zh:e,en:t}),Bn=[{id:"welcome",level:"lv1",icon:"compass",title:G("\u8BA4\u8BC6 Forsion","Meet Forsion"),tasks:[{id:"guide-open",event:"own:guide.open",goal:1,title:G("\u6253\u5F00\u4F7F\u7528\u6307\u5357","Open the guide")},{id:"space-switch",event:"space.switch",goal:1,title:G("\u5728 Ribbon \u4E0A\u6362\u4E00\u4E2A Space","Switch to another Space from the ribbon"),go:{space:"amadeus"},spot:{anchor:"ribbon-spaces",here:!0,title:G("\u70B9 Ribbon \u4E0A\u4EFB\u610F\u4E00\u4E2A\u56FE\u6807","Click any icon on the ribbon"),body:G("\u6BCF\u4E2A\u56FE\u6807\u662F\u4E00\u4E2A Space\uFF0C\u70B9\u4E00\u4E0B\u5C31\u5207\u8FC7\u53BB\u3002","Each icon is a Space. One click switches to it.")}}],figure:{layout:"space",main:"doc",marks:[{slot:"ribbon",label:G("Ribbon\uFF1A\u6BCF\u4E2A\u56FE\u6807\u662F\u4E00\u4E2A Space","Ribbon: each icon is a Space")},{slot:"main-tabs",label:G("\u4E3B\u533A\u7684\u6807\u7B7E\u9875","Tabs in the main area"),text:G("\u6807\u7B7E\u9875","Tab")},{slot:["left-list","right"],label:G("\u5DE6\u53F3\u4FA7\u680F","Left and right sidebars")}]}},{id:"chat",level:"lv1",icon:"message-circle",title:G("\u548C Tangu \u8BF4\u7B2C\u4E00\u53E5\u8BDD","Say hello to Tangu"),tasks:[{id:"chat-first",event:"chat.send",goal:1,title:G("\u53D1\u51FA\u7B2C\u4E00\u6761\u6D88\u606F","Send your first message"),go:{space:"tangu",command:"new-chat"},spot:{anchor:"chat-composer",title:G("\u5728\u8FD9\u91CC\u6253\u4E2A\u62DB\u547C","Say hello here"),body:G("\u6253\u5B57\uFF0C\u6309 Enter \u53D1\u9001\uFF1BShift+Enter \u6362\u884C\u3002","Type, then press Enter to send. Shift+Enter starts a new line.")}},{id:"chat-five",event:"chat.send",goal:5,title:G("\u518D\u804A\u51E0\u53E5\uFF08\u7D2F\u8BA1 5 \u6761\uFF09","Keep talking (5 messages in all)"),go:{space:"tangu"},spot:{anchor:"chat-composer",title:G("\u63A5\u7740\u804A\u51E0\u53E5","Keep the conversation going"),body:G("\u7D2F\u8BA1\u53D1\u51FA 5 \u6761\u5C31\u7B97\u5B8C\u6210\u3002","Five messages in all and this one is done.")}}],figure:{layout:"space",main:"chat",marks:[{slot:"left-top",label:G("\u5DE6\u680F\u9876\u90E8\u300C\u65B0\u4F1A\u8BDD\u300D",'"New chat" at the top of the left sidebar'),text:G("\u65B0\u4F1A\u8BDD","New chat")},{slot:"main-bottom",label:G("\u8F93\u5165\u6846","Message box")}]}},{id:"note",level:"lv1",icon:"file-text",title:G("\u5199\u4E0B\u7B2C\u4E00\u7BC7\u7B14\u8BB0","Write your first note"),tasks:[{id:"note-create",event:"note.create",goal:1,title:G("\u65B0\u5EFA\u4E00\u7BC7\u7B14\u8BB0","Create a note"),go:{space:"amadeus",command:"amadeus-new-note"},spot:{anchor:"note-new",title:G("\u70B9\u300C\u65B0\u5EFA\u7B14\u8BB0\u300D",'Click "New note"'),body:G("\u4E5F\u53EF\u4EE5\u6309 \u2318/Ctrl+N\u3002\u6BCF\u7BC7\u7B14\u8BB0\u90FD\u662F\u667A\u5E93\u91CC\u7684\u4E00\u4E2A .md \u6587\u4EF6\u3002","Or press \u2318/Ctrl+N. Every note is a .md file in your vault.")}},{id:"note-link",event:"note.wikilink",goal:1,title:G("\u7528 [[ \u94FE\u63A5\u53E6\u4E00\u7BC7\u7B14\u8BB0","Link another note with [["),go:{space:"amadeus"},spot:{anchor:"note-body",title:G("\u5728\u6B63\u6587\u91CC\u8F93\u5165 [[","Type [[ in the note"),body:G("\u4ECE\u5F39\u51FA\u7684\u5019\u9009\u91CC\u9009\u4E00\u7BC7\u7B14\u8BB0\uFF0C\u6309 Enter\uFF0C\u4E24\u7BC7\u5C31\u8FDE\u4E0A\u4E86\u3002","Pick a note from the suggestions and press Enter to link the two.")}},{id:"note-canvas",event:"note.canvas",goal:1,title:G("\u628A\u7B14\u8BB0\u5207\u5230\u753B\u5E03","Switch a note to the canvas"),go:{space:"amadeus",command:"amadeus-toggle-canvas"},spot:{anchor:"note-canvas",title:G("\u70B9\u300C\u753B\u5E03\u300D",'Click "Canvas"'),body:G("\u540C\u4E00\u7BC7\u7B14\u8BB0\u644A\u6210\u767D\u677F\uFF0C\u968F\u624B\u6446\uFF1B\u70B9\u300C\u6587\u6863\u300D\u5207\u56DE\u6765\uFF0C\u4E00\u4E2A\u5B57\u90FD\u4E0D\u53D8\u3002",'The same note opens as a whiteboard. Click "Document" to switch back; nothing changes.')}}],figure:{layout:"space",main:"doc",marks:[{slot:"left-top",label:G("\u5DE6\u680F\u300C\u65B0\u5EFA\u7B14\u8BB0\u300D",'"New note" in the left sidebar'),text:G("\u65B0\u5EFA\u7B14\u8BB0","New note")},{slot:"main-top",label:G("\u300C\u6587\u6863 / \u753B\u5E03\u300D\u80F6\u56CA","The Document / Canvas switch")},{slot:"right",label:G("\u53F3\u680F\u91CC\u7684\u300C\u53CD\u94FE\u300D","Backlinks in the right sidebar"),text:G("\u53CD\u94FE","Backlinks")}]}},{id:"theme",level:"lv1",icon:"sparkles",title:G("\u6362\u4E00\u8EAB\u4E3B\u9898","Make it look like yours"),tasks:[{id:"theme-change",event:"theme.change",goal:1,title:G("\u6362\u4E00\u4E2A\u4E3B\u9898","Pick another theme"),go:{settings:"theme"}}],figure:{layout:"settings",marks:[{slot:"nav",label:G("\u8BBE\u7F6E\u91CC\u7684\u300C\u5916\u89C2\u300D",'"Appearance" in Settings'),text:G("\u5916\u89C2","Appearance")},{slot:"section-1",label:G("\u8BBE\u8BA1\u8BED\u8A00","Design language"),text:G("\u8BBE\u8BA1\u8BED\u8A00","Design language")},{slot:"section-2",label:G("\u4E3B\u9898\u8272\u548C\u80CC\u666F\u8272","Theme and background colors"),text:G("\u914D\u8272","Colors")}]}},{id:"database",level:"lv2",icon:"database",title:G("\u6570\u636E\u5E93\uFF1A\u628A\u7B14\u8BB0\u53D8\u6210\u8868","Databases: turn notes into a table"),tasks:[{id:"base-create",event:"base.create",goal:1,title:G("\u65B0\u5EFA\u4E00\u4E2A\u6570\u636E\u5E93","Create a database"),go:{space:"amadeus"}}],figure:{layout:"space",main:"doc",marks:[{slot:"left-list",label:G("\u7B14\u8BB0\u6811\uFF1A\u53F3\u952E \u2192\u300C\u65B0\u5EFA Base\u300D",'Note tree: right-click \u2192 "New Base"')},{slot:"main-body",label:G("\u6B63\u6587\u91CC\u8F93\u5165 /\uFF0C\u9009\u300C\u591A\u7EF4\u8868\u300D",'Type / in a note and pick "Database"')}]}},{id:"market",level:"lv2",icon:"store",title:G("\u4ECE\u5546\u5E97\u88C5\u4E00\u4E2A\u63D2\u4EF6","Install a plugin from the store"),tasks:[{id:"market-install",event:"market.install",goal:1,title:G("\u88C5\u4E00\u4E2A\u63D2\u4EF6","Install a plugin"),go:{command:"open-market"}}],figure:{layout:"space",main:"doc",marks:[{slot:"ribbon-bottom",label:G("Ribbon \u5E95\u90E8\u7684\u300C\u5546\u5E97\u300D",'"Store" at the bottom of the ribbon')}]}},{id:"space",level:"lv2",icon:"layout-grid",title:G("\u5B58\u4E0B\u81EA\u5DF1\u7684 Space","Save a Space of your own"),tasks:[{id:"space-save",event:"space.save",goal:1,title:G("\u628A\u5F53\u524D\u5E03\u5C40\u5B58\u6210 Space","Save the current layout as a Space"),go:{command:"save-as-space"}}],figure:{layout:"space",main:"doc",marks:[{slot:"ribbon-plus",label:G("Space \u533A\u7684 \uFF0B","The + under the Spaces")},{slot:"main-top-right",label:G("\u53F3\u4E0A\u89D2\u7684\u6D6E\u52A8\u6309\u94AE","Floating buttons at the top right")}]}},{id:"calendar",level:"lv2",icon:"calendar-days",title:G("\u65E5\u5386\u548C\u5F85\u529E","Calendar and to-dos"),tasks:[{id:"calendar-event",event:"calendar.event",goal:1,title:G("\u5728\u65E5\u5386\u4E0A\u5EFA\u4E00\u4E2A\u65E5\u7A0B","Add an event to the calendar"),go:{space:"calendar"}},{id:"todo-done",event:"todo.done",goal:1,title:G("\u52FE\u6389\u4E00\u6761\u5F85\u529E","Tick off a to-do"),go:{space:"calendar"}}],figure:{layout:"space",main:"grid",marks:[{slot:"left-plus",label:G("\u5DE6\u680F\u300C\u65E5\u5386\u300D\u65C1\u7684 +",'The + next to "Calendars" in the left sidebar')},{slot:"main-body",label:G("\u65F6\u95F4\u683C\uFF1A\u5355\u51FB\u5EFA\u65E5\u7A0B","Time grid: click to add an event")},{slot:"right",label:G("\u53F3\u680F\u7684\u5F85\u529E","To-dos in the right sidebar"),text:G("\u5F85\u529E","To-dos")}]}},{id:"agent",level:"lv3",icon:"bot",title:G("\u521B\u5EFA\u4F60\u7684 Agent","Create your own agent"),tasks:[{id:"agent-create",event:"agent.create",goal:1,title:G("\u65B0\u5EFA\u4E00\u4E2A Agent","Create an agent"),go:{space:"agents"},spot:{anchor:"agent-new",title:G("\u70B9\u300C\u521B\u5EFA Agent\u300D",'Click "Create agent"'),body:G("\u8D77\u4E2A\u540D\u5B57\uFF0C\u5199\u51E0\u53E5\u5B83\u8BE5\u600E\u4E48\u505A\u4E8B\u3002","Give it a name and a few lines on how it should work.")}}]},{id:"muse",level:"lv3",icon:"sparkles",title:G("Muse\uFF1A\u8BA9\u7075\u611F\u81EA\u5DF1\u957F","Muse: ideas that grow on their own"),tasks:[{id:"muse-open",event:"muse.open",goal:1,title:G("\u53BB Muse \u770B\u4E00\u773C","Take a look at Muse"),go:{space:"muse"}}]},{id:"automation",level:"lv3",icon:"zap",title:G("\u81EA\u52A8\u5316\uFF1A\u5230\u70B9\u5C31\u505A","Automations: done on schedule"),tasks:[{id:"automation-create",event:"automation.create",goal:1,title:G("\u5EFA\u4E00\u6761\u81EA\u52A8\u5316","Create an automation"),go:{space:"automation"}}]},{id:"computer",level:"lv4",icon:"terminal",title:G("\u8BA9 Tangu \u64CD\u4F5C\u7535\u8111","Let Tangu use your computer"),tasks:[{id:"cu-use",event:"computer.use",goal:1,title:G("\u8BA9 Tangu \u7528\u4E00\u6B21\u7535\u8111","Have Tangu use your computer once"),go:{settings:"computer-use"},desktopOnly:!0}]},{id:"plugin",level:"lv4",icon:"code",title:G("\u5199\u4E00\u4E2A\u81EA\u5DF1\u7684\u63D2\u4EF6","Write a plugin of your own"),tasks:[{id:"plugin-dev",event:"plugin.local",goal:1,title:G("\u4ECE\u672C\u673A\u6587\u4EF6\u5939\u8F7D\u5165\u4E00\u4E2A\u63D2\u4EF6","Load a plugin from a local folder"),go:{settings:"amadeus-plugins"},desktopOnly:!0}]},{id:"mini-capsules",level:"new",icon:"layout-grid",title:G("Mini \u9876\u680F\u4E24\u9897\u80F6\u56CA","Two capsules on the Mini bar"),tasks:[{id:"mini-open",event:"mini.open",goal:1,title:G("\u6253\u5F00\u4E00\u6B21 Mini \u7A97\u53E3","Open the Mini window"),go:{command:"open-mini"},desktopOnly:!0}]},{id:"todo-standalone",level:"new",icon:"list-tree",title:G("\u5F85\u529E\u89C6\u56FE\u5355\u72EC\u6253\u5F00","Open the to-do view on its own"),tasks:[{id:"todo-open",event:"todo.open",goal:1,title:G("\u5355\u72EC\u6253\u5F00\u4E00\u6B21\u5F85\u529E\u89C6\u56FE","Open the to-do view by itself"),go:{space:"calendar"}}]}],en=e=>Bn.filter(t=>t.level===e),Fn=e=>Bn.find(t=>t.id===e);var Ft=So.filter(e=>!e.version);function sn(e,t){let n=e.event.startsWith("own:");return t.count(n?e.event.slice(4):e.event,n)>=e.goal}var rr=(e,t)=>e.filter(n=>t.desktop||!n.desktopOnly);function dd(e,t){return en(e).every(n=>rr(n.tasks,t).every(r=>sn(r,t)))}function Gr(e,t){let n=Ft.findIndex(r=>r.id===e);return n<=0||t.unlockAll?!0:Ft.slice(0,n).every(r=>dd(r.id,t))}function _o(e,t){return Gr(e.level,t)?rr(e.tasks,t).every(n=>sn(n,t))?"done":"active":"locked"}function Ci(e){return Ft.find(t=>!dd(t.id,e))?.id??null}function ud(e){let t={...e,unlockAll:!1},n=Ft[0].id;for(let r of Ft)Gr(r.id,t)&&(n=r.id);return n}function ch(e,t){let n=e.split(/[.+-]/).map(a=>Number.parseInt(a,10)||0),r=t.split(/[.+-]/).map(a=>Number.parseInt(a,10)||0);for(let a=0;a<Math.max(n.length,r.length);a++){let i=(n[a]??0)-(r[a]??0);if(i)return i<0?-1:1}return 0}function Ti(e){let t=So.find(n=>n.version);return t?.version&&e.appVersion&&ch(e.appVersion,t.version)>=0?t.version:null}var pd=e=>Bn.filter(t=>t.level!=="new"||!!Ti(e));function fd(e,t){let n=rr(en(e).flatMap(r=>r.tasks),t);return{done:n.filter(r=>sn(r,t)).length,total:n.length}}var Ai={zh:{agent:`\u9664\u4E86\u9ED8\u8BA4\u7684 Tangu\uFF0C\u4F60\u53EF\u4EE5\u6309\u7528\u9014\u5EFA\u81EA\u5DF1\u7684 Agent\uFF1A\u7ED9\u5B83\u540D\u5B57\u3001\u5DE5\u4F5C\u6307\u4EE4\u548C\u81EA\u5DF1\u7684\u8BB0\u5FC6\uFF0C\u8BA9\u5B83\u4E13\u95E8\u505A\u4E00\u7C7B\u4E8B\u3002
|
|
689
689
|
|
|
690
690
|
## \u521B\u5EFA
|
|
691
691
|
|
|
@@ -1095,12 +1095,12 @@ In the Calendar's right panel or the Mini window, the filters and the list choic
|
|
|
1095
1095
|
- Things you have already done count right away, and progress is kept on this device. Been around a while? Unlock everything from the \xB7\xB7\xB7 menu at the top right.
|
|
1096
1096
|
|
|
1097
1097
|
> [!tip]
|
|
1098
|
-
> Can't find something? Press \`\u2318/Ctrl+K\` to open the command palette and search for it by name.`}};var
|
|
1099
|
-
`),
|
|
1098
|
+
> Can't find something? Press \`\u2318/Ctrl+K\` to open the command palette and search for it by name.`}};var md="forsion-guide",tn={reader:"guide",side:"guide-side",companion:"guide-companion"},Ei="guide-chapters",gd=e=>`forsion-extend.guide.${e}`;function at(e,t){try{let n=localStorage.getItem(gd(e));return n===null?t:JSON.parse(n)}catch{return t}}function pt(e,t){try{localStorage.setItem(gd(e),JSON.stringify(t))}catch{}}function hd(e,t){let n=new Set,r=at("unlockAll",!1),a=null,i=at("chapter","welcome"),s=at("companion","welcome"),l=null,c=null,d=!1,g,u=[],p=()=>Ze(e.getLocale?.()),m=(b,T)=>xe(p(),b,T),f=(b,T)=>e.achievements?.count?.(b,T?{own:!0}:void 0)??0,v=()=>({count:f,unlockAll:r,desktop:t.desktop,appVersion:a}),w=b=>b.title[p()]||b.title.zh,k=b=>b==="new"?m("guide.whatsNew",{version:So.find(T=>T.version)?.version??""}):m(`guide.level.${b}`),z=()=>{for(let b of[...n])try{b()}catch(T){console.error("[guide] listener failed",T)}},x=()=>{let b=v(),T=new Set(Bn.flatMap(X=>X.tasks.filter(Y=>sn(Y,b)).map(Y=>Y.id)));if(l)for(let X of Bn)for(let Y of X.tasks)T.has(Y.id)&&!l.has(Y.id)&&e.app?.notify?.(m("guide.toast.taskDone",{task:w(Y)}));l=T,H(b);let R=ud(b),K=at("reached",null);K===null?pt("reached",R):Ft.findIndex(X=>X.id===R)>Ft.findIndex(X=>X.id===K)&&(pt("reached",R),pt("justUnlocked",R),ee({kind:"level",level:R})),at("pendingLetter",null)&&te()},M=b=>!!b.spot&&!!e.app?.spotlight&&at("spotlight",!0)&&(t.desktop||!b.desktopOnly),L=(b,T,R)=>{let K=b.spot;c={chapter:T.id,task:b.id},z();let X=T.tasks.length>1?m("guide.spotStep",{n:T.tasks.indexOf(b)+1,total:T.tasks.length}):void 0;e.app.spotlight({anchor:K.anchor,title:w(K),body:K.body[p()]||K.body.zh,step:X}).then(async Y=>{d||(c?.task===b.id&&Y!=="replaced"&&(c=null,z()),Y==="mute"&&O.setSpotlight(!1),Y==="missing"&&R&&(K.here&&b.go?.space&&await e.app?.openSpace?.(b.go.space),b.go?.command&&e.app?.runCommand?.(b.go.command)))})},H=b=>{let T=c&&Fn(c.chapter),R=T&&T.tasks.find(X=>X.id===c.task);if(!T||!R||!sn(R,b))return;let K=T.tasks.find(X=>!sn(X,b)&&M(X)&&!X.spot.here&&(X.go?.space??"")===(R.go?.space??""));K?L(K,T,!1):(c=null,e.app?.spotlight?.(null))},V=Promise.resolve(),ee=b=>{!e.inbox||!at("reminders",!0)||(pt("pendingLetter",b),te())},te=()=>{V=V.then(S,S)},S=async()=>{let b=at("pendingLetter",null);if(d||!b||!e.inbox)return;let T=b.kind==="level"?en(b.level):en("new"),R=T.map(me=>`- ${w(me)}`).join(`
|
|
1099
|
+
`),K=b.kind==="level"?{title:m("guide.letter.levelTitle",{level:k(b.level)}),body:`${m("guide.letter.levelBody")}
|
|
1100
1100
|
|
|
1101
1101
|
${R}`}:{title:m("guide.letter.versionTitle",{version:b.version,n:T.length}),body:`${m("guide.letter.versionBody")}
|
|
1102
1102
|
|
|
1103
|
-
${R}`},
|
|
1103
|
+
${R}`},X=await e.inbox.post(K);if(!X||d)return;let Y=at("lastLetter",null);pt("lastLetter",X),pt("letters",{...at("letters",{}),[X]:b}),JSON.stringify(at("pendingLetter",null))===JSON.stringify(b)&&pt("pendingLetter",null),Y&&Y!==X&&await e.inbox.archive(Y)},E=()=>{let b=Ti(v());if(!b||at("seenVersion",null)===b)return;if(!(at("seenVersion",null)!==null||f("chat.send",!1)+f("note.create",!1)>0)){pt("seenVersion",b);return}let R=Date.now(),K=()=>{if(!d){if(document.querySelector(".ob-rail")&&Date.now()-R<6e5){g=window.setTimeout(K,3e3);return}pt("seenVersion",b),ee({kind:"version",version:b})}};g=window.setTimeout(K,3e3)},O={ctx:e,locale:p,t:m,env:v,title:w,levelName:k,subscribe(b){return n.add(b),()=>{n.delete(b)}},selected:()=>Fn(i)??Bn[0],select(b){!Fn(b)||b===i||(i=b,pt("chapter",b),Fn(b).level===at("justUnlocked",null)&&pt("justUnlocked",null),z())},companionChapter:()=>Fn(s)??O.selected(),async go(b,T){let R=b.go;if(!R||b.desktopOnly&&!t.desktop)return;s=T.id,pt("companion",T.id);let K=M(b);c&&(c=null,K||e.app?.spotlight?.(null)),R.space&&!(K&&b.spot.here)&&await e.app?.openSpace?.(R.space)&&R.space!==md&&e.openView?.(tn.companion,{location:"right"}),K?L(b,T,!0):R.command&&e.app?.runCommand?.(R.command),R.settings&&e.app?.openSettings?.(R.settings),z()},markdown(b){let T=Ai[p()]?.[b.id]||Ai.zh[b.id]||"",R=T.search(/\n\s*\n/);return R<0?{intro:T.trim(),body:""}:{intro:T.slice(0,R).trim(),body:T.slice(R).trim()}},justUnlocked:()=>at("justUnlocked",null),setUnlockAll(b){r=b,pt("unlockAll",b),z()},reminders:()=>at("reminders",!0),setReminders(b){pt("reminders",b),z()},spotlightOn:()=>!!e.app?.spotlight&&at("spotlight",!0),setSpotlight(b){pt("spotlight",b),!b&&c&&(c=null,e.app?.spotlight?.(null)),z()},spotTask:()=>c?.task??null,letter:b=>at("letters",{})[b]??null,async openGuide(b){b&&O.select(b),pt("justUnlocked",null),await e.app?.openSpace?.(md),z()},dispose(){c&&e.app?.spotlight?.(null),d=!0,window.clearTimeout(g);for(let b of u.splice(0))b();n.clear()}},I=e.achievements?.subscribe?.(()=>{x(),z()});I&&u.push(I);let ne=e.subscribeLocale?.(()=>z());return typeof ne=="function"&&u.push(ne),x(),t.appVersion.then(b=>{d||(a=b,E(),z())}),O}function Kr(e){let t=pd(e.env());return So.map(n=>({level:n.id,chapters:t.filter(r=>r.level===n.id)})).filter(n=>n.chapters.length)}function bd(e,t){switch(e){case"ribbon":return{x:5,y:10,w:28,h:168};case"ribbon-plus":return{x:5,y:180,w:28,h:26};case"ribbon-bottom":return{x:5,y:208,w:28,h:26};case"left-top":return{x:48,y:14,w:128,h:28};case"left-plus":return{x:180,y:16,w:22,h:24};case"left-list":return{x:48,y:54,w:154,h:122};case"main-tabs":return{x:224,y:14,w:96,h:22};case"main-top":return{x:226,y:44,w:104,h:24};case"main-top-right":return{x:498,y:44,w:60,h:24};case"main-body":return t.main==="grid"?{x:232,y:78,w:328,h:170}:{x:244,y:80,w:304,h:112};case"main-bottom":return{x:236,y:208,w:312,h:42};case"right":return{x:588,y:16,w:116,h:76};case"nav":return{x:14,y:92,w:172,h:28};case"section-1":return{x:224,y:60,w:476,h:86};case"section-2":return{x:224,y:160,w:476,h:90}}}var Re=e=>({style:e}),tt=(e,t,n,r=7)=>o("rect",{x:e,y:t,width:n,height:r,rx:r/2,...Re("fill:var(--overlay-medium)")}),Co=(e,t,n=12,r=!1)=>o("rect",{x:e,y:t,width:n,height:n,rx:3,...Re(r?"fill:var(--text-muted)":"fill:var(--overlay-strong)")}),To=(e,t,n,r="")=>o("text",{x:e,y:t,...Re(`fill:var(--text);font:500 12px var(--font-ui);${r}`),children:n});function vd({g:e,figure:t}){let n=e.locale(),r=new Map;for(let u of t.marks)if(u.text)for(let p of[].concat(u.slot))r.set(p,u.text[n]||u.text.zh);let a=new Set(t.marks.flatMap(u=>[].concat(u.slot))),i=t.marks.flatMap(u=>[].concat(u.slot).map(p=>bd(p,t))),s=t.marks.map((u,p)=>{let m=bd([].concat(u.slot)[0],t);return{n:p+1,x:Math.min(m.x+m.w+4,712),y:Math.max(m.y-4,12)}}),l=t.marks.map(u=>u.label[n]||u.label.zh),c=()=>o(N,{children:[[16,44,72,100,128,156].map((u,p)=>o("g",{children:Co(11,u,16,p===2)},u)),o("path",{d:"M19 186v14M12 193h14",...Re("stroke:var(--text-faint);stroke-width:2;stroke-linecap:round")}),Co(11,213,16,a.has("ribbon-bottom")),Co(11,240,16),o("rect",{x:38,y:1,width:1,height:266,...Re("fill:var(--border)")}),Co(56,22,12,a.has("left-top")),r.has("left-top")?To(76,32,r.get("left-top")):tt(76,25,70),a.has("left-plus")&&o("path",{d:"M191 21v14M184 28h14",...Re("stroke:var(--text-muted);stroke-width:2;stroke-linecap:round")}),[62,86,110,134,158].map((u,p)=>o("g",{children:[Co(58,u,10),tt(76,u+1.5,[74,56,88,48,66][p])]},u)),r.has("right")?To(598,38,r.get("right")):tt(598,30,52),tt(598,52,84),tt(598,68,62),tt(598,116,92),tt(598,132,70)]}),d=()=>o(N,{children:[o("rect",{x:228,y:16,width:88,height:18,rx:6,...Re("fill:var(--bg-card)")}),r.has("main-tabs")?To(240,29,r.get("main-tabs"),"font-size:11px"):tt(238,22,52,6),o("rect",{x:230,y:47,width:48,height:18,rx:9,...Re("fill:var(--bg-card)")}),tt(242,53,24,6),tt(290,53,26,6),[506,524,542].map(u=>o("rect",{x:u,y:50,width:12,height:12,rx:3,...Re("fill:var(--overlay-strong)")},u)),t.main==="grid"?o(N,{children:[[0,1,2,3,4,5,6].map(u=>o("g",{children:tt(244+u*46,86,22,6)},u)),[104,140,176,212].map(u=>o("rect",{x:238,y:u,width:316,height:1,...Re("fill:var(--border)")},u)),[1,2,3,4,5,6].map(u=>o("rect",{x:238+u*45,y:98,width:1,height:146,...Re("fill:var(--border)")},u)),o("rect",{x:286,y:146,width:40,height:24,rx:4,...Re("fill:var(--overlay-medium)")}),o("rect",{x:376,y:182,width:40,height:18,rx:4,...Re("fill:var(--overlay-medium)")})]}):t.main==="chat"?o(N,{children:[o("rect",{x:412,y:84,width:132,height:26,rx:10,...Re("fill:var(--overlay-light)")}),tt(252,128,260),tt(252,144,230),tt(252,160,150),o("rect",{x:240,y:212,width:304,height:34,rx:10,...Re("fill:var(--bg-card);stroke:var(--border)")}),tt(254,226,120),o("circle",{cx:528,cy:229,r:8,...Re("fill:var(--overlay-strong)")})]}):o(N,{children:[o("rect",{x:252,y:86,width:120,height:12,rx:4,...Re("fill:var(--overlay-strong)")}),[110,126,142,166,182,206,222].map((u,p)=>o("g",{children:tt(252,u,[292,270,200,286,240,280,150][p])},u))]})]}),g=()=>o(N,{children:[[36,64,92,120,148,176].map((u,p)=>o("g",{children:[Co(24,u+8,12,p===2&&a.has("nav")),p===2&&r.has("nav")?To(44,u+18,r.get("nav")):tt(44,u+11,[64,52,58,70,46,60][p])]},u)),o("rect",{x:232,y:28,width:110,height:12,rx:4,...Re("fill:var(--overlay-strong)")}),r.has("section-1")?To(234,82,r.get("section-1")):tt(234,74,70),[0,1,2].map(u=>o("rect",{x:234+u*150,y:94,width:136,height:42,rx:8,...Re(u===0?"fill:var(--bg-card);stroke:var(--accent)":"fill:var(--bg-card);stroke:var(--border)")},u)),r.has("section-2")?To(234,182,r.get("section-2")):tt(234,174,70),[0,1,2,3,4,5,6].map(u=>o("circle",{cx:246+u*30,cy:210,r:10,...Re(u===0?"fill:var(--accent)":"fill:var(--overlay-strong)")},u)),[0,1,2,3,4,5,6].map(u=>o("circle",{cx:246+u*30,cy:236,r:8,...Re("fill:var(--overlay-medium)")},`b${u}`))]});return o("figure",{class:"fxg-figure",children:[o("svg",{class:"fxg-figure-svg",viewBox:"0 0 724 268",role:"img","aria-label":`${e.t("guide.figure")}: ${l.map((u,p)=>`${p+1} ${u}`).join("; ")}`,children:[o("rect",{x:.5,y:.5,width:723,height:267,rx:10,...Re("fill:var(--sidebar-bg, var(--bg));stroke:var(--border)")}),t.layout==="settings"?o("rect",{x:200,y:1,width:523,height:266,...Re("fill:var(--bg)")}):o("rect",{x:216,y:8,width:352,height:252,rx:8,...Re("fill:var(--bg)")}),i.map((u,p)=>o("rect",{x:u.x-4,y:u.y-4,width:u.w+8,height:u.h+8,rx:7,...Re("fill:var(--accent-wash);stroke:var(--accent);stroke-width:2")},`r${p}`)),t.layout==="settings"?g():o(N,{children:[c(),d()]}),s.map(u=>o("g",{children:[o("circle",{cx:u.x,cy:u.y,r:10,...Re("fill:var(--accent)")}),o("text",{x:u.x,y:u.y+4,"text-anchor":"middle",...Re("fill:var(--on-accent);font:600 12px var(--font-ui)"),children:u.n})]},u.n))]}),o("figcaption",{class:"fxg-figure-cap",children:l.map((u,p)=>o("span",{children:[o("b",{children:p+1}),u]},p))})]})}var yd=`
|
|
1104
1104
|
.fxg { color: var(--text); font-size: var(--ui-font-body); line-height: var(--ui-line-body); height: 100%; min-height: 0; display: flex; flex-direction: column; }
|
|
1105
1105
|
.fxg button { font: inherit; }
|
|
1106
1106
|
.fxg .fx-link { display: inline-flex; align-items: center; gap: 4px; padding: 0; border: 0; background: transparent; color: var(--accent-ink); text-decoration: underline; text-underline-offset: 2px; cursor: pointer; }
|
|
@@ -1167,16 +1167,16 @@ ${R}`},K=await e.inbox.post(X);if(!K||d)return;let J=rt("lastLetter",null);ut("l
|
|
|
1167
1167
|
.fxg-letter .fxg-letter-chapter { display: grid; gap: 4px; }
|
|
1168
1168
|
.fxg-letter .fxg-letter-title { padding: 0; border: 0; background: transparent; color: var(--text); font-weight: 600; text-align: left; cursor: pointer; }
|
|
1169
1169
|
.fxg-letter > .btn { align-self: flex-start; }
|
|
1170
|
-
`;function
|
|
1170
|
+
`;function Xr(e){let[,t]=A(0);oe(()=>{let n=e.subscribe(()=>t(r=>r+1));return t(r=>r+1),n},[e])}function Jr(e){return o("div",{class:`fxg fxg-${e.kind}`,lang:e.g.locale()==="zh"?"zh-CN":"en",children:[o("style",{children:yd}),e.children]})}var Yr=({on:e})=>o("span",{class:`fxg-check${e?" is-on":""}`,"aria-hidden":"true",children:e&&o("svg",{viewBox:"0 0 16 16",width:"10",height:"10",children:o("path",{d:"M3.5 8.5l3 3 6-7",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})})});function wd({g:e,task:t,chapter:n}){let r=e.env(),a=sn(t,r),i=!!t.desktopOnly&&!r.desktop;return o("li",{class:`fxg-task${a?" is-done":""}${!a&&e.spotTask()===t.id?" is-current":""}`,"data-task":t.id,children:[o(Yr,{on:a}),o("span",{class:"fxg-task-title",children:e.title(t)}),a?o("span",{class:"fxg-task-state",children:e.t("guide.taskDone")}):i?o("span",{class:"fxg-task-state",children:e.t("guide.desktopOnly")}):t.go?o("button",{type:"button",class:"btn ghost sm fxg-go",onClick:()=>void e.go(t,n),children:e.t("guide.go")}):null]})}function Pi({g:e,chapter:t}){return o("ul",{class:"fxg-tasks",children:t.tasks.map(n=>o(wd,{g:e,task:n,chapter:t},n.id))})}function xd({g:e,value:t,label:n}){let r=ce(null),a=ce(null);return oe(()=>{if(!(!r.current||!e.ctx.ui?.mountMarkdownEditor))return a.current=e.ctx.ui.mountMarkdownEditor(r.current,{value:t,label:n,readOnly:!0,modes:!1}),()=>{a.current?.dispose(),a.current=null}},[e]),oe(()=>{a.current?.update({value:t})},[t]),o("div",{class:"fxg-doc",ref:r})}function uh({g:e}){let[t,n]=A(!1),r=ce(null);oe(()=>{if(!t)return;let s=c=>{r.current?.contains(c.target)||n(!1)},l=c=>{c.key==="Escape"&&n(!1)};return document.addEventListener("pointerdown",s,!0),document.addEventListener("keydown",l),()=>{document.removeEventListener("pointerdown",s,!0),document.removeEventListener("keydown",l)}},[t]);let a=e.env(),i=(s,l,c)=>o("button",{type:"button",role:c===void 0?"menuitem":"menuitemcheckbox","aria-checked":c,class:"fxg-menu-item",onClick:()=>{n(!1),l()},children:[o("span",{children:s}),c&&o(Yr,{on:!0})]});return o("div",{class:"fxg-more",ref:r,children:[o("button",{type:"button",class:"fxg-icon-btn","aria-label":e.t("guide.more"),"aria-haspopup":"menu","aria-expanded":t,onClick:()=>n(!t),children:"\xB7\xB7\xB7"}),t&&o("div",{class:"fxg-menu",role:"menu",children:[i(a.unlockAll?e.t("guide.relock"):e.t("guide.unlockAll"),()=>e.setUnlockAll(!a.unlockAll)),i(e.t("guide.reminders"),()=>e.setReminders(!e.reminders()),e.reminders()),e.ctx.app?.spotlight&&i(e.t("guide.spotlight"),()=>e.setSpotlight(!e.spotlightOn()),e.spotlightOn()),e.ctx.app?.runCommand&&i(e.t("guide.openAchievements"),()=>{e.ctx.app?.runCommand?.("open-achievements")})]})]})}function zd({g:e}){Xr(e),oe(()=>{e.ctx.achievements?.track("guide.open")},[e]);let t=e.selected(),n=e.env(),r=_o(t,n),{intro:a,body:i}=e.markdown(t),s=r!=="locked",l=Ft[Ft.findIndex(c=>c.id===t.level)-1];return o(Jr,{g:e,kind:"reader",children:[o("div",{class:"fxg-bar",children:[o("span",{class:"fx-tag fxg-ro",children:e.t("guide.readOnly")}),o(uh,{g:e})]}),o("div",{class:"fxg-scroll",children:o("div",{class:"fxg-col",children:[o(xd,{g:e,value:`# ${e.title(t)}
|
|
1171
1171
|
|
|
1172
|
-
${a}`,label:e.title(t)}),s&&t.figure&&o(
|
|
1172
|
+
${a}`,label:e.title(t)}),s&&t.figure&&o(vd,{g:e,figure:t.figure}),s&&i&&o(xd,{g:e,value:i,label:e.title(t)}),r==="locked"&&l?o("div",{class:"fxg-lock","data-locked":!0,children:[o("div",{class:"fxg-lock-title",children:e.t("guide.locked.title")}),o("p",{children:e.t("guide.locked.body",{level:e.levelName(l.id)})}),o("p",{class:"fxg-muted",children:e.t("guide.locked.left")}),o("ul",{class:"fxg-tasks",children:en(l.id).flatMap(c=>rr(c.tasks,n).filter(d=>!sn(d,n)).map(d=>o(wd,{g:e,task:d,chapter:c},d.id)))}),o("p",{class:"fxg-muted",children:e.t("guide.locked.hint")})]}):o("section",{class:"fxg-section","data-guide-tasks":!0,children:[o("h2",{children:e.t("guide.tasks")}),o(Pi,{g:e,chapter:t})]})]})})]})}function ph({done:e,total:t}){return o("div",{class:"fxg-bar-track",role:"progressbar","aria-valuemin":0,"aria-valuemax":t,"aria-valuenow":e,children:o("i",{style:{width:`${t?Math.round(e/t*100):0}%`}})})}function kd({g:e,c:t}){let n=_o(t,e.env());return o("button",{type:"button",class:`fxg-line is-${n}${e.selected().id===t.id?" is-active":""}`,onClick:()=>{e.select(t.id),e.ctx.openView?.(tn.reader)},children:[o(Yr,{on:n==="done"}),o("span",{children:e.title(t)}),n==="locked"&&o("span",{class:"fxg-task-state",children:e.t("guide.lockedHint")})]})}function fh({g:e}){let t=e.env(),n=Ci(t);if(!n)return o("div",{class:"fxg-pane",children:[o("div",{class:"fxg-h",children:e.t("guide.allDone")}),o("p",{class:"fxg-muted",children:e.t("guide.allDoneBody")}),o("div",{class:"fxg-sub",children:e.t("guide.review")}),Kr(e).map(({level:s,chapters:l})=>o("button",{type:"button",class:"fxg-line",onClick:()=>{e.select(l[0].id),e.ctx.openView?.(tn.reader)},children:[o(Yr,{on:!0}),o("span",{children:e.levelName(s)})]},s))]});let{done:r,total:a}=fd(n,t),i=Ft[Ft.findIndex(s=>s.id===n)+1];return o("div",{class:"fxg-pane",children:[o("div",{class:"fxg-h",children:e.levelName(n)}),o("div",{class:"fxg-muted",children:e.t("guide.levelProgress",{done:r,total:a})}),o(ph,{done:r,total:a}),o("div",{class:"fxg-lines",children:en(n).map(s=>o(kd,{g:e,c:s},s.id))}),i&&o(N,{children:[o("div",{class:"fxg-sub",children:e.t("guide.next")}),o("div",{class:"fxg-lines",children:en(i.id).map(s=>o(kd,{g:e,c:s},s.id))})]})]})}function Sd(e,t){let{intro:n,body:r}=e.markdown(t);return`# ${e.title(t)}
|
|
1173
1173
|
|
|
1174
1174
|
${n}
|
|
1175
1175
|
|
|
1176
|
-
${r}`.trim()}function
|
|
1176
|
+
${r}`.trim()}function mh({g:e}){let t=e.selected(),n=e.ctx.tangu?.mountChat;return n?o(gh,{g:e,c:t,mount:n},`${t.id}:${e.locale()}`):o(hh,{g:e,c:t})}function gh({g:e,c:t,mount:n}){let r=ce(null);return oe(()=>{let a=n(r.current,{title:e.t("guide.ask.chatTitle")});return a.quote(Sd(e,t)),()=>a.dispose()},[]),o("div",{class:"fxg-chat",ref:r})}function hh({g:e,c:t}){let[n,r]=A(""),[a,i]=A(""),s=e.ctx.tangu?.startChat,l=async()=>{if(!s)return;let c=`${e.t("guide.ask.prompt",{chapter:e.title(t),question:n.trim()})}
|
|
1177
1177
|
|
|
1178
1178
|
---
|
|
1179
|
-
${vd(e,t)}`,d=await s({prompt:c,send:!1});d?.ok?r(""):i(d?.error||e.t("guide.ask.unavailable"))};return o("div",{class:"fxg-pane",children:[o("p",{class:"fxg-muted",children:e.t("guide.ask.hint",{chapter:e.title(t)})}),o("textarea",{class:"fxg-input",rows:4,value:n,placeholder:e.t("guide.ask.placeholder"),onInput:c=>r(c.target.value)}),o("button",{type:"button",class:"btn sm",disabled:!s,onClick:()=>void l(),children:e.t("guide.ask.send")}),(!s||a)&&o("p",{class:"fxg-muted",children:a||e.t("guide.ask.unavailable")})]})}function yd({g:e}){Gr(e);let[t,n]=A("progress");return o(Xr,{g:e,kind:"side",children:[o("div",{class:"fxg-tabs",role:"tablist",children:["progress","ask"].map(r=>o("button",{type:"button",role:"tab","aria-selected":t===r,class:t===r?"is-on":"",onClick:()=>n(r),children:e.t(r==="progress"?"guide.progress":"guide.askTangu")},r))}),t==="progress"?o(oh,{g:e}):o(rh,{g:e})]})}function xd({g:e}){Gr(e);let t=e.companionChapter(),n=wo(t,e.env())==="done",r=ce(n);return oe(()=>{if(n&&!r.current){let a=window.setTimeout(()=>e.ctx.closeView?.(en.companion),1500);return()=>window.clearTimeout(a)}r.current=n},[n]),o(Xr,{g:e,kind:"companion",children:o("div",{class:"fxg-pane",children:[o("div",{class:"fxg-companion-head",children:[o("span",{class:"fxg-sub",children:e.t("guide.title")}),e.ctx.closeView&&o("button",{type:"button",class:"fxg-icon-btn","aria-label":e.t("guide.companion.close"),onClick:()=>e.ctx.closeView?.(en.companion),children:"\xD7"})]}),o("div",{class:"fxg-h",children:e.title(t)}),o("div",{class:"fxg-sub",children:e.t("guide.tasks")}),o(_i,{g:e,chapter:t}),o("button",{type:"button",class:"fx-link fxg-back",onClick:()=>void e.openGuide(t.id),children:e.t("guide.companion.back")})]})})}function kd({g:e,letter:t}){Gr(e);let n=t?t.kind==="level"?t.level:"new":null,r=n&&(n==="new"||jr(n,e.env()))?Qt(n):[];return o(Xr,{g:e,kind:"letter",children:[r.map(a=>o("div",{class:"fxg-letter-chapter",children:[o("button",{type:"button",class:"fxg-letter-title",onClick:()=>void e.openGuide(a.id),children:e.title(a)}),o(_i,{g:e,chapter:a})]},a.id)),o("button",{type:"button",class:"btn sm",onClick:()=>void e.openGuide(r[0]?.id??Fn("welcome")?.id),children:e.t("guide.letter.open")})]})}function sh(e){return!!e&&typeof e.registerView=="function"&&typeof e.registerListSource=="function"&&typeof e.openView=="function"&&typeof e.achievements?.count=="function"&&typeof e.achievements.subscribe=="function"&&typeof e.app?.openSpace=="function"&&typeof e.ui?.mountMarkdownEditor=="function"}function wd(e,t=window){if(!sh(e)||t.tangu?.unitPage)return null;let n=t.tangu,r=dd(e,{desktop:typeof n?.appVersion=="function"&&!n.mobile,appVersion:typeof n?.appVersion=="function"?n.appVersion().catch(()=>null):Promise.resolve(null)}),a=i=>s=>(Qe(o(i,{g:r}),s),()=>{Qe(null,s)});return e.registerView({id:en.reader,title:r.t("guide.title"),icon:"page",workspaceSource:Si,mount:a(bd)}),e.registerView({id:en.side,title:r.t("guide.progress"),icon:"list-view",mount:a(yd)}),e.registerView({id:en.companion,title:r.t("guide.title"),icon:"todo",mount:a(xd)}),e.registerListSource({id:Si,title:r.t("guide.title"),search:!0,items:i=>{let s=r.env(),l=i?.query?.trim().toLowerCase()??"",c=r.justUnlocked();return Wr(r).flatMap(({level:d,chapters:g})=>g.map(p=>{let u=wo(p,s);return{key:p.id,title:r.title(p),group:r.levelName(d),icon:u==="done"?"circle-check":u==="locked"?"lock":"circle",hint:d===c&&u!=="locked"?r.t("guide.justUnlocked"):void 0}})).filter(d=>!l||d.title.toLowerCase().includes(l))},subscribe:i=>r.subscribe(i),activeKey:()=>r.selected().id,open:i=>{r.select(i.key),e.openView(en.reader)}}),e.registerCommand?.({id:"open-guide",title:()=>r.t("guide.cmd.open"),keywords:"guide manual help tutorial levels \u4F7F\u7528\u6307\u5357 \u8BF4\u660E\u4E66 \u6559\u7A0B \u5E2E\u52A9 \u7B49\u7EA7 \u4EFB\u52A1",run:()=>{r.openGuide()}}),e.inbox?.registerCard({sender:()=>r.t("guide.title"),mount(i,s){return Qe(o(kd,{g:r,letter:r.letter(s.id)}),i),()=>{Qe(null,i)}}}),r}var lh=["uploads","ama","sync","agents","profile","apps","plugins","exports"],or={uploads:"penzor.uploads",ama:"penzor.ledger.ama",sync:"penzor.ledger.sync",agents:"penzor.source.agents",profile:"penzor.source.profile",apps:"penzor.ledger.apps",plugins:"penzor.source.plugins",exports:"penzor.ledger.exports"},zd=e=>e==="uploads"?"app:penzor":e==="exports"?"exports":`source:${e}`,$n=e=>Number.isFinite(Number(e))?Number(e):0,ln="penzor";var _d=500;async function ch(e,t){let n=Math.min(20,$n(t.totalPages));if(n<=1)return t.files;let r=await Promise.all(Array.from({length:n-1},(a,i)=>e(`/exports/list?pageSize=${_d}&sortBy=date&sortOrder=desc&page=${i+2}`)));return[...t.files,...r.flatMap(a=>a.ok&&Array.isArray(a.data?.files)?a.data.files:[])]}async function Cd(e){let[t,n,r,a,i,s,l,c,d]=await Promise.all([e("/remotesync/vaults"),e("/amadeus/vaults"),e("/storage/quota"),e("/storage/files-by-app"),e(`/exports/list?pageSize=${_d}&sortBy=date&sortOrder=desc`),e("/trash?all=1"),e("/storage/ledger"),e("/storage/source-trash/ama"),e("/remotesync/content/devices")]),p=[t,n,r,a,i,s].every(m=>!m.ok&&m.status===401);return{snap:{contentDevices:d.ok&&Array.isArray(d.data?.devices)?d.data.devices:null,amaTrash:c.ok&&Array.isArray(c.data?.entries)?c.data.entries:null,ledger:l.ok&&l.data?.schemaVersion===1?l.data:null,sync:t.ok&&Array.isArray(t.data?.vaults)?{...t.data,vaults:t.data.vaults.filter(m=>m.vault!=="forsion-content")}:null,ama:n.ok&&Array.isArray(n.data?.vaults)?n.data.vaults.filter(m=>(m.role??"owner")==="owner").map(m=>({id:m.id,name:m.name,sizeBytes:$n(m.sizeBytes)})):null,apps:r.ok&&a.ok&&Array.isArray(a.data?.apps)?{used:$n(r.data?.used),quota:$n(r.data?.quota),apps:a.data.apps,largest:a.data.largest??[]}:null,exports:i.ok&&Array.isArray(i.data?.files)?{files:await ch(e,i.data),total:$n(i.data.total),totalBytes:$n(i.data.totalBytes)}:null,trash:s.ok&&Array.isArray(s.data)?s.data:null,at:Date.now()},signedOut:p}}var dh={"ai-studio":"AI Studio","photo-studio":"Photo Studio",notebase:"Notebase",chat:"Forsion Chat",connect:"Forsion Connect","video-studio":"Video Studio",bluebird:"Bluebird",cnti:"CNTI"},Ci=e=>e?dh[e]??e.split(/[-_]/).filter(Boolean).map(t=>t[0].toUpperCase()+t.slice(1)).join(" "):"\u2014",so=e=>e.kind==="content"?`content:${e.namespace}`:e.kind==="source"?`source:${e.source}`:e.kind==="sync"?`sync:${e.vault}`:e.kind==="ama"?`ama:${e.vaultId}`:e.kind==="app"?`app:${e.appId}`:e.kind==="overview"?"ov":e.kind,lo=e=>e.kind==="overview"||e.kind==="sync-home";function Td(e){if(e==="ov")return{kind:"overview"};if(e==="sync-home"||e==="exports"||e==="trash")return{kind:e};let t=e.indexOf(":"),n=t<0?e:e.slice(0,t),r=t<0?"":e.slice(t+1);return r?n==="source"&&lh.includes(r)?{kind:"source",source:r}:n==="content"&&/^(default|device-[A-Za-z0-9_-]{1,64})$/.test(r)?{kind:"content",namespace:r}:n==="sync"?{kind:"sync",vault:r}:n==="ama"?{kind:"ama",vaultId:r}:n==="app"?{kind:"app",appId:r}:null:null}var Ti=(e,t)=>t?t.config.enabled||t.config.revision>0:!!e?.contentDevices?.length;function Ad(e,t,n,r=null){let a=m=>_e(n,or[m]),i=m=>nr(m,n),s=m=>{let f=e?.ledger?.sources.find(v=>v.id===m);return f?.status==="ready"?f.liveBytes+f.trashBytes:null},l=m=>{let f=s(m);return f==null?"\u2014":`${e?.ledgerStale?"~ ":""}${i(f)}`},c=Ti(e,r),d=[{key:"drive-root",title:t.drive,kind:"folder",icon:t.driveIcon},{key:"ov",title:t.overview,parent:"drive-root",icon:"layout"},{key:zd("uploads"),title:t.files,parent:"drive-root",icon:"folder",hint:l("uploads")}];if(c&&e?.contentDevices){d.push({key:"synced",title:t.synced,kind:"folder",icon:"cloud"},{key:"content:default",title:t.all,parent:"synced",icon:"cloud"});let m=r?.deviceId;m&&d.push({key:`content:device-${m}`,title:t.thisBackup,parent:"synced",icon:"lock"});for(let f of e.contentDevices.filter(v=>v.id!==m))d.push({key:`content:device-${f.id}`,title:f.name||`Forsion-${f.id.slice(0,8)}`,parent:"synced",icon:"link"})}let g=["ama","apps","plugins","exports",...c?[]:["agents","profile"]],p=g.reduce((m,f)=>m==null||s(f)==null?null:m+s(f),0);d.push({key:"by-app",title:t.byApp,kind:"folder",icon:"package",hint:p==null?"\u2014":i(p)});let u=(m,f,v=a(m))=>{let x=m==="ama"||m==="sync"||m==="apps",w=zd(m);if(d.push({key:x?w+":group":w,parent:f,title:v,icon:m==="sync"?"clock":"folder",...x?{kind:"folder"}:{},hint:l(m)}),x&&d.push({key:`source:${m}`,parent:w+":group",title:t.overview,icon:"layout"}),m==="sync")for(let z of e?.sync?.vaults??[])d.push({key:`sync:${z.vault}`,parent:w+":group",title:z.vault,icon:"database",hint:i(z.bytes)});if(m==="ama")for(let z of e?.ama??[])d.push({key:`ama:${z.id}`,parent:w+":group",title:z.name,icon:"page",hint:i(z.sizeBytes)});if(m==="apps")for(let z of e?.apps?.apps.filter(k=>k.appId!==ln&&k.files>0)??[])d.push({key:`app:${z.appId}`,parent:w+":group",title:Ci(z.appId),icon:"archive",hint:i(z.bytes)})};for(let m of g)u(m,"by-app");return u("sync","",c?t.legacy:a("sync")),d.push({key:"trash",title:t.trash,icon:"trash",hint:e?.trash?t.items(Ai(e.trash).length):"\u2014"}),d.map(m=>m.parent===""?(({parent:f,...v})=>v)(m):m)}function Ai(e){let t=new Map(e.map(a=>[a.id,a])),n=a=>{let i=a;for(let s=0;s<64&&i.parentId&&t.has(i.parentId);s++)i=t.get(i.parentId);return i},r=new Map;for(let a of e){let i=n(a),s=r.get(i.id)??{inner:0,innerBytes:0};i.id!==a.id&&s.inner++,s.innerBytes+=$n(a.fileSize),r.set(i.id,s)}return e.filter(a=>!(a.parentId&&t.has(a.parentId))).map(a=>({...a,...r.get(a.id)}))}function Ei(e,t){let n=t?`${t}/`:"",r=new Map,a=[];for(let i of e){if(n&&!i.path.startsWith(n))continue;let s=i.path.slice(n.length),l=s.indexOf("/");if(l<0){a.push({key:i.path,name:s,dir:!1,size:i.size,mtime:i.mtime,col4:i.who??null,ref:i.ref});continue}let c=s.slice(0,l),d=n+c,g=r.get(d)??{key:d,name:c,dir:!0,size:0,mtime:null,count:0};g.size+=i.size,g.count=(g.count??0)+1,i.mtime!=null&&(g.mtime==null||i.mtime>g.mtime)&&(g.mtime=i.mtime),r.set(d,g)}return[...Jr([...r.values()]),...Jr(a)]}var Jr=e=>e.sort((t,n)=>(n.mtime??-1)-(t.mtime??-1)||t.name.localeCompare(n.name)),Ed=e=>[...Jr(e.filter(t=>t.dir)),...Jr(e.filter(t=>!t.dir))];function nr(e,t){let n=Math.max(0,$n(e));if(n<1024)return`${n} B`;if(n<1024*1024)return`${Math.round(n/1024)} KB`;if(n<1024**3){let r=n/1048576;return`${r<100?Number(r.toFixed(1)):Math.round(r)} MB`}return`${Number((n/1024**3).toFixed(2))} GB`}function Pi(e,t,n){let r=nr(e,n),a=nr(t,n),i=a.slice(a.indexOf(" "));return`${r.endsWith(i)?r.slice(0,-i.length):r} / ${a}`}var uh=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Sd=e=>String(e).padStart(2,"0");function tn(e,t,n=Date.now()){if(e==null||!Number.isFinite(e))return"\u2014";let r=new Date(e),a=new Date(n);a.setHours(0,0,0,0);let i=new Date(r);i.setHours(0,0,0,0);let s=Math.round((a.getTime()-i.getTime())/864e5),l=`${Sd(r.getHours())}:${Sd(r.getMinutes())}`;if(s===0)return t==="zh"?`\u4ECA\u5929 ${l}`:`Today ${l}`;if(s===1)return t==="zh"?`\u6628\u5929 ${l}`:`Yesterday ${l}`;let c=r.getFullYear()===a.getFullYear();return t==="zh"?`${c?"":`${r.getFullYear()} \u5E74 `}${r.getMonth()+1} \u6708 ${r.getDate()} \u65E5`:`${uh[r.getMonth()]} ${r.getDate()}${c?"":`, ${r.getFullYear()}`}`}function co(e){if(e==null||e==="")return null;if(typeof e=="number")return e<1e12?e*1e3:e;let t=Number(e);if(Number.isFinite(t))return t<1e12?t*1e3:t;let n=Date.parse(String(e));return Number.isNaN(n)?null:n}var Pd=e=>[e.notes.on&&!e.notes.pending,e.agents.on,e.plugins.on].filter(Boolean).length;function Mi(e){let t=e.notes.last;return!!t&&t.ok===!1&&!(t.errors.length>0&&t.errors.every(n=>n.includes("already-running")))}var Yr=e=>!!e&&e.signedIn&&(!!e.notes.pending||e.notes.on&&Mi(e)),ph=e=>/"code"\s*:\s*"QUOTA"/.test(e),Md=(e,t)=>e.notes.on&&!e.notes.pending&&e.notes.backend==="penzor"&&(t>0&&(e.notes.localBytes??0)>t||!!e.notes.last?.errors.some(ph));function rr(e){if(!e?.notes.running)return null;let t=e.notes.progress;return t&&t.total>0?Math.min(1,Math.max(0,t.done/t.total)):0}function Id(e,t){if(!e||!e.signedIn)return;let n=rr(e);if(n!=null)return n>0?_e(t,"penzor.sync.running",{pct:Math.round(n*100)}):_e(t,"penzor.sync.runningPlain");if(e.notes.pending)return _e(t,"penzor.sync.waiting");let r=Pd(e);return r?_e(t,"penzor.sync.onN",{n:r}):_e(t,"penzor.sync.allOff")}var Ii=e=>e.jobs.filter(t=>t.state==="failed"&&!e.jobs.some(n=>n.path===t.path&&n.at>t.at&&n.state==="done"));function wn(e){if(!e.config.enabled)return{kind:"off"};if(e.paused)return{kind:"paused"};let t=e.jobs.filter(a=>a.state==="queued"||a.state==="active");if(t.length){let a=t.reduce((s,l)=>s+(l.size??0),0),i=t.reduce((s,l)=>s+l.done,0);return{kind:"run",pct:a>0?Math.min(99,Math.round(i/a*100)):0}}if(e.phase==="scanning"||e.phase==="syncing")return{kind:"scan"};let n=Ii(e).length+(e.error?1:0);if(n)return{kind:"warn",n};let r=e.jobs.filter(a=>a.state==="done").map(a=>a.finishedAt??a.at);return{kind:"ok",at:r.length?Math.max(...r):null}}function Rd(e,t){return e.kind==="off"?_e(t,"penzor.cs.statusOff"):e.kind==="paused"?_e(t,"penzor.cs.statusPaused"):e.kind==="run"?`${e.pct}%`:e.kind==="scan"?_e(t,"penzor.sync.runningPlain"):e.kind==="warn"?_e(t,"penzor.cs.statusWarn",{n:e.n}):_e(t,"penzor.cs.statusOk")}function Ld(e,t){let n=Pd(e);return e.notes.pending?_e(t,"penzor.sync.badgeWaiting",{n}):n?_e(t,"penzor.sync.onN",{n}):_e(t,"penzor.sync.allOff")}function Ri(e,t){let n=Math.max(0,Math.round(e.intervalMin)),r=n?n%60===0?_e(t,"penzor.sync.everyHours",{n:n/60}):_e(t,"penzor.sync.every",{n}):_e(t,"penzor.sync.manual");return e.syncOnStart?`${r} \xB7 ${_e(t,"penzor.sync.onStart")}`:r}function zn(e,t,n=Date.now()){if(e==null||!Number.isFinite(e))return"\u2014";let r=Math.max(0,n-e);return r<6e4?_e(t,"penzor.justNow"):r<36e5?_e(t,"penzor.sync.minAgo",{n:Math.floor(r/6e4)}):r<6*36e5?_e(t,"penzor.sync.hoursAgo",{n:Math.floor(r/36e5)}):tn(e,t,n)}function Zr(e,t=!1){return t?"folder":/\.(png|jpe?g|gif|webp|heic|dng|svg|bmp|tiff?)$/i.test(e)?"image":/\.(md|txt|pdf|docx?|rtf)$/i.test(e)?"page":/\.db$/i.test(e)?"database":"attachment"}function Dd(e,t){let n=null;for(let r of t)(!r.source||e===r.source||e.startsWith(r.source+"/"))&&(!n||r.source.length>n.source.length)&&(n=r);return n}var $t={get:"penzor:sync:get",preview:"penzor:sync:preview",apply:"penzor:sync:apply",run:"penzor:sync:run",pause:"penzor:sync:pause",retry:"penzor:sync:retry",rename:"penzor:sync:rename",setup:"penzor:sync:setup"};var cn="forsion-penzor",Sn={main:"penzor",info:"penzor-info"},Li="penzor-places",Di="forsion-extend.penzor.ready",Nd="forsion-extend.penzor.focus",Qr=e=>e.state==="active"||e.state==="queued",_o=e=>e.ok?"":e.detail||e.code||e.transport||(e.status?`HTTP ${e.status}`:"offline"),fh=e=>e.slice(e.lastIndexOf("/")+1);function Od(e,t={}){let n=t.api??ne,r=new Set,a=()=>{for(let y of[...r])try{y()}catch(C){console.error("[penzor] listener failed",C)}},i=()=>ht(e.getLocale?.()),s=(y,C)=>_e(i(),y,C),l=y=>nr(y,i()),c=y=>e.app?.notify?.(y),d=y=>c(s("penzor.toast.failed",{reason:typeof y=="string"?y:_o(y)})),g="unknown",p=!1,u=null,m=null,f={kind:"overview"},v="",x=[],w=null,z=null,k=null,M="mtime",L="",H=null,V={kind:"view"},Q=!1,ee=null,S=null,E=0,O=0,I=0,te=t.device??null,b=new Map,T=new Set,R=null,X=null,K=[],J=[],me="hidden",Le=0,Ve=!1,he=0,Te=!1,pt=null,Ct=!1,Tt=null,nn=new Map,bt=null,st=!se().mobile&&typeof e.app?.sync?.get=="function"?e.app.sync:null,At=new Map,vt=new Set,ve=!1,yt=!1,Ae=1e4,Un=4e3,lt=y=>{let C=M==="size"?(P,j)=>j.size-P.size:M==="name"?(P,j)=>P.name.localeCompare(j.name):null;return C?[...y.filter(P=>P.dir).sort(C),...y.filter(P=>!P.dir).sort(C)]:Ed([...y])};async function Xe(){let y=++E,C=f;if(z=null,C.kind==="overview"||C.kind==="sync-home"){w=null;return}if(C.kind==="exports"){w=(m?.exports?.files??[]).map($=>({key:$.fileId,name:$.fileName,dir:!1,size:$.size,mtime:co($.createdAt),col4:Ht($.appId),ref:$}));return}if(C.kind==="trash"){w=Ai(m?.trash??[]).map($=>({key:$.id,name:$.name,dir:$.fileType==="directory",size:$.fileType==="directory"?$.innerBytes:$.fileSize,mtime:co($.deletedAt),col4:$.parentName?`${Ht($.appId)} / ${$.parentName}`:Ht($.appId),count:$.fileType==="directory"?$.inner:void 0,ref:$}));return}if(w=null,a(),C.kind==="content"){let $=await n(`/remotesync/content/${encodeURIComponent(C.namespace)}`);if(y!==E)return;if(!$.ok){z=_o($),a();return}if($.data.schemaVersion!==1||!Array.isArray($.data.nodes)){z=s("penzor.unreachable");return}let ie=$.data.nodes.filter(ye=>!ye.deleted),ze=ie.filter(ye=>ye.kind==="file"&&ye.version).map(ye=>({path:ye.path,size:ye.size??0,mtime:ye.mtime??null,ref:ye}));b.set(so(C),ze);let Z=ye=>{let lr=0,Vn=null,uo=0;for(let Pn of ze)Pn.path.startsWith(ye+"/")&&(lr+=Pn.size,uo++,Pn.mtime!=null&&(Vn==null||Pn.mtime>Vn)&&(Vn=Pn.mtime));return{size:lr,mtime:Vn,count:uo}};w=ie.filter(ye=>(ye.path.includes("/")?ye.path.slice(0,ye.path.lastIndexOf("/")):"")===v).map(ye=>ye.kind==="folder"?{key:ye.path,name:ye.name,dir:!0,...Z(ye.path),ref:ye}:{key:ye.path,name:ye.name,dir:!1,size:ye.size??0,mtime:ye.mtime??null,ref:ye});return}if(C.kind==="sync"||C.kind==="ama"){let $=so(C),ie=b.get($);if(!ie){if(C.kind==="sync"){let ze=await n(`/remotesync/vaults/${encodeURIComponent(C.vault)}/manifest`);if(y!==E)return;if(!ze.ok){z=_o(ze),a();return}ie=ze.data.files.map(Z=>({path:Z.path,size:Z.size,mtime:co(Z.mtimeMs),who:Z.device??null,ref:Z}))}else{let ze=await n(`/amadeus/vaults/${encodeURIComponent(C.vaultId)}/tree`);if(y!==E)return;if(!ze.ok){z=_o(ze),a();return}ie=(ze.data.entries??[]).map(Z=>({path:Z.path,size:Z.size,mtime:co(Z.updatedAt),ref:Z}))}b.set($,ie)}w=Ei(ie,v);return}if(C.kind==="source"){let $=(ze,Z,ye)=>({key:ze,name:Z,size:ye,dir:!0,mtime:null,ref:{go:ze}});if(C.source==="sync"||C.source==="ama"||C.source==="apps"){if(!(C.source==="sync"?m?.sync:C.source==="ama"?m?.ama:m?.apps)){z=s("penzor.unreachable");return}w=C.source==="sync"?(m?.sync?.vaults??[]).map(Z=>$(`sync:${Z.vault}`,Z.vault,Z.bytes)):C.source==="ama"?(m?.ama??[]).map(Z=>$(`ama:${Z.id}`,Z.name,Z.sizeBytes)):(m?.apps?.apps??[]).filter(Z=>Z.appId!==ln&&Z.files>0).map(Z=>$(`app:${Z.appId}`,Ht(Z.appId),Z.bytes));return}let ie=await n(`/storage/source-files/${C.source}`);if(y!==E)return;if(!ie.ok){z=_o(ie),a();return}w=Ei(ie.data.entries.map(ze=>({...ze,ref:ze})),v);return}let P=x[x.length-1]?.id,j=await n(`/files${P?`?parentId=${encodeURIComponent(P)}`:""}`,{projectSource:C.appId});if(y===E){if(!j.ok){z=_o(j),a();return}w=j.data.map($=>({key:$.id,name:$.name,dir:$.fileType==="directory",size:Number($.fileSize)||0,mtime:co($.updatedAt),ref:$}))}}let xt=()=>{if(!w)return null;let y=L.trim().toLowerCase(),C=y?w.filter(P=>P.name.toLowerCase().includes(y)):w;return lt(C)},ft=()=>{let y=xt()??[],C=new Set(y.map(P=>P.key));if(T=new Set([...T].filter(P=>C.has(P))),k&&C.has(k)){T.add(k);return}k=(y.find(P=>!P.dir)??y[0])?.key??null,T=new Set(k?[k]:[]),R=k,Mt()},Et=()=>{k=null,T=new Set,R=null,X=null},Ht=y=>y===ln?s("penzor.uploads"):Ci(y),tt=()=>f.kind==="app"&&f.appId===ln,Tn=y=>!!m?.apps&&m.apps.apps.find(C=>C.appId===y)?.canManage!==!1,Ke=()=>f.kind==="app"&&Tn(f.appId),kt=y=>f.kind==="trash"?Tn(y.ref.appId):Ke(),D=()=>!!m?.apps&&!!m.trash?.length&&m.trash.every(y=>Tn(y.appId)),re=()=>f.kind==="app"||f.kind==="sync"||f.kind==="ama"||f.kind==="content",ke=()=>f.kind==="app"?x[x.length-1]?.id??"ROOT":"ROOT",Ye=()=>(xt()??[]).filter(y=>T.has(y.key)),at=(y,C)=>{let P=se().cloudInvoke;return P?P(y,C).catch(j=>({ok:!1,error:String(j?.message||j)})):Promise.resolve({ok:!1,error:"no_bridge"})};function je(y=500){pt||Ct||(pt=setTimeout(()=>{pt=null,Pt()},y))}async function Pt(){let y=O,C=await at("penzor:transfers");if(y!==O||Ct)return;let P=new Map(K.map(Z=>[Z.id,Z.state]));C?.ok&&Array.isArray(C.items)&&(K=C.items);let j=Date.now(),$=K.some(Qr);K.some(Z=>Z.kind==="up"&&Z.state==="done"&&P.get(Z.id)!=="done")&&(bt&&clearTimeout(bt),bt=setTimeout(()=>{bt=null,nt()},300)),$?(Tt==null&&(Tt=j),he=0,me==="hidden"&&(me="open",Le=j),me==="open"&&!Ve&&j-Le>Ae&&(me="pill")):Tt!=null&&(on(Tt),Tt=null);let ie=K.some(Z=>Z.state==="failed")||J.length>0,ze=K.some(Z=>Z.state==="paused");!$&&!ze&&K.length&&!ie&&me!=="hidden"&&(he?j-he>Un&&!Ve&&(me="hidden",he=0,qt.txClear("finished")):(he=j,me==="pill"&&(me="open"))),!$&&ie&&me==="pill"&&(me="open"),!K.length&&!J.length&&(me="hidden"),An(),a(),($||me!=="hidden"&&he)&&je()}function on(y){let C=K.filter(ie=>(ie.finishedAt??0)>=y),P=C.filter(ie=>ie.kind==="up"&&ie.state==="done"),j=C.filter(ie=>ie.kind==="down"&&ie.state==="done"),$=C.filter(ie=>ie.state==="failed");Te||($.length?c(s("penzor.toast.txFailed",{n:$.length})):P.length?c(P.length===1?s("penzor.toast.upDoneOne",{name:P[0].name}):s("penzor.toast.upDoneMany",{n:P.length})):j.length&&c(j.length===1?s("penzor.toast.downloaded",{name:j[0].name}):s("penzor.toast.downDoneMany",{n:j.length})))}function An(){let y=K.filter(Qr),C=y.reduce((j,$)=>j+Math.max($.size,$.done),0),P=y.length?C>0?Math.min(1,y.reduce((j,$)=>j+$.done,0)/C):0:null;e.app?.setSpaceProgress?.(cn,P??rr(st?.get()??null))}function En(){if(!st)return;let y=Yr(st.get());y!==yt&&(yt=y,e.app?.setSpaceDot?.(cn,y))}function un(){st?.get()?.notes.pending||(ve=!1),An(),En(),a()}let Fe=()=>{let y=st?.get()??null;if(!y||!At.size)return y;let C=(P,j)=>At.has(P)?{...j,on:At.get(P)}:j;return{...y,notes:C("notes",y.notes),agents:C("agents",y.agents),plugins:C("plugins",y.plugins)}},wt=async y=>{try{return await y()??{ok:!1}}catch(C){return{ok:!1,error:String(C?.message||C)}}},mt=()=>{me="open",Le=Date.now(),he=0};async function Mt(){ee=null;let y=Po();if(f.kind!=="app"||!y||y.dir){a();return}let C=y.key,P=await n(`/files/${encodeURIComponent(C)}/versions`);k===C&&(ee=P.ok&&Array.isArray(P.data)?P.data.map(j=>({versionNumber:j.versionNumber,fileSize:Number(j.fileSize)||0,createdAt:co(j.createdAt)})):[],a())}let Po=()=>k?(w??[]).find(y=>y.key===k)??null:null;async function pn(){await Xe(),ft(),a()}async function nt(){let y=++I;p=!0,u=null,a();let C=await se().authStatus?.().catch(()=>null);if(y!==I)return;if(C&&!C.loggedIn){g="out",m=null,p=!1,a();return}let{snap:P,signedOut:j}=await Cd(n);if(y===I){if(p=!1,j){g="out",m=null,a();return}g="in",!P.ledger&&m?.ledger&&(P.ledger=m.ledger,P.ledgerStale=!0),m=P,b.clear(),u=!P.ledger&&!P.sync&&!P.ama&&!P.apps&&!P.exports&&!P.trash?s("penzor.unreachable"):null,!lo(f)&&f.kind!=="exports"&&f.kind!=="trash"&&f.kind!=="source"&&((f.kind==="content"?P.contentDevices!=null:f.kind==="sync"?P.sync?.vaults.some(ie=>ie.vault===f.vault):f.kind==="ama"?P.ama?.some(ie=>ie.id===f.vaultId):f.appId===ln?P.apps:P.apps?.apps.some(ie=>ie.appId===f.appId&&ie.files>0))||(f={kind:"overview"},v="",x=[],Et())),await pn()}}async function Mo(y,C={},P=f){let j=P.kind==="content"?{path:`/remotesync/content/${encodeURIComponent(P.namespace)}/nodes/${encodeURIComponent(y.ref.id)}/content`,mode:"bytes"}:P.kind==="sync"?{path:`/remotesync/vaults/${encodeURIComponent(P.vault)}/file?path=${encodeURIComponent(y.key)}`,mode:"signed"}:P.kind==="ama"?y.ref.kind==="binary"?{path:`/amadeus/vaults/${encodeURIComponent(P.vaultId)}/asset?ref=${encodeURIComponent(y.key)}`,mode:"bytes"}:{path:`/amadeus/vaults/${encodeURIComponent(P.vaultId)}/file?path=${encodeURIComponent(y.key)}`,mode:"text"}:P.kind==="app"?{path:`/files/${encodeURIComponent(y.key)}/content`,mode:"bytes"}:P.kind==="source"&&y.ref?.downloadPath?{path:y.ref.downloadPath,mode:"bytes"}:P.kind==="exports"?{path:`/exports/${encodeURIComponent(y.key)}/url`,mode:"signed"}:null;if(!j)return;let $=await at("penzor:download",{...j,name:fh(y.name),size:y.size,...C});if(!$?.ok){d($?.error||"download");return}mt(),je(0),a()}let Io=()=>{lo(f)?e.closeView?.(Sn.info,{collapse:!0}):e.openView?.(Sn.info,{location:"right"})},qt={ctx:e,locale:i,t:s,b:l,subscribe(y){return r.add(y),()=>{r.delete(y)}},auth:()=>g,loading:()=>p,error:()=>u,snap:()=>m,loc:()=>f,path:()=>v,appStack:()=>x,rows:xt,rowsError:()=>z,selected:Po,sort:()=>M,query:()=>L,menu:()=>H,side:()=>V,confirmEmpty:()=>Q,versions:()=>ee,moveFolders:()=>S,thisDevice:()=>te,setDevice(y){te=y,a()},appLabel:Ht,canManageRow:kt,canEmptyTrash:D,canManage:Ke,canWrite:tt,canMulti:re,folderId:ke,selection:Ye,isSelected:y=>T.has(y),selectAll(){if(!re())return;let y=xt()??[];T=new Set(y.map(C=>C.key)),!k&&y[0]&&(k=y[0].key),H=null,a()},newFolder:()=>X,startNewFolder(){if(!tt())return;let y=s("penzor.newFolder.default"),C=new Set((w??[]).filter(j=>j.dir).map(j=>j.name)),P=y;for(let j=1;C.has(P)&&j<1e3;j++)P=`${y} (${j})`;X=P,H=null,a()},cancelNewFolder(){X!=null&&(X=null,a())},async createFolder(y){let C=y.trim();if(X=null,!C||!tt()){a();return}a();let P=await n("/files",{method:"POST",body:{type:"directory",parentId:ke(),name:C},projectSource:ln});if(!P.ok){P.status===409?c(s("penzor.toast.folderExists",{name:C})):d(P);return}P.data?.id&&(k=P.data.id,T=new Set([P.data.id]),R=P.data.id),await pn()},transfers:()=>K,notices:()=>J,async acknowledgeStorageNotice(){let y=m?.ledger?.rollout;if(!y||y.acknowledgedAt||m?.ledgerStale)return;let C=await n("/storage/notice/ack",{method:"POST",body:{revision:y.revision}});if(!C.ok){d(C);return}await nt()},txRows(){if(!tt())return[];let y=ke();return K.filter(C=>C.kind==="up"&&C.projectSource===ln&&C.parentId===y&&(Qr(C)||C.state==="paused")).map(C=>({key:`tx:${C.id}`,id:C.id,name:C.name,size:C.size,done:C.done,state:C.state}))},card:()=>me,setCard(y){me=y,Le=Date.now(),y!=="hidden"&&je(0),a()},holdCard(y){Ve=y,Le=Date.now(),y||je()},async upload(y,C){if(!tt())return;let P=O,j=C?.id??ke(),$=C?[...x,C]:[...x],ie=await y;if(P!==O||Ct||!ie.length)return;nn.set(j,$);let ze=await at("penzor:upload",{...typeof ie[0]=="string"?{paths:ie}:{files:ie},parentId:j,projectSource:ln});if(!(P!==O||Ct)){if(ze?.ok){mt(),je(0),a();return}if(ze?.error==="quota"){J=[...J,{id:String(Date.now()),kind:"quota",short:Number(ze.short)||0}],mt(),a();return}if(ze?.error==="too_many"){c(s("penzor.err.too_many",{n:Number(ze.max)||2e3}));return}ze?.error!=="no_files"&&d(ze?.error==="account_changed"?s("penzor.err.account_changed"):ze?.error==="not_signed_in"?s("penzor.err.not_signed_in"):ze?.error||"upload")}},async txOp(y,C){await at("penzor:transfer",{id:y,op:C}),Le=Date.now(),await Pt()},async txAll(y){let C=y==="pause"?P=>Qr(P):y==="resume"?P=>P.state==="paused":P=>P.state==="failed"||P.state==="canceled";for(let P of K.filter(C))await at("penzor:transfer",{id:P.id,op:y});y==="retry"&&(J=[]),Le=Date.now(),await Pt()},async txClear(y){await at("penzor:transfers:clear",{which:y}),y==="all"&&(J=[]),await Pt()},dismissNotice(y){J=J.filter(C=>C.id!==y),!K.length&&!J.length&&(me="hidden"),a()},locate(y){if(y.kind==="down"){y.localPath&&se().revealHostPath?.(y.localPath);return}let C=nn.get(y.targetId??"")??[];f={kind:"app",appId:ln},x=C,v="",L="",V={kind:"view"},H=null,Et(),y.fileId&&y.parentId===y.targetId&&(k=y.fileId,T=new Set([y.fileId])),a(),e.app?.openSpace?.(cn).then(()=>{e.openView?.(Sn.main),Io()}),pn()},async downloadMany(y){let C=y.filter(Z=>!Z.dir);if(C.length<=1){C[0]&&await qt.download(C[0]);return}let P=new Date,j=s("penzor.download.folder",{date:`${P.getFullYear()}-${String(P.getMonth()+1).padStart(2,"0")}-${String(P.getDate()).padStart(2,"0")}`}),$=`${Date.now()}`,ie=f,ze=O;for(let Z of C){if(O!==ze)break;await Mo(Z,{subdir:j,batch:$},ie)}},async trashMany(y){if(f.kind!=="app"||!Ke()||!y.length)return;if(y.length===1){await qt.trash(y[0]);return}let C=await n("/files/batch/delete",{method:"POST",body:{ids:y.map(j=>j.key)},projectSource:f.appId});if(!C.ok){d(C);return}let P=(C.data?.results??[]).filter(j=>j.success===!1).length;c(P?s("penzor.toast.batchPartial",{n:P}):s("penzor.toast.trashedN",{n:y.length})),Et(),await nt()},async moveMany(y,C){if(f.kind!=="app"||!Ke()||!y.length)return;V={kind:"view"};let P=y.map(ie=>ie.key).filter(ie=>ie!==C.id),j=await n("/files/batch/move",{method:"POST",body:{ids:P,parentId:C.id},projectSource:f.appId});if(!j.ok){d(j),a();return}let $=(j.data?.results??[]).filter(ie=>ie.success===!1).length;c($?s("penzor.toast.batchPartial",{n:$}):s("penzor.toast.movedN",{n:P.length,name:C.name})),Et(),await nt()},setVisible(y){Te=y},picker:{},refresh:nt,go(y){let C=Td(y);if(!C)return;let P=so(C)===so(f);f=C,P||(v="",x=[],Et(),L="",V={kind:"view"},Q=!1),H=null,a(),e.openView?.(Sn.main),Io(),pn()},openDir(y){if(!(!y.dir||f.kind==="exports"||f.kind==="trash")){if(f.kind==="source"&&y.ref?.go){qt.go(y.ref.go);return}f.kind==="app"?x=[...x,{id:y.key,name:y.name}]:v=y.key,Et(),L="",V={kind:"view"},pn()}},up(y){if(f.kind==="app")x=x.slice(0,y??Math.max(0,x.length-1));else{let C=v?v.split("/"):[];v=C.slice(0,y??Math.max(0,C.length-1)).join("/")}Et(),V={kind:"view"},pn()},select(y,C){let P=xt()??[];if(y&&C?.range&&re()&&R&&P.some(j=>j.key===R)){let j=P.findIndex(ie=>ie.key===R),$=P.findIndex(ie=>ie.key===y.key);T=new Set(P.slice(Math.min(j,$),Math.max(j,$)+1).map(ie=>ie.key)),k=y.key}else y&&C?.toggle&&re()?(T.has(y.key)&&T.size>1?(T.delete(y.key),k===y.key&&(k=[...T].pop()??null)):(T.add(y.key),k=y.key),R=y.key):(k=y?.key??null,T=new Set(k?[k]:[]),R=k);X=null,V={kind:"view"},H=null,y&&!lo(f)&&e.openView?.(Sn.info,{location:"right"}),Mt(),a()},setSort(y){M=y,a()},setQuery(y){L=y,a()},openMenu(y,C,P){P&&!T.has(P.key)&&(k=P.key,T=new Set([P.key]),R=P.key,Mt()),H={x:y,y:C,row:P},V={kind:"view"},a()},closeMenu(){H&&(H=null,a())},setSide(y){V=y,H=null,y.kind==="move"&&(S=null,qt.moveBrowse(y.at)),e.openView?.(Sn.info,{location:"right"}),a()},setConfirmEmpty(y){Q=y,a()},async download(y){y.dir||(H=null,await Mo(y))},async trash(y){if(f.kind!=="app"||!Ke())return;let C=xt()??[],P=C.findIndex(ie=>ie.key===y.key),j=await n(`/files/${encodeURIComponent(y.key)}`,{method:"DELETE",projectSource:f.appId});if(!j.ok){d(j);return}c(s("penzor.toast.trashed",{name:y.name}));let $=C[P+1]??C[P-1];k=$&&$.key!==y.key?$.key:null,H=null,await nt()},async restore(y){if(!m||f.kind!=="trash"||!kt(y))return;let C=await n(`/trash/${encodeURIComponent(y.key)}/restore`,{method:"POST",body:{}});if(!C.ok){d(C);return}c(s("penzor.toast.restored",{name:y.name})),k=null,await nt()},async purge(y){if(!m||f.kind!=="trash"||!kt(y))return;let C=await n(`/trash/${encodeURIComponent(y.key)}`,{method:"DELETE"});if(V={kind:"view"},!C.ok){d(C),a();return}c(s("penzor.toast.purged",{name:y.name})),k=null,await nt()},async emptyTrash(){if(!m||!D())return;let y=await n("/trash?all=1",{method:"DELETE"});if(Q=!1,!y.ok){d(y),a();return}let C=(y.data?.results??[]).filter(P=>P.success===!1).length;c(C?s("penzor.toast.emptyPartial",{n:C}):s("penzor.toast.emptied")),k=null,await nt()},async rename(y,C){let P=C.trim();if(V={kind:"view"},!P||P===y.name){a();return}let j=f.kind==="exports"?await n(`/exports/${encodeURIComponent(y.key)}/rename`,{method:"PUT",body:{newFileName:P}}):f.kind==="app"&&Ke()?await n(`/files/${encodeURIComponent(y.key)}/rename`,{method:"PATCH",body:{name:P},projectSource:f.appId}):null;if(j){if(!j.ok){d(j),a();return}c(s("penzor.toast.renamed",{name:P})),await nt()}},moveBrowse(y){if(f.kind!=="app"||!Ke())return;V={kind:"move",at:y},S=null,a();let C=y[y.length-1]?.id,P=f.appId;n(`/files${C?`?parentId=${encodeURIComponent(C)}`:""}`,{projectSource:P}).then(j=>{V.kind!=="move"||V.at!==y||(S=j.ok?j.data.filter($=>$.fileType==="directory").map($=>({id:$.id,name:$.name})):[],a())})},async moveTo(y,C){if(f.kind!=="app"||!Ke())return;if(V={kind:"view"},C.id===y.key){a();return}let P=await n(`/files/${encodeURIComponent(y.key)}/move`,{method:"PATCH",body:{parentId:C.id},projectSource:f.appId});if(!P.ok){d(P),a();return}c(s("penzor.toast.moved",{name:C.name})),k=null,await nt()},async restoreVersion(y,C){if(!Ke())return;let P=await n(`/files/${encodeURIComponent(y.key)}/restore/${C.versionNumber}`,{method:"POST",body:{}});if(!P.ok){d(P);return}c(s("penzor.toast.versionRestored",{n:C.versionNumber})),await nt(),Mt()},async deleteExport(y){if(!m)return;let C=await n(`/exports/${encodeURIComponent(y.key)}`,{method:"DELETE"});if(V={kind:"view"},!C.ok){d(C),a();return}c(s("penzor.toast.purged",{name:y.name})),k=null,await nt()},signIn(){se().forsionLogin?.()},openSync(){e.app?.openSettings?.("sync/s-remote")},async focusVault(y){await e.app?.openSpace?.(cn),m||await nt(),qt.go(`sync:${y}`)},hasSync:()=>!!st,content:()=>Hn,syncState:Fe,syncBusy:y=>vt.has(y),async setSync(y,C){if(!st||vt.has(y))return;vt.add(y),At.set(y,C),a();let P=await wt(()=>st.set(y,C));vt.delete(y),At.delete(y),!Ct&&(P.ok||d(P.error||"sync"),un())},async resolveNotes(y){if(!st||vt.has("resolve"))return;vt.add("resolve"),a();let C=await wt(()=>st.resolveNotes(y));vt.delete("resolve"),ve=!1,!Ct&&(C.ok||d(C.error||"sync"),un())},confirmCloud:()=>ve,setConfirmCloud(y){ve=y,a()},enter(){},dispose(){Ct=!0,clearInterval(qn),pt&&clearTimeout(pt),bt&&clearTimeout(bt),e.app?.setSpaceProgress?.(cn,null),yt&&e.app?.setSpaceDot?.(cn,!1),r.clear(),Ro?.(),sr?.(),oa?.()}},Hn=null,It="",fn=async()=>{let y=se().cloudInvoke;if(!y){clearInterval(qn);return}let C=await y($t.get).catch($=>({ok:!1,error:String($)}));if(Ct)return;!C?.ok&&/unavailable|not a Forsion Extend channel/i.test(C?.error??"")&&clearInterval(qn);let P=C?.ok&&C.value?.available?C.value:null,j=P?JSON.stringify([wn(P),P.config.enabled,P.deviceId,P.devices]):"";Hn=P,j!==It&&(It=j,a())},qn=setInterval(()=>void fn(),5e3);fn();let Ro=e.subscribeLocale?.(()=>a()),oa=st?.subscribe(un);En(),Pt();let sr=se().onAuthChanged?.(()=>{++E,++I,++O,m=null,w=null,z=null,b.clear(),Et(),H=null,V={kind:"view"},Q=!1,ee=null,S=null,f={kind:"overview"},v="",x=[],L="",nn.clear(),J=[],K=[],me="hidden",Tt=null,he=0,bt&&(clearTimeout(bt),bt=null),e.app?.setSpaceProgress?.(cn,null),ve=!1,At.clear(),a(),nt()});return qt}var Bd=e=>e.kind==="content"?"penzor.source.readonly":e.kind==="sync"?"penzor.side.readonlySync":e.kind==="ama"?"penzor.side.readonlyAma":e.kind==="source"?e.source==="plugins"?"penzor.source.pluginNote":"penzor.source.readonly":null;function gh(e,t){for(var n in t)e[n]=t[n];return e}function Fd(e,t){for(var n in e)if(n!=="__source"&&!(n in t))return!0;for(var r in t)if(r!=="__source"&&e[r]!==t[r])return!0;return!1}function $d(e,t){this.props=e,this.context=t}($d.prototype=new Jt).isPureReactComponent=!0,$d.prototype.shouldComponentUpdate=function(e,t){return Fd(this.props,e)||Fd(this.state,t)};var Ud=fe.__b;fe.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),Ud&&Ud(e)};var yk=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;var hh=fe.__e;fe.__e=function(e,t,n,r){if(e.then){for(var a,i=t;i=i.__;)if((a=i.__c)&&a.__c)return t.__e==null&&(t.__e=n.__e,t.__k=n.__k||[]),a.__c(e,t)}hh(e,t,n,r)};var Hd=fe.unmount;function Xd(e,t,n){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(r){typeof r.__c=="function"&&r.__c()}),e.__c.__H=null),(e=gh({},e)).__c!=null&&(e.__c.__P===n&&(e.__c.__P=t),e.__c.__e=!0,e.__c=null),e.__k=e.__k&&e.__k.map(function(r){return Xd(r,t,n)})),e}function Kd(e,t,n){return e&&n&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(r){return Kd(r,t,n)}),e.__c&&e.__c.__P===t&&(e.__e&&n.appendChild(e.__e),e.__c.__e=!0,e.__c.__P=n)),e}function Ni(){this.__u=0,this.o=null,this.__b=null}function Jd(e){var t=e.__&&e.__.__c;return t&&t.__a&&t.__a(e)}function ea(){this.i=null,this.l=null}fe.unmount=function(e){var t=e.__c;t&&(t.__z=!0),t&&t.__R&&t.__R(),t&&32&e.__u&&(e.type=null),Hd&&Hd(e)},(Ni.prototype=new Jt).__c=function(e,t){var n=t.__c,r=this;r.o==null&&(r.o=[]),r.o.push(n);var a=Jd(r.__v),i=!1,s=function(){i||r.__z||(i=!0,n.__R=null,a?a(c):c())};n.__R=s;var l=n.__P;n.__P=null;var c=function(){if(!--r.__u){if(r.state.__a){var d=r.state.__a;r.__v.__k[0]=Kd(d,d.__c.__P,d.__c.__O)}var g;for(r.setState({__a:r.__b=null});g=r.o.pop();)g.__P=l,g.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),e.then(s,s)},Ni.prototype.componentWillUnmount=function(){this.o=[]},Ni.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),r=this.__v.__k[0].__c;this.__v.__k[0]=Xd(this.__b,n,r.__O=r.__P)}this.__b=null}var a=t.__a&&Yn(N,null,e.fallback);return a&&(a.__u&=-33),[Yn(N,null,t.__a?null:e.children),a]};var qd=function(e,t,n){if(++n[1]===n[0]&&e.l.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.l.size))for(n=e.i;n;){for(;n.length>3;)n.pop()();if(n[1]<n[0])break;e.i=n=n[2]}};function bh(e){return this.getChildContext=function(){return e.context},e.children}function vh(e){var t=this,n=e.h;if(t.componentWillUnmount=function(){Qe(null,t.v),t.v=null,t.h=null},t.h&&t.h!==n&&t.componentWillUnmount(),!t.v){for(var r=t.__v;r!==null&&!r.__m&&r.__!==null;)r=r.__;t.h=n,t.v={nodeType:1,parentNode:n,childNodes:[],__k:{__m:r.__m},contains:function(){return!0},namespaceURI:n.namespaceURI,insertBefore:function(a,i){this.childNodes.push(a),t.h.insertBefore(a,i)},removeChild:function(a){this.childNodes.splice(this.childNodes.indexOf(a)>>>1,1),t.h.removeChild(a)}}}Qe(Yn(bh,{context:t.context},e.__v),t.v)}function Yd(e,t){var n=Yn(vh,{__v:e,h:t});return n.containerInfo=t,n}(ea.prototype=new Jt).__a=function(e){var t=this,n=Jd(t.__v),r=t.l.get(e);return r[0]++,function(a){var i=function(){t.props.revealOrder?(r.push(a),qd(t,e,r)):a()};n?n(i):i()}},ea.prototype.render=function(e){this.i=null,this.l=new Map;var t=Wo(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var n=t.length;n--;)this.l.set(t[n],this.i=[1,0,this.i]);return e.children},ea.prototype.componentDidUpdate=ea.prototype.componentDidMount=function(){var e=this;this.l.forEach(function(t,n){qd(e,n,t)})};var yh=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,xh=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,kh=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,wh=/[A-Z0-9]/g,zh=typeof document<"u",Sh=function(e){return(typeof Symbol<"u"&&typeof Symbol()=="symbol"?/fil|che|rad/:/fil|che|ra/).test(e)};Jt.prototype.isReactComponent=!0,["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(Jt.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var Vd=fe.event;fe.event=function(e){return Vd&&(e=Vd(e)),e.persist=function(){},e.isPropagationStopped=function(){return this.cancelBubble},e.isDefaultPrevented=function(){return this.defaultPrevented},e.nativeEvent=e};var Zd,_h={configurable:!0,get:function(){return this.class}},jd=fe.vnode;fe.vnode=function(e){typeof e.type=="string"&&(function(t){var n=t.props,r=t.type,a={},i=r.indexOf("-")==-1;for(var s in n){var l=n[s];if(!(s==="value"&&"defaultValue"in n&&l==null||zh&&s==="children"&&r==="noscript"||s==="class"||s==="className")){var c=s.toLowerCase();s==="defaultValue"&&"value"in n&&n.value==null?s="value":s==="download"&&l===!0?l="":c==="translate"&&l==="no"?l=!1:c[0]==="o"&&c[1]==="n"?c==="ondoubleclick"?s="ondblclick":c!=="onchange"||r!=="input"&&r!=="textarea"||Sh(n.type)?c==="onfocus"?s="onfocusin":c==="onblur"?s="onfocusout":kh.test(s)&&(s=c):c=s="oninput":i&&xh.test(s)?s=s.replace(wh,"-$&").toLowerCase():l===null&&(l=void 0),c==="oninput"&&a[s=c]&&(s="oninputCapture"),a[s]=l}}r=="select"&&(a.multiple&&Array.isArray(a.value)&&(a.value=Wo(n.children).forEach(function(d){d.props.selected=a.value.indexOf(d.props.value)!=-1})),a.defaultValue!=null&&(a.value=Wo(n.children).forEach(function(d){d.props.selected=a.multiple?a.defaultValue.indexOf(d.props.value)!=-1:a.defaultValue==d.props.value}))),n.class&&!n.className?(a.class=n.class,Object.defineProperty(a,"className",_h)):n.className&&(a.class=a.className=n.className),t.props=a})(e),e.$$typeof=yh,jd&&jd(e)};var Wd=fe.__r;fe.__r=function(e){Wd&&Wd(e),Zd=e.__c};var Gd=fe.diffed;fe.diffed=function(e){Gd&&Gd(e);var t=e.props,n=e.__e;n!=null&&e.type==="textarea"&&"value"in t&&t.value!==n.value&&(n.value=t.value==null?"":t.value),Zd=null};var Qd=`
|
|
1179
|
+
${Sd(e,t)}`,d=await s({prompt:c,send:!1});d?.ok?r(""):i(d?.error||e.t("guide.ask.unavailable"))};return o("div",{class:"fxg-pane",children:[o("p",{class:"fxg-muted",children:e.t("guide.ask.hint",{chapter:e.title(t)})}),o("textarea",{class:"fxg-input",rows:4,value:n,placeholder:e.t("guide.ask.placeholder"),onInput:c=>r(c.target.value)}),o("button",{type:"button",class:"btn sm",disabled:!s,onClick:()=>void l(),children:e.t("guide.ask.send")}),(!s||a)&&o("p",{class:"fxg-muted",children:a||e.t("guide.ask.unavailable")})]})}function _d({g:e}){Xr(e);let[t,n]=A("progress");return o(Jr,{g:e,kind:"side",children:[o("div",{class:"fxg-tabs",role:"tablist",children:["progress","ask"].map(r=>o("button",{type:"button",role:"tab","aria-selected":t===r,class:t===r?"is-on":"",onClick:()=>n(r),children:e.t(r==="progress"?"guide.progress":"guide.askTangu")},r))}),t==="progress"?o(fh,{g:e}):o(mh,{g:e})]})}function Cd({g:e}){Xr(e);let t=e.companionChapter(),n=_o(t,e.env())==="done",r=ce(n);return oe(()=>{if(n&&!r.current){let a=window.setTimeout(()=>e.ctx.closeView?.(tn.companion),1500);return()=>window.clearTimeout(a)}r.current=n},[n]),o(Jr,{g:e,kind:"companion",children:o("div",{class:"fxg-pane",children:[o("div",{class:"fxg-companion-head",children:[o("span",{class:"fxg-sub",children:e.t("guide.title")}),e.ctx.closeView&&o("button",{type:"button",class:"fxg-icon-btn","aria-label":e.t("guide.companion.close"),onClick:()=>e.ctx.closeView?.(tn.companion),children:"\xD7"})]}),o("div",{class:"fxg-h",children:e.title(t)}),o("div",{class:"fxg-sub",children:e.t("guide.tasks")}),o(Pi,{g:e,chapter:t}),o("button",{type:"button",class:"fx-link fxg-back",onClick:()=>void e.openGuide(t.id),children:e.t("guide.companion.back")})]})})}function Td({g:e,letter:t}){Xr(e);let n=t?t.kind==="level"?t.level:"new":null,r=n&&(n==="new"||Gr(n,e.env()))?en(n):[];return o(Jr,{g:e,kind:"letter",children:[r.map(a=>o("div",{class:"fxg-letter-chapter",children:[o("button",{type:"button",class:"fxg-letter-title",onClick:()=>void e.openGuide(a.id),children:e.title(a)}),o(Pi,{g:e,chapter:a})]},a.id)),o("button",{type:"button",class:"btn sm",onClick:()=>void e.openGuide(r[0]?.id??Fn("welcome")?.id),children:e.t("guide.letter.open")})]})}function bh(e){return!!e&&typeof e.registerView=="function"&&typeof e.registerListSource=="function"&&typeof e.openView=="function"&&typeof e.achievements?.count=="function"&&typeof e.achievements.subscribe=="function"&&typeof e.app?.openSpace=="function"&&typeof e.ui?.mountMarkdownEditor=="function"}function Ad(e,t=window){if(!bh(e)||t.tangu?.unitPage)return null;let n=t.tangu,r=hd(e,{desktop:typeof n?.appVersion=="function"&&!n.mobile,appVersion:typeof n?.appVersion=="function"?n.appVersion().catch(()=>null):Promise.resolve(null)}),a=i=>s=>(He(o(i,{g:r}),s),()=>{He(null,s)});return e.registerView({id:tn.reader,title:r.t("guide.title"),icon:"page",workspaceSource:Ei,mount:a(zd)}),e.registerView({id:tn.side,title:r.t("guide.progress"),icon:"list-view",mount:a(_d)}),e.registerView({id:tn.companion,title:r.t("guide.title"),icon:"todo",mount:a(Cd)}),e.registerListSource({id:Ei,title:r.t("guide.title"),search:!0,items:i=>{let s=r.env(),l=i?.query?.trim().toLowerCase()??"",c=r.justUnlocked();return Kr(r).flatMap(({level:d,chapters:g})=>g.map(u=>{let p=_o(u,s);return{key:u.id,title:r.title(u),group:r.levelName(d),icon:p==="done"?"circle-check":p==="locked"?"lock":"circle",hint:d===c&&p!=="locked"?r.t("guide.justUnlocked"):void 0}})).filter(d=>!l||d.title.toLowerCase().includes(l))},subscribe:i=>r.subscribe(i),activeKey:()=>r.selected().id,open:i=>{r.select(i.key),e.openView(tn.reader)}}),e.registerCommand?.({id:"open-guide",title:()=>r.t("guide.cmd.open"),keywords:"guide manual help tutorial levels \u4F7F\u7528\u6307\u5357 \u8BF4\u660E\u4E66 \u6559\u7A0B \u5E2E\u52A9 \u7B49\u7EA7 \u4EFB\u52A1",run:()=>{r.openGuide()}}),e.inbox?.registerCard({sender:()=>r.t("guide.title"),mount(i,s){return He(o(Td,{g:r,letter:r.letter(s.id)}),i),()=>{He(null,i)}}}),r}var vh=["uploads","ama","sync","agents","profile","apps","plugins","exports"],ir={uploads:"penzor.uploads",ama:"penzor.ledger.ama",sync:"penzor.ledger.sync",agents:"penzor.source.agents",profile:"penzor.source.profile",apps:"penzor.ledger.apps",plugins:"penzor.source.plugins",exports:"penzor.ledger.exports"},Ed=e=>e==="uploads"?"app:penzor":e==="exports"?"exports":`source:${e}`,$n=e=>Number.isFinite(Number(e))?Number(e):0,ln="penzor";var Md=500;async function yh(e,t){let n=Math.min(20,$n(t.totalPages));if(n<=1)return t.files;let r=await Promise.all(Array.from({length:n-1},(a,i)=>e(`/exports/list?pageSize=${Md}&sortBy=date&sortOrder=desc&page=${i+2}`)));return[...t.files,...r.flatMap(a=>a.ok&&Array.isArray(a.data?.files)?a.data.files:[])]}async function Id(e){let[t,n,r,a,i,s,l,c,d]=await Promise.all([e("/remotesync/vaults"),e("/amadeus/vaults"),e("/storage/quota"),e("/storage/files-by-app"),e(`/exports/list?pageSize=${Md}&sortBy=date&sortOrder=desc`),e("/trash?all=1"),e("/storage/ledger"),e("/storage/source-trash/ama"),e("/remotesync/content/devices")]),u=[t,n,r,a,i,s].every(m=>!m.ok&&m.status===401);return{snap:{contentDevices:d.ok&&Array.isArray(d.data?.devices)?d.data.devices:null,amaTrash:c.ok&&Array.isArray(c.data?.entries)?c.data.entries:null,ledger:l.ok&&l.data?.schemaVersion===1?l.data:null,sync:t.ok&&Array.isArray(t.data?.vaults)?{...t.data,vaults:t.data.vaults.filter(m=>m.vault!=="forsion-content")}:null,ama:n.ok&&Array.isArray(n.data?.vaults)?n.data.vaults.filter(m=>(m.role??"owner")==="owner").map(m=>({id:m.id,name:m.name,sizeBytes:$n(m.sizeBytes)})):null,apps:r.ok&&a.ok&&Array.isArray(a.data?.apps)?{used:$n(r.data?.used),quota:$n(r.data?.quota),apps:a.data.apps,largest:a.data.largest??[]}:null,exports:i.ok&&Array.isArray(i.data?.files)?{files:await yh(e,i.data),total:$n(i.data.total),totalBytes:$n(i.data.totalBytes)}:null,trash:s.ok&&Array.isArray(s.data)?s.data:null,at:Date.now()},signedOut:u}}var xh={"ai-studio":"AI Studio","photo-studio":"Photo Studio",notebase:"Notebase",chat:"Forsion Chat",connect:"Forsion Connect","video-studio":"Video Studio",bluebird:"Bluebird",cnti:"CNTI"},Mi=e=>e?xh[e]??e.split(/[-_]/).filter(Boolean).map(t=>t[0].toUpperCase()+t.slice(1)).join(" "):"\u2014",lo=e=>e.kind==="content"?`content:${e.namespace}`:e.kind==="source"?`source:${e.source}`:e.kind==="sync"?`sync:${e.vault}`:e.kind==="ama"?`ama:${e.vaultId}`:e.kind==="app"?`app:${e.appId}`:e.kind==="overview"?"ov":e.kind,co=e=>e.kind==="overview"||e.kind==="sync-home";function Rd(e){if(e==="ov")return{kind:"overview"};if(e==="sync-home"||e==="exports"||e==="trash")return{kind:e};let t=e.indexOf(":"),n=t<0?e:e.slice(0,t),r=t<0?"":e.slice(t+1);return r?n==="source"&&vh.includes(r)?{kind:"source",source:r}:n==="content"&&/^(default|device-[A-Za-z0-9_-]{1,64})$/.test(r)?{kind:"content",namespace:r}:n==="sync"?{kind:"sync",vault:r}:n==="ama"?{kind:"ama",vaultId:r}:n==="app"?{kind:"app",appId:r}:null:null}var Ii=(e,t)=>t?t.config.enabled||t.config.revision>0:!!e?.contentDevices?.length;function Ld(e,t,n,r=null){let a=m=>xe(n,ir[m]),i=m=>ar(m,n),s=m=>{let f=e?.ledger?.sources.find(v=>v.id===m);return f?.status==="ready"?f.liveBytes+f.trashBytes:null},l=m=>{let f=s(m);return f==null?"\u2014":`${e?.ledgerStale?"~ ":""}${i(f)}`},c=Ii(e,r),d=[{key:"drive-root",title:t.drive,kind:"folder",icon:t.driveIcon},{key:"ov",title:t.overview,parent:"drive-root",icon:"layout"},{key:Ed("uploads"),title:t.files,parent:"drive-root",icon:"folder",hint:l("uploads")}];if(c&&e?.contentDevices){d.push({key:"synced",title:t.synced,kind:"folder",icon:"cloud"},{key:"content:default",title:t.all,parent:"synced",icon:"cloud"});let m=r?.deviceId;m&&d.push({key:`content:device-${m}`,title:t.thisBackup,parent:"synced",icon:"lock"});for(let f of e.contentDevices.filter(v=>v.id!==m))d.push({key:`content:device-${f.id}`,title:f.name||`Forsion-${f.id.slice(0,8)}`,parent:"synced",icon:"link"})}let g=["ama","apps","plugins","exports",...c?[]:["agents","profile"]],u=g.reduce((m,f)=>m==null||s(f)==null?null:m+s(f),0);d.push({key:"by-app",title:t.byApp,kind:"folder",icon:"package",hint:u==null?"\u2014":i(u)});let p=(m,f,v=a(m))=>{let w=m==="ama"||m==="sync"||m==="apps",k=Ed(m);if(d.push({key:w?k+":group":k,parent:f,title:v,icon:m==="sync"?"clock":"folder",...w?{kind:"folder"}:{},hint:l(m)}),w&&d.push({key:`source:${m}`,parent:k+":group",title:t.overview,icon:"layout"}),m==="sync")for(let z of e?.sync?.vaults??[])d.push({key:`sync:${z.vault}`,parent:k+":group",title:z.vault,icon:"database",hint:i(z.bytes)});if(m==="ama")for(let z of e?.ama??[])d.push({key:`ama:${z.id}`,parent:k+":group",title:z.name,icon:"page",hint:i(z.sizeBytes)});if(m==="apps")for(let z of e?.apps?.apps.filter(x=>x.appId!==ln&&x.files>0)??[])d.push({key:`app:${z.appId}`,parent:k+":group",title:Mi(z.appId),icon:"archive",hint:i(z.bytes)})};for(let m of g)p(m,"by-app");return p("sync","",c?t.legacy:a("sync")),d.push({key:"trash",title:t.trash,icon:"trash",hint:e?.trash?t.items(Ri(e.trash).length):"\u2014"}),d.map(m=>m.parent===""?(({parent:f,...v})=>v)(m):m)}function Ri(e){let t=new Map(e.map(a=>[a.id,a])),n=a=>{let i=a;for(let s=0;s<64&&i.parentId&&t.has(i.parentId);s++)i=t.get(i.parentId);return i},r=new Map;for(let a of e){let i=n(a),s=r.get(i.id)??{inner:0,innerBytes:0};i.id!==a.id&&s.inner++,s.innerBytes+=$n(a.fileSize),r.set(i.id,s)}return e.filter(a=>!(a.parentId&&t.has(a.parentId))).map(a=>({...a,...r.get(a.id)}))}function Li(e,t){let n=t?`${t}/`:"",r=new Map,a=[];for(let i of e){if(n&&!i.path.startsWith(n))continue;let s=i.path.slice(n.length),l=s.indexOf("/");if(l<0){a.push({key:i.path,name:s,dir:!1,size:i.size,mtime:i.mtime,col4:i.who??null,ref:i.ref});continue}let c=s.slice(0,l),d=n+c,g=r.get(d)??{key:d,name:c,dir:!0,size:0,mtime:null,count:0};g.size+=i.size,g.count=(g.count??0)+1,i.mtime!=null&&(g.mtime==null||i.mtime>g.mtime)&&(g.mtime=i.mtime),r.set(d,g)}return[...Zr([...r.values()]),...Zr(a)]}var Zr=e=>e.sort((t,n)=>(n.mtime??-1)-(t.mtime??-1)||t.name.localeCompare(n.name)),Dd=e=>[...Zr(e.filter(t=>t.dir)),...Zr(e.filter(t=>!t.dir))];function ar(e,t){let n=Math.max(0,$n(e));if(n<1024)return`${n} B`;if(n<1024*1024)return`${Math.round(n/1024)} KB`;if(n<1024**3){let r=n/1048576;return`${r<100?Number(r.toFixed(1)):Math.round(r)} MB`}return`${Number((n/1024**3).toFixed(2))} GB`}function Di(e,t,n){let r=ar(e,n),a=ar(t,n),i=a.slice(a.indexOf(" "));return`${r.endsWith(i)?r.slice(0,-i.length):r} / ${a}`}var kh=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Pd=e=>String(e).padStart(2,"0");function nn(e,t,n=Date.now()){if(e==null||!Number.isFinite(e))return"\u2014";let r=new Date(e),a=new Date(n);a.setHours(0,0,0,0);let i=new Date(r);i.setHours(0,0,0,0);let s=Math.round((a.getTime()-i.getTime())/864e5),l=`${Pd(r.getHours())}:${Pd(r.getMinutes())}`;if(s===0)return t==="zh"?`\u4ECA\u5929 ${l}`:`Today ${l}`;if(s===1)return t==="zh"?`\u6628\u5929 ${l}`:`Yesterday ${l}`;let c=r.getFullYear()===a.getFullYear();return t==="zh"?`${c?"":`${r.getFullYear()} \u5E74 `}${r.getMonth()+1} \u6708 ${r.getDate()} \u65E5`:`${kh[r.getMonth()]} ${r.getDate()}${c?"":`, ${r.getFullYear()}`}`}function uo(e){if(e==null||e==="")return null;if(typeof e=="number")return e<1e12?e*1e3:e;let t=Number(e);if(Number.isFinite(t))return t<1e12?t*1e3:t;let n=Date.parse(String(e));return Number.isNaN(n)?null:n}var Nd=e=>[e.notes.on&&!e.notes.pending,e.agents.on,e.plugins.on].filter(Boolean).length;function Ni(e){let t=e.notes.last;return!!t&&t.ok===!1&&!(t.errors.length>0&&t.errors.every(n=>n.includes("already-running")))}var Qr=e=>!!e&&e.signedIn&&(!!e.notes.pending||e.notes.on&&Ni(e)),wh=e=>/"code"\s*:\s*"QUOTA"/.test(e),Od=(e,t)=>e.notes.on&&!e.notes.pending&&e.notes.backend==="penzor"&&(t>0&&(e.notes.localBytes??0)>t||!!e.notes.last?.errors.some(wh));function sr(e){if(!e?.notes.running)return null;let t=e.notes.progress;return t&&t.total>0?Math.min(1,Math.max(0,t.done/t.total)):0}function Bd(e,t){if(!e||!e.signedIn)return;let n=sr(e);if(n!=null)return n>0?xe(t,"penzor.sync.running",{pct:Math.round(n*100)}):xe(t,"penzor.sync.runningPlain");if(e.notes.pending)return xe(t,"penzor.sync.waiting");let r=Nd(e);return r?xe(t,"penzor.sync.onN",{n:r}):xe(t,"penzor.sync.allOff")}var Oi=e=>e.jobs.filter(t=>t.state==="failed"&&!e.jobs.some(n=>n.path===t.path&&n.at>t.at&&n.state==="done"));function wn(e){if(!e.config.enabled)return{kind:"off"};if(e.paused)return{kind:"paused"};let t=e.jobs.filter(a=>a.state==="queued"||a.state==="active");if(t.length){let a=t.reduce((s,l)=>s+(l.size??0),0),i=t.reduce((s,l)=>s+l.done,0);return{kind:"run",pct:a>0?Math.min(99,Math.round(i/a*100)):0}}if(e.phase==="scanning"||e.phase==="syncing")return{kind:"scan"};let n=Oi(e).length+(e.error?1:0);if(n)return{kind:"warn",n};let r=e.jobs.filter(a=>a.state==="done").map(a=>a.finishedAt??a.at);return{kind:"ok",at:r.length?Math.max(...r):null}}function Fd(e,t){return e.kind==="off"?xe(t,"penzor.cs.statusOff"):e.kind==="paused"?xe(t,"penzor.cs.statusPaused"):e.kind==="run"?`${e.pct}%`:e.kind==="scan"?xe(t,"penzor.sync.runningPlain"):e.kind==="warn"?xe(t,"penzor.cs.statusWarn",{n:e.n}):xe(t,"penzor.cs.statusOk")}function $d(e,t){let n=Nd(e);return e.notes.pending?xe(t,"penzor.sync.badgeWaiting",{n}):n?xe(t,"penzor.sync.onN",{n}):xe(t,"penzor.sync.allOff")}function Bi(e,t){let n=Math.max(0,Math.round(e.intervalMin)),r=n?n%60===0?xe(t,"penzor.sync.everyHours",{n:n/60}):xe(t,"penzor.sync.every",{n}):xe(t,"penzor.sync.manual");return e.syncOnStart?`${r} \xB7 ${xe(t,"penzor.sync.onStart")}`:r}function zn(e,t,n=Date.now()){if(e==null||!Number.isFinite(e))return"\u2014";let r=Math.max(0,n-e);return r<6e4?xe(t,"penzor.justNow"):r<36e5?xe(t,"penzor.sync.minAgo",{n:Math.floor(r/6e4)}):r<6*36e5?xe(t,"penzor.sync.hoursAgo",{n:Math.floor(r/36e5)}):nn(e,t,n)}function ea(e,t=!1){return t?"folder":/\.(png|jpe?g|gif|webp|heic|dng|svg|bmp|tiff?)$/i.test(e)?"image":/\.(md|txt|pdf|docx?|rtf)$/i.test(e)?"page":/\.db$/i.test(e)?"database":"attachment"}function Ud(e,t){let n=null;for(let r of t)(!r.source||e===r.source||e.startsWith(r.source+"/"))&&(!n||r.source.length>n.source.length)&&(n=r);return n}var $t={get:"penzor:sync:get",preview:"penzor:sync:preview",apply:"penzor:sync:apply",run:"penzor:sync:run",pause:"penzor:sync:pause",retry:"penzor:sync:retry",rename:"penzor:sync:rename",setup:"penzor:sync:setup"};var cn="forsion-penzor",Sn={main:"penzor",info:"penzor-info"},Fi="penzor-places",$i="forsion-extend.penzor.ready",Hd="forsion-extend.penzor.focus",ta=e=>e.state==="active"||e.state==="queued",Ao=e=>e.ok?"":e.detail||e.code||e.transport||(e.status?`HTTP ${e.status}`:"offline"),zh=e=>e.slice(e.lastIndexOf("/")+1);function qd(e,t={}){let n=t.api??Q,r=new Set,a=()=>{for(let y of[...r])try{y()}catch(C){console.error("[penzor] listener failed",C)}},i=()=>Ze(e.getLocale?.()),s=(y,C)=>xe(i(),y,C),l=y=>ar(y,i()),c=y=>e.app?.notify?.(y),d=y=>c(s("penzor.toast.failed",{reason:typeof y=="string"?y:Ao(y)})),g="unknown",u=!1,p=null,m=null,f={kind:"overview"},v="",w=[],k=null,z=null,x=null,M="mtime",L="",H=null,V={kind:"view"},ee=!1,te=null,S=null,E=0,O=0,I=0,ne=t.device??null,b=new Map,T=new Set,R=null,K=null,X=[],Y=[],me="hidden",Le=0,je=!1,he=0,Te=!1,ft=null,Ct=!1,Tt=null,on=new Map,bt=null,lt=!se().mobile&&typeof e.app?.sync?.get=="function"?e.app.sync:null,At=new Map,vt=new Set,ve=!1,yt=!1,Ae=1e4,Hn=4e3,ct=y=>{let C=M==="size"?(P,j)=>j.size-P.size:M==="name"?(P,j)=>P.name.localeCompare(j.name):null;return C?[...y.filter(P=>P.dir).sort(C),...y.filter(P=>!P.dir).sort(C)]:Dd([...y])};async function Xe(){let y=++E,C=f;if(z=null,C.kind==="overview"||C.kind==="sync-home"){k=null;return}if(C.kind==="exports"){k=(m?.exports?.files??[]).map($=>({key:$.fileId,name:$.fileName,dir:!1,size:$.size,mtime:uo($.createdAt),col4:Ht($.appId),ref:$}));return}if(C.kind==="trash"){k=Ri(m?.trash??[]).map($=>({key:$.id,name:$.name,dir:$.fileType==="directory",size:$.fileType==="directory"?$.innerBytes:$.fileSize,mtime:uo($.deletedAt),col4:$.parentName?`${Ht($.appId)} / ${$.parentName}`:Ht($.appId),count:$.fileType==="directory"?$.inner:void 0,ref:$}));return}if(k=null,a(),C.kind==="content"){let $=await n(`/remotesync/content/${encodeURIComponent(C.namespace)}`);if(y!==E)return;if(!$.ok){z=Ao($),a();return}if($.data.schemaVersion!==1||!Array.isArray($.data.nodes)){z=s("penzor.unreachable");return}let ie=$.data.nodes.filter(ye=>!ye.deleted),Se=ie.filter(ye=>ye.kind==="file"&&ye.version).map(ye=>({path:ye.path,size:ye.size??0,mtime:ye.mtime??null,ref:ye}));b.set(lo(C),Se);let Z=ye=>{let ur=0,jn=null,fo=0;for(let Pn of Se)Pn.path.startsWith(ye+"/")&&(ur+=Pn.size,fo++,Pn.mtime!=null&&(jn==null||Pn.mtime>jn)&&(jn=Pn.mtime));return{size:ur,mtime:jn,count:fo}};k=ie.filter(ye=>(ye.path.includes("/")?ye.path.slice(0,ye.path.lastIndexOf("/")):"")===v).map(ye=>ye.kind==="folder"?{key:ye.path,name:ye.name,dir:!0,...Z(ye.path),ref:ye}:{key:ye.path,name:ye.name,dir:!1,size:ye.size??0,mtime:ye.mtime??null,ref:ye});return}if(C.kind==="sync"||C.kind==="ama"){let $=lo(C),ie=b.get($);if(!ie){if(C.kind==="sync"){let Se=await n(`/remotesync/vaults/${encodeURIComponent(C.vault)}/manifest`);if(y!==E)return;if(!Se.ok){z=Ao(Se),a();return}ie=Se.data.files.map(Z=>({path:Z.path,size:Z.size,mtime:uo(Z.mtimeMs),who:Z.device??null,ref:Z}))}else{let Se=await n(`/amadeus/vaults/${encodeURIComponent(C.vaultId)}/tree`);if(y!==E)return;if(!Se.ok){z=Ao(Se),a();return}ie=(Se.data.entries??[]).map(Z=>({path:Z.path,size:Z.size,mtime:uo(Z.updatedAt),ref:Z}))}b.set($,ie)}k=Li(ie,v);return}if(C.kind==="source"){let $=(Se,Z,ye)=>({key:Se,name:Z,size:ye,dir:!0,mtime:null,ref:{go:Se}});if(C.source==="sync"||C.source==="ama"||C.source==="apps"){if(!(C.source==="sync"?m?.sync:C.source==="ama"?m?.ama:m?.apps)){z=s("penzor.unreachable");return}k=C.source==="sync"?(m?.sync?.vaults??[]).map(Z=>$(`sync:${Z.vault}`,Z.vault,Z.bytes)):C.source==="ama"?(m?.ama??[]).map(Z=>$(`ama:${Z.id}`,Z.name,Z.sizeBytes)):(m?.apps?.apps??[]).filter(Z=>Z.appId!==ln&&Z.files>0).map(Z=>$(`app:${Z.appId}`,Ht(Z.appId),Z.bytes));return}let ie=await n(`/storage/source-files/${C.source}`);if(y!==E)return;if(!ie.ok){z=Ao(ie),a();return}k=Li(ie.data.entries.map(Se=>({...Se,ref:Se})),v);return}let P=w[w.length-1]?.id,j=await n(`/files${P?`?parentId=${encodeURIComponent(P)}`:""}`,{projectSource:C.appId});if(y===E){if(!j.ok){z=Ao(j),a();return}k=j.data.map($=>({key:$.id,name:$.name,dir:$.fileType==="directory",size:Number($.fileSize)||0,mtime:uo($.updatedAt),ref:$}))}}let xt=()=>{if(!k)return null;let y=L.trim().toLowerCase(),C=y?k.filter(P=>P.name.toLowerCase().includes(y)):k;return ct(C)},mt=()=>{let y=xt()??[],C=new Set(y.map(P=>P.key));if(T=new Set([...T].filter(P=>C.has(P))),x&&C.has(x)){T.add(x);return}x=(y.find(P=>!P.dir)??y[0])?.key??null,T=new Set(x?[x]:[]),R=x,Mt()},Et=()=>{x=null,T=new Set,R=null,K=null},Ht=y=>y===ln?s("penzor.uploads"):Mi(y),nt=()=>f.kind==="app"&&f.appId===ln,Tn=y=>!!m?.apps&&m.apps.apps.find(C=>C.appId===y)?.canManage!==!1,Je=()=>f.kind==="app"&&Tn(f.appId),kt=y=>f.kind==="trash"?Tn(y.ref.appId):Je(),D=()=>!!m?.apps&&!!m.trash?.length&&m.trash.every(y=>Tn(y.appId)),re=()=>f.kind==="app"||f.kind==="sync"||f.kind==="ama"||f.kind==="content",we=()=>f.kind==="app"?w[w.length-1]?.id??"ROOT":"ROOT",Qe=()=>(xt()??[]).filter(y=>T.has(y.key)),it=(y,C)=>{let P=se().cloudInvoke;return P?P(y,C).catch(j=>({ok:!1,error:String(j?.message||j)})):Promise.resolve({ok:!1,error:"no_bridge"})};function We(y=500){ft||Ct||(ft=setTimeout(()=>{ft=null,Pt()},y))}async function Pt(){let y=O,C=await it("penzor:transfers");if(y!==O||Ct)return;let P=new Map(X.map(Z=>[Z.id,Z.state]));C?.ok&&Array.isArray(C.items)&&(X=C.items);let j=Date.now(),$=X.some(ta);X.some(Z=>Z.kind==="up"&&Z.state==="done"&&P.get(Z.id)!=="done")&&(bt&&clearTimeout(bt),bt=setTimeout(()=>{bt=null,ot()},300)),$?(Tt==null&&(Tt=j),he=0,me==="hidden"&&(me="open",Le=j),me==="open"&&!je&&j-Le>Ae&&(me="pill")):Tt!=null&&(rn(Tt),Tt=null);let ie=X.some(Z=>Z.state==="failed")||Y.length>0,Se=X.some(Z=>Z.state==="paused");!$&&!Se&&X.length&&!ie&&me!=="hidden"&&(he?j-he>Hn&&!je&&(me="hidden",he=0,qt.txClear("finished")):(he=j,me==="pill"&&(me="open"))),!$&&ie&&me==="pill"&&(me="open"),!X.length&&!Y.length&&(me="hidden"),An(),a(),($||me!=="hidden"&&he)&&We()}function rn(y){let C=X.filter(ie=>(ie.finishedAt??0)>=y),P=C.filter(ie=>ie.kind==="up"&&ie.state==="done"),j=C.filter(ie=>ie.kind==="down"&&ie.state==="done"),$=C.filter(ie=>ie.state==="failed");Te||($.length?c(s("penzor.toast.txFailed",{n:$.length})):P.length?c(P.length===1?s("penzor.toast.upDoneOne",{name:P[0].name}):s("penzor.toast.upDoneMany",{n:P.length})):j.length&&c(j.length===1?s("penzor.toast.downloaded",{name:j[0].name}):s("penzor.toast.downDoneMany",{n:j.length})))}function An(){let y=X.filter(ta),C=y.reduce((j,$)=>j+Math.max($.size,$.done),0),P=y.length?C>0?Math.min(1,y.reduce((j,$)=>j+$.done,0)/C):0:null;e.app?.setSpaceProgress?.(cn,P??sr(lt?.get()??null))}function En(){if(!lt)return;let y=Qr(lt.get());y!==yt&&(yt=y,e.app?.setSpaceDot?.(cn,y))}function un(){lt?.get()?.notes.pending||(ve=!1),An(),En(),a()}let Fe=()=>{let y=lt?.get()??null;if(!y||!At.size)return y;let C=(P,j)=>At.has(P)?{...j,on:At.get(P)}:j;return{...y,notes:C("notes",y.notes),agents:C("agents",y.agents),plugins:C("plugins",y.plugins)}},wt=async y=>{try{return await y()??{ok:!1}}catch(C){return{ok:!1,error:String(C?.message||C)}}},gt=()=>{me="open",Le=Date.now(),he=0};async function Mt(){te=null;let y=Ro();if(f.kind!=="app"||!y||y.dir){a();return}let C=y.key,P=await n(`/files/${encodeURIComponent(C)}/versions`);x===C&&(te=P.ok&&Array.isArray(P.data)?P.data.map(j=>({versionNumber:j.versionNumber,fileSize:Number(j.fileSize)||0,createdAt:uo(j.createdAt)})):[],a())}let Ro=()=>x?(k??[]).find(y=>y.key===x)??null:null;async function pn(){await Xe(),mt(),a()}async function ot(){let y=++I;u=!0,p=null,a();let C=await se().authStatus?.().catch(()=>null);if(y!==I)return;if(C&&!C.loggedIn){g="out",m=null,u=!1,a();return}let{snap:P,signedOut:j}=await Id(n);if(y===I){if(u=!1,j){g="out",m=null,a();return}g="in",!P.ledger&&m?.ledger&&(P.ledger=m.ledger,P.ledgerStale=!0),m=P,b.clear(),p=!P.ledger&&!P.sync&&!P.ama&&!P.apps&&!P.exports&&!P.trash?s("penzor.unreachable"):null,!co(f)&&f.kind!=="exports"&&f.kind!=="trash"&&f.kind!=="source"&&((f.kind==="content"?P.contentDevices!=null:f.kind==="sync"?P.sync?.vaults.some(ie=>ie.vault===f.vault):f.kind==="ama"?P.ama?.some(ie=>ie.id===f.vaultId):f.appId===ln?P.apps:P.apps?.apps.some(ie=>ie.appId===f.appId&&ie.files>0))||(f={kind:"overview"},v="",w=[],Et())),await pn()}}async function Lo(y,C={},P=f){let j=P.kind==="content"?{path:`/remotesync/content/${encodeURIComponent(P.namespace)}/nodes/${encodeURIComponent(y.ref.id)}/content`,mode:"bytes"}:P.kind==="sync"?{path:`/remotesync/vaults/${encodeURIComponent(P.vault)}/file?path=${encodeURIComponent(y.key)}`,mode:"signed"}:P.kind==="ama"?y.ref.kind==="binary"?{path:`/amadeus/vaults/${encodeURIComponent(P.vaultId)}/asset?ref=${encodeURIComponent(y.key)}`,mode:"bytes"}:{path:`/amadeus/vaults/${encodeURIComponent(P.vaultId)}/file?path=${encodeURIComponent(y.key)}`,mode:"text"}:P.kind==="app"?{path:`/files/${encodeURIComponent(y.key)}/content`,mode:"bytes"}:P.kind==="source"&&y.ref?.downloadPath?{path:y.ref.downloadPath,mode:"bytes"}:P.kind==="exports"?{path:`/exports/${encodeURIComponent(y.key)}/url`,mode:"signed"}:null;if(!j)return;let $=await it("penzor:download",{...j,name:zh(y.name),size:y.size,...C});if(!$?.ok){d($?.error||"download");return}gt(),We(0),a()}let Do=()=>{co(f)?e.closeView?.(Sn.info,{collapse:!0}):e.openView?.(Sn.info,{location:"right"})},qt={ctx:e,locale:i,t:s,b:l,subscribe(y){return r.add(y),()=>{r.delete(y)}},auth:()=>g,loading:()=>u,error:()=>p,snap:()=>m,loc:()=>f,path:()=>v,appStack:()=>w,rows:xt,rowsError:()=>z,selected:Ro,sort:()=>M,query:()=>L,menu:()=>H,side:()=>V,confirmEmpty:()=>ee,versions:()=>te,moveFolders:()=>S,thisDevice:()=>ne,setDevice(y){ne=y,a()},appLabel:Ht,canManageRow:kt,canEmptyTrash:D,canManage:Je,canWrite:nt,canMulti:re,folderId:we,selection:Qe,isSelected:y=>T.has(y),selectAll(){if(!re())return;let y=xt()??[];T=new Set(y.map(C=>C.key)),!x&&y[0]&&(x=y[0].key),H=null,a()},newFolder:()=>K,startNewFolder(){if(!nt())return;let y=s("penzor.newFolder.default"),C=new Set((k??[]).filter(j=>j.dir).map(j=>j.name)),P=y;for(let j=1;C.has(P)&&j<1e3;j++)P=`${y} (${j})`;K=P,H=null,a()},cancelNewFolder(){K!=null&&(K=null,a())},async createFolder(y){let C=y.trim();if(K=null,!C||!nt()){a();return}a();let P=await n("/files",{method:"POST",body:{type:"directory",parentId:we(),name:C},projectSource:ln});if(!P.ok){P.status===409?c(s("penzor.toast.folderExists",{name:C})):d(P);return}P.data?.id&&(x=P.data.id,T=new Set([P.data.id]),R=P.data.id),await pn()},transfers:()=>X,notices:()=>Y,async acknowledgeStorageNotice(){let y=m?.ledger?.rollout;if(!y||y.acknowledgedAt||m?.ledgerStale)return;let C=await n("/storage/notice/ack",{method:"POST",body:{revision:y.revision}});if(!C.ok){d(C);return}await ot()},txRows(){if(!nt())return[];let y=we();return X.filter(C=>C.kind==="up"&&C.projectSource===ln&&C.parentId===y&&(ta(C)||C.state==="paused")).map(C=>({key:`tx:${C.id}`,id:C.id,name:C.name,size:C.size,done:C.done,state:C.state}))},card:()=>me,setCard(y){me=y,Le=Date.now(),y!=="hidden"&&We(0),a()},holdCard(y){je=y,Le=Date.now(),y||We()},async upload(y,C){if(!nt())return;let P=O,j=C?.id??we(),$=C?[...w,C]:[...w],ie=await y;if(P!==O||Ct||!ie.length)return;on.set(j,$);let Se=await it("penzor:upload",{...typeof ie[0]=="string"?{paths:ie}:{files:ie},parentId:j,projectSource:ln});if(!(P!==O||Ct)){if(Se?.ok){gt(),We(0),a();return}if(Se?.error==="quota"){Y=[...Y,{id:String(Date.now()),kind:"quota",short:Number(Se.short)||0}],gt(),a();return}if(Se?.error==="too_many"){c(s("penzor.err.too_many",{n:Number(Se.max)||2e3}));return}Se?.error!=="no_files"&&d(Se?.error==="account_changed"?s("penzor.err.account_changed"):Se?.error==="not_signed_in"?s("penzor.err.not_signed_in"):Se?.error||"upload")}},async txOp(y,C){await it("penzor:transfer",{id:y,op:C}),Le=Date.now(),await Pt()},async txAll(y){let C=y==="pause"?P=>ta(P):y==="resume"?P=>P.state==="paused":P=>P.state==="failed"||P.state==="canceled";for(let P of X.filter(C))await it("penzor:transfer",{id:P.id,op:y});y==="retry"&&(Y=[]),Le=Date.now(),await Pt()},async txClear(y){await it("penzor:transfers:clear",{which:y}),y==="all"&&(Y=[]),await Pt()},dismissNotice(y){Y=Y.filter(C=>C.id!==y),!X.length&&!Y.length&&(me="hidden"),a()},locate(y){if(y.kind==="down"){y.localPath&&se().revealHostPath?.(y.localPath);return}let C=on.get(y.targetId??"")??[];f={kind:"app",appId:ln},w=C,v="",L="",V={kind:"view"},H=null,Et(),y.fileId&&y.parentId===y.targetId&&(x=y.fileId,T=new Set([y.fileId])),a(),e.app?.openSpace?.(cn).then(()=>{e.openView?.(Sn.main),Do()}),pn()},async downloadMany(y){let C=y.filter(Z=>!Z.dir);if(C.length<=1){C[0]&&await qt.download(C[0]);return}let P=new Date,j=s("penzor.download.folder",{date:`${P.getFullYear()}-${String(P.getMonth()+1).padStart(2,"0")}-${String(P.getDate()).padStart(2,"0")}`}),$=`${Date.now()}`,ie=f,Se=O;for(let Z of C){if(O!==Se)break;await Lo(Z,{subdir:j,batch:$},ie)}},async trashMany(y){if(f.kind!=="app"||!Je()||!y.length)return;if(y.length===1){await qt.trash(y[0]);return}let C=await n("/files/batch/delete",{method:"POST",body:{ids:y.map(j=>j.key)},projectSource:f.appId});if(!C.ok){d(C);return}let P=(C.data?.results??[]).filter(j=>j.success===!1).length;c(P?s("penzor.toast.batchPartial",{n:P}):s("penzor.toast.trashedN",{n:y.length})),Et(),await ot()},async moveMany(y,C){if(f.kind!=="app"||!Je()||!y.length)return;V={kind:"view"};let P=y.map(ie=>ie.key).filter(ie=>ie!==C.id),j=await n("/files/batch/move",{method:"POST",body:{ids:P,parentId:C.id},projectSource:f.appId});if(!j.ok){d(j),a();return}let $=(j.data?.results??[]).filter(ie=>ie.success===!1).length;c($?s("penzor.toast.batchPartial",{n:$}):s("penzor.toast.movedN",{n:P.length,name:C.name})),Et(),await ot()},setVisible(y){Te=y},picker:{},refresh:ot,go(y){let C=Rd(y);if(!C)return;let P=lo(C)===lo(f);f=C,P||(v="",w=[],Et(),L="",V={kind:"view"},ee=!1),H=null,a(),e.openView?.(Sn.main),Do(),pn()},openDir(y){if(!(!y.dir||f.kind==="exports"||f.kind==="trash")){if(f.kind==="source"&&y.ref?.go){qt.go(y.ref.go);return}f.kind==="app"?w=[...w,{id:y.key,name:y.name}]:v=y.key,Et(),L="",V={kind:"view"},pn()}},up(y){if(f.kind==="app")w=w.slice(0,y??Math.max(0,w.length-1));else{let C=v?v.split("/"):[];v=C.slice(0,y??Math.max(0,C.length-1)).join("/")}Et(),V={kind:"view"},pn()},select(y,C){let P=xt()??[];if(y&&C?.range&&re()&&R&&P.some(j=>j.key===R)){let j=P.findIndex(ie=>ie.key===R),$=P.findIndex(ie=>ie.key===y.key);T=new Set(P.slice(Math.min(j,$),Math.max(j,$)+1).map(ie=>ie.key)),x=y.key}else y&&C?.toggle&&re()?(T.has(y.key)&&T.size>1?(T.delete(y.key),x===y.key&&(x=[...T].pop()??null)):(T.add(y.key),x=y.key),R=y.key):(x=y?.key??null,T=new Set(x?[x]:[]),R=x);K=null,V={kind:"view"},H=null,y&&!co(f)&&e.openView?.(Sn.info,{location:"right"}),Mt(),a()},setSort(y){M=y,a()},setQuery(y){L=y,a()},openMenu(y,C,P){P&&!T.has(P.key)&&(x=P.key,T=new Set([P.key]),R=P.key,Mt()),H={x:y,y:C,row:P},V={kind:"view"},a()},closeMenu(){H&&(H=null,a())},setSide(y){V=y,H=null,y.kind==="move"&&(S=null,qt.moveBrowse(y.at)),e.openView?.(Sn.info,{location:"right"}),a()},setConfirmEmpty(y){ee=y,a()},async download(y){y.dir||(H=null,await Lo(y))},async trash(y){if(f.kind!=="app"||!Je())return;let C=xt()??[],P=C.findIndex(ie=>ie.key===y.key),j=await n(`/files/${encodeURIComponent(y.key)}`,{method:"DELETE",projectSource:f.appId});if(!j.ok){d(j);return}c(s("penzor.toast.trashed",{name:y.name}));let $=C[P+1]??C[P-1];x=$&&$.key!==y.key?$.key:null,H=null,await ot()},async restore(y){if(!m||f.kind!=="trash"||!kt(y))return;let C=await n(`/trash/${encodeURIComponent(y.key)}/restore`,{method:"POST",body:{}});if(!C.ok){d(C);return}c(s("penzor.toast.restored",{name:y.name})),x=null,await ot()},async purge(y){if(!m||f.kind!=="trash"||!kt(y))return;let C=await n(`/trash/${encodeURIComponent(y.key)}`,{method:"DELETE"});if(V={kind:"view"},!C.ok){d(C),a();return}c(s("penzor.toast.purged",{name:y.name})),x=null,await ot()},async emptyTrash(){if(!m||!D())return;let y=await n("/trash?all=1",{method:"DELETE"});if(ee=!1,!y.ok){d(y),a();return}let C=(y.data?.results??[]).filter(P=>P.success===!1).length;c(C?s("penzor.toast.emptyPartial",{n:C}):s("penzor.toast.emptied")),x=null,await ot()},async rename(y,C){let P=C.trim();if(V={kind:"view"},!P||P===y.name){a();return}let j=f.kind==="exports"?await n(`/exports/${encodeURIComponent(y.key)}/rename`,{method:"PUT",body:{newFileName:P}}):f.kind==="app"&&Je()?await n(`/files/${encodeURIComponent(y.key)}/rename`,{method:"PATCH",body:{name:P},projectSource:f.appId}):null;if(j){if(!j.ok){d(j),a();return}c(s("penzor.toast.renamed",{name:P})),await ot()}},moveBrowse(y){if(f.kind!=="app"||!Je())return;V={kind:"move",at:y},S=null,a();let C=y[y.length-1]?.id,P=f.appId;n(`/files${C?`?parentId=${encodeURIComponent(C)}`:""}`,{projectSource:P}).then(j=>{V.kind!=="move"||V.at!==y||(S=j.ok?j.data.filter($=>$.fileType==="directory").map($=>({id:$.id,name:$.name})):[],a())})},async moveTo(y,C){if(f.kind!=="app"||!Je())return;if(V={kind:"view"},C.id===y.key){a();return}let P=await n(`/files/${encodeURIComponent(y.key)}/move`,{method:"PATCH",body:{parentId:C.id},projectSource:f.appId});if(!P.ok){d(P),a();return}c(s("penzor.toast.moved",{name:C.name})),x=null,await ot()},async restoreVersion(y,C){if(!Je())return;let P=await n(`/files/${encodeURIComponent(y.key)}/restore/${C.versionNumber}`,{method:"POST",body:{}});if(!P.ok){d(P);return}c(s("penzor.toast.versionRestored",{n:C.versionNumber})),await ot(),Mt()},async deleteExport(y){if(!m)return;let C=await n(`/exports/${encodeURIComponent(y.key)}`,{method:"DELETE"});if(V={kind:"view"},!C.ok){d(C),a();return}c(s("penzor.toast.purged",{name:y.name})),x=null,await ot()},signIn(){se().forsionLogin?.()},openSync(){e.app?.openSettings?.("sync/s-remote")},async focusVault(y){await e.app?.openSpace?.(cn),m||await ot(),qt.go(`sync:${y}`)},hasSync:()=>!!lt,content:()=>qn,syncState:Fe,syncBusy:y=>vt.has(y),async setSync(y,C){if(!lt||vt.has(y))return;vt.add(y),At.set(y,C),a();let P=await wt(()=>lt.set(y,C));vt.delete(y),At.delete(y),!Ct&&(P.ok||d(P.error||"sync"),un())},async resolveNotes(y){if(!lt||vt.has("resolve"))return;vt.add("resolve"),a();let C=await wt(()=>lt.resolveNotes(y));vt.delete("resolve"),ve=!1,!Ct&&(C.ok||d(C.error||"sync"),un())},confirmCloud:()=>ve,setConfirmCloud(y){ve=y,a()},enter(){},dispose(){Ct=!0,clearInterval(Vn),ft&&clearTimeout(ft),bt&&clearTimeout(bt),e.app?.setSpaceProgress?.(cn,null),yt&&e.app?.setSpaceDot?.(cn,!1),r.clear(),No?.(),dr?.(),aa?.()}},qn=null,It="",fn=async()=>{let y=se().cloudInvoke;if(!y){clearInterval(Vn);return}let C=await y($t.get).catch($=>({ok:!1,error:String($)}));if(Ct)return;!C?.ok&&/unavailable|not a Forsion Extend channel/i.test(C?.error??"")&&clearInterval(Vn);let P=C?.ok&&C.value?.available?C.value:null,j=P?JSON.stringify([wn(P),P.config.enabled,P.deviceId,P.devices]):"";qn=P,j!==It&&(It=j,a())},Vn=setInterval(()=>void fn(),5e3);fn();let No=e.subscribeLocale?.(()=>a()),aa=lt?.subscribe(un);En(),Pt();let dr=se().onAuthChanged?.(()=>{++E,++I,++O,m=null,k=null,z=null,b.clear(),Et(),H=null,V={kind:"view"},ee=!1,te=null,S=null,f={kind:"overview"},v="",w=[],L="",on.clear(),Y=[],X=[],me="hidden",Tt=null,he=0,bt&&(clearTimeout(bt),bt=null),e.app?.setSpaceProgress?.(cn,null),ve=!1,At.clear(),a(),ot()});return qt}var Vd=e=>e.kind==="content"?"penzor.source.readonly":e.kind==="sync"?"penzor.side.readonlySync":e.kind==="ama"?"penzor.side.readonlyAma":e.kind==="source"?e.source==="plugins"?"penzor.source.pluginNote":"penzor.source.readonly":null;function _h(e,t){for(var n in t)e[n]=t[n];return e}function jd(e,t){for(var n in e)if(n!=="__source"&&!(n in t))return!0;for(var r in t)if(r!=="__source"&&e[r]!==t[r])return!0;return!1}function Wd(e,t){this.props=e,this.context=t}(Wd.prototype=new Yt).isPureReactComponent=!0,Wd.prototype.shouldComponentUpdate=function(e,t){return jd(this.props,e)||jd(this.state,t)};var Gd=fe.__b;fe.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),Gd&&Gd(e)};var Fk=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;var Ch=fe.__e;fe.__e=function(e,t,n,r){if(e.then){for(var a,i=t;i=i.__;)if((a=i.__c)&&a.__c)return t.__e==null&&(t.__e=n.__e,t.__k=n.__k||[]),a.__c(e,t)}Ch(e,t,n,r)};var Kd=fe.unmount;function eu(e,t,n){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(r){typeof r.__c=="function"&&r.__c()}),e.__c.__H=null),(e=_h({},e)).__c!=null&&(e.__c.__P===n&&(e.__c.__P=t),e.__c.__e=!0,e.__c=null),e.__k=e.__k&&e.__k.map(function(r){return eu(r,t,n)})),e}function tu(e,t,n){return e&&n&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(r){return tu(r,t,n)}),e.__c&&e.__c.__P===t&&(e.__e&&n.appendChild(e.__e),e.__c.__e=!0,e.__c.__P=n)),e}function Ui(){this.__u=0,this.o=null,this.__b=null}function nu(e){var t=e.__&&e.__.__c;return t&&t.__a&&t.__a(e)}function na(){this.i=null,this.l=null}fe.unmount=function(e){var t=e.__c;t&&(t.__z=!0),t&&t.__R&&t.__R(),t&&32&e.__u&&(e.type=null),Kd&&Kd(e)},(Ui.prototype=new Yt).__c=function(e,t){var n=t.__c,r=this;r.o==null&&(r.o=[]),r.o.push(n);var a=nu(r.__v),i=!1,s=function(){i||r.__z||(i=!0,n.__R=null,a?a(c):c())};n.__R=s;var l=n.__P;n.__P=null;var c=function(){if(!--r.__u){if(r.state.__a){var d=r.state.__a;r.__v.__k[0]=tu(d,d.__c.__P,d.__c.__O)}var g;for(r.setState({__a:r.__b=null});g=r.o.pop();)g.__P=l,g.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),e.then(s,s)},Ui.prototype.componentWillUnmount=function(){this.o=[]},Ui.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var n=document.createElement("div"),r=this.__v.__k[0].__c;this.__v.__k[0]=eu(this.__b,n,r.__O=r.__P)}this.__b=null}var a=t.__a&&Zn(N,null,e.fallback);return a&&(a.__u&=-33),[Zn(N,null,t.__a?null:e.children),a]};var Xd=function(e,t,n){if(++n[1]===n[0]&&e.l.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.l.size))for(n=e.i;n;){for(;n.length>3;)n.pop()();if(n[1]<n[0])break;e.i=n=n[2]}};function Th(e){return this.getChildContext=function(){return e.context},e.children}function Ah(e){var t=this,n=e.h;if(t.componentWillUnmount=function(){He(null,t.v),t.v=null,t.h=null},t.h&&t.h!==n&&t.componentWillUnmount(),!t.v){for(var r=t.__v;r!==null&&!r.__m&&r.__!==null;)r=r.__;t.h=n,t.v={nodeType:1,parentNode:n,childNodes:[],__k:{__m:r.__m},contains:function(){return!0},namespaceURI:n.namespaceURI,insertBefore:function(a,i){this.childNodes.push(a),t.h.insertBefore(a,i)},removeChild:function(a){this.childNodes.splice(this.childNodes.indexOf(a)>>>1,1),t.h.removeChild(a)}}}He(Zn(Th,{context:t.context},e.__v),t.v)}function ou(e,t){var n=Zn(Ah,{__v:e,h:t});return n.containerInfo=t,n}(na.prototype=new Yt).__a=function(e){var t=this,n=nu(t.__v),r=t.l.get(e);return r[0]++,function(a){var i=function(){t.props.revealOrder?(r.push(a),Xd(t,e,r)):a()};n?n(i):i()}},na.prototype.render=function(e){this.i=null,this.l=new Map;var t=Xo(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var n=t.length;n--;)this.l.set(t[n],this.i=[1,0,this.i]);return e.children},na.prototype.componentDidUpdate=na.prototype.componentDidMount=function(){var e=this;this.l.forEach(function(t,n){Xd(e,n,t)})};var Eh=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,Ph=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,Mh=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,Ih=/[A-Z0-9]/g,Rh=typeof document<"u",Lh=function(e){return(typeof Symbol<"u"&&typeof Symbol()=="symbol"?/fil|che|rad/:/fil|che|ra/).test(e)};Yt.prototype.isReactComponent=!0,["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(Yt.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var Jd=fe.event;fe.event=function(e){return Jd&&(e=Jd(e)),e.persist=function(){},e.isPropagationStopped=function(){return this.cancelBubble},e.isDefaultPrevented=function(){return this.defaultPrevented},e.nativeEvent=e};var ru,Dh={configurable:!0,get:function(){return this.class}},Yd=fe.vnode;fe.vnode=function(e){typeof e.type=="string"&&(function(t){var n=t.props,r=t.type,a={},i=r.indexOf("-")==-1;for(var s in n){var l=n[s];if(!(s==="value"&&"defaultValue"in n&&l==null||Rh&&s==="children"&&r==="noscript"||s==="class"||s==="className")){var c=s.toLowerCase();s==="defaultValue"&&"value"in n&&n.value==null?s="value":s==="download"&&l===!0?l="":c==="translate"&&l==="no"?l=!1:c[0]==="o"&&c[1]==="n"?c==="ondoubleclick"?s="ondblclick":c!=="onchange"||r!=="input"&&r!=="textarea"||Lh(n.type)?c==="onfocus"?s="onfocusin":c==="onblur"?s="onfocusout":Mh.test(s)&&(s=c):c=s="oninput":i&&Ph.test(s)?s=s.replace(Ih,"-$&").toLowerCase():l===null&&(l=void 0),c==="oninput"&&a[s=c]&&(s="oninputCapture"),a[s]=l}}r=="select"&&(a.multiple&&Array.isArray(a.value)&&(a.value=Xo(n.children).forEach(function(d){d.props.selected=a.value.indexOf(d.props.value)!=-1})),a.defaultValue!=null&&(a.value=Xo(n.children).forEach(function(d){d.props.selected=a.multiple?a.defaultValue.indexOf(d.props.value)!=-1:a.defaultValue==d.props.value}))),n.class&&!n.className?(a.class=n.class,Object.defineProperty(a,"className",Dh)):n.className&&(a.class=a.className=n.className),t.props=a})(e),e.$$typeof=Eh,Yd&&Yd(e)};var Zd=fe.__r;fe.__r=function(e){Zd&&Zd(e),ru=e.__c};var Qd=fe.diffed;fe.diffed=function(e){Qd&&Qd(e);var t=e.props,n=e.__e;n!=null&&e.type==="textarea"&&"value"in t&&t.value!==n.value&&(n.value=t.value==null?"":t.value),ru=null};var au=`
|
|
1180
1180
|
.pz, .pz-side { color: var(--text); font-family: var(--font-ui); font-size: var(--ui-font-body); line-height: var(--ui-line-body); }
|
|
1181
1181
|
.pz { height: 100%; min-height: 0; display: flex; flex-direction: column; }
|
|
1182
1182
|
.pz-side { height: 100%; min-height: 0; overflow: auto; box-sizing: border-box; padding: 14px 16px; display: flex; flex-direction: column; gap: 12px; }
|
|
@@ -1387,7 +1387,7 @@ ${vd(e,t)}`,d=await s({prompt:c,send:!1});d?.ok?r(""):i(d?.error||e.t("guide.ask
|
|
|
1387
1387
|
.pz-legacy > svg { color: var(--text-muted); }
|
|
1388
1388
|
.pz-legacy > span { flex: 1; min-width: 0; }
|
|
1389
1389
|
.pz-legacy small { display: block; margin-top: 2px; color: var(--text-muted); font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); }
|
|
1390
|
-
`;function _n(e,t,n){return e.fetch?e.fetch(t,n):fetch(t,{...n,headers:{Authorization:`Bearer ${e.token}`,...n.headers}})}async function
|
|
1390
|
+
`;function _n(e,t,n){return e.fetch?e.fetch(t,n):fetch(t,{...n,headers:{Authorization:`Bearer ${e.token}`,...n.headers}})}async function Eo(e,t,n,r,a=6e4){let i=await(e.fetch??fetch)(e.base+n,{method:t,headers:{"Content-Type":"application/json","X-Project-Source":"connect",...e.token&&!e.fetch?{Authorization:`Bearer ${e.token}`}:{}},body:r===void 0?void 0:JSON.stringify(r),signal:AbortSignal.timeout(a)}),s=await i.json().catch(()=>({}));return{status:i.status,json:s}}function Cn(e,t){if(typeof t!="string"||!t.startsWith("/"))return null;let n=String(e||"").replace(/\/+$/,"").replace(/\/api$/,"");if(!n)return null;let r,a;try{r=new URL(n),a=new URL(n+"/api"+t)}catch{return null}return r.protocol!=="http:"&&r.protocol!=="https:"||a.origin!==r.origin||!a.pathname.startsWith("/api/")?null:a.toString()}var iu=["bytes","signed","text"],su=/^[A-Za-z0-9_-]{1,64}$/,lu=/^[a-z0-9][a-z0-9-]{0,63}$/;function cu(e){if(typeof e!="string")return null;let n=(e.split(/[\\/]/).pop()??"").replace(/[\u0000-\u001f<>:"|?*]/g,"").trim().slice(0,200);return n&&n!=="."&&n!==".."?n:null}var Nh={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".heic":"image/heic",".svg":"image/svg+xml",".pdf":"application/pdf",".txt":"text/plain",".md":"text/markdown",".json":"application/json",".csv":"text/csv",".mp4":"video/mp4",".mov":"video/quicktime",".mp3":"audio/mpeg",".zip":"application/zip",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation"};function Hi(e){let t=e.lastIndexOf(".");return Nh[t>0?e.slice(t).toLowerCase():""]??"application/octet-stream"}function du(e,t,n,r){let a=n.replace(/[^\x20-\x7e]/g,"_").replace(/["\\]/g,"_")||"file",i=encodeURIComponent(n).replace(/['()*]/g,l=>`%${l.charCodeAt(0).toString(16).toUpperCase()}`),s="";for(let[l,c]of Object.entries(t))s+=`--${e}\r
|
|
1391
1391
|
Content-Disposition: form-data; name="${l}"\r
|
|
1392
1392
|
\r
|
|
1393
1393
|
${c}\r
|
|
@@ -1397,7 +1397,7 @@ Content-Type: ${r}\r
|
|
|
1397
1397
|
\r
|
|
1398
1398
|
`,{head:s,tail:`\r
|
|
1399
1399
|
--${e}--\r
|
|
1400
|
-
`}}function au(e,t){let n=e.filter(([l])=>t-l<=3e3);if(n.length<2)return 0;let[r,a]=n[0],[i,s]=n[n.length-1];return i>r?Math.max(0,(s-a)/(i-r)*1e3):0}function iu(e,t){let n=t??{};return e===401?"not_signed_in":n.code==="STORAGE_QUOTA_EXCEEDED"?"quota":n.code==="STORAGE_BUSY"||n.code==="STORAGE_RECONCILIATION_REQUIRED"?"storage_unavailable":n.code==="FILE_TOO_LARGE"||e===413?"too_large":typeof n.detail=="string"&&/quota exceeded/i.test(n.detail)?"quota":n.code==="STORAGE_NOT_CONFIGURED"?"storage_unavailable":`http_${e}`}var Th=3,Ah=200,$i=32,Eh=e=>typeof e=="string"&&!!e&&e!=="."&&e!==".."&&!/[\\/]/.test(e);function Ui(e,t){return t?e.flatMap(n=>{let r=(n.webkitRelativePath||n.name).split("/");return r.slice(1).some(a=>a.startsWith("."))||r.length-1>$i?[]:[{file:n,relDir:r.slice(0,-1)}]}):e.map(n=>({file:n,relDir:[]}))}function su(e){let t=Array.from(e.items??[]).filter(a=>a.kind==="file").map(a=>({entry:a.webkitGetAsEntry?.()??null,file:a.getAsFile()})),n=[],r=async(a,i)=>{if(i.length>$i)return!0;if(a.isFile){let c=await new Promise(d=>a.file(d,()=>d(null)));return c&&n.push({file:c,relDir:i}),n.length<=2e3}if(!a.isDirectory)return!0;let s=a.createReader(),l=[];for(;;){let c=await new Promise(d=>s.readEntries(d,()=>d([])));if(!c.length)break;l.push(...c)}l.sort((c,d)=>c.name<d.name?-1:c.name>d.name?1:0);for(let c of l)if(!c.name.startsWith(".")&&!await r(c,[...i,a.name]))return!1;return!0};return(async()=>{for(let a of t)if(a.entry){if(!await r(a.entry,[]))break}else a.file&&n.push({file:a.file,relDir:[]});return n})()}function lu(e,t=window,n={}){let r=[],a=new Map,i=!1,s=0,l=()=>Date.now(),c=()=>Array.from(t.crypto.getRandomValues(new Uint8Array(16)),S=>S.toString(16).padStart(2,"0")).join("");async function d(){let S=await e.getCloud();if(!S.token)throw new Error("not_signed_in");return S}async function g(S,E={}){let O=await d(),I=Cn(O.base,S);if(!I)throw new Error("bad_path");let te=await _n(O,I,{method:E.method??"GET",headers:{...E.body!==void 0?{"Content-Type":"application/json"}:{},...E.projectSource?{"X-Project-Source":E.projectSource}:{}},body:E.body!==void 0?JSON.stringify(E.body):void 0,signal:AbortSignal.timeout(3e4)});return{status:te.status,json:await te.json().catch(()=>null)}}let p=S=>{let{attempt:E,relDir:O,abort:I,samples:te,file:b,dl:T,...R}=S;return{...R,speed:S.state==="active"?au(te,l()):0}},u=S=>S.state==="active"||S.state==="queued"||S.state==="paused",m=(S,E,O=null)=>{S.state=E,S.error=O,S.abort=null,S.finishedAt=l(),S.samples=[];let I=r.filter(te=>te.state==="done"||te.state==="canceled");for(let te of I.slice(0,Math.max(0,I.length-Ah)))r.splice(r.indexOf(te),1);v()},f=S=>{let E=String(S?.message||S);return["too_large","quota","not_signed_in","bad_response","popup_blocked","download_unavailable","download_failed"].includes(E)||E.startsWith("http_")?E:"network"};function v(){if(!i)for(let S of["up","down"]){let E=r.filter(O=>O.kind===S&&O.state==="active").length;for(let O of r){if(E>=Th)break;if(O.kind!==S||O.state!=="queued")continue;E++,O.state="active",O.startedAt=l(),O.done=0,O.samples=[[l(),0]],O.abort=new AbortController;let I=O.abort.signal,te=++O.attempt,b=()=>O.attempt===te&&O.state==="active";(S==="up"?z(O,b,I):H(O,b,I)).catch(T=>{b()&&m(O,"failed",f(T))})}}}let x=(S,E)=>{S.done=E;let O=l(),I=S.samples[S.samples.length-1];for((!I||O-I[0]>=200)&&S.samples.push([O,E]);S.samples.length>2&&O-S.samples[0][0]>3500;)S.samples.shift()};function w(S){let E=s,O=()=>{if(i||E!==s)throw new Error("account_changed")};if(!S.relDir.length)return Promise.resolve(S.targetId);let I=a.get(S.batch);I||a.set(S.batch,I=new Map);let te=I,b=T=>{if(T===0)return Promise.resolve(S.targetId);let R=S.relDir.slice(0,T).join("/"),X=te.get(R);return X||(X=b(T-1).then(async K=>{O();let J=S.relDir[T-1],me=await g("/files",{method:"POST",body:{type:"directory",parentId:K,name:J},projectSource:S.projectSource});if(O(),me.status===201&&typeof me.json?.id=="string")return me.json.id;if(me.status===409){let Le=await g(`/files${K==="ROOT"?"":`?parentId=${encodeURIComponent(K)}`}`,{projectSource:S.projectSource}),Ve=Array.isArray(Le.json)?Le.json.find(he=>he?.fileType==="directory"&&he?.name===J):null;if(Ve?.id)return String(Ve.id)}throw new Error(me.status===401?"not_signed_in":`http_${me.status}`)}),X.catch(()=>te.delete(R)),te.set(R,X)),X};return b(S.relDir.length)}async function z(S,E,O){let I=S.file;if(I.size>52428800)throw new Error("too_large");let te=await w(S);if(!E())return;S.parentId=te;let b=await d();if(!E())return;let T=Cn(b.base,"/files/upload");if(!T)throw new Error("bad_path");let R=`----penzor${c()}`,{head:X,tail:K}=ru(R,{parentId:te,autoRename:"true"},S.name,I.type||Oi(S.name)),J=await _n(b,T,{method:"POST",headers:{"Content-Type":`multipart/form-data; boundary=${R}`,...S.projectSource?{"X-Project-Source":S.projectSource}:{}},body:new Blob([X,I,K]),signal:O}),me=await J.json().catch(()=>null);E()&&(J.status===201||J.status===200?(S.fileId=typeof me?.id=="string"?me.id:null,x(S,S.size),m(S,"done")):m(S,"failed",iu(J.status,me)))}async function k(S,E,O){E.size=Number(S.headers.get("content-length"))||E.size;let I=S.headers.get("content-type")||"";if(!S.body)return S.blob();let te=S.body.getReader(),b=[],T=0;for(;;){let{done:R,value:X}=await te.read();if(R)break;if(!O())throw te.cancel().catch(()=>{}),new Error("aborted");b.push(X),T+=X.length,x(E,T)}return T>E.size&&(E.size=T),new Blob(b,{type:I})}let M=(S,E)=>{let O=URL.createObjectURL(S),I=t.document.createElement("a");I.href=O,I.download=E,t.document.body.appendChild(I),I.click(),I.remove(),setTimeout(()=>URL.revokeObjectURL(O),6e4)},L=S=>{let E=t.open("","_blank");return E?(E.opener=null,E.location.replace(S),!0):!1};async function H(S,E,O){let I=S.dl,te=await d();if(!E())return;let b=Cn(te.base,I.path);if(!b)throw new Error("bad_path");let T=await _n(te,b,{signal:O});if(!T.ok)throw new Error(T.status===401?"not_signed_in":`http_${T.status}`);let R;if(I.mode==="bytes")R=await k(T,S,E);else{let X=await T.json().catch(()=>null);if(I.mode==="text"){if(typeof X?.content!="string")throw new Error("bad_response");R=new Blob([X.content],{type:Oi(I.name)}),S.size=R.size,x(S,R.size)}else{if(typeof X?.url!="string"||!/^https?:\/\//i.test(X.url))throw new Error("bad_response");let K=await fetch(X.url,{signal:O,credentials:"omit"}).catch(J=>{if(O.aborted)throw J;return null});if(!K){if(!E())return;if(n.openExternal)await n.openExternal(X.url);else if(!L(X.url))throw new Error("popup_blocked");if(!E())return;m(S,"done");return}if(!K.ok)throw new Error(`http_${K.status}`);R=await k(K,S,E)}}E()&&(n.saveDownload?await n.saveDownload(R,I.name):M(R,I.name),E()&&m(S,"done"))}let V=(S,E)=>{let O={projectSource:void 0,parentId:void 0,targetId:void 0,fileId:null,localPath:null,...S,id:c(),attempt:0,done:0,state:E?"failed":"queued",error:E??null,abort:null,samples:[],speed:0,startedAt:null,finishedAt:E?l():null};return r.push(O),O};e.handle("penzor:upload",async(S,E)=>{let O=s,I=E??{},te=(Array.isArray(I.files)?I.files:[]).filter(J=>!!J&&J.file instanceof Blob&&typeof J.file.name=="string"&&Array.isArray(J.relDir)&&J.relDir.length<=$i&&J.relDir.every(Eh)),b=typeof I.parentId=="string"&&tu.test(I.parentId)?I.parentId:null,T=typeof I.projectSource=="string"&&nu.test(I.projectSource)?I.projectSource:null;if(!te.length)return{ok:!1,error:"no_files"};if(!b||!T)return{ok:!1,error:"bad_target"};if(te.length>2e3)return{ok:!1,error:"too_many",max:2e3};if(!(await e.getCloud()).token)return{ok:!1,error:"not_signed_in"};if(O!==s)return{ok:!1,error:"account_changed"};let R=te.filter(J=>J.file.size<=52428800).reduce((J,me)=>J+me.file.size,0);try{let J=await g("/storage/quota"),me=Number(J.json?.used),Le=Number(J.json?.quota);if(J.status===200&&Le>0&&me+R>Le)return{ok:!1,error:"quota",short:me+R-Le}}catch{}if(O!==s)return{ok:!1,error:"account_changed"};if(i)return{ok:!1,error:"disposed"};let X=c(),K=te.map(J=>V({kind:"up",name:J.file.name,size:J.file.size,projectSource:T,parentId:J.relDir.length?null:b,targetId:b,batch:X,relDir:J.relDir,file:J.file},J.file.size>52428800?"too_large":void 0).id);return v(),{ok:!0,ids:K,batch:X}}),e.handle("penzor:download",async(S,E)=>{let O=s,I=E??{},te=eu.includes(I.mode)?I.mode:null,b=ou(I.name);if(!te)return{ok:!1,error:"bad_mode"};if(!b)return{ok:!1,error:"bad_name"};let T=await e.getCloud();if(O!==s)return{ok:!1,error:"account_changed"};if(typeof I.path!="string"||!Cn(T.base,I.path))return{ok:!1,error:"bad_path"};if(!T.token)return{ok:!1,error:"not_signed_in"};if(i)return{ok:!1,error:"disposed"};let R=V({kind:"down",name:b,size:Math.max(0,Number(I.size)||0),relDir:[],batch:typeof I.batch=="string"&&I.batch.length<=64?I.batch:c(),dl:{path:I.path,mode:te,name:b}});return v(),{ok:!0,id:R.id}}),e.handle("penzor:transfers",()=>({ok:!0,items:r.map(p)})),e.handle("penzor:transfer",(S,E)=>{let O=E??{},I=r.find(b=>b.id===O.id);if(!I)return{ok:!1,error:"not_found"};let te=()=>{I.abort?.abort(),I.abort=null,I.done=0,I.samples=[]};switch(O.op){case"pause":(I.state==="active"||I.state==="queued")&&(te(),I.state="paused",v());break;case"resume":I.state==="paused"&&(I.state="queued",v());break;case"cancel":u(I)&&(te(),m(I,"canceled"));break;case"retry":(I.state==="failed"||I.state==="canceled")&&(I.state="queued",I.error=null,I.finishedAt=null,I.done=0,v());break;case"dismiss":I.state!=="active"&&I.state!=="queued"&&r.splice(r.indexOf(I),1);break;default:return{ok:!1,error:"bad_op"}}return{ok:!0}}),e.handle("penzor:transfers:clear",(S,E)=>{let O=E?.which==="all";for(let I of[...r])(I.state==="done"||I.state==="canceled"||O&&I.state==="failed")&&r.splice(r.indexOf(I),1);return{ok:!0}});let Q=S=>{r.some(u)&&(S.preventDefault(),S.returnValue="")};t.addEventListener("beforeunload",Q);let ee=()=>{s++;for(let S of r)S.state="canceled",S.abort?.abort();r.length=0,a.clear()};return{reset:ee,dispose(){i=!0,t.removeEventListener("beforeunload",Q),ee()}}}var To=[{id:"notes",path:"Amadeus"},{id:"agents",path:"agents"},{id:"profile",path:"human"},{id:"plugins",path:"Plugins"}],Hi=new Set(["Amadeus","agents"]),ar=(e,t)=>Dd(t,e)?.target??"off",cu=(e,t)=>e===t||e.startsWith(t+"/"),Ph=e=>To.some(t=>cu(e,t.path)),qi=e=>e.some(t=>t.id==="default")?ji():"default",Ut=(e,t)=>e.enabled?ar(e.rules,t):"off";function du(e,t,n){n==="off"&&(e=e.filter(i=>t?!i.source.startsWith(t+"/"):!i.source||Ph(i.source)));let r=e.find(i=>i.source===t),a=e.filter(i=>i!==r);return t&&ar(a,t)===n?a:r?e.map(i=>i===r?{...i,target:n}:i):[...e,{id:t?ji():qi(e),source:t,target:n}]}function uu(e,t,n,r=!1){let a=e.rules;if(!e.enabled){let i=a.find(l=>!l.source),s=t?a.filter(l=>l.source&&cu(l.source,t)):[];a=[{id:i?.id??qi(s),source:"",target:"off"},...s]}if(!t)for(let i of To)a.some(s=>s.source===i.path)||(a=[...a,{id:ji(),source:i.path,target:ar(a,i.path)}]);return Mh({...e,rules:du(a,t,n)},r)}function Mh(e,t=!1){let n=r=>ar(e.rules,r)!=="off";return{...e,enabled:To.some(r=>n(r.path))||e.rules.some(r=>r.source&&r.target!=="off")||t&&n("")}}function pu(e){let t=e.rules.some(n=>n.source==="")?e.rules:[{id:qi(e.rules),source:"",target:"default"},...e.rules];for(let n of To)ar(t,n.path)==="off"&&(t=du(t,n.path,"default"));return{...e,enabled:!0,rules:t}}function fu(e,t){return e.rules.filter(n=>n.source.startsWith(t+"/")&&(!Hi.has(t)||n.source.split("/").length>2)).length}function Vi(e,t){let n=s=>new Map(s.rules.map(l=>[l.source,l.target])),r=n(e),a=n(t),i=e.enabled!==t.enabled?1:0;for(let s of new Set([...r.keys(),...a.keys()]))r.get(s)!==a.get(s)&&i++;return i}var Ih=0,ji=()=>`rule-${Date.now().toString(36)}-${(Ih++).toString(36)}`;var mu={"user-round":'<circle cx="12" cy="8" r="5"/><path d="M20 21a8 8 0 0 0-16 0"/>',monitor:'<rect width="20" height="14" x="2" y="3" rx="2"/><line x1="8" x2="16" y1="21" y2="21"/><line x1="12" x2="12" y1="17" y2="21"/>',history:'<path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/><path d="M3 3v5h5"/><path d="M12 7v5l4 2"/>',more:'<circle cx="12" cy="12" r="1"/><circle cx="19" cy="12" r="1"/><circle cx="5" cy="12" r="1"/>',"cloud-off":'<path d="m2 2 20 20"/><path d="M5.782 5.782A7 7 0 0 0 9 19h8.5a4.5 4.5 0 0 0 1.307-.193"/><path d="M21.532 16.5A4.5 4.5 0 0 0 17.5 10h-1.79A7.008 7.008 0 0 0 10 5.07"/>',"cloud-check":'<path d="m17 15-5.5 5.5L9 18"/><path d="M5 17.743A7 7 0 1 1 15.71 10h1.79a4.5 4.5 0 0 1 1.5 8.742"/>',"tx-sync":'<path d="m17 2 4 4-4 4"/><path d="M3 11v-1a4 4 0 0 1 4-4h14"/><path d="m7 22-4-4 4-4"/><path d="M21 13v1a4 4 0 0 1-4 4H3"/>',search:'<circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/>',down:'<path d="m6 9 6 6 6-6"/>',right:'<path d="m9 18 6-6-6-6"/>',folder:'<path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"/>',page:'<path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"/><path d="M14 2v4a2 2 0 0 0 2 2h4"/><path d="M10 9H8"/><path d="M16 13H8"/><path d="M16 17H8"/>',image:'<rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><circle cx="9" cy="9" r="2"/><path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"/>',database:'<ellipse cx="12" cy="5" rx="9" ry="3"/><path d="M3 5V19A9 3 0 0 0 21 19V5"/><path d="M3 12A9 3 0 0 0 21 12"/>',attachment:'<path d="m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48"/>',download:'<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" x2="12" y1="15" y2="3"/>',trash:'<path d="M3 6h18"/><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"/><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"/><line x1="10" x2="10" y1="11" y2="17"/><line x1="14" x2="14" y1="11" y2="17"/>',refresh:'<path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"/><path d="M21 3v5h-5"/><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"/><path d="M8 16H3v5"/>',cloud:'<path d="M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z"/>',archive:'<rect width="20" height="5" x="2" y="3" rx="1"/><path d="M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8"/><path d="M10 12h4"/>',lock:'<rect width="18" height="11" x="3" y="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/>',undo:'<path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/><path d="M3 3v5h5"/>',pen:'<path d="M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"/>',move:'<path d="M2 9V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1"/><path d="M2 13h10"/><path d="m9 16 3-3-3-3"/>',book:'<path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20"/>',login:'<path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"/><polyline points="10 17 15 12 10 7"/><line x1="15" x2="3" y1="12" y2="12"/>',gear:'<circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 1 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 1 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 1 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 1 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"/>',up:'<path d="m18 15-6-6-6 6"/>',upload:'<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="17 8 12 3 7 8"/><line x1="12" x2="12" y1="3" y2="15"/>',"folder-plus":'<path d="M12 10v6"/><path d="M9 13h6"/><path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"/>',"folder-open":'<path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"/>',pause:'<rect x="14" y="4" width="4" height="16" rx="1"/><rect x="6" y="4" width="4" height="16" rx="1"/>',play:'<polygon points="6 3 20 12 6 21 6 3"/>',x:'<path d="M18 6 6 18"/><path d="m6 6 12 12"/>',check:'<path d="M20 6 9 17l-5-5"/>',alert:'<circle cx="12" cy="12" r="10"/><line x1="12" x2="12" y1="8" y2="12"/><line x1="12" x2="12.01" y1="16" y2="16"/>',"tx-up":'<path d="m18 9-6-6-6 6"/><path d="M12 3v14"/><path d="M5 21h14"/>',"tx-down":'<path d="M12 17V3"/><path d="m6 11 6 6 6-6"/><path d="M19 21H5"/>',files:'<path d="M20 7h-3a2 2 0 0 1-2-2V2"/><path d="M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z"/><path d="M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8"/>',notebook:'<path d="M13.4 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7.4"/><path d="M2 6h4"/><path d="M2 10h4"/><path d="M2 14h4"/><path d="M2 18h4"/><path d="M21.378 5.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z"/>',bot:'<path d="M12 8V4H8"/><rect width="16" height="12" x="4" y="8" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/>',puzzle:'<path d="M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z"/>',laptop:'<path d="M18 5a2 2 0 0 1 2 2v8.526a2 2 0 0 0 .212.897l1.068 2.127a1 1 0 0 1-.9 1.45H3.62a1 1 0 0 1-.9-1.45l1.068-2.127A2 2 0 0 0 4 15.526V7a2 2 0 0 1 2-2z"/><path d="M20.054 15.987H3.946"/>',info:'<circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/>',penzor:'<path d="M3 18.5h13.5a4.25 4.25 0 0 0 0-8.5 4.75 4.75 0 0 0-9.5 0 2.5 2.5 0 0 0 5 0"/>'},ir=({p:e})=>o("div",{class:"pz-ov-kick pz-brand",children:[o(W,{n:"penzor"}),o("b",{children:e.t("penzor.title")}),e.locale()==="zh"&&o("span",{children:_e("en","penzor.title")})]}),W=({n:e})=>o("svg",{viewBox:"0 0 24 24","aria-hidden":"true",dangerouslySetInnerHTML:{__html:mu[e]??mu.attachment}});var gu=`
|
|
1400
|
+
`}}function uu(e,t){let n=e.filter(([l])=>t-l<=3e3);if(n.length<2)return 0;let[r,a]=n[0],[i,s]=n[n.length-1];return i>r?Math.max(0,(s-a)/(i-r)*1e3):0}function pu(e,t){let n=t??{};return e===401?"not_signed_in":n.code==="STORAGE_QUOTA_EXCEEDED"?"quota":n.code==="STORAGE_BUSY"||n.code==="STORAGE_RECONCILIATION_REQUIRED"?"storage_unavailable":n.code==="FILE_TOO_LARGE"||e===413?"too_large":typeof n.detail=="string"&&/quota exceeded/i.test(n.detail)?"quota":n.code==="STORAGE_NOT_CONFIGURED"?"storage_unavailable":`http_${e}`}var Oh=3,Bh=200,ji=32,Fh=e=>typeof e=="string"&&!!e&&e!=="."&&e!==".."&&!/[\\/]/.test(e);function Wi(e,t){return t?e.flatMap(n=>{let r=(n.webkitRelativePath||n.name).split("/");return r.slice(1).some(a=>a.startsWith("."))||r.length-1>ji?[]:[{file:n,relDir:r.slice(0,-1)}]}):e.map(n=>({file:n,relDir:[]}))}function fu(e){let t=Array.from(e.items??[]).filter(a=>a.kind==="file").map(a=>({entry:a.webkitGetAsEntry?.()??null,file:a.getAsFile()})),n=[],r=async(a,i)=>{if(i.length>ji)return!0;if(a.isFile){let c=await new Promise(d=>a.file(d,()=>d(null)));return c&&n.push({file:c,relDir:i}),n.length<=2e3}if(!a.isDirectory)return!0;let s=a.createReader(),l=[];for(;;){let c=await new Promise(d=>s.readEntries(d,()=>d([])));if(!c.length)break;l.push(...c)}l.sort((c,d)=>c.name<d.name?-1:c.name>d.name?1:0);for(let c of l)if(!c.name.startsWith(".")&&!await r(c,[...i,a.name]))return!1;return!0};return(async()=>{for(let a of t)if(a.entry){if(!await r(a.entry,[]))break}else a.file&&n.push({file:a.file,relDir:[]});return n})()}function mu(e,t=window,n={}){let r=[],a=new Map,i=!1,s=0,l=()=>Date.now(),c=()=>Array.from(t.crypto.getRandomValues(new Uint8Array(16)),S=>S.toString(16).padStart(2,"0")).join("");async function d(){let S=await e.getCloud();if(!S.token)throw new Error("not_signed_in");return S}async function g(S,E={}){let O=await d(),I=Cn(O.base,S);if(!I)throw new Error("bad_path");let ne=await _n(O,I,{method:E.method??"GET",headers:{...E.body!==void 0?{"Content-Type":"application/json"}:{},...E.projectSource?{"X-Project-Source":E.projectSource}:{}},body:E.body!==void 0?JSON.stringify(E.body):void 0,signal:AbortSignal.timeout(3e4)});return{status:ne.status,json:await ne.json().catch(()=>null)}}let u=S=>{let{attempt:E,relDir:O,abort:I,samples:ne,file:b,dl:T,...R}=S;return{...R,speed:S.state==="active"?uu(ne,l()):0}},p=S=>S.state==="active"||S.state==="queued"||S.state==="paused",m=(S,E,O=null)=>{S.state=E,S.error=O,S.abort=null,S.finishedAt=l(),S.samples=[];let I=r.filter(ne=>ne.state==="done"||ne.state==="canceled");for(let ne of I.slice(0,Math.max(0,I.length-Bh)))r.splice(r.indexOf(ne),1);v()},f=S=>{let E=String(S?.message||S);return["too_large","quota","not_signed_in","bad_response","popup_blocked","download_unavailable","download_failed"].includes(E)||E.startsWith("http_")?E:"network"};function v(){if(!i)for(let S of["up","down"]){let E=r.filter(O=>O.kind===S&&O.state==="active").length;for(let O of r){if(E>=Oh)break;if(O.kind!==S||O.state!=="queued")continue;E++,O.state="active",O.startedAt=l(),O.done=0,O.samples=[[l(),0]],O.abort=new AbortController;let I=O.abort.signal,ne=++O.attempt,b=()=>O.attempt===ne&&O.state==="active";(S==="up"?z(O,b,I):H(O,b,I)).catch(T=>{b()&&m(O,"failed",f(T))})}}}let w=(S,E)=>{S.done=E;let O=l(),I=S.samples[S.samples.length-1];for((!I||O-I[0]>=200)&&S.samples.push([O,E]);S.samples.length>2&&O-S.samples[0][0]>3500;)S.samples.shift()};function k(S){let E=s,O=()=>{if(i||E!==s)throw new Error("account_changed")};if(!S.relDir.length)return Promise.resolve(S.targetId);let I=a.get(S.batch);I||a.set(S.batch,I=new Map);let ne=I,b=T=>{if(T===0)return Promise.resolve(S.targetId);let R=S.relDir.slice(0,T).join("/"),K=ne.get(R);return K||(K=b(T-1).then(async X=>{O();let Y=S.relDir[T-1],me=await g("/files",{method:"POST",body:{type:"directory",parentId:X,name:Y},projectSource:S.projectSource});if(O(),me.status===201&&typeof me.json?.id=="string")return me.json.id;if(me.status===409){let Le=await g(`/files${X==="ROOT"?"":`?parentId=${encodeURIComponent(X)}`}`,{projectSource:S.projectSource}),je=Array.isArray(Le.json)?Le.json.find(he=>he?.fileType==="directory"&&he?.name===Y):null;if(je?.id)return String(je.id)}throw new Error(me.status===401?"not_signed_in":`http_${me.status}`)}),K.catch(()=>ne.delete(R)),ne.set(R,K)),K};return b(S.relDir.length)}async function z(S,E,O){let I=S.file;if(I.size>52428800)throw new Error("too_large");let ne=await k(S);if(!E())return;S.parentId=ne;let b=await d();if(!E())return;let T=Cn(b.base,"/files/upload");if(!T)throw new Error("bad_path");let R=`----penzor${c()}`,{head:K,tail:X}=du(R,{parentId:ne,autoRename:"true"},S.name,I.type||Hi(S.name)),Y=await _n(b,T,{method:"POST",headers:{"Content-Type":`multipart/form-data; boundary=${R}`,...S.projectSource?{"X-Project-Source":S.projectSource}:{}},body:new Blob([K,I,X]),signal:O}),me=await Y.json().catch(()=>null);E()&&(Y.status===201||Y.status===200?(S.fileId=typeof me?.id=="string"?me.id:null,w(S,S.size),m(S,"done")):m(S,"failed",pu(Y.status,me)))}async function x(S,E,O){E.size=Number(S.headers.get("content-length"))||E.size;let I=S.headers.get("content-type")||"";if(!S.body)return S.blob();let ne=S.body.getReader(),b=[],T=0;for(;;){let{done:R,value:K}=await ne.read();if(R)break;if(!O())throw ne.cancel().catch(()=>{}),new Error("aborted");b.push(K),T+=K.length,w(E,T)}return T>E.size&&(E.size=T),new Blob(b,{type:I})}let M=(S,E)=>{let O=URL.createObjectURL(S),I=t.document.createElement("a");I.href=O,I.download=E,t.document.body.appendChild(I),I.click(),I.remove(),setTimeout(()=>URL.revokeObjectURL(O),6e4)},L=S=>{let E=t.open("","_blank");return E?(E.opener=null,E.location.replace(S),!0):!1};async function H(S,E,O){let I=S.dl,ne=await d();if(!E())return;let b=Cn(ne.base,I.path);if(!b)throw new Error("bad_path");let T=await _n(ne,b,{signal:O});if(!T.ok)throw new Error(T.status===401?"not_signed_in":`http_${T.status}`);let R;if(I.mode==="bytes")R=await x(T,S,E);else{let K=await T.json().catch(()=>null);if(I.mode==="text"){if(typeof K?.content!="string")throw new Error("bad_response");R=new Blob([K.content],{type:Hi(I.name)}),S.size=R.size,w(S,R.size)}else{if(typeof K?.url!="string"||!/^https?:\/\//i.test(K.url))throw new Error("bad_response");let X=await fetch(K.url,{signal:O,credentials:"omit"}).catch(Y=>{if(O.aborted)throw Y;return null});if(!X){if(!E())return;if(n.openExternal)await n.openExternal(K.url);else if(!L(K.url))throw new Error("popup_blocked");if(!E())return;m(S,"done");return}if(!X.ok)throw new Error(`http_${X.status}`);R=await x(X,S,E)}}E()&&(n.saveDownload?await n.saveDownload(R,I.name):M(R,I.name),E()&&m(S,"done"))}let V=(S,E)=>{let O={projectSource:void 0,parentId:void 0,targetId:void 0,fileId:null,localPath:null,...S,id:c(),attempt:0,done:0,state:E?"failed":"queued",error:E??null,abort:null,samples:[],speed:0,startedAt:null,finishedAt:E?l():null};return r.push(O),O};e.handle("penzor:upload",async(S,E)=>{let O=s,I=E??{},ne=(Array.isArray(I.files)?I.files:[]).filter(Y=>!!Y&&Y.file instanceof Blob&&typeof Y.file.name=="string"&&Array.isArray(Y.relDir)&&Y.relDir.length<=ji&&Y.relDir.every(Fh)),b=typeof I.parentId=="string"&&su.test(I.parentId)?I.parentId:null,T=typeof I.projectSource=="string"&&lu.test(I.projectSource)?I.projectSource:null;if(!ne.length)return{ok:!1,error:"no_files"};if(!b||!T)return{ok:!1,error:"bad_target"};if(ne.length>2e3)return{ok:!1,error:"too_many",max:2e3};if(!(await e.getCloud()).token)return{ok:!1,error:"not_signed_in"};if(O!==s)return{ok:!1,error:"account_changed"};let R=ne.filter(Y=>Y.file.size<=52428800).reduce((Y,me)=>Y+me.file.size,0);try{let Y=await g("/storage/quota"),me=Number(Y.json?.used),Le=Number(Y.json?.quota);if(Y.status===200&&Le>0&&me+R>Le)return{ok:!1,error:"quota",short:me+R-Le}}catch{}if(O!==s)return{ok:!1,error:"account_changed"};if(i)return{ok:!1,error:"disposed"};let K=c(),X=ne.map(Y=>V({kind:"up",name:Y.file.name,size:Y.file.size,projectSource:T,parentId:Y.relDir.length?null:b,targetId:b,batch:K,relDir:Y.relDir,file:Y.file},Y.file.size>52428800?"too_large":void 0).id);return v(),{ok:!0,ids:X,batch:K}}),e.handle("penzor:download",async(S,E)=>{let O=s,I=E??{},ne=iu.includes(I.mode)?I.mode:null,b=cu(I.name);if(!ne)return{ok:!1,error:"bad_mode"};if(!b)return{ok:!1,error:"bad_name"};let T=await e.getCloud();if(O!==s)return{ok:!1,error:"account_changed"};if(typeof I.path!="string"||!Cn(T.base,I.path))return{ok:!1,error:"bad_path"};if(!T.token)return{ok:!1,error:"not_signed_in"};if(i)return{ok:!1,error:"disposed"};let R=V({kind:"down",name:b,size:Math.max(0,Number(I.size)||0),relDir:[],batch:typeof I.batch=="string"&&I.batch.length<=64?I.batch:c(),dl:{path:I.path,mode:ne,name:b}});return v(),{ok:!0,id:R.id}}),e.handle("penzor:transfers",()=>({ok:!0,items:r.map(u)})),e.handle("penzor:transfer",(S,E)=>{let O=E??{},I=r.find(b=>b.id===O.id);if(!I)return{ok:!1,error:"not_found"};let ne=()=>{I.abort?.abort(),I.abort=null,I.done=0,I.samples=[]};switch(O.op){case"pause":(I.state==="active"||I.state==="queued")&&(ne(),I.state="paused",v());break;case"resume":I.state==="paused"&&(I.state="queued",v());break;case"cancel":p(I)&&(ne(),m(I,"canceled"));break;case"retry":(I.state==="failed"||I.state==="canceled")&&(I.state="queued",I.error=null,I.finishedAt=null,I.done=0,v());break;case"dismiss":I.state!=="active"&&I.state!=="queued"&&r.splice(r.indexOf(I),1);break;default:return{ok:!1,error:"bad_op"}}return{ok:!0}}),e.handle("penzor:transfers:clear",(S,E)=>{let O=E?.which==="all";for(let I of[...r])(I.state==="done"||I.state==="canceled"||O&&I.state==="failed")&&r.splice(r.indexOf(I),1);return{ok:!0}});let ee=S=>{r.some(p)&&(S.preventDefault(),S.returnValue="")};t.addEventListener("beforeunload",ee);let te=()=>{s++;for(let S of r)S.state="canceled",S.abort?.abort();r.length=0,a.clear()};return{reset:te,dispose(){i=!0,t.removeEventListener("beforeunload",ee),te()}}}var Po=[{id:"notes",path:"Amadeus"},{id:"agents",path:"agents"},{id:"profile",path:"human"},{id:"plugins",path:"Plugins"}],Gi=new Set(["Amadeus","agents"]),lr=(e,t)=>Ud(t,e)?.target??"off",gu=(e,t)=>e===t||e.startsWith(t+"/"),$h=e=>Po.some(t=>gu(e,t.path)),Ki=e=>e.some(t=>t.id==="default")?Ji():"default",Ut=(e,t)=>e.enabled?lr(e.rules,t):"off";function hu(e,t,n){n==="off"&&(e=e.filter(i=>t?!i.source.startsWith(t+"/"):!i.source||$h(i.source)));let r=e.find(i=>i.source===t),a=e.filter(i=>i!==r);return t&&lr(a,t)===n?a:r?e.map(i=>i===r?{...i,target:n}:i):[...e,{id:t?Ji():Ki(e),source:t,target:n}]}function bu(e,t,n,r=!1){let a=e.rules;if(!e.enabled){let i=a.find(l=>!l.source),s=t?a.filter(l=>l.source&&gu(l.source,t)):[];a=[{id:i?.id??Ki(s),source:"",target:"off"},...s]}if(!t)for(let i of Po)a.some(s=>s.source===i.path)||(a=[...a,{id:Ji(),source:i.path,target:lr(a,i.path)}]);return Uh({...e,rules:hu(a,t,n)},r)}function Uh(e,t=!1){let n=r=>lr(e.rules,r)!=="off";return{...e,enabled:Po.some(r=>n(r.path))||e.rules.some(r=>r.source&&r.target!=="off")||t&&n("")}}function vu(e){let t=e.rules.some(n=>n.source==="")?e.rules:[{id:Ki(e.rules),source:"",target:"default"},...e.rules];for(let n of Po)lr(t,n.path)==="off"&&(t=hu(t,n.path,"default"));return{...e,enabled:!0,rules:t}}function yu(e,t){return e.rules.filter(n=>n.source.startsWith(t+"/")&&(!Gi.has(t)||n.source.split("/").length>2)).length}function Xi(e,t){let n=s=>new Map(s.rules.map(l=>[l.source,l.target])),r=n(e),a=n(t),i=e.enabled!==t.enabled?1:0;for(let s of new Set([...r.keys(),...a.keys()]))r.get(s)!==a.get(s)&&i++;return i}var Hh=0,Ji=()=>`rule-${Date.now().toString(36)}-${(Hh++).toString(36)}`;var xu={"user-round":'<circle cx="12" cy="8" r="5"/><path d="M20 21a8 8 0 0 0-16 0"/>',monitor:'<rect width="20" height="14" x="2" y="3" rx="2"/><line x1="8" x2="16" y1="21" y2="21"/><line x1="12" x2="12" y1="17" y2="21"/>',history:'<path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/><path d="M3 3v5h5"/><path d="M12 7v5l4 2"/>',more:'<circle cx="12" cy="12" r="1"/><circle cx="19" cy="12" r="1"/><circle cx="5" cy="12" r="1"/>',"cloud-off":'<path d="m2 2 20 20"/><path d="M5.782 5.782A7 7 0 0 0 9 19h8.5a4.5 4.5 0 0 0 1.307-.193"/><path d="M21.532 16.5A4.5 4.5 0 0 0 17.5 10h-1.79A7.008 7.008 0 0 0 10 5.07"/>',"cloud-check":'<path d="m17 15-5.5 5.5L9 18"/><path d="M5 17.743A7 7 0 1 1 15.71 10h1.79a4.5 4.5 0 0 1 1.5 8.742"/>',"tx-sync":'<path d="m17 2 4 4-4 4"/><path d="M3 11v-1a4 4 0 0 1 4-4h14"/><path d="m7 22-4-4 4-4"/><path d="M21 13v1a4 4 0 0 1-4 4H3"/>',search:'<circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/>',down:'<path d="m6 9 6 6 6-6"/>',right:'<path d="m9 18 6-6-6-6"/>',folder:'<path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"/>',page:'<path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"/><path d="M14 2v4a2 2 0 0 0 2 2h4"/><path d="M10 9H8"/><path d="M16 13H8"/><path d="M16 17H8"/>',image:'<rect width="18" height="18" x="3" y="3" rx="2" ry="2"/><circle cx="9" cy="9" r="2"/><path d="m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"/>',database:'<ellipse cx="12" cy="5" rx="9" ry="3"/><path d="M3 5V19A9 3 0 0 0 21 19V5"/><path d="M3 12A9 3 0 0 0 21 12"/>',attachment:'<path d="m21.44 11.05-9.19 9.19a6 6 0 0 1-8.49-8.49l8.57-8.57A4 4 0 1 1 18 8.84l-8.59 8.57a2 2 0 0 1-2.83-2.83l8.49-8.48"/>',download:'<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" x2="12" y1="15" y2="3"/>',trash:'<path d="M3 6h18"/><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"/><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"/><line x1="10" x2="10" y1="11" y2="17"/><line x1="14" x2="14" y1="11" y2="17"/>',refresh:'<path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"/><path d="M21 3v5h-5"/><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"/><path d="M8 16H3v5"/>',cloud:'<path d="M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z"/>',archive:'<rect width="20" height="5" x="2" y="3" rx="1"/><path d="M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8"/><path d="M10 12h4"/>',lock:'<rect width="18" height="11" x="3" y="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/>',undo:'<path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/><path d="M3 3v5h5"/>',pen:'<path d="M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"/>',move:'<path d="M2 9V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-1"/><path d="M2 13h10"/><path d="m9 16 3-3-3-3"/>',book:'<path d="M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H20v20H6.5a2.5 2.5 0 0 1 0-5H20"/>',login:'<path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"/><polyline points="10 17 15 12 10 7"/><line x1="15" x2="3" y1="12" y2="12"/>',gear:'<circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 1 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 1 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 1 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 1 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"/>',up:'<path d="m18 15-6-6-6 6"/>',upload:'<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="17 8 12 3 7 8"/><line x1="12" x2="12" y1="3" y2="15"/>',"folder-plus":'<path d="M12 10v6"/><path d="M9 13h6"/><path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"/>',"folder-open":'<path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"/>',pause:'<rect x="14" y="4" width="4" height="16" rx="1"/><rect x="6" y="4" width="4" height="16" rx="1"/>',play:'<polygon points="6 3 20 12 6 21 6 3"/>',x:'<path d="M18 6 6 18"/><path d="m6 6 12 12"/>',check:'<path d="M20 6 9 17l-5-5"/>',alert:'<circle cx="12" cy="12" r="10"/><line x1="12" x2="12" y1="8" y2="12"/><line x1="12" x2="12.01" y1="16" y2="16"/>',"tx-up":'<path d="m18 9-6-6-6 6"/><path d="M12 3v14"/><path d="M5 21h14"/>',"tx-down":'<path d="M12 17V3"/><path d="m6 11 6 6 6-6"/><path d="M19 21H5"/>',files:'<path d="M20 7h-3a2 2 0 0 1-2-2V2"/><path d="M9 18a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h7l4 4v10a2 2 0 0 1-2 2Z"/><path d="M3 7.6v12.8A1.6 1.6 0 0 0 4.6 22h9.8"/>',notebook:'<path d="M13.4 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7.4"/><path d="M2 6h4"/><path d="M2 10h4"/><path d="M2 14h4"/><path d="M2 18h4"/><path d="M21.378 5.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z"/>',bot:'<path d="M12 8V4H8"/><rect width="16" height="12" x="4" y="8" rx="2"/><path d="M2 14h2"/><path d="M20 14h2"/><path d="M15 13v2"/><path d="M9 13v2"/>',puzzle:'<path d="M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z"/>',laptop:'<path d="M18 5a2 2 0 0 1 2 2v8.526a2 2 0 0 0 .212.897l1.068 2.127a1 1 0 0 1-.9 1.45H3.62a1 1 0 0 1-.9-1.45l1.068-2.127A2 2 0 0 0 4 15.526V7a2 2 0 0 1 2-2z"/><path d="M20.054 15.987H3.946"/>',info:'<circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/>',penzor:'<path d="M3 18.5h13.5a4.25 4.25 0 0 0 0-8.5 4.75 4.75 0 0 0-9.5 0 2.5 2.5 0 0 0 5 0"/>'},cr=({p:e})=>o("div",{class:"pz-ov-kick pz-brand",children:[o(W,{n:"penzor"}),o("b",{children:e.t("penzor.title")}),e.locale()==="zh"&&o("span",{children:xe("en","penzor.title")})]}),W=({n:e})=>o("svg",{viewBox:"0 0 24 24","aria-hidden":"true",dangerouslySetInnerHTML:{__html:xu[e]??xu.attachment}});var ku=`
|
|
1401
1401
|
.pz-rules{max-width:960px}.pz-rules .pz-rule-head,.pz-rules .pz-rule-tools{display:flex;gap:12px;align-items:center;justify-content:space-between}
|
|
1402
1402
|
.pz-rules .pz-rule-head h1{margin:0}.pz-rules .pz-rule-meta{color:var(--text-muted);font-size:var(--ui-font-meta);margin:6px 0 16px}
|
|
1403
1403
|
.pz-rules .pz-rule-tools{margin-bottom:12px}.pz-rules .pz-rule-enable{display:flex;gap:8px;align-items:center;font-size:var(--ui-font-body)}.pz-rules input[type=checkbox]{accent-color:var(--signal-mark)}
|
|
@@ -1431,5 +1431,21 @@ Content-Type: ${r}\r
|
|
|
1431
1431
|
.pz-cs .pz-cs-log{margin-top:8px}.pz-cs .pz-cs-log .f{display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 2px;border-top:var(--border-width) solid var(--border);font-size:var(--ui-font-body)}.pz-cs .pz-cs-log .f:first-child{border-top:0}.pz-cs .pz-cs-log .f>svg{color:var(--text-faint)}.pz-cs .pz-cs-log small{color:var(--text-muted);font-size:var(--ui-font-meta)}.pz-cs .pz-cs-log .f span{overflow-wrap:anywhere}
|
|
1432
1432
|
.pz-cs h3.pz-cs-sec{display:flex;align-items:center;gap:10px;margin:26px 0 0;font-size:var(--ui-font-heading);font-weight:600}
|
|
1433
1433
|
@media(max-width:720px){.pz-cs .pz-cs-child{padding-left:16px}.pz-cs .pz-cs-bar{flex-wrap:wrap}.pz-cs .pz-cs-bar .txt{flex-basis:calc(100% - 30px)}}
|
|
1434
|
-
`;async function dn(e,...t){let n=se().cloudInvoke;if(!n)throw Error("content_sync_unavailable");let r=await n(e,...t);if(!r?.ok)throw Error(r?.error??"content_sync_unavailable");return r.value}var Ao=e=>e instanceof Error?e.message:String(e),Rh={notes:{icon:"notebook",title:"penzor.cat.notes",desc:"penzor.cat.notesDesc"},agents:{icon:"bot",title:"penzor.cat.agents",desc:"penzor.cat.agentsDesc"},profile:{icon:"user-round",title:"penzor.cat.profile",desc:"penzor.cat.profileDesc"},plugins:{icon:"puzzle",title:"penzor.cat.plugins",desc:"penzor.cat.pluginsDesc"}};function Wi({on:e,disabled:t,label:n,onToggle:r}){return o("button",{type:"button",role:"switch",class:`settings-switch${e?" active":""}`,"aria-checked":e,"aria-label":n,disabled:t,onClick:a=>{a.stopPropagation(),r(!e)},children:o("span",{})})}function hu({p:e,legacy:t}){let n=e.t,[r,a]=A(null),[i,s]=A(!0),[l,c]=A(null),[d,g]=A(null),[p,u]=A(0),[m,f]=A(!1),[v,x]=A(!1),[w,z]=A(null),[k,M]=A(!1),[L,H]=A(!1),[V,Q]=A(!1),[ee,S]=A({}),[E,O]=A(null),[I,te]=A(!1),[b,T]=A(null),[R,X]=A(null),K=ce(!0),J=ce(!1),me=ce(null),Le=async()=>{try{let D=await dn($t.get);if(!D?.available){K.current&&s(!1);return}K.current&&(J.current=!0,a(D),s(!0))}catch(D){K.current&&(!J.current&&/unavailable|not a Forsion Extend channel/i.test(String(D))?s(!1):z(Ao(D)))}};oe(()=>{K.current=!0,Le();let D=setInterval(()=>void Le(),1e3);return()=>{K.current=!1,clearInterval(D)}},[]),oe(()=>{if(!E&&!I)return;let D=re=>{re instanceof KeyboardEvent&&re.key!=="Escape"||re.type==="mousedown"&&re.target?.closest?.(".pz-cs-menu")||(O(null),te(!1))};return document.addEventListener("mousedown",D),document.addEventListener("keydown",D),()=>{document.removeEventListener("mousedown",D),document.removeEventListener("keydown",D)}},[E,I]);let Ve=!!r&&!r.config.enabled&&r.config.revision===0&&!L,he=Ot(()=>r&&Ve?pu(r.config):null,[Ve,r?.config.revision]),Te=r?l??he??r.config:null,pt=!!r&&!k&&(Ve||!!l&&Vi(r.config,l)>0),Ct=pt&&Te?JSON.stringify(Te)+"#"+p:"";if(oe(()=>{if(g(null),!Ct)return;let D=!0,re=setTimeout(()=>{dn($t.preview,Te).then(ke=>{D&&K.current&&g(ke)},ke=>{!D||!K.current||(/config_changed/.test(Ao(ke))?c(null):z(Ao(ke)))})},400);return()=>{D=!1,clearTimeout(re)}},[Ct]),!i)return t;if(!r||!Te)return o("div",{class:"pz-scroll",children:o("p",{class:"pz-note",children:w??n("penzor.loading")})});if(k)return o(Lh,{p:e,snap:r,refresh:Le,back:()=>M(!1)});let Tt=`device-${r.deviceId}`,nn=r.devices.filter(D=>D.id!==r.deviceId),bt=(r.others?.files??0)>0,st=D=>r.sources.find(re=>re.path===D),At=D=>r.sources.filter(re=>re.path.startsWith(D+"/")&&!re.path.slice(D.length+1).includes("/")),vt=D=>D==="default"?n("penzor.scope.all"):D===Tt?n("penzor.scope.self"):n("penzor.scope.with",{name:r.devices.find(re=>`device-${re.id}`===D)?.name??D.slice(7,15)}),ve=(D,re,ke)=>{c(uu(Te,D,re,bt)),X({path:D,name:ke,target:re}),O(null),z(null),f(!1)},yt=async D=>{x(!0),z(null);try{await D(),await Le()}catch(re){z(Ao(re))}finally{x(!1)}},Ae=()=>void yt(async()=>{try{await dn($t.apply,d.token)}catch(ke){if(/preview_(changed|expired)/.test(Ao(ke))){f(!0),u(Ye=>Ye+1);return}throw ke}let D=Ut(Te,"Plugins")==="default",re=e.syncState()?.plugins;e.hasSync()&&re&&re.on!==D&&e.setSync("plugins",D),c(null),H(!1),f(!1)}),Un=(D,re,ke)=>{D.stopPropagation();let Ye=D.currentTarget.getBoundingClientRect(),at=me.current.getBoundingClientRect(),je=document.body.currentCSSZoom||1;O(E?.path===re?null:{path:re,name:ke,x:(Ye.left-at.left)/je-4,y:(Ye.bottom-at.top)/je+4})},lt=({path:D,name:re})=>{let ke=Ut(Te,D);return o("button",{type:"button",class:`pz-scope${ke!=="default"?" is-alt":""}`,"aria-haspopup":"menu","aria-expanded":E?.path===D,onClick:Ye=>Un(Ye,D,re),children:[o(W,{n:ke==="default"?"cloud":ke===Tt?"laptop":"monitor"}),vt(ke),o(W,{n:"down"})]})},Xe=wn(r),xt=r.jobs.filter(D=>D.state==="queued"||D.state==="active"||D.state==="paused"),ft=Ii(r),Et=Xe.kind==="off"?o("span",{class:"pz-cs-status",children:[o(W,{n:"cloud-off"}),n("penzor.cs.statusOff")]}):Xe.kind==="paused"?o("span",{class:"pz-cs-status",children:[o(W,{n:"pause"}),n("penzor.cs.statusPaused")]}):Xe.kind==="run"?o("span",{class:"pz-cs-status is-ok",children:[o("span",{class:"pz-ring",style:`--p:${Xe.pct}`}),n("penzor.cs.statusRun",{pct:Xe.pct})]}):Xe.kind==="scan"?o("span",{class:"pz-cs-status is-ok",children:[o(W,{n:"refresh"}),n("penzor.cs.statusScan")]}):Xe.kind==="warn"?o("span",{class:"pz-cs-status is-warn",children:[o(W,{n:"alert"}),n("penzor.cs.statusWarn",{n:Xe.n})]}):o("span",{class:"pz-cs-status is-ok",children:[o(W,{n:"cloud-check"}),Xe.at?n("penzor.cs.statusOkAgo",{time:zn(Xe.at,e.locale())}):n("penzor.cs.statusOk")]}),Ht=()=>{let D=b;T(null),D!=null&&D.trim()!==r.deviceName&&yt(()=>dn($t.rename,D.trim()))},tt=xt.find(D=>D.state==="active")??xt[0],Tn=(D,re)=>{let ke=Rh[D],Ye=Ut(Te,re)!=="off",at=Hi.has(re)&&At(re).length>0,je=!!ee[re]&&Ye,Pt=fu(Te,re),on=st(re),An=D==="notes"?on?n("penzor.cat.files",{n:(on.files??0).toLocaleString(),size:e.b(on.size)}):"":D==="agents"?(()=>{let Fe=At(re),wt=Fe.filter(mt=>Ut(Te,mt.path)!=="off").length;return wt<Fe.length?n("penzor.cat.agentsSome",{n:Fe.length,m:wt}):n("penzor.cat.agentsN",{n:Fe.length})})():D==="profile"?n("penzor.cat.profileOn"):n("penzor.cat.pluginsN",{n:At(re).length}),En=o("b",{children:[n(ke.title),at&&o("span",{class:"pz-cs-chev",children:o(W,{n:"right"})})]}),un=o("small",{children:Ye?o(N,{children:[o(lt,{path:re,name:n(ke.title)}),An&&o(N,{children:[o("span",{class:"pz-sep",children:"\xB7"}),o("span",{children:An})]}),Pt>0&&o(N,{children:[o("span",{class:"pz-sep",children:"\xB7"}),o("button",{class:"pz-link",onClick:()=>M(!0),children:n("penzor.cat.custom",{n:Pt})})]})]}):n(ke.desc)});return o(N,{children:[o("div",{class:`pz-sync-row${at&&Ye?" is-click":""}${je?" is-open":""}`,children:[at&&Ye?o("div",{class:"pz-sync-main",role:"button",tabIndex:0,"aria-expanded":je,onClick:()=>S({...ee,[re]:!je}),onKeyDown:Fe=>{Fe.key==="Enter"&&S({...ee,[re]:!je})},children:[o("span",{class:"pz-tile",children:o(W,{n:ke.icon})}),o("span",{class:"pz-sync-txt",children:[En,un]})]}):o("div",{class:"pz-sync-main",children:[o("span",{class:"pz-tile",children:o(W,{n:ke.icon})}),o("span",{class:"pz-sync-txt",children:[En,un]})]}),o(Wi,{on:Ye,label:n(ke.title),disabled:v,onToggle:Fe=>ve(re,Fe?"default":"off",n(ke.title))})]}),je&&At(re).map(Fe=>{let wt=Fe.path.slice(re.length+1),mt=Ut(Te,Fe.path)!=="off";return o("div",{class:"pz-cs-child",title:Fe.path,children:[o("span",{children:[o("b",{children:[wt,D==="notes"&&o("span",{class:"pz-cs-faint",children:n("penzor.cat.files",{n:(Fe.files??0).toLocaleString(),size:e.b(Fe.size)})})]}),mt?o(lt,{path:Fe.path,name:wt}):o("span",{class:"pz-cs-faint",children:n("penzor.cat.notSynced")})]}),o(Wi,{on:mt,label:wt,disabled:v,onToggle:Mt=>ve(Fe.path,Mt?Ut(Te,re):"off",wt)})]},Fe.path)})]},re)},Ke=pt&&o("div",{class:"pz-cs-bar",role:"region","aria-label":n("penzor.rules.previewTitle"),children:[o(W,{n:"alert"}),o("span",{class:"txt",children:[Ve?d?n("penzor.cs.barFirst",{up:d.upload,down:d.download}):n("penzor.cs.firstTitle"):(()=>{let D=Vi(r.config,Te);return D===1&&R&&Ut(Te,R.path)===R.target&&Ut(r.config,R.path)!==R.target?n("penzor.cs.barOne",{name:R.name,scope:R.target==="off"?n("penzor.cs.offName"):vt(R.target)}):n("penzor.cs.barChanged",{n:D})})(),o("small",{children:m?n("penzor.cs.barRecount"):d?[Ve?n("penzor.cs.barSize",{size:e.b(d.bytes)}):n("penzor.cs.barCounts",{up:d.upload,down:d.download}),d.conflicts>0?n("penzor.cs.barConflicts",{n:d.conflicts}):"",Ve?n("penzor.cs.noDelete"):""].filter(Boolean).join(" \xB7 "):n("penzor.cs.barCounting")})]}),o("button",{class:"pz-btn",disabled:v,onClick:()=>{Ve&&H(!0),c(null),f(!1)},children:n(Ve?"penzor.cs.later":"penzor.cs.undo")}),o("button",{class:"pz-btn pri",disabled:v||!d||r.running,onClick:Ae,children:n(Ve?"penzor.cs.start":"penzor.cs.confirm")})]}),kt=D=>D.direction==="upload"?"tx-up":D.direction==="download"?"tx-down":"tx-sync";return o("div",{class:"pz-scroll",children:[o("style",{children:gu}),o("div",{class:"pz-col pz-cs",ref:me,children:[o(ir,{p:e}),o("div",{class:"pz-cs-head",children:[o("h1",{class:"pz-h1",children:n("penzor.sync.title")}),Et,o("span",{class:"grow"}),o("button",{class:"pz-btn",disabled:v||r.running||!r.config.enabled,onClick:()=>void yt(()=>dn($t.run)),children:[o(W,{n:"refresh"}),n("penzor.rules.run")]}),o("button",{class:"pz-btn","aria-label":n("penzor.cs.more"),"aria-haspopup":"menu",onClick:D=>{D.stopPropagation(),te(!I)},children:o(W,{n:"more"})})]}),I&&o("div",{class:"pz-cs-menu",style:"right:0;top:64px",role:"menu",children:o("button",{class:"it",role:"menuitem",onClick:()=>{te(!1),M(!0)},children:[o(W,{n:"gear"}),o("span",{children:o("b",{children:n("penzor.cs.advanced")})}),o("span",{})]})}),o("div",{class:"pz-cs-meta",children:[o("span",{class:"pz-cs-dev",children:[o(W,{n:"laptop"}),b!=null?o(N,{children:[n("penzor.cs.thisComputerLabel"),o("input",{value:b,maxLength:64,"aria-label":n("penzor.cs.rename"),ref:D=>D?.focus(),onInput:D=>T(D.currentTarget.value),onKeyDown:D=>{D.key==="Enter"&&Ht(),D.key==="Escape"&&T(null)},onBlur:Ht}),o("span",{class:"pz-cs-faint",children:n("penzor.cs.renameHint")})]}):o(N,{children:[n("penzor.cs.thisComputer",{name:r.deviceName}),o("button",{class:"pz-link","aria-label":n("penzor.cs.rename"),title:n("penzor.cs.rename"),onClick:()=>T(r.deviceName),children:o(W,{n:"pen"})})]})]}),o("span",{children:nn.length?n("penzor.cs.othersN",{n:nn.length,names:nn.map(D=>D.name).join(e.locale()==="zh"?"\u3001":", ")}):n("penzor.cs.noOthers")}),o("button",{class:"pz-link",onClick:()=>Q(!V),children:[o(W,{n:"history"})," ",n("penzor.cs.log")]})]}),(w||r.error)&&o("p",{role:"alert",class:"pz-rule-error",style:"margin-top:14px",children:w??r.error}),Ve&&o("div",{class:"pz-sync-ask",children:[o("h4",{children:n("penzor.cs.firstTitle")}),o("p",{children:n("penzor.cs.firstBody")})]}),tt&&o("div",{class:"pz-cs-act",children:[o("div",{class:"row1",children:[o(W,{n:kt(tt)}),o("span",{class:"grow",children:[n(tt.direction==="download"?"penzor.cs.down":"penzor.cs.up",{name:tt.path.slice(tt.path.lastIndexOf("/")+1)}),tt.size!=null&&o("small",{children:[" ",e.b(tt.done)," / ",e.b(tt.size)]})]}),o("button",{class:"pz-btn",disabled:v,onClick:()=>void yt(()=>dn($t.pause,!r.paused)),children:[o(W,{n:r.paused?"play":"pause"}),n(r.paused?"penzor.rules.resume":"penzor.rules.pause")]})]}),Xe.kind==="run"&&o("div",{class:"pz-bar",children:o("span",{style:`width:${Xe.pct}%`})}),xt.length>1&&o("div",{class:"more",children:n("penzor.cs.waiting",{n:xt.length-1})})]}),ft.length>0&&!tt&&o("div",{class:"pz-cs-act is-warn",children:o("div",{class:"row1",children:[o(W,{n:"alert"}),o("span",{class:"grow",children:[n("penzor.cs.failedN",{n:ft.length}),o("small",{children:[" ",ft[0].error??""]})]}),o("button",{class:"pz-btn",disabled:v||r.running,onClick:()=>void yt(()=>dn($t.retry)),children:n("penzor.cs.retry")}),o("button",{class:"pz-btn",onClick:()=>Q(!0),children:n("penzor.cs.seeLog")})]})}),o("div",{class:"pz-sync-card",children:[To.map(D=>Tn(D.id,D.path)),bt&&o("div",{class:"pz-sync-row",children:[o("div",{class:"pz-sync-main",children:[o("span",{class:"pz-tile",children:o(W,{n:"folder"})}),o("span",{class:"pz-sync-txt",children:[o("b",{children:n("penzor.cat.others")}),o("small",{children:Ut(Te,"")!=="off"?o(N,{children:[o(lt,{path:"",name:n("penzor.cat.others")}),o("span",{class:"pz-sep",children:"\xB7"}),o("span",{children:n("penzor.cat.files",{n:r.others.files.toLocaleString(),size:e.b(r.others.size)})})]}):n("penzor.cat.othersDesc")})]})]}),o(Wi,{on:Ut(Te,"")!=="off",label:n("penzor.cat.others"),disabled:v,onToggle:D=>ve("",D?"default":"off",n("penzor.cat.others"))})]})]}),o("p",{class:"pz-cs-note",children:n("penzor.cs.note")}),V&&o(N,{children:[o("h3",{class:"pz-cs-sec",children:[n("penzor.cs.log"),o("span",{class:"grow"}),ft.length>0&&o("button",{class:"pz-btn",disabled:v||r.running,onClick:()=>void yt(()=>dn($t.retry)),children:n("penzor.cs.retry")})]}),o("div",{class:"pz-cs-log",children:r.jobs.length?r.jobs.slice(-30).reverse().map(D=>o("div",{class:"f",children:[o(W,{n:kt(D)}),o("span",{children:[D.path,D.error&&o("small",{children:[" \xB7 ",D.error]})]}),o("small",{children:[n(`penzor.rules.state.${D.state}`)," \xB7 ",zn(D.finishedAt??D.at,e.locale())]})]},D.id)):o("p",{class:"pz-cs-note",children:n("penzor.cs.logEmpty")})}),o("p",{class:"pz-cs-note",children:n("penzor.cs.logNote")})]}),Ke,E&&o("div",{class:"pz-cs-menu",role:"menu",style:`left:${E.x}px;top:${E.y}px`,children:[o("div",{class:"cap",children:n("penzor.scope.menuTitle",{name:E.name})}),["default",Tt,...nn.map(D=>`device-${D.id}`)].map((D,re)=>o(N,{children:[re===2&&o("hr",{}),o("button",{class:"it",role:"menuitemradio","aria-checked":Ut(Te,E.path)===D,onClick:()=>ve(E.path,D,E.name),children:[o(W,{n:D==="default"?"cloud":D===Tt?"laptop":"monitor"}),o("span",{children:[o("b",{children:vt(D)}),re<2&&o("small",{children:n(re===0?"penzor.scope.allDesc":"penzor.scope.selfDesc")})]}),Ut(Te,E.path)===D?o("span",{class:"tick",children:o(W,{n:"check"})}):o("span",{})]})]},D)),E.path==="human"&&o("div",{class:"cap",children:n("penzor.scope.calendarNote")}),o("div",{class:"cap",children:n("penzor.scope.menuFoot")})]})]})]})}function Lh({p:e,snap:t,refresh:n,back:r}){let a=e.t,[i,s]=A(null),[l,c]=A(null),[d,g]=A(!1),[p,u]=A(null),m=i??t.config,f=!!i,v=k=>k==="default"?a("penzor.rules.default"):k==="off"?a("penzor.rules.off"):t.devices.find(M=>"device-"+M.id===k)?.name??`${a("penzor.rules.device")} ${k.slice(7)}`,x=k=>{let M=structuredClone(m);k(M),s(M),c(null),u(null)},w=async k=>{g(!0),u(null);try{await k(),await n()}catch(M){u(Ao(M))}finally{g(!1)}},z=[...new Set(["default",`device-${t.deviceId}`,...t.devices.map(k=>`device-${k.id}`),...m.rules.map(k=>k.target),"off"])];return o("div",{class:"pz-scroll",children:[o("style",{children:gu}),o("div",{class:"pz-col pz-rules",children:[o("button",{class:"pz-link",onClick:r,children:["\u2190 ",a("penzor.cs.backSimple")]}),o("div",{class:"pz-rule-head",children:o("h1",{class:"pz-h1",children:a("penzor.cs.advanced")})}),o("p",{class:"pz-rule-meta",children:t.deviceName}),p&&o("p",{role:"alert",class:"pz-rule-error",children:p}),o("div",{class:"pz-rule-tools",children:[o("label",{class:"pz-rule-enable",children:[o("input",{type:"checkbox",checked:m.enabled,onChange:k=>x(M=>{M.enabled=k.currentTarget.checked})}),a("penzor.rules.enable")]}),o("button",{class:"pz-btn",onClick:()=>x(k=>k.rules.push({id:`rule-${crypto.randomUUID()}`,source:"",target:"default"})),children:a("penzor.rules.add")})]}),o("div",{class:"pz-rule-table",children:[o("div",{class:"pz-rule-row pz-rule-label",children:[o("span",{children:a("penzor.rules.source")}),o("span",{children:a("penzor.rules.destination")}),o("span",{})]}),m.rules.map((k,M)=>o("div",{class:"pz-rule-row",children:[o("input",{"aria-label":`${a("penzor.rules.source")} ${M+1}`,list:"pz-content-sources",placeholder:"Forsion",value:k.source,onInput:L=>x(H=>{H.rules[M].source=L.currentTarget.value,delete H.rules[M].sourceId})}),o("select",{"aria-label":`${a("penzor.rules.destination")} ${M+1}`,value:k.target,onChange:L=>x(H=>{H.rules[M].target=L.currentTarget.value}),children:z.map(L=>o("option",{value:L,children:v(L)},L))}),o("button",{class:"pz-btn","aria-label":`${a("penzor.rules.remove")} ${M+1}`,onClick:()=>x(L=>{L.rules.splice(M,1)}),children:"\xD7"})]},k.id))]}),o("datalist",{id:"pz-content-sources",children:t.sources.filter(k=>k.kind==="folder").map(k=>o("option",{value:k.path},k.path))}),o("p",{class:"pz-rule-note",children:[a("penzor.rules.inherit"),o("br",{}),a("penzor.rules.namespace"),o("br",{}),a("penzor.rules.human")]}),o("div",{class:"pz-rule-actions",children:[f&&o("button",{class:"pz-btn",onClick:()=>{s(null),c(null)},children:a("penzor.cancel")}),o("button",{class:"pz-btn pri",disabled:d||t.running,onClick:()=>void w(async()=>c(await dn($t.preview,m))),children:a("penzor.rules.preview")})]}),l&&o("div",{class:"pz-rule-preview",role:"region","aria-label":a("penzor.rules.previewTitle"),children:[o("h2",{children:a("penzor.rules.previewTitle")}),o("p",{children:a("penzor.rules.previewCounts",{up:l.upload,down:l.download,conflicts:l.conflicts})}),o("p",{class:"pz-rule-note",children:a("penzor.rules.retain")}),o("div",{class:"pz-rule-actions",children:[o("button",{class:"pz-btn",onClick:()=>c(null),children:a("penzor.rules.back")}),o("button",{class:"pz-btn pri",disabled:d,onClick:()=>void w(async()=>{await dn($t.apply,l.token),s(null),c(null)}),children:a("penzor.rules.apply")})]})]})]})]})}function yu(e){let[,t]=A(0);oe(()=>{let n=e.subscribe(()=>t(r=>r+1));return t(r=>r+1),n},[e])}function ta(e){return o("div",{ref:e.rootRef,class:`${e.side?"pz-side":"pz"}${e.extra?` ${e.extra}`:""}`,lang:e.p.locale()==="zh"?"zh-CN":"en",...e.on,children:[o("style",{children:Qd}),e.children]})}var Eo=({pct:e,warn:t})=>o("div",{class:`pz-bar${t?" is-low":""}`,children:o("span",{style:{width:`${Math.max(0,Math.min(100,e)).toFixed(1)}%`}})});function xu({p:e}){yu(e);let t=ce(null),n=ce(null);oe(()=>{e.enter(),e.refresh(),lo(e.loc())&&e.ctx.closeView?.("penzor-info",{collapse:!0});let u=t.current;if(!u||typeof IntersectionObserver>"u")return;let m=!0;e.setVisible(!0);let f=new IntersectionObserver(v=>{let x=v.some(w=>w.isIntersecting);x&&!m&&(e.enter(),e.refresh()),m=x,e.setVisible(x)});return f.observe(u),()=>{f.disconnect(),e.setVisible(!1)}},[e]);let[r,a]=A(null),i=u=>Array.from(u.dataTransfer?.types??[]).includes("Files"),s=u=>{let m=u.target?.closest?.("tr[data-dir-id]");return m?{id:m.dataset.dirId,name:m.dataset.dirName??""}:null},l=()=>e.appStack()[e.appStack().length-1]?.name??e.t("penzor.drive"),c=e.canWrite()&&e.auth()==="in"?{onDragOver:u=>{if(!i(u))return;u.preventDefault(),u.stopPropagation(),u.dataTransfer&&(u.dataTransfer.dropEffect="copy");let m=s(u),f=m?.name||l();(r?.place!==f||r?.target?.id!==m?.id)&&a({place:f,target:m})},onDragLeave:u=>{t.current?.contains(u.relatedTarget)||a(null)},onDrop:u=>{if(!i(u))return;u.preventDefault(),u.stopPropagation();let m=s(u);a(null);let f=se().getPathForFile;if(!f){u.dataTransfer&&e.upload(su(u.dataTransfer),m);return}let v=Array.from(u.dataTransfer?.files??[]).map(x=>{try{return f(x)}catch{return""}}).filter(Boolean);e.upload(v,m)}}:{};oe(()=>{e.canWrite()||a(null)},[e.canWrite()]);let d=e.t,g=e.auth(),p;return g==="out"?p=o(ku,{p:e}):e.loc().kind==="sync-home"?p=o(hu,{p:e,legacy:o(Nh,{p:e})}):e.snap()?e.error()?p=o("div",{class:"pz-scroll",children:o("p",{class:"pz-note",children:e.error()})}):e.loc().kind==="overview"?p=o(Fh,{p:e,upload:()=>{e.go("app:penzor"),n.current?.click()}}):p=o(Uh,{p:e,dropDir:r?.target?.id??null}):p=o("div",{class:"pz-scroll",children:o("p",{class:"pz-note",children:e.error()??d("penzor.loading")})}),o(ta,{p:e,rootRef:t,extra:r?"pz-drop":"",on:c,children:[o("input",{class:"pz-root-upload",ref:n,type:"file",multiple:!0,hidden:!0,onChange:u=>{let m=u.currentTarget,f=se().getPathForFile,v=f?Array.from(m.files??[]).map(x=>f(x)).filter(Boolean):Ui(Array.from(m.files??[]),!1);e.go("app:penzor"),e.upload(v),m.value=""}}),p,r&&o("div",{class:"pz-dropbar",children:o("span",{children:[o(W,{n:"upload"}),d("penzor.drop.to",{place:r.place})]})}),e.menu()&&o(jh,{p:e}),o(Yh,{p:e})]})}var Dh={dropbox:"Dropbox",s3:"S3",webdav:"WebDAV"};function Gi({on:e,disabled:t,label:n,title:r,onToggle:a}){return o("button",{type:"button",role:"switch",class:`settings-switch${e?" active":""}`,"aria-checked":e,"aria-label":n,title:r,disabled:t,onClick:i=>{i.stopPropagation(),a(!e)},children:o("span",{})})}var Xi=({tone:e,text:t,title:n})=>o("span",{class:`pz-sync-state is-${e}`,title:n,children:[e!=="off"&&o("i",{}),t]});function Nh({p:e}){let t=e.t,n=e.syncState(),[r,a]=A(!1);if(!n)return o("div",{class:"pz-scroll",children:o("p",{class:"pz-note",children:t("penzor.loading")})});if(!n.signedIn)return o(ku,{p:e});let i=e.snap(),s=n.notes,l=t("penzor.ledger.sync"),c=s.maxBytes??i?.sync?.maxBytes??0,d=i?.sync?.maxFileBytes||50*1024*1024,g=s.vault?i?.sync?.vaults.find(S=>S.vault===s.vault)??null:null,p=Md(n,c),u=s.on?s.last?.skippedLarge??0:0,m=s.rootName?t("penzor.sync.notesNamed",{name:s.rootName}):t("penzor.sync.notesPlain"),f=()=>e.openSync(),v=()=>{if(s.pending)return{tone:"wait",text:t("penzor.sync.waiting")};if(!s.on)return{tone:"off",text:t("penzor.sync.off")};let S=rr(n);if(S!=null)return{tone:"ok",text:S>0?t("penzor.sync.running",{pct:Math.round(S*100)}):t("penzor.sync.runningPlain")};if(p)return{tone:"warn",text:t("penzor.sync.overQuota")};if(Mi(n))return{tone:"warn",text:t("penzor.sync.failed")};if(s.backend==="folder")return{tone:"ok",text:t("penzor.sync.toFolder")};let E=Dh[s.backend];return E?{tone:"ok",text:t("penzor.sync.to",{name:E})}:s.last?{tone:"ok",text:s.localBytes!=null?t("penzor.sync.doneSize",{size:e.b(s.localBytes)}):t("penzor.sync.done")}:{tone:"ok",text:t("penzor.sync.firstPending")}},x={tone:"off",text:t("penzor.sync.off")},w=(S,E)=>E?`${S} \xB7 ${t("penzor.sync.metaLast",{time:zn(E,e.locale())})}`:S,z=()=>{let S=n.agents;if(!S.on)return x;if(S.running)return{tone:"ok",text:t("penzor.sync.runningPlain")};let E=t("penzor.sync.agentsN",{n:S.count});return S.last&&!S.last.ok?{tone:"warn",text:t("penzor.sync.failed"),title:S.last.error}:S.last&&S.last.conflicts>0?{tone:"warn",text:t("penzor.sync.conflictsN",{n:S.last.conflicts}),title:t("penzor.sync.conflictsHint")}:{tone:"ok",text:w(E,S.last?.at)}},k=()=>{let S=n.plugins;return S.on?(S.pending??0)>0?{tone:"wait",text:t("penzor.sync.pluginsPending",{n:S.pending})}:{tone:"ok",text:w(t("penzor.sync.pluginsN",{n:S.count}),S.lastAt)}:x},M=S=>E=>{e.setSync(S,E)},L=s.available===!1&&!s.on&&(s.backend==="off"||s.backend==="penzor"),H=[e.thisDevice()?t("penzor.sync.metaDevice",{name:e.thisDevice()}):null,s.on?s.last?t("penzor.sync.metaLast",{time:zn(s.last.at,e.locale())}):t("penzor.sync.metaNever"):null,s.on&&s.backend!=="off"?Ri(s,e.locale()):null].filter(S=>!!S),V=v(),Q=g?[...new Set([...g.devices,...g.device?[g.device]:[]])]:[],ee=i?.ama?i.ama.reduce((S,E)=>S+E.sizeBytes,0):null;return o("div",{class:"pz-scroll",children:o("div",{class:"pz-col",children:[o(ir,{p:e}),o("div",{class:"pz-title pz-sync-head",children:[o("h1",{class:"pz-h1",children:t("penzor.sync.title")}),o("span",{class:"pz-badge",children:[o(W,{n:"check"}),Ld(n,e.locale())]})]}),H.length>0&&o("div",{class:"pz-meta",children:H.map(S=>o("span",{children:S},S))}),s.pending&&o(Oh,{p:e,s:n}),p&&o("div",{class:"pz-sync-ask is-warn",role:"region",children:[o("h4",{children:s.localBytes!=null&&c>0?t("penzor.sync.quotaTitle",{size:e.b(s.localBytes),ledger:l,max:e.b(c)}):t("penzor.sync.quotaTitlePlain",{ledger:l})}),o("p",{children:[t("penzor.sync.quotaBody"),u>0&&` ${t("penzor.sync.quotaLarge",{size:e.b(d),n:u})}`]}),o("div",{class:"pz-acts",children:[o("button",{class:"pz-btn pri",onClick:()=>void On("membership").then(S=>{S||e.ctx.app?.notify?.(t("err.openFailed"))}),children:t("member.upgrade")}),g&&o("button",{class:"pz-btn",onClick:()=>e.go(`sync:${g.vault}`),children:t("penzor.sync.quotaSee")})]})]}),o("div",{class:"pz-sync-card",children:[o("div",{class:`pz-sync-row is-click${r?" is-open":""}`,children:[o("button",{type:"button",class:"pz-sync-main","aria-expanded":r,onClick:()=>a(!r),children:[o("span",{class:"pz-tile",children:o(W,{n:"notebook"})}),o("span",{class:"pz-sync-txt",children:[o("b",{children:m}),o("small",{children:t("penzor.sync.notesDesc")})]}),o(Xi,{...V})]}),o(Gi,{on:s.on&&!s.pending,label:m,disabled:!!s.pending||L||e.syncBusy("notes"),title:s.pending?t("penzor.sync.decideAbove"):void 0,onToggle:M("notes")})]}),r&&o("div",{class:"pz-sync-sub",children:[o("div",{class:"kv",children:[o("span",{children:t("penzor.sync.kvSchedule")}),o("span",{children:Ri(s,e.locale())}),o("button",{class:"pz-link",onClick:f,children:t("penzor.sync.change")})]}),o("div",{class:"kv",children:[o("span",{children:t("penzor.sync.kvDirection")}),o("span",{children:t(`penzor.sync.dir.${s.direction}`)}),o("button",{class:"pz-link",onClick:f,children:t("penzor.sync.change")})]}),u>0&&o("div",{class:"kv",children:[o("span",{children:t("penzor.sync.kvSkipped")}),o("span",{children:t("penzor.sync.skippedN",{n:u,size:e.b(d)})}),o("span",{})]}),s.backend==="penzor"&&s.vault&&o("div",{class:"kv",children:[o("span",{children:t("penzor.sync.kvWhere")}),o("span",{children:i?.sync&&c>0?t("penzor.sync.whereUsed",{ledger:l,vault:s.vault,used:e.b(i.sync.usedBytes),max:e.b(c)}):t("penzor.sync.where",{ledger:l,vault:s.vault})}),g?o("button",{class:"pz-link",onClick:()=>e.go(`sync:${g.vault}`),children:t("penzor.sync.open")}):o("span",{})]})]}),o("div",{class:"pz-sync-row",children:[o("div",{class:"pz-sync-main",children:[o("span",{class:"pz-tile",children:o(W,{n:"bot"})}),o("span",{class:"pz-sync-txt",children:[o("b",{children:t("penzor.sync.agents")}),o("small",{children:t("penzor.sync.agentsDesc")})]}),o(Xi,{...z()})]}),o(Gi,{on:n.agents.on,label:t("penzor.sync.agents"),disabled:e.syncBusy("agents"),onToggle:M("agents")})]}),o("div",{class:"pz-sync-row",children:[o("div",{class:"pz-sync-main",children:[o("span",{class:"pz-tile",children:o(W,{n:"puzzle"})}),o("span",{class:"pz-sync-txt",children:[o("b",{children:t("penzor.sync.plugins")}),o("small",{children:t("penzor.sync.pluginsDesc")})]}),o(Xi,{...k()})]}),o(Gi,{on:n.plugins.on,label:t("penzor.sync.plugins"),disabled:e.syncBusy("plugins"),onToggle:M("plugins")})]})]}),o("div",{class:"pz-h3",children:t("penzor.sync.devicesTitle")}),i?Q.length===0?o("p",{class:"pz-sync-none",children:t("penzor.sync.noDevices")}):o("div",{class:"pz-rows pz-sync-dev",children:Q.map(S=>o("div",{class:"row",children:[o(W,{n:"laptop"}),o("span",{class:"t",children:[S,S===e.thisDevice()&&o("em",{children:t("penzor.sync.thisOne")})]}),o("span",{class:"s",children:g?.device===S&&g.updatedAt?t("penzor.sync.lastWrite",{time:zn(Date.parse(g.updatedAt),e.locale())}):""})]},S))}):o("p",{class:"pz-sync-none",children:t("penzor.loading")}),o("div",{class:"pz-h3",children:t("penzor.sync.phoneTitle")}),o("div",{class:"pz-tip",children:[o(W,{n:"info"}),o("span",{children:ee!=null?t("penzor.sync.phoneTip",{size:e.b(ee)}):t("penzor.sync.phoneTipPlain")})]}),o("p",{class:"pz-note",children:[t("penzor.sync.foot"),o("button",{class:"pz-link",onClick:f,children:t("penzor.sync.footLink")})]})]})})}function Oh({p:e,s:t}){let n=e.t,r=t.notes.pending,a=e.syncBusy("resolve"),i=new Date,s=n("penzor.sync.backupName",{name:t.notes.rootName??n("penzor.sync.notesPlain"),date:`${i.getFullYear()}-${String(i.getMonth()+1).padStart(2,"0")}-${String(i.getDate()).padStart(2,"0")}`}),l=r.cloudDevice?n("penzor.sync.askCloud",{device:r.cloudDevice,files:r.cloudFiles.toLocaleString(),size:e.b(r.cloudBytes)}):n("penzor.sync.askCloudNoDevice",{files:r.cloudFiles.toLocaleString(),size:e.b(r.cloudBytes)});return o("div",{class:"pz-sync-ask",role:"region","aria-label":n("penzor.sync.askTitle"),children:[o("h4",{children:n("penzor.sync.askTitle")}),o("p",{children:[l," ",n("penzor.sync.askLocal",{local:r.localOnly.toLocaleString(),conflicts:r.conflicts.toLocaleString()})]}),e.confirmCloud()?o("div",{class:"pz-confirm",children:[o("span",{children:n("penzor.sync.askConfirm",{backup:s})}),o("button",{class:"pz-btn pri",disabled:a,onClick:()=>void e.resolveNotes("cloud"),children:n("penzor.sync.askConfirmGo")}),o("button",{class:"pz-btn",disabled:a,onClick:()=>e.setConfirmCloud(!1),children:n("penzor.cancel")})]}):o("div",{class:"pz-acts",children:[o("button",{class:"pz-btn pri",disabled:a,onClick:()=>void e.resolveNotes("merge"),children:n("penzor.sync.askMerge")}),o("button",{class:"pz-btn",disabled:a,onClick:()=>e.setConfirmCloud(!0),children:n("penzor.sync.askCloudBtn")}),o("button",{class:"pz-btn",disabled:a,onClick:()=>void e.resolveNotes("skip"),children:n("penzor.sync.askSkip")})]}),o("p",{class:"pz-sync-explain",children:n("penzor.sync.askExplain",{backup:s})})]})}function ku({p:e}){let t=e.t;return o("div",{class:"pz-scroll",children:o("div",{class:"pz-empty",children:[o("span",{class:"ic",children:o(W,{n:"cloud"})}),o("h2",{children:t("penzor.out.title")}),o("p",{children:t("penzor.out.lead")}),o("button",{class:"pz-btn pri",onClick:()=>e.signIn(),children:[o(W,{n:"login"}),t("penzor.out.signIn")]})]})})}function Bh({p:e}){let t=e.t,n=e.snap()?.ledger,r=e.snap()?.ledgerStale,a=!!n?.complete&&n.usage.usedBytes!=null;return o("div",{class:"pz-unified-quota",role:"status",children:[o("div",{class:"pz-total",children:[o("b",{children:a?e.b(n.usage.usedBytes):"\u2014"}),o("span",{children:n?t("penzor.ofMax",{max:e.b(n.quota.limitBytes)}):t("penzor.unified.unavailable")})]}),a&&(n.state==="warn"||n.state==="over"?o(Eo,{pct:n.quota.limitBytes>0?n.usage.usedBytes/n.quota.limitBytes*100:100,warn:!0}):o($h,{p:e})),o("p",{class:"pz-note",children:r?t("penzor.unified.stale"):a?n.enforcement?t("penzor.unified.enforced"):n.phase==="grace"?t("penzor.unified.grace",{date:tn(Math.max(Date.parse(n.rollout?.graceUntil??""),Date.parse(n.rollout?.compatibilityUntil??"")||0),e.locale())}):n.state==="over"?t("penzor.unified.over"):n.state==="warn"?t("penzor.unified.warn"):`${t("penzor.unified.notice")} \xB7 ${t("penzor.unified.accounting",{trash:e.b(n.usage.trashBytes)})}`:t("penzor.unified.incomplete")}),n?.rollout&&!r&&o("div",{class:"pz-tip",children:[o("p",{children:t("penzor.unified.rolloutPolicy")}),!n.rollout.acknowledgedAt&&o("button",{class:"pz-btn",onClick:()=>void e.acknowledgeStorageNotice(),children:t("penzor.unified.ack")})]})]})}var na=(e,t)=>t>0&&e/t>=.8;function Fh({p:e,upload:t}){let n=e.t,r=e.snap(),a=r?.ledger,i=e.content(),s=Ti(r,i),l=w=>{let z=a?.sources.find(k=>k.id===w);return z?.status==="ready"?z.liveBytes+z.trashBytes:null},c=w=>{let z=l(w);return z==null?n("penzor.unified.unavailable"):e.b(z)},d=w=>()=>e.go(w),g=(w,z,k,M,L)=>o("button",{class:`row${L?" is-warn":""}`,onClick:d(w),children:[o(W,{n:"folder"}),o("span",{class:"t",children:[z,o("em",{children:L??k})]}),o("span",{class:"s",children:M}),o(W,{n:"right"})]},w),p=r?.apps&&na(r.apps.used,r.apps.quota)?n("penzor.quota.sourceLimit",{max:e.b(r.apps.quota),used:e.b(r.apps.used)}):void 0,u=r?.sync&&na(r.sync.usedBytes,r.sync.maxBytes)?n("penzor.quota.sourceLimit",{max:e.b(r.sync.maxBytes),used:e.b(r.sync.usedBytes)}):void 0,m=i?wn(i):null,f=i?.deviceId,v=(r?.contentDevices??[]).filter(w=>w.id!==f),x=g("source:sync",n(s?"penzor.tree.legacy":"penzor.ledger.sync"),n(s?"penzor.ov.legacy":"penzor.ov.sync"),c("sync"),u);return o("div",{class:"pz-scroll",children:o("div",{class:"pz-col",children:[o(ir,{p:e}),o("div",{class:"pz-title",children:[o("h1",{class:"pz-h1",children:n("penzor.drive")}),o("button",{class:"pz-btn",onClick:t,children:[o(W,{n:"upload"}),n("penzor.unified.uploadTo")]})]}),o(Bh,{p:e}),o("div",{class:"pz-ov-group",children:n("penzor.ov.mine")}),o("div",{class:"pz-rows",children:g("app:penzor",n("penzor.uploads"),n("penzor.ov.uploads"),c("uploads"))}),o("div",{class:"pz-ov-group",children:n("penzor.ov.synced")}),o("div",{class:"pz-rows",children:s&&r?.contentDevices?o(N,{children:[g("content:default",n("penzor.scope.all"),m?.kind==="ok"&&m.at?n("penzor.ov.allLast",{time:zn(m.at,e.locale())}):n("penzor.ov.all"),""),f&&g(`content:device-${f}`,n("penzor.tree.thisBackup"),n("penzor.ov.self"),""),v.map(w=>g(`content:device-${w.id}`,w.name,n("penzor.ov.device"),""))]}):o(N,{children:[x,g("source:agents",n("penzor.source.agents"),n("penzor.ov.agents"),c("agents")),g("source:profile",n("penzor.source.profile"),n("penzor.ov.profile"),c("profile"))]})}),o("div",{class:"pz-ov-group",children:n("penzor.tree.byApp")}),o("div",{class:"pz-rows",children:[g("source:ama",n("penzor.ledger.ama"),n("penzor.ov.ama"),c("ama")),g("source:apps",n("penzor.ledger.apps"),n("penzor.ov.apps"),c("apps"),p),g("source:plugins",n("penzor.source.plugins"),n("penzor.ov.plugins"),c("plugins")),g("exports",n("penzor.ledger.exports"),n("penzor.ov.exports"),c("exports"))]}),s&&o(N,{children:[o("div",{class:"pz-ov-group",children:n("penzor.ov.stale")}),o("div",{class:"pz-rows is-stale",children:x})]}),o("p",{class:"pz-note",children:n("penzor.unified.policy")})]})})}function $h({p:e}){let t=e.snap()?.ledger;if(!t?.complete||t.usage.usedBytes==null||t.quota.limitBytes<=0)return null;let n=e.t,r=s=>{let l=t.sources.find(c=>c.id===s);return l?.status==="ready"?l.liveBytes+l.trashBytes:0},a=[[n("penzor.ov.segNotes"),r("ama")],[n("penzor.ledger.apps"),r("apps")],[n("penzor.ov.segSync"),r("sync")],[n("penzor.uploads"),r("uploads")]];a.push([n("penzor.ov.segOther"),Math.max(0,t.usage.usedBytes-a.reduce((s,[,l])=>s+l,0))]);let i=a.filter(([,s])=>s>0);return o(N,{children:[o("div",{class:"pz-seg",role:"img","aria-label":i.map(([s,l])=>`${s} ${e.b(l)}`).join(", "),children:i.map(([s,l],c)=>o("span",{class:`c${c}`,style:{width:`${Math.max(.6,l/t.quota.limitBytes*100)}%`}},s))}),o("div",{class:"pz-legend",children:i.map(([s,l],c)=>o("span",{children:[o("i",{class:`c${c}`}),s," ",o("b",{children:e.b(l)})]},s))})]})}function Uh({p:e,dropDir:t}){let n=e.t,r=e.loc(),a=e.snap(),i=e.rows(),[s,l]=A(!1),[c,d]=A(null),g=ce(null),p=ce(null),u=ce(null),m=e.canWrite(),f=e.selection();oe(()=>(e.picker.files=()=>g.current?.click(),e.picker.folder=()=>p.current?.click(),()=>{e.picker.files=void 0,e.picker.folder=void 0}),[e]);let v=(b,T)=>{let R=b.currentTarget,X=se().getPathForFile,K=Array.from(R.files??[]);if(!X){R.value="",e.upload(Ui(K,T));return}let J=K.map(Le=>{try{return X(Le)}catch{return""}}),me=J.filter(Boolean);if(T){let Le=new Set;K.forEach((Ve,he)=>{let Te=Ve.webkitRelativePath??"",pt=J[he];!Te||!pt||pt.length<Te.length||Le.add(pt.slice(0,pt.length-Te.length)+Te.split("/")[0])}),me=[...Le]}R.value="",e.upload(me)},x=(b,T)=>{e.select(T,{toggle:b.metaKey||b.ctrlKey,range:b.shiftKey}),u.current?.focus({preventScroll:!0})},w=b=>{if(b.target?.tagName!=="INPUT"){if((b.metaKey||b.ctrlKey)&&b.key.toLowerCase()==="a"&&e.canMulti())b.preventDefault(),e.selectAll();else if(b.key==="Escape"&&f.length>1){b.preventDefault();let T=e.selected();e.select(T)}}},z=r.kind==="sync"?n(e.content()?.config.enabled?"penzor.tree.legacy":"penzor.ledger.sync"):r.kind==="ama"?n("penzor.ledger.ama"):r.kind==="app"&&!e.canWrite()?n("penzor.ledger.apps"):null,k=r.kind==="content"?wu(e,r.namespace):r.kind==="sync"?r.vault:r.kind==="ama"?a.ama?.find(b=>b.id===r.vaultId)?.name??"":r.kind==="app"?e.appLabel(r.appId):r.kind==="source"?n(or[r.source]):r.kind==="exports"?n("penzor.ledger.exports"):n("penzor.trash"),M=r.kind==="app"?e.appStack().map(b=>b.name):e.path()?e.path().split("/"):[],L=[...z?[{label:z,depth:null}]:[],{label:k,depth:0},...M.map((b,T)=>({label:b,depth:T+1}))],H=["mtime","size","name"],V=()=>e.setSort(H[(H.indexOf(e.sort())+1)%H.length]),Q=r.kind==="sync"?n("penzor.col.device"):r.kind==="trash"?n("penzor.col.origin"):r.kind==="exports"?n("penzor.col.app"):null,ee=r.kind==="trash"?n("penzor.col.deleted"):n("penzor.col.mtime"),S=()=>{if(r.kind==="content"){let T=e.content()?wn(e.content()):null,R=e.content()?.deviceId,X=r.namespace==="default"?n("penzor.content.noteAll"):r.namespace===`device-${R}`?n("penzor.content.noteSelf"):n("penzor.content.noteDevice",{name:k});return o(N,{children:[o("div",{class:"pz-title",children:[o("h1",{class:"pz-h1",children:k}),o("span",{class:"pz-badge",children:[o(W,{n:"cloud"}),T?.kind==="ok"&&T.at?n("penzor.content.badgeLast",{time:zn(T.at,e.locale())}):n("penzor.content.badge")]})]}),o("p",{class:"pz-note",children:X})]})}if(r.kind==="source")return o(N,{children:[o("div",{class:"pz-title",children:[o("h1",{class:"pz-h1",children:n(or[r.source])}),o("span",{class:"pz-badge",children:[o(W,{n:"lock"}),n("penzor.unified.readonly")]})]}),o("p",{class:"pz-note",children:n(r.source==="plugins"?"penzor.source.pluginNote":"penzor.source.readonly")})]});if(r.kind==="sync"){let T=a.sync?.vaults.find(K=>K.vault===r.vault);if(!T)return null;let R=!!e.thisDevice()&&T.devices.includes(e.thisDevice()),X=a.sync;return o(N,{children:[o("div",{class:"pz-title",children:[o("h1",{class:"pz-h1",children:T.vault}),R&&!e.content()?.config.enabled&&o("span",{class:"pz-badge",children:[o(W,{n:"refresh"}),n("penzor.sync.thisDevice")]})]}),e.content()?.config.enabled&&o("div",{class:"pz-legacy",children:[o(W,{n:"history"}),o("span",{children:[n("penzor.legacy.title"),o("small",{children:n("penzor.legacy.body")})]}),o("button",{class:"pz-btn",onClick:()=>e.go("content:default"),children:n("penzor.legacy.go")})]}),o("div",{class:"pz-meta",children:[o("span",{children:n("penzor.meta.files",{size:e.b(T.bytes),n:T.files.toLocaleString()})}),T.updatedAt&&o("span",{children:T.device?n("penzor.sync.last",{time:tn(Date.parse(T.updatedAt),e.locale()),device:T.device}):n("penzor.sync.lastNoDevice",{time:tn(Date.parse(T.updatedAt),e.locale())})}),T.devices.length>0&&o("span",{children:n("penzor.sync.devices",{n:T.devices.length})})]}),na(X.usedBytes,X.maxBytes)&&o("div",{class:"pz-meter",children:[o(Eo,{pct:X.usedBytes/X.maxBytes*100,warn:X.usedBytes/X.maxBytes>=.9}),o("span",{children:n("penzor.quota.sourceLimit",{max:e.b(X.maxBytes),used:e.b(X.usedBytes)})})]})]})}if(r.kind==="ama"){let T=a.ama?.find(R=>R.id===r.vaultId);return o(N,{children:[o("div",{class:"pz-title",children:[o("h1",{class:"pz-h1",children:T?.name}),o("span",{class:"pz-badge",children:[o(W,{n:"cloud"}),"Amadeus Cloud"]})]}),o("div",{class:"pz-meta",children:[o("span",{children:e.b(T?.sizeBytes??0)}),o("span",{children:n("penzor.unified.counted")})]})]})}if(r.kind==="app"){let T=a.apps?.apps.find(X=>X.appId===r.appId),R=a.apps;return o(N,{children:[o("div",{class:"pz-title",children:o("h1",{class:"pz-h1",children:e.appLabel(r.appId)})}),o("div",{class:"pz-meta",children:[o("span",{children:n("penzor.meta.files",{size:e.b(T?.bytes??0),n:(T?.files??0).toLocaleString()})}),!e.canWrite()&&o("span",{children:n("penzor.apps.by",{app:e.appLabel(r.appId)})})]}),e.canWrite()&&o("div",{class:"pz-meta",children:a.ledger?.complete&&a.ledger.usage.usedBytes!=null?o(N,{children:[o("span",{children:n("penzor.drive.total",{used:e.b(a.ledger.usage.usedBytes),max:e.b(a.ledger.quota.limitBytes)})}),o("button",{class:"pz-link",onClick:()=>e.go("ov"),children:n("penzor.drive.seeAll")})]}):o("span",{children:n("penzor.unified.unavailable")})}),R&&na(R.used,R.quota)&&o("div",{class:"pz-meter",children:[o(Eo,{pct:R.used/R.quota*100,warn:R.used/R.quota>=.9}),o("span",{children:n("penzor.quota.sourceLimit",{max:e.b(R.quota),used:e.b(R.used)})})]})]})}if(r.kind==="exports")return o(N,{children:[o("div",{class:"pz-title",children:o("h1",{class:"pz-h1",children:n("penzor.ledger.exports")})}),o("div",{class:"pz-meta",children:[o("span",{children:n("penzor.meta.files",{size:e.b(a.exports?.totalBytes??0),n:(a.exports?.total??0).toLocaleString()})}),o("span",{children:n("penzor.card.expFoot")})]})]});let b=i??[];return o(N,{children:[o("div",{class:"pz-title",children:o("h1",{class:"pz-h1",children:n("penzor.trash")})}),o("div",{class:"pz-meta",children:[o("span",{children:n("penzor.trash.meta",{n:b.length,size:e.b((a.trash??[]).reduce((T,R)=>T+(Number(R.fileSize)||0),0))})}),o("span",{children:n("penzor.trash.note")})]}),e.confirmEmpty()&&o("div",{class:"pz-confirm",children:[o("span",{children:n("penzor.confirm.empty",{n:b.length})}),o("button",{class:"pz-btn danger solid",onClick:()=>void e.emptyTrash(),children:n("penzor.trash.emptyBtn")}),o("button",{class:"pz-btn",onClick:()=>e.setConfirmEmpty(!1),children:n("penzor.cancel")})]})]})},E=e.selected(),O=f.length>1,I=f.reduce((b,T)=>b+(T.dir?0:T.size),0),te=e.txRows();return o(N,{children:[o("div",{class:"pz-top",children:[o("nav",{class:"pz-crumb",children:L.map((b,T)=>{let R=T===L.length-1,X=R?o("b",{children:b.label}):b.depth==null?o("span",{children:b.label}):o("button",{onClick:()=>e.up(b.depth),children:b.label});return o("span",{style:{display:"contents"},children:[X,!R&&o("i",{children:"\u203A"})]},T)})}),o("span",{class:"pz-sp"}),O?o(N,{children:[o("span",{class:"pz-selbar",children:n("penzor.sel.bar",{n:f.length,size:e.b(I)})}),f.some(b=>!b.dir)&&o("button",{class:"pz-btn",onClick:()=>void e.downloadMany(f),children:[o(W,{n:"download"}),n("penzor.act.download")]}),e.canManage()&&o("button",{class:"pz-btn",onClick:()=>e.setSide({kind:"move",at:[]}),children:[o(W,{n:"move"}),n("penzor.act.move")]}),e.canManage()&&o("button",{class:"pz-btn danger",onClick:()=>void e.trashMany(f),children:[o(W,{n:"trash"}),n("penzor.act.trash")]}),o("button",{class:"pz-ibtn",title:n("penzor.act.clearSel"),onClick:()=>e.select(E),children:o(W,{n:"x"})})]}):o(N,{children:[M.length>0&&o("button",{class:"pz-ibtn",title:n("penzor.act.up"),onClick:()=>e.up(),children:o(W,{n:"up"})}),r.kind==="source"&&(r.source==="agents"||r.source==="profile")&&o("button",{class:"pz-chip",onClick:()=>void e.ctx.app?.openSpace?.(r.source==="agents"?"agents":"calendar").then(b=>{b||e.ctx.app?.notify?.(n("penzor.source.entryUnavailable"))}),children:n(r.source==="agents"?"penzor.source.openAgents":"penzor.source.openCalendar")}),r.kind==="ama"&&o("button",{class:"pz-chip",onClick:()=>void e.ctx.app?.openSpace?.("amadeus"),children:[o(W,{n:"book"}),n("penzor.ama.open")]}),r.kind==="trash"&&e.canEmptyTrash()&&o("button",{class:"pz-btn danger",onClick:()=>e.setConfirmEmpty(!0),children:[o(W,{n:"trash"}),n("penzor.trash.emptyBtn")]}),m&&o("span",{class:"pz-split",children:[o("button",{class:"pz-btn pri",onClick:()=>e.picker.files?.(),children:[o(W,{n:"upload"}),n("penzor.act.upload")]}),o("button",{class:"pz-btn pri more",title:n("penzor.act.uploadMore"),"aria-label":n("penzor.act.uploadMore"),onClick:b=>{let T=b.currentTarget.getBoundingClientRect();d({x:T.right,y:T.bottom+4})},children:o(W,{n:"down"})})]}),m&&o("button",{class:"pz-ibtn",title:n("penzor.act.newFolder"),onClick:()=>e.startNewFolder(),children:o(W,{n:"folder-plus"})}),s||e.query()?o("input",{class:"pz-find",placeholder:n("penzor.search"),value:e.query(),autoFocus:!0,onInput:b=>e.setQuery(b.currentTarget.value),onKeyDown:b=>{b.key==="Escape"&&(e.setQuery(""),l(!1))},onBlur:()=>{e.query()||l(!1)}}):o("button",{class:"pz-ibtn",title:n("penzor.search"),onClick:()=>l(!0),children:o(W,{n:"search"})}),o("button",{class:"pz-chip",onClick:V,children:[r.kind==="trash"&&e.sort()==="mtime"?n("penzor.sort.deleted"):n(`penzor.sort.${e.sort()}`),o(W,{n:"down"})]})]})]}),m&&o(N,{children:[o("input",{ref:g,type:"file",multiple:!0,hidden:!0,onChange:b=>v(b,!1)}),o("input",{ref:p,type:"file",hidden:!0,webkitdirectory:!0,onChange:b=>v(b,!0)})]}),c&&o(_u,{x:c.x,y:c.y,alignRight:!0,onClose:()=>d(null),items:[{id:"files",label:n("penzor.act.uploadFiles"),icon:"upload",run:()=>e.picker.files?.()},{id:"folder",label:n("penzor.act.uploadFolder"),icon:"folder",run:()=>e.picker.folder?.()}]}),o("div",{class:"pz-scroll",ref:u,tabIndex:-1,onKeyDown:w,onContextMenu:b=>{!m||b.target.closest("tr")||(b.preventDefault(),e.openMenu(b.clientX,b.clientY,null))},children:o("div",{class:"pz-col",children:[S(),e.rowsError()?o("p",{class:"pz-note",children:n("penzor.err",{reason:e.rowsError()})}):i?i.length===0&&!te.length&&e.newFolder()==null?o("p",{class:"pz-note",children:e.query()?n("penzor.noMatch",{q:e.query()}):m&&!M.length?n("penzor.drive.empty"):n("penzor.folderEmpty")}):o("table",{class:"pz-table",children:[o("thead",{children:o("tr",{children:[o("th",{children:n("penzor.col.name")}),o("th",{class:"r",children:n("penzor.col.size")}),o("th",{children:ee}),Q&&o("th",{children:Q})]})}),o("tbody",{children:[e.newFolder()!=null&&o(qh,{p:e,cols:Q?4:3}),i.map((b,T)=>o(N,{children:[!b.dir&&(T===0||i[T-1].dir)&&te.map(R=>o(vu,{p:e,x:R},R.key)),o("tr",{class:`${e.isSelected(b.key)?"sel":""}${t&&t===b.key?" drop":""}`,"data-dir-id":m&&b.dir?b.key:void 0,"data-dir-name":m&&b.dir?b.name:void 0,onMouseDown:R=>{R.shiftKey&&R.preventDefault()},onClick:R=>x(R,b),onDblClick:()=>{b.dir?e.openDir(b):e.download(b)},onContextMenu:R=>{R.preventDefault(),e.openMenu(R.clientX,R.clientY,b)},children:[o("td",{class:"n",children:o("span",{children:[o(W,{n:Zr(b.name,b.dir)}),r.kind==="content"&&!M.length&&bu[b.name]?o(N,{children:[o("b",{children:n(bu[b.name])}),o("em",{class:"cnt",children:[b.name,(b.count??0)>0&&` \xB7 ${n("penzor.card.expSmall",{n:b.count.toLocaleString()})}`]})]}):o(N,{children:[o("b",{children:b.name}),b.count!=null&&b.count>0&&o("em",{class:"cnt",children:b.count.toLocaleString()})]})]})}),o("td",{class:"r",children:b.dir&&r.kind==="app"?"\u2014":e.b(b.size)}),o("td",{children:tn(b.mtime,e.locale())}),Q&&o("td",{class:b.col4?"":"dim",children:b.col4?b.col4===e.thisDevice()?n("penzor.side.thisDevice",{name:b.col4}):b.col4:"\u2014"})]})]},b.key)),(i.length===0||i[i.length-1].dir)&&te.map(b=>o(vu,{p:e,x:b},b.key))]})]}):o("p",{class:"pz-note",children:n("penzor.loading")}),r.kind==="trash"&&!!e.snap()?.amaTrash?.length&&o(Hh,{p:e})]})})]})}function wu(e,t){return t==="default"?e.t("penzor.scope.all"):t===`device-${e.content()?.deviceId}`?e.t("penzor.tree.thisBackup"):e.snap()?.contentDevices?.find(r=>`device-${r.id}`===t)?.name||`Forsion-${t.slice(7,15)}`}var bu={Amadeus:"penzor.cat.notes",agents:"penzor.source.agents",human:"penzor.cat.profile",Plugins:"penzor.cat.plugins"};function Hh({p:e}){let t=e.snap()?.amaTrash;return o("section",{class:"pz-ama-trash",children:[o("h3",{class:"pz-h3",children:e.t("penzor.trash.ama")}),o("p",{class:"pz-note",children:e.t("penzor.trash.amaNote")}),t?t.length?o("table",{class:"pz-table",children:[o("thead",{children:o("tr",{children:[o("th",{children:e.t("penzor.col.name")}),o("th",{children:e.t("penzor.col.size")}),o("th",{children:e.t("penzor.trash.expires")})]})}),o("tbody",{children:t.map(n=>o("tr",{children:[o("td",{children:[n.vaultName," / ",n.path]}),o("td",{children:e.b(n.size)}),o("td",{children:tn(Date.parse(n.expiresAt),e.locale())})]},n.id))})]}):o("p",{class:"pz-note",children:e.t("penzor.folderEmpty")}):o("p",{class:"pz-note",children:e.t("penzor.unified.unavailable")})]})}function qh({p:e,cols:t}){let[n,r]=A(e.newFolder()??""),a=ce(null),i=ce(!1);Xo(()=>{a.current?.focus(),a.current?.select()},[]);let s=()=>{i.current||(i.current=!0,e.createFolder(n))};return o("tr",{class:"sel",children:[o("td",{class:"n",children:o("span",{children:[o(W,{n:"folder-open"}),o("input",{ref:a,class:"pz-newname",value:n,onInput:l=>r(l.currentTarget.value),onKeyDown:l=>{l.key==="Enter"?s():l.key==="Escape"&&(i.current=!0,e.cancelNewFolder())},onBlur:s})]})}),o("td",{class:"r",children:"\u2014"}),o("td",{children:e.t("penzor.justNow")}),t>3&&o("td",{})]})}function vu({p:e,x:t}){let n=t.size>0?Math.min(100,Math.round(t.done/t.size*100)):0;return o("tr",{class:`pz-txrow ${t.state}`,title:t.state==="paused"?e.t("penzor.tx.paused"):void 0,children:[o("td",{class:"n",children:o("span",{children:[o(W,{n:Zr(t.name)}),o("b",{children:t.name})]})}),o("td",{class:"r",children:t.state==="active"?Pi(t.done,t.size,e.locale()):e.b(t.size)}),o("td",{children:t.state==="queued"?o("span",{class:"pz-inl",children:e.t("penzor.tx.queued")}):o("span",{class:"pz-inl",children:[o(Eo,{pct:n}),t.state==="paused"?e.t("penzor.tx.pause"):`${n}%`]})})]})}function zu(e,t){let n=e.t,r=e.loc().kind,a={id:"download",label:n("penzor.act.download"),icon:"download",run:()=>void e.download(t)};return r==="source"?t.dir||!t.ref?.downloadPath?[]:[a]:r==="app"&&!e.canManage()?t.dir?[]:[a]:r==="sync"||r==="ama"?t.dir?[]:[a]:r==="app"?[...t.dir?[]:[a],{id:"rename",label:n("penzor.act.rename"),icon:"pen",run:()=>{e.select(t),e.setSide({kind:"rename"})}},{id:"move",label:n("penzor.act.move"),icon:"move",run:()=>{e.select(t),e.setSide({kind:"move",at:[]})}},{id:"trash",label:n("penzor.act.trash"),icon:"trash",danger:!0,run:()=>void e.trash(t)}]:r==="exports"?[a,{id:"rename",label:n("penzor.act.rename"),icon:"pen",run:()=>{e.select(t),e.setSide({kind:"rename"})}},{id:"delete",label:n("penzor.act.delete"),icon:"trash",danger:!0,run:()=>{e.select(t),e.setSide({kind:"confirm",what:"deleteExport"})}}]:r==="trash"&&e.canManageRow(t)?[{id:"restore",label:n("penzor.act.restore"),icon:"undo",run:()=>void e.restore(t)},{id:"purge",label:n("penzor.act.purge"),icon:"trash",danger:!0,run:()=>{e.select(t),e.setSide({kind:"confirm",what:"purge"})}}]:[]}function Vh(e,t){let n=e.t;if(!t)return e.canWrite()?[{id:"upload",label:n("penzor.act.uploadHere"),icon:"upload",run:()=>e.picker.files?.()},{id:"new-folder",label:n("penzor.act.newFolder"),icon:"folder-plus",run:()=>e.startNewFolder()}]:[];let r=e.selection();return r.length>1&&r.some(a=>a.key===t.key)?Su(e,r):zu(e,t)}function Su(e,t){let n=e.t,r=e.loc().kind,a=t.filter(i=>!i.dir).length;return[...a?[{id:"download",label:n("penzor.sel.download",{n:a}),icon:"download",run:()=>void e.downloadMany(t)}]:[],...e.canManage()?[{id:"move",label:n("penzor.act.move"),icon:"move",run:()=>e.setSide({kind:"move",at:[]})},{id:"trash",label:n("penzor.act.trash"),icon:"trash",danger:!0,run:()=>void e.trashMany(t)}]:[]]}function _u({x:e,y:t,items:n,onClose:r,alignRight:a}){let i=ce(null),[s,l]=A({x:e,y:t});return oe(()=>{let c=i.current;if(c){let p=c.getBoundingClientRect(),u=a?e-p.width:e;l({x:Math.max(8,Math.min(u,window.innerWidth-p.width-8)),y:t+p.height>window.innerHeight-8?Math.max(8,t-p.height):t})}let d=p=>{p.target instanceof Node&&c?.contains(p.target)||r()},g=p=>{p.key==="Escape"&&r()};return window.addEventListener("pointerdown",d,!0),window.addEventListener("keydown",g,!0),window.addEventListener("blur",r),window.addEventListener("wheel",r,{passive:!0}),()=>{window.removeEventListener("pointerdown",d,!0),window.removeEventListener("keydown",g,!0),window.removeEventListener("blur",r),window.removeEventListener("wheel",r)}},[e,t]),n.length?Yd(o("div",{ref:i,class:"ctx-menu pz-menu",role:"menu",style:{left:`${s.x}px`,top:`${s.y}px`},children:n.map((c,d)=>o(N,{children:[c.danger&&d>0&&o("div",{class:"ctx-separator"}),o("button",{role:"menuitem",class:c.danger?"danger":"",onClick:()=>{r(),c.run()},children:[o(W,{n:c.icon}),c.label]})]},c.id))}),document.body):(queueMicrotask(r),null)}function jh({p:e}){let t=e.menu();return o(_u,{x:t.x,y:t.y,items:Vh(e,t.row),onClose:e.closeMenu})}function Cu({p:e}){yu(e);let t=e.t,n=e.loc(),r=e.selected();if(lo(n)||!r)return o(ta,{p:e,side:!0,children:o("p",{class:"pz-side-none",children:t("penzor.side.none")})});let a=e.snap(),i=e.side(),s=e.selection();if(s.length>1)return o(Gh,{p:e,sel:s});let l=n.kind==="content"?`${wu(e,n.namespace)} / ${r.key}`:n.kind==="sync"?`${n.vault} / ${r.key}`:n.kind==="ama"?`${a?.ama?.find(f=>f.id===n.vaultId)?.name??""} / ${r.key}`:n.kind==="app"?[e.appLabel(n.appId),...e.appStack().map(f=>f.name),r.name].join(" / "):n.kind==="source"?`${t(or[n.source])} / ${r.key}`:n.kind==="exports"?`${t("penzor.ledger.exports")} / ${r.name}`:r.col4??"",c=r.dir?"":(r.name.match(/\.([A-Za-z0-9]{1,8})$/)?.[1]??"").toUpperCase(),d=n.kind==="trash"?t("penzor.side.inTrash",{size:e.b(r.size)}):r.dir?r.count!=null?t("penzor.side.folder",{n:r.count.toLocaleString()}):t("penzor.side.folderPlain"):[c,e.b(r.size)].filter(Boolean).join(" \xB7 "),g=n.kind==="trash"?[[t("penzor.side.origin"),l],[t("penzor.side.deletedAt"),tn(r.mtime,e.locale())]]:[[t("penzor.side.where"),l],[t("penzor.side.mtime"),tn(r.mtime,e.locale())]];n.kind==="sync"&&!r.dir&&g.push([t("penzor.side.device"),r.col4?r.col4===e.thisDevice()?t("penzor.side.thisDevice",{name:r.col4}):r.col4:"\u2014"]),n.kind==="app"&&!r.dir&&!e.canWrite()&&g.push([t("penzor.side.from"),e.appLabel(n.appId)]),n.kind==="exports"&&g.push([t("penzor.side.from"),r.col4??"\u2014"]);let p=n.kind==="app"&&!e.canManage()?"penzor.source.appNote":Bd(n),u=zu(e,r),m=e.versions();return o(ta,{p:e,side:!0,children:[o("div",{class:"pz-thumb",children:o(W,{n:Zr(r.name,r.dir)})}),i.kind==="rename"?o(Wh,{p:e,row:r}):o("div",{class:"pz-fname",children:r.name}),o("div",{class:"pz-fsub",children:d}),i.kind==="confirm"?o("div",{class:"pz-confirm",style:{margin:0},children:[o("span",{children:t(i.what==="purge"?"penzor.confirm.purge":"penzor.confirm.deleteExport",{name:r.name})}),o("button",{class:"pz-btn danger solid",onClick:()=>void(i.what==="purge"?e.purge(r):e.deleteExport(r)),children:t(i.what==="purge"?"penzor.act.purge":"penzor.act.delete")}),o("button",{class:"pz-btn",onClick:()=>e.setSide({kind:"view"}),children:t("penzor.cancel")})]}):u.length>0&&o("div",{class:"pz-acts",children:u.filter(f=>f.id!=="move").map(f=>o("button",{class:`pz-btn${f.danger?" danger":""}${f.id==="restore"?" pri":""}`,onClick:()=>f.run(),children:[o(W,{n:f.icon}),f.id==="trash"?t("penzor.act.delete"):f.label]},f.id))}),i.kind==="move"&&o(Tu,{p:e,row:r,at:i.at}),o("dl",{class:"pz-dl",children:[g.map(([f,v])=>o(N,{children:[o("dt",{children:f}),o("dd",{children:v})]},f)),n.kind==="app"&&!r.dir&&o(N,{children:[o("dt",{children:t("penzor.side.versions")}),o("dd",{children:m==null?"\u2026":m.length?t("penzor.side.versionsN",{n:m.length}):t("penzor.side.versionsNone")})]})]}),e.canManage()&&!r.dir&&m&&m.length>0&&o("div",{class:"pz-vers",children:m.map(f=>o("div",{children:[o("span",{children:t("penzor.side.versionRow",{n:f.versionNumber,time:tn(f.createdAt,e.locale()),size:e.b(f.fileSize)})}),o("button",{class:"pz-link",onClick:()=>void e.restoreVersion(r,f),children:t("penzor.side.restoreVersion")})]},f.versionNumber))}),n.kind==="trash"&&r.dir&&(r.count??0)>0&&o("div",{class:"pz-tip",children:[o(W,{n:"undo"}),o("span",{children:t("penzor.side.inner",{n:r.count})})]}),n.kind==="exports"&&o("div",{class:"pz-tip",children:[o(W,{n:"trash"}),o("span",{children:t("penzor.side.exportNote")})]}),p&&o("div",{class:"pz-tip",children:[o(W,{n:"lock"}),o("span",{children:t(p,{vault:n.kind==="sync"?n.vault:""})})]})]})}function Wh({p:e,row:t}){let[n,r]=A(t.name),a=ce(null),i=ce(!1),s=()=>{i.current||(i.current=!0,e.rename(t,n))};return oe(()=>{let l=a.current;if(!l)return;l.focus();let c=t.dir?-1:t.name.lastIndexOf(".");l.setSelectionRange(0,c>0?c:t.name.length)},[t.key]),o("input",{ref:a,class:"pz-input",value:n,onInput:l=>r(l.currentTarget.value),onKeyDown:l=>{l.key==="Enter"?s():l.key==="Escape"&&(i.current=!0,e.setSide({kind:"view"}))},onBlur:s})}function Tu({p:e,row:t,at:n}){let r=e.t,a=e.loc(),i=a.kind==="app"?e.appLabel(a.appId):"",s=e.selection(),l=s.length>1,c=new Set(l?s.map(p=>p.key):[t.key]),d=(e.moveFolders()??[]).filter(p=>!c.has(p.id)),g=n[n.length-1]??{id:"ROOT",name:r("penzor.move.root",{app:i})};return o("div",{class:"pz-tip",style:{flexDirection:"column"},children:[o("div",{class:"pz-sh",style:{margin:0},children:r("penzor.move.title")}),o("div",{class:"pz-pick",children:[n.length>0&&o("button",{onClick:()=>e.moveBrowse(n.slice(0,-1)),children:[o(W,{n:"up"}),n.length>1?n[n.length-2].name:r("penzor.move.root",{app:i})]}),e.moveFolders()==null?o("span",{children:"\u2026"}):d.length===0?o("span",{children:r("penzor.move.noFolders")}):d.map(p=>o("button",{onClick:()=>e.moveBrowse([...n,p]),children:[o(W,{n:"folder"}),p.name]},p.id))]}),o("div",{class:"pz-acts",children:[o("button",{class:"pz-btn pri",onClick:()=>void(l?e.moveMany(s,g):e.moveTo(t,g)),children:r("penzor.move.here")}),o("button",{class:"pz-btn",onClick:()=>e.setSide({kind:"view"}),children:r("penzor.cancel")})]})]})}function Gh({p:e,sel:t}){let n=e.t,r=e.loc(),a=t.filter(p=>!p.dir),i=t.length-a.length,s=a.reduce((p,u)=>p+u.size,0),l=new Date,c=n("penzor.download.folder",{date:`${l.getFullYear()}-${String(l.getMonth()+1).padStart(2,"0")}-${String(l.getDate()).padStart(2,"0")}`}),d=r.kind==="app"?[e.appLabel(r.appId),...e.appStack().map(p=>p.name)].join(" / "):r.kind==="sync"?[r.vault,...e.path()?e.path().split("/"):[]].join(" / "):r.kind==="ama"?[e.snap()?.ama?.find(p=>p.id===r.vaultId)?.name??"",...e.path()?e.path().split("/"):[]].join(" / "):"",g=e.side();return o(ta,{p:e,side:!0,children:[o("div",{class:"pz-thumb",children:o(W,{n:"files"})}),o("div",{class:"pz-fname",children:n("penzor.sel.title",{n:t.length})}),o("div",{class:"pz-fsub",children:i?n("penzor.sel.subDirs",{size:e.b(s),files:a.length,dirs:i}):n("penzor.sel.sub",{size:e.b(s),files:a.length})}),o("div",{class:"pz-acts",children:Su(e,t).map(p=>o("button",{class:`pz-btn${p.danger?" danger":""}`,onClick:()=>p.run(),children:[o(W,{n:p.icon}),p.id==="trash"?n("penzor.act.delete"):p.label]},p.id))}),g.kind==="move"&&o(Tu,{p:e,row:t[0],at:g.at}),o("dl",{class:"pz-dl",children:[o("dt",{children:n("penzor.side.where")}),o("dd",{children:d}),a.length>1&&o(N,{children:[o("dt",{children:n("penzor.sel.saveTo")}),o("dd",{children:n("penzor.sel.saveToValue",{folder:c})})]})]}),i>0&&a.length>0&&o("div",{class:"pz-tip",children:[o(W,{n:"folder"}),o("span",{children:n("penzor.sel.noDirs")})]})]})}var Au=(e,t)=>t<60?e.t("penzor.tx.sec",{n:Math.max(1,Math.round(t))}):e.t("penzor.tx.min",{n:Math.ceil(t/60)}),Xh=(e,t)=>t!=null&&Date.now()-t<6e4?e.t("penzor.justNow"):tn(t,e.locale()),Kh=(e,t)=>{let n=t.error??"";return n==="too_large"?e.t("penzor.err.too_large",{size:e.b(t.size)}):n==="network"?e.t("penzor.err.network",{pct:t.size?Math.round(t.done/t.size*100):0}):n==="quota"||n==="account_changed"||n==="not_signed_in"||n==="gone"||n==="changed"||n==="storage_unavailable"||n==="popup_blocked"||n==="download_unavailable"||n==="download_failed"?e.t(`penzor.err.${n}`):e.t("penzor.err.other",{code:n||"?"})};function Jh(e){let t=e.filter(l=>l.state==="active"||l.state==="queued"||l.state==="paused"),n=t.filter(l=>l.state!=="paused"),r=n.reduce((l,c)=>l+Math.max(c.size,c.done),0),a=n.reduce((l,c)=>l+c.done,0),i=n.reduce((l,c)=>l+c.speed,0),s=i>0?(r-a)/i:null;return{live:t,failed:e.filter(l=>l.state==="failed"),done:e.filter(l=>l.state==="done"),up:t.filter(l=>l.kind==="up").length,down:t.filter(l=>l.kind==="down").length,pct:r>0?Math.min(100,Math.round(a/r*100)):0,eta:s!=null&&s>=5?s:null}}function Yh({p:e}){let t=e.t,n=e.card(),r=e.transfers(),a=e.notices();if(n==="hidden"||!r.length&&!a.length)return null;let i=Jh(r),s=i.failed.length+a.length,l=t("penzor.tx.counts",{up:i.up,down:i.down}),c=i.live.length?t("penzor.tx.busy",{n:i.live.length}):s?t("penzor.tx.failedN",{n:s}):t("penzor.tx.allDone"),d=i.live.length?[l,i.eta!=null?t("penzor.tx.eta",{eta:Au(e,i.eta)}):""].filter(Boolean).join(" \xB7 "):s?i.done.length?t("penzor.tx.restDone",{n:i.done.length}):"":t("penzor.tx.doneN",{n:i.done.length}),g={onMouseEnter:()=>e.holdCard(!0),onMouseLeave:()=>e.holdCard(!1)};if(n==="pill")return o("button",{class:"ui-popover pz-txpill",...g,onClick:()=>e.setCard("open"),title:t("penzor.tx.expand"),"aria-label":t("penzor.tx.expand"),children:[i.live.length?o("span",{class:"pz-ring",style:{"--p":i.pct}}):o(W,{n:s?"alert":"check"}),o("span",{children:i.live.length?t("penzor.tx.pill",{counts:l,pct:i.pct}):c}),o(W,{n:"up"})]});let p=f=>f.state==="failed"?0:f.state==="active"?1:f.state==="queued"||f.state==="paused"?2:3,u=[...r].filter(f=>f.state!=="canceled").sort((f,v)=>p(f)-p(v)||(p(f)===3?(v.finishedAt??0)-(f.finishedAt??0):0)),m=i.live.length>0&&i.live.every(f=>f.state==="paused");return o("div",{class:"ui-popover pz-txcard",role:"region","aria-label":c,...g,children:[o("div",{class:"pz-txhead",children:[o("b",{children:c}),o("span",{children:d}),o("i",{class:"sp"}),o("button",{class:"pz-ib",title:t("penzor.tx.collapse"),"aria-label":t("penzor.tx.collapse"),onClick:()=>e.setCard(i.live.length||s?"pill":"hidden"),children:o(W,{n:"down"})})]}),i.live.length>0&&o("div",{class:"pz-txall",children:o(Eo,{pct:i.pct})}),o("div",{class:"pz-txlist",children:[a.map(f=>o("div",{class:"pz-txrow2 is-fail",children:[o(W,{n:"alert"}),o("span",{class:"nm",children:t("penzor.tx.quota",{size:e.b(f.short)})}),o("span",{class:"acts",children:o("button",{class:"pz-ib",title:t("penzor.tx.remove"),onClick:()=>e.dismissNotice(f.id),children:o(W,{n:"x"})})}),o("span",{class:"sub",children:[o("span",{class:"err",children:t("penzor.tx.quotaSub")}),o("button",{class:"pz-link",onClick:()=>{e.dismissNotice(f.id),e.go("trash")},children:t("penzor.tx.freeSpace")})]})]},f.id)),u.map(f=>o(Zh,{p:e,x:f},f.id))]}),o("div",{class:"pz-txfoot",children:[i.live.length>0&&o("button",{onClick:()=>void e.txAll(m?"resume":"pause"),children:t(m?"penzor.tx.resumeAll":"penzor.tx.pauseAll")}),i.failed.length>0&&!i.live.length&&o("button",{onClick:()=>void e.txAll("retry"),children:t("penzor.tx.retryAll")}),i.done.length>0&&i.live.length>0&&o("button",{onClick:()=>void e.txClear("finished"),children:t("penzor.tx.clearDone")}),!i.live.length&&o("button",{onClick:()=>void e.txClear(s?"all":"finished"),children:t(s?"penzor.tx.clear":"penzor.tx.clearDone")})]})]})}function Zh({p:e,x:t}){let n=e.t,r=t.size>0?Math.min(100,t.done/t.size*100):0,a=t.state==="done"?"check":t.state==="failed"?"alert":t.kind==="up"?"tx-up":"tx-down",i=(l,c,d)=>o("button",{class:"pz-ib",title:c,"aria-label":c,onClick:d,children:o(W,{n:l})}),s;if(t.state==="failed")s=o("span",{class:"err",children:Kh(e,t)});else if(t.state==="done")s=o(N,{children:[o("span",{children:e.b(t.size)}),o("span",{children:n(t.kind==="up"?"penzor.tx.uploaded":"penzor.tx.downloaded",{time:Xh(e,t.finishedAt)})})]});else if(t.state==="queued")s=o(N,{children:[o("span",{children:e.b(t.size)}),o("span",{children:n("penzor.tx.queued")})]});else if(t.state==="paused")s=o(N,{children:[o("span",{children:e.b(t.size)}),o("span",{children:n("penzor.tx.paused")})]});else{let l=t.speed>0?(t.size-t.done)/t.speed:null;s=o(N,{children:[o("span",{children:Pi(t.done,t.size,e.locale())}),t.speed>0&&o("span",{children:[e.b(t.speed),"/s"]}),l!=null&&l>=5&&o("span",{children:n("penzor.tx.left",{eta:Au(e,l)})})]})}return o("div",{class:`pz-txrow2${t.state==="done"?" is-done":t.state==="failed"?" is-fail":""}`,children:[o(W,{n:a}),o("span",{class:"nm",title:t.name,children:t.name}),o("span",{class:"acts",children:[(t.state==="active"||t.state==="queued")&&i("pause",n("penzor.tx.pause"),()=>void e.txOp(t.id,"pause")),t.state==="paused"&&i("play",n("penzor.tx.resume"),()=>void e.txOp(t.id,"resume")),(t.state==="active"||t.state==="queued"||t.state==="paused")&&i("x",n("penzor.tx.cancel"),()=>void e.txOp(t.id,"cancel")),t.state==="failed"&&t.error!=="too_large"&&o("button",{class:"pz-link",onClick:()=>void e.txOp(t.id,"retry"),children:n("penzor.tx.retry")}),t.state==="failed"&&i("x",n("penzor.tx.remove"),()=>void e.txOp(t.id,"dismiss")),t.state==="done"&&(t.kind==="up"||t.localPath)&&o("button",{class:"pz-link",onClick:()=>e.locate(t),children:n(t.kind==="down"?"penzor.tx.reveal":"penzor.tx.locate")})]}),(t.state==="active"||t.state==="paused"||t.state==="queued")&&o(Eo,{pct:r}),o("span",{class:"sub",children:s})]})}function Qh(e,t){let n=bn(t.tangu);return!!e&&typeof e.registerView=="function"&&typeof e.registerListSource=="function"&&typeof e.openView=="function"&&typeof e.app?.openSpace=="function"&&typeof n?.cloudInvoke=="function"&&(!n.mobile||!!n.extendMobile)&&Qn(n)}function Eu(e,t=window){if(!Qh(e,t))return null;let n=bn(t.tangu),r=Od(e);vn(n)||n.cloudInvoke("penzor:device").then(u=>{let m=u?.name;typeof m=="string"&&m&&r.setDevice(m)}).catch(()=>{});let a=u=>m=>(Qe(o(u,{p:r}),m),()=>{Qe(null,m)});e.registerView({id:Sn.main,title:r.t("penzor.title"),icon:"penzor",workspaceSource:Li,mount:a(xu)}),e.registerView({id:Sn.info,title:r.t("penzor.details"),icon:"page",mount:a(Cu)});let i=e.listCapabilities?.includes("tree")??!1,s=typeof e.app?.setSpaceProgress=="function"?"hard-drive":"archive",l=()=>({overview:r.t("penzor.overview"),drive:r.t("penzor.drive"),driveIcon:s,sync:r.t("penzor.ledger.sync"),ama:r.t("penzor.ledger.ama"),apps:r.t("penzor.ledger.apps"),exports:r.t("penzor.ledger.exports"),trash:r.t("penzor.trash"),items:u=>r.t("penzor.items",{n:u}),files:r.t("penzor.uploads"),synced:r.t("penzor.tree.synced"),all:r.t("penzor.scope.all"),thisBackup:r.t("penzor.tree.thisBackup"),byApp:r.t("penzor.tree.byApp"),legacy:r.t("penzor.tree.legacy")}),c=()=>{let u=r.content();if(u){let f=wn(u);return[{key:"sync-home",title:r.t("penzor.sync.title"),icon:"refresh",hint:Rd(f,r.locale()),...f.kind==="warn"?{unread:!0}:{}}]}if(!r.hasSync())return[];let m=r.syncState();return[{key:"sync-home",title:r.t("penzor.sync.title"),icon:"refresh",hint:Id(m,r.locale()),...Yr(m)?{unread:!0}:{}}]};e.registerListSource({id:Li,title:r.t("penzor.title"),search:!0,items:u=>{let m=[...c(),...Ad(r.snap(),l(),r.locale(),r.content())],f=u?.query?.trim().toLowerCase()??"";if(f)return m.filter(x=>x.kind!=="folder"&&x.title.toLowerCase().includes(f)).map(({parent:x,...w})=>w);if(i)return m;let v=new Map(m.filter(x=>x.kind==="folder").map(x=>[x.key,x.title]));return m.filter(x=>x.kind!=="folder").map(({parent:x,...w})=>({...w,group:x?v.get(x):void 0}))},subscribe:u=>r.subscribe(u),activeKey:()=>so(r.loc()),open:u=>r.go(u.key),actions:[{id:"refresh",label:r.t("penzor.act.refresh"),icon:"refresh",primary:!0,run:()=>{r.refresh(),e.app?.sync?.refresh?.().catch(()=>{})}}],itemMenu:u=>{if(u.key.startsWith("sync:")){let m=u.key.slice(5);return[{id:"open-sync",label:r.t("penzor.act.openSync"),icon:"gear",run:()=>r.openSync()},{id:"copy-name",label:r.t("penzor.act.copyName"),icon:"copy",run:()=>{navigator.clipboard?.writeText(m).then(()=>e.app?.notify?.(r.t("penzor.toast.copied")))}}]}return u.key==="trash"&&r.canEmptyTrash()?[{id:"empty-trash",label:r.t("penzor.trash.emptyBtn"),icon:"trash",danger:!0,run:()=>{r.go("trash"),r.setConfirmEmpty(!0)}}]:[]}}),e.registerCommand?.({id:"open-penzor",title:()=>r.t("penzor.cmd.open"),keywords:"penzor cloud storage quota sync files trash drive upload \u84EC\u6D32\u4E91 \u4E91\u7A7A\u95F4 \u4E91\u76D8 \u7F51\u76D8 \u4E0A\u4F20 \u989D\u5EA6 \u540C\u6B65 \u56DE\u6536\u7AD9",run:()=>{e.app?.openSpace?.(cn)}});let d=u=>{if(!(u.key!==Nd||!u.newValue))try{let m=JSON.parse(u.newValue);m.page==="sync"&&r.hasSync()?e.app?.openSpace?.(cn).then(()=>r.go("sync-home")):typeof m.vault=="string"&&m.vault&&r.focusVault(m.vault)}catch{}},g=(()=>{try{return!new URLSearchParams(t.location.search).get("window")}catch{return!1}})();if(g){t.addEventListener("storage",d);try{t.localStorage.setItem(Di,"1")}catch{}}let p=r.dispose;return r.dispose=()=>{if(g){t.removeEventListener("storage",d);try{t.localStorage.removeItem(Di)}catch{}}p()},r}var eb=new TextEncoder,uw=new TextDecoder("utf-8",{ignoreBOM:!0}),Pu=e=>eb.encode(e);function Mu(e){let t="";for(let n=0;n<e.length;n+=32768)t+=String.fromCharCode(...e.subarray(n,n+32768));return btoa(t)}var tb=50*1024*1024,nb=new Set(["mode","type","source","name","summary","githubRepoUrl","npmPackage","version","readme","description","tags","minAppVersion","maxAppVersion","platforms"]);function ob(e){if(!e||typeof e!="object")return null;let t=e;if(t.id!==void 0&&(typeof t.id!="string"||!/^[a-zA-Z0-9_-]{1,128}$/.test(t.id))||!t.fields||typeof t.fields!="object"||Array.isArray(t.fields))return null;let n=new FormData,r=0;for(let[a,i]of Object.entries(t.fields)){if(!nb.has(a)||typeof i!="string"||(r+=i.length,r>25e4)||t.id&&!["mode","name","summary","version","readme","description","tags","minAppVersion","maxAppVersion","platforms"].includes(a))return null;n.append(a,i)}if(t.zip!==void 0){if(!t.zip||typeof t.zip.name!="string"||!/\.zip$/i.test(t.zip.name)||!(t.zip.data instanceof Uint8Array)||!t.zip.data.byteLength||t.zip.data.byteLength>tb)return null;n.append("zip",new Blob([new Uint8Array(t.zip.data)],{type:"application/zip"}),t.zip.name.replace(/[\\/]/g,"_").slice(-255))}return{path:`${t.id?`/market/mine/${t.id}/update`:"/market/submit"}${t.dryRun===!0?"?dryRun=1":""}`,body:n}}function Iu(e){e.handle("cloud:marketSubmit",async(t,n)=>{if(!e.isTrustedSender(t))return{status:0,error:"untrusted"};let r=ob(n);if(!r)return{status:400,json:{error:"invalid_request"}};let a=await e.getCloud();if(!a.token)return{status:401,error:"not_signed_in"};let i=Cn(a.base,r.path);if(!i)return{status:0,error:"no_cloud_url"};try{let s=await _n(a,i,{method:"POST",body:r.body,redirect:"error",signal:AbortSignal.timeout(12e4)});return{status:s.status,json:await s.json().catch(()=>null)}}catch(s){return{status:0,error:String(s?.message||s)}}})}async function Ru(e){if(!e.token)return"";try{let t=await Co(e,"POST","/api/auth/handoff",{},5e3);if(t.status===200&&typeof t.json?.code=="string"&&t.json.code)return`code=${encodeURIComponent(t.json.code)}`;if((t.status===404||t.status===405)&&!e.fetch)return`token=${encodeURIComponent(e.token)}`}catch{}return""}var rb=["membership","credits","storefront"],ab=["monthly","quarterly","yearly"],ib=/^[A-Za-z0-9_-]{1,64}$/;function Lu(e){let t={status:0,error:"untrusted"},n={ok:!1,error:"untrusted"};e.handle("auth:openAccountCenter",async(a,i)=>{if(!e.isTrustedSender(a))return n;let s=await e.getCloud(),l=s.base;if(!l)return{ok:!1};let c=i&&/^[a-z0-9-]+$/i.test(i)?`#${i}`:"",d=await Ru(s),g=`${l}/account${d?`?${d}`:""}${c}`;return s.signal?.throwIfAborted(),await e.openExternal(g),{ok:!0}}),e.handle("auth:openPayCenter",async(a,i,s,l)=>{if(!e.isTrustedSender(a))return n;if(i!==void 0&&!rb.includes(i))return{ok:!1,error:"invalid_tab"};if(s!==void 0&&(typeof s!="string"||!ib.test(s)))return{ok:!1,error:"invalid_plan"};if(l!==void 0&&!ab.includes(l))return{ok:!1,error:"invalid_period"};let c=(i??"membership")==="membership"&&s?`&plan=${encodeURIComponent(s)}${l?`&period=${l}`:""}`:"",d=await e.getCloud(),g=d.base;if(!g)return{ok:!1};let p=await Ru(d),u=`${g}/pay?tab=${i??"membership"}${c}${p?`&${p}`:""}&redirect=${encodeURIComponent(`${g}/account`)}`;return d.signal?.throwIfAborted(),await e.openExternal(u),{ok:!0}}),e.handle("profile:publicOrigin",async a=>{if(!e.isTrustedSender(a))return n;let{base:i}=await e.getCloud();if(!i)return{ok:!1};try{let s=await fetch(`${i}/account`,{redirect:"manual",signal:AbortSignal.timeout(4e3)});s.body?.cancel().catch(()=>{});let l=s.status>=300&&s.status<400?s.headers.get("location"):null;return l&&/^https?:\/\//i.test(l)?{ok:!0,origin:new URL(l).origin}:{ok:!1}}catch{return{ok:!1}}});let r=()=>e.getCloud();e.handle("account:quota",async a=>{if(!e.isTrustedSender(a))return t;let i=await r();if(!i.token)return{status:401,json:null};try{return await Co(i,"GET","/api/token-quota/my",void 0,15e3)}catch(s){return{status:0,json:{detail:String(s?.message||s)}}}}),e.handle("account:useResetCard",async(a,i)=>{if(!e.isTrustedSender(a))return t;let s=await r();if(!s.token)return{status:401,json:null};if(i!==void 0&&i!=="both")return{status:400,json:{error:"invalid_type",detail:`invalid reset card type: ${i}`}};let l=i??"both";try{return await Co(s,"POST","/api/token-quota/reset-card/use",{type:l},15e3)}catch(c){return{status:0,json:{detail:String(c?.message||c)}}}}),e.handle("account:bgConvert",async(a,i)=>{if(!e.isTrustedSender(a))return t;let s=await r();if(!s.token)return{status:401,json:null};if(!Number.isInteger(i)||i<1||i>100)return{status:400,json:{error:"invalid_percent"}};try{return await Co(s,"POST","/api/token-quota/background/convert",{percent:i},15e3)}catch(l){return{status:0,json:{detail:String(l?.message||l)}}}}),e.handle("account:bgAutoMain",async(a,i)=>{if(!e.isTrustedSender(a))return t;let s=await r();if(!s.token)return{status:401,json:null};if(typeof i!="boolean")return{status:400,json:{error:"invalid_request"}};try{return await Co(s,"POST","/api/token-quota/background/auto-main",{enabled:i},15e3)}catch(l){return{status:0,json:{detail:String(l?.message||l)}}}}),e.handle("feedback:submit",async(a,i)=>{if(!e.isTrustedSender(a))return n;let s=await e.getCloud();if(!s.base||!s.token)return{ok:!1,error:"not-logged-in"};let l=(i?.description||"").trim();if(!l)return{ok:!1,error:"empty"};if(l.length>1e4)return{ok:!1,error:"description-too-long"};let c=[],d=!1;if(i?.sessionLogJson){let g=Pu(i.sessionLogJson);if(g.length>5*1024*1024)return{ok:!1,error:"attachment-too-large"};c.push({filename:i.sessionLogName||"tangu-session.json",mime_type:"application/json",size:g.length,data_base64:Mu(g)})}try{let g=await _n(s,`${s.base}/api/feedback`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({description:l,attachments:c}),signal:AbortSignal.timeout(2e4)});if(!g.ok){let u=`HTTP ${g.status}`;try{u=(await g.json())?.detail||u}catch{}return{ok:!1,error:u}}return{ok:!0,id:(await g.json().catch(()=>({})))?.id??null,attachmentSkipped:d}}catch(g){return{ok:!1,error:g?.message||String(g)}}}),e.handle("cloud:fetch",async(a,i)=>{if(!e.isTrustedSender(a))return{status:0,error:"untrusted"};let s=i??{},l=typeof s.path=="string"?s.path:"",c=s.projectSource===void 0?null:s.projectSource;if(c!==null&&(typeof c!="string"||!/^[a-z0-9][a-z0-9-]{0,63}$/.test(c)))return{status:0,error:"bad_project_source"};let d=Math.min(12e4,Math.max(1e3,Number(s.timeoutMs)||15e3)),g=typeof s.method=="string"?s.method.toUpperCase():"GET";if(!/^(GET|POST|PUT|PATCH|DELETE)$/.test(g))return{status:0,error:"bad_method"};if(!l.startsWith("/"))return{status:0,error:"bad_path"};let p=await e.getCloud();if(!String(p.base||""))return{status:0,error:"no_cloud_url"};let u=Cn(p.base,l);if(!u)return{status:0,error:"bad_path"};if(!p.token)return{status:401,error:"not_signed_in"};let m=s.body!==void 0&&g!=="GET"&&g!=="DELETE",f=new AbortController,v=setTimeout(()=>f.abort(),d);try{let x=await _n(p,u,{method:g,headers:{...m?{"Content-Type":"application/json"}:{},...c?{"X-Project-Source":c}:{}},body:m?JSON.stringify(s.body):void 0,signal:f.signal});return{status:x.status,json:await x.json().catch(()=>null)}}catch(x){return{status:0,error:String(x?.message||x)}}finally{clearTimeout(v)}}),Iu(e)}var Ki={sender:"web"},sb=new Set(["auth:openAccountCenter","auth:openPayCenter"]),Du=(e,t)=>new URL(typeof e=="string"&&e?e:t.location.origin,t.location.href).origin;function lb(e,t=window){let n=new Map,r=!!(t.tangu?.mobile&&t.tangu.extendMobile),a=0,i=!1,s=new AbortController,l=f=>{if(i||f!==a)throw new Error("account_changed")},c=[],d={async getCloud(){let f=a,v=s.signal,x=await e.status().catch(()=>null);return l(f),{base:Du(x?.cloudUrl,t),token:x?.loggedIn?"session":"",signal:v,fetch:async(w,z)=>{l(f);let k=await e.request(w,{...z,signal:z.signal?AbortSignal.any([z.signal,v]):v});return l(f),k}}},handle:(f,v)=>{n.set(f,v)},async openExternal(f){if(r){if(!t.tangu?.openExternal)throw new Error("no_external_browser");await t.tangu.openExternal(f);return}let v=c.shift();v&&!v.closed?v.location.replace(f):t.open(f,"_blank","noopener,noreferrer")},isTrustedSender:()=>!0,log:f=>console.info("[forsion-extend]",f)};Lu(d);let g=lu(d,t,{...r?{saveDownload:async(f,v)=>{if(!e.saveDownload)throw new Error("download_unavailable");let x=await e.saveDownload(f,v);if(!x.ok)throw new Error(x.error||"download_failed")},openExternal:f=>d.openExternal(f)}:{}}),p=t.tangu?.onAuthChanged?.(()=>{a++,s.abort(),s=new AbortController,g.reset();for(let f of c.splice(0))f.close()}),u=async(f,...v)=>{let x=n.get(f);if(!x)throw new Error(`No handler registered for '${f}'`);if(f==="penzor:transfers")return x(Ki,...v);let w=a;if(i)return{ok:!1,error:"disposed"};let z=M=>w===a&&!i?M:{ok:!1,error:"account_changed"};if(!sb.has(f)||r)return z(await x(Ki,...v));let k=t.open("","_blank");k&&(k.opener=null,c.push(k));try{return z(await x(Ki,...v))}finally{let M=k?c.indexOf(k):-1;M>=0&&(c.splice(M,1),k.close())}},m=t.tangu?.authStatus;return{...m?{authStatus:async()=>{let f=await m();return{...f,cloudUrl:f?.cloudUrl?Du(f.cloudUrl,t):f?.cloudUrl}}}:{},cloudInvoke:u,cloudFetch:f=>u("cloud:fetch",f),openAccountCenter:r&&t.tangu?.openAccountCenter?f=>t.tangu.openAccountCenter(f):f=>u("auth:openAccountCenter",f),openExternal:async f=>{/^https?:\/\//i.test(f)&&(r?await d.openExternal(f):t.open(f,"_blank","noopener,noreferrer"))},dispose(){i=!0,a++,s.abort(),p?.();for(let f of c.splice(0))f.close();g.dispose()}}}function Nu(e,t=window){let n=t.tangu;if(!vn(n)||typeof e?.account?.request!="function"||typeof e.account.status!="function")return null;let{dispose:r,...a}=lb(e.account,t);return bl(a),r}var Ou;if(typeof ctx<"u"){let e=Nu(ctx);od(ctx),nd(ctx);let t=Sl(ctx),n=wd(ctx),r=Eu(ctx);(t||n||r||e)&&(Ou=()=>{t?.dispose(),n?.dispose(),r?.dispose(),e?.()})}return ep(cb);})();
|
|
1434
|
+
`;async function dn(e,...t){let n=se().cloudInvoke;if(!n)throw Error("content_sync_unavailable");let r=await n(e,...t);if(!r?.ok)throw Error(r?.error??"content_sync_unavailable");return r.value}var Mo=e=>e instanceof Error?e.message:String(e),qh={notes:{icon:"notebook",title:"penzor.cat.notes",desc:"penzor.cat.notesDesc"},agents:{icon:"bot",title:"penzor.cat.agents",desc:"penzor.cat.agentsDesc"},profile:{icon:"user-round",title:"penzor.cat.profile",desc:"penzor.cat.profileDesc"},plugins:{icon:"puzzle",title:"penzor.cat.plugins",desc:"penzor.cat.pluginsDesc"}};function Yi({on:e,disabled:t,label:n,onToggle:r}){return o("button",{type:"button",role:"switch",class:`settings-switch${e?" active":""}`,"aria-checked":e,"aria-label":n,disabled:t,onClick:a=>{a.stopPropagation(),r(!e)},children:o("span",{})})}function wu({p:e,legacy:t}){let n=e.t,[r,a]=A(null),[i,s]=A(!0),[l,c]=A(null),[d,g]=A(null),[u,p]=A(0),[m,f]=A(!1),[v,w]=A(!1),[k,z]=A(null),[x,M]=A(!1),[L,H]=A(!1),[V,ee]=A(!1),[te,S]=A({}),[E,O]=A(null),[I,ne]=A(!1),[b,T]=A(null),[R,K]=A(null),X=ce(!0),Y=ce(!1),me=ce(null),Le=async()=>{try{let D=await dn($t.get);if(!D?.available){X.current&&s(!1);return}X.current&&(Y.current=!0,a(D),s(!0))}catch(D){X.current&&(!Y.current&&/unavailable|not a Forsion Extend channel/i.test(String(D))?s(!1):z(Mo(D)))}};oe(()=>{X.current=!0,Le();let D=setInterval(()=>void Le(),1e3);return()=>{X.current=!1,clearInterval(D)}},[]),oe(()=>{if(!E&&!I)return;let D=re=>{re instanceof KeyboardEvent&&re.key!=="Escape"||re.type==="mousedown"&&re.target?.closest?.(".pz-cs-menu")||(O(null),ne(!1))};return document.addEventListener("mousedown",D),document.addEventListener("keydown",D),()=>{document.removeEventListener("mousedown",D),document.removeEventListener("keydown",D)}},[E,I]);let je=!!r&&!r.config.enabled&&r.config.revision===0&&!L,he=Ot(()=>r&&je?vu(r.config):null,[je,r?.config.revision]),Te=r?l??he??r.config:null,ft=!!r&&!x&&(je||!!l&&Xi(r.config,l)>0),Ct=ft&&Te?JSON.stringify(Te)+"#"+u:"";if(oe(()=>{if(g(null),!Ct)return;let D=!0,re=setTimeout(()=>{dn($t.preview,Te).then(we=>{D&&X.current&&g(we)},we=>{!D||!X.current||(/config_changed/.test(Mo(we))?c(null):z(Mo(we)))})},400);return()=>{D=!1,clearTimeout(re)}},[Ct]),!i)return t;if(!r||!Te)return o("div",{class:"pz-scroll",children:o("p",{class:"pz-note",children:k??n("penzor.loading")})});if(x)return o(Vh,{p:e,snap:r,refresh:Le,back:()=>M(!1)});let Tt=`device-${r.deviceId}`,on=r.devices.filter(D=>D.id!==r.deviceId),bt=(r.others?.files??0)>0,lt=D=>r.sources.find(re=>re.path===D),At=D=>r.sources.filter(re=>re.path.startsWith(D+"/")&&!re.path.slice(D.length+1).includes("/")),vt=D=>D==="default"?n("penzor.scope.all"):D===Tt?n("penzor.scope.self"):n("penzor.scope.with",{name:r.devices.find(re=>`device-${re.id}`===D)?.name??D.slice(7,15)}),ve=(D,re,we)=>{c(bu(Te,D,re,bt)),K({path:D,name:we,target:re}),O(null),z(null),f(!1)},yt=async D=>{w(!0),z(null);try{await D(),await Le()}catch(re){z(Mo(re))}finally{w(!1)}},Ae=()=>void yt(async()=>{try{await dn($t.apply,d.token)}catch(we){if(/preview_(changed|expired)/.test(Mo(we))){f(!0),p(Qe=>Qe+1);return}throw we}let D=Ut(Te,"Plugins")==="default",re=e.syncState()?.plugins;e.hasSync()&&re&&re.on!==D&&e.setSync("plugins",D),c(null),H(!1),f(!1)}),Hn=(D,re,we)=>{D.stopPropagation();let Qe=D.currentTarget.getBoundingClientRect(),it=me.current.getBoundingClientRect(),We=document.body.currentCSSZoom||1;O(E?.path===re?null:{path:re,name:we,x:(Qe.left-it.left)/We-4,y:(Qe.bottom-it.top)/We+4})},ct=({path:D,name:re})=>{let we=Ut(Te,D);return o("button",{type:"button",class:`pz-scope${we!=="default"?" is-alt":""}`,"aria-haspopup":"menu","aria-expanded":E?.path===D,onClick:Qe=>Hn(Qe,D,re),children:[o(W,{n:we==="default"?"cloud":we===Tt?"laptop":"monitor"}),vt(we),o(W,{n:"down"})]})},Xe=wn(r),xt=r.jobs.filter(D=>D.state==="queued"||D.state==="active"||D.state==="paused"),mt=Oi(r),Et=Xe.kind==="off"?o("span",{class:"pz-cs-status",children:[o(W,{n:"cloud-off"}),n("penzor.cs.statusOff")]}):Xe.kind==="paused"?o("span",{class:"pz-cs-status",children:[o(W,{n:"pause"}),n("penzor.cs.statusPaused")]}):Xe.kind==="run"?o("span",{class:"pz-cs-status is-ok",children:[o("span",{class:"pz-ring",style:`--p:${Xe.pct}`}),n("penzor.cs.statusRun",{pct:Xe.pct})]}):Xe.kind==="scan"?o("span",{class:"pz-cs-status is-ok",children:[o(W,{n:"refresh"}),n("penzor.cs.statusScan")]}):Xe.kind==="warn"?o("span",{class:"pz-cs-status is-warn",children:[o(W,{n:"alert"}),n("penzor.cs.statusWarn",{n:Xe.n})]}):o("span",{class:"pz-cs-status is-ok",children:[o(W,{n:"cloud-check"}),Xe.at?n("penzor.cs.statusOkAgo",{time:zn(Xe.at,e.locale())}):n("penzor.cs.statusOk")]}),Ht=()=>{let D=b;T(null),D!=null&&D.trim()!==r.deviceName&&yt(()=>dn($t.rename,D.trim()))},nt=xt.find(D=>D.state==="active")??xt[0],Tn=(D,re)=>{let we=qh[D],Qe=Ut(Te,re)!=="off",it=Gi.has(re)&&At(re).length>0,We=!!te[re]&&Qe,Pt=yu(Te,re),rn=lt(re),An=D==="notes"?rn?n("penzor.cat.files",{n:(rn.files??0).toLocaleString(),size:e.b(rn.size)}):"":D==="agents"?(()=>{let Fe=At(re),wt=Fe.filter(gt=>Ut(Te,gt.path)!=="off").length;return wt<Fe.length?n("penzor.cat.agentsSome",{n:Fe.length,m:wt}):n("penzor.cat.agentsN",{n:Fe.length})})():D==="profile"?n("penzor.cat.profileOn"):n("penzor.cat.pluginsN",{n:At(re).length}),En=o("b",{children:[n(we.title),it&&o("span",{class:"pz-cs-chev",children:o(W,{n:"right"})})]}),un=o("small",{children:Qe?o(N,{children:[o(ct,{path:re,name:n(we.title)}),An&&o(N,{children:[o("span",{class:"pz-sep",children:"\xB7"}),o("span",{children:An})]}),Pt>0&&o(N,{children:[o("span",{class:"pz-sep",children:"\xB7"}),o("button",{class:"pz-link",onClick:()=>M(!0),children:n("penzor.cat.custom",{n:Pt})})]})]}):n(we.desc)});return o(N,{children:[o("div",{class:`pz-sync-row${it&&Qe?" is-click":""}${We?" is-open":""}`,children:[it&&Qe?o("div",{class:"pz-sync-main",role:"button",tabIndex:0,"aria-expanded":We,onClick:()=>S({...te,[re]:!We}),onKeyDown:Fe=>{Fe.key==="Enter"&&S({...te,[re]:!We})},children:[o("span",{class:"pz-tile",children:o(W,{n:we.icon})}),o("span",{class:"pz-sync-txt",children:[En,un]})]}):o("div",{class:"pz-sync-main",children:[o("span",{class:"pz-tile",children:o(W,{n:we.icon})}),o("span",{class:"pz-sync-txt",children:[En,un]})]}),o(Yi,{on:Qe,label:n(we.title),disabled:v,onToggle:Fe=>ve(re,Fe?"default":"off",n(we.title))})]}),We&&At(re).map(Fe=>{let wt=Fe.path.slice(re.length+1),gt=Ut(Te,Fe.path)!=="off";return o("div",{class:"pz-cs-child",title:Fe.path,children:[o("span",{children:[o("b",{children:[wt,D==="notes"&&o("span",{class:"pz-cs-faint",children:n("penzor.cat.files",{n:(Fe.files??0).toLocaleString(),size:e.b(Fe.size)})})]}),gt?o(ct,{path:Fe.path,name:wt}):o("span",{class:"pz-cs-faint",children:n("penzor.cat.notSynced")})]}),o(Yi,{on:gt,label:wt,disabled:v,onToggle:Mt=>ve(Fe.path,Mt?Ut(Te,re):"off",wt)})]},Fe.path)})]},re)},Je=ft&&o("div",{class:"pz-cs-bar",role:"region","aria-label":n("penzor.rules.previewTitle"),children:[o(W,{n:"alert"}),o("span",{class:"txt",children:[je?d?n("penzor.cs.barFirst",{up:d.upload,down:d.download}):n("penzor.cs.firstTitle"):(()=>{let D=Xi(r.config,Te);return D===1&&R&&Ut(Te,R.path)===R.target&&Ut(r.config,R.path)!==R.target?n("penzor.cs.barOne",{name:R.name,scope:R.target==="off"?n("penzor.cs.offName"):vt(R.target)}):n("penzor.cs.barChanged",{n:D})})(),o("small",{children:m?n("penzor.cs.barRecount"):d?[je?n("penzor.cs.barSize",{size:e.b(d.bytes)}):n("penzor.cs.barCounts",{up:d.upload,down:d.download}),d.conflicts>0?n("penzor.cs.barConflicts",{n:d.conflicts}):"",je?n("penzor.cs.noDelete"):""].filter(Boolean).join(" \xB7 "):n("penzor.cs.barCounting")})]}),o("button",{class:"pz-btn",disabled:v,onClick:()=>{je&&H(!0),c(null),f(!1)},children:n(je?"penzor.cs.later":"penzor.cs.undo")}),o("button",{class:"pz-btn pri",disabled:v||!d||r.running,onClick:Ae,children:n(je?"penzor.cs.start":"penzor.cs.confirm")})]}),kt=D=>D.direction==="upload"?"tx-up":D.direction==="download"?"tx-down":"tx-sync";return o("div",{class:"pz-scroll",children:[o("style",{children:ku}),o("div",{class:"pz-col pz-cs",ref:me,children:[o(cr,{p:e}),o("div",{class:"pz-cs-head",children:[o("h1",{class:"pz-h1",children:n("penzor.sync.title")}),Et,o("span",{class:"grow"}),o("button",{class:"pz-btn",disabled:v||r.running||!r.config.enabled,onClick:()=>void yt(()=>dn($t.run)),children:[o(W,{n:"refresh"}),n("penzor.rules.run")]}),o("button",{class:"pz-btn","aria-label":n("penzor.cs.more"),"aria-haspopup":"menu",onClick:D=>{D.stopPropagation(),ne(!I)},children:o(W,{n:"more"})})]}),I&&o("div",{class:"pz-cs-menu",style:"right:0;top:64px",role:"menu",children:o("button",{class:"it",role:"menuitem",onClick:()=>{ne(!1),M(!0)},children:[o(W,{n:"gear"}),o("span",{children:o("b",{children:n("penzor.cs.advanced")})}),o("span",{})]})}),o("div",{class:"pz-cs-meta",children:[o("span",{class:"pz-cs-dev",children:[o(W,{n:"laptop"}),b!=null?o(N,{children:[n("penzor.cs.thisComputerLabel"),o("input",{value:b,maxLength:64,"aria-label":n("penzor.cs.rename"),ref:D=>D?.focus(),onInput:D=>T(D.currentTarget.value),onKeyDown:D=>{D.key==="Enter"&&Ht(),D.key==="Escape"&&T(null)},onBlur:Ht}),o("span",{class:"pz-cs-faint",children:n("penzor.cs.renameHint")})]}):o(N,{children:[n("penzor.cs.thisComputer",{name:r.deviceName}),o("button",{class:"pz-link","aria-label":n("penzor.cs.rename"),title:n("penzor.cs.rename"),onClick:()=>T(r.deviceName),children:o(W,{n:"pen"})})]})]}),o("span",{children:on.length?n("penzor.cs.othersN",{n:on.length,names:on.map(D=>D.name).join(e.locale()==="zh"?"\u3001":", ")}):n("penzor.cs.noOthers")}),o("button",{class:"pz-link",onClick:()=>ee(!V),children:[o(W,{n:"history"})," ",n("penzor.cs.log")]})]}),(k||r.error)&&o("p",{role:"alert",class:"pz-rule-error",style:"margin-top:14px",children:k??r.error}),je&&o("div",{class:"pz-sync-ask",children:[o("h4",{children:n("penzor.cs.firstTitle")}),o("p",{children:n("penzor.cs.firstBody")})]}),nt&&o("div",{class:"pz-cs-act",children:[o("div",{class:"row1",children:[o(W,{n:kt(nt)}),o("span",{class:"grow",children:[n(nt.direction==="download"?"penzor.cs.down":"penzor.cs.up",{name:nt.path.slice(nt.path.lastIndexOf("/")+1)}),nt.size!=null&&o("small",{children:[" ",e.b(nt.done)," / ",e.b(nt.size)]})]}),o("button",{class:"pz-btn",disabled:v,onClick:()=>void yt(()=>dn($t.pause,!r.paused)),children:[o(W,{n:r.paused?"play":"pause"}),n(r.paused?"penzor.rules.resume":"penzor.rules.pause")]})]}),Xe.kind==="run"&&o("div",{class:"pz-bar",children:o("span",{style:`width:${Xe.pct}%`})}),xt.length>1&&o("div",{class:"more",children:n("penzor.cs.waiting",{n:xt.length-1})})]}),mt.length>0&&!nt&&o("div",{class:"pz-cs-act is-warn",children:o("div",{class:"row1",children:[o(W,{n:"alert"}),o("span",{class:"grow",children:[n("penzor.cs.failedN",{n:mt.length}),o("small",{children:[" ",mt[0].error??""]})]}),o("button",{class:"pz-btn",disabled:v||r.running,onClick:()=>void yt(()=>dn($t.retry)),children:n("penzor.cs.retry")}),o("button",{class:"pz-btn",onClick:()=>ee(!0),children:n("penzor.cs.seeLog")})]})}),o("div",{class:"pz-sync-card",children:[Po.map(D=>Tn(D.id,D.path)),bt&&o("div",{class:"pz-sync-row",children:[o("div",{class:"pz-sync-main",children:[o("span",{class:"pz-tile",children:o(W,{n:"folder"})}),o("span",{class:"pz-sync-txt",children:[o("b",{children:n("penzor.cat.others")}),o("small",{children:Ut(Te,"")!=="off"?o(N,{children:[o(ct,{path:"",name:n("penzor.cat.others")}),o("span",{class:"pz-sep",children:"\xB7"}),o("span",{children:n("penzor.cat.files",{n:r.others.files.toLocaleString(),size:e.b(r.others.size)})})]}):n("penzor.cat.othersDesc")})]})]}),o(Yi,{on:Ut(Te,"")!=="off",label:n("penzor.cat.others"),disabled:v,onToggle:D=>ve("",D?"default":"off",n("penzor.cat.others"))})]})]}),o("p",{class:"pz-cs-note",children:n("penzor.cs.note")}),V&&o(N,{children:[o("h3",{class:"pz-cs-sec",children:[n("penzor.cs.log"),o("span",{class:"grow"}),mt.length>0&&o("button",{class:"pz-btn",disabled:v||r.running,onClick:()=>void yt(()=>dn($t.retry)),children:n("penzor.cs.retry")})]}),o("div",{class:"pz-cs-log",children:r.jobs.length?r.jobs.slice(-30).reverse().map(D=>o("div",{class:"f",children:[o(W,{n:kt(D)}),o("span",{children:[D.path,D.error&&o("small",{children:[" \xB7 ",D.error]})]}),o("small",{children:[n(`penzor.rules.state.${D.state}`)," \xB7 ",zn(D.finishedAt??D.at,e.locale())]})]},D.id)):o("p",{class:"pz-cs-note",children:n("penzor.cs.logEmpty")})}),o("p",{class:"pz-cs-note",children:n("penzor.cs.logNote")})]}),Je,E&&o("div",{class:"pz-cs-menu",role:"menu",style:`left:${E.x}px;top:${E.y}px`,children:[o("div",{class:"cap",children:n("penzor.scope.menuTitle",{name:E.name})}),["default",Tt,...on.map(D=>`device-${D.id}`)].map((D,re)=>o(N,{children:[re===2&&o("hr",{}),o("button",{class:"it",role:"menuitemradio","aria-checked":Ut(Te,E.path)===D,onClick:()=>ve(E.path,D,E.name),children:[o(W,{n:D==="default"?"cloud":D===Tt?"laptop":"monitor"}),o("span",{children:[o("b",{children:vt(D)}),re<2&&o("small",{children:n(re===0?"penzor.scope.allDesc":"penzor.scope.selfDesc")})]}),Ut(Te,E.path)===D?o("span",{class:"tick",children:o(W,{n:"check"})}):o("span",{})]})]},D)),E.path==="human"&&o("div",{class:"cap",children:n("penzor.scope.calendarNote")}),o("div",{class:"cap",children:n("penzor.scope.menuFoot")})]})]})]})}function Vh({p:e,snap:t,refresh:n,back:r}){let a=e.t,[i,s]=A(null),[l,c]=A(null),[d,g]=A(!1),[u,p]=A(null),m=i??t.config,f=!!i,v=x=>x==="default"?a("penzor.rules.default"):x==="off"?a("penzor.rules.off"):t.devices.find(M=>"device-"+M.id===x)?.name??`${a("penzor.rules.device")} ${x.slice(7)}`,w=x=>{let M=structuredClone(m);x(M),s(M),c(null),p(null)},k=async x=>{g(!0),p(null);try{await x(),await n()}catch(M){p(Mo(M))}finally{g(!1)}},z=[...new Set(["default",`device-${t.deviceId}`,...t.devices.map(x=>`device-${x.id}`),...m.rules.map(x=>x.target),"off"])];return o("div",{class:"pz-scroll",children:[o("style",{children:ku}),o("div",{class:"pz-col pz-rules",children:[o("button",{class:"pz-link",onClick:r,children:["\u2190 ",a("penzor.cs.backSimple")]}),o("div",{class:"pz-rule-head",children:o("h1",{class:"pz-h1",children:a("penzor.cs.advanced")})}),o("p",{class:"pz-rule-meta",children:t.deviceName}),u&&o("p",{role:"alert",class:"pz-rule-error",children:u}),o("div",{class:"pz-rule-tools",children:[o("label",{class:"pz-rule-enable",children:[o("input",{type:"checkbox",checked:m.enabled,onChange:x=>w(M=>{M.enabled=x.currentTarget.checked})}),a("penzor.rules.enable")]}),o("button",{class:"pz-btn",onClick:()=>w(x=>x.rules.push({id:`rule-${crypto.randomUUID()}`,source:"",target:"default"})),children:a("penzor.rules.add")})]}),o("div",{class:"pz-rule-table",children:[o("div",{class:"pz-rule-row pz-rule-label",children:[o("span",{children:a("penzor.rules.source")}),o("span",{children:a("penzor.rules.destination")}),o("span",{})]}),m.rules.map((x,M)=>o("div",{class:"pz-rule-row",children:[o("input",{"aria-label":`${a("penzor.rules.source")} ${M+1}`,list:"pz-content-sources",placeholder:"Forsion",value:x.source,onInput:L=>w(H=>{H.rules[M].source=L.currentTarget.value,delete H.rules[M].sourceId})}),o("select",{"aria-label":`${a("penzor.rules.destination")} ${M+1}`,value:x.target,onChange:L=>w(H=>{H.rules[M].target=L.currentTarget.value}),children:z.map(L=>o("option",{value:L,children:v(L)},L))}),o("button",{class:"pz-btn","aria-label":`${a("penzor.rules.remove")} ${M+1}`,onClick:()=>w(L=>{L.rules.splice(M,1)}),children:"\xD7"})]},x.id))]}),o("datalist",{id:"pz-content-sources",children:t.sources.filter(x=>x.kind==="folder").map(x=>o("option",{value:x.path},x.path))}),o("p",{class:"pz-rule-note",children:[a("penzor.rules.inherit"),o("br",{}),a("penzor.rules.namespace"),o("br",{}),a("penzor.rules.human")]}),o("div",{class:"pz-rule-actions",children:[f&&o("button",{class:"pz-btn",onClick:()=>{s(null),c(null)},children:a("penzor.cancel")}),o("button",{class:"pz-btn pri",disabled:d||t.running,onClick:()=>void k(async()=>c(await dn($t.preview,m))),children:a("penzor.rules.preview")})]}),l&&o("div",{class:"pz-rule-preview",role:"region","aria-label":a("penzor.rules.previewTitle"),children:[o("h2",{children:a("penzor.rules.previewTitle")}),o("p",{children:a("penzor.rules.previewCounts",{up:l.upload,down:l.download,conflicts:l.conflicts})}),o("p",{class:"pz-rule-note",children:a("penzor.rules.retain")}),o("div",{class:"pz-rule-actions",children:[o("button",{class:"pz-btn",onClick:()=>c(null),children:a("penzor.rules.back")}),o("button",{class:"pz-btn pri",disabled:d,onClick:()=>void k(async()=>{await dn($t.apply,l.token),s(null),c(null)}),children:a("penzor.rules.apply")})]})]})]})]})}function _u(e){let[,t]=A(0);oe(()=>{let n=e.subscribe(()=>t(r=>r+1));return t(r=>r+1),n},[e])}function oa(e){return o("div",{ref:e.rootRef,class:`${e.side?"pz-side":"pz"}${e.extra?` ${e.extra}`:""}`,lang:e.p.locale()==="zh"?"zh-CN":"en",...e.on,children:[o("style",{children:au}),e.children]})}var Io=({pct:e,warn:t})=>o("div",{class:`pz-bar${t?" is-low":""}`,children:o("span",{style:{width:`${Math.max(0,Math.min(100,e)).toFixed(1)}%`}})});function Cu({p:e}){_u(e);let t=ce(null),n=ce(null);oe(()=>{e.enter(),e.refresh(),co(e.loc())&&e.ctx.closeView?.("penzor-info",{collapse:!0});let p=t.current;if(!p||typeof IntersectionObserver>"u")return;let m=!0;e.setVisible(!0);let f=new IntersectionObserver(v=>{let w=v.some(k=>k.isIntersecting);w&&!m&&(e.enter(),e.refresh()),m=w,e.setVisible(w)});return f.observe(p),()=>{f.disconnect(),e.setVisible(!1)}},[e]);let[r,a]=A(null),i=p=>Array.from(p.dataTransfer?.types??[]).includes("Files"),s=p=>{let m=p.target?.closest?.("tr[data-dir-id]");return m?{id:m.dataset.dirId,name:m.dataset.dirName??""}:null},l=()=>e.appStack()[e.appStack().length-1]?.name??e.t("penzor.drive"),c=e.canWrite()&&e.auth()==="in"?{onDragOver:p=>{if(!i(p))return;p.preventDefault(),p.stopPropagation(),p.dataTransfer&&(p.dataTransfer.dropEffect="copy");let m=s(p),f=m?.name||l();(r?.place!==f||r?.target?.id!==m?.id)&&a({place:f,target:m})},onDragLeave:p=>{t.current?.contains(p.relatedTarget)||a(null)},onDrop:p=>{if(!i(p))return;p.preventDefault(),p.stopPropagation();let m=s(p);a(null);let f=se().getPathForFile;if(!f){p.dataTransfer&&e.upload(fu(p.dataTransfer),m);return}let v=Array.from(p.dataTransfer?.files??[]).map(w=>{try{return f(w)}catch{return""}}).filter(Boolean);e.upload(v,m)}}:{};oe(()=>{e.canWrite()||a(null)},[e.canWrite()]);let d=e.t,g=e.auth(),u;return g==="out"?u=o(Tu,{p:e}):e.loc().kind==="sync-home"?u=o(wu,{p:e,legacy:o(Wh,{p:e})}):e.snap()?e.error()?u=o("div",{class:"pz-scroll",children:o("p",{class:"pz-note",children:e.error()})}):e.loc().kind==="overview"?u=o(Xh,{p:e,upload:()=>{e.go("app:penzor"),n.current?.click()}}):u=o(Yh,{p:e,dropDir:r?.target?.id??null}):u=o("div",{class:"pz-scroll",children:o("p",{class:"pz-note",children:e.error()??d("penzor.loading")})}),o(oa,{p:e,rootRef:t,extra:r?"pz-drop":"",on:c,children:[o("input",{class:"pz-root-upload",ref:n,type:"file",multiple:!0,hidden:!0,onChange:p=>{let m=p.currentTarget,f=se().getPathForFile,v=f?Array.from(m.files??[]).map(w=>f(w)).filter(Boolean):Wi(Array.from(m.files??[]),!1);e.go("app:penzor"),e.upload(v),m.value=""}}),u,r&&o("div",{class:"pz-dropbar",children:o("span",{children:[o(W,{n:"upload"}),d("penzor.drop.to",{place:r.place})]})}),e.menu()&&o(tb,{p:e}),o(sb,{p:e})]})}var jh={dropbox:"Dropbox",s3:"S3",webdav:"WebDAV"};function Zi({on:e,disabled:t,label:n,title:r,onToggle:a}){return o("button",{type:"button",role:"switch",class:`settings-switch${e?" active":""}`,"aria-checked":e,"aria-label":n,title:r,disabled:t,onClick:i=>{i.stopPropagation(),a(!e)},children:o("span",{})})}var Qi=({tone:e,text:t,title:n})=>o("span",{class:`pz-sync-state is-${e}`,title:n,children:[e!=="off"&&o("i",{}),t]});function Wh({p:e}){let t=e.t,n=e.syncState(),[r,a]=A(!1);if(!n)return o("div",{class:"pz-scroll",children:o("p",{class:"pz-note",children:t("penzor.loading")})});if(!n.signedIn)return o(Tu,{p:e});let i=e.snap(),s=n.notes,l=t("penzor.ledger.sync"),c=s.maxBytes??i?.sync?.maxBytes??0,d=i?.sync?.maxFileBytes||50*1024*1024,g=s.vault?i?.sync?.vaults.find(S=>S.vault===s.vault)??null:null,u=Od(n,c),p=s.on?s.last?.skippedLarge??0:0,m=s.rootName?t("penzor.sync.notesNamed",{name:s.rootName}):t("penzor.sync.notesPlain"),f=()=>e.openSync(),v=()=>{if(s.pending)return{tone:"wait",text:t("penzor.sync.waiting")};if(!s.on)return{tone:"off",text:t("penzor.sync.off")};let S=sr(n);if(S!=null)return{tone:"ok",text:S>0?t("penzor.sync.running",{pct:Math.round(S*100)}):t("penzor.sync.runningPlain")};if(u)return{tone:"warn",text:t("penzor.sync.overQuota")};if(Ni(n))return{tone:"warn",text:t("penzor.sync.failed")};if(s.backend==="folder")return{tone:"ok",text:t("penzor.sync.toFolder")};let E=jh[s.backend];return E?{tone:"ok",text:t("penzor.sync.to",{name:E})}:s.last?{tone:"ok",text:s.localBytes!=null?t("penzor.sync.doneSize",{size:e.b(s.localBytes)}):t("penzor.sync.done")}:{tone:"ok",text:t("penzor.sync.firstPending")}},w={tone:"off",text:t("penzor.sync.off")},k=(S,E)=>E?`${S} \xB7 ${t("penzor.sync.metaLast",{time:zn(E,e.locale())})}`:S,z=()=>{let S=n.agents;if(!S.on)return w;if(S.running)return{tone:"ok",text:t("penzor.sync.runningPlain")};let E=t("penzor.sync.agentsN",{n:S.count});return S.last&&!S.last.ok?{tone:"warn",text:t("penzor.sync.failed"),title:S.last.error}:S.last&&S.last.conflicts>0?{tone:"warn",text:t("penzor.sync.conflictsN",{n:S.last.conflicts}),title:t("penzor.sync.conflictsHint")}:{tone:"ok",text:k(E,S.last?.at)}},x=()=>{let S=n.plugins;return S.on?(S.pending??0)>0?{tone:"wait",text:t("penzor.sync.pluginsPending",{n:S.pending})}:{tone:"ok",text:k(t("penzor.sync.pluginsN",{n:S.count}),S.lastAt)}:w},M=S=>E=>{e.setSync(S,E)},L=s.available===!1&&!s.on&&(s.backend==="off"||s.backend==="penzor"),H=[e.thisDevice()?t("penzor.sync.metaDevice",{name:e.thisDevice()}):null,s.on?s.last?t("penzor.sync.metaLast",{time:zn(s.last.at,e.locale())}):t("penzor.sync.metaNever"):null,s.on&&s.backend!=="off"?Bi(s,e.locale()):null].filter(S=>!!S),V=v(),ee=g?[...new Set([...g.devices,...g.device?[g.device]:[]])]:[],te=i?.ama?i.ama.reduce((S,E)=>S+E.sizeBytes,0):null;return o("div",{class:"pz-scroll",children:o("div",{class:"pz-col",children:[o(cr,{p:e}),o("div",{class:"pz-title pz-sync-head",children:[o("h1",{class:"pz-h1",children:t("penzor.sync.title")}),o("span",{class:"pz-badge",children:[o(W,{n:"check"}),$d(n,e.locale())]})]}),H.length>0&&o("div",{class:"pz-meta",children:H.map(S=>o("span",{children:S},S))}),s.pending&&o(Gh,{p:e,s:n}),u&&o("div",{class:"pz-sync-ask is-warn",role:"region",children:[o("h4",{children:s.localBytes!=null&&c>0?t("penzor.sync.quotaTitle",{size:e.b(s.localBytes),ledger:l,max:e.b(c)}):t("penzor.sync.quotaTitlePlain",{ledger:l})}),o("p",{children:[t("penzor.sync.quotaBody"),p>0&&` ${t("penzor.sync.quotaLarge",{size:e.b(d),n:p})}`]}),o("div",{class:"pz-acts",children:[o("button",{class:"pz-btn pri",onClick:()=>void On("membership").then(S=>{S||e.ctx.app?.notify?.(t("err.openFailed"))}),children:t("member.upgrade")}),g&&o("button",{class:"pz-btn",onClick:()=>e.go(`sync:${g.vault}`),children:t("penzor.sync.quotaSee")})]})]}),o("div",{class:"pz-sync-card",children:[o("div",{class:`pz-sync-row is-click${r?" is-open":""}`,children:[o("button",{type:"button",class:"pz-sync-main","aria-expanded":r,onClick:()=>a(!r),children:[o("span",{class:"pz-tile",children:o(W,{n:"notebook"})}),o("span",{class:"pz-sync-txt",children:[o("b",{children:m}),o("small",{children:t("penzor.sync.notesDesc")})]}),o(Qi,{...V})]}),o(Zi,{on:s.on&&!s.pending,label:m,disabled:!!s.pending||L||e.syncBusy("notes"),title:s.pending?t("penzor.sync.decideAbove"):void 0,onToggle:M("notes")})]}),r&&o("div",{class:"pz-sync-sub",children:[o("div",{class:"kv",children:[o("span",{children:t("penzor.sync.kvSchedule")}),o("span",{children:Bi(s,e.locale())}),o("button",{class:"pz-link",onClick:f,children:t("penzor.sync.change")})]}),o("div",{class:"kv",children:[o("span",{children:t("penzor.sync.kvDirection")}),o("span",{children:t(`penzor.sync.dir.${s.direction}`)}),o("button",{class:"pz-link",onClick:f,children:t("penzor.sync.change")})]}),p>0&&o("div",{class:"kv",children:[o("span",{children:t("penzor.sync.kvSkipped")}),o("span",{children:t("penzor.sync.skippedN",{n:p,size:e.b(d)})}),o("span",{})]}),s.backend==="penzor"&&s.vault&&o("div",{class:"kv",children:[o("span",{children:t("penzor.sync.kvWhere")}),o("span",{children:i?.sync&&c>0?t("penzor.sync.whereUsed",{ledger:l,vault:s.vault,used:e.b(i.sync.usedBytes),max:e.b(c)}):t("penzor.sync.where",{ledger:l,vault:s.vault})}),g?o("button",{class:"pz-link",onClick:()=>e.go(`sync:${g.vault}`),children:t("penzor.sync.open")}):o("span",{})]})]}),o("div",{class:"pz-sync-row",children:[o("div",{class:"pz-sync-main",children:[o("span",{class:"pz-tile",children:o(W,{n:"bot"})}),o("span",{class:"pz-sync-txt",children:[o("b",{children:t("penzor.sync.agents")}),o("small",{children:t("penzor.sync.agentsDesc")})]}),o(Qi,{...z()})]}),o(Zi,{on:n.agents.on,label:t("penzor.sync.agents"),disabled:e.syncBusy("agents"),onToggle:M("agents")})]}),o("div",{class:"pz-sync-row",children:[o("div",{class:"pz-sync-main",children:[o("span",{class:"pz-tile",children:o(W,{n:"puzzle"})}),o("span",{class:"pz-sync-txt",children:[o("b",{children:t("penzor.sync.plugins")}),o("small",{children:t("penzor.sync.pluginsDesc")})]}),o(Qi,{...x()})]}),o(Zi,{on:n.plugins.on,label:t("penzor.sync.plugins"),disabled:e.syncBusy("plugins"),onToggle:M("plugins")})]})]}),o("div",{class:"pz-h3",children:t("penzor.sync.devicesTitle")}),i?ee.length===0?o("p",{class:"pz-sync-none",children:t("penzor.sync.noDevices")}):o("div",{class:"pz-rows pz-sync-dev",children:ee.map(S=>o("div",{class:"row",children:[o(W,{n:"laptop"}),o("span",{class:"t",children:[S,S===e.thisDevice()&&o("em",{children:t("penzor.sync.thisOne")})]}),o("span",{class:"s",children:g?.device===S&&g.updatedAt?t("penzor.sync.lastWrite",{time:zn(Date.parse(g.updatedAt),e.locale())}):""})]},S))}):o("p",{class:"pz-sync-none",children:t("penzor.loading")}),o("div",{class:"pz-h3",children:t("penzor.sync.phoneTitle")}),o("div",{class:"pz-tip",children:[o(W,{n:"info"}),o("span",{children:te!=null?t("penzor.sync.phoneTip",{size:e.b(te)}):t("penzor.sync.phoneTipPlain")})]}),o("p",{class:"pz-note",children:[t("penzor.sync.foot"),o("button",{class:"pz-link",onClick:f,children:t("penzor.sync.footLink")})]})]})})}function Gh({p:e,s:t}){let n=e.t,r=t.notes.pending,a=e.syncBusy("resolve"),i=new Date,s=n("penzor.sync.backupName",{name:t.notes.rootName??n("penzor.sync.notesPlain"),date:`${i.getFullYear()}-${String(i.getMonth()+1).padStart(2,"0")}-${String(i.getDate()).padStart(2,"0")}`}),l=r.cloudDevice?n("penzor.sync.askCloud",{device:r.cloudDevice,files:r.cloudFiles.toLocaleString(),size:e.b(r.cloudBytes)}):n("penzor.sync.askCloudNoDevice",{files:r.cloudFiles.toLocaleString(),size:e.b(r.cloudBytes)});return o("div",{class:"pz-sync-ask",role:"region","aria-label":n("penzor.sync.askTitle"),children:[o("h4",{children:n("penzor.sync.askTitle")}),o("p",{children:[l," ",n("penzor.sync.askLocal",{local:r.localOnly.toLocaleString(),conflicts:r.conflicts.toLocaleString()})]}),e.confirmCloud()?o("div",{class:"pz-confirm",children:[o("span",{children:n("penzor.sync.askConfirm",{backup:s})}),o("button",{class:"pz-btn pri",disabled:a,onClick:()=>void e.resolveNotes("cloud"),children:n("penzor.sync.askConfirmGo")}),o("button",{class:"pz-btn",disabled:a,onClick:()=>e.setConfirmCloud(!1),children:n("penzor.cancel")})]}):o("div",{class:"pz-acts",children:[o("button",{class:"pz-btn pri",disabled:a,onClick:()=>void e.resolveNotes("merge"),children:n("penzor.sync.askMerge")}),o("button",{class:"pz-btn",disabled:a,onClick:()=>e.setConfirmCloud(!0),children:n("penzor.sync.askCloudBtn")}),o("button",{class:"pz-btn",disabled:a,onClick:()=>void e.resolveNotes("skip"),children:n("penzor.sync.askSkip")})]}),o("p",{class:"pz-sync-explain",children:n("penzor.sync.askExplain",{backup:s})})]})}function Tu({p:e}){let t=e.t;return o("div",{class:"pz-scroll",children:o("div",{class:"pz-empty",children:[o("span",{class:"ic",children:o(W,{n:"cloud"})}),o("h2",{children:t("penzor.out.title")}),o("p",{children:t("penzor.out.lead")}),o("button",{class:"pz-btn pri",onClick:()=>e.signIn(),children:[o(W,{n:"login"}),t("penzor.out.signIn")]})]})})}function Kh({p:e}){let t=e.t,n=e.snap()?.ledger,r=e.snap()?.ledgerStale,a=!!n?.complete&&n.usage.usedBytes!=null;return o("div",{class:"pz-unified-quota",role:"status",children:[o("div",{class:"pz-total",children:[o("b",{children:a?e.b(n.usage.usedBytes):"\u2014"}),o("span",{children:n?t("penzor.ofMax",{max:e.b(n.quota.limitBytes)}):t("penzor.unified.unavailable")})]}),a&&(n.state==="warn"||n.state==="over"?o(Io,{pct:n.quota.limitBytes>0?n.usage.usedBytes/n.quota.limitBytes*100:100,warn:!0}):o(Jh,{p:e})),o("p",{class:"pz-note",children:r?t("penzor.unified.stale"):a?n.enforcement?t("penzor.unified.enforced"):n.phase==="grace"?t("penzor.unified.grace",{date:nn(Math.max(Date.parse(n.rollout?.graceUntil??""),Date.parse(n.rollout?.compatibilityUntil??"")||0),e.locale())}):n.state==="over"?t("penzor.unified.over"):n.state==="warn"?t("penzor.unified.warn"):`${t("penzor.unified.notice")} \xB7 ${t("penzor.unified.accounting",{trash:e.b(n.usage.trashBytes)})}`:t("penzor.unified.incomplete")}),n?.rollout&&!r&&o("div",{class:"pz-tip",children:[o("p",{children:t("penzor.unified.rolloutPolicy")}),!n.rollout.acknowledgedAt&&o("button",{class:"pz-btn",onClick:()=>void e.acknowledgeStorageNotice(),children:t("penzor.unified.ack")})]})]})}var ra=(e,t)=>t>0&&e/t>=.8;function Xh({p:e,upload:t}){let n=e.t,r=e.snap(),a=r?.ledger,i=e.content(),s=Ii(r,i),l=k=>{let z=a?.sources.find(x=>x.id===k);return z?.status==="ready"?z.liveBytes+z.trashBytes:null},c=k=>{let z=l(k);return z==null?n("penzor.unified.unavailable"):e.b(z)},d=k=>()=>e.go(k),g=(k,z,x,M,L)=>o("button",{class:`row${L?" is-warn":""}`,onClick:d(k),children:[o(W,{n:"folder"}),o("span",{class:"t",children:[z,o("em",{children:L??x})]}),o("span",{class:"s",children:M}),o(W,{n:"right"})]},k),u=r?.apps&&ra(r.apps.used,r.apps.quota)?n("penzor.quota.sourceLimit",{max:e.b(r.apps.quota),used:e.b(r.apps.used)}):void 0,p=r?.sync&&ra(r.sync.usedBytes,r.sync.maxBytes)?n("penzor.quota.sourceLimit",{max:e.b(r.sync.maxBytes),used:e.b(r.sync.usedBytes)}):void 0,m=i?wn(i):null,f=i?.deviceId,v=(r?.contentDevices??[]).filter(k=>k.id!==f),w=g("source:sync",n(s?"penzor.tree.legacy":"penzor.ledger.sync"),n(s?"penzor.ov.legacy":"penzor.ov.sync"),c("sync"),p);return o("div",{class:"pz-scroll",children:o("div",{class:"pz-col",children:[o(cr,{p:e}),o("div",{class:"pz-title",children:[o("h1",{class:"pz-h1",children:n("penzor.drive")}),o("button",{class:"pz-btn",onClick:t,children:[o(W,{n:"upload"}),n("penzor.unified.uploadTo")]})]}),o(Kh,{p:e}),o("div",{class:"pz-ov-group",children:n("penzor.ov.mine")}),o("div",{class:"pz-rows",children:g("app:penzor",n("penzor.uploads"),n("penzor.ov.uploads"),c("uploads"))}),o("div",{class:"pz-ov-group",children:n("penzor.ov.synced")}),o("div",{class:"pz-rows",children:s&&r?.contentDevices?o(N,{children:[g("content:default",n("penzor.scope.all"),m?.kind==="ok"&&m.at?n("penzor.ov.allLast",{time:zn(m.at,e.locale())}):n("penzor.ov.all"),""),f&&g(`content:device-${f}`,n("penzor.tree.thisBackup"),n("penzor.ov.self"),""),v.map(k=>g(`content:device-${k.id}`,k.name,n("penzor.ov.device"),""))]}):o(N,{children:[w,g("source:agents",n("penzor.source.agents"),n("penzor.ov.agents"),c("agents")),g("source:profile",n("penzor.source.profile"),n("penzor.ov.profile"),c("profile"))]})}),o("div",{class:"pz-ov-group",children:n("penzor.tree.byApp")}),o("div",{class:"pz-rows",children:[g("source:ama",n("penzor.ledger.ama"),n("penzor.ov.ama"),c("ama")),g("source:apps",n("penzor.ledger.apps"),n("penzor.ov.apps"),c("apps"),u),g("source:plugins",n("penzor.source.plugins"),n("penzor.ov.plugins"),c("plugins")),g("exports",n("penzor.ledger.exports"),n("penzor.ov.exports"),c("exports"))]}),s&&o(N,{children:[o("div",{class:"pz-ov-group",children:n("penzor.ov.stale")}),o("div",{class:"pz-rows is-stale",children:w})]}),o("p",{class:"pz-note",children:n("penzor.unified.policy")})]})})}function Jh({p:e}){let t=e.snap()?.ledger;if(!t?.complete||t.usage.usedBytes==null||t.quota.limitBytes<=0)return null;let n=e.t,r=s=>{let l=t.sources.find(c=>c.id===s);return l?.status==="ready"?l.liveBytes+l.trashBytes:0},a=[[n("penzor.ov.segNotes"),r("ama")],[n("penzor.ledger.apps"),r("apps")],[n("penzor.ov.segSync"),r("sync")],[n("penzor.uploads"),r("uploads")]];a.push([n("penzor.ov.segOther"),Math.max(0,t.usage.usedBytes-a.reduce((s,[,l])=>s+l,0))]);let i=a.filter(([,s])=>s>0);return o(N,{children:[o("div",{class:"pz-seg",role:"img","aria-label":i.map(([s,l])=>`${s} ${e.b(l)}`).join(", "),children:i.map(([s,l],c)=>o("span",{class:`c${c}`,style:{width:`${Math.max(.6,l/t.quota.limitBytes*100)}%`}},s))}),o("div",{class:"pz-legend",children:i.map(([s,l],c)=>o("span",{children:[o("i",{class:`c${c}`}),s," ",o("b",{children:e.b(l)})]},s))})]})}function Yh({p:e,dropDir:t}){let n=e.t,r=e.loc(),a=e.snap(),i=e.rows(),[s,l]=A(!1),[c,d]=A(null),g=ce(null),u=ce(null),p=ce(null),m=e.canWrite(),f=e.selection();oe(()=>(e.picker.files=()=>g.current?.click(),e.picker.folder=()=>u.current?.click(),()=>{e.picker.files=void 0,e.picker.folder=void 0}),[e]);let v=(b,T)=>{let R=b.currentTarget,K=se().getPathForFile,X=Array.from(R.files??[]);if(!K){R.value="",e.upload(Wi(X,T));return}let Y=X.map(Le=>{try{return K(Le)}catch{return""}}),me=Y.filter(Boolean);if(T){let Le=new Set;X.forEach((je,he)=>{let Te=je.webkitRelativePath??"",ft=Y[he];!Te||!ft||ft.length<Te.length||Le.add(ft.slice(0,ft.length-Te.length)+Te.split("/")[0])}),me=[...Le]}R.value="",e.upload(me)},w=(b,T)=>{e.select(T,{toggle:b.metaKey||b.ctrlKey,range:b.shiftKey}),p.current?.focus({preventScroll:!0})},k=b=>{if(b.target?.tagName!=="INPUT"){if((b.metaKey||b.ctrlKey)&&b.key.toLowerCase()==="a"&&e.canMulti())b.preventDefault(),e.selectAll();else if(b.key==="Escape"&&f.length>1){b.preventDefault();let T=e.selected();e.select(T)}}},z=r.kind==="sync"?n(e.content()?.config.enabled?"penzor.tree.legacy":"penzor.ledger.sync"):r.kind==="ama"?n("penzor.ledger.ama"):r.kind==="app"&&!e.canWrite()?n("penzor.ledger.apps"):null,x=r.kind==="content"?Au(e,r.namespace):r.kind==="sync"?r.vault:r.kind==="ama"?a.ama?.find(b=>b.id===r.vaultId)?.name??"":r.kind==="app"?e.appLabel(r.appId):r.kind==="source"?n(ir[r.source]):r.kind==="exports"?n("penzor.ledger.exports"):n("penzor.trash"),M=r.kind==="app"?e.appStack().map(b=>b.name):e.path()?e.path().split("/"):[],L=[...z?[{label:z,depth:null}]:[],{label:x,depth:0},...M.map((b,T)=>({label:b,depth:T+1}))],H=["mtime","size","name"],V=()=>e.setSort(H[(H.indexOf(e.sort())+1)%H.length]),ee=r.kind==="sync"?n("penzor.col.device"):r.kind==="trash"?n("penzor.col.origin"):r.kind==="exports"?n("penzor.col.app"):null,te=r.kind==="trash"?n("penzor.col.deleted"):n("penzor.col.mtime"),S=()=>{if(r.kind==="content"){let T=e.content()?wn(e.content()):null,R=e.content()?.deviceId,K=r.namespace==="default"?n("penzor.content.noteAll"):r.namespace===`device-${R}`?n("penzor.content.noteSelf"):n("penzor.content.noteDevice",{name:x});return o(N,{children:[o("div",{class:"pz-title",children:[o("h1",{class:"pz-h1",children:x}),o("span",{class:"pz-badge",children:[o(W,{n:"cloud"}),T?.kind==="ok"&&T.at?n("penzor.content.badgeLast",{time:zn(T.at,e.locale())}):n("penzor.content.badge")]})]}),o("p",{class:"pz-note",children:K})]})}if(r.kind==="source")return o(N,{children:[o("div",{class:"pz-title",children:[o("h1",{class:"pz-h1",children:n(ir[r.source])}),o("span",{class:"pz-badge",children:[o(W,{n:"lock"}),n("penzor.unified.readonly")]})]}),o("p",{class:"pz-note",children:n(r.source==="plugins"?"penzor.source.pluginNote":"penzor.source.readonly")})]});if(r.kind==="sync"){let T=a.sync?.vaults.find(X=>X.vault===r.vault);if(!T)return null;let R=!!e.thisDevice()&&T.devices.includes(e.thisDevice()),K=a.sync;return o(N,{children:[o("div",{class:"pz-title",children:[o("h1",{class:"pz-h1",children:T.vault}),R&&!e.content()?.config.enabled&&o("span",{class:"pz-badge",children:[o(W,{n:"refresh"}),n("penzor.sync.thisDevice")]})]}),e.content()?.config.enabled&&o("div",{class:"pz-legacy",children:[o(W,{n:"history"}),o("span",{children:[n("penzor.legacy.title"),o("small",{children:n("penzor.legacy.body")})]}),o("button",{class:"pz-btn",onClick:()=>e.go("content:default"),children:n("penzor.legacy.go")})]}),o("div",{class:"pz-meta",children:[o("span",{children:n("penzor.meta.files",{size:e.b(T.bytes),n:T.files.toLocaleString()})}),T.updatedAt&&o("span",{children:T.device?n("penzor.sync.last",{time:nn(Date.parse(T.updatedAt),e.locale()),device:T.device}):n("penzor.sync.lastNoDevice",{time:nn(Date.parse(T.updatedAt),e.locale())})}),T.devices.length>0&&o("span",{children:n("penzor.sync.devices",{n:T.devices.length})})]}),ra(K.usedBytes,K.maxBytes)&&o("div",{class:"pz-meter",children:[o(Io,{pct:K.usedBytes/K.maxBytes*100,warn:K.usedBytes/K.maxBytes>=.9}),o("span",{children:n("penzor.quota.sourceLimit",{max:e.b(K.maxBytes),used:e.b(K.usedBytes)})})]})]})}if(r.kind==="ama"){let T=a.ama?.find(R=>R.id===r.vaultId);return o(N,{children:[o("div",{class:"pz-title",children:[o("h1",{class:"pz-h1",children:T?.name}),o("span",{class:"pz-badge",children:[o(W,{n:"cloud"}),"Amadeus Cloud"]})]}),o("div",{class:"pz-meta",children:[o("span",{children:e.b(T?.sizeBytes??0)}),o("span",{children:n("penzor.unified.counted")})]})]})}if(r.kind==="app"){let T=a.apps?.apps.find(K=>K.appId===r.appId),R=a.apps;return o(N,{children:[o("div",{class:"pz-title",children:o("h1",{class:"pz-h1",children:e.appLabel(r.appId)})}),o("div",{class:"pz-meta",children:[o("span",{children:n("penzor.meta.files",{size:e.b(T?.bytes??0),n:(T?.files??0).toLocaleString()})}),!e.canWrite()&&o("span",{children:n("penzor.apps.by",{app:e.appLabel(r.appId)})})]}),e.canWrite()&&o("div",{class:"pz-meta",children:a.ledger?.complete&&a.ledger.usage.usedBytes!=null?o(N,{children:[o("span",{children:n("penzor.drive.total",{used:e.b(a.ledger.usage.usedBytes),max:e.b(a.ledger.quota.limitBytes)})}),o("button",{class:"pz-link",onClick:()=>e.go("ov"),children:n("penzor.drive.seeAll")})]}):o("span",{children:n("penzor.unified.unavailable")})}),R&&ra(R.used,R.quota)&&o("div",{class:"pz-meter",children:[o(Io,{pct:R.used/R.quota*100,warn:R.used/R.quota>=.9}),o("span",{children:n("penzor.quota.sourceLimit",{max:e.b(R.quota),used:e.b(R.used)})})]})]})}if(r.kind==="exports")return o(N,{children:[o("div",{class:"pz-title",children:o("h1",{class:"pz-h1",children:n("penzor.ledger.exports")})}),o("div",{class:"pz-meta",children:[o("span",{children:n("penzor.meta.files",{size:e.b(a.exports?.totalBytes??0),n:(a.exports?.total??0).toLocaleString()})}),o("span",{children:n("penzor.card.expFoot")})]})]});let b=i??[];return o(N,{children:[o("div",{class:"pz-title",children:o("h1",{class:"pz-h1",children:n("penzor.trash")})}),o("div",{class:"pz-meta",children:[o("span",{children:n("penzor.trash.meta",{n:b.length,size:e.b((a.trash??[]).reduce((T,R)=>T+(Number(R.fileSize)||0),0))})}),o("span",{children:n("penzor.trash.note")})]}),e.confirmEmpty()&&o("div",{class:"pz-confirm",children:[o("span",{children:n("penzor.confirm.empty",{n:b.length})}),o("button",{class:"pz-btn danger solid",onClick:()=>void e.emptyTrash(),children:n("penzor.trash.emptyBtn")}),o("button",{class:"pz-btn",onClick:()=>e.setConfirmEmpty(!1),children:n("penzor.cancel")})]})]})},E=e.selected(),O=f.length>1,I=f.reduce((b,T)=>b+(T.dir?0:T.size),0),ne=e.txRows();return o(N,{children:[o("div",{class:"pz-top",children:[o("nav",{class:"pz-crumb",children:L.map((b,T)=>{let R=T===L.length-1,K=R?o("b",{children:b.label}):b.depth==null?o("span",{children:b.label}):o("button",{onClick:()=>e.up(b.depth),children:b.label});return o("span",{style:{display:"contents"},children:[K,!R&&o("i",{children:"\u203A"})]},T)})}),o("span",{class:"pz-sp"}),O?o(N,{children:[o("span",{class:"pz-selbar",children:n("penzor.sel.bar",{n:f.length,size:e.b(I)})}),f.some(b=>!b.dir)&&o("button",{class:"pz-btn",onClick:()=>void e.downloadMany(f),children:[o(W,{n:"download"}),n("penzor.act.download")]}),e.canManage()&&o("button",{class:"pz-btn",onClick:()=>e.setSide({kind:"move",at:[]}),children:[o(W,{n:"move"}),n("penzor.act.move")]}),e.canManage()&&o("button",{class:"pz-btn danger",onClick:()=>void e.trashMany(f),children:[o(W,{n:"trash"}),n("penzor.act.trash")]}),o("button",{class:"pz-ibtn",title:n("penzor.act.clearSel"),onClick:()=>e.select(E),children:o(W,{n:"x"})})]}):o(N,{children:[M.length>0&&o("button",{class:"pz-ibtn",title:n("penzor.act.up"),onClick:()=>e.up(),children:o(W,{n:"up"})}),r.kind==="source"&&(r.source==="agents"||r.source==="profile")&&o("button",{class:"pz-chip",onClick:()=>void e.ctx.app?.openSpace?.(r.source==="agents"?"agents":"calendar").then(b=>{b||e.ctx.app?.notify?.(n("penzor.source.entryUnavailable"))}),children:n(r.source==="agents"?"penzor.source.openAgents":"penzor.source.openCalendar")}),r.kind==="ama"&&o("button",{class:"pz-chip",onClick:()=>void e.ctx.app?.openSpace?.("amadeus"),children:[o(W,{n:"book"}),n("penzor.ama.open")]}),r.kind==="trash"&&e.canEmptyTrash()&&o("button",{class:"pz-btn danger",onClick:()=>e.setConfirmEmpty(!0),children:[o(W,{n:"trash"}),n("penzor.trash.emptyBtn")]}),m&&o("span",{class:"pz-split",children:[o("button",{class:"pz-btn pri",onClick:()=>e.picker.files?.(),children:[o(W,{n:"upload"}),n("penzor.act.upload")]}),o("button",{class:"pz-btn pri more",title:n("penzor.act.uploadMore"),"aria-label":n("penzor.act.uploadMore"),onClick:b=>{let T=b.currentTarget.getBoundingClientRect();d({x:T.right,y:T.bottom+4})},children:o(W,{n:"down"})})]}),m&&o("button",{class:"pz-ibtn",title:n("penzor.act.newFolder"),onClick:()=>e.startNewFolder(),children:o(W,{n:"folder-plus"})}),s||e.query()?o("input",{class:"pz-find",placeholder:n("penzor.search"),value:e.query(),autoFocus:!0,onInput:b=>e.setQuery(b.currentTarget.value),onKeyDown:b=>{b.key==="Escape"&&(e.setQuery(""),l(!1))},onBlur:()=>{e.query()||l(!1)}}):o("button",{class:"pz-ibtn",title:n("penzor.search"),onClick:()=>l(!0),children:o(W,{n:"search"})}),o("button",{class:"pz-chip",onClick:V,children:[r.kind==="trash"&&e.sort()==="mtime"?n("penzor.sort.deleted"):n(`penzor.sort.${e.sort()}`),o(W,{n:"down"})]})]})]}),m&&o(N,{children:[o("input",{ref:g,type:"file",multiple:!0,hidden:!0,onChange:b=>v(b,!1)}),o("input",{ref:u,type:"file",hidden:!0,webkitdirectory:!0,onChange:b=>v(b,!0)})]}),c&&o(Mu,{x:c.x,y:c.y,alignRight:!0,onClose:()=>d(null),items:[{id:"files",label:n("penzor.act.uploadFiles"),icon:"upload",run:()=>e.picker.files?.()},{id:"folder",label:n("penzor.act.uploadFolder"),icon:"folder",run:()=>e.picker.folder?.()}]}),o("div",{class:"pz-scroll",ref:p,tabIndex:-1,onKeyDown:k,onContextMenu:b=>{!m||b.target.closest("tr")||(b.preventDefault(),e.openMenu(b.clientX,b.clientY,null))},children:o("div",{class:"pz-col",children:[S(),e.rowsError()?o("p",{class:"pz-note",children:n("penzor.err",{reason:e.rowsError()})}):i?i.length===0&&!ne.length&&e.newFolder()==null?o("p",{class:"pz-note",children:e.query()?n("penzor.noMatch",{q:e.query()}):m&&!M.length?n("penzor.drive.empty"):n("penzor.folderEmpty")}):o("table",{class:"pz-table",children:[o("thead",{children:o("tr",{children:[o("th",{children:n("penzor.col.name")}),o("th",{class:"r",children:n("penzor.col.size")}),o("th",{children:te}),ee&&o("th",{children:ee})]})}),o("tbody",{children:[e.newFolder()!=null&&o(Qh,{p:e,cols:ee?4:3}),i.map((b,T)=>o(N,{children:[!b.dir&&(T===0||i[T-1].dir)&&ne.map(R=>o(Su,{p:e,x:R},R.key)),o("tr",{class:`${e.isSelected(b.key)?"sel":""}${t&&t===b.key?" drop":""}`,"data-dir-id":m&&b.dir?b.key:void 0,"data-dir-name":m&&b.dir?b.name:void 0,onMouseDown:R=>{R.shiftKey&&R.preventDefault()},onClick:R=>w(R,b),onDblClick:()=>{b.dir?e.openDir(b):e.download(b)},onContextMenu:R=>{R.preventDefault(),e.openMenu(R.clientX,R.clientY,b)},children:[o("td",{class:"n",children:o("span",{children:[o(W,{n:ea(b.name,b.dir)}),r.kind==="content"&&!M.length&&zu[b.name]?o(N,{children:[o("b",{children:n(zu[b.name])}),o("em",{class:"cnt",children:[b.name,(b.count??0)>0&&` \xB7 ${n("penzor.card.expSmall",{n:b.count.toLocaleString()})}`]})]}):o(N,{children:[o("b",{children:b.name}),b.count!=null&&b.count>0&&o("em",{class:"cnt",children:b.count.toLocaleString()})]})]})}),o("td",{class:"r",children:b.dir&&r.kind==="app"?"\u2014":e.b(b.size)}),o("td",{children:nn(b.mtime,e.locale())}),ee&&o("td",{class:b.col4?"":"dim",children:b.col4?b.col4===e.thisDevice()?n("penzor.side.thisDevice",{name:b.col4}):b.col4:"\u2014"})]})]},b.key)),(i.length===0||i[i.length-1].dir)&&ne.map(b=>o(Su,{p:e,x:b},b.key))]})]}):o("p",{class:"pz-note",children:n("penzor.loading")}),r.kind==="trash"&&!!e.snap()?.amaTrash?.length&&o(Zh,{p:e})]})})]})}function Au(e,t){return t==="default"?e.t("penzor.scope.all"):t===`device-${e.content()?.deviceId}`?e.t("penzor.tree.thisBackup"):e.snap()?.contentDevices?.find(r=>`device-${r.id}`===t)?.name||`Forsion-${t.slice(7,15)}`}var zu={Amadeus:"penzor.cat.notes",agents:"penzor.source.agents",human:"penzor.cat.profile",Plugins:"penzor.cat.plugins"};function Zh({p:e}){let t=e.snap()?.amaTrash;return o("section",{class:"pz-ama-trash",children:[o("h3",{class:"pz-h3",children:e.t("penzor.trash.ama")}),o("p",{class:"pz-note",children:e.t("penzor.trash.amaNote")}),t?t.length?o("table",{class:"pz-table",children:[o("thead",{children:o("tr",{children:[o("th",{children:e.t("penzor.col.name")}),o("th",{children:e.t("penzor.col.size")}),o("th",{children:e.t("penzor.trash.expires")})]})}),o("tbody",{children:t.map(n=>o("tr",{children:[o("td",{children:[n.vaultName," / ",n.path]}),o("td",{children:e.b(n.size)}),o("td",{children:nn(Date.parse(n.expiresAt),e.locale())})]},n.id))})]}):o("p",{class:"pz-note",children:e.t("penzor.folderEmpty")}):o("p",{class:"pz-note",children:e.t("penzor.unified.unavailable")})]})}function Qh({p:e,cols:t}){let[n,r]=A(e.newFolder()??""),a=ce(null),i=ce(!1);Yo(()=>{a.current?.focus(),a.current?.select()},[]);let s=()=>{i.current||(i.current=!0,e.createFolder(n))};return o("tr",{class:"sel",children:[o("td",{class:"n",children:o("span",{children:[o(W,{n:"folder-open"}),o("input",{ref:a,class:"pz-newname",value:n,onInput:l=>r(l.currentTarget.value),onKeyDown:l=>{l.key==="Enter"?s():l.key==="Escape"&&(i.current=!0,e.cancelNewFolder())},onBlur:s})]})}),o("td",{class:"r",children:"\u2014"}),o("td",{children:e.t("penzor.justNow")}),t>3&&o("td",{})]})}function Su({p:e,x:t}){let n=t.size>0?Math.min(100,Math.round(t.done/t.size*100)):0;return o("tr",{class:`pz-txrow ${t.state}`,title:t.state==="paused"?e.t("penzor.tx.paused"):void 0,children:[o("td",{class:"n",children:o("span",{children:[o(W,{n:ea(t.name)}),o("b",{children:t.name})]})}),o("td",{class:"r",children:t.state==="active"?Di(t.done,t.size,e.locale()):e.b(t.size)}),o("td",{children:t.state==="queued"?o("span",{class:"pz-inl",children:e.t("penzor.tx.queued")}):o("span",{class:"pz-inl",children:[o(Io,{pct:n}),t.state==="paused"?e.t("penzor.tx.pause"):`${n}%`]})})]})}function Eu(e,t){let n=e.t,r=e.loc().kind,a={id:"download",label:n("penzor.act.download"),icon:"download",run:()=>void e.download(t)};return r==="source"?t.dir||!t.ref?.downloadPath?[]:[a]:r==="app"&&!e.canManage()?t.dir?[]:[a]:r==="sync"||r==="ama"?t.dir?[]:[a]:r==="app"?[...t.dir?[]:[a],{id:"rename",label:n("penzor.act.rename"),icon:"pen",run:()=>{e.select(t),e.setSide({kind:"rename"})}},{id:"move",label:n("penzor.act.move"),icon:"move",run:()=>{e.select(t),e.setSide({kind:"move",at:[]})}},{id:"trash",label:n("penzor.act.trash"),icon:"trash",danger:!0,run:()=>void e.trash(t)}]:r==="exports"?[a,{id:"rename",label:n("penzor.act.rename"),icon:"pen",run:()=>{e.select(t),e.setSide({kind:"rename"})}},{id:"delete",label:n("penzor.act.delete"),icon:"trash",danger:!0,run:()=>{e.select(t),e.setSide({kind:"confirm",what:"deleteExport"})}}]:r==="trash"&&e.canManageRow(t)?[{id:"restore",label:n("penzor.act.restore"),icon:"undo",run:()=>void e.restore(t)},{id:"purge",label:n("penzor.act.purge"),icon:"trash",danger:!0,run:()=>{e.select(t),e.setSide({kind:"confirm",what:"purge"})}}]:[]}function eb(e,t){let n=e.t;if(!t)return e.canWrite()?[{id:"upload",label:n("penzor.act.uploadHere"),icon:"upload",run:()=>e.picker.files?.()},{id:"new-folder",label:n("penzor.act.newFolder"),icon:"folder-plus",run:()=>e.startNewFolder()}]:[];let r=e.selection();return r.length>1&&r.some(a=>a.key===t.key)?Pu(e,r):Eu(e,t)}function Pu(e,t){let n=e.t,r=e.loc().kind,a=t.filter(i=>!i.dir).length;return[...a?[{id:"download",label:n("penzor.sel.download",{n:a}),icon:"download",run:()=>void e.downloadMany(t)}]:[],...e.canManage()?[{id:"move",label:n("penzor.act.move"),icon:"move",run:()=>e.setSide({kind:"move",at:[]})},{id:"trash",label:n("penzor.act.trash"),icon:"trash",danger:!0,run:()=>void e.trashMany(t)}]:[]]}function Mu({x:e,y:t,items:n,onClose:r,alignRight:a}){let i=ce(null),[s,l]=A({x:e,y:t});return oe(()=>{let c=i.current;if(c){let u=c.getBoundingClientRect(),p=a?e-u.width:e;l({x:Math.max(8,Math.min(p,window.innerWidth-u.width-8)),y:t+u.height>window.innerHeight-8?Math.max(8,t-u.height):t})}let d=u=>{u.target instanceof Node&&c?.contains(u.target)||r()},g=u=>{u.key==="Escape"&&r()};return window.addEventListener("pointerdown",d,!0),window.addEventListener("keydown",g,!0),window.addEventListener("blur",r),window.addEventListener("wheel",r,{passive:!0}),()=>{window.removeEventListener("pointerdown",d,!0),window.removeEventListener("keydown",g,!0),window.removeEventListener("blur",r),window.removeEventListener("wheel",r)}},[e,t]),n.length?ou(o("div",{ref:i,class:"ctx-menu pz-menu",role:"menu",style:{left:`${s.x}px`,top:`${s.y}px`},children:n.map((c,d)=>o(N,{children:[c.danger&&d>0&&o("div",{class:"ctx-separator"}),o("button",{role:"menuitem",class:c.danger?"danger":"",onClick:()=>{r(),c.run()},children:[o(W,{n:c.icon}),c.label]})]},c.id))}),document.body):(queueMicrotask(r),null)}function tb({p:e}){let t=e.menu();return o(Mu,{x:t.x,y:t.y,items:eb(e,t.row),onClose:e.closeMenu})}function Iu({p:e}){_u(e);let t=e.t,n=e.loc(),r=e.selected();if(co(n)||!r)return o(oa,{p:e,side:!0,children:o("p",{class:"pz-side-none",children:t("penzor.side.none")})});let a=e.snap(),i=e.side(),s=e.selection();if(s.length>1)return o(ob,{p:e,sel:s});let l=n.kind==="content"?`${Au(e,n.namespace)} / ${r.key}`:n.kind==="sync"?`${n.vault} / ${r.key}`:n.kind==="ama"?`${a?.ama?.find(f=>f.id===n.vaultId)?.name??""} / ${r.key}`:n.kind==="app"?[e.appLabel(n.appId),...e.appStack().map(f=>f.name),r.name].join(" / "):n.kind==="source"?`${t(ir[n.source])} / ${r.key}`:n.kind==="exports"?`${t("penzor.ledger.exports")} / ${r.name}`:r.col4??"",c=r.dir?"":(r.name.match(/\.([A-Za-z0-9]{1,8})$/)?.[1]??"").toUpperCase(),d=n.kind==="trash"?t("penzor.side.inTrash",{size:e.b(r.size)}):r.dir?r.count!=null?t("penzor.side.folder",{n:r.count.toLocaleString()}):t("penzor.side.folderPlain"):[c,e.b(r.size)].filter(Boolean).join(" \xB7 "),g=n.kind==="trash"?[[t("penzor.side.origin"),l],[t("penzor.side.deletedAt"),nn(r.mtime,e.locale())]]:[[t("penzor.side.where"),l],[t("penzor.side.mtime"),nn(r.mtime,e.locale())]];n.kind==="sync"&&!r.dir&&g.push([t("penzor.side.device"),r.col4?r.col4===e.thisDevice()?t("penzor.side.thisDevice",{name:r.col4}):r.col4:"\u2014"]),n.kind==="app"&&!r.dir&&!e.canWrite()&&g.push([t("penzor.side.from"),e.appLabel(n.appId)]),n.kind==="exports"&&g.push([t("penzor.side.from"),r.col4??"\u2014"]);let u=n.kind==="app"&&!e.canManage()?"penzor.source.appNote":Vd(n),p=Eu(e,r),m=e.versions();return o(oa,{p:e,side:!0,children:[o("div",{class:"pz-thumb",children:o(W,{n:ea(r.name,r.dir)})}),i.kind==="rename"?o(nb,{p:e,row:r}):o("div",{class:"pz-fname",children:r.name}),o("div",{class:"pz-fsub",children:d}),i.kind==="confirm"?o("div",{class:"pz-confirm",style:{margin:0},children:[o("span",{children:t(i.what==="purge"?"penzor.confirm.purge":"penzor.confirm.deleteExport",{name:r.name})}),o("button",{class:"pz-btn danger solid",onClick:()=>void(i.what==="purge"?e.purge(r):e.deleteExport(r)),children:t(i.what==="purge"?"penzor.act.purge":"penzor.act.delete")}),o("button",{class:"pz-btn",onClick:()=>e.setSide({kind:"view"}),children:t("penzor.cancel")})]}):p.length>0&&o("div",{class:"pz-acts",children:p.filter(f=>f.id!=="move").map(f=>o("button",{class:`pz-btn${f.danger?" danger":""}${f.id==="restore"?" pri":""}`,onClick:()=>f.run(),children:[o(W,{n:f.icon}),f.id==="trash"?t("penzor.act.delete"):f.label]},f.id))}),i.kind==="move"&&o(Ru,{p:e,row:r,at:i.at}),o("dl",{class:"pz-dl",children:[g.map(([f,v])=>o(N,{children:[o("dt",{children:f}),o("dd",{children:v})]},f)),n.kind==="app"&&!r.dir&&o(N,{children:[o("dt",{children:t("penzor.side.versions")}),o("dd",{children:m==null?"\u2026":m.length?t("penzor.side.versionsN",{n:m.length}):t("penzor.side.versionsNone")})]})]}),e.canManage()&&!r.dir&&m&&m.length>0&&o("div",{class:"pz-vers",children:m.map(f=>o("div",{children:[o("span",{children:t("penzor.side.versionRow",{n:f.versionNumber,time:nn(f.createdAt,e.locale()),size:e.b(f.fileSize)})}),o("button",{class:"pz-link",onClick:()=>void e.restoreVersion(r,f),children:t("penzor.side.restoreVersion")})]},f.versionNumber))}),n.kind==="trash"&&r.dir&&(r.count??0)>0&&o("div",{class:"pz-tip",children:[o(W,{n:"undo"}),o("span",{children:t("penzor.side.inner",{n:r.count})})]}),n.kind==="exports"&&o("div",{class:"pz-tip",children:[o(W,{n:"trash"}),o("span",{children:t("penzor.side.exportNote")})]}),u&&o("div",{class:"pz-tip",children:[o(W,{n:"lock"}),o("span",{children:t(u,{vault:n.kind==="sync"?n.vault:""})})]})]})}function nb({p:e,row:t}){let[n,r]=A(t.name),a=ce(null),i=ce(!1),s=()=>{i.current||(i.current=!0,e.rename(t,n))};return oe(()=>{let l=a.current;if(!l)return;l.focus();let c=t.dir?-1:t.name.lastIndexOf(".");l.setSelectionRange(0,c>0?c:t.name.length)},[t.key]),o("input",{ref:a,class:"pz-input",value:n,onInput:l=>r(l.currentTarget.value),onKeyDown:l=>{l.key==="Enter"?s():l.key==="Escape"&&(i.current=!0,e.setSide({kind:"view"}))},onBlur:s})}function Ru({p:e,row:t,at:n}){let r=e.t,a=e.loc(),i=a.kind==="app"?e.appLabel(a.appId):"",s=e.selection(),l=s.length>1,c=new Set(l?s.map(u=>u.key):[t.key]),d=(e.moveFolders()??[]).filter(u=>!c.has(u.id)),g=n[n.length-1]??{id:"ROOT",name:r("penzor.move.root",{app:i})};return o("div",{class:"pz-tip",style:{flexDirection:"column"},children:[o("div",{class:"pz-sh",style:{margin:0},children:r("penzor.move.title")}),o("div",{class:"pz-pick",children:[n.length>0&&o("button",{onClick:()=>e.moveBrowse(n.slice(0,-1)),children:[o(W,{n:"up"}),n.length>1?n[n.length-2].name:r("penzor.move.root",{app:i})]}),e.moveFolders()==null?o("span",{children:"\u2026"}):d.length===0?o("span",{children:r("penzor.move.noFolders")}):d.map(u=>o("button",{onClick:()=>e.moveBrowse([...n,u]),children:[o(W,{n:"folder"}),u.name]},u.id))]}),o("div",{class:"pz-acts",children:[o("button",{class:"pz-btn pri",onClick:()=>void(l?e.moveMany(s,g):e.moveTo(t,g)),children:r("penzor.move.here")}),o("button",{class:"pz-btn",onClick:()=>e.setSide({kind:"view"}),children:r("penzor.cancel")})]})]})}function ob({p:e,sel:t}){let n=e.t,r=e.loc(),a=t.filter(u=>!u.dir),i=t.length-a.length,s=a.reduce((u,p)=>u+p.size,0),l=new Date,c=n("penzor.download.folder",{date:`${l.getFullYear()}-${String(l.getMonth()+1).padStart(2,"0")}-${String(l.getDate()).padStart(2,"0")}`}),d=r.kind==="app"?[e.appLabel(r.appId),...e.appStack().map(u=>u.name)].join(" / "):r.kind==="sync"?[r.vault,...e.path()?e.path().split("/"):[]].join(" / "):r.kind==="ama"?[e.snap()?.ama?.find(u=>u.id===r.vaultId)?.name??"",...e.path()?e.path().split("/"):[]].join(" / "):"",g=e.side();return o(oa,{p:e,side:!0,children:[o("div",{class:"pz-thumb",children:o(W,{n:"files"})}),o("div",{class:"pz-fname",children:n("penzor.sel.title",{n:t.length})}),o("div",{class:"pz-fsub",children:i?n("penzor.sel.subDirs",{size:e.b(s),files:a.length,dirs:i}):n("penzor.sel.sub",{size:e.b(s),files:a.length})}),o("div",{class:"pz-acts",children:Pu(e,t).map(u=>o("button",{class:`pz-btn${u.danger?" danger":""}`,onClick:()=>u.run(),children:[o(W,{n:u.icon}),u.id==="trash"?n("penzor.act.delete"):u.label]},u.id))}),g.kind==="move"&&o(Ru,{p:e,row:t[0],at:g.at}),o("dl",{class:"pz-dl",children:[o("dt",{children:n("penzor.side.where")}),o("dd",{children:d}),a.length>1&&o(N,{children:[o("dt",{children:n("penzor.sel.saveTo")}),o("dd",{children:n("penzor.sel.saveToValue",{folder:c})})]})]}),i>0&&a.length>0&&o("div",{class:"pz-tip",children:[o(W,{n:"folder"}),o("span",{children:n("penzor.sel.noDirs")})]})]})}var Lu=(e,t)=>t<60?e.t("penzor.tx.sec",{n:Math.max(1,Math.round(t))}):e.t("penzor.tx.min",{n:Math.ceil(t/60)}),rb=(e,t)=>t!=null&&Date.now()-t<6e4?e.t("penzor.justNow"):nn(t,e.locale()),ab=(e,t)=>{let n=t.error??"";return n==="too_large"?e.t("penzor.err.too_large",{size:e.b(t.size)}):n==="network"?e.t("penzor.err.network",{pct:t.size?Math.round(t.done/t.size*100):0}):n==="quota"||n==="account_changed"||n==="not_signed_in"||n==="gone"||n==="changed"||n==="storage_unavailable"||n==="popup_blocked"||n==="download_unavailable"||n==="download_failed"?e.t(`penzor.err.${n}`):e.t("penzor.err.other",{code:n||"?"})};function ib(e){let t=e.filter(l=>l.state==="active"||l.state==="queued"||l.state==="paused"),n=t.filter(l=>l.state!=="paused"),r=n.reduce((l,c)=>l+Math.max(c.size,c.done),0),a=n.reduce((l,c)=>l+c.done,0),i=n.reduce((l,c)=>l+c.speed,0),s=i>0?(r-a)/i:null;return{live:t,failed:e.filter(l=>l.state==="failed"),done:e.filter(l=>l.state==="done"),up:t.filter(l=>l.kind==="up").length,down:t.filter(l=>l.kind==="down").length,pct:r>0?Math.min(100,Math.round(a/r*100)):0,eta:s!=null&&s>=5?s:null}}function sb({p:e}){let t=e.t,n=e.card(),r=e.transfers(),a=e.notices();if(n==="hidden"||!r.length&&!a.length)return null;let i=ib(r),s=i.failed.length+a.length,l=t("penzor.tx.counts",{up:i.up,down:i.down}),c=i.live.length?t("penzor.tx.busy",{n:i.live.length}):s?t("penzor.tx.failedN",{n:s}):t("penzor.tx.allDone"),d=i.live.length?[l,i.eta!=null?t("penzor.tx.eta",{eta:Lu(e,i.eta)}):""].filter(Boolean).join(" \xB7 "):s?i.done.length?t("penzor.tx.restDone",{n:i.done.length}):"":t("penzor.tx.doneN",{n:i.done.length}),g={onMouseEnter:()=>e.holdCard(!0),onMouseLeave:()=>e.holdCard(!1)};if(n==="pill")return o("button",{class:"ui-popover pz-txpill",...g,onClick:()=>e.setCard("open"),title:t("penzor.tx.expand"),"aria-label":t("penzor.tx.expand"),children:[i.live.length?o("span",{class:"pz-ring",style:{"--p":i.pct}}):o(W,{n:s?"alert":"check"}),o("span",{children:i.live.length?t("penzor.tx.pill",{counts:l,pct:i.pct}):c}),o(W,{n:"up"})]});let u=f=>f.state==="failed"?0:f.state==="active"?1:f.state==="queued"||f.state==="paused"?2:3,p=[...r].filter(f=>f.state!=="canceled").sort((f,v)=>u(f)-u(v)||(u(f)===3?(v.finishedAt??0)-(f.finishedAt??0):0)),m=i.live.length>0&&i.live.every(f=>f.state==="paused");return o("div",{class:"ui-popover pz-txcard",role:"region","aria-label":c,...g,children:[o("div",{class:"pz-txhead",children:[o("b",{children:c}),o("span",{children:d}),o("i",{class:"sp"}),o("button",{class:"pz-ib",title:t("penzor.tx.collapse"),"aria-label":t("penzor.tx.collapse"),onClick:()=>e.setCard(i.live.length||s?"pill":"hidden"),children:o(W,{n:"down"})})]}),i.live.length>0&&o("div",{class:"pz-txall",children:o(Io,{pct:i.pct})}),o("div",{class:"pz-txlist",children:[a.map(f=>o("div",{class:"pz-txrow2 is-fail",children:[o(W,{n:"alert"}),o("span",{class:"nm",children:t("penzor.tx.quota",{size:e.b(f.short)})}),o("span",{class:"acts",children:o("button",{class:"pz-ib",title:t("penzor.tx.remove"),onClick:()=>e.dismissNotice(f.id),children:o(W,{n:"x"})})}),o("span",{class:"sub",children:[o("span",{class:"err",children:t("penzor.tx.quotaSub")}),o("button",{class:"pz-link",onClick:()=>{e.dismissNotice(f.id),e.go("trash")},children:t("penzor.tx.freeSpace")})]})]},f.id)),p.map(f=>o(lb,{p:e,x:f},f.id))]}),o("div",{class:"pz-txfoot",children:[i.live.length>0&&o("button",{onClick:()=>void e.txAll(m?"resume":"pause"),children:t(m?"penzor.tx.resumeAll":"penzor.tx.pauseAll")}),i.failed.length>0&&!i.live.length&&o("button",{onClick:()=>void e.txAll("retry"),children:t("penzor.tx.retryAll")}),i.done.length>0&&i.live.length>0&&o("button",{onClick:()=>void e.txClear("finished"),children:t("penzor.tx.clearDone")}),!i.live.length&&o("button",{onClick:()=>void e.txClear(s?"all":"finished"),children:t(s?"penzor.tx.clear":"penzor.tx.clearDone")})]})]})}function lb({p:e,x:t}){let n=e.t,r=t.size>0?Math.min(100,t.done/t.size*100):0,a=t.state==="done"?"check":t.state==="failed"?"alert":t.kind==="up"?"tx-up":"tx-down",i=(l,c,d)=>o("button",{class:"pz-ib",title:c,"aria-label":c,onClick:d,children:o(W,{n:l})}),s;if(t.state==="failed")s=o("span",{class:"err",children:ab(e,t)});else if(t.state==="done")s=o(N,{children:[o("span",{children:e.b(t.size)}),o("span",{children:n(t.kind==="up"?"penzor.tx.uploaded":"penzor.tx.downloaded",{time:rb(e,t.finishedAt)})})]});else if(t.state==="queued")s=o(N,{children:[o("span",{children:e.b(t.size)}),o("span",{children:n("penzor.tx.queued")})]});else if(t.state==="paused")s=o(N,{children:[o("span",{children:e.b(t.size)}),o("span",{children:n("penzor.tx.paused")})]});else{let l=t.speed>0?(t.size-t.done)/t.speed:null;s=o(N,{children:[o("span",{children:Di(t.done,t.size,e.locale())}),t.speed>0&&o("span",{children:[e.b(t.speed),"/s"]}),l!=null&&l>=5&&o("span",{children:n("penzor.tx.left",{eta:Lu(e,l)})})]})}return o("div",{class:`pz-txrow2${t.state==="done"?" is-done":t.state==="failed"?" is-fail":""}`,children:[o(W,{n:a}),o("span",{class:"nm",title:t.name,children:t.name}),o("span",{class:"acts",children:[(t.state==="active"||t.state==="queued")&&i("pause",n("penzor.tx.pause"),()=>void e.txOp(t.id,"pause")),t.state==="paused"&&i("play",n("penzor.tx.resume"),()=>void e.txOp(t.id,"resume")),(t.state==="active"||t.state==="queued"||t.state==="paused")&&i("x",n("penzor.tx.cancel"),()=>void e.txOp(t.id,"cancel")),t.state==="failed"&&t.error!=="too_large"&&o("button",{class:"pz-link",onClick:()=>void e.txOp(t.id,"retry"),children:n("penzor.tx.retry")}),t.state==="failed"&&i("x",n("penzor.tx.remove"),()=>void e.txOp(t.id,"dismiss")),t.state==="done"&&(t.kind==="up"||t.localPath)&&o("button",{class:"pz-link",onClick:()=>e.locate(t),children:n(t.kind==="down"?"penzor.tx.reveal":"penzor.tx.locate")})]}),(t.state==="active"||t.state==="paused"||t.state==="queued")&&o(Io,{pct:r}),o("span",{class:"sub",children:s})]})}function cb(e,t){let n=bn(t.tangu);return!!e&&typeof e.registerView=="function"&&typeof e.registerListSource=="function"&&typeof e.openView=="function"&&typeof e.app?.openSpace=="function"&&typeof n?.cloudInvoke=="function"&&(!n.mobile||!!n.extendMobile)&&eo(n)}function Du(e,t=window){if(!cb(e,t))return null;let n=bn(t.tangu),r=qd(e);vn(n)||n.cloudInvoke("penzor:device").then(p=>{let m=p?.name;typeof m=="string"&&m&&r.setDevice(m)}).catch(()=>{});let a=p=>m=>(He(o(p,{p:r}),m),()=>{He(null,m)});e.registerView({id:Sn.main,title:r.t("penzor.title"),icon:"penzor",workspaceSource:Fi,mount:a(Cu)}),e.registerView({id:Sn.info,title:r.t("penzor.details"),icon:"page",mount:a(Iu)});let i=e.listCapabilities?.includes("tree")??!1,s=typeof e.app?.setSpaceProgress=="function"?"hard-drive":"archive",l=()=>({overview:r.t("penzor.overview"),drive:r.t("penzor.drive"),driveIcon:s,sync:r.t("penzor.ledger.sync"),ama:r.t("penzor.ledger.ama"),apps:r.t("penzor.ledger.apps"),exports:r.t("penzor.ledger.exports"),trash:r.t("penzor.trash"),items:p=>r.t("penzor.items",{n:p}),files:r.t("penzor.uploads"),synced:r.t("penzor.tree.synced"),all:r.t("penzor.scope.all"),thisBackup:r.t("penzor.tree.thisBackup"),byApp:r.t("penzor.tree.byApp"),legacy:r.t("penzor.tree.legacy")}),c=()=>{let p=r.content();if(p){let f=wn(p);return[{key:"sync-home",title:r.t("penzor.sync.title"),icon:"refresh",hint:Fd(f,r.locale()),...f.kind==="warn"?{unread:!0}:{}}]}if(!r.hasSync())return[];let m=r.syncState();return[{key:"sync-home",title:r.t("penzor.sync.title"),icon:"refresh",hint:Bd(m,r.locale()),...Qr(m)?{unread:!0}:{}}]};e.registerListSource({id:Fi,title:r.t("penzor.title"),search:!0,items:p=>{let m=[...c(),...Ld(r.snap(),l(),r.locale(),r.content())],f=p?.query?.trim().toLowerCase()??"";if(f)return m.filter(w=>w.kind!=="folder"&&w.title.toLowerCase().includes(f)).map(({parent:w,...k})=>k);if(i)return m;let v=new Map(m.filter(w=>w.kind==="folder").map(w=>[w.key,w.title]));return m.filter(w=>w.kind!=="folder").map(({parent:w,...k})=>({...k,group:w?v.get(w):void 0}))},subscribe:p=>r.subscribe(p),activeKey:()=>lo(r.loc()),open:p=>r.go(p.key),actions:[{id:"refresh",label:r.t("penzor.act.refresh"),icon:"refresh",primary:!0,run:()=>{r.refresh(),e.app?.sync?.refresh?.().catch(()=>{})}}],itemMenu:p=>{if(p.key.startsWith("sync:")){let m=p.key.slice(5);return[{id:"open-sync",label:r.t("penzor.act.openSync"),icon:"gear",run:()=>r.openSync()},{id:"copy-name",label:r.t("penzor.act.copyName"),icon:"copy",run:()=>{navigator.clipboard?.writeText(m).then(()=>e.app?.notify?.(r.t("penzor.toast.copied")))}}]}return p.key==="trash"&&r.canEmptyTrash()?[{id:"empty-trash",label:r.t("penzor.trash.emptyBtn"),icon:"trash",danger:!0,run:()=>{r.go("trash"),r.setConfirmEmpty(!0)}}]:[]}}),e.registerCommand?.({id:"open-penzor",title:()=>r.t("penzor.cmd.open"),keywords:"penzor cloud storage quota sync files trash drive upload \u84EC\u6D32\u4E91 \u4E91\u7A7A\u95F4 \u4E91\u76D8 \u7F51\u76D8 \u4E0A\u4F20 \u989D\u5EA6 \u540C\u6B65 \u56DE\u6536\u7AD9",run:()=>{e.app?.openSpace?.(cn)}});let d=p=>{if(!(p.key!==Hd||!p.newValue))try{let m=JSON.parse(p.newValue);m.page==="sync"&&r.hasSync()?e.app?.openSpace?.(cn).then(()=>r.go("sync-home")):typeof m.vault=="string"&&m.vault&&r.focusVault(m.vault)}catch{}},g=(()=>{try{return!new URLSearchParams(t.location.search).get("window")}catch{return!1}})();if(g){t.addEventListener("storage",d);try{t.localStorage.setItem($i,"1")}catch{}}let u=r.dispose;return r.dispose=()=>{if(g){t.removeEventListener("storage",d);try{t.localStorage.removeItem($i)}catch{}}u()},r}var db=new TextEncoder,Mw=new TextDecoder("utf-8",{ignoreBOM:!0}),Nu=e=>db.encode(e);function Ou(e){let t="";for(let n=0;n<e.length;n+=32768)t+=String.fromCharCode(...e.subarray(n,n+32768));return btoa(t)}var ub=50*1024*1024,pb=new Set(["mode","type","source","name","summary","githubRepoUrl","npmPackage","version","readme","description","tags","minAppVersion","maxAppVersion","platforms"]);function fb(e){if(!e||typeof e!="object")return null;let t=e;if(t.id!==void 0&&(typeof t.id!="string"||!/^[a-zA-Z0-9_-]{1,128}$/.test(t.id))||!t.fields||typeof t.fields!="object"||Array.isArray(t.fields))return null;let n=new FormData,r=0;for(let[a,i]of Object.entries(t.fields)){if(!pb.has(a)||typeof i!="string"||(r+=i.length,r>25e4)||t.id&&!["mode","name","summary","version","readme","description","tags","minAppVersion","maxAppVersion","platforms"].includes(a))return null;n.append(a,i)}if(t.zip!==void 0){if(!t.zip||typeof t.zip.name!="string"||!/\.zip$/i.test(t.zip.name)||!(t.zip.data instanceof Uint8Array)||!t.zip.data.byteLength||t.zip.data.byteLength>ub)return null;n.append("zip",new Blob([new Uint8Array(t.zip.data)],{type:"application/zip"}),t.zip.name.replace(/[\\/]/g,"_").slice(-255))}return{path:`${t.id?`/market/mine/${t.id}/update`:"/market/submit"}${t.dryRun===!0?"?dryRun=1":""}`,body:n}}function Bu(e){e.handle("cloud:marketSubmit",async(t,n)=>{if(!e.isTrustedSender(t))return{status:0,error:"untrusted"};let r=fb(n);if(!r)return{status:400,json:{error:"invalid_request"}};let a=await e.getCloud();if(!a.token)return{status:401,error:"not_signed_in"};let i=Cn(a.base,r.path);if(!i)return{status:0,error:"no_cloud_url"};try{let s=await _n(a,i,{method:"POST",body:r.body,redirect:"error",signal:AbortSignal.timeout(12e4)});return{status:s.status,json:await s.json().catch(()=>null)}}catch(s){return{status:0,error:String(s?.message||s)}}})}async function Fu(e){if(!e.token)return"";try{let t=await Eo(e,"POST","/api/auth/handoff",{},5e3);if(t.status===200&&typeof t.json?.code=="string"&&t.json.code)return`code=${encodeURIComponent(t.json.code)}`;if((t.status===404||t.status===405)&&!e.fetch)return`token=${encodeURIComponent(e.token)}`}catch{}return""}var mb=["membership","credits","storefront"],gb=["monthly","quarterly","yearly"],hb=/^[A-Za-z0-9_-]{1,64}$/;function $u(e){let t={status:0,error:"untrusted"},n={ok:!1,error:"untrusted"};e.handle("auth:openAccountCenter",async(a,i)=>{if(!e.isTrustedSender(a))return n;let s=await e.getCloud(),l=s.base;if(!l)return{ok:!1};let c=i&&/^[a-z0-9-]+$/i.test(i)?`#${i}`:"",d=await Fu(s),g=`${l}/account${d?`?${d}`:""}${c}`;return s.signal?.throwIfAborted(),await e.openExternal(g),{ok:!0}}),e.handle("auth:openPayCenter",async(a,i,s,l)=>{if(!e.isTrustedSender(a))return n;if(i!==void 0&&!mb.includes(i))return{ok:!1,error:"invalid_tab"};if(s!==void 0&&(typeof s!="string"||!hb.test(s)))return{ok:!1,error:"invalid_plan"};if(l!==void 0&&!gb.includes(l))return{ok:!1,error:"invalid_period"};let c=(i??"membership")==="membership"&&s?`&plan=${encodeURIComponent(s)}${l?`&period=${l}`:""}`:"",d=await e.getCloud(),g=d.base;if(!g)return{ok:!1};let u=await Fu(d),p=`${g}/pay?tab=${i??"membership"}${c}${u?`&${u}`:""}&redirect=${encodeURIComponent(`${g}/account`)}`;return d.signal?.throwIfAborted(),await e.openExternal(p),{ok:!0}}),e.handle("profile:publicOrigin",async a=>{if(!e.isTrustedSender(a))return n;let{base:i}=await e.getCloud();if(!i)return{ok:!1};try{let s=await fetch(`${i}/account`,{redirect:"manual",signal:AbortSignal.timeout(4e3)});s.body?.cancel().catch(()=>{});let l=s.status>=300&&s.status<400?s.headers.get("location"):null;return l&&/^https?:\/\//i.test(l)?{ok:!0,origin:new URL(l).origin}:{ok:!1}}catch{return{ok:!1}}});let r=()=>e.getCloud();e.handle("account:quota",async a=>{if(!e.isTrustedSender(a))return t;let i=await r();if(!i.token)return{status:401,json:null};try{return await Eo(i,"GET","/api/token-quota/my",void 0,15e3)}catch(s){return{status:0,json:{detail:String(s?.message||s)}}}}),e.handle("account:useResetCard",async(a,i)=>{if(!e.isTrustedSender(a))return t;let s=await r();if(!s.token)return{status:401,json:null};if(i!==void 0&&i!=="both")return{status:400,json:{error:"invalid_type",detail:`invalid reset card type: ${i}`}};let l=i??"both";try{return await Eo(s,"POST","/api/token-quota/reset-card/use",{type:l},15e3)}catch(c){return{status:0,json:{detail:String(c?.message||c)}}}}),e.handle("account:bgConvert",async(a,i)=>{if(!e.isTrustedSender(a))return t;let s=await r();if(!s.token)return{status:401,json:null};if(!Number.isInteger(i)||i<1||i>100)return{status:400,json:{error:"invalid_percent"}};try{return await Eo(s,"POST","/api/token-quota/background/convert",{percent:i},15e3)}catch(l){return{status:0,json:{detail:String(l?.message||l)}}}}),e.handle("account:bgAutoMain",async(a,i)=>{if(!e.isTrustedSender(a))return t;let s=await r();if(!s.token)return{status:401,json:null};if(typeof i!="boolean")return{status:400,json:{error:"invalid_request"}};try{return await Eo(s,"POST","/api/token-quota/background/auto-main",{enabled:i},15e3)}catch(l){return{status:0,json:{detail:String(l?.message||l)}}}}),e.handle("feedback:submit",async(a,i)=>{if(!e.isTrustedSender(a))return n;let s=await e.getCloud();if(!s.base||!s.token)return{ok:!1,error:"not-logged-in"};let l=(i?.description||"").trim();if(!l)return{ok:!1,error:"empty"};if(l.length>1e4)return{ok:!1,error:"description-too-long"};let c=[],d=!1;if(i?.sessionLogJson){let g=Nu(i.sessionLogJson);if(g.length>5*1024*1024)return{ok:!1,error:"attachment-too-large"};c.push({filename:i.sessionLogName||"tangu-session.json",mime_type:"application/json",size:g.length,data_base64:Ou(g)})}try{let g=await _n(s,`${s.base}/api/feedback`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({description:l,attachments:c}),signal:AbortSignal.timeout(2e4)});if(!g.ok){let p=`HTTP ${g.status}`;try{p=(await g.json())?.detail||p}catch{}return{ok:!1,error:p}}return{ok:!0,id:(await g.json().catch(()=>({})))?.id??null,attachmentSkipped:d}}catch(g){return{ok:!1,error:g?.message||String(g)}}}),e.handle("cloud:fetch",async(a,i)=>{if(!e.isTrustedSender(a))return{status:0,error:"untrusted"};let s=i??{},l=typeof s.path=="string"?s.path:"",c=s.projectSource===void 0?null:s.projectSource;if(c!==null&&(typeof c!="string"||!/^[a-z0-9][a-z0-9-]{0,63}$/.test(c)))return{status:0,error:"bad_project_source"};let d=Math.min(12e4,Math.max(1e3,Number(s.timeoutMs)||15e3)),g=typeof s.method=="string"?s.method.toUpperCase():"GET";if(!/^(GET|POST|PUT|PATCH|DELETE)$/.test(g))return{status:0,error:"bad_method"};if(!l.startsWith("/"))return{status:0,error:"bad_path"};let u=await e.getCloud();if(!String(u.base||""))return{status:0,error:"no_cloud_url"};let p=Cn(u.base,l);if(!p)return{status:0,error:"bad_path"};if(!u.token)return{status:401,error:"not_signed_in"};let m=s.body!==void 0&&g!=="GET"&&g!=="DELETE",f=new AbortController,v=setTimeout(()=>f.abort(),d);try{let w=await _n(u,p,{method:g,headers:{...m?{"Content-Type":"application/json"}:{},...c?{"X-Project-Source":c}:{}},body:m?JSON.stringify(s.body):void 0,signal:f.signal});return{status:w.status,json:await w.json().catch(()=>null)}}catch(w){return{status:0,error:String(w?.message||w)}}finally{clearTimeout(v)}}),Bu(e)}var es={sender:"web"},bb=new Set(["auth:openAccountCenter","auth:openPayCenter"]),Uu=(e,t)=>new URL(typeof e=="string"&&e?e:t.location.origin,t.location.href).origin;function vb(e,t=window){let n=new Map,r=!!(t.tangu?.mobile&&t.tangu.extendMobile),a=0,i=!1,s=new AbortController,l=f=>{if(i||f!==a)throw new Error("account_changed")},c=[],d={async getCloud(){let f=a,v=s.signal,w=await e.status().catch(()=>null);return l(f),{base:Uu(w?.cloudUrl,t),token:w?.loggedIn?"session":"",signal:v,fetch:async(k,z)=>{l(f);let x=await e.request(k,{...z,signal:z.signal?AbortSignal.any([z.signal,v]):v});return l(f),x}}},handle:(f,v)=>{n.set(f,v)},async openExternal(f){if(r){if(!t.tangu?.openExternal)throw new Error("no_external_browser");await t.tangu.openExternal(f);return}let v=c.shift();v&&!v.closed?v.location.replace(f):t.open(f,"_blank","noopener,noreferrer")},isTrustedSender:()=>!0,log:f=>console.info("[forsion-extend]",f)};$u(d);let g=mu(d,t,{...r?{saveDownload:async(f,v)=>{if(!e.saveDownload)throw new Error("download_unavailable");let w=await e.saveDownload(f,v);if(!w.ok)throw new Error(w.error||"download_failed")},openExternal:f=>d.openExternal(f)}:{}}),u=t.tangu?.onAuthChanged?.(()=>{a++,s.abort(),s=new AbortController,g.reset();for(let f of c.splice(0))f.close()}),p=async(f,...v)=>{let w=n.get(f);if(!w)throw new Error(`No handler registered for '${f}'`);if(f==="penzor:transfers")return w(es,...v);let k=a;if(i)return{ok:!1,error:"disposed"};let z=M=>k===a&&!i?M:{ok:!1,error:"account_changed"};if(!bb.has(f)||r)return z(await w(es,...v));let x=t.open("","_blank");x&&(x.opener=null,c.push(x));try{return z(await w(es,...v))}finally{let M=x?c.indexOf(x):-1;M>=0&&(c.splice(M,1),x.close())}},m=t.tangu?.authStatus;return{...m?{authStatus:async()=>{let f=await m();return{...f,cloudUrl:f?.cloudUrl?Uu(f.cloudUrl,t):f?.cloudUrl}}}:{},cloudInvoke:p,cloudFetch:f=>p("cloud:fetch",f),openAccountCenter:r&&t.tangu?.openAccountCenter?f=>t.tangu.openAccountCenter(f):f=>p("auth:openAccountCenter",f),openExternal:async f=>{/^https?:\/\//i.test(f)&&(r?await d.openExternal(f):t.open(f,"_blank","noopener,noreferrer"))},dispose(){i=!0,a++,s.abort(),u?.();for(let f of c.splice(0))f.close();g.dispose()}}}function Hu(e,t=window){let n=t.tangu;if(!vn(n)||typeof e?.account?.request!="function"||typeof e.account.status!="function")return null;let{dispose:r,...a}=vb(e.account,t);return wl(a),r}var Un=e=>typeof e=="string"&&e.trim()?e.trim():null,po=e=>(Un(e)||"").replace(/^v(?=\d)/i,"");function yb(e,t){let n=i=>{let s=po(i).split("+")[0],l=s.indexOf("-");return{core:(l<0?s:s.slice(0,l)).split(".").map(d=>/^\d+$/.test(d)?Number(d):NaN),pre:l<0?[]:s.slice(l+1).split(".")}};if(!po(e)||!po(t))return null;let r=n(e),a=n(t);if(r.core.some(i=>!Number.isFinite(i))||a.core.some(i=>!Number.isFinite(i)))return null;for(let i=0;i<Math.max(r.core.length,a.core.length);i++){let s=(r.core[i]||0)-(a.core[i]||0);if(s)return s>0?1:-1}if(!r.pre.length||!a.pre.length)return r.pre.length===a.pre.length?0:r.pre.length?-1:1;for(let i=0;i<Math.max(r.pre.length,a.pre.length);i++){let s=r.pre[i],l=a.pre[i];if(s===void 0||l===void 0)return s===void 0?-1:1;if(s===l)continue;let c=/^\d+$/.test(s),d=/^\d+$/.test(l);return c&&d?Number(s)>Number(l)?1:-1:c!==d?c?-1:1:s>l?1:-1}return 0}var xb=2*6e4,kb=(e,t)=>{let n=Date.parse(String(e??"")),r=Date.parse(String(t??""));return Number.isFinite(n)&&Number.isFinite(r)&&n-r>xb};function qu(e){let t=e;if(typeof e=="string")try{t=JSON.parse(e)}catch{return null}return!t||typeof t!="object"||typeof t.itemId!="string"||typeof t.name!="string"?null:{itemId:t.itemId,name:t.name,type:Un(t.type)||void 0,source:Un(t.source)||void 0,mode:t.mode==="info"?"info":"package",from:Un(t.from),to:Un(t.to),tag:Un(t.tag),fields:Array.isArray(t.fields)?t.fields.filter(n=>typeof n=="string"):void 0,listed:t.listed===!0,submittedAt:Un(t.submittedAt)||void 0}}function Vu(e,t){let n={status:"review",note:null,storeVersion:e.from,listed:!!e.listed};if(!t)return n;let r=e.mode==="info",a=t.status==="approved",i=Un(t.version)??e.from,s=g=>!!g&&(r?g.kind==="info":g.kind!=="info"&&po(g.version)===po(e.to)),l=s(t.pendingUpdate)&&!kb(t.pendingUpdate?.submittedAt,e.submittedAt),c=s(t.rejectedUpdate)&&!t.pendingUpdate,d=(g,u=null)=>({status:g,note:u&&u.trim()?u.trim():null,storeVersion:i,listed:a});if(!a)return t.status==="rejected"?d("rejected",t.reviewNote||null):d("review");if(e.listed===!1)return d("approved");if(l)return d("review");if(c)return d("rejected",t.rejectedUpdate?.note||null);if(!r){let g=yb(t.version,e.to);return g!==null&&g>=0||(t.versions||[]).some(u=>po(u.version)===po(e.to))?d("approved"):d("rejected")}return d("approved")}var wb="store_submit_update",zb=`
|
|
1435
|
+
.fx-su { padding: 4px 2px 2px; color: var(--text); font-size: var(--ui-font-body); line-height: var(--ui-line-body); }
|
|
1436
|
+
.fx-su .fx-su-top { display: flex; align-items: center; gap: 11px; min-width: 0; }
|
|
1437
|
+
.fx-su .fx-su-ic { width: 32px; height: 32px; display: grid; place-items: center; flex-shrink: 0; border-radius: var(--radius-sm); background: var(--overlay-light); color: var(--text-light); }
|
|
1438
|
+
.fx-su .fx-su-id { min-width: 0; }
|
|
1439
|
+
.fx-su .fx-su-name { overflow: hidden; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
|
|
1440
|
+
.fx-su .fx-su-sub { margin-top: 1px; color: var(--text-faint); font-size: var(--ui-font-caption); line-height: var(--ui-line-caption); }
|
|
1441
|
+
.fx-su .fx-su-pill { margin-left: auto; flex-shrink: 0; padding: 2px 9px; border-radius: var(--radius-pill); background: var(--overlay-light); color: var(--text-light); font-size: var(--ui-font-caption); line-height: var(--ui-line-caption); white-space: nowrap; }
|
|
1442
|
+
.fx-su .fx-su-pill.is-ok { color: var(--green); }
|
|
1443
|
+
.fx-su .fx-su-pill.is-no { color: var(--danger); }
|
|
1444
|
+
.fx-su .fx-su-ver { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 8px; margin: 12px 0 4px; font-variant-numeric: tabular-nums; }
|
|
1445
|
+
.fx-su .fx-su-from { color: var(--text-faint); text-decoration: line-through; }
|
|
1446
|
+
.fx-su .fx-su-to { font-weight: 600; }
|
|
1447
|
+
.fx-su .fx-su-meta { color: var(--text-faint); font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); }
|
|
1448
|
+
.fx-su .fx-su-note { margin-top: 8px; padding: 8px 10px; border-radius: var(--radius-sm); background: var(--overlay-light); color: var(--text-light); font-size: var(--ui-font-meta); line-height: var(--ui-line-meta); white-space: pre-wrap; overflow-wrap: anywhere; }
|
|
1449
|
+
.fx-su .fx-su-acts { display: flex; justify-content: flex-end; gap: 7px; margin-top: 10px; }
|
|
1450
|
+
`,Sb={plugin:"puzzle","amadeus-plugin":"puzzle",skill:"sparkles",agent:"bot",space:"grid",theme:"palette"},_b=new Set(["plugin","amadeus-plugin","skill","agent","space","theme"]),ju={name:"sub.name",summary:"sub.summary",description:"sub.description",tags:"sub.tags",minAppVersion:"sub.minAppVersion",maxAppVersion:"sub.maxAppVersion",platforms:"sub.platforms"},Cb=e=>e==="github"?"su.source.github":e==="npm"?"su.source.npm":e==="zip"?"su.source.zip":null;function Tb(e){let{sub:t,view:n,t:r,locale:a,onOpenSubmission:i}=e,s=t.type&&_b.has(t.type)?r(`sub.type.${t.type.replace("-","_")}`):null,l=Cb(t.source),c=[s,l&&r(l)].filter(Boolean).join(" \xB7 "),d=n.status==="approved"?o("span",{class:"fx-su-pill is-ok",children:r("su.approved")}):n.status==="rejected"?o("span",{class:"fx-su-pill is-no",children:r("su.rejected")}):o("span",{class:"fx-su-pill",children:r("su.review")}),g=t.mode==="package"?t.source==="github"&&t.tag?r("su.viaGithub",{tag:t.tag}):t.source==="npm"&&t.to?r("su.viaNpm",{version:t.to}):"":"",u=(t.fields||[]).map(f=>ju[f]?r(ju[f]):f),p=t.submittedAt?Gt(t.submittedAt,a):null,m=n.status==="review"?p?r("su.metaReview",{time:p}):r("su.metaReviewNoTime"):n.status==="approved"?t.mode==="info"?r("su.metaApprovedInfo"):r("su.metaApproved",{version:n.storeVersion||t.to||""}):n.listed&&n.storeVersion?r("su.metaRejected",{version:n.storeVersion}):r("su.metaRejectedUnlisted");return o("div",{class:"fx-su","data-fx-store-update":n.status,children:[o("style",{children:zb}),o("div",{class:"fx-su-top",children:[o("span",{class:"fx-su-ic",children:o(J,{name:Sb[t.type||""]||"box",size:18})}),o("div",{class:"fx-su-id",children:[o("div",{class:"fx-su-name",children:t.name}),c&&o("div",{class:"fx-su-sub",children:c})]}),d]}),t.mode==="package"?o("div",{class:"fx-su-ver",children:[t.from&&o(N,{children:[o("span",{class:"fx-su-from",children:t.from}),o("span",{"aria-hidden":"true",children:"\u2192"})]}),o("span",{class:"fx-su-to",children:t.to}),g&&o("span",{class:"fx-su-meta",children:g})]}):o("div",{class:"fx-su-ver",children:[o("span",{class:"fx-su-to",children:r("su.infoOnly")}),!!u.length&&o("span",{class:"fx-su-meta",children:u.join(r("su.listSep"))})]}),o("div",{class:"fx-su-meta",children:m}),n.status==="rejected"&&n.note&&o("div",{class:"fx-su-note",children:n.note}),n.status!=="approved"&&i&&o("div",{class:"fx-su-acts",children:o("button",{type:"button",class:"btn sm",onClick:i,children:r("su.openSubmission")})})]})}function Ab(e){let{ctx:t,sub:n,call:r}=e,[a,i]=A(()=>Ze(t.getLocale?.())),s=(()=>{try{return r.state?.get()}catch{return}})(),[l,c]=A(s?.item??null);oe(()=>{i(Ze(t.getLocale?.()));let u=t.subscribeLocale?.(p=>i(Ze(p)));return()=>{typeof u=="function"&&u()}},[t]),oe(()=>{let u=!0;return Q("/market/mine").then(p=>{if(!u||!p.ok)return;let m=(p.data?.items||[]).find(f=>f&&f.id===n.itemId)||null;if(m){c(m);try{r.state?.set({item:m})}catch{}}}),()=>{u=!1}},[n.itemId]);let d=t.app?.openSettings,g=typeof d=="function"?()=>{Vc(n.itemId),d.call(t.app,_i("submission"))}:null;return o(Tb,{sub:n,view:Vu(n,l),t:zo(a),locale:a,onOpenSubmission:g})}function Wu(e){return!e||typeof e.registerToolResultRenderer!="function"?!1:(e.registerToolResultRenderer({tool:wb,title:()=>xe(Ze(e.getLocale?.()),"su.title"),mount(t,n){let r=qu(n?.result);if(!r)throw new Error("store_submit_update: unexpected result shape");return He(o(Ab,{ctx:e,sub:r,call:n}),t),()=>{He(null,t)}}}),!0)}var Gu;if(typeof ctx<"u"){let e=Hu(ctx);cd(ctx),ld(ctx),Wu(ctx);let t=El(ctx),n=Ad(ctx),r=Du(ctx);(t||n||r||e)&&(Gu=()=>{t?.dispose(),n?.dispose(),r?.dispose(),e?.()})}return dp(Eb);})();
|
|
1435
1451
|
return __fxExtend.dispose;
|